From 7faedd2687a2cb36d1924077c4165039bb85a30e Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 6 Nov 2019 17:39:03 +0200 Subject: [PATCH 0001/1273] ironrdp: implement parsing of channel header and static virtual channel PDUs --- ironrdp/src/rdp.rs | 2 + ironrdp/src/rdp/vc.rs | 190 +++++++++++++++++++++++++++++++++++++ ironrdp/src/rdp/vc/test.rs | 86 +++++++++++++++++ 3 files changed, 278 insertions(+) create mode 100644 ironrdp/src/rdp/vc.rs create mode 100644 ironrdp/src/rdp/vc/test.rs diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index eefd4232..2a1a67e8 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -7,6 +7,8 @@ pub mod server_license; mod client_info; mod finalization_messages; mod headers; +mod server_license; +mod vc; pub use self::{ capability_sets::{ diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs new file mode 100644 index 00000000..529505a0 --- /dev/null +++ b/ironrdp/src/rdp/vc.rs @@ -0,0 +1,190 @@ +mod dvc; +#[cfg(test)] +mod test; + +pub use self::dvc::{ + DvcCapabilitiesRequestPdu, DvcCapabilitiesResponsePdu, DvcCreateRequestPdu, + DvcCreateResponsePdu, DvcPdu, DynamicVirtualChannelHeader, +}; + +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; + +use crate::{impl_from_error, PduParsing}; + +const CHANNEL_PDU_HEADER_SIZE: usize = 8; + +#[derive(Debug, Clone, PartialEq)] +pub struct ChannelPduHeader { + // The total length in bytes of the uncompressed channel data, excluding this header + pub total_length: u32, + pub flags: ChannelControlFlags, +} + +impl ChannelPduHeader { + pub fn new(total_length: u32, flags: ChannelControlFlags) -> Self { + Self { + total_length, + flags, + } + } +} + +impl PduParsing for ChannelPduHeader { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let total_length = stream.read_u32::()?; + let flags = ChannelControlFlags::from_bits(stream.read_u32::()?) + .ok_or(ChannelError::InvalidChannelPduHeader)?; + + Ok(Self { + total_length, + flags, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.total_length)?; + stream.write_u32::(self.flags.bits())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CHANNEL_PDU_HEADER_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum VirtualChannelData { + ChannelData(Vec), + DynamicVCPdu(DvcPdu), +} + +impl VirtualChannelData { + pub fn as_short_name(&self) -> &str { + match self { + VirtualChannelData::ChannelData(_) => "Virtual channel data", + VirtualChannelData::DynamicVCPdu(_) => "Dynamic virtual channel PDU", + } + } +} + +impl PduParsing for VirtualChannelData { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let mut vc_data = Vec::new(); + stream.read_to_end(&mut vc_data)?; + + Ok(VirtualChannelData::ChannelData(vc_data)) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + match self { + VirtualChannelData::DynamicVCPdu(dvc_pdu) => { + match dvc_pdu { + DvcPdu::CapabilitiesRequest(pdu) => pdu.to_buffer(&mut stream)?, + DvcPdu::CapabilitiesResponse(pdu) => pdu.to_buffer(&mut stream)?, + DvcPdu::CreateRequest(pdu) => pdu.to_buffer(&mut stream)?, + DvcPdu::CreateResponse(pdu) => pdu.to_buffer(&mut stream)?, + }; + } + VirtualChannelData::ChannelData(data) => stream.write_all(data.as_ref())?, + }; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + match self { + VirtualChannelData::ChannelData(data) => data.len(), + VirtualChannelData::DynamicVCPdu(dvc_pdu) => match dvc_pdu { + DvcPdu::CapabilitiesRequest(pdu) => pdu.buffer_length(), + DvcPdu::CapabilitiesResponse(pdu) => pdu.buffer_length(), + DvcPdu::CreateRequest(pdu) => pdu.buffer_length(), + DvcPdu::CreateResponse(pdu) => pdu.buffer_length(), + }, + } + } +} + +pub struct VirtualChannelPdu { + pub vc_header: ChannelPduHeader, + pub vc_data: VirtualChannelData, +} + +impl VirtualChannelPdu { + pub fn new(vc_header: ChannelPduHeader, vc_data: VirtualChannelData) -> Self { + Self { vc_header, vc_data } + } +} + +impl PduParsing for VirtualChannelPdu { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let vc_header = ChannelPduHeader::from_buffer(&mut stream)?; + let vc_data = VirtualChannelData::from_buffer(&mut stream)?; + + Ok(Self { vc_header, vc_data }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + self.vc_header.to_buffer(&mut stream)?; + self.vc_data.to_buffer(&mut stream)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + self.vc_header.buffer_length() + self.vc_data.buffer_length() + } +} + +bitflags! { + pub struct ChannelControlFlags: u32 { + const FLAG_FIRST = 0x0000_0001; + const FLAG_LAST = 0x0000_0002; + const FLAG_SHOW_PROTOCOL = 0x0000_0010; + const FLAG_SUSPEND = 0x0000_0020; + const FLAG_RESUME = 0x0000_0040; + const FLAG_SHADOW_PERSISTENT = 0x0000_0080; + const PACKET_COMPRESSED = 0x0020_0000; + const PACKET_AT_FRONT = 0x0040_0000; + const PACKET_FLUSHED = 0x0080_0000; + const COMPRESSION_TYPE_MASK = 0x000F_0000; + } +} + +#[derive(Debug, Fail)] +pub enum ChannelError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Utf8 error: {}", _0)] + Utf8Error(#[fail(cause)] std::string::FromUtf8Error), + #[fail(display = "Invalid сhannel pdu header")] + InvalidChannelPduHeader, + #[fail(display = "Invalid dynamic virtual сhannel id size")] + InvalidDVChannelIdSize, +} + +impl_from_error!(io::Error, ChannelError, ChannelError::IOError); +impl_from_error!( + std::string::FromUtf8Error, + ChannelError, + ChannelError::Utf8Error +); + +impl From for io::Error { + fn from(e: ChannelError) -> io::Error { + io::Error::new( + io::ErrorKind::Other, + format!("Virtual channel error: {}", e), + ) + } +} diff --git a/ironrdp/src/rdp/vc/test.rs b/ironrdp/src/rdp/vc/test.rs new file mode 100644 index 00000000..218a6513 --- /dev/null +++ b/ironrdp/src/rdp/vc/test.rs @@ -0,0 +1,86 @@ +use lazy_static::lazy_static; + +use super::*; + +const CHANNEL_PDU_HEADER_BUFFER: [u8; CHANNEL_PDU_HEADER_SIZE] = + [0x40, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; + +const CHANNEL_DATA_SIZE: usize = 10; +const CHANNEL_DATA_BUFFER: [u8; CHANNEL_DATA_SIZE] = + [0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77]; + +const CHANNEL_CHUNK_LENGTH_DEFAULT: u32 = 1600; + +lazy_static! { + static ref CHANNEL_PDU_HEADER: ChannelPduHeader = ChannelPduHeader { + total_length: CHANNEL_CHUNK_LENGTH_DEFAULT as u32, + flags: ChannelControlFlags::FLAG_FIRST, + }; + static ref CHANNEL_DATA: VirtualChannelData = + VirtualChannelData::ChannelData(CHANNEL_DATA_BUFFER.to_vec()); +} + +#[test] +fn from_buffer_correct_parses_channel_header() { + assert_eq!( + CHANNEL_PDU_HEADER.clone(), + ChannelPduHeader::from_buffer(CHANNEL_PDU_HEADER_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_channel_header() { + let channel_header = CHANNEL_PDU_HEADER.clone(); + + let mut buffer = Vec::new(); + channel_header.to_buffer(&mut buffer).unwrap(); + + assert_eq!(CHANNEL_PDU_HEADER_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn to_buffer_correct_serializes_channel_header_with_invalid_flag_fails() { + let invalid_header_buffer = vec![0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]; + match ChannelPduHeader::from_buffer(invalid_header_buffer.as_slice()) { + Err(ChannelError::InvalidChannelPduHeader) => (), + res => panic!("Expected the invalid channel header error, got: {:?}", res), + }; +} + +#[test] +fn buffer_length_is_correct_for_channel_header() { + let channel_header = CHANNEL_PDU_HEADER.clone(); + let expected_buf_len = CHANNEL_PDU_HEADER_BUFFER.len(); + + let len = channel_header.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_channel_data() { + assert_eq!( + CHANNEL_DATA.clone(), + VirtualChannelData::from_buffer(CHANNEL_DATA_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_channel_data() { + let channel_data = CHANNEL_DATA.clone(); + + let mut buffer = Vec::new(); + channel_data.to_buffer(&mut buffer).unwrap(); + + assert_eq!(CHANNEL_DATA_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_channel_data() { + let channel_data = CHANNEL_DATA.clone(); + let expected_buf_len = CHANNEL_DATA_BUFFER.len(); + + let len = channel_data.buffer_length(); + + assert_eq!(expected_buf_len, len); +} From 4aad704d300072b86f6b7c532f1e2d8c3418b486 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 6 Nov 2019 17:44:21 +0200 Subject: [PATCH 0002/1273] ironrdp: add parsing of DVC PDUs --- ironrdp/Cargo.toml | 1 + ironrdp/src/rdp.rs | 4 +- ironrdp/src/rdp/vc.rs | 114 +------- ironrdp/src/rdp/vc/dvc.rs | 287 ++++++++++++++++++++ ironrdp/src/rdp/vc/dvc/capabilities.rs | 134 +++++++++ ironrdp/src/rdp/vc/dvc/capabilities/test.rs | 144 ++++++++++ ironrdp/src/rdp/vc/dvc/close.rs | 44 +++ ironrdp/src/rdp/vc/dvc/close/test.rs | 43 +++ ironrdp/src/rdp/vc/dvc/create.rs | 98 +++++++ ironrdp/src/rdp/vc/dvc/create/test.rs | 83 ++++++ ironrdp/src/rdp/vc/dvc/data.rs | 56 ++++ ironrdp/src/rdp/vc/dvc/data/test.rs | 62 +++++ ironrdp/src/rdp/vc/dvc/data_first.rs | 67 +++++ ironrdp/src/rdp/vc/dvc/data_first/test.rs | 70 +++++ ironrdp/src/rdp/vc/dvc/test.rs | 154 +++++++++++ ironrdp/src/rdp/vc/test.rs | 46 +--- 16 files changed, 1260 insertions(+), 147 deletions(-) create mode 100644 ironrdp/src/rdp/vc/dvc.rs create mode 100644 ironrdp/src/rdp/vc/dvc/capabilities.rs create mode 100644 ironrdp/src/rdp/vc/dvc/capabilities/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/close.rs create mode 100644 ironrdp/src/rdp/vc/dvc/close/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/create.rs create mode 100644 ironrdp/src/rdp/vc/dvc/create/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/data.rs create mode 100644 ironrdp/src/rdp/vc/dvc/data/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/data_first.rs create mode 100644 ironrdp/src/rdp/vc/dvc/data_first/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/test.rs diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 688339a5..5e9ae3d3 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -25,3 +25,4 @@ ring = "0.16.0" md-5 = "0.8.0" num-bigint = "0.2.0" der-parser = "3.0.0" +bit_field = "0.10" diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 2a1a67e8..0a1b0a04 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -1,14 +1,12 @@ #[cfg(test)] pub mod test; - pub mod capability_sets; pub mod server_license; +pub mod vc; mod client_info; mod finalization_messages; mod headers; -mod server_license; -mod vc; pub use self::{ capability_sets::{ diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index 529505a0..9430f45c 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -1,12 +1,8 @@ -mod dvc; +pub mod dvc; + #[cfg(test)] mod test; -pub use self::dvc::{ - DvcCapabilitiesRequestPdu, DvcCapabilitiesResponsePdu, DvcCreateRequestPdu, - DvcCreateResponsePdu, DvcPdu, DynamicVirtualChannelHeader, -}; - use std::io; use bitflags::bitflags; @@ -19,7 +15,7 @@ const CHANNEL_PDU_HEADER_SIZE: usize = 8; #[derive(Debug, Clone, PartialEq)] pub struct ChannelPduHeader { - // The total length in bytes of the uncompressed channel data, excluding this header + /// The total length in bytes of the uncompressed channel data, excluding this header pub total_length: u32, pub flags: ChannelControlFlags, } @@ -38,8 +34,7 @@ impl PduParsing for ChannelPduHeader { fn from_buffer(mut stream: impl io::Read) -> Result { let total_length = stream.read_u32::()?; - let flags = ChannelControlFlags::from_bits(stream.read_u32::()?) - .ok_or(ChannelError::InvalidChannelPduHeader)?; + let flags = ChannelControlFlags::from_bits_truncate(stream.read_u32::()?); Ok(Self { total_length, @@ -59,93 +54,6 @@ impl PduParsing for ChannelPduHeader { } } -#[derive(Debug, Clone, PartialEq)] -pub enum VirtualChannelData { - ChannelData(Vec), - DynamicVCPdu(DvcPdu), -} - -impl VirtualChannelData { - pub fn as_short_name(&self) -> &str { - match self { - VirtualChannelData::ChannelData(_) => "Virtual channel data", - VirtualChannelData::DynamicVCPdu(_) => "Dynamic virtual channel PDU", - } - } -} - -impl PduParsing for VirtualChannelData { - type Error = ChannelError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let mut vc_data = Vec::new(); - stream.read_to_end(&mut vc_data)?; - - Ok(VirtualChannelData::ChannelData(vc_data)) - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - match self { - VirtualChannelData::DynamicVCPdu(dvc_pdu) => { - match dvc_pdu { - DvcPdu::CapabilitiesRequest(pdu) => pdu.to_buffer(&mut stream)?, - DvcPdu::CapabilitiesResponse(pdu) => pdu.to_buffer(&mut stream)?, - DvcPdu::CreateRequest(pdu) => pdu.to_buffer(&mut stream)?, - DvcPdu::CreateResponse(pdu) => pdu.to_buffer(&mut stream)?, - }; - } - VirtualChannelData::ChannelData(data) => stream.write_all(data.as_ref())?, - }; - - Ok(()) - } - - fn buffer_length(&self) -> usize { - match self { - VirtualChannelData::ChannelData(data) => data.len(), - VirtualChannelData::DynamicVCPdu(dvc_pdu) => match dvc_pdu { - DvcPdu::CapabilitiesRequest(pdu) => pdu.buffer_length(), - DvcPdu::CapabilitiesResponse(pdu) => pdu.buffer_length(), - DvcPdu::CreateRequest(pdu) => pdu.buffer_length(), - DvcPdu::CreateResponse(pdu) => pdu.buffer_length(), - }, - } - } -} - -pub struct VirtualChannelPdu { - pub vc_header: ChannelPduHeader, - pub vc_data: VirtualChannelData, -} - -impl VirtualChannelPdu { - pub fn new(vc_header: ChannelPduHeader, vc_data: VirtualChannelData) -> Self { - Self { vc_header, vc_data } - } -} - -impl PduParsing for VirtualChannelPdu { - type Error = ChannelError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let vc_header = ChannelPduHeader::from_buffer(&mut stream)?; - let vc_data = VirtualChannelData::from_buffer(&mut stream)?; - - Ok(Self { vc_header, vc_data }) - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - self.vc_header.to_buffer(&mut stream)?; - self.vc_data.to_buffer(&mut stream)?; - - Ok(()) - } - - fn buffer_length(&self) -> usize { - self.vc_header.buffer_length() + self.vc_data.buffer_length() - } -} - bitflags! { pub struct ChannelControlFlags: u32 { const FLAG_FIRST = 0x0000_0001; @@ -167,10 +75,18 @@ pub enum ChannelError { IOError(#[fail(cause)] io::Error), #[fail(display = "Utf8 error: {}", _0)] Utf8Error(#[fail(cause)] std::string::FromUtf8Error), - #[fail(display = "Invalid сhannel pdu header")] + #[fail(display = "Invalid channel PDU header")] InvalidChannelPduHeader, - #[fail(display = "Invalid dynamic virtual сhannel id size")] - InvalidDVChannelIdSize, + #[fail(display = "Invalid DVC PDU type")] + InvalidDvcPduType, + #[fail(display = "Invalid DVC id length value")] + InvalidDVChannelIdLength, + #[fail(display = "Invalid DVC data length value")] + InvalidDvcDataLength, + #[fail(display = "Invalid DVC capabilities version")] + InvalidDvcCapabilitiesVersion, + #[fail(display = "Invalid DVC message size")] + InvalidDvcMessageSize, } impl_from_error!(io::Error, ChannelError, ChannelError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs new file mode 100644 index 00000000..970f1be0 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -0,0 +1,287 @@ +#[cfg(test)] +mod test; + +mod capabilities; +mod close; +mod create; +mod data; +mod data_first; + +pub use self::{ + capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}, + close::ClosePdu, + create::{CreateRequestPdu, CreateResponsePdu}, + data::DataPdu, + data_first::DataFirstPdu, +}; + +use std::{io, mem}; + +use bit_field::BitField; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::ChannelError; +use crate::PduParsing; + +const HEADER_SIZE: usize = 1; +const PDU_WITH_DATA_MAX_SIZE: usize = 1600; + +const UNUSED_U8: u8 = 0; + +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum PduType { + Create = 0x01, + DataFirst = 0x02, + Data = 0x03, + Close = 0x04, + Capabilities = 0x05, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum ServerPdu { + CapabilitiesRequest(CapabilitiesRequestPdu), + CreateRequest(CreateRequestPdu), + DataFirst(DataFirstPdu), + Data(DataPdu), + CloseRequest(ClosePdu), +} + +impl ServerPdu { + pub fn as_short_name(&self) -> &str { + match self { + ServerPdu::CapabilitiesRequest(_) => "Capabilities Request PDU", + ServerPdu::CreateRequest(_) => "Create Request PDU", + ServerPdu::DataFirst(_) => "Data First PDU", + ServerPdu::Data(_) => "Data PDU", + ServerPdu::CloseRequest(_) => "Close Request PDU", + } + } +} + +impl PduParsing for ServerPdu { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let dvc_header = Header::from_buffer(&mut stream)?; + let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) + .ok_or(ChannelError::InvalidDVChannelIdLength)?; + + match dvc_header.pdu_type { + PduType::Capabilities => Ok(ServerPdu::CapabilitiesRequest( + CapabilitiesRequestPdu::from_buffer(&mut stream)?, + )), + PduType::Create => Ok(ServerPdu::CreateRequest(CreateRequestPdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + PduType::DataFirst => { + let data_length_type = FieldType::from_u8(dvc_header.pdu_dependent) + .ok_or(ChannelError::InvalidDvcDataLength)?; + + Ok(ServerPdu::DataFirst(DataFirstPdu::from_buffer( + &mut stream, + channel_id_type, + data_length_type, + )?)) + } + PduType::Data => Ok(ServerPdu::Data(DataPdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + PduType::Close => Ok(ServerPdu::CloseRequest(ClosePdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + match self { + ServerPdu::CapabilitiesRequest(caps_request) => caps_request.to_buffer(&mut stream)?, + ServerPdu::CreateRequest(create_request) => create_request.to_buffer(&mut stream)?, + ServerPdu::DataFirst(data_first) => data_first.to_buffer(&mut stream)?, + ServerPdu::Data(data) => data.to_buffer(&mut stream)?, + ServerPdu::CloseRequest(close_request) => close_request.to_buffer(&mut stream)?, + }; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + match self { + ServerPdu::CapabilitiesRequest(caps_request) => caps_request.buffer_length(), + ServerPdu::CreateRequest(create_request) => create_request.buffer_length(), + ServerPdu::DataFirst(data_first) => data_first.buffer_length(), + ServerPdu::Data(data) => data.buffer_length(), + ServerPdu::CloseRequest(close_request) => close_request.buffer_length(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum ClientPdu { + CapabilitiesResponse(CapabilitiesResponsePdu), + CreateResponse(CreateResponsePdu), + DataFirst(DataFirstPdu), + Data(DataPdu), + CloseResponse(ClosePdu), +} + +impl ClientPdu { + pub fn as_short_name(&self) -> &str { + match self { + ClientPdu::CapabilitiesResponse(_) => "Capabilities Response PDU", + ClientPdu::CreateResponse(_) => "Create Response PDU", + ClientPdu::DataFirst(_) => "Data First PDU", + ClientPdu::Data(_) => "Data PDU", + ClientPdu::CloseResponse(_) => "Close Response PDU", + } + } +} + +impl PduParsing for ClientPdu { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let dvc_header = Header::from_buffer(&mut stream)?; + let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) + .ok_or(ChannelError::InvalidDVChannelIdLength)?; + + match dvc_header.pdu_type { + PduType::Capabilities => Ok(ClientPdu::CapabilitiesResponse( + CapabilitiesResponsePdu::from_buffer(&mut stream)?, + )), + PduType::Create => Ok(ClientPdu::CreateResponse(CreateResponsePdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + PduType::DataFirst => { + let data_length_type = FieldType::from_u8(dvc_header.pdu_dependent) + .ok_or(ChannelError::InvalidDvcDataLength)?; + + Ok(ClientPdu::DataFirst(DataFirstPdu::from_buffer( + &mut stream, + channel_id_type, + data_length_type, + )?)) + } + PduType::Data => Ok(ClientPdu::Data(DataPdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + PduType::Close => Ok(ClientPdu::CloseResponse(ClosePdu::from_buffer( + &mut stream, + channel_id_type, + )?)), + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + match self { + ClientPdu::CapabilitiesResponse(caps_request) => caps_request.to_buffer(&mut stream)?, + ClientPdu::CreateResponse(create_request) => create_request.to_buffer(&mut stream)?, + ClientPdu::DataFirst(data_first) => data_first.to_buffer(&mut stream)?, + ClientPdu::Data(data) => data.to_buffer(&mut stream)?, + ClientPdu::CloseResponse(close_response) => close_response.to_buffer(&mut stream)?, + }; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + match self { + ClientPdu::CapabilitiesResponse(caps_request) => caps_request.buffer_length(), + ClientPdu::CreateResponse(create_request) => create_request.buffer_length(), + ClientPdu::DataFirst(data_first) => data_first.buffer_length(), + ClientPdu::Data(data) => data.buffer_length(), + ClientPdu::CloseResponse(close_response) => close_response.buffer_length(), + } + } +} + +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum FieldType { + U8 = 0x00, + U16 = 0x01, + U32 = 0x02, +} + +impl FieldType { + pub fn read_buffer_according_to_type( + self, + mut stream: impl io::Read, + ) -> Result { + let value = match self { + FieldType::U8 => u32::from(stream.read_u8()?), + FieldType::U16 => u32::from(stream.read_u16::()?), + FieldType::U32 => stream.read_u32::()?, + }; + + Ok(value) + } + + pub fn to_buffer_according_to_type( + self, + mut stream: impl io::Write, + value: u32, + ) -> Result<(), io::Error> { + match self { + FieldType::U8 => stream.write_u8(value as u8)?, + FieldType::U16 => stream.write_u16::(value as u16)?, + FieldType::U32 => stream.write_u32::(value)?, + }; + + Ok(()) + } + + pub fn get_type_size(self) -> usize { + match self { + FieldType::U8 => mem::size_of::(), + FieldType::U16 => mem::size_of::(), + FieldType::U32 => mem::size_of::(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +struct Header { + pub channel_id_type: u8, // 2 bit + pub pdu_dependent: u8, // 2 bit + pub pdu_type: PduType, // 4 bit +} + +impl PduParsing for Header { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let dvc_header = stream.read_u8()?; + let channel_id_type = dvc_header.get_bits(0..2); + let pdu_dependent = dvc_header.get_bits(2..4); + let pdu_type = + PduType::from_u8(dvc_header.get_bits(4..8)).ok_or(ChannelError::InvalidDvcPduType)?; + + Ok(Self { + channel_id_type, + pdu_dependent, + pdu_type, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut dvc_header: u8 = 0; + dvc_header.set_bits(0..2, self.channel_id_type); + dvc_header.set_bits(2..4, self.pdu_dependent); + dvc_header.set_bits(4..8, self.pdu_type.to_u8().unwrap()); + stream.write_u8(dvc_header)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + HEADER_SIZE + } +} diff --git a/ironrdp/src/rdp/vc/dvc/capabilities.rs b/ironrdp/src/rdp/vc/dvc/capabilities.rs new file mode 100644 index 00000000..1d18c5df --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/capabilities.rs @@ -0,0 +1,134 @@ +#[cfg(test)] +mod test; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::{Header, PduType, HEADER_SIZE, UNUSED_U8}; +use crate::{rdp::vc::ChannelError, PduParsing}; + +const DVC_CAPABILITIES_PAD_SIZE: usize = 1; +const DVC_CAPABILITIES_VERSION_SIZE: usize = 2; +const DVC_CAPABILITIES_CHARGE_SIZE: usize = 2; +const DVC_CAPABILITIES_CHARGE_COUNT: usize = 4; + +#[repr(u16)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum CapsVersion { + V1 = 0x0001, + V2 = 0x0002, + V3 = 0x0003, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum CapabilitiesRequestPdu { + V1, + V2 { + charges: [u16; DVC_CAPABILITIES_CHARGE_COUNT], + }, + V3 { + charges: [u16; DVC_CAPABILITIES_CHARGE_COUNT], + }, +} + +impl PduParsing for CapabilitiesRequestPdu { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _pad = stream.read_u8()?; + let version = CapsVersion::from_u16(stream.read_u16::()?) + .ok_or(ChannelError::InvalidDvcCapabilitiesVersion)?; + + match version { + CapsVersion::V1 => Ok(Self::V1), + CapsVersion::V2 => { + let mut charges = [0; DVC_CAPABILITIES_CHARGE_COUNT]; + stream.read_u16_into::(&mut charges)?; + Ok(Self::V2 { charges }) + } + CapsVersion::V3 => { + let mut charges = [0; DVC_CAPABILITIES_CHARGE_COUNT]; + stream.read_u16_into::(&mut charges)?; + Ok(Self::V3 { charges }) + } + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let dvc_header = Header { + channel_id_type: UNUSED_U8, + pdu_dependent: UNUSED_U8, + pdu_type: PduType::Capabilities, + }; + dvc_header.to_buffer(&mut stream)?; + stream.write_u8(UNUSED_U8)?; + + match self { + CapabilitiesRequestPdu::V1 => { + stream.write_u16::(CapsVersion::V1.to_u16().unwrap())? + } + CapabilitiesRequestPdu::V2 { charges } => { + stream.write_u16::(CapsVersion::V2.to_u16().unwrap())?; + for charge in charges.iter() { + stream.write_u16::(*charge)?; + } + } + CapabilitiesRequestPdu::V3 { charges } => { + stream.write_u16::(CapsVersion::V3.to_u16().unwrap())?; + for charge in charges.iter() { + stream.write_u16::(*charge)?; + } + } + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + let charges_length = match self { + CapabilitiesRequestPdu::V1 => 0, + CapabilitiesRequestPdu::V2 { charges } | CapabilitiesRequestPdu::V3 { charges } => { + charges.len() * DVC_CAPABILITIES_CHARGE_SIZE + } + }; + + HEADER_SIZE + DVC_CAPABILITIES_PAD_SIZE + DVC_CAPABILITIES_VERSION_SIZE + charges_length + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CapabilitiesResponsePdu { + pub version: CapsVersion, +} + +impl PduParsing for CapabilitiesResponsePdu { + type Error = ChannelError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _pad = stream.read_u8()?; + let version = CapsVersion::from_u16(stream.read_u16::()?) + .ok_or(ChannelError::InvalidDvcCapabilitiesVersion)?; + + Ok(Self { version }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let dvc_header = Header { + channel_id_type: UNUSED_U8, + pdu_dependent: UNUSED_U8, + pdu_type: PduType::Capabilities, + }; + dvc_header.to_buffer(&mut stream)?; + stream.write_u8(UNUSED_U8)?; + stream.write_u16::(self.version.to_u16().unwrap())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + HEADER_SIZE + DVC_CAPABILITIES_PAD_SIZE + DVC_CAPABILITIES_VERSION_SIZE + } +} diff --git a/ironrdp/src/rdp/vc/dvc/capabilities/test.rs b/ironrdp/src/rdp/vc/dvc/capabilities/test.rs new file mode 100644 index 00000000..87b1acb4 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/capabilities/test.rs @@ -0,0 +1,144 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_CAPABILITIES_REQUEST_V1_SIZE: usize = 4; +const DVC_CAPABILITIES_REQUEST_V1_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V1_SIZE] = + [0x50, 0x00, 0x01, 0x00]; + +const DVC_CAPABILITIES_REQUEST_V2_SIZE: usize = 12; +const DVC_CAPABILITIES_REQUEST_V2_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V2_SIZE] = [ + 0x50, 0x00, 0x02, 0x00, 0x33, 0x33, 0x11, 0x11, 0x3d, 0x0a, 0xa7, 0x04, +]; + +const DVC_CAPABILITIES_RESPONSE_SIZE: usize = 4; +const DVC_CAPABILITIES_RESPONSE_BUFFER: [u8; DVC_CAPABILITIES_RESPONSE_SIZE] = + [0x50, 0x00, 0x01, 0x00]; + +lazy_static! { + static ref DVC_CAPABILITIES_REQUEST_V1: CapabilitiesRequestPdu = CapabilitiesRequestPdu::V1; + static ref DVC_CAPABILITIES_REQUEST_V2: CapabilitiesRequestPdu = CapabilitiesRequestPdu::V2 { + charges: [0x3333, 0x1111, 0x0a3d, 0x04a7] + }; + static ref DVC_CAPABILITIES_RESPONSE: CapabilitiesResponsePdu = CapabilitiesResponsePdu { + version: CapsVersion::V1 + }; +} + +#[test] +fn from_buffer_parsing_for_dvc_caps_request_pdu_with_invalid_caps_version_fails() { + let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; + match CapabilitiesRequestPdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { + Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), + res => panic!( + "Expected InvalidDvcCapabilitiesVersion error, got: {:?}", + res + ), + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_capabilities_request_pdu_v1() { + assert_eq!( + DVC_CAPABILITIES_REQUEST_V1.clone(), + CapabilitiesRequestPdu::from_buffer(&DVC_CAPABILITIES_REQUEST_V1_BUFFER[1..]).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_capabilities_request_pdu_v1() { + let dvc_capabilities_request_pdu_v1 = DVC_CAPABILITIES_REQUEST_V1.clone(); + + let mut buffer = Vec::new(); + dvc_capabilities_request_pdu_v1 + .to_buffer(&mut buffer) + .unwrap(); + + assert_eq!( + DVC_CAPABILITIES_REQUEST_V1_BUFFER.as_ref(), + buffer.as_slice() + ); +} + +#[test] +fn buffer_length_is_correct_for_dvc_capabilities_request_pdu_v1() { + let dvc_capabilities_request_pdu_v1 = DVC_CAPABILITIES_REQUEST_V1.clone(); + let expected_buf_len = DVC_CAPABILITIES_REQUEST_V1_BUFFER.len(); + + let len = dvc_capabilities_request_pdu_v1.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_dvc_capabilities_request_pdu_v2() { + assert_eq!( + DVC_CAPABILITIES_REQUEST_V2.clone(), + CapabilitiesRequestPdu::from_buffer(&DVC_CAPABILITIES_REQUEST_V2_BUFFER[1..]).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_capabilities_request_pdu_v2() { + let dvc_capabilities_request_pdu_v2 = DVC_CAPABILITIES_REQUEST_V2.clone(); + + let mut buffer = Vec::new(); + dvc_capabilities_request_pdu_v2 + .to_buffer(&mut buffer) + .unwrap(); + + assert_eq!( + DVC_CAPABILITIES_REQUEST_V2_BUFFER.as_ref(), + buffer.as_slice() + ); +} + +#[test] +fn buffer_length_is_correct_for_dvc_capabilities_request_pdu_v2() { + let dvc_capabilities_request_pdu_v2 = DVC_CAPABILITIES_REQUEST_V2.clone(); + let expected_buf_len = DVC_CAPABILITIES_REQUEST_V2_BUFFER.len(); + + let len = dvc_capabilities_request_pdu_v2.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_parsing_for_dvc_caps_response_pdu_with_invalid_caps_version_fails() { + let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; + match CapabilitiesResponsePdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { + Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), + res => panic!( + "Expected InvalidDvcCapabilitiesVersion error, got: {:?}", + res + ), + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_capabilities_response() { + assert_eq!( + DVC_CAPABILITIES_RESPONSE.clone(), + CapabilitiesResponsePdu::from_buffer(&DVC_CAPABILITIES_RESPONSE_BUFFER[1..]).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_capabilities_response() { + let capabilities_response = DVC_CAPABILITIES_RESPONSE.clone(); + + let mut buffer = Vec::new(); + capabilities_response.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_CAPABILITIES_RESPONSE_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_capabilities_response() { + let capabilities_response = DVC_CAPABILITIES_RESPONSE.clone(); + let expected_buf_len = DVC_CAPABILITIES_RESPONSE_BUFFER.len(); + + let len = capabilities_response.buffer_length(); + + assert_eq!(expected_buf_len, len); +} diff --git a/ironrdp/src/rdp/vc/dvc/close.rs b/ironrdp/src/rdp/vc/dvc/close.rs new file mode 100644 index 00000000..79765a83 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/close.rs @@ -0,0 +1,44 @@ +#[cfg(test)] +mod test; + +use std::io; + +use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; +use crate::{rdp::vc::ChannelError, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct ClosePdu { + pub channel_id_type: FieldType, + pub channel_id: u32, +} + +impl ClosePdu { + pub fn from_buffer( + mut stream: impl io::Read, + channel_id_type: FieldType, + ) -> Result { + let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; + + Ok(Self { + channel_id_type, + channel_id, + }) + } + + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { + let dvc_header = Header { + channel_id_type: self.channel_id_type as u8, + pdu_dependent: UNUSED_U8, + pdu_type: PduType::Close, + }; + dvc_header.to_buffer(&mut stream)?; + self.channel_id_type + .to_buffer_according_to_type(&mut stream, self.channel_id)?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + HEADER_SIZE + self.channel_id_type.get_type_size() + } +} diff --git a/ironrdp/src/rdp/vc/dvc/close/test.rs b/ironrdp/src/rdp/vc/dvc/close/test.rs new file mode 100644 index 00000000..2cf6be4a --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/close/test.rs @@ -0,0 +1,43 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_TEST_CHANNEL_ID_U16: u32 = 0x0303; + +const DVC_CLOSE_BUFFER_SIZE: usize = 3; +const DVC_CLOSE_BUFFER: [u8; DVC_CLOSE_BUFFER_SIZE] = [0x41, 0x03, 0x03]; + +lazy_static! { + static ref DVC_CLOSE: ClosePdu = ClosePdu { + channel_id_type: FieldType::U16, + channel_id: DVC_TEST_CHANNEL_ID_U16 + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_close_pdu() { + assert_eq!( + DVC_CLOSE.clone(), + ClosePdu::from_buffer(&DVC_CLOSE_BUFFER[1..], FieldType::U16).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_close_pdu() { + let close = DVC_CLOSE.clone(); + + let mut buffer = Vec::new(); + close.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_CLOSE_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_close_pdu() { + let close = DVC_CLOSE.clone(); + let expected_buf_len = DVC_CLOSE_BUFFER.len(); + + let len = close.buffer_length(); + + assert_eq!(expected_buf_len, len); +} diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs new file mode 100644 index 00000000..35a65a2f --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -0,0 +1,98 @@ +#[cfg(test)] +mod test; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; +use crate::{rdp::vc::ChannelError, PduParsing}; + +const DVC_CREATION_STATUS_SIZE: usize = 4; + +#[derive(Debug, Clone, PartialEq)] +pub struct CreateRequestPdu { + pub channel_id_type: FieldType, + pub channel_id: u32, + pub channel_name: String, +} + +impl CreateRequestPdu { + pub fn from_buffer( + mut stream: impl io::Read, + channel_id_type: FieldType, + ) -> Result { + let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; + + let mut buffer = String::new(); + stream.read_to_string(&mut buffer)?; + + let channel_name = buffer.trim_end_matches('\0').into(); + + Ok(Self { + channel_id_type, + channel_id, + channel_name, + }) + } + + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { + let dvc_header = Header { + channel_id_type: self.channel_id_type as u8, + pdu_dependent: UNUSED_U8, // because DYNVC_CAPS_VERSION1 + pdu_type: PduType::Create, + }; + dvc_header.to_buffer(&mut stream)?; + self.channel_id_type + .to_buffer_according_to_type(&mut stream, self.channel_id)?; + stream.write_all(self.channel_name.as_ref())?; + stream.write_all(b"\0")?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + HEADER_SIZE + self.channel_id_type.get_type_size() + self.channel_name.len() + "\0".len() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CreateResponsePdu { + pub channel_id_type: FieldType, + pub channel_id: u32, + pub creation_status: u32, +} + +impl CreateResponsePdu { + pub fn from_buffer( + mut stream: impl io::Read, + channel_id_type: FieldType, + ) -> Result { + let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; + let creation_status = stream.read_u32::()?; + + Ok(Self { + channel_id_type, + channel_id, + creation_status, + }) + } + + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { + let dvc_header = Header { + channel_id_type: self.channel_id_type as u8, + pdu_dependent: UNUSED_U8, + pdu_type: PduType::Create, + }; + dvc_header.to_buffer(&mut stream)?; + self.channel_id_type + .to_buffer_according_to_type(&mut stream, self.channel_id)?; + stream.write_u32::(self.creation_status)?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + HEADER_SIZE + self.channel_id_type.get_type_size() + DVC_CREATION_STATUS_SIZE + } +} diff --git a/ironrdp/src/rdp/vc/dvc/create/test.rs b/ironrdp/src/rdp/vc/dvc/create/test.rs new file mode 100644 index 00000000..82c2c93c --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/create/test.rs @@ -0,0 +1,83 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_TEST_CHANNEL_ID: u32 = 0x0000_0003; +const DVC_CREATION_STATUS: u32 = 0x0000_0000; + +const DVC_CREATE_REQUEST_BUFFER_SIZE: usize = 10; +const DVC_CREATE_REQUEST_BUFFER: [u8; DVC_CREATE_REQUEST_BUFFER_SIZE] = + [0x10, 0x03, 0x74, 0x65, 0x73, 0x74, 0x64, 0x76, 0x63, 0x00]; + +const DVC_CREATE_RESPONSE_BUFFER_SIZE: usize = 6; +const DVC_CREATE_RESPONSE_BUFFER: [u8; DVC_CREATE_RESPONSE_BUFFER_SIZE] = + [0x10, 0x03, 0x00, 0x00, 0x00, 0x00]; + +lazy_static! { + static ref DVC_CREATE_REQUEST: CreateRequestPdu = CreateRequestPdu { + channel_id_type: FieldType::U8, + channel_id: DVC_TEST_CHANNEL_ID, + channel_name: String::from("testdvc") + }; + static ref DVC_CREATE_RESPONSE: CreateResponsePdu = CreateResponsePdu { + channel_id_type: FieldType::U8, + channel_id: DVC_TEST_CHANNEL_ID, + creation_status: DVC_CREATION_STATUS + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_create_request_pdu() { + assert_eq!( + DVC_CREATE_REQUEST.clone(), + CreateRequestPdu::from_buffer(&DVC_CREATE_REQUEST_BUFFER[1..], FieldType::U8).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_create_request_pdu() { + let create_request = DVC_CREATE_REQUEST.clone(); + + let mut buffer = Vec::new(); + create_request.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_CREATE_REQUEST_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_create_request_pdu() { + let create_request = DVC_CREATE_REQUEST.clone(); + let expected_buf_len = DVC_CREATE_REQUEST_BUFFER.len(); + + let len = create_request.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_dvc_create_response_pdu() { + assert_eq!( + DVC_CREATE_RESPONSE.clone(), + CreateResponsePdu::from_buffer(&DVC_CREATE_RESPONSE_BUFFER[1..], FieldType::U8).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_create_response_pdu() { + let create_response = DVC_CREATE_RESPONSE.clone(); + + let mut buffer = Vec::new(); + create_response.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_CREATE_RESPONSE_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_create_response_pdu() { + let create_response = DVC_CREATE_RESPONSE.clone(); + let expected_buf_len = DVC_CREATE_RESPONSE_BUFFER.len(); + + let len = create_response.buffer_length(); + + assert_eq!(expected_buf_len, len); +} diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp/src/rdp/vc/dvc/data.rs new file mode 100644 index 00000000..8e3071d0 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/data.rs @@ -0,0 +1,56 @@ +#[cfg(test)] +mod test; + +use std::io; + +use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE, UNUSED_U8}; +use crate::{rdp::vc::ChannelError, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct DataPdu { + pub channel_id_type: FieldType, + pub channel_id: u32, + pub dvc_data: Vec, +} + +impl DataPdu { + pub fn from_buffer( + mut stream: impl io::Read, + channel_id_type: FieldType, + ) -> Result { + let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; + let mut dvc_data = Vec::new(); + stream.read_to_end(&mut dvc_data)?; + + let expected_max_data_size = + PDU_WITH_DATA_MAX_SIZE - (HEADER_SIZE + channel_id_type.get_type_size()); + + if dvc_data.len() > expected_max_data_size { + Err(ChannelError::InvalidDvcMessageSize) + } else { + Ok(Self { + channel_id_type, + channel_id, + dvc_data, + }) + } + } + + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { + let dvc_header = Header { + channel_id_type: self.channel_id_type as u8, + pdu_dependent: UNUSED_U8, + pdu_type: PduType::Data, + }; + dvc_header.to_buffer(&mut stream)?; + self.channel_id_type + .to_buffer_according_to_type(&mut stream, self.channel_id)?; + stream.write_all(self.dvc_data.as_ref())?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + HEADER_SIZE + self.channel_id_type.get_type_size() + self.dvc_data.len() + } +} diff --git a/ironrdp/src/rdp/vc/dvc/data/test.rs b/ironrdp/src/rdp/vc/dvc/data/test.rs new file mode 100644 index 00000000..fe9772ac --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/data/test.rs @@ -0,0 +1,62 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_TEST_CHANNEL_ID_U8: u32 = 0x03; + +const DVC_DATA_BUFFER_SIZE: usize = 14; +const DVC_DATA_BUFFER: [u8; DVC_DATA_BUFFER_SIZE] = [ + 0x30, 0x03, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, +]; + +const DVC_TEST_DATA_BUFFER_SIZE: usize = 12; +const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ + 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, +]; + +const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = + [0x77; PDU_WITH_DATA_MAX_SIZE]; + +lazy_static! { + static ref DVC_DATA: DataPdu = DataPdu { + channel_id_type: FieldType::U8, + channel_id: DVC_TEST_CHANNEL_ID_U8, + dvc_data: DVC_TEST_DATA_BUFFER.to_vec() + }; +} + +#[test] +fn from_buffer_parsing_for_dvc_data_pdu_with_invalid_message_size_fails() { + match DataPdu::from_buffer(DVC_INVALID_DATA_MESSAGE_BUFFER.as_ref(), FieldType::U8) { + Err(ChannelError::InvalidDvcMessageSize) => (), + res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_data_pdu() { + assert_eq!( + DVC_DATA.clone(), + DataPdu::from_buffer(&DVC_DATA_BUFFER[1..], FieldType::U8).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_data_pdu() { + let data = DVC_DATA.clone(); + + let mut buffer = Vec::new(); + data.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_DATA_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_data_pdu() { + let data = DVC_DATA.clone(); + let expected_buf_len = DVC_DATA_BUFFER.len(); + + let len = data.buffer_length(); + + assert_eq!(expected_buf_len, len); +} diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs new file mode 100644 index 00000000..a7e36749 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -0,0 +1,67 @@ +#[cfg(test)] +mod test; + +use std::io; + +use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE}; +use crate::{rdp::vc::ChannelError, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct DataFirstPdu { + pub channel_id_type: FieldType, + pub channel_id: u32, + pub data_length_type: FieldType, + pub data_length: u32, + pub dvc_data: Vec, +} + +impl DataFirstPdu { + pub fn from_buffer( + mut stream: impl io::Read, + channel_id_type: FieldType, + data_length_type: FieldType, + ) -> Result { + let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; + let data_length = data_length_type.read_buffer_according_to_type(&mut stream)?; + let mut dvc_data = Vec::new(); + stream.read_to_end(&mut dvc_data)?; + + let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE + - (HEADER_SIZE + channel_id_type.get_type_size() + data_length_type.get_type_size()); + + if dvc_data.len() > expected_max_data_size { + Err(ChannelError::InvalidDvcMessageSize) + } else { + Ok(Self { + channel_id_type, + channel_id, + data_length_type, + data_length, + dvc_data, + }) + } + } + + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { + let dvc_header = Header { + channel_id_type: self.channel_id_type as u8, + pdu_dependent: self.data_length_type as u8, + pdu_type: PduType::DataFirst, + }; + dvc_header.to_buffer(&mut stream)?; + self.channel_id_type + .to_buffer_according_to_type(&mut stream, self.channel_id)?; + self.data_length_type + .to_buffer_according_to_type(&mut stream, self.data_length)?; + stream.write_all(self.dvc_data.as_ref())?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + HEADER_SIZE + + self.channel_id_type.get_type_size() + + self.data_length_type.get_type_size() + + self.dvc_data.len() + } +} diff --git a/ironrdp/src/rdp/vc/dvc/data_first/test.rs b/ironrdp/src/rdp/vc/dvc/data_first/test.rs new file mode 100644 index 00000000..bde91a6c --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/data_first/test.rs @@ -0,0 +1,70 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_TEST_CHANNEL_ID_U8: u32 = 0x03; +const DVC_TEST_DATA_LENGTH: u32 = 0x0000_0C7B; + +const DVC_DATA_FIRST_BUFFER_SIZE: usize = 16; +const DVC_DATA_FIRST_BUFFER: [u8; DVC_DATA_FIRST_BUFFER_SIZE] = [ + 0x24, 0x03, 0x7b, 0x0c, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, +]; + +const DVC_TEST_DATA_BUFFER_SIZE: usize = 12; +const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ + 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, +]; + +const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = + [0x77; PDU_WITH_DATA_MAX_SIZE]; + +lazy_static! { + static ref DVC_DATA_FIRST: DataFirstPdu = DataFirstPdu { + channel_id_type: FieldType::U8, + channel_id: DVC_TEST_CHANNEL_ID_U8, + data_length_type: FieldType::U16, + data_length: DVC_TEST_DATA_LENGTH, + dvc_data: DVC_TEST_DATA_BUFFER.to_vec() + }; +} + +#[test] +fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_message_size_fails() { + match DataFirstPdu::from_buffer( + DVC_INVALID_DATA_MESSAGE_BUFFER.as_ref(), + FieldType::U8, + FieldType::U16, + ) { + Err(ChannelError::InvalidDvcMessageSize) => (), + res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_data_first_pdu() { + assert_eq!( + DVC_DATA_FIRST.clone(), + DataFirstPdu::from_buffer(&DVC_DATA_FIRST_BUFFER[1..], FieldType::U8, FieldType::U16) + .unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_data_first_pdu() { + let data_first = DVC_DATA_FIRST.clone(); + + let mut buffer = Vec::new(); + data_first.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_DATA_FIRST_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_data_first_pdu() { + let data_first = DVC_DATA_FIRST.clone(); + let expected_buf_len = DVC_DATA_FIRST_BUFFER.len(); + + let len = data_first.buffer_length(); + + assert_eq!(expected_buf_len, len); +} diff --git a/ironrdp/src/rdp/vc/dvc/test.rs b/ironrdp/src/rdp/vc/dvc/test.rs new file mode 100644 index 00000000..5eca4d66 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/test.rs @@ -0,0 +1,154 @@ +use lazy_static::lazy_static; + +use super::*; + +const DVC_HEADER_BUFFER: [u8; HEADER_SIZE] = [0x11]; +const DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER: [u8; HEADER_SIZE] = [0x13]; + +const TEST_BUFFER_SIZE: usize = 4; +const TEST_BUFFER: [u8; TEST_BUFFER_SIZE] = [0x01, 0x02, 0x03, 0x04]; + +lazy_static! { + static ref DYNAMIC_CHANNEL_HEADER: Header = Header { + channel_id_type: FieldType::U16.to_u8().unwrap(), + pdu_dependent: 0, + pdu_type: PduType::Create, + }; +} + +#[test] +fn from_buffer_parsing_for_dvc_header_with_invalid_pdu_type_fails() { + let invalid_header: u8 = 0xA0; + match Header::from_buffer([invalid_header].as_ref()) { + Err(ChannelError::InvalidDvcPduType) => (), + res => panic!("Expected InvalidDvcPduType error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_correct_parses_dvc_header() { + assert_eq!( + DYNAMIC_CHANNEL_HEADER.clone(), + Header::from_buffer(DVC_HEADER_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_header() { + let channel_header = DYNAMIC_CHANNEL_HEADER.clone(); + + let mut buffer = Vec::new(); + channel_header.to_buffer(&mut buffer).unwrap(); + + assert_eq!(DVC_HEADER_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_dvc_header() { + let channel_header = DYNAMIC_CHANNEL_HEADER.clone(); + let expected_buf_len = DVC_HEADER_BUFFER.len(); + + let len = channel_header.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { + match ClientPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref()) { + Err(ChannelError::InvalidDVChannelIdLength) => (), + res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_for_server_dvc_pdu_with_invalid_id_length_type_fails() { + match ServerPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref()) { + Err(ChannelError::InvalidDVChannelIdLength) => (), + res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_according_to_type_u8_test() { + let channel_id = FieldType::U8 + .read_buffer_according_to_type(TEST_BUFFER.as_ref()) + .unwrap(); + let expected_channel_id = 0x01; + + assert_eq!(expected_channel_id, channel_id); +} + +#[test] +fn from_buffer_according_to_type_u16_test() { + let channel_id = FieldType::U16 + .read_buffer_according_to_type(TEST_BUFFER.as_ref()) + .unwrap(); + let expected_channel_id = 0x0201; + + assert_eq!(expected_channel_id, channel_id); +} + +#[test] +fn from_buffer_according_to_type_u32_test() { + let channel_id = FieldType::U32 + .read_buffer_according_to_type(TEST_BUFFER.as_ref()) + .unwrap(); + let expected_channel_id = 0x0403_0201; + + assert_eq!(expected_channel_id, channel_id); +} + +#[test] +fn to_buffer_according_to_type_u8_test() { + let channel_id = 0x01; + let mut buffer = Vec::new(); + FieldType::U8 + .to_buffer_according_to_type(&mut buffer, channel_id) + .unwrap(); + + let expected_buffer = vec![0x01]; + assert_eq!(expected_buffer, buffer); +} + +#[test] +fn to_buffer_according_to_type_u16_test() { + let channel_id = 0x0201; + let mut buffer = Vec::new(); + FieldType::U16 + .to_buffer_according_to_type(&mut buffer, channel_id) + .unwrap(); + + let expected_buffer = vec![0x01, 0x02]; + assert_eq!(expected_buffer, buffer); +} + +#[test] +fn to_buffer_according_to_type_u32_test() { + let channel_id = 0x0403_0201; + let mut buffer = Vec::new(); + FieldType::U32 + .to_buffer_according_to_type(&mut buffer, channel_id) + .unwrap(); + + let expected_buffer = vec![0x01, 0x02, 0x03, 0x04]; + assert_eq!(expected_buffer, buffer); +} + +#[test] +fn get_length_according_to_type_u8_test() { + let length = FieldType::U8.get_type_size(); + assert_eq!(mem::size_of::(), length); +} + +#[test] +fn get_length_according_to_type_u16_test() { + let length = FieldType::U16.get_type_size(); + assert_eq!(mem::size_of::(), length); +} + +#[test] +fn get_length_according_to_type_u32_test() { + let length = FieldType::U32.get_type_size(); + assert_eq!(mem::size_of::(), length); +} diff --git a/ironrdp/src/rdp/vc/test.rs b/ironrdp/src/rdp/vc/test.rs index 218a6513..88b2967d 100644 --- a/ironrdp/src/rdp/vc/test.rs +++ b/ironrdp/src/rdp/vc/test.rs @@ -2,22 +2,15 @@ use lazy_static::lazy_static; use super::*; +const CHANNEL_CHUNK_LENGTH_DEFAULT: u32 = 1600; const CHANNEL_PDU_HEADER_BUFFER: [u8; CHANNEL_PDU_HEADER_SIZE] = [0x40, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; -const CHANNEL_DATA_SIZE: usize = 10; -const CHANNEL_DATA_BUFFER: [u8; CHANNEL_DATA_SIZE] = - [0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77]; - -const CHANNEL_CHUNK_LENGTH_DEFAULT: u32 = 1600; - lazy_static! { static ref CHANNEL_PDU_HEADER: ChannelPduHeader = ChannelPduHeader { total_length: CHANNEL_CHUNK_LENGTH_DEFAULT as u32, flags: ChannelControlFlags::FLAG_FIRST, }; - static ref CHANNEL_DATA: VirtualChannelData = - VirtualChannelData::ChannelData(CHANNEL_DATA_BUFFER.to_vec()); } #[test] @@ -38,15 +31,6 @@ fn to_buffer_correct_serializes_channel_header() { assert_eq!(CHANNEL_PDU_HEADER_BUFFER.as_ref(), buffer.as_slice()); } -#[test] -fn to_buffer_correct_serializes_channel_header_with_invalid_flag_fails() { - let invalid_header_buffer = vec![0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]; - match ChannelPduHeader::from_buffer(invalid_header_buffer.as_slice()) { - Err(ChannelError::InvalidChannelPduHeader) => (), - res => panic!("Expected the invalid channel header error, got: {:?}", res), - }; -} - #[test] fn buffer_length_is_correct_for_channel_header() { let channel_header = CHANNEL_PDU_HEADER.clone(); @@ -56,31 +40,3 @@ fn buffer_length_is_correct_for_channel_header() { assert_eq!(expected_buf_len, len); } - -#[test] -fn from_buffer_correct_parses_channel_data() { - assert_eq!( - CHANNEL_DATA.clone(), - VirtualChannelData::from_buffer(CHANNEL_DATA_BUFFER.as_ref()).unwrap(), - ); -} - -#[test] -fn to_buffer_correct_serializes_channel_data() { - let channel_data = CHANNEL_DATA.clone(); - - let mut buffer = Vec::new(); - channel_data.to_buffer(&mut buffer).unwrap(); - - assert_eq!(CHANNEL_DATA_BUFFER.as_ref(), buffer.as_slice()); -} - -#[test] -fn buffer_length_is_correct_for_channel_data() { - let channel_data = CHANNEL_DATA.clone(); - let expected_buf_len = CHANNEL_DATA_BUFFER.len(); - - let len = channel_data.buffer_length(); - - assert_eq!(expected_buf_len, len); -} From c73f9b548d329fc0fe03c0c616f93b562a637362 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 22 Nov 2019 17:20:49 +0200 Subject: [PATCH 0003/1273] ironrdp_client: add transport for static and dynamic channels --- ironrdp/src/rdp/vc.rs | 17 +- ironrdp/src/rdp/vc/dvc.rs | 8 +- ironrdp/src/rdp/vc/dvc/capabilities.rs | 2 +- .../vc/dvc/capabilities/{test.rs => tests.rs} | 0 ironrdp/src/rdp/vc/dvc/close.rs | 2 +- .../rdp/vc/dvc/close/{test.rs => tests.rs} | 0 ironrdp/src/rdp/vc/dvc/create.rs | 3 +- .../rdp/vc/dvc/create/{test.rs => tests.rs} | 3 +- ironrdp/src/rdp/vc/dvc/data.rs | 2 +- .../src/rdp/vc/dvc/data/{test.rs => tests.rs} | 0 ironrdp/src/rdp/vc/dvc/data_first.rs | 6 +- .../vc/dvc/data_first/{test.rs => tests.rs} | 14 ++ ironrdp/src/rdp/vc/dvc/{test.rs => tests.rs} | 0 ironrdp/src/rdp/vc/{test.rs => tests.rs} | 0 ironrdp_client/src/channels.rs | 86 ++++++++ ironrdp_client/src/config.rs | 1 + ironrdp_client/src/connection_sequence.rs | 22 +- ironrdp_client/src/main.rs | 42 +++- ironrdp_client/src/transport.rs | 166 +++++++++++++++ ironrdp_client/src/transport/channels.rs | 108 ++++++++++ .../transport.rs => transport/connection.rs} | 198 +++--------------- 21 files changed, 478 insertions(+), 202 deletions(-) rename ironrdp/src/rdp/vc/dvc/capabilities/{test.rs => tests.rs} (100%) rename ironrdp/src/rdp/vc/dvc/close/{test.rs => tests.rs} (100%) rename ironrdp/src/rdp/vc/dvc/create/{test.rs => tests.rs} (96%) rename ironrdp/src/rdp/vc/dvc/data/{test.rs => tests.rs} (100%) rename ironrdp/src/rdp/vc/dvc/data_first/{test.rs => tests.rs} (79%) rename ironrdp/src/rdp/vc/dvc/{test.rs => tests.rs} (100%) rename ironrdp/src/rdp/vc/{test.rs => tests.rs} (100%) create mode 100644 ironrdp_client/src/channels.rs create mode 100644 ironrdp_client/src/transport.rs create mode 100644 ironrdp_client/src/transport/channels.rs rename ironrdp_client/src/{connection_sequence/transport.rs => transport/connection.rs} (58%) diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index 9430f45c..06614b10 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -1,7 +1,7 @@ pub mod dvc; #[cfg(test)] -mod test; +mod tests; use std::io; @@ -11,6 +11,8 @@ use failure::Fail; use crate::{impl_from_error, PduParsing}; +pub const DRDYNVC_CHANNEL_NAME: &str = "drdynvc"; + const CHANNEL_PDU_HEADER_SIZE: usize = 8; #[derive(Debug, Clone, PartialEq)] @@ -20,15 +22,6 @@ pub struct ChannelPduHeader { pub flags: ChannelControlFlags, } -impl ChannelPduHeader { - pub fn new(total_length: u32, flags: ChannelControlFlags) -> Self { - Self { - total_length, - flags, - } - } -} - impl PduParsing for ChannelPduHeader { type Error = ChannelError; @@ -77,6 +70,8 @@ pub enum ChannelError { Utf8Error(#[fail(cause)] std::string::FromUtf8Error), #[fail(display = "Invalid channel PDU header")] InvalidChannelPduHeader, + #[fail(display = "Invalid channel total data length")] + InvalidChannelTotalDataLength, #[fail(display = "Invalid DVC PDU type")] InvalidDvcPduType, #[fail(display = "Invalid DVC id length value")] @@ -87,6 +82,8 @@ pub enum ChannelError { InvalidDvcCapabilitiesVersion, #[fail(display = "Invalid DVC message size")] InvalidDvcMessageSize, + #[fail(display = "Invalid DVC total message size")] + InvalidDvcTotalMessageSize, } impl_from_error!(io::Error, ChannelError, ChannelError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index 970f1be0..da72146e 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; mod capabilities; mod close; @@ -10,12 +10,12 @@ mod data_first; pub use self::{ capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}, close::ClosePdu, - create::{CreateRequestPdu, CreateResponsePdu}, + create::{CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_OK}, data::DataPdu, data_first::DataFirstPdu, }; -use std::{io, mem}; +use std::{collections::HashMap, io, mem}; use bit_field::BitField; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -30,6 +30,8 @@ const PDU_WITH_DATA_MAX_SIZE: usize = 1600; const UNUSED_U8: u8 = 0; +pub type DynamicChannels = HashMap; + #[repr(u8)] #[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] pub enum PduType { diff --git a/ironrdp/src/rdp/vc/dvc/capabilities.rs b/ironrdp/src/rdp/vc/dvc/capabilities.rs index 1d18c5df..2408c43c 100644 --- a/ironrdp/src/rdp/vc/dvc/capabilities.rs +++ b/ironrdp/src/rdp/vc/dvc/capabilities.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; use std::io; diff --git a/ironrdp/src/rdp/vc/dvc/capabilities/test.rs b/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/capabilities/test.rs rename to ironrdp/src/rdp/vc/dvc/capabilities/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/close.rs b/ironrdp/src/rdp/vc/dvc/close.rs index 79765a83..f693e3ce 100644 --- a/ironrdp/src/rdp/vc/dvc/close.rs +++ b/ironrdp/src/rdp/vc/dvc/close.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; use std::io; diff --git a/ironrdp/src/rdp/vc/dvc/close/test.rs b/ironrdp/src/rdp/vc/dvc/close/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/close/test.rs rename to ironrdp/src/rdp/vc/dvc/close/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs index 35a65a2f..3f9bd9bc 100644 --- a/ironrdp/src/rdp/vc/dvc/create.rs +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; use std::io; @@ -8,6 +8,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; use crate::{rdp::vc::ChannelError, PduParsing}; +pub const DVC_CREATION_STATUS_OK: u32 = 0x0000_0000; const DVC_CREATION_STATUS_SIZE: usize = 4; #[derive(Debug, Clone, PartialEq)] diff --git a/ironrdp/src/rdp/vc/dvc/create/test.rs b/ironrdp/src/rdp/vc/dvc/create/tests.rs similarity index 96% rename from ironrdp/src/rdp/vc/dvc/create/test.rs rename to ironrdp/src/rdp/vc/dvc/create/tests.rs index 82c2c93c..50c95d05 100644 --- a/ironrdp/src/rdp/vc/dvc/create/test.rs +++ b/ironrdp/src/rdp/vc/dvc/create/tests.rs @@ -3,7 +3,6 @@ use lazy_static::lazy_static; use super::*; const DVC_TEST_CHANNEL_ID: u32 = 0x0000_0003; -const DVC_CREATION_STATUS: u32 = 0x0000_0000; const DVC_CREATE_REQUEST_BUFFER_SIZE: usize = 10; const DVC_CREATE_REQUEST_BUFFER: [u8; DVC_CREATE_REQUEST_BUFFER_SIZE] = @@ -22,7 +21,7 @@ lazy_static! { static ref DVC_CREATE_RESPONSE: CreateResponsePdu = CreateResponsePdu { channel_id_type: FieldType::U8, channel_id: DVC_TEST_CHANNEL_ID, - creation_status: DVC_CREATION_STATUS + creation_status: DVC_CREATION_STATUS_OK }; } diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp/src/rdp/vc/dvc/data.rs index 8e3071d0..d1514bd9 100644 --- a/ironrdp/src/rdp/vc/dvc/data.rs +++ b/ironrdp/src/rdp/vc/dvc/data.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; use std::io; diff --git a/ironrdp/src/rdp/vc/dvc/data/test.rs b/ironrdp/src/rdp/vc/dvc/data/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/data/test.rs rename to ironrdp/src/rdp/vc/dvc/data/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs index a7e36749..d2613acb 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod test; +mod tests; use std::io; @@ -26,6 +26,10 @@ impl DataFirstPdu { let mut dvc_data = Vec::new(); stream.read_to_end(&mut dvc_data)?; + if dvc_data.len() >= data_length as usize { + return Err(ChannelError::InvalidDvcTotalMessageSize); + } + let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE - (HEADER_SIZE + channel_id_type.get_type_size() + data_length_type.get_type_size()); diff --git a/ironrdp/src/rdp/vc/dvc/data_first/test.rs b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs similarity index 79% rename from ironrdp/src/rdp/vc/dvc/data_first/test.rs rename to ironrdp/src/rdp/vc/dvc/data_first/tests.rs index bde91a6c..bcf06206 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first/test.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs @@ -9,6 +9,8 @@ const DVC_DATA_FIRST_BUFFER_SIZE: usize = 16; const DVC_DATA_FIRST_BUFFER: [u8; DVC_DATA_FIRST_BUFFER_SIZE] = [ 0x24, 0x03, 0x7b, 0x0c, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, ]; +const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER: [u8; 6] = + [0x03, 0x03, 0x71, 0x71, 0x71, 0x71]; const DVC_TEST_DATA_BUFFER_SIZE: usize = 12; const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ @@ -40,6 +42,18 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_message_size_fails() }; } +#[test] +fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fails() { + match DataFirstPdu::from_buffer( + DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER.as_ref(), + FieldType::U8, + FieldType::U8, + ) { + Err(ChannelError::InvalidDvcTotalMessageSize) => (), + res => panic!("Expected InvalidDvcTotalMessageSize error, got: {:?}", res), + }; +} + #[test] fn from_buffer_correct_parses_dvc_data_first_pdu() { assert_eq!( diff --git a/ironrdp/src/rdp/vc/dvc/test.rs b/ironrdp/src/rdp/vc/dvc/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/test.rs rename to ironrdp/src/rdp/vc/dvc/tests.rs diff --git a/ironrdp/src/rdp/vc/test.rs b/ironrdp/src/rdp/vc/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/test.rs rename to ironrdp/src/rdp/vc/tests.rs diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs new file mode 100644 index 00000000..fe7ffe68 --- /dev/null +++ b/ironrdp_client/src/channels.rs @@ -0,0 +1,86 @@ +use std::io; + +use ironrdp::{rdp::vc, PduParsing}; +use log::debug; + +use crate::{ + transport::{Decoder, DynamicVirtualChannelTransport, Encoder, StaticVirtualChannelTransport}, + RdpResult, StaticChannels, +}; + +pub fn process_dvc_messages_exchange( + mut stream: impl io::BufRead + io::Write, + static_channels: StaticChannels, +) -> RdpResult<()> { + let drdynvc_id = *static_channels + .get(vc::DRDYNVC_CHANNEL_NAME) + .expect("drdynvc channel must be added"); + + let mut dvc_messages_exchange = false; + let mut svc_transport = StaticVirtualChannelTransport::new(); + let mut dynamic_channels = vc::dvc::DynamicChannels::new(); + + loop { + let (channel_id, channel_data) = svc_transport.decode(&mut stream)?; + if drdynvc_id != channel_id { + debug!("Got virtual channel PDU on channel with {} id", channel_id); + + if dvc_messages_exchange { + // during dvc messages exchange server can send some messages through static channels and wait the response + // so if dvc messages exchange was at least once need to finish connection to avoid client hanging + break; + } else { + continue; + } + } + + let mut dvc_transport = DynamicVirtualChannelTransport::new(svc_transport); + dvc_messages_exchange = true; + + match vc::dvc::ServerPdu::from_buffer(channel_data.as_slice())? { + vc::dvc::ServerPdu::CapabilitiesRequest(caps_request) => { + debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); + let caps_response = + vc::dvc::ClientPdu::CapabilitiesResponse(vc::dvc::CapabilitiesResponsePdu { + version: vc::dvc::CapsVersion::V1, + }); + + debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); + dvc_transport.encode(caps_response, &mut stream)?; + } + vc::dvc::ServerPdu::CreateRequest(create_request) => { + debug!("Got DVC Create Request PDU: {:?}", create_request); + dynamic_channels.insert(create_request.channel_id, create_request.channel_name); + + let create_response = + vc::dvc::ClientPdu::CreateResponse(vc::dvc::CreateResponsePdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + creation_status: vc::dvc::DVC_CREATION_STATUS_OK, + }); + + debug!("Send DVC Create Response PDU: {:?}", create_response); + dvc_transport.encode(create_response, &mut stream)?; + } + vc::dvc::ServerPdu::CloseRequest(close_request) => { + debug!("Got DVC Close Request PDU: {:?}", close_request); + let channel_name = dynamic_channels + .remove(&close_request.channel_id) + .map_or("unknown".to_string(), |channel| channel); + + let close_response = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { + channel_id_type: close_request.channel_id_type, + channel_id: close_request.channel_id, + }); + + debug!("Send DVC Close Response PDU: {:?}", close_response); + dvc_transport.encode(close_response, &mut stream)?; + + debug!("DVC {} was closed", channel_name); + } + _ => break, + } + } + + Ok(()) +} diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index 321c0ef7..a739ee45 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -231,6 +231,7 @@ impl Input { String::from("rdpdr"), String::from("rdpsnd"), String::from("cliprdr"), + String::from("drdynvc"), ] }; diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 48c87bd1..21a994e6 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -1,11 +1,5 @@ -mod transport; mod user_info; -pub use transport::{ - DataTransport, EarlyUserAuthResult, McsTransport, SendDataContextTransport, - ShareControlHeaderTransport, ShareDataHeaderTransport, TsRequestTransport, -}; - use std::{collections::HashMap, io, iter}; use bytes::BytesMut; @@ -27,11 +21,7 @@ use ring::rand::SecureRandom; use rustls::{internal::msgs::handshake::CertificatePayload, Session}; use sspi::internal::credssp; -use crate::{ - config::Config, - connection_sequence::transport::{Decoder, Encoder}, - utils, RdpError, RdpResult, -}; +use crate::{config::Config, transport::*, utils, RdpError, RdpResult}; pub type StaticChannels = HashMap; @@ -239,8 +229,16 @@ pub fn process_server_license_exchange( mut stream: impl io::BufRead + io::Write, transport: &mut SendDataContextTransport, config: &Config, + global_channel_id: u16, ) -> RdpResult<()> { - let pdu = transport.decode(&mut stream)?; + let (channel_ids, pdu) = transport.decode(&mut stream)?; + if channel_ids.channel_id != global_channel_id { + return Err(RdpError::InvalidResponse(format!( + "Unexpected Send Data Context channel ID ({})", + channel_ids.channel_id, + ))); + } + let initial_license_message = InitialServerLicenseMessage::from_buffer(pdu.as_slice()) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 5f2dacf8..e5acc527 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,5 +1,7 @@ +mod channels; mod config; mod connection_sequence; +mod transport; mod utils; use std::{ @@ -9,11 +11,23 @@ use std::{ }; use failure::Fail; -use ironrdp::{nego, rdp}; +use ironrdp::{nego, rdp::{self, vc}}; use log::{debug, error, warn}; use sspi::internal::credssp; -use self::{config::Config, connection_sequence::*}; +use self::{ + channels::process_dvc_messages_exchange, + config::Config, + connection_sequence::{ + process_capability_sets, process_cred_ssp, process_finalization, process_mcs, + process_mcs_connect, process_server_license, send_client_info, StaticChannels, + GLOBAL_CHANNEL_NAME, USER_CHANNEL_NAME, + }, + transport::{ + connect, EarlyUserAuthResult, McsTransport, SendDataContextTransport, + ShareControlHeaderTransport, ShareDataHeaderTransport, + }, +}; pub type RdpResult = Result; @@ -39,7 +53,6 @@ fn main() { match run(config) { Ok(_) => { - println!("RDP connection sequence finished"); std::process::exit(exitcode::OK); } Err(e) => { @@ -77,11 +90,12 @@ fn run(config: Config) -> RdpResult<()> { let stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; let mut stream = bufstream::BufStream::new(stream); - let (mut transport, selected_protocol) = DataTransport::connect( + let (mut transport, selected_protocol) = connect( &mut stream, config.input.security_protocol, config.input.credentials.username.clone(), )?; + let mut stream = stream.into_inner().map_err(io::Error::from)?; let mut client_config = rustls::ClientConfig::default(); @@ -128,7 +142,8 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); send_client_info(&mut tls_stream, &mut transport, &config)?; - match process_server_license_exchange(&mut tls_stream, &mut transport, &config) { + + match process_server_license_exchange(&mut tls_stream, &mut transport, &config, global_channel_id) { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), ))) => { @@ -138,11 +153,18 @@ fn run(config: Config) -> RdpResult<()> { Ok(_) => (), } - let mut transport = ShareControlHeaderTransport::new(transport, initiator_id); + let mut transport = + ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); process_capability_sets(&mut tls_stream, &mut transport, &config)?; let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut tls_stream, &mut transport, initiator_id)?; + println!("RDP connection sequence finished"); + + if joined_static_channels.contains_key(vc::DRDYNVC_CHANNEL_NAME) { + process_dvc_messages_exchange(&mut tls_stream, joined_static_channels)?; + println!("RDP DVC messages exchange finished"); + } Ok(()) } @@ -187,6 +209,8 @@ pub enum RdpError { ShareControlHeaderError(ironrdp::rdp::RdpError), #[fail(display = "capability sets error: {}", _0)] CapabilitySetsError(ironrdp::rdp::RdpError), + #[fail(display = "Virtual channel error: {}", _0)] + VirtualChannelError(ironrdp::rdp::vc::ChannelError), } impl From for RdpError { @@ -216,3 +240,9 @@ impl From for RdpError { RdpError::McsError(e) } } + +impl From for RdpError { + fn from(e: ironrdp::rdp::vc::ChannelError) -> Self { + RdpError::VirtualChannelError(e) + } +} diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs new file mode 100644 index 00000000..6c46f769 --- /dev/null +++ b/ironrdp_client/src/transport.rs @@ -0,0 +1,166 @@ +mod channels; +mod connection; + +pub use self::{ + channels::{ + ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport, + }, + connection::{ + connect, EarlyUserAuthResult, ShareControlHeaderTransport, ShareDataHeaderTransport, + TsRequestTransport, + }, +}; + +use std::io; + +use bytes::BytesMut; +use ironrdp::PduParsing; + +use crate::{RdpError, RdpResult}; + +pub trait Encoder { + type Item; + type Error; + + fn encode(&mut self, item: Self::Item, stream: impl io::Write) -> Result<(), Self::Error>; +} + +pub trait Decoder { + type Item; + type Error; + + fn decode(&mut self, stream: impl io::Read) -> Result; +} + +#[derive(Default, Copy, Clone, Debug)] +pub struct DataTransport; + +impl Encoder for DataTransport { + type Item = BytesMut; + type Error = RdpError; + + fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + ironrdp::Data::new(data.len()).to_buffer(&mut stream)?; + stream.write_all(data.as_ref())?; + stream.flush()?; + + Ok(()) + } +} + +impl Decoder for DataTransport { + type Item = BytesMut; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; + + let mut data = BytesMut::with_capacity(data_pdu.data_length); + data.resize(data_pdu.data_length, 0x00); + stream.read_exact(&mut data)?; + + Ok(data) + } +} + +#[derive(Copy, Clone, Debug)] +pub struct McsTransport(DataTransport); + +impl McsTransport { + pub fn new(transport: DataTransport) -> Self { + Self(transport) + } +} + +impl Encoder for McsTransport { + type Item = ironrdp::McsPdu; + type Error = RdpError; + + fn encode(&mut self, mcs_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + let mut mcs_pdu_buf = BytesMut::with_capacity(mcs_pdu.buffer_length() as usize); + mcs_pdu_buf.resize(mcs_pdu.buffer_length(), 0x00); + mcs_pdu + .to_buffer(mcs_pdu_buf.as_mut()) + .map_err(RdpError::McsError)?; + + self.0.encode(mcs_pdu_buf, &mut stream) + } +} + +impl Decoder for McsTransport { + type Item = ironrdp::McsPdu; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let data = self.0.decode(&mut stream)?; + + let mcs_pdu = ironrdp::McsPdu::from_buffer(data.as_ref()).map_err(RdpError::McsError)?; + + Ok(mcs_pdu) + } +} + +#[derive(Copy, Clone, Debug)] +pub struct SendDataContextTransport { + mcs_transport: McsTransport, + channel_ids: ChannelIdentificators, +} + +impl SendDataContextTransport { + pub fn new(mcs_transport: McsTransport, initiator_id: u16, channel_id: u16) -> Self { + Self { + mcs_transport, + channel_ids: ChannelIdentificators { + initiator_id, + channel_id, + }, + } + } + + pub fn set_channel_ids(&mut self, initiator_ids: ChannelIdentificators) { + self.channel_ids = initiator_ids; + } +} + +impl Encoder for SendDataContextTransport { + type Item = Vec; + type Error = RdpError; + + fn encode( + &mut self, + send_data_context_pdu: Self::Item, + mut stream: impl io::Write, + ) -> RdpResult<()> { + let send_data_context = ironrdp::mcs::SendDataContext::new( + send_data_context_pdu, + self.channel_ids.initiator_id, + self.channel_ids.channel_id, + ); + + let send_data_request = ironrdp::McsPdu::SendDataRequest(send_data_context); + self.mcs_transport.encode(send_data_request, &mut stream) + } +} + +impl Decoder for SendDataContextTransport { + type Item = (ChannelIdentificators, Vec); + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let mcs_pdu = self.mcs_transport.decode(&mut stream)?; + if let ironrdp::McsPdu::SendDataIndication(send_data_context) = mcs_pdu { + Ok(( + ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }, + send_data_context.pdu, + )) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Send Data Context PDU, got {:?}", + mcs_pdu.as_short_name() + ))) + } + } +} diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs new file mode 100644 index 00000000..5535cacc --- /dev/null +++ b/ironrdp_client/src/transport/channels.rs @@ -0,0 +1,108 @@ +use std::io; + +use ironrdp::{rdp::vc, PduParsing}; + +use super::{DataTransport, Decoder, Encoder, McsTransport, SendDataContextTransport}; +use crate::{RdpError, RdpResult}; + +#[derive(Copy, Clone, Debug)] +pub struct ChannelIdentificators { + pub initiator_id: u16, + pub channel_id: u16, +} + +#[derive(Copy, Clone, Debug)] +pub struct StaticVirtualChannelTransport { + channel_ids: ChannelIdentificators, + send_data_context_transport: SendDataContextTransport, +} + +impl StaticVirtualChannelTransport { + pub fn new() -> Self { + Self { + channel_ids: ChannelIdentificators { + channel_id: 0, + initiator_id: 0, + }, + send_data_context_transport: SendDataContextTransport::new( + McsTransport::new(DataTransport), + 0, + 0, + ), + } + } +} + +impl Encoder for StaticVirtualChannelTransport { + type Item = Vec; + type Error = RdpError; + + fn encode( + &mut self, + mut channel_data_buffer: Self::Item, + mut stream: impl io::Write, + ) -> RdpResult<()> { + let channel_header = vc::ChannelPduHeader { + total_length: channel_data_buffer.len() as u32, + flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, + }; + + let mut channel_buffer = + Vec::with_capacity(channel_header.buffer_length() + channel_data_buffer.len()); + channel_header.to_buffer(&mut channel_buffer)?; + channel_buffer.append(&mut channel_data_buffer); + + self.send_data_context_transport + .set_channel_ids(self.channel_ids); + + self.send_data_context_transport + .encode(channel_buffer, &mut stream) + } +} + +impl Decoder for StaticVirtualChannelTransport { + type Item = (u16, Vec); + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let (channel_ids, mut channel_data_buffer) = + self.send_data_context_transport.decode(&mut stream)?; + self.channel_ids = channel_ids; + let channel_header = vc::ChannelPduHeader::from_buffer(channel_data_buffer.as_slice())?; + + channel_data_buffer.drain(..channel_header.buffer_length()); + Ok((channel_ids.channel_id, channel_data_buffer)) + } +} + +pub struct DynamicVirtualChannelTransport(StaticVirtualChannelTransport); + +impl DynamicVirtualChannelTransport { + pub fn new(svc_transport: StaticVirtualChannelTransport) -> Self { + Self(svc_transport) + } +} + +impl Encoder for DynamicVirtualChannelTransport { + type Item = vc::dvc::ClientPdu; + type Error = RdpError; + + fn encode(&mut self, dvc_clien_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + let mut dvc_clien_pdu_buf = Vec::with_capacity(dvc_clien_pdu.buffer_length()); + dvc_clien_pdu.to_buffer(&mut dvc_clien_pdu_buf)?; + + self.0.encode(dvc_clien_pdu_buf, &mut stream) + } +} + +impl Decoder for DynamicVirtualChannelTransport { + type Item = vc::dvc::ServerPdu; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let (_channel_id, channel_data_buffer) = self.0.decode(&mut stream)?; + let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(channel_data_buffer.as_slice())?; + + Ok(dvc_server_pdu) + } +} diff --git a/ironrdp_client/src/connection_sequence/transport.rs b/ironrdp_client/src/transport/connection.rs similarity index 58% rename from ironrdp_client/src/connection_sequence/transport.rs rename to ironrdp_client/src/transport/connection.rs index 784bf8e5..360b767a 100644 --- a/ironrdp_client/src/connection_sequence/transport.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -1,77 +1,15 @@ use std::io; use bytes::BytesMut; -use ironrdp::{nego, PduParsing}; +use ironrdp::{nego, rdp::SERVER_CHANNEL_ID, PduParsing}; use log::{debug, warn}; use sspi::internal::credssp; -use crate::{connection_sequence::SERVER_CHANNEL_ID, RdpError, RdpResult}; +use super::{DataTransport, Decoder, Encoder, SendDataContextTransport}; +use crate::{RdpError, RdpResult}; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; -pub trait Encoder { - type Item; - type Error; - - fn encode(&mut self, item: Self::Item, stream: impl io::Write) -> Result<(), Self::Error>; -} - -pub trait Decoder { - type Item; - type Error; - - fn decode(&mut self, stream: impl io::Read) -> Result; -} - -#[derive(Default)] -pub struct DataTransport; - -impl DataTransport { - pub fn connect( - mut stream: impl io::BufRead + io::Write, - security_protocol: nego::SecurityProtocol, - username: String, - ) -> RdpResult<(DataTransport, nego::SecurityProtocol)> { - let selected_protocol = process_negotiation( - &mut stream, - Some(nego::NegoData::Cookie(username)), - security_protocol, - nego::RequestFlags::empty(), - 0, - )?; - - Ok((Self, selected_protocol)) - } -} - -impl Encoder for DataTransport { - type Item = BytesMut; - type Error = RdpError; - - fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - ironrdp::Data::new(data.len()).to_buffer(&mut stream)?; - stream.write_all(data.as_ref())?; - stream.flush()?; - - Ok(()) - } -} - -impl Decoder for DataTransport { - type Item = BytesMut; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; - - let mut data = BytesMut::with_capacity(data_pdu.data_length); - data.resize(data_pdu.data_length, 0x00); - stream.read_exact(&mut data)?; - - Ok(data) - } -} - #[derive(Default)] pub struct TsRequestTransport; @@ -128,112 +66,21 @@ impl EarlyUserAuthResult { } } -pub struct McsTransport(DataTransport); - -impl McsTransport { - pub fn new(transport: DataTransport) -> Self { - Self(transport) - } -} - -impl Encoder for McsTransport { - type Item = ironrdp::McsPdu; - type Error = RdpError; - - fn encode(&mut self, mcs_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - let mut mcs_pdu_buf = BytesMut::with_capacity(mcs_pdu.buffer_length() as usize); - mcs_pdu_buf.resize(mcs_pdu.buffer_length(), 0x00); - mcs_pdu - .to_buffer(mcs_pdu_buf.as_mut()) - .map_err(RdpError::McsError)?; - - self.0.encode(mcs_pdu_buf, &mut stream) - } -} - -impl Decoder for McsTransport { - type Item = ironrdp::McsPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let data = self.0.decode(&mut stream)?; - - let mcs_pdu = ironrdp::McsPdu::from_buffer(data.as_ref()).map_err(RdpError::McsError)?; - - Ok(mcs_pdu) - } -} - -pub struct SendDataContextTransport { - mcs_transport: McsTransport, - initiator_id: u16, - global_channel_id: u16, -} - -impl SendDataContextTransport { - pub fn new(mcs_transport: McsTransport, initiator_id: u16, global_channel_id: u16) -> Self { - Self { - mcs_transport, - initiator_id, - global_channel_id, - } - } -} - -impl Encoder for SendDataContextTransport { - type Item = Vec; - type Error = RdpError; - - fn encode( - &mut self, - send_data_context_pdu: Self::Item, - mut stream: impl io::Write, - ) -> RdpResult<()> { - let send_data_context = ironrdp::mcs::SendDataContext::new( - send_data_context_pdu, - self.initiator_id, - self.global_channel_id, - ); - let send_data_request = ironrdp::McsPdu::SendDataRequest(send_data_context); - - self.mcs_transport.encode(send_data_request, &mut stream) - } -} - -impl Decoder for SendDataContextTransport { - type Item = Vec; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let mcs_pdu = self.mcs_transport.decode(&mut stream)?; - - if let ironrdp::McsPdu::SendDataIndication(send_data_context) = mcs_pdu { - if send_data_context.channel_id == self.global_channel_id { - Ok(send_data_context.pdu) - } else { - Err(RdpError::InvalidResponse(format!( - "Unexpected Send Data Context channel ID ({})", - send_data_context.channel_id, - ))) - } - } else { - Err(RdpError::UnexpectedPdu(format!( - "Expected Send Data Context PDU, got {:?}", - mcs_pdu.as_short_name() - ))) - } - } -} - pub struct ShareControlHeaderTransport { + global_channel_id: u16, share_id: u32, pdu_source: u16, send_data_context_transport: SendDataContextTransport, } impl ShareControlHeaderTransport { - pub fn new(send_data_context_transport: SendDataContextTransport, pdu_source: u16) -> Self { + pub fn new( + send_data_context_transport: SendDataContextTransport, + pdu_source: u16, + global_channel_id: u16, + ) -> Self { Self { + global_channel_id, send_data_context_transport, pdu_source, share_id: 0, @@ -267,7 +114,14 @@ impl Decoder for ShareControlHeaderTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let send_data_context = self.send_data_context_transport.decode(&mut stream)?; + let (channel_ids, send_data_context) = + self.send_data_context_transport.decode(&mut stream)?; + if channel_ids.channel_id != self.global_channel_id { + return Err(RdpError::InvalidResponse(format!( + "Unexpected Send Data Context channel ID ({})", + channel_ids.channel_id, + ))); + } let share_control_header = ironrdp::ShareControlHeader::from_buffer(send_data_context.as_slice()) @@ -330,6 +184,22 @@ impl Decoder for ShareDataHeaderTransport { } } +pub fn connect( + mut stream: impl io::BufRead + io::Write, + security_protocol: nego::SecurityProtocol, + username: String, +) -> RdpResult<(DataTransport, nego::SecurityProtocol)> { + let selected_protocol = process_negotiation( + &mut stream, + Some(nego::NegoData::Cookie(username)), + security_protocol, + nego::RequestFlags::empty(), + 0, + )?; + + Ok((DataTransport, selected_protocol)) +} + fn process_negotiation( mut stream: impl io::BufRead + io::Write, nego_data: Option, From a866bbdc11038823bfa227699020dd3923f74dc0 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 11 Dec 2019 14:15:33 +0200 Subject: [PATCH 0004/1273] ironrdp_client: implement exchange of DVC messages --- ironrdp/src/nego.rs | 8 ++ ironrdp/src/nego/tests.rs | 2 +- ironrdp/src/rdp.rs | 1 + .../client_new_license_request/test.rs | 7 +- .../server_license_request/test.rs | 4 +- .../server_upgrade_license/test.rs | 2 +- ironrdp/src/rdp/server_license/test.rs | 2 +- ironrdp/src/rdp/vc/dvc.rs | 5 +- ironrdp/src/rdp/vc/dvc/create.rs | 2 + ironrdp/src/x224.rs | 7 +- ironrdp_client/src/channels.rs | 121 ++++++++++-------- ironrdp_client/src/connection_sequence.rs | 28 ++-- .../src/connection_sequence/user_info.rs | 4 +- ironrdp_client/src/main.rs | 20 +-- ironrdp_client/src/transport/channels.rs | 23 +++- 15 files changed, 143 insertions(+), 93 deletions(-) diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index 1b04f9fd..8b95cf45 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -102,10 +102,18 @@ pub enum NegotiationError { /// May indicate about a negotiation error recieved from a server. #[fail(display = "Received negotiation error from server, code={:?}", 0)] ResponseFailure(FailureCode), + #[fail(display = "Invalid tpkt header version")] + TpktVersionError, } impl_from_error!(io::Error, NegotiationError, NegotiationError::IOError); +impl From for io::Error { + fn from(e: NegotiationError) -> io::Error { + io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {}", e)) + } +} + #[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] enum Message { Request = 1, diff --git a/ironrdp/src/nego/tests.rs b/ironrdp/src/nego/tests.rs index e31702c3..ce9a87db 100644 --- a/ironrdp/src/nego/tests.rs +++ b/ironrdp/src/nego/tests.rs @@ -662,7 +662,7 @@ fn parse_negotiation_request_correctly_handles_invalid_slice_length() { ]; match Request::from_buffer(request.as_ref()) { - Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), + Err(NegotiationError::TpktVersionError) => (), Err(_e) => panic!("wrong error type"), _ => panic!("error expected"), } diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 0a1b0a04..7d824cbb 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -1,5 +1,6 @@ #[cfg(test)] pub mod test; + pub mod capability_sets; pub mod server_license; pub mod vc; diff --git a/ironrdp/src/rdp/server_license/client_new_license_request/test.rs b/ironrdp/src/rdp/server_license/client_new_license_request/test.rs index 4bf57fb0..0c6ca76d 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request/test.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request/test.rs @@ -114,13 +114,12 @@ lazy_static! { let preamble_size_field = (buf.len() + PREAMBLE_SIZE) as u16; - let buf = [ + [ LICENSE_HEADER_BUFFER_NO_SIZE.as_ref(), &preamble_size_field.to_le_bytes(), buf.as_slice() - ].concat(); - - buf + ] + .concat() }; pub static ref SERVER_LICENSE_REQUEST: ServerLicenseRequest = ServerLicenseRequest { diff --git a/ironrdp/src/rdp/server_license/server_license_request/test.rs b/ironrdp/src/rdp/server_license/server_license_request/test.rs index 19d3b0c3..60679427 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/test.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/test.rs @@ -233,7 +233,7 @@ const SCOPE_BUFFER: [u8; 18] = [ lazy_static! { pub static ref PROPRIETARY_CERTIFICATE: ProprietaryCertificate = ProprietaryCertificate { public_key: RsaPublicKey { - public_exponent: 0x00010001, + public_exponent: 0x0001_0001, modulus: Vec::from(MODULUS.as_ref()), }, signature: Vec::from(SIGNATURE.as_ref()), @@ -244,7 +244,7 @@ lazy_static! { product_id: "A02".to_string(), }; pub static ref PUBLIC_KEY: RsaPublicKey = RsaPublicKey { - public_exponent: 0x00010001, + public_exponent: 0x0001_0001, modulus: Vec::from(MODULUS.as_ref()), }; pub static ref SERVER_LICENSE_REQUEST: ServerLicenseRequest = ServerLicenseRequest { diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs b/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs index 592aee09..eb22e38c 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs +++ b/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs @@ -286,7 +286,7 @@ const NEW_LICENSE_INFORMATION_BUFFER: [u8; 2031] = [ lazy_static! { pub static ref NEW_LICENSE_INFORMATION: NewLicenseInformation = NewLicenseInformation { - version: 0x060000, + version: 0x0006_0000, scope: "microsoft.com".to_string(), company_name: "Microsoft Corporation".to_string(), product_id: "A02".to_string(), diff --git a/ironrdp/src/rdp/server_license/test.rs b/ironrdp/src/rdp/server_license/test.rs index 54deb426..2160bf3f 100644 --- a/ironrdp/src/rdp/server_license/test.rs +++ b/ironrdp/src/rdp/server_license/test.rs @@ -107,7 +107,7 @@ fn write_blob_header_writes_blob_header_correctly() { .write_to_buffer(&mut buffer) .unwrap(); - assert_eq!(correct_blob_header.as_ref(), buffer.as_slice()); + assert_eq!(correct_blob_header, buffer.as_slice()); } #[test] diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index da72146e..0e5b02c8 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -10,7 +10,10 @@ mod data_first; pub use self::{ capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}, close::ClosePdu, - create::{CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_OK}, + create::{ + CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_NO_LISTENER, + DVC_CREATION_STATUS_OK, + }, data::DataPdu, data_first::DataFirstPdu, }; diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs index 3f9bd9bc..86442d70 100644 --- a/ironrdp/src/rdp/vc/dvc/create.rs +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -9,6 +9,8 @@ use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; use crate::{rdp::vc::ChannelError, PduParsing}; pub const DVC_CREATION_STATUS_OK: u32 = 0x0000_0000; +pub const DVC_CREATION_STATUS_NO_LISTENER: u32 = 0xC000_0001; + const DVC_CREATION_STATUS_SIZE: usize = 4; #[derive(Debug, Clone, PartialEq)] diff --git a/ironrdp/src/x224.rs b/ironrdp/src/x224.rs index db09a92f..6a188e9a 100644 --- a/ironrdp/src/x224.rs +++ b/ironrdp/src/x224.rs @@ -42,15 +42,12 @@ impl TpktHeader { } impl PduParsing for TpktHeader { - type Error = io::Error; + type Error = NegotiationError; fn from_buffer(mut stream: impl io::Read) -> Result { let version = stream.read_u8()?; if version != TPKT_VERSION { - return Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid tpkt header version", - )); + return Err(NegotiationError::TpktVersionError); } let _reserved = stream.read_u8()?; diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs index fe7ffe68..9d7ce7e8 100644 --- a/ironrdp_client/src/channels.rs +++ b/ironrdp_client/src/channels.rs @@ -1,13 +1,15 @@ use std::io; -use ironrdp::{rdp::vc, PduParsing}; -use log::debug; +use ironrdp::{nego::NegotiationError, rdp::vc}; +use log::{debug, warn}; use crate::{ transport::{Decoder, DynamicVirtualChannelTransport, Encoder, StaticVirtualChannelTransport}, - RdpResult, StaticChannels, + RdpError, RdpResult, StaticChannels, }; +const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Graphics"; + pub fn process_dvc_messages_exchange( mut stream: impl io::BufRead + io::Write, static_channels: StaticChannels, @@ -16,69 +18,80 @@ pub fn process_dvc_messages_exchange( .get(vc::DRDYNVC_CHANNEL_NAME) .expect("drdynvc channel must be added"); - let mut dvc_messages_exchange = false; - let mut svc_transport = StaticVirtualChannelTransport::new(); - let mut dynamic_channels = vc::dvc::DynamicChannels::new(); + let mut dvc_transport = + DynamicVirtualChannelTransport::new(StaticVirtualChannelTransport::new(), drdynvc_id); loop { - let (channel_id, channel_data) = svc_transport.decode(&mut stream)?; - if drdynvc_id != channel_id { - debug!("Got virtual channel PDU on channel with {} id", channel_id); + match dvc_transport.decode(&mut stream) { + Ok(request) => match request { + vc::dvc::ServerPdu::CapabilitiesRequest(caps_request) => { + debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); + let caps_response = vc::dvc::ClientPdu::CapabilitiesResponse( + vc::dvc::CapabilitiesResponsePdu { + version: vc::dvc::CapsVersion::V1, + }, + ); - if dvc_messages_exchange { - // during dvc messages exchange server can send some messages through static channels and wait the response - // so if dvc messages exchange was at least once need to finish connection to avoid client hanging - break; - } else { - continue; - } - } + debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); + dvc_transport.encode(caps_response, &mut stream)?; + } + vc::dvc::ServerPdu::CreateRequest(create_request) => { + debug!("Got DVC Create Request PDU: {:?}", create_request); - let mut dvc_transport = DynamicVirtualChannelTransport::new(svc_transport); - dvc_messages_exchange = true; + let create_response = + vc::dvc::ClientPdu::CreateResponse(vc::dvc::CreateResponsePdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + creation_status: vc::dvc::DVC_CREATION_STATUS_OK, + }); - match vc::dvc::ServerPdu::from_buffer(channel_data.as_slice())? { - vc::dvc::ServerPdu::CapabilitiesRequest(caps_request) => { - debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); - let caps_response = - vc::dvc::ClientPdu::CapabilitiesResponse(vc::dvc::CapabilitiesResponsePdu { - version: vc::dvc::CapsVersion::V1, - }); + debug!("Send DVC Create Response PDU: {:?}", create_response); + dvc_transport.encode(create_response, &mut stream)?; - debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); - dvc_transport.encode(caps_response, &mut stream)?; - } - vc::dvc::ServerPdu::CreateRequest(create_request) => { - debug!("Got DVC Create Request PDU: {:?}", create_request); - dynamic_channels.insert(create_request.channel_id, create_request.channel_name); - - let create_response = - vc::dvc::ClientPdu::CreateResponse(vc::dvc::CreateResponsePdu { + let close_request = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { channel_id_type: create_request.channel_id_type, channel_id: create_request.channel_id, - creation_status: vc::dvc::DVC_CREATION_STATUS_OK, }); - debug!("Send DVC Create Response PDU: {:?}", create_response); - dvc_transport.encode(create_response, &mut stream)?; + debug!("Send DVC Close Request PDU: {:?}", close_request); + dvc_transport.encode(close_request, &mut stream)?; + + if create_request + .channel_name + .contains(RDP8_GRAPHICS_PIPELINE_NAME) + { + break; + } + } + vc::dvc::ServerPdu::CloseRequest(close_request) => { + debug!("Got DVC Close Request PDU: {:?}", close_request); + + let close_response = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { + channel_id_type: close_request.channel_id_type, + channel_id: close_request.channel_id, + }); + + debug!("Send DVC Close Response PDU: {:?}", close_response); + dvc_transport.encode(close_response, &mut stream)?; + } + vc::dvc::ServerPdu::Data(_) | vc::dvc::ServerPdu::DataFirst(_) => break, + }, + Err(RdpError::InvalidChannelIdError(err_message)) => { + warn!("{}", err_message); + break; } - vc::dvc::ServerPdu::CloseRequest(close_request) => { - debug!("Got DVC Close Request PDU: {:?}", close_request); - let channel_name = dynamic_channels - .remove(&close_request.channel_id) - .map_or("unknown".to_string(), |channel| channel); - - let close_response = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { - channel_id_type: close_request.channel_id_type, - channel_id: close_request.channel_id, - }); - - debug!("Send DVC Close Response PDU: {:?}", close_response); - dvc_transport.encode(close_response, &mut stream)?; - - debug!("DVC {} was closed", channel_name); + Err(RdpError::NegotiationError(error)) => match error { + NegotiationError::TpktVersionError => { + warn!("Got fast-path message"); + break; + } + error => { + return Err(RdpError::NegotiationError(error)); + } + }, + Err(err) => { + return Err(err); } - _ => break, } } diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 21a994e6..385f72f0 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -232,13 +232,8 @@ pub fn process_server_license_exchange( global_channel_id: u16, ) -> RdpResult<()> { let (channel_ids, pdu) = transport.decode(&mut stream)?; - if channel_ids.channel_id != global_channel_id { - return Err(RdpError::InvalidResponse(format!( - "Unexpected Send Data Context channel ID ({})", - channel_ids.channel_id, - ))); - } - + check_global_id(channel_ids, global_channel_id)?; + let initial_license_message = InitialServerLicenseMessage::from_buffer(pdu.as_slice()) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; @@ -304,7 +299,9 @@ pub fn process_server_license_exchange( })?; transport.encode(new_pdu_buffer, &mut stream)?; - let pdu = transport.decode(&mut stream)?; + let (channel_ids, pdu) = transport.decode(&mut stream)?; + check_global_id(channel_ids, global_channel_id)?; + let challenge = ServerPlatformChallenge::from_buffer(pdu.as_slice()) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; @@ -346,7 +343,9 @@ pub fn process_server_license_exchange( })?; transport.encode(new_pdu_buffer, &mut stream)?; - let pdu = transport.decode(&mut stream)?; + let (channel_ids, pdu) = transport.decode(&mut stream)?; + check_global_id(channel_ids, global_channel_id)?; + let upgrade_license = ServerUpgradeLicense::from_buffer(pdu.as_slice()) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; @@ -481,3 +480,14 @@ pub fn process_finalization( Ok(()) } + +fn check_global_id(channel_ids: ChannelIdentificators, id: u16) -> Result<(), RdpError> { + if channel_ids.channel_id != id { + Err(RdpError::InvalidResponse(format!( + "Unexpected Send Data Context channel ID ({})", + channel_ids.channel_id, + ))) + } else { + Ok(()) + } +} diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 9628ced1..372d09af 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -153,7 +153,7 @@ fn create_optional_core_data( }) .collect(), ), - early_capability_flags: Some(ClientEarlyCapabilityFlags::empty()), + early_capability_flags: Some(ClientEarlyCapabilityFlags::SUPPORT_DYN_VC_GFX_PROTOCOL), dig_product_id: Some(config.input.dig_product_id.clone()), connection_type: Some(ConnectionType::NotUsed), server_selected_protocol: Some(selected_protocol), @@ -191,7 +191,7 @@ fn create_general_capability_set() -> CapabilitySet { _ => MajorPlatformType::Unspecified, }, minor_platform_type: MinorPlatformType::Unspecified, - extra_flags: GeneralExtraFlags::empty(), + extra_flags: GeneralExtraFlags::FASTPATH_OUTPUT_SUPPORTED, refresh_rect_support: false, suppress_output_support: false, }) diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index e5acc527..ed865461 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -11,7 +11,7 @@ use std::{ }; use failure::Fail; -use ironrdp::{nego, rdp::{self, vc}}; +use ironrdp::{nego, rdp}; use log::{debug, error, warn}; use sspi::internal::credssp; @@ -20,7 +20,7 @@ use self::{ config::Config, connection_sequence::{ process_capability_sets, process_cred_ssp, process_finalization, process_mcs, - process_mcs_connect, process_server_license, send_client_info, StaticChannels, + process_mcs_connect, process_server_license_exchange, send_client_info, StaticChannels, GLOBAL_CHANNEL_NAME, USER_CHANNEL_NAME, }, transport::{ @@ -53,6 +53,7 @@ fn main() { match run(config) { Ok(_) => { + println!("RDP connection sequence and DVC messages exchange finished"); std::process::exit(exitcode::OK); } Err(e) => { @@ -143,7 +144,12 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); send_client_info(&mut tls_stream, &mut transport, &config)?; - match process_server_license_exchange(&mut tls_stream, &mut transport, &config, global_channel_id) { + match process_server_license_exchange( + &mut tls_stream, + &mut transport, + &config, + global_channel_id, + ) { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), ))) => { @@ -159,12 +165,8 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut tls_stream, &mut transport, initiator_id)?; - println!("RDP connection sequence finished"); - if joined_static_channels.contains_key(vc::DRDYNVC_CHANNEL_NAME) { - process_dvc_messages_exchange(&mut tls_stream, joined_static_channels)?; - println!("RDP DVC messages exchange finished"); - } + process_dvc_messages_exchange(&mut tls_stream, joined_static_channels)?; Ok(()) } @@ -211,6 +213,8 @@ pub enum RdpError { CapabilitySetsError(ironrdp::rdp::RdpError), #[fail(display = "Virtual channel error: {}", _0)] VirtualChannelError(ironrdp::rdp::vc::ChannelError), + #[fail(display = "Invalid channel id error: {}", _0)] + InvalidChannelIdError(String), } impl From for RdpError { diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs index 5535cacc..ee6399b5 100644 --- a/ironrdp_client/src/transport/channels.rs +++ b/ironrdp_client/src/transport/channels.rs @@ -75,11 +75,17 @@ impl Decoder for StaticVirtualChannelTransport { } } -pub struct DynamicVirtualChannelTransport(StaticVirtualChannelTransport); +pub struct DynamicVirtualChannelTransport { + transport: StaticVirtualChannelTransport, + drdynvc_id: u16, +} impl DynamicVirtualChannelTransport { - pub fn new(svc_transport: StaticVirtualChannelTransport) -> Self { - Self(svc_transport) + pub fn new(transport: StaticVirtualChannelTransport, drdynvc_id: u16) -> Self { + Self { + transport, + drdynvc_id, + } } } @@ -91,7 +97,7 @@ impl Encoder for DynamicVirtualChannelTransport { let mut dvc_clien_pdu_buf = Vec::with_capacity(dvc_clien_pdu.buffer_length()); dvc_clien_pdu.to_buffer(&mut dvc_clien_pdu_buf)?; - self.0.encode(dvc_clien_pdu_buf, &mut stream) + self.transport.encode(dvc_clien_pdu_buf, &mut stream) } } @@ -100,7 +106,14 @@ impl Decoder for DynamicVirtualChannelTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let (_channel_id, channel_data_buffer) = self.0.decode(&mut stream)?; + let (channel_id, channel_data_buffer) = self.transport.decode(&mut stream)?; + if self.drdynvc_id != channel_id { + return Err(RdpError::InvalidChannelIdError(format!( + "Expected drdynvc {} ID, got: {} ID", + self.drdynvc_id, channel_id, + ))); + } + let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(channel_data_buffer.as_slice())?; Ok(dvc_server_pdu) From 5e7ef6c78b91677db9524b8ec5b54932321a67bf Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 23 Dec 2019 15:35:46 +0200 Subject: [PATCH 0005/1273] ironrdp: implement parsing of session info PDU --- ironrdp/src/rdp.rs | 8 + ironrdp/src/rdp/headers.rs | 13 +- ironrdp/src/rdp/session_info.rs | 136 ++++++ .../src/rdp/session_info/logon_extended.rs | 188 ++++++++ ironrdp/src/rdp/session_info/logon_info.rs | 173 +++++++ ironrdp/src/rdp/session_info/tests.rs | 447 ++++++++++++++++++ 6 files changed, 963 insertions(+), 2 deletions(-) create mode 100644 ironrdp/src/rdp/session_info.rs create mode 100644 ironrdp/src/rdp/session_info/logon_extended.rs create mode 100644 ironrdp/src/rdp/session_info/logon_info.rs create mode 100644 ironrdp/src/rdp/session_info/tests.rs diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 7d824cbb..fbe4996b 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -3,6 +3,7 @@ pub mod test; pub mod capability_sets; pub mod server_license; +pub mod session_info; pub mod vc; mod client_info; @@ -112,6 +113,8 @@ pub enum RdpError { UnexpectedShareControlPdu(ShareControlPduType), #[fail(display = "Unexpected RDP Share Data Header PDU type: {:?}", _0)] UnexpectedShareDataPdu(ShareDataPduType), + #[fail(display = "Save session info PDU error: {}", _0)] + SaveSessionInfoError(session_info::SessionError), } impl_from_error!(io::Error, RdpError, RdpError::IOError); @@ -123,6 +126,11 @@ impl_from_error!( RdpError, RdpError::FinalizationMessagesError ); +impl_from_error!( + session_info::SessionError, + RdpError, + RdpError::SaveSessionInfoError +); impl From for io::Error { fn from(e: RdpError) -> io::Error { diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index 2774bf99..cdd4efb1 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -9,7 +9,7 @@ use super::{ client_info, ClientConfirmActive, ControlPdu, MonitorLayoutPdu, RdpError, ServerDemandActive, SynchronizePdu, }; -use crate::rdp::finalization_messages::FontPdu; +use crate::rdp::{finalization_messages::FontPdu, session_info::SaveSessionInfoPdu}; use crate::PduParsing; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; @@ -289,6 +289,7 @@ pub enum ShareDataPdu { FontList(FontPdu), FontMap(FontPdu), MonitorLayout(MonitorLayoutPdu), + SaveSessionInfo(SaveSessionInfoPdu), } impl ShareDataPdu { @@ -299,6 +300,7 @@ impl ShareDataPdu { ShareDataPdu::FontList(_) => "FontList PDU", ShareDataPdu::FontMap(_) => "Font Map PDU", ShareDataPdu::MonitorLayout(_) => "Monitor Layout PDU", + ShareDataPdu::SaveSessionInfo(_) => "Save session info PDU", } } } @@ -324,6 +326,9 @@ impl ShareDataPdu { ShareDataPduType::MonitorLayoutPdu => Ok(ShareDataPdu::MonitorLayout( MonitorLayoutPdu::from_buffer(&mut stream)?, )), + ShareDataPduType::SaveSessionInfo => Ok(ShareDataPdu::SaveSessionInfo( + SaveSessionInfoPdu::from_buffer(&mut stream)?, + )), ShareDataPduType::Update | ShareDataPduType::Pointer | ShareDataPduType::Input @@ -332,7 +337,6 @@ impl ShareDataPdu { | ShareDataPduType::SuppressOutput | ShareDataPduType::ShutdownRequest | ShareDataPduType::ShutdownDenied - | ShareDataPduType::SaveSessionInfo | ShareDataPduType::SetKeyboardIndicators | ShareDataPduType::BitmapCachePersistentList | ShareDataPduType::BitmapCacheErrorPdu @@ -353,6 +357,9 @@ impl ShareDataPdu { pdu.to_buffer(&mut stream).map_err(RdpError::from) } ShareDataPdu::MonitorLayout(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), + ShareDataPdu::SaveSessionInfo(pdu) => { + pdu.to_buffer(&mut stream).map_err(RdpError::from) + } } } pub fn buffer_length(&self) -> usize { @@ -361,6 +368,7 @@ impl ShareDataPdu { ShareDataPdu::Control(pdu) => pdu.buffer_length(), ShareDataPdu::FontList(pdu) | ShareDataPdu::FontMap(pdu) => pdu.buffer_length(), ShareDataPdu::MonitorLayout(pdu) => pdu.buffer_length(), + ShareDataPdu::SaveSessionInfo(pdu) => pdu.buffer_length(), } } pub fn share_header_type(&self) -> ShareDataPduType { @@ -370,6 +378,7 @@ impl ShareDataPdu { ShareDataPdu::FontList(_) => ShareDataPduType::FontList, ShareDataPdu::FontMap(_) => ShareDataPduType::FontMap, ShareDataPdu::MonitorLayout(_) => ShareDataPduType::MonitorLayoutPdu, + ShareDataPdu::SaveSessionInfo(_) => ShareDataPduType::SaveSessionInfo, } } } diff --git a/ironrdp/src/rdp/session_info.rs b/ironrdp/src/rdp/session_info.rs new file mode 100644 index 00000000..4e1362e7 --- /dev/null +++ b/ironrdp/src/rdp/session_info.rs @@ -0,0 +1,136 @@ +#[cfg(test)] +mod tests; + +mod logon_extended; +mod logon_info; + +pub use self::{ + logon_extended::{ + LogonErrorNotificationData, LogonErrorNotificationType, LogonErrorsInfo, LogonExFlags, + LogonInfoExtended, ServerAutoReconnect, + }, + logon_info::{LogonInfo, LogonInfoVersion1, LogonInfoVersion2}, +}; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; + +const INFO_TYPE_FIELD_SIZE: usize = 4; +const PLAIN_NOTIFY_PADDING_SIZE: usize = 576; +const PLAIN_NOTIFY_PADDING_BUFFER: [u8; PLAIN_NOTIFY_PADDING_SIZE] = [0; PLAIN_NOTIFY_PADDING_SIZE]; + +#[derive(Debug, Clone, PartialEq)] +pub struct SaveSessionInfoPdu { + pub info_type: InfoType, + pub info_data: InfoData, +} + +impl PduParsing for SaveSessionInfoPdu { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let info_type = InfoType::from_u32(stream.read_u32::()?) + .ok_or(SessionError::InvalidSaveSessionInfoType)?; + + let info_data = match info_type { + InfoType::Logon => InfoData::LogonInfoV1(LogonInfoVersion1::from_buffer(&mut stream)?), + InfoType::LogonLong => { + InfoData::LogonInfoV2(LogonInfoVersion2::from_buffer(&mut stream)?) + } + InfoType::PlainNotify => { + let mut padding_buffer = [0; PLAIN_NOTIFY_PADDING_SIZE]; + stream.read_exact(&mut padding_buffer)?; + + InfoData::PlainNotify + } + InfoType::LogonExtended => { + InfoData::LogonExtended(LogonInfoExtended::from_buffer(&mut stream)?) + } + }; + + Ok(Self { + info_type, + info_data, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.info_type.to_u32().unwrap())?; + match self.info_data { + InfoData::LogonInfoV1(ref info_v1) => { + info_v1.to_buffer(&mut stream)?; + } + InfoData::LogonInfoV2(ref info_v2) => { + info_v2.to_buffer(&mut stream)?; + } + InfoData::PlainNotify => { + stream.write_all(PLAIN_NOTIFY_PADDING_BUFFER.as_ref())?; + } + InfoData::LogonExtended(ref extended) => { + extended.to_buffer(&mut stream)?; + } + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + let info_data_size = match self.info_data { + InfoData::LogonInfoV1(ref info_v1) => info_v1.buffer_length(), + InfoData::LogonInfoV2(ref info_v2) => info_v2.buffer_length(), + InfoData::PlainNotify => PLAIN_NOTIFY_PADDING_SIZE, + InfoData::LogonExtended(ref extended) => extended.buffer_length(), + }; + + INFO_TYPE_FIELD_SIZE + info_data_size + } +} + +#[repr(u32)] +#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum InfoType { + Logon = 0x0000_0000, + LogonLong = 0x0000_0001, + PlainNotify = 0x0000_0002, + LogonExtended = 0x0000_0003, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum InfoData { + LogonInfoV1(LogonInfoVersion1), + LogonInfoV2(LogonInfoVersion2), + PlainNotify, + LogonExtended(LogonInfoExtended), +} + +#[derive(Debug, Fail)] +pub enum SessionError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid save session info type value")] + InvalidSaveSessionInfoType, + #[fail(display = "Invalid domain name size value")] + InvalidDomainNameSize, + #[fail(display = "Invalid user name size value")] + InvalidUserNameSize, + #[fail(display = "Invalid logon version value")] + InvalidLogonVersion2, + #[fail(display = "Invalid logon info version2 size value")] + InvalidLogonVersion2Size, + #[fail(display = "Invalid server auto-reconnect packet size value")] + InvalidAutoReconnectPacketSize, + #[fail(display = "Invalid server auto-reconnect version")] + InvalidAutoReconnectVersion, + #[fail(display = "Invalid logon error type value")] + InvalidLogonErrorType, + #[fail(display = "Invalid logon error data value")] + InvalidLogonErrorData, +} + +impl_from_error!(io::Error, SessionError, SessionError::IOError); diff --git a/ironrdp/src/rdp/session_info/logon_extended.rs b/ironrdp/src/rdp/session_info/logon_extended.rs new file mode 100644 index 00000000..2c732bae --- /dev/null +++ b/ironrdp/src/rdp/session_info/logon_extended.rs @@ -0,0 +1,188 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::SessionError; +use crate::PduParsing; + +const LOGON_EX_PADDING_SIZE: usize = 570; +const LOGON_EX_PADDING_BUFFER: [u8; LOGON_EX_PADDING_SIZE] = [0; LOGON_EX_PADDING_SIZE]; + +const LOGON_INFO_FIELD_DATA_SIZE: usize = 4; +const AUTO_RECONNECT_VERSION_1: u32 = 0x0000_0001; +const AUTO_RECONNECT_PACKET_SIZE: usize = 28; +const AUTO_RECONNECT_RANDOM_BITS_SIZE: usize = 16; +const LOGON_ERRORS_INFO_SIZE: usize = 8; + +#[derive(Debug, Clone, PartialEq)] +pub struct LogonInfoExtended { + pub self_length: u16, + pub present_fields_flags: LogonExFlags, + pub auto_reconnect: Option, + pub errors_info: Option, +} + +impl PduParsing for LogonInfoExtended { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let self_length = stream.read_u16::()?; + let present_fields_flags = + LogonExFlags::from_bits_truncate(stream.read_u32::()?); + let mut auto_reconnect = None; + let mut errors_info = None; + + if present_fields_flags.contains(LogonExFlags::AUTO_RECONNECT_COOKIE) { + auto_reconnect = Some(ServerAutoReconnect::from_buffer(&mut stream)?); + } + + if present_fields_flags.contains(LogonExFlags::LOGON_ERRORS) { + errors_info = Some(LogonErrorsInfo::from_buffer(&mut stream)?); + } + + let mut padding_buffer = [0; LOGON_EX_PADDING_SIZE]; + stream.read_exact(&mut padding_buffer)?; + + Ok(Self { + self_length, + present_fields_flags, + auto_reconnect, + errors_info, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.self_length)?; + stream.write_u32::(self.present_fields_flags.bits())?; + + if let Some(ref reconnect) = self.auto_reconnect { + reconnect.to_buffer(&mut stream)?; + } + if let Some(ref errors) = self.errors_info { + errors.to_buffer(&mut stream)?; + } + + stream.write_all(LOGON_EX_PADDING_BUFFER.as_ref())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + self.self_length as usize + LOGON_EX_PADDING_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct ServerAutoReconnect { + pub data_length: u32, + pub logon_id: u32, + pub random_bits: [u8; AUTO_RECONNECT_RANDOM_BITS_SIZE], +} + +impl PduParsing for ServerAutoReconnect { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let data_length = stream.read_u32::()?; + let packet_length = stream.read_u32::()?; + if packet_length != AUTO_RECONNECT_PACKET_SIZE as u32 { + return Err(SessionError::InvalidAutoReconnectPacketSize); + } + + let version = stream.read_u32::()?; + if version != AUTO_RECONNECT_VERSION_1 { + return Err(SessionError::InvalidAutoReconnectVersion); + } + + let logon_id = stream.read_u32::()?; + let mut random_bits = [0; AUTO_RECONNECT_RANDOM_BITS_SIZE]; + stream.read_exact(&mut random_bits)?; + + Ok(Self { + data_length, + logon_id, + random_bits, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.data_length)?; + stream.write_u32::(AUTO_RECONNECT_PACKET_SIZE as u32)?; + stream.write_u32::(AUTO_RECONNECT_VERSION_1)?; + stream.write_u32::(self.logon_id)?; + stream.write_all(self.random_bits.as_ref())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + AUTO_RECONNECT_PACKET_SIZE + LOGON_INFO_FIELD_DATA_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct LogonErrorsInfo { + pub data_length: u32, + pub error_type: LogonErrorNotificationType, + pub error_data: LogonErrorNotificationData, +} + +impl PduParsing for LogonErrorsInfo { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let data_length = stream.read_u32::()?; + let error_type = LogonErrorNotificationType::from_u32(stream.read_u32::()?) + .ok_or(SessionError::InvalidLogonErrorType)?; + let error_data = LogonErrorNotificationData::from_u32(stream.read_u32::()?) + .ok_or(SessionError::InvalidLogonErrorData)?; + + Ok(Self { + data_length, + error_type, + error_data, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.data_length)?; + stream.write_u32::(self.error_type.to_u32().unwrap())?; + stream.write_u32::(self.error_data.to_u32().unwrap())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + LOGON_ERRORS_INFO_SIZE + LOGON_INFO_FIELD_DATA_SIZE + } +} + +bitflags! { + pub struct LogonExFlags: u32 { + const AUTO_RECONNECT_COOKIE = 0x0000_0001; + const LOGON_ERRORS = 0x0000_0002; + } +} + +#[repr(u32)] +#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum LogonErrorNotificationType { + DisconnectRefuse = 0xFFFF_FFF9, + NoPermission = 0xFFFF_FFFA, + BumpOptions = 0xFFFF_FFFB, + ReconnectOptions = 0xFFFF_FFFC, + SessionTerminate = 0xFFFF_FFFD, + SessionContinue = 0xFFFF_FFFE, +} + +#[repr(u32)] +#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum LogonErrorNotificationData { + FailedBadPassword = 0x0000_0000, + FailedUpdatePassword = 0x0000_0001, + FailedOther = 0x0000_0002, + Warning = 0x0000_0003, +} diff --git a/ironrdp/src/rdp/session_info/logon_info.rs b/ironrdp/src/rdp/session_info/logon_info.rs new file mode 100644 index 00000000..daa3193a --- /dev/null +++ b/ironrdp/src/rdp/session_info/logon_info.rs @@ -0,0 +1,173 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::SessionError; +use crate::{utils, PduParsing}; + +const DOMAIN_NAME_SIZE_FIELD_SIZE: usize = 4; +const DOMAIN_NAME_SIZE_V1: usize = 52; +const USER_NAME_SIZE_FIELD_SIZE: usize = 4; +const USER_NAME_SIZE_V1: usize = 512; +const ID_SESSION_SIZE: usize = 4; + +const SAVE_SESSION_PDU_VERSION_ONE: u16 = 0x0001; +const LOGON_INFO_V2_SIZE: usize = 18; +const LOGON_INFO_V2_PADDING_SIZE: usize = 558; +const LOGON_INFO_V2_PADDING_BUFFER: [u8; LOGON_INFO_V2_PADDING_SIZE] = + [0; LOGON_INFO_V2_PADDING_SIZE]; + +#[derive(Debug, Clone, PartialEq)] +pub struct LogonInfoVersion1 { + pub logon_info: LogonInfo, +} + +impl PduParsing for LogonInfoVersion1 { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let domain_name_size = stream.read_u32::()?; + if domain_name_size > DOMAIN_NAME_SIZE_V1 as u32 { + return Err(SessionError::InvalidDomainNameSize); + } + + let domain_name = utils::read_string( + &mut stream, + DOMAIN_NAME_SIZE_V1, + utils::CharacterSet::Unicode, + false, + )?; + + let user_name_size = stream.read_u32::()?; + if user_name_size > USER_NAME_SIZE_V1 as u32 { + return Err(SessionError::InvalidUserNameSize); + } + + let user_name = utils::read_string( + &mut stream, + USER_NAME_SIZE_V1, + utils::CharacterSet::Unicode, + false, + )?; + + let session_id = stream.read_u32::()?; + + Ok(Self { + logon_info: LogonInfo { + session_id, + domain_name, + user_name, + }, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut domain_name_buffer = utils::string_to_utf16(self.logon_info.domain_name.as_ref()); + domain_name_buffer.resize(DOMAIN_NAME_SIZE_V1 - 2, 0); + let mut user_name_buffer = utils::string_to_utf16(self.logon_info.user_name.as_ref()); + user_name_buffer.resize(USER_NAME_SIZE_V1 - 2, 0); + + stream.write_u32::(((self.logon_info.domain_name.len() + 1) * 2) as u32)?; + stream.write_all(domain_name_buffer.as_ref())?; + stream.write_u16::(0)?; // UTF-16 null terminator + stream.write_u32::(((self.logon_info.user_name.len() + 1) * 2) as u32)?; + stream.write_all(user_name_buffer.as_ref())?; + stream.write_u16::(0)?; // UTF-16 null terminator + stream.write_u32::(self.logon_info.session_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + DOMAIN_NAME_SIZE_FIELD_SIZE + + DOMAIN_NAME_SIZE_V1 + + USER_NAME_SIZE_FIELD_SIZE + + USER_NAME_SIZE_V1 + + ID_SESSION_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct LogonInfoVersion2 { + pub logon_info: LogonInfo, +} + +impl PduParsing for LogonInfoVersion2 { + type Error = SessionError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let version = stream.read_u16::()?; + if version != SAVE_SESSION_PDU_VERSION_ONE { + return Err(SessionError::InvalidLogonVersion2); + } + + let size = stream.read_u32::()? as usize; + if size != LOGON_INFO_V2_SIZE { + return Err(SessionError::InvalidLogonVersion2Size); + } + + let session_id = stream.read_u32::()?; + let domain_name_size = stream.read_u32::()?; + let user_name_size = stream.read_u32::()?; + + let mut padding_buffer = [0; LOGON_INFO_V2_PADDING_SIZE]; + stream.read_exact(&mut padding_buffer)?; + + let domain_name = utils::read_string( + &mut stream, + domain_name_size as usize, + utils::CharacterSet::Unicode, + false, + )?; + let user_name = utils::read_string( + &mut stream, + user_name_size as usize, + utils::CharacterSet::Unicode, + false, + )?; + + Ok(Self { + logon_info: LogonInfo { + session_id, + domain_name, + user_name, + }, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(SAVE_SESSION_PDU_VERSION_ONE)?; + stream.write_u32::(LOGON_INFO_V2_SIZE as u32)?; + stream.write_u32::(self.logon_info.session_id)?; + stream.write_u32::(((self.logon_info.domain_name.len() + 1) * 2) as u32)?; + stream.write_u32::(((self.logon_info.user_name.len() + 1) * 2) as u32)?; + stream.write_all(LOGON_INFO_V2_PADDING_BUFFER.as_ref())?; + + utils::write_string_with_null_terminator( + &mut stream, + self.logon_info.domain_name.as_ref(), + utils::CharacterSet::Unicode, + )?; + utils::write_string_with_null_terminator( + &mut stream, + self.logon_info.user_name.as_ref(), + utils::CharacterSet::Unicode, + )?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + LOGON_INFO_V2_SIZE + + LOGON_INFO_V2_PADDING_SIZE + + (self.logon_info.domain_name.len() + 1) * 2 + + (self.logon_info.user_name.len() + 1) * 2 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct LogonInfo { + pub session_id: u32, + pub user_name: String, + pub domain_name: String, +} diff --git a/ironrdp/src/rdp/session_info/tests.rs b/ironrdp/src/rdp/session_info/tests.rs new file mode 100644 index 00000000..54e56dd1 --- /dev/null +++ b/ironrdp/src/rdp/session_info/tests.rs @@ -0,0 +1,447 @@ +use lazy_static::lazy_static; + +use super::*; + +const LOGON_INFO_V1_BUFFER: [u8; 576] = [ + 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x65, 0x00, 0x6c, 0x00, + 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +]; + +const LOGON_INFO_V2_BUFFER: [u8; 602] = [ + 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, 0x65, 0x00, 0x6c, 0x00, + 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, +]; + +const SESSION_PLAIN_NOTIFY_BUFFER: [u8; 580] = [ + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +]; + +const LOGON_EXTENDED_BUFFER: [u8; 620] = [ + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, + 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +]; + +const INVALID_SESSION_INFO_TYPE_BUFFER: [u8; 4] = [0x04, 0x00, 0x00, 0x00]; +const LOGON_INFO_V1_WITH_INVALID_DOMAIN_SIZE_BUFFER: [u8; 4] = [0x35, 0x00, 0x00, 0x00]; +const LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER: [u8; 60] = [ + 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, +]; + +const LOGON_INFO_V2_WITH_INVALID_LOGON_VERSION_BUFFER: [u8; 2] = [0x00, 0x00]; +const LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER: [u8; 6] = + [0x01, 0x00, 0x13, 0x00, 0x00, 0x00]; + +const LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER: [u8; 14] = [ + 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, +]; + +const LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER: [u8; 18] = [ + 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, +]; + +const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER: [u8; 46] = [ + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, + 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, +]; + +const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER: [u8; 50] = [ + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, + 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x04, 0x00, + 0x00, 0x00, +]; + +const DOMAIN_NAME: &str = "NTDEV"; +const USER_NAME: &str = "eltons"; +const SESSION_ID: u32 = 0x02; + +const LOGON_INFO_EXTENDED_LENGTH: u16 = 50; +const AUTO_RECONNECT_DATA_LENGTH: u32 = 28; +const ERRORS_INFO_DATA_LENGTH: u32 = 8; + +lazy_static! { + static ref LOGON_INFO_V1: LogonInfoVersion1 = LogonInfoVersion1 { + logon_info: LogonInfo { + domain_name: DOMAIN_NAME.to_string(), + user_name: USER_NAME.to_string(), + session_id: SESSION_ID, + }, + }; + static ref LOGON_INFO_V2: LogonInfoVersion2 = LogonInfoVersion2 { + logon_info: LogonInfo { + domain_name: DOMAIN_NAME.to_string(), + user_name: USER_NAME.to_string(), + session_id: SESSION_ID, + }, + }; + static ref LOGON_EXTENDED: LogonInfoExtended = LogonInfoExtended { + self_length: LOGON_INFO_EXTENDED_LENGTH, + present_fields_flags: LogonExFlags::AUTO_RECONNECT_COOKIE | LogonExFlags::LOGON_ERRORS, + auto_reconnect: Some(ServerAutoReconnect { + data_length: AUTO_RECONNECT_DATA_LENGTH, + logon_id: SESSION_ID, + random_bits: [ + 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, + 0xa1, 0xa8 + ], + }), + errors_info: Some(LogonErrorsInfo { + data_length: ERRORS_INFO_DATA_LENGTH, + error_type: LogonErrorNotificationType::NoPermission, + error_data: LogonErrorNotificationData::FailedOther, + }), + }; + static ref SESSION_PLAIN_NOTIFY: SaveSessionInfoPdu = SaveSessionInfoPdu { + info_type: InfoType::PlainNotify, + info_data: InfoData::PlainNotify, + }; +} + +#[test] +fn from_buffer_correct_parses_logon_info_v1() { + assert_eq!( + LOGON_INFO_V1.clone(), + LogonInfoVersion1::from_buffer(LOGON_INFO_V1_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_logon_info_v1() { + let info_v1 = LOGON_INFO_V1.clone(); + + let mut buffer = Vec::new(); + info_v1.to_buffer(&mut buffer).unwrap(); + + assert_eq!(LOGON_INFO_V1_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_logon_info_v1() { + let info_v1 = LOGON_INFO_V1.clone(); + let expected_buf_len = LOGON_INFO_V1_BUFFER.len(); + + let len = info_v1.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_logon_info_v2() { + assert_eq!( + LOGON_INFO_V2.clone(), + LogonInfoVersion2::from_buffer(LOGON_INFO_V2_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_logon_info_v2() { + let info_v2 = LOGON_INFO_V2.clone(); + + let mut buffer = Vec::new(); + info_v2.to_buffer(&mut buffer).unwrap(); + + assert_eq!(LOGON_INFO_V2_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_logon_info_v2() { + let info_v2 = LOGON_INFO_V2.clone(); + let expected_buf_len = LOGON_INFO_V2_BUFFER.len(); + + let len = info_v2.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_plain_notify() { + match SaveSessionInfoPdu::from_buffer(SESSION_PLAIN_NOTIFY_BUFFER.as_ref()) + .unwrap() + .info_data + { + InfoData::PlainNotify => {} + _ => panic!("Unexpected SaveSessionInfoPdu data"), + } +} + +#[test] +fn to_buffer_correct_serializes_plain_notify() { + let session_plain_notify = SESSION_PLAIN_NOTIFY.clone(); + + let mut buffer = Vec::new(); + session_plain_notify.to_buffer(&mut buffer).unwrap(); + + assert_eq!(SESSION_PLAIN_NOTIFY_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_plain_notify() { + let session_plain_notify = SESSION_PLAIN_NOTIFY.clone(); + let expected_buf_len = SESSION_PLAIN_NOTIFY_BUFFER.len(); + + let len = session_plain_notify.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_correct_parses_extended_info() { + assert_eq!( + LOGON_EXTENDED.clone(), + LogonInfoExtended::from_buffer(LOGON_EXTENDED_BUFFER.as_ref()).unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_extended_info() { + let extended = LOGON_EXTENDED.clone(); + + let mut buffer = Vec::new(); + extended.to_buffer(&mut buffer).unwrap(); + + assert_eq!(LOGON_EXTENDED_BUFFER.as_ref(), buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_extended_info() { + let extended = LOGON_EXTENDED.clone(); + let expected_buf_len = LOGON_EXTENDED_BUFFER.len(); + + let len = extended.buffer_length(); + + assert_eq!(expected_buf_len, len); +} + +#[test] +fn from_buffer_parsing_with_invalid_session_info_type_fails() { + match SaveSessionInfoPdu::from_buffer(INVALID_SESSION_INFO_TYPE_BUFFER.as_ref()) { + Err(SessionError::InvalidSaveSessionInfoType) => (), + res => panic!("Expected InvalidSaveSessionInfoType error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_domain_size_fails() { + match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_DOMAIN_SIZE_BUFFER.as_ref()) { + Err(SessionError::InvalidDomainNameSize) => (), + res => panic!("Expected InvalidDomainNameSize error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_user_name_size_fails() { + match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER.as_ref()) + { + Err(SessionError::InvalidUserNameSize) => (), + res => panic!("Expected InvalidUserNameSize error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_logon_version_fails() { + match LogonInfoVersion2::from_buffer(LOGON_INFO_V2_WITH_INVALID_LOGON_VERSION_BUFFER.as_ref()) { + Err(SessionError::InvalidLogonVersion2) => (), + res => panic!("Expected InvalidLogonVersion2 error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_logon_infov2_size_fails() { + match LogonInfoVersion2::from_buffer( + LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER.as_ref(), + ) { + Err(SessionError::InvalidLogonVersion2Size) => (), + res => panic!("Expected InvalidLogonVersion2Size error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_reconnect_packet_size_fails() { + match LogonInfoExtended::from_buffer( + LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER.as_ref(), + ) { + Err(SessionError::InvalidAutoReconnectPacketSize) => (), + res => panic!( + "Expected InvalidAutoReconnectPacketSize error, got: {:?}", + res + ), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_reconnect_version_fails() { + match LogonInfoExtended::from_buffer( + LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER.as_ref(), + ) { + Err(SessionError::InvalidAutoReconnectVersion) => (), + res => panic!("Expected InvalidAutoReconnectVersion error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_logon_error_type_fails() { + match LogonInfoExtended::from_buffer( + LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER.as_ref(), + ) { + Err(SessionError::InvalidLogonErrorType) => (), + res => panic!("Expected InvalidLogonErrorType error, got: {:?}", res), + }; +} + +#[test] +fn from_buffer_parsing_with_invalid_logon_error_data_fails() { + match LogonInfoExtended::from_buffer( + LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER.as_ref(), + ) { + Err(SessionError::InvalidLogonErrorData) => (), + res => panic!("Expected InvalidLogonErrorData error, got: {:?}", res), + }; +} From a9b88b30c80b0de0a59552e53fe81518e877c9ff Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 26 Dec 2019 18:29:09 +0200 Subject: [PATCH 0006/1273] ironrdp_client: integrate save session info parsing --- .../src/rdp/session_info/logon_extended.rs | 58 ++++-- ironrdp/src/rdp/session_info/tests.rs | 7 - ironrdp_client/src/channels.rs | 182 +++++++++++------- ironrdp_client/src/connection_sequence.rs | 7 +- ironrdp_client/src/main.rs | 8 +- ironrdp_client/src/transport.rs | 80 ++++++-- ironrdp_client/src/transport/channels.rs | 24 +-- ironrdp_client/src/utils.rs | 14 +- 8 files changed, 234 insertions(+), 146 deletions(-) diff --git a/ironrdp/src/rdp/session_info/logon_extended.rs b/ironrdp/src/rdp/session_info/logon_extended.rs index 2c732bae..87144ce3 100644 --- a/ironrdp/src/rdp/session_info/logon_extended.rs +++ b/ironrdp/src/rdp/session_info/logon_extended.rs @@ -8,6 +8,8 @@ use num_traits::{FromPrimitive, ToPrimitive}; use super::SessionError; use crate::PduParsing; +const LOGON_EX_LENGTH_FIELD_SIZE: usize = 2; +const LOGON_EX_FLAGS_FIELD_SIZE: usize = 4; const LOGON_EX_PADDING_SIZE: usize = 570; const LOGON_EX_PADDING_BUFFER: [u8; LOGON_EX_PADDING_SIZE] = [0; LOGON_EX_PADDING_SIZE]; @@ -19,35 +21,53 @@ const LOGON_ERRORS_INFO_SIZE: usize = 8; #[derive(Debug, Clone, PartialEq)] pub struct LogonInfoExtended { - pub self_length: u16, pub present_fields_flags: LogonExFlags, pub auto_reconnect: Option, pub errors_info: Option, } +impl LogonInfoExtended { + fn get_internal_size(&self) -> usize { + let reconnect_size = self + .auto_reconnect + .as_ref() + .map(|r| r.buffer_length()) + .unwrap_or(0); + + let errors_size = self + .errors_info + .as_ref() + .map(|r| r.buffer_length()) + .unwrap_or(0); + + LOGON_EX_LENGTH_FIELD_SIZE + LOGON_EX_FLAGS_FIELD_SIZE + reconnect_size + errors_size + } +} + impl PduParsing for LogonInfoExtended { type Error = SessionError; fn from_buffer(mut stream: impl io::Read) -> Result { - let self_length = stream.read_u16::()?; + let _self_length = stream.read_u16::()?; let present_fields_flags = LogonExFlags::from_bits_truncate(stream.read_u32::()?); - let mut auto_reconnect = None; - let mut errors_info = None; - if present_fields_flags.contains(LogonExFlags::AUTO_RECONNECT_COOKIE) { - auto_reconnect = Some(ServerAutoReconnect::from_buffer(&mut stream)?); - } + let auto_reconnect = if present_fields_flags.contains(LogonExFlags::AUTO_RECONNECT_COOKIE) { + Some(ServerAutoReconnect::from_buffer(&mut stream)?) + } else { + None + }; - if present_fields_flags.contains(LogonExFlags::LOGON_ERRORS) { - errors_info = Some(LogonErrorsInfo::from_buffer(&mut stream)?); - } + let errors_info = if present_fields_flags.contains(LogonExFlags::LOGON_ERRORS) { + Some(LogonErrorsInfo::from_buffer(&mut stream)?) + } else { + None + }; let mut padding_buffer = [0; LOGON_EX_PADDING_SIZE]; stream.read_exact(&mut padding_buffer)?; Ok(Self { - self_length, present_fields_flags, auto_reconnect, errors_info, @@ -55,7 +75,7 @@ impl PduParsing for LogonInfoExtended { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u16::(self.self_length)?; + stream.write_u16::(self.get_internal_size() as u16)?; stream.write_u32::(self.present_fields_flags.bits())?; if let Some(ref reconnect) = self.auto_reconnect { @@ -71,13 +91,12 @@ impl PduParsing for LogonInfoExtended { } fn buffer_length(&self) -> usize { - self.self_length as usize + LOGON_EX_PADDING_SIZE + self.get_internal_size() + LOGON_EX_PADDING_SIZE } } #[derive(Debug, Clone, PartialEq)] pub struct ServerAutoReconnect { - pub data_length: u32, pub logon_id: u32, pub random_bits: [u8; AUTO_RECONNECT_RANDOM_BITS_SIZE], } @@ -86,7 +105,7 @@ impl PduParsing for ServerAutoReconnect { type Error = SessionError; fn from_buffer(mut stream: impl io::Read) -> Result { - let data_length = stream.read_u32::()?; + let _data_length = stream.read_u32::()?; let packet_length = stream.read_u32::()?; if packet_length != AUTO_RECONNECT_PACKET_SIZE as u32 { return Err(SessionError::InvalidAutoReconnectPacketSize); @@ -102,14 +121,13 @@ impl PduParsing for ServerAutoReconnect { stream.read_exact(&mut random_bits)?; Ok(Self { - data_length, logon_id, random_bits, }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u32::(self.data_length)?; + stream.write_u32::(AUTO_RECONNECT_PACKET_SIZE as u32)?; stream.write_u32::(AUTO_RECONNECT_PACKET_SIZE as u32)?; stream.write_u32::(AUTO_RECONNECT_VERSION_1)?; stream.write_u32::(self.logon_id)?; @@ -125,7 +143,6 @@ impl PduParsing for ServerAutoReconnect { #[derive(Debug, Clone, PartialEq)] pub struct LogonErrorsInfo { - pub data_length: u32, pub error_type: LogonErrorNotificationType, pub error_data: LogonErrorNotificationData, } @@ -134,21 +151,20 @@ impl PduParsing for LogonErrorsInfo { type Error = SessionError; fn from_buffer(mut stream: impl io::Read) -> Result { - let data_length = stream.read_u32::()?; + let _data_length = stream.read_u32::()?; let error_type = LogonErrorNotificationType::from_u32(stream.read_u32::()?) .ok_or(SessionError::InvalidLogonErrorType)?; let error_data = LogonErrorNotificationData::from_u32(stream.read_u32::()?) .ok_or(SessionError::InvalidLogonErrorData)?; Ok(Self { - data_length, error_type, error_data, }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u32::(self.data_length)?; + stream.write_u32::(LOGON_ERRORS_INFO_SIZE as u32)?; stream.write_u32::(self.error_type.to_u32().unwrap())?; stream.write_u32::(self.error_data.to_u32().unwrap())?; diff --git a/ironrdp/src/rdp/session_info/tests.rs b/ironrdp/src/rdp/session_info/tests.rs index 54e56dd1..b80ffef4 100644 --- a/ironrdp/src/rdp/session_info/tests.rs +++ b/ironrdp/src/rdp/session_info/tests.rs @@ -203,10 +203,6 @@ const DOMAIN_NAME: &str = "NTDEV"; const USER_NAME: &str = "eltons"; const SESSION_ID: u32 = 0x02; -const LOGON_INFO_EXTENDED_LENGTH: u16 = 50; -const AUTO_RECONNECT_DATA_LENGTH: u32 = 28; -const ERRORS_INFO_DATA_LENGTH: u32 = 8; - lazy_static! { static ref LOGON_INFO_V1: LogonInfoVersion1 = LogonInfoVersion1 { logon_info: LogonInfo { @@ -223,10 +219,8 @@ lazy_static! { }, }; static ref LOGON_EXTENDED: LogonInfoExtended = LogonInfoExtended { - self_length: LOGON_INFO_EXTENDED_LENGTH, present_fields_flags: LogonExFlags::AUTO_RECONNECT_COOKIE | LogonExFlags::LOGON_ERRORS, auto_reconnect: Some(ServerAutoReconnect { - data_length: AUTO_RECONNECT_DATA_LENGTH, logon_id: SESSION_ID, random_bits: [ 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, @@ -234,7 +228,6 @@ lazy_static! { ], }), errors_info: Some(LogonErrorsInfo { - data_length: ERRORS_INFO_DATA_LENGTH, error_type: LogonErrorNotificationType::NoPermission, error_data: LogonErrorNotificationData::FailedOther, }), diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs index 9d7ce7e8..44e7a1c2 100644 --- a/ironrdp_client/src/channels.rs +++ b/ironrdp_client/src/channels.rs @@ -1,99 +1,133 @@ use std::io; -use ironrdp::{nego::NegotiationError, rdp::vc}; +use ironrdp::{ + rdp::vc::{self, dvc}, + ShareDataPdu, +}; use log::{debug, warn}; use crate::{ - transport::{Decoder, DynamicVirtualChannelTransport, Encoder, StaticVirtualChannelTransport}, - RdpError, RdpResult, StaticChannels, + transport::{ + Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, + ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, + }, + utils, RdpError, RdpResult, StaticChannels, GLOBAL_CHANNEL_NAME, }; const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Graphics"; -pub fn process_dvc_messages_exchange( +pub fn process_active_connection_messages( mut stream: impl io::BufRead + io::Write, static_channels: StaticChannels, ) -> RdpResult<()> { - let drdynvc_id = *static_channels - .get(vc::DRDYNVC_CHANNEL_NAME) - .expect("drdynvc channel must be added"); - - let mut dvc_transport = - DynamicVirtualChannelTransport::new(StaticVirtualChannelTransport::new(), drdynvc_id); + let static_channels = utils::swap_hashmap_kv(static_channels); + let mut transport = SendDataContextTransport::default(); loop { - match dvc_transport.decode(&mut stream) { - Ok(request) => match request { - vc::dvc::ServerPdu::CapabilitiesRequest(caps_request) => { - debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); - let caps_response = vc::dvc::ClientPdu::CapabilitiesResponse( - vc::dvc::CapabilitiesResponsePdu { - version: vc::dvc::CapsVersion::V1, - }, + let (channel_ids, pdu) = transport.decode(&mut stream)?; + let mut transport = transport.clone(); + transport.set_decoded_context(channel_ids, pdu); + + match static_channels.get(&channel_ids.channel_id) { + Some(channel_name) => { + if vc::DRDYNVC_CHANNEL_NAME == channel_name { + let transport = DynamicVirtualChannelTransport::new( + StaticVirtualChannelTransport::new(transport), + channel_ids.channel_id, ); - debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); - dvc_transport.encode(caps_response, &mut stream)?; - } - vc::dvc::ServerPdu::CreateRequest(create_request) => { - debug!("Got DVC Create Request PDU: {:?}", create_request); + process_dvc_message(&mut stream, transport)?; + } else if GLOBAL_CHANNEL_NAME == channel_name { + let transport = + ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( + transport, + channel_ids.initiator_id, + channel_ids.channel_id, + )); - let create_response = - vc::dvc::ClientPdu::CreateResponse(vc::dvc::CreateResponsePdu { - channel_id_type: create_request.channel_id_type, - channel_id: create_request.channel_id, - creation_status: vc::dvc::DVC_CREATION_STATUS_OK, - }); - - debug!("Send DVC Create Response PDU: {:?}", create_response); - dvc_transport.encode(create_response, &mut stream)?; - - let close_request = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { - channel_id_type: create_request.channel_id_type, - channel_id: create_request.channel_id, - }); - - debug!("Send DVC Close Request PDU: {:?}", close_request); - dvc_transport.encode(close_request, &mut stream)?; - - if create_request - .channel_name - .contains(RDP8_GRAPHICS_PIPELINE_NAME) - { - break; - } - } - vc::dvc::ServerPdu::CloseRequest(close_request) => { - debug!("Got DVC Close Request PDU: {:?}", close_request); - - let close_response = vc::dvc::ClientPdu::CloseResponse(vc::dvc::ClosePdu { - channel_id_type: close_request.channel_id_type, - channel_id: close_request.channel_id, - }); - - debug!("Send DVC Close Response PDU: {:?}", close_response); - dvc_transport.encode(close_response, &mut stream)?; - } - vc::dvc::ServerPdu::Data(_) | vc::dvc::ServerPdu::DataFirst(_) => break, - }, - Err(RdpError::InvalidChannelIdError(err_message)) => { - warn!("{}", err_message); - break; - } - Err(RdpError::NegotiationError(error)) => match error { - NegotiationError::TpktVersionError => { - warn!("Got fast-path message"); + process_session_info(&mut stream, transport)?; + } else { + warn!( + "Got message on a channel with {} ID", + channel_ids.channel_id + ); break; } - error => { - return Err(RdpError::NegotiationError(error)); - } - }, - Err(err) => { - return Err(err); } + None => panic!("Channel with {} ID must be added", channel_ids.channel_id), } } Ok(()) } + +fn process_dvc_message( + mut stream: impl io::BufRead + io::Write, + mut transport: DynamicVirtualChannelTransport, +) -> RdpResult<()> { + match transport.decode(&mut stream)? { + dvc::ServerPdu::CapabilitiesRequest(caps_request) => { + debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); + let caps_response = + dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { + version: dvc::CapsVersion::V1, + }); + + debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); + transport.encode(caps_response, &mut stream)?; + } + dvc::ServerPdu::CreateRequest(create_request) => { + debug!("Got DVC Create Request PDU: {:?}", create_request); + + let create_response = dvc::ClientPdu::CreateResponse(dvc::CreateResponsePdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + creation_status: dvc::DVC_CREATION_STATUS_NO_LISTENER, + }); + + debug!("Send DVC Create Response PDU: {:?}", create_response); + transport.encode(create_response, &mut stream)?; + + if create_request + .channel_name + .contains(RDP8_GRAPHICS_PIPELINE_NAME) + { + // TODO: send caps + } + } + dvc::ServerPdu::CloseRequest(close_request) => { + debug!("Got DVC Close Request PDU: {:?}", close_request); + + let close_response = dvc::ClientPdu::CloseResponse(dvc::ClosePdu { + channel_id_type: close_request.channel_id_type, + channel_id: close_request.channel_id, + }); + + debug!("Send DVC Close Response PDU: {:?}", close_response); + transport.encode(close_response, &mut stream)?; + } + dvc::ServerPdu::Data(dvc::DataPdu { dvc_data: data, .. }) + | dvc::ServerPdu::DataFirst(dvc::DataFirstPdu { dvc_data: data, .. }) => { + debug!("Got DVC Data PDU with {} size", data.len()); + } + } + + Ok(()) +} + +fn process_session_info( + mut stream: impl io::BufRead + io::Write, + mut transport: ShareDataHeaderTransport, +) -> RdpResult<()> { + let share_data_pdu = transport.decode(&mut stream)?; + + if let ShareDataPdu::SaveSessionInfo(session_info) = share_data_pdu { + debug!("Got Session Save Info PDU: {:?}", session_info); + Ok(()) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Session Save Info PDU, got: {:?}", + share_data_pdu.as_short_name() + ))) + } +} diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 385f72f0..016c85d7 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -15,7 +15,6 @@ use ironrdp::{ }, PduParsing, }; -use lazy_static::lazy_static; use log::{debug, info, trace}; use ring::rand::SecureRandom; use rustls::{internal::msgs::handshake::CertificatePayload, Session}; @@ -25,10 +24,8 @@ use crate::{config::Config, transport::*, utils, RdpError, RdpResult}; pub type StaticChannels = HashMap; -lazy_static! { - pub static ref GLOBAL_CHANNEL_NAME: String = String::from("GLOBAL"); - pub static ref USER_CHANNEL_NAME: String = String::from("USER"); -} +pub const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; +pub const USER_CHANNEL_NAME: &str = "USER"; pub fn process_cred_ssp<'a, S, T>( mut tls_stream: &mut bufstream::BufStream>, diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index ed865461..17b67824 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -16,7 +16,7 @@ use log::{debug, error, warn}; use sspi::internal::credssp; use self::{ - channels::process_dvc_messages_exchange, + channels::process_active_connection_messages, config::Config, connection_sequence::{ process_capability_sets, process_cred_ssp, process_finalization, process_mcs, @@ -135,10 +135,10 @@ fn run(config: Config) -> RdpResult<()> { debug!("Joined static channels: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels - .get(&*GLOBAL_CHANNEL_NAME) + .get(GLOBAL_CHANNEL_NAME) .expect("global channel must be added"); let initiator_id = *joined_static_channels - .get(&*USER_CHANNEL_NAME) + .get(USER_CHANNEL_NAME) .expect("user channel must be added"); let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); @@ -166,7 +166,7 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut tls_stream, &mut transport, initiator_id)?; - process_dvc_messages_exchange(&mut tls_stream, joined_static_channels)?; + process_active_connection_messages(&mut tls_stream, joined_static_channels)?; Ok(()) } diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index 6c46f769..c2419baf 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -11,7 +11,7 @@ pub use self::{ }, }; -use std::io; +use std::{io, mem}; use bytes::BytesMut; use ironrdp::PduParsing; @@ -100,10 +100,12 @@ impl Decoder for McsTransport { } } -#[derive(Copy, Clone, Debug)] +#[derive(Clone, Debug)] pub struct SendDataContextTransport { mcs_transport: McsTransport, + state: SendDataContextTransportState, channel_ids: ChannelIdentificators, + send_data_context_pdu: Vec, } impl SendDataContextTransport { @@ -114,11 +116,38 @@ impl SendDataContextTransport { initiator_id, channel_id, }, + state: SendDataContextTransportState::ToDecode, + send_data_context_pdu: Vec::new(), } } - pub fn set_channel_ids(&mut self, initiator_ids: ChannelIdentificators) { - self.channel_ids = initiator_ids; + pub fn set_channel_ids(&mut self, channel_ids: ChannelIdentificators) { + self.channel_ids = channel_ids; + } + + pub fn set_decoded_context( + &mut self, + channel_ids: ChannelIdentificators, + send_data_context_pdu: Vec, + ) { + self.set_channel_ids(channel_ids); + + self.send_data_context_pdu = send_data_context_pdu; + self.state = SendDataContextTransportState::Decoded; + } +} + +impl Default for SendDataContextTransport { + fn default() -> Self { + Self { + mcs_transport: McsTransport::new(DataTransport), + channel_ids: ChannelIdentificators { + initiator_id: 0, + channel_id: 0, + }, + state: SendDataContextTransportState::ToDecode, + send_data_context_pdu: Vec::new(), + } } } @@ -147,20 +176,35 @@ impl Decoder for SendDataContextTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let mcs_pdu = self.mcs_transport.decode(&mut stream)?; - if let ironrdp::McsPdu::SendDataIndication(send_data_context) = mcs_pdu { - Ok(( - ChannelIdentificators { - initiator_id: send_data_context.initiator_id, - channel_id: send_data_context.channel_id, - }, - send_data_context.pdu, - )) - } else { - Err(RdpError::UnexpectedPdu(format!( - "Expected Send Data Context PDU, got {:?}", - mcs_pdu.as_short_name() - ))) + match self.state { + SendDataContextTransportState::ToDecode => { + let mcs_pdu = self.mcs_transport.decode(&mut stream)?; + + if let ironrdp::McsPdu::SendDataIndication(send_data_context) = mcs_pdu { + Ok(( + ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }, + send_data_context.pdu, + )) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Send Data Context PDU, got {:?}", + mcs_pdu.as_short_name() + ))) + } + } + SendDataContextTransportState::Decoded => Ok(( + self.channel_ids, + mem::replace(&mut self.send_data_context_pdu, Vec::new()), + )), } } } + +#[derive(Copy, Clone, Debug)] +pub enum SendDataContextTransportState { + ToDecode, + Decoded, +} diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs index ee6399b5..8def947b 100644 --- a/ironrdp_client/src/transport/channels.rs +++ b/ironrdp_client/src/transport/channels.rs @@ -2,7 +2,7 @@ use std::io; use ironrdp::{rdp::vc, PduParsing}; -use super::{DataTransport, Decoder, Encoder, McsTransport, SendDataContextTransport}; +use super::{Decoder, Encoder, SendDataContextTransport}; use crate::{RdpError, RdpResult}; #[derive(Copy, Clone, Debug)] @@ -11,24 +11,20 @@ pub struct ChannelIdentificators { pub channel_id: u16, } -#[derive(Copy, Clone, Debug)] +#[derive(Clone, Debug)] pub struct StaticVirtualChannelTransport { channel_ids: ChannelIdentificators, - send_data_context_transport: SendDataContextTransport, + transport: SendDataContextTransport, } impl StaticVirtualChannelTransport { - pub fn new() -> Self { + pub fn new(transport: SendDataContextTransport) -> Self { Self { channel_ids: ChannelIdentificators { channel_id: 0, initiator_id: 0, }, - send_data_context_transport: SendDataContextTransport::new( - McsTransport::new(DataTransport), - 0, - 0, - ), + transport, } } } @@ -52,11 +48,8 @@ impl Encoder for StaticVirtualChannelTransport { channel_header.to_buffer(&mut channel_buffer)?; channel_buffer.append(&mut channel_data_buffer); - self.send_data_context_transport - .set_channel_ids(self.channel_ids); - - self.send_data_context_transport - .encode(channel_buffer, &mut stream) + self.transport.set_channel_ids(self.channel_ids); + self.transport.encode(channel_buffer, &mut stream) } } @@ -65,8 +58,7 @@ impl Decoder for StaticVirtualChannelTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let (channel_ids, mut channel_data_buffer) = - self.send_data_context_transport.decode(&mut stream)?; + let (channel_ids, mut channel_data_buffer) = self.transport.decode(&mut stream)?; self.channel_ids = channel_ids; let channel_header = vc::ChannelPduHeader::from_buffer(channel_data_buffer.as_slice())?; diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index e2d7a085..4f9581f3 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -1,4 +1,4 @@ -use std::io; +use std::{collections::HashMap, hash::Hash, io}; use x509_parser::parse_x509_der; #[macro_export] @@ -35,3 +35,15 @@ pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { Ok(public_key.data.to_vec()) } + +pub fn swap_hashmap_kv(hm: HashMap) -> HashMap +where + V: Hash + Eq, +{ + let mut result = HashMap::with_capacity(hm.len()); + for (k, v) in hm { + result.insert(v, k); + } + + result +} From ff4afe998e2d288f87d8b1df15efa89fdfa2ad87 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 31 Oct 2019 12:41:38 +0200 Subject: [PATCH 0007/1273] ironrdp: implement GFX PDUs parsing --- ironrdp/src/lib.rs | 2 +- ironrdp/src/rdp/vc/dvc.rs | 2 + ironrdp/src/rdp/vc/dvc/gfx.rs | 389 ++++++++ .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 354 +++++++ .../vc/dvc/gfx/graphics_messages/client.rs | 131 +++ .../vc/dvc/gfx/graphics_messages/server.rs | 682 +++++++++++++ .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 933 ++++++++++++++++++ ironrdp/src/rdp/vc/dvc/gfx/test.rs | 91 ++ 8 files changed, 2583 insertions(+), 1 deletion(-) create mode 100644 ironrdp/src/rdp/vc/dvc/gfx.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/test.rs diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 7030e486..684a8015 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -14,7 +14,7 @@ pub use crate::{ mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}, nego::*, rdp::{ - CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, + vc::dvc, CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, ServerDemandActive, ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, VirtualChannel, }, diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index 0e5b02c8..b99b56db 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -1,3 +1,5 @@ +pub mod gfx; + #[cfg(test)] mod tests; diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs new file mode 100644 index 00000000..746197fc --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -0,0 +1,389 @@ +mod graphics_messages; +#[cfg(test)] +mod test; + +pub use graphics_messages::{ + CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, CapabilitiesConfirmPdu, + CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, + CapabilitiesV8Flags, CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, + DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, + FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, Rectangle, + ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, + WireToSurface1Pdu, WireToSurface2Pdu, +}; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; +use graphics_messages::RESET_GRAPHICS_PDU_SIZE; + +const RDP_GFX_HEADER_SIZE: usize = 8; + +#[derive(Debug, Clone, PartialEq)] +pub enum ServerPdu { + WireToSurface1(WireToSurface1Pdu), + WireToSurface2(WireToSurface2Pdu), + DeleteEncodingContext(DeleteEncodingContextPdu), + SolidFill(SolidFillPdu), + SurfaceToSurface(SurfaceToSurfacePdu), + SurfaceToCache(SurfaceToCachePdu), + CacheToSurface(CacheToSurfacePdu), + EvictCacheEntry(EvictCacheEntryPdu), + CreateSurface(CreateSurfacePdu), + DeleteSurface(DeleteSurfacePdu), + StartFrame(StartFramePdu), + EndFrame(EndFramePdu), + ResetGraphics(ResetGraphicsPdu), + MapSurfaceToOutput(MapSurfaceToOutputPdu), + CapabilitiesConfirm(CapabilitiesConfirmPdu), + CacheImportReply(CacheImportReplyPdu), +} + +impl PduParsing for ServerPdu { + type Error = GraphicsPipelineError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let pdu_type = ServerPduType::from_u16(stream.read_u16::()?) + .ok_or(GraphicsPipelineError::InvalidCmdId)?; + let _flags = stream.read_u16::()?; + let pdu_length = stream.read_u32::()? as usize; + + if let ServerPduType::ResetGraphics = pdu_type { + if pdu_length != RESET_GRAPHICS_PDU_SIZE { + return Err(GraphicsPipelineError::InvalidResetGraphicsPduSize { + expected: RESET_GRAPHICS_PDU_SIZE, + actual: pdu_length, + }); + } + } + + let (server_pdu, buffer_length) = match pdu_type { + ServerPduType::WireToSurface1 => { + let pdu = WireToSurface1Pdu::from_buffer(&mut stream)?; + let bitmap_data_length = pdu.bitmap_data_length; + + let pdu = ServerPdu::WireToSurface1(pdu); + let buffer_length = pdu.buffer_length() + bitmap_data_length; + + (pdu, buffer_length) + } + ServerPduType::WireToSurface2 => { + let pdu = WireToSurface2Pdu::from_buffer(&mut stream)?; + let bitmap_data_length = pdu.bitmap_data_length; + + let pdu = ServerPdu::WireToSurface2(pdu); + let buffer_length = pdu.buffer_length() + bitmap_data_length; + + (pdu, buffer_length) + } + _ => { + let pdu = match pdu_type { + ServerPduType::DeleteEncodingContext => ServerPdu::DeleteEncodingContext( + DeleteEncodingContextPdu::from_buffer(&mut stream)?, + ), + ServerPduType::SolidFill => { + ServerPdu::SolidFill(SolidFillPdu::from_buffer(&mut stream)?) + } + ServerPduType::SurfaceToSurface => { + ServerPdu::SurfaceToSurface(SurfaceToSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::SurfaceToCache => { + ServerPdu::SurfaceToCache(SurfaceToCachePdu::from_buffer(&mut stream)?) + } + ServerPduType::CacheToSurface => { + ServerPdu::CacheToSurface(CacheToSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::EvictCacheEntry => { + ServerPdu::EvictCacheEntry(EvictCacheEntryPdu::from_buffer(&mut stream)?) + } + ServerPduType::CreateSurface => { + ServerPdu::CreateSurface(CreateSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::DeleteSurface => { + ServerPdu::DeleteSurface(DeleteSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::StartFrame => { + ServerPdu::StartFrame(StartFramePdu::from_buffer(&mut stream)?) + } + ServerPduType::EndFrame => { + ServerPdu::EndFrame(EndFramePdu::from_buffer(&mut stream)?) + } + ServerPduType::ResetGraphics => { + ServerPdu::ResetGraphics(ResetGraphicsPdu::from_buffer(&mut stream)?) + } + ServerPduType::MapSurfaceToOutput => ServerPdu::MapSurfaceToOutput( + MapSurfaceToOutputPdu::from_buffer(&mut stream)?, + ), + ServerPduType::CapabilitiesConfirm => ServerPdu::CapabilitiesConfirm( + CapabilitiesConfirmPdu::from_buffer(&mut stream)?, + ), + ServerPduType::CacheImportReply => { + ServerPdu::CacheImportReply(CacheImportReplyPdu::from_buffer(&mut stream)?) + } + ServerPduType::WireToSurface1 | ServerPduType::WireToSurface2 => unreachable!(), + _ => return Err(GraphicsPipelineError::UnexpectedServerPduType(pdu_type)), + }; + let buffer_length = pdu.buffer_length(); + + (pdu, buffer_length) + } + }; + + if buffer_length != pdu_length { + Err(GraphicsPipelineError::InvalidPduLength { + expected: pdu_length, + actual: buffer_length, + }) + } else { + Ok(server_pdu) + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let buffer_length = match self { + ServerPdu::WireToSurface1(pdu) => self.buffer_length() + pdu.bitmap_data_length, + ServerPdu::WireToSurface2(pdu) => self.buffer_length() + pdu.bitmap_data_length, + _ => self.buffer_length(), + }; + + stream.write_u16::(ServerPduType::from(self).to_u16().unwrap())?; + stream.write_u16::(0)?; // flags + stream.write_u32::(buffer_length as u32)?; + + match self { + ServerPdu::WireToSurface1(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::WireToSurface2(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::DeleteEncodingContext(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::SolidFill(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::SurfaceToSurface(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::SurfaceToCache(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::CacheToSurface(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::CreateSurface(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::DeleteSurface(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::ResetGraphics(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::MapSurfaceToOutput(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::StartFrame(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::EndFrame(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::EvictCacheEntry(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::CapabilitiesConfirm(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ServerPdu::CacheImportReply(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + } + } + + fn buffer_length(&self) -> usize { + RDP_GFX_HEADER_SIZE + + match self { + ServerPdu::WireToSurface1(pdu) => pdu.buffer_length(), + ServerPdu::WireToSurface2(pdu) => pdu.buffer_length(), + ServerPdu::DeleteEncodingContext(pdu) => pdu.buffer_length(), + ServerPdu::SolidFill(pdu) => pdu.buffer_length(), + ServerPdu::SurfaceToSurface(pdu) => pdu.buffer_length(), + ServerPdu::SurfaceToCache(pdu) => pdu.buffer_length(), + ServerPdu::CacheToSurface(pdu) => pdu.buffer_length(), + ServerPdu::CreateSurface(pdu) => pdu.buffer_length(), + ServerPdu::DeleteSurface(pdu) => pdu.buffer_length(), + ServerPdu::ResetGraphics(pdu) => pdu.buffer_length(), + ServerPdu::MapSurfaceToOutput(pdu) => pdu.buffer_length(), + ServerPdu::StartFrame(pdu) => pdu.buffer_length(), + ServerPdu::EndFrame(pdu) => pdu.buffer_length(), + ServerPdu::EvictCacheEntry(pdu) => pdu.buffer_length(), + ServerPdu::CapabilitiesConfirm(pdu) => pdu.buffer_length(), + ServerPdu::CacheImportReply(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum ClientPdu { + FrameAcknowledge(FrameAcknowledgePdu), + CapabilitiesAdvertise(CapabilitiesAdvertisePdu), +} + +impl PduParsing for ClientPdu { + type Error = GraphicsPipelineError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let pdu_type = ClientPduType::from_u16(stream.read_u16::()?) + .ok_or(GraphicsPipelineError::InvalidCmdId)?; + let _flags = stream.read_u16::()?; + let pdu_length = stream.read_u32::()? as usize; + + let client_pdu = match pdu_type { + ClientPduType::FrameAcknowledge => { + ClientPdu::FrameAcknowledge(FrameAcknowledgePdu::from_buffer(&mut stream)?) + } + ClientPduType::CapabilitiesAdvertise => ClientPdu::CapabilitiesAdvertise( + CapabilitiesAdvertisePdu::from_buffer(&mut stream)?, + ), + _ => return Err(GraphicsPipelineError::UnexpectedClientPduType(pdu_type)), + }; + + if client_pdu.buffer_length() != pdu_length { + Err(GraphicsPipelineError::InvalidPduLength { + expected: pdu_length, + actual: client_pdu.buffer_length(), + }) + } else { + Ok(client_pdu) + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(ClientPduType::from(self).to_u16().unwrap())?; + stream.write_u16::(0)?; // flags + stream.write_u32::(self.buffer_length() as u32)?; + + match self { + ClientPdu::FrameAcknowledge(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + ClientPdu::CapabilitiesAdvertise(pdu) => pdu + .to_buffer(&mut stream) + .map_err(GraphicsPipelineError::from), + } + } + + fn buffer_length(&self) -> usize { + RDP_GFX_HEADER_SIZE + + match self { + ClientPdu::FrameAcknowledge(pdu) => pdu.buffer_length(), + ClientPdu::CapabilitiesAdvertise(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ClientPduType { + FrameAcknowledge = 0x0d, + CacheImportOffer = 0x10, + CapabilitiesAdvertise = 0x12, + QoeFrameAcknowledge = 0x16, +} + +impl<'a> From<&'a ClientPdu> for ClientPduType { + fn from(c: &'a ClientPdu) -> Self { + match c { + ClientPdu::FrameAcknowledge(_) => Self::FrameAcknowledge, + ClientPdu::CapabilitiesAdvertise(_) => Self::CapabilitiesAdvertise, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ServerPduType { + WireToSurface1 = 0x01, + WireToSurface2 = 0x02, + DeleteEncodingContext = 0x03, + SolidFill = 0x04, + SurfaceToSurface = 0x05, + SurfaceToCache = 0x06, + CacheToSurface = 0x07, + EvictCacheEntry = 0x08, + CreateSurface = 0x09, + DeleteSurface = 0x0a, + StartFrame = 0x0b, + EndFrame = 0x0c, + ResetGraphics = 0x0e, + MapSurfaceToOutput = 0x0f, + CacheImportReply = 0x11, + CapabilitiesConfirm = 0x13, + MapSurfaceToWindow = 0x15, + MapSurfaceToScaledOutput = 0x17, + MapSurfaceToScaledWindow = 0x18, +} + +impl<'a> From<&'a ServerPdu> for ServerPduType { + fn from(s: &'a ServerPdu) -> Self { + match s { + ServerPdu::WireToSurface1(_) => Self::WireToSurface1, + ServerPdu::WireToSurface2(_) => Self::WireToSurface2, + ServerPdu::DeleteEncodingContext(_) => Self::DeleteEncodingContext, + ServerPdu::SolidFill(_) => Self::SolidFill, + ServerPdu::SurfaceToSurface(_) => Self::SurfaceToSurface, + ServerPdu::SurfaceToCache(_) => Self::SurfaceToCache, + ServerPdu::CacheToSurface(_) => Self::CacheToSurface, + ServerPdu::EvictCacheEntry(_) => Self::EvictCacheEntry, + ServerPdu::CreateSurface(_) => Self::CreateSurface, + ServerPdu::DeleteSurface(_) => Self::DeleteSurface, + ServerPdu::StartFrame(_) => Self::StartFrame, + ServerPdu::EndFrame(_) => Self::EndFrame, + ServerPdu::ResetGraphics(_) => Self::ResetGraphics, + ServerPdu::MapSurfaceToOutput(_) => Self::MapSurfaceToOutput, + ServerPdu::CapabilitiesConfirm(_) => Self::CapabilitiesConfirm, + ServerPdu::CacheImportReply(_) => Self::CacheImportReply, + } + } +} + +#[derive(Debug, Fail)] +pub enum GraphicsPipelineError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Graphics messages error: {}", _0)] + GraphicsMessagesError(#[fail(cause)] graphics_messages::GraphicsMessagesError), + #[fail(display = "Invalid Header cmd ID")] + InvalidCmdId, + #[fail(display = "Unexpected client's PDU type: {:?}", _0)] + UnexpectedClientPduType(ClientPduType), + #[fail(display = "Unexpected server's PDU type: {:?}", _0)] + UnexpectedServerPduType(ServerPduType), + #[fail( + display = "Invalid ResetGraphics PDU size: expected ({}) != actual ({})", + expected, actual + )] + InvalidResetGraphicsPduSize { expected: usize, actual: usize }, + #[fail( + display = "Invalid PDU length: expected ({}) != actual ({})", + expected, actual + )] + InvalidPduLength { expected: usize, actual: usize }, +} + +impl_from_error!( + io::Error, + GraphicsPipelineError, + GraphicsPipelineError::IOError +); + +impl_from_error!( + graphics_messages::GraphicsMessagesError, + GraphicsPipelineError, + GraphicsPipelineError::GraphicsMessagesError +); diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs new file mode 100644 index 00000000..c5f400da --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -0,0 +1,354 @@ +mod client; +mod server; +#[cfg(test)] +pub mod test; + +pub use client::{CacheImportReplyPdu, CapabilitiesAdvertisePdu, FrameAcknowledgePdu, QueueDepth}; +pub use server::{ + CacheToSurfacePdu, CapabilitiesConfirmPdu, Codec1Type, Codec2Type, CreateSurfacePdu, + DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, + MapSurfaceToOutputPdu, PixelFormat, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, + SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, WireToSurface2Pdu, + RESET_GRAPHICS_PDU_SIZE, +}; + +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::RDP_GFX_HEADER_SIZE; +use crate::{gcc::MonitorDataError, impl_from_error, PduParsing}; + +const CAPABILITY_SET_HEADER_SIZE: usize = 8; + +const V10_1_RESERVED: u128 = 0; + +#[derive(Debug, Clone, PartialEq)] +pub enum CapabilitySet { + V8 { flags: CapabilitiesV8Flags }, + V8_1 { flags: CapabilitiesV81Flags }, + V10 { flags: CapabilitiesV10Flags }, + V10_1, + V10_2 { flags: CapabilitiesV10Flags }, + V10_3 { flags: CapabilitiesV103Flags }, + V10_4 { flags: CapabilitiesV104Flags }, + V10_5 { flags: CapabilitiesV104Flags }, + V10_6 { flags: CapabilitiesV104Flags }, + Unknown(Vec), +} + +impl CapabilitySet { + fn version(&self) -> CapabilityVersion { + match self { + CapabilitySet::V8 { .. } => CapabilityVersion::V8, + CapabilitySet::V8_1 { .. } => CapabilityVersion::V8_1, + CapabilitySet::V10 { .. } => CapabilityVersion::V10, + CapabilitySet::V10_1 { .. } => CapabilityVersion::V10_1, + CapabilitySet::V10_2 { .. } => CapabilityVersion::V10_2, + CapabilitySet::V10_3 { .. } => CapabilityVersion::V10_3, + CapabilitySet::V10_4 { .. } => CapabilityVersion::V10_4, + CapabilitySet::V10_5 { .. } => CapabilityVersion::V10_5, + CapabilitySet::V10_6 { .. } => CapabilityVersion::V10_6, + CapabilitySet::Unknown { .. } => CapabilityVersion::Unknown, + } + } +} + +impl PduParsing for CapabilitySet { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let version = CapabilityVersion::from_u32(stream.read_u32::()?) + .ok_or(GraphicsMessagesError::InvalidCapabilitiesVersion)?; + let data_length = stream.read_u32::()?; + + let mut data = vec![0; data_length as usize]; + stream.read_exact(data.as_mut())?; + + match version { + CapabilityVersion::V8 => Ok(CapabilitySet::V8 { + flags: CapabilitiesV8Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V8_1 => Ok(CapabilitySet::V8_1 { + flags: CapabilitiesV81Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10 => Ok(CapabilitySet::V10 { + flags: CapabilitiesV10Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10_1 => { + data.as_slice().read_u128::()?; + + Ok(CapabilitySet::V10_1) + } + CapabilityVersion::V10_2 => Ok(CapabilitySet::V10_2 { + flags: CapabilitiesV10Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10_3 => Ok(CapabilitySet::V10_3 { + flags: CapabilitiesV103Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10_4 => Ok(CapabilitySet::V10_4 { + flags: CapabilitiesV104Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10_5 => Ok(CapabilitySet::V10_5 { + flags: CapabilitiesV104Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::V10_6 => Ok(CapabilitySet::V10_6 { + flags: CapabilitiesV104Flags::from_bits_truncate( + data.as_slice().read_u32::()?, + ), + }), + CapabilityVersion::Unknown => Ok(CapabilitySet::Unknown(data)), + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), GraphicsMessagesError> { + stream.write_u32::(self.version().to_u32().unwrap())?; + stream.write_u32::( + (self.buffer_length() - CAPABILITY_SET_HEADER_SIZE) as u32, + )?; + + match self { + CapabilitySet::V8 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V8_1 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_1 => stream.write_u128::(V10_1_RESERVED)?, + CapabilitySet::V10_2 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_3 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_4 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_5 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_6 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::Unknown(data) => stream.write_all(data)?, + } + + Ok(()) + } + fn buffer_length(&self) -> usize { + CAPABILITY_SET_HEADER_SIZE + + match self { + CapabilitySet::V8 { .. } + | CapabilitySet::V8_1 { .. } + | CapabilitySet::V10 { .. } + | CapabilitySet::V10_2 { .. } + | CapabilitySet::V10_3 { .. } + | CapabilitySet::V10_4 { .. } + | CapabilitySet::V10_5 { .. } + | CapabilitySet::V10_6 { .. } => 4, + CapabilitySet::V10_1 { .. } => 16, + CapabilitySet::Unknown(data) => data.len(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Rectangle { + pub left: u16, + pub top: u16, + pub right: u16, + pub bottom: u16, +} + +impl PduParsing for Rectangle { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let left = stream.read_u16::()?; + let top = stream.read_u16::()?; + let right = stream.read_u16::()?; + let bottom = stream.read_u16::()?; + + Ok(Self { + left, + top, + right, + bottom, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.left)?; + stream.write_u16::(self.top)?; + stream.write_u16::(self.right)?; + stream.write_u16::(self.bottom)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Color { + b: u8, + g: u8, + r: u8, + xa: u8, +} + +impl PduParsing for Color { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let b = stream.read_u8()?; + let g = stream.read_u8()?; + let r = stream.read_u8()?; + let xa = stream.read_u8()?; + + Ok(Self { b, g, r, xa }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u8(self.b)?; + stream.write_u8(self.g)?; + stream.write_u8(self.r)?; + stream.write_u8(self.xa)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Point { + x: u16, + y: u16, +} + +impl PduParsing for Point { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let x = stream.read_u16::()?; + let y = stream.read_u16::()?; + + Ok(Self { x, y }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.x)?; + stream.write_u16::(self.y)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum CapabilityVersion { + V8 = 0x8_0004, + V8_1 = 0x8_0105, + V10 = 0xa_0002, + V10_1 = 0xa_0100, + V10_2 = 0xa_0200, + V10_3 = 0xa_0301, + V10_4 = 0xa_0400, + V10_5 = 0xa_0502, + V10_6 = 0xa_0601, + Unknown = 0xa_0600, +} + +bitflags! { + pub struct CapabilitiesV8Flags: u32 { + const THIN_CLIENT = 0x1; + const SMALL_CACHE = 0x2; + } +} + +bitflags! { + pub struct CapabilitiesV81Flags: u32 { + const THIN_CLIENT = 0x01; + const SMALL_CACHE = 0x02; + const AVC420_ENABLED = 0x10; + } +} + +bitflags! { + pub struct CapabilitiesV10Flags: u32 { + const SMALL_CACHE = 0x02; + const AVC_DISABLED = 0x20; + } +} + +bitflags! { + pub struct CapabilitiesV103Flags: u32 { + const AVC_DISABLED = 0x20; + const AVC_THIN_CLIENT = 0x40; + } +} + +bitflags! { + pub struct CapabilitiesV104Flags: u32 { + const SMALL_CACHE = 0x02; + const AVC_DISABLED = 0x20; + const AVC_THIN_CLIENT = 0x40; + } +} + +#[derive(Debug, Fail)] +pub enum GraphicsMessagesError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid codec ID version 1")] + InvalidCodec1Id, + #[fail(display = "Invalid codec ID version 2")] + InvalidCodec2Id, + #[fail(display = "Invalid pixel format")] + InvalidFixelFormat, + #[fail(display = "Monitor error: {}", _0)] + MonitorError(#[fail(cause)] MonitorDataError), + #[fail( + display = "Invalid ResetGraphics PDU width: {} > MAX ({})", + actual, max + )] + InvalidResetGraphicsPduWidth { actual: u32, max: u32 }, + #[fail( + display = "Invalid ResetGraphics PDU height: {} > MAX ({})", + actual, max + )] + InvalidResetGraphicsPduHeight { actual: u32, max: u32 }, + #[fail( + display = "Invalid ResetGraphics PDU monitors count: {} > MAX ({})", + actual, max + )] + InvalidResetGraphicsPduMonitorsCount { actual: u32, max: u32 }, + #[fail(display = "Invalid capabilities version")] + InvalidCapabilitiesVersion, +} + +impl_from_error!( + io::Error, + GraphicsMessagesError, + GraphicsMessagesError::IOError +); + +impl_from_error!( + MonitorDataError, + GraphicsMessagesError, + GraphicsMessagesError::MonitorError +); diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs new file mode 100644 index 00000000..3463107c --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs @@ -0,0 +1,131 @@ +use std::io::{self, Read, Write}; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::{CapabilitySet, GraphicsMessagesError}; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct CapabilitiesAdvertisePdu(pub Vec); + +impl PduParsing for CapabilitiesAdvertisePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let capabilities_count = stream.read_u16::()? as usize; + + let capabilities = (0..capabilities_count) + .map(|_| CapabilitySet::from_buffer(&mut stream)) + .collect::, Self::Error>>()?; + + Ok(Self(capabilities)) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.0.len() as u16)?; + + for capability_set in self.0.iter() { + capability_set.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + self.0.iter().map(|c| c.buffer_length()).sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameAcknowledgePdu { + pub queue_depth: QueueDepth, + pub frame_id: u32, + pub total_frames_decoded: u32, +} + +impl PduParsing for FrameAcknowledgePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl Read) -> Result { + let queue_depth = QueueDepth::from_u32(stream.read_u32::()?); + let frame_id = stream.read_u32::()?; + let total_frames_decoded = stream.read_u32::()?; + + Ok(Self { + queue_depth, + frame_id, + total_frames_decoded, + }) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + stream.write_u32::(self.queue_depth.to_u32())?; + stream.write_u32::(self.frame_id)?; + stream.write_u32::(self.total_frames_decoded)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 12 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CacheImportReplyPdu { + pub cache_slots: Vec, +} + +impl PduParsing for CacheImportReplyPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl Read) -> Result { + let entries_count = stream.read_u16::()? as usize; + + let cache_slots = (0..entries_count) + .map(|_| stream.read_u16::()) + .collect::>>()?; + + Ok(Self { cache_slots }) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + stream.write_u16::(self.cache_slots.len() as u16)?; + + for cache_slot in self.cache_slots.iter() { + stream.write_u16::(*cache_slot)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + self.cache_slots.iter().map(|_| 2).sum::() + } +} + +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum QueueDepth { + Unavailable, + AvailableBytes(u32), + Suspend, +} + +impl QueueDepth { + pub fn from_u32(v: u32) -> Self { + match v { + 0x0000_0000 => Self::Unavailable, + 0x0000_0001..=0xFFFF_FFFE => Self::AvailableBytes(v), + 0xFFFF_FFFF => Self::Suspend, + } + } + + pub fn to_u32(self) -> u32 { + match self { + Self::Unavailable => 0x0000_0000, + Self::AvailableBytes(v) => v, + Self::Suspend => 0xFFFF_FFFF, + } + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs new file mode 100644 index 00000000..2f5f229c --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -0,0 +1,682 @@ +use std::io; + +use bit_field::BitField; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::{CapabilitySet, Color, GraphicsMessagesError, Point, Rectangle, RDP_GFX_HEADER_SIZE}; +use crate::{ + gcc::{Monitor, MonitorDataError}, + PduParsing, +}; + +pub const RESET_GRAPHICS_PDU_SIZE: usize = 340; + +const MAX_RESET_GRAPHICS_WIDTH_HEIGHT: u32 = 32_766; +const MONITOR_COUNT_MAX: u32 = 16; + +#[derive(Debug, Clone, PartialEq)] +pub struct WireToSurface1Pdu { + pub surface_id: u16, + pub codec_id: Codec1Type, + pub pixel_format: PixelFormat, + pub destination_rectangle: Rectangle, + pub bitmap_data_length: usize, +} + +impl PduParsing for WireToSurface1Pdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let codec_id = Codec1Type::from_u16(stream.read_u16::()?) + .ok_or(GraphicsMessagesError::InvalidCodec1Id)?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?) + .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + let destination_rectangle = Rectangle::from_buffer(&mut stream)?; + let bitmap_data_length = stream.read_u32::()? as usize; + + Ok(Self { + surface_id, + codec_id, + pixel_format, + destination_rectangle, + bitmap_data_length, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u16::(self.codec_id.to_u16().unwrap())?; + stream.write_u8(self.pixel_format.to_u8().unwrap())?; + self.destination_rectangle.to_buffer(&mut stream)?; + stream.write_u32::(self.bitmap_data_length as u32)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 17 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct WireToSurface2Pdu { + pub surface_id: u16, + pub codec_id: Codec2Type, + pub codec_context_id: u32, + pub pixel_format: PixelFormat, + pub bitmap_data_length: usize, +} + +impl PduParsing for WireToSurface2Pdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let codec_id = Codec2Type::from_u16(stream.read_u16::()?) + .ok_or(GraphicsMessagesError::InvalidCodec2Id)?; + let codec_context_id = stream.read_u32::()?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?) + .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + let bitmap_data_length = stream.read_u32::()? as usize; + + Ok(Self { + surface_id, + codec_id, + codec_context_id, + pixel_format, + bitmap_data_length, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u16::(self.codec_id.to_u16().unwrap())?; + stream.write_u32::(self.codec_context_id)?; + stream.write_u8(self.pixel_format.to_u8().unwrap())?; + stream.write_u32::(self.bitmap_data_length as u32)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 13 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct DeleteEncodingContextPdu { + pub surface_id: u16, + pub codec_context_id: u32, +} + +impl PduParsing for DeleteEncodingContextPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let codec_context_id = stream.read_u32::()?; + + Ok(Self { + surface_id, + codec_context_id, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u32::(self.codec_context_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct SolidFillPdu { + pub surface_id: u16, + pub fill_pixel: Color, + pub rectangles: Vec, +} + +impl PduParsing for SolidFillPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let fill_pixel = Color::from_buffer(&mut stream)?; + let rectangles_count = stream.read_u16::()?; + + let rectangles = (0..rectangles_count) + .map(|_| Rectangle::from_buffer(&mut stream)) + .collect::, Self::Error>>()?; + + Ok(Self { + surface_id, + fill_pixel, + rectangles, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + self.fill_pixel.to_buffer(&mut stream)?; + stream.write_u16::(self.rectangles.len() as u16)?; + for rectangle in self.rectangles.iter() { + rectangle.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + self + .rectangles + .iter() + .map(|r| r.buffer_length()) + .sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct SurfaceToSurfacePdu { + pub source_surface_id: u16, + pub destination_surface_id: u16, + pub source_rectangle: Rectangle, + pub destination_points: Vec, +} + +impl PduParsing for SurfaceToSurfacePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let source_surface_id = stream.read_u16::()?; + let destination_surface_id = stream.read_u16::()?; + let source_rectangle = Rectangle::from_buffer(&mut stream)?; + let destination_points_count = stream.read_u16::()?; + + let destination_points = (0..destination_points_count) + .map(|_| Point::from_buffer(&mut stream)) + .collect::, Self::Error>>()?; + + Ok(Self { + source_surface_id, + destination_surface_id, + source_rectangle, + destination_points, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.source_surface_id)?; + stream.write_u16::(self.destination_surface_id)?; + self.source_rectangle.to_buffer(&mut stream)?; + + stream.write_u16::(self.destination_points.len() as u16)?; + for rectangle in self.destination_points.iter() { + rectangle.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + self.source_rectangle.buffer_length() + + self + .destination_points + .iter() + .map(|r| r.buffer_length()) + .sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct SurfaceToCachePdu { + pub surface_id: u16, + pub cache_key: u64, + pub cache_slot: u16, + pub source_rectangle: Rectangle, +} + +impl PduParsing for SurfaceToCachePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let cache_key = stream.read_u64::()?; + let cache_slot = stream.read_u16::()?; + let source_rectangle = Rectangle::from_buffer(&mut stream)?; + + Ok(Self { + surface_id, + cache_key, + cache_slot, + source_rectangle, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u64::(self.cache_key)?; + stream.write_u16::(self.cache_slot)?; + self.source_rectangle.to_buffer(&mut stream)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 12 + self.source_rectangle.buffer_length() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CacheToSurfacePdu { + pub cache_slot: u16, + pub surface_id: u16, + pub destination_points: Vec, +} + +impl PduParsing for CacheToSurfacePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let cache_slot = stream.read_u16::()?; + let surface_id = stream.read_u16::()?; + let destination_points_count = stream.read_u16::()?; + + let destination_points = (0..destination_points_count) + .map(|_| Point::from_buffer(&mut stream)) + .collect::, Self::Error>>()?; + + Ok(Self { + cache_slot, + surface_id, + destination_points, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.cache_slot)?; + stream.write_u16::(self.surface_id)?; + stream.write_u16::(self.destination_points.len() as u16)?; + for point in self.destination_points.iter() { + point.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + self + .destination_points + .iter() + .map(|p| p.buffer_length()) + .sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CreateSurfacePdu { + pub surface_id: u16, + pub width: u16, + pub height: u16, + pub pixel_format: PixelFormat, +} + +impl PduParsing for CreateSurfacePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let width = stream.read_u16::()?; + let height = stream.read_u16::()?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?) + .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + + Ok(Self { + surface_id, + width, + height, + pixel_format, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u16::(self.width)?; + stream.write_u16::(self.height)?; + stream.write_u8(self.pixel_format.to_u8().unwrap())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 7 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct DeleteSurfacePdu { + pub surface_id: u16, +} + +impl PduParsing for DeleteSurfacePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + + Ok(Self { surface_id }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct ResetGraphicsPdu { + pub width: u32, + pub height: u32, + pub monitors: Vec, +} + +impl ResetGraphicsPdu { + fn padding_size(&self) -> usize { + RESET_GRAPHICS_PDU_SIZE + - RDP_GFX_HEADER_SIZE + - 12 + - self + .monitors + .iter() + .map(|m| m.buffer_length()) + .sum::() + } +} + +impl PduParsing for ResetGraphicsPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let width = stream.read_u32::()?; + if width > MAX_RESET_GRAPHICS_WIDTH_HEIGHT { + return Err(GraphicsMessagesError::InvalidResetGraphicsPduWidth { + actual: width, + max: MAX_RESET_GRAPHICS_WIDTH_HEIGHT, + }); + } + + let height = stream.read_u32::()?; + if height > MAX_RESET_GRAPHICS_WIDTH_HEIGHT { + return Err(GraphicsMessagesError::InvalidResetGraphicsPduHeight { + actual: height, + max: MAX_RESET_GRAPHICS_WIDTH_HEIGHT, + }); + } + + let monitor_count = stream.read_u32::()?; + if monitor_count > MONITOR_COUNT_MAX { + return Err( + GraphicsMessagesError::InvalidResetGraphicsPduMonitorsCount { + actual: monitor_count, + max: MAX_RESET_GRAPHICS_WIDTH_HEIGHT, + }, + ); + } + + let monitors = (0..monitor_count) + .map(|_| Monitor::from_buffer(&mut stream)) + .collect::, MonitorDataError>>()?; + + let pdu = Self { + width, + height, + monitors, + }; + + let mut padding = vec![0; pdu.padding_size()]; + stream.read_exact(padding.as_mut())?; + + Ok(pdu) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.width)?; + stream.write_u32::(self.height)?; + stream.write_u32::(self.monitors.len() as u32)?; + + for monitor in self.monitors.iter() { + monitor.to_buffer(&mut stream)?; + } + + let padding = vec![0; self.padding_size()]; + stream.write_all(padding.as_slice())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + RESET_GRAPHICS_PDU_SIZE - RDP_GFX_HEADER_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MapSurfaceToOutputPdu { + pub surface_id: u16, + pub output_origin_x: u32, + pub output_origin_y: u32, +} + +impl PduParsing for MapSurfaceToOutputPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let _reserved = stream.read_u16::()?; + let output_origin_x = stream.read_u32::()?; + let output_origin_y = stream.read_u32::()?; + + Ok(Self { + surface_id, + output_origin_x, + output_origin_y, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u16::(0)?; // reserved + stream.write_u32::(self.output_origin_x)?; + stream.write_u32::(self.output_origin_y)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 12 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct EvictCacheEntryPdu { + pub cache_slot: u16, +} + +impl PduParsing for EvictCacheEntryPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let cache_slot = stream.read_u16::()?; + + Ok(Self { cache_slot }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.cache_slot)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct StartFramePdu { + pub timestamp: Timestamp, + pub frame_id: u32, +} + +impl PduParsing for StartFramePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let timestamp = Timestamp::from_buffer(&mut stream)?; + let frame_id = stream.read_u32::()?; + + Ok(Self { + timestamp, + frame_id, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + self.timestamp.to_buffer(&mut stream)?; + stream.write_u32::(self.frame_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct EndFramePdu { + pub frame_id: u32, +} + +impl PduParsing for EndFramePdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let frame_id = stream.read_u32::()?; + + Ok(Self { frame_id }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.frame_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CapabilitiesConfirmPdu(pub CapabilitySet); + +impl PduParsing for CapabilitiesConfirmPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let capability_set = CapabilitySet::from_buffer(&mut stream)?; + + Ok(Self(capability_set)) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + self.0.to_buffer(&mut stream) + } + + fn buffer_length(&self) -> usize { + self.0.buffer_length() + } +} + +#[repr(u16)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum Codec1Type { + Uncompressed = 0x0, + RemoteFx = 0x3, + ClearCodec = 0x8, + Planar = 0xa, + Avc420 = 0xb, + Alpha = 0xc, + Avc444 = 0xe, + Avc444v2 = 0xf, +} + +#[repr(u16)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum Codec2Type { + RemoteFxProgressive = 0x9, +} + +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum PixelFormat { + XRgb = 0x20, + ARgb = 0x21, +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct Timestamp { + pub milliseconds: u16, + pub seconds: u8, + pub minutes: u8, + pub hours: u16, +} + +impl PduParsing for Timestamp { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let timestamp = stream.read_u32::()?; + + let milliseconds = timestamp.get_bits(..10) as u16; + let seconds = timestamp.get_bits(10..16) as u8; + let minutes = timestamp.get_bits(16..22) as u8; + let hours = timestamp.get_bits(22..) as u16; + + Ok(Self { + milliseconds, + seconds, + minutes, + hours, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut timestamp: u32 = 0; + + timestamp.set_bits(..10, u32::from(self.milliseconds)); + timestamp.set_bits(10..16, u32::from(self.seconds)); + timestamp.set_bits(16..22, u32::from(self.minutes)); + timestamp.set_bits(22.., u32::from(self.hours)); + + stream.write_u32::(timestamp)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs new file mode 100644 index 00000000..9c2275d7 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -0,0 +1,933 @@ +use lazy_static::lazy_static; + +use super::*; +use crate::gcc::{Monitor, MonitorFlags}; + +pub const WIRE_TO_SURFACE_1_BUFFER: [u8; 218] = [ + 0x00, 0x00, 0x08, 0x00, 0x20, 0xa5, 0x03, 0xde, 0x02, 0xab, 0x03, 0xe7, 0x02, 0xc9, 0x00, 0x00, + 0x00, 0x01, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3f, 0x27, + 0x19, 0x82, 0x72, 0x69, 0x40, 0x28, 0x1a, 0x3f, 0x27, 0x19, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, + 0x4f, 0x39, 0x2c, 0xa0, 0x94, 0x8d, 0xc0, 0xb8, 0xb3, 0x00, 0x09, 0xd8, 0xd3, 0xd0, 0x97, 0x8a, + 0x82, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, 0x3f, 0x27, 0x19, 0x4f, 0x39, 0x2c, 0xdf, 0xdb, 0xd9, + 0xd8, 0xd3, 0xd0, 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xff, 0xff, 0x3f, 0x27, 0x19, 0x41, 0x29, + 0x1b, 0x40, 0x28, 0x1a, 0x40, 0x28, 0x1a, 0xe5, 0xe1, 0xe0, 0x81, 0x71, 0x68, 0x40, 0x28, 0x1a, + 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xff, 0xff, 0x60, 0x4b, 0x40, 0x4f, 0x39, 0x2c, 0x60, 0x4b, + 0x40, 0xd8, 0xd3, 0xd0, 0xc0, 0xb8, 0xb3, 0x43, 0x2b, 0x1d, 0x3f, 0x27, 0x19, 0xff, 0xff, 0xff, + 0x00, 0x09, 0xc0, 0xb8, 0xb3, 0xef, 0xed, 0xeb, 0xdf, 0xdb, 0xd9, 0xea, 0xe7, 0xe6, 0xc0, 0xb8, + 0xb3, 0x41, 0x29, 0x1b, 0x41, 0x29, 0x1b, 0x42, 0x2a, 0x1c, 0xff, 0xff, 0xff, 0x00, 0x09, 0x41, + 0x29, 0x1b, 0x81, 0x71, 0x68, 0x80, 0x71, 0x67, 0x5f, 0x4b, 0x3f, 0x40, 0x28, 0x1a, 0x42, 0x2a, + 0x1c, 0x40, 0x28, 0x1a, 0x3f, 0x27, 0x19, 0xc0, 0xb8, 0xb3, +]; +pub const WIRE_TO_SURFACE_2_BUFFER: [u8; 629] = [ + 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x68, 0x02, 0x00, 0x00, 0xc1, 0xcc, 0x0c, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc4, 0xcc, 0x56, 0x02, 0x00, 0x00, 0x40, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x37, 0x02, 0x00, 0x00, 0x63, 0x02, 0x51, 0x01, 0x45, + 0x00, 0x29, 0x00, 0x66, 0x76, 0x88, 0x99, 0xa9, 0xc6, 0xcc, 0x53, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x05, 0x00, 0x01, 0xff, 0x9a, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x91, 0x02, 0xc6, 0xd9, 0x08, 0x8c, 0x99, 0x11, 0xb3, 0xc9, 0x0f, 0x88, 0x8d, 0x99, 0x1b, + 0x32, 0x36, 0x64, 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xcc, 0x8d, 0x99, 0x1b, 0x32, + 0x36, 0x64, 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xc0, 0x0b, 0x3a, 0x05, 0x02, 0x82, + 0x85, 0x14, 0x52, 0xaa, 0xaf, 0xa0, 0x00, 0x06, 0x4e, 0x0d, 0x4e, 0x87, 0xe8, 0xfa, 0x38, 0x81, + 0x5c, 0x42, 0xf1, 0x11, 0x44, 0x8f, 0x8f, 0xc5, 0xe2, 0xf0, 0x32, 0x20, 0x66, 0x8a, 0x55, 0x55, + 0x00, 0x03, 0x19, 0x29, 0x00, 0x05, 0xee, 0x85, 0x49, 0xe8, 0xaa, 0x77, 0xf5, 0x97, 0x8b, 0xda, + 0x20, 0x80, 0x52, 0x8a, 0x27, 0x0f, 0x77, 0x70, 0x01, 0x4b, 0x54, 0x53, 0x4e, 0x00, 0x78, 0x64, + 0x8a, 0x16, 0x27, 0xe8, 0x5f, 0xbf, 0xff, 0xff, 0x00, 0x05, 0x1e, 0x50, 0xf7, 0xfe, 0x80, 0x02, + 0x87, 0x64, 0x1c, 0xf6, 0x00, 0x0a, 0x3b, 0x43, 0x9f, 0xe8, 0x00, 0x29, 0xe4, 0x86, 0xff, 0x80, + 0x00, 0xa3, 0x68, 0x6f, 0xf0, 0x00, 0x32, 0x23, 0x00, 0x00, 0x09, 0xa1, 0x78, 0xf8, 0x5c, 0x2e, + 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, 0x82, 0xc3, 0xc1, 0x61, 0xe0, 0xb0, 0x01, 0x5e, 0x01, 0xf3, + 0x53, 0x01, 0x0f, 0x23, 0xc0, 0x93, 0x90, 0x4a, 0x06, 0x80, 0x49, 0x4f, 0x42, 0x91, 0x16, 0x1a, + 0x40, 0x14, 0x41, 0x0a, 0x00, 0xa9, 0x24, 0x40, 0x4f, 0x78, 0x9a, 0x28, 0x35, 0x49, 0xef, 0x83, + 0xc4, 0xfb, 0xf8, 0x0f, 0x13, 0xdf, 0x03, 0xda, 0xff, 0xf5, 0x80, 0x74, 0x27, 0xb4, 0x0e, 0x5f, + 0xea, 0x0c, 0x90, 0x00, 0x0a, 0xc1, 0x78, 0xf8, 0x5c, 0x2e, 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, + 0x82, 0xc3, 0xc1, 0x61, 0xe0, 0xb0, 0xf0, 0x58, 0x3d, 0x00, 0x61, 0x90, 0x04, 0x02, 0x02, 0x04, + 0x08, 0x21, 0x90, 0xd8, 0x00, 0x00, 0x3f, 0x62, 0x0a, 0x3a, 0x04, 0x11, 0x08, 0xd0, 0x89, 0x15, + 0xd4, 0x8c, 0x4b, 0x4f, 0x09, 0xa5, 0x2a, 0x10, 0x8d, 0x80, 0x1a, 0xd1, 0xa5, 0x60, 0x0c, 0xe8, + 0x11, 0x41, 0x1b, 0x2b, 0xe1, 0x1f, 0xfe, 0x43, 0xff, 0x81, 0x8f, 0x84, 0x3d, 0x08, 0x1f, 0xf8, + 0x87, 0xa0, 0x9a, 0x85, 0xf0, 0x27, 0x42, 0x7f, 0x01, 0xe6, 0x80, 0xc6, 0xcc, 0xe4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x01, 0xff, 0x82, 0x00, 0x1d, 0x00, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xe8, 0x1c, 0xc8, 0x87, 0xe8, 0x0d, 0x01, 0xa0, 0x68, 0x34, 0x34, 0x34, + 0x69, 0xad, 0x6e, 0xeb, 0x6d, 0xb6, 0x80, 0x00, 0x0c, 0x64, 0x1b, 0x0d, 0x0f, 0xa3, 0xe8, 0xfa, + 0x7d, 0x7d, 0xfb, 0xf3, 0xe7, 0xc5, 0xc0, 0xa4, 0x81, 0x02, 0x48, 0x44, 0x6c, 0x09, 0xad, 0xd7, + 0x55, 0x70, 0x00, 0x18, 0x48, 0x08, 0x10, 0x41, 0x04, 0x20, 0x00, 0x15, 0xfd, 0x00, 0x9b, 0xd0, + 0x2d, 0xe8, 0x38, 0x9d, 0x02, 0xf4, 0x0b, 0xc7, 0x05, 0x34, 0x69, 0xbf, 0x78, 0x80, 0xb2, 0xed, + 0xd4, 0x00, 0x61, 0xd0, 0xe8, 0xb2, 0xcb, 0x00, 0x01, 0x01, 0xc2, 0x0b, 0x42, 0xa2, 0xff, 0xe2, + 0x17, 0xff, 0xec, 0x01, 0xfe, 0x48, 0x04, 0xff, 0x14, 0x10, 0xfe, 0x40, 0x09, 0x7f, 0x12, 0x00, + 0xe6, 0x20, 0x0f, 0xd4, 0x80, 0x7e, 0xc0, 0x39, 0xfa, 0x90, 0x0f, 0xb0, 0x0e, 0x3d, 0x48, 0x46, + 0x88, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x1d, 0x66, 0x40, 0x34, 0x02, 0x87, 0xa0, 0x25, 0x9a, 0x01, + 0x21, 0x0a, 0x48, 0x91, 0x49, 0x44, 0x28, 0x88, 0x43, 0xbc, 0x84, 0x2c, 0x42, 0x38, 0x56, 0x0b, + 0x00, 0x00, 0x00, 0x1b, 0xfc, 0x40, 0xe4, 0x1c, 0x87, 0x21, 0xca, 0x95, 0x04, 0x08, 0x10, 0x42, + 0x18, 0xc0, 0x09, 0x68, 0xa5, 0x54, 0x00, 0x61, 0x40, 0xe6, 0x97, 0xcd, 0xee, 0xcf, 0xb8, 0x3f, + 0xf1, 0x23, 0xa8, 0x7f, 0x86, 0x1a, 0x8f, 0xf0, 0x2c, 0x49, 0x88, 0xbe, 0x16, 0xc5, 0xe0, 0xc2, + 0xcc, 0x06, 0x00, 0x00, 0x00, +]; + +pub const DELETE_ENCODING_CONTEXT_BUFFER: [u8; 6] = [0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; + +pub const SOLID_FILL_BUFFER: [u8; 16] = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, +]; + +pub const SURFACE_TO_SURFACE_BUFFER: [u8; 18] = [ + 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x3c, 0x00, 0xa4, 0x02, 0x94, 0x00, 0x01, 0x00, 0x80, 0x00, + 0x3c, 0x00, +]; + +pub const SURFACE_TO_CACHE_BUFFER: [u8; 20] = [ + 0x00, 0x00, 0xb7, 0x7f, 0xa3, 0xa6, 0xda, 0x86, 0x3d, 0x11, 0x0e, 0x00, 0x80, 0x02, 0x00, 0x00, + 0xc0, 0x02, 0x40, 0x00, +]; + +pub const CACHE_TO_SURFACE_BUFFER: [u8; 10] = + [0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x40, 0x01]; + +pub const CREATE_SURFACE_BUFFER: [u8; 7] = [0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x21]; + +pub const DELETE_SURFACE_BUFFER: [u8; 2] = [0x00, 0x00]; + +pub const RESET_GRAPHICS_BUFFER: [u8; 332] = [ + 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +]; + +pub const MAP_SURFACE_TO_OUTPUT_BUFFER: [u8; 12] = [ + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2, 0x00, 0x00, 0x00, +]; + +pub const EVICT_CACHE_ENTRY_BUFFER: [u8; 2] = [0x00, 0x00]; + +pub const START_FRAME_BUFFER: [u8; 8] = [0xf7, 0xe8, 0x9b, 0x5, 0x05, 0x00, 0x00, 0x00]; + +pub const END_FRAME_BUFFER: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; + +pub const CAPABILITIES_CONFIRM_BUFFER: [u8; 12] = [ + 0x02, 0x05, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, +]; + +pub const CAPABILITIES_ADVERTISE_BUFFER: [u8; 122] = [ + 0x9, 0x0, 0x4, 0x0, 0x8, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x1, 0x8, 0x0, 0x4, + 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, + 0x0, 0x1, 0xa, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x3, + 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, + 0x20, 0x0, 0x0, 0x0, 0x2, 0x5, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x6, + 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, +]; + +pub const FRAME_ACKNOWLEDGE_BUFFER: [u8; 12] = + [0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0]; + +pub const CACHE_IMPORT_REPLY_BUFFER: [u8; 1840] = [ + 0x97, 0x3, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x0, 0xa, + 0x0, 0xb, 0x0, 0xc, 0x0, 0xd, 0x0, 0xe, 0x0, 0xf, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, + 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1a, 0x0, 0x1b, 0x0, + 0x1c, 0x0, 0x1d, 0x0, 0x1e, 0x0, 0x1f, 0x0, 0x20, 0x0, 0x21, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, + 0x0, 0x25, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x0, 0x2c, 0x0, + 0x2d, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, + 0x0, 0x36, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0x3b, 0x0, 0x3c, 0x0, 0x3d, 0x0, + 0x3e, 0x0, 0x3f, 0x0, 0x40, 0x0, 0x41, 0x0, 0x42, 0x0, 0x43, 0x0, 0x44, 0x0, 0x45, 0x0, 0x46, + 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4a, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x4e, 0x0, + 0x4f, 0x0, 0x50, 0x0, 0x51, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x56, 0x0, 0x57, + 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0x5b, 0x0, 0x5c, 0x0, 0x5d, 0x0, 0x5e, 0x0, 0x5f, 0x0, + 0x60, 0x0, 0x61, 0x0, 0x62, 0x0, 0x63, 0x0, 0x64, 0x0, 0x65, 0x0, 0x66, 0x0, 0x67, 0x0, 0x68, + 0x0, 0x69, 0x0, 0x6a, 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x6d, 0x0, 0x6e, 0x0, 0x6f, 0x0, 0x70, 0x0, + 0x71, 0x0, 0x72, 0x0, 0x73, 0x0, 0x74, 0x0, 0x75, 0x0, 0x76, 0x0, 0x77, 0x0, 0x78, 0x0, 0x79, + 0x0, 0x7a, 0x0, 0x7b, 0x0, 0x7c, 0x0, 0x7d, 0x0, 0x7e, 0x0, 0x7f, 0x0, 0x80, 0x0, 0x81, 0x0, + 0x82, 0x0, 0x83, 0x0, 0x84, 0x0, 0x85, 0x0, 0x86, 0x0, 0x87, 0x0, 0x88, 0x0, 0x89, 0x0, 0x8a, + 0x0, 0x8b, 0x0, 0x8c, 0x0, 0x8d, 0x0, 0x8e, 0x0, 0x8f, 0x0, 0x90, 0x0, 0x91, 0x0, 0x92, 0x0, + 0x93, 0x0, 0x94, 0x0, 0x95, 0x0, 0x96, 0x0, 0x97, 0x0, 0x98, 0x0, 0x99, 0x0, 0x9a, 0x0, 0x9b, + 0x0, 0x9c, 0x0, 0x9d, 0x0, 0x9e, 0x0, 0x9f, 0x0, 0xa0, 0x0, 0xa1, 0x0, 0xa2, 0x0, 0xa3, 0x0, + 0xa4, 0x0, 0xa5, 0x0, 0xa6, 0x0, 0xa7, 0x0, 0xa8, 0x0, 0xa9, 0x0, 0xaa, 0x0, 0xab, 0x0, 0xac, + 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0xb1, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, + 0xb5, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x0, 0xb9, 0x0, 0xba, 0x0, 0xbb, 0x0, 0xbc, 0x0, 0xbd, + 0x0, 0xbe, 0x0, 0xbf, 0x0, 0xc0, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0xc5, 0x0, + 0xc6, 0x0, 0xc7, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0xca, 0x0, 0xcb, 0x0, 0xcc, 0x0, 0xcd, 0x0, 0xce, + 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x0, + 0xd7, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0xdb, 0x0, 0xdc, 0x0, 0xdd, 0x0, 0xde, 0x0, 0xdf, + 0x0, 0xe0, 0x0, 0xe1, 0x0, 0xe2, 0x0, 0xe3, 0x0, 0xe4, 0x0, 0xe5, 0x0, 0xe6, 0x0, 0xe7, 0x0, + 0xe8, 0x0, 0xe9, 0x0, 0xea, 0x0, 0xeb, 0x0, 0xec, 0x0, 0xed, 0x0, 0xee, 0x0, 0xef, 0x0, 0xf0, + 0x0, 0xf1, 0x0, 0xf2, 0x0, 0xf3, 0x0, 0xf4, 0x0, 0xf5, 0x0, 0xf6, 0x0, 0xf7, 0x0, 0xf8, 0x0, + 0xf9, 0x0, 0xfa, 0x0, 0xfb, 0x0, 0xfc, 0x0, 0xfd, 0x0, 0xfe, 0x0, 0xff, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x2, 0x1, 0x3, 0x1, 0x4, 0x1, 0x5, 0x1, 0x6, 0x1, 0x7, 0x1, 0x8, 0x1, 0x9, 0x1, 0xa, 0x1, + 0xb, 0x1, 0xc, 0x1, 0xd, 0x1, 0xe, 0x1, 0xf, 0x1, 0x10, 0x1, 0x11, 0x1, 0x12, 0x1, 0x13, 0x1, + 0x14, 0x1, 0x15, 0x1, 0x16, 0x1, 0x17, 0x1, 0x18, 0x1, 0x19, 0x1, 0x1a, 0x1, 0x1b, 0x1, 0x1c, + 0x1, 0x1d, 0x1, 0x1e, 0x1, 0x1f, 0x1, 0x20, 0x1, 0x21, 0x1, 0x22, 0x1, 0x23, 0x1, 0x24, 0x1, + 0x25, 0x1, 0x26, 0x1, 0x27, 0x1, 0x28, 0x1, 0x29, 0x1, 0x2a, 0x1, 0x2b, 0x1, 0x2c, 0x1, 0x2d, + 0x1, 0x2e, 0x1, 0x2f, 0x1, 0x30, 0x1, 0x31, 0x1, 0x32, 0x1, 0x33, 0x1, 0x34, 0x1, 0x35, 0x1, + 0x36, 0x1, 0x37, 0x1, 0x38, 0x1, 0x39, 0x1, 0x3a, 0x1, 0x3b, 0x1, 0x3c, 0x1, 0x3d, 0x1, 0x3e, + 0x1, 0x3f, 0x1, 0x40, 0x1, 0x41, 0x1, 0x42, 0x1, 0x43, 0x1, 0x44, 0x1, 0x45, 0x1, 0x46, 0x1, + 0x47, 0x1, 0x48, 0x1, 0x49, 0x1, 0x4a, 0x1, 0x4b, 0x1, 0x4c, 0x1, 0x4d, 0x1, 0x4e, 0x1, 0x4f, + 0x1, 0x50, 0x1, 0x51, 0x1, 0x52, 0x1, 0x53, 0x1, 0x54, 0x1, 0x55, 0x1, 0x56, 0x1, 0x57, 0x1, + 0x58, 0x1, 0x59, 0x1, 0x5a, 0x1, 0x5b, 0x1, 0x5c, 0x1, 0x5d, 0x1, 0x5e, 0x1, 0x5f, 0x1, 0x60, + 0x1, 0x61, 0x1, 0x62, 0x1, 0x63, 0x1, 0x64, 0x1, 0x65, 0x1, 0x66, 0x1, 0x67, 0x1, 0x68, 0x1, + 0x69, 0x1, 0x6a, 0x1, 0x6b, 0x1, 0x6c, 0x1, 0x6d, 0x1, 0x6e, 0x1, 0x6f, 0x1, 0x70, 0x1, 0x71, + 0x1, 0x72, 0x1, 0x73, 0x1, 0x74, 0x1, 0x75, 0x1, 0x76, 0x1, 0x77, 0x1, 0x78, 0x1, 0x79, 0x1, + 0x7a, 0x1, 0x7b, 0x1, 0x7c, 0x1, 0x7d, 0x1, 0x7e, 0x1, 0x7f, 0x1, 0x80, 0x1, 0x81, 0x1, 0x82, + 0x1, 0x83, 0x1, 0x84, 0x1, 0x85, 0x1, 0x86, 0x1, 0x87, 0x1, 0x88, 0x1, 0x89, 0x1, 0x8a, 0x1, + 0x8b, 0x1, 0x8c, 0x1, 0x8d, 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x1, 0x91, 0x1, 0x92, 0x1, 0x93, + 0x1, 0x94, 0x1, 0x95, 0x1, 0x96, 0x1, 0x97, 0x1, 0x98, 0x1, 0x99, 0x1, 0x9a, 0x1, 0x9b, 0x1, + 0x9c, 0x1, 0x9d, 0x1, 0x9e, 0x1, 0x9f, 0x1, 0xa0, 0x1, 0xa1, 0x1, 0xa2, 0x1, 0xa3, 0x1, 0xa4, + 0x1, 0xa5, 0x1, 0xa6, 0x1, 0xa7, 0x1, 0xa8, 0x1, 0xa9, 0x1, 0xaa, 0x1, 0xab, 0x1, 0xac, 0x1, + 0xad, 0x1, 0xae, 0x1, 0xaf, 0x1, 0xb0, 0x1, 0xb1, 0x1, 0xb2, 0x1, 0xb3, 0x1, 0xb4, 0x1, 0xb5, + 0x1, 0xb6, 0x1, 0xb7, 0x1, 0xb8, 0x1, 0xb9, 0x1, 0xba, 0x1, 0xbb, 0x1, 0xbc, 0x1, 0xbd, 0x1, + 0xbe, 0x1, 0xbf, 0x1, 0xc0, 0x1, 0xc1, 0x1, 0xc2, 0x1, 0xc3, 0x1, 0xc4, 0x1, 0xc5, 0x1, 0xc6, + 0x1, 0xc7, 0x1, 0xc8, 0x1, 0xc9, 0x1, 0xca, 0x1, 0xcb, 0x1, 0xcc, 0x1, 0xcd, 0x1, 0xce, 0x1, + 0xcf, 0x1, 0xd0, 0x1, 0xd1, 0x1, 0xd2, 0x1, 0xd3, 0x1, 0xd4, 0x1, 0xd5, 0x1, 0xd6, 0x1, 0xd7, + 0x1, 0xd8, 0x1, 0xd9, 0x1, 0xda, 0x1, 0xdb, 0x1, 0xdc, 0x1, 0xdd, 0x1, 0xde, 0x1, 0xdf, 0x1, + 0xe0, 0x1, 0xe1, 0x1, 0xe2, 0x1, 0xe3, 0x1, 0xe4, 0x1, 0xe5, 0x1, 0xe6, 0x1, 0xe7, 0x1, 0xe8, + 0x1, 0xe9, 0x1, 0xea, 0x1, 0xeb, 0x1, 0xec, 0x1, 0xed, 0x1, 0xee, 0x1, 0xef, 0x1, 0xf0, 0x1, + 0xf1, 0x1, 0xf2, 0x1, 0xf3, 0x1, 0xf4, 0x1, 0xf5, 0x1, 0xf6, 0x1, 0xf7, 0x1, 0xf8, 0x1, 0xf9, + 0x1, 0xfa, 0x1, 0xfb, 0x1, 0xfc, 0x1, 0xfd, 0x1, 0xfe, 0x1, 0xff, 0x1, 0x0, 0x2, 0x1, 0x2, 0x2, + 0x2, 0x3, 0x2, 0x4, 0x2, 0x5, 0x2, 0x6, 0x2, 0x7, 0x2, 0x8, 0x2, 0x9, 0x2, 0xa, 0x2, 0xb, 0x2, + 0xc, 0x2, 0xd, 0x2, 0xe, 0x2, 0xf, 0x2, 0x10, 0x2, 0x11, 0x2, 0x12, 0x2, 0x13, 0x2, 0x14, 0x2, + 0x15, 0x2, 0x16, 0x2, 0x17, 0x2, 0x18, 0x2, 0x19, 0x2, 0x1a, 0x2, 0x1b, 0x2, 0x1c, 0x2, 0x1d, + 0x2, 0x1e, 0x2, 0x1f, 0x2, 0x20, 0x2, 0x21, 0x2, 0x22, 0x2, 0x23, 0x2, 0x24, 0x2, 0x25, 0x2, + 0x26, 0x2, 0x27, 0x2, 0x28, 0x2, 0x29, 0x2, 0x2a, 0x2, 0x2b, 0x2, 0x2c, 0x2, 0x2d, 0x2, 0x2e, + 0x2, 0x2f, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x35, 0x2, 0x36, 0x2, + 0x37, 0x2, 0x38, 0x2, 0x39, 0x2, 0x3a, 0x2, 0x3b, 0x2, 0x3c, 0x2, 0x3d, 0x2, 0x3e, 0x2, 0x3f, + 0x2, 0x40, 0x2, 0x41, 0x2, 0x42, 0x2, 0x43, 0x2, 0x44, 0x2, 0x45, 0x2, 0x46, 0x2, 0x47, 0x2, + 0x48, 0x2, 0x49, 0x2, 0x4a, 0x2, 0x4b, 0x2, 0x4c, 0x2, 0x4d, 0x2, 0x4e, 0x2, 0x4f, 0x2, 0x50, + 0x2, 0x51, 0x2, 0x52, 0x2, 0x53, 0x2, 0x54, 0x2, 0x55, 0x2, 0x56, 0x2, 0x57, 0x2, 0x58, 0x2, + 0x59, 0x2, 0x5a, 0x2, 0x5b, 0x2, 0x5c, 0x2, 0x5d, 0x2, 0x5e, 0x2, 0x5f, 0x2, 0x60, 0x2, 0x61, + 0x2, 0x62, 0x2, 0x63, 0x2, 0x64, 0x2, 0x65, 0x2, 0x66, 0x2, 0x67, 0x2, 0x68, 0x2, 0x69, 0x2, + 0x6a, 0x2, 0x6b, 0x2, 0x6c, 0x2, 0x6d, 0x2, 0x6e, 0x2, 0x6f, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, + 0x2, 0x73, 0x2, 0x74, 0x2, 0x75, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7a, 0x2, + 0x7b, 0x2, 0x7c, 0x2, 0x7d, 0x2, 0x7e, 0x2, 0x7f, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, + 0x2, 0x84, 0x2, 0x85, 0x2, 0x86, 0x2, 0x87, 0x2, 0x88, 0x2, 0x89, 0x2, 0x8a, 0x2, 0x8b, 0x2, + 0x8c, 0x2, 0x8d, 0x2, 0x8e, 0x2, 0x8f, 0x2, 0x90, 0x2, 0x91, 0x2, 0x92, 0x2, 0x93, 0x2, 0x94, + 0x2, 0x95, 0x2, 0x96, 0x2, 0x97, 0x2, 0x98, 0x2, 0x99, 0x2, 0x9a, 0x2, 0x9b, 0x2, 0x9c, 0x2, + 0x9d, 0x2, 0x9e, 0x2, 0x9f, 0x2, 0xa0, 0x2, 0xa1, 0x2, 0xa2, 0x2, 0xa3, 0x2, 0xa4, 0x2, 0xa5, + 0x2, 0xa6, 0x2, 0xa7, 0x2, 0xa8, 0x2, 0xa9, 0x2, 0xaa, 0x2, 0xab, 0x2, 0xac, 0x2, 0xad, 0x2, + 0xae, 0x2, 0xaf, 0x2, 0xb0, 0x2, 0xb1, 0x2, 0xb2, 0x2, 0xb3, 0x2, 0xb4, 0x2, 0xb5, 0x2, 0xb6, + 0x2, 0xb7, 0x2, 0xb8, 0x2, 0xb9, 0x2, 0xba, 0x2, 0xbb, 0x2, 0xbc, 0x2, 0xbd, 0x2, 0xbe, 0x2, + 0xbf, 0x2, 0xc0, 0x2, 0xc1, 0x2, 0xc2, 0x2, 0xc3, 0x2, 0xc4, 0x2, 0xc5, 0x2, 0xc6, 0x2, 0xc7, + 0x2, 0xc8, 0x2, 0xc9, 0x2, 0xca, 0x2, 0xcb, 0x2, 0xcc, 0x2, 0xcd, 0x2, 0xce, 0x2, 0xcf, 0x2, + 0xd0, 0x2, 0xd1, 0x2, 0xd2, 0x2, 0xd3, 0x2, 0xd4, 0x2, 0xd5, 0x2, 0xd6, 0x2, 0xd7, 0x2, 0xd8, + 0x2, 0xd9, 0x2, 0xda, 0x2, 0xdb, 0x2, 0xdc, 0x2, 0xdd, 0x2, 0xde, 0x2, 0xdf, 0x2, 0xe0, 0x2, + 0xe1, 0x2, 0xe2, 0x2, 0xe3, 0x2, 0xe4, 0x2, 0xe5, 0x2, 0xe6, 0x2, 0xe7, 0x2, 0xe8, 0x2, 0xe9, + 0x2, 0xea, 0x2, 0xeb, 0x2, 0xec, 0x2, 0xed, 0x2, 0xee, 0x2, 0xef, 0x2, 0xf0, 0x2, 0xf1, 0x2, + 0xf2, 0x2, 0xf3, 0x2, 0xf4, 0x2, 0xf5, 0x2, 0xf6, 0x2, 0xf7, 0x2, 0xf8, 0x2, 0xf9, 0x2, 0xfa, + 0x2, 0xfb, 0x2, 0xfc, 0x2, 0xfd, 0x2, 0xfe, 0x2, 0xff, 0x2, 0x0, 0x3, 0x1, 0x3, 0x2, 0x3, 0x3, + 0x3, 0x4, 0x3, 0x5, 0x3, 0x6, 0x3, 0x7, 0x3, 0x8, 0x3, 0x9, 0x3, 0xa, 0x3, 0xb, 0x3, 0xc, 0x3, + 0xd, 0x3, 0xe, 0x3, 0xf, 0x3, 0x10, 0x3, 0x11, 0x3, 0x12, 0x3, 0x13, 0x3, 0x14, 0x3, 0x15, 0x3, + 0x16, 0x3, 0x17, 0x3, 0x18, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1e, + 0x3, 0x1f, 0x3, 0x20, 0x3, 0x21, 0x3, 0x22, 0x3, 0x23, 0x3, 0x24, 0x3, 0x25, 0x3, 0x26, 0x3, + 0x27, 0x3, 0x28, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2f, + 0x3, 0x30, 0x3, 0x31, 0x3, 0x32, 0x3, 0x33, 0x3, 0x34, 0x3, 0x35, 0x3, 0x36, 0x3, 0x37, 0x3, + 0x38, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x40, + 0x3, 0x41, 0x3, 0x42, 0x3, 0x43, 0x3, 0x44, 0x3, 0x45, 0x3, 0x46, 0x3, 0x47, 0x3, 0x48, 0x3, + 0x49, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x51, + 0x3, 0x52, 0x3, 0x53, 0x3, 0x54, 0x3, 0x55, 0x3, 0x56, 0x3, 0x57, 0x3, 0x58, 0x3, 0x59, 0x3, + 0x5a, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x61, 0x3, 0x62, + 0x3, 0x63, 0x3, 0x64, 0x3, 0x65, 0x3, 0x66, 0x3, 0x67, 0x3, 0x68, 0x3, 0x69, 0x3, 0x6a, 0x3, + 0x6b, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x70, 0x3, 0x71, 0x3, 0x72, 0x3, 0x73, + 0x3, 0x74, 0x3, 0x75, 0x3, 0x76, 0x3, 0x77, 0x3, 0x78, 0x3, 0x79, 0x3, 0x7a, 0x3, 0x7b, 0x3, + 0x7c, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x80, 0x3, 0x81, 0x3, 0x82, 0x3, 0x83, 0x3, 0x84, + 0x3, 0x85, 0x3, 0x86, 0x3, 0x87, 0x3, 0x88, 0x3, 0x89, 0x3, 0x8a, 0x3, 0x8b, 0x3, 0x8c, 0x3, + 0x8d, 0x3, 0x8e, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x91, 0x3, 0x92, 0x3, 0x93, 0x3, 0x94, 0x3, 0x95, + 0x3, 0x96, 0x3, 0x97, 0x3, 0x98, 0x3, +]; + +lazy_static! { + pub static ref WIRE_TO_SURFACE_1: WireToSurface1Pdu = WireToSurface1Pdu { + surface_id: 0, + codec_id: Codec1Type::ClearCodec, + pixel_format: PixelFormat::XRgb, + destination_rectangle: Rectangle { + left: 933, + top: 734, + right: 939, + bottom: 743, + }, + bitmap_data_length: 201, + }; + pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = + (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(); + pub static ref WIRE_TO_SURFACE_2: WireToSurface2Pdu = WireToSurface2Pdu { + surface_id: 0, + codec_id: Codec2Type::RemoteFxProgressive, + codec_context_id: 4, + pixel_format: PixelFormat::XRgb, + bitmap_data_length: 616, + }; + pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = + (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(); + pub static ref DELETE_ENCODING_CONTEXT: DeleteEncodingContextPdu = DeleteEncodingContextPdu { + surface_id: 0, + codec_context_id: 1, + }; + pub static ref SOLID_FILL: SolidFillPdu = SolidFillPdu { + surface_id: 0, + fill_pixel: Color { + b: 0, + g: 0, + r: 0, + xa: 0, + }, + rectangles: vec![Rectangle { + left: 0, + top: 0, + right: 64, + bottom: 64, + }], + }; + pub static ref SURFACE_TO_SURFACE: SurfaceToSurfacePdu = SurfaceToSurfacePdu { + source_surface_id: 0, + destination_surface_id: 0, + source_rectangle: Rectangle { + left: 200, + top: 60, + right: 676, + bottom: 148, + }, + destination_points: vec![Point { x: 128, y: 60 }], + }; + pub static ref SURFACE_TO_CACHE: SurfaceToCachePdu = SurfaceToCachePdu { + surface_id: 0, + cache_key: 0x113D_86DA_A6A3_7FB7, + cache_slot: 14, + source_rectangle: Rectangle { + left: 640, + top: 0, + right: 704, + bottom: 64, + }, + }; + pub static ref CACHE_TO_SURFACE: CacheToSurfacePdu = CacheToSurfacePdu { + cache_slot: 2, + surface_id: 0, + destination_points: vec![Point { x: 768, y: 320 }], + }; + pub static ref CREATE_SURFACE: CreateSurfacePdu = CreateSurfacePdu { + surface_id: 0, + width: 1024, + height: 768, + pixel_format: PixelFormat::ARgb, + }; + pub static ref DELETE_SURFACE: DeleteSurfacePdu = DeleteSurfacePdu { surface_id: 0 }; + pub static ref RESET_GRAPHICS: ResetGraphicsPdu = ResetGraphicsPdu { + width: 1024, + height: 768, + monitors: vec![Monitor { + left: 0, + top: 0, + right: 1023, + bottom: 767, + flags: MonitorFlags::PRIMARY, + }], + }; + pub static ref MAP_SURFACE_TO_OUTPUT: MapSurfaceToOutputPdu = MapSurfaceToOutputPdu { + surface_id: 0, + output_origin_x: 1, + output_origin_y: 2, + }; + pub static ref EVICT_CACHE_ENTRY: EvictCacheEntryPdu = EvictCacheEntryPdu { cache_slot: 0 }; + pub static ref START_FRAME: StartFramePdu = StartFramePdu { + timestamp: Timestamp { + milliseconds: 247, + seconds: 58, + minutes: 27, + hours: 22, + }, + frame_id: 5 + }; + pub static ref END_FRAME: EndFramePdu = EndFramePdu { frame_id: 1 }; + pub static ref CAPABILITIES_CONFIRM: CapabilitiesConfirmPdu = + CapabilitiesConfirmPdu(CapabilitySet::V10_5 { + flags: CapabilitiesV104Flags::AVC_DISABLED, + }); + pub static ref CAPABILITIES_ADVERTISE: CapabilitiesAdvertisePdu = + CapabilitiesAdvertisePdu(vec![ + CapabilitySet::V8 { + flags: CapabilitiesV8Flags::THIN_CLIENT + }, + CapabilitySet::V8_1 { + flags: CapabilitiesV81Flags::THIN_CLIENT + }, + CapabilitySet::V10 { + flags: CapabilitiesV10Flags::AVC_DISABLED + }, + CapabilitySet::V10_1, + CapabilitySet::V10_2 { + flags: CapabilitiesV10Flags::AVC_DISABLED + }, + CapabilitySet::V10_3 { + flags: CapabilitiesV103Flags::AVC_DISABLED + }, + CapabilitySet::V10_4 { + flags: CapabilitiesV104Flags::AVC_DISABLED + }, + CapabilitySet::V10_5 { + flags: CapabilitiesV104Flags::AVC_DISABLED + }, + CapabilitySet::V10_6 { + flags: CapabilitiesV104Flags::AVC_DISABLED + } + ]); + pub static ref FRAME_ACKNOWLEDGE: FrameAcknowledgePdu = FrameAcknowledgePdu { + queue_depth: QueueDepth::Unavailable, + frame_id: 1, + total_frames_decoded: 1 + }; + pub static ref CACHE_IMPORT_REPLY: CacheImportReplyPdu = CacheImportReplyPdu { + cache_slots: vec![ + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, + 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, + 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, + 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, + 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, + 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, + 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, + 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, + 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, + 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, + 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, + 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x100, + 0x101, 0x102, 0x103, 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10a, 0x10b, 0x10c, + 0x10d, 0x10e, 0x10f, 0x110, 0x111, 0x112, 0x113, 0x114, 0x115, 0x116, 0x117, 0x118, + 0x119, 0x11a, 0x11b, 0x11c, 0x11d, 0x11e, 0x11f, 0x120, 0x121, 0x122, 0x123, 0x124, + 0x125, 0x126, 0x127, 0x128, 0x129, 0x12a, 0x12b, 0x12c, 0x12d, 0x12e, 0x12f, 0x130, + 0x131, 0x132, 0x133, 0x134, 0x135, 0x136, 0x137, 0x138, 0x139, 0x13a, 0x13b, 0x13c, + 0x13d, 0x13e, 0x13f, 0x140, 0x141, 0x142, 0x143, 0x144, 0x145, 0x146, 0x147, 0x148, + 0x149, 0x14a, 0x14b, 0x14c, 0x14d, 0x14e, 0x14f, 0x150, 0x151, 0x152, 0x153, 0x154, + 0x155, 0x156, 0x157, 0x158, 0x159, 0x15a, 0x15b, 0x15c, 0x15d, 0x15e, 0x15f, 0x160, + 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167, 0x168, 0x169, 0x16a, 0x16b, 0x16c, + 0x16d, 0x16e, 0x16f, 0x170, 0x171, 0x172, 0x173, 0x174, 0x175, 0x176, 0x177, 0x178, + 0x179, 0x17a, 0x17b, 0x17c, 0x17d, 0x17e, 0x17f, 0x180, 0x181, 0x182, 0x183, 0x184, + 0x185, 0x186, 0x187, 0x188, 0x189, 0x18a, 0x18b, 0x18c, 0x18d, 0x18e, 0x18f, 0x190, + 0x191, 0x192, 0x193, 0x194, 0x195, 0x196, 0x197, 0x198, 0x199, 0x19a, 0x19b, 0x19c, + 0x19d, 0x19e, 0x19f, 0x1a0, 0x1a1, 0x1a2, 0x1a3, 0x1a4, 0x1a5, 0x1a6, 0x1a7, 0x1a8, + 0x1a9, 0x1aa, 0x1ab, 0x1ac, 0x1ad, 0x1ae, 0x1af, 0x1b0, 0x1b1, 0x1b2, 0x1b3, 0x1b4, + 0x1b5, 0x1b6, 0x1b7, 0x1b8, 0x1b9, 0x1ba, 0x1bb, 0x1bc, 0x1bd, 0x1be, 0x1bf, 0x1c0, + 0x1c1, 0x1c2, 0x1c3, 0x1c4, 0x1c5, 0x1c6, 0x1c7, 0x1c8, 0x1c9, 0x1ca, 0x1cb, 0x1cc, + 0x1cd, 0x1ce, 0x1cf, 0x1d0, 0x1d1, 0x1d2, 0x1d3, 0x1d4, 0x1d5, 0x1d6, 0x1d7, 0x1d8, + 0x1d9, 0x1da, 0x1db, 0x1dc, 0x1dd, 0x1de, 0x1df, 0x1e0, 0x1e1, 0x1e2, 0x1e3, 0x1e4, + 0x1e5, 0x1e6, 0x1e7, 0x1e8, 0x1e9, 0x1ea, 0x1eb, 0x1ec, 0x1ed, 0x1ee, 0x1ef, 0x1f0, + 0x1f1, 0x1f2, 0x1f3, 0x1f4, 0x1f5, 0x1f6, 0x1f7, 0x1f8, 0x1f9, 0x1fa, 0x1fb, 0x1fc, + 0x1fd, 0x1fe, 0x1ff, 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, + 0x209, 0x20a, 0x20b, 0x20c, 0x20d, 0x20e, 0x20f, 0x210, 0x211, 0x212, 0x213, 0x214, + 0x215, 0x216, 0x217, 0x218, 0x219, 0x21a, 0x21b, 0x21c, 0x21d, 0x21e, 0x21f, 0x220, + 0x221, 0x222, 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22a, 0x22b, 0x22c, + 0x22d, 0x22e, 0x22f, 0x230, 0x231, 0x232, 0x233, 0x234, 0x235, 0x236, 0x237, 0x238, + 0x239, 0x23a, 0x23b, 0x23c, 0x23d, 0x23e, 0x23f, 0x240, 0x241, 0x242, 0x243, 0x244, + 0x245, 0x246, 0x247, 0x248, 0x249, 0x24a, 0x24b, 0x24c, 0x24d, 0x24e, 0x24f, 0x250, + 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257, 0x258, 0x259, 0x25a, 0x25b, 0x25c, + 0x25d, 0x25e, 0x25f, 0x260, 0x261, 0x262, 0x263, 0x264, 0x265, 0x266, 0x267, 0x268, + 0x269, 0x26a, 0x26b, 0x26c, 0x26d, 0x26e, 0x26f, 0x270, 0x271, 0x272, 0x273, 0x274, + 0x275, 0x276, 0x277, 0x278, 0x279, 0x27a, 0x27b, 0x27c, 0x27d, 0x27e, 0x27f, 0x280, + 0x281, 0x282, 0x283, 0x284, 0x285, 0x286, 0x287, 0x288, 0x289, 0x28a, 0x28b, 0x28c, + 0x28d, 0x28e, 0x28f, 0x290, 0x291, 0x292, 0x293, 0x294, 0x295, 0x296, 0x297, 0x298, + 0x299, 0x29a, 0x29b, 0x29c, 0x29d, 0x29e, 0x29f, 0x2a0, 0x2a1, 0x2a2, 0x2a3, 0x2a4, + 0x2a5, 0x2a6, 0x2a7, 0x2a8, 0x2a9, 0x2aa, 0x2ab, 0x2ac, 0x2ad, 0x2ae, 0x2af, 0x2b0, + 0x2b1, 0x2b2, 0x2b3, 0x2b4, 0x2b5, 0x2b6, 0x2b7, 0x2b8, 0x2b9, 0x2ba, 0x2bb, 0x2bc, + 0x2bd, 0x2be, 0x2bf, 0x2c0, 0x2c1, 0x2c2, 0x2c3, 0x2c4, 0x2c5, 0x2c6, 0x2c7, 0x2c8, + 0x2c9, 0x2ca, 0x2cb, 0x2cc, 0x2cd, 0x2ce, 0x2cf, 0x2d0, 0x2d1, 0x2d2, 0x2d3, 0x2d4, + 0x2d5, 0x2d6, 0x2d7, 0x2d8, 0x2d9, 0x2da, 0x2db, 0x2dc, 0x2dd, 0x2de, 0x2df, 0x2e0, + 0x2e1, 0x2e2, 0x2e3, 0x2e4, 0x2e5, 0x2e6, 0x2e7, 0x2e8, 0x2e9, 0x2ea, 0x2eb, 0x2ec, + 0x2ed, 0x2ee, 0x2ef, 0x2f0, 0x2f1, 0x2f2, 0x2f3, 0x2f4, 0x2f5, 0x2f6, 0x2f7, 0x2f8, + 0x2f9, 0x2fa, 0x2fb, 0x2fc, 0x2fd, 0x2fe, 0x2ff, 0x300, 0x301, 0x302, 0x303, 0x304, + 0x305, 0x306, 0x307, 0x308, 0x309, 0x30a, 0x30b, 0x30c, 0x30d, 0x30e, 0x30f, 0x310, + 0x311, 0x312, 0x313, 0x314, 0x315, 0x316, 0x317, 0x318, 0x319, 0x31a, 0x31b, 0x31c, + 0x31d, 0x31e, 0x31f, 0x320, 0x321, 0x322, 0x323, 0x324, 0x325, 0x326, 0x327, 0x328, + 0x329, 0x32a, 0x32b, 0x32c, 0x32d, 0x32e, 0x32f, 0x330, 0x331, 0x332, 0x333, 0x334, + 0x335, 0x336, 0x337, 0x338, 0x339, 0x33a, 0x33b, 0x33c, 0x33d, 0x33e, 0x33f, 0x340, + 0x341, 0x342, 0x343, 0x344, 0x345, 0x346, 0x347, 0x348, 0x349, 0x34a, 0x34b, 0x34c, + 0x34d, 0x34e, 0x34f, 0x350, 0x351, 0x352, 0x353, 0x354, 0x355, 0x356, 0x357, 0x358, + 0x359, 0x35a, 0x35b, 0x35c, 0x35d, 0x35e, 0x35f, 0x360, 0x361, 0x362, 0x363, 0x364, + 0x365, 0x366, 0x367, 0x368, 0x369, 0x36a, 0x36b, 0x36c, 0x36d, 0x36e, 0x36f, 0x370, + 0x371, 0x372, 0x373, 0x374, 0x375, 0x376, 0x377, 0x378, 0x379, 0x37a, 0x37b, 0x37c, + 0x37d, 0x37e, 0x37f, 0x380, 0x381, 0x382, 0x383, 0x384, 0x385, 0x386, 0x387, 0x388, + 0x389, 0x38a, 0x38b, 0x38c, 0x38d, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, 0x394, + 0x395, 0x396, 0x397, 0x398 + ] + }; +} + +#[test] +fn from_buffer_correctly_parses_wire_to_surface_1_pdu() { + let mut buffer = WIRE_TO_SURFACE_1_BUFFER.as_ref(); + + assert_eq!( + *WIRE_TO_SURFACE_1, + WireToSurface1Pdu::from_buffer(&mut buffer).unwrap() + ); + assert_eq!(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice(), buffer); +} + +#[test] +fn to_buffer_correctly_serializes_wire_to_surface_1_pdu() { + let mut buffer = Vec::with_capacity(1024); + WIRE_TO_SURFACE_1.to_buffer(&mut buffer).unwrap(); + buffer.extend_from_slice(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice()); + + assert_eq!(buffer, WIRE_TO_SURFACE_1_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_wire_to_surface_1_pdu() { + assert_eq!( + WIRE_TO_SURFACE_1_BUFFER.len(), + WIRE_TO_SURFACE_1.buffer_length() + WIRE_TO_SURFACE_1_BITMAP_DATA.len() + ); +} + +#[test] +fn from_buffer_correctly_parses_wire_to_surface_2_pdu() { + let mut buffer = WIRE_TO_SURFACE_2_BUFFER.as_ref(); + + assert_eq!( + *WIRE_TO_SURFACE_2, + WireToSurface2Pdu::from_buffer(&mut buffer).unwrap() + ); + assert_eq!(WIRE_TO_SURFACE_2_BITMAP_DATA.as_slice(), buffer); +} + +#[test] +fn to_buffer_correctly_serializes_wire_to_surface_2_pdu() { + let mut buffer = Vec::with_capacity(WIRE_TO_SURFACE_2_BUFFER.len()); + WIRE_TO_SURFACE_2.to_buffer(&mut buffer).unwrap(); + buffer.extend_from_slice(WIRE_TO_SURFACE_2_BITMAP_DATA.as_slice()); + + assert_eq!(buffer, WIRE_TO_SURFACE_2_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_wire_to_surface_2_pdu() { + assert_eq!( + WIRE_TO_SURFACE_2_BUFFER.len(), + WIRE_TO_SURFACE_2.buffer_length() + WIRE_TO_SURFACE_2_BITMAP_DATA.len() + ); +} + +#[test] +fn from_buffer_correctly_parses_delete_encoding_context_pdu() { + let mut buffer = DELETE_ENCODING_CONTEXT_BUFFER.as_ref(); + + assert_eq!( + *DELETE_ENCODING_CONTEXT, + DeleteEncodingContextPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_delete_encoding_context_pdu() { + let mut buffer = Vec::with_capacity(1024); + DELETE_ENCODING_CONTEXT.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, DELETE_ENCODING_CONTEXT_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_delete_encoding_context_pdu() { + assert_eq!( + DELETE_ENCODING_CONTEXT_BUFFER.len(), + DELETE_ENCODING_CONTEXT.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_solid_fill_pdu() { + let mut buffer = SOLID_FILL_BUFFER.as_ref(); + + assert_eq!(*SOLID_FILL, SolidFillPdu::from_buffer(&mut buffer).unwrap()); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_solid_fill_pdu() { + let mut buffer = Vec::with_capacity(1024); + SOLID_FILL.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, SOLID_FILL_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_solid_fill_pdu() { + assert_eq!(SOLID_FILL_BUFFER.len(), SOLID_FILL.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_surface_to_surface_pdu() { + let mut buffer = SURFACE_TO_SURFACE_BUFFER.as_ref(); + + assert_eq!( + *SURFACE_TO_SURFACE, + SurfaceToSurfacePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_surface_to_surface_pdu() { + let mut buffer = Vec::with_capacity(1024); + SURFACE_TO_SURFACE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, SURFACE_TO_SURFACE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_surface_to_surface_pdu() { + assert_eq!( + SURFACE_TO_SURFACE_BUFFER.len(), + SURFACE_TO_SURFACE.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_surface_to_cache_pdu() { + let mut buffer = SURFACE_TO_CACHE_BUFFER.as_ref(); + + assert_eq!( + *SURFACE_TO_CACHE, + SurfaceToCachePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_surface_to_cache_pdu() { + let mut buffer = Vec::with_capacity(1024); + SURFACE_TO_CACHE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, SURFACE_TO_CACHE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_surface_to_cache_pdu() { + assert_eq!( + SURFACE_TO_CACHE_BUFFER.len(), + SURFACE_TO_CACHE.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_cache_to_surface_pdu() { + let mut buffer = CACHE_TO_SURFACE_BUFFER.as_ref(); + + assert_eq!( + *CACHE_TO_SURFACE, + CacheToSurfacePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_cache_to_surface_pdu() { + let mut buffer = Vec::with_capacity(1024); + CACHE_TO_SURFACE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, CACHE_TO_SURFACE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_cache_to_surface_pdu() { + assert_eq!( + CACHE_TO_SURFACE_BUFFER.len(), + CACHE_TO_SURFACE.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_create_surface_pdu() { + let mut buffer = CREATE_SURFACE_BUFFER.as_ref(); + + assert_eq!( + *CREATE_SURFACE, + CreateSurfacePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_create_surface_pdu() { + let mut buffer = Vec::with_capacity(1024); + CREATE_SURFACE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, CREATE_SURFACE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_create_surface_pdu() { + assert_eq!(CREATE_SURFACE_BUFFER.len(), CREATE_SURFACE.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_delete_surface_pdu() { + let mut buffer = DELETE_SURFACE_BUFFER.as_ref(); + + assert_eq!( + *DELETE_SURFACE, + DeleteSurfacePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_delete_surface_pdu() { + let mut buffer = Vec::with_capacity(1024); + DELETE_SURFACE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, DELETE_SURFACE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_delete_surface_pdu() { + assert_eq!(DELETE_SURFACE_BUFFER.len(), DELETE_SURFACE.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_reset_graphics() { + let mut buffer = RESET_GRAPHICS_BUFFER.as_ref(); + + assert_eq!( + *RESET_GRAPHICS, + ResetGraphicsPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_reset_graphics() { + let mut buffer = Vec::with_capacity(1024); + RESET_GRAPHICS.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, RESET_GRAPHICS_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_reset_graphics() { + assert_eq!(RESET_GRAPHICS_BUFFER.len(), RESET_GRAPHICS.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_map_surface_to_output_pdu() { + let mut buffer = MAP_SURFACE_TO_OUTPUT_BUFFER.as_ref(); + + assert_eq!( + *MAP_SURFACE_TO_OUTPUT, + MapSurfaceToOutputPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_map_surface_to_output_pdu() { + let mut buffer = Vec::with_capacity(1024); + MAP_SURFACE_TO_OUTPUT.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, MAP_SURFACE_TO_OUTPUT_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_map_surface_to_output_pdu() { + assert_eq!( + MAP_SURFACE_TO_OUTPUT_BUFFER.len(), + MAP_SURFACE_TO_OUTPUT.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_evict_cache_entry_pdu() { + let mut buffer = EVICT_CACHE_ENTRY_BUFFER.as_ref(); + + assert_eq!( + *EVICT_CACHE_ENTRY, + EvictCacheEntryPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_evict_cache_entry_pdu() { + let mut buffer = Vec::with_capacity(1024); + EVICT_CACHE_ENTRY.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, EVICT_CACHE_ENTRY_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_evict_cache_entry_pdu() { + assert_eq!( + EVICT_CACHE_ENTRY_BUFFER.len(), + EVICT_CACHE_ENTRY.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_start_frame_pdu() { + let mut buffer = START_FRAME_BUFFER.as_ref(); + + assert_eq!( + *START_FRAME, + StartFramePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_start_frame_pdu() { + let mut buffer = Vec::with_capacity(1024); + START_FRAME.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, START_FRAME_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_start_frame_pdu() { + assert_eq!(START_FRAME_BUFFER.len(), START_FRAME.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_end_frame_pdu() { + let mut buffer = END_FRAME_BUFFER.as_ref(); + + assert_eq!(*END_FRAME, EndFramePdu::from_buffer(&mut buffer).unwrap()); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_end_frame_pdu() { + let mut buffer = Vec::with_capacity(1024); + END_FRAME.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, END_FRAME_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_end_frame_pdu() { + assert_eq!(END_FRAME_BUFFER.len(), END_FRAME.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_capabilities_confirm_pdu() { + let mut buffer = CAPABILITIES_CONFIRM_BUFFER.as_ref(); + + assert_eq!( + *CAPABILITIES_CONFIRM, + CapabilitiesConfirmPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_capabilities_confirm_pdu() { + let mut buffer = Vec::with_capacity(1024); + CAPABILITIES_CONFIRM.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, CAPABILITIES_CONFIRM_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_capabilities_confirm_pdu() { + assert_eq!( + CAPABILITIES_CONFIRM_BUFFER.len(), + CAPABILITIES_CONFIRM.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_capabilities_advertise_pdu() { + let mut buffer = CAPABILITIES_ADVERTISE_BUFFER.as_ref(); + + assert_eq!( + *CAPABILITIES_ADVERTISE, + CapabilitiesAdvertisePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_capabilities_advertise_pdu() { + let mut buffer = Vec::with_capacity(1024); + CAPABILITIES_ADVERTISE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, CAPABILITIES_ADVERTISE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_capabilities_advertise_pdu() { + assert_eq!( + CAPABILITIES_ADVERTISE_BUFFER.len(), + CAPABILITIES_ADVERTISE.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_frame_acknowledge_pdu() { + let mut buffer = FRAME_ACKNOWLEDGE_BUFFER.as_ref(); + + assert_eq!( + *FRAME_ACKNOWLEDGE, + FrameAcknowledgePdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_frame_acknowledge_pdu() { + let mut buffer = Vec::with_capacity(1024); + FRAME_ACKNOWLEDGE.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, FRAME_ACKNOWLEDGE_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_frame_acknowledge_pdu() { + assert_eq!( + FRAME_ACKNOWLEDGE_BUFFER.len(), + FRAME_ACKNOWLEDGE.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_cache_import_reply() { + let mut buffer = CACHE_IMPORT_REPLY_BUFFER.as_ref(); + + assert_eq!( + *CACHE_IMPORT_REPLY, + CacheImportReplyPdu::from_buffer(&mut buffer).unwrap() + ); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_cache_import_reply() { + let mut buffer = Vec::with_capacity(1024); + CACHE_IMPORT_REPLY.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, CACHE_IMPORT_REPLY_BUFFER.as_ref()); +} + +#[test] +fn buffer_length_is_correct_for_cache_import_reply() { + assert_eq!( + CACHE_IMPORT_REPLY_BUFFER.len(), + CACHE_IMPORT_REPLY.buffer_length() + ); +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/test.rs new file mode 100644 index 00000000..b734f921 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/test.rs @@ -0,0 +1,91 @@ +use lazy_static::lazy_static; + +use super::{ + graphics_messages::test::{ + FRAME_ACKNOWLEDGE, FRAME_ACKNOWLEDGE_BUFFER, WIRE_TO_SURFACE_1, + WIRE_TO_SURFACE_1_BITMAP_DATA, WIRE_TO_SURFACE_1_BUFFER, + }, + *, +}; + +const WIRE_TO_SURFACE_1_HEADER_BUFFER: [u8; 8] = [0x01, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00]; +const FRAME_ACKNOWLEDGE_HEADER_BUFFER: [u8; 8] = [0x0d, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00]; + +lazy_static! { + static ref HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER: Vec = { + [ + &WIRE_TO_SURFACE_1_HEADER_BUFFER[..], + &WIRE_TO_SURFACE_1_BUFFER[..], + ] + .concat() + }; + static ref HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER: Vec = { + [ + &FRAME_ACKNOWLEDGE_HEADER_BUFFER[..], + &FRAME_ACKNOWLEDGE_BUFFER[..], + ] + .concat() + }; + static ref HEADER_WITH_WIRE_TO_SURFACE_1: ServerPdu = + ServerPdu::WireToSurface1(WIRE_TO_SURFACE_1.clone()); + static ref HEADER_WITH_FRAME_ACKNOWLEDGE: ClientPdu = + ClientPdu::FrameAcknowledge(FRAME_ACKNOWLEDGE.clone()); +} + +#[test] +fn from_buffer_correctly_parses_server_pdu() { + let mut buffer = HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.as_slice(); + + assert_eq!( + *HEADER_WITH_WIRE_TO_SURFACE_1, + ServerPdu::from_buffer(&mut buffer).unwrap() + ); + assert_eq!(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice(), buffer); +} + +#[test] +fn to_buffer_correctly_serializes_server_pdu() { + let mut buffer = Vec::with_capacity(HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.len()); + HEADER_WITH_WIRE_TO_SURFACE_1 + .to_buffer(&mut buffer) + .unwrap(); + buffer.extend_from_slice(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice()); + + assert_eq!(buffer, HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_server_pdu() { + assert_eq!( + HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.len(), + HEADER_WITH_WIRE_TO_SURFACE_1.buffer_length() + WIRE_TO_SURFACE_1_BITMAP_DATA.len() + ); +} + +#[test] +fn from_buffer_correctly_parses_client_pdu() { + let buffer = HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER.as_slice(); + + assert_eq!( + *HEADER_WITH_FRAME_ACKNOWLEDGE, + ClientPdu::from_buffer(buffer).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_client_pdu() { + let mut buffer = Vec::with_capacity(1024); + HEADER_WITH_FRAME_ACKNOWLEDGE + .to_buffer(&mut buffer) + .unwrap(); + + assert_eq!(buffer, HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_client_pdu() { + assert_eq!( + HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER.len(), + HEADER_WITH_FRAME_ACKNOWLEDGE.buffer_length() + ); +} From de2fffdc7adb7471ca8568e77909fa9bef3e8ec3 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 23 Dec 2019 12:55:19 +0200 Subject: [PATCH 0008/1273] ironrdp: implement ZGFX --- ironrdp/Cargo.toml | 2 + ironrdp/src/rdp/vc/dvc/gfx.rs | 2 + ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 582 ++++++++++++++++++ .../rdp/vc/dvc/gfx/zgfx/circular_buffer.rs | 223 +++++++ .../rdp/vc/dvc/gfx/zgfx/control_messages.rs | 163 +++++ ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs | 242 ++++++++ 6 files changed, 1214 insertions(+) create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 5e9ae3d3..ded102a1 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -26,3 +26,5 @@ md-5 = "0.8.0" num-bigint = "0.2.0" der-parser = "3.0.0" bit_field = "0.10" +bitvec = { git = "https://github.com/myrrlyn/bitvec.git", rev = "3e79e6d53b2f7d01f5b139c67310e7918332905c" } +hex-literal = "0.2" \ No newline at end of file diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index 746197fc..454ac285 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -1,3 +1,5 @@ +pub mod zgfx; + mod graphics_messages; #[cfg(test)] mod test; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs new file mode 100644 index 00000000..9bfc1d67 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -0,0 +1,582 @@ +mod circular_buffer; +mod control_messages; +#[cfg(test)] +mod tests; + +use std::{ + io::{self, Write}, + ops, +}; + +use bitvec::prelude::{BitSlice, BitVec, Msb0 as BigEndian}; +use byteorder::{ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use lazy_static::lazy_static; + +use crate::impl_from_error; +use circular_buffer::FixedCircularBuffer; +use control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; + +const HISTORY_SIZE: usize = 2_500_000; + +pub struct Decompressor { + history: FixedCircularBuffer, +} + +impl Decompressor { + pub fn new() -> Self { + Self { + history: FixedCircularBuffer::new(HISTORY_SIZE), + } + } + + pub fn decompress( + &mut self, + input: &[u8], + mut output: &mut Vec, + ) -> Result { + let segmented_data = SegmentedDataPdu::from_buffer(input)?; + + match segmented_data { + SegmentedDataPdu::Single(segment) => self.handle_segment(&segment, &mut output), + SegmentedDataPdu::Multipart { + uncompressed_size, + segments, + } => { + let mut bytes_written = 0; + for segment in segments { + let written = self.handle_segment(&segment, &mut output)?; + bytes_written += written; + } + + if bytes_written != uncompressed_size { + Err(ZgfxError::InvalidDecompressedSize { + decompressed_size: bytes_written, + uncompressed_size, + }) + } else { + Ok(bytes_written) + } + } + } + } + + fn handle_segment( + &mut self, + segment: &BulkEncodedData<'_>, + mut output: &mut Vec, + ) -> Result { + if !segment.data.is_empty() { + if segment + .compression_flags + .contains(CompressionFlags::COMPRESSED) + { + self.decompress_segment(segment.data, &mut output) + } else { + self.history.write_all(segment.data)?; + output.extend_from_slice(segment.data); + + Ok(segment.data.len()) + } + } else { + Ok(0) + } + } + + fn decompress_segment( + &mut self, + encoded_data: &[u8], + mut output: &mut Vec, + ) -> Result { + let mut bits = BitSlice::from_slice(encoded_data); + + // The value of the last byte indicates the number of unused bits in the final byte + bits = &bits[..8 * (encoded_data.len() - 1) - *encoded_data.last().unwrap() as usize]; + let mut bits = Bits::new(&bits); + let mut bytes_written = 0; + + while !bits.is_empty() { + let token = TOKEN_TABLE + .iter() + .find(|token| token.prefix == bits[..token.prefix.len()]) + .ok_or_else(|| ZgfxError::TokenBitsNotFound)?; + let _prefix = bits.split_to(token.prefix.len()); + + match token.ty { + TokenType::NullLiteral => { + // The prefix value is encoded with a "0" prefix, + // then read 8 bits containing the byte to output. + let value = bits.split_to(8); + let value = *value + .to_vec() + .into_vec() + .first() + .expect("8 bits must equal to vec of 1 byte"); + + self.history.write_u8(value)?; + output.push(value); + bytes_written += 1; + } + TokenType::Literal { literal_value } => { + self.history + .write_u8(literal_value) + .expect("circular buffer does not fail"); + output.push(literal_value); + bytes_written += 1; + } + TokenType::Match { + distance_value_size, + distance_base, + } => { + let written = handle_match( + &mut bits, + distance_value_size, + distance_base, + &mut self.history, + &mut output, + )?; + bytes_written += written; + } + } + } + + Ok(bytes_written) + } +} + +impl Default for Decompressor { + fn default() -> Self { + Self::new() + } +} + +struct Bits<'a> { + bits_slice: &'a BitSlice, + remaining_bits_of_last_byte: usize, +} + +impl<'a> Bits<'a> { + pub fn new(bits_slice: &'a BitSlice) -> Self { + Self { + bits_slice, + remaining_bits_of_last_byte: 0, + } + } + pub fn split_to(&mut self, at: usize) -> &'a BitSlice { + let (value, new_bits) = self.bits_slice.split_at(at); + self.bits_slice = new_bits; + self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; + + value + } + pub fn remaining_bits_of_last_byte(&self) -> usize { + self.remaining_bits_of_last_byte + } +} + +impl<'a> ops::Deref for Bits<'a> { + type Target = BitSlice; + + fn deref(&self) -> &Self::Target { + self.bits_slice + } +} + +fn handle_match( + bits: &mut Bits<'_>, + distance_value_size: usize, + distance_base: u32, + history: &mut FixedCircularBuffer, + mut output: &mut Vec, +) -> io::Result { + // Each token has been assigned a different base distance + // and number of additional value bits to be added to compute the full distance. + + let distance_value = bits.split_to(distance_value_size); + let distance = + (distance_base + bytes_to_u32_be(complete_to_u32(distance_value).into_vec())) as usize; + + if distance == 0 { + read_unencoded_bytes(bits, history, &mut output) + } else { + read_encoded_bytes(bits, distance, history, &mut output) + } +} + +fn read_unencoded_bytes( + bits: &mut Bits<'_>, + history: &mut FixedCircularBuffer, + output: &mut Vec, +) -> io::Result { + // A match distance of zero is a special case, + // which indicates that an unencoded run of bytes follows. + // The count of bytes is encoded as a 15-bit value + let length_value = bits.split_to(15); + let length = bytes_to_u32_be(complete_to_u32(length_value).into_vec()) as usize; + + if bits.remaining_bits_of_last_byte() > 0 { + let pad_to_byte_boundary = 8 - bits.remaining_bits_of_last_byte(); + bits.split_to(pad_to_byte_boundary); + } + + let unencoded_bits = bits.split_to(length * 8); + + let unencoded_bytes = unencoded_bits.as_slice(); + history.write_all(unencoded_bytes)?; + output.extend_from_slice(unencoded_bytes); + + Ok(unencoded_bytes.len()) +} + +fn read_encoded_bytes( + bits: &mut Bits<'_>, + distance: usize, + history: &mut FixedCircularBuffer, + mut output: &mut Vec, +) -> io::Result { + // A match length prefix follows the token and indicates + // how many additional bits will be needed to get the full length + // (the number of bytes to be copied). + + let length_token_size = bits.iter().take_while(|&&v| v).map(|_| 1).sum::(); + bits.split_to(length_token_size + 1); // length token + zero bit + + let length = if length_token_size == 0 { + // special case + + 3 + } else { + let length_value = bits.split_to(length_token_size + 1); + let length = bytes_to_u32_be(complete_to_u32(length_value).into_vec()) as usize; + + let base = 2u32.pow(length_token_size as u32 + 1) as usize; + + base + length + }; + + let output_length = output.len(); + history.read_with_offset(distance, length, &mut output)?; + history + .write_all(&output[output_length..]) + .expect("circular buffer does not fail"); + + Ok(length) +} + +fn complete_to_u32(bits: &BitSlice) -> BitVec { + let mut result = BitVec::::from_vec(vec![0; 4]); + let result_slice = &mut result[4 * 8 - bits.len()..]; + result_slice.clone_from_slice(bits); + + result +} + +fn bytes_to_u32_be(mut bytes: Vec) -> u32 { + bytes.resize(4, 0); + + bytes + .as_slice() + .read_u32::() + .expect("previously resized to 4 bytes must not fail") +} + +struct Token { + pub prefix: BitVec, + pub ty: TokenType, +} + +enum TokenType { + NullLiteral, + Literal { + literal_value: u8, + }, + Match { + distance_value_size: usize, + distance_base: u32, + }, +} + +lazy_static! { + static ref TOKEN_TABLE: [Token; 40] = [ + Token { + prefix: slice_to_bitvec(&[0]), + ty: TokenType::NullLiteral, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x00 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x01 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 1, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x02 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 1, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x03 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x0ff + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x04 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 1, 1]), + ty: TokenType::Literal { + literal_value: 0x05 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x06 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x07 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x08 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 1, 1]), + ty: TokenType::Literal { + literal_value: 0x09 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x0a + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x0b + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x3a + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 1, 1]), + ty: TokenType::Literal { + literal_value: 0x3b + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x3c + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x3d + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x3e + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 1, 1]), + ty: TokenType::Literal { + literal_value: 0x3f + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x40 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x80 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 0, 0]), + ty: TokenType::Literal { + literal_value: 0x0c + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 0, 1]), + ty: TokenType::Literal { + literal_value: 0x38 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 1, 0]), + ty: TokenType::Literal { + literal_value: 0x39 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 1, 1]), + ty: TokenType::Literal { + literal_value: 0x66 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 0, 0, 1]), + ty: TokenType::Match { + distance_value_size: 5, + distance_base: 0 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 0, 1, 0]), + ty: TokenType::Match { + distance_value_size: 7, + distance_base: 32 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 0, 1, 1]), + ty: TokenType::Match { + distance_value_size: 9, + distance_base: 160 + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 0, 0]), + ty: TokenType::Match { + distance_value_size: 10, + distance_base: 672, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 0, 1]), + ty: TokenType::Match { + distance_value_size: 12, + distance_base: 1_696, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 0, 0]), + ty: TokenType::Match { + distance_value_size: 14, + distance_base: 5_792, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 0, 1]), + ty: TokenType::Match { + distance_value_size: 15, + distance_base: 22_176, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 0, 0]), + ty: TokenType::Match { + distance_value_size: 18, + distance_base: 54_944, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 0, 1]), + ty: TokenType::Match { + distance_value_size: 20, + distance_base: 317_088, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 0, 0]), + ty: TokenType::Match { + distance_value_size: 20, + distance_base: 1_365_664, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 0, 1]), + ty: TokenType::Match { + distance_value_size: 21, + distance_base: 2_414_240, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 0, 0]), + ty: TokenType::Match { + distance_value_size: 22, + distance_base: 4_511_392, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 0, 1]), + ty: TokenType::Match { + distance_value_size: 23, + distance_base: 8_705_696, + }, + }, + Token { + prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 1, 0]), + ty: TokenType::Match { + distance_value_size: 24, + distance_base: 17_094_304, + }, + }, + ]; +} + +#[derive(Debug, Fail)] +pub enum ZgfxError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid compression type")] + InvalidCompressionType, + #[fail(display = "Invalid segmented descriptor")] + InvalidSegmentedDescriptor, + #[fail( + display = "Decompressed size of segments ({}) does not equal to uncompressed size ({})", + decompressed_size, uncompressed_size + )] + InvalidDecompressedSize { + decompressed_size: usize, + uncompressed_size: usize, + }, + #[fail(display = "Token bits not found")] + TokenBitsNotFound, +} + +impl_from_error!(io::Error, ZgfxError, ZgfxError::IOError); + +fn slice_to_bitvec(s: &[u8]) -> BitVec { + use std::iter::FromIterator; + + BitVec::from_iter(s.iter().map(|v| v == &1)) +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs new file mode 100644 index 00000000..1be5dda4 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs @@ -0,0 +1,223 @@ +use std::{cmp::min, io}; + +pub struct FixedCircularBuffer { + buffer: Vec, + position: usize, +} + +impl FixedCircularBuffer { + pub fn new(size: usize) -> Self { + Self { + buffer: vec![0; size], + position: 0, + } + } + + pub fn read_with_offset( + &self, + offset: usize, + length: usize, + mut output: impl io::Write, + ) -> io::Result<()> { + let position = (self.buffer.len() + self.position - offset) % self.buffer.len(); + + // will take the offset if the destination length is greater then the offset, + // i.e. greater then the current buffer position. + let dst_length = min(offset, length); + let mut written = 0; + + if position + dst_length <= self.buffer.len() { + while written < length { + let to_write = min(length - written, dst_length); + output.write_all(&self.buffer[position..position + to_write])?; + written += to_write; + } + } else { + let to_front = &self.buffer[position..]; + let to_back = &self.buffer[..dst_length - to_front.len()]; + + while written < length { + let to_write = min(length - written, dst_length); + + let to_write_to_front = min(to_front.len(), to_write); + output.write_all(&to_front[..to_write_to_front])?; + output.write_all(&to_back[..to_write - to_write_to_front])?; + + written += to_write; + } + } + + Ok(()) + } +} + +impl io::Write for FixedCircularBuffer { + fn write(&mut self, mut buf: &[u8]) -> io::Result { + let bytes_written = buf.len(); + + if buf.len() > self.buffer.len() { + let residue = buf.len() - self.buffer.len(); + buf = &buf[residue..]; + self.position = (self.position + residue) % self.buffer.len(); + } + + if self.position + buf.len() <= self.buffer.len() { + self.buffer[self.position..self.position + buf.len()].clone_from_slice(buf); + + self.position += buf.len(); + } else { + let (to_back, to_front) = buf.split_at(self.buffer.len() - self.position); + self.buffer[self.position..].clone_from_slice(to_back); + self.buffer[0..to_front.len()].clone_from_slice(to_front); + + self.position = buf.len() - to_back.len(); + } + + if self.position == self.buffer.len() { + self.position = 0; + } + + Ok(bytes_written) + } + + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use std::io::Write; + + use super::*; + + #[test] + fn fixed_circular_buffer_correctly_writes_buffer_less_then_internal_buffer_size() { + let size = 8; + let mut circular_buffer = FixedCircularBuffer::new(size); + let to_write = [1, 2, 3]; + + circular_buffer.write_all(to_write.as_ref()).unwrap(); + + assert_eq!(vec![1, 2, 3, 0, 0, 0, 0, 0], circular_buffer.buffer); + assert_eq!(to_write.len(), circular_buffer.position); + } + + #[test] + fn fixed_circular_buffer_correctly_writes_buffer_less_then_internal_buffer_size_to_end() { + let size = 8; + let mut circular_buffer = FixedCircularBuffer::new(size); + circular_buffer.position = 5; + let to_write = [1, 2, 3]; + + circular_buffer.write_all(to_write.as_ref()).unwrap(); + + assert_eq!(vec![0, 0, 0, 0, 0, 1, 2, 3], circular_buffer.buffer); + assert_eq!(0, circular_buffer.position); + } + + #[test] + fn fixed_circular_buffer_correctly_writes_buffer_bigger_then_position_with_remaining_size() { + let size = 8; + let mut circular_buffer = FixedCircularBuffer::new(size); + circular_buffer.position = 6; + let to_write = [1, 2, 3]; + + circular_buffer.write_all(to_write.as_ref()).unwrap(); + + assert_eq!(vec![3, 0, 0, 0, 0, 0, 1, 2], circular_buffer.buffer); + assert_eq!(1, circular_buffer.position); + } + + #[test] + fn fixed_circular_buffer_correctly_writes_buffer_bigger_then_internal_buffer_size() { + let size = 8; + let mut circular_buffer = FixedCircularBuffer::new(size); + let to_write = (1..=10).collect::>(); + + circular_buffer.write_all(to_write.as_ref()).unwrap(); + + assert_eq!(vec![9, 10, 3, 4, 5, 6, 7, 8], circular_buffer.buffer); + assert_eq!(2, circular_buffer.position); + } + + #[test] + fn fixed_circular_buffer_correctly_writes_buffer_bigger_then_internal_buffer_size_with_position_at_end( + ) { + let size = 8; + let mut circular_buffer = FixedCircularBuffer::new(size); + circular_buffer.position = 6; + let to_write = (1..=10).collect::>(); + + circular_buffer.write_all(to_write.as_ref()).unwrap(); + + assert_eq!(vec![3, 4, 5, 6, 7, 8, 9, 10], circular_buffer.buffer); + assert_eq!(0, circular_buffer.position); + } + + #[test] + fn fixed_circular_buffer_correctly_reads_buffer_with_length_not_greater_then_buffer_length() { + let circular_buffer = FixedCircularBuffer { + buffer: vec![11, 12, 13, 14, 15, 16, 7, 8, 9, 10], + position: 6, + }; + let expected = vec![11, 12, 13, 14]; + + let mut output = Vec::with_capacity(expected.len()); + circular_buffer.read_with_offset(6, 4, &mut output).unwrap(); + assert_eq!(expected, output); + } + + #[test] + fn fixed_circular_buffer_correctly_reads_buffer_from_end_to_start() { + let circular_buffer = FixedCircularBuffer { + buffer: vec![11, 12, 13, 14, 15, 16, 7, 8, 9, 10], + position: 6, + }; + let expected = vec![8, 9, 10, 11, 12, 13, 14]; + + let mut output = Vec::with_capacity(expected.len()); + circular_buffer.read_with_offset(9, 7, &mut output).unwrap(); + assert_eq!(expected, output); + } + + #[test] + fn fixed_circular_buffer_correctly_reads_buffer_with_repeating_one_byte() { + let circular_buffer = FixedCircularBuffer { + buffer: vec![11, 12, 13, 14, 15, 16, 7, 8, 9, 10], + position: 6, + }; + let expected = vec![16; 7]; + + let mut output = Vec::with_capacity(expected.len()); + circular_buffer.read_with_offset(1, 7, &mut output).unwrap(); + assert_eq!(expected, output); + } + + #[test] + fn fixed_circular_buffer_correctly_reads_buffer_with_repeating_multiple_bytes() { + let circular_buffer = FixedCircularBuffer { + buffer: vec![11, 12, 13, 14, 15, 16, 7, 8, 9, 10], + position: 6, + }; + let expected = vec![14, 15, 16, 14, 15, 16, 14]; + + let mut output = Vec::with_capacity(expected.len()); + circular_buffer.read_with_offset(3, 7, &mut output).unwrap(); + assert_eq!(expected, output); + } + + #[test] + fn fixed_circular_buffer_correctly_reads_buffer_with_repeating_multiple_bytes_from_end_to_start( + ) { + let circular_buffer = FixedCircularBuffer { + buffer: vec![11, 12, 3, 4, 5, 6, 7, 8, 9, 10], + position: 2, + }; + let expected = vec![9, 10, 11, 12, 9, 10, 11]; + + let mut output = Vec::with_capacity(expected.len()); + circular_buffer.read_with_offset(4, 7, &mut output).unwrap(); + assert_eq!(expected, output); + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs new file mode 100644 index 00000000..a1053816 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs @@ -0,0 +1,163 @@ +use bit_field::BitField; +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt}; +use num_derive::FromPrimitive; +use num_traits::FromPrimitive; + +use super::ZgfxError; + +#[derive(Debug, Clone, PartialEq)] +pub enum SegmentedDataPdu<'a> { + Single(BulkEncodedData<'a>), + Multipart { + uncompressed_size: usize, + segments: Vec>, + }, +} + +impl<'a> SegmentedDataPdu<'a> { + pub fn from_buffer(mut buffer: &'a [u8]) -> Result { + let descriptor = SegmentedDescriptor::from_u8(buffer.read_u8()?) + .ok_or(ZgfxError::InvalidSegmentedDescriptor)?; + + match descriptor { + SegmentedDescriptor::Single => Ok(SegmentedDataPdu::Single( + BulkEncodedData::from_buffer(buffer)?, + )), + SegmentedDescriptor::Multipart => { + let segment_count = buffer.read_u16::()? as usize; + let uncompressed_size = buffer.read_u32::()? as usize; + + let mut segments = Vec::with_capacity(segment_count); + for _ in 0..segment_count { + let size = buffer.read_u32::()? as usize; + let (segment_data, new_buffer) = buffer.split_at(size); + buffer = new_buffer; + + segments.push(BulkEncodedData::from_buffer(segment_data)?); + } + + Ok(SegmentedDataPdu::Multipart { + uncompressed_size, + segments, + }) + } + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct BulkEncodedData<'a> { + pub compression_flags: CompressionFlags, + pub data: &'a [u8], +} + +impl<'a> BulkEncodedData<'a> { + pub fn from_buffer(mut buffer: &'a [u8]) -> Result { + let compression_type_and_flags = buffer.read_u8()?; + let _compression_type = CompressionType::from_u8(compression_type_and_flags.get_bits(..4)) + .ok_or(ZgfxError::InvalidCompressionType)?; + let compression_flags = + CompressionFlags::from_bits_truncate(compression_type_and_flags.get_bits(4..)); + + Ok(Self { + compression_flags, + data: buffer, + }) + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive)] +enum SegmentedDescriptor { + Single = 0xe0, + Multipart = 0xe1, +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive)] +enum CompressionType { + Rdp8 = 0x4, +} + +bitflags! { + pub struct CompressionFlags: u8 { + const COMPRESSED = 0x2; + } +} + +#[cfg(test)] +mod test { + use lazy_static::lazy_static; + + use super::*; + + const SINGLE_SEGMENTED_DATA_PDU_BUFFER: [u8; 17] = [ + 0xe0, // descriptor + 0x24, // flags and compression type + 0x09, 0xe3, 0x18, 0x0a, 0x44, 0x8d, 0x37, 0xf4, 0xc6, 0xe8, 0xa0, 0x20, 0xc6, 0x30, + 0x01, // data + ]; + + const MULTIPART_SEGMENTED_DATA_PDU_BUFFER: [u8; 66] = [ + 0xE1, // descriptor + 0x03, 0x00, // segment count + 0x2B, 0x00, 0x00, 0x00, // uncompressed size + 0x11, 0x00, 0x00, 0x00, // size of the first segment + 0x04, // the first segment: flags and compression type + 0x54, 0x68, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6B, 0x20, 0x62, 0x72, 0x6F, 0x77, 0x6E, + 0x20, // the first segment: data + 0x0E, 0x00, 0x00, 0x00, // size of the second segment + 0x04, // the second segment: flags and compression type + 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, + 0x65, // the second segment: data + 0x10, 0x00, 0x00, 0x00, // size of the third segment + 0x24, // the third segment: flags and compression type + 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, 0x9C, + 0x02, // the third segment: data + ]; + + lazy_static! { + static ref SINGLE_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = + SegmentedDataPdu::Single(BulkEncodedData { + compression_flags: CompressionFlags::COMPRESSED, + data: &SINGLE_SEGMENTED_DATA_PDU_BUFFER[2..], + }); + static ref MULTIPART_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = + SegmentedDataPdu::Multipart { + uncompressed_size: 0x2B, + segments: vec![ + BulkEncodedData { + compression_flags: CompressionFlags::empty(), + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[12..12 + 16] + }, + BulkEncodedData { + compression_flags: CompressionFlags::empty(), + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[33..33 + 13] + }, + BulkEncodedData { + compression_flags: CompressionFlags::COMPRESSED, + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[51..] + }, + ], + }; + } + + #[test] + fn from_buffer_correctly_parses_zgfx_single_segmented_data_pdu() { + let buffer = SINGLE_SEGMENTED_DATA_PDU_BUFFER.as_ref(); + + assert_eq!( + *SINGLE_SEGMENTED_DATA_PDU, + SegmentedDataPdu::from_buffer(buffer).unwrap() + ); + } + + #[test] + fn from_buffer_correctly_parses_zgfx_multipart_segmented_data_pdu() { + let buffer = MULTIPART_SEGMENTED_DATA_PDU_BUFFER.as_ref(); + + assert_eq!( + *MULTIPART_SEGMENTED_DATA_PDU, + SegmentedDataPdu::from_buffer(buffer).unwrap() + ); + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs new file mode 100644 index 00000000..804ee605 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs @@ -0,0 +1,242 @@ +use hex_literal::hex; +use lazy_static::lazy_static; + +use super::*; + +lazy_static! { + static ref ENCODED_ZGFX_SINGLE: [Vec; 5] = { + [ + hex!("e0 24 09 e3 18 0a 44 8d 37 f4 c6 e8 a0 20 c6 30 01").to_vec(), + hex!("e0 24 07 45 02 a6 62 54 63 1a e3 11 5c 45 c8 8e 76 8c 1b 69 1a 6d 8c 45 bf c4 5d 66 9e 04 22 44 47 13 58 47 e4 52 89 22 2c 80 04").to_vec(), + hex!("e0 24 e7 16 01 f1 22 23 6e c6 a2 10 bc 50 0e 44 88 8f 59 ba e6 49 f6 9b 99 38 9c 86 24 27 19 2d 8c 63 e4 44 e1 1a 24 92 9e c1 75 82 fc dc 5f 67 2a 64 3a 23 ca e3 1e 02 51 22 32 8c c8 63 18 8c b6 fb 1e 23 2d 98 11 97 0e 33 22 dc 1f 25 75 22 db 7d 8c b8 58 12 2d c3 89 65 48 b6 df 23 2e 1f ba 48 b7 03 03 49 4c e0 c4 fe e9 28 df 59 16 e0 fb ac 8b 70 30 24 5b 86 68 24 8b 6f 35 74 49 d6 df 66 94 46 5b 30 24 5b 87 19 f9 35 b6 ff 23 2e 1f b9 91 6e 06 04 82 70 e3 49 28 e1 8c b8 7e e9 25 1c 3a 49 47 0e b2 51 c3 19 70 fd d6 4a 38 75 92 8e 1c 7d 98 e3 82 32 e1 fb 8f b2 51 c1 20 9c 38 cc 94 70 e6 45 b8 3e e7 ec af 6e c0 91 6e 1c 69 25 1c 3a 49 47 0e 92 51 c3 22 dc 38 d6 4a 38 75 92 8e 1d 64 a3 86 45 b8 71 86 04 d0 1c 2c 09 28 e0 90 4e 16 04 65 c3 8c c8 b7 07 cc b0 25 7b 7f b9 94 ce 06 04 65 c3 8d 24 a3 87 49 28 e1 d2 4a 38 63 2e 1c 6b 25 1c 3a c9 47 0e b2 51 c3 19 70 d1 a9 66 4a 37 c6 33 42 bb 6a 3c 08 cb 76 04 8b 70 d3 f4 48 26 f4 78 11 96 ff 73 22 dc 0c 0c ca 67 05 1e 04 8b 6f f3 49 16 e0 fb a4 8b 70 30 34 92 8e 1d 64 5b 83 e6 b2 2d c1 f7 59 16 e0 60 48 b7 0d 1e 04 b8 70 63 e4 65 bd 1e 04 8b 6e c0 90 4e 1a 3c 09 16 df e6 64 5b 83 ec 65 c2 c0 8c b8 68 f0 24 a3 83 4f 99 a3 c1 c3 22 db b0 23 2e 1c 6b 31 37 07 c8 c9 47 83 86 45 b7 60 46 5c 38 c7 d9 70 e0 8c 94 78 38 64 5b 76 04 82 70 d1 e0 66 8f 07 0c 8b 6f f6 32 e1 60 46 5c 34 78 12 e1 c1 a4 c0 5c 1f 74 91 6e 06 04 65 c3 47 81 25 1c 1a c9 47 0e b2 2d c0 c0 8c b8 68 f0 24 a3 83 0c 08 cb 7f b8 60 48 b6 f4 78 12 09 be 33 22 dc 1f 33 22 dc 1f 63 2e 16 04 65 c3 8d 24 a3 86 32 e1 fb a4 8b 70 30 23 2e 1c 6b 25 1c 31 97 0f dd 64 5b 81 81 19 70 d1 e0 69 47 3b 6f 98 c4 65 bd 1e 06 92 2d b5 49 81 20 9b d1 e0 46 5b fc cc 8b 70 54 98 12 09 bd 1e 04 65 be 34 91 6e 0f 9a 48 b7 07 dd 26 02 e0 60 48 b7 0d 49 81 27 5b fc d6 45 b8 3e eb 22 dc 0c 0d 65 33 82 8f 02 4a 38 31 f2 45 b7 a3 c0 90 4d e8 f0 23 2d f1 99 16 e0 f9 19 70 fd 8c b8 58 11 97 0d 1e 04 9d 6f f3 4f 9a 51 e0 e1 91 6d d8 11 97 0d 1e 04 94 70 6b f3 4a 3c 1c 32 2d bb 02 32 e1 a3 c0 92 8e 0c 7d d2 8f 07 0c 8b 6f 47 81 22 db d1 e0 69 47 83 86 45 b7 fb 19 70 b0 23 2e 1a 3c 09 3a df e6 9f 74 a3 c1 c3 22 db b0 23 2e 1a 3c 09 28 e0 d7 ee 94 78 38 64 5b 76 04 65 c3 47 81 25 1c 18 60 69 47 83 86 45 b7 a3 c0 91 6d e8 f0 34 a3 c1 c3 22 db fd 8c b8 58 11 97 0d 1e 04 9d 6f f3 46 06 94 78 38 64 5b 76 04 65 c3 47 81 25 1c 1a b0 34 a3 c1 c3 22 db b0 24 11 57 45 88 92 2a c6 ec 00 07").to_vec(), + hex!("e0 24 ab b2 e2 c0 7e d6 2a 22 a3 ba 9a 40 53 a3 e8 c7 3a 36 2c 60 40 ab 8b 51 05 3a b0 c0 cc 0c 00 00 00 ca ac cc ca 00 01 c3 cc 0a 00 00 00 00 40 00 01 c1 cc 0c 00 00 00 00 00 00 00 01 00 c4 cc 83 53 00 00 40 01 00 01 01 01 c0 00 54 53 00 00 00 00 00 00 00 04 00 03 66 76 88 99 a9 32 11 11 22 12 11 11 11 22 12 11 11 11 22 12 01 c6 cc 57 00 00 00 00 00 00 00 00 00 00 00 00 19 00 13 00 14 00 00 00 00 00 1e cf fe c0 11 02 10 12 10 41 90 11 ae 44 7d 0d 44 0b 25 03 8b 44 40 00 00 1e cf d8 0c 41 24 19 09 42 2d 21 4c 48 91 a2 cc 00 00 00 1e cd fb 02 48 18 84 90 62 15 5d 22 92 a5 4b a0 93 80 c6 cc 6f 00 00 00 00 00 00 01 00 00 00 00 00 21 00 1b 00 1c 00 00 00 00 00 1e cf ff 20 28 80 c8 01 01 20 98 a9 51 a1 b5 dd bc 90 b7 e4 45 7e 92 12 89 2f d2 25 e2 56 00 00 00 1e cf c8 04 40 84 1e 81 21 91 68 13 2e c2 09 a0 81 58 41 cc 61 4c 41 cc 00 00 00 1e cd f9 00 48 14 83 90 09 02 45 51 42 ab d2 53 89 22 8c 47 10 50 c8 e3 20 00 c6 cc 7f 00 00 00 00 00 00 02 00 00 00 00 00 23 00 22 00 23 00 00 00 00 00 1e cf ff 90 04 41 42 00 40 48 32 41 1a c4 13 76 10 e1 08 df c1 99 bf 81 19 bd f6 01 1b 4f 40 93 6c 00 00 1e cf 90 34 80 48 05 0d 40 a0 50 21 65 29 89 73 d9 24 fc 29 57 fe 09 55 ff e2 23 57 ff 88 45 b8 00 00 1e cd f2 00 90 01 01 20 08 44 04 34 2a 31 17 08 43 84 21 c3 21 f1 8d 9f 08 6c fe 31 8d 27 a4 24 86 c6 cc 8d 00 00 00 00 00 00 03 00 00 00 00 00 32 00 25 00 1f 00 00 00 00 00 1e cf ff 60 10 80 08 01 00 20 88 08 7f 40 40 84 46 cf ff 94 92 42 7e a5 24 90 fd 4a 4c 12 7f 52 58 a1 3f a9 42 92 1f d5 0a 4c 13 fd 85 10 12 00 00 00 1e cf b0 04 80 48 0a 06 83 42 f4 28 51 5b b7 aa 49 ff 96 49 ff a8 a8 ff 2a 4b ff 25 45 ff 95 49 fe 2a 48 00 00 1e cd f9 00 88 18 82 b0 42 19 0e 91 32 29 a3 0c 7d 98 43 ec c6 2e cc 62 cc 61 66 20 c0 c6 cc 5d 00 00 00 00 00 00 04 00 00 00 00 00 1f 00 13 00 14 00 00 00 00 00 1d 16 4d bf ff a0 21 02 10 22 16 40 24 24 27 a8 c4 2e c6 21 c4 18 e2 0c 76 08 53 01 20 00 00 1e cf f2 05 90 11 0d 20 48 b4 25 2a 91 0a 50 58 68 00 00 1e cd fc 81 64 08 42 c8 31 12 80 85 00 48 85 62 2a 00 c6 cc 60 00 00 00 00 00 00 05 00 00 00 00 00 1b 00 17 00 17 00 00 00 00 00 1e cf f2 01 10 31 01 20 68 04 64 28 d4 2a 81 25 1a 45 68 d0 83 86 46 58 b0 00 00 1e cf f6 00 10 61 01 60 08 c4 16 2a 95 2c 91 ec a6 28 21 c1 40 00 00 1e cd fb 01 c8 20 84 90 62 35 0a 85 72 a4 8f 45 5a 08 1a 81 a0 c6 cc 6b 00 00 00 00 00 00 06 00 00 00 00 00 1e 00 1c 00 1a 00 00 00 00 00 1e cf ec 01 20 52 0a 40 b4 19 15 1a 2d 14 2a 84 14 54 d2 d0 94 28 d4 38 80 96 0e 00 00 00 1e cf ec 04 20 42 0a c1 10 88 ba 04 8a 2f 63 1e 30 87 cc 61 63 0c e1 87 58 40 00 00 1e cd f9 00 48 24 82 30 12 2d 0a 95 3a 52 2e b8 e4 85 34 e1 82 d9 90 c0 c6 cc 70 00 00 00 00 00 00 07 00 00 00 00 00 20 00 1e 00 1b 00 00 00 00 00 1e cf f9 00 48 14 81 90 49 02 45 46 8d 0e b5 29 5f e1 28 fc 72 26 29 15 f8 52 24 50 c3 98 00 00 1e cf d8 00 40 44 09 07 d0 08 49 12 e9 28 a5 cc 20 b9 88 3e c6 16 61 8f 98 83 c6 00 00 00 1e cd f2 01 90 39 04 60 68 74 4a 55 28 69 2c a8 92 a5 15 50 ed 0a 25 05 00 c6 cc 5c 00 00 00 00 00 00 08 00 00 00 00 00 20 00 15 00 10 00 00 00 00 00 1e cf fd 80 24 02 42 48 14 81 21 a7 42 87 4b 9c 99 1c 4d 21 4f c5 1c fc 8e 24 39 b7 68 70 00 00 1e cf 90 08 83 48 32 12 91 42 5b 40 fd 02 c4 4c 5d 01 40 00 00 1e cd e4 2c 20 12 00 40 50 0a 0c 1b 1c 00 c6 cc 57 00 00 00 00 00 00 09 00 00 00 00 00 21 00 12 00 0d 00 00 00 00 00 1e cf ff 20 08 81 48 29 02 90 64 32 7a 0e 99 a7 6e 91 2f f0 8a 26 29 11 e2 15 f8 a1 53 23 b0 00 00 1e cf 61 19 03 21 28 8a 45 45 8a 44 54 a8 81 40 00 00 1e cd e4 22 22 22 20 44 12 4c 00 c6 cc 6a 00 00 00 00 00 00 0a 00 00 00 00 00 24 00 19 00 16 00 00 00 00 00 1e cf ff b0 04 40 e2 06 40 a4 19 14 8c 85 0e d2 48 d4 71 6f fc 85 15 fe 21 4b fc 23 9f 85 29 f8 52 80 00 00 1e cf 60 01 06 20 34 01 02 80 a1 0d 87 d8 6d 01 72 05 ce 2a 98 70 c0 00 00 1e cd e4 09 20 62 16 41 28 14 d4 15 e8 4a aa 2d 21 01 24 98 c6 cc 81 00 00 00 00 00 00 0b 00 00 00 00 00 33 00 1f 00 18 00 00 00 00 00 1e cf ff e4 01 30 18 80 88 0b 02 43 20 e4 64 49 55 57 ff f8 95 59 ff fe 24 aa 5f ff e2 41 54 ff fc 41 54 bf ff c4 82 a9 ff f8 82 a3 7f fe 20 94 50 00 00 1e ce c0 44 08 82 d0 44 22 1a 1a 05 9f a1 0c 7f 61 85 d8 81 76 31 9f cc c6 7f 40 c6 00 00 00 1e cd d8 0a 41 44 15 0a 43 a3 20 4e c5 e6 4b 11 a8 a2 6e 28 d1 c8 c6 cc 86 00 00 00 00 00 00 0c 00 00 00 00 00 25 00 26 00 24 00 00 00 00 00 1e cf ff fe 40 30 80 84 00 40 04 00 80 c3 94 10 20 8d e4 d9 e9 a2 cd b2 a1 19 a4 cc c8 21 08 23 59 46 40 00 00 1e d6 40 34 02 80 a0 28 1a 07 e8 52 a2 95 ab ff c0 ae af ff 10 2b 5f e0 28 ab f0 29 4f d0 a4 f0 a7 66 43 00 00 00 1e cd c8 04 40 44 01 00 41 50 7e 88 89 04 22 3f fa 06 92 4f 48 48 69 d2 10 c6 d0 c6 31 c3 08 41 0e 1c c6 cc 70 00 00 00 00 00 00 0d 00 00 00 00 00 26 00 1c 00 17 00 00 00 00 00 1e cf ff f6 00 08 00 c0 04 00 84 20 90 e4 04 08 b3 2f fa 64 80 7b 24 30 be 92 19 3b 0c 52 c1 c8 2b 4b 05 b4 00 00 1e cf c8 02 40 24 0d 08 d0 28 28 d4 68 a4 92 b5 41 aa 43 51 4c 44 08 1c 4b 0c 00 00 1e cd f9 00 88 2c 82 10 d2 09 2d 32 56 16 21 23 14 1e 62 8a c0 c6 cc 73 00 00 00 00 00 00 0e 00 00 00 00 00 26 00 1c 00 1a 00 00 00 00 00 1e cf ff c8 06 20 11 03 20 64 15 86 42 4a 8a ba b9 47 e2 a4 ef fc 8c 97 f8 69 4f f0 ca 9f e4 a5 5f f9 46 50 00 00 1e cf ec 00 20 62 0e c0 10 89 34 09 19 61 4f 63 0e 21 8f 6c 20 a2 08 2d 98 c0 00 00 1e cd f9 02 48 19 80 90 92 11 35 12 76 1e 4b 4e 46 a4 44 a2 29 e4 51 80 c6 cc 65 00 00 00 00 00 00 0f 00 00 00 00 00 1e 00 16 00 1a 00 00 00 00 00 1e cf ff f2 01 88 1c 40 84 00 81 23 93 12 ae 84 51 42 22 8a da 48 42 48 94 a1 a9 24 00 00 1e cf d8 18 40 64 19 03 40 21 a0 70 ba 06 08 10 20 d6 11 00 00 00 1e cd f6 04 90 01 01 20 48 b4 44 ea 13 22 a2 45 28 a2 28 72 0a 19 14 00 c6 cc 5c 00 00 00 00 00 00 00 00 01 00 00 00 1b 00 13 00 17 00 00 00 00 00 1e cf ff b0 1c 40 e2 00 41 c8 72 11 1a 74 92 8a 39 90 ac 38 85 6b 2c 06 10 00 00 1e cf 20 61 07 22 08 0a 01 d5 02 b4 d0 6b 90 72 a0 00 00 1e cd e4 00 20 12 1e 44 50 48 2e d6 26 49 a5 11 c2 10 84 23 00 c6 cc 7b 00 00 00 00 00 00 01 00 01 00 00 00 22 00 21 00 21 00 00 00 00 00 1e cf ff d8 0a 20 31 06 20 64 19 20 85 9a 09 46 39 8c 6e 9b 33 7f 48 12 49 d2 12 49 3d 0c 92 18 00 00 1e ce c0 24 24 83 a0 48 b4 34 15 29 a5 32 95 57 fe 4a aa ff c1 56 af ff 12 ab 5f fe 25 55 00 00 00 1e cd e4 01 21 52 0c 40 d1 48 48 6a 12 42 e4 21 b7 f4 21 a4 3f a1 24 81 d9 24 0c 7d 20 43 00 c6 cc 90 00 00 00 00 00 00 02 00 01 00 00 00 2d 00 27 00 25 00 00 00 00 00 1e cf ff ec 04 10 10 80 08 01 00 41 c9 98 99 33 fa 18 92 64 fd 44 92 4c fd 49 48 64 fd 84 14 92 7d 4a 49 09 ea 84 90 9e c9 21 08 00 00 1e ce 40 34 06 80 a0 28 14 14 1f 42 8a d5 55 ff e5 2e 57 ff 8a ad 3f f2 ac af fc a9 4b fc 8c 97 e2 89 7e 92 00 00 00 1e cd d8 04 40 44 01 00 40 21 fa 04 48 29 11 ff 1a 48 63 f8 92 10 3e 90 83 38 43 33 ec cc 2d 98 c5 99 80 c6 cc 7c 00 00 00 00 00 00 03 00 01 00 00 00 30 00 1d 00 18 00 00 00 00 00 1e cf ff 90 00 c0 02 00 c0 08 02 01 02 04 7f d0 46 3d 24 3f ff 92 85 82 4f ea 50 94 87 ea 53 04 93 f5 25 21 0f 64 24 0c f4 90 81 b4 81 1a 00 00 1e cf d8 06 40 24 05 03 40 a1 7a 14 28 a5 c9 d5 21 35 24 79 23 bc 85 10 50 09 00 00 00 1e cd f9 00 88 10 83 90 62 25 11 32 3a 0c 35 81 84 b0 18 4a 14 c0 c6 cc 55 00 00 00 00 00 00 04 00 01 00 00 00 18 00 16 00 10 00 00 00 00 00 1e cf f2 00 90 01 12 20 a8 05 14 0c 91 52 8a 56 80 b4 16 21 c6 00 00 00 1e cf f9 08 c8 20 83 90 c2 0e 80 b1 0d 67 2c c2 38 43 8c 00 00 00 1e cd fc 80 44 1a 40 0a 41 02 80 9d 00 d0 c6 cc 5d 00 00 00 00 00 00 05 00 01 00 00 00 1e 00 17 00 11 00 00 00 00 00 1e cf f2 00 10 09 02 20 e8 04 74 08 d0 2a c7 6b 5a 62 10 a1 50 2b 46 28 ad 7a 14 b0 00 00 1e cf f9 0c 08 04 86 10 52 29 15 42 7a 0c 29 76 20 87 d9 8c 00 00 00 1e cd fd 8d 24 00 c0 48 69 01 43 52 8a ab d8 c6 cc 56 00 00 00 00 00 00 06 00 01 00 00 00 15 00 17 00 13 00 00 00 00 00 1e cf f2 07 90 03 01 25 e8 04 d4 49 c8 b0 92 50 82 4a 00 00 00 1e cf f9 00 08 28 81 b0 02 31 05 72 16 9a 51 ac 05 3d 81 28 60 00 00 1e cd fd 80 a4 14 41 c8 41 0e 90 8d 62 61 7b 4b 00 c6 cc 54 00 00 00 00 00 00 07 00 01 00 00 00 1c 00 11 00 10 00 00 00 00 00 1c a8 51 1f fe 83 44 09 82 91 24 06 34 08 90 25 ca 02 a8 52 0a b0 45 ad 63 40 00 00 1e cf f2 02 10 59 08 20 e8 e4 12 a1 09 5a 80 00 00 1e cd fc 80 64 18 42 c8 21 1e 80 5f 25 00 c6 cc 57 00 00 00 00 00 00 08 00 01 00 00 00 1c 00 10 00 14 00 00 00 00 00 1e cf f9 01 c8 1c 80 48 09 12 44 a1 40 99 06 a2 30 73 07 21 d8 5b 1a d0 29 58 00 00 1e cf ec 02 20 d2 46 41 11 68 8a d0 04 80 00 00 1e cd fb 01 48 00 8e 10 12 01 05 02 14 03 15 09 84 80 c6 cc 4d 00 00 00 00 00 00 09 00 01 00 00 00 1e 00 08 00 10 00 00 00 00 00 1e cf fc 80 04 02 42 c8 03 0e 80 85 25 14 2a 21 07 11 60 a4 05 b0 49 04 9a ab 43 00 00 00 1e cf e4 11 28 e0 00 00 1e cd fb 05 88 04 80 16 12 01 05 02 b6 1c c6 cc 5e 00 00 00 00 00 00 0a 00 01 00 00 00 1d 00 16 00 14 00 00 00 00 00 1e cf fd 81 24 0a 40 24 24 83 21 68 4a 54 91 5b 47 3b c3 8a f0 a2 b6 23 9b 45 ac 00 00 1e cf e4 0e 20 12 02 41 11 29 88 d7 22 59 22 94 63 82 1c 30 00 00 1e cd fb 01 08 14 82 10 f2 01 cd 02 f4 0a a8 4b 0b 00 c6 cc 82 00 00 00 00 00 00 0b 00 01 00 00 00 2f 00 1f 00 1d 00 00 00 00 00 1c a8 51 1f ff fa 03 10 11 01 10 62 09 09 07 22 59 4a 2b ff f1 22 b5 ff f8 82 a3 7f f8 14 5a ff f0 22 b5 ff e0 51 27 f9 09 4f f2 44 e0 00 00 1e cf e4 00 20 42 04 41 74 11 11 12 3d 46 32 e3 19 be 31 0d f0 86 6f 8c 63 8c 21 c6 10 00 00 1e cd fb 01 c8 14 81 30 92 0d 0b 42 9d 54 4d 25 21 4a f1 c7 78 72 78 53 bc 38 c0 c6 cc 67 00 00 00 00 00 00 0c 00 01 00 00 00 24 00 17 00 15 00 00 00 00 00 1e cf ff d8 02 20 51 08 90 12 04 8e 49 23 26 d4 4d 24 9f e5 24 ff ca 94 ff c9 25 7f f9 45 4f fc 8c 90 00 00 1e cf b0 08 80 49 22 12 84 4b 48 ad 42 74 30 cf 99 85 b0 83 00 00 00 1e cd f6 17 90 01 01 20 08 54 a4 aa 95 24 f3 0a 2a a2 80 c6 cc 6c 00 00 00 00 00 00 0d 00 01 00 00 00 26 00 18 00 17 00 00 00 00 00 1e cf ff ec 00 10 08 82 88 29 00 c5 25 21 4b 49 6a 57 f8 a2 af f0 49 5f f9 14 9f e2 89 7f e4 92 7f 8e 0a b0 00 00 1e cf b0 04 81 08 32 02 88 54 46 a1 44 d8 52 d8 12 81 a8 56 20 00 00 00 1e cd f6 06 90 11 09 22 a8 24 94 c9 5a 48 a4 8e 50 85 62 b0 c0 c6 cc 74 00 00 00 00 00 00 0e 00 01 00 00 00 2a 00 19 00 1a 00 00 00 00 00 1e cf ff f6 00 88 04 40 c4 04 83 20 90 64 24 c9 57 5f f9 29 57 ff 8a 2b 8f fc 14 63 ff 29 49 ff 91 89 ff 92 89 fe 14 8c 00 00 1e cf 90 18 80 88 2d 00 42 22 23 a2 59 b4 30 a1 04 d0 16 35 0e 1a 70 00 00 1e cd f2 01 90 29 05 20 1a 04 86 9d 15 36 95 71 4d 41 5a 41 01 82 45 00 c6 cc 67 00 00 00 00 00 00 0f 00 01 00 00 00 27 00 15 00 14 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 44 06 08 46 11 85 42 17 1c 04 24 49 13 a8 8d a1 da fc 41 1e 83 22 c3 20 00 00 1e cf 20 11 04 20 28 42 25 11 5a 85 cc 88 ac 5b c6 96 c0 00 00 1e cd e4 01 20 52 10 41 51 48 aa 92 b4 60 40 c3 84 00 c6 cc 68 00 00 00 00 00 00 00 00 02 00 00 00 1d 00 1a 00 1a 00 00 00 00 00 1e cf ff f2 03 08 48 40 84 0c 84 22 11 10 d0 20 87 30 86 ec 31 a1 84 43 08 82 2c 00 00 1e ce c0 74 06 80 a0 48 74 34 28 50 bd d4 c7 25 e4 45 61 c9 8e 04 84 80 00 00 1e cd d8 10 40 44 01 01 a1 90 90 20 46 e6 29 86 23 08 42 19 04 0c 51 40 c6 cc 7f 00 00 00 00 00 00 01 00 02 00 00 00 2c 00 1f 00 1d 00 00 00 00 00 1d c8 48 1f ff ff f4 04 10 00 80 04 10 c2 30 cc 02 42 04 21 27 d9 24 90 9e a8 49 09 ec 84 84 34 90 66 f8 84 0e 20 47 35 ac 80 00 00 1e cf 90 04 80 48 0a 02 81 41 46 83 a6 95 74 ff 32 93 f2 92 7e 51 12 45 1a 88 40 92 00 00 00 1e cd f2 00 10 01 04 20 48 3a 22 24 49 e8 62 11 f6 33 16 62 0e 20 c7 60 ce c0 24 c6 cc 66 00 00 00 00 00 00 02 00 02 00 00 00 20 00 18 00 17 00 00 00 00 00 1c f0 4e df ff fa 02 10 01 00 10 42 2c 80 88 91 47 d0 63 1c c4 59 d8 c2 86 2d 82 41 54 38 00 00 1e cf f6 00 90 19 03 20 d4 0a 1a 94 14 5e 51 22 9c 40 30 f4 0c 30 00 00 1e cd fc 80 04 08 42 48 11 10 86 99 4a 45 50 1f 40 92 0b 0c 00 c6 cc 64 00 00 00 00 00 00 03 00 02 00 00 00 1c 00 18 00 19 00 00 00 00 00 1e cf fb 00 08 08 81 10 76 09 11 3d 12 28 34 a2 a2 07 a0 48 f6 28 47 6b 2d 00 00 00 1e cf fc 82 64 00 40 48 01 12 80 85 03 68 0b 35 83 8b 40 87 30 c0 00 00 1e cd fe 40 21 03 90 02 02 40 13 51 2b 50 9b 0f 20 93 38 08 a0 d3 00 c6 cc 53 00 00 00 00 00 00 04 00 02 00 00 00 17 00 19 00 0c 00 00 00 00 00 1e cf f2 07 90 01 0b 22 e8 04 74 08 48 a0 4b d0 29 58 56 81 20 00 00 1e cf fc 80 c4 0c 40 58 41 0e 8c 99 0d 02 4b 30 e8 18 a2 04 42 05 00 00 00 1e cd fe 47 b1 0f 90 02 02 00 c6 cc 7d 00 00 00 00 00 00 05 00 02 00 00 00 22 00 25 00 1f 00 00 00 00 00 1e cf f2 00 90 29 05 20 08 04 34 69 52 b5 dc fd 24 9f 92 95 ff 95 29 f8 95 5f f9 29 4f c2 53 80 00 00 1e cf fb 00 08 08 82 10 56 11 09 22 1d 25 10 8f e6 66 c7 f4 21 08 7c 43 18 da 18 c6 9d 84 20 df 40 c2 00 00 00 1e cd fe 40 51 03 90 26 0a 42 91 29 52 a6 8c 92 5d f9 12 7e 48 a7 8e 4b f1 22 bc 28 a0 c6 cc 6a 00 00 00 00 00 00 06 00 02 00 00 00 1d 00 1c 00 1a 00 00 00 00 00 1c f0 4e df ff a0 51 04 10 12 1c a2 46 50 8a c9 45 ea 43 55 04 29 09 54 3b 64 58 00 00 1e cf f2 00 10 21 09 20 48 64 5a 04 4d a9 84 d0 c4 16 6c 16 8c 1d 82 58 72 80 00 00 1e cd fc 80 64 18 40 48 39 0c 8a a9 1a ae a9 4a 26 a4 34 a0 94 84 39 80 c6 cc 72 00 00 00 00 00 00 07 00 02 00 00 00 28 00 1c 00 17 00 00 00 00 00 1e cf fc 80 04 10 41 64 18 82 21 21 f4 05 14 4f 21 8d bf fa 04 90 9f 49 09 24 fd 44 84 c3 ec 24 90 cf ec 08 0a 48 00 00 1e cf e4 09 20 66 06 42 d0 14 b4 94 aa b3 52 9c fd 12 5f e5 24 fc 92 5f 92 48 00 00 1e cd fb 04 48 8c 83 10 96 01 11 4d 22 4f b1 0c e1 04 39 88 30 c6 cc 67 00 00 00 00 00 00 08 00 02 00 00 00 21 00 18 00 17 00 00 00 00 00 1e cf f9 02 88 04 81 90 02 3e 80 89 42 3d 08 c1 76 6c 3f 6d 8c 67 e8 48 0f 9b 41 9f d2 40 ce 00 00 1e cf ec 10 20 12 1c 40 d1 88 2a 52 51 69 84 9d a8 84 29 08 53 80 00 00 1e cd fb 04 48 00 87 90 42 2d 11 5a 26 93 61 4a 30 52 02 8a 00 c6 cc 59 00 00 00 00 00 00 09 00 02 00 00 00 1d 00 10 00 15 00 00 00 00 00 1e cf f9 02 48 0c 80 10 02 15 1d 15 2a ea 92 5b 45 1c f1 c8 90 a5 7e 87 12 29 14 00 00 1e cf ec 27 20 02 06 47 50 08 2f 48 5a 50 00 00 1e cd fb 02 08 1c 84 10 72 19 25 22 b4 04 9a e1 28 05 80 c6 cc 5d 00 00 00 00 00 00 0a 00 02 00 00 00 1e 00 14 00 14 00 00 00 00 00 1c f0 4e df ff a0 11 0b 10 22 34 84 c2 4e aa 24 9a 92 d0 c2 86 38 54 8e 2b 79 11 40 00 00 1e cf ec 23 20 82 0e 43 90 34 65 2b 91 b0 f3 0e 31 80 00 00 1e cd fc 81 64 08 43 c8 01 48 82 b1 5a 09 40 71 2c 8c c6 cc 70 00 00 00 00 00 00 0b 00 02 00 00 00 21 00 1e 00 1a 00 00 00 00 00 1e cf fd 80 64 06 40 c8 19 01 d0 49 48 d4 d6 4b 93 23 ad e2 3a fc b4 4f 1c 7b f1 1c da d0 a0 00 00 1e cf e4 06 20 62 03 20 44 22 22 1d 22 8d d0 c6 7c 62 0b 18 67 cc 20 b3 08 58 c3 00 00 00 1e cd fb 02 48 18 84 90 66 05 2d 15 1b 2a 96 4b 42 9a 87 24 71 de 14 00 c6 cc 77 00 00 00 00 00 00 0c 00 02 00 00 00 28 00 1e 00 1a 00 00 00 00 00 1e cf ff 60 08 80 c8 19 01 20 c8 1e 8c 8c 8a d5 3e 94 a7 fe 19 2b ff 09 29 ff 91 52 ff c2 52 bf f0 a4 af fc 82 a0 00 00 1e cf c8 04 40 84 1e 82 21 11 74 09 16 4e 43 0b b1 04 3e 63 0b b1 8c f9 8c 78 c3 00 00 00 1e cd f9 00 48 14 84 30 32 15 1a 8d 4a 57 98 69 aa 1c 91 43 04 91 70 e0 c6 cc 66 00 00 00 00 00 00 0d 00 02 00 00 00 20 00 17 00 18 00 00 00 00 00 1e cf ff e4 01 10 28 80 88 34 83 22 91 91 58 96 5b 65 14 68 a1 5f a2 33 20 a9 a4 33 42 9a 00 00 1e cf 90 74 81 08 3a 0e 80 40 42 9d 47 92 c1 24 38 a8 09 60 e0 00 00 1e cd f2 0f 10 19 06 20 c8 14 a4 48 6b 31 ec 30 a1 05 30 74 05 00 c6 cc 65 00 00 00 00 00 00 0e 00 02 00 00 00 20 00 1b 00 13 00 00 00 00 00 1c f0 4e df ff ff ff 40 a0 81 82 0c 50 a1 28 63 0b 0d 47 0a 22 31 30 72 b0 c8 64 d6 b2 c8 00 00 1e cf 90 1c 81 c8 02 0a 87 42 4a 9d 2a 49 31 c7 12 85 1a 88 ef 0a 10 e3 00 00 00 1e cd f2 01 10 91 10 24 88 94 25 a8 9d 40 b5 0c 00 c6 cc 58 00 00 00 00 00 00 0f 00 02 00 00 00 1a 00 15 00 12 00 00 00 00 00 1e cf ff fc 82 06 01 10 01 0a 10 84 12 02 83 0b 41 45 40 12 4a 07 a2 c0 00 00 1e cf c8 0a 42 24 45 13 44 21 ac 42 bb 84 aa a0 a2 45 00 00 00 1e cd f6 00 10 81 22 24 c8 b4 05 e8 9d 52 8a 00 c6 cc 50 00 00 00 00 00 00 00 00 03 00 00 00 15 00 13 00 11 00 00 00 00 00 1e cf fe 40 a1 03 90 02 62 40 10 51 21 22 82 c7 8f 2d 00 00 00 1e cf f9 00 c8 e8 8b 11 02 05 11 42 14 89 25 02 18 00 00 1e cd fd 81 44 12 40 88 99 08 96 47 76 46 c0 c6 cc 59 00 00 00 00 00 00 01 00 03 00 00 00 1c 00 16 00 10 00 00 00 00 00 1e cf fd 81 04 02 40 08 19 10 82 89 1b aa 71 4a 28 ec 28 ec 39 31 c5 5f a1 50 00 00 1e cf fb 07 88 0c 80 10 c2 05 11 42 15 8c 08 39 44 11 46 30 00 00 1e cd fe 42 f1 11 91 32 04 41 95 58 a5 48 c6 cc 56 00 00 00 00 00 00 02 00 03 00 00 00 18 00 15 00 12 00 00 00 00 00 1c f0 4e df ff d0 38 80 08 38 93 28 98 94 9b 2e f2 14 8e da 85 00 00 00 1e cf fb 01 08 50 89 11 02 15 01 32 74 1c 28 e2 09 41 00 00 00 1e cd fe 42 31 0b 91 52 3a 44 90 90 a5 5d 0e 50 c6 cc 69 00 00 00 00 00 00 03 00 03 00 00 00 1c 00 1d 00 19 00 00 00 00 00 1e cf fc 81 24 0e 40 08 49 1a 8e 89 1a e5 56 af 22 95 e1 52 bc 49 cf c9 55 00 00 00 1e cf f9 01 08 20 80 90 42 21 05 32 64 5c 52 98 62 20 8c ec 66 6e 63 33 b1 99 80 00 00 1e cd fe 40 71 0b 90 22 0e 43 90 14 b3 51 64 b9 05 15 30 a4 bc 89 00 c6 cc 5e 00 00 00 00 00 00 04 00 03 00 00 00 1b 00 16 00 16 00 00 00 00 00 1e cf fd 81 24 1e 41 48 01 02 8e 9d 02 2d 34 b1 6a 73 25 0c a8 b3 54 33 00 00 00 1e cf f2 04 10 91 0e 21 c8 c4 25 89 11 63 0b 46 0e 93 1d 40 00 00 1e cd fd 81 64 00 40 48 a9 2e 96 bd 0b eb 31 e5 31 0e 84 30 c6 cc 7e 00 00 00 00 00 00 05 00 03 00 00 00 25 00 21 00 21 00 00 00 00 00 1e cf fe 40 11 01 90 32 02 41 90 34 a4 69 aa e5 39 90 e1 0e e6 b6 37 fc 42 42 4f d8 49 24 3f 44 c4 4c 00 00 00 1e cf ec 02 20 22 08 40 e8 24 44 88 6a 30 96 09 48 a2 bf 14 93 fc 4a 4f fc 95 2b ff c1 56 80 00 00 1e cd fc 80 e4 0a 40 48 04 83 23 a3 41 65 6c 24 11 a8 82 17 99 9b 3f e8 49 08 7f f2 92 48 40 c6 cc 73 00 00 00 00 00 00 06 00 03 00 00 00 25 00 1f 00 18 00 00 00 00 00 1c f0 4e df ff ff a0 30 81 84 00 43 08 22 c1 09 a3 46 18 b1 0c cf ed 06 6d ec 84 24 3f 88 42 1b a1 a1 8c 00 00 1e cf c8 00 41 24 0d 00 a1 d0 d2 51 aa b6 94 a4 fc 92 5f e5 24 fc 92 5f e2 49 7f 92 40 00 00 1e cd f9 00 48 0c 83 11 e2 1d 11 42 16 9a 41 8b 31 85 08 73 06 00 c6 cc 7e 00 00 00 00 00 00 07 00 03 00 00 00 2c 00 20 00 1b 00 00 00 00 00 1e cf ff c8 00 20 21 00 20 04 01 00 8f e8 08 10 44 6d be 92 49 09 f6 49 09 27 d5 21 08 76 10 90 de c2 40 d3 d8 40 c6 e8 63 18 00 00 1e cf d8 06 40 64 0d 03 40 68 68 d1 a6 8e aa 48 9a 48 bf 48 53 c5 1c f1 47 3c 50 d4 3b 00 00 00 1e cd f6 02 10 11 07 60 08 44 44 74 4a 31 64 30 b6 10 71 03 90 12 c1 64 14 c6 cc 64 00 00 00 00 00 00 08 00 03 00 00 00 23 00 14 00 16 00 00 00 00 00 1e cf fd 80 04 00 40 88 11 0b a1 10 22 5f 42 10 5d b1 8f 33 10 f9 9a cd fd 08 40 5c cc 43 f9 9b 0c 00 00 1e cf f6 01 90 49 02 20 e8 84 32 ea 02 44 ca 52 6a 20 00 00 1e cd fb 00 08 18 83 90 22 91 05 12 15 9a 8e c1 5a 30 a0 f0 c6 cc 55 00 00 00 00 00 00 09 00 03 00 00 00 1b 00 12 00 11 00 00 00 00 00 1e cf f6 01 90 39 04 60 e8 54 04 14 2a bd 22 4d 50 e4 64 3b 08 80 f4 44 00 00 00 1e cf fb 02 88 04 80 10 13 59 05 62 36 9a c3 00 00 00 1e cd fd 81 c4 02 43 88 09 1c 82 b9 18 66 88 c6 cc 64 00 00 00 00 00 00 0a 00 03 00 00 00 20 00 1a 00 13 00 00 00 00 00 1e cf fb 00 c8 0c 80 10 12 12 8a 95 25 55 a2 9f 92 44 c5 14 48 e4 4d 12 5f e4 52 de 44 60 00 00 1e cf fb 00 08 28 81 b0 22 21 0e 91 32 75 14 4d 02 14 20 a2 0e 61 c8 00 00 00 1e cd fe 40 11 07 10 92 0c 44 91 90 8a e9 93 42 80 c6 cc 64 00 00 00 00 00 00 0b 00 03 00 00 00 1f 00 18 00 16 00 00 00 00 00 1e cf fd 80 64 16 c0 18 01 0a 8e 82 85 05 96 93 8e 78 e3 bf 44 77 e4 28 92 14 9a 23 80 00 00 1e cf f6 04 10 21 01 61 08 74 65 29 99 20 f2 1d 88 81 cc 39 0b 00 00 00 1e cd fd 81 24 0c 41 c8 01 02 88 bd 03 a8 0f a0 3a 82 48 56 c6 cc 6b 00 00 00 00 00 00 0c 00 03 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf fe c0 31 01 90 12 06 41 64 12 12 34 d9 92 a7 5f e2 24 fc 8e 26 92 13 48 89 a4 3b f1 15 60 00 00 1e cf ec 04 20 62 07 20 04 32 3d 12 84 ec 31 66 0e 31 c6 14 51 4c 56 00 00 00 1e cd fc 80 24 1a 40 18 39 10 96 92 85 e4 8a 4a 10 8a c8 62 02 40 c6 cc 5c 00 00 00 00 00 00 0d 00 03 00 00 00 1e 00 13 00 14 00 00 00 00 00 1e cf ff b0 04 41 22 00 40 88 32 63 0a 56 29 2c ad 45 1d ed 41 28 52 4a 14 9a 14 50 00 00 1e cf d8 1a 40 c4 1d 29 41 26 a6 52 c3 ce 24 63 00 00 00 1e cd f9 00 08 c8 81 90 c2 1d 21 4a 66 54 a8 1c c0 b0 c6 cc 57 00 00 00 00 00 00 0e 00 03 00 00 00 1d 00 14 00 0f 00 00 00 00 00 1e cf ff c8 06 20 01 01 20 04 99 00 b5 02 2a 3c 81 25 09 2a e2 8a fc 51 6f cc 28 00 00 1e cf e4 09 20 62 16 41 11 e8 04 a4 68 26 e3 44 16 60 00 00 1e cd fb 00 88 34 80 10 f2 29 14 4a 00 c6 cc 53 00 00 00 00 00 00 0f 00 03 00 00 00 18 00 13 00 11 00 00 00 00 00 1e cf ff c8 1e 20 21 01 20 04 69 c4 81 1a 09 43 b2 18 a0 85 22 18 00 00 1e cf ec 03 20 c2 1a 40 a8 14 e4 ea 08 2a 50 24 00 00 00 1e cd fc 86 a4 10 40 48 01 02 f2 81 7a 05 00 c6 cc 5d 00 00 00 00 00 00 00 00 04 00 00 00 20 00 13 00 13 00 00 00 00 00 1e cf ff 20 08 83 48 01 07 21 c8 0a d0 22 83 c8 9c a4 c2 9d fe 0a 2a ff c0 e5 7f fe 44 54 00 00 1e cf e4 0e 20 e2 14 41 91 ca 0c 19 22 40 b4 08 00 00 00 1e cd fb 01 c8 54 87 90 32 35 2d 3a f7 49 88 98 00 c6 cc 74 00 00 00 00 00 00 01 00 04 00 00 00 28 00 1a 00 1b 00 00 00 00 00 1e cf ff 90 24 40 62 04 40 08 12 19 2a 14 35 92 4a 64 8f 7f 84 53 bf f0 8a 3f c2 94 ef ff c1 46 af ff f0 24 d5 40 00 00 1e cf d8 0c 40 84 0d 02 43 27 22 46 a3 9c 82 14 41 88 42 39 8c 28 c3 00 00 00 1e cd f9 01 c8 14 81 10 12 1d 15 02 55 58 a7 3b 11 cc 8e 21 14 64 38 84 38 c6 cc 6e 00 00 00 00 00 00 02 00 04 00 00 00 29 00 19 00 15 00 00 00 00 00 1e cf ff d8 06 20 51 06 60 24 09 14 95 06 8a d4 a4 c9 2a ff f2 95 2f ff 14 5a bf ff c4 92 d5 ff 85 aa f3 ff 85 ad 58 00 00 1e cf b0 00 81 08 72 08 85 42 48 9d 27 12 c2 1c 41 88 c1 58 61 46 00 00 00 1e cd f2 01 90 29 0d 21 28 04 14 eb 5f 26 87 04 86 4a 28 c6 cc 77 00 00 00 00 00 00 03 00 04 00 00 00 28 00 1d 00 1b 00 00 00 00 00 1e cf ff ec 01 10 28 80 88 09 02 42 91 91 91 4a ab ff 25 54 ff ca b4 7f e5 6a 3f f2 b4 b7 f9 55 67 fa 94 19 91 66 00 00 1e cf 60 01 02 20 48 12 06 88 89 22 35 10 c5 98 83 98 10 e6 14 af 1c 97 e4 55 00 00 00 1e cd e4 03 20 52 06 40 90 e8 69 11 aa e5 12 0f 26 51 0f 18 db 7f 04 86 90 c6 cc 96 00 00 00 00 00 00 04 00 04 00 00 00 30 00 26 00 29 00 00 00 00 00 1d 16 4d bf ff ff ff d0 08 20 20 84 02 0c 62 84 81 00 4c c8 50 c6 74 84 86 4f 40 86 99 3e 82 49 93 3b 4a 49 31 7f 52 4b 14 ce c4 29 8a 40 00 00 1e d4 40 54 06 80 a0 1a 2d 0e 83 a5 55 2a 9c 52 ab ff 0a aa ff f1 15 ae fe 15 5a bf ff 12 5a a7 ff 89 55 80 00 00 1e cd b0 0c 81 08 12 07 40 a2 22 40 9e e6 46 ff 88 69 24 fa 49 24 93 e8 92 49 27 d0 94 98 a7 ea 4a 49 0f ab 14 84 00 c6 cc 8f 00 00 00 00 00 00 05 00 04 00 00 00 2e 00 23 00 27 00 00 00 00 00 1e cf ff fd 80 06 02 30 01 02 30 04 3e c0 20 20 41 18 cf ff e4 b1 49 0f ec 24 a4 87 ea 85 21 0f 64 92 04 f6 60 84 1b 21 83 db 32 c0 00 00 1e ce 40 14 02 80 a0 28 14 14 28 be 9d 6a a9 ff e5 6a 5f fe 2a a9 ff 95 91 fa 90 d4 88 94 82 20 a0 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 fa 08 a3 36 7f f4 92 48 1e c9 24 02 f4 92 06 3f a4 80 67 18 31 d8 c2 90 00 c6 cc 69 00 00 00 00 00 00 06 00 04 00 00 00 21 00 19 00 18 00 00 00 00 00 1e cf ff d8 00 20 01 02 20 44 11 06 c8 44 a2 7a 20 42 ec 69 ab 01 25 a4 e2 89 22 93 f2 2a 00 00 00 1e cf d8 02 40 a4 0d 04 d0 28 6a 50 57 20 1e 56 83 0b 61 04 7c c6 60 00 00 1e cd fb 01 88 18 80 b0 22 35 09 ea 06 d8 e8 46 5a d0 84 3b c7 1c c6 cc 63 00 00 00 00 00 00 07 00 04 00 00 00 1f 00 19 00 14 00 00 00 00 00 1e cf ff 20 20 80 88 11 03 b0 84 22 24 28 ee 62 e1 0c f8 21 1f 46 14 a0 b4 4b 0e 28 c0 00 00 1e cf f2 00 90 59 00 20 08 b4 4a 74 08 b2 5a 22 0c 84 07 05 1a 8c 18 00 00 1e cd fc 80 84 16 49 49 59 0c 86 9d 22 ad 22 a5 14 00 c6 cc 75 00 00 00 00 00 00 08 00 04 00 00 00 29 00 1f 00 16 00 00 00 00 00 1e cf fd 80 44 04 40 88 2d 82 21 22 4b e8 29 18 df fc 48 43 4f d8 42 42 7e c2 12 43 e8 42 48 7f f0 21 09 3d 63 0d 00 00 00 1e cf f9 02 c8 00 80 90 06 1d 22 95 4a 1b 49 23 2b 8d 8a 29 7f 88 8a ff 09 15 fe 0a 48 00 00 1e cd fd 82 24 00 43 c8 89 04 9a b9 0d 62 34 0b b0 a5 c2 30 c6 cc 67 00 00 00 00 00 00 09 00 04 00 00 00 22 00 17 00 17 00 00 00 00 00 1e cf f9 00 08 3c 82 10 92 05 11 5d 12 8f e8 c6 3f b6 31 8d fb 24 24 0f d9 09 24 3f a2 49 0c 80 00 00 1e cf fb 00 88 04 80 12 a2 45 02 8d 65 16 99 24 55 c5 36 45 14 00 00 1e cd fd 81 24 04 42 48 11 02 90 85 ea 05 dc 6d 01 67 16 61 00 c6 cc 58 00 00 00 00 00 00 0a 00 04 00 00 00 1b 00 12 00 14 00 00 00 00 00 1e cf f6 00 90 01 01 20 68 6a 1a 74 68 54 a5 30 53 b0 08 9d a0 81 3b 30 c0 00 00 1e cf f9 01 08 2c 80 14 02 0d 31 3a 02 a9 08 a0 00 00 1e cd fd 80 24 00 40 48 01 06 80 84 5b 44 ba 12 39 40 c6 cc 5a 00 00 00 00 00 00 0b 00 04 00 00 00 1d 00 12 00 14 00 00 00 00 00 1e cf fb 00 48 14 82 90 02 01 25 2a 0d 35 a2 89 42 8d 43 98 2d 8a d6 8d 01 68 00 00 00 1e cf f6 02 10 59 02 21 a8 24 f4 4b 50 6a 00 d0 00 00 1e cd fd 80 a4 00 40 48 01 06 84 84 41 40 db 92 06 00 c6 cc 5f 00 00 00 00 00 00 0c 00 04 00 00 00 21 00 17 00 10 00 00 00 00 00 1e cf fe 40 31 02 90 52 01 21 48 64 a8 3a 2b 24 8d c5 1a 45 1a 28 a2 47 1d e1 5a 5f ba 23 80 00 00 1e cf f2 04 10 09 00 20 68 a4 55 49 5e 48 a4 8a 56 80 49 23 00 00 00 1e cd fc 8a 64 00 40 c8 41 02 de 81 0a c0 c6 cc 62 00 00 00 00 00 00 0d 00 04 00 00 00 1f 00 18 00 14 00 00 00 00 00 1e cf ff 60 38 81 c8 04 81 90 e4 32 0d 19 76 49 35 34 28 af c8 8d 14 73 c7 69 7e 85 58 00 00 1e cf ec 0c 20 32 1c 40 52 68 0b 50 22 81 28 1a 8b 05 20 2c 83 00 00 00 1e cd fc 81 a4 00 44 48 01 1e 80 b5 13 21 8a 4b 45 68 c6 cc 68 00 00 00 00 00 00 0e 00 04 00 00 00 21 00 1b 00 15 00 00 00 00 00 1e cf ff b0 14 40 62 06 40 08 09 04 8c 95 34 75 29 4d e8 51 5f 89 1b 44 77 e4 29 b1 0d 41 00 00 00 1e cf e4 06 20 92 10 41 e8 04 64 f4 0c 36 86 16 c6 1e c2 0f 63 19 c2 08 00 00 00 1e cd fb 0c 48 08 85 90 42 25 19 2a 94 2b 35 87 10 e7 00 c6 cc 5b 00 00 00 00 00 00 0f 00 04 00 00 00 19 00 14 00 17 00 00 00 00 00 1e cf ff d8 02 20 91 00 22 64 03 14 a9 4a d5 88 a4 6a 43 99 10 65 80 00 00 1e cf d8 58 40 e4 19 09 43 24 a2 5a 83 8b 20 5b 08 b0 00 00 1e cd fb 00 48 00 88 90 a2 05 7d 12 56 92 49 8e 28 d4 90 94 88 c6 cc 71 00 00 00 00 00 00 00 00 05 00 00 00 31 00 19 00 10 00 00 00 00 00 1e cf f6 03 90 19 01 20 28 0f d1 49 58 51 47 f2 4a 2d 5f ff e0 08 db 7f f0 02 b6 df fc 00 b6 dd ff f0 04 97 2f bf c0 82 de cd ff 44 37 76 64 00 00 1e ce 40 e4 02 86 20 68 84 74 c9 91 a8 c7 b0 84 70 c6 71 8c df 30 86 00 00 1e cd 20 a9 0c a4 28 62 05 65 02 95 89 b0 c6 cc 82 00 00 00 00 00 00 01 00 05 00 00 00 3a 00 1b 00 16 00 00 00 00 00 1e cf fd 80 64 02 40 48 0b 02 82 85 07 fd 12 4b 55 d7 7f fc 6d 9b 5b ff fc 35 36 d9 bf ff c3 35 6d bb ff ff 0a aa 66 d9 ff 0a ed b7 5f ff f8 ea ad b2 ff ff 8e aa d9 20 00 00 1e dc 40 44 07 40 90 44 3d 01 22 25 6a 20 ba 18 76 10 7b 18 e2 05 10 a5 00 00 00 1e cd 20 19 09 a2 a8 02 05 09 19 72 35 98 f3 08 6f 99 9b 40 c6 cc 89 00 00 00 00 00 00 02 00 05 00 00 00 2d 00 21 00 24 00 00 00 00 00 1e cf ff d8 02 20 13 01 20 24 0b 04 85 0a 1f e9 29 6b 95 ff fe 2c aa df ff e2 c9 44 ff c5 52 6f ca 8c 42 11 c2 1b 3f a1 a1 a6 00 00 00 1e cc c0 64 12 80 21 a8 04 d4 4a d3 46 a5 29 df e0 95 5f f8 56 ab ff f1 25 56 ff fc 4b 55 80 00 00 1e cc 40 c4 06 86 20 74 02 42 24 3a 4c 64 7f 63 1a 49 e9 09 24 cf d5 24 92 4f d4 96 29 27 ea 4b 14 90 c6 cc 99 00 00 00 00 00 00 03 00 05 00 00 00 31 00 27 00 2a 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 40 02 10 40 11 84 42 82 04 05 02 4d b4 31 a4 9d 09 24 93 d2 49 24 9f 64 92 43 3e 88 42 49 3d 0a 42 40 00 00 1e cd 20 19 02 a0 28 0a 05 03 a5 42 9a 55 3d 2a ab ff ca b5 5f fe 21 5a bf fc 55 69 ff 95 54 ff cd 14 bf ca 90 00 00 1e cc c0 44 00 81 20 08 04 1f 40 89 04 22 37 ff 49 0c 92 7e a5 24 98 bf 52 52 49 3f 61 25 20 7b 8a 40 86 c8 18 7b 31 80 c6 cc 84 00 00 00 00 00 00 04 00 05 00 00 00 2c 00 22 00 1f 00 00 00 00 00 1e cf ff fe c0 21 80 04 00 40 0c 00 80 40 43 c8 10 42 3d 24 fe ac 52 49 3e 88 52 40 e9 24 84 3b 09 20 5d b1 86 a3 19 4c 65 80 00 00 1e ce c0 14 02 80 a0 28 14 14 28 be 8d 2a a9 3f f2 d4 9f e5 48 fd 48 9f a4 44 a1 46 1c 21 c3 00 00 00 1e cd c8 00 40 04 02 80 20 10 91 fa 04 10 8c 2e d9 8c e6 20 e2 08 2d 84 1c 40 ec 05 00 c6 cc 68 00 00 00 00 00 00 05 00 05 00 00 00 22 00 19 00 16 00 00 00 00 00 1e cf ff e4 00 10 00 81 08 29 0c 49 22 22 55 6d 12 54 9a 4a ff 11 2b f0 a5 5f f9 14 af fc a2 a0 00 00 1e cf e4 01 21 32 04 42 51 88 6b 11 d6 63 cc 63 8c 62 c4 10 df 19 98 00 00 1e cd fb 01 08 2c 80 10 d2 01 89 2a a6 5c 69 29 1c 77 88 e0 c6 cc 86 00 00 00 00 00 00 06 00 05 00 00 00 27 00 27 00 21 00 00 00 00 00 1e cf ff c8 06 20 31 03 20 64 05 86 42 46 9a ba ba 4b ff 2a 93 fc 52 a7 fe 16 95 ff e2 a9 4f fc 8b 4b ff 0a c8 00 00 1e cf ec 00 20 62 04 40 f4 11 11 12 04 7a 99 8d fd 06 6c 7f 42 10 93 d8 42 43 7b 21 21 0f e2 12 43 7b 09 21 00 00 00 1e cd fc 80 a4 12 40 18 29 0e 82 83 4a aa d3 71 d3 f4 29 5f e4 55 3f 0a 95 fe 12 ab ff 03 52 c6 cc 7d 00 00 00 00 00 00 07 00 05 00 00 00 25 00 1f 00 22 00 00 00 00 00 1e cf ff f2 01 88 0c 40 04 04 84 60 91 91 aa 8d 4a 52 fc a4 5f e6 48 fd 25 2f f1 4a 3f cc a5 bf d4 54 80 00 00 1e cf c8 00 40 44 2d 02 42 23 d1 20 51 ba 20 83 cc cc 5d 99 85 99 8c fb 31 8b 31 06 00 00 00 1e cd f9 00 c8 04 83 90 29 02 41 46 9d 0d 2e e2 bf cc 91 fa 49 3f cc 91 fa 91 3f 29 17 f9 91 00 c6 cc 64 00 00 00 00 00 00 08 00 05 00 00 00 1f 00 17 00 17 00 00 00 00 00 1e cf ff f9 00 84 0c 20 02 06 e0 c8 04 44 84 79 22 96 83 4a 34 e4 a4 75 f9 22 78 a8 60 00 00 1e cf 90 1c 80 c8 1a 01 d0 e8 a8 b5 29 aa 2d 11 e8 62 d3 00 58 00 00 1e cd ec 06 20 62 03 20 c4 4d 29 2a 36 16 7b 14 1e 09 a0 f2 80 c6 cc 99 00 00 00 00 00 00 09 00 05 00 00 00 34 00 27 00 27 00 00 00 00 00 1e cf ff ec 00 30 10 80 08 01 00 40 20 21 ff a0 41 88 e9 3f e8 52 49 8b ff 48 24 b1 67 c8 4a 49 91 ec 01 09 93 3c 80 8c 93 3b 08 12 66 72 0c 86 4e 00 00 00 1e cf d8 06 40 a4 15 00 e8 32 1a 54 5e 9a 5d cf fc 32 97 ff 81 55 7f f8 0a 55 ff e0 45 2e fc 10 aa ff c0 46 a0 00 00 1e cd f6 03 10 31 01 b0 02 09 19 1f 44 92 99 7c 46 6c ff 83 1a 43 ff 90 84 86 7d 04 24 93 d0 20 da 7a 40 d2 40 c6 cc 88 00 00 00 00 00 00 0a 00 05 00 00 00 32 00 20 00 1f 00 00 00 00 00 1e cf fe c0 01 01 10 bb 00 20 08 44 49 7e 81 08 8c 2f ed 92 48 1f ff fc 91 09 24 7f f5 94 42 80 bf fe b2 44 42 4b f9 4a 88 88 4b fb 4a 8a 88 50 00 00 1e cf f2 08 10 19 0c 60 28 34 94 1a 34 c8 69 72 8a ff ca a4 ff c9 51 7f fa 8a a7 ff 95 64 00 00 1e cd fb 04 48 08 86 90 62 26 84 91 3e 82 88 27 63 10 fe c6 31 8f f9 48 40 9e c9 08 00 c6 cc 4b 00 00 00 00 00 00 0b 00 05 00 00 00 1a 00 13 00 07 00 00 00 00 00 1c a8 51 1f ff e8 5c 40 04 04 46 10 4d 49 0c b8 f7 78 73 19 14 f5 88 b0 00 00 1e cf f2 11 90 11 0d 20 48 f4 45 2a 95 2c 91 4a 00 00 00 1e cd fb 28 00 c6 cc 61 00 00 00 00 00 00 0c 00 05 00 00 00 1b 00 17 00 18 00 00 00 00 00 1e cf fd 80 24 00 40 c8 39 01 41 6e 89 14 28 6a 28 12 41 27 69 14 57 e2 88 00 00 1e cf f2 07 10 09 0e 20 28 c4 35 49 5a 69 85 88 2c 51 34 18 60 00 00 1e cd fb 02 c8 00 80 90 02 1d 21 1a c4 ca 34 e2 8a 38 83 88 12 88 c6 cc 61 00 00 00 00 00 00 0d 00 05 00 00 00 18 00 1b 00 17 00 00 00 00 00 1e cf fe c0 b1 02 30 32 12 41 30 54 a4 4c aa 0f 0d 11 3d 0a 1d 00 00 00 1e cf f2 00 10 09 00 21 08 14 14 0a 91 2c 91 0e 28 a2 0e 61 1c 40 8b 30 80 00 00 1e cd f9 00 08 04 81 10 12 9d 01 6a 47 54 79 02 4a 12 50 92 80 c6 cc 7a 00 00 00 00 00 00 0e 00 05 00 00 00 23 00 1f 00 21 00 00 00 00 00 1e cf ff 60 80 80 c8 11 01 20 08 48 53 a0 a7 76 33 7d 83 33 e1 99 bf 83 33 df f0 10 6c 7f c4 21 24 00 00 1e cf ec 00 20 42 08 40 e8 44 64 74 8b 2e 41 0c f8 cc 47 cc 62 3e c2 08 e1 06 71 8c 00 00 00 1e cd f9 01 c8 14 81 30 32 1d 0d 06 85 75 aa 63 92 fc 89 3f 22 a5 fe 22 97 f9 15 2f f2 45 40 c6 cc 77 00 00 00 00 00 00 0f 00 05 00 00 00 28 00 19 00 1f 00 00 00 00 00 1c a8 51 1f ff fe 80 02 02 20 02 28 46 14 90 12 28 a8 76 63 17 6c d8 2f 6d 0c 17 de 24 83 7f f0 52 40 9f 4c 20 44 00 00 1e cf c8 08 41 04 06 81 21 91 68 12 32 e3 48 16 50 92 84 94 24 85 62 00 00 1e cd f2 00 90 19 05 20 94 1a 1a 34 94 d6 4b 69 23 6a 85 3f 29 09 a4 84 d2 22 65 0a 00 c6 cc 7f 00 00 00 00 00 00 00 00 06 00 00 00 33 00 18 00 1d 00 00 00 00 00 1e ce c0 5a 01 a0 34 07 40 c8 36 0f e4 64 59 6b 7b 7b ff fc 01 13 99 99 fd 10 9b 97 73 fa 02 5b d9 7f fc 02 5b b7 7e 01 2d b5 fe 05 5a bf f0 15 58 00 00 1e d4 40 64 04 80 d0 64 22 1d 32 25 6a 31 c2 94 0b a8 f5 3c 72 40 00 00 1e da 40 04 02 83 20 68 a4 15 49 54 20 93 99 c2 08 dd 63 36 f8 21 a4 9d 0c 69 20 c6 cc 97 00 00 00 00 00 00 01 00 06 00 00 00 2d 00 27 00 2c 00 00 00 00 00 1e cf fe c0 15 00 c8 0b 01 90 2c 12 12 2f ff 45 4a ad 6a 3f ff fc 72 c9 24 fe 37 50 23 fc d4 b1 b9 51 6d 0a 66 68 66 7b e0 8d b4 00 00 1e cd 20 11 02 a0 68 12 09 05 2a 14 51 9a aa ff 09 57 7f e0 5a af ff 10 ab 5f fe 21 56 bf fc 48 ac ff ca 34 80 00 00 1e ce 40 24 08 80 20 08 04 1e 91 12 08 45 f6 6d 24 9f 49 24 99 3f 42 98 a4 ce d2 52 62 9f d4 a1 49 27 ea 4a 49 27 ea 4a 48 40 c6 cc 99 00 00 00 00 00 00 02 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff ff f4 08 08 10 20 00 80 04 00 85 20 09 04 08 20 53 e8 52 49 27 d1 01 60 c1 f5 29 24 87 aa 12 42 7b 24 84 0d 90 86 1d 0d 06 80 00 00 1e cc c0 14 02 80 d0 14 0a 0a 14 28 7e 95 55 d4 ff fc b5 65 ff f9 95 53 ff 2b 49 ff 95 49 fe 64 2b fc c4 69 0a 00 00 00 1e cd 60 01 00 20 08 05 00 80 81 05 1f f4 12 8d e9 0f d9 8a 60 87 d5 31 40 2d 92 41 9f d2 40 82 ed 06 3c c1 2c 14 c6 cc 65 00 00 00 00 00 00 03 00 06 00 00 00 23 00 18 00 13 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 00 80 21 11 d8 99 20 85 ed 8c 11 f6 63 5b a0 20 a3 07 60 94 61 d8 c9 80 00 00 1e cf c8 02 40 24 0d 03 42 68 28 d1 ad 49 65 54 86 28 40 34 2c a0 00 00 1e cd f9 00 08 08 82 10 52 19 25 12 d4 03 93 ac 00 c6 cc 56 00 00 00 00 00 00 04 00 06 00 00 00 1a 00 13 00 12 00 00 00 00 00 1e cf ff b0 00 40 c2 06 44 c8 02 89 02 b6 12 63 84 a4 51 5e 09 68 4a b0 00 00 1e cf f2 01 90 61 03 21 88 14 82 03 64 52 16 34 c0 00 00 1e cd fd 88 a4 00 42 c8 21 0e aa 91 1b 68 2c b0 c6 cc 80 00 00 00 00 00 00 05 00 06 00 00 00 28 00 24 00 1d 00 00 00 00 00 1e cf ff 90 14 40 62 06 c0 ac 19 0c 84 8d 14 72 5d 57 fe 15 4b fc 12 ab ff 08 aa ff c2 32 ef e2 2a e3 ff c0 2a dc 00 00 1e cf f6 02 10 21 00 20 7a 08 84 89 12 3b 08 42 ec 66 6f 8c cd be 02 1b 6e c0 c6 87 c4 21 8d b0 31 8c 00 00 1e cd fd 80 a4 0e 40 98 19 0e 89 42 a5 42 2d 49 c7 5e 1c af c4 95 f8 94 bf 24 90 c6 cc 99 00 00 00 00 00 00 06 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff f4 02 10 10 80 84 08 41 11 88 44 26 45 38 b5 ff f8 b0 ab 7f fe 24 aa 5f fe 0c 56 7f f8 aa a7 fe 16 95 ff f9 85 49 ff e2 d1 10 00 00 1e cf e4 00 20 22 00 40 10 48 08 7d 12 0a 46 7f d2 43 43 7b 09 21 0f e2 48 40 f8 90 c6 3f a1 20 43 e8 41 ad 46 68 00 00 1e cd fb 00 c8 0c 80 90 12 05 0b d0 91 a2 95 77 ff 95 95 7f f8 a8 d3 ff 28 d2 ff ca 32 bf f2 8a 9f e5 44 fd 22 00 c6 cc 6d 00 00 00 00 00 00 07 00 06 00 00 00 23 00 17 00 1c 00 00 00 00 00 1e cf ff fd 80 62 01 10 11 03 10 64 0b 09 19 32 d1 35 42 9f 94 44 d2 14 fd 42 b3 11 97 a0 cb 58 c0 00 00 1e cf 20 11 02 20 f4 01 08 92 91 5a 05 d0 19 51 ee f1 1c c2 ba 00 00 1e cd e4 01 20 12 06 41 50 5a 0a 34 6b 56 a2 53 49 69 e4 4c 06 12 73 29 8c c0 c6 cc 70 00 00 00 00 00 00 08 00 06 00 00 00 20 00 19 00 20 00 00 00 00 00 1e cf ff ff 90 14 20 70 81 18 28 83 11 44 12 33 82 24 05 0a 63 88 62 39 99 9b e3 48 63 00 00 00 1e ce 40 64 02 93 a0 48 74 54 54 2b ad ae 29 5f 8a 53 f2 52 7e 52 40 00 00 1e cd 90 24 81 88 1a 00 81 46 42 81 14 2b 0a c1 90 84 73 10 ce 23 33 7c cd 8c 7d 08 41 80 c6 cc 8e 00 00 00 00 00 00 09 00 06 00 00 00 2f 00 25 00 23 00 00 00 00 00 1e cf ff ff c8 02 10 00 40 84 08 c0 08 0a 1e 4c 20 20 84 7d 61 0f 4c f4 04 24 99 ec 09 24 cf 51 09 26 7a 24 84 93 b0 84 86 7b 21 09 10 00 00 1e ce 40 34 06 81 a0 28 14 0f 46 8d 14 aa bf f0 a9 d7 fe 14 aa ff c4 55 3f 14 95 fe 49 27 e9 22 fc 91 00 00 00 1e cd 60 01 03 20 08 02 01 07 d0 24 41 48 bc 43 6d ba 41 b4 3e 21 21 8f a1 0c 37 06 10 51 06 21 00 c6 cc 91 00 00 00 00 00 00 0a 00 06 00 00 00 39 00 20 00 21 00 00 00 00 00 1e cf ff fe 40 01 80 14 00 c0 14 01 80 c0 40 47 fb 0c 91 ce 42 9f ff a8 8d 11 09 7e d2 22 22 20 7d a2 a5 0a 17 fe 94 28 84 97 fd 44 a1 2c 3f a9 29 24 9f d8 0a 04 80 00 00 1e cf b0 05 80 c8 0a 02 83 42 f4 28 51 5a 93 95 51 7f 8a 49 f9 48 49 21 28 a1 0a 10 51 40 00 00 1e cd e4 00 20 02 00 40 90 88 3e 81 02 0a 21 7b 33 1f 6c c2 3e cc 69 31 92 c6 38 c1 da c3 80 c6 cc 5d 00 00 00 00 00 00 0b 00 06 00 00 00 1e 00 15 00 13 00 00 00 00 00 1e cf fe 40 01 04 90 12 04 40 12 51 a0 a4 94 52 6c 38 c1 d7 8c 52 20 76 05 e9 35 80 00 00 1e cf f6 0a 90 21 07 21 48 54 c4 6b 13 28 b1 0e 61 c8 00 00 00 1e cd fb 09 48 20 80 90 02 05 d1 0a b4 0b a8 d3 00 c6 cc 70 00 00 00 00 00 00 0c 00 06 00 00 00 2b 00 1c 00 12 00 00 00 00 00 1e cf fe c0 11 01 90 32 02 41 90 3d 19 09 15 ba 7d 4a 8f fc 35 2b ff f1 22 b3 ff c1 4a 57 ff e2 42 8d ff e2 11 2b ff 10 54 00 00 1e cf f6 00 10 31 07 60 88 44 5a 44 c9 dc 43 c4 31 c6 31 62 08 2c c6 16 c2 08 00 00 1e cd fb 02 48 00 80 90 22 2d 19 08 8a 5a 81 10 c6 cc 7a 00 00 00 00 00 00 0d 00 06 00 00 00 24 00 22 00 1d 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 48 02 29 4a 04 12 e8 8b f2 44 ff 32 27 f8 a4 9f f9 24 af ff 22 93 fc 2a 8e 00 00 1e cf ec 02 20 82 06 c0 90 88 f4 49 14 4e 84 31 f6 31 0f b3 19 bf a0 43 43 fa 10 34 3e 08 63 40 00 00 1e cd f9 02 48 18 84 90 62 1d 1d 05 2a ea b9 ca fd 0a 4f 14 54 fd 0a 57 e2 2a 00 c6 cc 71 00 00 00 00 00 00 0e 00 06 00 00 00 22 00 19 00 1f 00 00 00 00 00 1e cf ff c8 02 20 01 04 20 04 11 07 24 22 24 85 ea 62 33 e2 cd 9c 8c db 8b 08 b4 31 a0 c4 43 00 00 00 1e cf d8 08 40 c4 0e 80 22 11 54 27 48 aa 08 12 c1 68 1a 83 0f 66 00 00 00 1e cd f6 00 90 29 03 20 68 0e 82 4a 8d 34 6e 53 bf 44 53 c8 e2 52 08 52 10 a2 92 88 00 c6 cc 66 00 00 00 00 00 00 0f 00 06 00 00 00 24 00 12 00 19 00 00 00 00 00 1e cf ff 60 01 80 88 01 02 21 76 01 01 12 0f fa 10 d8 5f 66 c1 1f f4 83 1e 20 47 d8 c2 a0 21 6f 58 00 00 00 1e cf b0 18 82 48 32 12 84 4b 48 20 23 51 2c 00 00 00 1e cd d8 06 40 64 1d 00 d0 68 6a 29 55 65 c4 b4 87 4a 0e c5 68 05 5c c6 cc 78 00 00 00 00 00 00 00 00 07 00 00 00 22 00 1e 00 21 00 00 00 00 00 1e cf ff c8 0a 20 11 01 20 64 14 82 4e 48 e1 45 33 b3 36 6a c6 3c 65 04 6d a5 1b 1a 46 c6 86 80 00 00 1e cc c0 54 0a 81 a0 14 3a 1a 34 1a 6d 57 7e 22 a7 85 14 f1 c8 91 45 12 28 e7 8a 18 00 00 1e cc c0 44 04 80 20 08 04 1e 91 12 08 45 e2 1b 6d ec 09 0d 3a 08 cc f8 62 0b 18 45 cc 1c 38 c6 cc 78 00 00 00 00 00 00 01 00 07 00 00 00 26 00 1c 00 1f 00 00 00 00 00 1e cf ff f2 02 08 08 40 8c 0e 40 10 88 88 08 21 72 36 67 48 68 63 a4 86 83 b0 86 86 b0 d0 c6 b0 c6 82 6c 20 00 00 1e ce 40 14 02 81 a0 28 14 34 1e 85 34 bb bf c4 91 fa 23 bf 44 25 05 1a 80 50 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 f4 10 c8 c7 f3 36 0b 99 85 d8 cb 38 16 35 c3 cf 00 c6 cc 5f 00 00 00 00 00 00 02 00 07 00 00 00 1f 00 13 00 16 00 00 00 00 00 1e cf ff c8 00 20 21 02 20 84 0b 00 81 42 ce 54 33 0d 10 64 11 1b 60 ef cc 56 9f 96 20 00 00 1e cf c8 06 41 64 02 82 a2 a8 2b 98 10 20 78 41 20 00 00 1e cd fb 00 88 35 80 10 f6 01 3e c5 0a 49 34 b1 27 9c 78 f0 c6 cc 5b 00 00 00 00 00 00 03 00 07 00 00 00 1f 00 11 00 14 00 00 00 00 00 1e cf ff 20 18 80 08 09 08 20 09 d4 28 1b 46 2d 1d 41 29 c5 1b 39 cf fc 32 4f ff 29 52 00 00 1e cf e4 0a 21 42 20 44 11 8a 0b 90 a8 60 00 00 00 1e cd fc 80 e4 22 43 c8 39 0e 9a 8d 6b 2f 12 f1 e2 80 c6 cc 66 00 00 00 00 00 00 04 00 07 00 00 00 22 00 12 00 1b 00 00 00 00 00 1e cf ff 60 48 81 a4 04 85 90 52 59 19 07 64 b3 74 21 53 ff 21 4a ff c1 29 7f e1 25 3f c3 66 80 00 00 1e cf d8 10 42 04 41 0e 4d 29 23 54 cb 53 71 48 00 00 1e cd fb 01 c8 14 81 10 32 15 35 3a 24 5a 24 d1 b6 08 5c 83 1b f8 c6 86 00 c6 cc 88 00 00 00 00 00 00 05 00 07 00 00 00 36 00 1c 00 1f 00 00 00 00 00 1e cf ff 90 04 40 62 02 40 48 12 09 0a 0f e8 96 55 5c ff ff c4 92 b5 ff c2 2a d5 ff ff fc 22 25 97 7f fc 10 6c 9a ff f0 92 6d 5f fe 16 4b 5b ff 84 8a d2 80 00 00 1e cf c8 00 40 84 09 02 40 e8 09 12 27 51 44 98 49 07 8c 51 4e f2 22 bf 51 20 00 00 1e cd f6 01 90 19 03 20 68 0d 05 1a 54 d1 72 88 85 22 68 1c 53 18 e6 66 6f e9 09 0c 00 c6 cc 76 00 00 00 00 00 00 06 00 07 00 00 00 28 00 1a 00 1d 00 00 00 00 00 1e cf ff f6 00 88 04 c0 c4 0c 81 21 6c 24 24 49 72 7c f1 4b 7f f8 b4 42 7c dc 26 ff 0b 0d ea 8b 5f f9 51 9f a8 20 00 00 1e cf 20 21 05 a0 48 6a 09 15 9a 34 29 2d c9 44 97 89 27 92 29 e8 8a 00 00 00 1e cd d8 02 40 64 15 04 a0 d3 10 ac 45 c5 2d 88 21 d8 cc df 43 18 6e 30 41 4c 60 c6 cc 6d 00 00 00 00 00 00 07 00 07 00 00 00 1e 00 1b 00 1d 00 00 00 00 00 1e cf ff fe c0 30 80 84 10 40 c4 00 82 40 48 20 49 25 11 cc 20 cb 08 0c 41 44 91 24 00 00 1e ce c0 94 06 80 a0 1a 05 1d 1a 14 34 92 e5 78 8a 5e 44 09 08 94 5c c2 00 00 00 1e cd 90 10 81 08 12 03 43 21 22 43 51 88 f3 11 9b ec 61 8a 20 44 21 d8 30 a8 80 c6 cc 6d 00 00 00 00 00 00 08 00 07 00 00 00 22 00 1c 00 18 00 00 00 00 00 1e cf ff fe 40 00 80 84 00 40 84 10 83 22 22 20 61 76 31 8c 7d 08 60 b6 30 e4 02 d9 51 c6 d2 38 00 00 1e cf 90 0c 80 48 1a 06 82 d0 d0 a3 55 1a 94 a2 45 23 51 08 16 c0 49 a4 08 00 00 00 1e cd d8 00 40 44 09 04 40 e8 08 92 2b 43 18 a3 05 20 0d 24 16 00 c6 cc 65 00 00 00 00 00 00 09 00 07 00 00 00 22 00 17 00 15 00 00 00 00 00 1e cf ff f6 01 08 08 40 84 00 80 20 d8 88 89 2a bc 82 19 f3 18 dd 30 53 b0 e1 50 51 43 22 96 00 00 00 1e cf e4 01 20 52 0e 40 28 54 74 54 ad 2d 0a 60 62 b0 20 20 50 00 00 1e cd f6 04 10 39 02 21 48 14 64 28 91 0f 52 79 8e 51 c0 c6 cc 69 00 00 00 00 00 00 0a 00 07 00 00 00 2f 00 13 00 10 00 00 00 00 00 1c f0 4e df ff ff d0 00 40 82 00 10 02 00 80 47 30 10 62 06 9f 61 09 07 fd 20 42 1f c1 06 67 fd 02 04 6f f8 20 63 f8 83 1b f8 b1 9c 00 00 00 1e cf f6 02 90 51 10 20 68 c5 06 0b d0 93 64 d3 40 00 00 1e cd f9 01 08 24 81 10 92 dd 09 1b 92 e0 c6 cc 64 00 00 00 00 00 00 0b 00 07 00 00 00 25 00 14 00 14 00 00 00 00 00 1e cf fd 81 04 0a 40 58 01 04 8c 85 0d 45 12 bb 10 c5 e6 62 2f 8c c4 7f f4 81 8c 7f f2 10 21 3e 90 31 a0 00 00 1e cf f9 00 88 28 80 90 c2 0d 09 d3 a4 50 14 31 48 a0 00 00 1e cd f9 02 48 18 83 90 82 1d 21 0a d4 08 b8 d0 74 f0 c6 cc 61 00 00 00 00 00 00 0c 00 07 00 00 00 1f 00 16 00 15 00 00 00 00 00 1e cf fd 80 a4 06 40 c8 14 87 22 a1 41 49 24 bb c7 69 30 50 5d 03 f4 30 cf fa 1a 04 00 00 00 1e cf f2 04 10 21 01 60 c8 64 1a 05 49 92 6b 03 89 60 70 b0 00 00 1e cd f6 07 90 01 05 21 48 35 d4 0a d4 22 e7 02 68 35 10 c6 cc 7a 00 00 00 00 00 00 0d 00 07 00 00 00 1f 00 22 00 22 00 00 00 00 00 1e cf ff 20 08 80 48 19 03 21 2c 12 54 6a 74 a9 4e fc 45 12 28 e7 8a 39 85 06 a1 d9 00 00 00 1e cf e4 04 20 22 04 40 f4 21 09 12 3d 26 23 3f 98 d9 be 02 19 be 19 88 fb 0c 43 88 20 b3 10 40 00 00 1e cd f2 02 90 29 01 20 5a 0c 8a 8d 0a 1d 24 b9 5f 85 29 f8 92 7e 45 2b fc 92 5f 89 27 e4 8a 00 c6 cc 6a 00 00 00 00 00 00 0e 00 07 00 00 00 1c 00 1b 00 1c 00 00 00 00 00 1e cf ff c8 02 20 a1 02 20 24 51 38 85 02 aa 29 42 9c ec 65 08 14 66 72 c2 00 00 00 1e cf b0 00 81 08 4d 00 41 25 a4 56 91 55 10 a6 e6 31 e6 61 68 20 53 06 00 00 00 1e cd d8 02 40 a4 21 03 44 a1 50 a5 62 92 49 6d 45 a7 90 a2 48 a3 49 09 48 60 c6 cc 54 00 00 00 00 00 00 0f 00 07 00 00 00 1c 00 0e 00 13 00 00 00 00 00 1e cf ff c8 08 20 c1 12 21 a4 01 10 a5 12 89 45 58 41 e6 d6 17 66 61 76 66 00 00 00 1e cf 62 e1 00 a1 48 4a 01 0d 01 10 00 00 1e cd b0 1c 87 48 02 02 b9 42 52 81 16 16 72 82 80 c6 cc 53 00 00 00 00 00 00 00 00 08 00 00 00 1c 00 0e 00 12 00 00 00 00 00 1e cf e4 01 20 02 04 40 90 08 08 53 24 a5 31 0d 08 21 18 64 18 a2 26 40 5b 94 00 00 1e ce 40 54 14 85 a0 89 04 94 c2 c0 00 00 1e cd 60 89 08 a2 28 ba 01 05 12 11 2a 4b 10 00 c6 cc 52 00 00 00 00 00 00 01 00 08 00 00 00 1c 00 0d 00 12 00 00 00 00 00 1e cf 90 08 80 88 12 0a 80 44 44 95 25 2a 1b 98 c5 0c 28 c7 b0 45 43 0e 08 60 00 00 1e ce c1 64 0a 80 20 28 06 23 c0 00 00 1e cd 60 59 07 a2 68 aa 01 14 9e 81 54 0f 42 b0 c6 cc 54 00 00 00 00 00 00 02 00 08 00 00 00 24 00 0f 00 0a 00 00 00 00 00 1e ce c0 24 02 80 20 28 6d 05 5a 14 35 29 4d 0a 57 7f 81 ca fc 39 d7 f8 22 ae ff 01 d5 df f8 24 5b 80 00 00 1e ce c0 c4 02 80 24 08 14 04 28 81 00 00 00 1e cd 20 89 07 a2 ab 40 c6 cc 75 00 00 00 00 00 00 03 00 08 00 00 00 36 00 12 00 16 00 00 00 00 00 1e ce c0 14 02 80 a0 68 14 34 1f 46 8a 55 55 ff fe 2d 57 9f ff ff 09 96 da ff f8 db 76 d7 ff f0 ce 5c cb 7f f0 6a ee 65 bf fd 2a cd cc cb ff e0 d5 57 2b 32 00 00 1e ce 42 44 1a 80 22 c8 94 45 a8 94 58 86 88 2c 00 00 1e cd 20 09 07 a1 c8 0a 45 31 1a e4 4b 24 52 a8 c2 28 63 00 c6 cc 97 00 00 00 00 00 00 04 00 08 00 00 00 25 00 2b 00 30 00 00 00 00 00 1e cf d8 02 40 a4 05 03 40 a0 74 68 d1 5a a6 92 2f 72 0a a0 8b a9 99 bf 98 db 4f 68 12 d3 3e b4 93 32 00 00 00 1e ce 40 34 0a 81 a0 5a 15 0d 0a 14 bb 55 d5 ff e1 6a af ff c0 95 ab ff ff 84 92 6a ff c2 56 ad ff ff 84 32 d5 ff 80 b5 aa 00 00 1e cc c0 04 08 81 20 08 3e 84 89 02 08 7f a1 b6 d9 3f a9 49 26 2f f5 24 b1 62 ff a9 28 58 b3 e5 28 51 0a 7f e9 28 51 09 7f e9 28 50 a1 00 c6 cc 81 00 00 00 00 00 00 05 00 08 00 00 00 2a 00 1f 00 21 00 00 00 00 00 1e cf f9 00 48 04 80 90 12 05 05 0d 0a 1f e9 2a aa bb ff f0 29 45 fe 45 17 85 0a 40 cb db 31 af fb 11 21 0f d9 8a 12 40 00 00 1e cf 90 0c 81 48 1a 05 a0 50 51 a5 4b 4a b8 a7 e9 22 fc a2 26 91 13 48 89 a4 12 8e 68 00 00 1e cd b0 00 80 08 12 00 84 41 e8 10 20 a2 17 23 31 be c6 18 b3 31 0e 63 0b 30 ce c0 94 1c c0 c6 cc 6b 00 00 00 00 00 00 06 00 08 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 88 02 19 42 24 50 ac 22 10 18 47 99 98 b3 36 37 f4 86 86 3f a1 24 24 00 00 1e cf d8 02 40 a4 15 02 a0 51 53 a0 a6 d2 89 14 e1 45 10 10 24 96 11 80 00 00 1e cd f2 02 10 21 05 20 88 44 54 ca 52 2a 80 a8 9b 1c 4b 11 45 00 c6 cc 7a 00 00 00 00 00 00 07 00 08 00 00 00 22 00 23 00 1e 00 00 00 00 00 1e cf ff b0 04 41 22 09 21 24 19 04 82 d2 4d 29 c4 b9 fe 1c a7 f8 15 57 fa 09 2f f0 3a fc c4 80 00 00 1e cf f2 04 10 21 01 90 22 19 09 0e 91 25 3e 42 19 f3 33 37 c1 8c 69 a1 84 6d f0 61 1b 7c 10 c6 80 00 00 1e cd f9 00 08 04 80 10 12 09 05 12 95 9e 61 27 6a 14 57 91 18 8a 2b d1 14 f4 52 00 c6 cc 87 00 00 00 00 00 00 08 00 08 00 00 00 34 00 22 00 1a 00 00 00 00 00 1d 16 4d bf ff ff e8 04 20 21 05 08 31 09 c6 21 13 2c a4 d4 aa 5f ff e2 4a a5 ff fe 24 94 5f ff f0 24 aa ff ff e0 24 94 bf f0 82 ab 7f ff e1 24 15 40 00 00 1e cf e4 06 20 62 02 c0 90 c8 48 74 0a 29 97 b3 66 3e 34 31 8f 89 06 c7 c4 21 87 31 04 7d 98 c0 00 00 1e cd f9 07 48 10 83 90 52 09 15 2a 34 2d 72 bf 51 27 92 44 a4 84 22 8c c6 cc 70 00 00 00 00 00 00 09 00 08 00 00 00 2b 00 13 00 1b 00 00 00 00 00 1e cf ff f6 00 88 14 42 04 0c 85 22 90 48 c9 ac 8e a5 49 7f f9 49 57 ff f8 92 a2 ff fc 0a a5 7f ff 81 25 47 ff fc 41 2a 00 00 00 1e cf c8 0c 41 c4 49 09 40 23 27 40 c3 48 3d 00 2c 00 00 1e cd f9 00 c8 14 82 90 06 05 15 2a 2a 2d 25 8e 28 82 91 85 1c c5 07 82 40 c6 cc 62 00 00 00 00 00 00 0a 00 08 00 00 00 26 00 11 00 14 00 00 00 00 00 1e cf ff fb 03 84 02 60 22 14 20 48 64 04 25 d0 59 2e ff 29 27 fe 54 a7 ff 85 54 ff fc 45 2a ff ff 12 0a 28 00 00 1e cf b0 40 84 08 82 20 8f 40 27 a4 4d 95 00 00 00 1e cd ec 11 20 b2 04 40 51 2a 2c 50 26 75 02 48 08 38 c6 cc 70 00 00 00 00 00 00 0b 00 08 00 00 00 26 00 1a 00 19 00 00 00 00 00 1e cf ff f9 01 04 04 20 42 00 20 79 00 48 44 40 bc 49 0c 69 e8 08 4b f8 4c 4b a4 23 12 21 fa a1 9f e6 9d 9c 00 00 1e cf b0 04 83 98 2a 15 42 a5 51 a9 4a 45 d5 1c af 0e 2b c8 51 05 14 00 00 00 1e cd ec 11 60 02 1e c1 11 74 05 88 74 09 2e 61 16 61 0a 10 ce 63 10 c6 cc 75 00 00 00 00 00 00 0c 00 08 00 00 00 34 00 18 00 12 00 00 00 00 00 1e cf ff e4 00 10 10 81 08 21 03 c8 04 04 04 0a 47 fe 92 49 21 ff 56 2c 52 4f fd 24 a1 42 9f fd 22 88 50 97 dc 25 11 0a 7f f4 8a 22 12 5e 42 58 b2 00 00 00 1e cf c8 20 40 e4 11 02 40 a7 27 51 45 e5 54 e1 0e 46 a4 11 45 00 00 00 1e cd ec 09 21 72 4a 41 11 68 8a d1 28 f2 06 1c c6 cc 75 00 00 00 00 00 00 0d 00 08 00 00 00 1b 00 21 00 22 00 00 00 00 00 1e cf ff 90 24 42 e2 04 41 c8 a2 09 4a 27 52 88 39 bb 61 15 78 3a d8 56 80 00 00 1e cf c8 00 40 c4 11 01 a1 91 11 d2 28 da 18 59 04 33 e2 19 9f d8 66 6f e0 84 86 f4 84 34 80 00 00 1e cd e4 03 20 32 0a 40 a8 54 54 68 34 da ed a2 44 d1 25 fe 24 97 fe 49 4b ff 03 29 ff 84 a9 00 c6 cc 66 00 00 00 00 00 00 0e 00 08 00 00 00 20 00 15 00 1a 00 00 00 00 00 1e cf ff b0 14 40 02 02 40 08 22 09 0a 84 93 2d 08 df 04 38 21 1c 76 34 8d 6d c0 c5 26 30 00 00 1e cf 60 21 05 a0 08 7a 01 59 2a 86 d8 7b 05 b0 5b 06 00 00 00 1e cd b0 04 81 48 42 0a 89 40 a3 4e a5 24 98 51 4e 08 71 c9 a4 44 d2 14 c6 cc 56 00 00 00 00 00 00 0f 00 08 00 00 00 24 00 10 00 0b 00 00 00 00 00 1e cf ff 60 20 80 88 21 01 b0 44 02 44 68 e8 42 0b 91 8c 5e cd 84 7f 61 88 7f 63 18 2e 62 0f b1 9a 00 00 00 1e cf 21 b1 00 a1 88 0a 01 05 31 c2 2f 00 00 00 1e cd 60 19 24 a1 48 0b 10 c6 cc 50 00 00 00 00 00 00 00 00 09 00 00 00 18 00 0d 00 14 00 00 00 00 00 1e da 40 64 02 89 a1 c8 1a 32 14 ec 2d 16 08 7c d6 1e 10 5c 43 00 00 00 1f c8 40 14 04 80 a1 48 74 24 20 00 00 1e ce 43 24 02 86 20 68 c4 34 c8 50 5a 3b 59 32 c0 70 c6 cc 4e 00 00 00 00 00 00 01 00 09 00 00 00 1b 00 05 00 17 00 00 00 00 00 1e ce 40 04 1e 85 20 a8 14 44 c8 6e 2f 43 0b 10 cf 84 21 fc d8 21 fc 46 12 00 00 08 08 00 00 00 1e ce 40 04 0a 81 20 a8 24 54 09 54 6b 14 84 d6 1d 81 ec 02 c0 c6 cc 44 00 00 00 00 00 00 02 00 09 00 00 00 1e 00 05 00 0a 00 00 00 00 00 1e d0 40 54 06 80 a0 34 07 49 47 43 43 a9 dd 77 f8 0a af 32 2b 60 ae f0 71 45 51 00 00 00 08 08 00 00 00 1e ee 40 04 66 80 2b 00 c6 cc 86 00 00 00 00 00 00 03 00 09 00 00 00 41 00 18 00 16 00 00 00 00 00 1c a8 51 1e 80 64 06 40 64 0d 83 61 90 c8 c8 ff f6 aa ae ee 66 7f fe 0d 56 2b 95 7f ff 03 55 77 9b 9f ff a2 8c ae ae b3 ff e8 63 55 57 9b ff e8 26 6a 77 2f ff 06 26 73 32 ff e0 c4 c6 5b c8 00 00 1e cc 40 64 13 40 10 44 4d 01 22 9a 4c 2e c2 15 30 73 0e 31 c6 00 00 00 1e d2 40 84 04 80 d0 a4 12 0a 14 ca 25 48 22 44 02 92 07 00 c6 cc a4 00 00 00 00 00 00 04 00 09 00 00 00 2f 00 2c 00 32 00 00 00 00 00 1e cf ff fb 00 44 06 20 02 00 20 18 0c 79 0b 12 88 97 b3 ea b2 64 e7 5a c3 26 1b 46 49 c9 6d 09 33 e6 ba 84 9f e4 bb 42 4f f9 2d b4 30 00 00 1e cc 40 34 02 80 d0 14 0d 05 0a 0f fa 24 aa ba eb ff ff c2 24 93 5f f8 48 35 5f e0 2d 57 ff 80 54 af fc 04 69 fe 05 27 e4 74 00 00 1e cc 40 04 00 80 20 14 05 01 05 02 3f fa 08 47 a6 4c ff d4 92 c5 8b fe 85 09 62 9f f4 92 50 a4 ff 52 4a 49 3f a8 29 24 9f a8 29 21 3e a0 49 20 c6 cc 82 00 00 00 00 00 00 05 00 09 00 00 00 38 00 18 00 1b 00 00 00 00 00 1e cf ff e4 00 30 00 80 08 01 04 40 20 21 ff 40 86 10 d2 4f fa b1 62 93 3e e1 42 85 0b ff ea 32 85 0a 3f 71 11 0a 14 7e d2 14 44 28 fd 95 28 88 51 f9 25 11 0a 20 00 00 1e cf d8 06 40 64 22 82 a2 a8 2b a8 5e ac e4 41 08 82 8a c3 10 c0 00 00 1e cd f6 01 10 39 13 20 c8 54 54 89 53 71 2a 56 c2 a5 b1 15 6c 29 10 72 00 c6 cc 80 00 00 00 00 00 00 06 00 09 00 00 00 2f 00 1b 00 1f 00 00 00 00 00 1e cf fe 40 01 01 30 22 04 41 e4 02 02 04 10 8c ff e9 24 90 9f b2 62 90 9f d8 49 48 4f ec 25 24 27 f5 42 52 07 ea 93 04 0f d8 52 10 00 00 00 1e cf ec 04 20 82 02 41 11 08 28 93 2a 82 88 51 84 22 0c 76 10 71 06 23 00 00 00 1e cd f6 01 90 29 06 20 68 54 54 14 69 ad d3 52 47 92 4b f2 91 7e 52 2f f3 22 7e 92 00 c6 cc 73 00 00 00 00 00 00 07 00 09 00 00 00 2a 00 1a 00 18 00 00 00 00 00 1c a8 51 1f fe 80 04 04 80 10 24 52 2d 29 04 92 98 a7 5f b1 15 7f 82 4a ff 0a aa ff c2 b5 5f fe 21 ab 5f ff f3 0c da e8 00 00 1e cf d8 08 40 44 09 03 a0 90 91 25 a0 a2 09 21 8a 20 c4 60 ac 08 1c 00 00 00 1e cd ec 01 20 32 06 40 d0 54 34 68 d4 59 25 29 06 8d 04 54 69 cc c6 cc 7b 00 00 00 00 00 00 08 00 09 00 00 00 28 00 1d 00 1f 00 00 00 00 00 1e cf f9 00 48 0d 81 90 12 05 05 07 f4 24 56 aa 5f fe 12 a9 ff e2 a3 4f fc aa a7 f9 6a 2f f5 54 5f b9 8b 1c ac 60 00 00 1e cf 90 00 80 88 22 0b 40 22 29 40 7d 0b cb 48 e2 af c2 94 ff 29 53 ff 25 55 00 00 00 1e cd b0 0c 81 c8 22 02 91 51 4c 91 19 25 2e 41 0d bf 88 36 87 f1 09 24 9f 49 24 92 00 c6 cc 76 00 00 00 00 00 00 09 00 09 00 00 00 25 00 1b 00 1f 00 00 00 00 00 1e cf ff 60 18 80 48 09 01 20 c8 28 3f a1 22 49 5c bf ff 51 19 7f f8 a2 4b f0 28 a7 a1 41 e5 60 ee cc 30 00 00 1e ce c1 d4 08 81 a1 28 24 54 a9 29 ad d4 fc 94 9f e6 a2 7e 92 4f d2 86 00 00 00 1e cd 60 f1 01 d0 24 11 04 87 48 89 25 e8 c6 67 cd b1 8d d2 49 03 76 48 41 bf a4 21 08 c6 cc 70 00 00 00 00 00 00 0a 00 09 00 00 00 27 00 18 00 1a 00 00 00 00 00 1e cf ff ec 01 10 18 80 88 09 06 41 20 ec 24 db 7b 7e 4a 55 ff f8 11 4a ff c0 52 3f c9 22 fc 91 6f 48 21 c3 00 00 00 1e ce c0 34 12 81 20 68 74 44 69 55 45 5c 73 21 48 41 e0 ab 0e 00 00 00 1e cd 60 01 03 20 e8 12 19 15 12 45 13 42 10 51 0c 73 19 0c 0e 56 04 80 c6 cc 6b 00 00 00 00 00 00 0b 00 09 00 00 00 2a 00 15 00 15 00 00 00 00 00 1c a8 51 1f ff ff ff e8 04 10 10 40 41 02 12 16 10 84 22 24 24 6a 2a 91 ff e4 54 7f f9 54 27 24 89 8a 3b 7a 0a da 08 80 00 00 1e cf 60 19 03 a0 88 1a 15 3d ab 75 16 85 0a 70 a7 10 30 00 00 1e cd b0 08 81 08 22 03 40 23 24 42 a1 81 e1 84 88 24 f0 c6 cc 65 00 00 00 00 00 00 0c 00 09 00 00 00 29 00 12 00 13 00 00 00 00 00 1e cf ff ff 60 00 40 06 04 60 02 00 c0 63 ec 42 04 11 86 9f b0 92 49 9f 42 24 84 d0 86 11 c2 08 4d 61 8b 58 b3 26 00 00 00 1e cf b0 04 81 48 42 02 97 7c 42 b1 37 1a 81 0c 00 00 1e cd e4 04 21 42 0a 41 14 09 a8 16 a4 45 ce 04 54 c6 cc 81 00 00 00 00 00 00 0d 00 09 00 00 00 20 00 25 00 25 00 00 00 00 00 1e cf ff ec 00 30 68 80 88 01 04 41 20 21 55 4c a3 b5 87 5b 10 52 9d 81 29 58 51 24 2b 00 00 00 1e cf d8 08 40 04 09 00 41 f4 64 08 12 4f a1 08 db fe 20 69 0f e8 04 34 3e 04 33 7c 11 99 f6 31 0e 21 88 00 00 1e cd ec 03 20 32 02 40 d0 28 1e 9d 0a 29 54 f9 25 5f f8 25 4f fc 85 2b fc 05 4a ff 04 95 fe 44 97 e4 88 c6 cc 73 00 00 00 00 00 00 0e 00 09 00 00 00 1d 00 1d 00 22 00 00 00 00 00 1e cf ff e4 03 10 00 87 88 11 02 40 25 2c 4c b2 49 65 87 10 2b 58 d0 62 b0 46 00 00 00 1e cf 60 01 01 21 74 01 04 97 44 89 9d 08 c1 76 c6 3e cc c2 ec cc 2c c4 1e 62 0c 00 00 1e cd 90 04 80 c8 2a 09 a0 d0 53 a2 e8 a4 92 53 94 8b ff 2a 47 f9 92 3f ca 91 fe 54 8f f3 24 00 c6 cc 62 00 00 00 00 00 00 0f 00 09 00 00 00 24 00 14 00 13 00 00 00 00 00 1c a8 51 1f ff ff f4 00 10 20 83 04 08 41 31 09 84 c4 88 1e c0 c3 cc c2 d0 40 b6 62 2d 59 84 73 18 a0 00 00 1e ce 40 14 20 80 a2 08 34 04 2b 11 24 94 4c 86 40 38 00 00 1e cc c4 64 02 87 20 28 e4 15 68 10 48 94 54 73 00 c6 cc 58 00 00 00 00 00 00 00 00 0a 00 00 00 23 00 0f 00 0f 00 00 00 00 00 1e cf ec 06 20 62 03 61 04 12 1f 4c 89 24 f9 4c 47 fc 33 11 ff 46 0d 8f e0 31 9f c1 8c df c1 82 40 00 00 1e cc 40 d4 04 86 a0 48 f4 01 01 05 30 00 00 1f 46 40 04 36 80 21 a8 05 d4 0a d2 60 c6 cc 55 00 00 00 00 00 00 01 00 0a 00 00 00 28 00 0f 00 07 00 00 00 00 00 1e cf d8 04 40 44 1a 80 fd 00 42 22 24 47 d4 66 17 cc cd b7 ec 21 21 3f 61 09 09 fb 09 09 0f a4 24 34 fd 90 08 60 00 00 1f 38 40 34 18 84 a0 c8 b4 45 e8 04 40 00 00 1f d2 40 04 38 c6 cc 49 00 00 00 00 00 00 02 00 0a 00 00 00 1f 00 0e 00 05 00 00 00 00 00 1c f0 4e df 40 44 2c 80 a0 93 69 14 a3 41 44 ad ac 17 62 0a 7d 98 77 d9 85 6f e8 60 e0 00 00 1f c8 40 34 00 80 a0 48 14 24 aa 00 00 00 08 08 00 c6 cc 57 00 00 00 00 00 00 03 00 0a 00 00 00 2d 00 0e 00 05 00 00 00 00 00 1e cf 90 0d 80 48 0d 01 a0 74 19 0c 83 fb 12 4a 57 ad df ff 82 49 6d df fc 02 49 ad fe 00 55 7b f0 46 ab fc 0a 9d fe 44 53 0a 38 00 00 1e e0 40 74 18 81 a1 88 12 89 0d 20 00 00 08 08 00 c6 cc 82 00 00 00 00 00 00 04 00 0a 00 00 00 2f 00 1a 00 22 00 00 00 00 00 1e cf ff 90 05 40 26 03 20 24 09 10 83 e4 2c 64 b5 a9 bf ff ff 1a b6 43 9f f8 6d b6 04 f6 b6 a5 bf c3 55 4f ff c5 55 6f f2 84 68 e3 00 00 00 1e cc 40 54 06 81 a0 5a 15 15 1a 0a 49 24 81 ac 16 c1 6c 09 60 d4 0b 40 00 00 1e d0 40 24 04 80 20 08 3f 42 44 81 24 2f b1 9b 3f 8c 33 3e 20 86 7c 41 05 88 31 c4 08 e2 06 00 c6 cc 78 00 00 00 00 00 00 05 00 0a 00 00 00 37 00 12 00 18 00 00 00 00 00 1d c8 48 1f ff ff ff 40 00 80 06 00 10 03 00 60 18 04 0c f1 0c 10 b2 16 7d a8 51 09 4f fa a1 42 85 3f d4 94 29 27 f5 28 4a 49 fa 12 c5 03 d9 24 84 3d 92 42 08 00 00 1e ce c0 34 14 83 a0 c8 24 15 c8 dc 69 82 50 00 00 00 1e cd 90 00 81 c8 1a 04 8b 43 40 89 36 90 6b b0 72 0a 0b 40 d0 90 c6 cc 77 00 00 00 00 00 00 06 00 0a 00 00 00 2d 00 17 00 1c 00 00 00 00 00 1c f0 4e df ff e8 00 40 04 00 40 10 88 48 f2 0c 18 ee 6c 15 18 ea f6 b2 ae ff c6 23 5e fc 48 bc ff 7f e0 12 4d b7 ff 00 92 ed d0 00 00 1e ce c0 64 12 82 21 08 1a 02 84 b4 1c 59 87 30 e6 0e 61 c4 00 00 00 1e cd 60 19 00 a0 68 35 06 86 9d 06 8a c9 22 52 9a 47 12 45 1a 85 18 28 87 10 c6 cc 87 00 00 00 00 00 00 07 00 0a 00 00 00 39 00 19 00 1e 00 00 00 00 00 1e cf f6 01 b0 09 01 20 34 0d 06 85 07 fa 24 95 ae b5 ff ff f0 9b 32 64 ff f8 66 db 75 ff f8 6e 5b 6d ff fc 53 72 d9 3f fe 29 cb 64 bf ff 8a ae 49 33 ff 06 cc 90 60 00 00 1e ce 40 04 6c 82 a0 a8 04 04 a9 52 41 24 ab d8 95 7e 1d 2f c2 95 00 00 00 1e cc 40 14 14 81 a1 88 34 a4 48 6c 31 62 19 be 10 d9 f3 1b 37 f4 09 09 9e 84 84 98 c6 cc a4 00 00 00 00 00 00 08 00 0a 00 00 00 2f 00 2f 00 2f 00 00 00 00 00 1e cf ff c8 02 20 11 01 21 04 0b 04 85 32 0b d5 44 6d ef a8 69 24 fd 09 24 9c ff 40 4b 16 2f f4 24 b2 14 ff 42 51 0b 17 fd 4a 12 c5 80 00 00 1e d2 40 34 07 40 50 14 0a 07 e8 51 a2 95 aa ff ff 15 5e 6f ff f1 0c b4 7f c2 b5 6b ff fc 49 6a 9f ff 89 34 53 ff f3 25 45 ff e3 51 10 00 00 1e cc 40 24 00 81 50 04 02 02 1f d0 24 84 a3 7b ff f8 25 31 49 fd 49 42 92 7f 52 58 a4 9f d4 94 28 4f d4 a6 22 1f 64 c1 08 7d 85 21 00 c6 cc 78 00 00 00 00 00 00 09 00 0a 00 00 00 29 00 1a 00 1e 00 00 00 00 00 1e cf ff e4 02 10 00 85 b8 01 00 40 24 21 4f a1 10 c7 f7 a1 8c ef 64 90 0f d2 43 0d ff 29 20 43 b2 10 c6 f6 42 12 20 00 00 1e cf c8 02 40 64 0d 06 a0 50 d1 a6 a6 b3 2a 82 1c 29 41 0e 30 21 66 30 00 00 1e cd d8 00 40 04 09 00 41 21 f4 08 12 51 3a 33 0b 66 1d 84 45 81 28 12 12 a1 2e 00 c6 cc 69 00 00 00 00 00 00 0a 00 0a 00 00 00 1e 00 1d 00 17 00 00 00 00 00 1e cf ff c8 0a 20 91 00 21 64 21 0c 81 0b 89 29 48 b0 38 8b 61 07 31 04 7d 9b 18 00 00 00 1e cf ec 01 20 42 12 42 10 e8 ca 52 2c bb 10 ce 31 05 b1 88 df 33 33 7c 42 18 c0 00 00 1e cd f9 0c 48 08 85 90 42 1d 15 15 0a ed 4b 8a 4f 22 a3 c9 28 c6 cc 70 00 00 00 00 00 00 0b 00 0a 00 00 00 23 00 19 00 1d 00 00 00 00 00 1e cf ff e4 00 10 08 82 08 19 00 41 22 2a 45 ca 86 e3 10 df 63 0c 51 04 37 d8 66 cc c6 23 b3 58 c0 00 00 1e cf ec 06 20 92 04 42 90 28 ca 51 2c d2 08 2d 0c 62 20 c4 40 ec 40 00 00 1e cd f9 00 c8 24 81 30 12 25 11 2a 94 29 2c 94 91 49 e4 8a 7a 24 4a 88 c4 51 80 c6 cc 69 00 00 00 00 00 00 0c 00 0a 00 00 00 1d 00 1b 00 1a 00 00 00 00 00 1e cf ff d8 02 20 01 01 20 04 09 00 85 12 05 50 81 cc 56 98 c1 83 82 04 a0 8a 20 00 00 1e cf e4 02 20 82 06 42 10 88 34 49 17 61 04 90 c5 10 22 30 54 04 28 81 80 00 00 1e cd f2 06 90 11 05 20 e8 24 54 a9 15 69 0e 71 91 08 8a 3b d1 08 8e 30 c6 cc 69 00 00 00 00 00 00 0d 00 0a 00 00 00 1c 00 1a 00 1c 00 00 00 00 00 1e cf ff d8 02 20 e3 03 21 8c 29 00 85 35 d4 24 ad 09 0e 68 25 a5 04 15 11 00 00 00 1e cf c8 08 40 44 11 01 a1 90 92 d0 2c a7 b0 c2 88 31 0c 71 00 e5 14 00 00 00 1e cd ec 03 20 32 0a 40 a8 34 54 68 a9 b4 94 94 51 5e 85 19 0a 0d 44 c8 1a 00 c6 cc 67 00 00 00 00 00 00 0e 00 0a 00 00 00 20 00 14 00 1c 00 00 00 00 00 1c f0 4e df ff ff f4 1c 10 e0 88 04 08 40 16 08 44 0d 90 a0 86 1c 8c 39 bb f2 0a d9 06 00 00 00 1e cf 60 11 02 20 f4 01 04 96 91 5a 02 0f 70 94 01 80 00 00 1e cd c8 02 40 24 0d 03 42 68 28 d1 aa 8d dc 53 c8 a3 0a 15 e8 71 07 0c 80 90 c6 cc 52 00 00 00 00 00 00 0f 00 0a 00 00 00 1b 00 0c 00 14 00 00 00 00 00 1e cf ff d8 00 20 61 07 20 44 21 04 81 1a c6 96 80 85 64 60 f4 9c 10 ac 00 00 00 1e ce c1 c4 06 83 21 68 02 a0 00 00 1e cd 20 09 03 a0 c8 3a 21 1d 42 31 5a 8d 21 c7 38 00 c6 cc 56 00 00 00 00 00 00 00 00 0b 00 00 00 1f 00 16 00 0a 00 00 00 00 00 1e cf ff d8 0c 20 41 00 20 36 20 88 43 24 22 86 57 18 c7 d8 41 d6 b1 9c 60 a1 4e 21 58 00 00 1e cc 42 24 0a 81 21 68 04 f4 0b 52 4a 0d 42 c8 d6 5a 10 56 00 00 1e da 40 44 1a 80 30 80 c6 cc 58 00 00 00 00 00 00 01 00 0b 00 00 00 22 00 13 00 0c 00 00 00 00 00 1e cf ff b0 00 40 42 04 40 88 02 0e c4 44 49 4b e4 21 9f cc 63 7f 18 63 cd 30 b3 08 58 43 98 30 00 00 1e cc 42 24 02 87 21 28 64 34 09 54 09 50 22 83 40 00 00 1f 2a 40 04 6e 80 21 e8 26 10 c6 cc 48 00 00 00 00 00 00 02 00 0b 00 00 00 1a 00 10 00 07 00 00 00 00 00 1e cf fe 40 41 05 c8 11 0d 90 04 82 12 3a cb 45 76 04 d0 34 2d 01 28 14 00 00 1e cc 40 74 0c a4 20 a8 a4 b4 89 d8 22 e0 00 00 1f ee 40 04 1c c6 cc 47 00 00 00 00 00 00 03 00 0b 00 00 00 1c 00 0f 00 05 00 00 00 00 00 1e cf fd 80 24 0a 41 c8 11 02 96 a5 4a 09 65 11 c1 94 10 b2 04 2c 33 38 d6 00 00 00 1e cc 40 14 0c 80 a0 88 d4 25 e8 01 28 00 00 08 08 00 c6 cc 5c 00 00 00 00 00 00 04 00 0b 00 00 00 25 00 12 00 0e 00 00 00 00 00 1e cf ff 20 28 82 08 19 08 20 88 3a 02 64 97 90 42 1f cc cd 8f e6 48 42 7a 42 43 4f b0 90 92 7a 42 43 40 00 00 1e ee 40 04 48 80 a1 88 34 c4 6b 17 20 d3 8e 00 00 00 1e d8 40 b4 0c 84 a1 88 34 e4 22 c0 c6 cc 63 00 00 00 00 00 00 05 00 0b 00 00 00 26 00 14 00 12 00 00 00 00 00 1e cf ff 20 10 80 08 11 02 20 ec 02 04 09 31 72 30 bb 66 33 e6 c3 17 b4 31 87 f4 84 19 fd 21 08 5f 43 01 00 00 00 1e d2 40 e4 02 87 20 68 c4 55 49 5a 26 c3 c8 2c 82 c0 00 00 1e cc 43 54 04 80 a0 08 94 84 ab 91 28 91 4a 18 c6 cc 79 00 00 00 00 00 00 06 00 0b 00 00 00 39 00 11 00 18 00 00 00 00 00 1c f0 4e df ff d0 18 81 98 09 81 60 b0 c8 3e cc 92 95 fa df ff 82 4b 77 67 f8 02 5b d7 bf d1 25 dd 7b fc 01 2d ec bf ff c0 11 6e 66 7f c0 89 72 e5 ff ff 04 45 b9 96 00 00 1e ce 40 64 12 82 21 68 44 b4 ca 54 68 1c 00 00 00 1e cc 40 74 10 83 a0 48 d4 06 c8 5e 4d 84 3c c2 23 e6 10 df 30 86 c6 cc 9b 00 00 00 00 00 00 07 00 0b 00 00 00 30 00 28 00 2c 00 00 00 00 00 1e cf ff ec 01 70 0a 80 98 0b 02 41 24 f9 0b 19 2d 68 df f6 ed 52 1f ff e7 2c 12 4f c9 65 08 7f fa 59 49 27 2d 41 1e f5 a8 cf 73 68 87 a0 00 00 1e de 40 34 02 80 a0 1d 06 8a 85 0a 28 f7 75 57 ff 91 a9 7f e1 1a af ff 10 a3 5f fe 21 55 7f f8 8a cb ff c4 56 40 00 00 1e cc 40 44 00 81 20 08 04 1f 44 89 04 22 5f ff 42 49 24 fa 24 92 49 fa 82 92 49 fa 92 92 43 e8 92 49 0f a1 49 24 3e 89 24 90 c6 cc 88 00 00 00 00 00 00 08 00 0b 00 00 00 35 00 1e 00 1e 00 00 00 00 00 1e cf ff ff c8 00 30 00 40 04 00 c0 08 06 02 02 3e 53 18 64 33 fe c2 85 0a 1f d4 b1 49 27 f5 28 4a 49 fd 50 91 84 fe c2 50 24 9f d4 96 09 27 f5 42 48 90 00 00 1e cf 60 0b 00 a0 28 1a 0d 0b d0 a1 45 65 6a 51 59 ea 0c 71 01 ce 10 ce 10 87 08 40 00 00 1e cd c8 00 40 04 01 00 42 21 f4 08 12 23 a1 18 7b 05 a0 49 0a 73 64 8b d9 24 f0 e4 c6 cc 83 00 00 00 00 00 00 09 00 0b 00 00 00 30 00 1d 00 1f 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 08 82 20 10 e4 44 08 64 6f f8 90 92 1f f4 84 92 4f a1 49 24 9f a9 0c 52 4f d0 94 92 67 69 43 24 3f 50 c5 0c 00 00 00 1e cf ec 06 20 42 06 42 10 88 2a 11 27 41 4c 5b 18 87 63 0a 41 85 b0 83 d8 41 80 00 00 1e cd f6 04 90 29 00 21 28 34 2a 14 e9 a5 35 14 97 e9 24 fd 24 9f a4 4b f2 44 fc 91 40 c6 cc 7c 00 00 00 00 00 00 0a 00 0b 00 00 00 2a 00 1d 00 1e 00 00 00 00 00 1c f0 4e df ff ff a0 20 82 04 00 41 08 2e 01 01 22 0c 7d 0d 0c 3e 84 83 3e 90 c6 1f d8 42 06 ec 84 1a e2 41 8b b5 e0 c0 00 00 1e cf d8 04 40 44 09 02 40 e8 09 11 2b 41 04 3c c4 11 cc 31 d8 41 c4 0e c0 96 00 00 00 1e cd ec 03 20 32 06 40 50 5a 0a 34 69 aa ee 44 a2 44 a2 29 e4 51 88 e2 50 e2 48 e0 c6 cc 5b 00 00 00 00 00 00 0b 00 0b 00 00 00 1e 00 12 00 14 00 00 00 00 00 1e cf fe c0 81 03 90 02 04 40 90 13 21 41 68 56 0c 12 4a 47 69 b1 22 48 ad 3c b4 80 00 00 1e cf 60 31 04 a0 08 62 05 18 e8 85 04 4a 4a 20 00 00 1e cd b0 0c 81 48 32 02 87 46 42 a5 45 85 58 e0 2a 00 c6 cc 5c 00 00 00 00 00 00 0c 00 0b 00 00 00 20 00 16 00 0f 00 00 00 00 00 1e cf fe 40 01 06 10 12 08 40 90 10 a2 45 04 96 91 47 3c 8e 25 0a 2b f4 45 3f 48 89 a5 a8 00 00 1e cf 20 31 1d 20 68 02 05 01 5a 04 50 e8 28 c5 93 07 30 60 00 00 1e cd 60 09 03 a0 c8 0a 35 01 5a 44 40 c6 cc 46 00 00 00 00 00 00 0d 00 0b 00 00 00 19 00 0c 00 0a 00 00 00 00 00 1e cf fd 81 64 08 41 c8 41 06 96 81 3b 0b 35 8e 18 a0 85 1c d4 28 c0 00 00 1e ce c0 a4 0a 82 21 68 02 e8 00 00 1e cc c0 74 10 81 b1 40 c6 cc 44 01 00 00 00 00 00 0e 00 0b 00 00 00 09 01 0b 00 19 00 00 00 00 c2 40 28 47 42 0a 11 d1 04 6b d1 06 d0 a6 5d 20 13 42 4e 8c 56 a0 5a 91 0b 41 90 0f 24 c0 6a 98 e5 41 c3 28 ac 0d d0 a1 10 51 13 16 05 17 52 c0 62 9c 00 15 7a 80 b9 42 a0 1d 50 51 a4 09 e1 1c c7 47 45 7a d6 d0 0b 4c 4a 77 bd 86 00 0a 81 3c c1 60 7e 85 32 d9 00 aa 14 5a f7 a8 03 34 a6 b0 00 03 da 50 d2 00 80 e9 b4 2f b8 f4 c8 32 80 ae 43 ef 90 55 62 78 32 c5 00 06 fe be 85 08 86 8d 29 e1 a9 76 7f 78 00 de b4 82 9a 35 80 0f 07 d4 81 30 3d bf 40 d0 18 47 fd 3c b9 60 fb fc d7 bf ec 40 00 fc 1c 3a 80 07 7c 9c 00 18 00 41 23 ff 60 a8 45 7f bf 7f 32 81 00 11 ff 73 88 00 f8 ff fa d5 09 00 00 20 00 15 1c 01 21 1a a2 1b 00 a7 ba 7d 00 fd fe e1 00 00 4f e2 4a 7e e7 a8 22 02 1f df ff ff fc 3b b6 d0 80 04 7e 6e fe b0 f9 a7 80 00 6e 0d fc 9d a8 00 20 3f 63 65 70 40 40 01 02 90 80 e0 43 39 6c 30 00 00 1e ce 41 e4 02 87 20 2e c0 00 00 1e cc 41 74 04 82 a0 08 34 04 29 11 41 24 3b 10 c2 4c 71 87 44 c3 8c c6 cc 53 01 00 00 00 00 00 0f 00 0b 00 00 00 1b 01 1a 00 07 00 00 00 00 a5 21 85 4c 63 6a 28 ac 0c a1 d5 88 03 c4 29 92 97 00 bd 15 35 c7 78 05 a5 69 ce 97 00 a6 98 42 98 7b 4c 21 4c 3d 4c 21 4c 10 9b a2 a0 da 2a 1a 80 7d 0a 18 a0 20 5c 00 2a ca fa 8b b8 a0 20 b0 88 20 4c 9a 00 b5 00 28 54 81 72 d4 85 d1 8a 15 c9 5b 68 02 34 50 97 bd 80 06 e9 a6 b4 00 00 77 54 03 46 50 14 0e 83 e8 11 29 d2 95 af 03 6b 96 f9 b8 0b 5c 7d f0 6e a3 74 1d 00 19 ab a8 51 cc a1 a6 ef d0 35 07 02 61 a2 23 14 53 4e 80 da 75 00 06 aa f1 d1 41 2a 0c 00 52 74 1f a1 fb 03 3f 93 e6 df c8 02 7f d7 8f 0f 40 80 00 26 01 07 c8 40 00 b1 83 54 00 52 40 1e b1 fd 8c 5d 02 44 8f 9f e1 c0 02 0f b2 20 0f f9 ff d7 f7 e4 3c 00 03 d0 20 00 24 18 a4 da cd 8b 9e c0 07 51 48 07 f7 ee 7d 80 0a 48 03 ff b1 f1 1c 58 64 01 c7 cf fb 70 77 e5 20 00 04 9b 3f 56 f1 4e 10 03 c1 9f 0f e0 a2 28 20 03 76 76 79 57 10 02 08 03 8f 40 80 03 81 00 20 41 c1 96 ec 22 d0 00 00 1e ce 40 a4 0a 81 20 29 04 54 08 d4 59 0a 44 21 11 31 19 32 10 b1 11 30 00 00 1e cc 40 35 38 c2 cc 06 00 00 00 00").to_vec(), + hex!("e0 24 b3 d3 88 89 23 5c 63 00 05").to_vec(), + ] + }; + static ref DECODED_ZGFX_SINGLE: [Vec; 5] = { + [ + hex!("13 00 00 00 14 00 00 00 02 05 0a 00 04 00 00 00 20 00 00 00").to_vec(), + hex!("0e 00 00 00 54 01 00 00 00 04 00 00 00 03 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00 ff 02 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 01 00 00 00 0c 00 00 00 0c 00 00 00 01 00 00 00").to_vec(), + hex!("09 00 00 00 0f 00 00 00 00 00 00 04 00 03 21 17 00 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 03 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 18 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 40 00 40 00 06 00 00 00 1c 00 00 00 00 00 f6 17 b0 bf 6e 5f ce a9 02 00 00 00 00 00 40 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 02 0c 00 00 00 0c 00 00 00 02 00 00 00").to_vec(), + hex!("0b 00 00 00 10 00 00 00 00 c0 fd ff 03 00 00 00 02 00 00 00 c0 53 00 00 00 00 09 00 01 00 00 00 20 ab 53 00 00 c0 cc 0c 00 00 00 ca ac cc ca 00 01 c3 cc 0a 00 00 00 00 40 00 01 c1 cc 0c 00 00 00 00 00 00 00 01 00 c4 cc 83 53 00 00 40 01 00 01 01 01 c0 00 54 53 00 00 00 00 00 00 00 04 00 03 66 76 88 99 a9 32 11 11 22 12 11 11 11 22 12 11 11 11 22 12 01 c6 cc 57 00 00 00 00 00 00 00 00 00 00 00 00 19 00 13 00 14 00 00 00 00 00 1e cf fe c0 11 02 10 12 10 41 90 11 ae 44 7d 0d 44 0b 25 03 8b 44 40 00 00 1e cf d8 0c 41 24 19 09 42 2d 21 4c 48 91 a2 cc 00 00 00 1e cd fb 02 48 18 84 90 62 15 5d 22 92 a5 4b a0 93 80 c6 cc 6f 00 00 00 00 00 00 01 00 00 00 00 00 21 00 1b 00 1c 00 00 00 00 00 1e cf ff 20 28 80 c8 01 01 20 98 a9 51 a1 b5 dd bc 90 b7 e4 45 7e 92 12 89 2f d2 25 e2 56 00 00 00 1e cf c8 04 40 84 1e 81 21 91 68 13 2e c2 09 a0 81 58 41 cc 61 4c 41 cc 00 00 00 1e cd f9 00 48 14 83 90 09 02 45 51 42 ab d2 53 89 22 8c 47 10 50 c8 e3 20 00 c6 cc 7f 00 00 00 00 00 00 02 00 00 00 00 00 23 00 22 00 23 00 00 00 00 00 1e cf ff 90 04 41 42 00 40 48 32 41 1a c4 13 76 10 e1 08 df c1 99 bf 81 19 bd f6 01 1b 4f 40 93 6c 00 00 1e cf 90 34 80 48 05 0d 40 a0 50 21 65 29 89 73 d9 24 fc 29 57 fe 09 55 ff e2 23 57 ff 88 45 b8 00 00 1e cd f2 00 90 01 01 20 08 44 04 34 2a 31 17 08 43 84 21 c3 21 f1 8d 9f 08 6c fe 31 8d 27 a4 24 86 c6 cc 8d 00 00 00 00 00 00 03 00 00 00 00 00 32 00 25 00 1f 00 00 00 00 00 1e cf ff 60 10 80 08 01 00 20 88 08 7f 40 40 84 46 cf ff 94 92 42 7e a5 24 90 fd 4a 4c 12 7f 52 58 a1 3f a9 42 92 1f d5 0a 4c 13 fd 85 10 12 00 00 00 1e cf b0 04 80 48 0a 06 83 42 f4 28 51 5b b7 aa 49 ff 96 49 ff a8 a8 ff 2a 4b ff 25 45 ff 95 49 fe 2a 48 00 00 1e cd f9 00 88 18 82 b0 42 19 0e 91 32 29 a3 0c 7d 98 43 ec c6 2e cc 62 cc 61 66 20 c0 c6 cc 5d 00 00 00 00 00 00 04 00 00 00 00 00 1f 00 13 00 14 00 00 00 00 00 1d 16 4d bf ff a0 21 02 10 22 16 40 24 24 27 a8 c4 2e c6 21 c4 18 e2 0c 76 08 53 01 20 00 00 1e cf f2 05 90 11 0d 20 48 b4 25 2a 91 0a 50 58 68 00 00 1e cd fc 81 64 08 42 c8 31 12 80 85 00 48 85 62 2a 00 c6 cc 60 00 00 00 00 00 00 05 00 00 00 00 00 1b 00 17 00 17 00 00 00 00 00 1e cf f2 01 10 31 01 20 68 04 64 28 d4 2a 81 25 1a 45 68 d0 83 86 46 58 b0 00 00 1e cf f6 00 10 61 01 60 08 c4 16 2a 95 2c 91 ec a6 28 21 c1 40 00 00 1e cd fb 01 c8 20 84 90 62 35 0a 85 72 a4 8f 45 5a 08 1a 81 a0 c6 cc 6b 00 00 00 00 00 00 06 00 00 00 00 00 1e 00 1c 00 1a 00 00 00 00 00 1e cf ec 01 20 52 0a 40 b4 19 15 1a 2d 14 2a 84 14 54 d2 d0 94 28 d4 38 80 96 0e 00 00 00 1e cf ec 04 20 42 0a c1 10 88 ba 04 8a 2f 63 1e 30 87 cc 61 63 0c e1 87 58 40 00 00 1e cd f9 00 48 24 82 30 12 2d 0a 95 3a 52 2e b8 e4 85 34 e1 82 d9 90 c0 c6 cc 70 00 00 00 00 00 00 07 00 00 00 00 00 20 00 1e 00 1b 00 00 00 00 00 1e cf f9 00 48 14 81 90 49 02 45 46 8d 0e b5 29 5f e1 28 fc 72 26 29 15 f8 52 24 50 c3 98 00 00 1e cf d8 00 40 44 09 07 d0 08 49 12 e9 28 a5 cc 20 b9 88 3e c6 16 61 8f 98 83 c6 00 00 00 1e cd f2 01 90 39 04 60 68 74 4a 55 28 69 2c a8 92 a5 15 50 ed 0a 25 05 00 c6 cc 5c 00 00 00 00 00 00 08 00 00 00 00 00 20 00 15 00 10 00 00 00 00 00 1e cf fd 80 24 02 42 48 14 81 21 a7 42 87 4b 9c 99 1c 4d 21 4f c5 1c fc 8e 24 39 b7 68 70 00 00 1e cf 90 08 83 48 32 12 91 42 5b 40 fd 02 c4 4c 5d 01 40 00 00 1e cd e4 2c 20 12 00 40 50 0a 0c 1b 1c 00 c6 cc 57 00 00 00 00 00 00 09 00 00 00 00 00 21 00 12 00 0d 00 00 00 00 00 1e cf ff 20 08 81 48 29 02 90 64 32 7a 0e 99 a7 6e 91 2f f0 8a 26 29 11 e2 15 f8 a1 53 23 b0 00 00 1e cf 61 19 03 21 28 8a 45 45 8a 44 54 a8 81 40 00 00 1e cd e4 22 22 22 20 44 12 4c 00 c6 cc 6a 00 00 00 00 00 00 0a 00 00 00 00 00 24 00 19 00 16 00 00 00 00 00 1e cf ff b0 04 40 e2 06 40 a4 19 14 8c 85 0e d2 48 d4 71 6f fc 85 15 fe 21 4b fc 23 9f 85 29 f8 52 80 00 00 1e cf 60 01 06 20 34 01 02 80 a1 0d 87 d8 6d 01 72 05 ce 2a 98 70 c0 00 00 1e cd e4 09 20 62 16 41 28 14 d4 15 e8 4a aa 2d 21 01 24 98 c6 cc 81 00 00 00 00 00 00 0b 00 00 00 00 00 33 00 1f 00 18 00 00 00 00 00 1e cf ff e4 01 30 18 80 88 0b 02 43 20 e4 64 49 55 57 ff f8 95 59 ff fe 24 aa 5f ff e2 41 54 ff fc 41 54 bf ff c4 82 a9 ff f8 82 a3 7f fe 20 94 50 00 00 1e ce c0 44 08 82 d0 44 22 1a 1a 05 9f a1 0c 7f 61 85 d8 81 76 31 9f cc c6 7f 40 c6 00 00 00 1e cd d8 0a 41 44 15 0a 43 a3 20 4e c5 e6 4b 11 a8 a2 6e 28 d1 c8 c6 cc 86 00 00 00 00 00 00 0c 00 00 00 00 00 25 00 26 00 24 00 00 00 00 00 1e cf ff fe 40 30 80 84 00 40 04 00 80 c3 94 10 20 8d e4 d9 e9 a2 cd b2 a1 19 a4 cc c8 21 08 23 59 46 40 00 00 1e d6 40 34 02 80 a0 28 1a 07 e8 52 a2 95 ab ff c0 ae af ff 10 2b 5f e0 28 ab f0 29 4f d0 a4 f0 a7 66 43 00 00 00 1e cd c8 04 40 44 01 00 41 50 7e 88 89 04 22 3f fa 06 92 4f 48 48 69 d2 10 c6 d0 c6 31 c3 08 41 0e 1c c6 cc 70 00 00 00 00 00 00 0d 00 00 00 00 00 26 00 1c 00 17 00 00 00 00 00 1e cf ff f6 00 08 00 c0 04 00 84 20 90 e4 04 08 b3 2f fa 64 80 7b 24 30 be 92 19 3b 0c 52 c1 c8 2b 4b 05 b4 00 00 1e cf c8 02 40 24 0d 08 d0 28 28 d4 68 a4 92 b5 41 aa 43 51 4c 44 08 1c 4b 0c 00 00 1e cd f9 00 88 2c 82 10 d2 09 2d 32 56 16 21 23 14 1e 62 8a c0 c6 cc 73 00 00 00 00 00 00 0e 00 00 00 00 00 26 00 1c 00 1a 00 00 00 00 00 1e cf ff c8 06 20 11 03 20 64 15 86 42 4a 8a ba b9 47 e2 a4 ef fc 8c 97 f8 69 4f f0 ca 9f e4 a5 5f f9 46 50 00 00 1e cf ec 00 20 62 0e c0 10 89 34 09 19 61 4f 63 0e 21 8f 6c 20 a2 08 2d 98 c0 00 00 1e cd f9 02 48 19 80 90 92 11 35 12 76 1e 4b 4e 46 a4 44 a2 29 e4 51 80 c6 cc 65 00 00 00 00 00 00 0f 00 00 00 00 00 1e 00 16 00 1a 00 00 00 00 00 1e cf ff f2 01 88 1c 40 84 00 81 23 93 12 ae 84 51 42 22 8a da 48 42 48 94 a1 a9 24 00 00 1e cf d8 18 40 64 19 03 40 21 a0 70 ba 06 08 10 20 d6 11 00 00 00 1e cd f6 04 90 01 01 20 48 b4 44 ea 13 22 a2 45 28 a2 28 72 0a 19 14 00 c6 cc 5c 00 00 00 00 00 00 00 00 01 00 00 00 1b 00 13 00 17 00 00 00 00 00 1e cf ff b0 1c 40 e2 00 41 c8 72 11 1a 74 92 8a 39 90 ac 38 85 6b 2c 06 10 00 00 1e cf 20 61 07 22 08 0a 01 d5 02 b4 d0 6b 90 72 a0 00 00 1e cd e4 00 20 12 1e 44 50 48 2e d6 26 49 a5 11 c2 10 84 23 00 c6 cc 7b 00 00 00 00 00 00 01 00 01 00 00 00 22 00 21 00 21 00 00 00 00 00 1e cf ff d8 0a 20 31 06 20 64 19 20 85 9a 09 46 39 8c 6e 9b 33 7f 48 12 49 d2 12 49 3d 0c 92 18 00 00 1e ce c0 24 24 83 a0 48 b4 34 15 29 a5 32 95 57 fe 4a aa ff c1 56 af ff 12 ab 5f fe 25 55 00 00 00 1e cd e4 01 21 52 0c 40 d1 48 48 6a 12 42 e4 21 b7 f4 21 a4 3f a1 24 81 d9 24 0c 7d 20 43 00 c6 cc 90 00 00 00 00 00 00 02 00 01 00 00 00 2d 00 27 00 25 00 00 00 00 00 1e cf ff ec 04 10 10 80 08 01 00 41 c9 98 99 33 fa 18 92 64 fd 44 92 4c fd 49 48 64 fd 84 14 92 7d 4a 49 09 ea 84 90 9e c9 21 08 00 00 1e ce 40 34 06 80 a0 28 14 14 1f 42 8a d5 55 ff e5 2e 57 ff 8a ad 3f f2 ac af fc a9 4b fc 8c 97 e2 89 7e 92 00 00 00 1e cd d8 04 40 44 01 00 40 21 fa 04 48 29 11 ff 1a 48 63 f8 92 10 3e 90 83 38 43 33 ec cc 2d 98 c5 99 80 c6 cc 7c 00 00 00 00 00 00 03 00 01 00 00 00 30 00 1d 00 18 00 00 00 00 00 1e cf ff 90 00 c0 02 00 c0 08 02 01 02 04 7f d0 46 3d 24 3f ff 92 85 82 4f ea 50 94 87 ea 53 04 93 f5 25 21 0f 64 24 0c f4 90 81 b4 81 1a 00 00 1e cf d8 06 40 24 05 03 40 a1 7a 14 28 a5 c9 d5 21 35 24 79 23 bc 85 10 50 09 00 00 00 1e cd f9 00 88 10 83 90 62 25 11 32 3a 0c 35 81 84 b0 18 4a 14 c0 c6 cc 55 00 00 00 00 00 00 04 00 01 00 00 00 18 00 16 00 10 00 00 00 00 00 1e cf f2 00 90 01 12 20 a8 05 14 0c 91 52 8a 56 80 b4 16 21 c6 00 00 00 1e cf f9 08 c8 20 83 90 c2 0e 80 b1 0d 67 2c c2 38 43 8c 00 00 00 1e cd fc 80 44 1a 40 0a 41 02 80 9d 00 d0 c6 cc 5d 00 00 00 00 00 00 05 00 01 00 00 00 1e 00 17 00 11 00 00 00 00 00 1e cf f2 00 10 09 02 20 e8 04 74 08 d0 2a c7 6b 5a 62 10 a1 50 2b 46 28 ad 7a 14 b0 00 00 1e cf f9 0c 08 04 86 10 52 29 15 42 7a 0c 29 76 20 87 d9 8c 00 00 00 1e cd fd 8d 24 00 c0 48 69 01 43 52 8a ab d8 c6 cc 56 00 00 00 00 00 00 06 00 01 00 00 00 15 00 17 00 13 00 00 00 00 00 1e cf f2 07 90 03 01 25 e8 04 d4 49 c8 b0 92 50 82 4a 00 00 00 1e cf f9 00 08 28 81 b0 02 31 05 72 16 9a 51 ac 05 3d 81 28 60 00 00 1e cd fd 80 a4 14 41 c8 41 0e 90 8d 62 61 7b 4b 00 c6 cc 54 00 00 00 00 00 00 07 00 01 00 00 00 1c 00 11 00 10 00 00 00 00 00 1c a8 51 1f fe 83 44 09 82 91 24 06 34 08 90 25 ca 02 a8 52 0a b0 45 ad 63 40 00 00 1e cf f2 02 10 59 08 20 e8 e4 12 a1 09 5a 80 00 00 1e cd fc 80 64 18 42 c8 21 1e 80 5f 25 00 c6 cc 57 00 00 00 00 00 00 08 00 01 00 00 00 1c 00 10 00 14 00 00 00 00 00 1e cf f9 01 c8 1c 80 48 09 12 44 a1 40 99 06 a2 30 73 07 21 d8 5b 1a d0 29 58 00 00 1e cf ec 02 20 d2 46 41 11 68 8a d0 04 80 00 00 1e cd fb 01 48 00 8e 10 12 01 05 02 14 03 15 09 84 80 c6 cc 4d 00 00 00 00 00 00 09 00 01 00 00 00 1e 00 08 00 10 00 00 00 00 00 1e cf fc 80 04 02 42 c8 03 0e 80 85 25 14 2a 21 07 11 60 a4 05 b0 49 04 9a ab 43 00 00 00 1e cf e4 11 28 e0 00 00 1e cd fb 05 88 04 80 16 12 01 05 02 b6 1c c6 cc 5e 00 00 00 00 00 00 0a 00 01 00 00 00 1d 00 16 00 14 00 00 00 00 00 1e cf fd 81 24 0a 40 24 24 83 21 68 4a 54 91 5b 47 3b c3 8a f0 a2 b6 23 9b 45 ac 00 00 1e cf e4 0e 20 12 02 41 11 29 88 d7 22 59 22 94 63 82 1c 30 00 00 1e cd fb 01 08 14 82 10 f2 01 cd 02 f4 0a a8 4b 0b 00 c6 cc 82 00 00 00 00 00 00 0b 00 01 00 00 00 2f 00 1f 00 1d 00 00 00 00 00 1c a8 51 1f ff fa 03 10 11 01 10 62 09 09 07 22 59 4a 2b ff f1 22 b5 ff f8 82 a3 7f f8 14 5a ff f0 22 b5 ff e0 51 27 f9 09 4f f2 44 e0 00 00 1e cf e4 00 20 42 04 41 74 11 11 12 3d 46 32 e3 19 be 31 0d f0 86 6f 8c 63 8c 21 c6 10 00 00 1e cd fb 01 c8 14 81 30 92 0d 0b 42 9d 54 4d 25 21 4a f1 c7 78 72 78 53 bc 38 c0 c6 cc 67 00 00 00 00 00 00 0c 00 01 00 00 00 24 00 17 00 15 00 00 00 00 00 1e cf ff d8 02 20 51 08 90 12 04 8e 49 23 26 d4 4d 24 9f e5 24 ff ca 94 ff c9 25 7f f9 45 4f fc 8c 90 00 00 1e cf b0 08 80 49 22 12 84 4b 48 ad 42 74 30 cf 99 85 b0 83 00 00 00 1e cd f6 17 90 01 01 20 08 54 a4 aa 95 24 f3 0a 2a a2 80 c6 cc 6c 00 00 00 00 00 00 0d 00 01 00 00 00 26 00 18 00 17 00 00 00 00 00 1e cf ff ec 00 10 08 82 88 29 00 c5 25 21 4b 49 6a 57 f8 a2 af f0 49 5f f9 14 9f e2 89 7f e4 92 7f 8e 0a b0 00 00 1e cf b0 04 81 08 32 02 88 54 46 a1 44 d8 52 d8 12 81 a8 56 20 00 00 00 1e cd f6 06 90 11 09 22 a8 24 94 c9 5a 48 a4 8e 50 85 62 b0 c0 c6 cc 74 00 00 00 00 00 00 0e 00 01 00 00 00 2a 00 19 00 1a 00 00 00 00 00 1e cf ff f6 00 88 04 40 c4 04 83 20 90 64 24 c9 57 5f f9 29 57 ff 8a 2b 8f fc 14 63 ff 29 49 ff 91 89 ff 92 89 fe 14 8c 00 00 1e cf 90 18 80 88 2d 00 42 22 23 a2 59 b4 30 a1 04 d0 16 35 0e 1a 70 00 00 1e cd f2 01 90 29 05 20 1a 04 86 9d 15 36 95 71 4d 41 5a 41 01 82 45 00 c6 cc 67 00 00 00 00 00 00 0f 00 01 00 00 00 27 00 15 00 14 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 44 06 08 46 11 85 42 17 1c 04 24 49 13 a8 8d a1 da fc 41 1e 83 22 c3 20 00 00 1e cf 20 11 04 20 28 42 25 11 5a 85 cc 88 ac 5b c6 96 c0 00 00 1e cd e4 01 20 52 10 41 51 48 aa 92 b4 60 40 c3 84 00 c6 cc 68 00 00 00 00 00 00 00 00 02 00 00 00 1d 00 1a 00 1a 00 00 00 00 00 1e cf ff f2 03 08 48 40 84 0c 84 22 11 10 d0 20 87 30 86 ec 31 a1 84 43 08 82 2c 00 00 1e ce c0 74 06 80 a0 48 74 34 28 50 bd d4 c7 25 e4 45 61 c9 8e 04 84 80 00 00 1e cd d8 10 40 44 01 01 a1 90 90 20 46 e6 29 86 23 08 42 19 04 0c 51 40 c6 cc 7f 00 00 00 00 00 00 01 00 02 00 00 00 2c 00 1f 00 1d 00 00 00 00 00 1d c8 48 1f ff ff f4 04 10 00 80 04 10 c2 30 cc 02 42 04 21 27 d9 24 90 9e a8 49 09 ec 84 84 34 90 66 f8 84 0e 20 47 35 ac 80 00 00 1e cf 90 04 80 48 0a 02 81 41 46 83 a6 95 74 ff 32 93 f2 92 7e 51 12 45 1a 88 40 92 00 00 00 1e cd f2 00 10 01 04 20 48 3a 22 24 49 e8 62 11 f6 33 16 62 0e 20 c7 60 ce c0 24 c6 cc 66 00 00 00 00 00 00 02 00 02 00 00 00 20 00 18 00 17 00 00 00 00 00 1c f0 4e df ff fa 02 10 01 00 10 42 2c 80 88 91 47 d0 63 1c c4 59 d8 c2 86 2d 82 41 54 38 00 00 1e cf f6 00 90 19 03 20 d4 0a 1a 94 14 5e 51 22 9c 40 30 f4 0c 30 00 00 1e cd fc 80 04 08 42 48 11 10 86 99 4a 45 50 1f 40 92 0b 0c 00 c6 cc 64 00 00 00 00 00 00 03 00 02 00 00 00 1c 00 18 00 19 00 00 00 00 00 1e cf fb 00 08 08 81 10 76 09 11 3d 12 28 34 a2 a2 07 a0 48 f6 28 47 6b 2d 00 00 00 1e cf fc 82 64 00 40 48 01 12 80 85 03 68 0b 35 83 8b 40 87 30 c0 00 00 1e cd fe 40 21 03 90 02 02 40 13 51 2b 50 9b 0f 20 93 38 08 a0 d3 00 c6 cc 53 00 00 00 00 00 00 04 00 02 00 00 00 17 00 19 00 0c 00 00 00 00 00 1e cf f2 07 90 01 0b 22 e8 04 74 08 48 a0 4b d0 29 58 56 81 20 00 00 1e cf fc 80 c4 0c 40 58 41 0e 8c 99 0d 02 4b 30 e8 18 a2 04 42 05 00 00 00 1e cd fe 47 b1 0f 90 02 02 00 c6 cc 7d 00 00 00 00 00 00 05 00 02 00 00 00 22 00 25 00 1f 00 00 00 00 00 1e cf f2 00 90 29 05 20 08 04 34 69 52 b5 dc fd 24 9f 92 95 ff 95 29 f8 95 5f f9 29 4f c2 53 80 00 00 1e cf fb 00 08 08 82 10 56 11 09 22 1d 25 10 8f e6 66 c7 f4 21 08 7c 43 18 da 18 c6 9d 84 20 df 40 c2 00 00 00 1e cd fe 40 51 03 90 26 0a 42 91 29 52 a6 8c 92 5d f9 12 7e 48 a7 8e 4b f1 22 bc 28 a0 c6 cc 6a 00 00 00 00 00 00 06 00 02 00 00 00 1d 00 1c 00 1a 00 00 00 00 00 1c f0 4e df ff a0 51 04 10 12 1c a2 46 50 8a c9 45 ea 43 55 04 29 09 54 3b 64 58 00 00 1e cf f2 00 10 21 09 20 48 64 5a 04 4d a9 84 d0 c4 16 6c 16 8c 1d 82 58 72 80 00 00 1e cd fc 80 64 18 40 48 39 0c 8a a9 1a ae a9 4a 26 a4 34 a0 94 84 39 80 c6 cc 72 00 00 00 00 00 00 07 00 02 00 00 00 28 00 1c 00 17 00 00 00 00 00 1e cf fc 80 04 10 41 64 18 82 21 21 f4 05 14 4f 21 8d bf fa 04 90 9f 49 09 24 fd 44 84 c3 ec 24 90 cf ec 08 0a 48 00 00 1e cf e4 09 20 66 06 42 d0 14 b4 94 aa b3 52 9c fd 12 5f e5 24 fc 92 5f 92 48 00 00 1e cd fb 04 48 8c 83 10 96 01 11 4d 22 4f b1 0c e1 04 39 88 30 c6 cc 67 00 00 00 00 00 00 08 00 02 00 00 00 21 00 18 00 17 00 00 00 00 00 1e cf f9 02 88 04 81 90 02 3e 80 89 42 3d 08 c1 76 6c 3f 6d 8c 67 e8 48 0f 9b 41 9f d2 40 ce 00 00 1e cf ec 10 20 12 1c 40 d1 88 2a 52 51 69 84 9d a8 84 29 08 53 80 00 00 1e cd fb 04 48 00 87 90 42 2d 11 5a 26 93 61 4a 30 52 02 8a 00 c6 cc 59 00 00 00 00 00 00 09 00 02 00 00 00 1d 00 10 00 15 00 00 00 00 00 1e cf f9 02 48 0c 80 10 02 15 1d 15 2a ea 92 5b 45 1c f1 c8 90 a5 7e 87 12 29 14 00 00 1e cf ec 27 20 02 06 47 50 08 2f 48 5a 50 00 00 1e cd fb 02 08 1c 84 10 72 19 25 22 b4 04 9a e1 28 05 80 c6 cc 5d 00 00 00 00 00 00 0a 00 02 00 00 00 1e 00 14 00 14 00 00 00 00 00 1c f0 4e df ff a0 11 0b 10 22 34 84 c2 4e aa 24 9a 92 d0 c2 86 38 54 8e 2b 79 11 40 00 00 1e cf ec 23 20 82 0e 43 90 34 65 2b 91 b0 f3 0e 31 80 00 00 1e cd fc 81 64 08 43 c8 01 48 82 b1 5a 09 40 71 2c 8c c6 cc 70 00 00 00 00 00 00 0b 00 02 00 00 00 21 00 1e 00 1a 00 00 00 00 00 1e cf fd 80 64 06 40 c8 19 01 d0 49 48 d4 d6 4b 93 23 ad e2 3a fc b4 4f 1c 7b f1 1c da d0 a0 00 00 1e cf e4 06 20 62 03 20 44 22 22 1d 22 8d d0 c6 7c 62 0b 18 67 cc 20 b3 08 58 c3 00 00 00 1e cd fb 02 48 18 84 90 66 05 2d 15 1b 2a 96 4b 42 9a 87 24 71 de 14 00 c6 cc 77 00 00 00 00 00 00 0c 00 02 00 00 00 28 00 1e 00 1a 00 00 00 00 00 1e cf ff 60 08 80 c8 19 01 20 c8 1e 8c 8c 8a d5 3e 94 a7 fe 19 2b ff 09 29 ff 91 52 ff c2 52 bf f0 a4 af fc 82 a0 00 00 1e cf c8 04 40 84 1e 82 21 11 74 09 16 4e 43 0b b1 04 3e 63 0b b1 8c f9 8c 78 c3 00 00 00 1e cd f9 00 48 14 84 30 32 15 1a 8d 4a 57 98 69 aa 1c 91 43 04 91 70 e0 c6 cc 66 00 00 00 00 00 00 0d 00 02 00 00 00 20 00 17 00 18 00 00 00 00 00 1e cf ff e4 01 10 28 80 88 34 83 22 91 91 58 96 5b 65 14 68 a1 5f a2 33 20 a9 a4 33 42 9a 00 00 1e cf 90 74 81 08 3a 0e 80 40 42 9d 47 92 c1 24 38 a8 09 60 e0 00 00 1e cd f2 0f 10 19 06 20 c8 14 a4 48 6b 31 ec 30 a1 05 30 74 05 00 c6 cc 65 00 00 00 00 00 00 0e 00 02 00 00 00 20 00 1b 00 13 00 00 00 00 00 1c f0 4e df ff ff ff 40 a0 81 82 0c 50 a1 28 63 0b 0d 47 0a 22 31 30 72 b0 c8 64 d6 b2 c8 00 00 1e cf 90 1c 81 c8 02 0a 87 42 4a 9d 2a 49 31 c7 12 85 1a 88 ef 0a 10 e3 00 00 00 1e cd f2 01 10 91 10 24 88 94 25 a8 9d 40 b5 0c 00 c6 cc 58 00 00 00 00 00 00 0f 00 02 00 00 00 1a 00 15 00 12 00 00 00 00 00 1e cf ff fc 82 06 01 10 01 0a 10 84 12 02 83 0b 41 45 40 12 4a 07 a2 c0 00 00 1e cf c8 0a 42 24 45 13 44 21 ac 42 bb 84 aa a0 a2 45 00 00 00 1e cd f6 00 10 81 22 24 c8 b4 05 e8 9d 52 8a 00 c6 cc 50 00 00 00 00 00 00 00 00 03 00 00 00 15 00 13 00 11 00 00 00 00 00 1e cf fe 40 a1 03 90 02 62 40 10 51 21 22 82 c7 8f 2d 00 00 00 1e cf f9 00 c8 e8 8b 11 02 05 11 42 14 89 25 02 18 00 00 1e cd fd 81 44 12 40 88 99 08 96 47 76 46 c0 c6 cc 59 00 00 00 00 00 00 01 00 03 00 00 00 1c 00 16 00 10 00 00 00 00 00 1e cf fd 81 04 02 40 08 19 10 82 89 1b aa 71 4a 28 ec 28 ec 39 31 c5 5f a1 50 00 00 1e cf fb 07 88 0c 80 10 c2 05 11 42 15 8c 08 39 44 11 46 30 00 00 1e cd fe 42 f1 11 91 32 04 41 95 58 a5 48 c6 cc 56 00 00 00 00 00 00 02 00 03 00 00 00 18 00 15 00 12 00 00 00 00 00 1c f0 4e df ff d0 38 80 08 38 93 28 98 94 9b 2e f2 14 8e da 85 00 00 00 1e cf fb 01 08 50 89 11 02 15 01 32 74 1c 28 e2 09 41 00 00 00 1e cd fe 42 31 0b 91 52 3a 44 90 90 a5 5d 0e 50 c6 cc 69 00 00 00 00 00 00 03 00 03 00 00 00 1c 00 1d 00 19 00 00 00 00 00 1e cf fc 81 24 0e 40 08 49 1a 8e 89 1a e5 56 af 22 95 e1 52 bc 49 cf c9 55 00 00 00 1e cf f9 01 08 20 80 90 42 21 05 32 64 5c 52 98 62 20 8c ec 66 6e 63 33 b1 99 80 00 00 1e cd fe 40 71 0b 90 22 0e 43 90 14 b3 51 64 b9 05 15 30 a4 bc 89 00 c6 cc 5e 00 00 00 00 00 00 04 00 03 00 00 00 1b 00 16 00 16 00 00 00 00 00 1e cf fd 81 24 1e 41 48 01 02 8e 9d 02 2d 34 b1 6a 73 25 0c a8 b3 54 33 00 00 00 1e cf f2 04 10 91 0e 21 c8 c4 25 89 11 63 0b 46 0e 93 1d 40 00 00 1e cd fd 81 64 00 40 48 a9 2e 96 bd 0b eb 31 e5 31 0e 84 30 c6 cc 7e 00 00 00 00 00 00 05 00 03 00 00 00 25 00 21 00 21 00 00 00 00 00 1e cf fe 40 11 01 90 32 02 41 90 34 a4 69 aa e5 39 90 e1 0e e6 b6 37 fc 42 42 4f d8 49 24 3f 44 c4 4c 00 00 00 1e cf ec 02 20 22 08 40 e8 24 44 88 6a 30 96 09 48 a2 bf 14 93 fc 4a 4f fc 95 2b ff c1 56 80 00 00 1e cd fc 80 e4 0a 40 48 04 83 23 a3 41 65 6c 24 11 a8 82 17 99 9b 3f e8 49 08 7f f2 92 48 40 c6 cc 73 00 00 00 00 00 00 06 00 03 00 00 00 25 00 1f 00 18 00 00 00 00 00 1c f0 4e df ff ff a0 30 81 84 00 43 08 22 c1 09 a3 46 18 b1 0c cf ed 06 6d ec 84 24 3f 88 42 1b a1 a1 8c 00 00 1e cf c8 00 41 24 0d 00 a1 d0 d2 51 aa b6 94 a4 fc 92 5f e5 24 fc 92 5f e2 49 7f 92 40 00 00 1e cd f9 00 48 0c 83 11 e2 1d 11 42 16 9a 41 8b 31 85 08 73 06 00 c6 cc 7e 00 00 00 00 00 00 07 00 03 00 00 00 2c 00 20 00 1b 00 00 00 00 00 1e cf ff c8 00 20 21 00 20 04 01 00 8f e8 08 10 44 6d be 92 49 09 f6 49 09 27 d5 21 08 76 10 90 de c2 40 d3 d8 40 c6 e8 63 18 00 00 1e cf d8 06 40 64 0d 03 40 68 68 d1 a6 8e aa 48 9a 48 bf 48 53 c5 1c f1 47 3c 50 d4 3b 00 00 00 1e cd f6 02 10 11 07 60 08 44 44 74 4a 31 64 30 b6 10 71 03 90 12 c1 64 14 c6 cc 64 00 00 00 00 00 00 08 00 03 00 00 00 23 00 14 00 16 00 00 00 00 00 1e cf fd 80 04 00 40 88 11 0b a1 10 22 5f 42 10 5d b1 8f 33 10 f9 9a cd fd 08 40 5c cc 43 f9 9b 0c 00 00 1e cf f6 01 90 49 02 20 e8 84 32 ea 02 44 ca 52 6a 20 00 00 1e cd fb 00 08 18 83 90 22 91 05 12 15 9a 8e c1 5a 30 a0 f0 c6 cc 55 00 00 00 00 00 00 09 00 03 00 00 00 1b 00 12 00 11 00 00 00 00 00 1e cf f6 01 90 39 04 60 e8 54 04 14 2a bd 22 4d 50 e4 64 3b 08 80 f4 44 00 00 00 1e cf fb 02 88 04 80 10 13 59 05 62 36 9a c3 00 00 00 1e cd fd 81 c4 02 43 88 09 1c 82 b9 18 66 88 c6 cc 64 00 00 00 00 00 00 0a 00 03 00 00 00 20 00 1a 00 13 00 00 00 00 00 1e cf fb 00 c8 0c 80 10 12 12 8a 95 25 55 a2 9f 92 44 c5 14 48 e4 4d 12 5f e4 52 de 44 60 00 00 1e cf fb 00 08 28 81 b0 22 21 0e 91 32 75 14 4d 02 14 20 a2 0e 61 c8 00 00 00 1e cd fe 40 11 07 10 92 0c 44 91 90 8a e9 93 42 80 c6 cc 64 00 00 00 00 00 00 0b 00 03 00 00 00 1f 00 18 00 16 00 00 00 00 00 1e cf fd 80 64 16 c0 18 01 0a 8e 82 85 05 96 93 8e 78 e3 bf 44 77 e4 28 92 14 9a 23 80 00 00 1e cf f6 04 10 21 01 61 08 74 65 29 99 20 f2 1d 88 81 cc 39 0b 00 00 00 1e cd fd 81 24 0c 41 c8 01 02 88 bd 03 a8 0f a0 3a 82 48 56 c6 cc 6b 00 00 00 00 00 00 0c 00 03 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf fe c0 31 01 90 12 06 41 64 12 12 34 d9 92 a7 5f e2 24 fc 8e 26 92 13 48 89 a4 3b f1 15 60 00 00 1e cf ec 04 20 62 07 20 04 32 3d 12 84 ec 31 66 0e 31 c6 14 51 4c 56 00 00 00 1e cd fc 80 24 1a 40 18 39 10 96 92 85 e4 8a 4a 10 8a c8 62 02 40 c6 cc 5c 00 00 00 00 00 00 0d 00 03 00 00 00 1e 00 13 00 14 00 00 00 00 00 1e cf ff b0 04 41 22 00 40 88 32 63 0a 56 29 2c ad 45 1d ed 41 28 52 4a 14 9a 14 50 00 00 1e cf d8 1a 40 c4 1d 29 41 26 a6 52 c3 ce 24 63 00 00 00 1e cd f9 00 08 c8 81 90 c2 1d 21 4a 66 54 a8 1c c0 b0 c6 cc 57 00 00 00 00 00 00 0e 00 03 00 00 00 1d 00 14 00 0f 00 00 00 00 00 1e cf ff c8 06 20 01 01 20 04 99 00 b5 02 2a 3c 81 25 09 2a e2 8a fc 51 6f cc 28 00 00 1e cf e4 09 20 62 16 41 11 e8 04 a4 68 26 e3 44 16 60 00 00 1e cd fb 00 88 34 80 10 f2 29 14 4a 00 c6 cc 53 00 00 00 00 00 00 0f 00 03 00 00 00 18 00 13 00 11 00 00 00 00 00 1e cf ff c8 1e 20 21 01 20 04 69 c4 81 1a 09 43 b2 18 a0 85 22 18 00 00 1e cf ec 03 20 c2 1a 40 a8 14 e4 ea 08 2a 50 24 00 00 00 1e cd fc 86 a4 10 40 48 01 02 f2 81 7a 05 00 c6 cc 5d 00 00 00 00 00 00 00 00 04 00 00 00 20 00 13 00 13 00 00 00 00 00 1e cf ff 20 08 83 48 01 07 21 c8 0a d0 22 83 c8 9c a4 c2 9d fe 0a 2a ff c0 e5 7f fe 44 54 00 00 1e cf e4 0e 20 e2 14 41 91 ca 0c 19 22 40 b4 08 00 00 00 1e cd fb 01 c8 54 87 90 32 35 2d 3a f7 49 88 98 00 c6 cc 74 00 00 00 00 00 00 01 00 04 00 00 00 28 00 1a 00 1b 00 00 00 00 00 1e cf ff 90 24 40 62 04 40 08 12 19 2a 14 35 92 4a 64 8f 7f 84 53 bf f0 8a 3f c2 94 ef ff c1 46 af ff f0 24 d5 40 00 00 1e cf d8 0c 40 84 0d 02 43 27 22 46 a3 9c 82 14 41 88 42 39 8c 28 c3 00 00 00 1e cd f9 01 c8 14 81 10 12 1d 15 02 55 58 a7 3b 11 cc 8e 21 14 64 38 84 38 c6 cc 6e 00 00 00 00 00 00 02 00 04 00 00 00 29 00 19 00 15 00 00 00 00 00 1e cf ff d8 06 20 51 06 60 24 09 14 95 06 8a d4 a4 c9 2a ff f2 95 2f ff 14 5a bf ff c4 92 d5 ff 85 aa f3 ff 85 ad 58 00 00 1e cf b0 00 81 08 72 08 85 42 48 9d 27 12 c2 1c 41 88 c1 58 61 46 00 00 00 1e cd f2 01 90 29 0d 21 28 04 14 eb 5f 26 87 04 86 4a 28 c6 cc 77 00 00 00 00 00 00 03 00 04 00 00 00 28 00 1d 00 1b 00 00 00 00 00 1e cf ff ec 01 10 28 80 88 09 02 42 91 91 91 4a ab ff 25 54 ff ca b4 7f e5 6a 3f f2 b4 b7 f9 55 67 fa 94 19 91 66 00 00 1e cf 60 01 02 20 48 12 06 88 89 22 35 10 c5 98 83 98 10 e6 14 af 1c 97 e4 55 00 00 00 1e cd e4 03 20 52 06 40 90 e8 69 11 aa e5 12 0f 26 51 0f 18 db 7f 04 86 90 c6 cc 96 00 00 00 00 00 00 04 00 04 00 00 00 30 00 26 00 29 00 00 00 00 00 1d 16 4d bf ff ff ff d0 08 20 20 84 02 0c 62 84 81 00 4c c8 50 c6 74 84 86 4f 40 86 99 3e 82 49 93 3b 4a 49 31 7f 52 4b 14 ce c4 29 8a 40 00 00 1e d4 40 54 06 80 a0 1a 2d 0e 83 a5 55 2a 9c 52 ab ff 0a aa ff f1 15 ae fe 15 5a bf ff 12 5a a7 ff 89 55 80 00 00 1e cd b0 0c 81 08 12 07 40 a2 22 40 9e e6 46 ff 88 69 24 fa 49 24 93 e8 92 49 27 d0 94 98 a7 ea 4a 49 0f ab 14 84 00 c6 cc 8f 00 00 00 00 00 00 05 00 04 00 00 00 2e 00 23 00 27 00 00 00 00 00 1e cf ff fd 80 06 02 30 01 02 30 04 3e c0 20 20 41 18 cf ff e4 b1 49 0f ec 24 a4 87 ea 85 21 0f 64 92 04 f6 60 84 1b 21 83 db 32 c0 00 00 1e ce 40 14 02 80 a0 28 14 14 28 be 9d 6a a9 ff e5 6a 5f fe 2a a9 ff 95 91 fa 90 d4 88 94 82 20 a0 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 fa 08 a3 36 7f f4 92 48 1e c9 24 02 f4 92 06 3f a4 80 67 18 31 d8 c2 90 00 c6 cc 69 00 00 00 00 00 00 06 00 04 00 00 00 21 00 19 00 18 00 00 00 00 00 1e cf ff d8 00 20 01 02 20 44 11 06 c8 44 a2 7a 20 42 ec 69 ab 01 25 a4 e2 89 22 93 f2 2a 00 00 00 1e cf d8 02 40 a4 0d 04 d0 28 6a 50 57 20 1e 56 83 0b 61 04 7c c6 60 00 00 1e cd fb 01 88 18 80 b0 22 35 09 ea 06 d8 e8 46 5a d0 84 3b c7 1c c6 cc 63 00 00 00 00 00 00 07 00 04 00 00 00 1f 00 19 00 14 00 00 00 00 00 1e cf ff 20 20 80 88 11 03 b0 84 22 24 28 ee 62 e1 0c f8 21 1f 46 14 a0 b4 4b 0e 28 c0 00 00 1e cf f2 00 90 59 00 20 08 b4 4a 74 08 b2 5a 22 0c 84 07 05 1a 8c 18 00 00 1e cd fc 80 84 16 49 49 59 0c 86 9d 22 ad 22 a5 14 00 c6 cc 75 00 00 00 00 00 00 08 00 04 00 00 00 29 00 1f 00 16 00 00 00 00 00 1e cf fd 80 44 04 40 88 2d 82 21 22 4b e8 29 18 df fc 48 43 4f d8 42 42 7e c2 12 43 e8 42 48 7f f0 21 09 3d 63 0d 00 00 00 1e cf f9 02 c8 00 80 90 06 1d 22 95 4a 1b 49 23 2b 8d 8a 29 7f 88 8a ff 09 15 fe 0a 48 00 00 1e cd fd 82 24 00 43 c8 89 04 9a b9 0d 62 34 0b b0 a5 c2 30 c6 cc 67 00 00 00 00 00 00 09 00 04 00 00 00 22 00 17 00 17 00 00 00 00 00 1e cf f9 00 08 3c 82 10 92 05 11 5d 12 8f e8 c6 3f b6 31 8d fb 24 24 0f d9 09 24 3f a2 49 0c 80 00 00 1e cf fb 00 88 04 80 12 a2 45 02 8d 65 16 99 24 55 c5 36 45 14 00 00 1e cd fd 81 24 04 42 48 11 02 90 85 ea 05 dc 6d 01 67 16 61 00 c6 cc 58 00 00 00 00 00 00 0a 00 04 00 00 00 1b 00 12 00 14 00 00 00 00 00 1e cf f6 00 90 01 01 20 68 6a 1a 74 68 54 a5 30 53 b0 08 9d a0 81 3b 30 c0 00 00 1e cf f9 01 08 2c 80 14 02 0d 31 3a 02 a9 08 a0 00 00 1e cd fd 80 24 00 40 48 01 06 80 84 5b 44 ba 12 39 40 c6 cc 5a 00 00 00 00 00 00 0b 00 04 00 00 00 1d 00 12 00 14 00 00 00 00 00 1e cf fb 00 48 14 82 90 02 01 25 2a 0d 35 a2 89 42 8d 43 98 2d 8a d6 8d 01 68 00 00 00 1e cf f6 02 10 59 02 21 a8 24 f4 4b 50 6a 00 d0 00 00 1e cd fd 80 a4 00 40 48 01 06 84 84 41 40 db 92 06 00 c6 cc 5f 00 00 00 00 00 00 0c 00 04 00 00 00 21 00 17 00 10 00 00 00 00 00 1e cf fe 40 31 02 90 52 01 21 48 64 a8 3a 2b 24 8d c5 1a 45 1a 28 a2 47 1d e1 5a 5f ba 23 80 00 00 1e cf f2 04 10 09 00 20 68 a4 55 49 5e 48 a4 8a 56 80 49 23 00 00 00 1e cd fc 8a 64 00 40 c8 41 02 de 81 0a c0 c6 cc 62 00 00 00 00 00 00 0d 00 04 00 00 00 1f 00 18 00 14 00 00 00 00 00 1e cf ff 60 38 81 c8 04 81 90 e4 32 0d 19 76 49 35 34 28 af c8 8d 14 73 c7 69 7e 85 58 00 00 1e cf ec 0c 20 32 1c 40 52 68 0b 50 22 81 28 1a 8b 05 20 2c 83 00 00 00 1e cd fc 81 a4 00 44 48 01 1e 80 b5 13 21 8a 4b 45 68 c6 cc 68 00 00 00 00 00 00 0e 00 04 00 00 00 21 00 1b 00 15 00 00 00 00 00 1e cf ff b0 14 40 62 06 40 08 09 04 8c 95 34 75 29 4d e8 51 5f 89 1b 44 77 e4 29 b1 0d 41 00 00 00 1e cf e4 06 20 92 10 41 e8 04 64 f4 0c 36 86 16 c6 1e c2 0f 63 19 c2 08 00 00 00 1e cd fb 0c 48 08 85 90 42 25 19 2a 94 2b 35 87 10 e7 00 c6 cc 5b 00 00 00 00 00 00 0f 00 04 00 00 00 19 00 14 00 17 00 00 00 00 00 1e cf ff d8 02 20 91 00 22 64 03 14 a9 4a d5 88 a4 6a 43 99 10 65 80 00 00 1e cf d8 58 40 e4 19 09 43 24 a2 5a 83 8b 20 5b 08 b0 00 00 1e cd fb 00 48 00 88 90 a2 05 7d 12 56 92 49 8e 28 d4 90 94 88 c6 cc 71 00 00 00 00 00 00 00 00 05 00 00 00 31 00 19 00 10 00 00 00 00 00 1e cf f6 03 90 19 01 20 28 0f d1 49 58 51 47 f2 4a 2d 5f ff e0 08 db 7f f0 02 b6 df fc 00 b6 dd ff f0 04 97 2f bf c0 82 de cd ff 44 37 76 64 00 00 1e ce 40 e4 02 86 20 68 84 74 c9 91 a8 c7 b0 84 70 c6 71 8c df 30 86 00 00 1e cd 20 a9 0c a4 28 62 05 65 02 95 89 b0 c6 cc 82 00 00 00 00 00 00 01 00 05 00 00 00 3a 00 1b 00 16 00 00 00 00 00 1e cf fd 80 64 02 40 48 0b 02 82 85 07 fd 12 4b 55 d7 7f fc 6d 9b 5b ff fc 35 36 d9 bf ff c3 35 6d bb ff ff 0a aa 66 d9 ff 0a ed b7 5f ff f8 ea ad b2 ff ff 8e aa d9 20 00 00 1e dc 40 44 07 40 90 44 3d 01 22 25 6a 20 ba 18 76 10 7b 18 e2 05 10 a5 00 00 00 1e cd 20 19 09 a2 a8 02 05 09 19 72 35 98 f3 08 6f 99 9b 40 c6 cc 89 00 00 00 00 00 00 02 00 05 00 00 00 2d 00 21 00 24 00 00 00 00 00 1e cf ff d8 02 20 13 01 20 24 0b 04 85 0a 1f e9 29 6b 95 ff fe 2c aa df ff e2 c9 44 ff c5 52 6f ca 8c 42 11 c2 1b 3f a1 a1 a6 00 00 00 1e cc c0 64 12 80 21 a8 04 d4 4a d3 46 a5 29 df e0 95 5f f8 56 ab ff f1 25 56 ff fc 4b 55 80 00 00 1e cc 40 c4 06 86 20 74 02 42 24 3a 4c 64 7f 63 1a 49 e9 09 24 cf d5 24 92 4f d4 96 29 27 ea 4b 14 90 c6 cc 99 00 00 00 00 00 00 03 00 05 00 00 00 31 00 27 00 2a 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 40 02 10 40 11 84 42 82 04 05 02 4d b4 31 a4 9d 09 24 93 d2 49 24 9f 64 92 43 3e 88 42 49 3d 0a 42 40 00 00 1e cd 20 19 02 a0 28 0a 05 03 a5 42 9a 55 3d 2a ab ff ca b5 5f fe 21 5a bf fc 55 69 ff 95 54 ff cd 14 bf ca 90 00 00 1e cc c0 44 00 81 20 08 04 1f 40 89 04 22 37 ff 49 0c 92 7e a5 24 98 bf 52 52 49 3f 61 25 20 7b 8a 40 86 c8 18 7b 31 80 c6 cc 84 00 00 00 00 00 00 04 00 05 00 00 00 2c 00 22 00 1f 00 00 00 00 00 1e cf ff fe c0 21 80 04 00 40 0c 00 80 40 43 c8 10 42 3d 24 fe ac 52 49 3e 88 52 40 e9 24 84 3b 09 20 5d b1 86 a3 19 4c 65 80 00 00 1e ce c0 14 02 80 a0 28 14 14 28 be 8d 2a a9 3f f2 d4 9f e5 48 fd 48 9f a4 44 a1 46 1c 21 c3 00 00 00 1e cd c8 00 40 04 02 80 20 10 91 fa 04 10 8c 2e d9 8c e6 20 e2 08 2d 84 1c 40 ec 05 00 c6 cc 68 00 00 00 00 00 00 05 00 05 00 00 00 22 00 19 00 16 00 00 00 00 00 1e cf ff e4 00 10 00 81 08 29 0c 49 22 22 55 6d 12 54 9a 4a ff 11 2b f0 a5 5f f9 14 af fc a2 a0 00 00 1e cf e4 01 21 32 04 42 51 88 6b 11 d6 63 cc 63 8c 62 c4 10 df 19 98 00 00 1e cd fb 01 08 2c 80 10 d2 01 89 2a a6 5c 69 29 1c 77 88 e0 c6 cc 86 00 00 00 00 00 00 06 00 05 00 00 00 27 00 27 00 21 00 00 00 00 00 1e cf ff c8 06 20 31 03 20 64 05 86 42 46 9a ba ba 4b ff 2a 93 fc 52 a7 fe 16 95 ff e2 a9 4f fc 8b 4b ff 0a c8 00 00 1e cf ec 00 20 62 04 40 f4 11 11 12 04 7a 99 8d fd 06 6c 7f 42 10 93 d8 42 43 7b 21 21 0f e2 12 43 7b 09 21 00 00 00 1e cd fc 80 a4 12 40 18 29 0e 82 83 4a aa d3 71 d3 f4 29 5f e4 55 3f 0a 95 fe 12 ab ff 03 52 c6 cc 7d 00 00 00 00 00 00 07 00 05 00 00 00 25 00 1f 00 22 00 00 00 00 00 1e cf ff f2 01 88 0c 40 04 04 84 60 91 91 aa 8d 4a 52 fc a4 5f e6 48 fd 25 2f f1 4a 3f cc a5 bf d4 54 80 00 00 1e cf c8 00 40 44 2d 02 42 23 d1 20 51 ba 20 83 cc cc 5d 99 85 99 8c fb 31 8b 31 06 00 00 00 1e cd f9 00 c8 04 83 90 29 02 41 46 9d 0d 2e e2 bf cc 91 fa 49 3f cc 91 fa 91 3f 29 17 f9 91 00 c6 cc 64 00 00 00 00 00 00 08 00 05 00 00 00 1f 00 17 00 17 00 00 00 00 00 1e cf ff f9 00 84 0c 20 02 06 e0 c8 04 44 84 79 22 96 83 4a 34 e4 a4 75 f9 22 78 a8 60 00 00 1e cf 90 1c 80 c8 1a 01 d0 e8 a8 b5 29 aa 2d 11 e8 62 d3 00 58 00 00 1e cd ec 06 20 62 03 20 c4 4d 29 2a 36 16 7b 14 1e 09 a0 f2 80 c6 cc 99 00 00 00 00 00 00 09 00 05 00 00 00 34 00 27 00 27 00 00 00 00 00 1e cf ff ec 00 30 10 80 08 01 00 40 20 21 ff a0 41 88 e9 3f e8 52 49 8b ff 48 24 b1 67 c8 4a 49 91 ec 01 09 93 3c 80 8c 93 3b 08 12 66 72 0c 86 4e 00 00 00 1e cf d8 06 40 a4 15 00 e8 32 1a 54 5e 9a 5d cf fc 32 97 ff 81 55 7f f8 0a 55 ff e0 45 2e fc 10 aa ff c0 46 a0 00 00 1e cd f6 03 10 31 01 b0 02 09 19 1f 44 92 99 7c 46 6c ff 83 1a 43 ff 90 84 86 7d 04 24 93 d0 20 da 7a 40 d2 40 c6 cc 88 00 00 00 00 00 00 0a 00 05 00 00 00 32 00 20 00 1f 00 00 00 00 00 1e cf fe c0 01 01 10 bb 00 20 08 44 49 7e 81 08 8c 2f ed 92 48 1f ff fc 91 09 24 7f f5 94 42 80 bf fe b2 44 42 4b f9 4a 88 88 4b fb 4a 8a 88 50 00 00 1e cf f2 08 10 19 0c 60 28 34 94 1a 34 c8 69 72 8a ff ca a4 ff c9 51 7f fa 8a a7 ff 95 64 00 00 1e cd fb 04 48 08 86 90 62 26 84 91 3e 82 88 27 63 10 fe c6 31 8f f9 48 40 9e c9 08 00 c6 cc 4b 00 00 00 00 00 00 0b 00 05 00 00 00 1a 00 13 00 07 00 00 00 00 00 1c a8 51 1f ff e8 5c 40 04 04 46 10 4d 49 0c b8 f7 78 73 19 14 f5 88 b0 00 00 1e cf f2 11 90 11 0d 20 48 f4 45 2a 95 2c 91 4a 00 00 00 1e cd fb 28 00 c6 cc 61 00 00 00 00 00 00 0c 00 05 00 00 00 1b 00 17 00 18 00 00 00 00 00 1e cf fd 80 24 00 40 c8 39 01 41 6e 89 14 28 6a 28 12 41 27 69 14 57 e2 88 00 00 1e cf f2 07 10 09 0e 20 28 c4 35 49 5a 69 85 88 2c 51 34 18 60 00 00 1e cd fb 02 c8 00 80 90 02 1d 21 1a c4 ca 34 e2 8a 38 83 88 12 88 c6 cc 61 00 00 00 00 00 00 0d 00 05 00 00 00 18 00 1b 00 17 00 00 00 00 00 1e cf fe c0 b1 02 30 32 12 41 30 54 a4 4c aa 0f 0d 11 3d 0a 1d 00 00 00 1e cf f2 00 10 09 00 21 08 14 14 0a 91 2c 91 0e 28 a2 0e 61 1c 40 8b 30 80 00 00 1e cd f9 00 08 04 81 10 12 9d 01 6a 47 54 79 02 4a 12 50 92 80 c6 cc 7a 00 00 00 00 00 00 0e 00 05 00 00 00 23 00 1f 00 21 00 00 00 00 00 1e cf ff 60 80 80 c8 11 01 20 08 48 53 a0 a7 76 33 7d 83 33 e1 99 bf 83 33 df f0 10 6c 7f c4 21 24 00 00 1e cf ec 00 20 42 08 40 e8 44 64 74 8b 2e 41 0c f8 cc 47 cc 62 3e c2 08 e1 06 71 8c 00 00 00 1e cd f9 01 c8 14 81 30 32 1d 0d 06 85 75 aa 63 92 fc 89 3f 22 a5 fe 22 97 f9 15 2f f2 45 40 c6 cc 77 00 00 00 00 00 00 0f 00 05 00 00 00 28 00 19 00 1f 00 00 00 00 00 1c a8 51 1f ff fe 80 02 02 20 02 28 46 14 90 12 28 a8 76 63 17 6c d8 2f 6d 0c 17 de 24 83 7f f0 52 40 9f 4c 20 44 00 00 1e cf c8 08 41 04 06 81 21 91 68 12 32 e3 48 16 50 92 84 94 24 85 62 00 00 1e cd f2 00 90 19 05 20 94 1a 1a 34 94 d6 4b 69 23 6a 85 3f 29 09 a4 84 d2 22 65 0a 00 c6 cc 7f 00 00 00 00 00 00 00 00 06 00 00 00 33 00 18 00 1d 00 00 00 00 00 1e ce c0 5a 01 a0 34 07 40 c8 36 0f e4 64 59 6b 7b 7b ff fc 01 13 99 99 fd 10 9b 97 73 fa 02 5b d9 7f fc 02 5b b7 7e 01 2d b5 fe 05 5a bf f0 15 58 00 00 1e d4 40 64 04 80 d0 64 22 1d 32 25 6a 31 c2 94 0b a8 f5 3c 72 40 00 00 1e da 40 04 02 83 20 68 a4 15 49 54 20 93 99 c2 08 dd 63 36 f8 21 a4 9d 0c 69 20 c6 cc 97 00 00 00 00 00 00 01 00 06 00 00 00 2d 00 27 00 2c 00 00 00 00 00 1e cf fe c0 15 00 c8 0b 01 90 2c 12 12 2f ff 45 4a ad 6a 3f ff fc 72 c9 24 fe 37 50 23 fc d4 b1 b9 51 6d 0a 66 68 66 7b e0 8d b4 00 00 1e cd 20 11 02 a0 68 12 09 05 2a 14 51 9a aa ff 09 57 7f e0 5a af ff 10 ab 5f fe 21 56 bf fc 48 ac ff ca 34 80 00 00 1e ce 40 24 08 80 20 08 04 1e 91 12 08 45 f6 6d 24 9f 49 24 99 3f 42 98 a4 ce d2 52 62 9f d4 a1 49 27 ea 4a 49 27 ea 4a 48 40 c6 cc 99 00 00 00 00 00 00 02 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff ff f4 08 08 10 20 00 80 04 00 85 20 09 04 08 20 53 e8 52 49 27 d1 01 60 c1 f5 29 24 87 aa 12 42 7b 24 84 0d 90 86 1d 0d 06 80 00 00 1e cc c0 14 02 80 d0 14 0a 0a 14 28 7e 95 55 d4 ff fc b5 65 ff f9 95 53 ff 2b 49 ff 95 49 fe 64 2b fc c4 69 0a 00 00 00 1e cd 60 01 00 20 08 05 00 80 81 05 1f f4 12 8d e9 0f d9 8a 60 87 d5 31 40 2d 92 41 9f d2 40 82 ed 06 3c c1 2c 14 c6 cc 65 00 00 00 00 00 00 03 00 06 00 00 00 23 00 18 00 13 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 00 80 21 11 d8 99 20 85 ed 8c 11 f6 63 5b a0 20 a3 07 60 94 61 d8 c9 80 00 00 1e cf c8 02 40 24 0d 03 42 68 28 d1 ad 49 65 54 86 28 40 34 2c a0 00 00 1e cd f9 00 08 08 82 10 52 19 25 12 d4 03 93 ac 00 c6 cc 56 00 00 00 00 00 00 04 00 06 00 00 00 1a 00 13 00 12 00 00 00 00 00 1e cf ff b0 00 40 c2 06 44 c8 02 89 02 b6 12 63 84 a4 51 5e 09 68 4a b0 00 00 1e cf f2 01 90 61 03 21 88 14 82 03 64 52 16 34 c0 00 00 1e cd fd 88 a4 00 42 c8 21 0e aa 91 1b 68 2c b0 c6 cc 80 00 00 00 00 00 00 05 00 06 00 00 00 28 00 24 00 1d 00 00 00 00 00 1e cf ff 90 14 40 62 06 c0 ac 19 0c 84 8d 14 72 5d 57 fe 15 4b fc 12 ab ff 08 aa ff c2 32 ef e2 2a e3 ff c0 2a dc 00 00 1e cf f6 02 10 21 00 20 7a 08 84 89 12 3b 08 42 ec 66 6f 8c cd be 02 1b 6e c0 c6 87 c4 21 8d b0 31 8c 00 00 1e cd fd 80 a4 0e 40 98 19 0e 89 42 a5 42 2d 49 c7 5e 1c af c4 95 f8 94 bf 24 90 c6 cc 99 00 00 00 00 00 00 06 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff f4 02 10 10 80 84 08 41 11 88 44 26 45 38 b5 ff f8 b0 ab 7f fe 24 aa 5f fe 0c 56 7f f8 aa a7 fe 16 95 ff f9 85 49 ff e2 d1 10 00 00 1e cf e4 00 20 22 00 40 10 48 08 7d 12 0a 46 7f d2 43 43 7b 09 21 0f e2 48 40 f8 90 c6 3f a1 20 43 e8 41 ad 46 68 00 00 1e cd fb 00 c8 0c 80 90 12 05 0b d0 91 a2 95 77 ff 95 95 7f f8 a8 d3 ff 28 d2 ff ca 32 bf f2 8a 9f e5 44 fd 22 00 c6 cc 6d 00 00 00 00 00 00 07 00 06 00 00 00 23 00 17 00 1c 00 00 00 00 00 1e cf ff fd 80 62 01 10 11 03 10 64 0b 09 19 32 d1 35 42 9f 94 44 d2 14 fd 42 b3 11 97 a0 cb 58 c0 00 00 1e cf 20 11 02 20 f4 01 08 92 91 5a 05 d0 19 51 ee f1 1c c2 ba 00 00 1e cd e4 01 20 12 06 41 50 5a 0a 34 6b 56 a2 53 49 69 e4 4c 06 12 73 29 8c c0 c6 cc 70 00 00 00 00 00 00 08 00 06 00 00 00 20 00 19 00 20 00 00 00 00 00 1e cf ff ff 90 14 20 70 81 18 28 83 11 44 12 33 82 24 05 0a 63 88 62 39 99 9b e3 48 63 00 00 00 1e ce 40 64 02 93 a0 48 74 54 54 2b ad ae 29 5f 8a 53 f2 52 7e 52 40 00 00 1e cd 90 24 81 88 1a 00 81 46 42 81 14 2b 0a c1 90 84 73 10 ce 23 33 7c cd 8c 7d 08 41 80 c6 cc 8e 00 00 00 00 00 00 09 00 06 00 00 00 2f 00 25 00 23 00 00 00 00 00 1e cf ff ff c8 02 10 00 40 84 08 c0 08 0a 1e 4c 20 20 84 7d 61 0f 4c f4 04 24 99 ec 09 24 cf 51 09 26 7a 24 84 93 b0 84 86 7b 21 09 10 00 00 1e ce 40 34 06 81 a0 28 14 0f 46 8d 14 aa bf f0 a9 d7 fe 14 aa ff c4 55 3f 14 95 fe 49 27 e9 22 fc 91 00 00 00 1e cd 60 01 03 20 08 02 01 07 d0 24 41 48 bc 43 6d ba 41 b4 3e 21 21 8f a1 0c 37 06 10 51 06 21 00 c6 cc 91 00 00 00 00 00 00 0a 00 06 00 00 00 39 00 20 00 21 00 00 00 00 00 1e cf ff fe 40 01 80 14 00 c0 14 01 80 c0 40 47 fb 0c 91 ce 42 9f ff a8 8d 11 09 7e d2 22 22 20 7d a2 a5 0a 17 fe 94 28 84 97 fd 44 a1 2c 3f a9 29 24 9f d8 0a 04 80 00 00 1e cf b0 05 80 c8 0a 02 83 42 f4 28 51 5a 93 95 51 7f 8a 49 f9 48 49 21 28 a1 0a 10 51 40 00 00 1e cd e4 00 20 02 00 40 90 88 3e 81 02 0a 21 7b 33 1f 6c c2 3e cc 69 31 92 c6 38 c1 da c3 80 c6 cc 5d 00 00 00 00 00 00 0b 00 06 00 00 00 1e 00 15 00 13 00 00 00 00 00 1e cf fe 40 01 04 90 12 04 40 12 51 a0 a4 94 52 6c 38 c1 d7 8c 52 20 76 05 e9 35 80 00 00 1e cf f6 0a 90 21 07 21 48 54 c4 6b 13 28 b1 0e 61 c8 00 00 00 1e cd fb 09 48 20 80 90 02 05 d1 0a b4 0b a8 d3 00 c6 cc 70 00 00 00 00 00 00 0c 00 06 00 00 00 2b 00 1c 00 12 00 00 00 00 00 1e cf fe c0 11 01 90 32 02 41 90 3d 19 09 15 ba 7d 4a 8f fc 35 2b ff f1 22 b3 ff c1 4a 57 ff e2 42 8d ff e2 11 2b ff 10 54 00 00 1e cf f6 00 10 31 07 60 88 44 5a 44 c9 dc 43 c4 31 c6 31 62 08 2c c6 16 c2 08 00 00 1e cd fb 02 48 00 80 90 22 2d 19 08 8a 5a 81 10 c6 cc 7a 00 00 00 00 00 00 0d 00 06 00 00 00 24 00 22 00 1d 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 48 02 29 4a 04 12 e8 8b f2 44 ff 32 27 f8 a4 9f f9 24 af ff 22 93 fc 2a 8e 00 00 1e cf ec 02 20 82 06 c0 90 88 f4 49 14 4e 84 31 f6 31 0f b3 19 bf a0 43 43 fa 10 34 3e 08 63 40 00 00 1e cd f9 02 48 18 84 90 62 1d 1d 05 2a ea b9 ca fd 0a 4f 14 54 fd 0a 57 e2 2a 00 c6 cc 71 00 00 00 00 00 00 0e 00 06 00 00 00 22 00 19 00 1f 00 00 00 00 00 1e cf ff c8 02 20 01 04 20 04 11 07 24 22 24 85 ea 62 33 e2 cd 9c 8c db 8b 08 b4 31 a0 c4 43 00 00 00 1e cf d8 08 40 c4 0e 80 22 11 54 27 48 aa 08 12 c1 68 1a 83 0f 66 00 00 00 1e cd f6 00 90 29 03 20 68 0e 82 4a 8d 34 6e 53 bf 44 53 c8 e2 52 08 52 10 a2 92 88 00 c6 cc 66 00 00 00 00 00 00 0f 00 06 00 00 00 24 00 12 00 19 00 00 00 00 00 1e cf ff 60 01 80 88 01 02 21 76 01 01 12 0f fa 10 d8 5f 66 c1 1f f4 83 1e 20 47 d8 c2 a0 21 6f 58 00 00 00 1e cf b0 18 82 48 32 12 84 4b 48 20 23 51 2c 00 00 00 1e cd d8 06 40 64 1d 00 d0 68 6a 29 55 65 c4 b4 87 4a 0e c5 68 05 5c c6 cc 78 00 00 00 00 00 00 00 00 07 00 00 00 22 00 1e 00 21 00 00 00 00 00 1e cf ff c8 0a 20 11 01 20 64 14 82 4e 48 e1 45 33 b3 36 6a c6 3c 65 04 6d a5 1b 1a 46 c6 86 80 00 00 1e cc c0 54 0a 81 a0 14 3a 1a 34 1a 6d 57 7e 22 a7 85 14 f1 c8 91 45 12 28 e7 8a 18 00 00 1e cc c0 44 04 80 20 08 04 1e 91 12 08 45 e2 1b 6d ec 09 0d 3a 08 cc f8 62 0b 18 45 cc 1c 38 c6 cc 78 00 00 00 00 00 00 01 00 07 00 00 00 26 00 1c 00 1f 00 00 00 00 00 1e cf ff f2 02 08 08 40 8c 0e 40 10 88 88 08 21 72 36 67 48 68 63 a4 86 83 b0 86 86 b0 d0 c6 b0 c6 82 6c 20 00 00 1e ce 40 14 02 81 a0 28 14 34 1e 85 34 bb bf c4 91 fa 23 bf 44 25 05 1a 80 50 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 f4 10 c8 c7 f3 36 0b 99 85 d8 cb 38 16 35 c3 cf 00 c6 cc 5f 00 00 00 00 00 00 02 00 07 00 00 00 1f 00 13 00 16 00 00 00 00 00 1e cf ff c8 00 20 21 02 20 84 0b 00 81 42 ce 54 33 0d 10 64 11 1b 60 ef cc 56 9f 96 20 00 00 1e cf c8 06 41 64 02 82 a2 a8 2b 98 10 20 78 41 20 00 00 1e cd fb 00 88 35 80 10 f6 01 3e c5 0a 49 34 b1 27 9c 78 f0 c6 cc 5b 00 00 00 00 00 00 03 00 07 00 00 00 1f 00 11 00 14 00 00 00 00 00 1e cf ff 20 18 80 08 09 08 20 09 d4 28 1b 46 2d 1d 41 29 c5 1b 39 cf fc 32 4f ff 29 52 00 00 1e cf e4 0a 21 42 20 44 11 8a 0b 90 a8 60 00 00 00 1e cd fc 80 e4 22 43 c8 39 0e 9a 8d 6b 2f 12 f1 e2 80 c6 cc 66 00 00 00 00 00 00 04 00 07 00 00 00 22 00 12 00 1b 00 00 00 00 00 1e cf ff 60 48 81 a4 04 85 90 52 59 19 07 64 b3 74 21 53 ff 21 4a ff c1 29 7f e1 25 3f c3 66 80 00 00 1e cf d8 10 42 04 41 0e 4d 29 23 54 cb 53 71 48 00 00 1e cd fb 01 c8 14 81 10 32 15 35 3a 24 5a 24 d1 b6 08 5c 83 1b f8 c6 86 00 c6 cc 88 00 00 00 00 00 00 05 00 07 00 00 00 36 00 1c 00 1f 00 00 00 00 00 1e cf ff 90 04 40 62 02 40 48 12 09 0a 0f e8 96 55 5c ff ff c4 92 b5 ff c2 2a d5 ff ff fc 22 25 97 7f fc 10 6c 9a ff f0 92 6d 5f fe 16 4b 5b ff 84 8a d2 80 00 00 1e cf c8 00 40 84 09 02 40 e8 09 12 27 51 44 98 49 07 8c 51 4e f2 22 bf 51 20 00 00 1e cd f6 01 90 19 03 20 68 0d 05 1a 54 d1 72 88 85 22 68 1c 53 18 e6 66 6f e9 09 0c 00 c6 cc 76 00 00 00 00 00 00 06 00 07 00 00 00 28 00 1a 00 1d 00 00 00 00 00 1e cf ff f6 00 88 04 c0 c4 0c 81 21 6c 24 24 49 72 7c f1 4b 7f f8 b4 42 7c dc 26 ff 0b 0d ea 8b 5f f9 51 9f a8 20 00 00 1e cf 20 21 05 a0 48 6a 09 15 9a 34 29 2d c9 44 97 89 27 92 29 e8 8a 00 00 00 1e cd d8 02 40 64 15 04 a0 d3 10 ac 45 c5 2d 88 21 d8 cc df 43 18 6e 30 41 4c 60 c6 cc 6d 00 00 00 00 00 00 07 00 07 00 00 00 1e 00 1b 00 1d 00 00 00 00 00 1e cf ff fe c0 30 80 84 10 40 c4 00 82 40 48 20 49 25 11 cc 20 cb 08 0c 41 44 91 24 00 00 1e ce c0 94 06 80 a0 1a 05 1d 1a 14 34 92 e5 78 8a 5e 44 09 08 94 5c c2 00 00 00 1e cd 90 10 81 08 12 03 43 21 22 43 51 88 f3 11 9b ec 61 8a 20 44 21 d8 30 a8 80 c6 cc 6d 00 00 00 00 00 00 08 00 07 00 00 00 22 00 1c 00 18 00 00 00 00 00 1e cf ff fe 40 00 80 84 00 40 84 10 83 22 22 20 61 76 31 8c 7d 08 60 b6 30 e4 02 d9 51 c6 d2 38 00 00 1e cf 90 0c 80 48 1a 06 82 d0 d0 a3 55 1a 94 a2 45 23 51 08 16 c0 49 a4 08 00 00 00 1e cd d8 00 40 44 09 04 40 e8 08 92 2b 43 18 a3 05 20 0d 24 16 00 c6 cc 65 00 00 00 00 00 00 09 00 07 00 00 00 22 00 17 00 15 00 00 00 00 00 1e cf ff f6 01 08 08 40 84 00 80 20 d8 88 89 2a bc 82 19 f3 18 dd 30 53 b0 e1 50 51 43 22 96 00 00 00 1e cf e4 01 20 52 0e 40 28 54 74 54 ad 2d 0a 60 62 b0 20 20 50 00 00 1e cd f6 04 10 39 02 21 48 14 64 28 91 0f 52 79 8e 51 c0 c6 cc 69 00 00 00 00 00 00 0a 00 07 00 00 00 2f 00 13 00 10 00 00 00 00 00 1c f0 4e df ff ff d0 00 40 82 00 10 02 00 80 47 30 10 62 06 9f 61 09 07 fd 20 42 1f c1 06 67 fd 02 04 6f f8 20 63 f8 83 1b f8 b1 9c 00 00 00 1e cf f6 02 90 51 10 20 68 c5 06 0b d0 93 64 d3 40 00 00 1e cd f9 01 08 24 81 10 92 dd 09 1b 92 e0 c6 cc 64 00 00 00 00 00 00 0b 00 07 00 00 00 25 00 14 00 14 00 00 00 00 00 1e cf fd 81 04 0a 40 58 01 04 8c 85 0d 45 12 bb 10 c5 e6 62 2f 8c c4 7f f4 81 8c 7f f2 10 21 3e 90 31 a0 00 00 1e cf f9 00 88 28 80 90 c2 0d 09 d3 a4 50 14 31 48 a0 00 00 1e cd f9 02 48 18 83 90 82 1d 21 0a d4 08 b8 d0 74 f0 c6 cc 61 00 00 00 00 00 00 0c 00 07 00 00 00 1f 00 16 00 15 00 00 00 00 00 1e cf fd 80 a4 06 40 c8 14 87 22 a1 41 49 24 bb c7 69 30 50 5d 03 f4 30 cf fa 1a 04 00 00 00 1e cf f2 04 10 21 01 60 c8 64 1a 05 49 92 6b 03 89 60 70 b0 00 00 1e cd f6 07 90 01 05 21 48 35 d4 0a d4 22 e7 02 68 35 10 c6 cc 7a 00 00 00 00 00 00 0d 00 07 00 00 00 1f 00 22 00 22 00 00 00 00 00 1e cf ff 20 08 80 48 19 03 21 2c 12 54 6a 74 a9 4e fc 45 12 28 e7 8a 39 85 06 a1 d9 00 00 00 1e cf e4 04 20 22 04 40 f4 21 09 12 3d 26 23 3f 98 d9 be 02 19 be 19 88 fb 0c 43 88 20 b3 10 40 00 00 1e cd f2 02 90 29 01 20 5a 0c 8a 8d 0a 1d 24 b9 5f 85 29 f8 92 7e 45 2b fc 92 5f 89 27 e4 8a 00 c6 cc 6a 00 00 00 00 00 00 0e 00 07 00 00 00 1c 00 1b 00 1c 00 00 00 00 00 1e cf ff c8 02 20 a1 02 20 24 51 38 85 02 aa 29 42 9c ec 65 08 14 66 72 c2 00 00 00 1e cf b0 00 81 08 4d 00 41 25 a4 56 91 55 10 a6 e6 31 e6 61 68 20 53 06 00 00 00 1e cd d8 02 40 a4 21 03 44 a1 50 a5 62 92 49 6d 45 a7 90 a2 48 a3 49 09 48 60 c6 cc 54 00 00 00 00 00 00 0f 00 07 00 00 00 1c 00 0e 00 13 00 00 00 00 00 1e cf ff c8 08 20 c1 12 21 a4 01 10 a5 12 89 45 58 41 e6 d6 17 66 61 76 66 00 00 00 1e cf 62 e1 00 a1 48 4a 01 0d 01 10 00 00 1e cd b0 1c 87 48 02 02 b9 42 52 81 16 16 72 82 80 c6 cc 53 00 00 00 00 00 00 00 00 08 00 00 00 1c 00 0e 00 12 00 00 00 00 00 1e cf e4 01 20 02 04 40 90 08 08 53 24 a5 31 0d 08 21 18 64 18 a2 26 40 5b 94 00 00 1e ce 40 54 14 85 a0 89 04 94 c2 c0 00 00 1e cd 60 89 08 a2 28 ba 01 05 12 11 2a 4b 10 00 c6 cc 52 00 00 00 00 00 00 01 00 08 00 00 00 1c 00 0d 00 12 00 00 00 00 00 1e cf 90 08 80 88 12 0a 80 44 44 95 25 2a 1b 98 c5 0c 28 c7 b0 45 43 0e 08 60 00 00 1e ce c1 64 0a 80 20 28 06 23 c0 00 00 1e cd 60 59 07 a2 68 aa 01 14 9e 81 54 0f 42 b0 c6 cc 54 00 00 00 00 00 00 02 00 08 00 00 00 24 00 0f 00 0a 00 00 00 00 00 1e ce c0 24 02 80 20 28 6d 05 5a 14 35 29 4d 0a 57 7f 81 ca fc 39 d7 f8 22 ae ff 01 d5 df f8 24 5b 80 00 00 1e ce c0 c4 02 80 24 08 14 04 28 81 00 00 00 1e cd 20 89 07 a2 ab 40 c6 cc 75 00 00 00 00 00 00 03 00 08 00 00 00 36 00 12 00 16 00 00 00 00 00 1e ce c0 14 02 80 a0 68 14 34 1f 46 8a 55 55 ff fe 2d 57 9f ff ff 09 96 da ff f8 db 76 d7 ff f0 ce 5c cb 7f f0 6a ee 65 bf fd 2a cd cc cb ff e0 d5 57 2b 32 00 00 1e ce 42 44 1a 80 22 c8 94 45 a8 94 58 86 88 2c 00 00 1e cd 20 09 07 a1 c8 0a 45 31 1a e4 4b 24 52 a8 c2 28 63 00 c6 cc 97 00 00 00 00 00 00 04 00 08 00 00 00 25 00 2b 00 30 00 00 00 00 00 1e cf d8 02 40 a4 05 03 40 a0 74 68 d1 5a a6 92 2f 72 0a a0 8b a9 99 bf 98 db 4f 68 12 d3 3e b4 93 32 00 00 00 1e ce 40 34 0a 81 a0 5a 15 0d 0a 14 bb 55 d5 ff e1 6a af ff c0 95 ab ff ff 84 92 6a ff c2 56 ad ff ff 84 32 d5 ff 80 b5 aa 00 00 1e cc c0 04 08 81 20 08 3e 84 89 02 08 7f a1 b6 d9 3f a9 49 26 2f f5 24 b1 62 ff a9 28 58 b3 e5 28 51 0a 7f e9 28 51 09 7f e9 28 50 a1 00 c6 cc 81 00 00 00 00 00 00 05 00 08 00 00 00 2a 00 1f 00 21 00 00 00 00 00 1e cf f9 00 48 04 80 90 12 05 05 0d 0a 1f e9 2a aa bb ff f0 29 45 fe 45 17 85 0a 40 cb db 31 af fb 11 21 0f d9 8a 12 40 00 00 1e cf 90 0c 81 48 1a 05 a0 50 51 a5 4b 4a b8 a7 e9 22 fc a2 26 91 13 48 89 a4 12 8e 68 00 00 1e cd b0 00 80 08 12 00 84 41 e8 10 20 a2 17 23 31 be c6 18 b3 31 0e 63 0b 30 ce c0 94 1c c0 c6 cc 6b 00 00 00 00 00 00 06 00 08 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 88 02 19 42 24 50 ac 22 10 18 47 99 98 b3 36 37 f4 86 86 3f a1 24 24 00 00 1e cf d8 02 40 a4 15 02 a0 51 53 a0 a6 d2 89 14 e1 45 10 10 24 96 11 80 00 00 1e cd f2 02 10 21 05 20 88 44 54 ca 52 2a 80 a8 9b 1c 4b 11 45 00 c6 cc 7a 00 00 00 00 00 00 07 00 08 00 00 00 22 00 23 00 1e 00 00 00 00 00 1e cf ff b0 04 41 22 09 21 24 19 04 82 d2 4d 29 c4 b9 fe 1c a7 f8 15 57 fa 09 2f f0 3a fc c4 80 00 00 1e cf f2 04 10 21 01 90 22 19 09 0e 91 25 3e 42 19 f3 33 37 c1 8c 69 a1 84 6d f0 61 1b 7c 10 c6 80 00 00 1e cd f9 00 08 04 80 10 12 09 05 12 95 9e 61 27 6a 14 57 91 18 8a 2b d1 14 f4 52 00 c6 cc 87 00 00 00 00 00 00 08 00 08 00 00 00 34 00 22 00 1a 00 00 00 00 00 1d 16 4d bf ff ff e8 04 20 21 05 08 31 09 c6 21 13 2c a4 d4 aa 5f ff e2 4a a5 ff fe 24 94 5f ff f0 24 aa ff ff e0 24 94 bf f0 82 ab 7f ff e1 24 15 40 00 00 1e cf e4 06 20 62 02 c0 90 c8 48 74 0a 29 97 b3 66 3e 34 31 8f 89 06 c7 c4 21 87 31 04 7d 98 c0 00 00 1e cd f9 07 48 10 83 90 52 09 15 2a 34 2d 72 bf 51 27 92 44 a4 84 22 8c c6 cc 70 00 00 00 00 00 00 09 00 08 00 00 00 2b 00 13 00 1b 00 00 00 00 00 1e cf ff f6 00 88 14 42 04 0c 85 22 90 48 c9 ac 8e a5 49 7f f9 49 57 ff f8 92 a2 ff fc 0a a5 7f ff 81 25 47 ff fc 41 2a 00 00 00 1e cf c8 0c 41 c4 49 09 40 23 27 40 c3 48 3d 00 2c 00 00 1e cd f9 00 c8 14 82 90 06 05 15 2a 2a 2d 25 8e 28 82 91 85 1c c5 07 82 40 c6 cc 62 00 00 00 00 00 00 0a 00 08 00 00 00 26 00 11 00 14 00 00 00 00 00 1e cf ff fb 03 84 02 60 22 14 20 48 64 04 25 d0 59 2e ff 29 27 fe 54 a7 ff 85 54 ff fc 45 2a ff ff 12 0a 28 00 00 1e cf b0 40 84 08 82 20 8f 40 27 a4 4d 95 00 00 00 1e cd ec 11 20 b2 04 40 51 2a 2c 50 26 75 02 48 08 38 c6 cc 70 00 00 00 00 00 00 0b 00 08 00 00 00 26 00 1a 00 19 00 00 00 00 00 1e cf ff f9 01 04 04 20 42 00 20 79 00 48 44 40 bc 49 0c 69 e8 08 4b f8 4c 4b a4 23 12 21 fa a1 9f e6 9d 9c 00 00 1e cf b0 04 83 98 2a 15 42 a5 51 a9 4a 45 d5 1c af 0e 2b c8 51 05 14 00 00 00 1e cd ec 11 60 02 1e c1 11 74 05 88 74 09 2e 61 16 61 0a 10 ce 63 10 c6 cc 75 00 00 00 00 00 00 0c 00 08 00 00 00 34 00 18 00 12 00 00 00 00 00 1e cf ff e4 00 10 10 81 08 21 03 c8 04 04 04 0a 47 fe 92 49 21 ff 56 2c 52 4f fd 24 a1 42 9f fd 22 88 50 97 dc 25 11 0a 7f f4 8a 22 12 5e 42 58 b2 00 00 00 1e cf c8 20 40 e4 11 02 40 a7 27 51 45 e5 54 e1 0e 46 a4 11 45 00 00 00 1e cd ec 09 21 72 4a 41 11 68 8a d1 28 f2 06 1c c6 cc 75 00 00 00 00 00 00 0d 00 08 00 00 00 1b 00 21 00 22 00 00 00 00 00 1e cf ff 90 24 42 e2 04 41 c8 a2 09 4a 27 52 88 39 bb 61 15 78 3a d8 56 80 00 00 1e cf c8 00 40 c4 11 01 a1 91 11 d2 28 da 18 59 04 33 e2 19 9f d8 66 6f e0 84 86 f4 84 34 80 00 00 1e cd e4 03 20 32 0a 40 a8 54 54 68 34 da ed a2 44 d1 25 fe 24 97 fe 49 4b ff 03 29 ff 84 a9 00 c6 cc 66 00 00 00 00 00 00 0e 00 08 00 00 00 20 00 15 00 1a 00 00 00 00 00 1e cf ff b0 14 40 02 02 40 08 22 09 0a 84 93 2d 08 df 04 38 21 1c 76 34 8d 6d c0 c5 26 30 00 00 1e cf 60 21 05 a0 08 7a 01 59 2a 86 d8 7b 05 b0 5b 06 00 00 00 1e cd b0 04 81 48 42 0a 89 40 a3 4e a5 24 98 51 4e 08 71 c9 a4 44 d2 14 c6 cc 56 00 00 00 00 00 00 0f 00 08 00 00 00 24 00 10 00 0b 00 00 00 00 00 1e cf ff 60 20 80 88 21 01 b0 44 02 44 68 e8 42 0b 91 8c 5e cd 84 7f 61 88 7f 63 18 2e 62 0f b1 9a 00 00 00 1e cf 21 b1 00 a1 88 0a 01 05 31 c2 2f 00 00 00 1e cd 60 19 24 a1 48 0b 10 c6 cc 50 00 00 00 00 00 00 00 00 09 00 00 00 18 00 0d 00 14 00 00 00 00 00 1e da 40 64 02 89 a1 c8 1a 32 14 ec 2d 16 08 7c d6 1e 10 5c 43 00 00 00 1f c8 40 14 04 80 a1 48 74 24 20 00 00 1e ce 43 24 02 86 20 68 c4 34 c8 50 5a 3b 59 32 c0 70 c6 cc 4e 00 00 00 00 00 00 01 00 09 00 00 00 1b 00 05 00 17 00 00 00 00 00 1e ce 40 04 1e 85 20 a8 14 44 c8 6e 2f 43 0b 10 cf 84 21 fc d8 21 fc 46 12 00 00 08 08 00 00 00 1e ce 40 04 0a 81 20 a8 24 54 09 54 6b 14 84 d6 1d 81 ec 02 c0 c6 cc 44 00 00 00 00 00 00 02 00 09 00 00 00 1e 00 05 00 0a 00 00 00 00 00 1e d0 40 54 06 80 a0 34 07 49 47 43 43 a9 dd 77 f8 0a af 32 2b 60 ae f0 71 45 51 00 00 00 08 08 00 00 00 1e ee 40 04 66 80 2b 00 c6 cc 86 00 00 00 00 00 00 03 00 09 00 00 00 41 00 18 00 16 00 00 00 00 00 1c a8 51 1e 80 64 06 40 64 0d 83 61 90 c8 c8 ff f6 aa ae ee 66 7f fe 0d 56 2b 95 7f ff 03 55 77 9b 9f ff a2 8c ae ae b3 ff e8 63 55 57 9b ff e8 26 6a 77 2f ff 06 26 73 32 ff e0 c4 c6 5b c8 00 00 1e cc 40 64 13 40 10 44 4d 01 22 9a 4c 2e c2 15 30 73 0e 31 c6 00 00 00 1e d2 40 84 04 80 d0 a4 12 0a 14 ca 25 48 22 44 02 92 07 00 c6 cc a4 00 00 00 00 00 00 04 00 09 00 00 00 2f 00 2c 00 32 00 00 00 00 00 1e cf ff fb 00 44 06 20 02 00 20 18 0c 79 0b 12 88 97 b3 ea b2 64 e7 5a c3 26 1b 46 49 c9 6d 09 33 e6 ba 84 9f e4 bb 42 4f f9 2d b4 30 00 00 1e cc 40 34 02 80 d0 14 0d 05 0a 0f fa 24 aa ba eb ff ff c2 24 93 5f f8 48 35 5f e0 2d 57 ff 80 54 af fc 04 69 fe 05 27 e4 74 00 00 1e cc 40 04 00 80 20 14 05 01 05 02 3f fa 08 47 a6 4c ff d4 92 c5 8b fe 85 09 62 9f f4 92 50 a4 ff 52 4a 49 3f a8 29 24 9f a8 29 21 3e a0 49 20 c6 cc 82 00 00 00 00 00 00 05 00 09 00 00 00 38 00 18 00 1b 00 00 00 00 00 1e cf ff e4 00 30 00 80 08 01 04 40 20 21 ff 40 86 10 d2 4f fa b1 62 93 3e e1 42 85 0b ff ea 32 85 0a 3f 71 11 0a 14 7e d2 14 44 28 fd 95 28 88 51 f9 25 11 0a 20 00 00 1e cf d8 06 40 64 22 82 a2 a8 2b a8 5e ac e4 41 08 82 8a c3 10 c0 00 00 1e cd f6 01 10 39 13 20 c8 54 54 89 53 71 2a 56 c2 a5 b1 15 6c 29 10 72 00 c6 cc 80 00 00 00 00 00 00 06 00 09 00 00 00 2f 00 1b 00 1f 00 00 00 00 00 1e cf fe 40 01 01 30 22 04 41 e4 02 02 04 10 8c ff e9 24 90 9f b2 62 90 9f d8 49 48 4f ec 25 24 27 f5 42 52 07 ea 93 04 0f d8 52 10 00 00 00 1e cf ec 04 20 82 02 41 11 08 28 93 2a 82 88 51 84 22 0c 76 10 71 06 23 00 00 00 1e cd f6 01 90 29 06 20 68 54 54 14 69 ad d3 52 47 92 4b f2 91 7e 52 2f f3 22 7e 92 00 c6 cc 73 00 00 00 00 00 00 07 00 09 00 00 00 2a 00 1a 00 18 00 00 00 00 00 1c a8 51 1f fe 80 04 04 80 10 24 52 2d 29 04 92 98 a7 5f b1 15 7f 82 4a ff 0a aa ff c2 b5 5f fe 21 ab 5f ff f3 0c da e8 00 00 1e cf d8 08 40 44 09 03 a0 90 91 25 a0 a2 09 21 8a 20 c4 60 ac 08 1c 00 00 00 1e cd ec 01 20 32 06 40 d0 54 34 68 d4 59 25 29 06 8d 04 54 69 cc c6 cc 7b 00 00 00 00 00 00 08 00 09 00 00 00 28 00 1d 00 1f 00 00 00 00 00 1e cf f9 00 48 0d 81 90 12 05 05 07 f4 24 56 aa 5f fe 12 a9 ff e2 a3 4f fc aa a7 f9 6a 2f f5 54 5f b9 8b 1c ac 60 00 00 1e cf 90 00 80 88 22 0b 40 22 29 40 7d 0b cb 48 e2 af c2 94 ff 29 53 ff 25 55 00 00 00 1e cd b0 0c 81 c8 22 02 91 51 4c 91 19 25 2e 41 0d bf 88 36 87 f1 09 24 9f 49 24 92 00 c6 cc 76 00 00 00 00 00 00 09 00 09 00 00 00 25 00 1b 00 1f 00 00 00 00 00 1e cf ff 60 18 80 48 09 01 20 c8 28 3f a1 22 49 5c bf ff 51 19 7f f8 a2 4b f0 28 a7 a1 41 e5 60 ee cc 30 00 00 1e ce c1 d4 08 81 a1 28 24 54 a9 29 ad d4 fc 94 9f e6 a2 7e 92 4f d2 86 00 00 00 1e cd 60 f1 01 d0 24 11 04 87 48 89 25 e8 c6 67 cd b1 8d d2 49 03 76 48 41 bf a4 21 08 c6 cc 70 00 00 00 00 00 00 0a 00 09 00 00 00 27 00 18 00 1a 00 00 00 00 00 1e cf ff ec 01 10 18 80 88 09 06 41 20 ec 24 db 7b 7e 4a 55 ff f8 11 4a ff c0 52 3f c9 22 fc 91 6f 48 21 c3 00 00 00 1e ce c0 34 12 81 20 68 74 44 69 55 45 5c 73 21 48 41 e0 ab 0e 00 00 00 1e cd 60 01 03 20 e8 12 19 15 12 45 13 42 10 51 0c 73 19 0c 0e 56 04 80 c6 cc 6b 00 00 00 00 00 00 0b 00 09 00 00 00 2a 00 15 00 15 00 00 00 00 00 1c a8 51 1f ff ff ff e8 04 10 10 40 41 02 12 16 10 84 22 24 24 6a 2a 91 ff e4 54 7f f9 54 27 24 89 8a 3b 7a 0a da 08 80 00 00 1e cf 60 19 03 a0 88 1a 15 3d ab 75 16 85 0a 70 a7 10 30 00 00 1e cd b0 08 81 08 22 03 40 23 24 42 a1 81 e1 84 88 24 f0 c6 cc 65 00 00 00 00 00 00 0c 00 09 00 00 00 29 00 12 00 13 00 00 00 00 00 1e cf ff ff 60 00 40 06 04 60 02 00 c0 63 ec 42 04 11 86 9f b0 92 49 9f 42 24 84 d0 86 11 c2 08 4d 61 8b 58 b3 26 00 00 00 1e cf b0 04 81 48 42 02 97 7c 42 b1 37 1a 81 0c 00 00 1e cd e4 04 21 42 0a 41 14 09 a8 16 a4 45 ce 04 54 c6 cc 81 00 00 00 00 00 00 0d 00 09 00 00 00 20 00 25 00 25 00 00 00 00 00 1e cf ff ec 00 30 68 80 88 01 04 41 20 21 55 4c a3 b5 87 5b 10 52 9d 81 29 58 51 24 2b 00 00 00 1e cf d8 08 40 04 09 00 41 f4 64 08 12 4f a1 08 db fe 20 69 0f e8 04 34 3e 04 33 7c 11 99 f6 31 0e 21 88 00 00 1e cd ec 03 20 32 02 40 d0 28 1e 9d 0a 29 54 f9 25 5f f8 25 4f fc 85 2b fc 05 4a ff 04 95 fe 44 97 e4 88 c6 cc 73 00 00 00 00 00 00 0e 00 09 00 00 00 1d 00 1d 00 22 00 00 00 00 00 1e cf ff e4 03 10 00 87 88 11 02 40 25 2c 4c b2 49 65 87 10 2b 58 d0 62 b0 46 00 00 00 1e cf 60 01 01 21 74 01 04 97 44 89 9d 08 c1 76 c6 3e cc c2 ec cc 2c c4 1e 62 0c 00 00 1e cd 90 04 80 c8 2a 09 a0 d0 53 a2 e8 a4 92 53 94 8b ff 2a 47 f9 92 3f ca 91 fe 54 8f f3 24 00 c6 cc 62 00 00 00 00 00 00 0f 00 09 00 00 00 24 00 14 00 13 00 00 00 00 00 1c a8 51 1f ff ff f4 00 10 20 83 04 08 41 31 09 84 c4 88 1e c0 c3 cc c2 d0 40 b6 62 2d 59 84 73 18 a0 00 00 1e ce 40 14 20 80 a2 08 34 04 2b 11 24 94 4c 86 40 38 00 00 1e cc c4 64 02 87 20 28 e4 15 68 10 48 94 54 73 00 c6 cc 58 00 00 00 00 00 00 00 00 0a 00 00 00 23 00 0f 00 0f 00 00 00 00 00 1e cf ec 06 20 62 03 61 04 12 1f 4c 89 24 f9 4c 47 fc 33 11 ff 46 0d 8f e0 31 9f c1 8c df c1 82 40 00 00 1e cc 40 d4 04 86 a0 48 f4 01 01 05 30 00 00 1f 46 40 04 36 80 21 a8 05 d4 0a d2 60 c6 cc 55 00 00 00 00 00 00 01 00 0a 00 00 00 28 00 0f 00 07 00 00 00 00 00 1e cf d8 04 40 44 1a 80 fd 00 42 22 24 47 d4 66 17 cc cd b7 ec 21 21 3f 61 09 09 fb 09 09 0f a4 24 34 fd 90 08 60 00 00 1f 38 40 34 18 84 a0 c8 b4 45 e8 04 40 00 00 1f d2 40 04 38 c6 cc 49 00 00 00 00 00 00 02 00 0a 00 00 00 1f 00 0e 00 05 00 00 00 00 00 1c f0 4e df 40 44 2c 80 a0 93 69 14 a3 41 44 ad ac 17 62 0a 7d 98 77 d9 85 6f e8 60 e0 00 00 1f c8 40 34 00 80 a0 48 14 24 aa 00 00 00 08 08 00 c6 cc 57 00 00 00 00 00 00 03 00 0a 00 00 00 2d 00 0e 00 05 00 00 00 00 00 1e cf 90 0d 80 48 0d 01 a0 74 19 0c 83 fb 12 4a 57 ad df ff 82 49 6d df fc 02 49 ad fe 00 55 7b f0 46 ab fc 0a 9d fe 44 53 0a 38 00 00 1e e0 40 74 18 81 a1 88 12 89 0d 20 00 00 08 08 00 c6 cc 82 00 00 00 00 00 00 04 00 0a 00 00 00 2f 00 1a 00 22 00 00 00 00 00 1e cf ff 90 05 40 26 03 20 24 09 10 83 e4 2c 64 b5 a9 bf ff ff 1a b6 43 9f f8 6d b6 04 f6 b6 a5 bf c3 55 4f ff c5 55 6f f2 84 68 e3 00 00 00 1e cc 40 54 06 81 a0 5a 15 15 1a 0a 49 24 81 ac 16 c1 6c 09 60 d4 0b 40 00 00 1e d0 40 24 04 80 20 08 3f 42 44 81 24 2f b1 9b 3f 8c 33 3e 20 86 7c 41 05 88 31 c4 08 e2 06 00 c6 cc 78 00 00 00 00 00 00 05 00 0a 00 00 00 37 00 12 00 18 00 00 00 00 00 1d c8 48 1f ff ff ff 40 00 80 06 00 10 03 00 60 18 04 0c f1 0c 10 b2 16 7d a8 51 09 4f fa a1 42 85 3f d4 94 29 27 f5 28 4a 49 fa 12 c5 03 d9 24 84 3d 92 42 08 00 00 1e ce c0 34 14 83 a0 c8 24 15 c8 dc 69 82 50 00 00 00 1e cd 90 00 81 c8 1a 04 8b 43 40 89 36 90 6b b0 72 0a 0b 40 d0 90 c6 cc 77 00 00 00 00 00 00 06 00 0a 00 00 00 2d 00 17 00 1c 00 00 00 00 00 1c f0 4e df ff e8 00 40 04 00 40 10 88 48 f2 0c 18 ee 6c 15 18 ea f6 b2 ae ff c6 23 5e fc 48 bc ff 7f e0 12 4d b7 ff 00 92 ed d0 00 00 1e ce c0 64 12 82 21 08 1a 02 84 b4 1c 59 87 30 e6 0e 61 c4 00 00 00 1e cd 60 19 00 a0 68 35 06 86 9d 06 8a c9 22 52 9a 47 12 45 1a 85 18 28 87 10 c6 cc 87 00 00 00 00 00 00 07 00 0a 00 00 00 39 00 19 00 1e 00 00 00 00 00 1e cf f6 01 b0 09 01 20 34 0d 06 85 07 fa 24 95 ae b5 ff ff f0 9b 32 64 ff f8 66 db 75 ff f8 6e 5b 6d ff fc 53 72 d9 3f fe 29 cb 64 bf ff 8a ae 49 33 ff 06 cc 90 60 00 00 1e ce 40 04 6c 82 a0 a8 04 04 a9 52 41 24 ab d8 95 7e 1d 2f c2 95 00 00 00 1e cc 40 14 14 81 a1 88 34 a4 48 6c 31 62 19 be 10 d9 f3 1b 37 f4 09 09 9e 84 84 98 c6 cc a4 00 00 00 00 00 00 08 00 0a 00 00 00 2f 00 2f 00 2f 00 00 00 00 00 1e cf ff c8 02 20 11 01 21 04 0b 04 85 32 0b d5 44 6d ef a8 69 24 fd 09 24 9c ff 40 4b 16 2f f4 24 b2 14 ff 42 51 0b 17 fd 4a 12 c5 80 00 00 1e d2 40 34 07 40 50 14 0a 07 e8 51 a2 95 aa ff ff 15 5e 6f ff f1 0c b4 7f c2 b5 6b ff fc 49 6a 9f ff 89 34 53 ff f3 25 45 ff e3 51 10 00 00 1e cc 40 24 00 81 50 04 02 02 1f d0 24 84 a3 7b ff f8 25 31 49 fd 49 42 92 7f 52 58 a4 9f d4 94 28 4f d4 a6 22 1f 64 c1 08 7d 85 21 00 c6 cc 78 00 00 00 00 00 00 09 00 0a 00 00 00 29 00 1a 00 1e 00 00 00 00 00 1e cf ff e4 02 10 00 85 b8 01 00 40 24 21 4f a1 10 c7 f7 a1 8c ef 64 90 0f d2 43 0d ff 29 20 43 b2 10 c6 f6 42 12 20 00 00 1e cf c8 02 40 64 0d 06 a0 50 d1 a6 a6 b3 2a 82 1c 29 41 0e 30 21 66 30 00 00 1e cd d8 00 40 04 09 00 41 21 f4 08 12 51 3a 33 0b 66 1d 84 45 81 28 12 12 a1 2e 00 c6 cc 69 00 00 00 00 00 00 0a 00 0a 00 00 00 1e 00 1d 00 17 00 00 00 00 00 1e cf ff c8 0a 20 91 00 21 64 21 0c 81 0b 89 29 48 b0 38 8b 61 07 31 04 7d 9b 18 00 00 00 1e cf ec 01 20 42 12 42 10 e8 ca 52 2c bb 10 ce 31 05 b1 88 df 33 33 7c 42 18 c0 00 00 1e cd f9 0c 48 08 85 90 42 1d 15 15 0a ed 4b 8a 4f 22 a3 c9 28 c6 cc 70 00 00 00 00 00 00 0b 00 0a 00 00 00 23 00 19 00 1d 00 00 00 00 00 1e cf ff e4 00 10 08 82 08 19 00 41 22 2a 45 ca 86 e3 10 df 63 0c 51 04 37 d8 66 cc c6 23 b3 58 c0 00 00 1e cf ec 06 20 92 04 42 90 28 ca 51 2c d2 08 2d 0c 62 20 c4 40 ec 40 00 00 1e cd f9 00 c8 24 81 30 12 25 11 2a 94 29 2c 94 91 49 e4 8a 7a 24 4a 88 c4 51 80 c6 cc 69 00 00 00 00 00 00 0c 00 0a 00 00 00 1d 00 1b 00 1a 00 00 00 00 00 1e cf ff d8 02 20 01 01 20 04 09 00 85 12 05 50 81 cc 56 98 c1 83 82 04 a0 8a 20 00 00 1e cf e4 02 20 82 06 42 10 88 34 49 17 61 04 90 c5 10 22 30 54 04 28 81 80 00 00 1e cd f2 06 90 11 05 20 e8 24 54 a9 15 69 0e 71 91 08 8a 3b d1 08 8e 30 c6 cc 69 00 00 00 00 00 00 0d 00 0a 00 00 00 1c 00 1a 00 1c 00 00 00 00 00 1e cf ff d8 02 20 e3 03 21 8c 29 00 85 35 d4 24 ad 09 0e 68 25 a5 04 15 11 00 00 00 1e cf c8 08 40 44 11 01 a1 90 92 d0 2c a7 b0 c2 88 31 0c 71 00 e5 14 00 00 00 1e cd ec 03 20 32 0a 40 a8 34 54 68 a9 b4 94 94 51 5e 85 19 0a 0d 44 c8 1a 00 c6 cc 67 00 00 00 00 00 00 0e 00 0a 00 00 00 20 00 14 00 1c 00 00 00 00 00 1c f0 4e df ff ff f4 1c 10 e0 88 04 08 40 16 08 44 0d 90 a0 86 1c 8c 39 bb f2 0a d9 06 00 00 00 1e cf 60 11 02 20 f4 01 04 96 91 5a 02 0f 70 94 01 80 00 00 1e cd c8 02 40 24 0d 03 42 68 28 d1 aa 8d dc 53 c8 a3 0a 15 e8 71 07 0c 80 90 c6 cc 52 00 00 00 00 00 00 0f 00 0a 00 00 00 1b 00 0c 00 14 00 00 00 00 00 1e cf ff d8 00 20 61 07 20 44 21 04 81 1a c6 96 80 85 64 60 f4 9c 10 ac 00 00 00 1e ce c1 c4 06 83 21 68 02 a0 00 00 1e cd 20 09 03 a0 c8 3a 21 1d 42 31 5a 8d 21 c7 38 00 c6 cc 56 00 00 00 00 00 00 00 00 0b 00 00 00 1f 00 16 00 0a 00 00 00 00 00 1e cf ff d8 0c 20 41 00 20 36 20 88 43 24 22 86 57 18 c7 d8 41 d6 b1 9c 60 a1 4e 21 58 00 00 1e cc 42 24 0a 81 21 68 04 f4 0b 52 4a 0d 42 c8 d6 5a 10 56 00 00 1e da 40 44 1a 80 30 80 c6 cc 58 00 00 00 00 00 00 01 00 0b 00 00 00 22 00 13 00 0c 00 00 00 00 00 1e cf ff b0 00 40 42 04 40 88 02 0e c4 44 49 4b e4 21 9f cc 63 7f 18 63 cd 30 b3 08 58 43 98 30 00 00 1e cc 42 24 02 87 21 28 64 34 09 54 09 50 22 83 40 00 00 1f 2a 40 04 6e 80 21 e8 26 10 c6 cc 48 00 00 00 00 00 00 02 00 0b 00 00 00 1a 00 10 00 07 00 00 00 00 00 1e cf fe 40 41 05 c8 11 0d 90 04 82 12 3a cb 45 76 04 d0 34 2d 01 28 14 00 00 1e cc 40 74 0c a4 20 a8 a4 b4 89 d8 22 e0 00 00 1f ee 40 04 1c c6 cc 47 00 00 00 00 00 00 03 00 0b 00 00 00 1c 00 0f 00 05 00 00 00 00 00 1e cf fd 80 24 0a 41 c8 11 02 96 a5 4a 09 65 11 c1 94 10 b2 04 2c 33 38 d6 00 00 00 1e cc 40 14 0c 80 a0 88 d4 25 e8 01 28 00 00 08 08 00 c6 cc 5c 00 00 00 00 00 00 04 00 0b 00 00 00 25 00 12 00 0e 00 00 00 00 00 1e cf ff 20 28 82 08 19 08 20 88 3a 02 64 97 90 42 1f cc cd 8f e6 48 42 7a 42 43 4f b0 90 92 7a 42 43 40 00 00 1e ee 40 04 48 80 a1 88 34 c4 6b 17 20 d3 8e 00 00 00 1e d8 40 b4 0c 84 a1 88 34 e4 22 c0 c6 cc 63 00 00 00 00 00 00 05 00 0b 00 00 00 26 00 14 00 12 00 00 00 00 00 1e cf ff 20 10 80 08 11 02 20 ec 02 04 09 31 72 30 bb 66 33 e6 c3 17 b4 31 87 f4 84 19 fd 21 08 5f 43 01 00 00 00 1e d2 40 e4 02 87 20 68 c4 55 49 5a 26 c3 c8 2c 82 c0 00 00 1e cc 43 54 04 80 a0 08 94 84 ab 91 28 91 4a 18 c6 cc 79 00 00 00 00 00 00 06 00 0b 00 00 00 39 00 11 00 18 00 00 00 00 00 1c f0 4e df ff d0 18 81 98 09 81 60 b0 c8 3e cc 92 95 fa df ff 82 4b 77 67 f8 02 5b d7 bf d1 25 dd 7b fc 01 2d ec bf ff c0 11 6e 66 7f c0 89 72 e5 ff ff 04 45 b9 96 00 00 1e ce 40 64 12 82 21 68 44 b4 ca 54 68 1c 00 00 00 1e cc 40 74 10 83 a0 48 d4 06 c8 5e 4d 84 3c c2 23 e6 10 df 30 86 c6 cc 9b 00 00 00 00 00 00 07 00 0b 00 00 00 30 00 28 00 2c 00 00 00 00 00 1e cf ff ec 01 70 0a 80 98 0b 02 41 24 f9 0b 19 2d 68 df f6 ed 52 1f ff e7 2c 12 4f c9 65 08 7f fa 59 49 27 2d 41 1e f5 a8 cf 73 68 87 a0 00 00 1e de 40 34 02 80 a0 1d 06 8a 85 0a 28 f7 75 57 ff 91 a9 7f e1 1a af ff 10 a3 5f fe 21 55 7f f8 8a cb ff c4 56 40 00 00 1e cc 40 44 00 81 20 08 04 1f 44 89 04 22 5f ff 42 49 24 fa 24 92 49 fa 82 92 49 fa 92 92 43 e8 92 49 0f a1 49 24 3e 89 24 90 c6 cc 88 00 00 00 00 00 00 08 00 0b 00 00 00 35 00 1e 00 1e 00 00 00 00 00 1e cf ff ff c8 00 30 00 40 04 00 c0 08 06 02 02 3e 53 18 64 33 fe c2 85 0a 1f d4 b1 49 27 f5 28 4a 49 fd 50 91 84 fe c2 50 24 9f d4 96 09 27 f5 42 48 90 00 00 1e cf 60 0b 00 a0 28 1a 0d 0b d0 a1 45 65 6a 51 59 ea 0c 71 01 ce 10 ce 10 87 08 40 00 00 1e cd c8 00 40 04 01 00 42 21 f4 08 12 23 a1 18 7b 05 a0 49 0a 73 64 8b d9 24 f0 e4 c6 cc 83 00 00 00 00 00 00 09 00 0b 00 00 00 30 00 1d 00 1f 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 08 82 20 10 e4 44 08 64 6f f8 90 92 1f f4 84 92 4f a1 49 24 9f a9 0c 52 4f d0 94 92 67 69 43 24 3f 50 c5 0c 00 00 00 1e cf ec 06 20 42 06 42 10 88 2a 11 27 41 4c 5b 18 87 63 0a 41 85 b0 83 d8 41 80 00 00 1e cd f6 04 90 29 00 21 28 34 2a 14 e9 a5 35 14 97 e9 24 fd 24 9f a4 4b f2 44 fc 91 40 c6 cc 7c 00 00 00 00 00 00 0a 00 0b 00 00 00 2a 00 1d 00 1e 00 00 00 00 00 1c f0 4e df ff ff a0 20 82 04 00 41 08 2e 01 01 22 0c 7d 0d 0c 3e 84 83 3e 90 c6 1f d8 42 06 ec 84 1a e2 41 8b b5 e0 c0 00 00 1e cf d8 04 40 44 09 02 40 e8 09 11 2b 41 04 3c c4 11 cc 31 d8 41 c4 0e c0 96 00 00 00 1e cd ec 03 20 32 06 40 50 5a 0a 34 69 aa ee 44 a2 44 a2 29 e4 51 88 e2 50 e2 48 e0 c6 cc 5b 00 00 00 00 00 00 0b 00 0b 00 00 00 1e 00 12 00 14 00 00 00 00 00 1e cf fe c0 81 03 90 02 04 40 90 13 21 41 68 56 0c 12 4a 47 69 b1 22 48 ad 3c b4 80 00 00 1e cf 60 31 04 a0 08 62 05 18 e8 85 04 4a 4a 20 00 00 1e cd b0 0c 81 48 32 02 87 46 42 a5 45 85 58 e0 2a 00 c6 cc 5c 00 00 00 00 00 00 0c 00 0b 00 00 00 20 00 16 00 0f 00 00 00 00 00 1e cf fe 40 01 06 10 12 08 40 90 10 a2 45 04 96 91 47 3c 8e 25 0a 2b f4 45 3f 48 89 a5 a8 00 00 1e cf 20 31 1d 20 68 02 05 01 5a 04 50 e8 28 c5 93 07 30 60 00 00 1e cd 60 09 03 a0 c8 0a 35 01 5a 44 40 c6 cc 46 00 00 00 00 00 00 0d 00 0b 00 00 00 19 00 0c 00 0a 00 00 00 00 00 1e cf fd 81 64 08 41 c8 41 06 96 81 3b 0b 35 8e 18 a0 85 1c d4 28 c0 00 00 1e ce c0 a4 0a 82 21 68 02 e8 00 00 1e cc c0 74 10 81 b1 40 c6 cc 44 01 00 00 00 00 00 0e 00 0b 00 00 00 09 01 0b 00 19 00 00 00 00 c2 40 28 47 42 0a 11 d1 04 6b d1 06 d0 a6 5d 20 13 42 4e 8c 56 a0 5a 91 0b 41 90 0f 24 c0 6a 98 e5 41 c3 28 ac 0d d0 a1 10 51 13 16 05 17 52 c0 62 9c 00 15 7a 80 b9 42 a0 1d 50 51 a4 09 e1 1c c7 47 45 7a d6 d0 0b 4c 4a 77 bd 86 00 0a 81 3c c1 60 7e 85 32 d9 00 aa 14 5a f7 a8 03 34 a6 b0 00 03 da 50 d2 00 80 e9 b4 2f b8 f4 c8 32 80 ae 43 ef 90 55 62 78 32 c5 00 06 fe be 85 08 86 8d 29 e1 a9 76 7f 78 00 de b4 82 9a 35 80 0f 07 d4 81 30 3d bf 40 d0 18 47 fd 3c b9 60 fb fc d7 bf ec 40 00 fc 1c 3a 80 07 7c 9c 00 18 00 41 23 ff 60 a8 45 7f bf 7f 32 81 00 11 ff 73 88 00 f8 ff fa d5 09 00 00 20 00 15 1c 01 21 1a a2 1b 00 a7 ba 7d 00 fd fe e1 00 00 4f e2 4a 7e e7 a8 22 02 1f df ff ff fc 3b b6 d0 80 04 7e 6e fe b0 f9 a7 80 00 6e 0d fc 9d a8 00 20 3f 63 65 70 40 40 01 02 90 80 e0 43 39 6c 30 00 00 1e ce 41 e4 02 87 20 2e c0 00 00 1e cc 41 74 04 82 a0 08 34 04 29 11 41 24 3b 10 c2 4c 71 87 44 c3 8c c6 cc 53 01 00 00 00 00 00 0f 00 0b 00 00 00 1b 01 1a 00 07 00 00 00 00 a5 21 85 4c 63 6a 28 ac 0c a1 d5 88 03 c4 29 92 97 00 bd 15 35 c7 78 05 a5 69 ce 97 00 a6 98 42 98 7b 4c 21 4c 3d 4c 21 4c 10 9b a2 a0 da 2a 1a 80 7d 0a 18 a0 20 5c 00 2a ca fa 8b b8 a0 20 b0 88 20 4c 9a 00 b5 00 28 54 81 72 d4 85 d1 8a 15 c9 5b 68 02 34 50 97 bd 80 06 e9 a6 b4 00 00 77 54 03 46 50 14 0e 83 e8 11 29 d2 95 af 03 6b 96 f9 b8 0b 5c 7d f0 6e a3 74 1d 00 19 ab a8 51 cc a1 a6 ef d0 35 07 02 61 a2 23 14 53 4e 80 da 75 00 06 aa f1 d1 41 2a 0c 00 52 74 1f a1 fb 03 3f 93 e6 df c8 02 7f d7 8f 0f 40 80 00 26 01 07 c8 40 00 b1 83 54 00 52 40 1e b1 fd 8c 5d 02 44 8f 9f e1 c0 02 0f b2 20 0f f9 ff d7 f7 e4 3c 00 03 d0 20 00 24 18 a4 da cd 8b 9e c0 07 51 48 07 f7 ee 7d 80 0a 48 03 ff b1 f1 1c 58 64 01 c7 cf fb 70 77 e5 20 00 04 9b 3f 56 f1 4e 10 03 c1 9f 0f e0 a2 28 20 03 76 76 79 57 10 02 08 03 8f 40 80 03 81 00 20 41 c1 96 ec 22 d0 00 00 1e ce 40 a4 0a 81 20 29 04 54 08 d4 59 0a 44 21 11 31 19 32 10 b1 11 30 00 00 1e cc 40 35 38 c2 cc 06 00 00 00").to_vec(), + hex!("0c 00 00 00 0c 00 00 00 03 00 00 00").to_vec(), + ] + }; +} + +// #[bench] +// fn bench_zgfx_decopresses_single_large_multiple_pdus(b: &mut test::Bencher) { +// let mut decompressed = +// Vec::with_capacity(DECODED_ZGFX_SINGLE.iter().map(|d| d.len()).max().unwrap()); + +// b.iter(|| { +// let mut zgfx = Decompressor::new(); +// for encode in ENCODED_ZGFX_SINGLE.iter() { +// zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); +// decompressed.resize(0, 0); +// } +// }); +// } + +#[test] +fn zgfx_decopresses_multiple_single_pdus() { + let pairs = ENCODED_ZGFX_SINGLE.iter().zip(DECODED_ZGFX_SINGLE.iter()); + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(pairs.clone().map(|(_, d)| d.len()).max().unwrap()); + for (i, (encode, decode)) in pairs.enumerate() { + let bytes_written = zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decode.len(), bytes_written); + assert_eq!( + decompressed, *decode, + "Failed to decompress encoded PDU #{}", + i + ); + decompressed.resize(0, 0); + } +} + +#[test] +fn zgfx_decopresses_only_one_literal() { + #[allow(clippy::inconsistent_digit_grouping)] + let buffer = [0b11001_000, 0x03]; + let expected = vec![0x01]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_one_literal_with_null_prefix() { + #[allow(clippy::inconsistent_digit_grouping)] + let buffer = [0b0_0110010, 0b1_0000000, 0x07]; + let expected = vec![0x65]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_only_multiple_literals() { + #[allow(clippy::inconsistent_digit_grouping)] + let buffer = [0b11001_110, 0b100_11011, 0b0_0_011001, 0b01_000000, 0x06]; + let expected = vec![0x01, 0x02, 0xff, 0x65]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_one_literal_with_one_match_distance_1() { + #[allow(clippy::inconsistent_digit_grouping)] + let buffer = [0b0_0110010, 0b1_10001_00, 0b001_10_00_0, 0x1]; + let expected = vec![0x65; 1 + 4]; // literal (1) + match repeated 4 (length) + 0 times + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { + #[allow(clippy::inconsistent_digit_grouping)] + let buffer = [ + 0b0_0100000, + 0b1_0_010000, + 0b10_0_01000, + 0b011_10001, + 0b_00011_111, + 0b10_11001_0, + 0x1, + ]; + let expected = "ABC".repeat(20); + let expected = expected.as_bytes(); + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_one_match_with_match_unencoded_bytes() { + let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let mut buffer = vec![0b10001_000, 0b00_000000, 0b00010101, 0b1_0000000]; + buffer.extend_from_slice(expected); + buffer.extend_from_slice(&[0x00]); // no bits unused + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_multiple_literals_with_match_in_center_with_not_compressed() { + let buffer = [ + 0xE1, // DEBLOCK_MULTIPART + 0x03, 0x00, // 3 segments + 0x2B, 0x00, 0x00, 0x00, // 0x0000002B total bytes uncompressed + 0x11, 0x00, 0x00, 0x00, // first segment is the next 17 bytes: + 0x04, // type 4, not PACKET_COMPRESSED + 0x54, 0x68, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6B, 0x20, 0x62, 0x72, 0x6F, 0x77, 0x6E, + 0x20, // "The quick brown " + 0x0E, 0x00, 0x00, 0x00, // second segment is the next 14 bytes: + 0x04, // type 4, not PACKET_COMPRESSED + 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, + 0x65, // "fox jumps ove" + 0x10, 0x00, 0x00, 0x00, // third segment is the next 16 bytes + 0x24, // type 4 + PACKET_COMPRESSED + 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, + 0x9C, // encoded: + // 0 01110010 = literal 0x72 = "r" + // 0 00100000 = literal 0x20 = " " + // 0 01110100 = literal 0x74 = "t" + // + // 10001 11111 0 = match, distance = 31, length = 3 "he " + // + // 0 01101100 = literal 0x6C = "l" + // 0 01100001 = literal 0x61 = "a" + // 0 01111010 = literal 0x7A = "z" + // 0 01111001 = literal 0x79 = "y" + // 0 00100000 = literal 0x20 = " " + // 0 01100100 = literal 0x64 = "d" + // 0 01101111 = literal 0x6F = "o" + // 0 01100111 = literal 0x67 = "g" + 0x02, // ignore last two bits of 0x9C byte + ]; + let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(expected.len(), bytes_written); + assert_eq!( + decompressed, expected, + "\n{:x?} != \n{:x?}", + decompressed, expected + ); +} + +#[test] +fn zgfx_decopresses_single_match_unencoded_block() { + let buffer = [ + 0xe0, 0x04, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + ]; + let expected = vec![ + 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, + ]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(expected.len(), bytes_written); + assert_eq!(decompressed, expected); +} + +#[test] +fn zgfx_decopresses_unencoded_block_without_padding() { + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let buffer = [ + 0b1110010_1, + 0b0001_0000, + 0b0_0000000, + 0b00000001, + 0b_11110000, + 0x0, + ]; + let expected = vec![0x08, 0xf0]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) + .unwrap(); + assert_eq!(decompressed, expected); +} + +#[test] +fn complete_to_u32_fills_zeros_for_less_then_one_byte_bits_buffer() { + let bits: BitVec = slice_to_bitvec(&[0, 0, 1, 0, 1, 1, 0]); + let expected: BitVec = slice_to_bitvec(&[ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, + 1, 0, + ]); + let bits = complete_to_u32(bits.as_bitslice()); + + assert_eq!(bits, expected); +} From 9669f97c9b44fc1ed8c0160604653f6ebe207cbb Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Tue, 24 Dec 2019 11:04:14 +0200 Subject: [PATCH 0009/1273] ironrdp_client: fix bug with supported color depths for GFX --- .../src/connection_sequence/user_info.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 372d09af..72408981 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -141,15 +141,14 @@ fn create_optional_core_data( supported_color_depths: Some( current_monitor .video_modes() - .map(|video_mode| { - let supported_color_depth = SupportedColorDepths::BPP15 - | SupportedColorDepths::BPP16 - | SupportedColorDepths::BPP24; - match video_mode.bit_depth() { - 15 | 16 | 24 => supported_color_depth, - 32 => supported_color_depth | SupportedColorDepths::BPP32, - _ => SupportedColorDepths::empty(), + .map(|video_mode| match video_mode.bit_depth() { + 15 | 16 | 24 | 32 => { + SupportedColorDepths::BPP15 + | SupportedColorDepths::BPP16 + | SupportedColorDepths::BPP24 + | SupportedColorDepths::BPP32 } + _ => SupportedColorDepths::empty(), }) .collect(), ), From cd6ed50c0c9ccd52bbc88f624ff30abed44fff44 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 26 Dec 2019 10:53:56 +0200 Subject: [PATCH 0010/1273] ironrdp_client: implement processing of GFX PDUs --- ironrdp_client/src/channels.rs | 254 +++++++++++++++--- ironrdp_client/src/channels/gfx.rs | 69 +++++ ironrdp_client/src/config.rs | 7 +- .../src/connection_sequence/user_info.rs | 2 +- ironrdp_client/src/main.rs | 22 +- ironrdp_client/src/transport.rs | 17 +- 6 files changed, 318 insertions(+), 53 deletions(-) create mode 100644 ironrdp_client/src/channels/gfx.rs diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs index 44e7a1c2..d341d5bd 100644 --- a/ironrdp_client/src/channels.rs +++ b/ironrdp_client/src/channels.rs @@ -1,10 +1,12 @@ -use std::io; +mod gfx; + +use std::{cmp, collections::HashMap, io}; use ironrdp::{ rdp::vc::{self, dvc}, ShareDataPdu, }; -use log::{debug, warn}; +use log::{debug, error, warn}; use crate::{ transport::{ @@ -14,47 +16,60 @@ use crate::{ utils, RdpError, RdpResult, StaticChannels, GLOBAL_CHANNEL_NAME, }; -const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Graphics"; +const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; pub fn process_active_connection_messages( mut stream: impl io::BufRead + io::Write, static_channels: StaticChannels, ) -> RdpResult<()> { let static_channels = utils::swap_hashmap_kv(static_channels); + let mut dynamic_channels: HashMap = HashMap::new(); let mut transport = SendDataContextTransport::default(); loop { - let (channel_ids, pdu) = transport.decode(&mut stream)?; - let mut transport = transport.clone(); - transport.set_decoded_context(channel_ids, pdu); + match transport.decode(&mut stream) { + Ok((channel_ids, pdu)) => { + let mut transport = transport.clone(); + transport.set_decoded_context(channel_ids, pdu); - match static_channels.get(&channel_ids.channel_id) { - Some(channel_name) => { - if vc::DRDYNVC_CHANNEL_NAME == channel_name { - let transport = DynamicVirtualChannelTransport::new( - StaticVirtualChannelTransport::new(transport), - channel_ids.channel_id, - ); + match static_channels.get(&channel_ids.channel_id) { + Some(channel_name) => { + if vc::DRDYNVC_CHANNEL_NAME == channel_name { + let transport = DynamicVirtualChannelTransport::new( + StaticVirtualChannelTransport::new(transport), + channel_ids.channel_id, + ); - process_dvc_message(&mut stream, transport)?; - } else if GLOBAL_CHANNEL_NAME == channel_name { - let transport = - ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( - transport, - channel_ids.initiator_id, - channel_ids.channel_id, - )); + process_dvc_message(&mut stream, transport, &mut dynamic_channels)?; + } else if GLOBAL_CHANNEL_NAME == channel_name { + let transport = + ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( + transport, + channel_ids.initiator_id, + channel_ids.channel_id, + )); - process_session_info(&mut stream, transport)?; - } else { - warn!( - "Got message on a channel with {} ID", - channel_ids.channel_id - ); - break; + process_session_info(&mut stream, transport)?; + } else { + warn!( + "Got message on a channel with {} ID", + channel_ids.channel_id + ); + break; + } + } + None => panic!("Channel with {} ID must be added", channel_ids.channel_id), } } - None => panic!("Channel with {} ID must be added", channel_ids.channel_id), + Err(error) => match error { + RdpError::UnexpectedDisconnection(message) => { + warn!("User-Initiated disconnection on Server: {}", message); + break; + } + err => { + return Err(err); + } + }, } } @@ -64,6 +79,7 @@ pub fn process_active_connection_messages( fn process_dvc_message( mut stream: impl io::BufRead + io::Write, mut transport: DynamicVirtualChannelTransport, + dynamic_channels: &mut HashMap, ) -> RdpResult<()> { match transport.decode(&mut stream)? { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { @@ -79,21 +95,25 @@ fn process_dvc_message( dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {:?}", create_request); + let creation_status = + if let Some(dyncamic_channel) = create_dvc(create_request.channel_name.as_str()) { + dynamic_channels.insert(create_request.channel_id, dyncamic_channel); + + dvc::DVC_CREATION_STATUS_OK + } else { + dvc::DVC_CREATION_STATUS_NO_LISTENER + }; + let create_response = dvc::ClientPdu::CreateResponse(dvc::CreateResponsePdu { channel_id_type: create_request.channel_id_type, channel_id: create_request.channel_id, - creation_status: dvc::DVC_CREATION_STATUS_NO_LISTENER, + creation_status, }); debug!("Send DVC Create Response PDU: {:?}", create_response); transport.encode(create_response, &mut stream)?; - if create_request - .channel_name - .contains(RDP8_GRAPHICS_PIPELINE_NAME) - { - // TODO: send caps - } + negotiate_dvc(&create_request, transport, &mut stream)?; } dvc::ServerPdu::CloseRequest(close_request) => { debug!("Got DVC Close Request PDU: {:?}", close_request); @@ -105,10 +125,42 @@ fn process_dvc_message( debug!("Send DVC Close Response PDU: {:?}", close_response); transport.encode(close_response, &mut stream)?; + + dynamic_channels.remove(&close_request.channel_id); } - dvc::ServerPdu::Data(dvc::DataPdu { dvc_data: data, .. }) - | dvc::ServerPdu::DataFirst(dvc::DataFirstPdu { dvc_data: data, .. }) => { - debug!("Got DVC Data PDU with {} size", data.len()); + dvc::ServerPdu::DataFirst(data) => { + let channel_id_type = data.channel_id_type; + let channel_id = data.channel_id; + if let Some(dvc_data) = dynamic_channels + .get_mut(&data.channel_id) + .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .process_data_first_pdu(data)? + { + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type, + channel_id, + dvc_data, + }); + + transport.encode(client_data, &mut stream)?; + } + } + dvc::ServerPdu::Data(data) => { + let channel_id_type = data.channel_id_type; + let channel_id = data.channel_id; + if let Some(dvc_data) = dynamic_channels + .get_mut(&data.channel_id) + .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .process_data_pdu(data)? + { + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type, + channel_id, + dvc_data, + }); + + transport.encode(client_data, &mut stream)?; + } } } @@ -131,3 +183,127 @@ fn process_session_info( ))) } } + +fn create_dvc(channel_name: &str) -> Option { + match channel_name { + RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new(Box::new(gfx::Handler::new()))), + _ => None, + } +} + +fn negotiate_dvc( + create_request: &dvc::CreateRequestPdu, + mut transport: DynamicVirtualChannelTransport, + mut stream: impl io::Write, +) -> Result<(), RdpError> { + if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + dvc_data: gfx::create_capabilities_advertise()?, + }); + debug!("Send GFX Capabilities Advertise PDU"); + transport.encode(client_data, &mut stream)?; + } + + Ok(()) +} + +trait DynamicChannelDataHandler { + fn process_complete_data( + &mut self, + complete_data: Vec, + ) -> Result>, RdpError>; +} + +struct DynamicChannel { + data: CompleteData, + handler: Box, +} + +impl DynamicChannel { + pub fn new(handler: Box) -> Self { + Self { + data: CompleteData::new(), + handler, + } + } + + pub fn process_data_first_pdu( + &mut self, + data_first: dvc::DataFirstPdu, + ) -> Result>, RdpError> { + if let Some(complete_data) = self.data.process_data_first_pdu(data_first) { + self.handler.process_complete_data(complete_data) + } else { + Ok(None) + } + } + + pub fn process_data_pdu(&mut self, data: dvc::DataPdu) -> Result>, RdpError> { + if let Some(complete_data) = self.data.process_data_pdu(data) { + self.handler.process_complete_data(complete_data) + } else { + Ok(None) + } + } +} + +#[derive(Debug, PartialEq)] +struct CompleteData { + total_length: u32, + data: Vec, +} + +impl CompleteData { + fn new() -> Self { + Self { + total_length: 0, + data: Vec::new(), + } + } + + fn process_data_first_pdu(&mut self, data_first: dvc::DataFirstPdu) -> Option> { + if self.total_length != 0 || !self.data.is_empty() { + error!("Incomplete DVC message, it will be skipped"); + self.data.clear(); + } + self.total_length = data_first.data_length; + self.data = data_first.dvc_data; + + None + } + + fn process_data_pdu(&mut self, mut data: dvc::DataPdu) -> Option> { + if self.total_length == 0 && self.data.is_empty() { + // message is not fragmented + Some(data.dvc_data) + } else { + // message is fragmented so need to reassemble it + let actual_data_length = self.data.len() + data.dvc_data.len(); + + match actual_data_length.cmp(&(self.total_length as usize)) { + cmp::Ordering::Less => { + // this is one of the fragmented messages, just append it + self.data.append(&mut data.dvc_data); + None + } + cmp::Ordering::Equal => { + // this is the last fragmented message, need to return the whole reassembled message + self.total_length = 0; + self.data.append(&mut data.dvc_data); + Some(self.data.drain(..).collect()) + } + cmp::Ordering::Greater => { + error!( + "Actual DVC message size is grater than expected total DVC message size" + ); + self.total_length = 0; + self.data.clear(); + + None + } + } + } + } +} diff --git a/ironrdp_client/src/channels/gfx.rs b/ironrdp_client/src/channels/gfx.rs new file mode 100644 index 00000000..209e9eb3 --- /dev/null +++ b/ironrdp_client/src/channels/gfx.rs @@ -0,0 +1,69 @@ +use ironrdp::{ + dvc::gfx::{ + zgfx, CapabilitiesAdvertisePdu, CapabilitiesV8Flags, CapabilitySet, ClientPdu, + FrameAcknowledgePdu, QueueDepth, ServerPdu, + }, + PduParsing, +}; +use log::debug; + +use super::DynamicChannelDataHandler; +use crate::RdpError; + +pub struct Handler { + decompressor: zgfx::Decompressor, + decompressed_buffer: Vec, + frames_decoded: u32, +} + +impl Handler { + pub fn new() -> Self { + Self { + decompressor: zgfx::Decompressor::new(), + decompressed_buffer: Vec::with_capacity(1024 * 16), + frames_decoded: 0, + } + } +} + +impl DynamicChannelDataHandler for Handler { + fn process_complete_data( + &mut self, + complete_data: Vec, + ) -> Result>, RdpError> { + self.decompressed_buffer.resize(0, 0); + self.decompressor + .decompress(complete_data.as_slice(), &mut self.decompressed_buffer)?; + let gfx_pdu = ServerPdu::from_buffer(self.decompressed_buffer.as_slice())?; + debug!("Got GFX PDU: {:?}", gfx_pdu); + + if let ServerPdu::EndFrame(end_frame_pdu) = gfx_pdu { + self.frames_decoded += 1; + let client_pdu = ClientPdu::FrameAcknowledge(FrameAcknowledgePdu { + queue_depth: QueueDepth::Suspend, + frame_id: end_frame_pdu.frame_id, + total_frames_decoded: self.frames_decoded, + }); + debug!("Sending GFX PDU: {:?}", client_pdu); + + let mut client_pdu_buffer = Vec::with_capacity(client_pdu.buffer_length()); + client_pdu.to_buffer(&mut client_pdu_buffer)?; + + Ok(Some(client_pdu_buffer)) + } else { + Ok(None) + } + } +} + +pub fn create_capabilities_advertise() -> Result, RdpError> { + let capabilities_advertise = + ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu(vec![CapabilitySet::V8 { + flags: CapabilitiesV8Flags::empty(), + }])); + let mut capabilities_advertise_buffer = + Vec::with_capacity(capabilities_advertise.buffer_length()); + capabilities_advertise.to_buffer(&mut capabilities_advertise_buffer)?; + + Ok(capabilities_advertise_buffer) +} diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index a739ee45..a4aca2f1 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -227,12 +227,7 @@ impl Input { let static_channels = if let Some(values) = matches.values_of("static-channels") { values.map(String::from).collect::>() } else { - vec![ - String::from("rdpdr"), - String::from("rdpsnd"), - String::from("cliprdr"), - String::from("drdynvc"), - ] + vec![String::from("drdynvc")] }; Self { diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 72408981..1d1da6f6 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -190,7 +190,7 @@ fn create_general_capability_set() -> CapabilitySet { _ => MajorPlatformType::Unspecified, }, minor_platform_type: MinorPlatformType::Unspecified, - extra_flags: GeneralExtraFlags::FASTPATH_OUTPUT_SUPPORTED, + extra_flags: GeneralExtraFlags::empty(), refresh_rect_support: false, suppress_output_support: false, }) diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 17b67824..b1ce11b0 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -11,7 +11,7 @@ use std::{ }; use failure::Fail; -use ironrdp::{nego, rdp}; +use ironrdp::{dvc::gfx, nego, rdp}; use log::{debug, error, warn}; use sspi::internal::credssp; @@ -183,6 +183,8 @@ pub enum RdpError { NegotiationError(#[fail(cause)] ironrdp::nego::NegotiationError), #[fail(display = "unexpected PDU: {}", _0)] UnexpectedPdu(String), + #[fail(display = "Unexpected disconnection: {}", _0)] + UnexpectedDisconnection(String), #[fail(display = "invalid response: {}", _0)] InvalidResponse(String), #[fail(display = "TLS connector error: {}", _0)] @@ -215,6 +217,12 @@ pub enum RdpError { VirtualChannelError(ironrdp::rdp::vc::ChannelError), #[fail(display = "Invalid channel id error: {}", _0)] InvalidChannelIdError(String), + #[fail(display = "Graphics pipeline protocol error: {}", _0)] + GraphicsPipelineError(gfx::GraphicsPipelineError), + #[fail(display = "ZGFX error: {}", _0)] + ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), + #[fail(display = "Access to the non-existing channel: {}", _0)] + AccessToNonExistingChannel(u32), } impl From for RdpError { @@ -250,3 +258,15 @@ impl From for RdpError { RdpError::VirtualChannelError(e) } } + +impl From for RdpError { + fn from(e: gfx::GraphicsPipelineError) -> Self { + RdpError::GraphicsPipelineError(e) + } +} + +impl From for RdpError { + fn from(e: gfx::zgfx::ZgfxError) -> Self { + RdpError::ZgfxError(e) + } +} diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index c2419baf..e1737ac8 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -180,19 +180,24 @@ impl Decoder for SendDataContextTransport { SendDataContextTransportState::ToDecode => { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; - if let ironrdp::McsPdu::SendDataIndication(send_data_context) = mcs_pdu { - Ok(( + match mcs_pdu { + ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(( ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, }, send_data_context.pdu, - )) - } else { - Err(RdpError::UnexpectedPdu(format!( + )), + ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { + Err(RdpError::UnexpectedDisconnection(format!( + "Server disconnection reason - {:?}", + disconnect_reason + ))) + } + _ => Err(RdpError::UnexpectedPdu(format!( "Expected Send Data Context PDU, got {:?}", mcs_pdu.as_short_name() - ))) + ))), } } SendDataContextTransportState::Decoded => Ok(( From 04e7a12f74920ac824a3a5f456af591de79acd26 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 8 Jan 2020 14:13:36 +0200 Subject: [PATCH 0011/1273] ironrdp: update crates versions --- ironrdp/Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index ded102a1..8cdf1400 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -12,12 +12,12 @@ description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] [dependencies] -byteorder = "1.2.7" -bitflags = "1.0" -num-derive = "0.2" +byteorder = "1.3" +bitflags = "1.2" +num-derive = "0.3" num-traits = "0.2" -lazy_static = "1.2" -bytes = "0.4" +lazy_static = "1.4" +bytes = "0.5" num-integer = "0.1" failure = "0.1" x509-parser = "0.6.0" From d0a9d0aa4ca5868b1dce3921a5d2db79e77f24f0 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 8 Jan 2020 14:13:43 +0200 Subject: [PATCH 0012/1273] ironrdp_client: update crates versions --- ironrdp_client/Cargo.toml | 8 ++++---- ironrdp_client/src/connection_sequence/user_info.rs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 041c1549..d04c4df0 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -14,18 +14,18 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol"] ironrdp = { path = "../ironrdp" } sspi = "0.3.0" clap = "2.33" -bytes = "0.4" +bytes = "0.5" failure = "0.1" chrono = "0.4" fern = "0.5" log = "0.4" rustls = { version = "0.16.0", features = ["dangerous_configuration"] } x509-parser = "0.6.0" -whoami = "0.5" -winit = "0.20.0-alpha2" +whoami = "0.7" +winit = "0.20" num-traits = "0.2" semver = "0.9" -lazy_static = "1.3" +lazy_static = "1.4" exitcode = "1.1" webpki = "0.21.0" bufstream = "0.1" diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 1d1da6f6..5148c37e 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -111,8 +111,8 @@ fn create_core_data( Ok(ClientCoreData { version: RdpVersion::V5Plus, - desktop_width: current_monitor.size().width.round() as u16, - desktop_height: current_monitor.size().height.round() as u16, + desktop_width: current_monitor.size().width as u16, + desktop_height: current_monitor.size().height as u16, color_depth: ColorDepth::Bpp4, // ignored sec_access_sequence: SecureAccessSequence::Del, keyboard_layout: 0, // the server SHOULD use the default active input locale identifier @@ -199,8 +199,8 @@ fn create_general_capability_set() -> CapabilitySet { fn create_bitmap_capability_set(current_monitor: &winit::monitor::MonitorHandle) -> CapabilitySet { CapabilitySet::Bitmap(Bitmap { pref_bits_per_pix: get_color_depth(current_monitor).to_u16().unwrap(), - desktop_width: current_monitor.size().width.round() as u16, - desktop_height: current_monitor.size().height.round() as u16, + desktop_width: current_monitor.size().width as u16, + desktop_height: current_monitor.size().height as u16, desktop_resize_flag: false, drawing_flags: BitmapDrawingFlags::empty(), }) From b7773ab233f87a75521afd4eb2c69a6a3c81ec7e Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 9 Jan 2020 12:13:06 +0200 Subject: [PATCH 0013/1273] ironrdp: fix bug with DVC Data First PDU invalid DVC total message size error --- ironrdp/src/rdp/vc.rs | 7 +- ironrdp/src/rdp/vc/dvc/data_first.rs | 7 +- ironrdp/src/rdp/vc/dvc/data_first/tests.rs | 157 ++++++++++++++++++++- 3 files changed, 163 insertions(+), 8 deletions(-) diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index 06614b10..53b913dd 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -82,8 +82,11 @@ pub enum ChannelError { InvalidDvcCapabilitiesVersion, #[fail(display = "Invalid DVC message size")] InvalidDvcMessageSize, - #[fail(display = "Invalid DVC total message size")] - InvalidDvcTotalMessageSize, + #[fail( + display = "Invalid DVC total message size: actual ({}) > expected ({})", + actual, expected + )] + InvalidDvcTotalMessageSize { actual: usize, expected: usize }, } impl_from_error!(io::Error, ChannelError, ChannelError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs index d2613acb..db84093d 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -26,8 +26,11 @@ impl DataFirstPdu { let mut dvc_data = Vec::new(); stream.read_to_end(&mut dvc_data)?; - if dvc_data.len() >= data_length as usize { - return Err(ChannelError::InvalidDvcTotalMessageSize); + if dvc_data.len() > data_length as usize { + return Err(ChannelError::InvalidDvcTotalMessageSize { + actual: dvc_data.len(), + expected: data_length as usize, + }); } let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE diff --git a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs index bcf06206..d93596fa 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs @@ -1,6 +1,7 @@ use lazy_static::lazy_static; use super::*; +use crate::rdp::vc::dvc::ClientPdu; const DVC_TEST_CHANNEL_ID_U8: u32 = 0x03; const DVC_TEST_DATA_LENGTH: u32 = 0x0000_0C7B; @@ -20,6 +21,109 @@ const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = [0x77; PDU_WITH_DATA_MAX_SIZE]; +const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER: [u8; 1597] = [ + 0x24, 0x7, 0x39, 0x6, 0xe0, 0x24, 0xa9, 0xba, 0xe0, 0x68, 0xa9, 0xba, 0x8a, 0x73, 0x41, 0x25, + 0x12, 0x12, 0x1c, 0x28, 0x3b, 0xa6, 0x34, 0x8, 0x8, 0x7a, 0x38, 0x34, 0x2c, 0xe8, 0xf8, 0xd0, + 0xef, 0x18, 0xc2, 0xc, 0x27, 0x1f, 0xb1, 0x83, 0x3c, 0x58, 0x8a, 0x67, 0x1, 0x58, 0x9d, 0x50, + 0x8b, 0x8c, 0x60, 0x31, 0x53, 0x55, 0x54, 0xd8, 0x51, 0x32, 0x23, 0x54, 0xd9, 0xd1, 0x65, 0x54, + 0xd6, 0xe0, 0xb6, 0x4b, 0x8b, 0xd1, 0x1a, 0x32, 0x6d, 0x10, 0xed, 0x21, 0x48, 0x8d, 0x1d, 0xa2, + 0x6a, 0x90, 0x14, 0x88, 0x30, 0x18, 0x8a, 0x11, 0x1a, 0x37, 0xc6, 0xa7, 0x32, 0x8b, 0xea, 0x32, + 0x44, 0x78, 0xc9, 0x4e, 0xdb, 0x47, 0x11, 0x53, 0xc6, 0x16, 0xc9, 0x72, 0x55, 0x11, 0x4e, 0x12, + 0x55, 0x31, 0xd4, 0x4b, 0x16, 0x71, 0x7e, 0x32, 0x13, 0x5, 0xb2, 0x5c, 0x9c, 0xa4, 0xab, 0x78, + 0xc9, 0x20, 0x88, 0xfb, 0x18, 0xa6, 0xb, 0x44, 0xac, 0x6, 0x23, 0x4b, 0x2d, 0x12, 0xa3, 0x1a, + 0x8b, 0xea, 0x2c, 0x44, 0x69, 0x12, 0xa8, 0xca, 0xa2, 0xc4, 0x64, 0x98, 0x99, 0x11, 0xd4, 0x5e, + 0x8a, 0x51, 0x92, 0x23, 0xa8, 0xbd, 0x34, 0x44, 0xc8, 0x65, 0x44, 0xd7, 0x30, 0x76, 0x11, 0xea, + 0x5a, 0xf7, 0x8b, 0xf1, 0x90, 0xaa, 0x90, 0x14, 0x52, 0x93, 0x4, 0x4c, 0x8b, 0x18, 0xc, 0x55, + 0x2b, 0xd1, 0x5a, 0x4e, 0xea, 0xa9, 0x82, 0x8b, 0xe0, 0xb2, 0x4a, 0x8e, 0x91, 0x62, 0x46, 0xf1, + 0x8a, 0x77, 0x90, 0xd4, 0x89, 0xa2, 0x34, 0x53, 0x15, 0x4f, 0xa4, 0xcf, 0x53, 0x2e, 0x93, 0x18, + 0xa2, 0x35, 0x54, 0x51, 0x11, 0xa4, 0x91, 0x16, 0x26, 0xd8, 0x44, 0xc9, 0x21, 0xde, 0x2f, 0xc6, + 0x3b, 0x44, 0x69, 0xd, 0x44, 0xd0, 0x59, 0x99, 0xde, 0x4b, 0x33, 0x44, 0x44, 0x9a, 0xa2, 0xe5, + 0x55, 0xc0, 0x5b, 0x26, 0x55, 0x57, 0x92, 0x0, 0x96, 0xe5, 0x55, 0xb6, 0xa2, 0x6a, 0x8b, 0xea, + 0x3b, 0x45, 0xf5, 0x13, 0x44, 0x88, 0x4c, 0x85, 0x22, 0xc4, 0x46, 0x8e, 0xd1, 0x1a, 0x6d, 0x21, + 0x68, 0x97, 0x21, 0x88, 0xde, 0xa2, 0x94, 0x74, 0x95, 0xcc, 0x62, 0x9d, 0xdb, 0x2d, 0x66, 0x92, + 0xc9, 0x5a, 0xa5, 0x90, 0xa4, 0x46, 0x91, 0xb4, 0x85, 0x22, 0x94, 0x4d, 0x13, 0x37, 0xb, 0x84, + 0xd9, 0x2a, 0x9a, 0xaf, 0x32, 0x3a, 0xa8, 0xdd, 0x11, 0xa4, 0x87, 0x78, 0xbe, 0x91, 0xa8, 0x53, + 0xcc, 0x95, 0x22, 0xca, 0x89, 0xb1, 0x8c, 0x92, 0x38, 0x91, 0x34, 0x8f, 0xa6, 0x88, 0x4c, 0x71, + 0x31, 0x8a, 0x50, 0x51, 0x1a, 0x34, 0x48, 0x4e, 0x31, 0x4e, 0x2b, 0x15, 0x62, 0x96, 0x2c, 0xc6, + 0x29, 0xe2, 0x46, 0x21, 0xf, 0x32, 0x32, 0xc0, 0x62, 0x49, 0x12, 0x6a, 0x88, 0xea, 0x2c, 0x46, + 0x88, 0x9a, 0xa4, 0xcd, 0x14, 0xa3, 0x84, 0x64, 0x91, 0xee, 0x28, 0xcb, 0x79, 0x4, 0x50, 0x44, + 0x17, 0x9, 0xb1, 0x42, 0x23, 0x47, 0xbb, 0xc5, 0xf5, 0x31, 0x2, 0x23, 0x45, 0x95, 0x13, 0x63, + 0x27, 0xe8, 0xb3, 0x18, 0xa6, 0xa4, 0x11, 0x31, 0xf6, 0x12, 0xc4, 0x8d, 0x2a, 0x26, 0xde, 0x63, + 0x8e, 0x59, 0xd, 0xe5, 0x97, 0x49, 0x98, 0x99, 0x2e, 0x9d, 0x12, 0x2b, 0xcb, 0x22, 0x9, 0x51, + 0xde, 0x2f, 0x4b, 0xa6, 0x11, 0xea, 0x7e, 0xe4, 0x8c, 0x26, 0x1a, 0x49, 0xb2, 0x23, 0xa8, 0xb1, + 0x19, 0x24, 0x19, 0x11, 0xd4, 0x58, 0x8e, 0x2a, 0x43, 0x51, 0xda, 0x23, 0x46, 0x48, 0xee, 0xa2, + 0x66, 0x3, 0x11, 0x2a, 0x23, 0xeb, 0x90, 0xcd, 0x24, 0x1f, 0x1a, 0x16, 0x48, 0xb3, 0x19, 0x2a, + 0xf2, 0x67, 0xeb, 0x48, 0xaf, 0x14, 0x9f, 0xa4, 0xab, 0xd2, 0x6c, 0x35, 0x9a, 0x53, 0x7c, 0x24, + 0xb7, 0x79, 0x8f, 0x91, 0x96, 0xf2, 0x8, 0x9e, 0xc2, 0x65, 0x11, 0x58, 0xe8, 0x4c, 0xc9, 0x15, + 0x8d, 0xc4, 0x47, 0x32, 0x18, 0x88, 0xea, 0x35, 0x82, 0xd5, 0xab, 0xa, 0xe2, 0x46, 0xf7, 0x8b, + 0xf7, 0x90, 0x75, 0x8, 0xe9, 0x8a, 0x11, 0x1d, 0x48, 0xf2, 0x4c, 0xd3, 0x6d, 0xd4, 0x65, 0x51, + 0x7a, 0x52, 0x14, 0x22, 0xd2, 0x37, 0xbc, 0x5f, 0xa4, 0x7c, 0x90, 0x74, 0x95, 0xb, 0x64, 0xc9, + 0x21, 0x44, 0x69, 0x1b, 0x8a, 0x13, 0x4a, 0x1, 0x28, 0x9a, 0x64, 0xc1, 0x1a, 0xc4, 0xc0, 0x6a, + 0x28, 0x68, 0x98, 0x5b, 0x26, 0x4c, 0x46, 0x92, 0x1d, 0x22, 0xc3, 0x61, 0xaa, 0xd2, 0x92, 0x44, + 0x85, 0x22, 0x65, 0x3c, 0xe8, 0xb2, 0xa9, 0x2a, 0x39, 0xa, 0x4a, 0x49, 0x3c, 0xba, 0x95, 0xe9, + 0x92, 0xc6, 0x98, 0xd5, 0x81, 0x8f, 0x95, 0x41, 0x94, 0x79, 0x93, 0x14, 0x8c, 0x71, 0x58, 0x27, + 0xc9, 0x87, 0x73, 0xf1, 0x66, 0x3c, 0x7d, 0xd3, 0xe6, 0xac, 0xa, 0xb7, 0x63, 0x18, 0x91, 0x8a, + 0xc1, 0x48, 0xdc, 0xc9, 0x4c, 0x1e, 0xc, 0xec, 0x82, 0xd6, 0x97, 0x57, 0x90, 0xfb, 0x89, 0x88, + 0xdf, 0x70, 0xb0, 0xce, 0xae, 0x54, 0x1e, 0x4b, 0x7a, 0x7d, 0x88, 0x8c, 0xd, 0x24, 0x63, 0x43, + 0x7f, 0xc4, 0xee, 0xa3, 0x51, 0xb7, 0x27, 0xb9, 0x73, 0x4f, 0x91, 0xe3, 0xec, 0x79, 0xa9, 0xf9, + 0xca, 0x89, 0x28, 0x2d, 0x44, 0xe0, 0xf3, 0xd1, 0x77, 0x4b, 0xab, 0xc8, 0xb5, 0xc4, 0x74, 0xf, + 0xf0, 0xff, 0x3b, 0x8d, 0xd2, 0xe, 0x22, 0xf6, 0x8c, 0xc, 0xfd, 0xd3, 0x12, 0x31, 0xa9, 0x57, + 0xf0, 0x50, 0xd6, 0x45, 0x30, 0xcb, 0x45, 0x82, 0xfe, 0x9f, 0x63, 0xc3, 0x3, 0x32, 0xa1, 0xa1, + 0x83, 0xf, 0xb5, 0x42, 0x85, 0x36, 0xf5, 0x4f, 0x18, 0x34, 0xf9, 0x1e, 0x3e, 0xc7, 0x9a, 0xb9, + 0xd9, 0xe5, 0x51, 0x7a, 0x8c, 0xac, 0x5b, 0x39, 0x98, 0x6e, 0x14, 0x87, 0x1c, 0x67, 0xc7, 0xa3, + 0xed, 0xde, 0x48, 0xd9, 0x47, 0xd0, 0xc5, 0x70, 0xa4, 0x38, 0xe3, 0x60, 0x1a, 0x17, 0x1e, 0x45, + 0x1e, 0xdc, 0x6c, 0x23, 0x1d, 0xc2, 0x90, 0xe3, 0x8d, 0x8c, 0x13, 0x8, 0xa5, 0x86, 0x9, 0x70, + 0xca, 0x68, 0xc9, 0x70, 0xa4, 0x38, 0xe3, 0x45, 0xa9, 0x5e, 0xce, 0x11, 0x23, 0xa5, 0x88, 0xed, + 0x32, 0xd5, 0x83, 0xd3, 0x58, 0x31, 0x30, 0x46, 0x8e, 0xc6, 0xc3, 0x88, 0xf4, 0xd2, 0x28, 0x7e, + 0xfd, 0xff, 0xd2, 0xea, 0xf1, 0xf5, 0x71, 0x1d, 0xde, 0x65, 0xb6, 0xf2, 0xa0, 0x98, 0xd2, 0x3c, + 0x19, 0xf4, 0xba, 0xbc, 0x7d, 0x5c, 0x4b, 0x54, 0xab, 0x8d, 0xc0, 0xcc, 0xf0, 0xac, 0x5d, 0x9a, + 0x26, 0xae, 0x7c, 0x99, 0xd9, 0xf6, 0x70, 0x4c, 0xfe, 0xba, 0x7b, 0x70, 0x5f, 0x7f, 0x1a, 0xd7, + 0x26, 0x99, 0xb3, 0x13, 0x67, 0x54, 0xe7, 0x99, 0x22, 0x13, 0xae, 0x24, 0x63, 0x61, 0x52, 0xb5, + 0x22, 0x1a, 0xa6, 0xac, 0x7c, 0x90, 0x4, 0x8c, 0x68, 0xe5, 0x41, 0x36, 0x95, 0xa9, 0xc7, 0x8a, + 0x7d, 0xea, 0x6b, 0xd2, 0xea, 0xf2, 0x81, 0x71, 0x1f, 0x46, 0x4a, 0xe6, 0xb2, 0xa0, 0x64, 0x6d, + 0x1a, 0x1b, 0x26, 0xcc, 0x4a, 0x82, 0x6b, 0x44, 0x9a, 0x64, 0x61, 0x69, 0xa6, 0xd, 0x2e, 0x72, + 0xab, 0x2d, 0x4a, 0x6d, 0x9b, 0x31, 0x2a, 0x8, 0xf3, 0x56, 0xc0, 0x7d, 0x9, 0xfc, 0xb5, 0x15, + 0x8c, 0x97, 0xe6, 0xed, 0x2e, 0xaf, 0x1f, 0x57, 0x10, 0xb7, 0x5, 0x80, 0x82, 0x23, 0x89, 0xbb, + 0xd9, 0xbf, 0x49, 0xf8, 0x95, 0x82, 0x74, 0xb6, 0x68, 0x25, 0xf, 0xb1, 0xd1, 0xe3, 0x27, 0x32, + 0x6d, 0x4a, 0x70, 0xd3, 0xee, 0x25, 0x41, 0x88, 0xf3, 0x47, 0x8b, 0x8d, 0x9f, 0xe0, 0x1a, 0x47, + 0x39, 0x6, 0xce, 0x37, 0xa, 0x56, 0xce, 0x34, 0x31, 0x71, 0x7e, 0xab, 0x37, 0x3a, 0xc2, 0x5b, + 0xce, 0x5a, 0x5d, 0x5e, 0x40, 0x6e, 0x23, 0xf8, 0xd7, 0xb3, 0xd5, 0xe6, 0xe0, 0x5e, 0xfa, 0x39, + 0xcd, 0xd0, 0x95, 0x25, 0x4b, 0xdd, 0x31, 0x26, 0x41, 0x94, 0xcb, 0xd, 0x3a, 0xd8, 0x12, 0x93, + 0xda, 0x7, 0x4a, 0xa, 0x91, 0x41, 0xc0, 0xc0, 0xa9, 0xaa, 0x28, 0x2a, 0x60, 0x6c, 0xb, 0x1e, + 0x51, 0xe4, 0xc7, 0xaa, 0x35, 0x24, 0x75, 0xd2, 0xea, 0xf1, 0xe7, 0x71, 0x15, 0xdc, 0x4f, 0x12, + 0x92, 0xad, 0xf1, 0xbc, 0xd0, 0x76, 0xd2, 0xea, 0xf1, 0x5b, 0x71, 0x23, 0x93, 0xaa, 0xd5, 0xf1, + 0xb1, 0xaa, 0x11, 0x1a, 0x9d, 0xf4, 0xba, 0xbc, 0x48, 0xdc, 0x46, 0xf6, 0xc8, 0xa7, 0xe3, 0xdc, + 0x88, 0xaf, 0x21, 0x9e, 0x25, 0xb2, 0x33, 0xf2, 0xa9, 0xe2, 0x96, 0xcc, 0x9c, 0x2c, 0xd3, 0xca, + 0xf4, 0x2e, 0xe6, 0x17, 0x25, 0xcf, 0x32, 0xd9, 0x19, 0xa1, 0xc0, 0xac, 0x2f, 0x25, 0xb3, 0x5, + 0xab, 0x87, 0xd1, 0x84, 0x4f, 0x91, 0x46, 0x4f, 0x5a, 0x5d, 0x5d, 0xf8, 0xae, 0x24, 0x12, 0x4c, + 0x58, 0xfa, 0x7d, 0xa9, 0x53, 0x8c, 0xe3, 0xdc, 0x8c, 0x3e, 0x48, 0xc2, 0xe1, 0x4b, 0xb9, 0xa6, + 0xb, 0x61, 0x27, 0x39, 0x10, 0xea, 0x93, 0x5c, 0x9f, 0x28, 0x54, 0x2c, 0xa4, 0xa2, 0x23, 0xcd, + 0x3, 0xed, 0x4, 0x78, 0x55, 0x60, 0xce, 0x35, 0x11, 0xcf, 0xb3, 0x9e, 0x46, 0x68, 0x64, 0x25, + 0x43, 0x31, 0x11, 0x5c, 0xe3, 0xfc, 0x1c, 0x36, 0xa2, 0x99, 0x87, 0xe9, 0xcf, 0x23, 0x34, 0x32, + 0x11, 0xe6, 0x65, 0x17, 0x9b, 0x99, 0x17, 0xe1, 0xe4, 0x5e, 0x24, 0x9f, 0xf4, 0xba, 0xbb, 0xca, + 0xdc, 0x4c, 0xb7, 0xa1, 0x11, 0x4, 0xd6, 0x9, 0x6c, 0xdc, 0xfb, 0xa5, 0xd5, 0xde, 0x8e, 0xe2, + 0x15, 0xf0, 0x56, 0x95, 0x9c, 0x6, 0xb3, 0xa1, 0x69, 0x3, 0x32, 0xe2, 0x73, 0xe6, 0x26, 0xcc, + 0xd0, 0x88, 0x74, 0x2e, 0x6, 0x5, 0x2c, 0x42, 0xfb, 0x45, 0x5, 0x31, 0x24, 0x4d, 0xd0, 0xfb, + 0x37, 0x46, 0x6c, 0x47, 0xb9, 0xf, 0xcb, 0x35, 0x8d, 0xc1, 0x88, 0x83, 0xd2, 0xed, 0xd5, 0x94, + 0xf1, 0x11, 0xdf, 0x2c, 0xb6, 0x29, 0x39, 0xc6, 0x64, 0x2a, 0xa1, 0x24, 0x61, 0x89, 0x18, 0x7c, + 0x91, 0x8c, 0xd3, 0x66, 0xc5, 0x8a, 0xa9, 0xc4, 0xd, 0x3c, 0x33, 0x50, 0xba, 0x5d, 0xba, 0xad, + 0x5e, 0x2d, 0xcf, 0x75, 0x32, 0x90, 0xee, 0xa8, 0xf4, 0xc5, 0x43, 0x50, 0xa8, 0x62, 0x87, 0xd2, + 0x46, 0x34, 0x43, 0xf4, 0x68, 0x88, 0x59, 0x3f, 0xa2, 0xd0, 0x7a, 0x1e, 0x69, 0x45, 0x56, 0x3d, + 0x33, 0x12, 0x70, 0x4c, 0x8d, 0x2c, 0x42, 0x1a, 0x94, 0xd4, 0xb7, 0x62, 0x18, 0x11, 0x1a, 0x5d, + 0x5d, 0xe8, 0xee, 0x23, 0x29, 0xc9, 0x8c, 0x65, 0x60, 0x7b, 0x7b, 0x8c, 0x11, 0x3a, 0x5d, 0xba, + 0xcc, 0xde, 0x27, 0x99, 0x58, 0x8a, 0x8c, 0x69, 0x91, 0xa, 0x2f, 0xb4, 0x55, 0xe, 0x4, 0xc1, + 0xd, 0x25, 0x43, 0x42, 0xb2, 0x81, 0x5e, 0x56, 0x5f, 0x16, 0xc6, 0x28, 0xb4, 0x5e, 0x97, 0x6e, + 0xb3, 0x37, 0x89, 0x98, 0xe3, 0x13, 0xbb, 0xc9, 0x49, 0x87, 0xe1, 0x6d, 0x19, 0xa5, 0xdb, 0xac, + 0xcd, 0xe2, 0x32, 0xb3, 0x99, 0x2b, 0xf3, 0x60, 0xd1, 0x20, 0x7e, 0x46, 0xcc, 0x4, 0xc6, 0x2c, + 0xc0, 0x12, 0x26, 0x8, 0xc8, 0xad, 0xfa, 0xf6, 0x3f, 0x10, 0x45, 0xca, 0xe0, 0x9a, 0x3b, 0x4b, + 0xb7, 0x57, 0x33, 0xc4, 0x90, 0x72, 0xab, 0x5a, 0xcc, 0xf, 0x26, 0x42, 0xea, 0x3e, 0x87, 0x2, + 0xab, 0xbc, 0x9f, 0x99, 0x23, 0x19, 0x76, 0xa, 0x8c, 0xc4, 0x8b, 0xc7, 0xf3, 0x95, 0xd2, 0x90, + 0xd2, 0xed, 0xd5, 0xcc, 0xf1, 0x31, 0x1d, 0xa7, 0xa4, 0xba, 0xdd, 0x88, 0x2d, 0x6b, 0xa4, 0x74, + 0xbb, 0x75, 0x73, 0x3c, 0x4c, 0x44, 0x42, 0xd, 0x74, 0x61, 0x39, 0x79, 0x76, 0xa4, 0xa7, 0x3c, + 0x4c, 0x80, 0xc4, 0xc8, 0x1a, 0x27, 0x1c, 0xe4, 0xde, 0x8, 0xb2, 0xba, 0x30, 0xa5, 0x74, 0x36, + 0x76, 0xa6, 0x53, 0x9f, 0x33, 0x56, 0x98, 0x88, 0x92, 0x2a, 0xd1, 0x90, 0x1, +]; + lazy_static! { static ref DVC_DATA_FIRST: DataFirstPdu = DataFirstPdu { channel_id_type: FieldType::U8, @@ -28,6 +132,14 @@ lazy_static! { data_length: DVC_TEST_DATA_LENGTH, dvc_data: DVC_TEST_DATA_BUFFER.to_vec() }; + static ref DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH: ClientPdu = + ClientPdu::DataFirst(DataFirstPdu { + channel_id_type: FieldType::U8, + channel_id: 0x7, + data_length_type: FieldType::U16, + data_length: 0x639, + dvc_data: (&DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER[4..]).to_vec(), + }); } #[test] @@ -49,7 +161,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fa FieldType::U8, FieldType::U8, ) { - Err(ChannelError::InvalidDvcTotalMessageSize) => (), + Err(ChannelError::InvalidDvcTotalMessageSize { .. }) => (), res => panic!("Expected InvalidDvcTotalMessageSize error, got: {:?}", res), }; } @@ -57,7 +169,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fa #[test] fn from_buffer_correct_parses_dvc_data_first_pdu() { assert_eq!( - DVC_DATA_FIRST.clone(), + *DVC_DATA_FIRST, DataFirstPdu::from_buffer(&DVC_DATA_FIRST_BUFFER[1..], FieldType::U8, FieldType::U16) .unwrap(), ); @@ -65,7 +177,7 @@ fn from_buffer_correct_parses_dvc_data_first_pdu() { #[test] fn to_buffer_correct_serializes_dvc_data_first_pdu() { - let data_first = DVC_DATA_FIRST.clone(); + let data_first = &*DVC_DATA_FIRST; let mut buffer = Vec::new(); data_first.to_buffer(&mut buffer).unwrap(); @@ -75,10 +187,47 @@ fn to_buffer_correct_serializes_dvc_data_first_pdu() { #[test] fn buffer_length_is_correct_for_dvc_data_first_pdu() { - let data_first = DVC_DATA_FIRST.clone(); + let data_first = &*DVC_DATA_FIRST; let expected_buf_len = DVC_DATA_FIRST_BUFFER.len(); let len = data_first.buffer_length(); assert_eq!(expected_buf_len, len); } + +#[test] +fn from_buffer_correct_parses_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( +) { + assert_eq!( + *DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH, + ClientPdu::from_buffer( + DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.as_ref() + ) + .unwrap(), + ); +} + +#[test] +fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( +) { + let data_first = &*DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH; + + let mut buffer = Vec::new(); + data_first.to_buffer(&mut buffer).unwrap(); + + assert_eq!( + DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.as_ref(), + buffer.as_slice() + ); +} + +#[test] +fn buffer_length_is_correct_for_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( +) { + let data_first = &*DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH; + let expected_buf_len = DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(); + + let len = data_first.buffer_length(); + + assert_eq!(expected_buf_len, len); +} From 58b5bb52975ac69ccd1a20cdcd412114649f520c Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 13 Jan 2020 09:31:28 +0200 Subject: [PATCH 0014/1273] ironrdp: refactoring: remove `new` methods where the fields are public and remove save of buffer instead of the buffer length --- ironrdp/src/gcc/conference_create.rs | 6 - ironrdp/src/gcc/network_data.rs | 6 - ironrdp/src/mcs.rs | 63 +---- ironrdp/src/mcs/connect_initial.rs | 2 +- ironrdp/src/mcs/test.rs | 12 +- ironrdp/src/rdp.rs | 9 - ironrdp/src/rdp/capability_sets.rs | 9 - ironrdp/src/rdp/finalization_messages.rs | 33 --- ironrdp/src/rdp/headers.rs | 32 --- ironrdp/src/rdp/vc.rs | 8 +- ironrdp/src/rdp/vc/dvc.rs | 75 +++--- ironrdp/src/rdp/vc/dvc/create.rs | 10 +- ironrdp/src/rdp/vc/dvc/create/tests.rs | 15 +- ironrdp/src/rdp/vc/dvc/data.rs | 13 +- ironrdp/src/rdp/vc/dvc/data/tests.rs | 39 +-- ironrdp/src/rdp/vc/dvc/data_first.rs | 42 ++-- ironrdp/src/rdp/vc/dvc/data_first/tests.rs | 272 +++++++++++---------- ironrdp/src/rdp/vc/dvc/tests.rs | 10 +- 18 files changed, 282 insertions(+), 374 deletions(-) diff --git a/ironrdp/src/gcc/conference_create.rs b/ironrdp/src/gcc/conference_create.rs index 50c81672..a2f58957 100644 --- a/ironrdp/src/gcc/conference_create.rs +++ b/ironrdp/src/gcc/conference_create.rs @@ -29,12 +29,6 @@ pub struct ConferenceCreateRequest { pub gcc_blocks: ClientGccBlocks, } -impl ConferenceCreateRequest { - pub fn new(gcc_blocks: ClientGccBlocks) -> Self { - Self { gcc_blocks } - } -} - impl PduParsing for ConferenceCreateRequest { type Error = GccError; diff --git a/ironrdp/src/gcc/network_data.rs b/ironrdp/src/gcc/network_data.rs index c5593dfd..8f0252c2 100644 --- a/ironrdp/src/gcc/network_data.rs +++ b/ironrdp/src/gcc/network_data.rs @@ -133,12 +133,6 @@ pub struct Channel { pub options: ChannelOptions, } -impl Channel { - pub fn new(name: String, options: ChannelOptions) -> Self { - Self { name, options } - } -} - impl PduParsing for Channel { type Error = NetworkDataError; diff --git a/ironrdp/src/mcs.rs b/ironrdp/src/mcs.rs index 349077bc..81d0b4b0 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp/src/mcs.rs @@ -162,15 +162,6 @@ pub struct ErectDomainPdu { pub sub_interval: u32, } -impl ErectDomainPdu { - pub fn new(sub_height: u32, sub_interval: u32) -> Self { - Self { - sub_height, - sub_interval, - } - } -} - impl PduParsing for ErectDomainPdu { type Error = io::Error; @@ -201,15 +192,6 @@ pub struct AttachUserConfirmPdu { pub result: u8, } -impl AttachUserConfirmPdu { - pub fn new(initiator_id: u16, result: u8) -> Self { - Self { - initiator_id, - result, - } - } -} - impl PduParsing for AttachUserConfirmPdu { type Error = io::Error; @@ -239,15 +221,6 @@ pub struct ChannelJoinRequestPdu { pub channel_id: u16, } -impl ChannelJoinRequestPdu { - pub fn new(initiator_id: u16, channel_id: u16) -> Self { - Self { - initiator_id, - channel_id, - } - } -} - impl PduParsing for ChannelJoinRequestPdu { type Error = io::Error; @@ -279,17 +252,6 @@ pub struct ChannelJoinConfirmPdu { pub requested_channel_id: u16, } -impl ChannelJoinConfirmPdu { - pub fn new(channel_id: u16, result: u8, initiator_id: u16, requested_channel_id: u16) -> Self { - Self { - channel_id, - result, - initiator_id, - requested_channel_id, - } - } -} - impl PduParsing for ChannelJoinConfirmPdu { type Error = io::Error; @@ -323,19 +285,9 @@ impl PduParsing for ChannelJoinConfirmPdu { /// [`RdpHeaderMessage`](enum.RdpHeaderMessage.html). #[derive(Debug, Clone, PartialEq)] pub struct SendDataContext { - pub pdu: Vec, pub initiator_id: u16, pub channel_id: u16, -} - -impl SendDataContext { - pub fn new(pdu: Vec, initiator_id: u16, channel_id: u16) -> Self { - Self { - pdu, - initiator_id, - channel_id, - } - } + pub pdu_length: usize, } impl PduParsing for SendDataContext { @@ -345,15 +297,12 @@ impl PduParsing for SendDataContext { let initiator_id = per::read_u16(&mut stream, BASE_CHANNEL_ID)?; let channel_id = per::read_u16(&mut stream, 0)?; let _data_priority_and_segmentation = stream.read_u8()?; - let (length, _) = per::read_length(&mut stream)?; - - let mut pdu = vec![0; length as usize]; - stream.read_exact(&mut pdu)?; + let (pdu_length, _) = per::read_length(&mut stream)?; Ok(Self { - pdu, initiator_id, channel_id, + pdu_length: pdu_length as usize, }) } @@ -361,13 +310,13 @@ impl PduParsing for SendDataContext { per::write_u16(&mut stream, self.initiator_id, BASE_CHANNEL_ID)?; per::write_u16(&mut stream, self.channel_id, 0)?; stream.write_u8(SEND_DATA_PDU_DATA_PRIORITY_AND_SEGMENTATION)?; - per::write_length(&mut stream, self.pdu.len() as u16)?; - stream.write_all(self.pdu.as_ref())?; + per::write_length(&mut stream, self.pdu_length as u16)?; Ok(()) } + fn buffer_length(&self) -> usize { - per::SIZEOF_U16 * 2 + 1 + per::sizeof_length(self.pdu.len() as u16) + self.pdu.len() + per::SIZEOF_U16 * 2 + 1 + per::sizeof_length(self.pdu_length as u16) } } diff --git a/ironrdp/src/mcs/connect_initial.rs b/ironrdp/src/mcs/connect_initial.rs index 2b0a1a77..7b81c703 100644 --- a/ironrdp/src/mcs/connect_initial.rs +++ b/ironrdp/src/mcs/connect_initial.rs @@ -30,7 +30,7 @@ pub struct ConnectInitial { impl ConnectInitial { pub fn with_gcc_blocks(gcc_blocks: ClientGccBlocks) -> Self { Self { - conference_create_request: ConferenceCreateRequest::new(gcc_blocks), + conference_create_request: ConferenceCreateRequest { gcc_blocks }, calling_domain_selector: vec![0x01], called_domain_selector: vec![0x01], upward_flag: true, diff --git a/ironrdp/src/mcs/test.rs b/ironrdp/src/mcs/test.rs index a0faa984..9392dffd 100644 --- a/ironrdp/src/mcs/test.rs +++ b/ironrdp/src/mcs/test.rs @@ -71,12 +71,12 @@ lazy_static! { static ref SEND_DATA_REQUEST_PDU: McsPdu = McsPdu::SendDataRequest(SendDataContext { initiator_id: 1007, channel_id: 1003, - pdu: rdp::test::CLIENT_INFO_PDU_BUFFER.clone(), + pdu_length: rdp::test::CLIENT_INFO_PDU_BUFFER.len(), }); static ref SEND_DATA_INDICATION_PDU: McsPdu = McsPdu::SendDataIndication(SendDataContext { initiator_id: 1002, channel_id: 1003, - pdu: Vec::from(rdp::test::SERVER_LICENSE_BUFFER.as_ref()), + pdu_length: rdp::test::SERVER_LICENSE_BUFFER.len(), }); } @@ -288,7 +288,7 @@ fn from_buffer_correct_parses_send_data_request() { #[test] fn to_buffer_correct_serializes_send_data_request() { let pdu = SEND_DATA_REQUEST_PDU.clone(); - let expected_buf = SEND_DATA_REQUEST_PDU_BUFFER.clone(); + let expected_buf = SEND_DATA_REQUEST_PDU_BUFFER_PREFIX.to_vec(); let mut buf = Vec::new(); pdu.to_buffer(&mut buf).unwrap(); @@ -299,7 +299,7 @@ fn to_buffer_correct_serializes_send_data_request() { #[test] fn buffer_length_is_correct_for_send_data_request() { let pdu = SEND_DATA_REQUEST_PDU.clone(); - let expected_buf_len = SEND_DATA_REQUEST_PDU_BUFFER.len(); + let expected_buf_len = SEND_DATA_REQUEST_PDU_BUFFER_PREFIX.len(); let len = pdu.buffer_length(); @@ -319,7 +319,7 @@ fn from_buffer_correct_parses_send_data_indication() { #[test] fn to_buffer_correct_serializes_send_data_indication() { let pdu = SEND_DATA_INDICATION_PDU.clone(); - let expected_buf = SEND_DATA_INDICATION_PDU_BUFFER.to_vec(); + let expected_buf = SEND_DATA_INDICATION_PDU_BUFFER_PREFIX.to_vec(); let mut buf = Vec::new(); pdu.to_buffer(&mut buf).unwrap(); @@ -330,7 +330,7 @@ fn to_buffer_correct_serializes_send_data_indication() { #[test] fn buffer_length_is_correct_for_send_data_indication() { let pdu = SEND_DATA_INDICATION_PDU.clone(); - let expected_buf_len = SEND_DATA_INDICATION_PDU_BUFFER.len(); + let expected_buf_len = SEND_DATA_INDICATION_PDU_BUFFER_PREFIX.len(); let len = pdu.buffer_length(); diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index fbe4996b..dcc3c475 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -46,15 +46,6 @@ pub struct ClientInfoPdu { pub client_info: ClientInfo, } -impl ClientInfoPdu { - pub fn new(security_header: BasicSecurityHeader, client_info: ClientInfo) -> Self { - Self { - security_header, - client_info, - } - } -} - impl PduParsing for ClientInfoPdu { type Error = RdpError; diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index 2337e050..8e5fd3ef 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -124,15 +124,6 @@ pub struct DemandActive { pub capability_sets: Vec, } -impl DemandActive { - pub fn new(source_descriptor: String, capability_sets: Vec) -> Self { - Self { - source_descriptor, - capability_sets, - } - } -} - impl PduParsing for DemandActive { type Error = CapabilitySetsError; diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp/src/rdp/finalization_messages.rs index 1c828582..dd4a6769 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp/src/rdp/finalization_messages.rs @@ -18,12 +18,6 @@ pub struct SynchronizePdu { pub target_user_id: u16, } -impl SynchronizePdu { - pub fn new(target_user_id: u16) -> Self { - Self { target_user_id } - } -} - impl PduParsing for SynchronizePdu { type Error = FinalizationMessagesError; @@ -57,16 +51,6 @@ pub struct ControlPdu { pub control_id: u32, } -impl ControlPdu { - pub fn new(action: ControlAction, grant_id: u16, control_id: u32) -> Self { - Self { - action, - grant_id, - control_id, - } - } -} - impl PduParsing for ControlPdu { type Error = FinalizationMessagesError; @@ -104,17 +88,6 @@ pub struct FontPdu { pub entry_size: u16, } -impl FontPdu { - pub fn new(number: u16, total_number: u16, flags: SequenceFlags, entry_size: u16) -> Self { - Self { - number, - total_number, - flags, - entry_size, - } - } -} - impl PduParsing for FontPdu { type Error = FinalizationMessagesError; @@ -152,12 +125,6 @@ pub struct MonitorLayoutPdu { pub monitors: Vec, } -impl MonitorLayoutPdu { - pub fn new(monitors: Vec) -> Self { - Self { monitors } - } -} - impl PduParsing for MonitorLayoutPdu { type Error = FinalizationMessagesError; diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index cdd4efb1..491de7e6 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -32,12 +32,6 @@ pub struct BasicSecurityHeader { pub flags: BasicSecurityHeaderFlags, } -impl BasicSecurityHeader { - pub fn new(flags: BasicSecurityHeaderFlags) -> Self { - Self { flags } - } -} - impl PduParsing for BasicSecurityHeader { type Error = RdpError; @@ -68,16 +62,6 @@ pub struct ShareControlHeader { pub share_id: u32, } -impl ShareControlHeader { - pub fn new(share_control_pdu: ShareControlPdu, pdu_source: u16, share_id: u32) -> Self { - Self { - share_control_pdu, - pdu_source, - share_id, - } - } -} - impl PduParsing for ShareControlHeader { type Error = RdpError; @@ -196,22 +180,6 @@ pub struct ShareDataHeader { pub compression_type: client_info::CompressionType, } -impl ShareDataHeader { - pub fn new( - share_data_pdu: ShareDataPdu, - stream_priority: StreamPriority, - compression_flags: CompressionFlags, - compression_type: client_info::CompressionType, - ) -> Self { - Self { - share_data_pdu, - stream_priority, - compression_flags, - compression_type, - } - } -} - impl PduParsing for ShareDataHeader { type Error = RdpError; diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index 53b913dd..645df13e 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -3,7 +3,7 @@ pub mod dvc; #[cfg(test)] mod tests; -use std::io; +use std::{io, str}; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -66,8 +66,8 @@ bitflags! { pub enum ChannelError { #[fail(display = "IO error: {}", _0)] IOError(#[fail(cause)] io::Error), - #[fail(display = "Utf8 error: {}", _0)] - Utf8Error(#[fail(cause)] std::string::FromUtf8Error), + #[fail(display = "From UTF8 error: {}", _0)] + FromUtf8Error(#[fail(cause)] std::string::FromUtf8Error), #[fail(display = "Invalid channel PDU header")] InvalidChannelPduHeader, #[fail(display = "Invalid channel total data length")] @@ -93,7 +93,7 @@ impl_from_error!(io::Error, ChannelError, ChannelError::IOError); impl_from_error!( std::string::FromUtf8Error, ChannelError, - ChannelError::Utf8Error + ChannelError::FromUtf8Error ); impl From for io::Error { diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index b99b56db..61650d68 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -57,25 +57,16 @@ pub enum ServerPdu { } impl ServerPdu { - pub fn as_short_name(&self) -> &str { - match self { - ServerPdu::CapabilitiesRequest(_) => "Capabilities Request PDU", - ServerPdu::CreateRequest(_) => "Create Request PDU", - ServerPdu::DataFirst(_) => "Data First PDU", - ServerPdu::Data(_) => "Data PDU", - ServerPdu::CloseRequest(_) => "Close Request PDU", - } - } -} - -impl PduParsing for ServerPdu { - type Error = ChannelError; - - fn from_buffer(mut stream: impl io::Read) -> Result { + pub fn from_buffer( + mut stream: impl io::Read, + mut dvc_data_size: usize, + ) -> Result { let dvc_header = Header::from_buffer(&mut stream)?; let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) .ok_or(ChannelError::InvalidDVChannelIdLength)?; + dvc_data_size -= HEADER_SIZE; + match dvc_header.pdu_type { PduType::Capabilities => Ok(ServerPdu::CapabilitiesRequest( CapabilitiesRequestPdu::from_buffer(&mut stream)?, @@ -83,6 +74,7 @@ impl PduParsing for ServerPdu { PduType::Create => Ok(ServerPdu::CreateRequest(CreateRequestPdu::from_buffer( &mut stream, channel_id_type, + dvc_data_size, )?)), PduType::DataFirst => { let data_length_type = FieldType::from_u8(dvc_header.pdu_dependent) @@ -92,11 +84,13 @@ impl PduParsing for ServerPdu { &mut stream, channel_id_type, data_length_type, + dvc_data_size, )?)) } PduType::Data => Ok(ServerPdu::Data(DataPdu::from_buffer( &mut stream, channel_id_type, + dvc_data_size, )?)), PduType::Close => Ok(ServerPdu::CloseRequest(ClosePdu::from_buffer( &mut stream, @@ -105,7 +99,7 @@ impl PduParsing for ServerPdu { } } - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { match self { ServerPdu::CapabilitiesRequest(caps_request) => caps_request.to_buffer(&mut stream)?, ServerPdu::CreateRequest(create_request) => create_request.to_buffer(&mut stream)?, @@ -117,7 +111,7 @@ impl PduParsing for ServerPdu { Ok(()) } - fn buffer_length(&self) -> usize { + pub fn buffer_length(&self) -> usize { match self { ServerPdu::CapabilitiesRequest(caps_request) => caps_request.buffer_length(), ServerPdu::CreateRequest(create_request) => create_request.buffer_length(), @@ -126,6 +120,16 @@ impl PduParsing for ServerPdu { ServerPdu::CloseRequest(close_request) => close_request.buffer_length(), } } + + pub fn as_short_name(&self) -> &str { + match self { + ServerPdu::CapabilitiesRequest(_) => "Capabilities Request PDU", + ServerPdu::CreateRequest(_) => "Create Request PDU", + ServerPdu::DataFirst(_) => "Data First PDU", + ServerPdu::Data(_) => "Data PDU", + ServerPdu::CloseRequest(_) => "Close Request PDU", + } + } } #[derive(Debug, Clone, PartialEq)] @@ -138,25 +142,16 @@ pub enum ClientPdu { } impl ClientPdu { - pub fn as_short_name(&self) -> &str { - match self { - ClientPdu::CapabilitiesResponse(_) => "Capabilities Response PDU", - ClientPdu::CreateResponse(_) => "Create Response PDU", - ClientPdu::DataFirst(_) => "Data First PDU", - ClientPdu::Data(_) => "Data PDU", - ClientPdu::CloseResponse(_) => "Close Response PDU", - } - } -} - -impl PduParsing for ClientPdu { - type Error = ChannelError; - - fn from_buffer(mut stream: impl io::Read) -> Result { + pub fn from_buffer( + mut stream: impl io::Read, + mut dvc_data_size: usize, + ) -> Result { let dvc_header = Header::from_buffer(&mut stream)?; let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) .ok_or(ChannelError::InvalidDVChannelIdLength)?; + dvc_data_size -= HEADER_SIZE; + match dvc_header.pdu_type { PduType::Capabilities => Ok(ClientPdu::CapabilitiesResponse( CapabilitiesResponsePdu::from_buffer(&mut stream)?, @@ -173,11 +168,13 @@ impl PduParsing for ClientPdu { &mut stream, channel_id_type, data_length_type, + dvc_data_size, )?)) } PduType::Data => Ok(ClientPdu::Data(DataPdu::from_buffer( &mut stream, channel_id_type, + dvc_data_size, )?)), PduType::Close => Ok(ClientPdu::CloseResponse(ClosePdu::from_buffer( &mut stream, @@ -186,7 +183,7 @@ impl PduParsing for ClientPdu { } } - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { match self { ClientPdu::CapabilitiesResponse(caps_request) => caps_request.to_buffer(&mut stream)?, ClientPdu::CreateResponse(create_request) => create_request.to_buffer(&mut stream)?, @@ -198,7 +195,7 @@ impl PduParsing for ClientPdu { Ok(()) } - fn buffer_length(&self) -> usize { + pub fn buffer_length(&self) -> usize { match self { ClientPdu::CapabilitiesResponse(caps_request) => caps_request.buffer_length(), ClientPdu::CreateResponse(create_request) => create_request.buffer_length(), @@ -207,6 +204,16 @@ impl PduParsing for ClientPdu { ClientPdu::CloseResponse(close_response) => close_response.buffer_length(), } } + + pub fn as_short_name(&self) -> &str { + match self { + ClientPdu::CapabilitiesResponse(_) => "Capabilities Response PDU", + ClientPdu::CreateResponse(_) => "Create Response PDU", + ClientPdu::DataFirst(_) => "Data First PDU", + ClientPdu::Data(_) => "Data PDU", + ClientPdu::CloseResponse(_) => "Close Response PDU", + } + } } #[repr(u8)] diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs index 86442d70..2bfe43ce 100644 --- a/ironrdp/src/rdp/vc/dvc/create.rs +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -6,7 +6,7 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; -use crate::{rdp::vc::ChannelError, PduParsing}; +use crate::{rdp::vc::ChannelError, utils, PduParsing}; pub const DVC_CREATION_STATUS_OK: u32 = 0x0000_0000; pub const DVC_CREATION_STATUS_NO_LISTENER: u32 = 0xC000_0001; @@ -24,13 +24,13 @@ impl CreateRequestPdu { pub fn from_buffer( mut stream: impl io::Read, channel_id_type: FieldType, + mut data_size: usize, ) -> Result { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; - let mut buffer = String::new(); - stream.read_to_string(&mut buffer)?; - - let channel_name = buffer.trim_end_matches('\0').into(); + data_size -= channel_id_type.get_type_size(); + let channel_name = + utils::read_string(&mut stream, data_size, utils::CharacterSet::Ansi, false)?; Ok(Self { channel_id_type, diff --git a/ironrdp/src/rdp/vc/dvc/create/tests.rs b/ironrdp/src/rdp/vc/dvc/create/tests.rs index 50c95d05..66275c95 100644 --- a/ironrdp/src/rdp/vc/dvc/create/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/create/tests.rs @@ -2,7 +2,7 @@ use lazy_static::lazy_static; use super::*; -const DVC_TEST_CHANNEL_ID: u32 = 0x0000_0003; +const TEST_CHANNEL_ID: u32 = 0x0000_0003; const DVC_CREATE_REQUEST_BUFFER_SIZE: usize = 10; const DVC_CREATE_REQUEST_BUFFER: [u8; DVC_CREATE_REQUEST_BUFFER_SIZE] = @@ -12,15 +12,17 @@ const DVC_CREATE_RESPONSE_BUFFER_SIZE: usize = 6; const DVC_CREATE_RESPONSE_BUFFER: [u8; DVC_CREATE_RESPONSE_BUFFER_SIZE] = [0x10, 0x03, 0x00, 0x00, 0x00, 0x00]; +const DVC_TEST_HEADER_SIZE: usize = 0x01; + lazy_static! { static ref DVC_CREATE_REQUEST: CreateRequestPdu = CreateRequestPdu { channel_id_type: FieldType::U8, - channel_id: DVC_TEST_CHANNEL_ID, + channel_id: TEST_CHANNEL_ID, channel_name: String::from("testdvc") }; static ref DVC_CREATE_RESPONSE: CreateResponsePdu = CreateResponsePdu { channel_id_type: FieldType::U8, - channel_id: DVC_TEST_CHANNEL_ID, + channel_id: TEST_CHANNEL_ID, creation_status: DVC_CREATION_STATUS_OK }; } @@ -29,7 +31,12 @@ lazy_static! { fn from_buffer_correct_parses_dvc_create_request_pdu() { assert_eq!( DVC_CREATE_REQUEST.clone(), - CreateRequestPdu::from_buffer(&DVC_CREATE_REQUEST_BUFFER[1..], FieldType::U8).unwrap(), + CreateRequestPdu::from_buffer( + &DVC_CREATE_REQUEST_BUFFER[1..], + FieldType::U8, + DVC_CREATE_REQUEST_BUFFER_SIZE - DVC_TEST_HEADER_SIZE + ) + .unwrap(), ); } diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp/src/rdp/vc/dvc/data.rs index d1514bd9..ddbabde9 100644 --- a/ironrdp/src/rdp/vc/dvc/data.rs +++ b/ironrdp/src/rdp/vc/dvc/data.rs @@ -10,28 +10,28 @@ use crate::{rdp::vc::ChannelError, PduParsing}; pub struct DataPdu { pub channel_id_type: FieldType, pub channel_id: u32, - pub dvc_data: Vec, + pub data_size: usize, } impl DataPdu { pub fn from_buffer( mut stream: impl io::Read, channel_id_type: FieldType, + mut data_size: usize, ) -> Result { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; - let mut dvc_data = Vec::new(); - stream.read_to_end(&mut dvc_data)?; + data_size -= channel_id_type.get_type_size(); let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE - (HEADER_SIZE + channel_id_type.get_type_size()); - if dvc_data.len() > expected_max_data_size { + if data_size > expected_max_data_size { Err(ChannelError::InvalidDvcMessageSize) } else { Ok(Self { channel_id_type, channel_id, - dvc_data, + data_size, }) } } @@ -45,12 +45,11 @@ impl DataPdu { dvc_header.to_buffer(&mut stream)?; self.channel_id_type .to_buffer_according_to_type(&mut stream, self.channel_id)?; - stream.write_all(self.dvc_data.as_ref())?; Ok(()) } pub fn buffer_length(&self) -> usize { - HEADER_SIZE + self.channel_id_type.get_type_size() + self.dvc_data.len() + HEADER_SIZE + self.channel_id_type.get_type_size() } } diff --git a/ironrdp/src/rdp/vc/dvc/data/tests.rs b/ironrdp/src/rdp/vc/dvc/data/tests.rs index fe9772ac..b75271be 100644 --- a/ironrdp/src/rdp/vc/dvc/data/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data/tests.rs @@ -4,30 +4,36 @@ use super::*; const DVC_TEST_CHANNEL_ID_U8: u32 = 0x03; -const DVC_DATA_BUFFER_SIZE: usize = 14; -const DVC_DATA_BUFFER: [u8; DVC_DATA_BUFFER_SIZE] = [ - 0x30, 0x03, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, -]; - -const DVC_TEST_DATA_BUFFER_SIZE: usize = 12; -const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ - 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, -]; +const DVC_FULL_DATA_BUFFER_SIZE: usize = 14; +const DVC_DATA_PREFIX: [u8; 2] = [0x30, 0x03]; +const DVC_DATA_BUFFER: [u8; 12] = [0x71; 12]; const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = [0x77; PDU_WITH_DATA_MAX_SIZE]; +const DVC_TEST_HEADER_SIZE: usize = 0x01; + lazy_static! { + static ref DVC_FULL_DATA_BUFFER: Vec = { + let mut result = DVC_DATA_PREFIX.to_vec(); + result.extend(&DVC_DATA_BUFFER); + + result + }; static ref DVC_DATA: DataPdu = DataPdu { channel_id_type: FieldType::U8, channel_id: DVC_TEST_CHANNEL_ID_U8, - dvc_data: DVC_TEST_DATA_BUFFER.to_vec() + data_size: DVC_DATA_BUFFER.len() }; } #[test] fn from_buffer_parsing_for_dvc_data_pdu_with_invalid_message_size_fails() { - match DataPdu::from_buffer(DVC_INVALID_DATA_MESSAGE_BUFFER.as_ref(), FieldType::U8) { + match DataPdu::from_buffer( + DVC_INVALID_DATA_MESSAGE_BUFFER.as_ref(), + FieldType::U8, + PDU_WITH_DATA_MAX_SIZE, + ) { Err(ChannelError::InvalidDvcMessageSize) => (), res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), }; @@ -37,7 +43,12 @@ fn from_buffer_parsing_for_dvc_data_pdu_with_invalid_message_size_fails() { fn from_buffer_correct_parses_dvc_data_pdu() { assert_eq!( DVC_DATA.clone(), - DataPdu::from_buffer(&DVC_DATA_BUFFER[1..], FieldType::U8).unwrap(), + DataPdu::from_buffer( + &DVC_FULL_DATA_BUFFER[1..], + FieldType::U8, + DVC_FULL_DATA_BUFFER_SIZE - DVC_TEST_HEADER_SIZE + ) + .unwrap(), ); } @@ -48,13 +59,13 @@ fn to_buffer_correct_serializes_dvc_data_pdu() { let mut buffer = Vec::new(); data.to_buffer(&mut buffer).unwrap(); - assert_eq!(DVC_DATA_BUFFER.as_ref(), buffer.as_slice()); + assert_eq!(DVC_DATA_PREFIX.to_vec(), buffer); } #[test] fn buffer_length_is_correct_for_dvc_data_pdu() { let data = DVC_DATA.clone(); - let expected_buf_len = DVC_DATA_BUFFER.len(); + let expected_buf_len = DVC_DATA_PREFIX.len(); let len = data.buffer_length(); diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs index db84093d..e9555975 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -10,41 +10,43 @@ use crate::{rdp::vc::ChannelError, PduParsing}; pub struct DataFirstPdu { pub channel_id_type: FieldType, pub channel_id: u32, - pub data_length_type: FieldType, - pub data_length: u32, - pub dvc_data: Vec, + pub total_data_size_type: FieldType, + pub total_data_size: u32, + pub data_size: usize, } impl DataFirstPdu { pub fn from_buffer( mut stream: impl io::Read, channel_id_type: FieldType, - data_length_type: FieldType, + total_data_size_type: FieldType, + mut data_size: usize, ) -> Result { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; - let data_length = data_length_type.read_buffer_according_to_type(&mut stream)?; - let mut dvc_data = Vec::new(); - stream.read_to_end(&mut dvc_data)?; + let total_data_size = total_data_size_type.read_buffer_according_to_type(&mut stream)?; - if dvc_data.len() > data_length as usize { + data_size -= channel_id_type.get_type_size() + total_data_size_type.get_type_size(); + if data_size > total_data_size as usize { return Err(ChannelError::InvalidDvcTotalMessageSize { - actual: dvc_data.len(), - expected: data_length as usize, + actual: data_size, + expected: total_data_size as usize, }); } let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE - - (HEADER_SIZE + channel_id_type.get_type_size() + data_length_type.get_type_size()); + - (HEADER_SIZE + + channel_id_type.get_type_size() + + total_data_size_type.get_type_size()); - if dvc_data.len() > expected_max_data_size { + if data_size > expected_max_data_size { Err(ChannelError::InvalidDvcMessageSize) } else { Ok(Self { channel_id_type, channel_id, - data_length_type, - data_length, - dvc_data, + total_data_size_type, + total_data_size, + data_size, }) } } @@ -52,15 +54,14 @@ impl DataFirstPdu { pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), ChannelError> { let dvc_header = Header { channel_id_type: self.channel_id_type as u8, - pdu_dependent: self.data_length_type as u8, + pdu_dependent: self.total_data_size_type as u8, pdu_type: PduType::DataFirst, }; dvc_header.to_buffer(&mut stream)?; self.channel_id_type .to_buffer_according_to_type(&mut stream, self.channel_id)?; - self.data_length_type - .to_buffer_according_to_type(&mut stream, self.data_length)?; - stream.write_all(self.dvc_data.as_ref())?; + self.total_data_size_type + .to_buffer_according_to_type(&mut stream, self.total_data_size)?; Ok(()) } @@ -68,7 +69,6 @@ impl DataFirstPdu { pub fn buffer_length(&self) -> usize { HEADER_SIZE + self.channel_id_type.get_type_size() - + self.data_length_type.get_type_size() - + self.dvc_data.len() + + self.total_data_size_type.get_type_size() } } diff --git a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs index d93596fa..d874c27e 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs @@ -6,139 +6,155 @@ use crate::rdp::vc::dvc::ClientPdu; const DVC_TEST_CHANNEL_ID_U8: u32 = 0x03; const DVC_TEST_DATA_LENGTH: u32 = 0x0000_0C7B; -const DVC_DATA_FIRST_BUFFER_SIZE: usize = 16; -const DVC_DATA_FIRST_BUFFER: [u8; DVC_DATA_FIRST_BUFFER_SIZE] = [ - 0x24, 0x03, 0x7b, 0x0c, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, -]; -const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER: [u8; 6] = - [0x03, 0x03, 0x71, 0x71, 0x71, 0x71]; - -const DVC_TEST_DATA_BUFFER_SIZE: usize = 12; -const DVC_TEST_DATA_BUFFER: [u8; DVC_TEST_DATA_BUFFER_SIZE] = [ +const DVC_FULL_DATA_FIRST_BUFFER_SIZE: usize = 16; +const DVC_DATA_FIRST_PREFIX: [u8; 4] = [0x24, 0x03, 0x7b, 0x0c]; +const DVC_DATA_FIRST_BUFFER: [u8; 12] = [ 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, ]; +const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE: usize = 0x06; +const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER: [u8; + DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE] = + [0x03, 0x03, 0x71, 0x71, 0x71, 0x71]; + const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = [0x77; PDU_WITH_DATA_MAX_SIZE]; -const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER: [u8; 1597] = [ - 0x24, 0x7, 0x39, 0x6, 0xe0, 0x24, 0xa9, 0xba, 0xe0, 0x68, 0xa9, 0xba, 0x8a, 0x73, 0x41, 0x25, - 0x12, 0x12, 0x1c, 0x28, 0x3b, 0xa6, 0x34, 0x8, 0x8, 0x7a, 0x38, 0x34, 0x2c, 0xe8, 0xf8, 0xd0, - 0xef, 0x18, 0xc2, 0xc, 0x27, 0x1f, 0xb1, 0x83, 0x3c, 0x58, 0x8a, 0x67, 0x1, 0x58, 0x9d, 0x50, - 0x8b, 0x8c, 0x60, 0x31, 0x53, 0x55, 0x54, 0xd8, 0x51, 0x32, 0x23, 0x54, 0xd9, 0xd1, 0x65, 0x54, - 0xd6, 0xe0, 0xb6, 0x4b, 0x8b, 0xd1, 0x1a, 0x32, 0x6d, 0x10, 0xed, 0x21, 0x48, 0x8d, 0x1d, 0xa2, - 0x6a, 0x90, 0x14, 0x88, 0x30, 0x18, 0x8a, 0x11, 0x1a, 0x37, 0xc6, 0xa7, 0x32, 0x8b, 0xea, 0x32, - 0x44, 0x78, 0xc9, 0x4e, 0xdb, 0x47, 0x11, 0x53, 0xc6, 0x16, 0xc9, 0x72, 0x55, 0x11, 0x4e, 0x12, - 0x55, 0x31, 0xd4, 0x4b, 0x16, 0x71, 0x7e, 0x32, 0x13, 0x5, 0xb2, 0x5c, 0x9c, 0xa4, 0xab, 0x78, - 0xc9, 0x20, 0x88, 0xfb, 0x18, 0xa6, 0xb, 0x44, 0xac, 0x6, 0x23, 0x4b, 0x2d, 0x12, 0xa3, 0x1a, - 0x8b, 0xea, 0x2c, 0x44, 0x69, 0x12, 0xa8, 0xca, 0xa2, 0xc4, 0x64, 0x98, 0x99, 0x11, 0xd4, 0x5e, - 0x8a, 0x51, 0x92, 0x23, 0xa8, 0xbd, 0x34, 0x44, 0xc8, 0x65, 0x44, 0xd7, 0x30, 0x76, 0x11, 0xea, - 0x5a, 0xf7, 0x8b, 0xf1, 0x90, 0xaa, 0x90, 0x14, 0x52, 0x93, 0x4, 0x4c, 0x8b, 0x18, 0xc, 0x55, - 0x2b, 0xd1, 0x5a, 0x4e, 0xea, 0xa9, 0x82, 0x8b, 0xe0, 0xb2, 0x4a, 0x8e, 0x91, 0x62, 0x46, 0xf1, - 0x8a, 0x77, 0x90, 0xd4, 0x89, 0xa2, 0x34, 0x53, 0x15, 0x4f, 0xa4, 0xcf, 0x53, 0x2e, 0x93, 0x18, - 0xa2, 0x35, 0x54, 0x51, 0x11, 0xa4, 0x91, 0x16, 0x26, 0xd8, 0x44, 0xc9, 0x21, 0xde, 0x2f, 0xc6, - 0x3b, 0x44, 0x69, 0xd, 0x44, 0xd0, 0x59, 0x99, 0xde, 0x4b, 0x33, 0x44, 0x44, 0x9a, 0xa2, 0xe5, - 0x55, 0xc0, 0x5b, 0x26, 0x55, 0x57, 0x92, 0x0, 0x96, 0xe5, 0x55, 0xb6, 0xa2, 0x6a, 0x8b, 0xea, - 0x3b, 0x45, 0xf5, 0x13, 0x44, 0x88, 0x4c, 0x85, 0x22, 0xc4, 0x46, 0x8e, 0xd1, 0x1a, 0x6d, 0x21, - 0x68, 0x97, 0x21, 0x88, 0xde, 0xa2, 0x94, 0x74, 0x95, 0xcc, 0x62, 0x9d, 0xdb, 0x2d, 0x66, 0x92, - 0xc9, 0x5a, 0xa5, 0x90, 0xa4, 0x46, 0x91, 0xb4, 0x85, 0x22, 0x94, 0x4d, 0x13, 0x37, 0xb, 0x84, - 0xd9, 0x2a, 0x9a, 0xaf, 0x32, 0x3a, 0xa8, 0xdd, 0x11, 0xa4, 0x87, 0x78, 0xbe, 0x91, 0xa8, 0x53, - 0xcc, 0x95, 0x22, 0xca, 0x89, 0xb1, 0x8c, 0x92, 0x38, 0x91, 0x34, 0x8f, 0xa6, 0x88, 0x4c, 0x71, - 0x31, 0x8a, 0x50, 0x51, 0x1a, 0x34, 0x48, 0x4e, 0x31, 0x4e, 0x2b, 0x15, 0x62, 0x96, 0x2c, 0xc6, - 0x29, 0xe2, 0x46, 0x21, 0xf, 0x32, 0x32, 0xc0, 0x62, 0x49, 0x12, 0x6a, 0x88, 0xea, 0x2c, 0x46, - 0x88, 0x9a, 0xa4, 0xcd, 0x14, 0xa3, 0x84, 0x64, 0x91, 0xee, 0x28, 0xcb, 0x79, 0x4, 0x50, 0x44, - 0x17, 0x9, 0xb1, 0x42, 0x23, 0x47, 0xbb, 0xc5, 0xf5, 0x31, 0x2, 0x23, 0x45, 0x95, 0x13, 0x63, - 0x27, 0xe8, 0xb3, 0x18, 0xa6, 0xa4, 0x11, 0x31, 0xf6, 0x12, 0xc4, 0x8d, 0x2a, 0x26, 0xde, 0x63, - 0x8e, 0x59, 0xd, 0xe5, 0x97, 0x49, 0x98, 0x99, 0x2e, 0x9d, 0x12, 0x2b, 0xcb, 0x22, 0x9, 0x51, - 0xde, 0x2f, 0x4b, 0xa6, 0x11, 0xea, 0x7e, 0xe4, 0x8c, 0x26, 0x1a, 0x49, 0xb2, 0x23, 0xa8, 0xb1, - 0x19, 0x24, 0x19, 0x11, 0xd4, 0x58, 0x8e, 0x2a, 0x43, 0x51, 0xda, 0x23, 0x46, 0x48, 0xee, 0xa2, - 0x66, 0x3, 0x11, 0x2a, 0x23, 0xeb, 0x90, 0xcd, 0x24, 0x1f, 0x1a, 0x16, 0x48, 0xb3, 0x19, 0x2a, - 0xf2, 0x67, 0xeb, 0x48, 0xaf, 0x14, 0x9f, 0xa4, 0xab, 0xd2, 0x6c, 0x35, 0x9a, 0x53, 0x7c, 0x24, - 0xb7, 0x79, 0x8f, 0x91, 0x96, 0xf2, 0x8, 0x9e, 0xc2, 0x65, 0x11, 0x58, 0xe8, 0x4c, 0xc9, 0x15, - 0x8d, 0xc4, 0x47, 0x32, 0x18, 0x88, 0xea, 0x35, 0x82, 0xd5, 0xab, 0xa, 0xe2, 0x46, 0xf7, 0x8b, - 0xf7, 0x90, 0x75, 0x8, 0xe9, 0x8a, 0x11, 0x1d, 0x48, 0xf2, 0x4c, 0xd3, 0x6d, 0xd4, 0x65, 0x51, - 0x7a, 0x52, 0x14, 0x22, 0xd2, 0x37, 0xbc, 0x5f, 0xa4, 0x7c, 0x90, 0x74, 0x95, 0xb, 0x64, 0xc9, - 0x21, 0x44, 0x69, 0x1b, 0x8a, 0x13, 0x4a, 0x1, 0x28, 0x9a, 0x64, 0xc1, 0x1a, 0xc4, 0xc0, 0x6a, - 0x28, 0x68, 0x98, 0x5b, 0x26, 0x4c, 0x46, 0x92, 0x1d, 0x22, 0xc3, 0x61, 0xaa, 0xd2, 0x92, 0x44, - 0x85, 0x22, 0x65, 0x3c, 0xe8, 0xb2, 0xa9, 0x2a, 0x39, 0xa, 0x4a, 0x49, 0x3c, 0xba, 0x95, 0xe9, - 0x92, 0xc6, 0x98, 0xd5, 0x81, 0x8f, 0x95, 0x41, 0x94, 0x79, 0x93, 0x14, 0x8c, 0x71, 0x58, 0x27, - 0xc9, 0x87, 0x73, 0xf1, 0x66, 0x3c, 0x7d, 0xd3, 0xe6, 0xac, 0xa, 0xb7, 0x63, 0x18, 0x91, 0x8a, - 0xc1, 0x48, 0xdc, 0xc9, 0x4c, 0x1e, 0xc, 0xec, 0x82, 0xd6, 0x97, 0x57, 0x90, 0xfb, 0x89, 0x88, - 0xdf, 0x70, 0xb0, 0xce, 0xae, 0x54, 0x1e, 0x4b, 0x7a, 0x7d, 0x88, 0x8c, 0xd, 0x24, 0x63, 0x43, - 0x7f, 0xc4, 0xee, 0xa3, 0x51, 0xb7, 0x27, 0xb9, 0x73, 0x4f, 0x91, 0xe3, 0xec, 0x79, 0xa9, 0xf9, - 0xca, 0x89, 0x28, 0x2d, 0x44, 0xe0, 0xf3, 0xd1, 0x77, 0x4b, 0xab, 0xc8, 0xb5, 0xc4, 0x74, 0xf, - 0xf0, 0xff, 0x3b, 0x8d, 0xd2, 0xe, 0x22, 0xf6, 0x8c, 0xc, 0xfd, 0xd3, 0x12, 0x31, 0xa9, 0x57, - 0xf0, 0x50, 0xd6, 0x45, 0x30, 0xcb, 0x45, 0x82, 0xfe, 0x9f, 0x63, 0xc3, 0x3, 0x32, 0xa1, 0xa1, - 0x83, 0xf, 0xb5, 0x42, 0x85, 0x36, 0xf5, 0x4f, 0x18, 0x34, 0xf9, 0x1e, 0x3e, 0xc7, 0x9a, 0xb9, - 0xd9, 0xe5, 0x51, 0x7a, 0x8c, 0xac, 0x5b, 0x39, 0x98, 0x6e, 0x14, 0x87, 0x1c, 0x67, 0xc7, 0xa3, - 0xed, 0xde, 0x48, 0xd9, 0x47, 0xd0, 0xc5, 0x70, 0xa4, 0x38, 0xe3, 0x60, 0x1a, 0x17, 0x1e, 0x45, - 0x1e, 0xdc, 0x6c, 0x23, 0x1d, 0xc2, 0x90, 0xe3, 0x8d, 0x8c, 0x13, 0x8, 0xa5, 0x86, 0x9, 0x70, - 0xca, 0x68, 0xc9, 0x70, 0xa4, 0x38, 0xe3, 0x45, 0xa9, 0x5e, 0xce, 0x11, 0x23, 0xa5, 0x88, 0xed, - 0x32, 0xd5, 0x83, 0xd3, 0x58, 0x31, 0x30, 0x46, 0x8e, 0xc6, 0xc3, 0x88, 0xf4, 0xd2, 0x28, 0x7e, - 0xfd, 0xff, 0xd2, 0xea, 0xf1, 0xf5, 0x71, 0x1d, 0xde, 0x65, 0xb6, 0xf2, 0xa0, 0x98, 0xd2, 0x3c, - 0x19, 0xf4, 0xba, 0xbc, 0x7d, 0x5c, 0x4b, 0x54, 0xab, 0x8d, 0xc0, 0xcc, 0xf0, 0xac, 0x5d, 0x9a, - 0x26, 0xae, 0x7c, 0x99, 0xd9, 0xf6, 0x70, 0x4c, 0xfe, 0xba, 0x7b, 0x70, 0x5f, 0x7f, 0x1a, 0xd7, - 0x26, 0x99, 0xb3, 0x13, 0x67, 0x54, 0xe7, 0x99, 0x22, 0x13, 0xae, 0x24, 0x63, 0x61, 0x52, 0xb5, - 0x22, 0x1a, 0xa6, 0xac, 0x7c, 0x90, 0x4, 0x8c, 0x68, 0xe5, 0x41, 0x36, 0x95, 0xa9, 0xc7, 0x8a, - 0x7d, 0xea, 0x6b, 0xd2, 0xea, 0xf2, 0x81, 0x71, 0x1f, 0x46, 0x4a, 0xe6, 0xb2, 0xa0, 0x64, 0x6d, - 0x1a, 0x1b, 0x26, 0xcc, 0x4a, 0x82, 0x6b, 0x44, 0x9a, 0x64, 0x61, 0x69, 0xa6, 0xd, 0x2e, 0x72, - 0xab, 0x2d, 0x4a, 0x6d, 0x9b, 0x31, 0x2a, 0x8, 0xf3, 0x56, 0xc0, 0x7d, 0x9, 0xfc, 0xb5, 0x15, - 0x8c, 0x97, 0xe6, 0xed, 0x2e, 0xaf, 0x1f, 0x57, 0x10, 0xb7, 0x5, 0x80, 0x82, 0x23, 0x89, 0xbb, - 0xd9, 0xbf, 0x49, 0xf8, 0x95, 0x82, 0x74, 0xb6, 0x68, 0x25, 0xf, 0xb1, 0xd1, 0xe3, 0x27, 0x32, - 0x6d, 0x4a, 0x70, 0xd3, 0xee, 0x25, 0x41, 0x88, 0xf3, 0x47, 0x8b, 0x8d, 0x9f, 0xe0, 0x1a, 0x47, - 0x39, 0x6, 0xce, 0x37, 0xa, 0x56, 0xce, 0x34, 0x31, 0x71, 0x7e, 0xab, 0x37, 0x3a, 0xc2, 0x5b, - 0xce, 0x5a, 0x5d, 0x5e, 0x40, 0x6e, 0x23, 0xf8, 0xd7, 0xb3, 0xd5, 0xe6, 0xe0, 0x5e, 0xfa, 0x39, - 0xcd, 0xd0, 0x95, 0x25, 0x4b, 0xdd, 0x31, 0x26, 0x41, 0x94, 0xcb, 0xd, 0x3a, 0xd8, 0x12, 0x93, - 0xda, 0x7, 0x4a, 0xa, 0x91, 0x41, 0xc0, 0xc0, 0xa9, 0xaa, 0x28, 0x2a, 0x60, 0x6c, 0xb, 0x1e, - 0x51, 0xe4, 0xc7, 0xaa, 0x35, 0x24, 0x75, 0xd2, 0xea, 0xf1, 0xe7, 0x71, 0x15, 0xdc, 0x4f, 0x12, - 0x92, 0xad, 0xf1, 0xbc, 0xd0, 0x76, 0xd2, 0xea, 0xf1, 0x5b, 0x71, 0x23, 0x93, 0xaa, 0xd5, 0xf1, - 0xb1, 0xaa, 0x11, 0x1a, 0x9d, 0xf4, 0xba, 0xbc, 0x48, 0xdc, 0x46, 0xf6, 0xc8, 0xa7, 0xe3, 0xdc, - 0x88, 0xaf, 0x21, 0x9e, 0x25, 0xb2, 0x33, 0xf2, 0xa9, 0xe2, 0x96, 0xcc, 0x9c, 0x2c, 0xd3, 0xca, - 0xf4, 0x2e, 0xe6, 0x17, 0x25, 0xcf, 0x32, 0xd9, 0x19, 0xa1, 0xc0, 0xac, 0x2f, 0x25, 0xb3, 0x5, - 0xab, 0x87, 0xd1, 0x84, 0x4f, 0x91, 0x46, 0x4f, 0x5a, 0x5d, 0x5d, 0xf8, 0xae, 0x24, 0x12, 0x4c, - 0x58, 0xfa, 0x7d, 0xa9, 0x53, 0x8c, 0xe3, 0xdc, 0x8c, 0x3e, 0x48, 0xc2, 0xe1, 0x4b, 0xb9, 0xa6, - 0xb, 0x61, 0x27, 0x39, 0x10, 0xea, 0x93, 0x5c, 0x9f, 0x28, 0x54, 0x2c, 0xa4, 0xa2, 0x23, 0xcd, - 0x3, 0xed, 0x4, 0x78, 0x55, 0x60, 0xce, 0x35, 0x11, 0xcf, 0xb3, 0x9e, 0x46, 0x68, 0x64, 0x25, - 0x43, 0x31, 0x11, 0x5c, 0xe3, 0xfc, 0x1c, 0x36, 0xa2, 0x99, 0x87, 0xe9, 0xcf, 0x23, 0x34, 0x32, - 0x11, 0xe6, 0x65, 0x17, 0x9b, 0x99, 0x17, 0xe1, 0xe4, 0x5e, 0x24, 0x9f, 0xf4, 0xba, 0xbb, 0xca, - 0xdc, 0x4c, 0xb7, 0xa1, 0x11, 0x4, 0xd6, 0x9, 0x6c, 0xdc, 0xfb, 0xa5, 0xd5, 0xde, 0x8e, 0xe2, - 0x15, 0xf0, 0x56, 0x95, 0x9c, 0x6, 0xb3, 0xa1, 0x69, 0x3, 0x32, 0xe2, 0x73, 0xe6, 0x26, 0xcc, - 0xd0, 0x88, 0x74, 0x2e, 0x6, 0x5, 0x2c, 0x42, 0xfb, 0x45, 0x5, 0x31, 0x24, 0x4d, 0xd0, 0xfb, - 0x37, 0x46, 0x6c, 0x47, 0xb9, 0xf, 0xcb, 0x35, 0x8d, 0xc1, 0x88, 0x83, 0xd2, 0xed, 0xd5, 0x94, - 0xf1, 0x11, 0xdf, 0x2c, 0xb6, 0x29, 0x39, 0xc6, 0x64, 0x2a, 0xa1, 0x24, 0x61, 0x89, 0x18, 0x7c, - 0x91, 0x8c, 0xd3, 0x66, 0xc5, 0x8a, 0xa9, 0xc4, 0xd, 0x3c, 0x33, 0x50, 0xba, 0x5d, 0xba, 0xad, - 0x5e, 0x2d, 0xcf, 0x75, 0x32, 0x90, 0xee, 0xa8, 0xf4, 0xc5, 0x43, 0x50, 0xa8, 0x62, 0x87, 0xd2, - 0x46, 0x34, 0x43, 0xf4, 0x68, 0x88, 0x59, 0x3f, 0xa2, 0xd0, 0x7a, 0x1e, 0x69, 0x45, 0x56, 0x3d, - 0x33, 0x12, 0x70, 0x4c, 0x8d, 0x2c, 0x42, 0x1a, 0x94, 0xd4, 0xb7, 0x62, 0x18, 0x11, 0x1a, 0x5d, - 0x5d, 0xe8, 0xee, 0x23, 0x29, 0xc9, 0x8c, 0x65, 0x60, 0x7b, 0x7b, 0x8c, 0x11, 0x3a, 0x5d, 0xba, - 0xcc, 0xde, 0x27, 0x99, 0x58, 0x8a, 0x8c, 0x69, 0x91, 0xa, 0x2f, 0xb4, 0x55, 0xe, 0x4, 0xc1, - 0xd, 0x25, 0x43, 0x42, 0xb2, 0x81, 0x5e, 0x56, 0x5f, 0x16, 0xc6, 0x28, 0xb4, 0x5e, 0x97, 0x6e, - 0xb3, 0x37, 0x89, 0x98, 0xe3, 0x13, 0xbb, 0xc9, 0x49, 0x87, 0xe1, 0x6d, 0x19, 0xa5, 0xdb, 0xac, - 0xcd, 0xe2, 0x32, 0xb3, 0x99, 0x2b, 0xf3, 0x60, 0xd1, 0x20, 0x7e, 0x46, 0xcc, 0x4, 0xc6, 0x2c, - 0xc0, 0x12, 0x26, 0x8, 0xc8, 0xad, 0xfa, 0xf6, 0x3f, 0x10, 0x45, 0xca, 0xe0, 0x9a, 0x3b, 0x4b, - 0xb7, 0x57, 0x33, 0xc4, 0x90, 0x72, 0xab, 0x5a, 0xcc, 0xf, 0x26, 0x42, 0xea, 0x3e, 0x87, 0x2, - 0xab, 0xbc, 0x9f, 0x99, 0x23, 0x19, 0x76, 0xa, 0x8c, 0xc4, 0x8b, 0xc7, 0xf3, 0x95, 0xd2, 0x90, - 0xd2, 0xed, 0xd5, 0xcc, 0xf1, 0x31, 0x1d, 0xa7, 0xa4, 0xba, 0xdd, 0x88, 0x2d, 0x6b, 0xa4, 0x74, - 0xbb, 0x75, 0x73, 0x3c, 0x4c, 0x44, 0x42, 0xd, 0x74, 0x61, 0x39, 0x79, 0x76, 0xa4, 0xa7, 0x3c, - 0x4c, 0x80, 0xc4, 0xc8, 0x1a, 0x27, 0x1c, 0xe4, 0xde, 0x8, 0xb2, 0xba, 0x30, 0xa5, 0x74, 0x36, - 0x76, 0xa6, 0x53, 0x9f, 0x33, 0x56, 0x98, 0x88, 0x92, 0x2a, 0xd1, 0x90, 0x1, +const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX: [u8; 4] = + [0x24, 0x7, 0x39, 0x6]; + +const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER: [u8; 1593] = [ + 0xe0, 0x24, 0xa9, 0xba, 0xe0, 0x68, 0xa9, 0xba, 0x8a, 0x73, 0x41, 0x25, 0x12, 0x12, 0x1c, 0x28, + 0x3b, 0xa6, 0x34, 0x8, 0x8, 0x7a, 0x38, 0x34, 0x2c, 0xe8, 0xf8, 0xd0, 0xef, 0x18, 0xc2, 0xc, + 0x27, 0x1f, 0xb1, 0x83, 0x3c, 0x58, 0x8a, 0x67, 0x1, 0x58, 0x9d, 0x50, 0x8b, 0x8c, 0x60, 0x31, + 0x53, 0x55, 0x54, 0xd8, 0x51, 0x32, 0x23, 0x54, 0xd9, 0xd1, 0x65, 0x54, 0xd6, 0xe0, 0xb6, 0x4b, + 0x8b, 0xd1, 0x1a, 0x32, 0x6d, 0x10, 0xed, 0x21, 0x48, 0x8d, 0x1d, 0xa2, 0x6a, 0x90, 0x14, 0x88, + 0x30, 0x18, 0x8a, 0x11, 0x1a, 0x37, 0xc6, 0xa7, 0x32, 0x8b, 0xea, 0x32, 0x44, 0x78, 0xc9, 0x4e, + 0xdb, 0x47, 0x11, 0x53, 0xc6, 0x16, 0xc9, 0x72, 0x55, 0x11, 0x4e, 0x12, 0x55, 0x31, 0xd4, 0x4b, + 0x16, 0x71, 0x7e, 0x32, 0x13, 0x5, 0xb2, 0x5c, 0x9c, 0xa4, 0xab, 0x78, 0xc9, 0x20, 0x88, 0xfb, + 0x18, 0xa6, 0xb, 0x44, 0xac, 0x6, 0x23, 0x4b, 0x2d, 0x12, 0xa3, 0x1a, 0x8b, 0xea, 0x2c, 0x44, + 0x69, 0x12, 0xa8, 0xca, 0xa2, 0xc4, 0x64, 0x98, 0x99, 0x11, 0xd4, 0x5e, 0x8a, 0x51, 0x92, 0x23, + 0xa8, 0xbd, 0x34, 0x44, 0xc8, 0x65, 0x44, 0xd7, 0x30, 0x76, 0x11, 0xea, 0x5a, 0xf7, 0x8b, 0xf1, + 0x90, 0xaa, 0x90, 0x14, 0x52, 0x93, 0x4, 0x4c, 0x8b, 0x18, 0xc, 0x55, 0x2b, 0xd1, 0x5a, 0x4e, + 0xea, 0xa9, 0x82, 0x8b, 0xe0, 0xb2, 0x4a, 0x8e, 0x91, 0x62, 0x46, 0xf1, 0x8a, 0x77, 0x90, 0xd4, + 0x89, 0xa2, 0x34, 0x53, 0x15, 0x4f, 0xa4, 0xcf, 0x53, 0x2e, 0x93, 0x18, 0xa2, 0x35, 0x54, 0x51, + 0x11, 0xa4, 0x91, 0x16, 0x26, 0xd8, 0x44, 0xc9, 0x21, 0xde, 0x2f, 0xc6, 0x3b, 0x44, 0x69, 0xd, + 0x44, 0xd0, 0x59, 0x99, 0xde, 0x4b, 0x33, 0x44, 0x44, 0x9a, 0xa2, 0xe5, 0x55, 0xc0, 0x5b, 0x26, + 0x55, 0x57, 0x92, 0x0, 0x96, 0xe5, 0x55, 0xb6, 0xa2, 0x6a, 0x8b, 0xea, 0x3b, 0x45, 0xf5, 0x13, + 0x44, 0x88, 0x4c, 0x85, 0x22, 0xc4, 0x46, 0x8e, 0xd1, 0x1a, 0x6d, 0x21, 0x68, 0x97, 0x21, 0x88, + 0xde, 0xa2, 0x94, 0x74, 0x95, 0xcc, 0x62, 0x9d, 0xdb, 0x2d, 0x66, 0x92, 0xc9, 0x5a, 0xa5, 0x90, + 0xa4, 0x46, 0x91, 0xb4, 0x85, 0x22, 0x94, 0x4d, 0x13, 0x37, 0xb, 0x84, 0xd9, 0x2a, 0x9a, 0xaf, + 0x32, 0x3a, 0xa8, 0xdd, 0x11, 0xa4, 0x87, 0x78, 0xbe, 0x91, 0xa8, 0x53, 0xcc, 0x95, 0x22, 0xca, + 0x89, 0xb1, 0x8c, 0x92, 0x38, 0x91, 0x34, 0x8f, 0xa6, 0x88, 0x4c, 0x71, 0x31, 0x8a, 0x50, 0x51, + 0x1a, 0x34, 0x48, 0x4e, 0x31, 0x4e, 0x2b, 0x15, 0x62, 0x96, 0x2c, 0xc6, 0x29, 0xe2, 0x46, 0x21, + 0xf, 0x32, 0x32, 0xc0, 0x62, 0x49, 0x12, 0x6a, 0x88, 0xea, 0x2c, 0x46, 0x88, 0x9a, 0xa4, 0xcd, + 0x14, 0xa3, 0x84, 0x64, 0x91, 0xee, 0x28, 0xcb, 0x79, 0x4, 0x50, 0x44, 0x17, 0x9, 0xb1, 0x42, + 0x23, 0x47, 0xbb, 0xc5, 0xf5, 0x31, 0x2, 0x23, 0x45, 0x95, 0x13, 0x63, 0x27, 0xe8, 0xb3, 0x18, + 0xa6, 0xa4, 0x11, 0x31, 0xf6, 0x12, 0xc4, 0x8d, 0x2a, 0x26, 0xde, 0x63, 0x8e, 0x59, 0xd, 0xe5, + 0x97, 0x49, 0x98, 0x99, 0x2e, 0x9d, 0x12, 0x2b, 0xcb, 0x22, 0x9, 0x51, 0xde, 0x2f, 0x4b, 0xa6, + 0x11, 0xea, 0x7e, 0xe4, 0x8c, 0x26, 0x1a, 0x49, 0xb2, 0x23, 0xa8, 0xb1, 0x19, 0x24, 0x19, 0x11, + 0xd4, 0x58, 0x8e, 0x2a, 0x43, 0x51, 0xda, 0x23, 0x46, 0x48, 0xee, 0xa2, 0x66, 0x3, 0x11, 0x2a, + 0x23, 0xeb, 0x90, 0xcd, 0x24, 0x1f, 0x1a, 0x16, 0x48, 0xb3, 0x19, 0x2a, 0xf2, 0x67, 0xeb, 0x48, + 0xaf, 0x14, 0x9f, 0xa4, 0xab, 0xd2, 0x6c, 0x35, 0x9a, 0x53, 0x7c, 0x24, 0xb7, 0x79, 0x8f, 0x91, + 0x96, 0xf2, 0x8, 0x9e, 0xc2, 0x65, 0x11, 0x58, 0xe8, 0x4c, 0xc9, 0x15, 0x8d, 0xc4, 0x47, 0x32, + 0x18, 0x88, 0xea, 0x35, 0x82, 0xd5, 0xab, 0xa, 0xe2, 0x46, 0xf7, 0x8b, 0xf7, 0x90, 0x75, 0x8, + 0xe9, 0x8a, 0x11, 0x1d, 0x48, 0xf2, 0x4c, 0xd3, 0x6d, 0xd4, 0x65, 0x51, 0x7a, 0x52, 0x14, 0x22, + 0xd2, 0x37, 0xbc, 0x5f, 0xa4, 0x7c, 0x90, 0x74, 0x95, 0xb, 0x64, 0xc9, 0x21, 0x44, 0x69, 0x1b, + 0x8a, 0x13, 0x4a, 0x1, 0x28, 0x9a, 0x64, 0xc1, 0x1a, 0xc4, 0xc0, 0x6a, 0x28, 0x68, 0x98, 0x5b, + 0x26, 0x4c, 0x46, 0x92, 0x1d, 0x22, 0xc3, 0x61, 0xaa, 0xd2, 0x92, 0x44, 0x85, 0x22, 0x65, 0x3c, + 0xe8, 0xb2, 0xa9, 0x2a, 0x39, 0xa, 0x4a, 0x49, 0x3c, 0xba, 0x95, 0xe9, 0x92, 0xc6, 0x98, 0xd5, + 0x81, 0x8f, 0x95, 0x41, 0x94, 0x79, 0x93, 0x14, 0x8c, 0x71, 0x58, 0x27, 0xc9, 0x87, 0x73, 0xf1, + 0x66, 0x3c, 0x7d, 0xd3, 0xe6, 0xac, 0xa, 0xb7, 0x63, 0x18, 0x91, 0x8a, 0xc1, 0x48, 0xdc, 0xc9, + 0x4c, 0x1e, 0xc, 0xec, 0x82, 0xd6, 0x97, 0x57, 0x90, 0xfb, 0x89, 0x88, 0xdf, 0x70, 0xb0, 0xce, + 0xae, 0x54, 0x1e, 0x4b, 0x7a, 0x7d, 0x88, 0x8c, 0xd, 0x24, 0x63, 0x43, 0x7f, 0xc4, 0xee, 0xa3, + 0x51, 0xb7, 0x27, 0xb9, 0x73, 0x4f, 0x91, 0xe3, 0xec, 0x79, 0xa9, 0xf9, 0xca, 0x89, 0x28, 0x2d, + 0x44, 0xe0, 0xf3, 0xd1, 0x77, 0x4b, 0xab, 0xc8, 0xb5, 0xc4, 0x74, 0xf, 0xf0, 0xff, 0x3b, 0x8d, + 0xd2, 0xe, 0x22, 0xf6, 0x8c, 0xc, 0xfd, 0xd3, 0x12, 0x31, 0xa9, 0x57, 0xf0, 0x50, 0xd6, 0x45, + 0x30, 0xcb, 0x45, 0x82, 0xfe, 0x9f, 0x63, 0xc3, 0x3, 0x32, 0xa1, 0xa1, 0x83, 0xf, 0xb5, 0x42, + 0x85, 0x36, 0xf5, 0x4f, 0x18, 0x34, 0xf9, 0x1e, 0x3e, 0xc7, 0x9a, 0xb9, 0xd9, 0xe5, 0x51, 0x7a, + 0x8c, 0xac, 0x5b, 0x39, 0x98, 0x6e, 0x14, 0x87, 0x1c, 0x67, 0xc7, 0xa3, 0xed, 0xde, 0x48, 0xd9, + 0x47, 0xd0, 0xc5, 0x70, 0xa4, 0x38, 0xe3, 0x60, 0x1a, 0x17, 0x1e, 0x45, 0x1e, 0xdc, 0x6c, 0x23, + 0x1d, 0xc2, 0x90, 0xe3, 0x8d, 0x8c, 0x13, 0x8, 0xa5, 0x86, 0x9, 0x70, 0xca, 0x68, 0xc9, 0x70, + 0xa4, 0x38, 0xe3, 0x45, 0xa9, 0x5e, 0xce, 0x11, 0x23, 0xa5, 0x88, 0xed, 0x32, 0xd5, 0x83, 0xd3, + 0x58, 0x31, 0x30, 0x46, 0x8e, 0xc6, 0xc3, 0x88, 0xf4, 0xd2, 0x28, 0x7e, 0xfd, 0xff, 0xd2, 0xea, + 0xf1, 0xf5, 0x71, 0x1d, 0xde, 0x65, 0xb6, 0xf2, 0xa0, 0x98, 0xd2, 0x3c, 0x19, 0xf4, 0xba, 0xbc, + 0x7d, 0x5c, 0x4b, 0x54, 0xab, 0x8d, 0xc0, 0xcc, 0xf0, 0xac, 0x5d, 0x9a, 0x26, 0xae, 0x7c, 0x99, + 0xd9, 0xf6, 0x70, 0x4c, 0xfe, 0xba, 0x7b, 0x70, 0x5f, 0x7f, 0x1a, 0xd7, 0x26, 0x99, 0xb3, 0x13, + 0x67, 0x54, 0xe7, 0x99, 0x22, 0x13, 0xae, 0x24, 0x63, 0x61, 0x52, 0xb5, 0x22, 0x1a, 0xa6, 0xac, + 0x7c, 0x90, 0x4, 0x8c, 0x68, 0xe5, 0x41, 0x36, 0x95, 0xa9, 0xc7, 0x8a, 0x7d, 0xea, 0x6b, 0xd2, + 0xea, 0xf2, 0x81, 0x71, 0x1f, 0x46, 0x4a, 0xe6, 0xb2, 0xa0, 0x64, 0x6d, 0x1a, 0x1b, 0x26, 0xcc, + 0x4a, 0x82, 0x6b, 0x44, 0x9a, 0x64, 0x61, 0x69, 0xa6, 0xd, 0x2e, 0x72, 0xab, 0x2d, 0x4a, 0x6d, + 0x9b, 0x31, 0x2a, 0x8, 0xf3, 0x56, 0xc0, 0x7d, 0x9, 0xfc, 0xb5, 0x15, 0x8c, 0x97, 0xe6, 0xed, + 0x2e, 0xaf, 0x1f, 0x57, 0x10, 0xb7, 0x5, 0x80, 0x82, 0x23, 0x89, 0xbb, 0xd9, 0xbf, 0x49, 0xf8, + 0x95, 0x82, 0x74, 0xb6, 0x68, 0x25, 0xf, 0xb1, 0xd1, 0xe3, 0x27, 0x32, 0x6d, 0x4a, 0x70, 0xd3, + 0xee, 0x25, 0x41, 0x88, 0xf3, 0x47, 0x8b, 0x8d, 0x9f, 0xe0, 0x1a, 0x47, 0x39, 0x6, 0xce, 0x37, + 0xa, 0x56, 0xce, 0x34, 0x31, 0x71, 0x7e, 0xab, 0x37, 0x3a, 0xc2, 0x5b, 0xce, 0x5a, 0x5d, 0x5e, + 0x40, 0x6e, 0x23, 0xf8, 0xd7, 0xb3, 0xd5, 0xe6, 0xe0, 0x5e, 0xfa, 0x39, 0xcd, 0xd0, 0x95, 0x25, + 0x4b, 0xdd, 0x31, 0x26, 0x41, 0x94, 0xcb, 0xd, 0x3a, 0xd8, 0x12, 0x93, 0xda, 0x7, 0x4a, 0xa, + 0x91, 0x41, 0xc0, 0xc0, 0xa9, 0xaa, 0x28, 0x2a, 0x60, 0x6c, 0xb, 0x1e, 0x51, 0xe4, 0xc7, 0xaa, + 0x35, 0x24, 0x75, 0xd2, 0xea, 0xf1, 0xe7, 0x71, 0x15, 0xdc, 0x4f, 0x12, 0x92, 0xad, 0xf1, 0xbc, + 0xd0, 0x76, 0xd2, 0xea, 0xf1, 0x5b, 0x71, 0x23, 0x93, 0xaa, 0xd5, 0xf1, 0xb1, 0xaa, 0x11, 0x1a, + 0x9d, 0xf4, 0xba, 0xbc, 0x48, 0xdc, 0x46, 0xf6, 0xc8, 0xa7, 0xe3, 0xdc, 0x88, 0xaf, 0x21, 0x9e, + 0x25, 0xb2, 0x33, 0xf2, 0xa9, 0xe2, 0x96, 0xcc, 0x9c, 0x2c, 0xd3, 0xca, 0xf4, 0x2e, 0xe6, 0x17, + 0x25, 0xcf, 0x32, 0xd9, 0x19, 0xa1, 0xc0, 0xac, 0x2f, 0x25, 0xb3, 0x5, 0xab, 0x87, 0xd1, 0x84, + 0x4f, 0x91, 0x46, 0x4f, 0x5a, 0x5d, 0x5d, 0xf8, 0xae, 0x24, 0x12, 0x4c, 0x58, 0xfa, 0x7d, 0xa9, + 0x53, 0x8c, 0xe3, 0xdc, 0x8c, 0x3e, 0x48, 0xc2, 0xe1, 0x4b, 0xb9, 0xa6, 0xb, 0x61, 0x27, 0x39, + 0x10, 0xea, 0x93, 0x5c, 0x9f, 0x28, 0x54, 0x2c, 0xa4, 0xa2, 0x23, 0xcd, 0x3, 0xed, 0x4, 0x78, + 0x55, 0x60, 0xce, 0x35, 0x11, 0xcf, 0xb3, 0x9e, 0x46, 0x68, 0x64, 0x25, 0x43, 0x31, 0x11, 0x5c, + 0xe3, 0xfc, 0x1c, 0x36, 0xa2, 0x99, 0x87, 0xe9, 0xcf, 0x23, 0x34, 0x32, 0x11, 0xe6, 0x65, 0x17, + 0x9b, 0x99, 0x17, 0xe1, 0xe4, 0x5e, 0x24, 0x9f, 0xf4, 0xba, 0xbb, 0xca, 0xdc, 0x4c, 0xb7, 0xa1, + 0x11, 0x4, 0xd6, 0x9, 0x6c, 0xdc, 0xfb, 0xa5, 0xd5, 0xde, 0x8e, 0xe2, 0x15, 0xf0, 0x56, 0x95, + 0x9c, 0x6, 0xb3, 0xa1, 0x69, 0x3, 0x32, 0xe2, 0x73, 0xe6, 0x26, 0xcc, 0xd0, 0x88, 0x74, 0x2e, + 0x6, 0x5, 0x2c, 0x42, 0xfb, 0x45, 0x5, 0x31, 0x24, 0x4d, 0xd0, 0xfb, 0x37, 0x46, 0x6c, 0x47, + 0xb9, 0xf, 0xcb, 0x35, 0x8d, 0xc1, 0x88, 0x83, 0xd2, 0xed, 0xd5, 0x94, 0xf1, 0x11, 0xdf, 0x2c, + 0xb6, 0x29, 0x39, 0xc6, 0x64, 0x2a, 0xa1, 0x24, 0x61, 0x89, 0x18, 0x7c, 0x91, 0x8c, 0xd3, 0x66, + 0xc5, 0x8a, 0xa9, 0xc4, 0xd, 0x3c, 0x33, 0x50, 0xba, 0x5d, 0xba, 0xad, 0x5e, 0x2d, 0xcf, 0x75, + 0x32, 0x90, 0xee, 0xa8, 0xf4, 0xc5, 0x43, 0x50, 0xa8, 0x62, 0x87, 0xd2, 0x46, 0x34, 0x43, 0xf4, + 0x68, 0x88, 0x59, 0x3f, 0xa2, 0xd0, 0x7a, 0x1e, 0x69, 0x45, 0x56, 0x3d, 0x33, 0x12, 0x70, 0x4c, + 0x8d, 0x2c, 0x42, 0x1a, 0x94, 0xd4, 0xb7, 0x62, 0x18, 0x11, 0x1a, 0x5d, 0x5d, 0xe8, 0xee, 0x23, + 0x29, 0xc9, 0x8c, 0x65, 0x60, 0x7b, 0x7b, 0x8c, 0x11, 0x3a, 0x5d, 0xba, 0xcc, 0xde, 0x27, 0x99, + 0x58, 0x8a, 0x8c, 0x69, 0x91, 0xa, 0x2f, 0xb4, 0x55, 0xe, 0x4, 0xc1, 0xd, 0x25, 0x43, 0x42, + 0xb2, 0x81, 0x5e, 0x56, 0x5f, 0x16, 0xc6, 0x28, 0xb4, 0x5e, 0x97, 0x6e, 0xb3, 0x37, 0x89, 0x98, + 0xe3, 0x13, 0xbb, 0xc9, 0x49, 0x87, 0xe1, 0x6d, 0x19, 0xa5, 0xdb, 0xac, 0xcd, 0xe2, 0x32, 0xb3, + 0x99, 0x2b, 0xf3, 0x60, 0xd1, 0x20, 0x7e, 0x46, 0xcc, 0x4, 0xc6, 0x2c, 0xc0, 0x12, 0x26, 0x8, + 0xc8, 0xad, 0xfa, 0xf6, 0x3f, 0x10, 0x45, 0xca, 0xe0, 0x9a, 0x3b, 0x4b, 0xb7, 0x57, 0x33, 0xc4, + 0x90, 0x72, 0xab, 0x5a, 0xcc, 0xf, 0x26, 0x42, 0xea, 0x3e, 0x87, 0x2, 0xab, 0xbc, 0x9f, 0x99, + 0x23, 0x19, 0x76, 0xa, 0x8c, 0xc4, 0x8b, 0xc7, 0xf3, 0x95, 0xd2, 0x90, 0xd2, 0xed, 0xd5, 0xcc, + 0xf1, 0x31, 0x1d, 0xa7, 0xa4, 0xba, 0xdd, 0x88, 0x2d, 0x6b, 0xa4, 0x74, 0xbb, 0x75, 0x73, 0x3c, + 0x4c, 0x44, 0x42, 0xd, 0x74, 0x61, 0x39, 0x79, 0x76, 0xa4, 0xa7, 0x3c, 0x4c, 0x80, 0xc4, 0xc8, + 0x1a, 0x27, 0x1c, 0xe4, 0xde, 0x8, 0xb2, 0xba, 0x30, 0xa5, 0x74, 0x36, 0x76, 0xa6, 0x53, 0x9f, + 0x33, 0x56, 0x98, 0x88, 0x92, 0x2a, 0xd1, 0x90, 0x1, ]; +const DVC_TEST_HEADER_SIZE: usize = 0x01; + lazy_static! { + static ref DVC_FULL_DATA_FIRST_BUFFER: Vec = { + let mut result = DVC_DATA_FIRST_PREFIX.to_vec(); + result.extend(&DVC_DATA_FIRST_BUFFER); + + result + }; + static ref FULL_DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER: Vec = { + let mut result = DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX.to_vec(); + result.append(&mut DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.to_vec()); + + result + }; static ref DVC_DATA_FIRST: DataFirstPdu = DataFirstPdu { channel_id_type: FieldType::U8, channel_id: DVC_TEST_CHANNEL_ID_U8, - data_length_type: FieldType::U16, - data_length: DVC_TEST_DATA_LENGTH, - dvc_data: DVC_TEST_DATA_BUFFER.to_vec() + total_data_size_type: FieldType::U16, + total_data_size: DVC_TEST_DATA_LENGTH, + data_size: DVC_DATA_FIRST_BUFFER.len() }; static ref DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH: ClientPdu = ClientPdu::DataFirst(DataFirstPdu { channel_id_type: FieldType::U8, channel_id: 0x7, - data_length_type: FieldType::U16, - data_length: 0x639, - dvc_data: (&DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER[4..]).to_vec(), + total_data_size_type: FieldType::U16, + total_data_size: 0x639, + data_size: DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(), }); } @@ -148,6 +164,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_message_size_fails() DVC_INVALID_DATA_MESSAGE_BUFFER.as_ref(), FieldType::U8, FieldType::U16, + PDU_WITH_DATA_MAX_SIZE, ) { Err(ChannelError::InvalidDvcMessageSize) => (), res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), @@ -160,6 +177,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fa DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER.as_ref(), FieldType::U8, FieldType::U8, + DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE, ) { Err(ChannelError::InvalidDvcTotalMessageSize { .. }) => (), res => panic!("Expected InvalidDvcTotalMessageSize error, got: {:?}", res), @@ -170,8 +188,13 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fa fn from_buffer_correct_parses_dvc_data_first_pdu() { assert_eq!( *DVC_DATA_FIRST, - DataFirstPdu::from_buffer(&DVC_DATA_FIRST_BUFFER[1..], FieldType::U8, FieldType::U16) - .unwrap(), + DataFirstPdu::from_buffer( + &DVC_FULL_DATA_FIRST_BUFFER[1..], + FieldType::U8, + FieldType::U16, + DVC_FULL_DATA_FIRST_BUFFER_SIZE - DVC_TEST_HEADER_SIZE + ) + .unwrap(), ); } @@ -182,13 +205,13 @@ fn to_buffer_correct_serializes_dvc_data_first_pdu() { let mut buffer = Vec::new(); data_first.to_buffer(&mut buffer).unwrap(); - assert_eq!(DVC_DATA_FIRST_BUFFER.as_ref(), buffer.as_slice()); + assert_eq!(DVC_DATA_FIRST_PREFIX.as_ref(), buffer.as_slice()); } #[test] fn buffer_length_is_correct_for_dvc_data_first_pdu() { - let data_first = &*DVC_DATA_FIRST; - let expected_buf_len = DVC_DATA_FIRST_BUFFER.len(); + let data_first = DVC_DATA_FIRST.clone(); + let expected_buf_len = DVC_DATA_FIRST_PREFIX.len(); let len = data_first.buffer_length(); @@ -201,7 +224,8 @@ fn from_buffer_correct_parses_dvc_server_pdu_with_data_first_where_total_length_ assert_eq!( *DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH, ClientPdu::from_buffer( - DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.as_ref() + FULL_DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.as_slice(), + FULL_DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(), ) .unwrap(), ); @@ -216,7 +240,7 @@ fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_lengt data_first.to_buffer(&mut buffer).unwrap(); assert_eq!( - DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.as_ref(), + DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX.as_ref(), buffer.as_slice() ); } @@ -225,7 +249,7 @@ fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_lengt fn buffer_length_is_correct_for_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( ) { let data_first = &*DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH; - let expected_buf_len = DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(); + let expected_buf_len = DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX.len(); let len = data_first.buffer_length(); diff --git a/ironrdp/src/rdp/vc/dvc/tests.rs b/ironrdp/src/rdp/vc/dvc/tests.rs index 5eca4d66..70a362ed 100644 --- a/ironrdp/src/rdp/vc/dvc/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/tests.rs @@ -55,7 +55,10 @@ fn buffer_length_is_correct_for_dvc_header() { #[test] fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { - match ClientPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref()) { + match ClientPdu::from_buffer( + DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), + HEADER_SIZE, + ) { Err(ChannelError::InvalidDVChannelIdLength) => (), res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), }; @@ -63,7 +66,10 @@ fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { #[test] fn from_buffer_parsing_for_server_dvc_pdu_with_invalid_id_length_type_fails() { - match ServerPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref()) { + match ServerPdu::from_buffer( + DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), + HEADER_SIZE, + ) { Err(ChannelError::InvalidDVChannelIdLength) => (), res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), }; From e5c6bf36a6c144f3d5d946d51871a2aab4cb42e2 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 13 Jan 2020 09:33:48 +0200 Subject: [PATCH 0015/1273] ironrdp_client: integrate refactoring of ironrdp crate --- ironrdp_client/src/channels.rs | 97 +++++++++++++------ ironrdp_client/src/connection_sequence.rs | 79 +++++++++------ .../src/connection_sequence/user_info.rs | 19 +++- ironrdp_client/src/transport.rs | 90 +++++++++-------- ironrdp_client/src/transport/channels.rs | 36 ++++--- ironrdp_client/src/transport/connection.rs | 25 ++--- 6 files changed, 212 insertions(+), 134 deletions(-) diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs index d341d5bd..e6274706 100644 --- a/ironrdp_client/src/channels.rs +++ b/ironrdp_client/src/channels.rs @@ -28,9 +28,9 @@ pub fn process_active_connection_messages( loop { match transport.decode(&mut stream) { - Ok((channel_ids, pdu)) => { + Ok(channel_ids) => { let mut transport = transport.clone(); - transport.set_decoded_context(channel_ids, pdu); + transport.set_decoded_context(channel_ids); match static_channels.get(&channel_ids.channel_id) { Some(channel_name) => { @@ -89,8 +89,11 @@ fn process_dvc_message( version: dvc::CapsVersion::V1, }); - debug!("Send DVC Capabiities Response PDU: {:?}", caps_response); - transport.encode(caps_response, &mut stream)?; + debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(caps_response, None)?, + &mut stream, + )?; } dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {:?}", create_request); @@ -111,7 +114,10 @@ fn process_dvc_message( }); debug!("Send DVC Create Response PDU: {:?}", create_response); - transport.encode(create_response, &mut stream)?; + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(create_response, None)?, + &mut stream, + )?; negotiate_dvc(&create_request, transport, &mut stream)?; } @@ -124,42 +130,63 @@ fn process_dvc_message( }); debug!("Send DVC Close Response PDU: {:?}", close_response); - transport.encode(close_response, &mut stream)?; + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(close_response, None)?, + &mut stream, + )?; dynamic_channels.remove(&close_request.channel_id); } dvc::ServerPdu::DataFirst(data) => { let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; + let mut data_buff = vec![0; data.data_size]; + stream.read_exact(&mut data_buff)?; + if let Some(dvc_data) = dynamic_channels .get_mut(&data.channel_id) .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_first_pdu(data)? + .process_data_first_pdu(data.total_data_size as usize, data_buff)? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type, channel_id, - dvc_data, + data_size: dvc_data.len(), }); - transport.encode(client_data, &mut stream)?; + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode( + client_data, + Some(dvc_data), + )?, + &mut stream, + )?; } } dvc::ServerPdu::Data(data) => { let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; + let mut data_buff = vec![0; data.data_size]; + stream.read_exact(&mut data_buff)?; + if let Some(dvc_data) = dynamic_channels .get_mut(&data.channel_id) .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_pdu(data)? + .process_data_pdu(data_buff)? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type, channel_id, - dvc_data, + data_size: dvc_data.len(), }); - transport.encode(client_data, &mut stream)?; + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode( + client_data, + Some(dvc_data), + )?, + &mut stream, + )?; } } } @@ -197,13 +224,18 @@ fn negotiate_dvc( mut stream: impl io::Write, ) -> Result<(), RdpError> { if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { + let dvc_data = gfx::create_capabilities_advertise()?; let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type: create_request.channel_id_type, channel_id: create_request.channel_id, - dvc_data: gfx::create_capabilities_advertise()?, + data_size: dvc_data.len(), }); + debug!("Send GFX Capabilities Advertise PDU"); - transport.encode(client_data, &mut stream)?; + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, + &mut stream, + )?; } Ok(()) @@ -231,16 +263,17 @@ impl DynamicChannel { pub fn process_data_first_pdu( &mut self, - data_first: dvc::DataFirstPdu, + total_data_size: usize, + data: Vec, ) -> Result>, RdpError> { - if let Some(complete_data) = self.data.process_data_first_pdu(data_first) { + if let Some(complete_data) = self.data.process_data_first_pdu(total_data_size, data) { self.handler.process_complete_data(complete_data) } else { Ok(None) } } - pub fn process_data_pdu(&mut self, data: dvc::DataPdu) -> Result>, RdpError> { + pub fn process_data_pdu(&mut self, data: Vec) -> Result>, RdpError> { if let Some(complete_data) = self.data.process_data_pdu(data) { self.handler.process_complete_data(complete_data) } else { @@ -251,54 +284,54 @@ impl DynamicChannel { #[derive(Debug, PartialEq)] struct CompleteData { - total_length: u32, + total_size: usize, data: Vec, } impl CompleteData { fn new() -> Self { Self { - total_length: 0, + total_size: 0, data: Vec::new(), } } - fn process_data_first_pdu(&mut self, data_first: dvc::DataFirstPdu) -> Option> { - if self.total_length != 0 || !self.data.is_empty() { + fn process_data_first_pdu(&mut self, total_data_size: usize, data: Vec) -> Option> { + if self.total_size != 0 || !self.data.is_empty() { error!("Incomplete DVC message, it will be skipped"); self.data.clear(); } - self.total_length = data_first.data_length; - self.data = data_first.dvc_data; + self.total_size = total_data_size; + self.data = data; None } - fn process_data_pdu(&mut self, mut data: dvc::DataPdu) -> Option> { - if self.total_length == 0 && self.data.is_empty() { + fn process_data_pdu(&mut self, mut data: Vec) -> Option> { + if self.total_size == 0 && self.data.is_empty() { // message is not fragmented - Some(data.dvc_data) + Some(data) } else { // message is fragmented so need to reassemble it - let actual_data_length = self.data.len() + data.dvc_data.len(); + let actual_data_length = self.data.len() + data.len(); - match actual_data_length.cmp(&(self.total_length as usize)) { + match actual_data_length.cmp(&(self.total_size)) { cmp::Ordering::Less => { // this is one of the fragmented messages, just append it - self.data.append(&mut data.dvc_data); + self.data.append(&mut data); None } cmp::Ordering::Equal => { // this is the last fragmented message, need to return the whole reassembled message - self.total_length = 0; - self.data.append(&mut data.dvc_data); + self.total_size = 0; + self.data.append(&mut data); Some(self.data.drain(..).collect()) } cmp::Ordering::Greater => { error!( "Actual DVC message size is grater than expected total DVC message size" ); - self.total_length = 0; + self.total_size = 0; self.data.clear(); None diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 016c85d7..f1ebf6d3 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -92,7 +92,11 @@ pub fn process_mcs_connect( connect_initial.to_buffer(connect_initial_buf.as_mut())?; transport.encode(connect_initial_buf, &mut stream)?; - let data = transport.decode(&mut stream)?; + let data_length = transport.decode(&mut stream)?; + let mut data = BytesMut::with_capacity(data_length); + data.resize(data_length, 0x00); + stream.read_exact(&mut data)?; + let connect_response = ironrdp::ConnectResponse::from_buffer(data.as_ref()).map_err(RdpError::McsConnectError)?; debug!("Got MCS Connect Response PDU: {:?}", connect_response); @@ -139,18 +143,29 @@ pub fn process_mcs( transport: &mut McsTransport, mut static_channels: StaticChannels, ) -> RdpResult { - let erect_domain_request = ironrdp::mcs::ErectDomainPdu::new(0, 0); + let erect_domain_request = ironrdp::mcs::ErectDomainPdu { + sub_height: 0, + sub_interval: 0, + }; debug!( "Send MCS Erect Domain Request PDU: {:?}", erect_domain_request ); + transport.encode( - ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), + McsTransport::prepare_data_to_encode( + ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), + None, + )?, &mut stream, )?; + debug!("Send MCS Attach User Request PDU"); - transport.encode(ironrdp::McsPdu::AttachUserRequest, &mut stream)?; + transport.encode( + McsTransport::prepare_data_to_encode(ironrdp::McsPdu::AttachUserRequest, None)?, + &mut stream, + )?; let mcs_pdu = transport.decode(&mut stream)?; let initiator_id = if let ironrdp::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { @@ -170,13 +185,19 @@ pub fn process_mcs( }; for (_, id) in static_channels.iter() { - let channel_join_request = ironrdp::mcs::ChannelJoinRequestPdu::new(initiator_id, *id); + let channel_join_request = ironrdp::mcs::ChannelJoinRequestPdu { + initiator_id, + channel_id: *id, + }; debug!( "Send MCS Channel Join Request PDU: {:?}", channel_join_request ); transport.encode( - ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), + McsTransport::prepare_data_to_encode( + ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), + None, + )?, &mut stream, )?; @@ -228,10 +249,10 @@ pub fn process_server_license_exchange( config: &Config, global_channel_id: u16, ) -> RdpResult<()> { - let (channel_ids, pdu) = transport.decode(&mut stream)?; + let channel_ids = transport.decode(&mut stream)?; check_global_id(channel_ids, global_channel_id)?; - let initial_license_message = InitialServerLicenseMessage::from_buffer(pdu.as_slice()) + let initial_license_message = InitialServerLicenseMessage::from_buffer(&mut stream) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; debug!("Received Initial License Message PDU"); @@ -296,10 +317,10 @@ pub fn process_server_license_exchange( })?; transport.encode(new_pdu_buffer, &mut stream)?; - let (channel_ids, pdu) = transport.decode(&mut stream)?; + let channel_ids = transport.decode(&mut stream)?; check_global_id(channel_ids, global_channel_id)?; - let challenge = ServerPlatformChallenge::from_buffer(pdu.as_slice()) + let challenge = ServerPlatformChallenge::from_buffer(&mut stream) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; debug!("Received Server Platform Challenge PDU"); @@ -340,10 +361,10 @@ pub fn process_server_license_exchange( })?; transport.encode(new_pdu_buffer, &mut stream)?; - let (channel_ids, pdu) = transport.decode(&mut stream)?; + let channel_ids = transport.decode(&mut stream)?; check_global_id(channel_ids, global_channel_id)?; - let upgrade_license = ServerUpgradeLicense::from_buffer(pdu.as_slice()) + let upgrade_license = ServerUpgradeLicense::from_buffer(&mut stream) .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; debug!("Received Server Upgrade License PDU"); @@ -419,21 +440,25 @@ pub fn process_finalization( let mut finalization_order = FinalizationOrder::Synchronize; while finalization_order != FinalizationOrder::Finished { let share_data_pdu = match finalization_order { - FinalizationOrder::Synchronize => { - ShareDataPdu::Synchronize(SynchronizePdu::new(initiator_id)) - } - FinalizationOrder::ControlCooperate => { - ShareDataPdu::Control(ControlPdu::new(ControlAction::Cooperate, 0, 0)) - } - FinalizationOrder::RequestControl => { - ShareDataPdu::Control(ControlPdu::new(ControlAction::RequestControl, 0, 0)) - } - FinalizationOrder::Font => ShareDataPdu::FontList(FontPdu::new( - 0, - 0, - SequenceFlags::FIRST | SequenceFlags::LAST, - 0x0032, - )), + FinalizationOrder::Synchronize => ShareDataPdu::Synchronize(SynchronizePdu { + target_user_id: initiator_id, + }), + FinalizationOrder::ControlCooperate => ShareDataPdu::Control(ControlPdu { + action: ControlAction::Cooperate, + grant_id: 0, + control_id: 0, + }), + FinalizationOrder::RequestControl => ShareDataPdu::Control(ControlPdu { + action: ControlAction::RequestControl, + grant_id: 0, + control_id: 0, + }), + FinalizationOrder::Font => ShareDataPdu::FontList(FontPdu { + number: 0, + total_number: 0, + flags: SequenceFlags::FIRST | SequenceFlags::LAST, + entry_size: 0x0032, + }), FinalizationOrder::Finished => unreachable!(), }; debug!("Send Finalization PDU: {:?}", share_data_pdu); diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 5148c37e..095f7b02 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -44,7 +44,9 @@ pub fn create_gcc_blocks( } pub fn create_client_info_pdu(config: &Config) -> RdpResult { - let security_header = BasicSecurityHeader::new(BasicSecurityHeaderFlags::INFO_PKT); + let security_header = BasicSecurityHeader { + flags: BasicSecurityHeaderFlags::INFO_PKT, + }; let client_info = ClientInfo { credentials: auth_identity_to_credentials(config.input.credentials.clone()), code_page: 0, // ignored if the keyboardLayout field of the Client Core Data is set to zero @@ -71,7 +73,10 @@ pub fn create_client_info_pdu(config: &Config) -> RdpResult { }, }; - Ok(ClientInfoPdu::new(security_header, client_info)) + Ok(ClientInfoPdu { + security_header, + client_info, + }) } pub fn create_client_confirm_active( @@ -99,7 +104,10 @@ pub fn create_client_confirm_active( Ok(ClientConfirmActive { originator_id: SERVER_CHANNEL_ID, - pdu: ironrdp::DemandActive::new(SOURCE_DESCRIPTOR.to_string(), server_capability_sets), + pdu: ironrdp::DemandActive { + source_descriptor: SOURCE_DESCRIPTOR.to_string(), + capability_sets: server_capability_sets, + }, }) } @@ -174,7 +182,10 @@ fn create_network_data(config: &Config) -> ClientNetworkData { .input .static_channels .iter() - .map(|name| Channel::new(name.to_string(), ChannelOptions::INITIALIZED)) + .map(|name| Channel { + name: name.to_string(), + options: ChannelOptions::INITIALIZED, + }) .collect(), } } diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index e1737ac8..af6dc982 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -11,7 +11,7 @@ pub use self::{ }, }; -use std::{io, mem}; +use std::io; use bytes::BytesMut; use ironrdp::PduParsing; @@ -49,17 +49,13 @@ impl Encoder for DataTransport { } impl Decoder for DataTransport { - type Item = BytesMut; + type Item = usize; type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; - let mut data = BytesMut::with_capacity(data_pdu.data_length); - data.resize(data_pdu.data_length, 0x00); - stream.read_exact(&mut data)?; - - Ok(data) + Ok(data_pdu.data_length) } } @@ -70,20 +66,31 @@ impl McsTransport { pub fn new(transport: DataTransport) -> Self { Self(transport) } + + pub fn prepare_data_to_encode( + mcs_pdu: ironrdp::McsPdu, + extra_data: Option>, + ) -> RdpResult { + let mut mcs_pdu_buff = BytesMut::with_capacity(mcs_pdu.buffer_length()); + mcs_pdu_buff.resize(mcs_pdu.buffer_length(), 0x00); + mcs_pdu + .to_buffer(mcs_pdu_buff.as_mut()) + .map_err(RdpError::McsError)?; + + if let Some(data) = extra_data { + mcs_pdu_buff.extend_from_slice(&data); + } + + Ok(mcs_pdu_buff) + } } impl Encoder for McsTransport { - type Item = ironrdp::McsPdu; + type Item = BytesMut; type Error = RdpError; - fn encode(&mut self, mcs_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - let mut mcs_pdu_buf = BytesMut::with_capacity(mcs_pdu.buffer_length() as usize); - mcs_pdu_buf.resize(mcs_pdu.buffer_length(), 0x00); - mcs_pdu - .to_buffer(mcs_pdu_buf.as_mut()) - .map_err(RdpError::McsError)?; - - self.0.encode(mcs_pdu_buf, &mut stream) + fn encode(&mut self, mcs_pdu_buff: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + self.0.encode(mcs_pdu_buff, &mut stream) } } @@ -92,9 +99,8 @@ impl Decoder for McsTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let data = self.0.decode(&mut stream)?; - - let mcs_pdu = ironrdp::McsPdu::from_buffer(data.as_ref()).map_err(RdpError::McsError)?; + self.0.decode(&mut stream)?; + let mcs_pdu = ironrdp::McsPdu::from_buffer(&mut stream).map_err(RdpError::McsError)?; Ok(mcs_pdu) } @@ -105,7 +111,6 @@ pub struct SendDataContextTransport { mcs_transport: McsTransport, state: SendDataContextTransportState, channel_ids: ChannelIdentificators, - send_data_context_pdu: Vec, } impl SendDataContextTransport { @@ -117,7 +122,6 @@ impl SendDataContextTransport { channel_id, }, state: SendDataContextTransportState::ToDecode, - send_data_context_pdu: Vec::new(), } } @@ -125,14 +129,8 @@ impl SendDataContextTransport { self.channel_ids = channel_ids; } - pub fn set_decoded_context( - &mut self, - channel_ids: ChannelIdentificators, - send_data_context_pdu: Vec, - ) { + pub fn set_decoded_context(&mut self, channel_ids: ChannelIdentificators) { self.set_channel_ids(channel_ids); - - self.send_data_context_pdu = send_data_context_pdu; self.state = SendDataContextTransportState::Decoded; } } @@ -146,7 +144,6 @@ impl Default for SendDataContextTransport { channel_id: 0, }, state: SendDataContextTransportState::ToDecode, - send_data_context_pdu: Vec::new(), } } } @@ -160,19 +157,24 @@ impl Encoder for SendDataContextTransport { send_data_context_pdu: Self::Item, mut stream: impl io::Write, ) -> RdpResult<()> { - let send_data_context = ironrdp::mcs::SendDataContext::new( - send_data_context_pdu, - self.channel_ids.initiator_id, - self.channel_ids.channel_id, - ); + let send_data_context = ironrdp::mcs::SendDataContext { + channel_id: self.channel_ids.channel_id, + initiator_id: self.channel_ids.initiator_id, + pdu_length: send_data_context_pdu.len(), + }; - let send_data_request = ironrdp::McsPdu::SendDataRequest(send_data_context); - self.mcs_transport.encode(send_data_request, &mut stream) + self.mcs_transport.encode( + McsTransport::prepare_data_to_encode( + ironrdp::McsPdu::SendDataRequest(send_data_context), + Some(send_data_context_pdu), + )?, + &mut stream, + ) } } impl Decoder for SendDataContextTransport { - type Item = (ChannelIdentificators, Vec); + type Item = ChannelIdentificators; type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { @@ -181,13 +183,12 @@ impl Decoder for SendDataContextTransport { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; match mcs_pdu { - ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(( - ChannelIdentificators { + ironrdp::McsPdu::SendDataIndication(send_data_context) => { + Ok(ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, - }, - send_data_context.pdu, - )), + }) + } ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { Err(RdpError::UnexpectedDisconnection(format!( "Server disconnection reason - {:?}", @@ -200,10 +201,7 @@ impl Decoder for SendDataContextTransport { ))), } } - SendDataContextTransportState::Decoded => Ok(( - self.channel_ids, - mem::replace(&mut self.send_data_context_pdu, Vec::new()), - )), + SendDataContextTransportState::Decoded => Ok(self.channel_ids), } } } diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs index 8def947b..5cbd6bf1 100644 --- a/ironrdp_client/src/transport/channels.rs +++ b/ironrdp_client/src/transport/channels.rs @@ -54,16 +54,15 @@ impl Encoder for StaticVirtualChannelTransport { } impl Decoder for StaticVirtualChannelTransport { - type Item = (u16, Vec); + type Item = (u16, usize); type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let (channel_ids, mut channel_data_buffer) = self.transport.decode(&mut stream)?; + let channel_ids = self.transport.decode(&mut stream)?; self.channel_ids = channel_ids; - let channel_header = vc::ChannelPduHeader::from_buffer(channel_data_buffer.as_slice())?; + let channel_header = vc::ChannelPduHeader::from_buffer(&mut stream)?; - channel_data_buffer.drain(..channel_header.buffer_length()); - Ok((channel_ids.channel_id, channel_data_buffer)) + Ok((channel_ids.channel_id, channel_header.total_length as usize)) } } @@ -79,17 +78,28 @@ impl DynamicVirtualChannelTransport { drdynvc_id, } } + + pub fn prepare_data_to_encode( + dvc_pdu: vc::dvc::ClientPdu, + extra_data: Option>, + ) -> RdpResult> { + let mut full_data_buff = Vec::with_capacity(dvc_pdu.buffer_length()); + dvc_pdu.to_buffer(&mut full_data_buff)?; + + if let Some(mut extra_data) = extra_data { + full_data_buff.append(&mut extra_data); + } + + Ok(full_data_buff) + } } impl Encoder for DynamicVirtualChannelTransport { - type Item = vc::dvc::ClientPdu; + type Item = Vec; type Error = RdpError; - fn encode(&mut self, dvc_clien_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - let mut dvc_clien_pdu_buf = Vec::with_capacity(dvc_clien_pdu.buffer_length()); - dvc_clien_pdu.to_buffer(&mut dvc_clien_pdu_buf)?; - - self.transport.encode(dvc_clien_pdu_buf, &mut stream) + fn encode(&mut self, client_pdu_buff: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + self.transport.encode(client_pdu_buff, &mut stream) } } @@ -98,7 +108,7 @@ impl Decoder for DynamicVirtualChannelTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let (channel_id, channel_data_buffer) = self.transport.decode(&mut stream)?; + let (channel_id, dvc_data_size) = self.transport.decode(&mut stream)?; if self.drdynvc_id != channel_id { return Err(RdpError::InvalidChannelIdError(format!( "Expected drdynvc {} ID, got: {} ID", @@ -106,7 +116,7 @@ impl Decoder for DynamicVirtualChannelTransport { ))); } - let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(channel_data_buffer.as_slice())?; + let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(&mut stream, dvc_data_size)?; Ok(dvc_server_pdu) } diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index 360b767a..bfec02f5 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -97,8 +97,11 @@ impl Encoder for ShareControlHeaderTransport { share_control_pdu: Self::Item, mut stream: impl io::Write, ) -> RdpResult<()> { - let share_control_header = - ironrdp::ShareControlHeader::new(share_control_pdu, self.pdu_source, self.share_id); + let share_control_header = ironrdp::ShareControlHeader { + share_control_pdu, + pdu_source: self.pdu_source, + share_id: self.share_id, + }; let mut pdu = Vec::with_capacity(share_control_header.buffer_length()); share_control_header @@ -114,8 +117,7 @@ impl Decoder for ShareControlHeaderTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let (channel_ids, send_data_context) = - self.send_data_context_transport.decode(&mut stream)?; + let channel_ids = self.send_data_context_transport.decode(&mut stream)?; if channel_ids.channel_id != self.global_channel_id { return Err(RdpError::InvalidResponse(format!( "Unexpected Send Data Context channel ID ({})", @@ -123,9 +125,8 @@ impl Decoder for ShareControlHeaderTransport { ))); } - let share_control_header = - ironrdp::ShareControlHeader::from_buffer(send_data_context.as_slice()) - .map_err(RdpError::ShareControlHeaderError)?; + let share_control_header = ironrdp::ShareControlHeader::from_buffer(&mut stream) + .map_err(RdpError::ShareControlHeaderError)?; self.share_id = share_control_header.share_id; if share_control_header.pdu_source != SERVER_CHANNEL_ID { @@ -152,12 +153,12 @@ impl Encoder for ShareDataHeaderTransport { type Error = RdpError; fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - let share_data_header = ironrdp::ShareDataHeader::new( + let share_data_header = ironrdp::ShareDataHeader { share_data_pdu, - ironrdp::rdp::StreamPriority::Medium, - ironrdp::rdp::CompressionFlags::empty(), - ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() - ); + stream_priority: ironrdp::rdp::StreamPriority::Medium, + compression_flags: ironrdp::rdp::CompressionFlags::empty(), + compression_type: ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() + }; self.0.encode( ironrdp::ShareControlPdu::Data(share_data_header), From b85838f187c4d02b3eee07a76db5ad7c6fa49131 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Tue, 14 Jan 2020 14:33:44 +0200 Subject: [PATCH 0016/1273] ironrdp_client: fix bug when DVC Data First is complete Data --- ironrdp_client/src/channels.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs index e6274706..ed90a61e 100644 --- a/ironrdp_client/src/channels.rs +++ b/ironrdp_client/src/channels.rs @@ -299,12 +299,18 @@ impl CompleteData { fn process_data_first_pdu(&mut self, total_data_size: usize, data: Vec) -> Option> { if self.total_size != 0 || !self.data.is_empty() { error!("Incomplete DVC message, it will be skipped"); + self.data.clear(); } - self.total_size = total_data_size; - self.data = data; - None + if total_data_size == data.len() { + Some(data) + } else { + self.total_size = total_data_size; + self.data = data; + + None + } } fn process_data_pdu(&mut self, mut data: Vec) -> Option> { From 4665307f4c3717d23ccebde9c248cfc23c9260e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 14 Jan 2020 13:37:52 -0500 Subject: [PATCH 0017/1273] ironrdp: bump version to 0.4.0 --- ironrdp/Cargo.toml | 2 +- ironrdp_client/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 8cdf1400..04e73f9a 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp" -version = "0.3.0" +version = "0.4.0" edition = "2018" readme = "../README.md" license = "MIT/Apache-2.0" diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index d04c4df0..1eba2d14 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp_client" -version = "0.3.0" +version = "0.4.0" edition = "2018" readme = "README.md" license = "MIT/Apache-2.0" From 62700600dba068677236a712fde092d741e5f97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Duquette?= Date: Tue, 14 Jan 2020 15:15:11 -0500 Subject: [PATCH 0018/1273] Update the fuzzer --- ironrdp/fuzz/Cargo.toml | 8 ------- ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs | 30 +++++++++++++++------------ 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/ironrdp/fuzz/Cargo.toml b/ironrdp/fuzz/Cargo.toml index c8e87a4a..03d6c5a1 100644 --- a/ironrdp/fuzz/Cargo.toml +++ b/ironrdp/fuzz/Cargo.toml @@ -23,11 +23,3 @@ members = ["."] [[bin]] name = "fuzz_pdu" path = "fuzz_targets/fuzz_pdu.rs" - -[[bin]] -name = "fuzz_gcc" -path = "fuzz_targets/fuzz_gcc.rs" - -[[bin]] -name = "fuzz_capability_sets" -path = "fuzz_targets/fuzz_capability_sets.rs" diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs index 498ba309..e98747ba 100644 --- a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs @@ -3,27 +3,31 @@ extern crate libfuzzer_sys; extern crate ironrdp; -use ironrdp::gcc::*; use ironrdp::*; -use ironrdp::rdp::server_license::*; +use ironrdp::rdp::*; fuzz_target!(|data: &[u8]| { let _ = Request::from_buffer(data); let _ = Response::from_buffer(data); let _ = McsPdu::from_buffer(data); - let _ = ClientGccBlocks::from_buffer(data); - let _ = ServerGccBlocks::from_buffer(data); - let _ = ClientClusterData::from_buffer(data); - let _ = ConferenceCreateRequest::from_buffer(data); - let _ = ConferenceCreateResponse::from_buffer(data); let _ = ConnectInitial::from_buffer(data); let _ = ConnectResponse::from_buffer(data); let _ = ClientInfoPdu::from_buffer(data); - let _ = ClientNewLicenseRequest::from_buffer(data); - let _ = ClientPlatformChallengeResponse::from_buffer(data); - let _ = InitialServerLicenseMessage::from_buffer(data); - let _ = ServerLicenseRequest::from_buffer(data); - let _ = InitialServerLicenseMessage::from_buffer(data); - let _ = ServerPlatformChallenge::from_buffer(data); let _ = CapabilitySet::from_buffer(data); + let _ = ShareControlHeader::from_buffer(data); + + let _ = gcc::ClientGccBlocks::from_buffer(data); + let _ = gcc::ServerGccBlocks::from_buffer(data); + let _ = gcc::ClientClusterData::from_buffer(data); + let _ = gcc::ConferenceCreateRequest::from_buffer(data); + let _ = gcc::ConferenceCreateResponse::from_buffer(data); + + let _ = server_license::ClientNewLicenseRequest::from_buffer(data); + let _ = server_license::ClientPlatformChallengeResponse::from_buffer(data); + let _ = server_license::InitialServerLicenseMessage::from_buffer(data); + let _ = server_license::ServerLicenseRequest::from_buffer(data); + let _ = server_license::InitialServerLicenseMessage::from_buffer(data); + let _ = server_license::ServerPlatformChallenge::from_buffer(data); + + let _ = vc::ChannelPduHeader::from_buffer(data); }); From 7f9775480d1742b457b14f9c2abdabff938e1806 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 15 Jan 2020 09:47:12 +0200 Subject: [PATCH 0019/1273] ironrdp: update bitvec crate to 0.17.1, optimized ZGFX decompression up to 28% --- ironrdp/Cargo.toml | 2 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 134 +++++++++-------------- ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs | 12 -- 3 files changed, 52 insertions(+), 96 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 04e73f9a..5c1ac7e7 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -26,5 +26,5 @@ md-5 = "0.8.0" num-bigint = "0.2.0" der-parser = "3.0.0" bit_field = "0.10" -bitvec = { git = "https://github.com/myrrlyn/bitvec.git", rev = "3e79e6d53b2f7d01f5b139c67310e7918332905c" } +bitvec = "0.17.1" hex-literal = "0.2" \ No newline at end of file diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index 9bfc1d67..c5c893a7 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -8,8 +8,8 @@ use std::{ ops, }; -use bitvec::prelude::{BitSlice, BitVec, Msb0 as BigEndian}; -use byteorder::{ReadBytesExt, WriteBytesExt}; +use bitvec::prelude::{bits, BitField, BitSlice, Msb0}; +use byteorder::WriteBytesExt; use failure::Fail; use lazy_static::lazy_static; @@ -106,12 +106,7 @@ impl Decompressor { TokenType::NullLiteral => { // The prefix value is encoded with a "0" prefix, // then read 8 bits containing the byte to output. - let value = bits.split_to(8); - let value = *value - .to_vec() - .into_vec() - .first() - .expect("8 bits must equal to vec of 1 byte"); + let value = bits.split_to(8).load_be::(); self.history.write_u8(value)?; output.push(value); @@ -151,18 +146,18 @@ impl Default for Decompressor { } struct Bits<'a> { - bits_slice: &'a BitSlice, + bits_slice: &'a BitSlice, remaining_bits_of_last_byte: usize, } impl<'a> Bits<'a> { - pub fn new(bits_slice: &'a BitSlice) -> Self { + pub fn new(bits_slice: &'a BitSlice) -> Self { Self { bits_slice, remaining_bits_of_last_byte: 0, } } - pub fn split_to(&mut self, at: usize) -> &'a BitSlice { + pub fn split_to(&mut self, at: usize) -> &'a BitSlice { let (value, new_bits) = self.bits_slice.split_at(at); self.bits_slice = new_bits; self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; @@ -175,7 +170,7 @@ impl<'a> Bits<'a> { } impl<'a> ops::Deref for Bits<'a> { - type Target = BitSlice; + type Target = BitSlice; fn deref(&self) -> &Self::Target { self.bits_slice @@ -192,9 +187,7 @@ fn handle_match( // Each token has been assigned a different base distance // and number of additional value bits to be added to compute the full distance. - let distance_value = bits.split_to(distance_value_size); - let distance = - (distance_base + bytes_to_u32_be(complete_to_u32(distance_value).into_vec())) as usize; + let distance = (distance_base + bits.split_to(distance_value_size).load_be::()) as usize; if distance == 0 { read_unencoded_bytes(bits, history, &mut output) @@ -211,8 +204,7 @@ fn read_unencoded_bytes( // A match distance of zero is a special case, // which indicates that an unencoded run of bytes follows. // The count of bytes is encoded as a 15-bit value - let length_value = bits.split_to(15); - let length = bytes_to_u32_be(complete_to_u32(length_value).into_vec()) as usize; + let length = bits.split_to(15).load_be::() as usize; if bits.remaining_bits_of_last_byte() > 0 { let pad_to_byte_boundary = 8 - bits.remaining_bits_of_last_byte(); @@ -246,8 +238,7 @@ fn read_encoded_bytes( 3 } else { - let length_value = bits.split_to(length_token_size + 1); - let length = bytes_to_u32_be(complete_to_u32(length_value).into_vec()) as usize; + let length = bits.split_to(length_token_size + 1).load_be::() as usize; let base = 2u32.pow(length_token_size as u32 + 1) as usize; @@ -263,25 +254,8 @@ fn read_encoded_bytes( Ok(length) } -fn complete_to_u32(bits: &BitSlice) -> BitVec { - let mut result = BitVec::::from_vec(vec![0; 4]); - let result_slice = &mut result[4 * 8 - bits.len()..]; - result_slice.clone_from_slice(bits); - - result -} - -fn bytes_to_u32_be(mut bytes: Vec) -> u32 { - bytes.resize(4, 0); - - bytes - .as_slice() - .read_u32::() - .expect("previously resized to 4 bytes must not fail") -} - struct Token { - pub prefix: BitVec, + pub prefix: &'static BitSlice, pub ty: TokenType, } @@ -299,252 +273,252 @@ enum TokenType { lazy_static! { static ref TOKEN_TABLE: [Token; 40] = [ Token { - prefix: slice_to_bitvec(&[0]), + prefix: bits![Msb0, u8; 0], ty: TokenType::NullLiteral, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x00 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x01 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 0, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x02 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 0, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x03 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x0ff }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x04 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 0, 1, 1, 1, 1]), + prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x05 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x06 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x07 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 1, 0], ty: TokenType::Literal { literal_value: 0x08 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 0, 1, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 1, 1], ty: TokenType::Literal { literal_value: 0x09 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x0a }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x0b }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x3a }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 0, 1, 1, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x3b }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x3c }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x3d }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 1, 0], ty: TokenType::Literal { literal_value: 0x3e }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 0, 1, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 1, 1], ty: TokenType::Literal { literal_value: 0x3f }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x40 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x80 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x0c }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x38 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 1, 0]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x39 }, }, Token { - prefix: slice_to_bitvec(&[1, 1, 1, 1, 1, 1, 1, 1]), + prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x66 }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 0, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 0, 0, 1], ty: TokenType::Match { distance_value_size: 5, distance_base: 0 }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 0, 1, 0]), + prefix: bits![Msb0, u8; 1, 0, 0, 1, 0], ty: TokenType::Match { distance_value_size: 7, distance_base: 32 }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 0, 1, 1]), + prefix: bits![Msb0, u8; 1, 0, 0, 1, 1], ty: TokenType::Match { distance_value_size: 9, distance_base: 160 }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 0, 0], ty: TokenType::Match { distance_value_size: 10, distance_base: 672, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 1, 0, 1], ty: TokenType::Match { distance_value_size: 12, distance_base: 1_696, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 14, distance_base: 5_792, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 15, distance_base: 22_176, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 18, distance_base: 54_944, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 20, distance_base: 317_088, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 20, distance_base: 1_365_664, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 21, distance_base: 2_414_240, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 0, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 22, distance_base: 4_511_392, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 0, 1]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 23, distance_base: 8_705_696, }, }, Token { - prefix: slice_to_bitvec(&[1, 0, 1, 1, 1, 1, 1, 1, 0]), + prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 1, 0], ty: TokenType::Match { distance_value_size: 24, distance_base: 17_094_304, @@ -574,9 +548,3 @@ pub enum ZgfxError { } impl_from_error!(io::Error, ZgfxError, ZgfxError::IOError); - -fn slice_to_bitvec(s: &[u8]) -> BitVec { - use std::iter::FromIterator; - - BitVec::from_iter(s.iter().map(|v| v == &1)) -} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs index 804ee605..f34873ad 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs @@ -228,15 +228,3 @@ fn zgfx_decopresses_unencoded_block_without_padding() { .unwrap(); assert_eq!(decompressed, expected); } - -#[test] -fn complete_to_u32_fills_zeros_for_less_then_one_byte_bits_buffer() { - let bits: BitVec = slice_to_bitvec(&[0, 0, 1, 0, 1, 1, 0]); - let expected: BitVec = slice_to_bitvec(&[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 1, 0, - ]); - let bits = complete_to_u32(bits.as_bitslice()); - - assert_eq!(bits, expected); -} From 48e67c8e0406a4d65c94d59236b494b406327195 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 16 Jan 2020 14:44:49 +0200 Subject: [PATCH 0020/1273] ironrdp: add allocations bounds according to the fuzzers results --- ironrdp/src/gcc/security_data.rs | 14 +++++++++++--- ironrdp/src/gcc/security_data/test.rs | 2 +- ironrdp/src/rdp/finalization_messages.rs | 7 +++++++ ironrdp/src/rdp/server_license.rs | 14 ++++++++++++-- .../rdp/server_license/server_license_request.rs | 14 ++++++++++---- 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/ironrdp/src/gcc/security_data.rs b/ironrdp/src/gcc/security_data.rs index 7b25eb82..53a414ff 100644 --- a/ironrdp/src/gcc/security_data.rs +++ b/ironrdp/src/gcc/security_data.rs @@ -95,11 +95,17 @@ impl PduParsing for ServerSecurityData { } else { let server_random_len = buffer.read_u32::()?; if server_random_len != SERVER_RANDOM_LEN as u32 { - return Err(SecurityDataError::InvalidServerRandomLen); + return Err(SecurityDataError::InvalidServerRandomLen(server_random_len)); } let server_cert_len = buffer.read_u32::()?; + if server_cert_len > 1024 { + return Err(SecurityDataError::InvalidServerCertificateLen( + server_cert_len, + )); + } + let mut server_random = [0; SERVER_RANDOM_LEN]; buffer.read_exact(&mut server_random)?; @@ -186,10 +192,12 @@ pub enum SecurityDataError { InvalidEncryptionMethod, #[fail(display = "Invalid encryption level field")] InvalidEncryptionLevel, - #[fail(display = "Invalid server random length field")] - InvalidServerRandomLen, + #[fail(display = "Invalid server random length field: {}", _0)] + InvalidServerRandomLen(u32), #[fail(display = "Invalid input: {}", _0)] InvalidInput(String), + #[fail(display = "Invalid server certificate length: {}", _0)] + InvalidServerCertificateLen(u32), } impl_from_error!(io::Error, SecurityDataError, SecurityDataError::IOError); diff --git a/ironrdp/src/gcc/security_data/test.rs b/ironrdp/src/gcc/security_data/test.rs index 67949f3a..93a93efb 100644 --- a/ironrdp/src/gcc/security_data/test.rs +++ b/ironrdp/src/gcc/security_data/test.rs @@ -151,7 +151,7 @@ fn from_buffer_server_security_data_fails_with_invalid_server_random_length() { let buffer = SERVER_SECURITY_DATA_WITH_INVALID_SERVER_RANDOM_BUFFER.clone(); match ServerSecurityData::from_buffer(buffer.as_slice()) { - Err(SecurityDataError::InvalidServerRandomLen) => (), + Err(SecurityDataError::InvalidServerRandomLen(_)) => (), res => panic!( "Expected the invalid server random length error, got: {:?}", res diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp/src/rdp/finalization_messages.rs index dd4a6769..658fad53 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp/src/rdp/finalization_messages.rs @@ -130,6 +130,11 @@ impl PduParsing for MonitorLayoutPdu { fn from_buffer(mut stream: impl io::Read) -> Result { let monitor_count = stream.read_u32::()?; + if monitor_count > 64 { + return Err(FinalizationMessagesError::InvalidMonitorCount( + monitor_count, + )); + } let mut monitors = Vec::with_capacity(monitor_count as usize); for _ in 0..monitor_count { @@ -186,6 +191,8 @@ pub enum FinalizationMessagesError { InvalidControlId, #[fail(display = "Invalid list flags field in Font List PDU")] InvalidListFlags, + #[fail(display = "Invalid monitor count field: {}", _0)] + InvalidMonitorCount(u32), } impl_from_error!( diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 655b6444..c1d496ce 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -235,8 +235,18 @@ pub enum ServerLicenseError { UnexpectedValidClientError(LicensingErrorMessage), #[fail(display = "Invalid Key Exchange List field")] InvalidKeyExchangeAlgorithm, - #[fail(display = "Received invalid UTF-16 string of Product Information")] - InvalidProductInfoStringField, + #[fail( + display = "Received invalid company name length (Product Information): {}", + _0 + )] + InvalidCompanyNameLength(u32), + #[fail( + display = "Received invalid product ID length (Product Information): {}", + _0 + )] + InvalidProductIdLength(u32), + #[fail(display = "Received invalid scope count field: {}", _0)] + InvalidScopeCount(u32), } impl_from_error!(io::Error, ServerLicenseError, ServerLicenseError::IOError); diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index 37f85848..2a059dd0 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -176,6 +176,10 @@ impl PduParsing for ServerLicenseRequest { }; let scope_count = stream.read_u32::()?; + if scope_count > 256 { + return Err(ServerLicenseError::InvalidScopeCount(scope_count)); + } + let mut scope_list = Vec::with_capacity(scope_count as usize); for _ in 0..scope_count { @@ -362,8 +366,10 @@ impl PduParsing for ProductInfo { let version = stream.read_u32::()?; let company_name_len = stream.read_u32::()?; - if company_name_len < 2 { - return Err(ServerLicenseError::InvalidProductInfoStringField); + if company_name_len < 2 || company_name_len > 1024 { + return Err(ServerLicenseError::InvalidCompanyNameLength( + company_name_len, + )); } let mut company_name = vec![0u8; company_name_len as usize]; @@ -373,8 +379,8 @@ impl PduParsing for ProductInfo { let company_name = utils::bytes_to_utf16_string(&company_name.as_slice()); let product_id_len = stream.read_u32::()?; - if product_id_len < 2 { - return Err(ServerLicenseError::InvalidProductInfoStringField); + if product_id_len < 2 || product_id_len > 1024 { + return Err(ServerLicenseError::InvalidProductIdLength(product_id_len)); } let mut product_id = vec![0u8; product_id_len as usize]; From 1a3d907ac94826092d122b998b5320c6839f5fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Duquette?= Date: Thu, 16 Jan 2020 16:01:23 -0500 Subject: [PATCH 0021/1273] Add size limits in LogonInfoVersion2 --- ironrdp/src/rdp/session_info/logon_info.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ironrdp/src/rdp/session_info/logon_info.rs b/ironrdp/src/rdp/session_info/logon_info.rs index daa3193a..42a07858 100644 --- a/ironrdp/src/rdp/session_info/logon_info.rs +++ b/ironrdp/src/rdp/session_info/logon_info.rs @@ -16,6 +16,8 @@ const LOGON_INFO_V2_SIZE: usize = 18; const LOGON_INFO_V2_PADDING_SIZE: usize = 558; const LOGON_INFO_V2_PADDING_BUFFER: [u8; LOGON_INFO_V2_PADDING_SIZE] = [0; LOGON_INFO_V2_PADDING_SIZE]; +const DOMAIN_NAME_SIZE_V2: usize = 52; +const USER_NAME_SIZE_V2: usize = 512; #[derive(Debug, Clone, PartialEq)] pub struct LogonInfoVersion1 { @@ -108,7 +110,14 @@ impl PduParsing for LogonInfoVersion2 { let session_id = stream.read_u32::()?; let domain_name_size = stream.read_u32::()?; + if domain_name_size > DOMAIN_NAME_SIZE_V2 as u32 { + return Err(SessionError::InvalidDomainNameSize); + } + let user_name_size = stream.read_u32::()?; + if user_name_size > USER_NAME_SIZE_V2 as u32 { + return Err(SessionError::InvalidUserNameSize); + } let mut padding_buffer = [0; LOGON_INFO_V2_PADDING_SIZE]; stream.read_exact(&mut padding_buffer)?; From 26896cd48150d74b24609779fc7dab8bea762e64 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 17 Jan 2020 11:53:16 +0200 Subject: [PATCH 0022/1273] fixup! ironrdp: add allocations bounds according to the fuzzers results --- ironrdp/src/gcc/security_data.rs | 3 ++- ironrdp/src/rdp/finalization_messages.rs | 3 ++- ironrdp/src/rdp/server_license/server_license_request.rs | 9 ++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ironrdp/src/gcc/security_data.rs b/ironrdp/src/gcc/security_data.rs index 53a414ff..96f8e59f 100644 --- a/ironrdp/src/gcc/security_data.rs +++ b/ironrdp/src/gcc/security_data.rs @@ -19,6 +19,7 @@ const SERVER_ENCRYPTION_LEVEL_SIZE: usize = 4; const SERVER_RANDOM_LEN_SIZE: usize = 4; const SERVER_CERT_LEN_SIZE: usize = 4; const SERVER_RANDOM_LEN: usize = 0x20; +const MAX_SERVER_CERT_LEN: u32 = 1024; #[derive(Debug, Clone, PartialEq)] pub struct ClientSecurityData { @@ -100,7 +101,7 @@ impl PduParsing for ServerSecurityData { let server_cert_len = buffer.read_u32::()?; - if server_cert_len > 1024 { + if server_cert_len > MAX_SERVER_CERT_LEN { return Err(SecurityDataError::InvalidServerCertificateLen( server_cert_len, )); diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp/src/rdp/finalization_messages.rs index 658fad53..4af0e4ec 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp/src/rdp/finalization_messages.rs @@ -12,6 +12,7 @@ const SYNCHRONIZE_PDU_SIZE: usize = 2 + 2; const CONTROL_PDU_SIZE: usize = 2 + 2 + 4; const FONT_PDU_SIZE: usize = 2 * 4; const SYNCHRONIZE_MESSAGE_TYPE: u16 = 1; +const MAX_MONITOR_COUNT: u32 = 64; #[derive(Debug, Clone, PartialEq)] pub struct SynchronizePdu { @@ -130,7 +131,7 @@ impl PduParsing for MonitorLayoutPdu { fn from_buffer(mut stream: impl io::Read) -> Result { let monitor_count = stream.read_u32::()?; - if monitor_count > 64 { + if monitor_count > MAX_MONITOR_COUNT { return Err(FinalizationMessagesError::InvalidMonitorCount( monitor_count, )); diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index 2a059dd0..2232022e 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -24,6 +24,9 @@ const SCOPE_ARRAY_SIZE_FIELD_SIZE: usize = 4; const PRODUCT_INFO_STATIC_FIELDS_SIZE: usize = 12; const CERT_CHAIN_VERSION_MASK: u32 = 0x7FFF_FFFF; const CERT_CHAIN_ISSUED_MASK: u32 = 0x8000_0000; +const MAX_SCOPE_COUNT: u32 = 256; +const MAX_COMPANY_NAME_LEN: u32 = 1024; +const MAX_PRODUCT_ID_LEN: u32 = 1024; const RSA_EXCHANGE_ALGORITHM: u32 = 1; @@ -176,7 +179,7 @@ impl PduParsing for ServerLicenseRequest { }; let scope_count = stream.read_u32::()?; - if scope_count > 256 { + if scope_count > MAX_SCOPE_COUNT { return Err(ServerLicenseError::InvalidScopeCount(scope_count)); } @@ -366,7 +369,7 @@ impl PduParsing for ProductInfo { let version = stream.read_u32::()?; let company_name_len = stream.read_u32::()?; - if company_name_len < 2 || company_name_len > 1024 { + if company_name_len < 2 || company_name_len > MAX_COMPANY_NAME_LEN { return Err(ServerLicenseError::InvalidCompanyNameLength( company_name_len, )); @@ -379,7 +382,7 @@ impl PduParsing for ProductInfo { let company_name = utils::bytes_to_utf16_string(&company_name.as_slice()); let product_id_len = stream.read_u32::()?; - if product_id_len < 2 || product_id_len > 1024 { + if product_id_len < 2 || product_id_len > MAX_PRODUCT_ID_LEN { return Err(ServerLicenseError::InvalidProductIdLength(product_id_len)); } From 06f35ea9579d090f570986eed87acad75bd76a8d Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 17 Jan 2020 11:56:13 +0200 Subject: [PATCH 0023/1273] ironrdp: add size limits in X509CertificateChain --- ironrdp/src/rdp/server_license.rs | 2 ++ .../src/rdp/server_license/server_license_request/cert.rs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index c1d496ce..8ad86450 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -247,6 +247,8 @@ pub enum ServerLicenseError { InvalidProductIdLength(u32), #[fail(display = "Received invalid scope count field: {}", _0)] InvalidScopeCount(u32), + #[fail(display = "Received invalid sertificate length: {}", _0)] + InvalidCertificateLength(u32), } impl_from_error!(io::Error, ServerLicenseError, ServerLicenseError::IOError); diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp/src/rdp/server_license/server_license_request/cert.rs index 70a7a38e..9eefb005 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/cert.rs @@ -16,6 +16,7 @@ pub const RSA_KEY_SIZE_WITHOUT_MODULUS: usize = 20; const MIN_CERTIFICATE_AMOUNT: u32 = 2; const MAX_CERTIFICATE_AMOUNT: u32 = 200; +const MAX_CERTIFICATE_LEN: u32 = 1024; #[derive(Debug, PartialEq)] pub enum CertificateType { @@ -40,8 +41,15 @@ impl PduParsing for X509CertificateChain { let certificate_array: Vec<_> = (0..certificate_count) .map(|_| { let certificate_len = stream.read_u32::()?; + if certificate_len > MAX_CERTIFICATE_LEN { + return Err(ServerLicenseError::InvalidCertificateLength( + certificate_len, + )); + } + let mut certificate = vec![0u8; certificate_len as usize]; stream.read_exact(&mut certificate)?; + Ok(certificate) }) .collect::>()?; From 57cd268d8de5ed4f2d4db7e52759cb4291d9d568 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 22 Jan 2020 13:49:25 +0200 Subject: [PATCH 0024/1273] ironrdp: Increase the maximum certificate length --- ironrdp/src/rdp/server_license/server_license_request/cert.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp/src/rdp/server_license/server_license_request/cert.rs index 9eefb005..4b2089e4 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/cert.rs @@ -16,7 +16,7 @@ pub const RSA_KEY_SIZE_WITHOUT_MODULUS: usize = 20; const MIN_CERTIFICATE_AMOUNT: u32 = 2; const MAX_CERTIFICATE_AMOUNT: u32 = 200; -const MAX_CERTIFICATE_LEN: u32 = 1024; +const MAX_CERTIFICATE_LEN: u32 = 4096; #[derive(Debug, PartialEq)] pub enum CertificateType { From 3401593bc71b422f23f060509f95c7ce92735d1f Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 22 Jan 2020 17:02:45 +0200 Subject: [PATCH 0025/1273] ironrdp: implement parsing of GFX PDUs --- ironrdp/src/codecs.rs | 1 + ironrdp/src/codecs/rfx.rs | 237 +++++++++ ironrdp/src/codecs/rfx/data_messages.rs | 606 ++++++++++++++++++++++ ironrdp/src/codecs/rfx/header_messages.rs | 209 ++++++++ ironrdp/src/codecs/rfx/tests.rs | 523 +++++++++++++++++++ ironrdp/src/lib.rs | 9 + ironrdp/src/utils.rs | 21 + 7 files changed, 1606 insertions(+) create mode 100644 ironrdp/src/codecs.rs create mode 100644 ironrdp/src/codecs/rfx.rs create mode 100644 ironrdp/src/codecs/rfx/data_messages.rs create mode 100644 ironrdp/src/codecs/rfx/header_messages.rs create mode 100644 ironrdp/src/codecs/rfx/tests.rs diff --git a/ironrdp/src/codecs.rs b/ironrdp/src/codecs.rs new file mode 100644 index 00000000..6fb4906b --- /dev/null +++ b/ironrdp/src/codecs.rs @@ -0,0 +1 @@ +pub mod rfx; diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs new file mode 100644 index 00000000..244ff7a9 --- /dev/null +++ b/ironrdp/src/codecs/rfx.rs @@ -0,0 +1,237 @@ +mod data_messages; +mod header_messages; +#[cfg(test)] +mod tests; + +pub use self::{ + data_messages::{ + ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, + Tile, TileSetPdu, + }, + header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}, +}; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::impl_from_error; + +const BLOCK_HEADER_SIZE: usize = 6; +const CODEC_CHANNEL_HEADER_SIZE: usize = 8; + +const CODEC_ID: u8 = 1; +const CHANNEL_ID_FOR_CONTEXT: u8 = 0xFF; +const CHANNEL_ID_FOR_OTHER_VALUES: u8 = 0x00; + +#[derive(Debug, Clone, PartialEq)] +struct BlockHeader { + pub ty: BlockType, + pub data_length: usize, +} + +impl BlockHeader { + fn from_buffer_with_type( + mut buffer: &[u8], + expected_type: BlockType, + ) -> Result { + let ty = BlockType::from_u16(buffer.read_u16::()?) + .ok_or(RfxError::InvalidBlockType)?; + if ty != expected_type { + return Err(RfxError::UnexpectedBlockType { + expected: expected_type, + actual: ty, + }); + } + + let block_length = buffer.read_u32::()? as usize; + + let data_length = block_length + .checked_sub(BLOCK_HEADER_SIZE) + .ok_or(RfxError::InvalidBlockLength(block_length))?; + + if buffer.len() < data_length { + return Err(RfxError::InvalidDataLength { + expected: data_length, + actual: buffer.len(), + }); + } + + Ok(Self { ty, data_length }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + buffer.write_u16::(self.ty.to_u16().unwrap())?; + buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +struct CodecChannelHeader { + pub ty: CodecChannelType, + pub data_length: usize, +} + +impl CodecChannelHeader { + fn from_buffer_with_type( + mut buffer: &[u8], + expected_type: CodecChannelType, + ) -> Result { + let ty = CodecChannelType::from_u16(buffer.read_u16::()?) + .ok_or(RfxError::InvalidCodecChannelType)?; + if ty != expected_type { + return Err(RfxError::UnexpectedCodecChannelType { + expected: expected_type, + actual: ty, + }); + } + + let block_length = buffer.read_u32::()? as usize; + + let data_length = block_length + .checked_sub(CODEC_CHANNEL_HEADER_SIZE) + .ok_or(RfxError::InvalidBlockLength(block_length))?; + + let codec_id = buffer.read_u8()?; + if codec_id != CODEC_ID { + return Err(RfxError::InvalidCodecId(codec_id)); + } + + let channel_id = buffer.read_u8()?; + let expected_channel_id = match ty { + CodecChannelType::Context => CHANNEL_ID_FOR_CONTEXT, + _ => CHANNEL_ID_FOR_OTHER_VALUES, + }; + if channel_id != expected_channel_id { + return Err(RfxError::InvalidChannelId(channel_id)); + } + + if buffer.len() < data_length { + return Err(RfxError::InvalidDataLength { + expected: data_length, + actual: buffer.len(), + }); + } + + Ok(Self { ty, data_length }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + buffer.write_u16::(self.ty.to_u16().unwrap())?; + buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; + buffer.write_u8(CODEC_ID)?; + + let channel_id = match self.ty { + CodecChannelType::Context => CHANNEL_ID_FOR_CONTEXT, + _ => CHANNEL_ID_FOR_OTHER_VALUES, + }; + buffer.write_u8(channel_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +pub enum BlockType { + Tile = 0xCAC3, + Capabilities = 0xCBC0, + CapabilitySet = 0xCBC1, + Sync = 0xCCC0, + CodecVersions = 0xCCC1, + Channels = 0xCCC2, +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +pub enum CodecChannelType { + Context = 0xCCC3, + FrameBegin = 0xCCC4, + FrameEnd = 0xCCC5, + Region = 0xCCC6, + Extension = 0xCCC7, +} + +#[derive(Debug, Fail)] +pub enum RfxError { + #[fail(display = "IO error: {}", _0)] + IoError(#[fail(cause)] io::Error), + #[fail(display = "Got invalid block type")] + InvalidBlockType, + #[fail( + display = "Got unexpected Block type: expected ({:?}) != actual({:?})", + expected, actual + )] + UnexpectedBlockType { + expected: BlockType, + actual: BlockType, + }, + #[fail(display = "Got invalid block length: {}", _0)] + InvalidBlockLength(usize), + #[fail(display = "Got invalid Sync magic number: {}", _0)] + InvalidMagicNumber(u32), + #[fail(display = "Got invalid Sync version: {}", _0)] + InvalidSyncVersion(u16), + #[fail(display = "Got invalid codecs number: {}", _0)] + InvalidCodecsNumber(u8), + #[fail(display = "Got invalid codec ID: {}", _0)] + InvalidCodecId(u8), + #[fail(display = "Got invalid codec version: {}", _0)] + InvalidCodecVersion(u16), + #[fail(display = "Got invalid channel ID: {}", _0)] + InvalidChannelId(u8), + #[fail(display = "Got invalid context ID: {}", _0)] + InvalidContextId(u8), + #[fail(display = "Got invalid context tile size: {}", _0)] + InvalidTileSize(u16), + #[fail(display = "Got invalid conversion transform: {}", _0)] + InvalidColorConversionTransform(u16), + #[fail(display = "Got invalid DWT: {}", _0)] + InvalidDwt(u16), + #[fail(display = "Got invalid entropy algorithm: {}", _0)] + InvalidEntropyAlgorithm(u16), + #[fail(display = "Got invalid quantization type: {}", _0)] + InvalidQuantizationType(u16), + #[fail(display = "Got invalid codec channel type")] + InvalidCodecChannelType, + #[fail( + display = "Got unexpected codec channel type: expected ({:?}) != actual ({:?})", + expected, actual + )] + UnexpectedCodecChannelType { + expected: CodecChannelType, + actual: CodecChannelType, + }, + #[fail( + display = "Input buffer is shorter then the data length: {} < {}", + actual, expected + )] + InvalidDataLength { expected: usize, actual: usize }, + #[fail(display = "Got invalid Region LRF: {}", _0)] + InvalidLrf(bool), + #[fail(display = "Got invalid Region type: {}", _0)] + InvalidRegionType(u16), + #[fail(display = "Got invalid number of tilesets: {}", _0)] + InvalidNumberOfTilesets(u16), + #[fail(display = "Got invalid ID of context: {}", _0)] + InvalidIdOfContext(u16), + #[fail(display = "Got invalid TileSet subtype: {}", _0)] + InvalidSubtype(u16), + #[fail(display = "Got invalid IT flag of TileSet: {}", _0)] + InvalidItFlag(bool), +} + +impl_from_error!(io::Error, RfxError, RfxError::IoError); diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs new file mode 100644 index 00000000..8ef33f37 --- /dev/null +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -0,0 +1,606 @@ +use std::io::Write; + +use bit_field::BitField; +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::{ + BlockHeader, BlockType, CodecChannelHeader, CodecChannelType, RfxError, BLOCK_HEADER_SIZE, + CODEC_CHANNEL_HEADER_SIZE, +}; +use crate::{from_buffer, to_buffer, PduBufferParsing}; +const CONTEXT_ID: u8 = 0; +const TILE_SIZE: u16 = 0x0040; +const COLOR_CONVERSION_ICT: u16 = 1; +const CLW_XFORM_DWT_53_A: u16 = 1; +const SCALAR_QUANTIZATION: u16 = 1; +const LRF: bool = true; +const CBT_REGION: u16 = 0xcac1; +const NUMBER_OF_TILESETS: u16 = 1; +const CBT_TILESET: u16 = 0xcac2; +const IDX: u16 = 0; +const IS_LAST_TILESET_FLAG: bool = true; +const QUANT_SIZE: usize = 5; +const RECTANGLE_SIZE: usize = 8; + +#[derive(Debug, Clone, PartialEq)] +pub struct ContextPdu { + pub flags: OperatingMode, + pub entropy_algorithm: EntropyAlgorithm, +} + +impl PduBufferParsing for ContextPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Context)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let id = buffer.read_u8()?; + if id != CONTEXT_ID { + return Err(RfxError::InvalidContextId(id)); + } + + let tile_size = buffer.read_u16::()?; + if tile_size != TILE_SIZE { + return Err(RfxError::InvalidTileSize(tile_size)); + } + + let properties = buffer.read_u16::()?; + let flags = OperatingMode::from_bits_truncate(properties.get_bits(0..3)); + let color_conversion_transform = properties.get_bits(3..5); + if color_conversion_transform != COLOR_CONVERSION_ICT { + return Err(RfxError::InvalidColorConversionTransform( + color_conversion_transform, + )); + } + + let dwt = properties.get_bits(5..9); + if dwt != CLW_XFORM_DWT_53_A { + return Err(RfxError::InvalidDwt(dwt)); + } + + let entropy_algorithm_bits = properties.get_bits(9..13); + let entropy_algorithm = EntropyAlgorithm::from_u16(entropy_algorithm_bits) + .ok_or(RfxError::InvalidEntropyAlgorithm(entropy_algorithm_bits))?; + + let quantization_type = properties.get_bits(13..15); + if quantization_type != SCALAR_QUANTIZATION { + return Err(RfxError::InvalidQuantizationType(quantization_type)); + } + + let _reserved = properties.get_bit(15); + + Ok(Self { + flags, + entropy_algorithm, + }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = CodecChannelHeader { + ty: CodecChannelType::Context, + data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u8(CONTEXT_ID)?; + buffer.write_u16::(TILE_SIZE)?; + + let mut properties: u16 = 0; + properties.set_bits(0..3, self.flags.bits()); + properties.set_bits(3..5, COLOR_CONVERSION_ICT); + properties.set_bits(5..9, CLW_XFORM_DWT_53_A); + properties.set_bits(9..13, self.entropy_algorithm.to_u16().unwrap()); + properties.set_bits(13..15, SCALAR_QUANTIZATION); + properties.set_bit(15, false); // reserved + buffer.write_u16::(properties)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + 5 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameBeginPdu { + pub index: u32, + pub number_of_regions: i16, +} + +impl PduBufferParsing for FrameBeginPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = + CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::FrameBegin)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let index = buffer.read_u32::()?; + let number_of_regions = buffer.read_i16::()?; + + Ok(Self { + index, + number_of_regions, + }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = CodecChannelHeader { + ty: CodecChannelType::FrameBegin, + data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u32::(self.index)?; + buffer.write_i16::(self.number_of_regions)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + 6 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameEndPdu; + +impl PduBufferParsing for FrameEndPdu { + type Error = RfxError; + + fn from_buffer(buffer: &[u8]) -> Result { + let _header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::FrameEnd); + + Ok(Self) + } + + fn to_buffer(&self, buffer: &mut [u8]) -> Result<(), Self::Error> { + CodecChannelHeader { + ty: CodecChannelType::FrameEnd, + data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + } + .to_buffer(buffer) + } + + fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct RegionPdu { + pub rectangles: Vec, +} + +impl PduBufferParsing for RegionPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Region)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let region_flags = buffer.read_u8()?; + let lrf = region_flags.get_bit(0); + if lrf != LRF { + return Err(RfxError::InvalidLrf(lrf)); + } + + let number_of_rectangles = buffer.read_u16::()? as usize; + if buffer.len() < number_of_rectangles * RECTANGLE_SIZE { + return Err(RfxError::InvalidDataLength { + expected: number_of_rectangles * RECTANGLE_SIZE, + actual: buffer.len(), + }); + } + + let rectangles = (0..number_of_rectangles) + .map(|_| from_buffer!(Rectangle, buffer)) + .collect::, _>>()?; + + let region_type = buffer.read_u16::()?; + if region_type != CBT_REGION { + return Err(RfxError::InvalidRegionType(region_type)); + } + + let number_of_tilesets = buffer.read_u16::()?; + if number_of_tilesets != NUMBER_OF_TILESETS { + return Err(RfxError::InvalidNumberOfTilesets(number_of_tilesets)); + } + + Ok(Self { rectangles }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = CodecChannelHeader { + ty: CodecChannelType::Region, + data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + + let mut region_flags = 0; + region_flags.set_bit(0, LRF); + buffer.write_u8(region_flags)?; + + buffer.write_u16::(self.rectangles.len() as u16)?; + for rectangle in self.rectangles.iter() { + to_buffer!(rectangle, buffer)?; + } + + buffer.write_u16::(CBT_REGION)?; + buffer.write_u16::(NUMBER_OF_TILESETS)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + + 7 + + self + .rectangles + .iter() + .map(PduBufferParsing::buffer_length) + .sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct TileSetPdu<'a> { + pub entropy_algorithm: EntropyAlgorithm, + pub quants: Vec, + pub tiles: Vec>, +} + +impl<'a> TileSetPdu<'a> { + pub fn from_buffer(mut buffer: &'a [u8]) -> Result { + let header = + CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Extension)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let subtype = buffer.read_u16::()?; + if subtype != CBT_TILESET { + return Err(RfxError::InvalidSubtype(subtype)); + } + + let id_of_context = buffer.read_u16::()?; + if id_of_context != IDX { + return Err(RfxError::InvalidIdOfContext(id_of_context)); + } + + let properties = buffer.read_u16::()?; + let is_last = properties.get_bit(0); + if is_last != IS_LAST_TILESET_FLAG { + return Err(RfxError::InvalidItFlag(is_last)); + } + + // The encoder MUST set `flags` value to the value of flags + // that is set in the properties field of TS_RFX_CONTEXT. + // The decoder MUST ignore this flag and MUST use the flags specified + // in the flags field of the TS_RFX_CONTEXT. + + let color_conversion_transform = properties.get_bits(4..6); + if color_conversion_transform != COLOR_CONVERSION_ICT { + return Err(RfxError::InvalidColorConversionTransform( + color_conversion_transform, + )); + } + + let dwt = properties.get_bits(6..10); + if dwt != CLW_XFORM_DWT_53_A { + return Err(RfxError::InvalidDwt(dwt)); + } + + let entropy_algorithm_bits = properties.get_bits(10..14); + let entropy_algorithm = EntropyAlgorithm::from_u16(entropy_algorithm_bits) + .ok_or(RfxError::InvalidEntropyAlgorithm(entropy_algorithm_bits))?; + + let quantization_type = properties.get_bits(14..16); + if quantization_type != SCALAR_QUANTIZATION { + return Err(RfxError::InvalidQuantizationType(quantization_type)); + } + + let number_of_quants = buffer.read_u8()? as usize; + + let tile_size = u16::from(buffer.read_u8()?); + if tile_size != TILE_SIZE { + return Err(RfxError::InvalidTileSize(tile_size)); + } + + let number_of_tiles = buffer.read_u16::()?; + let tiles_data_size = buffer.read_u32::()? as usize; + + let expected_length = tiles_data_size + number_of_quants * QUANT_SIZE; + if buffer.len() < expected_length { + return Err(RfxError::InvalidDataLength { + expected: expected_length, + actual: buffer.len(), + }); + } + + let quants = (0..number_of_quants) + .map(|_| from_buffer!(Quant, buffer)) + .collect::, _>>()?; + + let mut tiles_buffer = &buffer[..tiles_data_size]; + let tiles = (0..number_of_tiles) + .map(|_| from_buffer!(Tile, tiles_buffer)) + .collect::, _>>()?; + + Ok(Self { + entropy_algorithm, + quants, + tiles, + }) + } + + pub fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + let header = CodecChannelHeader { + ty: CodecChannelType::Extension, + data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u16::(CBT_TILESET)?; + buffer.write_u16::(IDX)?; + + let mut properties: u16 = 0; + properties.set_bit(0, IS_LAST_TILESET_FLAG); + properties.set_bits(1..4, OperatingMode::empty().bits()); // The decoder MUST ignore this flag + properties.set_bits(4..6, COLOR_CONVERSION_ICT); + properties.set_bits(6..10, CLW_XFORM_DWT_53_A); + properties.set_bits(10..14, self.entropy_algorithm.to_u16().unwrap()); + properties.set_bits(14..16, SCALAR_QUANTIZATION); + buffer.write_u16::(properties)?; + + buffer.write_u8(self.quants.len() as u8)?; + buffer.write_u8(TILE_SIZE as u8)?; + buffer.write_u16::(self.tiles.len() as u16)?; + + let tiles_data_size = self.tiles.iter().map(|t| t.buffer_length()).sum::() as u32; + buffer.write_u32::(tiles_data_size)?; + + for quant in self.quants.iter() { + to_buffer!(quant, buffer)?; + } + + for tile in self.tiles.iter() { + to_buffer!(tile, buffer)?; + } + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + CODEC_CHANNEL_HEADER_SIZE + + 14 + + self + .quants + .iter() + .map(PduBufferParsing::buffer_length) + .sum::() + + self.tiles.iter().map(|t| t.buffer_length()).sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Rectangle { + pub x: u16, + pub y: u16, + pub width: u16, + pub height: u16, +} + +impl PduBufferParsing for Rectangle { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let x = buffer.read_u16::()?; + let y = buffer.read_u16::()?; + let width = buffer.read_u16::()?; + let height = buffer.read_u16::()?; + + Ok(Self { + x, + y, + width, + height, + }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u16::(self.x)?; + buffer.write_u16::(self.y)?; + buffer.write_u16::(self.width)?; + buffer.write_u16::(self.height)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + RECTANGLE_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Quant { + pub ll3: u8, + pub lh3: u8, + pub hl3: u8, + pub hh3: u8, + pub lh2: u8, + pub hl2: u8, + pub hh2: u8, + pub lh1: u8, + pub hl1: u8, + pub hh1: u8, +} + +impl PduBufferParsing for Quant { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let level3 = buffer.read_u16::()?; + let ll3 = level3.get_bits(0..4) as u8; + let lh3 = level3.get_bits(4..8) as u8; + let hl3 = level3.get_bits(8..12) as u8; + let hh3 = level3.get_bits(12..16) as u8; + + let level2_with_lh1 = buffer.read_u16::()?; + let lh2 = level2_with_lh1.get_bits(0..4) as u8; + let hl2 = level2_with_lh1.get_bits(4..8) as u8; + let hh2 = level2_with_lh1.get_bits(8..12) as u8; + let lh1 = level2_with_lh1.get_bits(12..16) as u8; + + let level1 = buffer.read_u8()?; + let hl1 = level1.get_bits(0..4); + let hh1 = level1.get_bits(4..8); + + Ok(Self { + ll3, + lh3, + hl3, + hh3, + lh2, + hl2, + hh2, + lh1, + hl1, + hh1, + }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let mut level3 = 0; + level3.set_bits(0..4, u16::from(self.ll3)); + level3.set_bits(4..8, u16::from(self.lh3)); + level3.set_bits(8..12, u16::from(self.hl3)); + level3.set_bits(12..16, u16::from(self.hh3)); + + let mut level2_with_lh1 = 0; + level2_with_lh1.set_bits(0..4, u16::from(self.lh2)); + level2_with_lh1.set_bits(4..8, u16::from(self.hl2)); + level2_with_lh1.set_bits(8..12, u16::from(self.hh2)); + level2_with_lh1.set_bits(12..16, u16::from(self.lh1)); + + let mut level1 = 0; + level1.set_bits(0..4, self.hl1); + level1.set_bits(4..8, self.hh1); + + buffer.write_u16::(level3)?; + buffer.write_u16::(level2_with_lh1)?; + buffer.write_u8(level1)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + QUANT_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Tile<'a> { + pub y_quant_index: u8, + pub cb_quant_index: u8, + pub cr_quant_index: u8, + + pub x_tile_index: u16, + pub y_tile_index: u16, + + pub y_data: &'a [u8], + pub cb_data: &'a [u8], + pub cr_data: &'a [u8], +} + +impl<'a> Tile<'a> { + pub fn from_buffer(mut buffer: &'a [u8]) -> Result { + let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Tile)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let y_quant_index = buffer.read_u8()?; + let cb_quant_index = buffer.read_u8()?; + let cr_quant_index = buffer.read_u8()?; + + let x_tile_index = buffer.read_u16::()?; + let y_tile_index = buffer.read_u16::()?; + + let y_component_length = buffer.read_u16::()? as usize; + let cb_component_length = buffer.read_u16::()? as usize; + let cr_component_length = buffer.read_u16::()? as usize; + + if buffer.len() < y_component_length + cb_component_length + cr_component_length { + return Err(RfxError::InvalidDataLength { + expected: y_component_length + cb_component_length + cr_component_length, + actual: buffer.len(), + }); + } + + let y_start = 0; + let cb_start = y_component_length; + let cr_start = y_component_length + cb_component_length; + + let y_data = &buffer[y_start..y_component_length]; + let cb_data = &buffer[cb_start..cb_start + cb_component_length]; + let cr_data = &buffer[cr_start..cr_start + cr_component_length]; + + Ok(Self { + y_quant_index, + cb_quant_index, + cr_quant_index, + + x_tile_index, + y_tile_index, + + y_data, + cb_data, + cr_data, + }) + } + + pub fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + let header = BlockHeader { + ty: BlockType::Tile, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u8(self.y_quant_index)?; + buffer.write_u8(self.cb_quant_index)?; + buffer.write_u8(self.cr_quant_index)?; + + buffer.write_u16::(self.x_tile_index)?; + buffer.write_u16::(self.y_tile_index)?; + + buffer.write_u16::(self.y_data.len() as u16)?; + buffer.write_u16::(self.cb_data.len() as u16)?; + buffer.write_u16::(self.cr_data.len() as u16)?; + + buffer.write_all(self.y_data)?; + buffer.write_all(self.cb_data)?; + buffer.write_all(self.cr_data)?; + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + 13 + self.y_data.len() + self.cb_data.len() + self.cr_data.len() + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +pub enum EntropyAlgorithm { + Rlgr1 = 0x01, + Rlgr3 = 0x04, +} + +bitflags! { + pub struct OperatingMode: u16 { + const IMAGE_MODE = 0x02; // if not set, the codec is operating in video mode + } +} diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp/src/codecs/rfx/header_messages.rs new file mode 100644 index 00000000..f811a6e7 --- /dev/null +++ b/ironrdp/src/codecs/rfx/header_messages.rs @@ -0,0 +1,209 @@ +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::{BlockHeader, BlockType, RfxError, BLOCK_HEADER_SIZE}; +use crate::{from_buffer, to_buffer, PduBufferParsing}; + +const SYNC_MAGIC: u32 = 0xCACC_ACCA; +const SYNC_VERSION: u16 = 0x0100; +const CODECS_NUMBER: u8 = 1; +const CODEC_ID: u8 = 1; +const CODEC_VERSION: u16 = 0x0100; +const CHANNEL_ID: u8 = 0; + +const CHANNEL_SIZE: usize = 5; + +#[derive(Debug, Clone, PartialEq)] +pub struct SyncPdu; + +impl PduBufferParsing for SyncPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Sync)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let magic = buffer.read_u32::()?; + if magic != SYNC_MAGIC { + return Err(RfxError::InvalidMagicNumber(magic)); + } + let version = buffer.read_u16::()?; + if version != SYNC_VERSION { + Err(RfxError::InvalidSyncVersion(version)) + } else { + Ok(Self) + } + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = BlockHeader { + ty: BlockType::Sync, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u32::(SYNC_MAGIC)?; + buffer.write_u16::(SYNC_VERSION)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + 6 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CodecVersionsPdu; + +impl PduBufferParsing for CodecVersionsPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = BlockHeader::from_buffer_with_type(buffer, BlockType::CodecVersions)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let codecs_number = buffer.read_u8()?; + if codecs_number != CODECS_NUMBER { + return Err(RfxError::InvalidCodecsNumber(codecs_number)); + } + + let _codec_version = CodecVersion::from_buffer(buffer)?; + + Ok(Self) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = BlockHeader { + ty: BlockType::CodecVersions, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u8(CODECS_NUMBER)?; + + CodecVersion.to_buffer(&mut buffer) + } + + fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + 1 + CodecVersion.buffer_length() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct ChannelsPdu(pub Vec); + +impl PduBufferParsing for ChannelsPdu { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Channels)?; + buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + + let channels_number = buffer.read_u8()? as usize; + + if buffer.len() < channels_number * CHANNEL_SIZE { + return Err(RfxError::InvalidDataLength { + expected: channels_number * CHANNEL_SIZE, + actual: buffer.len(), + }); + } + + let channels = (0..channels_number) + .map(|_| from_buffer!(Channel, buffer)) + .collect::, _>>()?; + + Ok(Self(channels)) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + let header = BlockHeader { + ty: BlockType::Channels, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE, + }; + + to_buffer!(header, buffer)?; + buffer.write_u8(self.0.len() as u8)?; + + for channel in self.0.iter() { + to_buffer!(channel, buffer)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + + 1 + + self + .0 + .iter() + .map(PduBufferParsing::buffer_length) + .sum::() + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct Channel { + pub width: i16, + pub height: i16, +} + +impl PduBufferParsing for Channel { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let id = buffer.read_u8()?; + if id != CHANNEL_ID { + return Err(RfxError::InvalidChannelId(id)); + } + + let width = buffer.read_i16::()?; + let height = buffer.read_i16::()?; + + Ok(Self { width, height }) + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u8(CHANNEL_ID)?; + buffer.write_i16::(self.width)?; + buffer.write_i16::(self.height)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + CHANNEL_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +struct CodecVersion; + +impl PduBufferParsing for CodecVersion { + type Error = RfxError; + + fn from_buffer(mut buffer: &[u8]) -> Result { + let id = buffer.read_u8()?; + if id != CODEC_ID { + return Err(RfxError::InvalidCodecId(id)); + } + + let version = buffer.read_u16::()?; + if version != CODEC_VERSION { + Err(RfxError::InvalidCodecVersion(version)) + } else { + Ok(Self) + } + } + + fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u8(CODEC_ID)?; + buffer.write_u16::(CODEC_VERSION)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 3 + } +} diff --git a/ironrdp/src/codecs/rfx/tests.rs b/ironrdp/src/codecs/rfx/tests.rs new file mode 100644 index 00000000..2ac833c0 --- /dev/null +++ b/ironrdp/src/codecs/rfx/tests.rs @@ -0,0 +1,523 @@ +use lazy_static::lazy_static; + +use super::{data_messages::*, header_messages::*}; +use crate::PduBufferParsing; + +const SYNC_PDU_BUFFER: [u8; 12] = [ + 0xc0, 0xcc, // TS_RFX_SYNC::BlockT::blockType = WBT_SYNC + 0x0c, 0x00, 0x00, 0x00, // TS_RFX_SYNC::BlockT::blockLen = 12 + 0xca, 0xac, 0xcc, 0xca, // TS_RFX_SYNC::magic = WF_MAGIC + 0x00, 0x01, // TS_RFX_SYNC::version = 0x0100 +]; +const SYNC_PDU_BUFFER_WITH_ZERO_DATA_LENGTH: [u8; 12] = [ + 0xc0, 0xcc, // TS_RFX_SYNC::BlockT::blockType = WBT_SYNC + 0x00, 0x00, 0x00, 0x00, // TS_RFX_SYNC::BlockT::blockLen = 0 + 0xca, 0xac, 0xcc, 0xca, // TS_RFX_SYNC::magic = WF_MAGIC + 0x00, 0x01, // TS_RFX_SYNC::version = 0x0100 +]; +const SYNC_PDU_BUFFER_WITH_BIG_DATA_LENGTH: [u8; 12] = [ + 0xc0, 0xcc, // TS_RFX_SYNC::BlockT::blockType = WBT_SYNC + 0xff, 0x00, 0x00, 0x00, // TS_RFX_SYNC::BlockT::blockLen = 0xff + 0xca, 0xac, 0xcc, 0xca, // TS_RFX_SYNC::magic = WF_MAGIC + 0x00, 0x01, // TS_RFX_SYNC::version = 0x0100 +]; +const CODEC_VERSIONS_PDU_BUFFER: [u8; 10] = [ + 0xc1, 0xcc, // TS_RFX_CODEC_VERSIONS::BlockT::blockType = WBT_CODEC_VERSION + 0x0a, 0x00, 0x00, 0x00, // TS_RFX_CODEC_VERSIONS::BlockT::blockLen = 10 + 0x01, // TS_RFX_CODEC_VERSIONS::numCodecs = 1 + 0x01, // TS_RFX_CODEC_VERSIONS::TS_RFX_CODEC_VERSIONT::codecId = 1 + 0x00, 0x01, // TS_RFX_CODEC_VERSIONS::TS_RFX_CODEC_VERSIONT::version 0x0100 +]; +const CHANNELS_PDU_BUFFER: [u8; 17] = [ + 0xc2, 0xcc, // TS_RFX_CHANNELS::BLockT::blockType = WBT_CHANNELS + 0x11, 0x00, 0x00, 0x00, // TS_RFX_CHANNELS::BlockT::blockLen = 17 + 0x02, // TS_RFX_CHANNELS::numChannels = 2 + 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::channelId = 0 + 0x40, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::width = 64 + 0x40, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::height = 64 + 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::channelId = 0 + 0x20, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::width = 32 + 0x20, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::height = 32 +]; +const CHANNELS_PDU_BUFFER_WITH_INVALID_DATA_LENGTH: [u8; 17] = [ + 0xc2, 0xcc, // TS_RFX_CHANNELS::BLockT::blockType = WBT_CHANNELS + 0x11, 0x00, 0x00, 0x00, // TS_RFX_CHANNELS::BlockT::blockLen = 17 + 0x0a, // TS_RFX_CHANNELS::numChannels = 0x0a + 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::channelId = 0 + 0x40, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::width = 64 + 0x40, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::height = 64 + 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::channelId = 0 + 0x20, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::width = 32 + 0x20, 0x00, // TS_RFX_CHANNELS::TS_RFX_CHANNELT::height = 32 +]; +const CONTEXT_PDU_BUFFER: [u8; 13] = [ + 0xc3, 0xcc, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockType = WBT_CONTEXT + 0x0d, 0x00, 0x00, 0x00, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockLen = 13 + 0x01, // TS_RFX_CONTEXT::CodecChannelT::codecId = 1 + 0xff, // TS_RFX_CONTEXT::CodecChannelT::channelId = 255 + 0x00, // TS_RFX_CONTEXT::ctxId = 0 + 0x40, 0x00, // TS_RFX_CONTEXT::tileSize = 64 + 0x28, + 0x28, // TS_RFX_CONTEXT::properties + // TS_RFX_CONTEXT::properties::flags = VIDEO_MODE (0) + // TS_RFX_CONTEXT::properties::cct = COL_CONV_ICT (1) + // TS_RFX_CONTEXT::properties::xft = CLW_XFORM_DWT_53_A (1) + // TS_RFX_CONTEXT::properties::et = CLW_ENTROPY_RLGR3 (4) + // TS_RFX_CONTEXT::properties::qt = SCALAR_QUANTIZATION (1) + // TS_RFX_CONTEXT::properties::r = RESERVED +]; +const CONTEXT_PDU_BUFFER_WITH_ZERO_DATA_LENGTH: [u8; 13] = [ + 0xc3, 0xcc, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockType = WBT_CONTEXT + 0x01, 0x00, 0x00, 0x00, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockLen = 1 + 0x01, // TS_RFX_CONTEXT::CodecChannelT::codecId = 1 + 0xff, // TS_RFX_CONTEXT::CodecChannelT::channelId = 255 + 0x00, // TS_RFX_CONTEXT::ctxId = 0 + 0x40, 0x00, // TS_RFX_CONTEXT::tileSize = 64 + 0x28, 0x28, // TS_RFX_CONTEXT::properties +]; +const CONTEXT_PDU_BUFFER_WITH_BIG_DATA_LENGTH: [u8; 13] = [ + 0xc3, 0xcc, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockType = WBT_CONTEXT + 0xff, 0x00, 0x00, 0x00, // TS_RFX_CONTEXT::CodecChannelT::BlockT::blockLen = 0xff + 0x01, // TS_RFX_CONTEXT::CodecChannelT::codecId = 1 + 0xff, // TS_RFX_CONTEXT::CodecChannelT::channelId = 255 + 0x00, // TS_RFX_CONTEXT::ctxId = 0 + 0x40, 0x00, // TS_RFX_CONTEXT::tileSize = 64 + 0x28, 0x28, // TS_RFX_CONTEXT::properties +]; +const FRAME_BEGIN_PDU_BUFFER: [u8; 14] = [ + 0xc4, 0xcc, // TS_RFX_FRAME_BEGIN::CodecChannelT::blockType = WBT_FRAME_BEGIN + 0x0e, 0x00, 0x00, 0x00, // TS_RFX_FRAME_BEGIN::CodecChannelT::blockLen = 14 + 0x01, // TS_RFX_FRAME_BEGIN::CodecChannelT::codecId = 1 + 0x00, // TS_RFX_FRAME_BEGIN::CodecChannelT::channelId = 0 + 0x00, 0x00, 0x00, 0x00, // TS_RFX_FRAME_BEGIN::frameIdx = 0 + 0x01, 0x00, // TS_RFX_FRAME_BEGIN::numRegions = 1 +]; +const FRAME_END_PDU_BUFFER: [u8; 8] = [ + 0xc5, 0xcc, // TS_RFX_FRAME_END::CodecChannelT::blockType = WBT_FRAME_END + 0x08, 0x00, 0x00, 0x00, // TS_FRAME_END::CodecChannelT::blockLen = 14 + 0x01, // TS_FRAME_END::CodecChannelT::codecId = 1 + 0x00, // TS_FRAME_END::CodecChannelT::channelId = 0 +]; +const REGION_PDU_BUFFER: [u8; 31] = [ + 0xc6, 0xcc, // TS_RFX_REGION::CodecChannelT::blockType = WBT_REGION + 0x1f, 0x00, 0x00, 0x00, // TS_RFX_REGION::CodecChannelT::blockLen = 31 + 0x01, // TS_RFX_REGION::CodecChannelT::codecId = 1 + 0x00, // TS_RFX_REGION::CodecChannelT::channelId = 0 + 0x01, // TS_RFX_REGION::regionFlags + //TS_RFX_REGION::regionFlags::lrf = 1 + 0x02, 0x00, // TS_RFX_REGION::numRects = 2 + 0x00, 0x00, // TS_RFX_REGION::TS_RFX_RECT::x = 0 + 0x00, 0x00, // TS_RFX_REGION::TS_RFX_RECT::y = 0 + 0x40, 0x00, // TS_RFX_REGION::TS_RFX_RECT::width = 64 + 0x40, 0x00, // TS_RFX_REGION::TS_RFX_RECT::height = 64 + 0x40, 0x00, // TS_RFX_REGION::TS_RFX_RECT::x = 64 + 0x40, 0x00, // TS_RFX_REGION::TS_RFX_RECT::y = 64 + 0xff, 0x00, // TS_RFX_REGION::TS_RFX_RECT::width = 0xff + 0xff, 0x00, // TS_RFX_REGION::TS_RFX_RECT::height = 0xff + 0xc1, 0xca, // TS_RFX_REGION::regionType = CBT_REGION + 0x01, 0x00, // TS_RFX_REGION::numTilesets = 1 +]; + +const TILESET_PDU_BUFFER: [u8; 82] = [ + 0xc7, 0xcc, // TS_RFX_TILESET::CodecChannelT::blockType = WBT_EXTENSION + 0x52, 0x00, 0x00, 0x00, // TS_RFX_TILESET::CodecChannelT::blockLen = 82 + 0x01, // TS_RFX_TILESET::codecId = 1 + 0x00, // TS_RFX_TILESET::channelId = 0 + 0xc2, 0xca, // TS_RFX_TILESET::subtype = CBT_TILESET + 0x00, 0x00, // TS_RFX_TILESET::idx = 0x00 + 0x51, 0x50, // TS_RFX_TILESET::properties + //TS_RFX_TILESET::properties::lt = TRUE (1) + //TS_RFX_TILESET::properties::flags = VIDEO_MODE (0) + //TS_RFX_TILESET::properties::cct = COL_CONV_ICT (1) + //TS_RFX_TILESET::properties::xft = CLW_XFORM_DWT_53_A (1) + //TS_RFX_TILESET::properties::et = CLW_ENTROPY_RLGR3 (4) + //TS_RFX_TILESET::properties::qt = SCALAR_QUANTIZATION (1) + 0x02, // TS_RFX_TILESET::numQuant = 2 + 0x40, // TS_RFX_TILESET::tileSize = 64 + 0x02, 0x00, // TS_RFX_TILESET::numTiles = 2 + 0x32, 0x00, 0x00, 0x00, // TS_RFX_TILESET::tilesDataSize = 50 + 0x66, 0x66, 0x77, 0x88, 0x98, // TS_RFX_TILESET::quant #1 + 0x66, 0x66, 0x77, 0x88, 0x98, // TS_RFX_TILESET::quant #2 + //TS_RFX_TILESET::quantVals::LL3 = 6 + //TS_RFX_TILESET::quantVals::LH3 = 6 + //TS_RFX_TILESET::quantVals::HL3 = 6 + //TS_RFX_TILESET::quantVals::HH3 = 6 + //TS_RFX_TILESET::quantVals::LH2 = 7 + //TS_RFX_TILESET::quantVals::HL2 = 7 + //TS_RFX_TILESET::quantVals::HH2 = 8 + //TS_RFX_TILESET::quantVals::LH1 = 8 + //TS_RFX_TILESET::quantVals::HL1 = 8 + //TS_RFX_TILESET::quantVals::HH1 = 9 + // TILE #1 + 0xc3, 0xca, // TS_RFX_TILE::BlockT::blockType = CBT_TILE + 0x19, 0x00, 0x00, 0x00, // TS_RFX_TILE::BlockT::blockLen = 25 + 0x00, // TS_RFX_TILE::quantIdxY = 0 + 0x00, // TS_RFX_TILE::quantIdxCb = 0 + 0x00, // TS_RFX_TILE::quantIdxCr = 0 + 0x00, 0x00, // TS_RFX_TILE::xIdx = 0 + 0x00, 0x00, // TS_RFX_TILE::yIdx = 0 + 0x01, 0x00, // TS_RFX_TILE::YLen = 1 + 0x02, 0x00, // TS_RFX_TILE::CbLen = 2 + 0x03, 0x00, // TS_RFX_TILE::CrLen = 3 + 0xf0, // TS_RFX_TILE::YData + 0xf1, 0xf2, // TS_RFX_TILE::CbData + 0xf3, 0xf4, 0xf5, // TS_RFX_TILE::CrData + // TILE #2 + 0xc3, 0xca, // TS_RFX_TILE::BlockT::blockType = CBT_TILE + 0x19, 0x00, 0x00, 0x00, // TS_RFX_TILE::BlockT::blockLen = 25 + 0xff, // TS_RFX_TILE::quantIdxY = 0 + 0xff, // TS_RFX_TILE::quantIdxCb = 0 + 0xff, // TS_RFX_TILE::quantIdxCr = 0 + 0xff, 0xff, // TS_RFX_TILE::xIdx = 0 + 0xff, 0xff, // TS_RFX_TILE::yIdx = 0 + 0x01, 0x00, // TS_RFX_TILE::YLen = 1 + 0x02, 0x00, // TS_RFX_TILE::CbLen = 2 + 0x03, 0x00, // TS_RFX_TILE::CrLen = 3 + 0xf6, // TS_RFX_TILE::YData + 0xf7, 0xf8, // TS_RFX_TILE::CbData + 0xf9, 0xfa, 0xfb, // TS_RFX_TILE::CrData +]; +const TILE1_Y_DATA: [u8; 1] = [0xf0]; +const TILE1_CB_DATA: [u8; 2] = [0xf1, 0xf2]; +const TILE1_CR_DATA: [u8; 3] = [0xf3, 0xf4, 0xf5]; +const TILE2_Y_DATA: [u8; 1] = [0xf6]; +const TILE2_CB_DATA: [u8; 2] = [0xf7, 0xf8]; +const TILE2_CR_DATA: [u8; 3] = [0xf9, 0xfa, 0xfb]; + +const TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS: [u8; 27] = [ + 0xc7, 0xcc, // TS_RFX_TILESET::CodecChannelT::blockType = WBT_EXTENSION + 0xd9, 0x03, 0x00, 0x00, // TS_RFX_TILESET::CodecChannelT::blockLen = 985 + 0x01, // TS_RFX_TILESET::codecId = 1 + 0x00, // TS_RFX_TILESET::channelId = 0 + 0xc2, 0xca, // TS_RFX_TILESET::subtype = CBT_TILESET + 0x00, 0x00, // TS_RFX_TILESET::idx = 0x00 + 0x51, 0x50, // TS_RFX_TILESET::properties + 0x0f, // TS_RFX_TILESET::numQuant = 0x0f + 0x40, // TS_RFX_TILESET::tileSize = 64 + 0x01, 0x00, // TS_RFX_TILESET::numTiles = 1 + 0xdf, 0x03, 0x00, 0x00, // TS_RFX_TILESET::tilesDataSize = 991 + 0x66, 0x66, 0x77, 0x88, 0x98, // TS_RFX_TILESET::quantVals +]; + +const TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE: [u8; 27] = [ + 0xc7, 0xcc, // TS_RFX_TILESET::CodecChannelT::blockType = WBT_EXTENSION + 0xd9, 0x03, 0x00, 0x00, // TS_RFX_TILESET::CodecChannelT::blockLen = 985 + 0x01, // TS_RFX_TILESET::codecId = 1 + 0x00, // TS_RFX_TILESET::channelId = 0 + 0xc2, 0xca, // TS_RFX_TILESET::subtype = CBT_TILESET + 0x00, 0x00, // TS_RFX_TILESET::idx = 0x00 + 0x51, 0x50, // TS_RFX_TILESET::properties + 0x0f, // TS_RFX_TILESET::numQuant = 0x0f + 0x40, // TS_RFX_TILESET::tileSize = 64 + 0x01, 0x00, // TS_RFX_TILESET::numTiles = 1 + 0xff, 0xff, 0xff, 0xff, // TS_RFX_TILESET::tilesDataSize = 0xffff_ffff + 0x66, 0x66, 0x77, 0x88, 0x98, // TS_RFX_TILESET::quantVals +]; + +const SYNC_PDU: SyncPdu = SyncPdu; +const CODEC_VERSIONS_PDU: CodecVersionsPdu = CodecVersionsPdu; +const CONTEXT_PDU: ContextPdu = ContextPdu { + flags: OperatingMode::empty(), + entropy_algorithm: EntropyAlgorithm::Rlgr3, +}; +const FRAME_BEGIN_PDU: FrameBeginPdu = FrameBeginPdu { + index: 0, + number_of_regions: 1, +}; +const FRAME_END_PDU: FrameEndPdu = FrameEndPdu; + +lazy_static! { + static ref CHANNELS_PDU: ChannelsPdu = ChannelsPdu(vec![ + Channel { + width: 64, + height: 64, + }, + Channel { + width: 32, + height: 32, + } + ]); + static ref REGION_PDU: RegionPdu = RegionPdu { + rectangles: vec![ + Rectangle { + x: 0, + y: 0, + width: 64, + height: 64 + }, + Rectangle { + x: 64, + y: 64, + width: 0xff, + height: 0xff + }, + ] + }; + static ref TILESET_PDU: TileSetPdu<'static> = TileSetPdu { + entropy_algorithm: EntropyAlgorithm::Rlgr3, + quants: vec![ + Quant { + ll3: 6, + lh3: 6, + hl3: 6, + hh3: 6, + lh2: 7, + hl2: 7, + hh2: 8, + lh1: 8, + hl1: 8, + hh1: 9, + }; + 2 + ], + tiles: vec![ + Tile { + y_quant_index: 0, + cb_quant_index: 0, + cr_quant_index: 0, + + x_tile_index: 0, + y_tile_index: 0, + + y_data: &TILE1_Y_DATA, + cb_data: &TILE1_CB_DATA, + cr_data: &TILE1_CR_DATA, + }, + Tile { + y_quant_index: 0xff, + cb_quant_index: 0xff, + cr_quant_index: 0xff, + + x_tile_index: 0xffff, + y_tile_index: 0xffff, + + y_data: &TILE2_Y_DATA, + cb_data: &TILE2_CB_DATA, + cr_data: &TILE2_CR_DATA, + }, + ], + }; +} + +#[test] +fn from_buffer_for_block_header_returns_error_on_zero_data_length() { + assert!(SyncPdu::from_buffer(SYNC_PDU_BUFFER_WITH_ZERO_DATA_LENGTH.as_ref()).is_err(),); +} + +#[test] +fn from_buffer_for_block_header_returns_error_on_data_length_greater_then_available_data() { + assert!(SyncPdu::from_buffer(SYNC_PDU_BUFFER_WITH_BIG_DATA_LENGTH.as_ref()).is_err(),); +} + +#[test] +fn from_buffer_correctly_parses_sync_pdu() { + assert_eq!( + SYNC_PDU, + SyncPdu::from_buffer(SYNC_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_sync_pdu() { + let expected = SYNC_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + SYNC_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_sync_pdu() { + assert_eq!(SYNC_PDU_BUFFER.len(), SYNC_PDU.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_codec_versions_pdu() { + assert_eq!( + CODEC_VERSIONS_PDU, + CodecVersionsPdu::from_buffer(CODEC_VERSIONS_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_codec_versions_pdu() { + let expected = CODEC_VERSIONS_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + CODEC_VERSIONS_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_codec_versions_pdu() { + assert_eq!( + CODEC_VERSIONS_PDU_BUFFER.len(), + CODEC_VERSIONS_PDU.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_channels_pdu() { + assert_eq!( + *CHANNELS_PDU, + ChannelsPdu::from_buffer(CHANNELS_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_channels_pdu() { + let expected = CHANNELS_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + CHANNELS_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn from_buffer_returns_error_on_invalid_data_length_for_channels_pdu() { + assert!( + ChannelsPdu::from_buffer(CHANNELS_PDU_BUFFER_WITH_INVALID_DATA_LENGTH.as_ref()).is_err() + ); +} + +#[test] +fn buffer_length_is_correct_for_channels_pdu() { + assert_eq!(CHANNELS_PDU_BUFFER.len(), CHANNELS_PDU.buffer_length()); +} + +#[test] +fn from_buffer_for_codec_channel_header_returns_error_on_zero_data_length() { + assert!(ContextPdu::from_buffer(CONTEXT_PDU_BUFFER_WITH_ZERO_DATA_LENGTH.as_ref()).is_err()); +} + +#[test] +fn from_buffer_for_codec_channel_header_returns_error_on_data_length_greater_then_available_data() { + assert!(ContextPdu::from_buffer(CONTEXT_PDU_BUFFER_WITH_BIG_DATA_LENGTH.as_ref()).is_err()); +} + +#[test] +fn from_buffer_correctly_parses_context_pdu() { + assert_eq!( + CONTEXT_PDU, + ContextPdu::from_buffer(CONTEXT_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_context_pdu() { + let expected = CONTEXT_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + CONTEXT_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_context_pdu() { + assert_eq!(CONTEXT_PDU_BUFFER.len(), CONTEXT_PDU.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_frame_begin_pdu() { + assert_eq!( + FRAME_BEGIN_PDU, + FrameBeginPdu::from_buffer(FRAME_BEGIN_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_frame_begin_pdu() { + let expected = FRAME_BEGIN_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FRAME_BEGIN_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_frame_begin_pdu() { + assert_eq!( + FRAME_BEGIN_PDU_BUFFER.len(), + FRAME_BEGIN_PDU.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_frame_end_pdu() { + assert_eq!( + FRAME_END_PDU, + FrameEndPdu::from_buffer(FRAME_END_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_frame_end_pdu() { + let expected = FRAME_END_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FRAME_END_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_frame_end_pdu() { + assert_eq!(FRAME_END_PDU_BUFFER.len(), FRAME_END_PDU.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_region_pdu() { + assert_eq!( + *REGION_PDU, + RegionPdu::from_buffer(REGION_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_region_pdu() { + let expected = REGION_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + REGION_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_region_pdu() { + assert_eq!(REGION_PDU_BUFFER.len(), REGION_PDU.buffer_length()); +} + +#[test] +fn from_buffer_returns_error_on_invalid_number_of_quants_for_tile_set_pdu() { + assert!( + TileSetPdu::from_buffer(TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS.as_ref()).is_err() + ); +} + +#[test] +fn from_buffer_returns_error_on_invalid_tiles_data_size_for_tile_set_pdu() { + assert!( + TileSetPdu::from_buffer(TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE.as_ref()).is_err() + ); +} + +#[test] +fn from_buffer_correctly_parses_tile_set_pdu() { + assert_eq!( + *TILESET_PDU, + TileSetPdu::from_buffer(TILESET_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_tile_set_pdu() { + let expected = TILESET_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + TILESET_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_tile_set_pdu() { + assert_eq!(TILESET_PDU_BUFFER.len(), TILESET_PDU.buffer_length()); +} diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 684a8015..eefdc2bf 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -1,3 +1,4 @@ +pub mod codecs; pub mod gcc; pub mod mcs; pub mod nego; @@ -30,3 +31,11 @@ pub trait PduParsing { fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error>; fn buffer_length(&self) -> usize; } + +pub trait PduBufferParsing: Sized { + type Error; + + fn from_buffer(buffer: &[u8]) -> Result; + fn to_buffer(&self, buffer: &mut [u8]) -> Result<(), Self::Error>; + fn buffer_length(&self) -> usize; +} diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 6a9869ee..3b4fc376 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -42,6 +42,27 @@ macro_rules! impl_from_error { }; } +#[macro_export] +macro_rules! from_buffer { + ($t:ty, $b:ident) => { + <$t>::from_buffer($b).and_then(|v| { + $b = &$b[v.buffer_length()..]; + + Ok(v) + }) + }; +} + +#[macro_export] +macro_rules! to_buffer { + ($p:ident, $b:ident) => {{ + let r = $p.to_buffer(&mut $b); + $b = &mut $b[$p.buffer_length()..]; + + r + }}; +} + pub fn string_to_utf16(value: &str) -> Vec { value .encode_utf16() From 8aee0452182cd0f9fe6baa8f8b04b465a61e7e85 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Tue, 28 Jan 2020 11:02:19 +0200 Subject: [PATCH 0026/1273] ironrdp: implement parsing of MultifragmentUpdate, LargePointer capability sets --- ironrdp/src/codecs/rfx/data_messages.rs | 2 +- ironrdp/src/rdp/capability_sets.rs | 51 +++++++++---- .../src/rdp/capability_sets/large_pointer.rs | 74 +++++++++++++++++++ .../capability_sets/multifragment_update.rs | 65 ++++++++++++++++ ironrdp/src/rdp/capability_sets/test.rs | 5 +- 5 files changed, 179 insertions(+), 18 deletions(-) create mode 100644 ironrdp/src/rdp/capability_sets/large_pointer.rs create mode 100644 ironrdp/src/rdp/capability_sets/multifragment_update.rs diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index 8ef33f37..0f767b95 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -328,7 +328,7 @@ impl<'a> TileSetPdu<'a> { let mut tiles_buffer = &buffer[..tiles_data_size]; let tiles = (0..number_of_tiles) - .map(|_| from_buffer!(Tile, tiles_buffer)) + .map(|_| from_buffer!(Tile<'_>, tiles_buffer)) .collect::, _>>()?; Ok(Self { diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index 8e5fd3ef..25f5d78b 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -8,6 +8,8 @@ mod brush; mod general; mod glyph_cache; mod input; +mod large_pointer; +mod multifragment_update; mod offscreen_bitmap_cache; mod order; mod pointer; @@ -30,6 +32,8 @@ pub use self::{ general::{General, GeneralExtraFlags, MajorPlatformType, MinorPlatformType}, glyph_cache::{CacheDefinition, GlyphCache, GlyphSupportLevel, GLYPH_CACHE_NUM}, input::{Input, InputFlags}, + large_pointer::{LargePointer, LargePointerSupportFlags}, + multifragment_update::MultifragmentUpdate, offscreen_bitmap_cache::OffscreenBitmapCache, order::{Order, OrderFlags, OrderSupportExFlags, OrderSupportIndex}, pointer::Pointer, @@ -215,8 +219,8 @@ pub enum CapabilitySet { Font(Vec), BitmapCacheHostSupport(Vec), DesktopComposition(Vec), - MultiFragmentUpdate(Vec), - LargePointer(Vec), + MultiFragmentUpdate(MultifragmentUpdate), + LargePointer(LargePointer), SurfaceCommands(SurfaceCommands), BitmapCodecs(BitmapCodecs), @@ -303,12 +307,12 @@ impl PduParsing for CapabilitySet { CapabilitySetType::DesktopComposition => { Ok(CapabilitySet::DesktopComposition(capability_set_buffer)) } - CapabilitySetType::MultiFragmentUpdate => { - Ok(CapabilitySet::MultiFragmentUpdate(capability_set_buffer)) - } - CapabilitySetType::LargePointer => { - Ok(CapabilitySet::LargePointer(capability_set_buffer)) - } + CapabilitySetType::MultiFragmentUpdate => Ok(CapabilitySet::MultiFragmentUpdate( + MultifragmentUpdate::from_buffer(&mut capability_set_buffer.as_slice())?, + )), + CapabilitySetType::LargePointer => Ok(CapabilitySet::LargePointer( + LargePointer::from_buffer(&mut capability_set_buffer.as_slice())?, + )), CapabilitySetType::ColorCache => Ok(CapabilitySet::ColorCache(capability_set_buffer)), CapabilitySetType::DrawNineGridCache => { Ok(CapabilitySet::DrawNineGridCache(capability_set_buffer)) @@ -461,6 +465,27 @@ impl PduParsing for CapabilitySet { )?; capset.to_buffer(&mut stream)?; } + CapabilitySet::MultiFragmentUpdate(capset) => { + stream.write_u16::( + CapabilitySetType::MultiFragmentUpdate.to_u16().unwrap(), + )?; + stream.write_u16::( + (capset.buffer_length() + + CAPABILITY_SET_TYPE_FIELD_SIZE + + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + )?; + capset.to_buffer(&mut stream)?; + } + CapabilitySet::LargePointer(capset) => { + stream + .write_u16::(CapabilitySetType::LargePointer.to_u16().unwrap())?; + stream.write_u16::( + (capset.buffer_length() + + CAPABILITY_SET_TYPE_FIELD_SIZE + + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + )?; + capset.to_buffer(&mut stream)?; + } _ => { let (capability_set_type, capability_set_buffer) = match self { CapabilitySet::Control(buffer) => (CapabilitySetType::Control, buffer), @@ -475,12 +500,6 @@ impl PduParsing for CapabilitySet { CapabilitySet::DesktopComposition(buffer) => { (CapabilitySetType::DesktopComposition, buffer) } - CapabilitySet::MultiFragmentUpdate(buffer) => { - (CapabilitySetType::MultiFragmentUpdate, buffer) - } - CapabilitySet::LargePointer(buffer) => { - (CapabilitySetType::LargePointer, buffer) - } CapabilitySet::ColorCache(buffer) => (CapabilitySetType::ColorCache, buffer), CapabilitySet::DrawNineGridCache(buffer) => { (CapabilitySetType::DrawNineGridCache, buffer) @@ -524,14 +543,14 @@ impl PduParsing for CapabilitySet { CapabilitySet::VirtualChannel(capset) => capset.buffer_length(), CapabilitySet::SurfaceCommands(capset) => capset.buffer_length(), CapabilitySet::BitmapCodecs(capset) => capset.buffer_length(), + CapabilitySet::MultiFragmentUpdate(capset) => capset.buffer_length(), + CapabilitySet::LargePointer(capset) => capset.buffer_length(), CapabilitySet::Control(buffer) | CapabilitySet::WindowActivation(buffer) | CapabilitySet::Share(buffer) | CapabilitySet::Font(buffer) | CapabilitySet::BitmapCacheHostSupport(buffer) | CapabilitySet::DesktopComposition(buffer) - | CapabilitySet::MultiFragmentUpdate(buffer) - | CapabilitySet::LargePointer(buffer) | CapabilitySet::ColorCache(buffer) | CapabilitySet::DrawNineGridCache(buffer) | CapabilitySet::DrawGdiPlus(buffer) diff --git a/ironrdp/src/rdp/capability_sets/large_pointer.rs b/ironrdp/src/rdp/capability_sets/large_pointer.rs new file mode 100644 index 00000000..7cf9a4ca --- /dev/null +++ b/ironrdp/src/rdp/capability_sets/large_pointer.rs @@ -0,0 +1,74 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use crate::{rdp::CapabilitySetsError, PduParsing}; + +#[derive(Debug, PartialEq, Clone)] +pub struct LargePointer { + pub flags: LargePointerSupportFlags, +} + +impl PduParsing for LargePointer { + type Error = CapabilitySetsError; + + fn from_buffer(mut buffer: impl io::Read) -> Result { + let flags = + LargePointerSupportFlags::from_bits_truncate(buffer.read_u16::()?); + + Ok(Self { flags }) + } + + fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { + buffer.write_u16::(self.flags.bits())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + } +} + +bitflags! { + pub struct LargePointerSupportFlags: u16 { + const UP_TO_96X96_PIXELS = 1; + const UP_TO_384X384_PIXELS = 2; + } +} + +#[cfg(test)] +mod test { + use super::*; + + const LARGE_POINTER_PDU_BUFFER: [u8; 2] = [0x01, 0x00]; + const LARGE_POINTER_PDU: LargePointer = LargePointer { + flags: LargePointerSupportFlags::UP_TO_96X96_PIXELS, + }; + + #[test] + fn from_buffer_correctly_parses_large_pointer() { + assert_eq!( + LARGE_POINTER_PDU, + LargePointer::from_buffer(LARGE_POINTER_PDU_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_large_pointer() { + let expected = LARGE_POINTER_PDU_BUFFER.as_ref(); + let mut buffer = Vec::with_capacity(expected.len()); + + LARGE_POINTER_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_large_pointer() { + assert_eq!( + LARGE_POINTER_PDU_BUFFER.len(), + LARGE_POINTER_PDU.buffer_length() + ); + } +} diff --git a/ironrdp/src/rdp/capability_sets/multifragment_update.rs b/ironrdp/src/rdp/capability_sets/multifragment_update.rs new file mode 100644 index 00000000..79860b98 --- /dev/null +++ b/ironrdp/src/rdp/capability_sets/multifragment_update.rs @@ -0,0 +1,65 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use crate::{rdp::CapabilitySetsError, PduParsing}; + +#[derive(Debug, PartialEq, Clone)] +pub struct MultifragmentUpdate { + pub max_request_size: u32, +} + +impl PduParsing for MultifragmentUpdate { + type Error = CapabilitySetsError; + + fn from_buffer(mut buffer: impl io::Read) -> Result { + let max_request_size = buffer.read_u32::()?; + + Ok(Self { max_request_size }) + } + + fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { + buffer.write_u32::(self.max_request_size)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[cfg(test)] +mod test { + use super::*; + + const MULTIFRAGMENT_UPDATE_PDU_BUFFER: [u8; 4] = [0xf4, 0xf3, 0xf2, 0xf1]; + const MULTIFRAGMENT_UPDATE_PDU: MultifragmentUpdate = MultifragmentUpdate { + max_request_size: 0xf1f2_f3f4, + }; + + #[test] + fn from_buffer_correctly_parses_multifragment_update() { + assert_eq!( + MULTIFRAGMENT_UPDATE_PDU, + MultifragmentUpdate::from_buffer(MULTIFRAGMENT_UPDATE_PDU_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_multifragment_update() { + let expected = MULTIFRAGMENT_UPDATE_PDU_BUFFER.as_ref(); + let mut buffer = Vec::with_capacity(expected.len()); + + MULTIFRAGMENT_UPDATE_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_multifragment_update() { + assert_eq!( + MULTIFRAGMENT_UPDATE_PDU_BUFFER.len(), + MULTIFRAGMENT_UPDATE_PDU.buffer_length() + ); + } +} diff --git a/ironrdp/src/rdp/capability_sets/test.rs b/ironrdp/src/rdp/capability_sets/test.rs index 9e85899b..9cf96a41 100644 --- a/ironrdp/src/rdp/capability_sets/test.rs +++ b/ironrdp/src/rdp/capability_sets/test.rs @@ -351,7 +351,10 @@ lazy_static! { ), CapabilitySet::DrawGdiPlus(CLIENT_DRAW_GDI_PLUS_CAPABILITY_SET.to_vec()), CapabilitySet::MultiFragmentUpdate( - CLIENT_MULTI_FRAGMENT_UPDATE_CAPABILITY_SET.to_vec() + MultifragmentUpdate::from_buffer( + CLIENT_MULTI_FRAGMENT_UPDATE_CAPABILITY_SET.as_ref() + ) + .unwrap() ), CapabilitySet::WindowList(CLIENT_WINDOW_LIST_CAPABILITY_SET.to_vec()), ], From 689364d3c2009f499636f2d18f2863ed36fd82a0 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 14 Feb 2020 15:47:59 +0200 Subject: [PATCH 0027/1273] ironrdp: update PduBufferParsing trait to use mutable reference on the slices --- ironrdp/src/codecs/rfx.rs | 13 +- ironrdp/src/codecs/rfx/data_messages.rs | 111 +++++++++--------- ironrdp/src/codecs/rfx/header_messages.rs | 46 ++++---- ironrdp/src/codecs/rfx/tests.rs | 60 ++++++---- ironrdp/src/lib.rs | 7 +- ironrdp/src/rdp/vc/dvc/gfx.rs | 6 +- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 41 +------ .../vc/dvc/gfx/graphics_messages/server.rs | 2 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 39 +----- ironrdp/src/utils.rs | 61 +++++++--- 10 files changed, 183 insertions(+), 203 deletions(-) diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index 244ff7a9..e2c94f26 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -9,6 +9,7 @@ pub use self::{ Tile, TileSetPdu, }, header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}, + rlgr::RlgrError, }; use std::io; @@ -34,8 +35,8 @@ struct BlockHeader { } impl BlockHeader { - fn from_buffer_with_type( - mut buffer: &[u8], + fn from_buffer_consume_with_type( + buffer: &mut &[u8], expected_type: BlockType, ) -> Result { let ty = BlockType::from_u16(buffer.read_u16::()?) @@ -63,7 +64,7 @@ impl BlockHeader { Ok(Self { ty, data_length }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { buffer.write_u16::(self.ty.to_u16().unwrap())?; buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; @@ -82,8 +83,8 @@ struct CodecChannelHeader { } impl CodecChannelHeader { - fn from_buffer_with_type( - mut buffer: &[u8], + fn from_buffer_consume_with_type( + buffer: &mut &[u8], expected_type: CodecChannelType, ) -> Result { let ty = CodecChannelType::from_u16(buffer.read_u16::()?) @@ -125,7 +126,7 @@ impl CodecChannelHeader { Ok(Self { ty, data_length }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { buffer.write_u16::(self.ty.to_u16().unwrap())?; buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; buffer.write_u8(CODEC_ID)?; diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index 0f767b95..e8a2e7aa 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -10,7 +10,8 @@ use super::{ BlockHeader, BlockType, CodecChannelHeader, CodecChannelType, RfxError, BLOCK_HEADER_SIZE, CODEC_CHANNEL_HEADER_SIZE, }; -use crate::{from_buffer, to_buffer, PduBufferParsing}; +use crate::{split_to, PduBufferParsing}; + const CONTEXT_ID: u8 = 0; const TILE_SIZE: u16 = 0x0040; const COLOR_CONVERSION_ICT: u16 = 1; @@ -34,9 +35,10 @@ pub struct ContextPdu { impl PduBufferParsing for ContextPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Context)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = + CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Context)?; + let mut buffer = split_to!(*buffer, header.data_length); let id = buffer.read_u8()?; if id != CONTEXT_ID { @@ -79,13 +81,13 @@ impl PduBufferParsing for ContextPdu { }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = CodecChannelHeader { ty: CodecChannelType::Context, data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u8(CONTEXT_ID)?; buffer.write_u16::(TILE_SIZE)?; @@ -115,10 +117,12 @@ pub struct FrameBeginPdu { impl PduBufferParsing for FrameBeginPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = - CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::FrameBegin)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = CodecChannelHeader::from_buffer_consume_with_type( + buffer, + CodecChannelType::FrameBegin, + )?; + let mut buffer = split_to!(*buffer, header.data_length); let index = buffer.read_u32::()?; let number_of_regions = buffer.read_i16::()?; @@ -129,13 +133,13 @@ impl PduBufferParsing for FrameBeginPdu { }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = CodecChannelHeader { ty: CodecChannelType::FrameBegin, data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u32::(self.index)?; buffer.write_i16::(self.number_of_regions)?; @@ -153,18 +157,19 @@ pub struct FrameEndPdu; impl PduBufferParsing for FrameEndPdu { type Error = RfxError; - fn from_buffer(buffer: &[u8]) -> Result { - let _header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::FrameEnd); + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let _header = + CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::FrameEnd); Ok(Self) } - fn to_buffer(&self, buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { CodecChannelHeader { ty: CodecChannelType::FrameEnd, data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, } - .to_buffer(buffer) + .to_buffer_consume(buffer) } fn buffer_length(&self) -> usize { @@ -174,15 +179,16 @@ impl PduBufferParsing for FrameEndPdu { #[derive(Debug, Clone, PartialEq)] pub struct RegionPdu { - pub rectangles: Vec, + pub rectangles: Vec, } impl PduBufferParsing for RegionPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Region)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = + CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Region)?; + let mut buffer = split_to!(*buffer, header.data_length); let region_flags = buffer.read_u8()?; let lrf = region_flags.get_bit(0); @@ -199,7 +205,7 @@ impl PduBufferParsing for RegionPdu { } let rectangles = (0..number_of_rectangles) - .map(|_| from_buffer!(Rectangle, buffer)) + .map(|_| RfxRectangle::from_buffer_consume(&mut buffer)) .collect::, _>>()?; let region_type = buffer.read_u16::()?; @@ -215,13 +221,13 @@ impl PduBufferParsing for RegionPdu { Ok(Self { rectangles }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = CodecChannelHeader { ty: CodecChannelType::Region, data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; let mut region_flags = 0; region_flags.set_bit(0, LRF); @@ -229,7 +235,7 @@ impl PduBufferParsing for RegionPdu { buffer.write_u16::(self.rectangles.len() as u16)?; for rectangle in self.rectangles.iter() { - to_buffer!(rectangle, buffer)?; + rectangle.to_buffer_consume(buffer)?; } buffer.write_u16::(CBT_REGION)?; @@ -257,10 +263,10 @@ pub struct TileSetPdu<'a> { } impl<'a> TileSetPdu<'a> { - pub fn from_buffer(mut buffer: &'a [u8]) -> Result { + pub fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { let header = - CodecChannelHeader::from_buffer_with_type(buffer, CodecChannelType::Extension)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Extension)?; + let mut buffer = split_to!(*buffer, header.data_length); let subtype = buffer.read_u16::()?; if subtype != CBT_TILESET { @@ -323,12 +329,11 @@ impl<'a> TileSetPdu<'a> { } let quants = (0..number_of_quants) - .map(|_| from_buffer!(Quant, buffer)) + .map(|_| Quant::from_buffer_consume(&mut buffer)) .collect::, _>>()?; - let mut tiles_buffer = &buffer[..tiles_data_size]; let tiles = (0..number_of_tiles) - .map(|_| from_buffer!(Tile<'_>, tiles_buffer)) + .map(|_| Tile::from_buffer_consume(&mut buffer)) .collect::, _>>()?; Ok(Self { @@ -338,13 +343,13 @@ impl<'a> TileSetPdu<'a> { }) } - pub fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + pub fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { let header = CodecChannelHeader { ty: CodecChannelType::Extension, data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u16::(CBT_TILESET)?; buffer.write_u16::(IDX)?; @@ -365,11 +370,11 @@ impl<'a> TileSetPdu<'a> { buffer.write_u32::(tiles_data_size)?; for quant in self.quants.iter() { - to_buffer!(quant, buffer)?; + quant.to_buffer_consume(buffer)?; } for tile in self.tiles.iter() { - to_buffer!(tile, buffer)?; + tile.to_buffer_consume(buffer)?; } Ok(()) @@ -388,17 +393,17 @@ impl<'a> TileSetPdu<'a> { } #[derive(Debug, Clone, PartialEq)] -pub struct Rectangle { +pub struct RfxRectangle { pub x: u16, pub y: u16, pub width: u16, pub height: u16, } -impl PduBufferParsing for Rectangle { +impl PduBufferParsing for RfxRectangle { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let x = buffer.read_u16::()?; let y = buffer.read_u16::()?; let width = buffer.read_u16::()?; @@ -412,7 +417,7 @@ impl PduBufferParsing for Rectangle { }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u16::(self.x)?; buffer.write_u16::(self.y)?; buffer.write_u16::(self.width)?; @@ -443,7 +448,7 @@ pub struct Quant { impl PduBufferParsing for Quant { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let level3 = buffer.read_u16::()?; let ll3 = level3.get_bits(0..4) as u8; let lh3 = level3.get_bits(4..8) as u8; @@ -474,7 +479,7 @@ impl PduBufferParsing for Quant { }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let mut level3 = 0; level3.set_bits(0..4, u16::from(self.ll3)); level3.set_bits(4..8, u16::from(self.lh3)); @@ -509,8 +514,8 @@ pub struct Tile<'a> { pub cb_quant_index: u8, pub cr_quant_index: u8, - pub x_tile_index: u16, - pub y_tile_index: u16, + pub x: u16, + pub y: u16, pub y_data: &'a [u8], pub cb_data: &'a [u8], @@ -518,16 +523,16 @@ pub struct Tile<'a> { } impl<'a> Tile<'a> { - pub fn from_buffer(mut buffer: &'a [u8]) -> Result { - let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Tile)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + pub fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Tile)?; + let mut buffer = split_to!(*buffer, header.data_length); let y_quant_index = buffer.read_u8()?; let cb_quant_index = buffer.read_u8()?; let cr_quant_index = buffer.read_u8()?; - let x_tile_index = buffer.read_u16::()?; - let y_tile_index = buffer.read_u16::()?; + let x = buffer.read_u16::()?; + let y = buffer.read_u16::()?; let y_component_length = buffer.read_u16::()? as usize; let cb_component_length = buffer.read_u16::()? as usize; @@ -553,8 +558,8 @@ impl<'a> Tile<'a> { cb_quant_index, cr_quant_index, - x_tile_index, - y_tile_index, + x, + y, y_data, cb_data, @@ -562,19 +567,19 @@ impl<'a> Tile<'a> { }) } - pub fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), RfxError> { + pub fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { let header = BlockHeader { ty: BlockType::Tile, data_length: self.buffer_length() - BLOCK_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u8(self.y_quant_index)?; buffer.write_u8(self.cb_quant_index)?; buffer.write_u8(self.cr_quant_index)?; - buffer.write_u16::(self.x_tile_index)?; - buffer.write_u16::(self.y_tile_index)?; + buffer.write_u16::(self.x)?; + buffer.write_u16::(self.y)?; buffer.write_u16::(self.y_data.len() as u16)?; buffer.write_u16::(self.cb_data.len() as u16)?; diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp/src/codecs/rfx/header_messages.rs index f811a6e7..dfcf996e 100644 --- a/ironrdp/src/codecs/rfx/header_messages.rs +++ b/ironrdp/src/codecs/rfx/header_messages.rs @@ -1,7 +1,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{BlockHeader, BlockType, RfxError, BLOCK_HEADER_SIZE}; -use crate::{from_buffer, to_buffer, PduBufferParsing}; +use crate::{split_to, PduBufferParsing}; const SYNC_MAGIC: u32 = 0xCACC_ACCA; const SYNC_VERSION: u16 = 0x0100; @@ -18,9 +18,9 @@ pub struct SyncPdu; impl PduBufferParsing for SyncPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Sync)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Sync)?; + let mut buffer = split_to!(*buffer, header.data_length); let magic = buffer.read_u32::()?; if magic != SYNC_MAGIC { @@ -34,13 +34,13 @@ impl PduBufferParsing for SyncPdu { } } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = BlockHeader { ty: BlockType::Sync, data_length: self.buffer_length() - BLOCK_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u32::(SYNC_MAGIC)?; buffer.write_u16::(SYNC_VERSION)?; @@ -58,9 +58,9 @@ pub struct CodecVersionsPdu; impl PduBufferParsing for CodecVersionsPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = BlockHeader::from_buffer_with_type(buffer, BlockType::CodecVersions)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::CodecVersions)?; + let mut buffer = split_to!(*buffer, header.data_length); let codecs_number = buffer.read_u8()?; if codecs_number != CODECS_NUMBER { @@ -72,16 +72,16 @@ impl PduBufferParsing for CodecVersionsPdu { Ok(Self) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = BlockHeader { ty: BlockType::CodecVersions, data_length: self.buffer_length() - BLOCK_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u8(CODECS_NUMBER)?; - CodecVersion.to_buffer(&mut buffer) + CodecVersion.to_buffer_consume(buffer) } fn buffer_length(&self) -> usize { @@ -95,9 +95,9 @@ pub struct ChannelsPdu(pub Vec); impl PduBufferParsing for ChannelsPdu { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { - let header = BlockHeader::from_buffer_with_type(buffer, BlockType::Channels)?; - buffer = &buffer[header.buffer_length()..header.buffer_length() + header.data_length]; + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Channels)?; + let mut buffer = split_to!(*buffer, header.data_length); let channels_number = buffer.read_u8()? as usize; @@ -109,23 +109,23 @@ impl PduBufferParsing for ChannelsPdu { } let channels = (0..channels_number) - .map(|_| from_buffer!(Channel, buffer)) + .map(|_| Channel::from_buffer_consume(&mut buffer)) .collect::, _>>()?; Ok(Self(channels)) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = BlockHeader { ty: BlockType::Channels, data_length: self.buffer_length() - BLOCK_HEADER_SIZE, }; - to_buffer!(header, buffer)?; + header.to_buffer_consume(buffer)?; buffer.write_u8(self.0.len() as u8)?; for channel in self.0.iter() { - to_buffer!(channel, buffer)?; + channel.to_buffer_consume(buffer)?; } Ok(()) @@ -151,7 +151,7 @@ pub struct Channel { impl PduBufferParsing for Channel { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let id = buffer.read_u8()?; if id != CHANNEL_ID { return Err(RfxError::InvalidChannelId(id)); @@ -163,7 +163,7 @@ impl PduBufferParsing for Channel { Ok(Self { width, height }) } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u8(CHANNEL_ID)?; buffer.write_i16::(self.width)?; buffer.write_i16::(self.height)?; @@ -182,7 +182,7 @@ struct CodecVersion; impl PduBufferParsing for CodecVersion { type Error = RfxError; - fn from_buffer(mut buffer: &[u8]) -> Result { + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let id = buffer.read_u8()?; if id != CODEC_ID { return Err(RfxError::InvalidCodecId(id)); @@ -196,7 +196,7 @@ impl PduBufferParsing for CodecVersion { } } - fn to_buffer(&self, mut buffer: &mut [u8]) -> Result<(), Self::Error> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u8(CODEC_ID)?; buffer.write_u16::(CODEC_VERSION)?; diff --git a/ironrdp/src/codecs/rfx/tests.rs b/ironrdp/src/codecs/rfx/tests.rs index 2ac833c0..6abd5d22 100644 --- a/ironrdp/src/codecs/rfx/tests.rs +++ b/ironrdp/src/codecs/rfx/tests.rs @@ -239,13 +239,13 @@ lazy_static! { ]); static ref REGION_PDU: RegionPdu = RegionPdu { rectangles: vec![ - Rectangle { + RfxRectangle { x: 0, y: 0, width: 64, height: 64 }, - Rectangle { + RfxRectangle { x: 64, y: 64, width: 0xff, @@ -276,8 +276,8 @@ lazy_static! { cb_quant_index: 0, cr_quant_index: 0, - x_tile_index: 0, - y_tile_index: 0, + x: 0, + y: 0, y_data: &TILE1_Y_DATA, cb_data: &TILE1_CB_DATA, @@ -288,8 +288,8 @@ lazy_static! { cb_quant_index: 0xff, cr_quant_index: 0xff, - x_tile_index: 0xffff, - y_tile_index: 0xffff, + x: 0xffff, + y: 0xffff, y_data: &TILE2_Y_DATA, cb_data: &TILE2_CB_DATA, @@ -322,7 +322,9 @@ fn to_buffer_correctly_serializes_sync_pdu() { let expected = SYNC_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - SYNC_PDU.to_buffer(&mut buffer).unwrap(); + SYNC_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -344,7 +346,9 @@ fn to_buffer_correctly_serializes_codec_versions_pdu() { let expected = CODEC_VERSIONS_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - CODEC_VERSIONS_PDU.to_buffer(&mut buffer).unwrap(); + CODEC_VERSIONS_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -369,7 +373,9 @@ fn to_buffer_correctly_serializes_channels_pdu() { let expected = CHANNELS_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - CHANNELS_PDU.to_buffer(&mut buffer).unwrap(); + CHANNELS_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -408,7 +414,9 @@ fn to_buffer_correctly_serializes_context_pdu() { let expected = CONTEXT_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - CONTEXT_PDU.to_buffer(&mut buffer).unwrap(); + CONTEXT_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -430,7 +438,9 @@ fn to_buffer_correctly_serializes_frame_begin_pdu() { let expected = FRAME_BEGIN_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - FRAME_BEGIN_PDU.to_buffer(&mut buffer).unwrap(); + FRAME_BEGIN_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -455,7 +465,9 @@ fn to_buffer_correctly_serializes_frame_end_pdu() { let expected = FRAME_END_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - FRAME_END_PDU.to_buffer(&mut buffer).unwrap(); + FRAME_END_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -477,7 +489,9 @@ fn to_buffer_correctly_serializes_region_pdu() { let expected = REGION_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - REGION_PDU.to_buffer(&mut buffer).unwrap(); + REGION_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -488,23 +502,25 @@ fn buffer_length_is_correct_for_region_pdu() { #[test] fn from_buffer_returns_error_on_invalid_number_of_quants_for_tile_set_pdu() { - assert!( - TileSetPdu::from_buffer(TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS.as_ref()).is_err() - ); + assert!(TileSetPdu::from_buffer_consume( + &mut TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS.as_ref() + ) + .is_err()); } #[test] fn from_buffer_returns_error_on_invalid_tiles_data_size_for_tile_set_pdu() { - assert!( - TileSetPdu::from_buffer(TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE.as_ref()).is_err() - ); + assert!(TileSetPdu::from_buffer_consume( + &mut TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE.as_ref() + ) + .is_err()); } #[test] fn from_buffer_correctly_parses_tile_set_pdu() { assert_eq!( *TILESET_PDU, - TileSetPdu::from_buffer(TILESET_PDU_BUFFER.as_ref()).unwrap() + TileSetPdu::from_buffer_consume(&mut TILESET_PDU_BUFFER.as_ref()).unwrap() ); } @@ -513,7 +529,9 @@ fn to_buffer_correctly_serializes_tile_set_pdu() { let expected = TILESET_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - TILESET_PDU.to_buffer(&mut buffer).unwrap(); + TILESET_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index eefdc2bf..c2a82158 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -35,7 +35,10 @@ pub trait PduParsing { pub trait PduBufferParsing: Sized { type Error; - fn from_buffer(buffer: &[u8]) -> Result; - fn to_buffer(&self, buffer: &mut [u8]) -> Result<(), Self::Error>; + fn from_buffer(mut buffer: &[u8]) -> Result { + Self::from_buffer_consume(&mut buffer) + } + fn from_buffer_consume(buffer: &mut &[u8]) -> Result; + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error>; fn buffer_length(&self) -> usize; } diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index 454ac285..484037ec 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -9,9 +9,9 @@ pub use graphics_messages::{ CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, - FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, Rectangle, - ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, - WireToSurface1Pdu, WireToSurface2Pdu, + FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, + SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, WireToSurface1Pdu, + WireToSurface2Pdu, }; use std::io; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs index c5f400da..9b0dc15d 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -21,7 +21,7 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::RDP_GFX_HEADER_SIZE; -use crate::{gcc::MonitorDataError, impl_from_error, PduParsing}; +use crate::{gcc::MonitorDataError, impl_from_error, utils::Rectangle, PduParsing}; const CAPABILITY_SET_HEADER_SIZE: usize = 8; @@ -157,45 +157,6 @@ impl PduParsing for CapabilitySet { } } -#[derive(Debug, Clone, PartialEq)] -pub struct Rectangle { - pub left: u16, - pub top: u16, - pub right: u16, - pub bottom: u16, -} - -impl PduParsing for Rectangle { - type Error = GraphicsMessagesError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let left = stream.read_u16::()?; - let top = stream.read_u16::()?; - let right = stream.read_u16::()?; - let bottom = stream.read_u16::()?; - - Ok(Self { - left, - top, - right, - bottom, - }) - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u16::(self.left)?; - stream.write_u16::(self.top)?; - stream.write_u16::(self.right)?; - stream.write_u16::(self.bottom)?; - - Ok(()) - } - - fn buffer_length(&self) -> usize { - 8 - } -} - #[derive(Debug, Clone, PartialEq)] pub struct Color { b: u8, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index 2f5f229c..014760b9 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -153,7 +153,7 @@ impl PduParsing for SolidFillPdu { let rectangles_count = stream.read_u16::()?; let rectangles = (0..rectangles_count) - .map(|_| Rectangle::from_buffer(&mut stream)) + .map(|_| Rectangle::from_buffer(&mut stream).map_err(GraphicsMessagesError::from)) .collect::, Self::Error>>()?; Ok(Self { diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index c5c893a7..41dfca72 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -3,17 +3,14 @@ mod control_messages; #[cfg(test)] mod tests; -use std::{ - io::{self, Write}, - ops, -}; +use std::io::{self, Write}; use bitvec::prelude::{bits, BitField, BitSlice, Msb0}; use byteorder::WriteBytesExt; use failure::Fail; use lazy_static::lazy_static; -use crate::impl_from_error; +use crate::{impl_from_error, utils::Bits}; use circular_buffer::FixedCircularBuffer; use control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; @@ -145,38 +142,6 @@ impl Default for Decompressor { } } -struct Bits<'a> { - bits_slice: &'a BitSlice, - remaining_bits_of_last_byte: usize, -} - -impl<'a> Bits<'a> { - pub fn new(bits_slice: &'a BitSlice) -> Self { - Self { - bits_slice, - remaining_bits_of_last_byte: 0, - } - } - pub fn split_to(&mut self, at: usize) -> &'a BitSlice { - let (value, new_bits) = self.bits_slice.split_at(at); - self.bits_slice = new_bits; - self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; - - value - } - pub fn remaining_bits_of_last_byte(&self) -> usize { - self.remaining_bits_of_last_byte - } -} - -impl<'a> ops::Deref for Bits<'a> { - type Target = BitSlice; - - fn deref(&self) -> &Self::Target { - self.bits_slice - } -} - fn handle_match( bits: &mut Bits<'_>, distance_value_size: usize, diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 3b4fc376..0f2cb4a7 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -1,12 +1,18 @@ pub mod rc4; pub mod rsa; -use std::io; +use std::{ + cmp::{max, min}, + io, ops, +}; +use bitvec::prelude::{BitSlice, Msb0}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::ToPrimitive; +use crate::PduParsing; + #[macro_export] macro_rules! try_read_optional { ($e:expr, $ret:expr) => { @@ -43,23 +49,12 @@ macro_rules! impl_from_error { } #[macro_export] -macro_rules! from_buffer { - ($t:ty, $b:ident) => { - <$t>::from_buffer($b).and_then(|v| { - $b = &$b[v.buffer_length()..]; +macro_rules! split_to { + ($buffer:expr, $n:expr) => {{ + let splitted = &$buffer[..$n]; + $buffer = &$buffer[$n..]; - Ok(v) - }) - }; -} - -#[macro_export] -macro_rules! to_buffer { - ($p:ident, $b:ident) => {{ - let r = $p.to_buffer(&mut $b); - $b = &mut $b[$p.buffer_length()..]; - - r + splitted }}; } @@ -129,3 +124,35 @@ pub fn write_string_with_null_terminator( } } } + +pub struct Bits<'a> { + bits_slice: &'a BitSlice, + remaining_bits_of_last_byte: usize, +} + +impl<'a> Bits<'a> { + pub fn new(bits_slice: &'a BitSlice) -> Self { + Self { + bits_slice, + remaining_bits_of_last_byte: 0, + } + } + pub fn split_to(&mut self, at: usize) -> &'a BitSlice { + let (value, new_bits) = self.bits_slice.split_at(at); + self.bits_slice = new_bits; + self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; + + value + } + pub fn remaining_bits_of_last_byte(&self) -> usize { + self.remaining_bits_of_last_byte + } +} + +impl<'a> ops::Deref for Bits<'a> { + type Target = BitSlice; + + fn deref(&self) -> &Self::Target { + self.bits_slice + } +} \ No newline at end of file From 8c2984cc4c7ac60c0072e67c315c80fe910cf365 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 14 Feb 2020 16:30:55 +0200 Subject: [PATCH 0028/1273] ironrdp: implement RFX decoding with bands reconstruction --- ironrdp/src/codecs/rfx.rs | 7 + ironrdp/src/codecs/rfx/color_conversion.rs | 86 + .../src/codecs/rfx/color_conversion/tests.rs | 1925 +++++++++++++++++ ironrdp/src/codecs/rfx/dwt.rs | 105 + ironrdp/src/codecs/rfx/dwt/tests.rs | 706 ++++++ ironrdp/src/codecs/rfx/quantization.rs | 402 ++++ .../src/codecs/rfx/rectangles_processing.rs | 426 ++++ .../codecs/rfx/rectangles_processing/tests.rs | 1238 +++++++++++ ironrdp/src/codecs/rfx/rlgr.rs | 255 +++ ironrdp/src/codecs/rfx/rlgr/tests.rs | 707 ++++++ .../src/codecs/rfx/subband_reconstruction.rs | 64 + ironrdp/src/utils.rs | 85 +- 12 files changed, 6005 insertions(+), 1 deletion(-) create mode 100644 ironrdp/src/codecs/rfx/color_conversion.rs create mode 100644 ironrdp/src/codecs/rfx/color_conversion/tests.rs create mode 100644 ironrdp/src/codecs/rfx/dwt.rs create mode 100644 ironrdp/src/codecs/rfx/dwt/tests.rs create mode 100644 ironrdp/src/codecs/rfx/quantization.rs create mode 100644 ironrdp/src/codecs/rfx/rectangles_processing.rs create mode 100644 ironrdp/src/codecs/rfx/rectangles_processing/tests.rs create mode 100644 ironrdp/src/codecs/rfx/rlgr.rs create mode 100644 ironrdp/src/codecs/rfx/rlgr/tests.rs create mode 100644 ironrdp/src/codecs/rfx/subband_reconstruction.rs diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index e2c94f26..2c88b9c2 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -1,3 +1,10 @@ +pub mod color_conversion; +pub mod dwt; +pub mod quantization; +pub mod rectangles_processing; +pub mod rlgr; +pub mod subband_reconstruction; + mod data_messages; mod header_messages; #[cfg(test)] diff --git a/ironrdp/src/codecs/rfx/color_conversion.rs b/ironrdp/src/codecs/rfx/color_conversion.rs new file mode 100644 index 00000000..3be52c3a --- /dev/null +++ b/ironrdp/src/codecs/rfx/color_conversion.rs @@ -0,0 +1,86 @@ +#[cfg(test)] +mod tests; + +use std::{ + cmp::{max, min}, + io::{self, Write}, +}; + +const DIVISOR: f32 = (1 << 16) as f32; +const ALPHA: u8 = 255; + +pub fn ycbcr_to_rgb(input: YCbCrBuffer<'_>, mut output: &mut [u8]) -> io::Result<()> { + for ycbcr in input { + let pixel = Rgb::from(ycbcr); + + output.write_all(&[pixel.b, pixel.g, pixel.r, ALPHA])?; + } + + Ok(()) +} + +fn clip(v: i32) -> u8 { + min(max(v, 0), 255) as u8 +} + +#[derive(Debug)] +pub struct YCbCrBuffer<'a> { + pub y: &'a [i16], + pub cb: &'a [i16], + pub cr: &'a [i16], +} + +impl Iterator for YCbCrBuffer<'_> { + type Item = YCbCr; + + fn next(&mut self) -> Option { + if !self.y.is_empty() && !self.cb.is_empty() && !self.cr.is_empty() { + let y = self.y[0]; + let cb = self.cb[0]; + let cr = self.cr[0]; + + self.y = &self.y[1..]; + self.cb = &self.cb[1..]; + self.cr = &self.cr[1..]; + + Some(YCbCr { y, cb, cr }) + } else { + None + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct YCbCr { + pub y: i16, + pub cb: i16, + pub cr: i16, +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct Rgb { + pub r: u8, + pub g: u8, + pub b: u8, +} + +impl From for Rgb { + fn from(YCbCr { y, cb, cr }: YCbCr) -> Self { + let y = i32::from(y); + let cb = i32::from(cb); + let cr = i32::from(cr); + + let yy = (y + 4096) << 16; + let cr_r = cr.overflowing_mul((1.402_525 * DIVISOR) as i32).0; + let cb_g = cb.overflowing_mul((0.343_730 * DIVISOR) as i32).0; + let cr_g = cr.overflowing_mul((0.714_401 * DIVISOR) as i32).0; + let cb_b = cb.overflowing_mul((1.769_905 * DIVISOR) as i32).0; + let cr_b = cb.overflowing_mul((0.000_013 * DIVISOR) as i32).0; + + let r = clip((yy.overflowing_add(cr_r).0) >> 21); + let g = clip((yy.overflowing_sub(cb_g).0.overflowing_sub(cr_g).0) >> 21); + let b = clip((yy.overflowing_add(cb_b).0.overflowing_add(cr_b).0) >> 21); + + Self { r, g, b } + } +} diff --git a/ironrdp/src/codecs/rfx/color_conversion/tests.rs b/ironrdp/src/codecs/rfx/color_conversion/tests.rs new file mode 100644 index 00000000..cabdff81 --- /dev/null +++ b/ironrdp/src/codecs/rfx/color_conversion/tests.rs @@ -0,0 +1,1925 @@ +use std::i16; + +use super::*; + +#[test] +fn rgb_from_ycbcr_works_for_zeros() { + let ycbcr = YCbCr { y: 0, cb: 0, cr: 0 }; + + let expected = Rgb { + r: 128, + g: 128, + b: 128, + }; + let actual = Rgb::from(ycbcr); + assert_eq!(expected, actual); +} + +#[test] +fn rgb_from_ycbcr_works_for_max_values() { + let ycbcr = YCbCr { + y: 32767, + cb: 32767, + cr: 32767, + }; + + let expected = Rgb { + r: 255, + g: 68, + b: 255, + }; + let actual = Rgb::from(ycbcr); + assert_eq!(expected, actual); +} + +#[test] +fn rgb_from_ycbcr_works_for_min_values() { + let ycbcr = YCbCr { + y: -32768, + cb: -32768, + cr: -32768, + }; + + let expected = Rgb { r: 0, g: 187, b: 0 }; + let actual = Rgb::from(ycbcr); + assert_eq!(expected, actual); +} + +#[test] +fn rgb_from_ycbcr_works_for_regular_values() { + let ycbcr = YCbCr { + y: 68, + cb: 1710, + cr: -2128, + }; + + let expected = Rgb { + r: 36, + g: 159, + b: 224, + }; + let actual = Rgb::from(ycbcr); + assert_eq!(expected, actual); +} + +#[test] +fn ycbcr_to_rgb_converts_one_element_buffer() { + let ycbcr = YCbCrBuffer { + y: &[1], + cb: &[2], + cr: &[3], + }; + let expected = [128, 127, 128, 255]; + + let mut actual = vec![0; 4]; + ycbcr_to_rgb(ycbcr, actual.as_mut()).unwrap(); + assert_eq!(expected.as_ref(), actual.as_slice()); +} + +#[test] +fn ycbcr_to_rgb_converts_large_buffer() { + let ycbcr = YCbCrBuffer { + y: YCBCR_BUFFER_Y.as_ref(), + cb: YCBCR_BUFFER_CB.as_ref(), + cr: YCBCR_BUFFER_CR.as_ref(), + }; + let expected = RGB_BUFFER.as_ref(); + + let mut output = vec![0; 4 * 64 * 64]; + ycbcr_to_rgb(ycbcr, output.as_mut()).unwrap(); + assert_eq!(expected, output.as_slice()); +} + +const YCBCR_BUFFER_Y: [i16; 4096] = [ + -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, + -72, -98, -124, -150, -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, + -304, -336, -368, -400, -432, -450, -468, -486, -504, -522, -540, -558, -576, -598, -620, -642, + -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, -816, -816, 68, 120, 172, 240, 53, + 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, -120, -146, + -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, + -404, -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, + -733, -754, -775, -796, -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, + 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, -64, -90, -116, -106, -95, -148, -201, -199, -196, + -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, -358, -379, -401, -422, -448, -473, + -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, -776, -776, -776, + -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, + 54, 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, + -219, -237, -254, -271, -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, + -589, -648, -707, -670, -632, -663, -694, -725, -756, -756, -756, -756, 368, 401, 434, 339, + 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, 94, 100, 106, 112, 86, 60, 2, + -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, -228, -240, + -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, + -628, -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, + 282, 260, 238, 246, 254, 118, 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, + -232, -273, -123, 29, -63, -155, -151, -146, -164, -181, -199, -216, -241, -266, -291, -315, + -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, -625, -642, -675, -708, + -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, 356, + -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, + -245, -176, -139, -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, + -400, -395, -455, -514, -558, -601, -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, + 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, 346, 258, -342, -302, -6, 288, 582, 604, + 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, -293, -175, -57, -85, + -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, -487, + -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, + 460, 430, 400, 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, + 1120, 1155, 1190, 1097, 1004, 839, 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, + -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, -368, -464, -416, -368, -448, -528, + -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, 464, 462, 492, + 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, + 1403, 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, + -172, -194, -217, -239, -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, + -601, -617, -633, -633, 772, 701, 630, 623, 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, + -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, 1711, 1806, 1709, 1612, 1531, + 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, -124, -145, + -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, + -642, 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, + 794, 1073, 1575, 1822, 1976, 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, + 1266, 1156, 902, 137, -61, -3, -121, -238, -124, -9, -70, -131, -166, -201, -221, -239, -272, + -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, -667, -619, -619, 776, 760, + 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, 1524, + 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, + 16, -2, -20, 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, + -290, -264, -142, -20, 2956, 2860, -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, + 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, 1081, 1303, 1668, 2034, 2313, 2337, + 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, 40, 74, 748, + 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, + 3007, 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, + 605, 681, 758, 110, 487, 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, + 2829, 2972, 2791, 2610, 2525, 2440, 2341, 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, + 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, -742, 2290, 1738, -1118, -902, + -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, 970, 589, + 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, + 2849, 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, + 485, 350, 216, 145, 75, -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, + 950, 924, 898, 872, 846, 820, 794, 768, 806, 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, + 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, 3314, 3173, 3032, 2941, 1826, + -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, 592, 484, + 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, + 888, 864, 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, + 3023, 3157, 3291, 3350, 3409, 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, + 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, 1545, 1403, 1254, 1106, 974, 842, 1229, + 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, 984, 954, 931, 909, + 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, + 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, + 2666, 2652, 2639, 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, + 170, -92, -354, 1560, 3986, 1970, -558, -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, + 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, 2522, 2781, 3066, 3351, 3443, 3537, + 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, 3062, 2927, + 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, + 10, -263, -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, + 690, 203, 740, 1573, 1894, 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, + 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, -10, 187, -128, 3341, 3226, 3207, 3188, 3236, + 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, 1539, 1158, 777, 396, 112, + -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, 969, + 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, + 3243, 3521, 3800, 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, + 3430, 3361, 3292, 3174, 3057, 3004, 2951, 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, + -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, 1078, 1055, 967, 880, 1114, + 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, 3674, + 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, + 3577, 3518, 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, + -14, -452, -378, -314, -250, -250, 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, + 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, 3543, 3514, 3486, 3729, 3717, 3775, + 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, 3627, 3643, + 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, + 1, -402, -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, + 344, 660, 976, 1284, 2104, 2316, 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, + 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, 3988, 3609, 3742, 3715, 3688, 3715, + 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, 1238, 880, 448, + 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, + 382, 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, + 4074, 3964, 3855, 4337, 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, + 3781, 3604, 3427, 3202, 2977, 2838, 2699, 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, + -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, 1051, 1103, 1156, 20, 933, 950, + 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, 3752, 3784, + 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, + 3292, 3375, 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, + -324, -324, 1392, 1364, 1337, 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, + 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, 736, 649, 563, 332, 102, 1939, 4033, 1982, + 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, 3752, 3806, 3861, 3836, + 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, -286, + 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, + 1204, 1564, 901, 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, + 340, 856, 4028, 4128, 4076, 4024, 4004, 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, + 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, 28, -248, -248, -248, -248, 1456, + 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, -355, 394, 1401, + 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, + 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, + 2880, 2585, 2291, 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, + 1379, 1332, 1286, 1371, 1457, 1030, -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, + 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, 3042, 496, 530, 564, 502, 440, 211, 3055, + 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, 3323, 3094, 2858, 2623, + 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, + 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, + 2150, 2503, 2857, 3105, 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, + 2113, 3945, 4116, 4031, 3946, 3862, 3838, 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, + 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, -222, -254, -254, 1504, 1462, 1420, + 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, 2120, 2322, 2524, + 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, + 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, + 1300, 1071, 842, 69, -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, + 1413, 1627, 1330, -2103, -1184, -820, -712, -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, + 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, 357, 656, 699, 198, 466, 381, 297, + 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, 1931, 1189, 447, + 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, + 1497, 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, + 3533, 3656, 3715, 3774, 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, + 526, 226, -74, 286, 1158, 1678, 1686, 1634, 1582, 1114, 646, 239, -168, -31, 107, -228, -51, + -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, 1470, 1439, 1591, -817, + -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, 3674, + 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, + 325, 108, 147, 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, + -87, -140, -204, -268, -268, 1672, 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, + -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, 3574, 3633, 3693, 3688, 3684, 3661, + 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, 212, 186, 160, + 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, + -144, -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, + 400, 806, 1468, 1938, 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, + 851, 820, 533, 438, 3415, 4252, 4066, 4055, 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, + -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, 96, -19, -134, -137, -140, -204, + -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, 111, 388, 613, + 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, + 832, 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, + 3554, 3610, 3666, 3459, 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, + -264, -264, 1662, 1653, 1644, 1619, 1851, -988, -1267, -986, -704, -402, -100, 10, 120, 404, + 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, 3238, 3303, 3576, 521, 554, + 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, 3989, 3866, + 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, + -260, -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, + 1050, 1585, 2120, 2389, 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, + 342, 2951, 4024, 4015, 4006, 3997, 3988, 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, + 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, -32, -72, -112, -120, -128, -192, + -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, 719, 706, + 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, + 327, 4207, 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, + 3929, 3812, 3695, 3604, 3513, 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, + -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, -1220, -885, -550, -208, 134, 92, 563, 449, + 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, 2460, 843, 763, 794, + 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, 3506, + 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, + -188, 1598, 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, + 435, 702, 870, 1039, 1224, 1409, 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, + 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, + 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, -154, -154, -154, -154, 1784, + 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, 202, 400, + 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, + 3862, 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, + 2623, 2592, 2562, -237, 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, + -286, -1291, -1130, -713, -393, -327, -387, -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, + 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, 3843, 3776, 3789, 3802, 3783, 3764, + 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, 2484, 2617, 1982, + -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, + -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, + 353, 602, 809, 1017, 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, + 3629, 3584, 3523, 3462, 3401, 3341, 3264, 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, + 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, -2834, -956, -2076, -2173, + -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, -304, + -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, + 3558, 3535, 3512, 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, + 270, 154, 38, -6, -50, -110, -170, -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, + -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, 824, -310, -932, -1394, -832, -750, + -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, 3444, 3443, + 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, + 50, 17, -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, + 2045, 1672, 1555, 1328, 1614, 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, + -769, -821, -617, 926, 934, 909, 1397, 3323, 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, + 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, 2291, 2115, 1283, -61, 137, + 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, 1552, + 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, + -1344, -794, 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, + 3449, 3186, 3153, 3121, 3056, 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, + 6, -26, -58, -90, -122, -122, -122, -122, 1516, 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, + 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, 953, 1160, 1111, 117, -363, + 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, 3091, + 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, + -79, -111, -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, + 1286, 1234, 1213, 1193, 1172, 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, + 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, 2798, 3007, 2705, 3106, 2996, 2962, 2928, + 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, -4, -36, -68, -100, + -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, + 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, + 2235, 2439, 2132, 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, + 2324, 2105, 1887, 1733, 811, -79, 55, 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, + 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, 1320, 1279, 1239, 1214, 1189, 1164, + 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, 1472, 2048, + 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, + 1754, 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, + 1852, 1692, 1532, 1494, 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, + 1064, 1030, 995, 996, 998, 935, 873, 878, 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, + 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, 1613, 1745, 1621, 1153, -83, + -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, 1464, + 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, + 979, 962, 945, 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, + 1488, 1844, 1688, 2171, 2142, 1249, 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, + 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, 1542, 1501, 1460, 1429, 1398, 1367, 1336, + 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, 969, 950, 931, 912, 862, + 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, 1200, + 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, + -192, 1552, 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, + 1151, 1128, 1091, 1054, 1017, 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, + 640, 680, 528, 376, 376, 888, 1464, 1016, 637, 258, 295, 332, 297, 262, 227, 192, 167, 142, + 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, 1521, 1498, 1475, 1452, + 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, 972, + 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, + 1690, 1576, 1710, 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, + -52, -82, -112, -128, -144, -144, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, + 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, + 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, 358, 333, 308, + 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, + 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, + 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, + 576, 564, 552, 644, 480, 108, 504, 159, 326, 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, + 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, + 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, + 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, + 294, 301, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, + -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, + 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, + 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, 308, 275, 242, 209, 176, + 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, +]; +const YCBCR_BUFFER_CB: [i16; 4096] = [ + 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, 1740, 1736, 1732, 1728, 1796, 1864, 1804, + 1744, 1754, 1764, 1774, 1784, 1794, 1804, 1814, 1824, 1774, 1724, 1802, 1880, 1814, 1748, 1810, + 1872, 1878, 1884, 1890, 1896, 1910, 1924, 1938, 1952, 1938, 1924, 1910, 1896, 1914, 1932, 1950, + 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, + 1710, 1697, 1684, 1704, 1723, 1726, 1730, 1733, 1737, 1738, 1740, 1741, 1743, 1758, 1774, 1757, + 1741, 1762, 1783, 1788, 1793, 1774, 1755, 1784, 1813, 1817, 1821, 1825, 1829, 1857, 1885, 1881, + 1877, 1849, 1821, 1857, 1894, 1904, 1914, 1924, 1935, 1928, 1922, 1915, 1909, 1922, 1936, 1949, + 1963, 1974, 1985, 1997, 2008, 2009, 2011, 2012, 2014, 2017, 2020, 2023, 2026, 2026, 2026, 2026, + 1692, 1664, 1637, 1674, 1711, 1715, 1720, 1725, 1730, 1737, 1744, 1751, 1758, 1721, 1684, 1711, + 1738, 1770, 1802, 1802, 1802, 1754, 1706, 1754, 1802, 1860, 1918, 1848, 1778, 1900, 2022, 1952, + 1882, 1820, 1759, 1825, 1892, 1898, 1905, 1911, 1918, 1919, 1920, 1921, 1922, 1931, 1940, 1949, + 1958, 1974, 1991, 2008, 2025, 2021, 2018, 2015, 2012, 2018, 2024, 2030, 2036, 2036, 2036, 2036, + 1674, 1631, 1590, 1644, 1698, 1704, 1710, 1716, 1723, 1735, 1748, 1760, 1773, 1763, 1754, 1760, + 1767, 1794, 1821, 1800, 1779, 1830, 1881, 1900, 1919, 2047, 2175, 2015, 1855, 1879, 1903, 1927, + 1951, 1759, 1824, 1857, 1890, 1892, 1895, 1898, 1901, 1909, 1918, 1926, 1935, 1939, 1944, 1948, + 1953, 1974, 1997, 2019, 2041, 2033, 2025, 2017, 2010, 2019, 2028, 2037, 2046, 2046, 2046, 2046, + 1656, 1599, 1543, 1614, 1686, 1693, 1701, 1708, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1810, + 1796, 1818, 1840, 2054, 2268, 1650, 1032, 510, -12, -70, -128, 390, 908, 1602, 2296, 2158, + 2020, 1699, 1890, 1889, 1888, 1887, 1886, 1885, 1884, 1900, 1916, 1932, 1948, 1948, 1948, 1948, + 1948, 1975, 2003, 2030, 2058, 2045, 2033, 2020, 2008, 2020, 2032, 2044, 2056, 2056, 2056, 2056, + 1590, 1570, 1551, 1612, 1673, 1580, 1743, 1713, 1685, 1672, 1660, 1711, 1763, 1694, 1626, 1941, + 2001, 2060, 583, -654, -1891, -2046, -2201, -2084, -1967, -2049, -2131, -2053, -1975, -1751, + -1527, 41, 1609, 2374, 1859, 2000, 1886, 1899, 1912, 1909, 1907, 1900, 1894, 1919, 1945, 1944, + 1944, 1943, 1943, 1967, 1992, 2017, 2042, 2033, 2024, 2014, 2006, 2017, 2028, 2039, 2050, 2050, + 2050, 2050, 1524, 1542, 1560, 1610, 1661, 1467, 1785, 1719, 1654, 1611, 1568, 1653, 1738, 1839, + 1940, 793, -866, -2050, -2210, -2082, -1954, -1902, -1850, -1862, -1874, -1980, -2086, -1936, + -1786, -1776, -1766, -1820, -1874, -535, 1829, 2112, 1884, 1911, 1939, 1934, 1930, 1901, 1872, + 1907, 1942, 1941, 1940, 1939, 1938, 1960, 1982, 2004, 2027, 2021, 2015, 2009, 2004, 2014, 2024, + 2034, 2044, 2044, 2044, 2044, 1586, 1641, 1697, 1704, 1712, 1578, 1699, 1661, 1623, 1613, 1604, + 1642, 1681, 1791, -402, -2036, -1877, -2144, -1899, -1942, -1985, -1918, -1851, -1880, -1909, + -1959, -2009, -1931, -1853, -1801, -1749, -1617, -1485, -1940, -1882, 96, 2074, 1971, 1869, + 1895, 1921, 1885, 1850, 1894, 1939, 1937, 1936, 1934, 1933, 1952, 1972, 1991, 2011, 2009, 2006, + 2004, 2002, 2011, 2020, 2029, 2038, 2038, 2038, 2038, 1136, 1229, 1322, 1287, 1252, 1433, 1614, + 1603, 1592, 1616, 1640, 1632, 1624, 2256, -1720, -1792, -1864, -1982, -2100, -2058, -2016, + -1934, -1852, -1898, -1944, -1938, -1932, -1926, -1920, -1826, -1732, -1670, -1608, -1552, + -1496, -1664, -1320, 2288, 1800, 1856, 1912, 1870, 1828, 1882, 1936, 1934, 1932, 1930, 1928, + 1945, 1962, 1979, 1996, 1997, 1998, 1999, 2000, 2008, 2016, 2024, 2032, 2032, 2032, 2032, 1552, + 1625, 1698, 1675, 1652, 1645, 1638, 1615, 1592, 1611, 1630, 1681, 1733, 1146, -2001, -1788, + -1830, -1925, -2019, -2050, -2080, -1987, -1893, -1896, -1898, -1897, -1895, -1861, -1827, + -1780, -1732, -1668, -1604, -1616, -1627, -1879, -594, 2063, 1903, 2016, 1873, 2132, 1880, + 1884, 1888, 1921, 1955, 1941, 1927, 1926, 1925, 1956, 1987, 2006, 2025, 2044, 2063, 1995, 1927, + 2099, 2015, 2095, 2175, 2175, 1456, 1509, 1562, 1551, 1540, 1601, 1662, 1627, 1592, 1606, 1621, + 1731, 1842, 36, -2281, -1783, -1796, -1867, -1938, -2041, -2144, -2039, -1934, -1893, -1852, + -1855, -1857, -1796, -1734, -1733, -1731, -1666, -1600, -1679, -1758, -1837, 645, 2094, 2007, + 1920, 1322, 2139, 1933, 1886, 1840, 1909, 1979, 1952, 1926, 1907, 1888, 1933, 1978, 2015, 2052, + 2089, 2126, 1982, 1838, 2174, 1998, 2158, 2318, 2318, 1488, 1521, 1554, 1555, 1556, 1589, 1622, + 1607, 1592, 1569, 1547, 1701, 1855, -994, -2050, -1826, -1858, -1906, -1953, -2017, -2080, + -1996, -1911, -1859, -1806, -1813, -1820, -1731, -1641, -1686, -1731, -1680, -1628, -1679, + -1729, -2195, 1947, 2125, 2047, 944, -2205, 114, 2177, 2144, 1856, 1913, 1970, 1963, 1957, + 1936, 1915, 1926, 1937, 1992, 2047, 2182, 2061, 2337, 2613, 1817, 2301, 2157, 2269, 2397, 1520, + 1533, 1546, 1559, 1572, 1577, 1582, 1587, 1592, 1533, 1474, 1671, 1868, -2023, -1818, -1869, + -1920, -1944, -1968, -1992, -2016, -1952, -1888, -1824, -1760, -1771, -1782, -1665, -1548, + -1639, -1730, -1693, -1656, -1678, -1699, -1017, 2226, 1644, 2087, -287, -2148, -2167, -1674, + 611, 2384, 2173, 1962, 1975, 1988, 1965, 1942, 1919, 1896, 1969, 2042, 2019, 1484, -1916, + -1220, 2484, 1068, -916, 1708, 1964, 1504, 1515, 1526, 1537, 1548, 1551, 1554, 1557, 1560, + 1582, 1604, 1786, 689, -2139, -1895, -1907, -1918, -1927, -1935, -1944, -1952, -1879, -1805, + -1732, -1658, -1628, -1597, -1550, -1503, -1509, -1514, -1519, -1524, -1528, -1786, 147, 2080, + 1995, 2422, -2095, -2003, -2035, -1810, -1665, -1776, -190, 1397, 2536, 2139, 2122, 2105, 2328, + 2295, 2204, 2113, 2870, -213, -1669, -1077, -1237, -1653, -1589, 2059, 1931, 1488, 1497, 1506, + 1515, 1524, 1525, 1526, 1527, 1528, 1631, 1735, 1902, -490, -2255, -1971, -1944, -1916, -1909, + -1902, -1895, -1888, -1805, -1722, -1639, -1556, -1484, -1411, -1435, -1458, -1378, -1297, + -1345, -1392, -1377, -1873, 1311, 1935, 1834, 1734, -2622, -2370, -2158, -1945, -1893, -1840, + -2040, -2239, -2023, -782, -281, 220, 433, 134, -377, -888, -1655, -1398, -1166, -934, -1374, + -1302, -726, 2410, 1898, 1472, 1479, 1486, 1493, 1500, 1499, 1498, 1497, 1496, 1600, 1705, + 1666, -933, -1475, -2016, -1965, -1914, -1892, -1869, -1847, -1824, -1732, -1639, -1547, -1454, + -1388, -1322, -1192, -1317, -1151, -1241, -1251, -1260, -1546, -1576, 2459, 1885, 2057, 182, + -2430, -2225, -2089, -1953, -1929, -1904, -1906, -1908, -2150, -1879, -1836, -1793, -1670, + -1803, -1646, -1489, -1492, -1239, -1335, -1431, -1335, -1495, 681, 2345, 2089, 1456, 1461, + 1466, 1471, 1476, 1473, 1470, 1467, 1464, 1570, 1676, 1174, -1888, -950, -2060, -1986, -1912, + -1874, -1836, -1798, -1760, -1658, -1556, -1454, -1352, -1292, -1232, -1204, -1688, -1180, + -1184, -1156, -1128, -1203, -254, 2071, 1836, 2281, -1370, -2237, -2080, -2020, -1960, -1964, + -1968, -2028, -2088, -2020, -1952, -1855, -1758, -1725, -1692, -1635, -1578, -1329, -1592, + -1504, -1416, -1040, -1688, 2088, 2280, 2280, 1428, 1439, 1450, 1461, 1472, 1463, 1454, 1493, + 1533, 1512, 1748, -161, -2069, -1347, -1138, -1776, -1902, -1849, -1795, -1709, -1623, -1545, + -1467, -1357, -1247, -1199, -1150, -1197, -1756, -1247, -994, -1013, -1032, -1203, 930, 2023, + 1837, 2238, -2481, -2288, -1838, -1800, -1762, -1836, -1909, -1955, -2001, -1983, -1964, -1909, + -1854, -1831, -1807, -1750, -1693, -1540, -1642, -1526, -1410, -638, -122, 774, 1926, 1926, + 1400, 1417, 1434, 1451, 1469, 1454, 1439, 1520, 1602, 1455, 1820, -1239, -1737, -1744, -727, + -1822, -1892, -1823, -1753, -1619, -1485, -1432, -1378, -1260, -1142, -1105, -1067, -1189, + -1823, -1314, -804, -870, -936, -1203, 2115, 1976, 1838, 915, -2055, -1570, -1596, -1580, + -1563, -1707, -1850, -1882, -1913, -1945, -1976, -1963, -1949, -1936, -1922, -1865, -1807, + -1750, -1692, -1548, -1404, -1004, -92, 996, 2084, 2084, 1372, 1395, 1418, 1441, 1465, 1444, + 1424, 1483, 1543, 1765, 1732, -2205, -1534, -1613, -1180, -1276, -1882, -1765, -1647, -1562, + -1476, -1303, -1129, -1115, -1101, -995, -888, -1054, -1731, -1397, -806, -711, -872, -307, + 2051, 1929, 2063, -152, -1598, -1348, -1354, -1328, -1301, -1418, -1535, -1601, -1666, -1731, + -1796, -1825, -1853, -1881, -1909, -1884, -1858, -1768, -1678, -1570, -1462, -1434, 1154, 2402, + 1858, 1858, 1344, 1373, 1403, 1432, 1462, 1435, 1409, 1446, 1484, 1564, 621, -1891, -1842, + -1738, -1633, -729, -1872, -1707, -1541, -1504, -1466, -1429, -1391, -1226, -1060, -885, -709, + -918, -1638, -1479, -807, -552, -808, 590, 1988, 1882, 2288, -1218, -1140, -1126, -1112, -1075, + -1038, -1129, -1220, -1319, -1418, -1517, -1616, -1686, -1756, -1826, -1896, -1902, -1908, + -1786, -1664, -1592, -1520, -1864, 2400, 2016, 2144, 2144, 1348, 1373, 1399, 1424, 1450, 1463, + 1477, 1491, 1505, 1728, -607, -1839, -1791, -1737, -1683, -1005, -1350, -1711, -1560, -1521, + -1481, -1384, -1286, -1381, -1475, -1209, -943, -613, -794, -798, -801, -613, -680, 1364, 1872, + 1932, 1481, -1151, -967, -927, -886, -869, -852, -931, -1009, -1062, -1115, -1232, -1348, + -1522, -1696, -1806, -1915, -1901, -1887, -1793, -1698, -1604, -1766, -744, 2326, 2134, 2198, + 2198, 1352, 1373, 1395, 1417, 1439, 1492, 1546, 1536, 1526, 1893, -1835, -1787, -1739, -1736, + -1732, -1280, -828, -1715, -1578, -1537, -1495, -1338, -1181, -1024, -866, -765, -664, -563, + -973, -372, -283, -418, -552, 2138, 1757, 1983, 674, -1084, -793, -727, -660, -663, -665, -732, + -798, -805, -811, -946, -1080, -1358, -1635, -1785, -1934, -1900, -1865, -1799, -1732, -1616, + -2012, 376, 2252, 2252, 2252, 2252, 1356, 1373, 1391, 1409, 1427, 1425, 1423, 1501, 1579, 906, + -1815, -1703, -1848, -1911, -1717, -1636, -786, -1687, -1820, -1713, -1606, -1373, -1140, -923, + -705, -657, -609, -385, -417, -235, -309, -479, 376, 1968, 1769, 2034, -5, -841, -652, -607, + -562, -585, -607, -661, -715, -740, -764, -964, -1164, -1434, -1703, -1844, -1985, -1979, + -1972, -1885, -1798, -2012, -2226, 2152, 2178, 2194, 2210, 2210, 1360, 1374, 1388, 1402, 1416, + 1358, 1300, 1466, 1632, -81, -1794, -1619, -1956, -2085, -1702, -1991, -744, -891, -526, -353, + -180, -383, -586, -821, -1056, -805, -554, -463, -372, -353, -334, -539, 1304, 1799, 1782, + 2085, -684, -597, -510, -487, -464, -506, -548, -590, -632, -674, -716, -982, -1248, -1509, + -1770, -1903, -2036, -2057, -2078, -1971, -1864, -1896, -1416, 2392, 2104, 2136, 2168, 2168, + 1346, 1358, 1371, 1383, 1396, 1395, 1393, 1552, 1711, -1178, -1763, -2204, -1364, -465, 690, + 1941, 1913, 1747, 1837, 1816, 1794, 1888, 1983, 1773, 1564, 548, -468, -299, -387, -393, -398, + -148, 1895, 1920, 1946, 1284, -402, -398, -394, -422, -450, -479, -508, -569, -630, -723, -816, + -1069, -1321, -1698, -2075, -2083, -2092, -2131, -2169, -2032, -1894, -2028, 142, 2280, 2114, + 2082, 2050, 2050, 1332, 1343, 1354, 1365, 1377, 1432, 1487, 1382, 1278, -1763, -195, 1308, + 1788, 1667, 1547, 1522, 1498, 1569, 1641, 1681, 1721, 1600, 1480, 1552, 1624, 1901, 2179, 1145, + -401, -432, -462, -12, 1974, 1786, 2111, 484, -119, -199, -278, -357, -436, -452, -468, -548, + -627, -771, -915, -899, -882, -607, -331, -471, -611, -1436, -2260, -2092, -1924, -2160, 1700, + 2168, 2124, 2028, 1932, 1932, 1318, 1327, 1337, 1347, 1357, 1405, 1453, 1420, 1389, 1380, 1628, + 1748, 1356, 1495, 1635, 1631, 1627, 1551, 1733, 1690, 1647, 1728, 1809, 1730, 1652, 1686, 1722, + 1949, 1920, 873, -430, 363, 1925, 1764, 1860, 147, -29, -96, -162, -292, -422, -425, -428, + -559, -689, -372, -310, -281, -251, -572, -891, -859, -827, -565, -303, -1081, -1858, -1636, + 2170, 2296, 2166, 2118, 2070, 2070, 1304, 1312, 1321, 1329, 1338, 1378, 1419, 1459, 1500, 1452, + 1404, 1420, 1436, 1580, 1724, 1484, 1244, 1022, 1313, 1187, 1062, 1088, 1115, 1397, 1680, 1728, + 1777, 1729, 1682, 1922, 1651, 1763, 1876, 1742, 1609, -189, 62, 8, -45, -227, -408, -398, -387, + -569, -750, -228, -217, -431, -644, -1048, -1451, -1503, -1554, -1230, -905, -581, -256, -856, + 1616, 1912, 2208, 2208, 2208, 2208, 1290, 1304, 1320, 1335, 1350, 1377, 1404, 1271, 1395, 1525, + 1655, 1769, 1884, 1802, 1720, 1430, 1141, 1026, 1168, 1038, 908, 700, 492, 331, 172, 873, 1575, + 1525, 1731, 1991, 1739, 1774, 1811, 1914, 993, -120, 48, -75, -197, -272, -346, -409, -471, + -326, -180, -215, -505, -811, -1117, -1275, -1432, -1637, -1842, -1825, -1552, -1248, -686, + 1194, 1026, 1610, 2194, 2194, 2194, 2194, 1276, 1297, 1319, 1341, 1363, 1376, 1390, 1340, 1802, + 1854, 1907, 1863, 1820, 1768, 1717, 1377, 1038, 1031, 1024, 889, 755, 568, 381, 290, 200, 19, + -162, 553, 1781, 2060, 1827, 1786, 1746, 2086, 378, -50, 35, -157, -349, -317, -284, -420, + -555, -338, -121, -457, -792, -935, -1078, -1245, -1412, -1515, -1617, -1908, -1687, -1658, + -1116, 1964, 1972, 2076, 2180, 2180, 2180, 2180, 1262, 1290, 1318, 1347, 1375, 1359, 1344, + 1632, 1921, 1927, 1934, 1877, 1820, 1702, 1585, 1260, 935, 907, 880, 724, 569, 436, 302, 217, + 132, 44, -43, -99, 102, 801, 2011, 1878, 1745, 1426, 2131, 916, -43, -192, -341, -394, -446, + -463, -479, -239, -255, -523, -791, -963, -1135, -1520, -1648, -1761, -1873, -1447, -2046, + -1828, -1354, 2254, 2278, 2222, 2166, 2166, 2166, 2166, 1248, 1283, 1318, 1353, 1388, 1343, + 1298, 1925, 2040, 2001, 1962, 1891, 1820, 1637, 1454, 1143, 832, 784, 736, 560, 384, 304, 224, + 144, 64, 70, 76, 18, -40, 54, 1684, 1714, 1744, 1790, 1836, 1882, 1928, 798, -332, -470, -608, + -505, -402, -139, -388, -589, -790, -991, -1192, -1794, -1884, -2006, -2128, -2266, -868, 818, + 2504, 2288, 2072, 2112, 2152, 2152, 2152, 2152, 1238, 1264, 1290, 1333, 1375, 1301, 1484, 2002, + 2009, 1974, 1939, 1872, 1805, 1608, 1411, 1118, 826, 751, 676, 505, 334, 273, 212, 151, 91, 69, + 48, 10, -27, 482, 1758, 1771, 1784, 2033, 1771, 1860, 1950, 1989, 2029, 884, -260, -1157, -261, + -310, -614, -923, -975, -1412, -1848, -2062, -2019, -697, 626, 2060, 2471, 2273, 2076, 2051, + 2026, 2081, 2136, 2136, 2136, 2136, 1228, 1245, 1263, 1313, 1363, 1260, 1670, 2080, 1978, 1947, + 1916, 1853, 1791, 1580, 1369, 1094, 820, 718, 616, 450, 285, 243, 201, 159, 118, 69, 20, 3, + -13, 910, 1833, 1828, 1824, 229, 1706, 1839, 1972, 1901, 1830, 1983, 2136, 2032, 1416, 1056, + 696, 280, 376, 728, 1080, 1767, 2454, 2405, 2356, 2035, 2226, 2193, 2160, 2070, 1980, 2050, + 2120, 2120, 2120, 2120, 1218, 1226, 1236, 1293, 1350, 1235, 1888, 2061, 1979, 1936, 1893, 1834, + 1776, 1551, 1327, 1070, 814, 685, 556, 395, 235, 212, 190, 167, 145, 116, 88, -68, 32, 1306, + 1812, 1949, 1576, -200, -183, 905, 1994, 1956, 1919, 1881, 1844, 2004, 1909, 2005, 2102, 2042, + 2239, 2195, 2152, 2043, 1935, 2370, 2038, 2697, 1821, 368, 2244, 2121, 1998, 2051, 2104, 2104, + 2104, 2104, 1208, 1208, 1209, 1273, 1338, 1210, 2107, 2043, 1980, 1925, 1871, 1816, 1762, 1523, + 1285, 1046, 808, 652, 497, 341, 186, 182, 179, 175, 172, 164, 157, 117, 590, 1958, 1791, 1815, + 816, 140, -24, -28, -32, 988, 2008, 2036, 2064, 1977, 1890, 1931, 1972, 2013, 2054, 2127, 2200, + 2320, 2440, 2080, 184, -1760, -3192, 336, 2328, 2172, 2016, 2052, 2088, 2088, 2088, 2088, 1222, + 1215, 1209, 1267, 1325, 1459, 2105, 2046, 1989, 1946, 1904, 1861, 1819, 1612, 1406, 1136, 866, + 715, 565, 446, 328, 295, 263, 231, 199, 481, 765, 712, 1427, 2086, 1721, 1692, 128, -37, 55, + -14, -82, -109, -135, 334, 804, 1293, 1783, 2272, 2250, 2197, 1889, 1356, 568, -764, -2095, + -3011, -2646, -2932, -2705, 2305, 2196, 2159, 2122, 2117, 2112, 2112, 2112, 2112, 1236, 1223, + 1210, 1261, 1313, 1708, 2103, 2050, 1998, 1967, 1937, 1907, 1877, 1702, 1528, 1226, 924, 778, + 633, 552, 471, 409, 348, 287, 226, 287, 349, 283, 1241, 1702, 1652, 1826, -48, 43, 134, 1, + -132, -181, -230, -343, -456, -670, -884, -202, -544, -946, -1860, -1718, -2088, -2311, -2534, + -2469, -2404, -2311, -1706, 2483, 2064, 2146, 2228, 2182, 2136, 2136, 2136, 2136, 1250, 1230, + 1211, 1255, 1300, 1957, 2101, 2054, 2007, 1956, 1906, 1856, 1806, 1696, 1586, 1284, 982, 841, + 701, 657, 613, 555, 497, 439, 381, 413, 445, 718, 1758, 1782, 1807, 1095, -128, -70, -11, -97, + -182, -254, -325, -429, -532, -762, -991, -581, -170, -1034, -873, -1977, -1800, -2019, -2237, + -2344, -2450, -2651, -35, 2308, 2092, 2117, 2142, 2151, 2160, 2160, 2160, 2160, 1264, 1238, + 1212, 1250, 1288, 2206, 2100, 2058, 2016, 1946, 1876, 1806, 1736, 1690, 1644, 1342, 1040, 905, + 770, 763, 756, 701, 646, 591, 536, 539, 542, 897, 1764, 1607, 1962, 365, -208, -182, -156, + -194, -232, -326, -420, -514, -608, -853, -1098, -1471, -820, -97, -910, -955, -2024, -2238, + -2452, -2474, -2496, -2990, 1636, 2134, 2120, 2088, 2056, 2120, 2184, 2184, 2184, 2184, 1198, + 1191, 1185, 1227, 1525, 2065, 2093, 2009, 1925, 1887, 1850, 1781, 1712, 1682, 1653, 1464, 1275, + 1130, 986, 937, 889, 841, 792, 744, 696, 685, 674, 1335, 1741, 1840, 1939, 54, -294, -296, + -298, -299, -301, -415, -528, -642, -755, -948, -1140, -1733, -1813, -734, -166, -1039, -887, + -1235, -1582, -1610, -1637, -1158, 2392, 2279, 2166, 2119, 2072, 2121, 2170, 2170, 2170, 2170, + 1132, 1145, 1159, 1205, 1763, 1924, 2086, 1960, 1834, 1829, 1825, 1756, 1688, 1675, 1663, 1586, + 1510, 1356, 1202, 1112, 1023, 981, 939, 897, 856, 831, 807, 1774, 1718, 1817, 1405, -512, -380, + -410, -439, -404, -369, -503, -636, -769, -902, -1042, -1182, -1482, -1782, -2138, -1982, -610, + -262, -487, -712, -745, -777, 162, 2125, 1912, 2212, 2150, 2088, 2122, 2156, 2156, 2156, 2156, + 1194, 1147, 1101, 1182, 1776, 1927, 2079, 1863, 1903, 1979, 1799, 1843, 1632, 1620, 1608, 1612, + 1617, 1517, 1418, 1351, 1284, 1217, 1150, 1098, 1048, 945, 1099, 1781, 1695, 1954, 422, -566, + -530, -556, -580, -573, -566, -687, -808, -929, -1049, -1233, -1416, -1680, -1943, -2343, + -2486, -2502, -2773, -2076, -1378, -1672, -2222, 458, 2370, 2137, 2162, 2133, 2104, 2123, 2142, + 2142, 2142, 2142, 1256, 1149, 1043, 1160, 1790, 1931, 2073, 1766, 1972, 2129, 1774, 1931, 1576, + 1565, 1554, 1639, 1724, 1679, 1635, 1590, 1546, 1453, 1361, 1300, 1240, 1060, 1392, 1788, 1672, + 2092, -560, -620, -680, -701, -721, -742, -762, -871, -979, -1088, -1196, -1423, -1650, -1877, + -2104, -2291, -2478, -2857, -2724, -2896, -3067, -3111, -3666, 2546, 2103, 2107, 2112, 2116, + 2120, 2124, 2128, 2128, 2128, 2128, 1214, 1171, 1128, 1453, 1779, 1692, 1862, 1807, 1753, 1732, + 1712, 1804, 1640, 1759, 1623, 1711, 1799, 1666, 1791, 1755, 1719, 1629, 1539, 1497, 1456, 1352, + 1504, 1752, 1745, 1445, -903, -899, -894, -909, -923, -937, -951, -1071, -1191, -1312, -1431, + -1642, -1852, -2063, -2273, -2432, -2590, -2813, -2779, -2931, -3081, -3280, -2199, 2298, 2187, + 2124, 2062, 2081, 2100, 2119, 2138, 2138, 2138, 2138, 1172, 1193, 1214, 1747, 1769, 1710, 2163, + 2360, 2046, 1592, 1651, 1677, 1704, 1954, 1693, 1783, 1874, 1654, 1947, 1920, 1893, 1805, 1718, + 1695, 1672, 1644, 1617, 1717, 1818, 798, -1245, -1177, -1108, -1116, -1124, -1132, -1139, + -1271, -1403, -1535, -1666, -1860, -2054, -2248, -2442, -2572, -2702, -2768, -2834, -2965, + -3095, -3193, -219, 2306, 2272, 2142, 2012, 2046, 2080, 2114, 2148, 2148, 2148, 2148, 1194, + 1151, 1364, 1785, 1694, 1983, 2272, 1441, 2147, 1980, 1813, 1838, 1864, 1909, 1698, 1823, 1949, + 1818, 1943, 1989, 2034, 1933, 1833, 1812, 1792, 1712, 1633, 1650, 1923, -537, -1460, -1391, + -1322, -1356, -1389, -1423, -1456, -1567, -1679, -1790, -1901, -2079, -2256, -2434, -2611, + -2745, -2878, -2916, -2953, -2999, -3045, -3778, 1632, 2298, 1941, 2015, 2090, 2107, 2124, + 2141, 2158, 2158, 2158, 2158, 1216, 1109, 1514, 1823, 1620, 2001, 1870, 1803, 1224, 1600, 1464, + 1232, 1000, 1096, 1192, 1352, 1512, 1726, 1940, 2058, 2176, 2062, 1948, 1930, 1912, 1781, 1650, + 1583, 2028, -1871, -1674, -1605, -1536, -1595, -1654, -1713, -1772, -1863, -1954, -2045, -2136, + -2297, -2458, -2619, -2780, -2917, -3054, -3063, -3072, -3033, -2994, -2827, 2460, 2035, 2122, + 2145, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 1190, 1272, 1610, 1757, 1647, 1523, 1144, + 1324, 1249, 1364, 1224, 1211, 1199, 1255, 1566, 1430, 1294, 1404, 1514, 1800, 2087, 2075, 2063, + 2003, 1944, 1654, 1621, 1812, 979, -1999, -1904, -1889, -1874, -1929, -1983, -2038, -2092, + -2164, -2237, -2309, -2381, -2514, -2646, -2779, -2911, -3006, -3100, -3115, -3129, -3040, + -3206, -1085, 2317, 2104, 2148, 2159, 2171, 2175, 2179, 2183, 2187, 2187, 2187, 2187, 1164, + 1179, 1195, 1179, 1163, 1302, 1442, 1358, 1274, 1385, 1496, 1447, 1399, 1158, 1429, 1508, 1588, + 1594, 1601, 1543, 1486, 1832, 2179, 2077, 1976, 1528, 1593, 1785, -582, -2382, -2133, -2173, + -2212, -2262, -2312, -2362, -2411, -2465, -2519, -2573, -2626, -2730, -2834, -2938, -3042, + -3094, -3146, -3166, -3186, -3046, -3418, 658, 2174, 2174, 2174, 2174, 2174, 2182, 2190, 2198, + 2206, 2206, 2206, 2206, 1202, 1230, 1260, 1273, 1286, 1321, 1356, 1343, 1331, 1405, 1480, 1475, + 1470, 1349, 1484, 1522, 1562, 1576, 1591, 1574, 1557, 1589, 1622, 1719, 1816, 1690, 1820, 1694, + -2015, -2557, -2331, -2377, -2422, -2612, -2801, -2702, -2603, -2670, -2737, -2805, -2871, + -2947, -3022, -3098, -3173, -3183, -3192, -3154, -3115, -3325, -3278, 2256, 2159, 2147, 2136, + 2156, 2177, 2189, 2201, 2213, 2225, 2225, 2225, 2225, 1240, 1282, 1325, 1367, 1410, 1340, 1271, + 1329, 1388, 1426, 1465, 1503, 1542, 1540, 1539, 1537, 1536, 1559, 1582, 1605, 1628, 1603, 1578, + 1617, 1656, 1596, 1536, 1604, -2936, -2476, -2528, -2580, -2632, -2705, -2777, -2786, -2794, + -2875, -2955, -3036, -3116, -3163, -3210, -3257, -3304, -3271, -3238, -3141, -3044, -3091, + -2114, 2319, 2144, 2121, 2098, 2139, 2180, 2196, 2212, 2228, 2244, 2244, 2244, 2244, 1230, + 1255, 1281, 1307, 1333, 1303, 1273, 1338, 1405, 1436, 1469, 1501, 1533, 1535, 1537, 1539, 1542, + 1563, 1584, 1605, 1627, 1602, 1577, 1616, 1656, 1807, 1959, -417, -2793, -2798, -2546, -2582, + -2618, -2689, -2758, -2796, -2834, -2902, -2970, -3038, -3105, -3146, -3186, -3179, -3171, + -3150, -3128, -3059, -2989, -3222, -126, 2281, 2129, 2084, 2040, 2107, 2175, 2189, 2203, 2217, + 2231, 2231, 2231, 2231, 1220, 1229, 1238, 1247, 1257, 1266, 1275, 1348, 1422, 1447, 1473, 1499, + 1525, 1530, 1536, 1542, 1548, 1567, 1587, 1606, 1626, 1601, 1577, 1616, 1656, 1763, 1871, 1658, + -2138, -2863, -2563, -2584, -2604, -2672, -2739, -2806, -2873, -2929, -2984, -3039, -3094, + -3128, -3162, -3100, -3038, -3028, -3018, -2976, -2934, -3352, 1862, 2244, 2114, 2048, 1982, + 2076, 2170, 2182, 2194, 2206, 2218, 2218, 2218, 2218, 1210, 1234, 1259, 1283, 1308, 1325, 1341, + 1390, 1439, 1458, 1477, 1497, 1516, 1525, 1535, 1544, 1554, 1571, 1589, 1607, 1625, 1616, 1608, + 1632, 1656, 1719, 1782, 1685, 1845, 528, -2837, -2730, -2622, -2655, -2688, -2720, -2753, + -2764, -2774, -2993, -2955, -3031, -3106, -2814, -2777, -3227, -2908, -3134, -3359, -971, 2186, + 2270, 2099, 2075, 2052, 2108, 2165, 2175, 2185, 2195, 2205, 2205, 2205, 2205, 1200, 1240, 1280, + 1320, 1360, 1384, 1408, 1432, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1576, 1592, + 1608, 1624, 1632, 1640, 1648, 1656, 1675, 1694, 1713, 1732, 1871, 986, -827, -2640, -2638, + -2636, -2634, -2632, -2598, -2564, -2946, -2816, -2933, -3050, -2783, -3028, -3169, -1774, 293, + 2360, 2179, 1998, 2041, 2084, 2103, 2122, 2141, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, + 1232, 1266, 1300, 1334, 1368, 1390, 1412, 1434, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, + 1560, 1578, 1596, 1614, 1632, 1640, 1648, 1656, 1664, 1646, 1628, 1706, 1784, 2102, 1908, 1298, + 688, 1071, -594, -1587, -2580, -2891, -3202, -2281, -2640, -2058, -1476, -94, 1032, 2278, 2244, + 2210, 2176, 2132, 2088, 2092, 2096, 2112, 2128, 2144, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1264, 1292, 1320, 1348, 1376, 1396, 1416, 1436, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1580, 1600, 1620, 1640, 1648, 1656, 1664, 1672, 1617, 1562, 1699, 1836, 1821, 1806, + 1887, 1968, 1964, 1960, 2020, 2080, 1936, 1792, 1200, 1632, 1889, 2146, 2083, 2020, 2093, 2166, + 2079, 1992, 2085, 2178, 2143, 2108, 2121, 2134, 2147, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1296, 1318, 1340, 1362, 1384, 1402, 1420, 1438, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1582, 1604, 1626, 1648, 1656, 1664, 1672, 1680, 1668, 1656, 1740, 1824, 1812, 1800, + 1836, 1872, 1881, 1890, 1819, 1748, 1995, 450, 937, 912, 716, 2056, 2020, 1984, 2036, 2088, + 2060, 2032, 2086, 2140, 2130, 2120, 2130, 2140, 2150, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, + 1785, 1776, 1798, 1820, 1874, 1928, 1798, 2180, 674, 1216, 2103, 1966, 1957, 1948, 1979, 2010, + 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, + 1785, 1776, 1798, 1820, 1858, 1896, 1750, 1860, 2338, 1792, 2135, 1966, 1957, 1948, 1979, 2010, + 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, + 1785, 1776, 1798, 1820, 1842, 1864, 1958, 2052, 1954, 1856, 1911, 1966, 1957, 1948, 1979, 2010, + 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, + 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, + 1785, 1776, 1798, 1820, 1842, 1864, 1958, 2052, 1954, 1856, 1911, 1966, 1957, 1948, 1979, 2010, + 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, +]; +const YCBCR_BUFFER_CR: [i16; 4096] = [ + -2112, -2114, -2116, -2118, -2120, -2122, -2124, -2126, -2128, -2118, -2108, -2098, -2088, + -2150, -2212, -2146, -2080, -2100, -2120, -2140, -2160, -2164, -2168, -2172, -2176, -2092, + -2008, -2052, -2096, -2132, -2168, -2076, -1984, -2088, -2192, -2168, -2144, -2136, -2128, + -2120, -2112, -2126, -2140, -2154, -2168, -2150, -2132, -2114, -2096, -2096, -2096, -2096, + -2096, -2096, -2096, -2096, -2096, -2080, -2064, -2048, -2032, -2032, -2032, -2032, -2128, + -2114, -2099, -2116, -2133, -2134, -2135, -2136, -2137, -2128, -2118, -2108, -2098, -2118, + -2138, -2126, -2114, -2135, -2155, -2160, -2164, -2136, -2109, -2129, -2149, -2133, -2117, + -2116, -2116, -2116, -2115, -2099, -2082, -2113, -2143, -2142, -2140, -2134, -2129, -2123, + -2117, -2128, -2138, -2148, -2158, -2147, -2135, -2123, -2111, -2109, -2107, -2105, -2102, + -2102, -2102, -2102, -2101, -2087, -2073, -2059, -2045, -2045, -2045, -2045, -2144, -2113, + -2081, -2113, -2145, -2146, -2146, -2146, -2146, -2137, -2127, -2117, -2107, -2086, -2064, + -2106, -2148, -2169, -2190, -2179, -2167, -2108, -2049, -2086, -2122, -2174, -2225, -2180, + -2135, -2099, -2062, -2121, -2180, -2137, -2094, -2115, -2135, -2132, -2129, -2126, -2122, + -2129, -2135, -2142, -2148, -2143, -2137, -2132, -2126, -2122, -2117, -2113, -2108, -2108, + -2107, -2107, -2106, -2094, -2082, -2070, -2058, -2058, -2058, -2058, -2160, -2112, -2063, + -2111, -2158, -2158, -2157, -2156, -2155, -2146, -2136, -2127, -2117, -2134, -2150, -2134, + -2118, -2156, -2193, -2182, -2171, -2496, -2309, -2395, -2479, -2471, -2461, -2244, -2283, + -2354, -2169, -2176, -2182, -2162, -2141, -2136, -2131, -2130, -2129, -2129, -2127, -2130, + -2133, -2136, -2138, -2139, -2140, -2141, -2141, -2135, -2128, -2121, -2114, -2114, -2113, + -2112, -2111, -2101, -2091, -2081, -2071, -2071, -2071, -2071, -2176, -2111, -2045, -2108, + -2170, -2169, -2167, -2166, -2164, -2155, -2145, -2136, -2126, -2181, -2235, -2162, -2088, + -2142, -2195, -2441, -2686, -2372, -1033, -399, 236, 305, 375, -4, -894, -2097, -2787, -2486, + -2184, -2186, -2187, -2157, -2126, -2128, -2129, -2131, -2132, -2131, -2130, -2129, -2128, + -2135, -2142, -2149, -2156, -2147, -2138, -2129, -2120, -2119, -2118, -2117, -2116, -2108, + -2100, -2092, -2084, -2084, -2084, -2084, -2112, -2086, -2060, -2114, -2167, -2069, -2226, + -2192, -2157, -2108, -2059, -2106, -2152, -2121, -2089, -2634, -2666, -2265, -838, 844, 2526, + 3326, 2846, 2846, 2847, 2726, 2606, 2966, 3070, 2968, 2866, 395, -2074, -2747, -2138, -2282, + -2170, -2204, -2238, -2192, -2145, -2147, -2148, -2149, -2150, -2154, -2157, -2160, -2163, + -2160, -2157, -2154, -2150, -2131, -2112, -2125, -2137, -2127, -2117, -2107, -2097, -2097, + -2097, -2097, -2048, -2061, -2074, -2119, -2163, -1968, -2285, -2218, -2150, -2061, -1972, + -2075, -2177, -2316, -2455, -1058, 1364, 2989, 2567, 2593, 2619, 2368, 2630, 2508, 2386, 2332, + 2278, 2352, 2427, 2913, 2887, 3021, 3156, 1301, -2089, -2407, -2213, -2280, -2346, -2252, + -2158, -2162, -2165, -2169, -2172, -2172, -2171, -2171, -2170, -2173, -2175, -2178, -2180, + -2143, -2105, -2132, -2158, -2146, -2134, -2122, -2110, -2110, -2110, -2110, -2112, -2164, + -2216, -2236, -2256, -1996, -2248, -2196, -2143, -2110, -2077, -2124, -2171, -2272, 699, 3526, + 2770, 2035, 2324, 2294, 2263, 2178, 2350, 2265, 2181, 2129, 2078, 2154, 2231, 2522, 2556, 2559, + 2562, 3221, 3112, 140, -2833, -2036, -2262, -2201, -2139, -2161, -2183, -2189, -2194, -2190, + -2186, -2182, -2177, -2186, -2194, -2202, -2210, -2155, -2099, -2139, -2179, -2165, -2151, + -2137, -2123, -2123, -2123, -2123, -1664, -1755, -1846, -1841, -1836, -1767, -2210, -2173, + -2136, -2159, -2182, -2173, -2164, -2739, 2830, 2735, 2640, 2361, 2082, 1995, 1908, 1989, 2070, + 2023, 1976, 1927, 1878, 1957, 2036, 2131, 2226, 2353, 2480, 2581, 2682, 2943, 2692, -2815, + -2178, -2149, -2120, -2160, -2200, -2208, -2216, -2208, -2200, -2192, -2184, -2198, -2212, + -2226, -2240, -2166, -2092, -2146, -2200, -2184, -2168, -2152, -2136, -2136, -2136, -2136, + -2096, -2168, -2239, -2230, -2221, -2088, -2211, -2174, -2137, -2191, -2244, -2153, -2318, + -2032, 3375, 2862, 2605, 2306, 2007, 1852, 1697, 1756, 1815, 1810, 1806, 1756, 1707, 1754, + 1801, 1912, 2023, 2150, 2277, 2300, 2323, 2730, 1345, -2440, -2129, -2218, -2307, -2350, -2137, + -2180, -2223, -2224, -2225, -2194, -2162, -2172, -2181, -2191, -2200, -2199, -2199, -2214, + -2229, -2172, -2115, -2170, -2225, -2113, -2257, -2257, -2016, -2068, -2119, -2106, -2093, + -2153, -2212, -2175, -2138, -2222, -2305, -2133, -2472, 212, 2897, 2477, 2570, 2251, 1932, + 1709, 1487, 1524, 1561, 1598, 1636, 1586, 1537, 1552, 1567, 1693, 1820, 1947, 2074, 2019, 1964, + 2261, -514, -2321, -2080, -2031, -1982, -2284, -2074, -2152, -2229, -2239, -2249, -2195, -2140, + -2145, -2150, -2155, -2159, -2232, -2305, -2282, -2258, -2160, -2062, -2188, -2314, -2090, + -2378, -2378, -2064, -2096, -2127, -2127, -2126, -2154, -2181, -2160, -2139, -2205, -2271, + -2145, -2530, 1688, 2834, 2460, 2343, 2148, 1953, 1678, 1404, 1387, 1371, 1418, 1466, 1416, + 1367, 1349, 1332, 1442, 1553, 1664, 1775, 1818, 1861, 2416, -2405, -2458, -1999, -2036, -281, + -1466, -2395, -2380, -2364, -2303, -2241, -2196, -2150, -2167, -2183, -2183, -2183, -2201, + -2219, -2190, -2159, -2756, -2329, -1934, -2307, -2627, -2179, -2307, -2112, -2124, -2135, + -2147, -2158, -2154, -2149, -2145, -2140, -2188, -2236, -2156, -2588, 3164, 2772, 2444, 2116, + 2045, 1975, 1648, 1322, 1251, 1181, 1238, 1296, 1246, 1197, 1147, 1098, 1192, 1287, 1381, 1476, + 1617, 1758, 1291, -2760, -2083, -2430, -1273, -628, -648, -667, -1583, -2498, -2366, -2233, + -2197, -2160, -2188, -2215, -2211, -2206, -2170, -2133, -2097, -2060, -280, -548, -2448, -1788, + -860, -1980, -2236, -2112, -2122, -2132, -2142, -2151, -2147, -2142, -2138, -2133, -2148, + -2162, -2080, -718, 3207, 2525, 2291, 2057, 1942, 1828, 1553, 1279, 1174, 1070, 1094, 1118, + 1044, 970, 976, 983, 1001, 1020, 1166, 1313, 1306, 1555, -212, -2491, -2190, -2401, -868, -615, + -644, -672, -605, -537, -1356, -2174, -2272, -2370, -2342, -2312, -2331, -2350, -2317, -2284, + -2699, -1321, -420, -543, -394, -757, -741, -2261, -2261, -2112, -2120, -2128, -2136, -2143, + -2139, -2135, -2131, -2126, -2107, -2087, -2260, 640, 2995, 2279, 2138, 1998, 1839, 1681, 1459, + 1237, 1098, 960, 950, 940, 842, 744, 806, 869, 811, 753, 951, 1150, 995, 1352, -1715, -2222, + -2297, -2372, -463, -602, -640, -677, -650, -623, -601, -578, -811, -1044, -1215, -1385, -1427, + -1469, -1184, -898, -484, -582, -560, -538, -900, -750, -1134, -2542, -2286, -2112, -2118, + -2124, -2130, -2136, -2132, -2128, -2124, -2119, -2018, -1917, -2888, 1262, 2015, 2256, 2097, + 1939, 1736, 1534, 1364, 1194, 1022, 850, 806, 762, 736, 710, 508, 818, 604, 646, 752, 859, + 1132, 1149, -2866, -2273, -2340, -1639, -426, -493, -524, -554, -568, -582, -678, -774, -662, + -550, -568, -586, -587, -589, -659, -728, -574, -675, -668, -661, -798, -679, -1799, -2407, + -2151, -2112, -2116, -2120, -2124, -2128, -2124, -2120, -2116, -2112, -2185, -2258, -1723, + 1884, 1035, 2234, 2057, 1880, 1634, 1388, 1270, 1152, 946, 740, 662, 584, 630, 676, 466, 1280, + 654, 540, 554, 568, 757, -78, -2481, -2324, -2383, -906, -389, -384, -407, -430, -485, -540, + -499, -458, -513, -568, -689, -810, -771, -732, -645, -558, -663, -768, -776, -784, -696, -608, + -2464, -2272, -2016, -2104, -2111, -2117, -2123, -2129, -2106, -2082, -2106, -2130, -2206, + -2537, -85, 1856, 1149, 1209, 1702, 1683, 1507, 1332, 1188, 1045, 837, 630, 518, 407, 489, 572, + 398, 1249, 662, 330, 383, 436, 589, -1305, -2352, -2118, -2616, 213, -13, -239, -267, -294, + -322, -349, -378, -408, -485, -562, -627, -692, -677, -661, -626, -591, -684, -776, -804, -832, + -540, -248, -664, -1848, -2616, -2096, -2105, -2113, -2122, -2130, -2087, -2043, -2096, -2148, + -2226, -2816, 1554, 1829, 1519, 697, 1603, 1486, 1381, 1276, 1107, 938, 729, 520, 375, 230, + 349, 468, 331, 1219, 670, 121, 212, 304, 422, -2532, -2478, -2423, -1569, 309, -149, -94, -126, + -158, -158, -157, -257, -357, -457, -556, -565, -573, -582, -590, -607, -623, -704, -784, -832, + -880, -384, 112, -1424, -2448, -2192, -2088, -2099, -2110, -2121, -2131, -2100, -2069, -2102, + -2134, -2487, -2327, 2921, 2025, 1537, 1049, 1088, 1385, 1270, 1156, 993, 831, 700, 570, 407, + 245, 256, 268, 344, 932, 662, 136, 185, 236, -338, -2447, -2348, -2505, -794, 149, -77, -45, + -66, -86, -90, -94, -184, -274, -365, -454, -455, -455, -519, -583, -620, -656, -724, -792, + -796, -800, -868, -1960, -2296, -2376, -2248, -2080, -2093, -2106, -2119, -2132, -2113, -2094, + -2107, -2120, -2235, -813, 2752, 2222, 1555, 1401, 574, 1284, 1160, 1036, 880, 724, 672, 620, + 440, 260, 164, 69, 357, 646, 654, 151, 159, 168, -1097, -2361, -2218, -2586, -19, -11, -4, 4, + -5, -13, -22, -30, -111, -191, -272, -352, -344, -336, -456, -576, -632, -688, -744, -800, + -760, -720, -584, -2496, -2400, -2304, -2304, -2072, -2088, -2103, -2118, -2133, -2173, -2212, + -2171, -2130, -2464, 1044, 2615, 2138, 1657, 1432, 807, 951, 1193, 924, 734, 545, 397, 250, + 486, 723, 569, 417, 312, 207, 384, 305, 242, 180, -1827, -2296, -2350, -1892, 68, -20, -12, -3, + -9, -13, -18, -23, -66, -109, -184, -258, -310, -362, -478, -593, -641, -689, -737, -784, -752, + -720, -1200, -2448, -2384, -2320, -2320, -2064, -2082, -2099, -2117, -2134, -2232, -2329, + -2235, -2140, -2692, 2901, 2478, 2055, 1759, 1464, 1041, 618, 1227, 812, 589, 366, 379, 392, + 277, 162, 207, 253, 267, 281, 114, -52, 70, 192, -2556, -2231, -2482, -1197, 155, -28, -19, + -10, -12, -13, -14, -15, -21, -26, -95, -164, -276, -387, -499, -610, -650, -689, -729, -768, + -744, -720, -1816, -2400, -2368, -2336, -2336, -2056, -2076, -2096, -2116, -2135, -2179, -2223, + -2139, -2310, -1320, 2742, 2293, 2099, 1893, 1432, 1242, 541, 1036, 1020, 699, 379, 376, 374, + 275, 177, 197, 217, 190, 162, 100, 39, 153, -756, -2421, -2294, -2550, -503, 130, -4, -11, -17, + -15, -13, -10, -8, -8, -7, -103, -198, -322, -445, -520, -595, -643, -690, -721, -752, -768, + -784, -2192, -2320, -2336, -2352, -2352, -2048, -2070, -2092, -2114, -2136, -2126, -2116, + -2042, -2480, 52, 2584, 2108, 2144, 2028, 1400, 1444, 464, 78, -308, -470, -632, -394, -156, + 18, 192, 187, 182, 113, 44, 87, 130, 237, -1704, -2286, -2356, -2618, 192, 106, 20, -2, -24, + -18, -12, -6, 0, 6, 12, -110, -232, -367, -502, -541, -580, -635, -690, -713, -736, -792, -848, + -2568, -2240, -2304, -2368, -2368, -2046, -2069, -2092, -2114, -2137, -2122, -2106, -2187, + -2523, 1999, 2681, 2739, 1518, 116, -1542, -2640, -2457, -2466, -2475, -2467, -2460, -2499, + -2537, -2304, -2070, -995, 81, -76, 24, 35, 47, -150, -2394, -2423, -2451, -1807, 117, 85, 53, + 21, -11, -11, -11, -11, -11, -11, -11, -107, -203, -405, -606, -616, -625, -611, -596, -694, + -791, -757, -1491, -2401, -2287, -2303, -2319, -2319, -2044, -2068, -2091, -2114, -2137, -2117, + -2096, -2075, -2054, 2922, 219, -1749, -2692, -2564, -2435, -2115, -2306, -2194, -2081, -2160, + -2239, -2299, -2358, -2321, -2284, -2432, -2580, -1544, 4, -16, -36, -280, -2572, -2303, -2545, + -995, 43, 64, 86, 44, 2, -4, -10, -16, -22, -28, -34, -104, -174, -186, -198, -178, -158, -330, + -502, -674, -846, -722, -2134, -2234, -2334, -2302, -2270, -2270, -2042, -2067, -2090, -2114, + -2138, -2160, -2182, -2156, -2129, -2459, -2532, -2605, -2166, -2220, -2273, -2294, -2315, + -2002, -2199, -2221, -2243, -2323, -2403, -2387, -2370, -2286, -2201, -2453, -2704, -1412, 137, + -1403, -2174, -2503, -2831, 248, 0, 27, 55, 35, 15, 3, -9, -21, -33, -45, -57, -101, -145, + -176, -206, -221, -235, -178, -120, -415, -709, -191, -2489, -2547, -2349, -2349, -2349, -2349, + -2040, -2065, -2089, -2114, -2138, -2203, -2267, -2236, -2204, -2207, -2210, -2181, -2152, + -2131, -2110, -2217, -1812, -1553, -2317, -2026, -1734, -1579, -1423, -1940, -2456, -2395, + -2334, -2081, -2340, -2551, -2250, -2013, -2288, -2447, -2093, -44, -42, -9, 25, 26, 28, 10, + -8, -26, -44, -62, -80, -98, -116, -165, -214, -263, -312, -281, -250, -155, -60, -940, -1820, + -2348, -2364, -2396, -2428, -2428, -2038, -2060, -2081, -2102, -2123, -2124, -2125, -2287, + -2191, -2066, -1941, -1912, -1882, -2233, -2328, -2151, -1717, -1487, -2024, -1761, -1498, + -1243, -988, -718, -446, -1227, -2007, -2724, -2160, -2331, -2245, -2176, -2362, -2339, -1036, + 107, -29, -20, -10, 15, 41, 19, -3, -25, -47, -89, -131, -141, -151, -209, -266, -356, -445, + -459, -472, -406, -83, -1135, -1163, -1895, -2371, -2387, -2403, -2403, -2036, -2054, -2072, + -2090, -2107, -2045, -1983, -2081, -1666, -1669, -1671, -1898, -2124, -2591, -2545, -2084, + -1622, -1420, -1730, -1496, -1261, -1163, -1065, -775, -484, -314, -144, -806, -2492, -2366, + -2240, -2338, -2436, -2487, -490, 3, -15, -30, -45, 4, 54, 28, 2, -24, -50, -116, -182, -184, + -186, -252, -318, -448, -578, -636, -694, -656, -106, -2098, -2042, -2210, -2378, -2378, -2378, + -2378, -2034, -2049, -2063, -2078, -2092, -2094, -2097, -1651, -1461, -1688, -1914, -2156, + -2398, -2677, -2443, -2017, -1591, -1450, -1564, -1343, -1121, -987, -854, -624, -394, -266, + -137, 199, 24, -1554, -2363, -2325, -2286, -2123, -2728, -1221, 30, 135, -16, 25, 67, 37, 7, + -7, -21, -111, -201, -211, -221, -296, -370, -461, -551, -510, -468, -635, -545, -2805, -2249, + -2301, -2353, -2353, -2353, -2353, -2032, -2043, -2054, -2065, -2076, -2143, -2210, -1477, + -1768, -1962, -2156, -2414, -2672, -2762, -2340, -1950, -1560, -1479, -1398, -1189, -980, -811, + -642, -473, -304, -217, -130, -75, -20, 27, -2486, -2311, -2136, -2527, -2406, -2445, -2484, + -979, 14, 47, 80, 46, 12, 10, 8, -106, -220, -238, -256, -339, -422, -473, -524, -639, -754, + -1637, -2520, -2232, -2456, -2392, -2328, -2328, -2328, -2328, -2012, -2031, -2050, -2053, + -2056, -2193, -2074, -1587, -1867, -2082, -2296, -2527, -2757, -2654, -2294, -1887, -1479, + -1381, -1282, -1088, -893, -749, -604, -492, -379, -244, -109, -182, 1, -606, -2493, -2284, + -2331, -2482, -2376, -2415, -2453, -2309, -2422, -1350, -278, -125, 29, 87, 145, 126, 108, 26, + -56, -279, -502, -1108, -1715, -2164, -2612, -2533, -2453, -2297, -2397, -2369, -2341, -2341, + -2341, -2341, -1992, -2019, -2046, -2041, -2035, -2242, -1937, -1696, -1966, -2201, -2436, + -2639, -2842, -2545, -2248, -1823, -1398, -1282, -1166, -986, -806, -686, -566, -510, -454, + -271, -88, -289, 22, -1239, -2500, -2257, -2526, -388, -2346, -2384, -2421, -2359, -2297, + -2491, -2684, -2343, -2001, -1628, -1254, -1177, -1099, -1502, -1904, -2267, -2629, -2511, + -2393, -2408, -2422, -2404, -2386, -2362, -2338, -2346, -2354, -2354, -2354, -2354, -1972, + -2007, -2042, -2045, -2047, -2196, -1832, -1837, -2097, -2337, -2576, -2736, -2895, -2565, + -2234, -1840, -1445, -1280, -1114, -917, -719, -624, -528, -529, -529, -426, -323, -60, -53, + -2528, -2443, -2518, -2081, 169, -140, -1313, -2486, -2441, -2396, -2384, -2370, -2401, -2432, + -2511, -2589, -2560, -2531, -2502, -2472, -2431, -2388, -2490, -2336, -2940, -2008, -1332, + -2447, -2395, -2343, -2355, -2367, -2367, -2367, -2367, -1952, -1995, -2037, -2048, -2058, + -2149, -1727, -1978, -2228, -2472, -2716, -2832, -2948, -2584, -2220, -1856, -1492, -1277, + -1062, -847, -632, -561, -490, -547, -604, -581, -558, -343, -1152, -2281, -2386, -2523, -1124, + -41, 19, 14, 10, -1243, -2495, -2532, -2568, -2459, -2350, -2369, -2388, -2407, -2426, -2477, + -2528, -2594, -2659, -2213, -1254, 368, 967, -1027, -2508, -2428, -2348, -2364, -2380, -2380, + -2380, -2380, -1948, -1997, -2045, -2062, -2078, -1959, -1839, -2071, -2303, -2546, -2788, + -2919, -3049, -2874, -2442, -2027, -1611, -1375, -1138, -966, -793, -733, -672, -708, -743, + -848, -953, -2018, -2059, -2442, -2313, -2328, -295, 98, -19, 23, 65, 25, -15, -631, -1246, + -1796, -2345, -2510, -2675, -2541, -2406, -1887, -1368, -468, 433, 438, 699, 1162, 857, -2697, + -2409, -2413, -2417, -2389, -2361, -2361, -2361, -2361, -1944, -1999, -2053, -2075, -2097, + -1768, -1950, -2164, -2378, -2619, -2860, -3005, -3150, -3163, -2664, -2197, -1730, -1472, + -1214, -1084, -954, -904, -854, -868, -882, -859, -836, -877, -1942, -2091, -2240, -2389, 22, + -18, -57, 32, 121, 13, -94, -9, 76, 148, 221, 165, 110, 142, 175, 239, 304, 379, 454, 529, 605, + 676, 235, -2574, -2310, -2398, -2486, -2414, -2342, -2342, -2342, -2342, -1940, -2001, -2061, + -2073, -2085, -1641, -1965, -2145, -2325, -2533, -2740, -2900, -3059, -3053, -2790, -2320, + -1849, -1570, -1290, -1203, -1115, -1076, -1036, -1029, -1021, -1078, -1135, -504, -2689, + -2396, -2359, -1554, 19, -6, -31, 25, 80, 33, -13, 36, 86, 124, 162, 136, 111, 137, 163, 237, + 312, 393, 475, 524, 574, 654, -803, -2467, -2339, -2383, -2427, -2375, -2323, -2323, -2323, + -2323, -1936, -2002, -2068, -2070, -2072, -1514, -1980, -2126, -2272, -2446, -2620, -2794, + -2968, -2942, -2916, -2442, -1968, -1667, -1366, -1321, -1276, -1247, -1218, -1189, -1160, + -1041, -922, -1411, -2412, -2189, -2478, -719, 16, 6, -4, 18, 40, 54, 68, 82, 96, 100, 104, + 108, 112, 132, 152, 236, 320, 408, 496, 520, 544, 632, -1840, -2360, -2368, -2368, -2368, + -2336, -2304, -2304, -2304, -2304, -1898, -1921, -1944, -2111, -1766, -1551, -1848, -1985, + -2122, -2319, -2516, -2665, -2814, -3075, -3080, -2829, -2321, -2026, -1730, -1610, -1490, + -1458, -1426, -1394, -1362, -1247, -1132, -1880, -2373, -2534, -2694, 329, 25, 40, 55, 54, 54, + 71, 88, 105, 123, 151, 180, 208, 237, 83, -70, 48, 167, 248, 329, 346, 363, 732, -2739, -2578, + -2416, -2395, -2374, -2353, -2332, -2332, -2332, -2332, -1860, -1840, -1820, -2152, -1460, + -1588, -1716, -1844, -1972, -2192, -2412, -2536, -2659, -2951, -2731, -2959, -2674, -2384, + -2093, -1898, -1703, -1669, -1634, -1599, -1564, -1453, -1341, -2349, -2333, -2366, -1886, + -158, 34, 74, 115, 91, 68, 88, 109, 129, 150, 203, 256, 309, 362, 291, 220, 117, 14, 88, 162, + 172, 183, -703, -2613, -2283, -2464, -2422, -2380, -2370, -2360, -2360, -2360, -2360, -2110, + -1967, -1824, -1953, -1314, -1513, -1712, -1815, -1918, -2209, -2244, -2455, -2409, -2604, + -2542, -2753, -2707, -2694, -2680, -2411, -2141, -2056, -1970, -1868, -1766, -1723, -1678, + -2370, -2294, -2518, -950, -54, 75, 92, 110, 96, 82, 105, 129, 153, 177, 222, 268, 313, 359, + 354, 350, 441, 533, 472, 411, 414, 674, -1691, -2519, -2340, -2416, -2401, -2386, -2387, -2388, + -2388, -2388, -2388, -1848, -1838, -1828, -1754, -1168, -1438, -1708, -1786, -1864, -2226, + -2075, -2373, -2158, -2256, -2353, -2547, -2740, -2748, -2755, -2667, -2578, -2442, -2305, + -2137, -1968, -1992, -2015, -2391, -2254, -2670, -13, 51, 116, 111, 106, 101, 96, 123, 150, + 177, 204, 242, 280, 318, 356, 418, 480, 510, 540, 600, 661, 657, 1166, -2678, -2425, -2397, + -2368, -2380, -2392, -2404, -2416, -2416, -2416, -2416, -1882, -1711, -1796, -1369, -1198, + -1419, -1640, -1749, -1858, -1979, -1843, -2060, -2020, -2115, -2209, -2367, -2525, -2480, + -2691, -2838, -2984, -2761, -2537, -2394, -2250, -2196, -2141, -2358, -2319, -2020, 71, 113, + 157, 151, 145, 139, 134, 160, 186, 212, 239, 273, 308, 342, 377, 439, 502, 548, 595, 632, 670, + 931, 169, -2668, -2432, -2404, -2376, -2385, -2394, -2403, -2412, -2412, -2412, -2412, -1916, + -1840, -2276, -1240, -1228, -1400, -1572, -1712, -1852, -1732, -1611, -1746, -1881, -1973, + -2064, -2187, -2310, -2212, -2626, -2752, -2877, -2823, -2769, -2651, -2532, -2399, -2266, + -2325, -2383, -1370, 155, 176, 198, 191, 185, 178, 172, 197, 223, 248, 274, 305, 336, 367, 398, + 461, 524, 587, 650, 664, 679, 1206, -827, -2657, -2438, -2411, -2384, -2390, -2396, -2402, + -2408, -2408, -2408, -2408, -1950, -1953, -1956, -1063, -1194, -1317, -1440, -1435, -1430, + -1501, -1315, -1433, -1551, -1639, -1727, -1799, -1871, -1928, -2241, -2410, -2579, -2598, + -2617, -2732, -2846, -2555, -2263, -2260, -2512, -528, 175, 207, 239, 231, 224, 217, 210, 234, + 259, 284, 309, 336, 364, 391, 419, 482, 546, 609, 673, 744, 816, 936, -2016, -2486, -2188, + -2290, -2392, -2395, -2398, -2401, -2404, -2404, -2404, -2404, -1984, -2066, -1636, -886, + -1160, -1234, -1308, -1414, -1520, -2037, -2042, -1887, -1732, -1817, -1902, -1923, -1944, + -1900, -1856, -2068, -2280, -2372, -2464, -2556, -2648, -2454, -2260, -2194, -2640, 314, 196, + 238, 280, 272, 264, 256, 248, 272, 296, 320, 344, 368, 392, 416, 440, 504, 568, 632, 696, 825, + 954, 923, -2692, -2315, -2450, -2425, -2400, -2400, -2400, -2400, -2400, -2400, -2400, -2400, + -2252, -1954, -1143, -1036, -1441, -1827, -2212, -2245, -2278, -2222, -1909, -1916, -1923, + -2002, -2337, -2096, -2111, -2172, -2232, -2132, -2032, -2144, -2256, -2304, -2352, -2307, + -2261, -2360, -1690, 442, 269, 305, 341, 333, 325, 317, 309, 329, 349, 369, 389, 415, 441, 468, + 494, 536, 579, 669, 760, 797, 1091, -248, -2610, -2407, -2459, -2432, -2404, -2400, -2396, + -2392, -2388, -2388, -2388, -2388, -2008, -2097, -1673, -1954, -2234, -2163, -2091, -2052, + -2012, -2150, -2287, -2200, -2113, -1931, -2260, -2013, -2278, -2187, -2095, -2195, -2295, + -2172, -2048, -2052, -2056, -2159, -2262, -2525, -739, 570, 343, 372, 402, 394, 386, 378, 370, + 386, 402, 418, 434, 462, 491, 520, 549, 569, 590, 707, 824, 770, 1228, -1418, -2528, -2498, + -2468, -2438, -2408, -2400, -2392, -2384, -2376, -2376, -2376, -2376, -1988, -2192, -2140, + -2152, -2163, -2131, -2099, -2083, -2066, -2142, -2217, -2181, -2144, -2068, -2247, -2138, + -2285, -2234, -2182, -2227, -2271, -2328, -2384, -2168, -1952, -2252, -2551, -2466, 179, 394, + 353, 407, 463, 455, 447, 423, 399, 523, 391, 547, 447, 493, 541, 572, 603, 634, 665, 792, 920, + 1094, 1269, -2765, -2446, -2430, -2413, -2413, -2412, -2400, -2388, -2376, -2364, -2364, -2364, + -2364, -1968, -2031, -2094, -2093, -2092, -2099, -2106, -2113, -2120, -2134, -2147, -2161, + -2174, -2204, -2233, -2263, -2292, -2281, -2269, -2258, -2246, -2227, -2207, -2284, -2360, + -2344, -2327, -2407, 586, -38, 363, 443, 524, 516, 508, 468, 428, 660, 380, 676, 460, 525, 591, + 624, 658, 699, 741, 878, 1016, 907, 286, -2575, -2364, -2361, -2358, -2387, -2416, -2400, + -2384, -2368, -2352, -2352, -2352, -2352, -2020, -2073, -2125, -2081, -2037, -2064, -2090, + -2116, -2142, -2154, -2166, -2178, -2189, -2213, -2236, -2260, -2283, -2276, -2269, -2262, + -2254, -2251, -2247, -2292, -2336, -2339, -2340, -1206, -72, -16, 296, 496, 441, 469, 497, 381, + 521, 635, 493, 735, 465, 544, 624, 640, 656, 748, 840, 899, 960, 1115, -1033, -2494, -2418, + -2379, -2339, -2380, -2420, -2408, -2396, -2384, -2372, -2372, -2372, -2372, -2072, -2114, + -2155, -2069, -1982, -2028, -2073, -2119, -2164, -2174, -2184, -2194, -2203, -2221, -2239, + -2257, -2274, -2271, -2268, -2265, -2261, -2274, -2287, -2300, -2312, -2333, -2353, -2053, + -729, 6, 230, 550, 358, 422, 486, 294, 614, 610, 606, 794, 470, 564, 658, 656, 655, 797, 939, + 921, 904, 1324, -2352, -2412, -2472, -2396, -2320, -2372, -2424, -2416, -2408, -2400, -2392, + -2392, -2392, -2392, -1996, -1931, -1866, -1961, -2055, -2088, -2121, -2154, -2186, -2194, + -2202, -2210, -2218, -2230, -2242, -2254, -2265, -2266, -2267, -2268, -2269, -2282, -2295, + -2308, -2320, -2343, -2366, -2708, -2539, -1492, -188, 171, 275, 327, 379, 287, 451, 505, 559, + 773, 475, 551, 628, 512, 653, 910, 654, 1007, 1104, -740, -2583, -2507, -2430, -2398, -2365, + -2397, -2428, -2424, -2420, -2416, -2412, -2412, -2412, -2412, -1920, -2004, -2088, -2108, + -2128, -2148, -2168, -2188, -2208, -2214, -2220, -2226, -2232, -2238, -2244, -2250, -2256, + -2261, -2266, -2271, -2276, -2289, -2302, -2315, -2328, -2353, -2378, -2339, -2300, -2477, + -1630, -719, 192, 232, 272, 280, 288, 400, 512, 752, 480, 539, 598, 369, 652, 767, -142, -1211, + -2792, -2547, -2302, -2345, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2024, -2070, -2116, -2130, -2144, -2164, -2184, -2204, -2224, -2228, + -2232, -2236, -2240, -2244, -2248, -2252, -2256, -2263, -2270, -2277, -2284, -2297, -2310, + -2323, -2336, -2320, -2304, -2288, -2272, -2560, -2336, -1856, -1376, -2264, -1104, -520, 64, + 384, 704, 704, 192, -44, -280, -1236, -1936, -3018, -2564, -2350, -2392, -2391, -2390, -2389, + -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2128, + -2136, -2144, -2152, -2160, -2180, -2200, -2220, -2240, -2242, -2244, -2246, -2248, -2250, + -2252, -2254, -2256, -2265, -2274, -2283, -2292, -2305, -2318, -2331, -2344, -2287, -2230, + -2237, -2244, -2387, -2530, -2481, -2432, -2456, -2480, -2600, -2720, -2448, -2176, -1904, + -2144, -2419, -2694, -2585, -2476, -2451, -2426, -2465, -2504, -2491, -2478, -2433, -2388, + -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2104, -2122, + -2140, -2158, -2176, -2196, -2216, -2236, -2256, -2256, -2256, -2256, -2256, -2256, -2256, + -2256, -2256, -2267, -2278, -2289, -2300, -2313, -2326, -2339, -2352, -2318, -2284, -2282, + -2280, -2358, -2436, -2418, -2400, -2408, -2416, -2360, -2304, -2480, -864, -1648, -1408, + -1226, -2580, -2510, -2440, -2428, -2416, -2436, -2456, -2447, -2438, -2413, -2388, -2399, + -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, + -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, + -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, + -2329, -2342, -2355, -2368, -2360, -2352, -2376, -2400, -2256, -2624, -1392, -1696, -2593, + -2466, -2435, -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, + -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, + -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, + -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, + -2342, -2355, -2368, -2360, -2352, -2360, -2368, -2352, -2592, -2192, -2560, -2769, -2466, + -2435, -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, + -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, + -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, -2269, + -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, -2342, + -2355, -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, + -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, + -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, + -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, -2269, -2282, + -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, -2342, -2355, + -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, -2404, + -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, + -2432, -2432, -2432, -2432, -2432, -2432, +]; + +const RGB_BUFFER: [u8; 4 * 64 * 64] = [ + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, + 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, + 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, + 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, + 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, + 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, + 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, + 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, + 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, + 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, + 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, + 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, + 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, + 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, + 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, + 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, + 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, + 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, + 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, + 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, + 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, + 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, + 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, + 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, + 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, + 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, + 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, + 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, + 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, + 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, + 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, + 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, + 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, + 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, + 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, + 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, + 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, + 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, + 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, + 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, + 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, + 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, + 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, + 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, + 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, + 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, + 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, + 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, + 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, + 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, + 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, + 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, + 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, + 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, + 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, + 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, + 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, + 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, + 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, + 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, + 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, + 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, + 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, + 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, + 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, + 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, + 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, + 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, + 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, + 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, + 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, + 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, + 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, + 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, + 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, + 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, + 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, + 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, + 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, + 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, + 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, + 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, + 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, + 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, + 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, + 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, + 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, + 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, + 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, + 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, + 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, + 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, + 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, + 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, + 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, + 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, + 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, + 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, + 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, + 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, + 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, + 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, + 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, + 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, + 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, + 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, + 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, + 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, + 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, + 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, + 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, + 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, + 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, + 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, + 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, + 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, + 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, + 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, + 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, + 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, + 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, + 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, + 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, + 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, + 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, + 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, + 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, + 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, + 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, + 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, + 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, + 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, + 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, + 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, + 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, + 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, + 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, + 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, + 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, + 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, + 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, + 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, + 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, + 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, + 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, + 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, + 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, + 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, + 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, + 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, + 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, + 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, + 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, + 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, + 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, + 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, + 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, + 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, + 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, + 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, + 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, + 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, + 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, + 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, + 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, + 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, + 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, + 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, + 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, + 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, + 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, + 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, + 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, + 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, + 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, + 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, + 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, + 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, + 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, + 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, + 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, + 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, + 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, + 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, + 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, + 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, + 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, + 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, + 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, + 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, + 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, + 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, + 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, + 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, + 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, + 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, + 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, + 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, + 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, + 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, + 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, + 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, + 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, + 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, + 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, + 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, + 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, + 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, + 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, + 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, + 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, + 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, + 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, + 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, + 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, + 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, + 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, + 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, + 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, + 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, + 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, + 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, + 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, + 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, + 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, + 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, + 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, + 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, + 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, + 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, + 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, + 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, + 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, + 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, + 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, + 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, + 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, + 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, + 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, + 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, + 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, + 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, + 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, + 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, + 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, + 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, + 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, + 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, + 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, + 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, + 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, + 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, + 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, + 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, + 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, + 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, + 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, + 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, + 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, + 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, + 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, + 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, + 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, + 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, + 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, + 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, + 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, + 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, + 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, + 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, + 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, + 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, + 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, + 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, + 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, + 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, + 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, + 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, + 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, + 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, + 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, + 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, + 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, + 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, + 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, + 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, + 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, + 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, + 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, + 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, + 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, + 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, + 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, + 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, + 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, + 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, + 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, + 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, + 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, + 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, + 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, + 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, + 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, + 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, + 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, + 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, + 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, + 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, + 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, + 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, + 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, + 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, + 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, + 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, + 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, + 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, + 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, + 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, + 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, + 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, + 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, + 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, + 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, + 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, + 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, + 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, + 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, + 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, + 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, + 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, + 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, + 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, + 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, + 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, + 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, + 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, + 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, + 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, + 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, + 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, + 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, + 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, + 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, + 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, + 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, + 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, + 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, + 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, + 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, + 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, + 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, + 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, + 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, + 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, + 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, + 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, + 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, + 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, + 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, + 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, + 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, + 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, + 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, + 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, + 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, + 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, + 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, + 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, + 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, + 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, + 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, + 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, + 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, + 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, + 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, + 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, + 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, + 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, + 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, + 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, + 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, + 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, + 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, + 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, + 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, + 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, + 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, + 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, + 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, + 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, + 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, + 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, + 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, + 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, + 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, + 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, + 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, + 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, + 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, + 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, + 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, + 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, + 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, + 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, + 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, + 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, + 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, + 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, + 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, + 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, + 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, + 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, + 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, + 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, + 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, + 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, + 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, + 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, + 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, + 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, + 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, + 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, + 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, + 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, + 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, + 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, + 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, + 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, + 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, + 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, + 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, + 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, + 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, + 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, + 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, + 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, + 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, + 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, + 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, + 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, + 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, + 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, + 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, + 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, + 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, + 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, + 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, + 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, + 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, + 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, + 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, + 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, + 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, + 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, + 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, + 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, + 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, + 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, + 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, + 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, + 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, + 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, + 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, + 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, + 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, + 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, + 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, + 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, + 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, + 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, + 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, + 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, + 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, + 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, + 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, + 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, + 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, + 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, + 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, + 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, + 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, + 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, + 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, + 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, + 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, + 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, + 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, + 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, + 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, + 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, + 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, + 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, + 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, + 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, + 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, + 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, + 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, + 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, + 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, + 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, + 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, + 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, + 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, + 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, + 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, + 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, + 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, + 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, + 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, + 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, + 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, + 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, + 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, + 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, + 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, + 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, + 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, + 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, + 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, + 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, + 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, + 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, + 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, + 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, + 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, + 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, + 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, + 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, + 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, + 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, + 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, + 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, + 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, + 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, + 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, + 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, + 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, + 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, + 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, + 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, + 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, + 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, + 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, + 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, + 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, + 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, + 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, + 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, + 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, + 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, + 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, + 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, + 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, + 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, + 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, + 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, + 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, + 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, + 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, + 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, + 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, + 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, + 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, + 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, + 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, + 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, + 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, + 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, + 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, + 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, + 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, + 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, + 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, + 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, + 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, + 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, + 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, + 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, + 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, + 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, + 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, + 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, + 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, + 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, + 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, + 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, + 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, + 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, + 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, + 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, + 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, + 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, + 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, + 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, + 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, + 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, + 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, + 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, + 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, + 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, + 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, + 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, + 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, + 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, + 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, + 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, + 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, + 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, + 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, + 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, + 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, + 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, + 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, + 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, + 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, + 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, + 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, + 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, + 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, + 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, + 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, + 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, + 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, + 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, + 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, + 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, + 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, + 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, + 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, + 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, + 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, + 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, + 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, + 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, + 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, + 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, + 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, + 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, + 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, + 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, + 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, + 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, + 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, + 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, + 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, + 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, + 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, + 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, + 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, + 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, + 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, + 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, + 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, + 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, + 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, + 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, + 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, + 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, + 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, + 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, + 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, + 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, + 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, + 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, + 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, + 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, + 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, + 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, + 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, + 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, + 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, + 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, + 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, + 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, + 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, + 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, + 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, + 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, + 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, + 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, + 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, + 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, + 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, + 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, + 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, + 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, + 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, + 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, + 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, + 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, + 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, + 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, + 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, + 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, + 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, + 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, + 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, + 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, + 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, + 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, + 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, + 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, + 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, + 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, + 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, + 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, + 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, + 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, + 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, + 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, + 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, + 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, + 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, + 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, + 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, + 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, + 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, + 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, + 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, + 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, + 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, + 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, + 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, + 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, + 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, + 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, + 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, + 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, + 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, + 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, + 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, + 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, + 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, + 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, + 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, + 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, + 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, + 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, + 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, + 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, + 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, + 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, + 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, + 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, + 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, + 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, + 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, + 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, + 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, + 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, + 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, + 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, + 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, + 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, + 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, + 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, + 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, + 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, + 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, + 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, + 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, + 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, + 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, + 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, + 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, + 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, + 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, + 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, + 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, + 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, + 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, + 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, + 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, + 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, + 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, + 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, + 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, + 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, + 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, + 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, + 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, + 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, + 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, + 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, + 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, + 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, + 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, + 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, + 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, + 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, + 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, + 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, + 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, + 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, + 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, + 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, + 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, + 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, + 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, + 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, + 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, + 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, + 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, + 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, + 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, + 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, + 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, + 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, + 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, + 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, +]; diff --git a/ironrdp/src/codecs/rfx/dwt.rs b/ironrdp/src/codecs/rfx/dwt.rs new file mode 100644 index 00000000..d9ac1832 --- /dev/null +++ b/ironrdp/src/codecs/rfx/dwt.rs @@ -0,0 +1,105 @@ +#[cfg(test)] +mod tests; + +use crate::split_to; + +pub fn decode(buffer: &mut [i16], temp_buffer: &mut [i16]) { + decode_block(&mut buffer[3840..], temp_buffer, 8); + decode_block(&mut buffer[3072..], temp_buffer, 16); + decode_block(&mut buffer[..], temp_buffer, 32); +} + +fn decode_block(buffer: &mut [i16], temp_buffer: &mut [i16], subband_width: usize) { + inverse_horizontal(buffer, temp_buffer, subband_width); + inverse_vertical(buffer, temp_buffer, subband_width); +} + +// Inverse DWT in horizontal direction, results in 2 sub-bands in L, H order in output buffer +// The 4 sub-bands are stored in HL(0), LH(1), HH(2), LL(3) order. +// The lower part L uses LL(3) and HL(0). +// The higher part H uses LH(1) and HH(2). +fn inverse_horizontal(mut buffer: &[i16], temp_buffer: &mut [i16], subband_width: usize) { + let total_width = subband_width * 2; + let squared_subband_width = subband_width.pow(2); + + let mut hl = split_to!(buffer, squared_subband_width); + let mut lh = split_to!(buffer, squared_subband_width); + let mut hh = split_to!(buffer, squared_subband_width); + let mut ll = buffer; + + let (mut l_dst, mut h_dst) = temp_buffer.split_at_mut(squared_subband_width * 2); + + for _ in 0..subband_width { + // Even coefficients + l_dst[0] = (i32::from(ll[0]) - ((i32::from(hl[0]) + i32::from(hl[0]) + 1) >> 1)) as i16; + h_dst[0] = (i32::from(lh[0]) - ((i32::from(hh[0]) + i32::from(hh[0]) + 1) >> 1)) as i16; + for n in 1..subband_width { + let x = n * 2; + l_dst[x] = + (i32::from(ll[n]) - ((i32::from(hl[n - 1]) + i32::from(hl[n]) + 1) >> 1)) as i16; + h_dst[x] = + (i32::from(lh[n]) - ((i32::from(hh[n - 1]) + i32::from(hh[n]) + 1) >> 1)) as i16; + } + + // Odd coefficients + for n in 0..subband_width - 1 { + let x = n * 2; + l_dst[x + 1] = (i32::from(hl[n] << 1) + + ((i32::from(l_dst[x]) + i32::from(l_dst[x + 2])) >> 1)) + as i16; + h_dst[x + 1] = (i32::from(hh[n] << 1) + + ((i32::from(h_dst[x]) + i32::from(h_dst[x + 2])) >> 1)) + as i16; + } + let n = subband_width - 1; + let x = n * 2; + l_dst[x + 1] = (i32::from(hl[n] << 1) + i32::from(l_dst[x])) as i16; + h_dst[x + 1] = (i32::from(hh[n] << 1) + i32::from(h_dst[x])) as i16; + + hl = &hl[subband_width..]; + lh = &lh[subband_width..]; + hh = &hh[subband_width..]; + ll = &ll[subband_width..]; + + l_dst = &mut l_dst[total_width..]; + h_dst = &mut h_dst[total_width..]; + } +} + +fn inverse_vertical(mut buffer: &mut [i16], mut temp_buffer: &[i16], subband_width: usize) { + let total_width = subband_width * 2; + + for _ in 0..total_width { + buffer[0] = (i32::from(temp_buffer[0]) + - ((i32::from(temp_buffer[subband_width * total_width]) * 2 + 1) >> 1)) + as i16; + + let mut l = &temp_buffer[..]; + let mut lh = &temp_buffer[(subband_width - 1) * total_width..]; + let mut h = &temp_buffer[subband_width * total_width..]; + let mut dst = &mut buffer[..]; + + for _ in 1..subband_width { + l = &l[total_width..]; + lh = &lh[total_width..]; + h = &h[total_width..]; + + // Even coefficients + dst[2 * total_width] = + (i32::from(l[0]) - ((i32::from(lh[0]) + i32::from(h[0]) + 1) >> 1)) as i16; + + // Odd coefficients + dst[total_width] = (i32::from(lh[0] << 1) + + ((i32::from(dst[0]) + i32::from(dst[2 * total_width])) >> 1)) + as i16; + + dst = &mut dst[2 * total_width..]; + } + + dst[total_width] = (i32::from(lh[total_width] << 1) + + ((i32::from(dst[0]) + i32::from(dst[0])) >> 1)) as i16; + + temp_buffer = &temp_buffer[1..]; + buffer = &mut buffer[1..]; + } +} diff --git a/ironrdp/src/codecs/rfx/dwt/tests.rs b/ironrdp/src/codecs/rfx/dwt/tests.rs new file mode 100644 index 00000000..5a955fbe --- /dev/null +++ b/ironrdp/src/codecs/rfx/dwt/tests.rs @@ -0,0 +1,706 @@ +use super::*; + +#[test] +fn decode_works_for_min_values() { + let mut buffer = [-32768; 4096]; + let expected = [0; 4096]; + + let mut temp = vec![0; 4096]; + decode(&mut buffer, temp.as_mut_slice()); + assert_eq!(expected.as_ref(), buffer.as_ref()); +} + +#[test] +fn decode_works_for_max_values() { + let mut buffer = [32767; 4096]; + let expected = DECODED_DWT_FOR_MAX_VALUES; + + let mut temp = vec![0; 4096]; + decode(&mut buffer, temp.as_mut_slice()); + assert_eq!(expected.as_ref(), buffer.as_ref()); +} + +#[test] +fn decode_works_for_regular_values() { + let mut buffer = ENCODED_DWT; + let expected = DECODED_DWT; + + let mut temp = vec![0; 4096]; + decode(&mut buffer, temp.as_mut_slice()); + assert_eq!(expected.as_ref(), buffer.as_ref()); +} + +const DECODED_DWT_FOR_MAX_VALUES: [i16; 4096] = [ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, + -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, + 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, + 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, + -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, + -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, + -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, + -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, + -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, + -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4, -2, -6, + -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, + -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, + -2, -6, -2, -4, 2, -4, -2, -6, -2, -7, -4, -8, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, + 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, + 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, + 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, + 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, -4, -6, -6, 2, 16379, 32764, 16377, -2, 16377, + 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, + 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, + -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, + 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, -8, -6, -10, +]; + +const ENCODED_DWT: [i16; 4096] = [ + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 256, 0, 0, + 0, 0, 0, 0, 0, 128, 0, -256, 512, -640, -128, 0, 0, 0, 0, 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -384, 0, 384, 0, 0, 0, 0, 0, 0, -128, 512, 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, + 640, 0, 0, 0, 0, 0, 0, 256, 128, 0, 256, -640, -512, 128, 0, 0, 0, 0, 0, 0, 128, 384, -128, + 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, 0, 0, 0, + 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, 0, 0, 0, 0, 0, -384, 128, 640, 0, 0, 0, 0, 0, 0, -128, + 0, 0, 128, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, -256, 0, 0, + 0, 0, 0, 128, 0, -1152, -384, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, + -128, -128, -128, 0, 0, 0, 0, 0, 0, 768, -256, -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, + 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, 256, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 256, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, 0, -128, + 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, + 0, 128, 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -512, 0, 0, 0, 0, 0, -128, + -768, 128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, -128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 1280, 0, 0, 0, -128, + 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -640, + -640, 384, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, -128, 0, + 0, 0, 0, 0, 0, 384, -128, -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, 0, 0, 0, + -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 256, 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 768, -128, + 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, -384, -128, 768, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, -256, 0, -128, 0, 0, 0, 0, 128, + -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, -128, -1280, 384, 128, 256, + 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 384, -256, 0, 0, 0, 0, + 0, 768, -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, 128, 128, 128, 768, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 512, 128, 0, 0, 0, 0, 0, 384, 256, 0, 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, + -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, -128, 0, 0, 128, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, -128, 0, 0, + -128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, -256, + -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, + 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, 128, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 128, 384, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, -640, -384, -512, -768, -768, 896, 128, 128, + -128, 0, 0, 0, 0, 0, 0, 0, -128, -256, -384, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, -128, + 0, -256, -384, 128, 128, -1024, 768, 0, -128, 128, 0, 0, 0, 0, 128, 128, 0, 0, 768, -384, -128, + 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, 0, 256, 896, -768, -128, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, 0, -128, + 768, -128, 128, -768, 896, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -256, 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, -128, -128, 896, -1024, 0, 128, + -256, -512, -384, -128, 128, -384, -512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 128, -384, -640, 0, 128, 0, 0, 1024, -128, -896, -1152, -896, -256, 768, 384, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, + 0, 0, 128, -128, 0, 0, 0, 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -128, 128, -128, 0, 0, 0, 0, 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 256, 128, + -512, -640, -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, + -256, -128, 128, -128, 128, -128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, -128, 128, 128, 0, 128, 0, -128, 384, -128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 128, 128, 128, 0, + -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, + 512, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, + 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, + -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, + 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, + -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, + 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, -64, 0, -320, 192, -128, 64, 0, -64, 0, 0, 0, + 0, 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, 0, 64, -256, 1344, 384, 0, + 0, -320, -64, 64, 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, -128, 512, -64, 0, + 192, 64, -1152, 1024, 64, -64, 128, 0, -256, -256, 0, 0, -384, 64, -192, -64, 64, 896, -1472, + 64, 0, 64, 0, 64, -192, -64, 0, 0, 0, -320, -128, 192, -64, 704, -512, -192, 0, 64, 0, -64, + -192, 64, 0, 896, 64, 0, -64, 0, 0, -960, -128, 448, 64, -64, 64, -192, -64, -64, -128, -896, + 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, 64, -64, 192, -896, 64, -128, 128, + -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, 64, 64, 64, 0, 128, 128, 512, 0, 0, + 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, + -64, 128, 0, 0, 64, 0, -320, 0, 0, -64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, + 64, 256, 256, -128, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -64, 64, 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, + 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, 0, 64, -64, 64, 0, 64, -512, -64, 0, 0, 64, -192, + 0, 0, -64, 192, 0, 0, 64, -192, -192, -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, 192, -64, + 64, 64, 0, 64, -320, 1280, 0, 0, 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, + 0, 64, -192, 128, -576, -768, -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, + -832, 0, 0, 1024, -448, 0, 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, + -192, -1088, -896, 128, -256, -896, -64, 0, -64, 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, + 832, 960, 576, -128, 0, 128, -192, 128, 128, -128, 128, 64, -64, 64, 0, 0, -128, 320, 448, -64, + 0, 64, 256, -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, -192, 1088, 512, -64, + 256, 512, -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, 0, + 320, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -448, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -512, + -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, 0, 0, 128, + 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, -128, -128, -128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, -256, 0, 0, + -128, 384, 128, 256, -128, 0, 0, 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, + -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, -128, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, + 0, -128, 0, 0, 0, -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -256, 256, 0, 0, 128, -256, 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, -64, 32, 0, -32, -64, 0, -32, 256, 192, + 96, 0, -32, -192, 0, 128, 160, -416, -1696, -96, -64, 0, -64, -480, -224, 800, 256, 96, 224, + -800, 832, -384, 160, 640, 192, 224, -160, -416, 64, -64, 160, -1728, 320, -64, 960, 96, -1472, + 352, -288, -32, -64, 32, -576, -64, 256, -96, 96, -160, -128, -32, -160, -64, -96, 0, 32, -320, + -96, 32, -32, 32, -160, -32, -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, + -256, 768, -672, -1568, -128, 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, + -192, -576, 160, 32, -96, -128, -32, 416, 672, 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, + -448, -608, -224, 32, -32, -32, -96, -64, 0, 0, -32, -32, -32, -224, 96, 128, 224, -32, -192, + -448, -32, -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, -672, 800, -128, -64, -736, 64, + 64, 96, -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, 224, 160, 96, + 32, -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, + 448, 96, 1184, 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, 992, + 1792, 2752, 2016, 4096, 3680, 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, -1088, + 1920, 2720, 3264, 3424, 3616, 192, 672, -320, 320, -512, 4032, 3456, 2720, -320, 1888, 1664, + 1248, 960, 1120, 1696, 480, -96, +]; +const DECODED_DWT: [i16; 4096] = [ + -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, + -72, -98, -124, -150, -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, + -304, -336, -368, -400, -432, -450, -468, -486, -504, -522, -540, -558, -576, -598, -620, -642, + -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, -816, -816, 68, 120, 172, 240, 53, + 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, -120, -146, + -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, + -404, -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, + -733, -754, -775, -796, -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, + 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, -64, -90, -116, -106, -95, -148, -201, -199, -196, + -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, -358, -379, -401, -422, -448, -473, + -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, -776, -776, -776, + -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, + 54, 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, + -219, -237, -254, -271, -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, + -589, -648, -707, -670, -632, -663, -694, -725, -756, -756, -756, -756, 368, 401, 434, 339, + 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, 94, 100, 106, 112, 86, 60, 2, + -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, -228, -240, + -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, + -628, -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, + 282, 260, 238, 246, 254, 118, 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, + -232, -273, -123, 29, -63, -155, -151, -146, -164, -181, -199, -216, -241, -266, -291, -315, + -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, -625, -642, -675, -708, + -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, 356, + -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, + -245, -176, -139, -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, + -400, -395, -455, -514, -558, -601, -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, + 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, 346, 258, -342, -302, -6, 288, 582, 604, + 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, -293, -175, -57, -85, + -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, -487, + -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, + 460, 430, 400, 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, + 1120, 1155, 1190, 1097, 1004, 839, 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, + -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, -368, -464, -416, -368, -448, -528, + -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, 464, 462, 492, + 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, + 1403, 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, + -172, -194, -217, -239, -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, + -601, -617, -633, -633, 772, 701, 630, 623, 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, + -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, 1711, 1806, 1709, 1612, 1531, + 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, -124, -145, + -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, + -642, 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, + 794, 1073, 1575, 1822, 1976, 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, + 1266, 1156, 902, 137, -61, -3, -121, -238, -124, -9, -70, -131, -166, -201, -221, -239, -272, + -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, -667, -619, -619, 776, 760, + 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, 1524, + 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, + 16, -2, -20, 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, + -290, -264, -142, -20, 2956, 2860, -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, + 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, 1081, 1303, 1668, 2034, 2313, 2337, + 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, 40, 74, 748, + 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, + 3007, 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, + 605, 681, 758, 110, 487, 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, + 2829, 2972, 2791, 2610, 2525, 2440, 2341, 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, + 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, -742, 2290, 1738, -1118, -902, + -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, 970, 589, + 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, + 2849, 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, + 485, 350, 216, 145, 75, -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, + 950, 924, 898, 872, 846, 820, 794, 768, 806, 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, + 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, 3314, 3173, 3032, 2941, 1826, + -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, 592, 484, + 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, + 888, 864, 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, + 3023, 3157, 3291, 3350, 3409, 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, + 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, 1545, 1403, 1254, 1106, 974, 842, 1229, + 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, 984, 954, 931, 909, + 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, + 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, + 2666, 2652, 2639, 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, + 170, -92, -354, 1560, 3986, 1970, -558, -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, + 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, 2522, 2781, 3066, 3351, 3443, 3537, + 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, 3062, 2927, + 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, + 10, -263, -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, + 690, 203, 740, 1573, 1894, 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, + 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, -10, 187, -128, 3341, 3226, 3207, 3188, 3236, + 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, 1539, 1158, 777, 396, 112, + -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, 969, + 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, + 3243, 3521, 3800, 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, + 3430, 3361, 3292, 3174, 3057, 3004, 2951, 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, + -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, 1078, 1055, 967, 880, 1114, + 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, 3674, + 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, + 3577, 3518, 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, + -14, -452, -378, -314, -250, -250, 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, + 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, 3543, 3514, 3486, 3729, 3717, 3775, + 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, 3627, 3643, + 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, + 1, -402, -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, + 344, 660, 976, 1284, 2104, 2316, 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, + 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, 3988, 3609, 3742, 3715, 3688, 3715, + 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, 1238, 880, 448, + 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, + 382, 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, + 4074, 3964, 3855, 4337, 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, + 3781, 3604, 3427, 3202, 2977, 2838, 2699, 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, + -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, 1051, 1103, 1156, 20, 933, 950, + 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, 3752, 3784, + 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, + 3292, 3375, 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, + -324, -324, 1392, 1364, 1337, 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, + 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, 736, 649, 563, 332, 102, 1939, 4033, 1982, + 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, 3752, 3806, 3861, 3836, + 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, -286, + 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, + 1204, 1564, 901, 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, + 340, 856, 4028, 4128, 4076, 4024, 4004, 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, + 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, 28, -248, -248, -248, -248, 1456, + 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, -355, 394, 1401, + 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, + 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, + 2880, 2585, 2291, 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, + 1379, 1332, 1286, 1371, 1457, 1030, -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, + 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, 3042, 496, 530, 564, 502, 440, 211, 3055, + 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, 3323, 3094, 2858, 2623, + 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, + 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, + 2150, 2503, 2857, 3105, 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, + 2113, 3945, 4116, 4031, 3946, 3862, 3838, 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, + 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, -222, -254, -254, 1504, 1462, 1420, + 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, 2120, 2322, 2524, + 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, + 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, + 1300, 1071, 842, 69, -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, + 1413, 1627, 1330, -2103, -1184, -820, -712, -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, + 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, 357, 656, 699, 198, 466, 381, 297, + 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, 1931, 1189, 447, + 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, + 1497, 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, + 3533, 3656, 3715, 3774, 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, + 526, 226, -74, 286, 1158, 1678, 1686, 1634, 1582, 1114, 646, 239, -168, -31, 107, -228, -51, + -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, 1470, 1439, 1591, -817, + -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, 3674, + 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, + 325, 108, 147, 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, + -87, -140, -204, -268, -268, 1672, 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, + -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, 3574, 3633, 3693, 3688, 3684, 3661, + 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, 212, 186, 160, + 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, + -144, -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, + 400, 806, 1468, 1938, 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, + 851, 820, 533, 438, 3415, 4252, 4066, 4055, 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, + -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, 96, -19, -134, -137, -140, -204, + -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, 111, 388, 613, + 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, + 832, 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, + 3554, 3610, 3666, 3459, 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, + -264, -264, 1662, 1653, 1644, 1619, 1851, -988, -1267, -986, -704, -402, -100, 10, 120, 404, + 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, 3238, 3303, 3576, 521, 554, + 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, 3989, 3866, + 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, + -260, -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, + 1050, 1585, 2120, 2389, 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, + 342, 2951, 4024, 4015, 4006, 3997, 3988, 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, + 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, -32, -72, -112, -120, -128, -192, + -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, 719, 706, + 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, + 327, 4207, 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, + 3929, 3812, 3695, 3604, 3513, 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, + -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, -1220, -885, -550, -208, 134, 92, 563, 449, + 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, 2460, 843, 763, 794, + 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, 3506, + 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, + -188, 1598, 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, + 435, 702, 870, 1039, 1224, 1409, 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, + 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, + 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, -154, -154, -154, -154, 1784, + 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, 202, 400, + 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, + 3862, 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, + 2623, 2592, 2562, -237, 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, + -286, -1291, -1130, -713, -393, -327, -387, -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, + 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, 3843, 3776, 3789, 3802, 3783, 3764, + 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, 2484, 2617, 1982, + -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, + -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, + 353, 602, 809, 1017, 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, + 3629, 3584, 3523, 3462, 3401, 3341, 3264, 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, + 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, -2834, -956, -2076, -2173, + -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, -304, + -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, + 3558, 3535, 3512, 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, + 270, 154, 38, -6, -50, -110, -170, -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, + -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, 824, -310, -932, -1394, -832, -750, + -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, 3444, 3443, + 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, + 50, 17, -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, + 2045, 1672, 1555, 1328, 1614, 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, + -769, -821, -617, 926, 934, 909, 1397, 3323, 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, + 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, 2291, 2115, 1283, -61, 137, + 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, 1552, + 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, + -1344, -794, 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, + 3449, 3186, 3153, 3121, 3056, 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, + 6, -26, -58, -90, -122, -122, -122, -122, 1516, 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, + 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, 953, 1160, 1111, 117, -363, + 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, 3091, + 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, + -79, -111, -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, + 1286, 1234, 1213, 1193, 1172, 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, + 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, 2798, 3007, 2705, 3106, 2996, 2962, 2928, + 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, -4, -36, -68, -100, + -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, + 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, + 2235, 2439, 2132, 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, + 2324, 2105, 1887, 1733, 811, -79, 55, 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, + 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, 1320, 1279, 1239, 1214, 1189, 1164, + 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, 1472, 2048, + 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, + 1754, 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, + 1852, 1692, 1532, 1494, 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, + 1064, 1030, 995, 996, 998, 935, 873, 878, 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, + 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, 1613, 1745, 1621, 1153, -83, + -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, 1464, + 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, + 979, 962, 945, 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, + 1488, 1844, 1688, 2171, 2142, 1249, 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, + 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, 1542, 1501, 1460, 1429, 1398, 1367, 1336, + 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, 969, 950, 931, 912, 862, + 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, 1200, + 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, + -192, 1552, 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, + 1151, 1128, 1091, 1054, 1017, 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, + 640, 680, 528, 376, 376, 888, 1464, 1016, 637, 258, 295, 332, 297, 262, 227, 192, 167, 142, + 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, 1521, 1498, 1475, 1452, + 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, 972, + 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, + 1690, 1576, 1710, 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, + -52, -82, -112, -128, -144, -144, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, + 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, + 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, 358, 333, 308, + 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, + 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, + 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, + 576, 564, 552, 644, 480, 108, 504, 159, 326, 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, + 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, + 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, + 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, + 294, 301, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, + -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, + 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, + 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, 308, 275, 242, 209, 176, + 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, +]; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp/src/codecs/rfx/quantization.rs new file mode 100644 index 00000000..475e8a58 --- /dev/null +++ b/ironrdp/src/codecs/rfx/quantization.rs @@ -0,0 +1,402 @@ +use super::Quant; + +const FIRST_LEVEL_SIZE: usize = 1024; +const SECOND_LEVEL_SIZE: usize = 256; +const THIRD_LEVEL_SIZE: usize = 64; + +const FISRT_LEVEL_SUBBANDS_COUNT: usize = 3; +const SECOND_LEVEL_SUBBANDS_COUNT: usize = 3; + +pub fn decode(buffer: &mut [i16], quant: Quant) { + let (first_level, buffer) = buffer.split_at_mut(FISRT_LEVEL_SUBBANDS_COUNT * FIRST_LEVEL_SIZE); + let (second_level, third_level) = + buffer.split_at_mut(SECOND_LEVEL_SUBBANDS_COUNT * SECOND_LEVEL_SIZE); + + let decode_chunk = |mut a: (&mut [i16], u8)| decode_block(&mut a.0, a.1 as i16 - 1); + + first_level + .chunks_mut(FIRST_LEVEL_SIZE) + .zip([quant.hl1, quant.lh1, quant.hh1].iter().copied()) + .for_each(decode_chunk); + + second_level + .chunks_mut(SECOND_LEVEL_SIZE) + .zip([quant.hl2, quant.lh2, quant.hh2].iter().copied()) + .for_each(decode_chunk); + + third_level + .chunks_mut(THIRD_LEVEL_SIZE) + .zip([quant.hl3, quant.lh3, quant.hh3, quant.ll3].iter().copied()) + .for_each(decode_chunk); +} + +fn decode_block(buffer: &mut [i16], factor: i16) { + if factor > 0 { + for value in buffer { + *value <<= factor; + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn decode_does_not_change_buffer_with_null_quant_values() { + let mut buffer = QUANTIZIED_BUFFER; + let expected = QUANTIZIED_BUFFER; + let quant = Quant { + ll3: 0, + lh3: 0, + hl3: 0, + hh3: 0, + lh2: 0, + hl2: 0, + hh2: 0, + lh1: 0, + hl1: 0, + hh1: 0, + }; + + decode(&mut buffer, quant); + assert_eq!(expected.as_ref(), buffer.as_ref()); + } + + #[test] + fn decode_works_with_not_empty_quant_values() { + let mut buffer = QUANTIZIED_BUFFER; + let expected = DEQUANTIZED_BUFFER.as_ref(); + let quant = Quant { + ll3: 6, + lh3: 6, + hl3: 6, + hh3: 6, + lh2: 7, + hl2: 7, + hh2: 8, + lh1: 8, + hl1: 8, + hh1: 9, + }; + + decode(&mut buffer, quant); + assert_eq!(expected, buffer.as_ref()); + } + + const QUANTIZIED_BUFFER: [i16; 4096] = [ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, -5, -1, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, 4, 4, -5, -1, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, + 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, 0, 1, 3, -1, 5, 0, -1, 0, 0, 0, 0, 0, -2, -2, -3, + 0, 0, 0, 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, + -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 6, -2, -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 5, 2, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, -1, 0, -1, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, 1, 2, -1, 0, -5, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -2, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, + 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, -1, 0, 0, + 0, 0, -1, 7, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 0, 0, 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -6, 0, 0, 0, 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 6, -8, -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1, -2, 5, + -3, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, -3, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, -1, -1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, 0, -1, 3, + -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, 0, + 0, -1, -2, -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, + 0, 0, 0, 0, 1, 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, + 0, -1, 6, -1, 1, -6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, -1, 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -3, -5, 0, 1, 0, 0, 8, -1, -7, -9, -7, -2, 6, 3, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, + 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, -4, -5, -8, -6, -4, 1, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, -1, -1, 1, 0, 0, 0, + 0, 0, -1, 4, -2, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, -3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, + 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + -1, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, + 0, 0, 0, 1, -4, -1, 0, 0, 1, -5, -2, 1, 1, 1, 6, -2, -1, 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, + 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, 8, -1, 0, 3, 1, -18, 16, 1, -1, 2, 0, -4, + -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, 0, -5, -2, 3, -1, 11, -8, + -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, -3, -1, -1, -2, -14, + 0, 1, 0, 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, 11, -16, -2, 2, + -1, 1, 0, -9, 0, -1, 19, 1, 1, 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, -1, 0, -2, + -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, 0, -5, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, + 0, 0, 0, 0, 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, + -1, 3, 0, 0, 1, -3, -3, -3, 3, -4, 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, + 0, 0, -1, 2, 7, -1, 0, 3, -2, 1, 0, 4, -1, 0, 1, 0, 1, -3, 2, -9, -12, -19, 10, -1, 2, 0, + -1, 1, 9, -13, 0, 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, -2, -1, 2, -1, 0, 0, 0, 1, 1, + 0, 0, 4, -3, -17, -14, 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, 13, 15, 9, + -2, 0, 2, -3, 2, 2, -2, 2, 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, + 0, 0, 0, 0, -1, 1, 0, -3, 17, 8, -1, 4, 8, -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, + 0, 0, -2, -2, 2, 0, 0, 5, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, -2, -6, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, -4, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, + -1, 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, -1, -3, 3, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, 3, 1, 2, -1, 0, 0, 0, -2, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 2, 0, -1, 1, + 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, 2, 1, -1, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, 3, 0, -1, -6, + 0, 4, 5, -13, -53, -3, -2, 0, -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, 7, -5, -13, + 2, -2, 5, -54, 10, -2, 30, 3, -46, 11, -9, -1, -2, 1, -18, -2, 8, -3, 3, -5, -4, -1, -5, + -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, -1, -3, 3, 7, -14, -13, 10, 0, -1, 11, 2, 5, 2, 12, 0, + -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, 9, 12, -6, -18, 5, 1, -3, -4, + -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, -1, + -1, -1, -7, 3, 4, 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, + -2, -23, 2, 2, 3, -4, 22, -4, 5, -4, -2, -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, + 1, 0, 0, 6, 1, -4, 2, 0, -1, 0, -1, -15, -12, -12, -19, -23, 27, 14, 3, 37, 11, -12, -15, + -16, 29, 25, 46, 103, 86, 43, 26, 11, 38, 31, 56, 86, 63, 128, 115, 27, 72, -31, 54, 125, + 9, 97, 67, 10, 67, -34, 60, 85, 102, 107, 113, 6, 21, -10, 10, -16, 126, 108, 85, -10, 59, + 52, 39, 30, 35, 53, 15, -3, + ]; + + const DEQUANTIZED_BUFFER: [i16; 4096] = [ + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 128, 0, -256, 512, -640, -128, 0, 0, 0, 0, + 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 384, 0, 0, 0, 0, 0, 0, -128, 512, + 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, 640, 0, 0, 0, 0, 0, 0, 256, 128, 0, 256, -640, + -512, 128, 0, 0, 0, 0, 0, 0, 128, 384, -128, 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, + 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, + 0, 0, 0, 0, 0, -384, 128, 640, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 896, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, -256, 0, 0, 0, 0, 0, 128, 0, -1152, -384, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, + 0, 0, 0, 768, -256, -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, + -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, 256, 384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 256, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, 0, -128, 896, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, 0, + 128, 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -512, 0, 0, 0, 0, 0, -128, + -768, 128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, -128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 1280, 0, 0, 0, + -128, 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + -640, -640, 384, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 384, -128, -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, + 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 256, 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, + 0, 768, -128, 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, -384, -128, + 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, -256, 0, + -128, 0, 0, 0, 0, 128, -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, + -128, -1280, 384, 128, 256, 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, + 0, 0, 0, 384, -256, 0, 0, 0, 0, 0, 768, -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, + 128, 128, 128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 128, 0, 0, 0, 0, 0, 384, 256, 0, + 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, -256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, + 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, + -128, -128, 0, 0, 128, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, -128, 0, 0, -128, -128, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, -128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, -256, + -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, + 0, 0, 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 128, 384, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, -640, -384, + -512, -768, -768, 896, 128, 128, -128, 0, 0, 0, 0, 0, 0, 0, -128, -256, -384, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 256, -128, 0, -256, -384, 128, 128, -1024, 768, 0, -128, 128, 0, + 0, 0, 0, 128, 128, 0, 0, 768, -384, -128, 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, + 0, 256, 896, -768, -128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, + 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, 0, -128, 768, -128, 128, -768, 896, 0, 0, 0, 0, 0, 0, + 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -256, + 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, -128, -128, 896, -1024, 0, 128, -256, -512, -384, -128, 128, -384, + -512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, -384, -640, 0, 128, 0, 0, + 1024, -128, -896, -1152, -896, -256, 768, 384, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, -128, + -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, 0, 0, 128, -128, + 0, 0, 0, 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -128, 128, -128, 0, 0, 0, 0, 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 256, 128, -512, -640, + -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, + -256, -128, 128, -128, 128, -128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, -128, 128, 128, 0, 128, 0, -128, + 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, + 128, 128, 128, 0, -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -128, 512, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, 0, 0, + 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, + 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, + 0, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, -64, 0, -320, 192, -128, 64, 0, -64, + 0, 0, 0, 0, 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, 0, 64, -256, + 1344, 384, 0, 0, -320, -64, 64, 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, + -128, 512, -64, 0, 192, 64, -1152, 1024, 64, -64, 128, 0, -256, -256, 0, 0, -384, 64, -192, + -64, 64, 896, -1472, 64, 0, 64, 0, 64, -192, -64, 0, 0, 0, -320, -128, 192, -64, 704, -512, + -192, 0, 64, 0, -64, -192, 64, 0, 896, 64, 0, -64, 0, 0, -960, -128, 448, 64, -64, 64, + -192, -64, -64, -128, -896, 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, 64, + -64, 192, -896, 64, -128, 128, -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, + 64, 64, 64, 0, 128, 128, 512, 0, 0, 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, + 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, -64, 128, 0, 0, 64, 0, -320, 0, 0, -64, 0, 0, 64, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, 64, 256, 256, -128, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -64, + 64, 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, + 0, 64, -64, 64, 0, 64, -512, -64, 0, 0, 64, -192, 0, 0, -64, 192, 0, 0, 64, -192, -192, + -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, 192, -64, 64, 64, 0, 64, -320, 1280, 0, 0, + 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, 0, 64, -192, 128, -576, -768, + -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, -832, 0, 0, 1024, -448, 0, + 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, -192, -1088, -896, 128, + -256, -896, -64, 0, -64, 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, 832, 960, 576, -128, + 0, 128, -192, 128, 128, -128, 128, 64, -64, 64, 0, 0, -128, 320, 448, -64, 0, 64, 256, + -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, -192, 1088, 512, -64, 256, 512, + -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, 0, 320, + -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -448, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, + -512, -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, 0, + 0, 128, 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, -128, -128, -128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, + -256, 0, 0, -128, 384, 128, 256, -128, 0, 0, 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 0, 128, 128, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, -128, 128, 0, 0, 0, + 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 128, -256, 128, -128, -128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, + -64, 32, 0, -32, -64, 0, -32, 256, 192, 96, 0, -32, -192, 0, 128, 160, -416, -1696, -96, + -64, 0, -64, -480, -224, 800, 256, 96, 224, -800, 832, -384, 160, 640, 192, 224, -160, + -416, 64, -64, 160, -1728, 320, -64, 960, 96, -1472, 352, -288, -32, -64, 32, -576, -64, + 256, -96, 96, -160, -128, -32, -160, -64, -96, 0, 32, -320, -96, 32, -32, 32, -160, -32, + -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, -256, 768, -672, -1568, + -128, 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, -192, -576, 160, 32, + -96, -128, -32, 416, 672, 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, -448, -608, -224, + 32, -32, -32, -96, -64, 0, 0, -32, -32, -32, -224, 96, 128, 224, -32, -192, -448, -32, + -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, -672, 800, -128, -64, -736, 64, 64, 96, + -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, 224, 160, 96, 32, + -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, + 448, 96, 1184, 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, + 992, 1792, 2752, 2016, 4096, 3680, 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, + -1088, 1920, 2720, 3264, 3424, 3616, 192, 672, -320, 320, -512, 4032, 3456, 2720, -320, + 1888, 1664, 1248, 960, 1120, 1696, 480, -96, + ]; +} diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs new file mode 100644 index 00000000..ba3e036e --- /dev/null +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -0,0 +1,426 @@ +#[cfg(test)] +mod tests; + +use std::cmp::{max, min}; + +use crate::utils::Rectangle; + +#[derive(Debug, Clone, PartialEq)] +pub struct Region { + extents: Rectangle, + rectangles: Vec, +} + +impl Region { + pub fn new() -> Self { + Self { + extents: Rectangle::empty(), + rectangles: Vec::new(), + } + } + + pub fn union_rectangle(&mut self, rectangle: Rectangle) { + if self.rectangles.is_empty() { + *self = Self::from(rectangle); + } else { + let mut dst = Vec::with_capacity(self.rectangles.len() + 1); + + handle_rectangle_higher_relative_to_extents(&rectangle, &self.extents, &mut dst); + + // treat possibly overlapping region + let bands = split_bands(self.rectangles.as_slice()); + let mut bands = bands.as_slice(); + while let Some((band, bands_new)) = bands.split_first() { + bands = bands_new; + + let top_inter_band = if band[0].bottom <= rectangle.top + || rectangle.bottom <= band[0].top + || rectangle_in_band(band, &rectangle) + { + // `rectangle` is lower, higher, or in the current band + dst.extend_from_slice(band); + + rectangle.top + } else { + handle_rectangle_that_overlaps_band(&rectangle, band, &mut dst); + + band[0].bottom + }; + + if !bands.is_empty() { + let next_band = bands[0]; + handle_rectangle_between_bands( + &rectangle, + band, + next_band, + &mut dst, + top_inter_band, + ); + } + } + + handle_rectangle_lower_relative_to_extents(&rectangle, &self.extents, &mut dst); + + self.rectangles = dst; + self.extents = self.extents.union(&rectangle); + + self.simplify(); + } + } + + pub fn intersect_rectangle(&self, rectangle: &Rectangle) -> Self { + match self.rectangles.len() { + 0 => Self::new(), + 1 => self + .extents + .intersect(&rectangle) + .map(Self::from) + .unwrap_or_default(), + _ => { + let rectangles = self + .rectangles + .iter() + .take_while(|r| r.top < rectangle.bottom) + .map(|r| r.intersect(&rectangle)) + .filter(Option::is_some) + .map(|r| r.unwrap()) + .collect::>(); + let extents = Rectangle::union_all(rectangles.as_slice()); + + let mut region = Self { + rectangles, + extents, + }; + region.simplify(); + + region + } + } + } + + fn simplify(&mut self) { + /* Simplify consecutive bands that touch and have the same items + * + * ==================== ==================== + * | 1 | | 2 | | | | | + * ==================== | | | | + * | 1 | | 2 | ====> | 1 | | 2 | + * ==================== | | | | + * | 1 | | 2 | | | | | + * ==================== ==================== + * + */ + + if self.rectangles.len() < 2 { + return; + } + + let mut current_band_start = 0; + while current_band_start < self.rectangles.len() + && current_band_start + get_current_band(&self.rectangles[current_band_start..]).len() + < self.rectangles.len() + { + let current_band = get_current_band(&self.rectangles[current_band_start..]); + let next_band = + get_current_band(&self.rectangles[current_band_start + current_band.len()..]); + + if current_band[0].bottom == next_band[0].top + && bands_internals_equal(current_band, next_band) + { + let first_band_len = current_band.len(); + let second_band_len = next_band.len(); + let second_band_bottom = next_band[0].bottom; + self.rectangles.drain( + current_band_start + first_band_len + ..current_band_start + first_band_len + second_band_len, + ); + self.rectangles + .iter_mut() + .skip(current_band_start) + .take(first_band_len) + .for_each(|r| r.bottom = second_band_bottom); + } else { + current_band_start += current_band.len(); + } + } + } +} + +impl Default for Region { + fn default() -> Self { + Self::new() + } +} + +impl From for Region { + fn from(r: Rectangle) -> Self { + Self { + extents: r.clone(), + rectangles: vec![r], + } + } +} + +fn handle_rectangle_higher_relative_to_extents( + rectangle: &Rectangle, + extents: &Rectangle, + dst: &mut Vec, +) { + if rectangle.top < extents.top { + dst.push(Rectangle { + top: rectangle.top, + bottom: min(extents.top, rectangle.bottom), + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn handle_rectangle_lower_relative_to_extents( + rectangle: &Rectangle, + extents: &Rectangle, + dst: &mut Vec, +) { + if extents.bottom < rectangle.bottom { + dst.push(Rectangle { + top: max(extents.bottom, rectangle.top), + bottom: rectangle.bottom, + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn handle_rectangle_that_overlaps_band( + rectangle: &Rectangle, + band: &[Rectangle], + dst: &mut Vec, +) { + /* rect overlaps the band: + | | | | + ====^=================| |==| |=========================== band + | top split | | | | + v | 1 | | 2 | + ^ | | | | +----+ +----+ + | merge zone | | | | | | | 4 | + v +----+ | | | | +----+ + ^ | | | 3 | + | bottom split | | | | + ====v=========================| |==| |=================== + | | | | + + possible cases: + 1) no top split, merge zone then a bottom split. The band will be splitted + in two + 2) not band split, only the merge zone, band merged with rect but not splitted + 3) a top split, the merge zone and no bottom split. The band will be split + in two + 4) a top split, the merge zone and also a bottom split. The band will be + splitted in 3, but the coalesce algorithm may merge the created bands + */ + + let band_top = band[0].top; + let band_bottom = band[0].bottom; + + if band_top < rectangle.top { + // split current band by the current band top and `rectangle.top` (case 3, 4) + copy_band(band, dst, band_top, rectangle.top); + } + + // split the merge zone (all cases) + copy_band_with_union( + band, + dst, + max(rectangle.top, band_top), + min(rectangle.bottom, band_bottom), + &rectangle, + ); + + // split current band by the `rectangle.bottom` and the current band bottom (case 1, 4) + if rectangle.bottom < band_bottom { + copy_band(band, dst, rectangle.bottom, band_bottom); + } +} + +fn handle_rectangle_between_bands( + rectangle: &Rectangle, + band: &[Rectangle], + next_band: &[Rectangle], + dst: &mut Vec, + top_inter_band: u16, +) { + /* test if a piece of rect should be inserted as a new band between + * the current band and the next one. band n and n+1 shouldn't touch. + * + * ============================================================== + * band n + * +------+ +------+ + * ===========| rect |====================| |=============== + * | | +------+ | | + * +------+ | rect | | rect | + * +------+ | | + * =======================================| |================ + * +------+ band n+1 + * =============================================================== + * + */ + + let band_bottom = band[0].bottom; + + let next_band_top = next_band[0].top; + if next_band_top != band_bottom + && band_bottom < rectangle.bottom + && rectangle.top < next_band_top + { + dst.push(Rectangle { + top: top_inter_band, + bottom: min(next_band_top, rectangle.bottom), + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn rectangle_in_band(band: &[Rectangle], rectangle: &Rectangle) -> bool { + // part of `rectangle` is higher or lower + if rectangle.top < band[0].top || band[0].bottom < rectangle.bottom { + return false; + } + + for source_rectangle in band { + if source_rectangle.left <= rectangle.left { + if rectangle.right <= source_rectangle.right { + return true; + } + } else { + // as the band is sorted from left to right, + // once we've seen an item that is after `rectangle.left` + // we are sure that the result is false + return false; + } + } + + false +} + +fn copy_band_with_union( + mut band: &[Rectangle], + dst: &mut Vec, + band_top: u16, + band_bottom: u16, + union_rectangle: &Rectangle, +) { + /* merges a band with the given rect + * Input: + * unionRect + * | | + * | | + * ==============+===============+================================ + * |Item1| |Item2| |Item3| |Item4| |Item5| Band + * ==============+===============+================================ + * before | overlap | after + * + * Resulting band: + * +-----+ +----------------------+ +-----+ + * |Item1| | Item2 | |Item3| + * +-----+ +----------------------+ +-----+ + * + * We first copy as-is items that are before Item2, the first overlapping + * item. + * Then we find the last one that overlap unionRect to agregate Item2, Item3 + * and Item4 to create Item2. + * Finally Item5 is copied as Item3. + * + * When no unionRect is provided, we skip the two first steps to just copy items + */ + + let items_before_union_rectangle = band + .iter() + .map(|r| Rectangle { + top: band_top, + bottom: band_bottom, + left: r.left, + right: r.right, + }) + .take_while(|r| r.right < union_rectangle.left); + let items_before_union_rectangle_len = items_before_union_rectangle + .clone() + .map(|_| 1) + .sum::(); + dst.extend(items_before_union_rectangle); + band = &band[items_before_union_rectangle_len..]; + + // treat items overlapping with `union_rectangle` + let left = min( + band.first().map(|r| r.left).unwrap_or(union_rectangle.left), + union_rectangle.left, + ); + let mut right = union_rectangle.right; + while !band.is_empty() { + if band[0].right >= union_rectangle.right { + if band[0].left < union_rectangle.right { + right = band[0].right; + band = &band[1..]; + } + break; + } + band = &band[1..]; + } + dst.push(Rectangle { + top: band_top, + bottom: band_bottom, + left, + right, + }); + + // treat remaining items on the same band + copy_band(band, dst, band_top, band_bottom); +} + +fn copy_band(band: &[Rectangle], dst: &mut Vec, band_top: u16, band_bottom: u16) { + dst.extend(band.iter().map(|r| Rectangle { + top: band_top, + bottom: band_bottom, + left: r.left, + right: r.right, + })); +} + +fn split_bands(mut rectangles: &[Rectangle]) -> Vec<&[Rectangle]> { + let mut bands = Vec::new(); + while !rectangles.is_empty() { + let band = get_current_band(rectangles); + rectangles = &rectangles[band.len()..]; + bands.push(band); + } + + bands +} + +fn get_current_band(rectangles: &[Rectangle]) -> &[Rectangle] { + let band_top = rectangles[0].top; + + for i in 1..rectangles.len() { + if rectangles[i].top != band_top { + return &rectangles[..i]; + } + } + + rectangles +} + +fn bands_internals_equal(first_band: &[Rectangle], second_band: &[Rectangle]) -> bool { + if first_band.len() != second_band.len() { + return false; + } + + for (first_band_rect, second_band_rect) in first_band.iter().zip(second_band.iter()) { + if first_band_rect.left != second_band_rect.left + || first_band_rect.right != second_band_rect.right + { + return false; + } + } + + true +} diff --git a/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs b/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs new file mode 100644 index 00000000..477b9aac --- /dev/null +++ b/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs @@ -0,0 +1,1238 @@ +use lazy_static::lazy_static; + +use super::*; + +lazy_static! { + static ref REGION_FOR_RECTANGLES_INTERSECTION: Region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 11, + bottom: 9, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 7, + top: 1, + right: 8, + bottom: 3, + }, + Rectangle { + left: 9, + top: 1, + right: 11, + bottom: 3, + }, + Rectangle { + left: 7, + top: 3, + right: 11, + bottom: 4, + }, + Rectangle { + left: 3, + top: 4, + right: 6, + bottom: 6, + }, + Rectangle { + left: 7, + top: 4, + right: 11, + bottom: 6, + }, + Rectangle { + left: 1, + top: 6, + right: 3, + bottom: 8, + }, + Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }, + Rectangle { + left: 6, + top: 6, + right: 10, + bottom: 8, + }, + Rectangle { + left: 4, + top: 8, + right: 5, + bottom: 9, + }, + Rectangle { + left: 6, + top: 8, + right: 10, + bottom: 9, + }, + ], + }; +} + +#[test] +fn union_rectangle_sets_extents_and_single_rectangle_for_empty_region() { + let mut region = Region::new(); + + let input_rectangle = Rectangle { + left: 5, + top: 1, + right: 9, + bottom: 2, + }; + + let expected_region = Region { + extents: input_rectangle.clone(), + rectangles: vec![input_rectangle.clone()], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_places_new_rectangle_higher_relative_to_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 1, + right: 9, + bottom: 2, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 9, + bottom: 7, + }, + rectangles: vec![input_rectangle.clone(), existing_band_rectangle], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_places_new_rectangle_lower_relative_to_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }; + + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![existing_band_rectangle, input_rectangle.clone()], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_does_not_add_new_rectangle_which_is_inside_a_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 4, + right: 6, + bottom: 5, + }; + + let expected_region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_cuts_new_rectangle_top_part_which_crosses_band_on_top() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 1, + top: 2, + right: 4, + bottom: 4, + }; + + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 2, + right: 7, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 4, + }, + Rectangle { + left: 2, + top: 4, + right: 7, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_cuts_new_rectangle_lower_part_which_crosses_band_on_bottom() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 6, + right: 9, + bottom: 8, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 9, + bottom: 8, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 6, + }, + Rectangle { + left: 2, + top: 6, + right: 9, + bottom: 7, + }, + Rectangle { + left: 5, + top: 7, + right: 9, + bottom: 8, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_cuts_new_rectangle_higher_and_lower_part_which_crosses_band_on_top_and_bottom() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 11, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 5, + bottom: 11, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_without_merging_with_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 9, + bottom: 7, + }, + Rectangle { + left: 12, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 10, + top: 3, + right: 11, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 9, + bottom: 7, + }, + Rectangle { + left: 10, + top: 3, + right: 11, + bottom: 7, + }, + Rectangle { + left: 12, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles() +{ + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 10, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 9, + top: 3, + right: 14, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles_on_board( +) { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 10, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 10, + top: 3, + right: 13, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 13, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn union_rectangle_inserts_new_rectangle_between_two_bands() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 3, + top: 4, + right: 4, + bottom: 9, + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 4, + bottom: 8, + }, + Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_does_not_change_two_different_bands_with_multiple_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 7, + bottom: 3, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_does_not_change_two_different_bands_with_one_rectangle() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_does_not_change_three_different_bands_with_one_rectangle() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 5, + bottom: 11, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_merges_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 3, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_merges_three_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + Rectangle { + left: 1, + top: 3, + right: 2, + bottom: 4, + }, + Rectangle { + left: 3, + top: 3, + right: 4, + bottom: 4, + }, + Rectangle { + left: 5, + top: 3, + right: 6, + bottom: 4, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 4, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 4, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 4, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn simplify_merges_two_pairs_of_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 3, + bottom: 4, + }, + Rectangle { + left: 4, + top: 3, + right: 5, + bottom: 4, + }, + Rectangle { + left: 6, + top: 3, + right: 7, + bottom: 4, + }, + Rectangle { + left: 2, + top: 4, + right: 3, + bottom: 5, + }, + Rectangle { + left: 4, + top: 4, + right: 5, + bottom: 5, + }, + Rectangle { + left: 6, + top: 4, + right: 7, + bottom: 5, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 3, + bottom: 5, + }, + Rectangle { + left: 4, + top: 3, + right: 5, + bottom: 5, + }, + Rectangle { + left: 6, + top: 3, + right: 7, + bottom: 5, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); +} + +#[test] +fn intersect_rectangle_returns_empty_region_for_not_intersecting_rectangle() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 0, + top: 0, + right: 0, + bottom: 0, + }, + rectangles: vec![], + }; + let input_rectangle = Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); +} + +#[test] +fn intersect_rectangle_returns_empty_region_for_empty_intersection_region() { + let region = Region { + extents: Rectangle { + left: 0, + top: 0, + right: 0, + bottom: 0, + }, + rectangles: vec![], + }; + let expected_region = region.clone(); + let input_rectangle = Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); +} + +#[test] +fn intersect_rectangle_returns_part_of_rectangle_that_overlaps_for_region_with_one_rectangle() { + let region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }, + rectangles: vec![Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }], + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }, + rectangles: vec![Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }], + }; + let input_rectangle = Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); +} + +#[test] +fn intersect_rectangle_returns_region_with_parts_of_rectangles_that_intersect_input_rectangle() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 3, + top: 2, + right: 8, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 2, + right: 5, + bottom: 3, + }, + Rectangle { + left: 7, + top: 2, + right: 8, + bottom: 3, + }, + Rectangle { + left: 7, + top: 3, + right: 8, + bottom: 4, + }, + Rectangle { + left: 3, + top: 4, + right: 6, + bottom: 5, + }, + Rectangle { + left: 7, + top: 4, + right: 8, + bottom: 5, + }, + ], + }; + let input_rectangle = Rectangle { + left: 3, + top: 2, + right: 8, + bottom: 5, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); +} + +#[test] +fn intersect_rectangle_returns_region_with_exact_sizes_of_rectangle_that_overlaps_it() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }, + rectangles: vec![Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }], + }; + let input_rectangle = Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); +} diff --git a/ironrdp/src/codecs/rfx/rlgr.rs b/ironrdp/src/codecs/rfx/rlgr.rs new file mode 100644 index 00000000..f60ed9c3 --- /dev/null +++ b/ironrdp/src/codecs/rfx/rlgr.rs @@ -0,0 +1,255 @@ +#[cfg(test)] +mod tests; + +use std::{cmp::min, io}; + +use bitvec::prelude::{BitField, BitSlice, BitStore, Msb0}; +use failure::Fail; + +use super::EntropyAlgorithm; +use crate::{impl_from_error, utils::Bits}; + +const KP_MAX: u32 = 80; +const LS_GR: u32 = 3; +const UP_GR: u32 = 4; +const DN_GR: u32 = 6; +const UQ_GR: u32 = 3; +const DQ_GR: u32 = 3; + +macro_rules! write_byte { + ($output:ident, $value:ident) => { + if !$output.is_empty() { + $output[0] = $value; + $output = &mut $output[1..]; + } else { + break; + } + }; +} + +#[macro_export] +macro_rules! try_split_bits { + ($bits:ident, $n:expr) => { + if $bits.len() < $n { + break; + } else { + $bits.split_to($n) + } + }; +} + +pub fn decode( + mode: EntropyAlgorithm, + tile: &[u8], + mut output: &mut [i16], +) -> Result<(), RlgrError> { + let mut k: u32 = 1; + let mut kr: u32 = 1; + let mut kp: u32 = k << LS_GR; + let mut krp: u32 = kr << LS_GR; + + if tile.is_empty() { + return Err(RlgrError::EmptyTile); + } + + let mut bits = Bits::new(BitSlice::from_slice(tile)); + while !bits.is_empty() && !output.is_empty() { + match CompressionMode::from(k) { + CompressionMode::RunLength => { + let number_of_zeros = count_number_of_leading_value(&mut bits, false); + try_split_bits!(bits, 1); + let run = count_run(number_of_zeros, &mut k, &mut kp) + + load_be::(try_split_bits!(bits, k as usize)); + + let sign_bit = try_split_bits!(bits, 1).load_be::(); + + let number_of_ones = count_number_of_leading_value(&mut bits, true); + try_split_bits!(bits, 1); + + let code_remainder = load_be::(try_split_bits!(bits, kr as usize)) + + ((number_of_ones as u32) << kr); + + update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); + kp = kp.saturating_sub(DN_GR); + k = kp >> LS_GR; + + let magnitude = compute_rl_magnitude(sign_bit, code_remainder); + + let size = min(run as usize, output.len()); + fill(&mut output[..size], 0); + output = &mut output[size..]; + write_byte!(output, magnitude); + } + CompressionMode::GolombRice => { + let number_of_ones = count_number_of_leading_value(&mut bits, true); + try_split_bits!(bits, 1); + + let code_remainder = load_be::(try_split_bits!(bits, kr as usize)) + + ((number_of_ones as u32) << kr); + + update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); + + match mode { + EntropyAlgorithm::Rlgr1 => { + let magnitude = compute_rlgr1_magnitude(code_remainder, &mut k, &mut kp); + write_byte!(output, magnitude); + } + EntropyAlgorithm::Rlgr3 => { + let n_index = compute_n_index(code_remainder); + + let val1 = load_be::(try_split_bits!(bits, n_index)); + let val2 = code_remainder - val1; + if val1 != 0 && val2 != 0 { + kp = kp.saturating_sub(2 * DQ_GR); + k = kp >> LS_GR; + } else if val1 == 0 && val2 == 0 { + kp = min(kp + 2 * UQ_GR, KP_MAX); + k = kp >> LS_GR; + } + + let magnitude = compute_rlgr3_magnitude(val1); + write_byte!(output, magnitude); + + let magnitude = compute_rlgr3_magnitude(val2); + write_byte!(output, magnitude); + } + } + } + } + } + + // fill remaining buffer with zeros + fill(output, 0); + + Ok(()) +} + +fn fill(buffer: &mut [i16], value: i16) { + for v in buffer { + *v = value; + } +} + +fn load_be(s: &BitSlice) -> U +where + U: BitStore, +{ + if s.is_empty() { + U::from(0) + } else { + s.load_be::() + } +} + +fn count_number_of_leading_value(bits: &mut Bits<'_>, value: bool) -> usize { + let number_of_zeros = bits + .iter() + .take_while(|&&v| v == value) + .map(|_| 1) + .sum::(); + bits.split_to(number_of_zeros); + + number_of_zeros +} + +fn count_run(number_of_zeros: usize, k: &mut u32, kp: &mut u32) -> u32 { + (0..number_of_zeros) + .map(|_| { + let run = 1 << *k; + *kp = min(*kp + UP_GR as u32, KP_MAX as u32); + *k = (*kp >> LS_GR as u32) as u32; + + run + }) + .sum() +} + +fn compute_rl_magnitude(sign_bit: u8, code_remainder: u32) -> i16 { + if sign_bit != 0 { + -((code_remainder + 1) as i16) + } else { + (code_remainder + 1) as i16 + } +} + +fn compute_rlgr1_magnitude(code_remainder: u32, k: &mut u32, kp: &mut u32) -> i16 { + if code_remainder == 0 { + *kp = min(*kp + UQ_GR as u32, KP_MAX as u32); + *k = (*kp >> LS_GR as u32) as u32; + + 0 + } else { + *kp = kp.saturating_sub(DQ_GR as u32); + *k = (*kp >> LS_GR as u32) as u32; + + if code_remainder % 2 != 0 { + -(((code_remainder + 1) >> 1) as i16) + } else { + (code_remainder >> 1) as i16 + } + } +} + +fn compute_rlgr3_magnitude(val: u32) -> i16 { + if val % 2 != 0 { + -(((val + 1) >> 1) as i16) + } else { + (val >> 1) as i16 + } +} + +fn compute_n_index(code_remainder: u32) -> usize { + if code_remainder != 0 { + let code_bytes = code_remainder.to_be_bytes(); + let code_bits = BitSlice::::from_slice(code_bytes.as_ref()); + let number_of_zeros = code_bits + .iter() + .take_while(|&&v| !v) + .map(|_| 1) + .sum::(); + + 32 - number_of_zeros + } else { + 0 + } +} + +fn update_parameters_according_to_number_of_ones( + number_of_ones: usize, + kr: &mut u32, + krp: &mut u32, +) { + if number_of_ones == 0 { + *krp = (*krp).saturating_sub(2); + *kr = *krp >> LS_GR; + } else if number_of_ones > 1 { + *krp = min(*krp + number_of_ones as u32, KP_MAX); + *kr = *krp >> LS_GR; + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +enum CompressionMode { + RunLength, + GolombRice, +} + +impl From for CompressionMode { + fn from(m: u32) -> Self { + if m != 0 { + Self::RunLength + } else { + Self::GolombRice + } + } +} + +#[derive(Debug, Fail)] +pub enum RlgrError { + #[fail(display = "IO error: {}", _0)] + IoError(#[fail(cause)] io::Error), + #[fail(display = "The input tile is empty")] + EmptyTile, +} + +impl_from_error!(io::Error, RlgrError, RlgrError::IoError); diff --git a/ironrdp/src/codecs/rfx/rlgr/tests.rs b/ironrdp/src/codecs/rfx/rlgr/tests.rs new file mode 100644 index 00000000..8e332b8a --- /dev/null +++ b/ironrdp/src/codecs/rfx/rlgr/tests.rs @@ -0,0 +1,707 @@ +use super::*; + +#[test] +fn decode_works_with_rlgr3() { + let input = [ + Y_DATA_ENCODED.as_ref(), + CB_DATA_ENCODED.as_ref(), + CR_DATA_ENCODED.as_ref(), + ]; + let expected = [ + Y_DATA_DECODED.as_ref(), + CB_DATA_DECODED.as_ref(), + CR_DATA_DECODED.as_ref(), + ]; + let output_len = expected[0].len(); + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len() * output_len]; + for (i, (input, expected)) in input.iter().zip(expected.iter()).enumerate() { + decode( + mode, + input, + &mut output[i * output_len..(i + 1) * output_len], + ) + .unwrap(); + assert_eq!(&expected[..], &output[i * 4096..(i + 1) * 4096]); + } +} + +#[test] +fn decode_correctly_decodes_rl_without_leading_zeros_and_ones() { + #[allow(clippy::inconsistent_digit_grouping)] + let input = [0b11000_000]; + let expected = [0, 1]; + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected.as_ref(), output.as_slice()); +} + +#[test] +fn decode_correctly_decodes_rl_with_not_null_sign_bit() { + #[allow(clippy::inconsistent_digit_grouping)] + let input = [0b11100_000]; + let expected = [0, -1]; + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected.as_ref(), output.as_slice()); +} + +#[test] +fn decode_correctly_decodes_rl_with_leading_zeros() { + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let input = [0b00000000, 0b10011001, 0b1100_0000]; + let expected = [[0; 66].as_ref(), [7].as_ref()].concat(); + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected, output); +} + +#[test] +fn decode_correctly_decodes_rl_with_leading_ones() { + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let input = [0b11011111, 0b11111101]; + let expected = [0, 24]; + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected.as_ref(), output.as_slice()); +} + +#[test] +fn decode_correctly_decodes_rlgr3() { + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let input = [0b110000_00]; + let expected = [0, 1, 0, 0]; + let mode = EntropyAlgorithm::Rlgr3; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected.as_ref(), output.as_slice()); +} + +#[test] +fn decode_correctly_decodes_rlgr1() { + #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] + let input = [0b11000111, 0b11111000]; + let expected = [0, 1, 4, 0]; + let mode = EntropyAlgorithm::Rlgr1; + + let mut output = vec![0i16; expected.len()]; + decode(mode, input.as_ref(), output.as_mut_slice()).unwrap(); + assert_eq!(expected.as_ref(), output.as_slice()); +} + +const Y_DATA_ENCODED: [u8; 942] = [ + 0xc0, 0x01, 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, 0x11, 0xdc, 0x22, 0x29, 0x74, + 0xef, 0xfd, 0x20, 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, 0x53, 0x0c, + 0x1f, 0xe2, 0x54, 0x0c, 0x77, 0x7c, 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, + 0x5d, 0xff, 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, + 0x24, 0xa0, 0x8f, 0xab, 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, 0x80, 0xc3, 0x22, 0x50, + 0xaf, 0x4c, 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, 0x65, + 0xa3, 0xaf, 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, + 0x42, 0x87, 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, 0x6a, 0xff, 0xfb, + 0x43, 0x8b, 0xa3, 0x7a, 0x32, 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, + 0x08, 0x04, 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, + 0x2d, 0x40, 0xa1, 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, 0x2f, 0xcc, 0x01, 0xce, 0x03, + 0x48, 0xc0, 0x8d, 0x63, 0xf4, 0xfd, 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, 0xc0, 0x8a, + 0x09, 0x52, 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, + 0x84, 0x34, 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, 0xb4, 0x1d, 0xa7, 0xfa, + 0x47, 0x82, 0xec, 0x7a, 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, 0x80, + 0xc0, 0x69, 0x01, 0xc2, 0x3e, 0x90, 0x14, 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, + 0x13, 0x68, 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, + 0x41, 0x46, 0x5f, 0xf8, 0xf1, 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, 0x8f, 0xe5, 0x75, + 0x61, 0x03, 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, + 0xc0, 0x60, 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, 0x59, 0x90, 0x80, 0x30, 0x64, + 0x53, 0xff, 0xf5, 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, 0x00, 0xe8, + 0x7b, 0x46, 0xe6, 0xd8, 0x02, 0x03, 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, + 0x81, 0xb4, 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, + 0xf1, 0x70, 0x30, 0x24, 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, 0x83, 0x00, 0x36, 0x20, + 0xd1, 0x50, 0xe7, 0xd8, 0xad, 0x58, 0x20, 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, 0xf1, + 0x60, 0x75, 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, + 0x42, 0x81, 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, 0x18, 0xa1, 0xaa, + 0x47, 0x0e, 0x11, 0x1a, 0x40, 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, + 0x83, 0xa2, 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, + 0x32, 0xf8, 0x86, 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, + 0x78, 0xe7, 0xd2, 0x97, 0x0b, 0xbc, 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, 0x18, 0x18, + 0x11, 0x1f, 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, + 0x17, 0xde, 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, 0x9e, 0xf4, 0x01, 0x43, + 0xea, 0x0c, 0x46, 0x73, 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, 0xb0, + 0x8c, 0x54, 0x59, 0xfa, 0xac, 0x76, 0x36, 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, + 0x71, 0xcc, 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, + 0x57, 0xd7, 0xff, 0x10, 0xf2, 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, 0xb4, 0x12, 0xdb, + 0x1a, 0x48, 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, + 0x5b, 0x2f, 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, 0x5f, 0x24, 0xfe, 0x8b, 0xcb, + 0x42, 0x43, 0x7e, 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, 0x30, 0x44, + 0x15, 0x8f, 0xe9, 0x0c, 0xd3, 0xa6, 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, + 0x02, 0x54, 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, + 0x3f, 0xfd, 0x44, 0x91, 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, 0x31, 0x34, 0x06, 0x41, + 0x79, 0x6f, 0xf0, 0xcc, 0x03, 0x79, 0x00, 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, 0x44, + 0xc8, 0xeb, 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, + 0xf9, 0xb6, 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, 0xef, 0x25, 0xfa, + 0x5a, 0x3e, 0x92, 0x3e, 0x79, 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, + 0xf0, 0x7d, 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, + 0x6e, 0x2b, 0x18, 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, 0xeb, 0xbe, 0x1f, 0x04, 0x34, + 0x75, 0x84, 0x31, 0x42, 0x4c, 0x65, 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, 0x26, 0x3a, + 0x1b, 0xf4, 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, + 0xf9, 0xe5, 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, 0xb0, 0xda, 0xa9, 0xcb, + 0x58, 0xe4, 0x18, 0x77, 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, 0x9b, + 0x8d, 0xbc, 0xcb, 0x9d, 0xc4, 0x18, 0x05, 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, + 0xe5, 0x3a, 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, + 0x2d, 0xd4, 0x3f, 0xfe, 0x61, 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, 0x47, 0xf4, 0xdc, + 0xad, 0xaa, 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, + 0x47, 0x5a, 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, 0xab, 0x9e, 0xab, 0x2b, 0xdd, + 0x3c, 0x66, 0xa0, 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, +]; + +const CB_DATA_ENCODED: [u8; 975] = [ + 0x00, 0xb0, 0x33, 0x56, 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, + 0xc8, 0x10, 0x56, 0x84, 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, + 0x2f, 0x82, 0x04, 0x9f, 0x91, 0xc2, 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, + 0x30, 0xf0, 0x08, 0x18, 0xf1, 0x81, 0x45, 0x9a, 0x60, 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, + 0xea, 0x31, 0x5a, 0xff, 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, 0x81, 0xcb, 0x00, 0xe1, + 0x10, 0xd2, 0xb4, 0xbe, 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, 0x04, + 0xf6, 0x06, 0x0e, 0x28, 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, + 0x85, 0x4c, 0x16, 0x80, 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, + 0xa9, 0xd5, 0xff, 0xff, 0xea, 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, + 0x78, 0x4a, 0x17, 0x52, 0x5d, 0xe4, 0x25, 0x1f, 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, + 0x82, 0x80, 0x90, 0x41, 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, 0x2f, 0x43, 0x7e, 0x50, 0x78, + 0xf2, 0x67, 0x78, 0x41, 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, 0x1f, 0x22, + 0x60, 0x41, 0x6c, 0x00, 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, + 0xa0, 0x5d, 0x1f, 0xa3, 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, + 0x76, 0x81, 0x05, 0xef, 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, + 0xc4, 0x7f, 0xff, 0xfd, 0x04, 0x80, 0x06, 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, + 0x00, 0xe0, 0x91, 0x00, 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, + 0x04, 0xe9, 0x45, 0x40, 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, 0xfc, 0xbf, 0xc3, + 0xb4, 0x46, 0x6a, 0x01, 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, + 0x08, 0x61, 0xfd, 0xa8, 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, + 0xff, 0xf3, 0x01, 0x45, 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, + 0x30, 0x01, 0x51, 0x42, 0xbc, 0x43, 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, + 0xe0, 0x7e, 0x99, 0xf2, 0x4a, 0xe9, 0x40, 0x02, 0x81, 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, + 0x91, 0xc8, 0x68, 0x25, 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, 0x91, 0xdd, 0xeb, 0x93, + 0x00, 0x21, 0x49, 0x24, 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, 0x32, + 0x00, 0xe3, 0x19, 0xfc, 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, + 0x84, 0xe1, 0x34, 0xd4, 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, + 0xa1, 0x40, 0x2e, 0x2f, 0x48, 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, + 0xa4, 0x16, 0xa2, 0x1b, 0x84, 0xa2, 0x89, 0x58, 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, + 0x32, 0x09, 0x02, 0x80, 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, 0x99, 0xf2, 0xff, 0xff, 0x3d, + 0x5a, 0x1f, 0xa9, 0x02, 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, 0x41, 0x0c, + 0x40, 0x0a, 0x20, 0xc4, 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, + 0xf8, 0x31, 0x02, 0x49, 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, + 0x15, 0xa4, 0x59, 0xc8, 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, + 0x21, 0x0e, 0x7f, 0x2b, 0xc5, 0x08, 0x59, 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, + 0xbb, 0x21, 0xff, 0xfe, 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, + 0x68, 0x8e, 0x07, 0xa6, 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, 0x21, 0xae, 0xf7, + 0xfb, 0x80, 0x28, 0x86, 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, + 0x0c, 0x29, 0xff, 0x0e, 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, + 0x10, 0x70, 0x30, 0xd8, 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, + 0x30, 0xdd, 0x00, 0xdb, 0xe4, 0x48, 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, + 0x60, 0xff, 0xa4, 0xa6, 0xff, 0xf6, 0x8c, 0x00, 0x40, 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, + 0x84, 0x38, 0x81, 0x94, 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, 0x28, 0xa2, 0x1c, 0x2a, + 0x8b, 0x64, 0xd4, 0x86, 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, 0x4c, + 0xbf, 0xb4, 0x1c, 0xd8, 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, + 0xc9, 0x0a, 0x64, 0x20, 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, + 0x07, 0x23, 0xb4, 0xbb, 0x57, 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, + 0xdd, 0x8e, 0x22, 0xdc, 0x14, 0x2c, 0x61, 0xa3, 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, + 0xf4, 0x96, 0xff, 0xf5, 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, 0x9e, 0x43, 0xa5, 0x7f, 0xf0, + 0x4c, 0x4c, 0x2b, 0x3c, 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, 0x5d, 0x7c, + 0x93, 0xba, 0x18, 0xaf, 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, + 0x92, 0x22, 0x4b, 0xdb, 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, + 0x49, 0x34, 0x42, 0x8b, 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, + 0xa9, 0xd8, 0x82, 0x07, 0xa6, 0x30, 0x0f, 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, + 0xe0, 0xd7, 0x02, 0x60, 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, + 0x48, 0x0e, 0x82, 0xa4, 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, 0x31, 0x0e, 0x11, + 0x77, 0xfe, 0x02, 0x60, 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, + 0x2a, 0x41, 0xfd, 0x8a, 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, + 0x13, 0x3e, 0x20, 0x3a, 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, + 0xb2, 0xe9, 0x3f, 0x41, 0x55, 0x1f, 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, + 0xbc, 0x3f, 0xc4, 0xc7, 0x36, 0xdc, 0x23, 0xc8, 0xb8, 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, +]; +const CR_DATA_ENCODED: [u8; 915] = [ + 0x00, 0xb2, 0x46, 0xa2, 0x56, 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, 0xfa, 0x34, 0x0c, + 0x5f, 0xf8, 0x0c, 0x12, 0x50, 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, + 0x25, 0x9d, 0xc1, 0xff, 0x7e, 0x60, 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, + 0xfe, 0x2d, 0x40, 0x7c, 0x28, 0x9e, 0x71, 0x01, 0xd2, 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, + 0x08, 0x4c, 0x04, 0x52, 0x7e, 0xf2, 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, 0x80, 0xae, 0xaf, 0xfe, + 0xb0, 0x6d, 0x23, 0xf2, 0x41, 0xe3, 0x2e, 0x20, 0x11, 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, 0x38, + 0xa3, 0x95, 0x82, 0x15, 0xf0, 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, 0x26, 0x81, 0xe9, 0x47, + 0xff, 0xee, 0x0d, 0x20, 0x34, 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, 0x27, + 0xf1, 0x90, 0x85, 0x09, 0x86, 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, + 0x16, 0xbf, 0x04, 0xa7, 0xf8, 0xa2, 0x46, 0x0b, 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, + 0xf4, 0x0b, 0x14, 0x82, 0xfa, 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, 0x11, 0x7f, 0x03, 0x68, 0x44, + 0xc1, 0x1f, 0x81, 0x3a, 0x6c, 0x77, 0x95, 0x02, 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, 0x90, 0xe8, + 0xfd, 0x1f, 0xa6, 0x40, 0x0b, 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, 0xe8, 0xaf, 0x9a, 0xc1, 0x80, + 0x0f, 0x0a, 0x14, 0x02, 0x3c, 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, 0xe4, 0x83, + 0x8e, 0x03, 0x88, 0xd5, 0xaf, 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, + 0x02, 0x43, 0xc4, 0x14, 0x2a, 0x3f, 0xc8, 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, + 0x56, 0x80, 0xa6, 0x85, 0x00, 0xea, 0x3e, 0x8f, 0xeb, 0x9f, 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, + 0x78, 0xa0, 0x1e, 0x6f, 0x54, 0x78, 0x51, 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, 0x4c, 0x21, 0x3b, + 0xfb, 0x90, 0x0a, 0xcc, 0x1d, 0xd2, 0x47, 0xff, 0xfc, 0x70, 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, + 0x7f, 0x91, 0xd3, 0x66, 0x2f, 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, 0x6b, 0x72, 0x00, + 0xab, 0x33, 0x04, 0xcf, 0x43, 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, + 0x41, 0x44, 0x84, 0x8e, 0x08, 0x19, 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, + 0xd2, 0xd0, 0x1f, 0x13, 0x42, 0xa0, 0x21, 0x41, 0xc4, 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, + 0x7d, 0x35, 0x4f, 0x7f, 0xff, 0xf9, 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, 0x00, 0x09, 0x50, 0x4b, + 0x90, 0x8a, 0xc7, 0x94, 0x4d, 0x47, 0xc1, 0x62, 0x32, 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, 0x1c, + 0x96, 0x44, 0xa0, 0x09, 0xc8, 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, 0x3e, 0x3e, 0x19, 0x93, + 0xa0, 0x36, 0x26, 0x22, 0x08, 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, 0x06, + 0xd4, 0xa8, 0x22, 0x73, 0x7b, 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, + 0x77, 0xac, 0xe0, 0xc4, 0x06, 0x1f, 0xb8, 0xa5, 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, + 0x71, 0x2a, 0x3d, 0x14, 0x19, 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, 0x5f, 0xc5, 0x90, 0x0a, 0x85, + 0xc2, 0x3f, 0x87, 0x03, 0xa8, 0x26, 0x17, 0xc4, 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, 0x48, 0x16, + 0xed, 0x96, 0x93, 0xec, 0x1b, 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, 0x4d, 0xce, 0x40, 0xf3, 0x0c, + 0x51, 0x4b, 0x84, 0x9e, 0x67, 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, 0x81, 0x35, + 0x87, 0xff, 0x98, 0x0f, 0x40, 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, + 0x80, 0x6a, 0xa0, 0x43, 0xff, 0x2d, 0xd6, 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, + 0x1a, 0x2a, 0x06, 0xc0, 0x01, 0x40, 0x0c, 0x30, 0xc1, 0xd0, 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, + 0xd3, 0xb4, 0x0d, 0x88, 0x98, 0xea, 0xda, 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, 0x40, 0x14, 0xff, + 0xff, 0xff, 0xea, 0xdb, 0x9b, 0x92, 0xd8, 0x68, 0x08, 0x0b, 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, + 0xb0, 0x9a, 0x98, 0xc0, 0x80, 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, 0x03, 0x29, 0x7f, + 0xe1, 0x6d, 0x4c, 0x0f, 0x01, 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, + 0x33, 0xf1, 0x80, 0xe1, 0x49, 0x08, 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, + 0x5e, 0xca, 0xf8, 0x3a, 0x00, 0x1e, 0xb0, 0x06, 0x84, 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, + 0x21, 0x43, 0x8e, 0xa5, 0x55, 0x77, 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, 0x0c, 0x42, 0x20, 0xd2, + 0x48, 0x61, 0xc8, 0x1c, 0x65, 0xf8, 0xfe, 0x4c, 0x88, 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, 0x54, + 0x09, 0x13, 0x28, 0x52, 0xf5, 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, 0xcf, 0xf8, 0xf4, 0x7f, + 0xff, 0xfd, 0x01, 0x49, 0xa4, 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, 0xb2, + 0x50, 0x76, 0x30, 0x5b, 0x03, 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, + 0x7a, 0xc6, 0x1c, 0x87, 0xd7, 0x48, 0x7b, 0x49, 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, + 0x0d, 0x1e, 0x9e, 0x53, 0xb7, 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, 0x11, 0x3f, 0xb1, 0xa9, 0xa6, + 0xe8, 0x4d, 0x47, 0x77, 0xda, 0x43, 0x76, 0x89, 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, 0x09, 0x6f, + 0xe7, 0x2d, 0x82, 0x35, 0x07, 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, 0x42, 0x54, 0x80, 0x43, 0x12, + 0x6c, 0x9a, 0x55, 0xc9, 0x0a, 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, 0xc9, 0x4e, + 0xfe, 0x5b, 0x30, 0xa4, 0xe8, 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, + 0x1f, 0xff, 0xfa, 0xc3, 0xe3, 0x55, 0xf1, 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, + 0x01, 0x26, 0x15, 0xa9, 0xf9, 0xd9, 0x32, 0x41, 0x90, 0x36, 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, + 0x8c, 0x6e, 0x42, 0x5d, 0xd8, 0x1e, 0xfe, 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, 0x14, 0xeb, 0x6e, + 0x48, 0x7a, 0x91, 0x88, 0x7b, 0x7d, 0x8f, 0x72, 0x42, 0x39, 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, + 0x60, 0x30, 0x00, +]; + +const Y_DATA_DECODED: [i16; 4096] = [ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, + -5, -1, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, + 4, 4, -5, -1, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, + 0, 1, 3, -1, 5, 0, -1, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 6, -2, + -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, + 5, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, + -1, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, + 1, 2, -1, 0, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, 0, -1, 0, 0, + 0, 0, 0, 0, 0, 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -2, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, 0, + -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, + -1, 7, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, + 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, + 0, 0, 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, + -2, 0, 0, 0, 0, 0, 6, -8, -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1, -2, 5, -3, 2, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, 1, 0, 0, 1, 1, 0, + 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 0, + 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, + 1, 1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, + 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, 0, + -1, 3, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -2, + -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, 0, 0, 0, 0, 1, + 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, -1, 6, -1, 1, -6, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + -1, -1, 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, -3, -5, 0, 1, 0, 0, 8, -1, -7, -9, -7, -2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, + 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, + 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, + -4, -5, -8, -6, -4, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, + -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 2, -1, -1, 1, 0, 0, 0, 0, 0, -1, 4, -2, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, + -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 2, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, + 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, + 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, 0, 0, 0, 1, -4, -1, 0, 0, 1, -5, -2, 1, 1, 1, 6, -2, -1, + 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, 8, -1, 0, 3, + 1, -18, 16, 1, -1, 2, 0, -4, -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, + 0, -5, -2, 3, -1, 11, -8, -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, + -3, -1, -1, -2, -14, 0, 1, 0, 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, + 11, -16, -2, 2, -1, 1, 0, -9, 0, -1, 19, 1, 1, 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, + -1, 0, -2, -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, 0, -5, 0, 0, -1, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, 0, + 0, 0, 0, 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, -1, 3, + 0, 0, 1, -3, -3, -3, 3, -4, 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, 0, 0, -1, 2, + 7, -1, 0, 3, -2, 1, 0, 4, -1, 0, 1, 0, 1, -3, 2, -9, -12, -19, 10, -1, 2, 0, -1, 1, 9, -13, 0, + 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, -2, -1, 2, -1, 0, 0, 0, 1, 1, 0, 0, 4, -3, -17, -14, + 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, 13, 15, 9, -2, 0, 2, -3, 2, 2, -2, 2, + 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, 0, 0, 0, 0, -1, 1, 0, -3, 17, + 8, -1, 4, 8, -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -2, -2, 2, 0, 0, 5, -1, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, -2, -6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -4, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, -1, 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, -1, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -3, 3, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, + 3, 1, 2, -1, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, -1, 2, 0, -1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, 2, + 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, + 3, 0, -1, -6, 0, 4, 5, -13, -53, -3, -2, 0, -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, + 7, -5, -13, 2, -2, 5, -54, 10, -2, 30, 3, -46, 11, -9, -1, -2, 1, -18, -2, 8, -3, 3, -5, -4, + -1, -5, -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, -1, -3, 3, 7, -14, -13, 10, 0, -1, 11, 2, 5, 2, + 12, 0, -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, 9, 12, -6, -18, 5, 1, -3, + -4, -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, -1, + -1, -1, -7, 3, 4, 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, -2, + -23, 2, 2, 3, -4, 22, -4, 5, -4, -2, -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, 1, 0, 0, + 6, 1, -4, 2, 0, -1, 1, -1, -14, 3, 0, -7, -4, 50, -13, -11, 34, -26, -23, -3, -1, 45, -4, 21, + 57, -17, -43, -17, -15, 27, -7, 25, 30, -23, 65, -13, -88, 45, -103, 85, 71, -116, 88, -30, + -57, 57, -101, 94, 25, 17, 5, 6, -107, 15, -31, 20, -26, 142, -18, -23, -95, 69, -7, -13, -9, + 5, 18, -38, -18, +]; + +const CB_DATA_DECODED: [i16; 4096] = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -2, -1, -1, 1, 0, 1, 0, 0, + 0, 3, -7, 7, -8, 1, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, -10, 0, 0, 0, -1, + 0, 1, 0, 0, 0, -2, -5, -2, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, -2, 6, 9, -2, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 2, 6, 0, 0, 0, 0, 0, -1, -6, -2, -2, 0, 0, 0, 0, 0, 1, 0, 0, -7, 0, 5, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, -6, 0, 4, 0, 0, 0, 0, 0, 1, -1, 1, 0, -1, + -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -2, 0, 0, 0, 0, 1, 1, 0, 6, + 3, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 0, 0, 0, 0, 0, 0, + -4, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -8, 1, 0, 1, 0, 0, 0, 0, 0, 1, + 0, -3, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, + 0, 0, 1, 0, 0, -4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 3, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, 10, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0, 0, 0, 0, 0, -2, 2, 0, 0, 0, -10, 1, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -4, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -3, -1, 0, 0, 0, + 0, 0, -1, 0, -1, 1, 1, 0, 0, 0, 0, 0, 0, -1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 12, 0, 0, + 0, 0, 0, 0, 1, -1, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 5, + 0, 0, 0, 0, 0, -1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0, 1, 0, 0, 0, 0, + 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 4, 5, 2, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 4, -8, -7, -4, -4, -6, + -7, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, -3, -3, 1, 0, 0, 0, 0, + 0, 0, 1, -8, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 1, 1, -6, 8, -1, 0, 0, 0, 0, 0, 2, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -8, 7, 7, 4, 5, 8, 1, -1, -7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, -4, -4, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, -1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, -3, -1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, + 0, 1, -4, -6, 4, 7, 5, 4, 6, 5, -5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -4, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 5, -1, 0, 1, 1, 1, 2, 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 5, -3, 2, 0, + 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, -1, -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, -1, 1, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 1, -1, 3, -4, 0, 0, 0, 0, 0, 0, 0, 1, + -2, -7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 5, -5, -4, -3, -3, + -7, -9, 3, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, -4, 4, 0, -1, 1, + 3, 4, 2, -2, 4, 8, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, -1, 0, 0, -4, + 0, 5, 6, 7, 2, -9, -7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, -2, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, -5, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, -2, 0, -1, 0, 1, -1, -1, 1, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 8, -7, 0, 0, 0, 0, 0, 0, 1, -2, -11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, -9, -10, -7, -4, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 2, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 2, 0, -1, -2, 1, 1, -2, 0, 0, 0, 0, 0, 0, 1, 1, -2, -8, -1, 1, 0, -1, -5, 9, 2, 0, 0, -1, 2, + 0, 0, 0, 1, -17, 0, 0, -1, -1, -18, 20, -1, 1, 0, 5, -8, 8, 0, 0, 17, 1, 0, 0, 2, 3, -6, -10, + 3, -1, 1, 0, 3, 32, 0, -1, 5, 5, -1, 0, 5, 4, 14, -16, 1, 0, 0, -1, -17, 2, 0, -1, -17, -3, -2, + 1, -1, -9, 15, -1, 0, 1, -1, -1, -8, -4, 0, 1, 0, 3, 1, -1, 1, -6, 3, 2, 0, 2, -1, 2, 11, 0, 0, + -3, 0, 1, 1, 0, 0, 7, 1, -3, 0, -1, -4, 0, 4, 0, 0, 3, 0, 0, 0, 0, -2, 10, -7, 4, 0, -1, 3, + -24, -2, 0, -1, 4, 0, 2, -1, 0, -5, 10, 2, -1, -3, 4, -1, 11, -1, 0, -4, 1, 0, -1, 0, 0, -2, + -6, 0, 0, 1, -2, 0, 24, 0, 0, 1, 2, 1, 0, 0, 0, -1, -17, 0, 0, 0, -1, -26, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 22, -2, -1, 0, 0, 2, -7, -3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 1, -1, -2, -4, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 10, 6, -2, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 2, -3, -19, -9, -13, -13, 14, -2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, -1, 0, 0, 0, -2, + 14, 2, -2, -2, 6, 8, 0, 0, 1, -2, 0, 0, 0, 1, 0, 1, 0, -17, -6, 1, -8, -9, 0, 0, 1, -1, 0, 1, + 1, -1, 0, 0, 0, -2, -1, 0, 0, -2, 0, 0, 1, 1, -1, -8, 0, 3, -1, 0, 1, 1, 3, 1, 0, 0, 0, 1, -7, + 13, 13, 12, 14, -7, 0, 0, 0, -1, 1, 9, -7, 2, 0, 0, -1, 2, 0, 0, -8, 4, 0, -9, 2, 2, 0, 1, -12, + 3, 0, 0, 0, 0, 0, 0, 0, -2, 1, 9, 10, -4, 2, 35, 4, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, -1, -10, -8, + -21, -13, 3, 0, -1, 1, -1, 0, 1, -1, 0, 1, 0, 1, 1, -5, 14, 14, -2, 0, 0, 0, 2, 3, 2, 0, 1, 1, + 0, 1, 0, 0, 1, 1, -1, 0, 0, -3, -1, 0, 0, -2, 2, 0, -1, -1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, + 0, 2, -12, -4, 1, 1, 2, -20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 19, 16, 15, 24, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, -1, 0, 0, -1, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 3, 0, 0, -1, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 2, 2, -1, 1, -1, 3, 4, 0, 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0, + 0, 0, 1, 0, 0, 0, -2, -1, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, -2, 0, 0, 0, 2, -2, 0, 0, + 0, -1, 1, -1, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, -1, -1, 1, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, -1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 1, -2, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + -9, -1, -2, 5, 1, 1, 0, 1, 33, -2, -2, 5, 1, 2, -3, -4, -14, -3, 2, 76, 4, 5, 17, 3, -37, 1, + -15, -8, 3, -1, 80, -5, 14, -2, -11, 2, 7, -16, 15, -2, 3, -2, 29, -2, 1, -51, -8, 6, -4, 3, 4, + 6, 4, 35, -1, -1, 1, -2, 8, -3, -7, 17, 1, 1, -4, 35, -4, 34, -5, 2, -1, 3, 0, 0, 2, 3, -17, + 46, 10, -2, 4, -9, -5, -2, 3, 4, 0, 1, 4, 28, 33, 2, -3, 14, -6, -1, 0, -4, -1, -7, 38, 60, -5, + -3, 2, 6, 1, 4, 4, -3, 1, -1, -3, -2, -7, -28, -5, -31, 8, 2, 0, 0, -8, 56, 85, 24, -3, 0, -10, + 3, -4, 4, 2, 1, 0, 1, 4, 2, 4, 15, 10, 6, -9, -1, -1, -4, 1, 5, 2, 0, 4, 1, 13, -3, 10, -11, + -4, 2, 7, -1, 0, -2, 1, -14, -3, 2, 2, 0, -1, -1, 3, 0, -5, -9, -4, -2, 2, -5, -28, 1, 7, 17, + 1, 0, 0, 0, -18, 5, 15, -6, 0, 55, -4, 34, -14, 18, -33, 7, -1, -16, 19, -109, -29, 19, 123, + 10, -6, -31, 13, -129, 32, 31, -43, 7, 9, 83, -29, -34, 15, 32, -44, -12, -18, 79, 31, -21, + -40, 58, -51, -33, 63, -8, 35, -31, -13, -10, -20, -44, 102, -11, 9, 2, 17, -136, 4, -58, 208, + -49, 6, 4, 11, -83, -38, 84, 54, +]; + +const CR_DATA_DECODED: [i16; 4096] = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, -13, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, -4, -1, -1, 0, 0, 0, 0, + 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 3, -3, 3, -1, 0, 0, 0, 0, 0, -7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, -7, -4, 0, 0, 0, 0, 0, 0, -2, -1, 0, 2, -6, -4, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 1, 9, 1, 2, 0, 0, 0, 0, 0, -2, 0, 0, 6, 0, -3, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 9, -1, -3, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + -6, -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 4, -1, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 13, -1, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, 2, 0, 0, 0, + 0, 0, -1, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 1, 0, + 0, 0, 0, 1, -1, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -5, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, -1, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -7, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -2, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, + 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -8, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -4, + 0, 0, 0, 0, 0, -1, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -2, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, 0, -1, 0, 1, 0, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 0, -1, + 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 1, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -6, -6, -3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, -5, 11, 9, 6, 5, 9, + 11, -11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 4, 4, -1, 0, 0, + 0, 0, 0, 0, -1, 11, -10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 3, -4, 0, 0, 0, 0, 0, 0, -1, -4, -1, -1, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -3, -3, -2, -2, -4, -1, 1, 3, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, + 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 6, 8, -5, -7, -5, -4, -5, -4, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -8, 1, 0, -1, 0, -1, -2, 0, 1, -6, 4, 0, -1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 4, -4, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 1, -4, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -5, + 4, 4, 3, 3, 4, 4, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 4, + -5, 0, 1, -1, -3, -3, -1, 1, -3, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, + 0, 1, 0, 0, 5, 0, -5, -6, -5, -1, 6, 4, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, + 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 2, 1, -2, -2, 1, 0, + -1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 2, 0, 0, 0, 0, 0, 0, 0, 1, 7, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 5, 6, 4, 3, -5, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 1, -1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, -4, 0, 1, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0, -1, -1, 3, 13, -2, 1, -2, 2, 7, + -15, -1, 0, 0, 1, -1, 0, 0, 0, -3, 25, 2, -1, 0, 0, 20, -7, 1, -1, 0, -2, 6, -3, 0, 0, -20, 0, + -1, -1, -2, -4, 5, 5, -1, 0, -1, 1, -3, -17, 0, 1, -5, -7, 2, 0, -3, -3, -13, 12, 0, 0, 1, 0, + 7, -2, 0, 1, 28, 0, 1, -1, 2, 10, -16, 1, 0, 1, -1, 0, 3, 1, 0, -1, 0, -3, -2, 2, 0, 7, -5, -2, + 0, 0, 0, -1, -6, 0, 0, -2, 1, -3, -1, -1, 0, -10, -2, 4, 0, 0, 1, -1, -2, 0, 0, 3, -1, 0, 0, 1, + 3, -12, 9, -5, 0, 0, -2, 16, 1, 0, -1, 2, 0, -4, 2, 0, 7, -11, -2, 1, 0, -1, 0, -7, 0, 0, -3, + -1, 0, 1, -1, 0, 2, 6, 0, 0, 0, 0, 0, -16, 0, 0, 1, -1, -1, -1, 1, 0, 1, 12, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -14, 1, 0, 0, 0, -2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 3, 1, 3, + -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -13, -8, 3, 0, + 0, 0, 0, 0, 0, 0, -1, -1, 0, -3, 3, 27, 12, 19, 20, -21, 3, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, + -1, 0, 0, 0, 0, -5, -1, 1, 1, -3, -4, 0, 0, -1, 5, -1, 0, 0, -2, 0, -1, -2, 7, 2, 0, 5, 3, 0, + 0, -1, 0, -1, 0, -2, 1, -1, -1, 1, 1, -1, 0, -2, 7, 0, 0, -1, -1, 3, 5, 1, -2, 2, -1, 0, 0, 1, + 0, 0, 0, 0, -1, 11, -17, -14, -10, -14, 7, -1, 1, 0, 0, 0, 2, -3, 0, 0, 0, 3, 2, 0, 0, 9, -5, + 0, 11, -2, -1, -1, -2, 5, -1, 0, 0, 0, 0, 1, 0, 0, 3, -2, -11, -10, 2, -2, -18, -3, 0, 0, 0, + -1, -2, 0, 0, 0, -2, 1, 2, 11, 9, 12, 9, -2, 0, 0, 0, 1, -1, -3, 2, 0, -1, 0, 0, 0, 1, -3, -3, + 0, 0, 0, -1, 1, 2, 1, -4, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, -2, -1, -1, 0, 3, 1, 0, 0, 0, + 0, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 4, 3, 0, -1, 0, 14, -3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, + -11, -11, -9, -15, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 1, 0, -1, 2, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -2, + 0, 0, -2, -2, 0, 0, 0, -1, -2, 1, 0, 0, 0, 0, -2, -3, 0, 0, 3, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 3, 0, 1, -1, -2, 2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, -1, 2, 1, 2, -1, + 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 4, 5, -8, -2, 0, 1, -1, -43, -7, -3, -4, 1, -1, 1, 5, + 22, -1, -1, -54, -2, -2, -4, -4, 52, -5, 17, 7, 1, -3, -33, -4, -25, 1, 15, 3, 2, 2, -11, 4, + -14, 5, -34, 6, -1, 35, 6, 11, 4, -2, -5, -4, -7, -21, 1, -2, 0, 1, -6, 1, 3, -11, 0, -2, 6, + -45, 14, -45, 4, -1, 1, -3, 1, 1, -7, -7, 5, -19, -4, 2, -4, 8, 4, -1, 3, 0, 0, 2, -15, -27, + -36, -2, 5, -1, 14, 2, -5, 7, 0, 8, -39, -41, 6, 1, 4, -12, -6, 0, -2, -2, -1, -4, -5, -3, 6, + 14, -2, 22, -5, -2, -1, 0, 5, -33, -51, -15, 2, 0, 14, -1, 8, -5, -1, 0, 0, -1, -2, -5, -5, + -10, -5, -3, 2, 2, 5, 5, -4, -8, -1, 0, -3, 2, -13, 5, -14, 15, -1, -1, -12, 1, -1, 2, -3, 15, + -1, 3, -3, 1, 5, -4, -2, 0, 2, 6, 2, -4, 0, 2, 15, 0, -5, -12, 0, 0, 0, 0, 12, -3, -10, 4, 0, + -68, 7, -44, 27, -28, 42, -3, 3, 1, -23, 147, 12, 8, -162, 6, 3, 10, -12, 147, -60, -13, -24, + -1, 1, -44, 40, 33, -24, -22, 48, -14, -22, -38, -3, -1, 61, -68, 60, -4, -37, 1, -18, 2, 29, + 29, 8, 18, -74, 10, 5, -17, -22, 108, -16, 33, -124, 22, -7, 0, -4, 48, 26, -46, -33, +]; diff --git a/ironrdp/src/codecs/rfx/subband_reconstruction.rs b/ironrdp/src/codecs/rfx/subband_reconstruction.rs new file mode 100644 index 00000000..400d3f3f --- /dev/null +++ b/ironrdp/src/codecs/rfx/subband_reconstruction.rs @@ -0,0 +1,64 @@ +pub fn decode(buffer: &mut [i16]) { + for i in 1..buffer.len() { + buffer[i] = buffer[i].overflowing_add(buffer[i - 1]).0; + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn decode_does_not_panic_for_empty_buffer() { + let mut buffer = []; + decode(&mut buffer); + assert!(buffer.is_empty()); + } + + #[test] + fn decode_does_not_change_buffer_with_one_element() { + let mut buffer = [1]; + decode(&mut buffer); + assert_eq!([1], buffer); + } + + #[test] + fn decode_changes_last_element_for_buffer_with_two_elements() { + let mut buffer = [1, 2]; + let expected = [1, 3]; + decode(&mut buffer); + assert_eq!(expected, buffer); + } + + #[test] + fn decode_changes_last_element_for_buffer_with_min_elements() { + let mut buffer = [-32768, -32768, -32768, -32768, -32768]; + let expected = [-32768, 0, -32768, 0, -32768]; + decode(&mut buffer); + assert_eq!(expected, buffer); + } + + #[test] + fn decode_changes_last_element_for_buffer_with_max_elements() { + let mut buffer = [32767, 32767, 32767, 32767, 32767]; + let expected = [32767, -2, 32765, -4, 32763]; + decode(&mut buffer); + assert_eq!(expected, buffer); + } + + #[test] + fn decode_does_not_change_zeroed_buffer() { + let mut buffer = [0, 0, 0, 0, 0]; + let expected = [0, 0, 0, 0, 0]; + decode(&mut buffer); + assert_eq!(expected, buffer); + } + + #[test] + fn decode_works_with_five_not_zeroed_elements() { + let mut buffer = [1, 2, 3, 4, 5]; + let expected = [1, 3, 6, 10, 15]; + decode(&mut buffer); + assert_eq!(expected, buffer); + } +} diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 0f2cb4a7..9379274b 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -155,4 +155,87 @@ impl<'a> ops::Deref for Bits<'a> { fn deref(&self) -> &Self::Target { self.bits_slice } -} \ No newline at end of file +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Rectangle { + pub left: u16, + pub top: u16, + pub right: u16, + pub bottom: u16, +} + +impl Rectangle { + pub fn empty() -> Self { + Self { + left: 0, + top: 0, + right: 0, + bottom: 0, + } + } + + pub fn union_all(rectangles: &[Self]) -> Self { + Self { + left: rectangles.iter().map(|r| r.left).min().unwrap_or(0), + top: rectangles.iter().map(|r| r.top).min().unwrap_or(0), + right: rectangles.iter().map(|r| r.right).max().unwrap_or(0), + bottom: rectangles.iter().map(|r| r.bottom).max().unwrap_or(0), + } + } + + pub fn intersect(&self, other: &Self) -> Option { + let result = Self { + left: max(self.left, other.left), + top: max(self.top, other.top), + right: min(self.right, other.right), + bottom: min(self.bottom, other.bottom), + }; + + if result.left < result.right && result.top < result.bottom { + Some(result) + } else { + None + } + } + + pub fn union(&self, other: &Self) -> Self { + Self { + left: min(self.left, other.left), + top: min(self.top, other.top), + right: max(self.right, other.right), + bottom: max(self.bottom, other.bottom), + } + } +} + +impl PduParsing for Rectangle { + type Error = io::Error; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let left = stream.read_u16::()?; + let top = stream.read_u16::()?; + let right = stream.read_u16::()?; + let bottom = stream.read_u16::()?; + + Ok(Self { + left, + top, + right, + bottom, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.left)?; + stream.write_u16::(self.top)?; + stream.write_u16::(self.right)?; + stream.write_u16::(self.bottom)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + } +} From 4fe236f698ac3c961d8b62e54a5e33a734b8e606 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:36:38 +0200 Subject: [PATCH 0029/1273] ironrdp: add RFX HeaderMessage, FrameAcknowledge, refactor RFX decoding --- ironrdp/src/codecs/rfx.rs | 206 +- ironrdp/src/codecs/rfx/data_messages.rs | 158 +- ironrdp/src/codecs/rfx/dwt.rs | 8 +- ironrdp/src/codecs/rfx/header_messages.rs | 61 +- ironrdp/src/codecs/rfx/image_processing.rs | 256 ++ .../src/codecs/rfx/image_processing/tests.rs | 3148 +++++++++++++++++ ironrdp/src/codecs/rfx/quantization.rs | 6 +- .../src/codecs/rfx/rectangles_processing.rs | 11 +- ironrdp/src/codecs/rfx/tests.rs | 10 + ironrdp/src/lib.rs | 76 +- 10 files changed, 3765 insertions(+), 175 deletions(-) create mode 100644 ironrdp/src/codecs/rfx/image_processing.rs create mode 100644 ironrdp/src/codecs/rfx/image_processing/tests.rs diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index 2c88b9c2..ffa5436d 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -1,5 +1,6 @@ pub mod color_conversion; pub mod dwt; +pub mod image_processing; pub mod quantization; pub mod rectangles_processing; pub mod rlgr; @@ -13,7 +14,7 @@ mod tests; pub use self::{ data_messages::{ ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, - Tile, TileSetPdu, + RfxRectangle, Tile, TileSetPdu, }, header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}, rlgr::RlgrError, @@ -26,28 +27,91 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::impl_from_error; +use crate::{impl_from_error, PduBufferParsing, PduParsing}; const BLOCK_HEADER_SIZE: usize = 6; -const CODEC_CHANNEL_HEADER_SIZE: usize = 8; +const CODEC_CHANNEL_HEADER_SIZE: usize = 2; const CODEC_ID: u8 = 1; const CHANNEL_ID_FOR_CONTEXT: u8 = 0xFF; const CHANNEL_ID_FOR_OTHER_VALUES: u8 = 0x00; #[derive(Debug, Clone, PartialEq)] -struct BlockHeader { +pub enum Headers { + CodecVersions(CodecVersionsPdu), + Channels(ChannelsPdu), + Context(ContextPdu), +} + +impl<'a> PduBufferParsing<'a> for Headers { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let mut temp = *buffer; + let ty = temp.read_u16::()?; + let ty = BlockType::from_u16(ty).ok_or(RfxError::InvalidBlockType(ty))?; + + match ty { + BlockType::CodecVersions => Ok(Self::CodecVersions( + CodecVersionsPdu::from_buffer_consume(buffer)?, + )), + BlockType::Channels => Ok(Self::Channels(ChannelsPdu::from_buffer_consume(buffer)?)), + BlockType::Context => Ok(Self::Context(ContextPdu::from_buffer_consume(buffer)?)), + _ => Err(RfxError::InvalidHeaderBlockType(ty)), + } + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + match self { + Self::CodecVersions(pdu) => pdu.to_buffer_consume(buffer), + Self::Channels(pdu) => pdu.to_buffer_consume(buffer), + Self::Context(pdu) => pdu.to_buffer_consume(buffer), + } + } + + fn buffer_length(&self) -> usize { + match self { + Self::CodecVersions(pdu) => pdu.buffer_length(), + Self::Channels(pdu) => pdu.buffer_length(), + Self::Context(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct BlockHeader { pub ty: BlockType, pub data_length: usize, } impl BlockHeader { - fn from_buffer_consume_with_type( + fn from_buffer_consume_with_type(buffer: &mut &[u8], ty: BlockType) -> Result { + let block_length = buffer.read_u32::()? as usize; + + let block_length_without_header = block_length + .checked_sub(BLOCK_HEADER_SIZE) + .ok_or(RfxError::InvalidBlockLength(block_length))?; + + if buffer.len() < block_length_without_header { + return Err(RfxError::InvalidDataLength { + expected: block_length_without_header, + actual: buffer.len(), + }); + } + + let data_length = block_length + .checked_sub(headers_length(ty)) + .ok_or(RfxError::InvalidBlockLength(block_length))?; + + Ok(Self { ty, data_length }) + } + + fn from_buffer_consume_with_expected_type( buffer: &mut &[u8], expected_type: BlockType, ) -> Result { - let ty = BlockType::from_u16(buffer.read_u16::()?) - .ok_or(RfxError::InvalidBlockType)?; + let ty = buffer.read_u16::()?; + let ty = BlockType::from_u16(ty).ok_or(RfxError::InvalidBlockType(ty))?; if ty != expected_type { return Err(RfxError::UnexpectedBlockType { expected: expected_type, @@ -55,60 +119,22 @@ impl BlockHeader { }); } - let block_length = buffer.read_u32::()? as usize; - - let data_length = block_length - .checked_sub(BLOCK_HEADER_SIZE) - .ok_or(RfxError::InvalidBlockLength(block_length))?; - - if buffer.len() < data_length { - return Err(RfxError::InvalidDataLength { - expected: data_length, - actual: buffer.len(), - }); - } - - Ok(Self { ty, data_length }) + Self::from_buffer_consume_with_type(buffer, ty) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { buffer.write_u16::(self.ty.to_u16().unwrap())?; - buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; + buffer.write_u32::((headers_length(self.ty) + self.data_length) as u32)?; Ok(()) } - - fn buffer_length(&self) -> usize { - BLOCK_HEADER_SIZE - } } #[derive(Debug, Clone, PartialEq)] -struct CodecChannelHeader { - pub ty: CodecChannelType, - pub data_length: usize, -} +pub struct CodecChannelHeader; impl CodecChannelHeader { - fn from_buffer_consume_with_type( - buffer: &mut &[u8], - expected_type: CodecChannelType, - ) -> Result { - let ty = CodecChannelType::from_u16(buffer.read_u16::()?) - .ok_or(RfxError::InvalidCodecChannelType)?; - if ty != expected_type { - return Err(RfxError::UnexpectedCodecChannelType { - expected: expected_type, - actual: ty, - }); - } - - let block_length = buffer.read_u32::()? as usize; - - let data_length = block_length - .checked_sub(CODEC_CHANNEL_HEADER_SIZE) - .ok_or(RfxError::InvalidBlockLength(block_length))?; - + fn from_buffer_consume_with_type(buffer: &mut &[u8], ty: BlockType) -> Result { let codec_id = buffer.read_u8()?; if codec_id != CODEC_ID { return Err(RfxError::InvalidCodecId(codec_id)); @@ -116,39 +142,67 @@ impl CodecChannelHeader { let channel_id = buffer.read_u8()?; let expected_channel_id = match ty { - CodecChannelType::Context => CHANNEL_ID_FOR_CONTEXT, + BlockType::Context => CHANNEL_ID_FOR_CONTEXT, _ => CHANNEL_ID_FOR_OTHER_VALUES, }; if channel_id != expected_channel_id { return Err(RfxError::InvalidChannelId(channel_id)); } - if buffer.len() < data_length { - return Err(RfxError::InvalidDataLength { - expected: data_length, - actual: buffer.len(), - }); - } - - Ok(Self { ty, data_length }) + Ok(Self) } - fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { - buffer.write_u16::(self.ty.to_u16().unwrap())?; - buffer.write_u32::((self.buffer_length() + self.data_length) as u32)?; + fn to_buffer_consume_with_type( + &self, + buffer: &mut &mut [u8], + ty: BlockType, + ) -> Result<(), RfxError> { buffer.write_u8(CODEC_ID)?; - let channel_id = match self.ty { - CodecChannelType::Context => CHANNEL_ID_FOR_CONTEXT, + let channel_id = match ty { + BlockType::Context => CHANNEL_ID_FOR_CONTEXT, _ => CHANNEL_ID_FOR_OTHER_VALUES, }; buffer.write_u8(channel_id)?; Ok(()) } +} + +fn headers_length(ty: BlockType) -> usize { + BLOCK_HEADER_SIZE + + match ty { + BlockType::Context + | BlockType::FrameBegin + | BlockType::FrameEnd + | BlockType::Region + | BlockType::Extension => CODEC_CHANNEL_HEADER_SIZE, + _ => 0, + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameAcknowledgePdu { + pub frame_id: u32, +} + +impl PduParsing for FrameAcknowledgePdu { + type Error = io::Error; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let frame_id = stream.read_u32::()?; + + Ok(Self { frame_id }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.frame_id)?; + + Ok(()) + } fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + 4 } } @@ -161,11 +215,6 @@ pub enum BlockType { Sync = 0xCCC0, CodecVersions = 0xCCC1, Channels = 0xCCC2, -} - -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] -#[repr(u16)] -pub enum CodecChannelType { Context = 0xCCC3, FrameBegin = 0xCCC4, FrameEnd = 0xCCC5, @@ -177,8 +226,8 @@ pub enum CodecChannelType { pub enum RfxError { #[fail(display = "IO error: {}", _0)] IoError(#[fail(cause)] io::Error), - #[fail(display = "Got invalid block type")] - InvalidBlockType, + #[fail(display = "Got invalid block type: {}", _0)] + InvalidBlockType(u16), #[fail( display = "Got unexpected Block type: expected ({:?}) != actual({:?})", expected, actual @@ -187,6 +236,11 @@ pub enum RfxError { expected: BlockType, actual: BlockType, }, + #[fail( + display = "Got unexpected Block type ({:?}) while was expected header message", + _0 + )] + InvalidHeaderBlockType(BlockType), #[fail(display = "Got invalid block length: {}", _0)] InvalidBlockLength(usize), #[fail(display = "Got invalid Sync magic number: {}", _0)] @@ -213,16 +267,6 @@ pub enum RfxError { InvalidEntropyAlgorithm(u16), #[fail(display = "Got invalid quantization type: {}", _0)] InvalidQuantizationType(u16), - #[fail(display = "Got invalid codec channel type")] - InvalidCodecChannelType, - #[fail( - display = "Got unexpected codec channel type: expected ({:?}) != actual ({:?})", - expected, actual - )] - UnexpectedCodecChannelType { - expected: CodecChannelType, - actual: CodecChannelType, - }, #[fail( display = "Input buffer is shorter then the data length: {} < {}", actual, expected diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index e8a2e7aa..16e265e5 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -7,10 +7,11 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{ - BlockHeader, BlockType, CodecChannelHeader, CodecChannelType, RfxError, BLOCK_HEADER_SIZE, + BlockHeader, BlockType, CodecChannelHeader, RfxError, BLOCK_HEADER_SIZE, CODEC_CHANNEL_HEADER_SIZE, }; -use crate::{split_to, PduBufferParsing}; +use crate::utils::SplitTo; +use crate::PduBufferParsing; const CONTEXT_ID: u8 = 0; const TILE_SIZE: u16 = 0x0040; @@ -32,13 +33,13 @@ pub struct ContextPdu { pub entropy_algorithm: EntropyAlgorithm, } -impl PduBufferParsing for ContextPdu { - type Error = RfxError; - - fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Context)?; - let mut buffer = split_to!(*buffer, header.data_length); +impl ContextPdu { + pub fn from_buffer_consume_with_header( + buffer: &mut &[u8], + header: BlockHeader, + ) -> Result { + CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Context)?; + let mut buffer = buffer.split_to(header.data_length); let id = buffer.read_u8()?; if id != CONTEXT_ID { @@ -80,14 +81,28 @@ impl PduBufferParsing for ContextPdu { entropy_algorithm, }) } +} + +impl<'a> PduBufferParsing<'a> for ContextPdu { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Context)?; + + Self::from_buffer_consume_with_header(buffer, header) + } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { - let header = CodecChannelHeader { - ty: CodecChannelType::Context, - data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + let header = BlockHeader { + ty: BlockType::Context, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE - CODEC_CHANNEL_HEADER_SIZE, }; + let codec_header = CodecChannelHeader; header.to_buffer_consume(buffer)?; + codec_header.to_buffer_consume_with_type(buffer, BlockType::Context)?; + buffer.write_u8(CONTEXT_ID)?; buffer.write_u16::(TILE_SIZE)?; @@ -104,7 +119,7 @@ impl PduBufferParsing for ContextPdu { } fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + 5 + BLOCK_HEADER_SIZE + CODEC_CHANNEL_HEADER_SIZE + 5 } } @@ -114,15 +129,14 @@ pub struct FrameBeginPdu { pub number_of_regions: i16, } -impl PduBufferParsing for FrameBeginPdu { +impl<'a> PduBufferParsing<'a> for FrameBeginPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = CodecChannelHeader::from_buffer_consume_with_type( - buffer, - CodecChannelType::FrameBegin, - )?; - let mut buffer = split_to!(*buffer, header.data_length); + let header = + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameBegin)?; + CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::FrameBegin)?; + let mut buffer = buffer.split_to(header.data_length); let index = buffer.read_u32::()?; let number_of_regions = buffer.read_i16::()?; @@ -134,12 +148,15 @@ impl PduBufferParsing for FrameBeginPdu { } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { - let header = CodecChannelHeader { - ty: CodecChannelType::FrameBegin, - data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + let header = BlockHeader { + ty: BlockType::FrameBegin, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE - CODEC_CHANNEL_HEADER_SIZE, }; + let codec_header = CodecChannelHeader; header.to_buffer_consume(buffer)?; + codec_header.to_buffer_consume_with_type(buffer, BlockType::FrameBegin)?; + buffer.write_u32::(self.index)?; buffer.write_i16::(self.number_of_regions)?; @@ -147,33 +164,39 @@ impl PduBufferParsing for FrameBeginPdu { } fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + 6 + BLOCK_HEADER_SIZE + CODEC_CHANNEL_HEADER_SIZE + 6 } } #[derive(Debug, Clone, PartialEq)] pub struct FrameEndPdu; -impl PduBufferParsing for FrameEndPdu { +impl<'a> PduBufferParsing<'a> for FrameEndPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let _header = - CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::FrameEnd); + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameEnd)?; + CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::FrameEnd)?; Ok(Self) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { - CodecChannelHeader { - ty: CodecChannelType::FrameEnd, - data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, - } - .to_buffer_consume(buffer) + let header = BlockHeader { + ty: BlockType::FrameEnd, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE - CODEC_CHANNEL_HEADER_SIZE, + }; + let codec_header = CodecChannelHeader; + + header.to_buffer_consume(buffer)?; + codec_header.to_buffer_consume_with_type(buffer, BlockType::FrameEnd)?; + + Ok(()) } fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + BLOCK_HEADER_SIZE + CODEC_CHANNEL_HEADER_SIZE } } @@ -182,13 +205,14 @@ pub struct RegionPdu { pub rectangles: Vec, } -impl PduBufferParsing for RegionPdu { +impl<'a> PduBufferParsing<'a> for RegionPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let header = - CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Region)?; - let mut buffer = split_to!(*buffer, header.data_length); + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Region)?; + CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Region)?; + let mut buffer = buffer.split_to(header.data_length); let region_flags = buffer.read_u8()?; let lrf = region_flags.get_bit(0); @@ -196,7 +220,7 @@ impl PduBufferParsing for RegionPdu { return Err(RfxError::InvalidLrf(lrf)); } - let number_of_rectangles = buffer.read_u16::()? as usize; + let number_of_rectangles = usize::from(buffer.read_u16::()?); if buffer.len() < number_of_rectangles * RECTANGLE_SIZE { return Err(RfxError::InvalidDataLength { expected: number_of_rectangles * RECTANGLE_SIZE, @@ -222,12 +246,14 @@ impl PduBufferParsing for RegionPdu { } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { - let header = CodecChannelHeader { - ty: CodecChannelType::Region, - data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + let header = BlockHeader { + ty: BlockType::Region, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE - CODEC_CHANNEL_HEADER_SIZE, }; + let codec_header = CodecChannelHeader; header.to_buffer_consume(buffer)?; + codec_header.to_buffer_consume_with_type(buffer, BlockType::Region)?; let mut region_flags = 0; region_flags.set_bit(0, LRF); @@ -245,7 +271,8 @@ impl PduBufferParsing for RegionPdu { } fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + BLOCK_HEADER_SIZE + + CODEC_CHANNEL_HEADER_SIZE + 7 + self .rectangles @@ -262,11 +289,14 @@ pub struct TileSetPdu<'a> { pub tiles: Vec>, } -impl<'a> TileSetPdu<'a> { - pub fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { +impl<'a> PduBufferParsing<'a> for TileSetPdu<'a> { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { let header = - CodecChannelHeader::from_buffer_consume_with_type(buffer, CodecChannelType::Extension)?; - let mut buffer = split_to!(*buffer, header.data_length); + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Extension)?; + CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Extension)?; + let mut buffer = buffer.split_to(header.data_length); let subtype = buffer.read_u16::()?; if subtype != CBT_TILESET { @@ -310,7 +340,7 @@ impl<'a> TileSetPdu<'a> { return Err(RfxError::InvalidQuantizationType(quantization_type)); } - let number_of_quants = buffer.read_u8()? as usize; + let number_of_quants = usize::from(buffer.read_u8()?); let tile_size = u16::from(buffer.read_u8()?); if tile_size != TILE_SIZE { @@ -343,13 +373,16 @@ impl<'a> TileSetPdu<'a> { }) } - pub fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { - let header = CodecChannelHeader { - ty: CodecChannelType::Extension, - data_length: self.buffer_length() - CODEC_CHANNEL_HEADER_SIZE, + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { + let header = BlockHeader { + ty: BlockType::Extension, + data_length: self.buffer_length() - BLOCK_HEADER_SIZE - CODEC_CHANNEL_HEADER_SIZE, }; + let codec_header = CodecChannelHeader; header.to_buffer_consume(buffer)?; + codec_header.to_buffer_consume_with_type(buffer, BlockType::Extension)?; + buffer.write_u16::(CBT_TILESET)?; buffer.write_u16::(IDX)?; @@ -380,8 +413,9 @@ impl<'a> TileSetPdu<'a> { Ok(()) } - pub fn buffer_length(&self) -> usize { - CODEC_CHANNEL_HEADER_SIZE + fn buffer_length(&self) -> usize { + BLOCK_HEADER_SIZE + + CODEC_CHANNEL_HEADER_SIZE + 14 + self .quants @@ -400,7 +434,7 @@ pub struct RfxRectangle { pub height: u16, } -impl PduBufferParsing for RfxRectangle { +impl<'a> PduBufferParsing<'a> for RfxRectangle { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { @@ -445,7 +479,7 @@ pub struct Quant { pub hh1: u8, } -impl PduBufferParsing for Quant { +impl<'a> PduBufferParsing<'a> for Quant { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { @@ -522,10 +556,12 @@ pub struct Tile<'a> { pub cr_data: &'a [u8], } -impl<'a> Tile<'a> { - pub fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { - let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Tile)?; - let mut buffer = split_to!(*buffer, header.data_length); +impl<'a> PduBufferParsing<'a> for Tile<'a> { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Tile)?; + let mut buffer = buffer.split_to(header.data_length); let y_quant_index = buffer.read_u8()?; let cb_quant_index = buffer.read_u8()?; @@ -534,9 +570,9 @@ impl<'a> Tile<'a> { let x = buffer.read_u16::()?; let y = buffer.read_u16::()?; - let y_component_length = buffer.read_u16::()? as usize; - let cb_component_length = buffer.read_u16::()? as usize; - let cr_component_length = buffer.read_u16::()? as usize; + let y_component_length = usize::from(buffer.read_u16::()?); + let cb_component_length = usize::from(buffer.read_u16::()?); + let cr_component_length = usize::from(buffer.read_u16::()?); if buffer.len() < y_component_length + cb_component_length + cr_component_length { return Err(RfxError::InvalidDataLength { @@ -567,7 +603,7 @@ impl<'a> Tile<'a> { }) } - pub fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), RfxError> { let header = BlockHeader { ty: BlockType::Tile, data_length: self.buffer_length() - BLOCK_HEADER_SIZE, @@ -592,7 +628,7 @@ impl<'a> Tile<'a> { Ok(()) } - pub fn buffer_length(&self) -> usize { + fn buffer_length(&self) -> usize { BLOCK_HEADER_SIZE + 13 + self.y_data.len() + self.cb_data.len() + self.cr_data.len() } } diff --git a/ironrdp/src/codecs/rfx/dwt.rs b/ironrdp/src/codecs/rfx/dwt.rs index d9ac1832..caee9cf0 100644 --- a/ironrdp/src/codecs/rfx/dwt.rs +++ b/ironrdp/src/codecs/rfx/dwt.rs @@ -1,7 +1,7 @@ #[cfg(test)] mod tests; -use crate::split_to; +use crate::utils::SplitTo; pub fn decode(buffer: &mut [i16], temp_buffer: &mut [i16]) { decode_block(&mut buffer[3840..], temp_buffer, 8); @@ -22,9 +22,9 @@ fn inverse_horizontal(mut buffer: &[i16], temp_buffer: &mut [i16], subband_width let total_width = subband_width * 2; let squared_subband_width = subband_width.pow(2); - let mut hl = split_to!(buffer, squared_subband_width); - let mut lh = split_to!(buffer, squared_subband_width); - let mut hh = split_to!(buffer, squared_subband_width); + let mut hl = buffer.split_to(squared_subband_width); + let mut lh = buffer.split_to(squared_subband_width); + let mut hh = buffer.split_to(squared_subband_width); let mut ll = buffer; let (mut l_dst, mut h_dst) = temp_buffer.split_at_mut(squared_subband_width * 2); diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp/src/codecs/rfx/header_messages.rs index dfcf996e..071ec0b8 100644 --- a/ironrdp/src/codecs/rfx/header_messages.rs +++ b/ironrdp/src/codecs/rfx/header_messages.rs @@ -1,7 +1,8 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{BlockHeader, BlockType, RfxError, BLOCK_HEADER_SIZE}; -use crate::{split_to, PduBufferParsing}; +use crate::utils::SplitTo; +use crate::PduBufferParsing; const SYNC_MAGIC: u32 = 0xCACC_ACCA; const SYNC_VERSION: u16 = 0x0100; @@ -15,12 +16,12 @@ const CHANNEL_SIZE: usize = 5; #[derive(Debug, Clone, PartialEq)] pub struct SyncPdu; -impl PduBufferParsing for SyncPdu { +impl<'a> PduBufferParsing<'a> for SyncPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Sync)?; - let mut buffer = split_to!(*buffer, header.data_length); + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Sync)?; + let mut buffer = buffer.split_to(header.data_length); let magic = buffer.read_u32::()?; if magic != SYNC_MAGIC { @@ -55,12 +56,12 @@ impl PduBufferParsing for SyncPdu { #[derive(Debug, Clone, PartialEq)] pub struct CodecVersionsPdu; -impl PduBufferParsing for CodecVersionsPdu { - type Error = RfxError; - - fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::CodecVersions)?; - let mut buffer = split_to!(*buffer, header.data_length); +impl CodecVersionsPdu { + pub fn from_buffer_consume_with_header( + buffer: &mut &[u8], + header: BlockHeader, + ) -> Result { + let mut buffer = buffer.split_to(header.data_length); let codecs_number = buffer.read_u8()?; if codecs_number != CODECS_NUMBER { @@ -71,6 +72,17 @@ impl PduBufferParsing for CodecVersionsPdu { Ok(Self) } +} + +impl<'a> PduBufferParsing<'a> for CodecVersionsPdu { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::CodecVersions)?; + + Self::from_buffer_consume_with_header(buffer, header) + } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = BlockHeader { @@ -92,14 +104,14 @@ impl PduBufferParsing for CodecVersionsPdu { #[derive(Debug, Clone, PartialEq)] pub struct ChannelsPdu(pub Vec); -impl PduBufferParsing for ChannelsPdu { - type Error = RfxError; +impl ChannelsPdu { + pub fn from_buffer_consume_with_header( + buffer: &mut &[u8], + header: BlockHeader, + ) -> Result { + let mut buffer = buffer.split_to(header.data_length); - fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = BlockHeader::from_buffer_consume_with_type(buffer, BlockType::Channels)?; - let mut buffer = split_to!(*buffer, header.data_length); - - let channels_number = buffer.read_u8()? as usize; + let channels_number = usize::from(buffer.read_u8()?); if buffer.len() < channels_number * CHANNEL_SIZE { return Err(RfxError::InvalidDataLength { @@ -114,6 +126,17 @@ impl PduBufferParsing for ChannelsPdu { Ok(Self(channels)) } +} + +impl<'a> PduBufferParsing<'a> for ChannelsPdu { + type Error = RfxError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let header = + BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Channels)?; + + Self::from_buffer_consume_with_header(buffer, header) + } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { let header = BlockHeader { @@ -148,7 +171,7 @@ pub struct Channel { pub height: i16, } -impl PduBufferParsing for Channel { +impl<'a> PduBufferParsing<'a> for Channel { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { @@ -179,7 +202,7 @@ impl PduBufferParsing for Channel { #[derive(Debug, Clone, PartialEq)] struct CodecVersion; -impl PduBufferParsing for CodecVersion { +impl<'a> PduBufferParsing<'a> for CodecVersion { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { diff --git a/ironrdp/src/codecs/rfx/image_processing.rs b/ironrdp/src/codecs/rfx/image_processing.rs new file mode 100644 index 00000000..7e9d2534 --- /dev/null +++ b/ironrdp/src/codecs/rfx/image_processing.rs @@ -0,0 +1,256 @@ +#[cfg(test)] +mod tests; + +use std::io::{self}; + +use byteorder::WriteBytesExt; +use num_derive::ToPrimitive; +use num_traits::ToPrimitive; + +use crate::utils::Rectangle; + +const MIN_ALPHA: u8 = 0x00; +const MAX_ALPHA: u8 = 0xff; + +pub struct ImageRegionMut<'a> { + pub region: Rectangle, + pub step: u16, + pub pixel_format: PixelFormat, + pub data: &'a mut [u8], +} + +pub struct ImageRegion<'a> { + pub region: Rectangle, + pub step: u16, + pub pixel_format: PixelFormat, + pub data: &'a [u8], +} + +impl<'a> ImageRegion<'a> { + pub fn copy_to<'b>(&self, other: &mut ImageRegionMut<'b>) -> io::Result<()> { + let width = usize::from(other.region.width()); + let height = usize::from(other.region.height()); + + let dst_point = Point { + x: usize::from(other.region.left), + y: usize::from(other.region.top), + }; + let src_point = Point { + x: usize::from(self.region.left), + y: usize::from(self.region.top), + }; + + let src_byte = usize::from(self.pixel_format.bytes_per_pixel()); + let dst_byte = usize::from(other.pixel_format.bytes_per_pixel()); + let dst_width = width * dst_byte; + + let src_step = if self.step == 0 { + width * src_byte + } else { + usize::from(self.step) + }; + let dst_step = if other.step == 0 { + width * dst_byte + } else { + usize::from(other.step) + }; + + if self.pixel_format.eq_no_alpha(other.pixel_format) { + for y in 0..height { + let src_start = (y + src_point.y) * src_step + src_point.x * src_byte; + let dst_start = (y + dst_point.y) * dst_step + dst_point.x * dst_byte; + other.data[dst_start..dst_start + dst_width] + .clone_from_slice(&self.data[src_start..src_start + dst_width]); + } + } else { + for y in 0..height { + let src = &self.data[((y + src_point.y) * src_step)..]; + let dst = &mut other.data[((y + dst_point.y) * dst_step)..]; + + for x in 0..width { + let color = self + .pixel_format + .read_color(&src[((x + src_point.x) * src_byte)..])?; + other + .pixel_format + .write_color(color, &mut dst[((x + dst_point.x) * dst_byte)..])?; + } + } + } + + Ok(()) + } +} + +#[derive(Debug, Copy, Clone, PartialEq, ToPrimitive)] +pub enum PixelFormat { + ARgb32 = 536_971_400, + XRgb32 = 536_938_632, + ABgr32 = 537_036_936, + XBgr32 = 537_004_168, + BgrA32 = 537_168_008, + BgrX32 = 537_135_240, + RgbA32 = 537_102_472, + RgbX32 = 537_069_704, +} + +impl PixelFormat { + pub fn bytes_per_pixel(self) -> u8 { + match self { + Self::ARgb32 + | Self::XRgb32 + | Self::ABgr32 + | Self::XBgr32 + | Self::BgrA32 + | Self::BgrX32 + | Self::RgbA32 + | Self::RgbX32 => 4, + } + } + + pub fn eq_no_alpha(self, other: Self) -> bool { + let mask = !(8 << 12); + + (self.to_u32().unwrap() & mask) == (other.to_u32().unwrap() & mask) + } + + pub fn read_color(self, buffer: &[u8]) -> io::Result { + match self { + Self::ARgb32 + | Self::XRgb32 + | Self::ABgr32 + | Self::XBgr32 + | Self::BgrA32 + | Self::BgrX32 + | Self::RgbA32 + | Self::RgbX32 => { + if buffer.len() < 4 { + Err(io::Error::new( + io::ErrorKind::InvalidInput, + "The input buffer is not large enoght", + )) + } else { + let color = &buffer[..4]; + + match self { + Self::ARgb32 => Ok(Rgba { + a: color[0], + r: color[1], + g: color[2], + b: color[3], + }), + Self::XRgb32 => Ok(Rgba { + a: MAX_ALPHA, + r: color[1], + g: color[2], + b: color[3], + }), + Self::ABgr32 => Ok(Rgba { + a: color[0], + b: color[1], + g: color[2], + r: color[3], + }), + Self::XBgr32 => Ok(Rgba { + a: MAX_ALPHA, + b: color[1], + g: color[2], + r: color[3], + }), + Self::BgrA32 => Ok(Rgba { + b: color[0], + g: color[1], + r: color[2], + a: color[3], + }), + Self::BgrX32 => Ok(Rgba { + b: color[0], + g: color[1], + r: color[2], + a: MAX_ALPHA, + }), + Self::RgbA32 => Ok(Rgba { + r: color[0], + g: color[1], + b: color[2], + a: color[3], + }), + Self::RgbX32 => Ok(Rgba { + r: color[0], + g: color[1], + b: color[2], + a: MAX_ALPHA, + }), + } + } + } + } + } + + pub fn write_color(self, color: Rgba, mut buffer: &mut [u8]) -> io::Result<()> { + match self { + Self::ARgb32 => { + buffer.write_u8(color.a)?; + buffer.write_u8(color.r)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.b)?; + } + Self::XRgb32 => { + buffer.write_u8(MIN_ALPHA)?; + buffer.write_u8(color.r)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.b)?; + } + Self::ABgr32 => { + buffer.write_u8(color.a)?; + buffer.write_u8(color.b)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.r)?; + } + Self::XBgr32 => { + buffer.write_u8(MIN_ALPHA)?; + buffer.write_u8(color.b)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.r)?; + } + Self::BgrA32 => { + buffer.write_u8(color.b)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.r)?; + buffer.write_u8(color.a)?; + } + Self::BgrX32 => { + buffer.write_u8(color.b)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.r)?; + buffer.write_u8(MIN_ALPHA)?; + } + Self::RgbA32 => { + buffer.write_u8(color.r)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.b)?; + buffer.write_u8(color.a)?; + } + Self::RgbX32 => { + buffer.write_u8(color.r)?; + buffer.write_u8(color.g)?; + buffer.write_u8(color.b)?; + buffer.write_u8(MIN_ALPHA)?; + } + } + + Ok(()) + } +} + +struct Point { + pub x: usize, + pub y: usize, +} + +pub struct Rgba { + pub r: u8, + pub g: u8, + pub b: u8, + pub a: u8, +} diff --git a/ironrdp/src/codecs/rfx/image_processing/tests.rs b/ironrdp/src/codecs/rfx/image_processing/tests.rs new file mode 100644 index 00000000..4b7ac86d --- /dev/null +++ b/ironrdp/src/codecs/rfx/image_processing/tests.rs @@ -0,0 +1,3148 @@ +use super::*; + +#[test] +fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() { + let mut destination_data = vec![0; CONVERTED_TO_XRGB_BUFFER.len()]; + let source_region = ImageRegion { + region: Rectangle { + left: 0, + top: 0, + right: 64, + bottom: 64, + }, + step: 256, + pixel_format: PixelFormat::BgrX32, + data: &mut SOURCE_IN_RGBX_BUFFER, + }; + let mut destination_region = ImageRegionMut { + region: Rectangle { + left: 0, + top: 0, + right: 64, + bottom: 64, + }, + step: 256, + pixel_format: PixelFormat::XRgb32, + data: destination_data.as_mut_slice(), + }; + + source_region.copy_to(&mut destination_region).unwrap(); + assert_eq!( + CONVERTED_TO_XRGB_BUFFER.as_ref(), + destination_data.as_slice() + ); +} + +#[test] +fn image_region_correctly_writes_image_with_same_formats_and_different_sizes() { + let mut destination_data = vec![0; CONVERTED_TO_XRGB_BUFFER.len()]; + let source_region = ImageRegion { + region: Rectangle { + left: 8, + top: 8, + right: 64, + bottom: 64, + }, + step: 256, + pixel_format: PixelFormat::BgrX32, + data: &mut SOURCE_IN_RGBX_BUFFER, + }; + let mut destination_region = ImageRegionMut { + region: Rectangle { + left: 8, + top: 8, + right: 40, + bottom: 24, + }, + step: 256, + pixel_format: PixelFormat::BgrX32, + data: destination_data.as_mut_slice(), + }; + + source_region.copy_to(&mut destination_region).unwrap(); + assert_eq!( + CONVERTED_TO_BGRX_WITH_PARTIALLY_COVERED_RECTANGLE_BUFFER.as_ref(), + destination_data.as_slice() + ); +} + +const SOURCE_IN_RGBX_BUFFER: [u8; 64 * 64 * 4] = [ + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, + 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, + 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, + 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, + 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, + 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, + 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, + 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, + 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, + 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, + 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, + 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, + 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, + 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, + 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, + 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, + 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, + 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, + 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, + 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, + 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, + 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, + 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, + 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, + 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, + 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, + 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, + 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, + 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, + 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, + 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, + 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, + 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, + 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, + 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, + 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, + 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, + 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, + 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, + 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, + 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, + 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, + 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, + 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, + 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, + 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, + 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, + 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, + 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, + 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, + 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, + 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, + 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, + 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, + 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, + 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, + 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, + 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, + 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, + 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, + 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, + 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, + 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, + 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, + 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, + 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, + 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, + 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, + 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, + 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, + 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, + 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, + 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, + 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, + 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, + 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, + 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, + 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, + 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, + 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, + 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, + 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, + 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, + 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, + 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, + 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, + 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, + 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, + 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, + 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, + 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, + 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, + 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, + 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, + 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, + 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, + 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, + 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, + 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, + 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, + 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, + 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, + 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, + 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, + 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, + 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, + 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, + 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, + 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, + 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, + 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, + 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, + 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, + 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, + 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, + 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, + 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, + 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, + 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, + 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, + 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, + 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, + 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, + 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, + 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, + 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, + 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, + 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, + 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, + 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, + 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, + 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, + 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, + 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, + 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, + 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, + 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, + 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, + 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, + 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, + 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, + 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, + 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, + 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, + 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, + 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, + 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, + 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, + 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, + 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, + 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, + 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, + 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, + 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, + 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, + 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, + 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, + 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, + 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, + 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, + 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, + 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, + 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, + 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, + 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, + 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, + 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, + 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, + 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, + 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, + 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, + 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, + 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, + 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, + 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, + 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, + 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, + 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, + 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, + 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, + 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, + 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, + 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, + 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, + 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, + 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, + 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, + 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, + 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, + 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, + 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, + 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, + 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, + 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, + 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, + 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, + 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, + 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, + 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, + 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, + 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, + 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, + 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, + 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, + 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, + 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, + 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, + 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, + 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, + 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, + 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, + 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, + 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, + 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, + 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, + 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, + 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, + 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, + 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, + 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, + 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, + 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, + 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, + 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, + 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, + 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, + 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, + 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, + 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, + 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, + 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, + 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, + 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, + 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, + 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, + 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, + 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, + 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, + 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, + 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, + 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, + 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, + 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, + 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, + 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, + 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, + 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, + 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, + 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, + 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, + 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, + 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, + 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, + 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, + 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, + 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, + 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, + 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, + 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, + 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, + 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, + 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, + 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, + 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, + 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, + 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, + 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, + 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, + 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, + 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, + 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, + 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, + 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, + 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, + 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, + 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, + 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, + 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, + 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, + 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, + 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, + 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, + 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, + 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, + 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, + 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, + 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, + 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, + 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, + 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, + 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, + 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, + 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, + 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, + 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, + 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, + 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, + 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, + 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, + 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, + 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, + 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, + 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, + 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, + 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, + 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, + 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, + 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, + 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, + 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, + 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, + 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, + 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, + 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, + 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, + 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, + 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, + 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, + 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, + 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, + 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, + 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, + 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, + 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, + 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, + 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, + 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, + 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, + 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, + 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, + 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, + 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, + 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, + 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, + 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, + 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, + 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, + 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, + 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, + 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, + 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, + 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, + 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, + 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, + 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, + 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, + 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, + 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, + 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, + 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, + 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, + 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, + 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, + 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, + 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, + 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, + 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, + 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, + 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, + 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, + 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, + 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, + 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, + 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, + 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, + 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, + 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, + 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, + 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, + 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, + 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, + 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, + 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, + 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, + 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, + 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, + 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, + 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, + 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, + 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, + 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, + 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, + 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, + 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, + 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, + 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, + 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, + 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, + 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, + 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, + 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, + 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, + 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, + 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, + 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, + 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, + 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, + 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, + 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, + 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, + 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, + 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, + 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, + 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, + 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, + 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, + 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, + 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, + 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, + 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, + 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, + 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, + 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, + 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, + 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, + 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, + 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, + 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, + 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, + 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, + 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, + 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, + 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, + 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, + 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, + 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, + 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, + 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, + 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, + 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, + 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, + 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, + 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, + 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, + 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, + 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, + 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, + 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, + 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, + 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, + 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, + 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, + 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, + 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, + 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, + 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, + 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, + 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, + 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, + 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, + 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, + 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, + 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, + 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, + 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, + 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, + 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, + 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, + 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, + 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, + 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, + 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, + 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, + 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, + 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, + 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, + 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, + 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, + 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, + 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, + 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, + 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, + 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, + 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, + 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, + 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, + 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, + 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, + 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, + 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, + 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, + 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, + 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, + 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, + 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, + 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, + 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, + 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, + 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, + 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, + 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, + 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, + 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, + 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, + 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, + 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, + 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, + 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, + 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, + 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, + 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, + 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, + 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, + 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, + 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, + 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, + 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, + 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, + 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, + 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, + 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, + 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, + 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, + 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, + 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, + 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, + 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, + 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, + 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, + 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, + 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, + 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, + 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, + 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, + 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, + 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, + 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, + 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, + 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, + 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, + 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, + 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, + 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, + 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, + 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, + 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, + 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, + 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, + 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, + 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, + 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, + 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, + 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, + 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, + 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, + 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, + 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, + 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, + 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, + 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, + 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, + 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, + 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, + 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, + 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, + 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, + 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, + 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, + 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, + 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, + 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, + 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, + 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, + 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, + 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, + 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, + 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, + 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, + 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, + 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, + 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, + 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, + 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, + 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, + 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, + 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, + 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, + 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, + 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, + 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, + 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, + 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, + 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, + 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, + 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, + 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, + 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, + 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, + 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, + 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, + 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, + 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, + 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, + 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, + 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, + 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, + 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, + 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, + 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, + 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, + 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, + 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, + 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, + 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, + 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, + 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, + 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, + 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, + 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, + 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, + 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, + 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, + 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, + 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, + 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, + 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, + 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, + 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, + 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, + 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, + 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, + 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, + 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, + 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, + 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, + 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, + 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, + 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, + 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, + 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, + 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, + 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, + 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, + 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, + 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, + 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, + 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, + 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, + 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, + 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, + 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, + 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, + 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, + 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, + 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, + 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, + 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, + 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, + 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, + 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, + 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, + 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, + 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, + 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, + 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, + 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, + 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, + 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, + 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, + 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, + 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, + 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, + 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, + 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, + 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, + 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, + 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, + 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, + 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, + 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, + 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, + 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, + 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, + 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, + 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, + 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, + 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, + 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, + 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, + 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, + 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, + 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, + 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, + 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, + 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, + 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, + 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, + 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, + 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, + 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, + 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, + 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, + 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, + 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, + 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, + 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, + 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, + 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, + 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, + 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, + 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, + 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, + 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, + 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, + 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, + 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, + 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, + 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, + 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, + 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, + 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, + 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, + 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, + 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, + 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, + 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, + 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, + 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, + 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, + 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, + 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, + 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, + 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, + 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, + 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, + 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, + 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, + 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, + 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, + 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, + 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, + 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, + 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, + 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, + 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, + 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, + 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, + 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, + 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, + 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, + 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, + 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, + 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, + 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, + 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, + 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, + 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, + 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, + 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, + 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, + 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, + 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, + 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, + 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, + 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, + 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, + 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, + 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, + 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, + 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, + 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, + 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, + 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, + 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, + 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, + 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, + 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, + 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, + 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, + 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, + 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, + 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, + 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, + 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, + 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, + 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, + 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, + 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, + 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, + 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, + 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, + 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, + 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, + 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, + 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, + 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, + 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, + 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, + 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, + 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, + 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, + 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, + 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, + 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, + 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, + 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, + 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, + 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, + 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, + 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, + 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, + 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, + 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, + 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, + 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, + 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, + 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, + 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, + 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, + 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, +]; + +const CONVERTED_TO_XRGB_BUFFER: [u8; 64 * 64 * 4] = [ + 0x00, 0x22, 0x9B, 0xDE, 0x00, 0x23, 0x9D, 0xE0, 0x00, 0x25, 0x9E, 0xE1, 0x00, 0x2B, 0xA5, 0xE8, + 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x22, 0x9C, 0xDF, 0x00, 0x22, 0x9C, 0xE0, 0x00, 0x22, 0x9C, 0xDF, + 0x00, 0x21, 0x9B, 0xDF, 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, + 0x00, 0x24, 0x9C, 0xDF, 0x00, 0x21, 0x9B, 0xE2, 0x00, 0x1D, 0x9B, 0xE5, 0x00, 0x1F, 0x9A, 0xE1, + 0x00, 0x21, 0x98, 0xDD, 0x00, 0x21, 0x99, 0xDE, 0x00, 0x20, 0x99, 0xDE, 0x00, 0x1F, 0x9A, 0xDF, + 0x00, 0x1F, 0x9A, 0xE0, 0x00, 0x1E, 0x99, 0xE0, 0x00, 0x1D, 0x99, 0xDF, 0x00, 0x1C, 0x98, 0xDF, + 0x00, 0x1B, 0x97, 0xDF, 0x00, 0x1E, 0x95, 0xDC, 0x00, 0x21, 0x93, 0xD8, 0x00, 0x1F, 0x93, 0xDC, + 0x00, 0x1C, 0x93, 0xE0, 0x00, 0x1A, 0x94, 0xDC, 0x00, 0x18, 0x95, 0xD8, 0x00, 0x1C, 0x91, 0xDB, + 0x00, 0x1F, 0x8E, 0xDE, 0x00, 0x1A, 0x90, 0xDE, 0x00, 0x16, 0x93, 0xDE, 0x00, 0x17, 0x92, 0xDF, + 0x00, 0x18, 0x91, 0xDF, 0x00, 0x17, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8E, 0xDE, + 0x00, 0x15, 0x8C, 0xDE, 0x00, 0x14, 0x8C, 0xDD, 0x00, 0x13, 0x8C, 0xDB, 0x00, 0x12, 0x8C, 0xDA, + 0x00, 0x11, 0x8C, 0xD9, 0x00, 0x11, 0x8B, 0xD9, 0x00, 0x11, 0x89, 0xD9, 0x00, 0x11, 0x88, 0xDA, + 0x00, 0x12, 0x87, 0xDA, 0x00, 0x11, 0x86, 0xDA, 0x00, 0x10, 0x86, 0xDA, 0x00, 0x10, 0x85, 0xD9, + 0x00, 0x0F, 0x84, 0xD9, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD8, 0x00, 0x0D, 0x82, 0xD8, + 0x00, 0x0C, 0x81, 0xD8, 0x00, 0x0C, 0x80, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD6, + 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, + 0x00, 0x24, 0x9F, 0xE0, 0x00, 0x27, 0xA0, 0xE1, 0x00, 0x29, 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE5, + 0x00, 0x24, 0x9E, 0xE0, 0x00, 0x24, 0x9E, 0xE1, 0x00, 0x24, 0x9E, 0xE1, 0x00, 0x23, 0x9E, 0xE1, + 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, + 0x00, 0x25, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x22, 0x9C, 0xE2, 0x00, 0x22, 0x9C, 0xE0, + 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x21, 0x9B, 0xE0, 0x00, 0x20, 0x9B, 0xE1, 0x00, 0x20, 0x9B, 0xE1, + 0x00, 0x1F, 0x9B, 0xE1, 0x00, 0x20, 0x9A, 0xDF, 0x00, 0x20, 0x99, 0xDE, 0x00, 0x1E, 0x98, 0xDE, + 0x00, 0x1D, 0x97, 0xDF, 0x00, 0x1D, 0x97, 0xDF, 0x00, 0x1E, 0x96, 0xDF, 0x00, 0x1D, 0x95, 0xDF, + 0x00, 0x1C, 0x94, 0xDE, 0x00, 0x1C, 0x94, 0xDF, 0x00, 0x1B, 0x93, 0xE0, 0x00, 0x1C, 0x93, 0xE0, + 0x00, 0x1D, 0x92, 0xE0, 0x00, 0x1B, 0x93, 0xDE, 0x00, 0x19, 0x94, 0xDC, 0x00, 0x19, 0x93, 0xDE, + 0x00, 0x19, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, + 0x00, 0x17, 0x8E, 0xDF, 0x00, 0x16, 0x8E, 0xDE, 0x00, 0x15, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDC, + 0x00, 0x12, 0x8D, 0xDB, 0x00, 0x12, 0x8C, 0xDB, 0x00, 0x12, 0x8B, 0xDB, 0x00, 0x12, 0x89, 0xDB, + 0x00, 0x12, 0x88, 0xDB, 0x00, 0x11, 0x87, 0xDB, 0x00, 0x11, 0x87, 0xDB, 0x00, 0x10, 0x86, 0xDB, + 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x83, 0xD9, + 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x82, 0xD8, 0x00, 0x0D, 0x81, 0xD8, 0x00, 0x0D, 0x80, 0xD7, + 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, + 0x00, 0x27, 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE3, 0x00, 0x2D, 0xA5, 0xE3, 0x00, 0x29, 0xA3, 0xE3, + 0x00, 0x26, 0xA1, 0xE2, 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA0, 0xE2, + 0x00, 0x24, 0xA0, 0xE2, 0x00, 0x25, 0x9F, 0xE2, 0x00, 0x25, 0x9F, 0xE3, 0x00, 0x25, 0x9E, 0xE3, + 0x00, 0x26, 0x9E, 0xE3, 0x00, 0x26, 0x9E, 0xE1, 0x00, 0x27, 0x9D, 0xDE, 0x00, 0x24, 0x9D, 0xDF, + 0x00, 0x22, 0x9E, 0xE1, 0x00, 0x21, 0x9D, 0xE2, 0x00, 0x20, 0x9D, 0xE3, 0x00, 0x20, 0x9D, 0xE3, + 0x00, 0x20, 0x9C, 0xE3, 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x24, 0x99, 0xDC, 0x00, 0x21, 0x98, 0xDE, + 0x00, 0x1F, 0x98, 0xE0, 0x00, 0x1D, 0x99, 0xE3, 0x00, 0x1B, 0x9A, 0xE7, 0x00, 0x1B, 0x98, 0xE1, + 0x00, 0x1C, 0x96, 0xDC, 0x00, 0x1D, 0x94, 0xE2, 0x00, 0x1F, 0x92, 0xE9, 0x00, 0x1D, 0x94, 0xE5, + 0x00, 0x1A, 0x96, 0xE2, 0x00, 0x1B, 0x95, 0xDE, 0x00, 0x1D, 0x95, 0xDA, 0x00, 0x1C, 0x94, 0xDD, + 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xE0, 0x00, 0x19, 0x91, 0xDF, + 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8F, 0xDE, 0x00, 0x15, 0x8E, 0xDD, + 0x00, 0x14, 0x8E, 0xDD, 0x00, 0x14, 0x8D, 0xDC, 0x00, 0x13, 0x8C, 0xDC, 0x00, 0x12, 0x8B, 0xDC, + 0x00, 0x12, 0x8A, 0xDB, 0x00, 0x11, 0x89, 0xDC, 0x00, 0x11, 0x88, 0xDC, 0x00, 0x10, 0x87, 0xDC, + 0x00, 0x10, 0x86, 0xDC, 0x00, 0x0E, 0x84, 0xDB, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD9, + 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x82, 0xD9, 0x00, 0x0D, 0x80, 0xD8, + 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, + 0x00, 0x29, 0xA6, 0xE4, 0x00, 0x2D, 0xA7, 0xE3, 0x00, 0x30, 0xA8, 0xE3, 0x00, 0x2C, 0xA6, 0xE3, + 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x26, 0xA3, 0xE3, 0x00, 0x26, 0xA2, 0xE4, + 0x00, 0x26, 0xA2, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA0, 0xE5, + 0x00, 0x26, 0x9F, 0xE5, 0x00, 0x25, 0xA0, 0xE4, 0x00, 0x24, 0xA0, 0xE4, 0x00, 0x24, 0x9F, 0xE3, + 0x00, 0x24, 0x9E, 0xE3, 0x00, 0x23, 0x9E, 0xE4, 0x00, 0x21, 0x9F, 0xE6, 0x00, 0x21, 0x9F, 0xE5, + 0x00, 0x22, 0x9E, 0xE3, 0x00, 0x13, 0xA4, 0xE5, 0x00, 0x1A, 0x9F, 0xE7, 0x00, 0x15, 0x9F, 0xE7, + 0x00, 0x10, 0xA0, 0xE7, 0x00, 0x11, 0x9F, 0xEF, 0x00, 0x12, 0x9E, 0xF7, 0x00, 0x1A, 0x99, 0xEC, + 0x00, 0x17, 0x9A, 0xE1, 0x00, 0x14, 0x9C, 0xE3, 0x00, 0x1C, 0x98, 0xE5, 0x00, 0x1C, 0x97, 0xE6, + 0x00, 0x1B, 0x96, 0xE6, 0x00, 0x1B, 0x98, 0xDB, 0x00, 0x1C, 0x96, 0xDF, 0x00, 0x1C, 0x95, 0xE0, + 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x93, 0xE1, 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, + 0x00, 0x19, 0x92, 0xE0, 0x00, 0x18, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, + 0x00, 0x16, 0x8F, 0xDF, 0x00, 0x15, 0x8E, 0xDE, 0x00, 0x14, 0x8D, 0xDD, 0x00, 0x13, 0x8C, 0xDD, + 0x00, 0x12, 0x8B, 0xDC, 0x00, 0x12, 0x8A, 0xDC, 0x00, 0x11, 0x89, 0xDD, 0x00, 0x11, 0x87, 0xDD, + 0x00, 0x10, 0x86, 0xDE, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0E, 0x84, 0xDA, + 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0F, 0x84, 0xDA, 0x00, 0x0E, 0x83, 0xDA, 0x00, 0x0E, 0x81, 0xDA, + 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, + 0x00, 0x2C, 0xAA, 0xE7, 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x33, 0xAA, 0xE2, 0x00, 0x2E, 0xA8, 0xE3, + 0x00, 0x28, 0xA5, 0xE4, 0x00, 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA4, 0xE5, + 0x00, 0x27, 0xA4, 0xE5, 0x00, 0x27, 0xA3, 0xE6, 0x00, 0x27, 0xA2, 0xE6, 0x00, 0x27, 0xA1, 0xE7, + 0x00, 0x27, 0xA1, 0xE7, 0x00, 0x25, 0xA2, 0xE8, 0x00, 0x22, 0xA3, 0xE9, 0x00, 0x24, 0xA0, 0xE7, + 0x00, 0x27, 0x9E, 0xE6, 0x00, 0x25, 0x9F, 0xE7, 0x00, 0x22, 0xA0, 0xE8, 0x00, 0x18, 0xA3, 0xF4, + 0x00, 0x0D, 0xA7, 0xFF, 0x00, 0x1A, 0xA5, 0xDD, 0x00, 0x54, 0x8D, 0xBA, 0x00, 0x6E, 0x83, 0x9C, + 0x00, 0x88, 0x79, 0x7D, 0x00, 0x8C, 0x79, 0x7B, 0x00, 0x91, 0x79, 0x79, 0x00, 0x7E, 0x7A, 0x94, + 0x00, 0x55, 0x87, 0xAF, 0x00, 0x21, 0x9B, 0xD6, 0x00, 0x04, 0xA3, 0xFD, 0x00, 0x0F, 0x9D, 0xF4, + 0x00, 0x1B, 0x96, 0xEB, 0x00, 0x1B, 0x9A, 0xD9, 0x00, 0x1B, 0x98, 0xE4, 0x00, 0x1C, 0x96, 0xE3, + 0x00, 0x1C, 0x95, 0xE2, 0x00, 0x1C, 0x94, 0xE2, 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x94, 0xE1, + 0x00, 0x1B, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xE0, 0x00, 0x18, 0x90, 0xE1, + 0x00, 0x18, 0x8F, 0xE1, 0x00, 0x16, 0x8F, 0xE0, 0x00, 0x15, 0x8E, 0xDF, 0x00, 0x14, 0x8D, 0xDE, + 0x00, 0x12, 0x8C, 0xDC, 0x00, 0x12, 0x8B, 0xDD, 0x00, 0x12, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xDF, + 0x00, 0x11, 0x87, 0xE0, 0x00, 0x0F, 0x85, 0xDD, 0x00, 0x0D, 0x83, 0xDA, 0x00, 0x0E, 0x85, 0xDB, + 0x00, 0x10, 0x87, 0xDC, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0F, 0x84, 0xDB, 0x00, 0x0E, 0x82, 0xDB, + 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, + 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x35, 0xAF, 0xE8, 0x00, 0x33, 0xAB, 0xE3, 0x00, 0x2F, 0xA9, 0xE5, + 0x00, 0x2A, 0xA8, 0xE6, 0x00, 0x35, 0xAD, 0xE8, 0x00, 0x25, 0xA6, 0xE7, 0x00, 0x28, 0xA7, 0xE7, + 0x00, 0x2B, 0xA8, 0xE7, 0x00, 0x2D, 0xA6, 0xE5, 0x00, 0x2E, 0xA4, 0xE4, 0x00, 0x2B, 0xA4, 0xE6, + 0x00, 0x29, 0xA4, 0xE8, 0x00, 0x2A, 0xA4, 0xE5, 0x00, 0x2C, 0xA5, 0xE1, 0x00, 0x10, 0xA9, 0xEF, + 0x00, 0x12, 0xAD, 0xF6, 0x00, 0x22, 0xA2, 0xF8, 0x00, 0x60, 0x91, 0xA5, 0x00, 0xA5, 0x75, 0x5C, + 0x00, 0xEB, 0x59, 0x14, 0x00, 0xFF, 0x48, 0x0C, 0x00, 0xFA, 0x55, 0x03, 0x00, 0xFF, 0x59, 0x0F, + 0x00, 0xFF, 0x5D, 0x1A, 0x00, 0xFF, 0x60, 0x16, 0x00, 0xF9, 0x64, 0x11, 0x00, 0xFF, 0x54, 0x0F, + 0x00, 0xFF, 0x4A, 0x0C, 0x00, 0xFA, 0x49, 0x17, 0x00, 0xF5, 0x47, 0x23, 0x00, 0x8D, 0x72, 0x7E, + 0x00, 0x26, 0x9D, 0xD9, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0x1D, 0x96, 0xE1, 0x00, 0x17, 0x98, 0xE9, + 0x00, 0x1C, 0x97, 0xE3, 0x00, 0x1A, 0x97, 0xE3, 0x00, 0x18, 0x97, 0xE4, 0x00, 0x19, 0x96, 0xE3, + 0x00, 0x1B, 0x94, 0xE2, 0x00, 0x1A, 0x93, 0xE1, 0x00, 0x19, 0x93, 0xE0, 0x00, 0x18, 0x92, 0xE1, + 0x00, 0x17, 0x91, 0xE1, 0x00, 0x16, 0x90, 0xE0, 0x00, 0x15, 0x8F, 0xDF, 0x00, 0x14, 0x8E, 0xDE, + 0x00, 0x13, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDE, 0x00, 0x13, 0x8C, 0xDF, 0x00, 0x12, 0x8A, 0xDF, + 0x00, 0x10, 0x89, 0xE0, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x84, 0xDB, 0x00, 0x13, 0x8A, 0xDF, + 0x00, 0x0F, 0x87, 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0E, 0x84, 0xDB, + 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, + 0x00, 0x33, 0xAB, 0xE2, 0x00, 0x3B, 0xB3, 0xEB, 0x00, 0x33, 0xAC, 0xE5, 0x00, 0x30, 0xAB, 0xE6, + 0x00, 0x2D, 0xAA, 0xE7, 0x00, 0x43, 0xB6, 0xEA, 0x00, 0x23, 0xA7, 0xEA, 0x00, 0x29, 0xA9, 0xE9, + 0x00, 0x2F, 0xAB, 0xE9, 0x00, 0x32, 0xA9, 0xE5, 0x00, 0x35, 0xA7, 0xE2, 0x00, 0x30, 0xA7, 0xE6, + 0x00, 0x2A, 0xA8, 0xEA, 0x00, 0x25, 0xAA, 0xF0, 0x00, 0x1F, 0xAD, 0xF6, 0x00, 0x4D, 0x8A, 0xA7, + 0x00, 0xB7, 0x66, 0x4C, 0x00, 0xFF, 0x54, 0x0F, 0x00, 0xF7, 0x64, 0x0C, 0x00, 0xF8, 0x63, 0x13, + 0x00, 0xF9, 0x61, 0x1A, 0x00, 0xEF, 0x67, 0x1E, 0x00, 0xFC, 0x61, 0x22, 0x00, 0xFA, 0x68, 0x25, + 0x00, 0xF9, 0x6F, 0x28, 0x00, 0xF5, 0x70, 0x22, 0x00, 0xF2, 0x72, 0x1B, 0x00, 0xF2, 0x6B, 0x1F, + 0x00, 0xF1, 0x64, 0x24, 0x00, 0xFF, 0x55, 0x21, 0x00, 0xFF, 0x53, 0x1E, 0x00, 0xFF, 0x4B, 0x16, + 0x00, 0xFF, 0x43, 0x0E, 0x00, 0xB1, 0x61, 0x5A, 0x00, 0x1E, 0x95, 0xDF, 0x00, 0x12, 0x9A, 0xF0, + 0x00, 0x1B, 0x9A, 0xE5, 0x00, 0x18, 0x9A, 0xE5, 0x00, 0x14, 0x9A, 0xE6, 0x00, 0x17, 0x98, 0xE5, + 0x00, 0x1B, 0x95, 0xE4, 0x00, 0x1A, 0x95, 0xE2, 0x00, 0x19, 0x94, 0xE0, 0x00, 0x18, 0x93, 0xE1, + 0x00, 0x17, 0x92, 0xE2, 0x00, 0x16, 0x91, 0xE1, 0x00, 0x16, 0x90, 0xE0, 0x00, 0x15, 0x8F, 0xDF, + 0x00, 0x14, 0x8F, 0xDE, 0x00, 0x14, 0x8E, 0xDF, 0x00, 0x14, 0x8E, 0xE1, 0x00, 0x12, 0x8C, 0xE0, + 0x00, 0x10, 0x8A, 0xE0, 0x00, 0x10, 0x88, 0xDE, 0x00, 0x10, 0x86, 0xDC, 0x00, 0x17, 0x8E, 0xE3, + 0x00, 0x0D, 0x87, 0xDB, 0x00, 0x0E, 0x86, 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0E, 0x85, 0xDC, + 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, + 0x00, 0x36, 0xB0, 0xEA, 0x00, 0x36, 0xB3, 0xEF, 0x00, 0x2E, 0xAE, 0xED, 0x00, 0x2C, 0xAD, 0xEC, + 0x00, 0x2A, 0xAD, 0xEB, 0x00, 0x40, 0xB3, 0xEF, 0x00, 0x28, 0xAA, 0xE9, 0x00, 0x2B, 0xAB, 0xE7, + 0x00, 0x2F, 0xAB, 0xE6, 0x00, 0x30, 0xAA, 0xE6, 0x00, 0x31, 0xAA, 0xE5, 0x00, 0x2E, 0xA9, 0xE6, + 0x00, 0x2B, 0xA9, 0xE7, 0x00, 0x24, 0xA7, 0xEB, 0x00, 0x93, 0x6A, 0x5F, 0x00, 0xFF, 0x3D, 0x05, + 0x00, 0xF9, 0x56, 0x17, 0x00, 0xE2, 0x72, 0x12, 0x00, 0xF8, 0x72, 0x29, 0x00, 0xF7, 0x74, 0x27, + 0x00, 0xF6, 0x76, 0x25, 0x00, 0xF1, 0x76, 0x28, 0x00, 0xF8, 0x70, 0x2A, 0x00, 0xF8, 0x77, 0x2D, + 0x00, 0xF9, 0x7D, 0x30, 0x00, 0xF7, 0x7F, 0x2D, 0x00, 0xF5, 0x81, 0x2A, 0x00, 0xF5, 0x7B, 0x2B, + 0x00, 0xF5, 0x75, 0x2C, 0x00, 0xFD, 0x6A, 0x2B, 0x00, 0xFA, 0x64, 0x2A, 0x00, 0xF5, 0x5D, 0x2C, + 0x00, 0xF0, 0x57, 0x2E, 0x00, 0xFF, 0x48, 0x10, 0x00, 0xFF, 0x45, 0x0E, 0x00, 0x80, 0x76, 0x7F, + 0x00, 0x02, 0xA7, 0xF0, 0x00, 0x24, 0x95, 0xEA, 0x00, 0x19, 0x9A, 0xE3, 0x00, 0x1B, 0x98, 0xE4, + 0x00, 0x1D, 0x95, 0xE4, 0x00, 0x1B, 0x95, 0xE2, 0x00, 0x19, 0x96, 0xDF, 0x00, 0x18, 0x94, 0xE1, + 0x00, 0x17, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE2, 0x00, 0x16, 0x92, 0xE1, 0x00, 0x15, 0x91, 0xE0, + 0x00, 0x15, 0x90, 0xDF, 0x00, 0x15, 0x90, 0xE0, 0x00, 0x15, 0x91, 0xE2, 0x00, 0x12, 0x8E, 0xE1, + 0x00, 0x0F, 0x8C, 0xDF, 0x00, 0x12, 0x8B, 0xDF, 0x00, 0x14, 0x8A, 0xDF, 0x00, 0x15, 0x8D, 0xE2, + 0x00, 0x0E, 0x89, 0xDC, 0x00, 0x0E, 0x88, 0xDC, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x86, 0xDC, + 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, + 0x00, 0x5F, 0xC0, 0xE6, 0x00, 0x57, 0xBE, 0xE8, 0x00, 0x4F, 0xBB, 0xE9, 0x00, 0x4E, 0xBA, 0xE6, + 0x00, 0x4D, 0xB9, 0xE3, 0x00, 0x50, 0xB6, 0xED, 0x00, 0x2D, 0xAE, 0xE7, 0x00, 0x2E, 0xAC, 0xE6, + 0x00, 0x2E, 0xAB, 0xE4, 0x00, 0x2E, 0xAC, 0xE6, 0x00, 0x2E, 0xAD, 0xE8, 0x00, 0x2D, 0xAB, 0xE7, + 0x00, 0x2C, 0xAA, 0xE5, 0x00, 0x15, 0xB2, 0xFF, 0x00, 0xEB, 0x42, 0x10, 0x00, 0xF1, 0x4F, 0x16, + 0x00, 0xF7, 0x5C, 0x1C, 0x00, 0xF8, 0x71, 0x23, 0x00, 0xF9, 0x85, 0x29, 0x00, 0xF6, 0x88, 0x2D, + 0x00, 0xF3, 0x8B, 0x30, 0x00, 0xF4, 0x85, 0x31, 0x00, 0xF4, 0x7F, 0x33, 0x00, 0xF6, 0x85, 0x35, + 0x00, 0xF9, 0x8B, 0x37, 0x00, 0xF8, 0x8D, 0x38, 0x00, 0xF7, 0x90, 0x3A, 0x00, 0xF8, 0x8B, 0x37, + 0x00, 0xF8, 0x86, 0x35, 0x00, 0xF7, 0x7E, 0x35, 0x00, 0xF6, 0x75, 0x35, 0x00, 0xF7, 0x6D, 0x33, + 0x00, 0xF7, 0x64, 0x31, 0x00, 0xF8, 0x5E, 0x31, 0x00, 0xF8, 0x57, 0x30, 0x00, 0xFF, 0x51, 0x25, + 0x00, 0xF5, 0x51, 0x36, 0x00, 0x03, 0xA4, 0xFD, 0x00, 0x1E, 0x9A, 0xE1, 0x00, 0x1E, 0x98, 0xE3, + 0x00, 0x1E, 0x96, 0xE5, 0x00, 0x1C, 0x96, 0xE2, 0x00, 0x19, 0x97, 0xDF, 0x00, 0x18, 0x96, 0xE1, + 0x00, 0x17, 0x95, 0xE3, 0x00, 0x16, 0x94, 0xE2, 0x00, 0x16, 0x93, 0xE1, 0x00, 0x16, 0x92, 0xE0, + 0x00, 0x15, 0x91, 0xE0, 0x00, 0x16, 0x92, 0xE2, 0x00, 0x16, 0x93, 0xE4, 0x00, 0x12, 0x90, 0xE1, + 0x00, 0x0F, 0x8E, 0xDF, 0x00, 0x14, 0x8D, 0xE1, 0x00, 0x18, 0x8D, 0xE3, 0x00, 0x13, 0x8C, 0xE0, + 0x00, 0x0F, 0x8B, 0xDE, 0x00, 0x0F, 0x89, 0xDD, 0x00, 0x0E, 0x88, 0xDD, 0x00, 0x0E, 0x87, 0xDD, + 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, + 0x00, 0x3C, 0xB6, 0xED, 0x00, 0x35, 0xB3, 0xEE, 0x00, 0x2F, 0xB1, 0xEF, 0x00, 0x2F, 0xB1, 0xED, + 0x00, 0x2F, 0xB0, 0xEC, 0x00, 0x38, 0xB0, 0xEE, 0x00, 0x2D, 0xAE, 0xE9, 0x00, 0x2F, 0xAD, 0xE7, + 0x00, 0x30, 0xAD, 0xE6, 0x00, 0x2F, 0xAE, 0xE8, 0x00, 0x2D, 0xB0, 0xEA, 0x00, 0x30, 0xAD, 0xEC, + 0x00, 0x28, 0xAF, 0xEE, 0x00, 0x2F, 0xA9, 0xC8, 0x00, 0xFF, 0x3D, 0x04, 0x00, 0xFA, 0x50, 0x19, + 0x00, 0xF8, 0x5F, 0x21, 0x00, 0xF7, 0x73, 0x28, 0x00, 0xF7, 0x87, 0x2F, 0x00, 0xFA, 0x95, 0x37, + 0x00, 0xF5, 0x9B, 0x37, 0x00, 0xF5, 0x96, 0x3A, 0x00, 0xF5, 0x92, 0x3D, 0x00, 0xF7, 0x94, 0x3F, + 0x00, 0xF9, 0x96, 0x41, 0x00, 0xF9, 0x99, 0x43, 0x00, 0xF9, 0x9D, 0x46, 0x00, 0xF8, 0x98, 0x44, + 0x00, 0xF7, 0x94, 0x43, 0x00, 0xF8, 0x8D, 0x42, 0x00, 0xF9, 0x86, 0x41, 0x00, 0xF9, 0x7D, 0x3F, + 0x00, 0xF9, 0x73, 0x3C, 0x00, 0xF7, 0x70, 0x38, 0x00, 0xF4, 0x6C, 0x35, 0x00, 0xFF, 0x60, 0x21, + 0x00, 0xBE, 0x6C, 0x62, 0x00, 0x12, 0x9D, 0xEF, 0x00, 0x21, 0x9A, 0xE8, 0x00, 0x1C, 0x99, 0xED, + 0x00, 0x17, 0x9B, 0xE3, 0x00, 0x13, 0x98, 0xF0, 0x00, 0x1B, 0x94, 0xE0, 0x00, 0x1A, 0x96, 0xE1, + 0x00, 0x19, 0x97, 0xE3, 0x00, 0x18, 0x96, 0xE4, 0x00, 0x17, 0x95, 0xE5, 0x00, 0x18, 0x94, 0xE3, + 0x00, 0x19, 0x93, 0xE2, 0x00, 0x16, 0x91, 0xE0, 0x00, 0x14, 0x90, 0xDE, 0x00, 0x15, 0x91, 0xE1, + 0x00, 0x16, 0x92, 0xE5, 0x00, 0x14, 0x90, 0xE3, 0x00, 0x11, 0x8D, 0xE2, 0x00, 0x10, 0x8D, 0xE2, + 0x00, 0x0F, 0x8D, 0xE3, 0x00, 0x10, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xD8, 0x00, 0x0E, 0x87, 0xE1, + 0x00, 0x0B, 0x89, 0xDC, 0x00, 0x10, 0x85, 0xE0, 0x00, 0x09, 0x87, 0xE4, 0x00, 0x09, 0x87, 0xE4, + 0x00, 0x3F, 0xB5, 0xE8, 0x00, 0x3B, 0xB3, 0xE9, 0x00, 0x36, 0xB2, 0xEA, 0x00, 0x37, 0xB1, 0xE9, + 0x00, 0x37, 0xB1, 0xE8, 0x00, 0x32, 0xAF, 0xE9, 0x00, 0x2D, 0xAE, 0xEA, 0x00, 0x30, 0xAE, 0xE9, + 0x00, 0x32, 0xAF, 0xE8, 0x00, 0x30, 0xB1, 0xEA, 0x00, 0x2D, 0xB4, 0xEC, 0x00, 0x34, 0xAE, 0xF1, + 0x00, 0x24, 0xB4, 0xF6, 0x00, 0x8D, 0x7E, 0x86, 0x00, 0xF6, 0x4E, 0x00, 0x00, 0xEC, 0x5C, 0x1D, + 0x00, 0xF9, 0x63, 0x25, 0x00, 0xF7, 0x76, 0x2D, 0x00, 0xF4, 0x89, 0x35, 0x00, 0xFD, 0xA2, 0x41, + 0x00, 0xF6, 0xAB, 0x3E, 0x00, 0xF6, 0xA8, 0x43, 0x00, 0xF7, 0xA4, 0x47, 0x00, 0xF8, 0xA3, 0x4A, + 0x00, 0xFA, 0xA1, 0x4C, 0x00, 0xFA, 0xA5, 0x4E, 0x00, 0xFB, 0xAA, 0x51, 0x00, 0xF9, 0xA6, 0x52, + 0x00, 0xF7, 0xA2, 0x52, 0x00, 0xFA, 0x9C, 0x4F, 0x00, 0xFD, 0x97, 0x4D, 0x00, 0xFC, 0x8D, 0x4A, + 0x00, 0xFB, 0x83, 0x47, 0x00, 0xF6, 0x82, 0x40, 0x00, 0xF1, 0x82, 0x39, 0x00, 0xF4, 0x72, 0x2B, + 0x00, 0x71, 0x8C, 0xAB, 0x00, 0x16, 0x99, 0xF0, 0x00, 0x25, 0x99, 0xEF, 0x00, 0x25, 0x97, 0xE8, + 0x00, 0x26, 0x9A, 0xC5, 0x00, 0x16, 0x96, 0xF0, 0x00, 0x1C, 0x91, 0xE2, 0x00, 0x1B, 0x96, 0xE2, + 0x00, 0x1B, 0x9A, 0xE2, 0x00, 0x19, 0x99, 0xE5, 0x00, 0x18, 0x98, 0xE8, 0x00, 0x1A, 0x96, 0xE6, + 0x00, 0x1C, 0x95, 0xE4, 0x00, 0x17, 0x91, 0xDF, 0x00, 0x13, 0x8D, 0xD9, 0x00, 0x18, 0x92, 0xE2, + 0x00, 0x1E, 0x97, 0xEA, 0x00, 0x14, 0x92, 0xE5, 0x00, 0x0B, 0x8D, 0xE1, 0x00, 0x0D, 0x8E, 0xE5, + 0x00, 0x10, 0x8F, 0xE9, 0x00, 0x12, 0x8B, 0xDE, 0x00, 0x14, 0x88, 0xD4, 0x00, 0x0E, 0x87, 0xE6, + 0x00, 0x08, 0x8C, 0xDC, 0x00, 0x11, 0x84, 0xE4, 0x00, 0x03, 0x88, 0xEC, 0x00, 0x03, 0x88, 0xEC, + 0x00, 0x3D, 0xB6, 0xEA, 0x00, 0x3A, 0xB5, 0xEA, 0x00, 0x38, 0xB4, 0xEB, 0x00, 0x37, 0xB3, 0xEB, + 0x00, 0x37, 0xB3, 0xEA, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x32, 0xB1, 0xEB, 0x00, 0x33, 0xB1, 0xEB, + 0x00, 0x34, 0xB0, 0xEA, 0x00, 0x32, 0xB3, 0xE9, 0x00, 0x2F, 0xB5, 0xE8, 0x00, 0x34, 0xB0, 0xF0, + 0x00, 0x22, 0xB6, 0xF8, 0x00, 0xC5, 0x60, 0x44, 0x00, 0xF9, 0x53, 0x0B, 0x00, 0xF2, 0x63, 0x21, + 0x00, 0xF6, 0x6F, 0x29, 0x00, 0xF6, 0x7D, 0x2F, 0x00, 0xF7, 0x8A, 0x35, 0x00, 0xFA, 0xA1, 0x41, + 0x00, 0xF6, 0xAF, 0x45, 0x00, 0xFA, 0xB4, 0x4F, 0x00, 0xF6, 0xB0, 0x50, 0x00, 0xF8, 0xAE, 0x53, + 0x00, 0xFA, 0xAC, 0x56, 0x00, 0xFC, 0xB2, 0x59, 0x00, 0xFD, 0xB7, 0x5D, 0x00, 0xFA, 0xB3, 0x5F, + 0x00, 0xF6, 0xAF, 0x61, 0x00, 0xF9, 0xAC, 0x5D, 0x00, 0xFD, 0xA9, 0x59, 0x00, 0xFB, 0x9F, 0x55, + 0x00, 0xF8, 0x94, 0x50, 0x00, 0xF7, 0x91, 0x4A, 0x00, 0xF5, 0x8D, 0x44, 0x00, 0xFF, 0x7D, 0x22, + 0x00, 0x1A, 0xA5, 0xEF, 0x00, 0x12, 0x9E, 0xF3, 0x00, 0x28, 0x96, 0xF1, 0x00, 0x22, 0x9F, 0xB0, + 0x00, 0x6C, 0x96, 0x00, 0x00, 0x3B, 0x9B, 0x82, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9B, 0xF4, + 0x00, 0x14, 0x9C, 0xE2, 0x00, 0x15, 0x99, 0xE4, 0x00, 0x17, 0x96, 0xE6, 0x00, 0x18, 0x95, 0xE5, + 0x00, 0x1A, 0x93, 0xE4, 0x00, 0x18, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE0, 0x00, 0x1C, 0x98, 0xE6, + 0x00, 0x19, 0x95, 0xE4, 0x00, 0x16, 0x92, 0xE4, 0x00, 0x12, 0x8F, 0xE5, 0x00, 0x12, 0x8C, 0xEB, + 0x00, 0x12, 0x8B, 0xE3, 0x00, 0x00, 0x87, 0xE3, 0x00, 0x00, 0x7B, 0xF4, 0x00, 0x1A, 0x86, 0xD3, + 0x00, 0x0C, 0x8C, 0xF0, 0x00, 0x00, 0x8E, 0xE2, 0x00, 0x0D, 0x84, 0xEA, 0x00, 0x07, 0x86, 0xF1, + 0x00, 0x3B, 0xB7, 0xEC, 0x00, 0x3A, 0xB6, 0xEC, 0x00, 0x39, 0xB6, 0xEC, 0x00, 0x38, 0xB5, 0xEC, + 0x00, 0x37, 0xB5, 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x36, 0xB3, 0xEC, + 0x00, 0x36, 0xB2, 0xEC, 0x00, 0x33, 0xB4, 0xE8, 0x00, 0x31, 0xB5, 0xE4, 0x00, 0x34, 0xB1, 0xEF, + 0x00, 0x21, 0xB8, 0xF9, 0x00, 0xFD, 0x41, 0x02, 0x00, 0xFC, 0x58, 0x1E, 0x00, 0xF8, 0x6A, 0x25, + 0x00, 0xF3, 0x7C, 0x2C, 0x00, 0xF6, 0x84, 0x31, 0x00, 0xF9, 0x8B, 0x35, 0x00, 0xF7, 0xA0, 0x41, + 0x00, 0xF6, 0xB4, 0x4C, 0x00, 0xFE, 0xC0, 0x5B, 0x00, 0xF6, 0xBC, 0x59, 0x00, 0xF8, 0xBA, 0x5D, + 0x00, 0xFA, 0xB7, 0x60, 0x00, 0xFD, 0xBE, 0x64, 0x00, 0xFF, 0xC4, 0x69, 0x00, 0xFA, 0xC0, 0x6C, + 0x00, 0xF5, 0xBD, 0x6F, 0x00, 0xF9, 0xBC, 0x6A, 0x00, 0xFD, 0xBB, 0x65, 0x00, 0xFA, 0xB1, 0x60, + 0x00, 0xF6, 0xA6, 0x5A, 0x00, 0xF8, 0x9F, 0x54, 0x00, 0xFA, 0x98, 0x4F, 0x00, 0xDF, 0x94, 0x6E, + 0x00, 0x07, 0xA6, 0xFB, 0x00, 0x24, 0x9C, 0xDA, 0x00, 0x14, 0x9F, 0xF2, 0x00, 0x4A, 0xA1, 0x71, + 0x00, 0x68, 0xA9, 0x0D, 0x00, 0x61, 0xA3, 0x06, 0x00, 0x5A, 0x98, 0x1B, 0x00, 0x33, 0x96, 0x9B, + 0x00, 0x0D, 0x99, 0xFE, 0x00, 0x11, 0x96, 0xF1, 0x00, 0x16, 0x94, 0xE4, 0x00, 0x17, 0x93, 0xE4, + 0x00, 0x18, 0x91, 0xE4, 0x00, 0x19, 0x94, 0xE5, 0x00, 0x1A, 0x98, 0xE6, 0x00, 0x1F, 0x9D, 0xEA, + 0x00, 0x15, 0x93, 0xDE, 0x00, 0x17, 0x92, 0xE3, 0x00, 0x1A, 0x91, 0xE8, 0x00, 0x1F, 0x94, 0xEB, + 0x00, 0x25, 0x9D, 0xD1, 0x00, 0xD0, 0xF7, 0x72, 0x00, 0xC1, 0xF2, 0x95, 0x00, 0x00, 0x83, 0xF0, + 0x00, 0x17, 0x81, 0xA0, 0x00, 0x3B, 0x7E, 0x2E, 0x00, 0x16, 0x87, 0xCB, 0x00, 0x0B, 0x8A, 0xDA, + 0x00, 0x3D, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xED, 0x00, 0x3B, 0xB7, 0xED, 0x00, 0x3A, 0xB7, 0xED, + 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, + 0x00, 0x39, 0xB6, 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x34, 0xAB, 0xF2, + 0x00, 0x6D, 0x95, 0xB3, 0x00, 0xFF, 0x46, 0x00, 0x00, 0xF7, 0x64, 0x20, 0x00, 0xF6, 0x73, 0x28, + 0x00, 0xF5, 0x81, 0x30, 0x00, 0xF6, 0x8B, 0x37, 0x00, 0xF8, 0x94, 0x3D, 0x00, 0xF8, 0xA6, 0x48, + 0x00, 0xF7, 0xB7, 0x53, 0x00, 0xFB, 0xC2, 0x60, 0x00, 0xF7, 0xC4, 0x65, 0x00, 0xF9, 0xC3, 0x69, + 0x00, 0xFA, 0xC2, 0x6D, 0x00, 0xFA, 0xC6, 0x72, 0x00, 0xFA, 0xCB, 0x77, 0x00, 0xFB, 0xCB, 0x7A, + 0x00, 0xFC, 0xCB, 0x7D, 0x00, 0xFA, 0xC8, 0x7A, 0x00, 0xF8, 0xC5, 0x77, 0x00, 0xF9, 0xBC, 0x72, + 0x00, 0xFA, 0xB4, 0x6C, 0x00, 0xF6, 0xB0, 0x68, 0x00, 0xFD, 0xAA, 0x56, 0x00, 0x93, 0xA0, 0xA5, + 0x00, 0x13, 0xA1, 0xF3, 0x00, 0x21, 0x9C, 0xEF, 0x00, 0x19, 0x9D, 0xFF, 0x00, 0x71, 0xC1, 0x23, + 0x00, 0x79, 0xB7, 0x25, 0x00, 0x71, 0xB2, 0x1D, 0x00, 0x6A, 0xAA, 0x23, 0x00, 0x66, 0xA0, 0x25, + 0x00, 0x63, 0x9A, 0x18, 0x00, 0x41, 0x9C, 0x72, 0x00, 0x1E, 0x9F, 0xCB, 0x00, 0x18, 0x93, 0xFF, + 0x00, 0x13, 0x98, 0xF1, 0x00, 0x18, 0x9C, 0xF4, 0x00, 0x1D, 0xA0, 0xF7, 0x00, 0x1B, 0x9C, 0xFF, + 0x00, 0x10, 0x93, 0xF6, 0x00, 0x11, 0x93, 0xF1, 0x00, 0x13, 0x93, 0xEC, 0x00, 0x00, 0x83, 0xFF, + 0x00, 0x72, 0xCB, 0xA0, 0x00, 0xCB, 0xF9, 0x81, 0x00, 0xD0, 0xFF, 0xAC, 0x00, 0x78, 0xA0, 0x45, + 0x00, 0x33, 0x77, 0x00, 0x00, 0x3A, 0x7C, 0x02, 0x00, 0x0D, 0x8C, 0xE2, 0x00, 0x0D, 0x8E, 0xDB, + 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xB9, 0xED, 0x00, 0x3C, 0xB9, 0xED, 0x00, 0x3B, 0xB8, 0xED, + 0x00, 0x3A, 0xB8, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3C, 0xB8, 0xEE, + 0x00, 0x3C, 0xB9, 0xEE, 0x00, 0x3A, 0xB4, 0xF0, 0x00, 0x37, 0xAE, 0xF2, 0x00, 0x32, 0xB3, 0xFE, + 0x00, 0xB3, 0x8E, 0x7C, 0x00, 0xFF, 0x58, 0x06, 0x00, 0xF3, 0x71, 0x22, 0x00, 0xF4, 0x7C, 0x2B, + 0x00, 0xF6, 0x86, 0x34, 0x00, 0xF7, 0x92, 0x3D, 0x00, 0xF8, 0x9D, 0x45, 0x00, 0xF8, 0xAC, 0x4F, + 0x00, 0xF8, 0xBB, 0x5A, 0x00, 0xF9, 0xC4, 0x65, 0x00, 0xF9, 0xCC, 0x70, 0x00, 0xFA, 0xCC, 0x75, + 0x00, 0xFA, 0xCC, 0x7A, 0x00, 0xF7, 0xCF, 0x80, 0x00, 0xF4, 0xD2, 0x85, 0x00, 0xFB, 0xD5, 0x89, + 0x00, 0xFF, 0xD9, 0x8C, 0x00, 0xFA, 0xD3, 0x8B, 0x00, 0xF2, 0xCE, 0x89, 0x00, 0xF8, 0xC8, 0x84, + 0x00, 0xFE, 0xC1, 0x7F, 0x00, 0xF4, 0xC1, 0x7C, 0x00, 0xFF, 0xBC, 0x5E, 0x00, 0x47, 0xAB, 0xDB, + 0x00, 0x1E, 0x9C, 0xEA, 0x00, 0x1D, 0xA2, 0xE8, 0x00, 0x1D, 0xA7, 0xE5, 0x00, 0x98, 0xD3, 0x1B, + 0x00, 0x8A, 0xCB, 0x21, 0x00, 0x82, 0xC3, 0x26, 0x00, 0x7A, 0xBB, 0x2C, 0x00, 0x75, 0xB4, 0x28, + 0x00, 0x70, 0xAD, 0x25, 0x00, 0x6D, 0xAB, 0x16, 0x00, 0x6A, 0xA9, 0x08, 0x00, 0x5E, 0xA9, 0x11, + 0x00, 0x51, 0x9E, 0x53, 0x00, 0x47, 0x9B, 0x6D, 0x00, 0x3E, 0x97, 0x87, 0x00, 0x3B, 0x95, 0x91, + 0x00, 0x38, 0x98, 0x80, 0x00, 0x44, 0x96, 0x63, 0x00, 0x4F, 0x94, 0x45, 0x00, 0x82, 0xB4, 0x3C, + 0x00, 0x4F, 0x84, 0x1B, 0x00, 0xAF, 0xE0, 0x87, 0x00, 0x9E, 0xCC, 0x82, 0x00, 0x35, 0x7F, 0x11, + 0x00, 0x42, 0x82, 0x1B, 0x00, 0x32, 0x84, 0x3B, 0x00, 0x04, 0x92, 0xF9, 0x00, 0x0F, 0x92, 0xDC, + 0x00, 0x40, 0xBC, 0xEE, 0x00, 0x3F, 0xBB, 0xED, 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xBA, 0xED, + 0x00, 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, + 0x00, 0x3C, 0xB8, 0xEB, 0x00, 0x3F, 0xB3, 0xF0, 0x00, 0x42, 0xAF, 0xF4, 0x00, 0x0D, 0xBA, 0xE8, + 0x00, 0xFF, 0xB8, 0x96, 0x00, 0xF6, 0x81, 0x4C, 0x00, 0xF5, 0x75, 0x22, 0x00, 0xF6, 0x80, 0x2D, + 0x00, 0xF7, 0x8B, 0x38, 0x00, 0xF7, 0x99, 0x42, 0x00, 0xF7, 0xA6, 0x4D, 0x00, 0xF8, 0xB2, 0x56, + 0x00, 0xF9, 0xBD, 0x5F, 0x00, 0xF9, 0xC8, 0x6D, 0x00, 0xFA, 0xD4, 0x7A, 0x00, 0xFA, 0xD5, 0x81, + 0x00, 0xF9, 0xD7, 0x88, 0x00, 0xFA, 0xD8, 0x8D, 0x00, 0xFB, 0xDA, 0x92, 0x00, 0xF9, 0xE4, 0xA1, + 0x00, 0xFE, 0xD6, 0x91, 0x00, 0xFA, 0xDE, 0x9F, 0x00, 0xF8, 0xDB, 0x97, 0x00, 0xF9, 0xD5, 0x93, + 0x00, 0xFB, 0xCF, 0x8F, 0x00, 0xFF, 0xD1, 0x85, 0x00, 0xFF, 0xC6, 0x78, 0x00, 0x00, 0x9A, 0xFC, + 0x00, 0x26, 0xA8, 0xF1, 0x00, 0x1F, 0xA4, 0xF8, 0x00, 0x53, 0xBD, 0xA5, 0x00, 0xA4, 0xDA, 0x30, + 0x00, 0x9D, 0xD5, 0x37, 0x00, 0x97, 0xD0, 0x3A, 0x00, 0x90, 0xCA, 0x3D, 0x00, 0x8A, 0xC5, 0x39, + 0x00, 0x84, 0xBF, 0x35, 0x00, 0x7C, 0xBD, 0x30, 0x00, 0x74, 0xBC, 0x2C, 0x00, 0x75, 0xB8, 0x1B, + 0x00, 0x77, 0xAF, 0x27, 0x00, 0x72, 0xAB, 0x25, 0x00, 0x6D, 0xA7, 0x23, 0x00, 0x6A, 0xA3, 0x28, + 0x00, 0x68, 0xA2, 0x1E, 0x00, 0x57, 0x95, 0x19, 0x00, 0x77, 0xB7, 0x45, 0x00, 0xBA, 0xF0, 0x81, + 0x00, 0x72, 0xAC, 0x4C, 0x00, 0x41, 0x7B, 0x14, 0x00, 0x4F, 0x8A, 0x1D, 0x00, 0x42, 0x86, 0x1C, + 0x00, 0x49, 0x86, 0x14, 0x00, 0x16, 0x86, 0x8B, 0x00, 0x0A, 0x90, 0xF5, 0x00, 0x15, 0x8D, 0xE7, + 0x00, 0x41, 0xBE, 0xEF, 0x00, 0x40, 0xBD, 0xEE, 0x00, 0x3F, 0xBC, 0xED, 0x00, 0x3E, 0xBB, 0xED, + 0x00, 0x3D, 0xBA, 0xEC, 0x00, 0x3D, 0xBA, 0xEB, 0x00, 0x3C, 0xB9, 0xEA, 0x00, 0x3C, 0xB8, 0xE9, + 0x00, 0x3B, 0xB7, 0xE8, 0x00, 0x39, 0xB9, 0xF0, 0x00, 0x37, 0xBA, 0xF7, 0x00, 0x50, 0xB5, 0xDC, + 0x00, 0xFF, 0x96, 0x44, 0x00, 0xFE, 0xC4, 0x9C, 0x00, 0xF7, 0x79, 0x23, 0x00, 0xF8, 0x85, 0x30, + 0x00, 0xF8, 0x91, 0x3C, 0x00, 0xF8, 0xA0, 0x48, 0x00, 0xF7, 0xAF, 0x55, 0x00, 0xF8, 0xB7, 0x5D, + 0x00, 0xF9, 0xBF, 0x65, 0x00, 0xFA, 0xCD, 0x75, 0x00, 0xFB, 0xDB, 0x85, 0x00, 0xFA, 0xDE, 0x8D, + 0x00, 0xF9, 0xE1, 0x95, 0x00, 0xFD, 0xE1, 0x9A, 0x00, 0xFF, 0xE2, 0xA0, 0x00, 0xFA, 0xE8, 0xA3, + 0x00, 0xFF, 0xBD, 0x6B, 0x00, 0xFC, 0xDE, 0x9E, 0x00, 0xFF, 0xE8, 0xA6, 0x00, 0xFB, 0xE3, 0xA3, + 0x00, 0xF7, 0xDE, 0xA0, 0x00, 0xFD, 0xD7, 0x99, 0x00, 0xB5, 0xBD, 0xAB, 0x00, 0x11, 0x9F, 0xF0, + 0x00, 0x1D, 0xA3, 0xE8, 0x00, 0x19, 0x9E, 0xFF, 0x00, 0x89, 0xD4, 0x65, 0x00, 0xB0, 0xE1, 0x45, + 0x00, 0xB0, 0xDF, 0x4D, 0x00, 0xAB, 0xDC, 0x4D, 0x00, 0xA7, 0xD8, 0x4D, 0x00, 0xA0, 0xD5, 0x49, + 0x00, 0x99, 0xD2, 0x44, 0x00, 0x97, 0xCD, 0x3C, 0x00, 0x94, 0xC9, 0x34, 0x00, 0x8D, 0xC4, 0x34, + 0x00, 0x86, 0xC0, 0x33, 0x00, 0x7A, 0xBC, 0x32, 0x00, 0x6E, 0xB7, 0x31, 0x00, 0x6D, 0xB2, 0x2F, + 0x00, 0x6B, 0xAE, 0x2E, 0x00, 0x7D, 0xB9, 0x3F, 0x00, 0x6F, 0xA5, 0x30, 0x00, 0x7B, 0xB5, 0x4E, + 0x00, 0x56, 0x9A, 0x20, 0x00, 0x5B, 0x9F, 0x2A, 0x00, 0x50, 0x93, 0x24, 0x00, 0x80, 0xB9, 0x65, + 0x00, 0x5F, 0x99, 0x1C, 0x00, 0x03, 0x8F, 0xE2, 0x00, 0x10, 0x8E, 0xF2, 0x00, 0x1B, 0x88, 0xF2, + 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x42, 0xBE, 0xEE, 0x00, 0x41, 0xBD, 0xEE, 0x00, 0x40, 0xBD, 0xEE, + 0x00, 0x3F, 0xBC, 0xED, 0x00, 0x3F, 0xBB, 0xEC, 0x00, 0x3F, 0xB9, 0xEB, 0x00, 0x3D, 0xB9, 0xEC, + 0x00, 0x3C, 0xB8, 0xEE, 0x00, 0x37, 0xB8, 0xEB, 0x00, 0x26, 0xBC, 0xF6, 0x00, 0x94, 0x9B, 0x8F, + 0x00, 0xFB, 0x96, 0x37, 0x00, 0xF9, 0xBB, 0x7C, 0x00, 0xF8, 0xB5, 0x85, 0x00, 0xF6, 0x99, 0x49, + 0x00, 0xF5, 0x9B, 0x42, 0x00, 0xF6, 0xA6, 0x4E, 0x00, 0xF7, 0xB2, 0x59, 0x00, 0xF8, 0xBC, 0x65, + 0x00, 0xF9, 0xC6, 0x72, 0x00, 0xF9, 0xD3, 0x7F, 0x00, 0xFA, 0xE0, 0x8D, 0x00, 0xF9, 0xE5, 0x97, + 0x00, 0xF8, 0xEB, 0xA1, 0x00, 0xFE, 0xEA, 0xA6, 0x00, 0xFF, 0xEA, 0xAA, 0x00, 0xFC, 0xEE, 0xA8, + 0x00, 0xF9, 0xBA, 0x62, 0x00, 0xFA, 0xDC, 0x98, 0x00, 0xFE, 0xF3, 0xB9, 0x00, 0xFB, 0xEC, 0xB2, + 0x00, 0xF7, 0xE5, 0xAB, 0x00, 0xFE, 0xE4, 0xA2, 0x00, 0x64, 0xB0, 0xD1, 0x00, 0x19, 0x9F, 0xF0, + 0x00, 0x26, 0x9E, 0xE8, 0x00, 0x03, 0x98, 0xF2, 0x00, 0xE3, 0xEF, 0x50, 0x00, 0xD5, 0xEE, 0x57, + 0x00, 0xBF, 0xE3, 0x64, 0x00, 0xBC, 0xE1, 0x64, 0x00, 0xB9, 0xDF, 0x64, 0x00, 0xB4, 0xDD, 0x5D, + 0x00, 0xB0, 0xDB, 0x56, 0x00, 0xA9, 0xD7, 0x4E, 0x00, 0xA2, 0xD3, 0x46, 0x00, 0x9B, 0xD0, 0x42, + 0x00, 0x93, 0xCD, 0x3F, 0x00, 0x8B, 0xC9, 0x3D, 0x00, 0x84, 0xC5, 0x3C, 0x00, 0x80, 0xC1, 0x39, + 0x00, 0x7D, 0xBC, 0x36, 0x00, 0x8A, 0xC7, 0x45, 0x00, 0x88, 0xC1, 0x44, 0x00, 0x62, 0xA0, 0x2B, + 0x00, 0x64, 0xA9, 0x2B, 0x00, 0x5E, 0xA3, 0x2D, 0x00, 0x4F, 0x95, 0x26, 0x00, 0xA4, 0xCE, 0x98, + 0x00, 0xD8, 0xEA, 0xDC, 0x00, 0xB9, 0xDC, 0xFF, 0x00, 0x38, 0x9D, 0xF3, 0x00, 0x00, 0x8F, 0xD3, + 0x00, 0x45, 0xC1, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x41, 0xBE, 0xEF, + 0x00, 0x40, 0xBD, 0xEF, 0x00, 0x41, 0xBC, 0xED, 0x00, 0x42, 0xBA, 0xEB, 0x00, 0x3F, 0xBA, 0xEF, + 0x00, 0x3C, 0xB9, 0xF3, 0x00, 0x34, 0xB8, 0xE6, 0x00, 0x16, 0xBD, 0xF6, 0x00, 0xD8, 0x7F, 0x4F, + 0x00, 0xF7, 0x90, 0x46, 0x00, 0xF7, 0xA5, 0x54, 0x00, 0xFF, 0xDA, 0xBA, 0x00, 0xF8, 0xA1, 0x4D, + 0x00, 0xF3, 0xA5, 0x49, 0x00, 0xF4, 0xAD, 0x53, 0x00, 0xF6, 0xB5, 0x5D, 0x00, 0xF8, 0xC0, 0x6E, + 0x00, 0xFA, 0xCC, 0x7F, 0x00, 0xF9, 0xD8, 0x8A, 0x00, 0xF8, 0xE4, 0x95, 0x00, 0xF8, 0xEC, 0xA1, + 0x00, 0xF7, 0xF4, 0xAE, 0x00, 0xFE, 0xF3, 0xB2, 0x00, 0xFF, 0xF1, 0xB5, 0x00, 0xFE, 0xF4, 0xAD, + 0x00, 0xF3, 0xB6, 0x59, 0x00, 0xF8, 0xDA, 0x92, 0x00, 0xFE, 0xFF, 0xCC, 0x00, 0xFA, 0xF6, 0xC1, + 0x00, 0xF7, 0xED, 0xB6, 0x00, 0xFF, 0xF1, 0xAB, 0x00, 0x13, 0xA4, 0xF7, 0x00, 0x15, 0xA4, 0xEF, + 0x00, 0x18, 0xA5, 0xE8, 0x00, 0x56, 0xB4, 0xCD, 0x00, 0xF0, 0xF2, 0x71, 0x00, 0xD4, 0xEF, 0x84, + 0x00, 0xCF, 0xE6, 0x7B, 0x00, 0xCD, 0xE6, 0x7B, 0x00, 0xCB, 0xE6, 0x7C, 0x00, 0xC9, 0xE5, 0x71, + 0x00, 0xC6, 0xE5, 0x67, 0x00, 0xBC, 0xE1, 0x5F, 0x00, 0xB1, 0xDD, 0x57, 0x00, 0xA8, 0xDB, 0x51, + 0x00, 0xA0, 0xDA, 0x4B, 0x00, 0x9C, 0xD7, 0x48, 0x00, 0x99, 0xD4, 0x46, 0x00, 0x94, 0xCF, 0x42, + 0x00, 0x8F, 0xCA, 0x3E, 0x00, 0x88, 0xC4, 0x3B, 0x00, 0x81, 0xBE, 0x39, 0x00, 0x72, 0xB3, 0x30, + 0x00, 0x62, 0xA8, 0x27, 0x00, 0x58, 0xA0, 0x27, 0x00, 0x4E, 0x97, 0x27, 0x00, 0x9F, 0xC4, 0x79, + 0x00, 0xFF, 0xFB, 0xF7, 0x00, 0x7F, 0xD2, 0xF4, 0x00, 0x03, 0x8E, 0xE1, 0x00, 0x0E, 0x89, 0xE1, + 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, 0xC2, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, 0x43, 0xBF, 0xEF, + 0x00, 0x41, 0xBE, 0xF0, 0x00, 0x42, 0xBD, 0xEE, 0x00, 0x43, 0xBC, 0xEC, 0x00, 0x40, 0xBC, 0xEF, + 0x00, 0x3E, 0xBB, 0xF1, 0x00, 0x2F, 0xC0, 0xFD, 0x00, 0x35, 0xBD, 0xFB, 0x00, 0xF5, 0x4B, 0x00, + 0x00, 0xFF, 0x8A, 0x52, 0x00, 0xFA, 0xA5, 0x5D, 0x00, 0xFC, 0xC4, 0x8D, 0x00, 0xFB, 0xC1, 0x85, + 0x00, 0xF5, 0xAD, 0x50, 0x00, 0xF7, 0xB6, 0x5E, 0x00, 0xF9, 0xBE, 0x6B, 0x00, 0xFA, 0xC9, 0x78, + 0x00, 0xFB, 0xD4, 0x85, 0x00, 0xFE, 0xDE, 0x97, 0x00, 0xFF, 0xE8, 0xAA, 0x00, 0xFD, 0xEE, 0xAD, + 0x00, 0xF9, 0xF4, 0xB1, 0x00, 0xFC, 0xF5, 0xB9, 0x00, 0xFE, 0xF6, 0xC2, 0x00, 0xFB, 0xF0, 0xB2, + 0x00, 0xF6, 0xCB, 0x6E, 0x00, 0xFB, 0xDE, 0x91, 0x00, 0xFC, 0xFC, 0xCA, 0x00, 0xFF, 0xFB, 0xD0, + 0x00, 0xFF, 0xFC, 0xC8, 0x00, 0xCA, 0xE3, 0xC7, 0x00, 0x15, 0xA1, 0xF2, 0x00, 0x1D, 0xA3, 0xEE, + 0x00, 0x11, 0xA1, 0xF1, 0x00, 0x9E, 0xD4, 0xB9, 0x00, 0xEA, 0xF1, 0x8B, 0x00, 0xDC, 0xEF, 0x95, + 0x00, 0xD9, 0xEB, 0x90, 0x00, 0xD9, 0xEB, 0x92, 0x00, 0xD8, 0xEC, 0x94, 0x00, 0xD6, 0xEB, 0x8B, + 0x00, 0xD3, 0xEA, 0x82, 0x00, 0xC9, 0xE6, 0x78, 0x00, 0xBF, 0xE3, 0x6F, 0x00, 0xB8, 0xE2, 0x68, + 0x00, 0xB1, 0xE2, 0x61, 0x00, 0xAE, 0xE0, 0x5D, 0x00, 0xAC, 0xDE, 0x5A, 0x00, 0xA2, 0xD9, 0x51, + 0x00, 0x98, 0xD3, 0x48, 0x00, 0x8E, 0xCB, 0x41, 0x00, 0x83, 0xC3, 0x39, 0x00, 0x74, 0xB7, 0x32, + 0x00, 0x66, 0xAC, 0x2C, 0x00, 0x5D, 0xA2, 0x29, 0x00, 0x54, 0x99, 0x26, 0x00, 0x4A, 0x93, 0x21, + 0x00, 0x23, 0x99, 0xB9, 0x00, 0x15, 0x93, 0xFE, 0x00, 0x09, 0x92, 0xD8, 0x00, 0x0F, 0x8F, 0xD8, + 0x00, 0x49, 0xC4, 0xEF, 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, 0xC2, 0xF0, 0x00, 0x44, 0xC1, 0xF0, + 0x00, 0x42, 0xC0, 0xF1, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x43, 0xBE, 0xED, 0x00, 0x42, 0xBE, 0xEE, + 0x00, 0x41, 0xBD, 0xF0, 0x00, 0x37, 0xBA, 0xF0, 0x00, 0x71, 0xA1, 0xB7, 0x00, 0xFE, 0x5D, 0x1D, + 0x00, 0xF8, 0x79, 0x31, 0x00, 0xF5, 0xA1, 0x51, 0x00, 0xF8, 0xAD, 0x60, 0x00, 0xFE, 0xE0, 0xBC, + 0x00, 0xF7, 0xB6, 0x57, 0x00, 0xF9, 0xBF, 0x68, 0x00, 0xFC, 0xC8, 0x79, 0x00, 0xFC, 0xD2, 0x82, + 0x00, 0xFC, 0xDB, 0x8B, 0x00, 0xFB, 0xDE, 0x8F, 0x00, 0xFB, 0xE0, 0x92, 0x00, 0xFA, 0xEA, 0xA3, + 0x00, 0xFA, 0xF4, 0xB4, 0x00, 0xF9, 0xF8, 0xC1, 0x00, 0xF8, 0xFB, 0xCE, 0x00, 0xF9, 0xEB, 0xB6, + 0x00, 0xFA, 0xE1, 0x83, 0x00, 0xFD, 0xE2, 0x8F, 0x00, 0xFB, 0xF9, 0xC7, 0x00, 0xFC, 0xF8, 0xD7, + 0x00, 0xFE, 0xFC, 0xCA, 0x00, 0x8B, 0xCD, 0xDC, 0x00, 0x18, 0x9F, 0xED, 0x00, 0x24, 0xA3, 0xED, + 0x00, 0x0A, 0x9D, 0xFA, 0x00, 0xE7, 0xF5, 0xA5, 0x00, 0xE4, 0xF1, 0xA5, 0x00, 0xE4, 0xF0, 0xA5, + 0x00, 0xE3, 0xEF, 0xA6, 0x00, 0xE4, 0xF0, 0xA9, 0x00, 0xE6, 0xF2, 0xAD, 0x00, 0xE3, 0xF0, 0xA5, + 0x00, 0xE0, 0xEF, 0x9E, 0x00, 0xD6, 0xEC, 0x92, 0x00, 0xCD, 0xE9, 0x87, 0x00, 0xC7, 0xE9, 0x7F, + 0x00, 0xC2, 0xEA, 0x78, 0x00, 0xC1, 0xEA, 0x72, 0x00, 0xC0, 0xE9, 0x6D, 0x00, 0xB1, 0xE3, 0x60, + 0x00, 0xA2, 0xDD, 0x53, 0x00, 0x94, 0xD2, 0x46, 0x00, 0x86, 0xC8, 0x3A, 0x00, 0x77, 0xBC, 0x35, + 0x00, 0x69, 0xB0, 0x30, 0x00, 0x62, 0xA5, 0x2B, 0x00, 0x5B, 0x9B, 0x26, 0x00, 0x57, 0x91, 0x09, + 0x00, 0x09, 0x94, 0xFB, 0x00, 0x0C, 0x95, 0xE5, 0x00, 0x0F, 0x91, 0xEB, 0x00, 0x0F, 0x91, 0xEB, + 0x00, 0x4A, 0xC5, 0xEF, 0x00, 0x48, 0xC4, 0xF0, 0x00, 0x47, 0xC3, 0xF0, 0x00, 0x45, 0xC2, 0xF1, + 0x00, 0x43, 0xC1, 0xF1, 0x00, 0x41, 0xC1, 0xF1, 0x00, 0x3F, 0xC1, 0xF1, 0x00, 0x3F, 0xBE, 0xF0, + 0x00, 0x3F, 0xBC, 0xEF, 0x00, 0x32, 0xC2, 0xFD, 0x00, 0xBD, 0x7F, 0x6E, 0x00, 0xFE, 0x65, 0x26, + 0x00, 0xF5, 0x7B, 0x34, 0x00, 0xF5, 0x9A, 0x4C, 0x00, 0xF8, 0xAB, 0x5C, 0x00, 0xFA, 0xD0, 0x9F, + 0x00, 0xF7, 0xC6, 0x83, 0x00, 0xFD, 0xC1, 0x6A, 0x00, 0xFD, 0xD1, 0x7E, 0x00, 0xFB, 0xDB, 0x87, + 0x00, 0xF9, 0xE5, 0x8F, 0x00, 0xF8, 0xEC, 0x9A, 0x00, 0xF7, 0xF4, 0xA5, 0x00, 0xFB, 0xEA, 0x99, + 0x00, 0xFF, 0xDF, 0x8E, 0x00, 0xFB, 0xE2, 0x9F, 0x00, 0xF7, 0xE6, 0xB1, 0x00, 0xFB, 0xED, 0xCC, + 0x00, 0xFF, 0xFA, 0xCA, 0x00, 0xFF, 0xF2, 0xC6, 0x00, 0xFC, 0xF0, 0xC2, 0x00, 0xFE, 0xF5, 0xD2, + 0x00, 0xFF, 0xFC, 0xD3, 0x00, 0x4B, 0xB5, 0xE6, 0x00, 0x20, 0xA4, 0xED, 0x00, 0x1B, 0xA2, 0xED, + 0x00, 0x3D, 0xAA, 0xE2, 0x00, 0xEE, 0xF6, 0xAB, 0x00, 0xE5, 0xF1, 0xB1, 0x00, 0xE7, 0xF2, 0xB4, + 0x00, 0xE9, 0xF3, 0xB8, 0x00, 0xE9, 0xF3, 0xBA, 0x00, 0xEA, 0xF4, 0xBC, 0x00, 0xE8, 0xF3, 0xB5, + 0x00, 0xE5, 0xF2, 0xAF, 0x00, 0xE0, 0xF0, 0xA8, 0x00, 0xDA, 0xED, 0xA1, 0x00, 0xD5, 0xEF, 0x99, + 0x00, 0xD0, 0xF0, 0x91, 0x00, 0xC8, 0xED, 0x82, 0x00, 0xC0, 0xEA, 0x72, 0x00, 0xB0, 0xE3, 0x61, + 0x00, 0xA0, 0xDC, 0x50, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x88, 0xCA, 0x3E, 0x00, 0x7B, 0xBF, 0x38, + 0x00, 0x6E, 0xB4, 0x32, 0x00, 0x65, 0xA8, 0x2E, 0x00, 0x5D, 0xA0, 0x1B, 0x00, 0x3C, 0x94, 0x48, + 0x00, 0x0A, 0x93, 0xF6, 0x00, 0x0D, 0x94, 0xEC, 0x00, 0x10, 0x92, 0xF0, 0x00, 0x10, 0x92, 0xF0, + 0x00, 0x4B, 0xC5, 0xF0, 0x00, 0x49, 0xC4, 0xF0, 0x00, 0x48, 0xC4, 0xF1, 0x00, 0x46, 0xC3, 0xF1, + 0x00, 0x44, 0xC2, 0xF2, 0x00, 0x3F, 0xC3, 0xF4, 0x00, 0x3A, 0xC4, 0xF6, 0x00, 0x3C, 0xBF, 0xF3, + 0x00, 0x3D, 0xBA, 0xEF, 0x00, 0x2C, 0xCA, 0xFF, 0x00, 0xFF, 0x5D, 0x24, 0x00, 0xFE, 0x6D, 0x2E, + 0x00, 0xF2, 0x7D, 0x38, 0x00, 0xF5, 0x93, 0x48, 0x00, 0xF7, 0xA9, 0x57, 0x00, 0xF7, 0xC0, 0x82, + 0x00, 0xF7, 0xD7, 0xAE, 0x00, 0xFF, 0xC2, 0x6C, 0x00, 0xFE, 0xDA, 0x84, 0x00, 0xFA, 0xE4, 0x8B, + 0x00, 0xF6, 0xEE, 0x93, 0x00, 0xF8, 0xED, 0x9D, 0x00, 0xF9, 0xEC, 0xA7, 0x00, 0xF8, 0xF1, 0xB3, + 0x00, 0xF7, 0xF6, 0xC0, 0x00, 0xFB, 0xF6, 0xC8, 0x00, 0xFF, 0xF6, 0xD0, 0x00, 0xFE, 0xF2, 0xD3, + 0x00, 0xFB, 0xF3, 0xB9, 0x00, 0xFF, 0xFD, 0xE7, 0x00, 0xF6, 0xFD, 0xE9, 0x00, 0xFC, 0xFC, 0xE2, + 0x00, 0xFF, 0xFC, 0xDC, 0x00, 0x0B, 0x9D, 0xF1, 0x00, 0x29, 0xAA, 0xEC, 0x00, 0x1B, 0xAA, 0xF5, + 0x00, 0x7F, 0xC7, 0xD9, 0x00, 0xFD, 0xFE, 0xBA, 0x00, 0xE7, 0xF2, 0xBD, 0x00, 0xEB, 0xF4, 0xC3, + 0x00, 0xEE, 0xF6, 0xCA, 0x00, 0xEF, 0xF6, 0xCA, 0x00, 0xEF, 0xF7, 0xCB, 0x00, 0xED, 0xF6, 0xC5, + 0x00, 0xEB, 0xF5, 0xBF, 0x00, 0xE9, 0xF3, 0xBE, 0x00, 0xE8, 0xF2, 0xBC, 0x00, 0xE3, 0xF4, 0xB3, + 0x00, 0xDF, 0xF6, 0xAB, 0x00, 0xD0, 0xF1, 0x91, 0x00, 0xC1, 0xEC, 0x77, 0x00, 0xAF, 0xE3, 0x62, + 0x00, 0x9E, 0xDB, 0x4E, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x8A, 0xCC, 0x41, 0x00, 0x7F, 0xC2, 0x3B, + 0x00, 0x73, 0xB8, 0x35, 0x00, 0x69, 0xAC, 0x30, 0x00, 0x60, 0xA5, 0x10, 0x00, 0x22, 0x96, 0x86, + 0x00, 0x0A, 0x91, 0xF0, 0x00, 0x0E, 0x92, 0xF2, 0x00, 0x11, 0x94, 0xF4, 0x00, 0x11, 0x94, 0xF4, + 0x00, 0x4C, 0xC5, 0xF1, 0x00, 0x4A, 0xC5, 0xF1, 0x00, 0x49, 0xC4, 0xF1, 0x00, 0x47, 0xC4, 0xF2, + 0x00, 0x45, 0xC3, 0xF2, 0x00, 0x43, 0xC3, 0xF1, 0x00, 0x40, 0xC4, 0xF0, 0x00, 0x42, 0xBF, 0xF3, + 0x00, 0x39, 0xC0, 0xF5, 0x00, 0x5E, 0xAC, 0xCA, 0x00, 0xFA, 0x58, 0x1E, 0x00, 0xF3, 0x6E, 0x30, + 0x00, 0xF7, 0x80, 0x35, 0x00, 0xFB, 0x92, 0x3E, 0x00, 0xFB, 0xAF, 0x5D, 0x00, 0xFF, 0xC2, 0x72, + 0x00, 0xFD, 0xE1, 0xBA, 0x00, 0xFF, 0xCD, 0x74, 0x00, 0xFF, 0xD3, 0x71, 0x00, 0xFF, 0xE5, 0x83, + 0x00, 0xFF, 0xF7, 0x95, 0x00, 0xFE, 0xF4, 0xA1, 0x00, 0xFD, 0xF0, 0xAD, 0x00, 0xFF, 0xF8, 0xC1, + 0x00, 0xFB, 0xF7, 0xCD, 0x00, 0xFE, 0xF8, 0xD1, 0x00, 0xFF, 0xF9, 0xD6, 0x00, 0xFE, 0xF6, 0xE0, + 0x00, 0xFB, 0xF5, 0xDD, 0x00, 0xFF, 0xFB, 0xED, 0x00, 0xFB, 0xFB, 0xE8, 0x00, 0xFF, 0xFC, 0xDF, + 0x00, 0xB2, 0xE0, 0xE8, 0x00, 0x18, 0xA3, 0xEF, 0x00, 0x25, 0xAA, 0xEC, 0x00, 0x15, 0xA8, 0xF5, + 0x00, 0xC2, 0xE3, 0xD8, 0x00, 0xF9, 0xF9, 0xC5, 0x00, 0xEE, 0xF5, 0xCA, 0x00, 0xEF, 0xF6, 0xCE, + 0x00, 0xF0, 0xF7, 0xD2, 0x00, 0xF1, 0xF8, 0xD1, 0x00, 0xF1, 0xF9, 0xD0, 0x00, 0xF1, 0xF9, 0xCD, + 0x00, 0xF1, 0xF9, 0xC9, 0x00, 0xF2, 0xFB, 0xC9, 0x00, 0xF4, 0xFC, 0xCA, 0x00, 0xE6, 0xF8, 0xB6, + 0x00, 0xD9, 0xF3, 0xA2, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0xBC, 0xEB, 0x71, 0x00, 0xB0, 0xE6, 0x61, + 0x00, 0xA4, 0xE1, 0x50, 0x00, 0x99, 0xD9, 0x48, 0x00, 0x8F, 0xD2, 0x40, 0x00, 0x83, 0xC7, 0x3A, + 0x00, 0x77, 0xBC, 0x34, 0x00, 0x6A, 0xB2, 0x1C, 0x00, 0x5D, 0xA9, 0x04, 0x00, 0x13, 0x8D, 0xEA, + 0x00, 0x11, 0x93, 0xEF, 0x00, 0x0F, 0x92, 0xEF, 0x00, 0x0E, 0x92, 0xF0, 0x00, 0x0E, 0x92, 0xF0, + 0x00, 0x4D, 0xC6, 0xF2, 0x00, 0x4B, 0xC5, 0xF2, 0x00, 0x4A, 0xC5, 0xF2, 0x00, 0x48, 0xC5, 0xF2, + 0x00, 0x46, 0xC4, 0xF2, 0x00, 0x46, 0xC4, 0xEE, 0x00, 0x46, 0xC4, 0xEA, 0x00, 0x48, 0xBF, 0xF2, + 0x00, 0x34, 0xC6, 0xFB, 0x00, 0x98, 0x95, 0x91, 0x00, 0xFC, 0x64, 0x27, 0x00, 0xF1, 0x76, 0x3B, + 0x00, 0xFC, 0x83, 0x32, 0x00, 0xFF, 0x91, 0x34, 0x00, 0xFF, 0xB4, 0x63, 0x00, 0xFF, 0xBD, 0x5A, + 0x00, 0xF3, 0xDC, 0xB5, 0x00, 0xCB, 0xD0, 0x97, 0x00, 0xB4, 0xCE, 0xA4, 0x00, 0xAF, 0xD2, 0xB0, + 0x00, 0xAB, 0xD6, 0xBC, 0x00, 0xC2, 0xE1, 0xBE, 0x00, 0xDA, 0xEB, 0xC0, 0x00, 0xF5, 0xFC, 0xC7, + 0x00, 0xFF, 0xFE, 0xBD, 0x00, 0xFF, 0xFD, 0xCC, 0x00, 0xFF, 0xFC, 0xDB, 0x00, 0xFE, 0xFC, 0xE0, + 0x00, 0xFB, 0xFC, 0xE4, 0x00, 0xFD, 0xFB, 0xE6, 0x00, 0xFF, 0xFA, 0xE7, 0x00, 0xFF, 0xFB, 0xDD, + 0x00, 0x61, 0xC4, 0xF4, 0x00, 0x26, 0xAA, 0xEE, 0x00, 0x22, 0xAA, 0xEB, 0x00, 0x10, 0xA7, 0xF6, + 0x00, 0xFF, 0xFF, 0xD6, 0x00, 0xF5, 0xF4, 0xCF, 0x00, 0xF5, 0xF9, 0xD8, 0x00, 0xF4, 0xF9, 0xD9, + 0x00, 0xF2, 0xF8, 0xD9, 0x00, 0xF3, 0xF9, 0xD8, 0x00, 0xF4, 0xFB, 0xD6, 0x00, 0xF5, 0xFC, 0xD5, + 0x00, 0xF6, 0xFD, 0xD3, 0x00, 0xF3, 0xFA, 0xCD, 0x00, 0xEF, 0xF6, 0xC7, 0x00, 0xE1, 0xF3, 0xB0, + 0x00, 0xD3, 0xF0, 0x98, 0x00, 0xC5, 0xED, 0x82, 0x00, 0xB7, 0xEB, 0x6B, 0x00, 0xB0, 0xE9, 0x5F, + 0x00, 0xAA, 0xE7, 0x53, 0x00, 0x9F, 0xDF, 0x49, 0x00, 0x93, 0xD7, 0x3E, 0x00, 0x87, 0xCB, 0x39, + 0x00, 0x7B, 0xBF, 0x34, 0x00, 0x6B, 0xB4, 0x25, 0x00, 0x5B, 0xA2, 0x32, 0x00, 0x04, 0x94, 0xF9, + 0x00, 0x17, 0x94, 0xED, 0x00, 0x11, 0x92, 0xEC, 0x00, 0x0B, 0x91, 0xEB, 0x00, 0x0B, 0x91, 0xEB, + 0x00, 0x4E, 0xC7, 0xF2, 0x00, 0x4D, 0xC7, 0xF3, 0x00, 0x4C, 0xC7, 0xF3, 0x00, 0x4A, 0xC7, 0xF3, + 0x00, 0x49, 0xC7, 0xF4, 0x00, 0x47, 0xC4, 0xF1, 0x00, 0x45, 0xC1, 0xEE, 0x00, 0x42, 0xC2, 0xF7, + 0x00, 0x33, 0xC8, 0xFF, 0x00, 0xDE, 0x67, 0x46, 0x00, 0xFF, 0x63, 0x2A, 0x00, 0xFF, 0x6F, 0x1B, + 0x00, 0xE0, 0x8B, 0x52, 0x00, 0xA3, 0xA0, 0x84, 0x00, 0x62, 0xC1, 0xCC, 0x00, 0x26, 0xC0, 0xFF, + 0x00, 0x29, 0xB7, 0xFF, 0x00, 0x24, 0xB5, 0xF1, 0x00, 0x27, 0xB7, 0xF9, 0x00, 0x25, 0xB5, 0xF6, + 0x00, 0x23, 0xB2, 0xF2, 0x00, 0x24, 0xB5, 0xFA, 0x00, 0x24, 0xB7, 0xFF, 0x00, 0x17, 0x9D, 0xDE, + 0x00, 0x42, 0xBA, 0xF4, 0x00, 0x9E, 0xDA, 0xE7, 0x00, 0xF9, 0xF9, 0xDC, 0x00, 0xF3, 0xFB, 0xE6, + 0x00, 0xFF, 0xFF, 0xE9, 0x00, 0xFD, 0xFF, 0xE6, 0x00, 0xFA, 0xFB, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1D, 0xA7, 0xEF, 0x00, 0x1C, 0xA7, 0xF0, 0x00, 0x1A, 0xA7, 0xF1, 0x00, 0x5A, 0xC4, 0xF0, + 0x00, 0xFF, 0xFF, 0xE7, 0x00, 0xFA, 0xF9, 0xE1, 0x00, 0xFA, 0xFB, 0xE2, 0x00, 0xF8, 0xFB, 0xDF, + 0x00, 0xF5, 0xFA, 0xDC, 0x00, 0xF5, 0xFB, 0xDB, 0x00, 0xF5, 0xFB, 0xD9, 0x00, 0xF5, 0xFC, 0xD6, + 0x00, 0xF5, 0xFD, 0xD3, 0x00, 0xF0, 0xF8, 0xC8, 0x00, 0xEA, 0xF4, 0xBD, 0x00, 0xDF, 0xF1, 0xA8, + 0x00, 0xD4, 0xEF, 0x93, 0x00, 0xC6, 0xF3, 0x7A, 0x00, 0xB9, 0xF8, 0x61, 0x00, 0xB0, 0xEF, 0x57, + 0x00, 0xA6, 0xE6, 0x4D, 0x00, 0xA3, 0xE2, 0x48, 0x00, 0x98, 0xD6, 0x3A, 0x00, 0x89, 0xCD, 0x37, + 0x00, 0x7B, 0xC3, 0x35, 0x00, 0x6F, 0xB7, 0x20, 0x00, 0x3A, 0x9C, 0x84, 0x00, 0x0C, 0x93, 0xF4, + 0x00, 0x13, 0x94, 0xEC, 0x00, 0x11, 0x93, 0xE9, 0x00, 0x0F, 0x92, 0xE6, 0x00, 0x0F, 0x92, 0xE6, + 0x00, 0x50, 0xC9, 0xF3, 0x00, 0x4F, 0xC9, 0xF4, 0x00, 0x4E, 0xC9, 0xF4, 0x00, 0x4D, 0xCA, 0xF5, + 0x00, 0x4B, 0xCA, 0xF5, 0x00, 0x48, 0xC5, 0xF4, 0x00, 0x44, 0xBF, 0xF3, 0x00, 0x47, 0xC1, 0xEE, + 0x00, 0x4A, 0xC4, 0xEA, 0x00, 0xFF, 0x52, 0x1F, 0x00, 0xA6, 0x9A, 0x92, 0x00, 0x51, 0xB6, 0xE6, + 0x00, 0x28, 0xC7, 0xFF, 0x00, 0x2C, 0xC4, 0xF8, 0x00, 0x30, 0xC0, 0xF0, 0x00, 0x3F, 0xBA, 0xEF, + 0x00, 0x37, 0xBF, 0xEF, 0x00, 0x38, 0xB9, 0xEF, 0x00, 0x3A, 0xB2, 0xF0, 0x00, 0x38, 0xB5, 0xF3, + 0x00, 0x35, 0xB7, 0xF6, 0x00, 0x32, 0xB9, 0xEF, 0x00, 0x2F, 0xBB, 0xE8, 0x00, 0x2F, 0xB8, 0xEA, + 0x00, 0x2F, 0xB4, 0xED, 0x00, 0x1F, 0xAC, 0xF3, 0x00, 0x10, 0xA3, 0xF9, 0x00, 0x6F, 0xC9, 0xF2, + 0x00, 0xF5, 0xF9, 0xDF, 0x00, 0xF5, 0xFB, 0xDE, 0x00, 0xF5, 0xFD, 0xDD, 0x00, 0xD7, 0xEA, 0xE3, + 0x00, 0x10, 0xA5, 0xEE, 0x00, 0x2D, 0xB2, 0xF4, 0x00, 0x13, 0xA5, 0xF7, 0x00, 0xA5, 0xE1, 0xEB, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0xF2, 0x00, 0xFF, 0xFD, 0xEC, 0x00, 0xFC, 0xFC, 0xE6, + 0x00, 0xF7, 0xFC, 0xDF, 0x00, 0xF7, 0xFC, 0xDE, 0x00, 0xF6, 0xFC, 0xDC, 0x00, 0xF5, 0xFC, 0xD7, + 0x00, 0xF4, 0xFC, 0xD3, 0x00, 0xED, 0xF7, 0xC3, 0x00, 0xE5, 0xF1, 0xB4, 0x00, 0xE4, 0xF5, 0xB7, + 0x00, 0xE4, 0xF9, 0xBB, 0x00, 0xEB, 0xFE, 0xD2, 0x00, 0xF2, 0xFF, 0xE9, 0x00, 0xED, 0xFE, 0xDB, + 0x00, 0xE8, 0xF9, 0xCD, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0x9C, 0xD6, 0x35, 0x00, 0x83, 0xC6, 0x2D, + 0x00, 0x6B, 0xB7, 0x25, 0x00, 0x6C, 0xB3, 0x14, 0x00, 0x1A, 0x95, 0xD6, 0x00, 0x15, 0x91, 0xEE, + 0x00, 0x0F, 0x93, 0xEB, 0x00, 0x10, 0x93, 0xE6, 0x00, 0x12, 0x93, 0xE0, 0x00, 0x12, 0x93, 0xE0, + 0x00, 0x52, 0xCA, 0xF4, 0x00, 0x50, 0xCA, 0xF4, 0x00, 0x4E, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF3, + 0x00, 0x4A, 0xC9, 0xF3, 0x00, 0x48, 0xC8, 0xF4, 0x00, 0x46, 0xC6, 0xF6, 0x00, 0x3F, 0xBF, 0xEC, + 0x00, 0x41, 0xBF, 0xEB, 0x00, 0x40, 0xD4, 0xF8, 0x00, 0x33, 0xC9, 0xFC, 0x00, 0x2F, 0xC9, 0xFF, + 0x00, 0x42, 0xC2, 0xEC, 0x00, 0x40, 0xC3, 0xF4, 0x00, 0x3E, 0xC3, 0xFC, 0x00, 0x34, 0xBB, 0xF3, + 0x00, 0x33, 0xBB, 0xF2, 0x00, 0x49, 0xBD, 0xF6, 0x00, 0x38, 0xB7, 0xF8, 0x00, 0x36, 0xB7, 0xF5, + 0x00, 0x34, 0xB7, 0xF2, 0x00, 0x2E, 0xB5, 0xF3, 0x00, 0x27, 0xB3, 0xF5, 0x00, 0x2F, 0xBA, 0xF7, + 0x00, 0x2F, 0xBA, 0xF2, 0x00, 0x30, 0xB5, 0xF1, 0x00, 0x31, 0xB0, 0xF0, 0x00, 0x1E, 0xAC, 0xF6, + 0x00, 0x0C, 0xAA, 0xED, 0x00, 0x7E, 0xD2, 0xEC, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0x80, 0xD9, 0xD2, + 0x00, 0x2E, 0xA9, 0xF8, 0x00, 0x1C, 0xAF, 0xEB, 0x00, 0x02, 0xAA, 0xE5, 0x00, 0xFF, 0xF8, 0xFF, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0xF9, 0x00, 0xFF, 0xFD, 0xF4, 0x00, 0xFD, 0xFD, 0xEB, + 0x00, 0xFA, 0xFE, 0xE2, 0x00, 0xF9, 0xFD, 0xE1, 0x00, 0xF7, 0xFC, 0xE0, 0x00, 0xF5, 0xFC, 0xD7, + 0x00, 0xF3, 0xFD, 0xCF, 0x00, 0xF4, 0xFB, 0xE2, 0x00, 0xF6, 0xFD, 0xE7, 0x00, 0xF3, 0xFD, 0xE8, + 0x00, 0xF0, 0xFD, 0xE9, 0x00, 0xEB, 0xFD, 0xD3, 0x00, 0xE5, 0xFC, 0xBD, 0x00, 0xDF, 0xF7, 0xBA, + 0x00, 0xDA, 0xF2, 0xB6, 0x00, 0xE9, 0xFB, 0xD2, 0x00, 0xF1, 0xFC, 0xE6, 0x00, 0xB6, 0xDE, 0x8D, + 0x00, 0x84, 0xC7, 0x3C, 0x00, 0x99, 0xB7, 0x47, 0x00, 0x13, 0xA1, 0xF8, 0x00, 0x04, 0x94, 0xF2, + 0x00, 0x10, 0x94, 0xEE, 0x00, 0x10, 0x94, 0xEC, 0x00, 0x10, 0x95, 0xE9, 0x00, 0x10, 0x95, 0xE9, + 0x00, 0x53, 0xCC, 0xF5, 0x00, 0x50, 0xCB, 0xF3, 0x00, 0x4E, 0xCA, 0xF2, 0x00, 0x4B, 0xC9, 0xF1, + 0x00, 0x48, 0xC7, 0xF0, 0x00, 0x48, 0xCB, 0xF4, 0x00, 0x47, 0xCE, 0xF9, 0x00, 0x40, 0xC4, 0xF2, + 0x00, 0x48, 0xCA, 0xFC, 0x00, 0x3F, 0xC2, 0xF0, 0x00, 0x46, 0xC9, 0xF5, 0x00, 0x46, 0xC7, 0xF4, + 0x00, 0x45, 0xC4, 0xF3, 0x00, 0x38, 0xB4, 0xED, 0x00, 0x2C, 0xA5, 0xE8, 0x00, 0x2E, 0xB0, 0xE1, + 0x00, 0x56, 0xC0, 0xEA, 0x00, 0x6C, 0xC8, 0xE9, 0x00, 0x36, 0xC1, 0xE4, 0x00, 0x50, 0xC9, 0xEB, + 0x00, 0x6A, 0xD1, 0xF1, 0x00, 0x73, 0xD0, 0xF5, 0x00, 0x7D, 0xCF, 0xF9, 0x00, 0x56, 0xC7, 0xF8, + 0x00, 0x1F, 0xAF, 0xE7, 0x00, 0x25, 0xB1, 0xED, 0x00, 0x2B, 0xB2, 0xF4, 0x00, 0x3E, 0xB5, 0xF9, + 0x00, 0x2A, 0xB3, 0xEE, 0x00, 0x1B, 0xAF, 0xF5, 0x00, 0x32, 0xB5, 0xF0, 0x00, 0x3F, 0xB1, 0xF9, + 0x00, 0x26, 0xA9, 0xF2, 0x00, 0x1F, 0xAE, 0xEA, 0x00, 0x3F, 0xB8, 0xF3, 0x00, 0xFB, 0xFF, 0xF3, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFB, 0x00, 0xFE, 0xFE, 0xF0, + 0x00, 0xFD, 0xFF, 0xE5, 0x00, 0xFB, 0xFE, 0xE4, 0x00, 0xF8, 0xFC, 0xE3, 0x00, 0xF5, 0xFD, 0xD7, + 0x00, 0xF2, 0xFD, 0xCB, 0x00, 0xF4, 0xFB, 0xEB, 0x00, 0xF6, 0xFE, 0xEE, 0x00, 0xF1, 0xFD, 0xDE, + 0x00, 0xED, 0xFB, 0xCE, 0x00, 0xE2, 0xF9, 0xB0, 0x00, 0xD8, 0xF6, 0x91, 0x00, 0xD2, 0xF3, 0x8A, + 0x00, 0xCC, 0xF1, 0x83, 0x00, 0xCE, 0xEE, 0x96, 0x00, 0xD0, 0xEA, 0xA9, 0x00, 0xDA, 0xEA, 0xC0, + 0x00, 0xF4, 0xFA, 0xE8, 0x00, 0x7E, 0xC6, 0x78, 0x00, 0x59, 0xC0, 0xFF, 0x00, 0x19, 0xA0, 0xEA, + 0x00, 0x10, 0x95, 0xF2, 0x00, 0x0F, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, + 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF2, + 0x00, 0x4A, 0xC8, 0xF2, 0x00, 0x48, 0xC6, 0xF1, 0x00, 0x47, 0xC4, 0xF1, 0x00, 0x48, 0xD2, 0xF3, + 0x00, 0x46, 0xC7, 0xF3, 0x00, 0x4C, 0xC5, 0xFB, 0x00, 0x2B, 0x9A, 0xDC, 0x00, 0x17, 0x83, 0xCD, + 0x00, 0x03, 0x6B, 0xBE, 0x00, 0x00, 0x7F, 0xC5, 0x00, 0x0E, 0x96, 0xD4, 0x00, 0x2E, 0xAC, 0xDB, + 0x00, 0x60, 0xC5, 0xEA, 0x00, 0x75, 0xCC, 0xEF, 0x00, 0x51, 0xCA, 0xEA, 0x00, 0x69, 0xD2, 0xEF, + 0x00, 0x81, 0xDA, 0xF5, 0x00, 0x99, 0xE4, 0xF7, 0x00, 0xB2, 0xEE, 0xF9, 0x00, 0xCE, 0xFA, 0xFF, + 0x00, 0xE2, 0xFE, 0xFF, 0x00, 0x99, 0xE1, 0xFF, 0x00, 0x48, 0xBC, 0xF7, 0x00, 0x10, 0xB4, 0xDC, + 0x00, 0x31, 0xAD, 0xF0, 0x00, 0x27, 0xAC, 0xFB, 0x00, 0x30, 0xB2, 0xF3, 0x00, 0x34, 0xB1, 0xF5, + 0x00, 0x24, 0xAD, 0xF0, 0x00, 0x26, 0xAC, 0xF6, 0x00, 0x97, 0xD1, 0xFC, 0x00, 0xFF, 0xFD, 0xF7, + 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFB, 0x00, 0xFE, 0xFF, 0xF3, 0x00, 0xFD, 0xFF, 0xED, + 0x00, 0xFC, 0xFD, 0xE7, 0x00, 0xFB, 0xFE, 0xE3, 0x00, 0xF9, 0xFE, 0xDF, 0x00, 0xF8, 0xFD, 0xE7, + 0x00, 0xF7, 0xFC, 0xEF, 0x00, 0xF3, 0xFB, 0xEB, 0x00, 0xEF, 0xFD, 0xD8, 0x00, 0xE8, 0xFA, 0xC2, + 0x00, 0xE2, 0xF8, 0xAB, 0x00, 0xD8, 0xF4, 0x9B, 0x00, 0xCE, 0xEF, 0x8A, 0x00, 0xC1, 0xEA, 0x76, + 0x00, 0xB4, 0xE5, 0x61, 0x00, 0xAB, 0xDD, 0x5A, 0x00, 0xA2, 0xD2, 0x61, 0x00, 0xC1, 0xE9, 0x8D, + 0x00, 0xDA, 0xE7, 0xB8, 0x00, 0x96, 0xD4, 0xFF, 0x00, 0x8E, 0xD0, 0xFA, 0x00, 0x41, 0xAD, 0xED, + 0x00, 0x10, 0x95, 0xF1, 0x00, 0x0F, 0x95, 0xF1, 0x00, 0x0E, 0x96, 0xF1, 0x00, 0x0E, 0x96, 0xF1, + 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF4, 0x00, 0x50, 0xCB, 0xF4, 0x00, 0x4E, 0xC9, 0xF3, + 0x00, 0x4B, 0xC8, 0xF3, 0x00, 0x51, 0xC9, 0xF6, 0x00, 0x56, 0xCA, 0xFA, 0x00, 0x44, 0xC0, 0xEA, + 0x00, 0x19, 0x74, 0xC6, 0x00, 0x00, 0x58, 0xAD, 0x00, 0x01, 0x5B, 0xB3, 0x00, 0x06, 0x6F, 0xC0, + 0x00, 0x0B, 0x84, 0xCC, 0x00, 0x00, 0x93, 0xCE, 0x00, 0x11, 0xA7, 0xDF, 0x00, 0x3E, 0xB9, 0xE5, + 0x00, 0x6A, 0xCA, 0xEB, 0x00, 0x7E, 0xD1, 0xF5, 0x00, 0x6B, 0xD3, 0xF0, 0x00, 0x81, 0xDB, 0xF4, + 0x00, 0x97, 0xE3, 0xF8, 0x00, 0xA4, 0xEB, 0xF7, 0x00, 0xB1, 0xF4, 0xF5, 0x00, 0xC7, 0xF7, 0xF9, + 0x00, 0xDC, 0xFA, 0xFC, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xF5, 0x00, 0xBB, 0xEB, 0xFD, + 0x00, 0x22, 0xB4, 0xF2, 0x00, 0x28, 0xAF, 0xFF, 0x00, 0x2F, 0xB0, 0xF6, 0x00, 0x29, 0xB0, 0xF2, + 0x00, 0x22, 0xB1, 0xEE, 0x00, 0x19, 0xA7, 0xF9, 0x00, 0xC9, 0xE6, 0xF4, 0x00, 0xF7, 0xF7, 0xF4, + 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFC, 0xFF, 0xEA, + 0x00, 0xFA, 0xFA, 0xE8, 0x00, 0xFB, 0xFD, 0xE2, 0x00, 0xFB, 0xFF, 0xDC, 0x00, 0xFB, 0xFF, 0xE9, + 0x00, 0xFB, 0xFF, 0xF6, 0x00, 0xF1, 0xFD, 0xDC, 0x00, 0xE7, 0xFB, 0xC3, 0x00, 0xDF, 0xF5, 0xB4, + 0x00, 0xD8, 0xF0, 0xA5, 0x00, 0xCE, 0xEC, 0x94, 0x00, 0xC4, 0xE8, 0x83, 0x00, 0xB7, 0xE5, 0x77, + 0x00, 0xAB, 0xE3, 0x6B, 0x00, 0xA0, 0xDE, 0x52, 0x00, 0x94, 0xD4, 0x55, 0x00, 0x7F, 0xBD, 0x40, + 0x00, 0xD1, 0xE4, 0x98, 0x00, 0x2B, 0xA1, 0xF4, 0x00, 0x2F, 0xA1, 0xF6, 0x00, 0x1F, 0x9B, 0xF3, + 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, + 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x53, 0xCC, 0xF4, 0x00, 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF5, + 0x00, 0x4E, 0xC9, 0xF6, 0x00, 0x4D, 0xC9, 0xF4, 0x00, 0x53, 0xD0, 0xFA, 0x00, 0x2A, 0x86, 0xCD, + 0x00, 0x06, 0x52, 0xB0, 0x00, 0x04, 0x5F, 0xB8, 0x00, 0x0A, 0x73, 0xC8, 0x00, 0x08, 0x82, 0xCE, + 0x00, 0x06, 0x91, 0xD3, 0x00, 0x01, 0xA0, 0xD5, 0x00, 0x24, 0xB4, 0xE6, 0x00, 0x4C, 0xC4, 0xEA, + 0x00, 0x74, 0xD3, 0xED, 0x00, 0x83, 0xD9, 0xF4, 0x00, 0x7E, 0xDC, 0xF3, 0x00, 0x93, 0xE4, 0xF6, + 0x00, 0xA8, 0xEC, 0xF8, 0x00, 0xB5, 0xF2, 0xF9, 0x00, 0xC3, 0xF8, 0xF9, 0x00, 0xD3, 0xFA, 0xFA, + 0x00, 0xE2, 0xFB, 0xFB, 0x00, 0xED, 0xFE, 0xFB, 0x00, 0xEF, 0xF9, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0xFF, 0xFD, 0xFF, 0x00, 0x7E, 0xDC, 0xEE, 0x00, 0x26, 0xAD, 0xFD, 0x00, 0x29, 0xAF, 0xF7, + 0x00, 0x2D, 0xB1, 0xF1, 0x00, 0x34, 0xB1, 0xDF, 0x00, 0x09, 0xA6, 0xF6, 0x00, 0x8C, 0xD3, 0xF4, + 0x00, 0xFC, 0xFB, 0xF8, 0x00, 0xFF, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEB, 0x00, 0xFC, 0xFE, 0xE5, + 0x00, 0xFB, 0xFB, 0xE0, 0x00, 0xF9, 0xFC, 0xDE, 0x00, 0xF7, 0xFC, 0xDC, 0x00, 0xFC, 0xFF, 0xEF, + 0x00, 0xF8, 0xFC, 0xEB, 0x00, 0xE8, 0xF5, 0xD0, 0x00, 0xDF, 0xF5, 0xBC, 0x00, 0xD8, 0xF1, 0xAC, + 0x00, 0xD2, 0xED, 0x9D, 0x00, 0xC4, 0xE8, 0x7D, 0x00, 0xB7, 0xE1, 0x6C, 0x00, 0xAB, 0xDC, 0x5E, + 0x00, 0x9E, 0xD7, 0x4F, 0x00, 0x98, 0xC9, 0x5E, 0x00, 0x92, 0xC6, 0x35, 0x00, 0x8B, 0xC9, 0x42, + 0x00, 0x80, 0xB2, 0x4D, 0x00, 0x00, 0x9B, 0xF1, 0x00, 0x17, 0x93, 0xF8, 0x00, 0x15, 0x95, 0xF4, + 0x00, 0x12, 0x97, 0xF1, 0x00, 0x11, 0x96, 0xF0, 0x00, 0x10, 0x95, 0xEF, 0x00, 0x10, 0x95, 0xEF, + 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF5, 0x00, 0x51, 0xCB, 0xF6, + 0x00, 0x50, 0xCB, 0xF8, 0x00, 0x49, 0xC8, 0xF1, 0x00, 0x51, 0xD5, 0xF9, 0x00, 0x15, 0x62, 0xC0, + 0x00, 0x00, 0x5C, 0xBB, 0x00, 0x07, 0x74, 0xCC, 0x00, 0x02, 0x7C, 0xCD, 0x00, 0x02, 0x8D, 0xD4, + 0x00, 0x01, 0x9E, 0xDB, 0x00, 0x08, 0xAD, 0xDC, 0x00, 0x36, 0xC1, 0xED, 0x00, 0x5A, 0xCF, 0xEE, + 0x00, 0x7D, 0xDC, 0xF0, 0x00, 0x87, 0xE1, 0xF3, 0x00, 0x91, 0xE6, 0xF7, 0x00, 0xA5, 0xED, 0xF8, + 0x00, 0xB8, 0xF5, 0xF8, 0x00, 0xC6, 0xF9, 0xFB, 0x00, 0xD4, 0xFD, 0xFD, 0x00, 0xDF, 0xFC, 0xFB, + 0x00, 0xE9, 0xFC, 0xFA, 0x00, 0xF0, 0xFE, 0xFD, 0x00, 0xF7, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFE, + 0x00, 0xFC, 0xFE, 0xFB, 0x00, 0xFD, 0xFA, 0xFF, 0x00, 0x1D, 0xAF, 0xE7, 0x00, 0x2A, 0xB0, 0xEE, + 0x00, 0x37, 0xB1, 0xF5, 0x00, 0x24, 0xB8, 0xF6, 0x00, 0x28, 0xB4, 0xF7, 0x00, 0x21, 0xAF, 0xF4, + 0x00, 0x1A, 0xAA, 0xF2, 0x00, 0x9E, 0xD7, 0xF5, 0x00, 0xFC, 0xFF, 0xE9, 0x00, 0xFC, 0xFE, 0xE0, + 0x00, 0xFC, 0xFD, 0xD7, 0x00, 0xF8, 0xFA, 0xDA, 0x00, 0xF3, 0xF7, 0xDD, 0x00, 0xFD, 0xFD, 0xF4, + 0x00, 0xF6, 0xF9, 0xE0, 0x00, 0xDF, 0xEC, 0xC3, 0x00, 0xD7, 0xEF, 0xB5, 0x00, 0xD2, 0xEC, 0xA5, + 0x00, 0xCC, 0xE9, 0x95, 0x00, 0xBB, 0xE5, 0x67, 0x00, 0xAB, 0xDB, 0x55, 0x00, 0x9E, 0xD3, 0x44, + 0x00, 0x91, 0xCB, 0x32, 0x00, 0x85, 0xC8, 0x24, 0x00, 0x79, 0xB4, 0x6A, 0x00, 0x3A, 0x9D, 0xAF, + 0x00, 0x0B, 0x97, 0xFF, 0x00, 0x18, 0x93, 0xF9, 0x00, 0x0F, 0x9B, 0xED, 0x00, 0x12, 0x9A, 0xF0, + 0x00, 0x15, 0x98, 0xF3, 0x00, 0x13, 0x96, 0xF1, 0x00, 0x11, 0x94, 0xEF, 0x00, 0x11, 0x94, 0xEF, + 0x00, 0x58, 0xCF, 0xF4, 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x53, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF6, + 0x00, 0x52, 0xCB, 0xF8, 0x00, 0x52, 0xD5, 0xFA, 0x00, 0x4E, 0xC7, 0xFB, 0x00, 0x00, 0x4C, 0xAD, + 0x00, 0x09, 0x6F, 0xCA, 0x00, 0x0B, 0x7F, 0xD3, 0x00, 0x05, 0x88, 0xD4, 0x00, 0x04, 0x97, 0xDB, + 0x00, 0x04, 0xA7, 0xE1, 0x00, 0x18, 0xB6, 0xE5, 0x00, 0x3F, 0xC7, 0xF1, 0x00, 0x62, 0xD3, 0xF3, + 0x00, 0x86, 0xDF, 0xF4, 0x00, 0x91, 0xE4, 0xF7, 0x00, 0x9B, 0xE9, 0xF9, 0x00, 0xAD, 0xF0, 0xF9, + 0x00, 0xBF, 0xF7, 0xF9, 0x00, 0xCB, 0xFA, 0xFB, 0x00, 0xD7, 0xFC, 0xFD, 0x00, 0xDE, 0xFD, 0xFC, + 0x00, 0xE5, 0xFD, 0xFB, 0x00, 0xEF, 0xFF, 0xFE, 0x00, 0xF9, 0xFF, 0xFF, 0x00, 0xF2, 0xFE, 0xFA, + 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0xC6, 0xE9, 0xFB, 0x00, 0x1D, 0xAF, 0xEC, 0x00, 0x30, 0xB4, 0xF6, + 0x00, 0x2F, 0xB6, 0xF8, 0x00, 0x19, 0xA7, 0xF6, 0x00, 0x26, 0xB0, 0xF0, 0x00, 0x22, 0xAD, 0xF2, + 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x26, 0xA9, 0xF9, 0x00, 0x1C, 0xA6, 0xF6, 0x00, 0x7D, 0xCD, 0xE9, + 0x00, 0xDF, 0xF4, 0xDC, 0x00, 0xEA, 0xFE, 0xAF, 0x00, 0xFD, 0xFD, 0xED, 0x00, 0xFF, 0xFF, 0xEF, + 0x00, 0xFB, 0xF8, 0xD3, 0x00, 0xEC, 0xEE, 0xB4, 0x00, 0xE6, 0xE9, 0xAB, 0x00, 0xD8, 0xE6, 0x89, + 0x00, 0xCB, 0xE2, 0x67, 0x00, 0xB8, 0xE1, 0x52, 0x00, 0xA6, 0xDD, 0x4C, 0x00, 0x74, 0xC5, 0x7E, + 0x00, 0x42, 0xAD, 0xB0, 0x00, 0x22, 0x9B, 0xF3, 0x00, 0x09, 0x9C, 0xFF, 0x00, 0x09, 0x98, 0xF5, + 0x00, 0x10, 0x9C, 0xEE, 0x00, 0x17, 0x99, 0xED, 0x00, 0x14, 0x9D, 0xED, 0x00, 0x14, 0x9B, 0xEF, + 0x00, 0x15, 0x99, 0xF2, 0x00, 0x13, 0x97, 0xF0, 0x00, 0x11, 0x95, 0xEE, 0x00, 0x11, 0x95, 0xEE, + 0x00, 0x5A, 0xD0, 0xF5, 0x00, 0x57, 0xCF, 0xF4, 0x00, 0x54, 0xCE, 0xF3, 0x00, 0x53, 0xCC, 0xF5, + 0x00, 0x53, 0xCB, 0xF7, 0x00, 0x4C, 0xD3, 0xF4, 0x00, 0x2C, 0x9A, 0xDD, 0x00, 0x03, 0x5D, 0xC1, + 0x00, 0x05, 0x72, 0xC8, 0x00, 0x06, 0x83, 0xD2, 0x00, 0x07, 0x93, 0xDC, 0x00, 0x07, 0xA2, 0xE1, + 0x00, 0x08, 0xB0, 0xE7, 0x00, 0x27, 0xBF, 0xEE, 0x00, 0x47, 0xCD, 0xF6, 0x00, 0x6B, 0xD8, 0xF7, + 0x00, 0x8E, 0xE2, 0xF9, 0x00, 0x9A, 0xE7, 0xFA, 0x00, 0xA6, 0xEC, 0xFB, 0x00, 0xB6, 0xF3, 0xFA, + 0x00, 0xC7, 0xF9, 0xFA, 0x00, 0xD0, 0xFB, 0xFB, 0x00, 0xD9, 0xFC, 0xFD, 0x00, 0xDD, 0xFD, 0xFC, + 0x00, 0xE2, 0xFE, 0xFC, 0x00, 0xEE, 0xFF, 0xFE, 0x00, 0xFB, 0xFF, 0xFF, 0x00, 0xEA, 0xFD, 0xF7, + 0x00, 0xFF, 0xFE, 0xFE, 0x00, 0x8F, 0xD7, 0xF7, 0x00, 0x1E, 0xAF, 0xF1, 0x00, 0x2E, 0xB0, 0xF6, + 0x00, 0x17, 0xAB, 0xEB, 0x00, 0xDF, 0xF7, 0xFD, 0x00, 0x24, 0xAC, 0xE9, 0x00, 0x22, 0xAC, 0xF0, + 0x00, 0x21, 0xAC, 0xF8, 0x00, 0x26, 0xAE, 0xF6, 0x00, 0x2B, 0xB0, 0xF5, 0x00, 0x19, 0xA9, 0xF4, + 0x00, 0x08, 0xA2, 0xF3, 0x00, 0x22, 0xA7, 0xF9, 0x00, 0x4C, 0xC1, 0xF2, 0x00, 0x6D, 0xCD, 0xEE, + 0x00, 0x7D, 0xC9, 0xDB, 0x00, 0x7F, 0xCA, 0xC2, 0x00, 0x81, 0xC5, 0xC6, 0x00, 0x60, 0xBC, 0xCB, + 0x00, 0x40, 0xB3, 0xCF, 0x00, 0x24, 0xA7, 0xE9, 0x00, 0x07, 0x9B, 0xFF, 0x00, 0x10, 0x9D, 0xFF, + 0x00, 0x1A, 0x9F, 0xFF, 0x00, 0x0F, 0x98, 0xE9, 0x00, 0x14, 0x9C, 0xF9, 0x00, 0x14, 0x9C, 0xF7, + 0x00, 0x14, 0x9B, 0xF4, 0x00, 0x17, 0x9D, 0xF1, 0x00, 0x19, 0x9E, 0xED, 0x00, 0x16, 0x9C, 0xEF, + 0x00, 0x14, 0x99, 0xF1, 0x00, 0x12, 0x97, 0xEF, 0x00, 0x10, 0x95, 0xED, 0x00, 0x10, 0x95, 0xED, + 0x00, 0x5C, 0xD1, 0xF6, 0x00, 0x58, 0xD0, 0xF4, 0x00, 0x55, 0xCF, 0xF3, 0x00, 0x54, 0xCD, 0xF5, + 0x00, 0x53, 0xCC, 0xF7, 0x00, 0x51, 0xD5, 0xF6, 0x00, 0x16, 0x7B, 0xCE, 0x00, 0x03, 0x67, 0xC6, + 0x00, 0x06, 0x7B, 0xCF, 0x00, 0x05, 0x8B, 0xD7, 0x00, 0x05, 0x9B, 0xDF, 0x00, 0x07, 0xA8, 0xE4, + 0x00, 0x09, 0xB6, 0xEA, 0x00, 0x2A, 0xC3, 0xF1, 0x00, 0x4C, 0xD1, 0xF7, 0x00, 0x6C, 0xDB, 0xF8, + 0x00, 0x8D, 0xE4, 0xFA, 0x00, 0x9C, 0xEA, 0xFA, 0x00, 0xAB, 0xEF, 0xFB, 0x00, 0xBC, 0xF5, 0xFA, + 0x00, 0xCD, 0xFA, 0xFA, 0x00, 0xD4, 0xFB, 0xFB, 0x00, 0xDB, 0xFC, 0xFD, 0x00, 0xDC, 0xFD, 0xFC, + 0x00, 0xDD, 0xFE, 0xFC, 0x00, 0xE3, 0xFE, 0xFC, 0x00, 0xEA, 0xFE, 0xFD, 0x00, 0xFE, 0xFF, 0xFD, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x27, 0xC0, 0xDE, 0x00, 0x26, 0xB4, 0xF5, 0x00, 0x1E, 0xB0, 0xF8, + 0x00, 0x4D, 0xC6, 0xFF, 0x00, 0xFF, 0xF8, 0xEF, 0x00, 0xFE, 0xFF, 0xFA, 0x00, 0x8B, 0xD8, 0xF6, + 0x00, 0x18, 0xA7, 0xF3, 0x00, 0x1D, 0xA9, 0xF4, 0x00, 0x22, 0xAC, 0xF5, 0x00, 0x22, 0xAB, 0xF2, + 0x00, 0x22, 0xAB, 0xF0, 0x00, 0x1A, 0xA3, 0xF2, 0x00, 0x1A, 0xA6, 0xEE, 0x00, 0x17, 0xA8, 0xF4, + 0x00, 0x0D, 0xA2, 0xF3, 0x00, 0x10, 0xA4, 0xF2, 0x00, 0x14, 0xA3, 0xFF, 0x00, 0x15, 0xA3, 0xFC, + 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x17, 0xA2, 0xF2, 0x00, 0x18, 0xA1, 0xEC, 0x00, 0x0D, 0x99, 0xFD, + 0x00, 0x16, 0x9A, 0xED, 0x00, 0x00, 0xA0, 0xFF, 0x00, 0x2B, 0x9C, 0xE8, 0x00, 0x60, 0xB5, 0xAF, + 0x00, 0x10, 0x99, 0xF7, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x18, 0x9D, 0xED, 0x00, 0x16, 0x9B, 0xEE, + 0x00, 0x13, 0x99, 0xEF, 0x00, 0x11, 0x97, 0xED, 0x00, 0x0F, 0x95, 0xEB, 0x00, 0x0F, 0x95, 0xEB, + 0x00, 0x5E, 0xD2, 0xF7, 0x00, 0x5A, 0xD1, 0xF4, 0x00, 0x56, 0xD0, 0xF2, 0x00, 0x54, 0xCE, 0xF5, + 0x00, 0x53, 0xCC, 0xF7, 0x00, 0x56, 0xD7, 0xF7, 0x00, 0x00, 0x5B, 0xC0, 0x00, 0x03, 0x70, 0xCB, + 0x00, 0x06, 0x84, 0xD6, 0x00, 0x05, 0x94, 0xDC, 0x00, 0x03, 0xA3, 0xE2, 0x00, 0x07, 0xAF, 0xE8, + 0x00, 0x0B, 0xBB, 0xEE, 0x00, 0x2D, 0xC8, 0xF3, 0x00, 0x50, 0xD5, 0xF8, 0x00, 0x6E, 0xDE, 0xF9, + 0x00, 0x8C, 0xE6, 0xFA, 0x00, 0x9F, 0xEC, 0xFB, 0x00, 0xB1, 0xF2, 0xFB, 0x00, 0xC2, 0xF7, 0xFA, + 0x00, 0xD3, 0xFB, 0xF9, 0x00, 0xD8, 0xFC, 0xFB, 0x00, 0xDD, 0xFC, 0xFD, 0x00, 0xDB, 0xFD, 0xFC, + 0x00, 0xD8, 0xFE, 0xFC, 0x00, 0xD8, 0xFD, 0xFB, 0x00, 0xD9, 0xFC, 0xFA, 0x00, 0xE4, 0xFA, 0xFA, + 0x00, 0xA3, 0xE9, 0xF6, 0x00, 0x2A, 0xAC, 0xFB, 0x00, 0x2E, 0xB9, 0xFA, 0x00, 0x1A, 0xAD, 0xED, + 0x00, 0x99, 0xDA, 0xF7, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFC, 0x00, 0xFE, 0xFE, 0xFC, + 0x00, 0xFF, 0xFF, 0xFD, 0x00, 0x8C, 0xD4, 0xF9, 0x00, 0x19, 0xA8, 0xF5, 0x00, 0x17, 0xA9, 0xF7, + 0x00, 0x16, 0xA9, 0xF8, 0x00, 0x1A, 0xA7, 0xF3, 0x00, 0x1E, 0xA5, 0xED, 0x00, 0x1F, 0xA7, 0xF1, + 0x00, 0x20, 0xA9, 0xF6, 0x00, 0x1D, 0xA7, 0xF6, 0x00, 0x1A, 0xA5, 0xF6, 0x00, 0x16, 0xA3, 0xF8, + 0x00, 0x12, 0xA1, 0xFA, 0x00, 0x0A, 0x9D, 0xFC, 0x00, 0x03, 0x98, 0xFE, 0x00, 0x25, 0xA1, 0xF9, + 0x00, 0x6F, 0xC0, 0xB0, 0x00, 0xCF, 0xC9, 0x5D, 0x00, 0xFF, 0xE5, 0x27, 0x00, 0x73, 0xB4, 0xB3, + 0x00, 0x0B, 0x97, 0xF9, 0x00, 0x11, 0x9A, 0xF3, 0x00, 0x17, 0x9D, 0xED, 0x00, 0x15, 0x9B, 0xEE, + 0x00, 0x13, 0x9A, 0xEE, 0x00, 0x11, 0x98, 0xEC, 0x00, 0x0F, 0x96, 0xEA, 0x00, 0x0F, 0x96, 0xEA, + 0x00, 0x5D, 0xD1, 0xF6, 0x00, 0x5A, 0xD1, 0xF5, 0x00, 0x58, 0xD2, 0xF4, 0x00, 0x53, 0xCE, 0xF3, + 0x00, 0x56, 0xD1, 0xFA, 0x00, 0x3F, 0xB1, 0xE6, 0x00, 0x01, 0x64, 0xC6, 0x00, 0x02, 0x75, 0xCE, + 0x00, 0x04, 0x87, 0xD7, 0x00, 0x02, 0x95, 0xDD, 0x00, 0x00, 0xA4, 0xE4, 0x00, 0x03, 0xB0, 0xEA, + 0x00, 0x06, 0xBD, 0xF1, 0x00, 0x1B, 0xC8, 0xF2, 0x00, 0x42, 0xD5, 0xFB, 0x00, 0x63, 0xDD, 0xFB, + 0x00, 0x84, 0xE5, 0xFB, 0x00, 0x98, 0xEB, 0xFC, 0x00, 0xAB, 0xF1, 0xFC, 0x00, 0xBD, 0xF8, 0xFF, + 0x00, 0xCF, 0xFF, 0xFF, 0x00, 0xCF, 0xFC, 0xFF, 0x00, 0xCF, 0xF9, 0xFB, 0x00, 0xD2, 0xFE, 0xFD, + 0x00, 0xD4, 0xFF, 0xFF, 0x00, 0xC6, 0xF9, 0xFF, 0x00, 0xB7, 0xEE, 0xFF, 0x00, 0x59, 0xD7, 0xD9, + 0x00, 0x40, 0xB9, 0xE9, 0x00, 0x2E, 0xB9, 0xFF, 0x00, 0x2B, 0xB1, 0xEF, 0x00, 0x27, 0xAF, 0xEB, + 0x00, 0xDD, 0xEF, 0xF1, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0xFD, + 0x00, 0xFF, 0xFD, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xC1, 0xE8, 0xF0, + 0x00, 0x83, 0xCD, 0xE6, 0x00, 0x52, 0xBB, 0xE8, 0x00, 0x21, 0xA9, 0xEB, 0x00, 0x13, 0xA1, 0xFF, + 0x00, 0x06, 0x9F, 0xF7, 0x00, 0x0F, 0x9F, 0xF8, 0x00, 0x18, 0xA3, 0xEA, 0x00, 0x43, 0xB1, 0xE0, + 0x00, 0x6D, 0xC2, 0xC9, 0x00, 0xAF, 0xD6, 0x99, 0x00, 0xF1, 0xEB, 0x6A, 0x00, 0xEB, 0xEE, 0x31, + 0x00, 0xF8, 0xE6, 0x47, 0x00, 0xFF, 0xE1, 0x3A, 0x00, 0xFC, 0xE1, 0x41, 0x00, 0x00, 0x98, 0xF4, + 0x00, 0x19, 0xA1, 0xFC, 0x00, 0x15, 0x9E, 0xF6, 0x00, 0x11, 0x9A, 0xF1, 0x00, 0x13, 0x9A, 0xF0, + 0x00, 0x14, 0x99, 0xF0, 0x00, 0x12, 0x97, 0xEE, 0x00, 0x10, 0x95, 0xEC, 0x00, 0x10, 0x95, 0xEC, + 0x00, 0x5C, 0xCF, 0xF5, 0x00, 0x5A, 0xD1, 0xF6, 0x00, 0x59, 0xD4, 0xF6, 0x00, 0x51, 0xCD, 0xF2, + 0x00, 0x59, 0xD6, 0xFE, 0x00, 0x29, 0x8B, 0xD5, 0x00, 0x02, 0x6C, 0xCB, 0x00, 0x01, 0x7A, 0xD1, + 0x00, 0x01, 0x89, 0xD8, 0x00, 0x00, 0x97, 0xDE, 0x00, 0x00, 0xA5, 0xE5, 0x00, 0x00, 0xB2, 0xEC, + 0x00, 0x02, 0xBE, 0xF3, 0x00, 0x08, 0xC7, 0xF1, 0x00, 0x35, 0xD5, 0xFE, 0x00, 0x58, 0xDD, 0xFD, + 0x00, 0x7C, 0xE4, 0xFB, 0x00, 0x91, 0xEA, 0xFC, 0x00, 0xA6, 0xEF, 0xFE, 0x00, 0xB0, 0xF2, 0xFE, + 0x00, 0xBA, 0xF5, 0xFE, 0x00, 0xBD, 0xF5, 0xFC, 0x00, 0xC0, 0xF5, 0xF9, 0x00, 0xC0, 0xF7, 0xF6, + 0x00, 0xC1, 0xF9, 0xF4, 0x00, 0xC6, 0xFC, 0xFC, 0x00, 0xCC, 0xFF, 0xFF, 0x00, 0xC1, 0xF8, 0xF7, + 0x00, 0x59, 0xCC, 0xF3, 0x00, 0x38, 0xB0, 0xF2, 0x00, 0x37, 0xBA, 0xF5, 0x00, 0x29, 0xB4, 0xF7, + 0x00, 0xFC, 0xFB, 0xF8, 0x00, 0xFC, 0xFD, 0xFF, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0xFF, + 0x00, 0xFF, 0xFC, 0xF6, 0x00, 0xFC, 0xFE, 0xF2, 0x00, 0xF6, 0xFF, 0xEE, 0x00, 0xFC, 0xFF, 0xE9, + 0x00, 0xFF, 0xFF, 0xE4, 0x00, 0xFF, 0xFF, 0xD7, 0x00, 0xFF, 0xFF, 0xCA, 0x00, 0xFF, 0xFB, 0xF1, + 0x00, 0xFF, 0xFF, 0xDF, 0x00, 0xFC, 0xFD, 0xC1, 0x00, 0xF6, 0xFF, 0x88, 0x00, 0xFB, 0xFD, 0x91, + 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFC, 0x6C, 0x00, 0xF9, 0xF6, 0x59, 0x00, 0xF8, 0xEF, 0x58, + 0x00, 0xF7, 0xE9, 0x57, 0x00, 0xF6, 0xE3, 0x59, 0x00, 0xD0, 0xD2, 0x67, 0x00, 0x08, 0x98, 0xFF, + 0x00, 0x17, 0x9A, 0xEF, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x0C, 0x98, 0xF4, 0x00, 0x10, 0x99, 0xF3, + 0x00, 0x15, 0x99, 0xF1, 0x00, 0x13, 0x97, 0xEF, 0x00, 0x11, 0x95, 0xED, 0x00, 0x11, 0x95, 0xED, + 0x00, 0x5E, 0xD1, 0xF9, 0x00, 0x5B, 0xD3, 0xF7, 0x00, 0x59, 0xD4, 0xF6, 0x00, 0x57, 0xD3, 0xF8, + 0x00, 0x5E, 0xDA, 0xFF, 0x00, 0x19, 0x70, 0xCD, 0x00, 0x02, 0x6D, 0xCC, 0x00, 0x03, 0x7B, 0xD2, + 0x00, 0x04, 0x88, 0xD9, 0x00, 0x04, 0x96, 0xDF, 0x00, 0x04, 0xA5, 0xE6, 0x00, 0x01, 0xAD, 0xE6, + 0x00, 0x00, 0xB4, 0xE7, 0x00, 0x06, 0xBE, 0xEA, 0x00, 0x23, 0xCA, 0xF5, 0x00, 0x4B, 0xD7, 0xF8, + 0x00, 0x74, 0xE3, 0xFB, 0x00, 0x89, 0xE8, 0xFC, 0x00, 0x9E, 0xEC, 0xFE, 0x00, 0xA5, 0xED, 0xFE, + 0x00, 0xAB, 0xEE, 0xFE, 0x00, 0xAD, 0xEF, 0xFB, 0x00, 0xB0, 0xEF, 0xF9, 0x00, 0xB3, 0xF2, 0xF8, + 0x00, 0xB6, 0xF5, 0xF8, 0x00, 0xB5, 0xF8, 0xFC, 0x00, 0xB5, 0xFB, 0xFF, 0x00, 0xD9, 0xF3, 0xFF, + 0x00, 0x1A, 0xB9, 0xF1, 0x00, 0x28, 0xB3, 0xF3, 0x00, 0x2A, 0xB3, 0xF6, 0x00, 0x73, 0xCE, 0xF3, + 0x00, 0xFD, 0xFD, 0xF5, 0x00, 0xFD, 0xFE, 0xF9, 0x00, 0xFD, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0xF8, + 0x00, 0xFF, 0xFD, 0xF3, 0x00, 0xFD, 0xFE, 0xEE, 0x00, 0xFA, 0xFE, 0xE9, 0x00, 0xFC, 0xFF, 0xE3, + 0x00, 0xFF, 0xFF, 0xDE, 0x00, 0xFF, 0xFF, 0xD0, 0x00, 0xFF, 0xFF, 0xC2, 0x00, 0xFC, 0xFA, 0xD6, + 0x00, 0xFF, 0xFC, 0xF3, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0xFC, 0xFA, 0xC4, 0x00, 0xFC, 0xFF, 0x84, + 0x00, 0xFB, 0xFA, 0x8A, 0x00, 0xFA, 0xF6, 0x79, 0x00, 0xF9, 0xF2, 0x68, 0x00, 0xF6, 0xED, 0x5E, + 0x00, 0xF4, 0xE8, 0x53, 0x00, 0xF7, 0xE8, 0x48, 0x00, 0x87, 0xBC, 0xA8, 0x00, 0x10, 0x9A, 0xFB, + 0x00, 0x17, 0x9B, 0xF1, 0x00, 0x14, 0x9A, 0xF1, 0x00, 0x10, 0x9A, 0xF1, 0x00, 0x13, 0x99, 0xF2, + 0x00, 0x16, 0x98, 0xF3, 0x00, 0x14, 0x96, 0xF1, 0x00, 0x12, 0x94, 0xEF, 0x00, 0x12, 0x94, 0xEF, + 0x00, 0x61, 0xD4, 0xFC, 0x00, 0x5D, 0xD4, 0xF9, 0x00, 0x58, 0xD4, 0xF6, 0x00, 0x55, 0xD1, 0xF5, + 0x00, 0x53, 0xCE, 0xF5, 0x00, 0x01, 0x4D, 0xBD, 0x00, 0x02, 0x6E, 0xCD, 0x00, 0x04, 0x7B, 0xD3, + 0x00, 0x06, 0x87, 0xDA, 0x00, 0x09, 0x96, 0xE0, 0x00, 0x0C, 0xA5, 0xE6, 0x00, 0x0A, 0xB0, 0xE9, + 0x00, 0x09, 0xBA, 0xEB, 0x00, 0x15, 0xC5, 0xF3, 0x00, 0x21, 0xD0, 0xFB, 0x00, 0x46, 0xD9, 0xFB, + 0x00, 0x6B, 0xE3, 0xFB, 0x00, 0x81, 0xE6, 0xFC, 0x00, 0x97, 0xE9, 0xFD, 0x00, 0x99, 0xE8, 0xFD, + 0x00, 0x9B, 0xE8, 0xFD, 0x00, 0x9D, 0xE8, 0xFB, 0x00, 0x9F, 0xE9, 0xF8, 0x00, 0xA5, 0xEE, 0xFA, + 0x00, 0xAB, 0xF2, 0xFC, 0x00, 0xB0, 0xEF, 0xFB, 0x00, 0xB4, 0xEB, 0xFB, 0x00, 0x89, 0xDD, 0xF8, + 0x00, 0x27, 0xB4, 0xF3, 0x00, 0x3E, 0xBD, 0xF7, 0x00, 0x1E, 0xAC, 0xF7, 0x00, 0xBC, 0xE8, 0xF0, + 0x00, 0xFE, 0xFF, 0xF2, 0x00, 0xFD, 0xFF, 0xF3, 0x00, 0xFD, 0xFE, 0xF4, 0x00, 0xFD, 0xFE, 0xF2, + 0x00, 0xFE, 0xFE, 0xEF, 0x00, 0xFE, 0xFE, 0xE9, 0x00, 0xFE, 0xFE, 0xE3, 0x00, 0xFD, 0xFD, 0xDD, + 0x00, 0xFD, 0xFD, 0xD7, 0x00, 0xFC, 0xFE, 0xC8, 0x00, 0xFB, 0xFF, 0xB9, 0x00, 0xF5, 0xFE, 0x9F, + 0x00, 0xFF, 0xFF, 0xCE, 0x00, 0xFF, 0xF9, 0xF5, 0x00, 0xFF, 0xFF, 0xC8, 0x00, 0xFC, 0xF7, 0xBD, + 0x00, 0xF8, 0xF8, 0x7A, 0x00, 0xF8, 0xF5, 0x6B, 0x00, 0xF9, 0xF3, 0x5C, 0x00, 0xF5, 0xED, 0x55, + 0x00, 0xF1, 0xE8, 0x4F, 0x00, 0xF8, 0xEE, 0x37, 0x00, 0x3E, 0xA6, 0xE9, 0x00, 0x17, 0x9C, 0xF5, + 0x00, 0x17, 0x9D, 0xF4, 0x00, 0x15, 0x9C, 0xF1, 0x00, 0x14, 0x9B, 0xEE, 0x00, 0x15, 0x99, 0xF1, + 0x00, 0x17, 0x97, 0xF4, 0x00, 0x15, 0x95, 0xF2, 0x00, 0x13, 0x93, 0xF0, 0x00, 0x13, 0x93, 0xF0, + 0x00, 0x66, 0xD6, 0xFB, 0x00, 0x5E, 0xD1, 0xF4, 0x00, 0x5F, 0xD3, 0xF6, 0x00, 0x59, 0xD7, 0xF9, + 0x00, 0x39, 0x9D, 0xDA, 0x00, 0x08, 0x58, 0xBE, 0x00, 0x08, 0x6C, 0xCD, 0x00, 0x0C, 0x79, 0xD2, + 0x00, 0x0F, 0x87, 0xD7, 0x00, 0x11, 0x96, 0xDF, 0x00, 0x13, 0xA5, 0xE7, 0x00, 0x13, 0xB0, 0xEA, + 0x00, 0x1B, 0xC2, 0xF5, 0x00, 0x0F, 0xC8, 0xF3, 0x00, 0x16, 0xD0, 0xF9, 0x00, 0x27, 0xD2, 0xF4, + 0x00, 0x4B, 0xD6, 0xF7, 0x00, 0x60, 0xDA, 0xF8, 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x7F, 0xDF, 0xF9, + 0x00, 0x87, 0xE0, 0xFA, 0x00, 0x8C, 0xE4, 0xFB, 0x00, 0x91, 0xE7, 0xFB, 0x00, 0x95, 0xEA, 0xFC, + 0x00, 0x9A, 0xED, 0xFC, 0x00, 0x9E, 0xEA, 0xFB, 0x00, 0xA3, 0xE7, 0xFA, 0x00, 0x5E, 0xCC, 0xFA, + 0x00, 0x2C, 0xB6, 0xF5, 0x00, 0x24, 0xB8, 0xF9, 0x00, 0x14, 0xB1, 0xF5, 0x00, 0xFF, 0xFB, 0xFF, + 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFE, 0xEC, + 0x00, 0xFD, 0xFD, 0xEA, 0x00, 0xFD, 0xFD, 0xE3, 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFD, 0xFD, 0xD5, + 0x00, 0xFD, 0xFD, 0xCE, 0x00, 0xFC, 0xFC, 0xC1, 0x00, 0xFB, 0xFB, 0xB4, 0x00, 0xF5, 0xFA, 0x8D, + 0x00, 0xF8, 0xFC, 0x89, 0x00, 0xF8, 0xFA, 0xCB, 0x00, 0xF7, 0xFE, 0xF1, 0x00, 0xF9, 0xFF, 0xBD, + 0x00, 0xFA, 0xF9, 0xC2, 0x00, 0xFB, 0xF8, 0xAC, 0x00, 0xFC, 0xF7, 0x96, 0x00, 0xF9, 0xF4, 0x91, + 0x00, 0xF7, 0xF0, 0x8C, 0x00, 0xFF, 0xE4, 0xA8, 0x00, 0x00, 0x95, 0xF6, 0x00, 0x07, 0x99, 0xF6, + 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x15, 0x9C, 0xF0, 0x00, 0x15, 0x9A, 0xF2, + 0x00, 0x15, 0x98, 0xF4, 0x00, 0x14, 0x97, 0xF2, 0x00, 0x12, 0x95, 0xF1, 0x00, 0x12, 0x95, 0xF1, + 0x00, 0x6A, 0xD9, 0xFA, 0x00, 0x60, 0xCE, 0xF0, 0x00, 0x66, 0xD2, 0xF6, 0x00, 0x5C, 0xDD, 0xFD, + 0x00, 0x1E, 0x6C, 0xC0, 0x00, 0x0E, 0x63, 0xBE, 0x00, 0x0E, 0x69, 0xCD, 0x00, 0x13, 0x78, 0xD0, + 0x00, 0x18, 0x87, 0xD4, 0x00, 0x19, 0x96, 0xDE, 0x00, 0x1A, 0xA6, 0xE9, 0x00, 0x13, 0xA8, 0xE3, + 0x00, 0x1D, 0xBA, 0xEE, 0x00, 0x0C, 0xBD, 0xEA, 0x00, 0x22, 0xC5, 0xF6, 0x00, 0x13, 0xC5, 0xEC, + 0x00, 0x2A, 0xCA, 0xF2, 0x00, 0x40, 0xCF, 0xF3, 0x00, 0x56, 0xD3, 0xF4, 0x00, 0x65, 0xD6, 0xF5, + 0x00, 0x74, 0xD9, 0xF7, 0x00, 0x7B, 0xDF, 0xFA, 0x00, 0x82, 0xE4, 0xFE, 0x00, 0x86, 0xE6, 0xFD, + 0x00, 0x89, 0xE7, 0xFD, 0x00, 0x8D, 0xE4, 0xFB, 0x00, 0x92, 0xE2, 0xF9, 0x00, 0x33, 0xBB, 0xFC, + 0x00, 0x31, 0xB9, 0xF6, 0x00, 0x31, 0xBA, 0xFD, 0x00, 0x57, 0xC4, 0xF7, 0x00, 0xF3, 0xFF, 0xDE, + 0x00, 0xFD, 0xFF, 0xE6, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0xFF, 0xFE, 0xE6, + 0x00, 0xFD, 0xFC, 0xE5, 0x00, 0xFD, 0xFC, 0xDD, 0x00, 0xFD, 0xFC, 0xD5, 0x00, 0xFD, 0xFD, 0xCD, + 0x00, 0xFD, 0xFD, 0xC5, 0x00, 0xFC, 0xFA, 0xBA, 0x00, 0xFB, 0xF7, 0xAF, 0x00, 0xFE, 0xF9, 0x9E, + 0x00, 0xFF, 0xFB, 0x8D, 0x00, 0xFA, 0xFE, 0x77, 0x00, 0xF4, 0xFB, 0x7D, 0x00, 0xF8, 0xF7, 0xD2, + 0x00, 0xFD, 0xFF, 0xEE, 0x00, 0xFE, 0xFD, 0xDF, 0x00, 0xFE, 0xFB, 0xD0, 0x00, 0xFD, 0xFA, 0xCD, + 0x00, 0xFC, 0xF9, 0xC9, 0x00, 0xA6, 0xD2, 0xCD, 0x00, 0x02, 0x98, 0xEA, 0x00, 0x1E, 0xA0, 0xEC, + 0x00, 0x13, 0x9E, 0xF9, 0x00, 0x15, 0x9E, 0xF6, 0x00, 0x16, 0x9D, 0xF2, 0x00, 0x15, 0x9B, 0xF2, + 0x00, 0x14, 0x99, 0xF3, 0x00, 0x13, 0x98, 0xF2, 0x00, 0x12, 0x97, 0xF1, 0x00, 0x12, 0x97, 0xF1, + 0x00, 0x55, 0xD4, 0xF3, 0x00, 0x5B, 0xD1, 0xF0, 0x00, 0x69, 0xD6, 0xF6, 0x00, 0x6D, 0xE2, 0xFF, + 0x00, 0x0B, 0x4F, 0xA7, 0x00, 0x11, 0x60, 0xBE, 0x00, 0x0F, 0x6A, 0xCD, 0x00, 0x1F, 0x83, 0xD5, + 0x00, 0x1E, 0x89, 0xDC, 0x00, 0x0F, 0x8B, 0xDD, 0x00, 0x1A, 0x9B, 0xE0, 0x00, 0x22, 0xB0, 0xF3, + 0x00, 0x1D, 0xAA, 0xE0, 0x00, 0x13, 0xAE, 0xDF, 0x00, 0x25, 0xBC, 0xEE, 0x00, 0x14, 0xB9, 0xE6, + 0x00, 0x1F, 0xC1, 0xEF, 0x00, 0x25, 0xC7, 0xEF, 0x00, 0x2B, 0xCD, 0xEE, 0x00, 0x3C, 0xCD, 0xF0, + 0x00, 0x4E, 0xCE, 0xF3, 0x00, 0x5B, 0xD6, 0xF8, 0x00, 0x68, 0xDE, 0xFE, 0x00, 0x6D, 0xDD, 0xFC, + 0x00, 0x73, 0xDC, 0xFA, 0x00, 0x75, 0xDD, 0xF5, 0x00, 0x70, 0xD3, 0xF6, 0x00, 0x30, 0xBA, 0xFB, + 0x00, 0x33, 0xB8, 0xF5, 0x00, 0x24, 0xB5, 0xFE, 0x00, 0xA3, 0xDE, 0xE4, 0x00, 0xF9, 0xFF, 0xDC, + 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFE, 0xFE, 0xDC, 0x00, 0xFF, 0xFF, 0xDB, 0x00, 0xFE, 0xFE, 0xDA, + 0x00, 0xFC, 0xFD, 0xD9, 0x00, 0xFC, 0xFD, 0xD2, 0x00, 0xFC, 0xFD, 0xCA, 0x00, 0xFD, 0xFD, 0xC3, + 0x00, 0xFD, 0xFD, 0xBB, 0x00, 0xFC, 0xFB, 0xAF, 0x00, 0xFC, 0xFA, 0xA2, 0x00, 0xFD, 0xFA, 0x92, + 0x00, 0xFE, 0xFB, 0x83, 0x00, 0xFB, 0xFD, 0x6A, 0x00, 0xF8, 0xFC, 0x60, 0x00, 0xFA, 0xF8, 0x5D, + 0x00, 0xFC, 0xF7, 0x4C, 0x00, 0xFD, 0xF4, 0x76, 0x00, 0xFE, 0xF2, 0xA0, 0x00, 0xF5, 0xEC, 0x87, + 0x00, 0xF7, 0xE3, 0x5F, 0x00, 0x50, 0xBB, 0xB4, 0x00, 0x0C, 0x99, 0xFE, 0x00, 0x1A, 0x9E, 0xF7, + 0x00, 0x15, 0x9D, 0xF6, 0x00, 0x15, 0x9D, 0xF4, 0x00, 0x15, 0x9C, 0xF2, 0x00, 0x14, 0x9B, 0xF2, + 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, + 0x00, 0x66, 0xD3, 0xFD, 0x00, 0x69, 0xD6, 0xF9, 0x00, 0x6B, 0xD9, 0xF5, 0x00, 0x4E, 0xB6, 0xDC, + 0x00, 0x18, 0x52, 0xAE, 0x00, 0x1C, 0x66, 0xC6, 0x00, 0x00, 0x5A, 0xBD, 0x00, 0x1A, 0x7D, 0xCA, + 0x00, 0x15, 0x7B, 0xD4, 0x00, 0x04, 0x81, 0xDC, 0x00, 0x2A, 0xA0, 0xE7, 0x00, 0x00, 0x88, 0xD3, + 0x00, 0x2D, 0xAB, 0xE2, 0x00, 0x23, 0xA7, 0xDC, 0x00, 0x29, 0xB3, 0xE6, 0x00, 0x16, 0xAD, 0xE0, + 0x00, 0x14, 0xB7, 0xEB, 0x00, 0x15, 0xB9, 0xEA, 0x00, 0x16, 0xBA, 0xE9, 0x00, 0x1F, 0xBE, 0xEC, + 0x00, 0x28, 0xC2, 0xEE, 0x00, 0x3B, 0xCD, 0xF6, 0x00, 0x4E, 0xD8, 0xFE, 0x00, 0x55, 0xD5, 0xFB, + 0x00, 0x5D, 0xD1, 0xF7, 0x00, 0x5D, 0xD6, 0xEF, 0x00, 0x4E, 0xC4, 0xF3, 0x00, 0x2E, 0xB9, 0xFA, + 0x00, 0x35, 0xB8, 0xF4, 0x00, 0x17, 0xB1, 0xFF, 0x00, 0xF0, 0xF7, 0xD1, 0x00, 0xFE, 0xFF, 0xDA, + 0x00, 0xFC, 0xFC, 0xD2, 0x00, 0xFD, 0xFD, 0xD1, 0x00, 0xFD, 0xFE, 0xD0, 0x00, 0xFC, 0xFD, 0xCF, + 0x00, 0xFB, 0xFD, 0xCD, 0x00, 0xFC, 0xFD, 0xC6, 0x00, 0xFC, 0xFD, 0xBF, 0x00, 0xFD, 0xFD, 0xB9, + 0x00, 0xFD, 0xFC, 0xB2, 0x00, 0xFD, 0xFC, 0xA3, 0x00, 0xFD, 0xFC, 0x95, 0x00, 0xFC, 0xFC, 0x87, + 0x00, 0xFC, 0xFB, 0x78, 0x00, 0xFD, 0xFA, 0x6C, 0x00, 0xFD, 0xF8, 0x5F, 0x00, 0xF9, 0xF6, 0x45, + 0x00, 0xF5, 0xEF, 0x47, 0x00, 0xF2, 0xE9, 0x37, 0x00, 0xEE, 0xE4, 0x28, 0x00, 0xED, 0xE3, 0x24, + 0x00, 0xFF, 0xDD, 0x05, 0x00, 0x03, 0x99, 0xFF, 0x00, 0x16, 0xA0, 0xF5, 0x00, 0x16, 0x9E, 0xF4, + 0x00, 0x16, 0x9C, 0xF3, 0x00, 0x15, 0x9C, 0xF2, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x12, 0x9A, 0xF1, + 0x00, 0x10, 0x99, 0xEF, 0x00, 0x11, 0x9A, 0xF0, 0x00, 0x12, 0x9B, 0xF1, 0x00, 0x12, 0x9B, 0xF1, + 0x00, 0x65, 0xD5, 0xFB, 0x00, 0x70, 0xD4, 0xFC, 0x00, 0x77, 0xE2, 0xFF, 0x00, 0x3B, 0x86, 0xC7, + 0x00, 0x23, 0x5F, 0xBA, 0x00, 0x1E, 0x6A, 0xBA, 0x00, 0x21, 0x7A, 0xD0, 0x00, 0x27, 0x87, 0xD7, + 0x00, 0x24, 0x8C, 0xD6, 0x00, 0x1D, 0x8D, 0xD3, 0x00, 0x21, 0x88, 0xD0, 0x00, 0x2B, 0xA0, 0xEA, + 0x00, 0x21, 0x95, 0xD5, 0x00, 0x30, 0xA9, 0xEE, 0x00, 0x20, 0xA0, 0xDA, 0x00, 0x16, 0xA1, 0xDD, + 0x00, 0x0D, 0xA1, 0xDF, 0x00, 0x19, 0xAB, 0xE2, 0x00, 0x12, 0xB1, 0xEB, 0x00, 0x0F, 0xB8, 0xED, + 0x00, 0x0C, 0xBF, 0xEE, 0x00, 0x1C, 0xC1, 0xEF, 0x00, 0x2C, 0xC3, 0xF0, 0x00, 0x36, 0xC4, 0xF1, + 0x00, 0x40, 0xC5, 0xF3, 0x00, 0x46, 0xC9, 0xF1, 0x00, 0x45, 0xC2, 0xF6, 0x00, 0x31, 0xBA, 0xF9, + 0x00, 0x30, 0xB7, 0xF6, 0x00, 0x4B, 0xC1, 0xF4, 0x00, 0xF5, 0xFA, 0xC0, 0x00, 0xFD, 0xFF, 0xC6, + 0x00, 0xFC, 0xFC, 0xC4, 0x00, 0xFD, 0xFC, 0xC4, 0x00, 0xFD, 0xFD, 0xC3, 0x00, 0xFC, 0xFD, 0xC2, + 0x00, 0xFB, 0xFC, 0xC1, 0x00, 0xF8, 0xF8, 0xB5, 0x00, 0xFC, 0xFD, 0xB2, 0x00, 0xFC, 0xFC, 0xAA, + 0x00, 0xFC, 0xFC, 0xA3, 0x00, 0xFC, 0xFB, 0x95, 0x00, 0xFB, 0xFB, 0x88, 0x00, 0xFB, 0xFB, 0x7A, + 0x00, 0xFB, 0xFA, 0x6D, 0x00, 0xFB, 0xF8, 0x61, 0x00, 0xFC, 0xF6, 0x56, 0x00, 0xF8, 0xF2, 0x44, + 0x00, 0xF4, 0xEA, 0x40, 0x00, 0xEF, 0xE5, 0x31, 0x00, 0xEA, 0xDF, 0x23, 0x00, 0xFA, 0xE0, 0x1C, + 0x00, 0xC5, 0xD1, 0x44, 0x00, 0x0A, 0xA1, 0xFE, 0x00, 0x15, 0x9F, 0xF9, 0x00, 0x17, 0x9F, 0xF5, + 0x00, 0x18, 0x9F, 0xF2, 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x15, 0x9D, 0xF2, 0x00, 0x16, 0x9F, 0xF5, + 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x15, 0x9D, 0xF5, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x12, 0x9A, 0xF2, + 0x00, 0x64, 0xD7, 0xF9, 0x00, 0x64, 0xD1, 0xF6, 0x00, 0x5D, 0xE6, 0xFF, 0x00, 0x03, 0x43, 0x9A, + 0x00, 0x0D, 0x4B, 0xA5, 0x00, 0x30, 0x7B, 0xCC, 0x00, 0x04, 0x54, 0xC0, 0x00, 0x00, 0x53, 0xC9, + 0x00, 0x03, 0x67, 0xC5, 0x00, 0x25, 0x87, 0xC9, 0x00, 0x28, 0x80, 0xCA, 0x00, 0x27, 0x88, 0xD0, + 0x00, 0x26, 0x90, 0xD7, 0x00, 0x06, 0x74, 0xC9, 0x00, 0x17, 0x8D, 0xCF, 0x00, 0x1E, 0x9C, 0xE1, + 0x00, 0x16, 0x9B, 0xE3, 0x00, 0x1E, 0x9E, 0xDA, 0x00, 0x00, 0x97, 0xDD, 0x00, 0x03, 0xA4, 0xE6, + 0x00, 0x07, 0xB1, 0xEE, 0x00, 0x08, 0xB0, 0xE8, 0x00, 0x09, 0xAE, 0xE2, 0x00, 0x16, 0xB4, 0xE8, + 0x00, 0x23, 0xB9, 0xEF, 0x00, 0x30, 0xBD, 0xF4, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x34, 0xBB, 0xF9, + 0x00, 0x2C, 0xB6, 0xF9, 0x00, 0x80, 0xD2, 0xE8, 0x00, 0xFA, 0xFD, 0xAE, 0x00, 0xFB, 0xFC, 0xB2, + 0x00, 0xFC, 0xFB, 0xB6, 0x00, 0xFC, 0xFC, 0xB6, 0x00, 0xFD, 0xFC, 0xB6, 0x00, 0xFC, 0xFC, 0xB5, + 0x00, 0xFB, 0xFC, 0xB4, 0x00, 0xF3, 0xF4, 0xA4, 0x00, 0xFC, 0xFC, 0xA5, 0x00, 0xFC, 0xFC, 0x9C, + 0x00, 0xFC, 0xFB, 0x93, 0x00, 0xFB, 0xFB, 0x87, 0x00, 0xFA, 0xFA, 0x7A, 0x00, 0xFA, 0xFA, 0x6D, + 0x00, 0xF9, 0xF9, 0x61, 0x00, 0xFA, 0xF7, 0x57, 0x00, 0xFA, 0xF4, 0x4E, 0x00, 0xF6, 0xED, 0x44, + 0x00, 0xF3, 0xE6, 0x3A, 0x00, 0xED, 0xE1, 0x2C, 0x00, 0xE7, 0xDB, 0x1E, 0x00, 0xFF, 0xD1, 0x19, + 0x00, 0x77, 0xB0, 0x8F, 0x00, 0x09, 0xA0, 0xFD, 0x00, 0x14, 0x9D, 0xFD, 0x00, 0x17, 0x9F, 0xF7, + 0x00, 0x1A, 0xA2, 0xF2, 0x00, 0x18, 0xA0, 0xF2, 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x13, 0x9B, 0xF1, + 0x00, 0x10, 0x98, 0xF0, 0x00, 0x11, 0x99, 0xF1, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x12, 0x9A, 0xF2, + 0x00, 0x5F, 0xD4, 0xF7, 0x00, 0x67, 0xDC, 0xFC, 0x00, 0x4F, 0xC1, 0xF0, 0x00, 0x00, 0x2B, 0x8A, + 0x00, 0x2D, 0x6A, 0xBF, 0x00, 0x05, 0x47, 0xAC, 0x00, 0x00, 0x43, 0xB9, 0x00, 0x35, 0x85, 0xC4, + 0x00, 0x06, 0x4D, 0xBB, 0x00, 0x13, 0x61, 0xC3, 0x00, 0x2C, 0x70, 0xCA, 0x00, 0x0F, 0x5A, 0xB3, + 0x00, 0x21, 0x74, 0xCC, 0x00, 0x11, 0x69, 0xC2, 0x00, 0x18, 0x78, 0xC2, 0x00, 0x1C, 0x80, 0xD0, + 0x00, 0x18, 0x7F, 0xD6, 0x00, 0x1A, 0x86, 0xD3, 0x00, 0x10, 0x8F, 0xDD, 0x00, 0x02, 0x8C, 0xDA, + 0x00, 0x04, 0x99, 0xE6, 0x00, 0x04, 0x9B, 0xE1, 0x00, 0x04, 0x9D, 0xDC, 0x00, 0x05, 0xA6, 0xE1, + 0x00, 0x00, 0xA6, 0xDD, 0x00, 0x1F, 0xB6, 0xEE, 0x00, 0x39, 0xBD, 0xF6, 0x00, 0x38, 0xBB, 0xF6, + 0x00, 0x24, 0xB5, 0xFC, 0x00, 0xBF, 0xE8, 0xB8, 0x00, 0xFA, 0xFE, 0xA2, 0x00, 0xFB, 0xFC, 0xA5, + 0x00, 0xFB, 0xFA, 0xA8, 0x00, 0xFC, 0xFB, 0xA7, 0x00, 0xFC, 0xFC, 0xA6, 0x00, 0xFA, 0xFB, 0xA2, + 0x00, 0xF8, 0xFA, 0x9F, 0x00, 0xF5, 0xF7, 0x94, 0x00, 0xFA, 0xFB, 0x92, 0x00, 0xFA, 0xFB, 0x8B, + 0x00, 0xFB, 0xFB, 0x84, 0x00, 0xFA, 0xFA, 0x78, 0x00, 0xF9, 0xF9, 0x6D, 0x00, 0xF9, 0xF9, 0x61, + 0x00, 0xF8, 0xF8, 0x55, 0x00, 0xF8, 0xF6, 0x4B, 0x00, 0xF9, 0xF3, 0x41, 0x00, 0xF5, 0xEC, 0x39, + 0x00, 0xF1, 0xE4, 0x30, 0x00, 0xEE, 0xDD, 0x28, 0x00, 0xEB, 0xD6, 0x1F, 0x00, 0xEE, 0xD9, 0x00, + 0x00, 0x32, 0xA6, 0xE4, 0x00, 0x18, 0xA4, 0xFF, 0x00, 0x28, 0xA4, 0xF3, 0x00, 0x20, 0xA2, 0xF4, + 0x00, 0x18, 0xA0, 0xF4, 0x00, 0x16, 0x9E, 0xF4, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x13, 0x9B, 0xF2, + 0x00, 0x11, 0x99, 0xF2, 0x00, 0x11, 0x99, 0xF2, 0x00, 0x12, 0x9A, 0xF3, 0x00, 0x12, 0x9A, 0xF3, + 0x00, 0x5B, 0xD1, 0xF5, 0x00, 0x62, 0xDF, 0xFA, 0x00, 0x30, 0x8C, 0xCC, 0x00, 0x05, 0x2C, 0x91, + 0x00, 0x0E, 0x49, 0x9A, 0x00, 0x00, 0x36, 0x9E, 0x00, 0x00, 0x38, 0x96, 0x00, 0x14, 0x5E, 0xB6, + 0x00, 0x53, 0xAA, 0xD9, 0x00, 0x30, 0xA6, 0xE2, 0x00, 0x44, 0xBB, 0xEE, 0x00, 0x6D, 0xDD, 0xFF, + 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x6C, 0xD9, 0xF9, 0x00, 0x63, 0xD4, 0xF8, 0x00, 0x54, 0xC4, 0xF3, + 0x00, 0x44, 0xB4, 0xED, 0x00, 0x23, 0x8E, 0xD5, 0x00, 0x11, 0x77, 0xCE, 0x00, 0x00, 0x6C, 0xC6, + 0x00, 0x02, 0x81, 0xDE, 0x00, 0x00, 0x87, 0xDA, 0x00, 0x00, 0x8D, 0xD6, 0x00, 0x06, 0x9B, 0xE1, + 0x00, 0x00, 0x98, 0xDC, 0x00, 0x22, 0xB1, 0xF0, 0x00, 0x35, 0xB9, 0xF4, 0x00, 0x3C, 0xBC, 0xF3, + 0x00, 0x1B, 0xB4, 0xFF, 0x00, 0xFE, 0xFD, 0x89, 0x00, 0xFA, 0xFF, 0x95, 0x00, 0xFA, 0xFC, 0x97, + 0x00, 0xFB, 0xF8, 0x99, 0x00, 0xFB, 0xFB, 0x97, 0x00, 0xFC, 0xFD, 0x95, 0x00, 0xF9, 0xFB, 0x8F, + 0x00, 0xF6, 0xF9, 0x89, 0x00, 0xF7, 0xF9, 0x84, 0x00, 0xF8, 0xF9, 0x7F, 0x00, 0xF9, 0xFA, 0x7A, + 0x00, 0xFA, 0xFA, 0x75, 0x00, 0xF9, 0xF9, 0x6A, 0x00, 0xF8, 0xF9, 0x5F, 0x00, 0xF7, 0xF8, 0x54, + 0x00, 0xF6, 0xF7, 0x49, 0x00, 0xF7, 0xF5, 0x3F, 0x00, 0xF7, 0xF2, 0x35, 0x00, 0xF3, 0xEB, 0x2E, + 0x00, 0xF0, 0xE3, 0x27, 0x00, 0xF0, 0xDA, 0x24, 0x00, 0xF0, 0xD1, 0x21, 0x00, 0xE8, 0xC9, 0x23, + 0x00, 0x03, 0x9B, 0xFF, 0x00, 0x20, 0xA3, 0xF6, 0x00, 0x16, 0xA1, 0xF6, 0x00, 0x16, 0x9F, 0xF7, + 0x00, 0x16, 0x9D, 0xF7, 0x00, 0x15, 0x9C, 0xF6, 0x00, 0x14, 0x9B, 0xF5, 0x00, 0x13, 0x9A, 0xF4, + 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, + 0x00, 0x5A, 0xE2, 0xFE, 0x00, 0x64, 0xD7, 0xFF, 0x00, 0x0C, 0x46, 0x97, 0x00, 0x00, 0x25, 0x82, + 0x00, 0x1D, 0x6A, 0xB7, 0x00, 0x39, 0xA2, 0xDE, 0x00, 0x5E, 0xE5, 0xFF, 0x00, 0x51, 0xD8, 0xFD, + 0x00, 0x4C, 0xD6, 0xF5, 0x00, 0x48, 0xCC, 0xF4, 0x00, 0x5E, 0xCF, 0xF6, 0x00, 0x67, 0xD9, 0xFE, + 0x00, 0x61, 0xD3, 0xF7, 0x00, 0x5A, 0xD1, 0xF8, 0x00, 0x41, 0xCB, 0xFE, 0x00, 0x53, 0xCE, 0xFE, + 0x00, 0x51, 0xCF, 0xF5, 0x00, 0x49, 0xCA, 0xF6, 0x00, 0x49, 0xCD, 0xFF, 0x00, 0x3F, 0xB9, 0xFF, + 0x00, 0x0E, 0x7E, 0xDA, 0x00, 0x00, 0x69, 0xC2, 0x00, 0x05, 0x84, 0xDA, 0x00, 0x01, 0x84, 0xD5, + 0x00, 0x05, 0x8C, 0xD8, 0x00, 0x37, 0xBE, 0xF8, 0x00, 0x3A, 0xBE, 0xF6, 0x00, 0x34, 0xBD, 0xFF, + 0x00, 0x61, 0xC6, 0xE1, 0x00, 0xFB, 0xF3, 0x79, 0x00, 0xF7, 0xFA, 0x82, 0x00, 0xF9, 0xF9, 0x83, + 0x00, 0xFA, 0xF7, 0x83, 0x00, 0xF8, 0xF7, 0x7F, 0x00, 0xF6, 0xF6, 0x7B, 0x00, 0xF7, 0xF8, 0x79, + 0x00, 0xF8, 0xFA, 0x77, 0x00, 0xF7, 0xF9, 0x71, 0x00, 0xF7, 0xF8, 0x6C, 0x00, 0xFB, 0xFC, 0x6B, + 0x00, 0xF8, 0xF8, 0x63, 0x00, 0xF8, 0xF7, 0x5A, 0x00, 0xF7, 0xF7, 0x52, 0x00, 0xF7, 0xF5, 0x48, + 0x00, 0xF6, 0xF4, 0x3F, 0x00, 0xF5, 0xF2, 0x37, 0x00, 0xF4, 0xEF, 0x2F, 0x00, 0xF1, 0xE6, 0x27, + 0x00, 0xEE, 0xDD, 0x20, 0x00, 0xEA, 0xD6, 0x1F, 0x00, 0xF1, 0xCC, 0x10, 0x00, 0x9D, 0xB9, 0x6C, + 0x00, 0x0B, 0x9F, 0xFE, 0x00, 0x1A, 0xA3, 0xF8, 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x16, 0xA0, 0xF8, + 0x00, 0x16, 0x9E, 0xF7, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x14, 0x9B, 0xF6, 0x00, 0x14, 0x9A, 0xF5, + 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, + 0x00, 0x60, 0xD8, 0xF8, 0x00, 0x5A, 0xD8, 0xF7, 0x00, 0x4B, 0xAD, 0xD7, 0x00, 0x68, 0xDD, 0xFF, + 0x00, 0x55, 0xDC, 0xF7, 0x00, 0x55, 0xD6, 0xFC, 0x00, 0x54, 0xCF, 0xFF, 0x00, 0x5C, 0xD5, 0xFF, + 0x00, 0x53, 0xCA, 0xF1, 0x00, 0x4A, 0xCA, 0xF5, 0x00, 0x42, 0xC9, 0xF9, 0x00, 0x47, 0xC9, 0xF7, + 0x00, 0x4B, 0xC8, 0xF5, 0x00, 0x5C, 0xCF, 0xF0, 0x00, 0x46, 0xCC, 0xF8, 0x00, 0x55, 0xCA, 0xFF, + 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x43, 0xC2, 0xFB, 0x00, 0x48, 0xC1, 0xFC, 0x00, 0x3E, 0xBE, 0xF3, + 0x00, 0x43, 0xCB, 0xFA, 0x00, 0x37, 0xB3, 0xFC, 0x00, 0x0B, 0x7B, 0xDD, 0x00, 0x00, 0x6D, 0xC8, + 0x00, 0x0D, 0x7F, 0xD4, 0x00, 0x4D, 0xCC, 0xFF, 0x00, 0x3E, 0xC2, 0xF9, 0x00, 0x2D, 0xC1, 0xFF, + 0x00, 0xA7, 0xDE, 0xA7, 0x00, 0xF7, 0xEB, 0x5B, 0x00, 0xF4, 0xF5, 0x6F, 0x00, 0xF7, 0xF5, 0x6E, + 0x00, 0xF9, 0xF6, 0x6D, 0x00, 0xF5, 0xF3, 0x67, 0x00, 0xF1, 0xF0, 0x60, 0x00, 0xF5, 0xF6, 0x62, + 0x00, 0xFA, 0xFC, 0x65, 0x00, 0xF8, 0xF9, 0x5E, 0x00, 0xF5, 0xF6, 0x58, 0x00, 0xFE, 0xFE, 0x5D, + 0x00, 0xF6, 0xF6, 0x52, 0x00, 0xF6, 0xF5, 0x4B, 0x00, 0xF7, 0xF5, 0x44, 0x00, 0xF6, 0xF3, 0x3D, + 0x00, 0xF5, 0xF1, 0x35, 0x00, 0xF3, 0xEE, 0x2F, 0x00, 0xF0, 0xEB, 0x28, 0x00, 0xEE, 0xE1, 0x20, + 0x00, 0xEC, 0xD8, 0x18, 0x00, 0xE4, 0xD2, 0x1A, 0x00, 0xF3, 0xC6, 0x00, 0x00, 0x51, 0xA8, 0xB4, + 0x00, 0x13, 0xA3, 0xFA, 0x00, 0x15, 0xA3, 0xFB, 0x00, 0x17, 0xA3, 0xFB, 0x00, 0x16, 0xA0, 0xFA, + 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, 0x9C, 0xF7, 0x00, 0x14, 0x9A, 0xF6, + 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, + 0x00, 0x58, 0xCE, 0xF1, 0x00, 0x59, 0xDC, 0xFD, 0x00, 0x55, 0xD5, 0xF8, 0x00, 0x5D, 0xDD, 0xFF, + 0x00, 0x4D, 0xCE, 0xF3, 0x00, 0x4C, 0xCB, 0xF3, 0x00, 0x4C, 0xC8, 0xF3, 0x00, 0x56, 0xD1, 0xFB, + 0x00, 0x58, 0xD3, 0xFC, 0x00, 0x4F, 0xCE, 0xFB, 0x00, 0x47, 0xC9, 0xFA, 0x00, 0x48, 0xC8, 0xF9, + 0x00, 0x49, 0xC7, 0xF8, 0x00, 0x50, 0xCA, 0xF5, 0x00, 0x44, 0xC9, 0xF9, 0x00, 0x4B, 0xC8, 0xFD, + 0x00, 0x3E, 0xC5, 0xF9, 0x00, 0x40, 0xC3, 0xFA, 0x00, 0x43, 0xC2, 0xFA, 0x00, 0x3A, 0xBD, 0xF3, + 0x00, 0x3A, 0xBF, 0xF3, 0x00, 0x3E, 0xC7, 0xFC, 0x00, 0x3A, 0xC6, 0xFC, 0x00, 0x24, 0xA1, 0xE2, + 0x00, 0x1F, 0x8C, 0xD9, 0x00, 0x36, 0xB9, 0xF6, 0x00, 0x26, 0xBB, 0xFA, 0x00, 0x29, 0xBA, 0xF3, + 0x00, 0xCD, 0xD7, 0x56, 0x00, 0xF9, 0xFA, 0x5A, 0x00, 0xD9, 0xDA, 0x48, 0x00, 0xED, 0xEC, 0x58, + 0x00, 0xF9, 0xF5, 0x5F, 0x00, 0xF1, 0xEF, 0x4D, 0x00, 0xE9, 0xE9, 0x3A, 0x00, 0xED, 0xEE, 0x45, + 0x00, 0xF2, 0xF4, 0x50, 0x00, 0xF9, 0xF3, 0x4E, 0x00, 0xED, 0xF0, 0x44, 0x00, 0xFE, 0xF8, 0x4B, + 0x00, 0xF4, 0xF5, 0x41, 0x00, 0xF5, 0xF4, 0x3C, 0x00, 0xF6, 0xF2, 0x37, 0x00, 0xF5, 0xF0, 0x31, + 0x00, 0xF4, 0xEF, 0x2A, 0x00, 0xF2, 0xEA, 0x26, 0x00, 0xF0, 0xE6, 0x22, 0x00, 0xEE, 0xDB, 0x1C, + 0x00, 0xEC, 0xD0, 0x17, 0x00, 0xF0, 0xCC, 0x08, 0x00, 0xF5, 0xC4, 0x08, 0x00, 0x0E, 0xAD, 0xFF, + 0x00, 0x16, 0xA1, 0xF9, 0x00, 0x17, 0xA1, 0xF8, 0x00, 0x18, 0xA1, 0xF8, 0x00, 0x17, 0xA0, 0xF8, + 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9A, 0xF7, + 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, + 0x00, 0x60, 0xD5, 0xFB, 0x00, 0x5A, 0xD3, 0xFA, 0x00, 0x55, 0xD1, 0xFA, 0x00, 0x55, 0xD0, 0xFC, + 0x00, 0x54, 0xCF, 0xFE, 0x00, 0x54, 0xD0, 0xFA, 0x00, 0x53, 0xD1, 0xF6, 0x00, 0x50, 0xCE, 0xF6, + 0x00, 0x4E, 0xCB, 0xF7, 0x00, 0x4C, 0xCA, 0xF9, 0x00, 0x4B, 0xCA, 0xFA, 0x00, 0x49, 0xC8, 0xFB, + 0x00, 0x47, 0xC6, 0xFB, 0x00, 0x45, 0xC6, 0xFB, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, + 0x00, 0x3F, 0xC6, 0xF8, 0x00, 0x3E, 0xC4, 0xF8, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3F, 0xC3, 0xFB, + 0x00, 0x40, 0xC3, 0xFD, 0x00, 0x38, 0xBA, 0xF2, 0x00, 0x3F, 0xC0, 0xF7, 0x00, 0x3D, 0xC2, 0xFA, + 0x00, 0x3A, 0xC5, 0xFD, 0x00, 0x37, 0xC1, 0xF6, 0x00, 0x34, 0xBD, 0xEF, 0x00, 0x2D, 0xBB, 0xEF, + 0x00, 0xDD, 0xD6, 0x21, 0x00, 0xBF, 0xDC, 0x37, 0x00, 0xDD, 0xE0, 0x41, 0x00, 0xEB, 0xEA, 0x49, + 0x00, 0xEA, 0xE3, 0x41, 0x00, 0xED, 0xE8, 0x41, 0x00, 0xF1, 0xED, 0x41, 0x00, 0xED, 0xEC, 0x3F, + 0x00, 0xEA, 0xEB, 0x3C, 0x00, 0xFA, 0xEE, 0x3E, 0x00, 0xE5, 0xEB, 0x31, 0x00, 0xFE, 0xF2, 0x39, + 0x00, 0xF1, 0xF4, 0x31, 0x00, 0xF3, 0xF2, 0x2D, 0x00, 0xF5, 0xF0, 0x29, 0x00, 0xF4, 0xEE, 0x25, + 0x00, 0xF4, 0xEC, 0x20, 0x00, 0xF1, 0xE6, 0x1E, 0x00, 0xEF, 0xE1, 0x1C, 0x00, 0xED, 0xD5, 0x19, + 0x00, 0xEB, 0xC9, 0x16, 0x00, 0xDE, 0xC3, 0x0B, 0x00, 0xBA, 0xBE, 0x39, 0x00, 0x07, 0x98, 0xF8, + 0x00, 0x19, 0x9F, 0xF8, 0x00, 0x19, 0x9F, 0xF6, 0x00, 0x19, 0x9F, 0xF5, 0x00, 0x18, 0x9F, 0xF7, + 0x00, 0x16, 0x9F, 0xF9, 0x00, 0x16, 0x9D, 0xF9, 0x00, 0x16, 0x9C, 0xF9, 0x00, 0x16, 0x9A, 0xF9, + 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, + 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x58, 0xD4, 0xF8, 0x00, 0x54, 0xD3, 0xF8, 0x00, 0x56, 0xD1, 0xF9, + 0x00, 0x57, 0xD0, 0xFA, 0x00, 0x55, 0xD0, 0xF8, 0x00, 0x53, 0xD0, 0xF5, 0x00, 0x50, 0xCE, 0xF7, + 0x00, 0x4D, 0xCC, 0xF9, 0x00, 0x4C, 0xCB, 0xF9, 0x00, 0x4A, 0xCA, 0xFA, 0x00, 0x48, 0xC8, 0xFB, + 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC6, 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, + 0x00, 0x3F, 0xC6, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, 0xC3, 0xF9, 0x00, 0x3E, 0xC2, 0xFA, + 0x00, 0x3E, 0xC1, 0xFB, 0x00, 0x3A, 0xBD, 0xF5, 0x00, 0x3D, 0xC1, 0xF7, 0x00, 0x3A, 0xC0, 0xF8, + 0x00, 0x37, 0xC0, 0xF9, 0x00, 0x36, 0xBD, 0xFF, 0x00, 0x35, 0xBB, 0xFF, 0x00, 0x66, 0xBA, 0x84, + 0x00, 0xAF, 0xD2, 0x18, 0x00, 0xB3, 0xD2, 0x19, 0x00, 0xD2, 0xDA, 0x39, 0x00, 0xE1, 0xDC, 0x3D, + 0x00, 0xD5, 0xD4, 0x31, 0x00, 0xE1, 0xDF, 0x37, 0x00, 0xEC, 0xE9, 0x3E, 0x00, 0xE1, 0xE6, 0x35, + 0x00, 0xE9, 0xE5, 0x35, 0x00, 0xF0, 0xE5, 0x34, 0x00, 0xE4, 0xE3, 0x2A, 0x00, 0xF5, 0xE5, 0x2D, + 0x00, 0xE8, 0xEB, 0x28, 0x00, 0xF0, 0xEE, 0x2A, 0x00, 0xEF, 0xE8, 0x24, 0x00, 0xEC, 0xE4, 0x20, + 0x00, 0xE9, 0xDF, 0x1C, 0x00, 0xEB, 0xDB, 0x1C, 0x00, 0xED, 0xD7, 0x1B, 0x00, 0xE9, 0xCE, 0x18, + 0x00, 0xE5, 0xC5, 0x15, 0x00, 0xE7, 0xBF, 0x03, 0x00, 0x6C, 0xB1, 0x92, 0x00, 0x10, 0x9C, 0xFB, + 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x19, 0xA0, 0xF5, 0x00, 0x1B, 0xA0, 0xF3, 0x00, 0x19, 0x9F, 0xF6, + 0x00, 0x16, 0x9F, 0xF9, 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9B, 0xF8, + 0x00, 0x15, 0x99, 0xF8, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x98, 0xF7, 0x00, 0x14, 0x98, 0xF7, + 0x00, 0x57, 0xD3, 0xF6, 0x00, 0x55, 0xD4, 0xF6, 0x00, 0x53, 0xD5, 0xF6, 0x00, 0x57, 0xD2, 0xF7, + 0x00, 0x5B, 0xD0, 0xF7, 0x00, 0x57, 0xD0, 0xF6, 0x00, 0x54, 0xCF, 0xF5, 0x00, 0x50, 0xCE, 0xF7, + 0x00, 0x4C, 0xCC, 0xFA, 0x00, 0x4B, 0xCB, 0xFA, 0x00, 0x49, 0xCA, 0xFA, 0x00, 0x47, 0xC8, 0xFA, + 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC7, 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, + 0x00, 0x3F, 0xC5, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, + 0x00, 0x3B, 0xC0, 0xF9, 0x00, 0x3C, 0xC1, 0xF8, 0x00, 0x3C, 0xC2, 0xF7, 0x00, 0x38, 0xBE, 0xF6, + 0x00, 0x34, 0xBB, 0xF5, 0x00, 0x35, 0xBC, 0xFD, 0x00, 0x36, 0xBE, 0xFF, 0x00, 0x45, 0xBB, 0xFB, + 0x00, 0x82, 0xC9, 0x2B, 0x00, 0xA0, 0xBE, 0x01, 0x00, 0xB8, 0xC4, 0x20, 0x00, 0xD8, 0xCF, 0x31, + 0x00, 0xD1, 0xD5, 0x31, 0x00, 0xD4, 0xD5, 0x2E, 0x00, 0xD7, 0xD4, 0x2A, 0x00, 0xCC, 0xD7, 0x24, + 0x00, 0xE8, 0xDE, 0x2E, 0x00, 0xE6, 0xDD, 0x29, 0x00, 0xE4, 0xDC, 0x24, 0x00, 0xED, 0xD9, 0x22, + 0x00, 0xDF, 0xE1, 0x20, 0x00, 0xEC, 0xE9, 0x27, 0x00, 0xEA, 0xE0, 0x1E, 0x00, 0xE3, 0xD9, 0x1B, + 0x00, 0xDD, 0xD3, 0x19, 0x00, 0xE4, 0xD0, 0x1A, 0x00, 0xEB, 0xCD, 0x1B, 0x00, 0xE4, 0xC7, 0x17, + 0x00, 0xDE, 0xC2, 0x14, 0x00, 0xEF, 0xBC, 0x00, 0x00, 0x1D, 0xA4, 0xEB, 0x00, 0x19, 0xA0, 0xFF, + 0x00, 0x15, 0xA2, 0xF6, 0x00, 0x19, 0xA2, 0xF3, 0x00, 0x1D, 0xA1, 0xF0, 0x00, 0x19, 0xA0, 0xF4, + 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF8, 0x00, 0x14, 0x9B, 0xF7, + 0x00, 0x14, 0x9A, 0xF7, 0x00, 0x13, 0x99, 0xF6, 0x00, 0x12, 0x98, 0xF5, 0x00, 0x12, 0x98, 0xF5, + 0x00, 0x5E, 0xD5, 0xF8, 0x00, 0x63, 0xD5, 0xFC, 0x00, 0x68, 0xD6, 0xFF, 0x00, 0x5E, 0xD2, 0xFB, + 0x00, 0x55, 0xCF, 0xF8, 0x00, 0x53, 0xCF, 0xF7, 0x00, 0x50, 0xCE, 0xF7, 0x00, 0x4D, 0xCD, 0xF9, + 0x00, 0x4B, 0xCC, 0xFA, 0x00, 0x49, 0xCB, 0xFA, 0x00, 0x48, 0xCA, 0xFA, 0x00, 0x47, 0xC9, 0xFA, + 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x44, 0xC7, 0xFA, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, + 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x3F, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, + 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3A, 0xC1, 0xF8, 0x00, 0x38, 0xBF, 0xF7, + 0x00, 0x35, 0xBD, 0xF6, 0x00, 0x34, 0xBD, 0xFA, 0x00, 0x33, 0xBD, 0xFE, 0x00, 0x22, 0xC3, 0xF5, + 0x00, 0x26, 0xBA, 0xFB, 0x00, 0x53, 0xB0, 0xB1, 0x00, 0x9A, 0xC5, 0x06, 0x00, 0xC0, 0xD2, 0x22, + 0x00, 0xD3, 0xDD, 0x36, 0x00, 0xB3, 0xBA, 0x12, 0x00, 0xC3, 0xC7, 0x1E, 0x00, 0xC4, 0xCE, 0x21, + 0x00, 0xD8, 0xD8, 0x2C, 0x00, 0xDE, 0xDA, 0x2F, 0x00, 0xDC, 0xD5, 0x2A, 0x00, 0xE7, 0xD4, 0x20, + 0x00, 0xD4, 0xD5, 0x1C, 0x00, 0xE8, 0xE4, 0x28, 0x00, 0xEB, 0xE3, 0x24, 0x00, 0xD1, 0xCD, 0x1F, + 0x00, 0xD2, 0xC5, 0x1C, 0x00, 0xDC, 0xC2, 0x01, 0x00, 0xCF, 0xC3, 0x11, 0x00, 0xE2, 0xC1, 0x09, + 0x00, 0xE3, 0xBE, 0x00, 0x00, 0x83, 0xBE, 0x6E, 0x00, 0x0C, 0x9F, 0xF6, 0x00, 0x11, 0x9F, 0xFD, + 0x00, 0x17, 0xA1, 0xF6, 0x00, 0x19, 0xA1, 0xF4, 0x00, 0x1A, 0xA1, 0xF3, 0x00, 0x18, 0xA0, 0xF5, + 0x00, 0x15, 0x9F, 0xF8, 0x00, 0x15, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, 0x14, 0x9C, 0xF7, + 0x00, 0x13, 0x9B, 0xF7, 0x00, 0x11, 0x99, 0xF5, 0x00, 0x10, 0x98, 0xF4, 0x00, 0x10, 0x98, 0xF4, + 0x00, 0x64, 0xD6, 0xFB, 0x00, 0x5D, 0xD4, 0xF9, 0x00, 0x55, 0xD2, 0xF8, 0x00, 0x53, 0xD0, 0xF8, + 0x00, 0x50, 0xCE, 0xF8, 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4D, 0xCD, 0xFA, 0x00, 0x4B, 0xCC, 0xFA, + 0x00, 0x49, 0xCC, 0xFB, 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, 0xCA, 0xFA, 0x00, 0x46, 0xC9, 0xFA, + 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x43, 0xC7, 0xFA, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3F, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, + 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3A, 0xC0, 0xF8, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, + 0x00, 0x36, 0xBF, 0xF8, 0x00, 0x34, 0xBD, 0xF7, 0x00, 0x31, 0xBC, 0xF7, 0x00, 0x33, 0xBB, 0xF8, + 0x00, 0x35, 0xBA, 0xF9, 0x00, 0x2C, 0xBC, 0xFF, 0x00, 0x60, 0xC2, 0xDE, 0x00, 0x93, 0xCB, 0x84, + 0x00, 0xC5, 0xD4, 0x2A, 0x00, 0xCA, 0xD7, 0x2E, 0x00, 0xB0, 0xBA, 0x12, 0x00, 0xB4, 0xBE, 0x16, + 0x00, 0xB8, 0xC2, 0x1A, 0x00, 0xC6, 0xC8, 0x25, 0x00, 0xC4, 0xBE, 0x20, 0x00, 0xDA, 0xC8, 0x16, + 0x00, 0xC9, 0xC8, 0x18, 0x00, 0xDB, 0xD7, 0x21, 0x00, 0xDD, 0xD6, 0x1A, 0x00, 0xB7, 0xBC, 0x0D, + 0x00, 0xC7, 0xBD, 0x03, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xAC, 0xC9, 0x50, 0x00, 0x6B, 0xB8, 0xB0, + 0x00, 0x04, 0xA3, 0xFF, 0x00, 0x12, 0xA3, 0xFA, 0x00, 0x21, 0xA4, 0xF4, 0x00, 0x1D, 0xA2, 0xF5, + 0x00, 0x19, 0xA1, 0xF5, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, 0xA0, 0xF6, 0x00, 0x16, 0x9F, 0xF7, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, 0x13, 0x9C, 0xF6, + 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x99, 0xF4, 0x00, 0x0E, 0x97, 0xF2, 0x00, 0x0E, 0x97, 0xF2, + 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x57, 0xD3, 0xF8, 0x00, 0x53, 0xD1, 0xF8, 0x00, 0x51, 0xD0, 0xF8, + 0x00, 0x4F, 0xCE, 0xF9, 0x00, 0x4D, 0xCE, 0xF9, 0x00, 0x4B, 0xCD, 0xF9, 0x00, 0x4A, 0xCC, 0xFA, + 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, 0xCA, 0xFA, 0x00, 0x46, 0xCA, 0xFA, 0x00, 0x45, 0xC9, 0xF9, + 0x00, 0x44, 0xC8, 0xF9, 0x00, 0x43, 0xC7, 0xF9, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, + 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, 0x00, 0x37, 0xBF, 0xF8, + 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBD, 0xF5, 0x00, 0x34, 0xBB, 0xF3, 0x00, 0x34, 0xB9, 0xF7, + 0x00, 0x34, 0xB7, 0xFA, 0x00, 0x22, 0xB5, 0xFF, 0x00, 0x2E, 0xB4, 0xFE, 0x00, 0x4D, 0xB9, 0xE6, + 0x00, 0x6B, 0xBF, 0xCD, 0x00, 0x27, 0xB1, 0xC5, 0x00, 0x6C, 0xBB, 0x7C, 0x00, 0x89, 0xBD, 0x48, + 0x00, 0xA6, 0xBE, 0x15, 0x00, 0xB9, 0xBF, 0x08, 0x00, 0xCB, 0xBF, 0x00, 0x00, 0xDA, 0xC4, 0x3D, + 0x00, 0xBA, 0xCA, 0x20, 0x00, 0xAD, 0xC6, 0x3E, 0x00, 0x99, 0xBB, 0x53, 0x00, 0x59, 0xAC, 0x8A, + 0x00, 0x35, 0xAA, 0xC3, 0x00, 0x03, 0xB3, 0xFF, 0x00, 0x15, 0xA6, 0xFF, 0x00, 0x20, 0xA4, 0xFF, + 0x00, 0x19, 0xA0, 0xFA, 0x00, 0x1B, 0xA2, 0xF9, 0x00, 0x1C, 0xA4, 0xF8, 0x00, 0x1B, 0xA2, 0xF7, + 0x00, 0x19, 0xA1, 0xF6, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x16, 0x9F, 0xF7, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF6, 0x00, 0x13, 0x9C, 0xF6, + 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x0F, 0x98, 0xF3, 0x00, 0x0F, 0x98, 0xF3, + 0x00, 0x53, 0xD2, 0xF6, 0x00, 0x52, 0xD1, 0xF7, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF8, + 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4C, 0xCE, 0xF9, 0x00, 0x4A, 0xCD, 0xF9, 0x00, 0x48, 0xCC, 0xF9, + 0x00, 0x46, 0xCB, 0xF9, 0x00, 0x46, 0xCA, 0xF9, 0x00, 0x45, 0xC9, 0xF9, 0x00, 0x44, 0xC8, 0xF9, + 0x00, 0x43, 0xC8, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3B, 0xC1, 0xF9, + 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF8, 0x00, 0x36, 0xBE, 0xF8, + 0x00, 0x35, 0xBE, 0xF8, 0x00, 0x36, 0xBC, 0xF4, 0x00, 0x37, 0xBA, 0xEF, 0x00, 0x35, 0xB7, 0xF5, + 0x00, 0x34, 0xB5, 0xFC, 0x00, 0x2B, 0xB5, 0xF8, 0x00, 0x22, 0xB6, 0xF5, 0x00, 0x25, 0xB5, 0xFA, + 0x00, 0x28, 0xB3, 0xFF, 0x00, 0x28, 0xB5, 0xFF, 0x00, 0x28, 0xB7, 0xFF, 0x00, 0x1E, 0xB4, 0xFF, + 0x00, 0x14, 0xB2, 0xFE, 0x00, 0x20, 0xAD, 0xF6, 0x00, 0x3C, 0xB9, 0xFE, 0x00, 0x5A, 0xCB, 0xF0, + 0x00, 0x41, 0xBE, 0xFA, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x11, 0xAD, 0xFE, 0x00, 0x17, 0xAC, 0xFC, + 0x00, 0x1D, 0xAB, 0xFA, 0x00, 0x1D, 0xA9, 0xFD, 0x00, 0x1D, 0xA7, 0xFF, 0x00, 0x1B, 0xA7, 0xFA, + 0x00, 0x18, 0xA8, 0xF4, 0x00, 0x18, 0xA6, 0xF8, 0x00, 0x17, 0xA4, 0xFC, 0x00, 0x19, 0xA2, 0xFA, + 0x00, 0x1A, 0xA1, 0xF7, 0x00, 0x19, 0xA0, 0xF7, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x16, 0x9F, 0xF7, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x13, 0x9C, 0xF6, + 0x00, 0x12, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF4, 0x00, 0x10, 0x99, 0xF3, 0x00, 0x10, 0x99, 0xF3, + 0x00, 0x54, 0xD1, 0xF7, 0x00, 0x52, 0xD0, 0xF8, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF9, + 0x00, 0x4E, 0xCF, 0xF9, 0x00, 0x4B, 0xCE, 0xF9, 0x00, 0x49, 0xCD, 0xF9, 0x00, 0x47, 0xCC, 0xF9, + 0x00, 0x45, 0xCA, 0xF8, 0x00, 0x44, 0xCA, 0xF8, 0x00, 0x44, 0xC9, 0xF8, 0x00, 0x43, 0xC8, 0xF9, + 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3B, 0xC1, 0xF9, + 0x00, 0x39, 0xC0, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBE, 0xF8, + 0x00, 0x34, 0xBD, 0xF8, 0x00, 0x34, 0xBC, 0xF6, 0x00, 0x35, 0xBA, 0xF4, 0x00, 0x34, 0xB8, 0xF8, + 0x00, 0x33, 0xB6, 0xFB, 0x00, 0x2D, 0xB6, 0xF9, 0x00, 0x28, 0xB6, 0xF6, 0x00, 0x29, 0xB5, 0xF8, + 0x00, 0x29, 0xB4, 0xFA, 0x00, 0x29, 0xB4, 0xFB, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x29, 0xB2, 0xF5, + 0x00, 0x29, 0xAF, 0xEF, 0x00, 0x1A, 0xA9, 0xF5, 0x00, 0x9A, 0xCE, 0xD9, 0x00, 0x6C, 0xCF, 0xE8, + 0x00, 0x73, 0xC6, 0xE3, 0x00, 0x7F, 0xC9, 0xDD, 0x00, 0x18, 0xAD, 0xFB, 0x00, 0x1B, 0xAC, 0xF9, + 0x00, 0x1F, 0xAB, 0xF7, 0x00, 0x1E, 0xA9, 0xF9, 0x00, 0x1D, 0xA7, 0xFB, 0x00, 0x1C, 0xA7, 0xF8, + 0x00, 0x1A, 0xA6, 0xF6, 0x00, 0x19, 0xA5, 0xF8, 0x00, 0x19, 0xA3, 0xFA, 0x00, 0x1A, 0xA2, 0xF9, + 0x00, 0x1A, 0xA1, 0xF8, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF7, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x10, 0x9A, 0xF4, + 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, + 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, + 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, + 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, + 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, + 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, + 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, + 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x29, 0xB2, 0xF9, + 0x00, 0x28, 0xB2, 0xFB, 0x00, 0x30, 0xB2, 0xF6, 0x00, 0x11, 0xA8, 0xFD, 0x00, 0x7E, 0xD3, 0xE1, + 0x00, 0x58, 0xBB, 0xE6, 0x00, 0x15, 0xAA, 0xFB, 0x00, 0x1F, 0xAD, 0xF7, 0x00, 0x1F, 0xAB, 0xF6, + 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, + 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, + 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, + 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, + 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, + 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, + 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, + 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, + 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, + 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, + 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF8, + 0x00, 0x29, 0xB1, 0xFA, 0x00, 0x2D, 0xB5, 0xF4, 0x00, 0x1D, 0xB4, 0xF5, 0x00, 0x23, 0x9B, 0xFF, + 0x00, 0x1F, 0xB5, 0xF2, 0x00, 0x0B, 0xAB, 0xFB, 0x00, 0x1E, 0xAC, 0xF6, 0x00, 0x1F, 0xAB, 0xF6, + 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, + 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, + 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, + 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, + 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, + 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, + 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, + 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, + 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, + 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, + 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, + 0x00, 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, 0xFA, 0x00, 0x1E, 0xAD, 0xF6, + 0x00, 0x23, 0xAE, 0xF3, 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, 0xAA, 0xF5, + 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, + 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, + 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, + 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, + 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, + 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, + 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, + 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, + 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, + 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, + 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, + 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, + 0x00, 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, 0xFA, 0x00, 0x1E, 0xAD, 0xF6, + 0x00, 0x23, 0xAE, 0xF3, 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, 0xAA, 0xF5, + 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, + 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, + 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, + 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, +]; + +const CONVERTED_TO_BGRX_WITH_PARTIALLY_COVERED_RECTANGLE_BUFFER: [u8; 64 * 64 * 4] = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, + 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, + 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, + 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, + 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, + 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, + 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, + 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, + 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, + 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, + 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, + 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, + 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, + 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, + 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, + 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, + 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, + 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, + 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, + 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, + 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, + 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, + 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, + 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, + 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, + 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, + 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, + 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, + 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, + 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, + 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, + 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, + 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, + 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, + 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, + 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, + 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, + 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, + 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, + 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, + 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, + 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, + 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, + 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, + 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, + 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, + 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, + 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, + 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, + 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, + 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, + 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, + 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, + 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, + 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, + 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, + 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, + 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, + 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, + 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, + 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, + 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, + 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, + 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, + 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, + 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, + 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, + 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, + 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, + 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, + 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, + 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, + 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, + 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, + 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, + 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, + 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, + 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, + 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, + 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, + 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, + 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, + 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, + 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, + 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, + 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, + 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, + 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, + 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, + 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, + 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, + 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, + 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, + 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, + 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, + 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, + 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, + 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, + 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, + 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, + 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, + 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, + 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, + 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, + 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, + 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +]; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp/src/codecs/rfx/quantization.rs index 475e8a58..945d1198 100644 --- a/ironrdp/src/codecs/rfx/quantization.rs +++ b/ironrdp/src/codecs/rfx/quantization.rs @@ -7,7 +7,7 @@ const THIRD_LEVEL_SIZE: usize = 64; const FISRT_LEVEL_SUBBANDS_COUNT: usize = 3; const SECOND_LEVEL_SUBBANDS_COUNT: usize = 3; -pub fn decode(buffer: &mut [i16], quant: Quant) { +pub fn decode(buffer: &mut [i16], quant: &Quant) { let (first_level, buffer) = buffer.split_at_mut(FISRT_LEVEL_SUBBANDS_COUNT * FIRST_LEVEL_SIZE); let (second_level, third_level) = buffer.split_at_mut(SECOND_LEVEL_SUBBANDS_COUNT * SECOND_LEVEL_SIZE); @@ -59,7 +59,7 @@ mod tests { hh1: 0, }; - decode(&mut buffer, quant); + decode(&mut buffer, &quant); assert_eq!(expected.as_ref(), buffer.as_ref()); } @@ -80,7 +80,7 @@ mod tests { hh1: 9, }; - decode(&mut buffer, quant); + decode(&mut buffer, &quant); assert_eq!(expected, buffer.as_ref()); } diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs index ba3e036e..95d54e9e 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -19,6 +19,14 @@ impl Region { } } + pub fn rectangles(&self) -> &[Rectangle] { + self.rectangles.as_slice() + } + + pub fn extents(&self) -> &Rectangle { + &self.extents + } + pub fn union_rectangle(&mut self, rectangle: Rectangle) { if self.rectangles.is_empty() { *self = Self::from(rectangle); @@ -82,8 +90,7 @@ impl Region { .iter() .take_while(|r| r.top < rectangle.bottom) .map(|r| r.intersect(&rectangle)) - .filter(Option::is_some) - .map(|r| r.unwrap()) + .filter_map(|v| v) .collect::>(); let extents = Rectangle::union_all(rectangles.as_slice()); diff --git a/ironrdp/src/codecs/rfx/tests.rs b/ironrdp/src/codecs/rfx/tests.rs index 6abd5d22..c2e63a3a 100644 --- a/ironrdp/src/codecs/rfx/tests.rs +++ b/ironrdp/src/codecs/rfx/tests.rs @@ -21,6 +21,11 @@ const SYNC_PDU_BUFFER_WITH_BIG_DATA_LENGTH: [u8; 12] = [ 0xca, 0xac, 0xcc, 0xca, // TS_RFX_SYNC::magic = WF_MAGIC 0x00, 0x01, // TS_RFX_SYNC::version = 0x0100 ]; +const SYNC_PDU_BUFFER_WITH_SMALL_BUFFER: [u8; 10] = [ + 0xc6, 0xcc, // TS_RFX_SYNC::BlockT::blockType = WBT_REGION + 0x0c, 0x00, 0x00, 0x00, // TS_RFX_SYNC::BlockT::blockLen = 0x0c + 0x01, 0x00, 0x00, 0x00, +]; const CODEC_VERSIONS_PDU_BUFFER: [u8; 10] = [ 0xc1, 0xcc, // TS_RFX_CODEC_VERSIONS::BlockT::blockType = WBT_CODEC_VERSION 0x0a, 0x00, 0x00, 0x00, // TS_RFX_CODEC_VERSIONS::BlockT::blockLen = 10 @@ -309,6 +314,11 @@ fn from_buffer_for_block_header_returns_error_on_data_length_greater_then_availa assert!(SyncPdu::from_buffer(SYNC_PDU_BUFFER_WITH_BIG_DATA_LENGTH.as_ref()).is_err(),); } +#[test] +fn from_buffer_for_pdu_with_codec_channel_header_returns_error_on_small_buffer() { + assert!(RegionPdu::from_buffer(SYNC_PDU_BUFFER_WITH_SMALL_BUFFER.as_ref()).is_err()); +} + #[test] fn from_buffer_correctly_parses_sync_pdu() { assert_eq!( diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index c2a82158..8ca1a0e2 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -4,14 +4,14 @@ pub mod mcs; pub mod nego; pub mod rdp; +mod basic_output; mod ber; -mod fast_path; mod per; mod utils; mod x224; pub use crate::{ - fast_path::{parse_fast_path_header, FastPath, FastPathError}, + basic_output::{fast_path, surface_commands}, mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}, nego::*, rdp::{ @@ -19,6 +19,7 @@ pub use crate::{ ServerDemandActive, ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, VirtualChannel, }, + utils::Rectangle, x224::*, }; @@ -32,13 +33,78 @@ pub trait PduParsing { fn buffer_length(&self) -> usize; } -pub trait PduBufferParsing: Sized { +pub trait PduBufferParsing<'a>: Sized { type Error; - fn from_buffer(mut buffer: &[u8]) -> Result { + fn from_buffer(mut buffer: &'a [u8]) -> Result { Self::from_buffer_consume(&mut buffer) } - fn from_buffer_consume(buffer: &mut &[u8]) -> Result; + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result; fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error>; fn buffer_length(&self) -> usize; } + +pub enum RdpPdu { + X224(x224::Data), + FastPath(fast_path::FastPathHeader), +} + +impl PduParsing for RdpPdu { + type Error = RdpError; + + fn from_buffer(mut stream: impl std::io::Read) -> Result { + use bit_field::BitField; + use byteorder::ReadBytesExt; + use num_traits::FromPrimitive; + + let header = stream.read_u8()?; + let action = header.get_bits(0..2); + let action = Action::from_u8(action).ok_or(RdpError::InvalidActionCode(action))?; + + match action { + Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version( + &mut stream, + header, + )?)), + Action::FastPath => Ok(Self::FastPath( + fast_path::FastPathHeader::from_buffer_with_header(&mut stream, header)?, + )), + } + } + + fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error> { + match self { + Self::X224(x224) => x224.to_buffer(stream).map_err(RdpError::from), + Self::FastPath(fast_path) => fast_path.to_buffer(stream).map_err(RdpError::from), + } + } + + fn buffer_length(&self) -> usize { + match self { + Self::X224(x224) => x224.buffer_length(), + Self::FastPath(fast_path) => fast_path.buffer_length(), + } + } +} + +#[derive(Debug, failure::Fail)] +pub enum RdpError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] std::io::Error), + #[fail(display = "X224 error: {}", _0)] + X224Error(#[fail(cause)] nego::NegotiationError), + #[fail(display = "Surface Commands error: {}", _0)] + FastPathError(#[fail(cause)] fast_path::FastPathError), + #[fail(display = "Received invalid action code: {}", _0)] + InvalidActionCode(u8), +} + +impl_from_error!(std::io::Error, RdpError, RdpError::IOError); +impl_from_error!(nego::NegotiationError, RdpError, RdpError::X224Error); +impl_from_error!(fast_path::FastPathError, RdpError, RdpError::FastPathError); + +#[derive(Debug, Copy, Clone, PartialEq, num_derive::FromPrimitive, num_derive::ToPrimitive)] +enum Action { + FastPath = 0x0, + X224 = 0x3, +} From 478ab33b4ba4f2403f9ee96596ef1317552fbbfa Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:36:54 +0200 Subject: [PATCH 0030/1273] ironrdp: implement Fast-Path with Surface Commands Update --- ironrdp/src/basic_output.rs | 2 + ironrdp/src/basic_output/fast_path.rs | 258 +++++++++++++++ ironrdp/src/basic_output/fast_path/test.rs | 117 +++++++ ironrdp/src/basic_output/surface_commands.rs | 295 ++++++++++++++++++ .../basic_output/surface_commands/tests.rs | 156 +++++++++ ironrdp/src/fast_path.rs | 58 ---- ironrdp/src/fast_path/test.rs | 25 -- 7 files changed, 828 insertions(+), 83 deletions(-) create mode 100644 ironrdp/src/basic_output.rs create mode 100644 ironrdp/src/basic_output/fast_path.rs create mode 100644 ironrdp/src/basic_output/fast_path/test.rs create mode 100644 ironrdp/src/basic_output/surface_commands.rs create mode 100644 ironrdp/src/basic_output/surface_commands/tests.rs delete mode 100644 ironrdp/src/fast_path.rs delete mode 100644 ironrdp/src/fast_path/test.rs diff --git a/ironrdp/src/basic_output.rs b/ironrdp/src/basic_output.rs new file mode 100644 index 00000000..0e6c00a9 --- /dev/null +++ b/ironrdp/src/basic_output.rs @@ -0,0 +1,2 @@ +pub mod fast_path; +pub mod surface_commands; diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs new file mode 100644 index 00000000..0636e643 --- /dev/null +++ b/ironrdp/src/basic_output/fast_path.rs @@ -0,0 +1,258 @@ +#[cfg(test)] +mod test; + +use std::io::{self, Write}; + +use bit_field::BitField; +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; +use crate::{impl_from_error, per, utils::SplitTo, PduBufferParsing, PduParsing}; + +/// Implements the Fast-Path RDP message header PDU. +#[derive(Debug, Clone, PartialEq)] +pub struct FastPathHeader { + pub flags: EncryptionFlags, + pub data_length: usize, +} + +impl FastPathHeader { + pub fn from_buffer_with_header( + mut stream: impl io::Read, + header: u8, + ) -> Result { + let flags = EncryptionFlags::from_bits_truncate(header.get_bits(6..8)); + + let (length, sizeof_length) = per::read_length(&mut stream)?; + if length < sizeof_length as u16 + 1 { + return Err(FastPathError::NullLength { + bytes_read: sizeof_length + 1, + }); + } + let data_length = length as usize - sizeof_length - 1; + + Ok(FastPathHeader { flags, data_length }) + } +} + +impl PduParsing for FastPathHeader { + type Error = FastPathError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let header = stream.read_u8()?; + + Self::from_buffer_with_header(&mut stream, header) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut header = 0u8; + header.set_bits(0..2, 0); // fast-path action + header.set_bits(6..8, self.flags.bits()); + stream.write_u8(header)?; + + per::write_length(stream, (self.data_length + self.buffer_length()) as u16)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 1 + per::sizeof_length(self.data_length as u16) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FastPathUpdatePdu<'a> { + pub fragmentation: Fragmentation, + pub update_code: UpdateCode, + pub data: &'a [u8], +} + +impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { + type Error = FastPathError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let header = buffer.read_u8()?; + + let update_code = header.get_bits(0..4); + let update_code = UpdateCode::from_u8(update_code) + .ok_or(FastPathError::InvalidUpdateCode(update_code))?; + + let fragmentation = header.get_bits(4..6); + let fragmentation = Fragmentation::from_u8(fragmentation) + .ok_or(FastPathError::InvalidFragmentation(fragmentation))?; + + let compression = Compression::from_bits_truncate(header.get_bits(6..8)); + if compression.contains(Compression::COMPRESSION_USED) { + return Err(FastPathError::CompressionNotSupported); + } + + let data_length = usize::from(buffer.read_u16::()?); + if buffer.len() < data_length { + return Err(FastPathError::InvalidDataLength { + expected: data_length, + actual: buffer.len(), + }); + } + let data = buffer.split_to(data_length); + + Ok(Self { + fragmentation, + update_code, + data, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + let mut header = 0u8; + header.set_bits(0..4, self.update_code.to_u8().unwrap()); + header.set_bits(4..6, self.fragmentation.to_u8().unwrap()); + buffer.write_u8(header)?; + buffer.write_u16::(self.data.len() as u16)?; + buffer.write_all(self.data)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 3 + self.data.len() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum FastPathUpdate<'a> { + SurfaceCommands(Vec>), +} + +impl<'a> FastPathUpdate<'a> { + pub fn from_buffer_with_code( + mut buffer: &'a [u8], + code: UpdateCode, + ) -> Result { + Self::from_buffer_consume_with_code(&mut buffer, code) + } + + pub fn from_buffer_consume_with_code( + buffer: &mut &'a [u8], + code: UpdateCode, + ) -> Result { + match code { + UpdateCode::SurfaceCommands => { + let mut commands = Vec::with_capacity(1); + while buffer.len() >= SURFACE_COMMAND_HEADER_SIZE { + commands.push(SurfaceCommand::from_buffer_consume(buffer)?); + } + + Ok(Self::SurfaceCommands(commands)) + } + _ => Err(FastPathError::UnsupportedFastPathUpdate(code)), + } + } + + pub fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), FastPathError> { + match self { + Self::SurfaceCommands(ref commands) => { + for command in commands { + command.to_buffer_consume(buffer)?; + } + } + } + + Ok(()) + } + + pub fn buffer_length(&self) -> usize { + match self { + Self::SurfaceCommands(commands) => { + commands.iter().map(|c| c.buffer_length()).sum::() + } + } + } + + pub fn as_short_name(&self) -> &str { + match self { + Self::SurfaceCommands(_) => "Surface Commands", + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum UpdateCode { + Orders = 0x0, + Bitmap = 0x1, + Palette = 0x2, + Synchronize = 0x3, + SurfaceCommands = 0x4, + HiddenPointer = 0x5, + DefaultPointer = 0x6, + PositionPointer = 0x8, + ColorPointer = 0x9, + CachedPointer = 0xa, + NewPointer = 0xb, + LargePointer = 0xc, +} + +impl<'a> From<&FastPathUpdate<'a>> for UpdateCode { + fn from(update: &FastPathUpdate<'_>) -> Self { + match update { + FastPathUpdate::SurfaceCommands(_) => Self::SurfaceCommands, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum Fragmentation { + Single = 0x0, + Last = 0x1, + First = 0x2, + Next = 0x3, +} + +bitflags! { + pub struct EncryptionFlags: u8 { + const SECURE_CHECKSUM = 0x1; + const ENCRYPTED = 0x2; + } +} + +bitflags! { + pub struct Compression: u8 { + const COMPRESSION_USED = 0x2; + } +} + +/// The type of a Fast-Path parsing error. Includes *length error* and *I/O error*. +#[derive(Debug, Fail)] +pub enum FastPathError { + /// May be used in I/O related errors such as receiving empty Fast-Path packages. + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Surface Commands error: {}", _0)] + SurfaceCommandsError(#[fail(cause)] SurfaceCommandsError), + /// Used in the length-related error during Fast-Path parsing. + #[fail(display = "Received invalid Fast-Path package with 0 length")] + NullLength { bytes_read: usize }, + #[fail(display = "Received invalid update code: {}", _0)] + InvalidUpdateCode(u8), + #[fail(display = "Received invalid fragmentation: {}", _0)] + InvalidFragmentation(u8), + #[fail(display = "Received compressed Fast-Path package")] + CompressionNotSupported, + #[fail( + display = "Input buffer is shorter then the data length: {} < {}", + actual, expected + )] + InvalidDataLength { expected: usize, actual: usize }, + #[fail(display = "Received unsupported Fast-Path Update: {:?}", _0)] + UnsupportedFastPathUpdate(UpdateCode), +} + +impl_from_error!(io::Error, FastPathError, FastPathError::IOError); +impl_from_error!( + SurfaceCommandsError, + FastPathError, + FastPathError::SurfaceCommandsError +); diff --git a/ironrdp/src/basic_output/fast_path/test.rs b/ironrdp/src/basic_output/fast_path/test.rs new file mode 100644 index 00000000..c2b997f6 --- /dev/null +++ b/ironrdp/src/basic_output/fast_path/test.rs @@ -0,0 +1,117 @@ +use lazy_static::lazy_static; + +use super::*; + +const FAST_PATH_HEADER_WITH_SHORT_LEN_BUFFER: [u8; 2] = [0x80, 0x08]; +const FAST_PATH_HEADER_WITH_LONG_LEN_BUFFER: [u8; 3] = [0x80, 0x81, 0xE7]; +const FAST_PATH_UPDATE_PDU_BUFFER: [u8; 19] = [ + 0x4, 0x10, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, +]; +const FAST_PATH_UPDATE_PDU_WITH_LONG_LEN_BUFFER: [u8; 19] = [ + 0x4, 0xff, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, +]; + +const FAST_PATH_HEADER_WITH_SHORT_LEN_PDU: FastPathHeader = FastPathHeader { + flags: EncryptionFlags::ENCRYPTED, + data_length: 6, +}; +const FAST_PATH_HEADER_WITH_LONG_LEN_PDU: FastPathHeader = FastPathHeader { + flags: EncryptionFlags::ENCRYPTED, + data_length: 484, +}; + +lazy_static! { + static ref FAST_PATH_UPDATE_PDU: FastPathUpdatePdu<'static> = FastPathUpdatePdu { + fragmentation: Fragmentation::Single, + update_code: UpdateCode::SurfaceCommands, + data: &FAST_PATH_UPDATE_PDU_BUFFER[3..], + }; +} + +#[test] +fn from_buffer_correctly_parses_fast_path_header_with_short_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_SHORT_LEN_PDU, + FastPathHeader::from_buffer(FAST_PATH_HEADER_WITH_SHORT_LEN_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_fast_path_header_with_short_length() { + let expected = FAST_PATH_HEADER_WITH_SHORT_LEN_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FAST_PATH_HEADER_WITH_SHORT_LEN_PDU + .to_buffer(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_fast_path_header_with_short_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_SHORT_LEN_BUFFER.len(), + FAST_PATH_HEADER_WITH_SHORT_LEN_PDU.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_fast_path_header_with_long_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_LONG_LEN_PDU, + FastPathHeader::from_buffer(FAST_PATH_HEADER_WITH_LONG_LEN_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_fast_path_header_with_long_length() { + let expected = FAST_PATH_HEADER_WITH_LONG_LEN_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FAST_PATH_HEADER_WITH_LONG_LEN_PDU + .to_buffer(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_fast_path_header_with_long_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_LONG_LEN_BUFFER.len(), + FAST_PATH_HEADER_WITH_LONG_LEN_PDU.buffer_length() + ); +} + +#[test] +fn from_buffer_correctly_parses_fast_path_update() { + assert_eq!( + *FAST_PATH_UPDATE_PDU, + FastPathUpdatePdu::from_buffer(FAST_PATH_UPDATE_PDU_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn from_buffer_returns_error_on_long_length_for_fast_path_update() { + assert!( + FastPathUpdatePdu::from_buffer(FAST_PATH_UPDATE_PDU_WITH_LONG_LEN_BUFFER.as_ref()).is_err() + ); +} + +#[test] +fn to_buffer_correctly_serializes_fast_path_update() { + let expected = FAST_PATH_UPDATE_PDU_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FAST_PATH_UPDATE_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_fast_path_update() { + assert_eq!( + FAST_PATH_UPDATE_PDU_BUFFER.len(), + FAST_PATH_UPDATE_PDU.buffer_length() + ); +} diff --git a/ironrdp/src/basic_output/surface_commands.rs b/ironrdp/src/basic_output/surface_commands.rs new file mode 100644 index 00000000..fd78a74e --- /dev/null +++ b/ironrdp/src/basic_output/surface_commands.rs @@ -0,0 +1,295 @@ +#[cfg(test)] +mod tests; + +use std::io::{self, Write}; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, utils::Rectangle, utils::SplitTo, PduBufferParsing, PduParsing}; + +pub const SURFACE_COMMAND_HEADER_SIZE: usize = 2; + +#[derive(Debug, Clone, PartialEq)] +pub enum SurfaceCommand<'a> { + SetSurfaceBits(SurfaceBitsPdu<'a>), + FrameMarker(FrameMarkerPdu), + StreamSurfaceBits(SurfaceBitsPdu<'a>), +} + +impl<'a> PduBufferParsing<'a> for SurfaceCommand<'a> { + type Error = SurfaceCommandsError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let cmd_type = buffer.read_u16::()?; + let cmd_type = SurfaceCommandType::from_u16(cmd_type) + .ok_or(SurfaceCommandsError::InvalidSurfaceCommandType(cmd_type))?; + + match cmd_type { + SurfaceCommandType::SetSurfaceBits => Ok(Self::SetSurfaceBits( + SurfaceBitsPdu::from_buffer_consume(buffer)?, + )), + SurfaceCommandType::FrameMarker => Ok(Self::FrameMarker( + FrameMarkerPdu::from_buffer_consume(buffer)?, + )), + SurfaceCommandType::StreamSurfaceBits => Ok(Self::StreamSurfaceBits( + SurfaceBitsPdu::from_buffer_consume(buffer)?, + )), + } + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + let cmd_type = SurfaceCommandType::from(self); + buffer.write_u16::(cmd_type.to_u16().unwrap())?; + + match self { + Self::SetSurfaceBits(pdu) | Self::StreamSurfaceBits(pdu) => { + pdu.to_buffer_consume(buffer) + } + Self::FrameMarker(pdu) => pdu.to_buffer_consume(buffer), + } + } + + fn buffer_length(&self) -> usize { + SURFACE_COMMAND_HEADER_SIZE + + match self { + Self::SetSurfaceBits(pdu) | Self::StreamSurfaceBits(pdu) => pdu.buffer_length(), + Self::FrameMarker(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct SurfaceBitsPdu<'a> { + pub destination: Rectangle, + pub extended_bitmap_data: ExtendedBitmapDataPdu<'a>, +} + +impl<'a> PduBufferParsing<'a> for SurfaceBitsPdu<'a> { + type Error = SurfaceCommandsError; + + fn from_buffer_consume(mut buffer: &mut &'a [u8]) -> Result { + let destination = Rectangle::from_buffer(&mut buffer)?; + let extended_bitmap_data = ExtendedBitmapDataPdu::from_buffer_consume(buffer)?; + + Ok(Self { + destination, + extended_bitmap_data, + }) + } + + fn to_buffer_consume(&self, mut buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + self.destination.to_buffer(&mut buffer)?; + self.extended_bitmap_data.to_buffer_consume(buffer)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + self.extended_bitmap_data.buffer_length() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameMarkerPdu { + pub frame_action: FrameAction, + pub frame_id: u32, +} + +impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { + type Error = SurfaceCommandsError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let frame_action = buffer.read_u16::()?; + let frame_action = FrameAction::from_u16(frame_action) + .ok_or(SurfaceCommandsError::InvalidFrameAction(frame_action))?; + let frame_id = buffer.read_u32::()?; + + Ok(Self { + frame_action, + frame_id, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u16::(self.frame_action.to_u16().unwrap())?; + buffer.write_u32::(self.frame_id)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct ExtendedBitmapDataPdu<'a> { + pub bpp: u8, + pub codec_id: u8, + pub width: u16, + pub height: u16, + pub header: Option, + pub data: &'a [u8], +} + +impl<'a> PduBufferParsing<'a> for ExtendedBitmapDataPdu<'a> { + type Error = SurfaceCommandsError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let bpp = buffer.read_u8()?; + let flags = BitmapDataFlags::from_bits_truncate(buffer.read_u8()?); + let _reserved = buffer.read_u8()?; + let codec_id = buffer.read_u8()?; + let width = buffer.read_u16::()?; + let height = buffer.read_u16::()?; + let data_length = buffer.read_u32::()? as usize; + let header = if flags.contains(BitmapDataFlags::COMPRESSED_BITMAP_HEADER_PRESENT) { + Some(BitmapDataHeader::from_buffer_consume(buffer)?) + } else { + None + }; + + if buffer.len() < data_length { + return Err(SurfaceCommandsError::InvalidDataLength { + expected: data_length, + actual: buffer.len(), + }); + } + let data = buffer.split_to(data_length); + + Ok(Self { + bpp, + codec_id, + width, + height, + header, + data, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u8(self.bpp)?; + + let flags = if self.header.is_some() { + BitmapDataFlags::COMPRESSED_BITMAP_HEADER_PRESENT + } else { + BitmapDataFlags::empty() + }; + buffer.write_u8(flags.bits())?; + buffer.write_u8(0)?; // reserved + buffer.write_u8(self.codec_id)?; + buffer.write_u16::(self.width)?; + buffer.write_u16::(self.height)?; + buffer.write_u32::(self.data.len() as u32)?; + if let Some(ref header) = self.header { + header.to_buffer_consume(buffer)?; + } + buffer.write_all(self.data)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 12 + self + .header + .as_ref() + .map(PduBufferParsing::buffer_length) + .unwrap_or(0) + + self.data.len() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct BitmapDataHeader { + pub high_unique_id: u32, + pub low_unique_id: u32, + pub tm_milliseconds: u64, + pub tm_seconds: u64, +} + +impl<'a> PduBufferParsing<'a> for BitmapDataHeader { + type Error = SurfaceCommandsError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let high_unique_id = buffer.read_u32::()?; + let low_unique_id = buffer.read_u32::()?; + let tm_milliseconds = buffer.read_u64::()?; + let tm_seconds = buffer.read_u64::()?; + + Ok(Self { + high_unique_id, + low_unique_id, + tm_milliseconds, + tm_seconds, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u32::(self.high_unique_id)?; + buffer.write_u32::(self.low_unique_id)?; + buffer.write_u64::(self.tm_milliseconds)?; + buffer.write_u64::(self.tm_seconds)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 24 + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +enum SurfaceCommandType { + SetSurfaceBits = 0x01, + FrameMarker = 0x04, + StreamSurfaceBits = 0x06, +} + +impl<'a> From<&SurfaceCommand<'a>> for SurfaceCommandType { + fn from(command: &SurfaceCommand<'_>) -> Self { + match command { + SurfaceCommand::SetSurfaceBits(_) => Self::SetSurfaceBits, + SurfaceCommand::FrameMarker(_) => Self::FrameMarker, + SurfaceCommand::StreamSurfaceBits(_) => Self::StreamSurfaceBits, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +pub enum FrameAction { + Begin = 0x00, + End = 0x01, +} + +bitflags! { + struct BitmapDataFlags: u8 { + const COMPRESSED_BITMAP_HEADER_PRESENT = 0x01; + } +} + +#[derive(Debug, Fail)] +pub enum SurfaceCommandsError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid Surface Command type: {}", _0)] + InvalidSurfaceCommandType(u16), + #[fail(display = "Invalid Frame Marker action: {}", _0)] + InvalidFrameAction(u16), + #[fail( + display = "Input buffer is shorter then the data length: {} < {}", + actual, expected + )] + InvalidDataLength { expected: usize, actual: usize }, +} + +impl_from_error!( + io::Error, + SurfaceCommandsError, + SurfaceCommandsError::IOError +); diff --git a/ironrdp/src/basic_output/surface_commands/tests.rs b/ironrdp/src/basic_output/surface_commands/tests.rs new file mode 100644 index 00000000..f16e8cd1 --- /dev/null +++ b/ironrdp/src/basic_output/surface_commands/tests.rs @@ -0,0 +1,156 @@ +use lazy_static::lazy_static; + +use super::*; + +const FRAME_MARKER_BUFFER: [u8; 8] = [0x4, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0]; + +const SURFACE_BITS_BUFFER: [u8; 1217] = [ + 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7, 0x38, 0x4, 0x20, 0x0, 0x0, 0x3, 0x80, 0x7, 0x38, 0x4, + 0xab, 0x4, 0x0, 0x0, 0xc4, 0xcc, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, + 0xc6, 0xcc, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x70, 0x7, 0xa0, 0x0, 0x10, 0x0, + 0xc0, 0x0, 0xc1, 0xca, 0x1, 0x0, 0xc7, 0xcc, 0x7e, 0x4, 0x0, 0x0, 0x1, 0x0, 0xc2, 0xca, 0x0, + 0x0, 0x51, 0x50, 0x1, 0x40, 0x4, 0x0, 0x63, 0x4, 0x0, 0x0, 0x66, 0x66, 0x77, 0x88, 0x98, 0xc3, + 0xca, 0x25, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x2, 0x0, 0x0, 0x1, 0xd, 0x0, 0x5, 0x0, + 0x6, 0x41, 0xb8, 0xbc, 0x5e, 0x7e, 0x2f, 0x3f, 0x17, 0x9f, 0x8b, 0xc3, 0xf9, 0x7c, 0xbe, 0x7e, + 0x7e, 0x2f, 0x43, 0xb3, 0x85, 0x68, 0xe4, 0x70, 0x46, 0x8e, 0x47, 0xa, 0xc8, 0xe4, 0x60, 0x46, + 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, + 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x56, + 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x0, 0xcd, 0xb0, 0x34, 0x1a, 0x1a, 0x1a, 0x34, 0xd6, 0xb7, + 0xe7, 0xc7, 0xc7, 0x4e, 0x9d, 0x3a, 0x69, 0x0, 0x1, 0xf, 0x20, 0xc8, 0x32, 0x19, 0x18, 0x0, + 0xf, 0xe6, 0x43, 0xe4, 0x7c, 0x8f, 0xa7, 0xd7, 0xdf, 0xbf, 0x89, 0x32, 0x8e, 0x82, 0x13, 0xff, + 0xe0, 0x84, 0x82, 0x1f, 0xfe, 0x60, 0x1c, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, + 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0xa5, 0x4, 0x1f, 0xfe, 0x60, 0x5, 0x14, 0x10, 0x7e, 0x30, 0x0, + 0x18, 0xdc, 0x2e, 0x2e, 0x5c, 0xdb, 0x7f, 0x8f, 0xd3, 0xc9, 0x46, 0x0, 0x22, 0x10, 0x10, 0xa, + 0x13, 0xcb, 0xcb, 0x20, 0x0, 0x7e, 0x11, 0x13, 0xa8, 0x82, 0xd8, 0x8d, 0xc4, 0xc5, 0x88, 0x4f, + 0xf4, 0x9, 0xff, 0xff, 0xd1, 0x6, 0xf8, 0x88, 0x13, 0xe2, 0x20, 0x32, 0x65, 0xaf, 0x1e, 0x38, + 0x18, 0x4c, 0x25, 0x4a, 0xc0, 0x27, 0x80, 0x1a, 0xb, 0xdc, 0x1, 0x47, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbb, 0x0, 0xa4, 0xd, 0x1, 0x25, 0x80, 0xa8, 0x18, 0x4a, 0x40, 0x18, 0x0, + 0x48, 0xa2, 0xa8, 0x0, 0x10, 0x74, 0xd6, 0x80, 0x8, 0xc4, 0x1b, 0x89, 0x10, 0x0, 0x28, 0xdf, + 0xff, 0xf6, 0xa1, 0xc0, 0x0, 0x70, 0xde, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, + 0x1f, 0x10, 0x40, 0xb4, 0x4, 0x85, 0xa0, 0x48, 0xb2, 0x40, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, + 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x3, 0x0, 0x13, 0x1, 0x5, 0x0, 0x5, 0x0, + 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, + 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, + 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, + 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, + 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, + 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, + 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, + 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, + 0xa, 0x4, 0x13, 0xe8, 0x42, 0x41, 0xf, 0xff, 0x30, 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, + 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, 0x7, 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, 0x30, 0x2, 0x8a, 0x8, + 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, 0x2, 0x94, 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, + 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, 0x14, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, + 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0x0, 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, + 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, + 0x1, 0x9, 0xff, 0xff, 0xff, 0xfd, 0x4b, 0xd, 0xb, 0xc8, 0x20, 0xf6, 0x1a, 0x5e, 0x4c, 0x32, + 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, 0x6e, 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, 0x90, + 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, 0xff, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, + 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1d, 0x0, 0x4, 0x0, 0x13, 0x1, 0x5, 0x0, 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, + 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, + 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, + 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, + 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, + 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, + 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, + 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, + 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, 0xa, 0x4, 0x13, 0xe8, 0x42, 0x41, + 0xf, 0xff, 0x30, 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, 0x7, + 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, 0x30, 0x2, 0x8a, 0x8, 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, + 0x2, 0x94, 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, + 0x14, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0x0, + 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, + 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, 0x1, 0x9, 0xff, 0xff, 0xff, 0xfd, 0x4b, 0xd, + 0xb, 0xc8, 0x20, 0xf6, 0x1a, 0x5e, 0x4c, 0x32, 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, 0x6e, + 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, 0x90, 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, + 0xff, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, + 0x0, 0xc3, 0xca, 0xde, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x5, 0x0, 0xc1, 0x0, 0x5, 0x0, + 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, + 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, + 0x72, 0x30, 0x23, 0xb, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x79, 0xf8, 0xbc, 0xfc, 0x5e, 0x7e, 0x2f, + 0x3f, 0x17, 0x9f, 0x8b, 0xcf, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x78, 0xc, 0x1e, 0x81, 0xd0, 0x74, + 0x3a, 0x18, 0x0, 0xb, 0xf5, 0x20, 0x1, 0x0, 0x20, 0x1f, 0xfd, 0x31, 0x20, 0x8, 0x4, 0x1f, 0x54, + 0x28, 0x10, 0x47, 0xd0, 0x84, 0x82, 0x13, 0xe8, 0x19, 0x21, 0xf, 0xff, 0x30, 0x5, 0xa4, 0x81, + 0x52, 0x7d, 0x2e, 0x97, 0x5f, 0x4b, 0xcf, 0xc5, 0xe7, 0xe2, 0xf0, 0x60, 0x40, 0x80, 0x8a, 0x1e, + 0x8f, 0x4c, 0x0, 0x4, 0x4, 0x85, 0x9, 0x6f, 0xff, 0xfa, 0x1, 0x4d, 0xf1, 0x2, 0xb7, 0xa8, 0x14, + 0x84, 0x92, 0x5, 0xa6, 0x16, 0x84, 0x16, 0x8c, 0x5e, 0x1, 0x24, 0x3f, 0xff, 0x80, 0x98, 0xe1, + 0x2, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0xb0, 0x1a, 0x21, 0xe4, 0x4, 0x35, + 0x80, 0xd2, 0x3c, 0x84, 0x30, 0x3, 0x81, 0xa9, 0xa3, 0xc7, 0x80, 0xc, 0x0, 0x41, 0x24, 0x20, + 0x0, 0x5, 0x12, 0xaa, 0xa0, 0x1, 0xc4, 0xe5, 0x54, 0x0, 0x72, 0x72, 0xaa, 0x0, 0x72, 0x4b, + 0x50, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc5, 0xcc, 0x8, 0x0, 0x0, 0x0, 0x1, + 0x0, +]; + +const FRAME_MARKER_PDU: SurfaceCommand<'_> = SurfaceCommand::FrameMarker(FrameMarkerPdu { + frame_action: FrameAction::Begin, + frame_id: 5, +}); + +lazy_static! { + static ref SURFACE_BITS_PDU: SurfaceCommand<'static> = + SurfaceCommand::StreamSurfaceBits(SurfaceBitsPdu { + destination: Rectangle { + left: 0, + top: 0, + right: 1920, + bottom: 1080, + }, + extended_bitmap_data: ExtendedBitmapDataPdu { + bpp: 32, + codec_id: 3, + width: 1920, + height: 1080, + header: None, + data: &SURFACE_BITS_BUFFER[22..], + }, + }); +} + +#[test] +fn from_buffer_correctly_parses_surface_command_frame_marker() { + assert_eq!( + FRAME_MARKER_PDU, + SurfaceCommand::from_buffer(FRAME_MARKER_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_surface_command_frame_marker() { + let expected = FRAME_MARKER_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FRAME_MARKER_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_surface_command_frame_marker() { + assert_eq!(FRAME_MARKER_BUFFER.len(), FRAME_MARKER_PDU.buffer_length()); +} + +#[test] +fn from_buffer_correctly_parses_surface_command_bits() { + assert_eq!( + *SURFACE_BITS_PDU, + SurfaceCommand::from_buffer(SURFACE_BITS_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_surface_command_bits() { + let expected = SURFACE_BITS_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + SURFACE_BITS_PDU + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_surface_command_bits() { + assert_eq!(SURFACE_BITS_BUFFER.len(), SURFACE_BITS_PDU.buffer_length()); +} diff --git a/ironrdp/src/fast_path.rs b/ironrdp/src/fast_path.rs deleted file mode 100644 index 06e1e705..00000000 --- a/ironrdp/src/fast_path.rs +++ /dev/null @@ -1,58 +0,0 @@ -#[cfg(test)] -mod test; - -use std::io; - -use byteorder::ReadBytesExt; -use failure::Fail; - -use crate::{impl_from_error, per}; - -/// Implements the Fast-Path RDP message header PDU. -#[derive(Debug)] -pub struct FastPath { - pub encryption_flags: u8, - pub number_events: u8, - pub length: u16, -} - -/// Parses the data received as an argument and returns a -/// [`Fastpath`](struct.Fastpath.html) structure upon success. -/// -/// # Arguments -/// -/// * `stream` - the type to read data from -pub fn parse_fast_path_header(mut stream: impl io::Read) -> Result<(FastPath, u16), FastPathError> { - let header = stream.read_u8()?; - - let (length, sizeof_length) = per::read_length(&mut stream)?; - if length < sizeof_length as u16 + 1 { - return Err(FastPathError::NullLength { - bytes_read: sizeof_length as usize + 1, - }); - } - - let pdu_length = length - sizeof_length as u16 - 1; - - Ok(( - FastPath { - encryption_flags: (header & 0xC0) >> 6, - number_events: (header & 0x3C) >> 2, - length: pdu_length, - }, - length, - )) -} - -/// The type of a Fast-Path parsing error. Includes *length error* and *I/O error*. -#[derive(Debug, Fail)] -pub enum FastPathError { - /// May be used in I/O related errors such as receiving empty Fast-Path packages. - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - /// Used in the length-related error during Fast-Path parsing. - #[fail(display = "Received invalid Fast-Path package with 0 length")] - NullLength { bytes_read: usize }, -} - -impl_from_error!(io::Error, FastPathError, FastPathError::IOError); diff --git a/ironrdp/src/fast_path/test.rs b/ironrdp/src/fast_path/test.rs deleted file mode 100644 index 242770cb..00000000 --- a/ironrdp/src/fast_path/test.rs +++ /dev/null @@ -1,25 +0,0 @@ -use super::*; - -#[test] -fn fast_path_header_with_long_len_is_parsed_correctly() { - let buf = vec![0x9C, 0x81, 0xE7]; - - let (fast_path, length) = parse_fast_path_header(&mut buf.as_slice()).unwrap(); - - assert_eq!(fast_path.encryption_flags, 0x02); - assert_eq!(fast_path.number_events, 7); - assert_eq!(fast_path.length, 484); - assert_eq!(length, 487); -} - -#[test] -fn fast_path_header_with_short_len_is_parsed_correctly() { - let buf = vec![0x8B, 0x08]; - - let (fast_path, length) = parse_fast_path_header(&mut buf.as_slice()).unwrap(); - - assert_eq!(fast_path.encryption_flags, 0x02); - assert_eq!(fast_path.number_events, 2); - assert_eq!(fast_path.length, 6); - assert_eq!(length, 8); -} From 750c4059df07788705aa77a980ce60542533dfec Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:43:29 +0200 Subject: [PATCH 0031/1273] ironrdp: refactoring --- ironrdp/src/nego/tests.rs | 16 ++--- ironrdp/src/rdp/capability_sets.rs | 28 +++++--- .../rdp/capability_sets/bitmap_codecs/test.rs | 2 +- .../rdp/capability_sets/frame_acknowledge.rs | 67 +++++++++++++++++++ ironrdp/src/rdp/headers.rs | 18 ++++- ironrdp/src/utils.rs | 46 ++++++++++--- ironrdp/src/x224.rs | 51 ++++++++++---- ironrdp/src/x224/tests.rs | 1 - 8 files changed, 184 insertions(+), 45 deletions(-) create mode 100644 ironrdp/src/rdp/capability_sets/frame_acknowledge.rs diff --git a/ironrdp/src/nego/tests.rs b/ironrdp/src/nego/tests.rs index ce9a87db..564ef4ef 100644 --- a/ironrdp/src/nego/tests.rs +++ b/ironrdp/src/nego/tests.rs @@ -149,7 +149,7 @@ fn wrong_message_code_in_negotiation_response_results_in_error() { match Response::from_buffer(buffer.as_ref()) { Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -179,7 +179,7 @@ fn negotiation_failure_in_response_results_in_error() { match Response::from_buffer(buffer.as_ref()) { Err(NegotiationError::ResponseFailure(e)) if e == FailureCode::SSLWithUserAuthRequiredByServer => {} - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -224,7 +224,7 @@ fn read_string_with_cr_lf_on_non_value_results_in_error() { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::InvalidData => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -238,7 +238,7 @@ fn read_string_with_cr_lf_on_unterminated_message_results_in_error() { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -252,7 +252,7 @@ fn read_string_with_cr_lf_on_unterminated_with_cr_message() { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -378,7 +378,7 @@ fn negotiation_request_with_invalid_negotiation_code_results_in_error() { match Request::from_buffer(request.as_ref()) { Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } @@ -563,7 +563,7 @@ fn from_buffer_correctly_parses_negotiation_failure() { match Response::from_buffer(expected.as_ref()) { Err(NegotiationError::ResponseFailure(_)) => (), - Err(_e) => panic!("invalid error type"), + Err(e) => panic!("invalid error type: {}", e), Ok(_) => panic!("error expected"), } } @@ -663,7 +663,7 @@ fn parse_negotiation_request_correctly_handles_invalid_slice_length() { match Request::from_buffer(request.as_ref()) { Err(NegotiationError::TpktVersionError) => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index 25f5d78b..730f4680 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -5,6 +5,7 @@ mod bitmap; mod bitmap_cache; mod bitmap_codecs; mod brush; +mod frame_acknowledge; mod general; mod glyph_cache; mod input; @@ -29,6 +30,7 @@ pub use self::{ RemoteFxContainer, RfxCaps, RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, }, brush::{Brush, SupportLevel}, + frame_acknowledge::FrameAcknowledge, general::{General, GeneralExtraFlags, MajorPlatformType, MinorPlatformType}, glyph_cache::{CacheDefinition, GlyphCache, GlyphSupportLevel, GLYPH_CACHE_NUM}, input::{Input, InputFlags}, @@ -230,7 +232,7 @@ pub enum CapabilitySet { DrawGdiPlus(Vec), Rail(Vec), WindowList(Vec), - FrameAcknowledge(Vec), + FrameAcknowledge(FrameAcknowledge), } impl PduParsing for CapabilitySet { @@ -320,9 +322,9 @@ impl PduParsing for CapabilitySet { CapabilitySetType::DrawGdiPlus => Ok(CapabilitySet::DrawGdiPlus(capability_set_buffer)), CapabilitySetType::Rail => Ok(CapabilitySet::Rail(capability_set_buffer)), CapabilitySetType::WindowList => Ok(CapabilitySet::WindowList(capability_set_buffer)), - CapabilitySetType::FrameAcknowledge => { - Ok(CapabilitySet::FrameAcknowledge(capability_set_buffer)) - } + CapabilitySetType::FrameAcknowledge => Ok(CapabilitySet::FrameAcknowledge( + FrameAcknowledge::from_buffer(&mut capability_set_buffer.as_slice())?, + )), } } @@ -486,6 +488,17 @@ impl PduParsing for CapabilitySet { )?; capset.to_buffer(&mut stream)?; } + CapabilitySet::FrameAcknowledge(capset) => { + stream.write_u16::( + CapabilitySetType::FrameAcknowledge.to_u16().unwrap(), + )?; + stream.write_u16::( + (capset.buffer_length() + + CAPABILITY_SET_TYPE_FIELD_SIZE + + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + )?; + capset.to_buffer(&mut stream)?; + } _ => { let (capability_set_type, capability_set_buffer) = match self { CapabilitySet::Control(buffer) => (CapabilitySetType::Control, buffer), @@ -507,9 +520,6 @@ impl PduParsing for CapabilitySet { CapabilitySet::DrawGdiPlus(buffer) => (CapabilitySetType::DrawGdiPlus, buffer), CapabilitySet::Rail(buffer) => (CapabilitySetType::Rail, buffer), CapabilitySet::WindowList(buffer) => (CapabilitySetType::WindowList, buffer), - CapabilitySet::FrameAcknowledge(buffer) => { - (CapabilitySetType::FrameAcknowledge, buffer) - } _ => unreachable!(), }; @@ -545,6 +555,7 @@ impl PduParsing for CapabilitySet { CapabilitySet::BitmapCodecs(capset) => capset.buffer_length(), CapabilitySet::MultiFragmentUpdate(capset) => capset.buffer_length(), CapabilitySet::LargePointer(capset) => capset.buffer_length(), + CapabilitySet::FrameAcknowledge(capset) => capset.buffer_length(), CapabilitySet::Control(buffer) | CapabilitySet::WindowActivation(buffer) | CapabilitySet::Share(buffer) @@ -555,8 +566,7 @@ impl PduParsing for CapabilitySet { | CapabilitySet::DrawNineGridCache(buffer) | CapabilitySet::DrawGdiPlus(buffer) | CapabilitySet::Rail(buffer) - | CapabilitySet::WindowList(buffer) - | CapabilitySet::FrameAcknowledge(buffer) => buffer.len(), + | CapabilitySet::WindowList(buffer) => buffer.len(), } } } diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs b/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs index 879965b3..bcf42f31 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs @@ -493,7 +493,7 @@ fn codec_with_invalid_property_length_handles_correctly() { match Codec::from_buffer(codec_buffer.as_ref()) { Err(CapabilitySetsError::InvalidPropertyLength) => (), - Err(_e) => panic!("wrong error type"), + Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } } diff --git a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs new file mode 100644 index 00000000..29d887fc --- /dev/null +++ b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs @@ -0,0 +1,67 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use crate::{rdp::CapabilitySetsError, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct FrameAcknowledge { + pub max_unacknowledged_frame_count: u32, +} + +impl PduParsing for FrameAcknowledge { + type Error = CapabilitySetsError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let max_unacknowledged_frame_count = stream.read_u32::()?; + + Ok(Self { + max_unacknowledged_frame_count, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(self.max_unacknowledged_frame_count)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[cfg(test)] +mod test { + use super::*; + + const FRAME_ACKNOWLEDGE_PDU_BUFFER: [u8; 4] = [0xf4, 0xf3, 0xf2, 0xf1]; + const FRAME_ACKNOWLEDGE_PDU: FrameAcknowledge = FrameAcknowledge { + max_unacknowledged_frame_count: 0xf1f2_f3f4, + }; + + #[test] + fn from_buffer_correctly_parses_frame_acknowledge() { + assert_eq!( + FRAME_ACKNOWLEDGE_PDU, + FrameAcknowledge::from_buffer(FRAME_ACKNOWLEDGE_PDU_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_frame_acknowledge() { + let expected = FRAME_ACKNOWLEDGE_PDU_BUFFER.as_ref(); + let mut buffer = Vec::with_capacity(expected.len()); + + FRAME_ACKNOWLEDGE_PDU.to_buffer(&mut buffer).unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_frame_acknowledge() { + assert_eq!( + FRAME_ACKNOWLEDGE_PDU_BUFFER.len(), + FRAME_ACKNOWLEDGE_PDU.buffer_length() + ); + } +} diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index 491de7e6..c8539d4c 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -9,8 +9,11 @@ use super::{ client_info, ClientConfirmActive, ControlPdu, MonitorLayoutPdu, RdpError, ServerDemandActive, SynchronizePdu, }; -use crate::rdp::{finalization_messages::FontPdu, session_info::SaveSessionInfoPdu}; -use crate::PduParsing; +use crate::{ + codecs::rfx::FrameAcknowledgePdu, + rdp::{finalization_messages::FontPdu, session_info::SaveSessionInfoPdu}, + PduParsing, +}; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; const SHARE_CONTROL_HEADER_MASK: u16 = 0xf; @@ -258,6 +261,7 @@ pub enum ShareDataPdu { FontMap(FontPdu), MonitorLayout(MonitorLayoutPdu), SaveSessionInfo(SaveSessionInfoPdu), + FrameAcknowledge(FrameAcknowledgePdu), } impl ShareDataPdu { @@ -269,6 +273,7 @@ impl ShareDataPdu { ShareDataPdu::FontMap(_) => "Font Map PDU", ShareDataPdu::MonitorLayout(_) => "Monitor Layout PDU", ShareDataPdu::SaveSessionInfo(_) => "Save session info PDU", + ShareDataPdu::FrameAcknowledge(_) => "Frame Acknowledge PDU", } } } @@ -297,6 +302,9 @@ impl ShareDataPdu { ShareDataPduType::SaveSessionInfo => Ok(ShareDataPdu::SaveSessionInfo( SaveSessionInfoPdu::from_buffer(&mut stream)?, )), + ShareDataPduType::FrameAcknowledgePdu => Ok(ShareDataPdu::FrameAcknowledge( + FrameAcknowledgePdu::from_buffer(&mut stream)?, + )), ShareDataPduType::Update | ShareDataPduType::Pointer | ShareDataPduType::Input @@ -328,6 +336,9 @@ impl ShareDataPdu { ShareDataPdu::SaveSessionInfo(pdu) => { pdu.to_buffer(&mut stream).map_err(RdpError::from) } + ShareDataPdu::FrameAcknowledge(pdu) => { + pdu.to_buffer(&mut stream).map_err(RdpError::from) + } } } pub fn buffer_length(&self) -> usize { @@ -337,6 +348,7 @@ impl ShareDataPdu { ShareDataPdu::FontList(pdu) | ShareDataPdu::FontMap(pdu) => pdu.buffer_length(), ShareDataPdu::MonitorLayout(pdu) => pdu.buffer_length(), ShareDataPdu::SaveSessionInfo(pdu) => pdu.buffer_length(), + ShareDataPdu::FrameAcknowledge(pdu) => pdu.buffer_length(), } } pub fn share_header_type(&self) -> ShareDataPduType { @@ -347,6 +359,7 @@ impl ShareDataPdu { ShareDataPdu::FontMap(_) => ShareDataPduType::FontMap, ShareDataPdu::MonitorLayout(_) => ShareDataPduType::MonitorLayoutPdu, ShareDataPdu::SaveSessionInfo(_) => ShareDataPduType::SaveSessionInfo, + ShareDataPdu::FrameAcknowledge(_) => ShareDataPduType::FrameAcknowledgePdu, } } } @@ -416,6 +429,7 @@ pub enum ShareDataPduType { ArcStatusPdu = 0x32, StatusInfoPdu = 0x36, MonitorLayoutPdu = 0x37, + FrameAcknowledgePdu = 0x38, } bitflags! { diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 9379274b..1edf86e4 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -3,7 +3,7 @@ pub mod rsa; use std::{ cmp::{max, min}, - io, ops, + io, mem, ops, }; use bitvec::prelude::{BitSlice, Msb0}; @@ -48,16 +48,6 @@ macro_rules! impl_from_error { }; } -#[macro_export] -macro_rules! split_to { - ($buffer:expr, $n:expr) => {{ - let splitted = &$buffer[..$n]; - $buffer = &$buffer[$n..]; - - splitted - }}; -} - pub fn string_to_utf16(value: &str) -> Vec { value .encode_utf16() @@ -175,6 +165,14 @@ impl Rectangle { } } + pub fn width(&self) -> u16 { + self.right - self.left + } + + pub fn height(&self) -> u16 { + self.bottom - self.top + } + pub fn union_all(rectangles: &[Self]) -> Self { Self { left: rectangles.iter().map(|r| r.left).min().unwrap_or(0), @@ -239,3 +237,29 @@ impl PduParsing for Rectangle { 8 } } + +pub trait SplitTo { + fn split_to(&mut self, n: usize) -> Self; +} + +impl SplitTo for &[T] { + fn split_to(&mut self, n: usize) -> Self { + assert!(n <= self.len()); + + let (a, b) = self.split_at(n); + *self = b; + + a + } +} + +impl SplitTo for &mut [T] { + fn split_to(&mut self, n: usize) -> Self { + assert!(n <= self.len()); + + let (a, b) = mem::replace(self, &mut []).split_at_mut(n); + *self = b; + + a + } +} diff --git a/ironrdp/src/x224.rs b/ironrdp/src/x224.rs index 6a188e9a..8c7b65da 100644 --- a/ironrdp/src/x224.rs +++ b/ironrdp/src/x224.rs @@ -40,12 +40,11 @@ impl TpktHeader { Self { length } } } - -impl PduParsing for TpktHeader { - type Error = NegotiationError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let version = stream.read_u8()?; +impl TpktHeader { + pub fn from_buffer_with_version( + mut stream: impl io::Read, + version: u8, + ) -> Result { if version != TPKT_VERSION { return Err(NegotiationError::TpktVersionError); } @@ -55,6 +54,16 @@ impl PduParsing for TpktHeader { Ok(Self { length }) } +} + +impl PduParsing for TpktHeader { + type Error = NegotiationError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let version = stream.read_u8()?; + + Self::from_buffer_with_version(stream, version) + } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u8(TPKT_VERSION)?; @@ -78,14 +87,20 @@ impl Data { pub fn new(data_length: usize) -> Self { Self { data_length } } -} -impl PduParsing for Data { - type Error = NegotiationError; + pub fn from_buffer_with_version( + mut stream: impl io::Read, + version: u8, + ) -> Result { + let tpkt = TpktHeader::from_buffer_with_version(&mut stream, version)?; - fn from_buffer(mut stream: impl io::Read) -> Result { - let tpkt = TpktHeader::from_buffer(&mut stream)?; + Self::from_buffer_with_tpkt_header(&mut stream, tpkt) + } + fn from_buffer_with_tpkt_header( + mut stream: impl io::Read, + tpkt: TpktHeader, + ) -> Result { read_and_check_tpdu_header(&mut stream, X224TPDUType::Data)?; let _eof = stream.read_u8()?; @@ -94,9 +109,19 @@ impl PduParsing for Data { Ok(Self { data_length }) } +} + +impl PduParsing for Data { + type Error = NegotiationError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let tpkt = TpktHeader::from_buffer(&mut stream)?; + + Self::from_buffer_with_tpkt_header(&mut stream, tpkt) + } fn to_buffer(&self, mut stream: impl std::io::Write) -> Result<(), Self::Error> { - TpktHeader::new(self.buffer_length()).to_buffer(&mut stream)?; + TpktHeader::new(self.buffer_length() + self.data_length).to_buffer(&mut stream)?; stream.write_u8(TPDU_DATA_HEADER_LENGTH as u8 - 1)?; stream.write_u8(X224TPDUType::Data.to_u8().unwrap())?; @@ -106,7 +131,7 @@ impl PduParsing for Data { } fn buffer_length(&self) -> usize { - TPKT_HEADER_LENGTH + TPDU_DATA_HEADER_LENGTH + self.data_length + TPKT_HEADER_LENGTH + TPDU_DATA_HEADER_LENGTH } } diff --git a/ironrdp/src/x224/tests.rs b/ironrdp/src/x224/tests.rs index 7b6fe40e..6c28c250 100644 --- a/ironrdp/src/x224/tests.rs +++ b/ironrdp/src/x224/tests.rs @@ -84,7 +84,6 @@ fn buffer_length_is_correct_for_data() { let buffer = [ 0x03u8, 0x00, 0x00, 0x0c, // tpkt 0x02, 0xf0, 0x80, // data tpdu - 0x04, 0x01, 0x00, 0x01, 0x00, ]; let data_header = Data { data_length: 5 }; From f4532612affad9b559a52e471f564ca8f2c1e4d0 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:43:52 +0200 Subject: [PATCH 0032/1273] fuzz: add fuzzers for rfx, fast-path, surface commands --- ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs index e98747ba..1de40c3c 100644 --- a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs @@ -3,8 +3,8 @@ extern crate libfuzzer_sys; extern crate ironrdp; -use ironrdp::*; use ironrdp::rdp::*; +use ironrdp::*; fuzz_target!(|data: &[u8]| { let _ = Request::from_buffer(data); @@ -30,4 +30,32 @@ fuzz_target!(|data: &[u8]| { let _ = server_license::ServerPlatformChallenge::from_buffer(data); let _ = vc::ChannelPduHeader::from_buffer(data); + + let _ = fast_path::FastPathHeader::from_buffer(data); + let _ = fast_path::FastPathUpdatePdu::from_buffer(data); + let _ = fast_path::FastPathUpdate::from_buffer_with_code( + data, + fast_path::UpdateCode::SurfaceCommands, + ); + + let _ = surface_commands::SurfaceCommand::from_buffer(data); + let _ = surface_commands::SurfaceBitsPdu::from_buffer(data); + let _ = surface_commands::FrameMarkerPdu::from_buffer(data); + let _ = surface_commands::ExtendedBitmapDataPdu::from_buffer(data); + let _ = surface_commands::BitmapDataHeader::from_buffer(data); + + let _ = codecs::rfx::Headers::from_buffer(data); + let _ = codecs::rfx::FrameAcknowledgePdu::from_buffer(data); + let _ = codecs::rfx::ContextPdu::from_buffer(data); + let _ = codecs::rfx::FrameBeginPdu::from_buffer(data); + let _ = codecs::rfx::FrameEndPdu::from_buffer(data); + let _ = codecs::rfx::RegionPdu::from_buffer(data); + let _ = codecs::rfx::TileSetPdu::from_buffer(data); + let _ = codecs::rfx::RfxRectangle::from_buffer(data); + let _ = codecs::rfx::Quant::from_buffer(data); + let _ = codecs::rfx::Tile::from_buffer(data); + let _ = codecs::rfx::SyncPdu::from_buffer(data); + let _ = codecs::rfx::CodecVersionsPdu::from_buffer(data); + let _ = codecs::rfx::ChannelsPdu::from_buffer(data); + let _ = codecs::rfx::Channel::from_buffer(data); }); From fb96b060b9dabfb9cc334fdec5d2c39954d3006d Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:44:33 +0200 Subject: [PATCH 0033/1273] ironrdp_client: integrate RFX with Fast-Path, refactor x224 --- ironrdp_client/Cargo.toml | 7 +- ironrdp_client/src/active_session.rs | 141 ++ ironrdp_client/src/active_session/codecs.rs | 1 + .../src/active_session/codecs/rfx.rs | 339 +++++ .../src/active_session/codecs/rfx/tests.rs | 1254 +++++++++++++++++ .../src/active_session/fast_path.rs | 264 ++++ ironrdp_client/src/active_session/x224.rs | 349 +++++ .../{channels => active_session/x224}/gfx.rs | 0 ironrdp_client/src/channels.rs | 348 ----- ironrdp_client/src/config.rs | 68 +- ironrdp_client/src/connection_sequence.rs | 39 +- .../src/connection_sequence/user_info.rs | 168 ++- ironrdp_client/src/main.rs | 76 +- ironrdp_client/src/transport.rs | 222 ++- ironrdp_client/src/transport/connection.rs | 127 +- ironrdp_client/src/utils.rs | 7 + 16 files changed, 2799 insertions(+), 611 deletions(-) create mode 100644 ironrdp_client/src/active_session.rs create mode 100644 ironrdp_client/src/active_session/codecs.rs create mode 100644 ironrdp_client/src/active_session/codecs/rfx.rs create mode 100644 ironrdp_client/src/active_session/codecs/rfx/tests.rs create mode 100644 ironrdp_client/src/active_session/fast_path.rs create mode 100644 ironrdp_client/src/active_session/x224.rs rename ironrdp_client/src/{channels => active_session/x224}/gfx.rs (100%) delete mode 100644 ironrdp_client/src/channels.rs diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 1eba2d14..5061f19f 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -17,16 +17,17 @@ clap = "2.33" bytes = "0.5" failure = "0.1" chrono = "0.4" -fern = "0.5" +fern = "0.6" log = "0.4" rustls = { version = "0.16.0", features = ["dangerous_configuration"] } x509-parser = "0.6.0" -whoami = "0.7" -winit = "0.20" +whoami = "0.8" num-traits = "0.2" +num-derive = "0.3" semver = "0.9" lazy_static = "1.4" exitcode = "1.1" webpki = "0.21.0" bufstream = "0.1" ring = "0.16.0" +image = "0.23" diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs new file mode 100644 index 00000000..750ca680 --- /dev/null +++ b/ironrdp_client/src/active_session.rs @@ -0,0 +1,141 @@ +mod codecs; +mod fast_path; +mod x224; + +use std::{ + io, + sync::{Arc, Mutex}, + thread, + time::Duration, +}; + +use ironrdp::{ + codecs::rfx::image_processing::PixelFormat, fast_path::FastPathError, PduParsing, RdpPdu, +}; +use log::warn; + +use crate::{ + connection_sequence::DesktopSizes, + transport::{Decoder, RdpTransport}, + utils, Config, RdpError, RdpResult, StaticChannels, +}; + +const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; + +pub fn process_active_stage( + mut stream: impl io::BufRead + io::Write, + config: &Config, + static_channels: StaticChannels, + global_channel_id: u16, + initiator_id: u16, + desktop_sizes: DesktopSizes, +) -> RdpResult<()> { + let decoded_image = Arc::new(Mutex::new(DecodedImage::new( + u32::from(desktop_sizes.width), + u32::from(desktop_sizes.height), + DESTINATION_PIXEL_FORMAT, + Some(config.images_path.clone()), + ))); + let mut x224_processor = x224::Processor::new(utils::swap_hashmap_kv(static_channels)); + let mut fast_path_processor = fast_path::ProcessorBuilder { + decoded_image, + global_channel_id, + initiator_id, + } + .build(); + let mut rdp_transport = RdpTransport::default(); + + loop { + let mut input_buffer = stream.fill_buf()?; + let input_buffer_length = input_buffer.len(); + match rdp_transport.decode(&mut input_buffer) { + Ok(RdpPdu::X224(data)) if input_buffer.len() >= data.data_length => { + stream.consume(data.buffer_length()); + + if let Err(error) = x224_processor.process(&mut stream, data) { + match error { + RdpError::UnexpectedDisconnection(message) => { + warn!("User-Initiated disconnection on Server: {}", message); + break; + } + RdpError::UnexpectedChannel(channel_id) => { + warn!("Got message on a channel with {} ID", channel_id); + break; + } + err => { + return Err(err); + } + } + } + } + Ok(RdpPdu::FastPath(header)) if input_buffer.len() >= header.data_length => { + // skip header bytes in such way because here is possible + // that data length was written in the not right way, + // so we should skip only what has been actually read + let bytes_read = input_buffer_length - input_buffer.len(); + stream.consume(bytes_read); + + fast_path_processor.process(&header, &mut stream)?; + } + Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read })) => { + warn!("Received null-length Fast-Path packet, dropping it"); + stream.consume(bytes_read); + } + Ok(_) => { + warn!("Received not complete packet, waiting for remaining data"); + thread::sleep(Duration::from_millis(10)); + } + Err(e) => return Err(e), + } + } + + Ok(()) +} + +pub struct DecodedImage { + width: u32, + height: u32, + data: Vec, + images_path: Option, + frame_counter: u32, +} + +impl DecodedImage { + fn new( + width: u32, + height: u32, + pixel_format: PixelFormat, + images_path: Option, + ) -> Self { + Self { + width, + height, + data: vec![0; (width * height * u32::from(pixel_format.bytes_per_pixel())) as usize], + images_path, + frame_counter: 0, + } + } + + fn get_mut(&mut self) -> &mut [u8] { + self.data.as_mut_slice() + } + + fn save(&mut self) -> image::ImageResult<()> { + if let Some(images_path) = self.images_path.as_ref() { + let image_buffer = image::ImageBuffer::, _>::from_raw( + self.width, + self.height, + self.data.as_slice(), + ) + .expect("Container must be large enough"); + + image_buffer.save_with_format( + format!("{}/update#{:010}.png", images_path, self.frame_counter), + image::ImageFormat::Png, + )?; + self.frame_counter += 1; + } + + Ok(()) + } +} diff --git a/ironrdp_client/src/active_session/codecs.rs b/ironrdp_client/src/active_session/codecs.rs new file mode 100644 index 00000000..6fb4906b --- /dev/null +++ b/ironrdp_client/src/active_session/codecs.rs @@ -0,0 +1 @@ +pub mod rfx; diff --git a/ironrdp_client/src/active_session/codecs/rfx.rs b/ironrdp_client/src/active_session/codecs/rfx.rs new file mode 100644 index 00000000..35863bad --- /dev/null +++ b/ironrdp_client/src/active_session/codecs/rfx.rs @@ -0,0 +1,339 @@ +#[cfg(test)] +mod tests; + +use std::{ + cmp::min, + sync::{Arc, Mutex}, +}; + +use ironrdp::{ + codecs::rfx::{ + self, color_conversion, + color_conversion::YCbCrBuffer, + dwt, + image_processing::{ImageRegion, ImageRegionMut, PixelFormat}, + quantization, + rectangles_processing::Region, + rlgr, subband_reconstruction, EntropyAlgorithm, Headers, Quant, RfxRectangle, Tile, + }, + PduBufferParsing, Rectangle, +}; +use lazy_static::lazy_static; +use log::debug; + +use crate::{active_session::DecodedImage, RdpError, RdpResult}; + +const TILE_SIZE: u16 = 64; +const SOURCE_PIXEL_FORMAT: PixelFormat = PixelFormat::BgrX32; + +lazy_static! { + static ref SOURCE_STRIDE: u16 = TILE_SIZE * u16::from(SOURCE_PIXEL_FORMAT.bytes_per_pixel()); +} + +pub type FrameId = u32; + +pub struct DecodingContext { + state: SequenceState, + context: rfx::ContextPdu, + channels: rfx::ChannelsPdu, + destination_pixel_format: PixelFormat, + decoding_tiles: DecodingTileContext, +} + +impl DecodingContext { + pub fn new(destination_pixel_format: PixelFormat) -> Self { + Self { + state: SequenceState::HeaderMessages, + context: rfx::ContextPdu { + flags: rfx::OperatingMode::empty(), + entropy_algorithm: rfx::EntropyAlgorithm::Rlgr1, + }, + channels: rfx::ChannelsPdu(vec![]), + destination_pixel_format, + decoding_tiles: DecodingTileContext::new(), + } + } + + pub fn decode( + &mut self, + destination: &Rectangle, + input: &mut &[u8], + image: Arc>, + ) -> Result { + loop { + match self.state { + SequenceState::HeaderMessages => { + self.process_headers(input)?; + } + SequenceState::DataMessages => { + let frame_id = self.process_data_messages(&destination, input, image)?; + + return Ok(frame_id); + } + } + } + } + + fn process_headers(&mut self, input: &mut &[u8]) -> RdpResult<()> { + let _sync = rfx::SyncPdu::from_buffer_consume(input)?; + + let mut context = None; + let mut channels = None; + + // headers can appear in any order: CodecVersions, Channels, Context + for _ in 0..3 { + match Headers::from_buffer_consume(input)? { + Headers::Context(c) => context = Some(c), + Headers::Channels(c) => channels = Some(c), + Headers::CodecVersions(_) => (), + } + } + let context = context.ok_or(RdpError::MandatoryHeaderIsAbsent)?; + let channels = channels.ok_or(RdpError::MandatoryHeaderIsAbsent)?; + + if channels.0.is_empty() { + return Err(RdpError::NoRfxChannelsAnnounced); + } + + self.context = context; + self.channels = channels; + self.state = SequenceState::DataMessages; + + Ok(()) + } + + fn process_data_messages( + &mut self, + destination: &Rectangle, + input: &mut &[u8], + image: Arc>, + ) -> RdpResult { + let width = self.channels.0.first().unwrap().width as u16; + let height = self.channels.0.first().unwrap().height as u16; + let entropy_algorithm = self.context.entropy_algorithm; + + let frame_begin = rfx::FrameBeginPdu::from_buffer_consume(input)?; + let mut region = rfx::RegionPdu::from_buffer_consume(input)?; + let tile_set = rfx::TileSetPdu::from_buffer_consume(input)?; + let _frame_end = rfx::FrameEndPdu::from_buffer_consume(input)?; + + if region.rectangles.is_empty() { + let channel = self.channels.0.first().unwrap(); + region.rectangles = vec![RfxRectangle { + x: 0, + y: 0, + width: channel.width as u16, + height: channel.height as u16, + }]; + } + let region = region; + + debug!("Frame #{}: ", frame_begin.index); + debug!("Destination rectangle: {:?}", destination); + debug!("Context: {:?}", self.context); + debug!("Channels: {:?}", self.channels); + debug!("Region: {:?}", region); + + let clipping_rectangles = + clipping_rectangles(region.rectangles.as_slice(), &destination, width, height); + debug!("Clipping rectangles: {:?}", clipping_rectangles); + let clipping_rectangles_ref = &clipping_rectangles; + + for (update_rectangle, tile_data) in + tiles_to_rectangles(tile_set.tiles.as_slice(), &destination).zip(map_tiles_data( + tile_set.tiles.as_slice(), + tile_set.quants.as_slice(), + )) + { + decode_tile( + &tile_data, + entropy_algorithm, + self.decoding_tiles.tile_output.as_mut(), + self.decoding_tiles.ycbcr_buffer.as_mut(), + self.decoding_tiles.ycbcr_temp_buffer.as_mut(), + )?; + + process_decoded_tile( + self.decoding_tiles.tile_output.as_slice(), + clipping_rectangles_ref, + &update_rectangle, + width, + self.destination_pixel_format, + &image, + )?; + } + + if self.context.flags.contains(rfx::OperatingMode::IMAGE_MODE) { + self.state = SequenceState::HeaderMessages; + } + + Ok(frame_begin.index) + } +} + +fn process_decoded_tile( + tile_output: &[u8], + clipping_rectangles: &Region, + update_rectangle: &Rectangle, + width: u16, + destination_pixel_format: PixelFormat, + image: &Arc>, +) -> RdpResult<()> { + debug!("Tile: {:?}", update_rectangle); + + let update_region = clipping_rectangles.intersect_rectangle(&update_rectangle); + for region_rectangle in update_region.rectangles() { + let source_x = region_rectangle.left - update_rectangle.left; + let source_y = region_rectangle.top - update_rectangle.top; + let source_image_region = ImageRegion { + region: Rectangle { + left: source_x, + top: source_y, + right: source_x + region_rectangle.width(), + bottom: source_y + region_rectangle.height(), + }, + step: *SOURCE_STRIDE, + pixel_format: SOURCE_PIXEL_FORMAT, + data: tile_output, + }; + + let mut output = image.lock().unwrap(); + let mut destination_image_region = ImageRegionMut { + region: region_rectangle.clone(), + step: width * u16::from(SOURCE_PIXEL_FORMAT.bytes_per_pixel()), + pixel_format: destination_pixel_format, + data: output.get_mut(), + }; + debug!("Source image region: {:?}", source_image_region.region); + debug!( + "Destination image region: {:?}", + destination_image_region.region + ); + + source_image_region.copy_to(&mut destination_image_region)?; + } + + Ok(()) +} + +#[derive(Debug, Clone)] +struct DecodingTileContext { + pub tile_output: Vec, + pub ycbcr_buffer: Vec>, + pub ycbcr_temp_buffer: Vec, +} + +impl DecodingTileContext { + fn new() -> Self { + Self { + tile_output: vec![0; TILE_SIZE as usize * TILE_SIZE as usize * 4], + ycbcr_buffer: vec![vec![0; TILE_SIZE as usize * TILE_SIZE as usize]; 3], + ycbcr_temp_buffer: vec![0; TILE_SIZE as usize * TILE_SIZE as usize], + } + } +} + +fn decode_tile( + tile: &TileData<'_>, + entropy_algorithm: EntropyAlgorithm, + output: &mut [u8], + ycbcr_temp: &mut [Vec], + temp: &mut [i16], +) -> RdpResult<()> { + for ((quant, data), ycbcr_buffer) in tile + .quants + .iter() + .zip(tile.data.iter()) + .zip(ycbcr_temp.iter_mut()) + { + decode_component( + quant, + entropy_algorithm, + data, + ycbcr_buffer.as_mut_slice(), + temp, + )?; + } + + let ycbcr_buffer = YCbCrBuffer { + y: ycbcr_temp[0].as_slice(), + cb: ycbcr_temp[1].as_slice(), + cr: ycbcr_temp[2].as_slice(), + }; + + color_conversion::ycbcr_to_rgb(ycbcr_buffer, output)?; + + Ok(()) +} + +fn decode_component( + quant: &Quant, + entropy_algorithm: EntropyAlgorithm, + data: &[u8], + output: &mut [i16], + temp: &mut [i16], +) -> RdpResult<()> { + rlgr::decode(entropy_algorithm, data, output)?; + subband_reconstruction::decode(&mut output[4032..]); + quantization::decode(output, quant); + dwt::decode(output, temp); + + Ok(()) +} + +fn clipping_rectangles( + rectangles: &[RfxRectangle], + destination: &Rectangle, + width: u16, + height: u16, +) -> Region { + let mut clipping_rectangles = Region::new(); + + rectangles + .iter() + .map(|r| Rectangle { + left: min(destination.left + r.x, width), + top: min(destination.top + r.y, height), + right: min(destination.left + r.x + r.width, width), + bottom: min(destination.top + r.y + r.height, height), + }) + .for_each(|r| clipping_rectangles.union_rectangle(r)); + + clipping_rectangles +} + +fn tiles_to_rectangles<'a>( + tiles: &'a [Tile<'_>], + destination: &'a Rectangle, +) -> impl Iterator + 'a { + tiles.iter().map(move |t| Rectangle { + left: destination.left + t.x * TILE_SIZE, + top: destination.top + t.y * TILE_SIZE, + right: destination.left + t.x * TILE_SIZE + TILE_SIZE, + bottom: destination.top + t.y * TILE_SIZE + TILE_SIZE, + }) +} + +fn map_tiles_data<'a>(tiles: &'_ [Tile<'a>], quants: &'_ [Quant]) -> Vec> { + tiles + .iter() + .map(move |t| TileData { + quants: [ + quants[usize::from(t.y_quant_index)].clone(), + quants[usize::from(t.cb_quant_index)].clone(), + quants[usize::from(t.cr_quant_index)].clone(), + ], + data: [t.y_data, t.cb_data, t.cr_data], + }) + .collect() +} + +struct TileData<'a> { + pub quants: [Quant; 3], + pub data: [&'a [u8]; 3], +} + +enum SequenceState { + HeaderMessages, + DataMessages, +} diff --git a/ironrdp_client/src/active_session/codecs/rfx/tests.rs b/ironrdp_client/src/active_session/codecs/rfx/tests.rs new file mode 100644 index 00000000..95e960e5 --- /dev/null +++ b/ironrdp_client/src/active_session/codecs/rfx/tests.rs @@ -0,0 +1,1254 @@ +use super::*; +use crate::active_session::DecodedImage; + +const IMAGE_WIDTH: usize = 64; +const IMAGE_HEIGHT: usize = 64; +const FORMAT_SIZE: usize = 4; + +#[test] +fn decode_decodes_valid_sequence_of_messages() { + let destination = Rectangle { + left: 0, + top: 0, + right: IMAGE_WIDTH as u16, + bottom: IMAGE_HEIGHT as u16, + }; + let mut data = ENCODED_MESSAGES.as_ref(); + let expected = DECODED_IMAGE.as_ref(); + + let image = Arc::new(Mutex::new(DecodedImage::new( + IMAGE_WIDTH as u32, + IMAGE_HEIGHT as u32, + PixelFormat::BgrX32, + None, + ))); + + let mut handler = DecodingContext::new(PixelFormat::BgrX32); + + handler + .decode(&destination, &mut data, image.clone()) + .unwrap(); + + assert_eq!(expected, image.lock().unwrap().data.as_slice()); +} + +const ENCODED_MESSAGES: [u8; 2970] = [ + /* HEADERS as in 4.2.2 */ + 0xc0, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0xca, 0xac, 0xcc, 0xca, 0x00, 0x01, 0xc3, 0xcc, 0x0d, 0x00, + 0x00, 0x00, 0x01, 0xff, 0x00, 0x40, 0x00, 0x28, 0xa8, 0xc1, 0xcc, 0x0a, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x01, 0xc2, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x40, 0x00, + /* FRAME_BEGIN as in 4.2.3 */ + 0xc4, 0xcc, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + /* REGION as in 4.2.3 */ + 0xc6, 0xcc, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x00, 0x40, 0x00, 0xc1, 0xca, 0x01, 0x00, /* TILESET as in 4.2.4.1 */ + 0xc7, 0xcc, 0x3e, 0x0b, 0x00, 0x00, 0x01, 0x00, 0xc2, 0xca, 0x00, 0x00, 0x51, 0x50, 0x01, 0x40, + 0x01, 0x00, 0x23, 0x0b, 0x00, 0x00, 0x66, 0x66, 0x77, 0x88, 0x98, 0xc3, 0xca, 0x23, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x03, 0xcf, 0x03, 0x93, 0x03, 0xc0, 0x01, + 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, 0x11, 0xdc, 0x22, 0x29, 0x74, 0xef, 0xfd, + 0x20, 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, 0x53, 0x0c, 0x1f, 0xe2, + 0x54, 0x0c, 0x77, 0x7c, 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, 0x5d, 0xff, + 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, 0x24, 0xa0, + 0x8f, 0xab, 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, 0x80, 0xc3, 0x22, 0x50, 0xaf, 0x4c, + 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, 0x65, 0xa3, 0xaf, + 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, 0x42, 0x87, + 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, 0x6a, 0xff, 0xfb, 0x43, 0x8b, + 0xa3, 0x7a, 0x32, 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, 0x08, 0x04, + 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, 0x2d, 0x40, + 0xa1, 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, 0x2f, 0xcc, 0x01, 0xce, 0x03, 0x48, 0xc0, + 0x8d, 0x63, 0xf4, 0xfd, 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, 0xc0, 0x8a, 0x09, 0x52, + 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, 0x84, 0x34, + 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, 0xb4, 0x1d, 0xa7, 0xfa, 0x47, 0x82, + 0xec, 0x7a, 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, 0x80, 0xc0, 0x69, + 0x01, 0xc2, 0x3e, 0x90, 0x14, 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, 0x13, 0x68, + 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, 0x41, 0x46, + 0x5f, 0xf8, 0xf1, 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, 0x8f, 0xe5, 0x75, 0x61, 0x03, + 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, 0xc0, 0x60, + 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, 0x59, 0x90, 0x80, 0x30, 0x64, 0x53, 0xff, + 0xf5, 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, 0x00, 0xe8, 0x7b, 0x46, + 0xe6, 0xd8, 0x02, 0x03, 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, 0x81, 0xb4, + 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, 0xf1, 0x70, + 0x30, 0x24, 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, 0x83, 0x00, 0x36, 0x20, 0xd1, 0x50, + 0xe7, 0xd8, 0xad, 0x58, 0x20, 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, 0xf1, 0x60, 0x75, + 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, 0x42, 0x81, + 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, 0x18, 0xa1, 0xaa, 0x47, 0x0e, + 0x11, 0x1a, 0x40, 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, 0x83, 0xa2, + 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, 0x32, 0xf8, + 0x86, 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, 0x78, 0xe7, + 0xd2, 0x97, 0x0b, 0xbc, 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, 0x18, 0x18, 0x11, 0x1f, + 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, 0x17, 0xde, + 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, 0x9e, 0xf4, 0x01, 0x43, 0xea, 0x0c, + 0x46, 0x73, 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, 0xb0, 0x8c, 0x54, + 0x59, 0xfa, 0xac, 0x76, 0x36, 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, 0x71, 0xcc, + 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, 0x57, 0xd7, + 0xff, 0x10, 0xf2, 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, 0xb4, 0x12, 0xdb, 0x1a, 0x48, + 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, 0x5b, 0x2f, + 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, 0x5f, 0x24, 0xfe, 0x8b, 0xcb, 0x42, 0x43, + 0x7e, 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, 0x30, 0x44, 0x15, 0x8f, + 0xe9, 0x0c, 0xd3, 0xa6, 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, 0x02, 0x54, + 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, 0x3f, 0xfd, + 0x44, 0x91, 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, 0x31, 0x34, 0x06, 0x41, 0x79, 0x6f, + 0xf0, 0xcc, 0x03, 0x79, 0x00, 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, 0x44, 0xc8, 0xeb, + 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, 0xf9, 0xb6, + 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, 0xef, 0x25, 0xfa, 0x5a, 0x3e, + 0x92, 0x3e, 0x79, 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, 0xf0, 0x7d, + 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, 0x6e, 0x2b, + 0x18, 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, 0xeb, 0xbe, 0x1f, 0x04, 0x34, 0x75, 0x84, + 0x31, 0x42, 0x4c, 0x65, 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, 0x26, 0x3a, 0x1b, 0xf4, + 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, 0xf9, 0xe5, + 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, 0xb0, 0xda, 0xa9, 0xcb, 0x58, 0xe4, + 0x18, 0x77, 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, 0x9b, 0x8d, 0xbc, + 0xcb, 0x9d, 0xc4, 0x18, 0x05, 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, 0xe5, 0x3a, + 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, 0x2d, 0xd4, + 0x3f, 0xfe, 0x61, 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, 0x47, 0xf4, 0xdc, 0xad, 0xaa, + 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, 0x47, 0x5a, + 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, 0xab, 0x9e, 0xab, 0x2b, 0xdd, 0x3c, 0x66, + 0xa0, 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, 0x00, 0xb0, 0x33, 0x56, + 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, 0xc8, 0x10, 0x56, 0x84, + 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, 0x2f, 0x82, 0x04, 0x9f, + 0x91, 0xc2, 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, 0x30, 0xf0, 0x08, 0x18, + 0xf1, 0x81, 0x45, 0x9a, 0x60, 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, 0xea, 0x31, 0x5a, 0xff, + 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, 0x81, 0xcb, 0x00, 0xe1, 0x10, 0xd2, 0xb4, 0xbe, + 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, 0x04, 0xf6, 0x06, 0x0e, 0x28, + 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, 0x85, 0x4c, 0x16, 0x80, + 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, 0xa9, 0xd5, 0xff, 0xff, + 0xea, 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, 0x78, 0x4a, 0x17, 0x52, + 0x5d, 0xe4, 0x25, 0x1f, 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, 0x82, 0x80, 0x90, 0x41, + 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, 0x2f, 0x43, 0x7e, 0x50, 0x78, 0xf2, 0x67, 0x78, 0x41, + 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, 0x1f, 0x22, 0x60, 0x41, 0x6c, 0x00, + 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, 0xa0, 0x5d, 0x1f, 0xa3, + 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, 0x76, 0x81, 0x05, 0xef, + 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, 0xc4, 0x7f, 0xff, 0xfd, + 0x04, 0x80, 0x06, 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, 0x00, 0xe0, 0x91, 0x00, + 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, 0x04, 0xe9, 0x45, 0x40, + 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, 0xfc, 0xbf, 0xc3, 0xb4, 0x46, 0x6a, 0x01, + 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, 0x08, 0x61, 0xfd, 0xa8, + 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, 0xff, 0xf3, 0x01, 0x45, + 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, 0x30, 0x01, 0x51, 0x42, + 0xbc, 0x43, 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, 0xe0, 0x7e, 0x99, 0xf2, + 0x4a, 0xe9, 0x40, 0x02, 0x81, 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, 0x91, 0xc8, 0x68, 0x25, + 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, 0x91, 0xdd, 0xeb, 0x93, 0x00, 0x21, 0x49, 0x24, + 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, 0x32, 0x00, 0xe3, 0x19, 0xfc, + 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, 0x84, 0xe1, 0x34, 0xd4, + 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, 0xa1, 0x40, 0x2e, 0x2f, + 0x48, 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, 0xa4, 0x16, 0xa2, 0x1b, + 0x84, 0xa2, 0x89, 0x58, 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, 0x32, 0x09, 0x02, 0x80, + 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, 0x99, 0xf2, 0xff, 0xff, 0x3d, 0x5a, 0x1f, 0xa9, 0x02, + 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, 0x41, 0x0c, 0x40, 0x0a, 0x20, 0xc4, + 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, 0xf8, 0x31, 0x02, 0x49, + 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, 0x15, 0xa4, 0x59, 0xc8, + 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, 0x21, 0x0e, 0x7f, 0x2b, + 0xc5, 0x08, 0x59, 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, 0xbb, 0x21, 0xff, 0xfe, + 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, 0x68, 0x8e, 0x07, 0xa6, + 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, 0x21, 0xae, 0xf7, 0xfb, 0x80, 0x28, 0x86, + 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, 0x0c, 0x29, 0xff, 0x0e, + 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, 0x10, 0x70, 0x30, 0xd8, + 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, 0x30, 0xdd, 0x00, 0xdb, + 0xe4, 0x48, 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, 0x60, 0xff, 0xa4, 0xa6, + 0xff, 0xf6, 0x8c, 0x00, 0x40, 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, 0x84, 0x38, 0x81, 0x94, + 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, 0x28, 0xa2, 0x1c, 0x2a, 0x8b, 0x64, 0xd4, 0x86, + 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, 0x4c, 0xbf, 0xb4, 0x1c, 0xd8, + 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, 0xc9, 0x0a, 0x64, 0x20, + 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, 0x07, 0x23, 0xb4, 0xbb, + 0x57, 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, 0xdd, 0x8e, 0x22, 0xdc, + 0x14, 0x2c, 0x61, 0xa3, 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, 0xf4, 0x96, 0xff, 0xf5, + 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, 0x9e, 0x43, 0xa5, 0x7f, 0xf0, 0x4c, 0x4c, 0x2b, 0x3c, + 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, 0x5d, 0x7c, 0x93, 0xba, 0x18, 0xaf, + 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, 0x92, 0x22, 0x4b, 0xdb, + 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, 0x49, 0x34, 0x42, 0x8b, + 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, 0xa9, 0xd8, 0x82, 0x07, + 0xa6, 0x30, 0x0f, 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, 0xe0, 0xd7, 0x02, 0x60, + 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, 0x48, 0x0e, 0x82, 0xa4, + 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, 0x31, 0x0e, 0x11, 0x77, 0xfe, 0x02, 0x60, + 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, 0x2a, 0x41, 0xfd, 0x8a, + 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, 0x13, 0x3e, 0x20, 0x3a, + 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, 0xb2, 0xe9, 0x3f, 0x41, + 0x55, 0x1f, 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, 0xbc, 0x3f, 0xc4, 0xc7, + 0x36, 0xdc, 0x23, 0xc8, 0xb8, 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, 0x00, 0xb2, 0x46, 0xa2, 0x56, + 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, 0xfa, 0x34, 0x0c, 0x5f, 0xf8, 0x0c, 0x12, 0x50, + 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, 0x25, 0x9d, 0xc1, 0xff, 0x7e, + 0x60, 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, 0xfe, 0x2d, 0x40, 0x7c, 0x28, + 0x9e, 0x71, 0x01, 0xd2, 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, 0x08, 0x4c, 0x04, 0x52, 0x7e, + 0xf2, 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, 0x80, 0xae, 0xaf, 0xfe, 0xb0, 0x6d, 0x23, 0xf2, 0x41, + 0xe3, 0x2e, 0x20, 0x11, 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, 0x38, 0xa3, 0x95, 0x82, 0x15, 0xf0, + 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, 0x26, 0x81, 0xe9, 0x47, 0xff, 0xee, 0x0d, 0x20, 0x34, + 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, 0x27, 0xf1, 0x90, 0x85, 0x09, 0x86, + 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, 0x16, 0xbf, 0x04, 0xa7, 0xf8, + 0xa2, 0x46, 0x0b, 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, 0xf4, 0x0b, 0x14, 0x82, 0xfa, + 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, 0x11, 0x7f, 0x03, 0x68, 0x44, 0xc1, 0x1f, 0x81, 0x3a, 0x6c, + 0x77, 0x95, 0x02, 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, 0x90, 0xe8, 0xfd, 0x1f, 0xa6, 0x40, 0x0b, + 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, 0xe8, 0xaf, 0x9a, 0xc1, 0x80, 0x0f, 0x0a, 0x14, 0x02, 0x3c, + 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, 0xe4, 0x83, 0x8e, 0x03, 0x88, 0xd5, 0xaf, + 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, 0x02, 0x43, 0xc4, 0x14, 0x2a, + 0x3f, 0xc8, 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, 0x56, 0x80, 0xa6, 0x85, 0x00, + 0xea, 0x3e, 0x8f, 0xeb, 0x9f, 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, 0x78, 0xa0, 0x1e, 0x6f, 0x54, + 0x78, 0x51, 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, 0x4c, 0x21, 0x3b, 0xfb, 0x90, 0x0a, 0xcc, 0x1d, + 0xd2, 0x47, 0xff, 0xfc, 0x70, 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, 0x7f, 0x91, 0xd3, 0x66, 0x2f, + 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, 0x6b, 0x72, 0x00, 0xab, 0x33, 0x04, 0xcf, 0x43, + 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, 0x41, 0x44, 0x84, 0x8e, 0x08, + 0x19, 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, 0xd2, 0xd0, 0x1f, 0x13, 0x42, + 0xa0, 0x21, 0x41, 0xc4, 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, 0x7d, 0x35, 0x4f, 0x7f, 0xff, + 0xf9, 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, 0x00, 0x09, 0x50, 0x4b, 0x90, 0x8a, 0xc7, 0x94, 0x4d, + 0x47, 0xc1, 0x62, 0x32, 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, 0x1c, 0x96, 0x44, 0xa0, 0x09, 0xc8, + 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, 0x3e, 0x3e, 0x19, 0x93, 0xa0, 0x36, 0x26, 0x22, 0x08, + 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, 0x06, 0xd4, 0xa8, 0x22, 0x73, 0x7b, + 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, 0x77, 0xac, 0xe0, 0xc4, 0x06, + 0x1f, 0xb8, 0xa5, 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, 0x71, 0x2a, 0x3d, 0x14, 0x19, + 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, 0x5f, 0xc5, 0x90, 0x0a, 0x85, 0xc2, 0x3f, 0x87, 0x03, 0xa8, + 0x26, 0x17, 0xc4, 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, 0x48, 0x16, 0xed, 0x96, 0x93, 0xec, 0x1b, + 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, 0x4d, 0xce, 0x40, 0xf3, 0x0c, 0x51, 0x4b, 0x84, 0x9e, 0x67, + 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, 0x81, 0x35, 0x87, 0xff, 0x98, 0x0f, 0x40, + 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, 0x80, 0x6a, 0xa0, 0x43, 0xff, + 0x2d, 0xd6, 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, 0x1a, 0x2a, 0x06, 0xc0, 0x01, + 0x40, 0x0c, 0x30, 0xc1, 0xd0, 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, 0xd3, 0xb4, 0x0d, 0x88, 0x98, + 0xea, 0xda, 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, 0x40, 0x14, 0xff, 0xff, 0xff, 0xea, 0xdb, 0x9b, + 0x92, 0xd8, 0x68, 0x08, 0x0b, 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, 0xb0, 0x9a, 0x98, 0xc0, 0x80, + 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, 0x03, 0x29, 0x7f, 0xe1, 0x6d, 0x4c, 0x0f, 0x01, + 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, 0x33, 0xf1, 0x80, 0xe1, 0x49, + 0x08, 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, 0x5e, 0xca, 0xf8, 0x3a, 0x00, + 0x1e, 0xb0, 0x06, 0x84, 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, 0x21, 0x43, 0x8e, 0xa5, 0x55, + 0x77, 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, 0x0c, 0x42, 0x20, 0xd2, 0x48, 0x61, 0xc8, 0x1c, 0x65, + 0xf8, 0xfe, 0x4c, 0x88, 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, 0x54, 0x09, 0x13, 0x28, 0x52, 0xf5, + 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, 0xcf, 0xf8, 0xf4, 0x7f, 0xff, 0xfd, 0x01, 0x49, 0xa4, + 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, 0xb2, 0x50, 0x76, 0x30, 0x5b, 0x03, + 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, 0x7a, 0xc6, 0x1c, 0x87, 0xd7, + 0x48, 0x7b, 0x49, 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, 0x0d, 0x1e, 0x9e, 0x53, 0xb7, + 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, 0x11, 0x3f, 0xb1, 0xa9, 0xa6, 0xe8, 0x4d, 0x47, 0x77, 0xda, + 0x43, 0x76, 0x89, 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, 0x09, 0x6f, 0xe7, 0x2d, 0x82, 0x35, 0x07, + 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, 0x42, 0x54, 0x80, 0x43, 0x12, 0x6c, 0x9a, 0x55, 0xc9, 0x0a, + 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, 0xc9, 0x4e, 0xfe, 0x5b, 0x30, 0xa4, 0xe8, + 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, 0x1f, 0xff, 0xfa, 0xc3, 0xe3, + 0x55, 0xf1, 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, 0x01, 0x26, 0x15, 0xa9, 0xf9, + 0xd9, 0x32, 0x41, 0x90, 0x36, 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, 0x8c, 0x6e, 0x42, 0x5d, 0xd8, + 0x1e, 0xfe, 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, 0x14, 0xeb, 0x6e, 0x48, 0x7a, 0x91, 0x88, 0x7b, + 0x7d, 0x8f, 0x72, 0x42, 0x39, 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, 0x60, 0x30, 0x00, + /* FRAME_END as in 4.2.3 */ + 0xc5, 0xcc, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, +]; + +const DECODED_IMAGE: [u8; IMAGE_WIDTH * IMAGE_HEIGHT * FORMAT_SIZE] = [ + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, + 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, + 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, + 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, + 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, + 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, + 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, + 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, + 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, + 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, + 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, + 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, + 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, + 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, + 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, + 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, + 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, + 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, + 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, + 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, + 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, + 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, + 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, + 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, + 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, + 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, + 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, + 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, + 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, + 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, + 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, + 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, + 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, + 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, + 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, + 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, + 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, + 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, + 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, + 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, + 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, + 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, + 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, + 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, + 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, + 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, + 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, + 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, + 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, + 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, + 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, + 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, + 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, + 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, + 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, + 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, + 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, + 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, + 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, + 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, + 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, + 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, + 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, + 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, + 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, + 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, + 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, + 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, + 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, + 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, + 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, + 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, + 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, + 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, + 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, + 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, + 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, + 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, + 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, + 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, + 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, + 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, + 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, + 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, + 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, + 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, + 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, + 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, + 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, + 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, + 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, + 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, + 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, + 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, + 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, + 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, + 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, + 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, + 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, + 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, + 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, + 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, + 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, + 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, + 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, + 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, + 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, + 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, + 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, + 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, + 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, + 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, + 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, + 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, + 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, + 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, + 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, + 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, + 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, + 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, + 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, + 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, + 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, + 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, + 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, + 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, + 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, + 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, + 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, + 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, + 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, + 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, + 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, + 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, + 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, + 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, + 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, + 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, + 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, + 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, + 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, + 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, + 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, + 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, + 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, + 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, + 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, + 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, + 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, + 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, + 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, + 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, + 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, + 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, + 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, + 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, + 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, + 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, + 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, + 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, + 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, + 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, + 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, + 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, + 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, + 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, + 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, + 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, + 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, + 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, + 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, + 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, + 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, + 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, + 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, + 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, + 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, + 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, + 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, + 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, + 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, + 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, + 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, + 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, + 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, + 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, + 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, + 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, + 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, + 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, + 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, + 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, + 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, + 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, + 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, + 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, + 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, + 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, + 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, + 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, + 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, + 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, + 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, + 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, + 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, + 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, + 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, + 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, + 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, + 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, + 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, + 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, + 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, + 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, + 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, + 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, + 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, + 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, + 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, + 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, + 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, + 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, + 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, + 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, + 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, + 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, + 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, + 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, + 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, + 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, + 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, + 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, + 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, + 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, + 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, + 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, + 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, + 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, + 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, + 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, + 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, + 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, + 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, + 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, + 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, + 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, + 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, + 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, + 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, + 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, + 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, + 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, + 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, + 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, + 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, + 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, + 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, + 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, + 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, + 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, + 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, + 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, + 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, + 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, + 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, + 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, + 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, + 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, + 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, + 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, + 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, + 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, + 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, + 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, + 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, + 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, + 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, + 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, + 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, + 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, + 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, + 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, + 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, + 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, + 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, + 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, + 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, + 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, + 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, + 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, + 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, + 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, + 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, + 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, + 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, + 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, + 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, + 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, + 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, + 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, + 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, + 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, + 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, + 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, + 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, + 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, + 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, + 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, + 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, + 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, + 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, + 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, + 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, + 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, + 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, + 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, + 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, + 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, + 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, + 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, + 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, + 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, + 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, + 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, + 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, + 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, + 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, + 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, + 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, + 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, + 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, + 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, + 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, + 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, + 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, + 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, + 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, + 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, + 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, + 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, + 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, + 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, + 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, + 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, + 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, + 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, + 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, + 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, + 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, + 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, + 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, + 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, + 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, + 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, + 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, + 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, + 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, + 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, + 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, + 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, + 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, + 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, + 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, + 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, + 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, + 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, + 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, + 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, + 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, + 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, + 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, + 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, + 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, + 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, + 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, + 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, + 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, + 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, + 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, + 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, + 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, + 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, + 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, + 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, + 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, + 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, + 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, + 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, + 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, + 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, + 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, + 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, + 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, + 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, + 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, + 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, + 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, + 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, + 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, + 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, + 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, + 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, + 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, + 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, + 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, + 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, + 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, + 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, + 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, + 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, + 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, + 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, + 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, + 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, + 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, + 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, + 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, + 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, + 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, + 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, + 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, + 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, + 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, + 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, + 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, + 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, + 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, + 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, + 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, + 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, + 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, + 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, + 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, + 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, + 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, + 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, + 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, + 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, + 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, + 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, + 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, + 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, + 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, + 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, + 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, + 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, + 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, + 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, + 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, + 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, + 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, + 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, + 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, + 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, + 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, + 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, + 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, + 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, + 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, + 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, + 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, + 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, + 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, + 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, + 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, + 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, + 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, + 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, + 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, + 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, + 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, + 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, + 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, + 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, + 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, + 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, + 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, + 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, + 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, + 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, + 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, + 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, + 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, + 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, + 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, + 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, + 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, + 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, + 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, + 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, + 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, + 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, + 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, + 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, + 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, + 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, + 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, + 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, + 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, + 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, + 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, + 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, + 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, + 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, + 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, + 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, + 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, + 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, + 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, + 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, + 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, + 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, + 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, + 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, + 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, + 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, + 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, + 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, + 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, + 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, + 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, + 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, + 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, + 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, + 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, + 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, + 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, + 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, + 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, + 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, + 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, + 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, + 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, + 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, + 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, + 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, + 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, + 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, + 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, + 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, + 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, + 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, + 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, + 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, + 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, + 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, + 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, + 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, + 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, + 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, + 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, + 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, + 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, + 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, + 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, + 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, + 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, + 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, + 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, + 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, + 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, + 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, + 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, + 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, + 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, + 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, + 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, + 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, + 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, + 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, + 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, + 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, + 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, + 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, + 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, + 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, + 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, + 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, + 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, + 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, + 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, + 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, + 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, + 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, + 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, + 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, + 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, + 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, + 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, + 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, + 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, + 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, + 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, + 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, + 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, + 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, + 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, + 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, + 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, + 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, + 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, + 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, + 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, + 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, + 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, + 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, + 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, + 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, + 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, + 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, + 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, + 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, + 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, + 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, + 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, + 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, + 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, + 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, + 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, + 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, + 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, + 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, + 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, + 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, + 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, + 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, + 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, + 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, + 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, + 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, + 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, + 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, + 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, + 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, + 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, + 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, + 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, + 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, + 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, + 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, + 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, + 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, + 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, + 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, + 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, + 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, + 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, + 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, + 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, + 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, + 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, + 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, + 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, + 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, + 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, + 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, + 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, + 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, + 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, + 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, + 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, + 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, + 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, + 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, + 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, + 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, + 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, + 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, + 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, + 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, + 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, + 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, + 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, + 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, + 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, + 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, + 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, + 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, + 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, + 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, + 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, + 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, + 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, + 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, + 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, + 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, + 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, + 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, + 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, + 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, + 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, + 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, + 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, + 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, + 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, + 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, + 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, + 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, + 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, + 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, + 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, + 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, + 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, + 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, + 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, + 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, + 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, + 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, + 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, + 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, + 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, + 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, + 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, + 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, + 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, + 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, + 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, + 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, + 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, + 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, + 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, + 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, + 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, + 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, + 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, + 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, + 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, + 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, + 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, + 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, + 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, + 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, + 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, + 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, + 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, + 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, + 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, + 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, + 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, + 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, + 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, + 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, + 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, + 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, + 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, + 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, + 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, + 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, + 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, + 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, + 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, + 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, + 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, + 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, + 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, + 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, + 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, + 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, + 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, + 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, + 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, + 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, + 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, + 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, + 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, + 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, + 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, + 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, + 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, + 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, + 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, + 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, + 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, + 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, + 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, + 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, + 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, + 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, + 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, + 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, + 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, + 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, + 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, + 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, + 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, + 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, + 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, + 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, + 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, + 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, + 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, + 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, + 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, + 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, + 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, + 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, + 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, + 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, + 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, + 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, + 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, + 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, + 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, + 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, + 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, + 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, + 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, + 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, + 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, + 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, + 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, + 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, + 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, + 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, + 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, + 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, + 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, + 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, + 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, + 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, + 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, + 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, + 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, + 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, + 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, + 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, + 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, + 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, + 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, + 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, + 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, + 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, + 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, + 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, + 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, + 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, + 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, + 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, + 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, + 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, + 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, + 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, + 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, + 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, + 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, + 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, + 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, +]; diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs new file mode 100644 index 00000000..df24e59c --- /dev/null +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -0,0 +1,264 @@ +use std::{ + io, + sync::{Arc, Mutex}, +}; + +use ironrdp::{ + codecs::rfx::FrameAcknowledgePdu, + fast_path::{ + FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, + }, + surface_commands::{FrameAction, SurfaceCommand}, + PduBufferParsing, ShareDataPdu, +}; +use log::{debug, error, info, warn}; +use num_traits::FromPrimitive; + +use super::{codecs::rfx, DecodedImage, DESTINATION_PIXEL_FORMAT}; +use crate::{ + transport::{ + DataTransport, Encoder, McsTransport, SendDataContextTransport, + ShareControlHeaderTransport, ShareDataHeaderTransport, + }, + utils::CodecId, + RdpError, RdpResult, +}; +use ironrdp::surface_commands::FrameMarkerPdu; + +pub struct Processor { + complete_data: CompleteData, + rfx_handler: rfx::DecodingContext, + decoded_image: Arc>, + frame: Frame, +} + +impl Processor { + pub fn process( + &mut self, + header: &FastPathHeader, + mut stream: impl io::BufRead + io::Write, + ) -> RdpResult<()> { + debug!("Got Fast-Path Header: {:?}", header); + + let input_buffer = stream.fill_buf()?; + + let update_pdu = FastPathUpdatePdu::from_buffer(input_buffer)?; + let update_pdu_length = update_pdu.buffer_length(); + + debug!( + "Fast-Path Update fragmentation: {:?}", + update_pdu.fragmentation + ); + + let processed_complete_data = self.complete_data.process_pdu(update_pdu); + stream.consume(update_pdu_length); + + if let Some((update_code, data)) = processed_complete_data { + let update = + FastPathUpdate::from_buffer_consume_with_code(&mut data.as_slice(), update_code); + info!("Got Fast-Path Update: {:?}", update_code); + + match update { + Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { + self.process_surface_commands(&mut stream, surface_commands)?; + } + Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { + warn!("Received unsupported Fast-Path update: {:?}", update_code) + } + Err(e) => { + return Err(RdpError::from(e)); + } + } + } + + Ok(()) + } + + fn process_surface_commands( + &mut self, + mut output: impl io::Write, + surface_commands: Vec>, + ) -> RdpResult<()> { + for command in surface_commands { + match command { + SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { + info!("Surface bits"); + let codec_id = CodecId::from_u8(bits.extended_bitmap_data.codec_id).ok_or( + RdpError::UnexpectedCodecId(bits.extended_bitmap_data.codec_id), + )?; + match codec_id { + CodecId::RemoteFx => { + let destination = bits.destination; + let mut data = bits.extended_bitmap_data.data; + + while !data.is_empty() { + self.rfx_handler.decode( + &destination, + &mut data, + self.decoded_image.clone(), + )?; + } + self.frame.image_updated(); + } + } + } + SurfaceCommand::FrameMarker(marker) => { + info!( + "Frame marker: action {:?} with ID #{}", + marker.frame_action, marker.frame_id + ); + self.frame.process_marker(&marker, &mut output)?; + } + } + } + + Ok(()) + } +} + +pub struct ProcessorBuilder { + pub decoded_image: Arc>, + pub global_channel_id: u16, + pub initiator_id: u16, +} + +impl ProcessorBuilder { + pub fn build(self) -> Processor { + Processor { + complete_data: CompleteData::new(), + rfx_handler: rfx::DecodingContext::new(DESTINATION_PIXEL_FORMAT), + decoded_image: self.decoded_image.clone(), + frame: Frame::new( + self.decoded_image, + self.initiator_id, + self.global_channel_id, + ), + } + } +} + +#[derive(Debug, PartialEq)] +struct CompleteData { + fast_path_pdu: Option, + data: Option>, +} + +impl CompleteData { + fn new() -> Self { + Self { + fast_path_pdu: None, + data: None, + } + } + + fn process_pdu( + &mut self, + fast_path_pdu: FastPathUpdatePdu<'_>, + ) -> Option<(UpdateCode, Vec)> { + match fast_path_pdu.fragmentation { + Fragmentation::Single => { + self.check_data_is_empty(); + + Some((fast_path_pdu.update_code, fast_path_pdu.data.to_vec())) + } + Fragmentation::First => { + self.check_data_is_empty(); + + self.data = Some(fast_path_pdu.data.to_vec()); + self.fast_path_pdu = Some(fast_path_pdu.update_code); + + None + } + Fragmentation::Next => { + self.append_data(fast_path_pdu.data); + + None + } + Fragmentation::Last => { + self.append_data(fast_path_pdu.data); + + let update_code = self.fast_path_pdu.take().unwrap(); + let data = self.data.take().unwrap(); + + Some((update_code, data)) + } + } + } + + fn check_data_is_empty(&mut self) { + if self.data.is_some() && self.fast_path_pdu.is_some() { + warn!("Skipping pending Fast-Path Update internal multiple elements data"); + self.data = None; + self.fast_path_pdu = None; + } + } + + fn append_data(&mut self, data: &[u8]) { + if self.data.is_none() && self.fast_path_pdu.is_none() { + warn!("Got unexpected Next fragmentation PDU without prior First fragmentation PDU"); + self.data = None; + self.fast_path_pdu = None; + } else { + self.data.as_mut().unwrap().extend_from_slice(data); + } + } +} + +struct Frame { + transport: ShareDataHeaderTransport, + decoded_image: Arc>, + image_updated: bool, +} + +impl Frame { + fn new( + decoded_image: Arc>, + initiator_id: u16, + global_channel_id: u16, + ) -> Self { + Self { + decoded_image, + transport: ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( + SendDataContextTransport::new( + McsTransport::new(DataTransport::default()), + initiator_id, + global_channel_id, + ), + initiator_id, + global_channel_id, + )), + image_updated: false, + } + } + fn image_updated(&mut self) { + self.image_updated = true; + } + + fn process_marker( + &mut self, + marker: &FrameMarkerPdu, + mut output: impl io::Write, + ) -> RdpResult<()> { + match marker.frame_action { + FrameAction::Begin => { + self.image_updated = false; + + Ok(()) + } + FrameAction::End => { + if self.image_updated { + if let Err(e) = self.decoded_image.lock().unwrap().save() { + error!("Failed to save frame: {}", e); + } + } + + self.transport.encode( + ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { + frame_id: marker.frame_id, + }), + &mut output, + ) + } + } + } +} diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs new file mode 100644 index 00000000..58674275 --- /dev/null +++ b/ironrdp_client/src/active_session/x224.rs @@ -0,0 +1,349 @@ +mod gfx; + +use std::{cmp, collections::HashMap, io}; + +use ironrdp::{ + rdp::vc::{self, dvc}, + Data, ShareDataPdu, +}; +use log::{debug, error}; + +use crate::{ + transport::{ + Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, + ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, + }, + RdpError, RdpResult, GLOBAL_CHANNEL_NAME, +}; + +const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; + +pub struct Processor { + static_channels: HashMap, + dynamic_channels: HashMap, +} + +impl Processor { + pub fn new(static_channels: HashMap) -> Self { + Self { + static_channels, + dynamic_channels: HashMap::new(), + } + } + + pub fn process( + &mut self, + mut stream: impl io::BufRead + io::Write, + data: Data, + ) -> RdpResult<()> { + let mut transport = SendDataContextTransport::default(); + transport + .mcs_transport + .0 + .set_decoded_context(data.data_length); + + let channel_ids = transport.decode(&mut stream)?; + transport.set_decoded_context(channel_ids); + + match self + .static_channels + .get(&channel_ids.channel_id) + .map(String::as_str) + { + Some(vc::DRDYNVC_CHANNEL_NAME) => { + let transport = DynamicVirtualChannelTransport::new( + StaticVirtualChannelTransport::new(transport), + channel_ids.channel_id, + ); + + self.process_dvc_message(&mut stream, transport) + } + Some(GLOBAL_CHANNEL_NAME) => { + let transport = ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( + transport, + channel_ids.initiator_id, + channel_ids.channel_id, + )); + + process_session_info(&mut stream, transport) + } + Some(_) => Err(RdpError::UnexpectedChannel(channel_ids.channel_id)), + None => panic!("Channel with {} ID must be added", channel_ids.channel_id), + } + } + + fn process_dvc_message( + &mut self, + mut stream: impl io::BufRead + io::Write, + mut transport: DynamicVirtualChannelTransport, + ) -> RdpResult<()> { + match transport.decode(&mut stream)? { + dvc::ServerPdu::CapabilitiesRequest(caps_request) => { + debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); + let caps_response = + dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { + version: dvc::CapsVersion::V1, + }); + + debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(caps_response, None)?, + &mut stream, + )?; + } + dvc::ServerPdu::CreateRequest(create_request) => { + debug!("Got DVC Create Request PDU: {:?}", create_request); + + let creation_status = if let Some(dyncamic_channel) = + create_dvc(create_request.channel_name.as_str()) + { + self.dynamic_channels + .insert(create_request.channel_id, dyncamic_channel); + + dvc::DVC_CREATION_STATUS_OK + } else { + dvc::DVC_CREATION_STATUS_NO_LISTENER + }; + + let create_response = dvc::ClientPdu::CreateResponse(dvc::CreateResponsePdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + creation_status, + }); + + debug!("Send DVC Create Response PDU: {:?}", create_response); + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(create_response, None)?, + &mut stream, + )?; + + negotiate_dvc(&create_request, transport, &mut stream)?; + } + dvc::ServerPdu::CloseRequest(close_request) => { + debug!("Got DVC Close Request PDU: {:?}", close_request); + + let close_response = dvc::ClientPdu::CloseResponse(dvc::ClosePdu { + channel_id_type: close_request.channel_id_type, + channel_id: close_request.channel_id, + }); + + debug!("Send DVC Close Response PDU: {:?}", close_response); + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(close_response, None)?, + &mut stream, + )?; + + self.dynamic_channels.remove(&close_request.channel_id); + } + dvc::ServerPdu::DataFirst(data) => { + let channel_id_type = data.channel_id_type; + let channel_id = data.channel_id; + let mut data_buff = vec![0; data.data_size]; + stream.read_exact(&mut data_buff)?; + + if let Some(dvc_data) = self + .dynamic_channels + .get_mut(&data.channel_id) + .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .process_data_first_pdu(data.total_data_size as usize, data_buff)? + { + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type, + channel_id, + data_size: dvc_data.len(), + }); + + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode( + client_data, + Some(dvc_data), + )?, + &mut stream, + )?; + } + } + dvc::ServerPdu::Data(data) => { + let channel_id_type = data.channel_id_type; + let channel_id = data.channel_id; + let mut data_buff = vec![0; data.data_size]; + stream.read_exact(&mut data_buff)?; + + if let Some(dvc_data) = self + .dynamic_channels + .get_mut(&data.channel_id) + .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .process_data_pdu(data_buff)? + { + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type, + channel_id, + data_size: dvc_data.len(), + }); + + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode( + client_data, + Some(dvc_data), + )?, + &mut stream, + )?; + } + } + } + + Ok(()) + } +} + +fn process_session_info( + mut stream: impl io::BufRead + io::Write, + mut transport: ShareDataHeaderTransport, +) -> RdpResult<()> { + let share_data_pdu = transport.decode(&mut stream)?; + + if let ShareDataPdu::SaveSessionInfo(session_info) = share_data_pdu { + debug!("Got Session Save Info PDU: {:?}", session_info); + Ok(()) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Session Save Info PDU, got: {:?}", + share_data_pdu.as_short_name() + ))) + } +} + +fn create_dvc(channel_name: &str) -> Option { + match channel_name { + RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new(Box::new(gfx::Handler::new()))), + _ => None, + } +} + +fn negotiate_dvc( + create_request: &dvc::CreateRequestPdu, + mut transport: DynamicVirtualChannelTransport, + mut stream: impl io::Write, +) -> Result<(), RdpError> { + if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { + let dvc_data = gfx::create_capabilities_advertise()?; + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type: create_request.channel_id_type, + channel_id: create_request.channel_id, + data_size: dvc_data.len(), + }); + + debug!("Send GFX Capabilities Advertise PDU"); + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, + &mut stream, + )?; + } + + Ok(()) +} + +trait DynamicChannelDataHandler { + fn process_complete_data( + &mut self, + complete_data: Vec, + ) -> Result>, RdpError>; +} + +pub struct DynamicChannel { + data: CompleteData, + handler: Box, +} + +impl DynamicChannel { + fn new(handler: Box) -> Self { + Self { + data: CompleteData::new(), + handler, + } + } + + fn process_data_first_pdu( + &mut self, + total_data_size: usize, + data: Vec, + ) -> Result>, RdpError> { + if let Some(complete_data) = self.data.process_data_first_pdu(total_data_size, data) { + self.handler.process_complete_data(complete_data) + } else { + Ok(None) + } + } + + fn process_data_pdu(&mut self, data: Vec) -> Result>, RdpError> { + if let Some(complete_data) = self.data.process_data_pdu(data) { + self.handler.process_complete_data(complete_data) + } else { + Ok(None) + } + } +} + +#[derive(Debug, PartialEq)] +struct CompleteData { + total_size: usize, + data: Vec, +} + +impl CompleteData { + fn new() -> Self { + Self { + total_size: 0, + data: Vec::new(), + } + } + + fn process_data_first_pdu(&mut self, total_data_size: usize, data: Vec) -> Option> { + if self.total_size != 0 || !self.data.is_empty() { + error!("Incomplete DVC message, it will be skipped"); + + self.data.clear(); + } + + if total_data_size == data.len() { + Some(data) + } else { + self.total_size = total_data_size; + self.data = data; + + None + } + } + + fn process_data_pdu(&mut self, mut data: Vec) -> Option> { + if self.total_size == 0 && self.data.is_empty() { + // message is not fragmented + Some(data) + } else { + // message is fragmented so need to reassemble it + let actual_data_length = self.data.len() + data.len(); + + match actual_data_length.cmp(&(self.total_size)) { + cmp::Ordering::Less => { + // this is one of the fragmented messages, just append it + self.data.append(&mut data); + None + } + cmp::Ordering::Equal => { + // this is the last fragmented message, need to return the whole reassembled message + self.total_size = 0; + self.data.append(&mut data); + Some(self.data.drain(..).collect()) + } + cmp::Ordering::Greater => { + error!( + "Actual DVC message size is grater than expected total DVC message size" + ); + self.total_size = 0; + self.data.clear(); + + None + } + } + } + } +} diff --git a/ironrdp_client/src/channels/gfx.rs b/ironrdp_client/src/active_session/x224/gfx.rs similarity index 100% rename from ironrdp_client/src/channels/gfx.rs rename to ironrdp_client/src/active_session/x224/gfx.rs diff --git a/ironrdp_client/src/channels.rs b/ironrdp_client/src/channels.rs deleted file mode 100644 index ed90a61e..00000000 --- a/ironrdp_client/src/channels.rs +++ /dev/null @@ -1,348 +0,0 @@ -mod gfx; - -use std::{cmp, collections::HashMap, io}; - -use ironrdp::{ - rdp::vc::{self, dvc}, - ShareDataPdu, -}; -use log::{debug, error, warn}; - -use crate::{ - transport::{ - Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, - ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, - }, - utils, RdpError, RdpResult, StaticChannels, GLOBAL_CHANNEL_NAME, -}; - -const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; - -pub fn process_active_connection_messages( - mut stream: impl io::BufRead + io::Write, - static_channels: StaticChannels, -) -> RdpResult<()> { - let static_channels = utils::swap_hashmap_kv(static_channels); - let mut dynamic_channels: HashMap = HashMap::new(); - let mut transport = SendDataContextTransport::default(); - - loop { - match transport.decode(&mut stream) { - Ok(channel_ids) => { - let mut transport = transport.clone(); - transport.set_decoded_context(channel_ids); - - match static_channels.get(&channel_ids.channel_id) { - Some(channel_name) => { - if vc::DRDYNVC_CHANNEL_NAME == channel_name { - let transport = DynamicVirtualChannelTransport::new( - StaticVirtualChannelTransport::new(transport), - channel_ids.channel_id, - ); - - process_dvc_message(&mut stream, transport, &mut dynamic_channels)?; - } else if GLOBAL_CHANNEL_NAME == channel_name { - let transport = - ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( - transport, - channel_ids.initiator_id, - channel_ids.channel_id, - )); - - process_session_info(&mut stream, transport)?; - } else { - warn!( - "Got message on a channel with {} ID", - channel_ids.channel_id - ); - break; - } - } - None => panic!("Channel with {} ID must be added", channel_ids.channel_id), - } - } - Err(error) => match error { - RdpError::UnexpectedDisconnection(message) => { - warn!("User-Initiated disconnection on Server: {}", message); - break; - } - err => { - return Err(err); - } - }, - } - } - - Ok(()) -} - -fn process_dvc_message( - mut stream: impl io::BufRead + io::Write, - mut transport: DynamicVirtualChannelTransport, - dynamic_channels: &mut HashMap, -) -> RdpResult<()> { - match transport.decode(&mut stream)? { - dvc::ServerPdu::CapabilitiesRequest(caps_request) => { - debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); - let caps_response = - dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { - version: dvc::CapsVersion::V1, - }); - - debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(caps_response, None)?, - &mut stream, - )?; - } - dvc::ServerPdu::CreateRequest(create_request) => { - debug!("Got DVC Create Request PDU: {:?}", create_request); - - let creation_status = - if let Some(dyncamic_channel) = create_dvc(create_request.channel_name.as_str()) { - dynamic_channels.insert(create_request.channel_id, dyncamic_channel); - - dvc::DVC_CREATION_STATUS_OK - } else { - dvc::DVC_CREATION_STATUS_NO_LISTENER - }; - - let create_response = dvc::ClientPdu::CreateResponse(dvc::CreateResponsePdu { - channel_id_type: create_request.channel_id_type, - channel_id: create_request.channel_id, - creation_status, - }); - - debug!("Send DVC Create Response PDU: {:?}", create_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(create_response, None)?, - &mut stream, - )?; - - negotiate_dvc(&create_request, transport, &mut stream)?; - } - dvc::ServerPdu::CloseRequest(close_request) => { - debug!("Got DVC Close Request PDU: {:?}", close_request); - - let close_response = dvc::ClientPdu::CloseResponse(dvc::ClosePdu { - channel_id_type: close_request.channel_id_type, - channel_id: close_request.channel_id, - }); - - debug!("Send DVC Close Response PDU: {:?}", close_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(close_response, None)?, - &mut stream, - )?; - - dynamic_channels.remove(&close_request.channel_id); - } - dvc::ServerPdu::DataFirst(data) => { - let channel_id_type = data.channel_id_type; - let channel_id = data.channel_id; - let mut data_buff = vec![0; data.data_size]; - stream.read_exact(&mut data_buff)?; - - if let Some(dvc_data) = dynamic_channels - .get_mut(&data.channel_id) - .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_first_pdu(data.total_data_size as usize, data_buff)? - { - let client_data = dvc::ClientPdu::Data(dvc::DataPdu { - channel_id_type, - channel_id, - data_size: dvc_data.len(), - }); - - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode( - client_data, - Some(dvc_data), - )?, - &mut stream, - )?; - } - } - dvc::ServerPdu::Data(data) => { - let channel_id_type = data.channel_id_type; - let channel_id = data.channel_id; - let mut data_buff = vec![0; data.data_size]; - stream.read_exact(&mut data_buff)?; - - if let Some(dvc_data) = dynamic_channels - .get_mut(&data.channel_id) - .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_pdu(data_buff)? - { - let client_data = dvc::ClientPdu::Data(dvc::DataPdu { - channel_id_type, - channel_id, - data_size: dvc_data.len(), - }); - - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode( - client_data, - Some(dvc_data), - )?, - &mut stream, - )?; - } - } - } - - Ok(()) -} - -fn process_session_info( - mut stream: impl io::BufRead + io::Write, - mut transport: ShareDataHeaderTransport, -) -> RdpResult<()> { - let share_data_pdu = transport.decode(&mut stream)?; - - if let ShareDataPdu::SaveSessionInfo(session_info) = share_data_pdu { - debug!("Got Session Save Info PDU: {:?}", session_info); - Ok(()) - } else { - Err(RdpError::UnexpectedPdu(format!( - "Expected Session Save Info PDU, got: {:?}", - share_data_pdu.as_short_name() - ))) - } -} - -fn create_dvc(channel_name: &str) -> Option { - match channel_name { - RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new(Box::new(gfx::Handler::new()))), - _ => None, - } -} - -fn negotiate_dvc( - create_request: &dvc::CreateRequestPdu, - mut transport: DynamicVirtualChannelTransport, - mut stream: impl io::Write, -) -> Result<(), RdpError> { - if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { - let dvc_data = gfx::create_capabilities_advertise()?; - let client_data = dvc::ClientPdu::Data(dvc::DataPdu { - channel_id_type: create_request.channel_id_type, - channel_id: create_request.channel_id, - data_size: dvc_data.len(), - }); - - debug!("Send GFX Capabilities Advertise PDU"); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut stream, - )?; - } - - Ok(()) -} - -trait DynamicChannelDataHandler { - fn process_complete_data( - &mut self, - complete_data: Vec, - ) -> Result>, RdpError>; -} - -struct DynamicChannel { - data: CompleteData, - handler: Box, -} - -impl DynamicChannel { - pub fn new(handler: Box) -> Self { - Self { - data: CompleteData::new(), - handler, - } - } - - pub fn process_data_first_pdu( - &mut self, - total_data_size: usize, - data: Vec, - ) -> Result>, RdpError> { - if let Some(complete_data) = self.data.process_data_first_pdu(total_data_size, data) { - self.handler.process_complete_data(complete_data) - } else { - Ok(None) - } - } - - pub fn process_data_pdu(&mut self, data: Vec) -> Result>, RdpError> { - if let Some(complete_data) = self.data.process_data_pdu(data) { - self.handler.process_complete_data(complete_data) - } else { - Ok(None) - } - } -} - -#[derive(Debug, PartialEq)] -struct CompleteData { - total_size: usize, - data: Vec, -} - -impl CompleteData { - fn new() -> Self { - Self { - total_size: 0, - data: Vec::new(), - } - } - - fn process_data_first_pdu(&mut self, total_data_size: usize, data: Vec) -> Option> { - if self.total_size != 0 || !self.data.is_empty() { - error!("Incomplete DVC message, it will be skipped"); - - self.data.clear(); - } - - if total_data_size == data.len() { - Some(data) - } else { - self.total_size = total_data_size; - self.data = data; - - None - } - } - - fn process_data_pdu(&mut self, mut data: Vec) -> Option> { - if self.total_size == 0 && self.data.is_empty() { - // message is not fragmented - Some(data) - } else { - // message is fragmented so need to reassemble it - let actual_data_length = self.data.len() + data.len(); - - match actual_data_length.cmp(&(self.total_size)) { - cmp::Ordering::Less => { - // this is one of the fragmented messages, just append it - self.data.append(&mut data); - None - } - cmp::Ordering::Equal => { - // this is the last fragmented message, need to return the whole reassembled message - self.total_size = 0; - self.data.append(&mut data); - Some(self.data.drain(..).collect()) - } - cmp::Ordering::Greater => { - error!( - "Actual DVC message size is grater than expected total DVC message size" - ); - self.total_size = 0; - self.data.clear(); - - None - } - } - } - } -} diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index a4aca2f1..fa7160d6 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -1,12 +1,18 @@ -use std::net::SocketAddr; +use std::{net::SocketAddr, path}; use clap::{crate_name, crate_version, App, Arg}; use ironrdp::nego::SecurityProtocol; use sspi::AuthIdentity; +const DEFAULT_WIDTH: u16 = 1920; +const DEFAULT_HEIGHT: u16 = 1080; + pub struct Config { pub log_file: String, + pub images_path: String, pub routing_addr: SocketAddr, + pub width: u16, + pub height: u16, pub input: Input, } @@ -20,14 +26,23 @@ impl Config { .about("Devolutions-IronRDP client") .arg( Arg::with_name("log-file") - .short("l") - .long("log_file") + .long("log-file") .value_name("LOG_FILE") .help("A file with IronRDP client logs") .takes_value(true) .empty_values(false) .default_value(&log_file_name), ) + .arg( + Arg::with_name("images-path") + .long("images-path") + .value_name("IMAGES_PATH") + .help("A path to the folder with graphical updates received from a server") + .takes_value(true) + .empty_values(false) + .default_value(&"./") + .validator(is_folder), + ) .arg( Arg::with_name("addr") .value_name("ADDR") @@ -51,6 +66,11 @@ impl Config { .map(String::from) .expect("log file must be at least the default"); + let images_path = matches + .value_of("images-path") + .map(String::from) + .expect("images file must be at least the default"); + let routing_addr = matches .value_of("addr") .map(|u| u.parse().unwrap()) @@ -60,7 +80,10 @@ impl Config { Self { log_file, + images_path, routing_addr, + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, input, } } @@ -74,11 +97,10 @@ pub struct Input { pub keyboard_functional_keys_count: u32, pub ime_file_name: String, pub dig_product_id: String, - pub static_channels: Vec, } impl Input { - fn args<'a, 'b>() -> [Arg<'a, 'b>; 10] { + fn args<'a, 'b>() -> [Arg<'a, 'b>; 9] { [ Arg::with_name("username") .short("u") @@ -103,8 +125,7 @@ impl Input { .takes_value(true) .required(true), Arg::with_name("security-protocol") - .short("s") - .long("security_protocol") + .long("security-protocol") .value_name("SECURITY_PROTOCOL") .help("Specify the security protocols to use") .takes_value(true) @@ -113,7 +134,7 @@ impl Input { .default_value(&"hybrid_ex") .required(true), Arg::with_name("keyboard-type") - .long("keyboard_type") + .long("keyboard-type") .value_name("KEYBOARD_TYPE") .help("The keyboard type") .takes_value(true) @@ -128,7 +149,7 @@ impl Input { ]) .default_value(&"ibm_enhanced"), Arg::with_name("keyboard-subtype") - .long("keyboard_subtype") + .long("keyboard-subtype") .value_name("KEYBOARD_SUBTYPE") .help( "The keyboard subtype (an original equipment manufacturer-dependent value)", @@ -137,31 +158,25 @@ impl Input { .default_value(&"0") .validator(is_uint), Arg::with_name("keyboard-functional-keys-count") - .long("keyboard_functional_keys_count") + .long("keyboard-functional-keys-count") .value_name("KEYBOARD_FUNCTIONAL_KEYS_COUNT") .help("The number of function keys on the keyboard") .takes_value(true) .default_value(&"12") .validator(is_uint), Arg::with_name("ime-file-name") - .long("ime_file-name") + .long("ime-file-name") .value_name("IME_FILENAME") .help("The input method editor (IME) file name associated with the active input locale") .takes_value(true) .default_value(&""), Arg::with_name("dig-product-id") - .long("dig_product_id") + .long("dig-product-id") .value_name("DIG_PRODUCT_ID") .help("Contains a value that uniquely identifies the client") .takes_value(true) .default_value(&""), - Arg::with_name("static-channels") - .long("static_channel") - .value_name("STATIC_CHANNEL") - .help("Unique static channel name") - .takes_value(true) - .multiple(true), - ] +] } fn from_matches(matches: &clap::ArgMatches<'_>) -> Self { let username = matches @@ -224,12 +239,6 @@ impl Input { .map(String::from) .expect("DIG product ID must be at least the default"); - let static_channels = if let Some(values) = matches.values_of("static-channels") { - values.map(String::from).collect::>() - } else { - vec![String::from("drdynvc")] - }; - Self { credentials, security_protocol, @@ -238,7 +247,6 @@ impl Input { keyboard_functional_keys_count, ime_file_name, dig_product_id, - static_channels, } } } @@ -249,3 +257,11 @@ fn is_uint(s: String) -> Result<(), String> { Err(_) => Err(String::from("The value is not numeric")), } } + +fn is_folder(s: String) -> Result<(), String> { + if path::PathBuf::from(s).is_dir() { + Ok(()) + } else { + Err(String::from("The folder does not exist or is invalid")) + } +} diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index f1ebf6d3..42236482 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -6,6 +6,7 @@ use bytes::BytesMut; use ironrdp::{ nego, rdp, rdp::{ + capability_sets::CapabilitySet, server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, @@ -27,6 +28,11 @@ pub type StaticChannels = HashMap; pub const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; pub const USER_CHANNEL_NAME: &str = "USER"; +pub struct DesktopSizes { + pub width: u16, + pub height: u16, +} + pub fn process_cred_ssp<'a, S, T>( mut tls_stream: &mut bufstream::BufStream>, credentials: sspi::AuthIdentity, @@ -116,7 +122,7 @@ pub fn process_mcs_connect( if gcc_blocks.message_channel.is_some() || gcc_blocks.multi_transport_channel.is_some() { return Err(RdpError::InvalidResponse(String::from( - "The server demands additional channels", + "The server demands additional active_session", ))); } @@ -283,7 +289,7 @@ pub fn process_server_license_exchange( client_random.as_slice(), premaster_secret.as_slice(), &config.input.credentials.username, - &config.input.credentials.domain.as_ref().map(|s| s.as_str()).unwrap_or(""), + &config.input.credentials.domain.as_deref().unwrap_or(""), ) .map_err(|err| { RdpError::IOError(io::Error::new( @@ -328,13 +334,7 @@ pub fn process_server_license_exchange( let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( &challenge, - &config - .input - .credentials - .domain - .as_ref() - .map(|s| s.as_str()) - .unwrap_or(""), + &config.input.credentials.domain.as_deref().unwrap_or(""), &encryption_data, ) .map_err(|err| { @@ -388,7 +388,7 @@ pub fn process_capability_sets( mut stream: impl io::BufRead + io::Write, transport: &mut ShareControlHeaderTransport, config: &Config, -) -> RdpResult<()> { +) -> RdpResult { let share_control_pdu = transport.decode(&mut stream)?; let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = @@ -406,6 +406,23 @@ pub fn process_capability_sets( share_control_pdu.as_short_name() ))); }; + let desktop_sizes = capability_sets + .iter() + .find(|c| match c { + CapabilitySet::Bitmap(_) => true, + _ => false, + }) + .map(|c| match c { + CapabilitySet::Bitmap(b) => DesktopSizes { + width: b.desktop_width, + height: b.desktop_height, + }, + _ => unreachable!(), + }) + .unwrap_or(DesktopSizes { + width: config.width, + height: config.height, + }); let client_confirm_active = ironrdp::ShareControlPdu::ClientConfirmActive( user_info::create_client_confirm_active(config, capability_sets)?, @@ -416,7 +433,7 @@ pub fn process_capability_sets( ); transport.encode(client_confirm_active, &mut stream)?; - Ok(()) + Ok(desktop_sizes) } pub fn process_finalization( diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 095f7b02..3006f9a3 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -2,18 +2,22 @@ use std::{env, net}; use ironrdp::{ gcc::{ - Channel, ChannelOptions, ClientCoreData, ClientCoreOptionalData, - ClientEarlyCapabilityFlags, ClientGccBlocks, ClientNetworkData, ClientSecurityData, - ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, - SupportedColorDepths, + ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, + ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, + RdpVersion, SecureAccessSequence, SupportedColorDepths, }, nego::SecurityProtocol, rdp::{ capability_sets::{ - Bitmap, BitmapCache, BitmapDrawingFlags, Brush, CacheDefinition, CacheEntry, General, - GeneralExtraFlags, GlyphCache, GlyphSupportLevel, Input, InputFlags, MajorPlatformType, - MinorPlatformType, OffscreenBitmapCache, Pointer, Sound, SoundFlags, SupportLevel, - VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, GLYPH_CACHE_NUM, + Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, + CacheEntry, CaptureFlags, CmdFlags, Codec, CodecProperty, EntropyBits, + FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, Input, + InputFlags, LargePointer, LargePointerSupportFlags, MajorPlatformType, + MinorPlatformType, MultifragmentUpdate, OffscreenBitmapCache, Order, OrderFlags, + OrderSupportExFlags, Pointer, RemoteFxContainer, RfxCaps, RfxCapset, + RfxClientCapsContainer, RfxICap, RfxICapFlags, Sound, SoundFlags, SupportLevel, + SurfaceCommands, VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, + GLYPH_CACHE_NUM, }, AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, ClientInfoPdu, CompressionType, Credentials, ExtendedClientInfo, @@ -21,9 +25,9 @@ use ironrdp::{ }, CapabilitySet, ClientConfirmActive, }; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::ToPrimitive; -use crate::{config::Config, RdpError, RdpResult}; +use crate::{config::Config, utils::CodecId, RdpError, RdpResult}; const SOURCE_DESCRIPTOR: &str = "IRONRDP"; @@ -34,7 +38,7 @@ pub fn create_gcc_blocks( Ok(ClientGccBlocks { core: create_core_data(config, selected_protocol)?, security: create_security_data(), - network: Some(create_network_data(config)), + network: Some(create_network_data()), cluster: None, monitor: None, message_channel: None, @@ -50,7 +54,12 @@ pub fn create_client_info_pdu(config: &Config) -> RdpResult { let client_info = ClientInfo { credentials: auth_identity_to_credentials(config.input.credentials.clone()), code_page: 0, // ignored if the keyboardLayout field of the Client Core Data is set to zero - flags: ClientInfoFlags::UNICODE, + flags: ClientInfoFlags::UNICODE + | ClientInfoFlags::DISABLE_CTRL_ALT_DEL + | ClientInfoFlags::LOGON_NOTIFY + | ClientInfoFlags::LOGON_ERRORS + | ClientInfoFlags::NO_AUDIO_PLAYBACK + | ClientInfoFlags::VIDEO_DISABLE, compression_type: CompressionType::K8, // ignored if ClientInfoFlags::COMPRESSION is not set alternate_shell: String::new(), work_dir: String::new(), @@ -83,15 +92,14 @@ pub fn create_client_confirm_active( config: &Config, mut server_capability_sets: Vec, ) -> RdpResult { - let current_monitor = get_current_monitor()?; - server_capability_sets.retain(|capability_set| match capability_set { - CapabilitySet::Order(_) => true, + CapabilitySet::MultiFragmentUpdate(_) => true, _ => false, }); server_capability_sets.extend_from_slice(&[ create_general_capability_set(), - create_bitmap_capability_set(¤t_monitor), + create_bitmap_capability_set(config), + create_orders_capability_set(), create_bitmap_cache_capability_set(), create_input_capability_set(config), create_pointer_capability_set(), @@ -100,8 +108,25 @@ pub fn create_client_confirm_active( create_offscreen_bitmap_cache_capability_set(), create_virtual_channel_capability_set(), create_sound_capability_set(), + create_large_pointer_capability_set(), + create_surface_commands_capability_set(), + create_bitmap_codes_capability_set(), + CapabilitySet::FrameAcknowledge(FrameAcknowledge { + max_unacknowledged_frame_count: 2, + }), ]); + if server_capability_sets + .iter() + .find(|c| match c { + CapabilitySet::MultiFragmentUpdate(_) => true, + _ => false, + }) + .is_none() + { + server_capability_sets.push(create_multi_fragment_update_capability_set()); + } + Ok(ClientConfirmActive { originator_id: SERVER_CHANNEL_ID, pdu: ironrdp::DemandActive { @@ -115,12 +140,10 @@ fn create_core_data( config: &Config, selected_protocol: SecurityProtocol, ) -> RdpResult { - let current_monitor = get_current_monitor()?; - Ok(ClientCoreData { version: RdpVersion::V5Plus, - desktop_width: current_monitor.size().width as u16, - desktop_height: current_monitor.size().height as u16, + desktop_width: config.width, + desktop_height: config.height, color_depth: ColorDepth::Bpp4, // ignored sec_access_sequence: SecureAccessSequence::Del, keyboard_layout: 0, // the server SHOULD use the default active input locale identifier @@ -132,37 +155,26 @@ fn create_core_data( keyboard_subtype: config.input.keyboard_subtype, keyboard_functional_keys_count: config.input.keyboard_functional_keys_count, ime_file_name: config.input.ime_file_name.clone(), - optional_data: create_optional_core_data(config, selected_protocol, current_monitor)?, + optional_data: create_optional_core_data(config, selected_protocol)?, }) } fn create_optional_core_data( config: &Config, selected_protocol: SecurityProtocol, - current_monitor: winit::monitor::MonitorHandle, ) -> RdpResult { Ok(ClientCoreOptionalData { post_beta_color_depth: Some(ColorDepth::Bpp4), // ignored client_product_id: Some(1), serial_number: Some(0), - high_color_depth: Some(get_color_depth(¤t_monitor)), - supported_color_depths: Some( - current_monitor - .video_modes() - .map(|video_mode| match video_mode.bit_depth() { - 15 | 16 | 24 | 32 => { - SupportedColorDepths::BPP15 - | SupportedColorDepths::BPP16 - | SupportedColorDepths::BPP24 - | SupportedColorDepths::BPP32 - } - _ => SupportedColorDepths::empty(), - }) - .collect(), + high_color_depth: Some(HighColorDepth::Bpp24), + supported_color_depths: Some(SupportedColorDepths::all()), + early_capability_flags: Some( + ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE + | ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION, ), - early_capability_flags: Some(ClientEarlyCapabilityFlags::SUPPORT_DYN_VC_GFX_PROTOCOL), dig_product_id: Some(config.input.dig_product_id.clone()), - connection_type: Some(ConnectionType::NotUsed), + connection_type: Some(ConnectionType::Lan), server_selected_protocol: Some(selected_protocol), desktop_physical_width: None, desktop_physical_height: None, @@ -176,17 +188,9 @@ fn create_security_data() -> ClientSecurityData { ClientSecurityData::no_security() } -fn create_network_data(config: &Config) -> ClientNetworkData { +fn create_network_data() -> ClientNetworkData { ClientNetworkData { - channels: config - .input - .static_channels - .iter() - .map(|name| Channel { - name: name.to_string(), - options: ChannelOptions::INITIALIZED, - }) - .collect(), + channels: Vec::new(), } } @@ -201,22 +205,32 @@ fn create_general_capability_set() -> CapabilitySet { _ => MajorPlatformType::Unspecified, }, minor_platform_type: MinorPlatformType::Unspecified, - extra_flags: GeneralExtraFlags::empty(), + extra_flags: GeneralExtraFlags::FASTPATH_OUTPUT_SUPPORTED + | GeneralExtraFlags::NO_BITMAP_COMPRESSION_HDR, refresh_rect_support: false, suppress_output_support: false, }) } -fn create_bitmap_capability_set(current_monitor: &winit::monitor::MonitorHandle) -> CapabilitySet { +fn create_bitmap_capability_set(config: &Config) -> CapabilitySet { CapabilitySet::Bitmap(Bitmap { - pref_bits_per_pix: get_color_depth(current_monitor).to_u16().unwrap(), - desktop_width: current_monitor.size().width as u16, - desktop_height: current_monitor.size().height as u16, + pref_bits_per_pix: 32, + desktop_width: config.width, + desktop_height: config.height, desktop_resize_flag: false, drawing_flags: BitmapDrawingFlags::empty(), }) } +fn create_orders_capability_set() -> CapabilitySet { + CapabilitySet::Order(Order::new( + OrderFlags::NEGOTIATE_ORDER_SUPPORT | OrderFlags::ZERO_BOUNDS_DELTAS_SUPPORT, + OrderSupportExFlags::empty(), + 0, + 0, + )) +} + fn create_bitmap_cache_capability_set() -> CapabilitySet { CapabilitySet::BitmapCache(BitmapCache { caches: [CacheEntry { @@ -285,27 +299,37 @@ fn create_sound_capability_set() -> CapabilitySet { }) } -fn get_current_monitor() -> RdpResult { - Ok( - winit::window::Window::new(&winit::event_loop::EventLoop::new()) - .map_err(|e| RdpError::UserInfoError(format!("Failed to create window: {:?}", e)))? - .current_monitor(), - ) +fn create_multi_fragment_update_capability_set() -> CapabilitySet { + CapabilitySet::MultiFragmentUpdate(MultifragmentUpdate { + max_request_size: 1024, + }) } -fn get_color_depth(current_monitor: &winit::monitor::MonitorHandle) -> HighColorDepth { - current_monitor - .video_modes() - .map(|video_mode| { - let video_mode_bit_depth = video_mode.bit_depth(); - match HighColorDepth::from_u16(video_mode_bit_depth) { - Some(bit_depth) => bit_depth, - None if video_mode_bit_depth == 32 => HighColorDepth::Bpp24, - _ => HighColorDepth::Bpp4, - } - }) - .max() - .unwrap_or(HighColorDepth::Bpp4) +fn create_large_pointer_capability_set() -> CapabilitySet { + CapabilitySet::LargePointer(LargePointer { + flags: LargePointerSupportFlags::UP_TO_96X96_PIXELS, + }) +} + +fn create_surface_commands_capability_set() -> CapabilitySet { + CapabilitySet::SurfaceCommands(SurfaceCommands { + flags: CmdFlags::SET_SURFACE_BITS | CmdFlags::STREAM_SURFACE_BITS | CmdFlags::FRAME_MARKER, + }) +} + +fn create_bitmap_codes_capability_set() -> CapabilitySet { + CapabilitySet::BitmapCodecs(BitmapCodecs(vec![Codec { + id: CodecId::RemoteFx.to_u8().unwrap(), + property: CodecProperty::RemoteFx(RemoteFxContainer::ClientContainer( + RfxClientCapsContainer { + capture_flags: CaptureFlags::empty(), + caps_data: RfxCaps(RfxCapset(vec![RfxICap { + flags: RfxICapFlags::empty(), + entropy_bits: EntropyBits::Rlgr3, + }])), + }, + )), + }])) } fn auth_identity_to_credentials(auth_identity: sspi::AuthIdentity) -> Credentials { diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index b1ce11b0..c8d1e1c0 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,4 +1,4 @@ -mod channels; +mod active_session; mod config; mod connection_sequence; mod transport; @@ -11,12 +11,12 @@ use std::{ }; use failure::Fail; -use ironrdp::{dvc::gfx, nego, rdp}; +use ironrdp::{dvc::gfx, fast_path::FastPathError, nego, rdp}; use log::{debug, error, warn}; use sspi::internal::credssp; use self::{ - channels::process_active_connection_messages, + active_session::process_active_stage, config::Config, connection_sequence::{ process_capability_sets, process_cred_ssp, process_finalization, process_mcs, @@ -31,6 +31,8 @@ use self::{ pub type RdpResult = Result; +const BUF_READER_SIZE: usize = 32 * 1024; + mod danger { pub struct NoCertificateVerification {} @@ -53,7 +55,7 @@ fn main() { match run(config) { Ok(_) => { - println!("RDP connection sequence and DVC messages exchange finished"); + println!("RDP successfully finished"); std::process::exit(exitcode::OK); } Err(e) => { @@ -111,7 +113,8 @@ fn run(config: Config) -> RdpResult<()> { // handshake tls_stream.flush()?; - let mut tls_stream = bufstream::BufStream::new(tls_stream); + let mut tls_stream = + bufstream::BufStream::with_capacities(BUF_READER_SIZE, BUF_READER_SIZE, tls_stream); if selected_protocol.contains(nego::SecurityProtocol::HYBRID) || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) @@ -132,7 +135,7 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = McsTransport::new(transport); let joined_static_channels = process_mcs(&mut tls_stream, &mut transport, static_channels)?; - debug!("Joined static channels: {:?}", joined_static_channels); + debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels .get(GLOBAL_CHANNEL_NAME) @@ -161,12 +164,19 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - process_capability_sets(&mut tls_stream, &mut transport, &config)?; + let desktop_sizes = process_capability_sets(&mut tls_stream, &mut transport, &config)?; let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut tls_stream, &mut transport, initiator_id)?; - process_active_connection_messages(&mut tls_stream, joined_static_channels)?; + process_active_stage( + &mut tls_stream, + &config, + joined_static_channels, + global_channel_id, + initiator_id, + desktop_sizes, + )?; Ok(()) } @@ -221,8 +231,26 @@ pub enum RdpError { GraphicsPipelineError(gfx::GraphicsPipelineError), #[fail(display = "ZGFX error: {}", _0)] ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), - #[fail(display = "Access to the non-existing channel: {}", _0)] + #[fail(display = "Fast-Path error: {}", _0)] + FastPathError(#[fail(cause)] FastPathError), + #[fail(display = "RDP error: {}", _0)] + RdpError(#[fail(cause)] ironrdp::RdpError), + #[fail(display = "access to the non-existing channel: {}", _0)] AccessToNonExistingChannel(u32), + #[fail(display = "data in unexpected channel: {}", _0)] + UnexpectedChannel(u16), + #[fail(display = "unexpected Surface Command codec ID: {}", _0)] + UnexpectedCodecId(u8), + #[fail(display = "RDP error: {}", _0)] + RfxError(#[fail(cause)] ironrdp::codecs::rfx::RfxError), + #[fail(display = "absence of mandatory Fast-Path header")] + MandatoryHeaderIsAbsent, + #[fail(display = "RLGR error: {}", _0)] + RlgrError(#[fail(cause)] ironrdp::codecs::rfx::rlgr::RlgrError), + #[fail(display = "RLGR error: {}", _0)] + ImageError(#[fail(cause)] image::ImageError), + #[fail(display = "absence of RFX channels")] + NoRfxChannelsAnnounced, } impl From for RdpError { @@ -270,3 +298,33 @@ impl From for RdpError { RdpError::ZgfxError(e) } } + +impl From for RdpError { + fn from(e: FastPathError) -> Self { + RdpError::FastPathError(e) + } +} + +impl From for RdpError { + fn from(e: ironrdp::RdpError) -> Self { + RdpError::RdpError(e) + } +} + +impl From for RdpError { + fn from(e: ironrdp::codecs::rfx::RfxError) -> Self { + RdpError::RfxError(e) + } +} + +impl From for RdpError { + fn from(e: ironrdp::codecs::rfx::rlgr::RlgrError) -> Self { + RdpError::RlgrError(e) + } +} + +impl From for RdpError { + fn from(e: image::ImageError) -> Self { + RdpError::ImageError(e) + } +} diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index af6dc982..e527011e 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -1,20 +1,20 @@ mod channels; mod connection; +use ironrdp::rdp::SERVER_CHANNEL_ID; + pub use self::{ channels::{ ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport, }, - connection::{ - connect, EarlyUserAuthResult, ShareControlHeaderTransport, ShareDataHeaderTransport, - TsRequestTransport, - }, + connection::{connect, EarlyUserAuthResult, TsRequestTransport}, }; use std::io; use bytes::BytesMut; -use ironrdp::PduParsing; +use ironrdp::{PduParsing, RdpPdu}; +use log::warn; use crate::{RdpError, RdpResult}; @@ -32,8 +32,31 @@ pub trait Decoder { fn decode(&mut self, stream: impl io::Read) -> Result; } -#[derive(Default, Copy, Clone, Debug)] -pub struct DataTransport; +#[derive(Copy, Clone, Debug)] +pub struct DataTransport { + data_length: usize, + state: TransportState, +} + +impl Default for DataTransport { + fn default() -> Self { + Self::new() + } +} + +impl DataTransport { + pub fn new() -> Self { + Self { + data_length: 0, + state: TransportState::ToDecode, + } + } + + pub fn set_decoded_context(&mut self, data_length: usize) { + self.data_length = data_length; + self.state = TransportState::Decoded; + } +} impl Encoder for DataTransport { type Item = BytesMut; @@ -53,14 +76,19 @@ impl Decoder for DataTransport { type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; + match self.state { + TransportState::ToDecode => { + let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; - Ok(data_pdu.data_length) + Ok(data_pdu.data_length) + } + TransportState::Decoded => Ok(self.data_length), + } } } #[derive(Copy, Clone, Debug)] -pub struct McsTransport(DataTransport); +pub struct McsTransport(pub DataTransport); impl McsTransport { pub fn new(transport: DataTransport) -> Self { @@ -108,8 +136,8 @@ impl Decoder for McsTransport { #[derive(Clone, Debug)] pub struct SendDataContextTransport { - mcs_transport: McsTransport, - state: SendDataContextTransportState, + pub mcs_transport: McsTransport, + state: TransportState, channel_ids: ChannelIdentificators, } @@ -121,7 +149,7 @@ impl SendDataContextTransport { initiator_id, channel_id, }, - state: SendDataContextTransportState::ToDecode, + state: TransportState::ToDecode, } } @@ -131,19 +159,19 @@ impl SendDataContextTransport { pub fn set_decoded_context(&mut self, channel_ids: ChannelIdentificators) { self.set_channel_ids(channel_ids); - self.state = SendDataContextTransportState::Decoded; + self.state = TransportState::Decoded; } } impl Default for SendDataContextTransport { fn default() -> Self { Self { - mcs_transport: McsTransport::new(DataTransport), + mcs_transport: McsTransport::new(DataTransport::default()), channel_ids: ChannelIdentificators { initiator_id: 0, channel_id: 0, }, - state: SendDataContextTransportState::ToDecode, + state: TransportState::ToDecode, } } } @@ -179,7 +207,7 @@ impl Decoder for SendDataContextTransport { fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { match self.state { - SendDataContextTransportState::ToDecode => { + TransportState::ToDecode => { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; match mcs_pdu { @@ -201,13 +229,169 @@ impl Decoder for SendDataContextTransport { ))), } } - SendDataContextTransportState::Decoded => Ok(self.channel_ids), + TransportState::Decoded => Ok(self.channel_ids), + } + } +} + +pub struct ShareControlHeaderTransport { + global_channel_id: u16, + share_id: u32, + pdu_source: u16, + send_data_context_transport: SendDataContextTransport, +} + +impl ShareControlHeaderTransport { + pub fn new( + send_data_context_transport: SendDataContextTransport, + pdu_source: u16, + global_channel_id: u16, + ) -> Self { + Self { + global_channel_id, + send_data_context_transport, + pdu_source, + share_id: 0, + } + } +} + +impl Encoder for ShareControlHeaderTransport { + type Item = ironrdp::ShareControlPdu; + type Error = RdpError; + + fn encode( + &mut self, + share_control_pdu: Self::Item, + mut stream: impl io::Write, + ) -> RdpResult<()> { + let share_control_header = ironrdp::ShareControlHeader { + share_control_pdu, + pdu_source: self.pdu_source, + share_id: self.share_id, + }; + + let mut pdu = Vec::with_capacity(share_control_header.buffer_length()); + share_control_header + .to_buffer(&mut pdu) + .map_err(RdpError::ShareControlHeaderError)?; + + self.send_data_context_transport.encode(pdu, &mut stream) + } +} + +impl Decoder for ShareControlHeaderTransport { + type Item = ironrdp::ShareControlPdu; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let channel_ids = self.send_data_context_transport.decode(&mut stream)?; + if channel_ids.channel_id != self.global_channel_id { + return Err(RdpError::InvalidResponse(format!( + "Unexpected Send Data Context channel ID ({})", + channel_ids.channel_id, + ))); + } + + let share_control_header = ironrdp::ShareControlHeader::from_buffer(&mut stream) + .map_err(RdpError::ShareControlHeaderError)?; + self.share_id = share_control_header.share_id; + + if share_control_header.pdu_source != SERVER_CHANNEL_ID { + warn!( + "Invalid Share Control Header pdu source: expected ({}) != actual ({})", + SERVER_CHANNEL_ID, share_control_header.pdu_source + ); + } + + Ok(share_control_header.share_control_pdu) + } +} + +pub struct ShareDataHeaderTransport(ShareControlHeaderTransport); + +impl ShareDataHeaderTransport { + pub fn new(transport: ShareControlHeaderTransport) -> Self { + Self(transport) + } +} + +impl Encoder for ShareDataHeaderTransport { + type Item = ironrdp::ShareDataPdu; + type Error = RdpError; + + fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + let share_data_header = ironrdp::ShareDataHeader { + share_data_pdu, + stream_priority: ironrdp::rdp::StreamPriority::Medium, + compression_flags: ironrdp::rdp::CompressionFlags::empty(), + compression_type: ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() + }; + + self.0.encode( + ironrdp::ShareControlPdu::Data(share_data_header), + &mut stream, + ) + } +} + +impl Decoder for ShareDataHeaderTransport { + type Item = ironrdp::ShareDataPdu; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + let share_control_pdu = self.0.decode(&mut stream)?; + + if let ironrdp::ShareControlPdu::Data(share_data_header) = share_control_pdu { + Ok(share_data_header.share_data_pdu) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Share Data Header, got: {:?}", + share_control_pdu.as_short_name() + ))) } } } #[derive(Copy, Clone, Debug)] -pub enum SendDataContextTransportState { +pub enum TransportState { ToDecode, Decoded, } + +#[derive(Debug, Copy, Clone, Default)] +pub struct RdpTransport; + +impl Decoder for RdpTransport { + type Item = RdpPdu; + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> Result { + RdpPdu::from_buffer(&mut stream).map_err(RdpError::from) + } +} + +impl Encoder for RdpTransport { + type Item = (RdpPdu, BytesMut); + type Error = RdpError; + + fn encode( + &mut self, + (item, data): Self::Item, + mut stream: impl io::Write, + ) -> Result<(), Self::Error> { + match item { + RdpPdu::X224(data) => { + data.to_buffer(&mut stream)?; + } + RdpPdu::FastPath(fast_path) => { + fast_path.to_buffer(&mut stream)?; + } + } + + stream.write_all(data.as_ref())?; + stream.flush()?; + + Ok(()) + } +} diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index bfec02f5..fbbc9ae6 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -1,11 +1,11 @@ use std::io; use bytes::BytesMut; -use ironrdp::{nego, rdp::SERVER_CHANNEL_ID, PduParsing}; -use log::{debug, warn}; +use ironrdp::{nego, PduParsing}; +use log::debug; use sspi::internal::credssp; -use super::{DataTransport, Decoder, Encoder, SendDataContextTransport}; +use super::{DataTransport, Decoder, Encoder}; use crate::{RdpError, RdpResult}; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; @@ -66,125 +66,6 @@ impl EarlyUserAuthResult { } } -pub struct ShareControlHeaderTransport { - global_channel_id: u16, - share_id: u32, - pdu_source: u16, - send_data_context_transport: SendDataContextTransport, -} - -impl ShareControlHeaderTransport { - pub fn new( - send_data_context_transport: SendDataContextTransport, - pdu_source: u16, - global_channel_id: u16, - ) -> Self { - Self { - global_channel_id, - send_data_context_transport, - pdu_source, - share_id: 0, - } - } -} - -impl Encoder for ShareControlHeaderTransport { - type Item = ironrdp::ShareControlPdu; - type Error = RdpError; - - fn encode( - &mut self, - share_control_pdu: Self::Item, - mut stream: impl io::Write, - ) -> RdpResult<()> { - let share_control_header = ironrdp::ShareControlHeader { - share_control_pdu, - pdu_source: self.pdu_source, - share_id: self.share_id, - }; - - let mut pdu = Vec::with_capacity(share_control_header.buffer_length()); - share_control_header - .to_buffer(&mut pdu) - .map_err(RdpError::ShareControlHeaderError)?; - - self.send_data_context_transport.encode(pdu, &mut stream) - } -} - -impl Decoder for ShareControlHeaderTransport { - type Item = ironrdp::ShareControlPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let channel_ids = self.send_data_context_transport.decode(&mut stream)?; - if channel_ids.channel_id != self.global_channel_id { - return Err(RdpError::InvalidResponse(format!( - "Unexpected Send Data Context channel ID ({})", - channel_ids.channel_id, - ))); - } - - let share_control_header = ironrdp::ShareControlHeader::from_buffer(&mut stream) - .map_err(RdpError::ShareControlHeaderError)?; - self.share_id = share_control_header.share_id; - - if share_control_header.pdu_source != SERVER_CHANNEL_ID { - warn!( - "Invalid Share Control Header pdu source: expected ({}) != actual ({})", - SERVER_CHANNEL_ID, share_control_header.pdu_source - ); - } - - Ok(share_control_header.share_control_pdu) - } -} - -pub struct ShareDataHeaderTransport(ShareControlHeaderTransport); - -impl ShareDataHeaderTransport { - pub fn new(transport: ShareControlHeaderTransport) -> Self { - Self(transport) - } -} - -impl Encoder for ShareDataHeaderTransport { - type Item = ironrdp::ShareDataPdu; - type Error = RdpError; - - fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { - let share_data_header = ironrdp::ShareDataHeader { - share_data_pdu, - stream_priority: ironrdp::rdp::StreamPriority::Medium, - compression_flags: ironrdp::rdp::CompressionFlags::empty(), - compression_type: ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() - }; - - self.0.encode( - ironrdp::ShareControlPdu::Data(share_data_header), - &mut stream, - ) - } -} - -impl Decoder for ShareDataHeaderTransport { - type Item = ironrdp::ShareDataPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { - let share_control_pdu = self.0.decode(&mut stream)?; - - if let ironrdp::ShareControlPdu::Data(share_data_header) = share_control_pdu { - Ok(share_data_header.share_data_pdu) - } else { - Err(RdpError::UnexpectedPdu(format!( - "Expected Share Data Header, got: {:?}", - share_control_pdu.as_short_name() - ))) - } - } -} - pub fn connect( mut stream: impl io::BufRead + io::Write, security_protocol: nego::SecurityProtocol, @@ -198,7 +79,7 @@ pub fn connect( 0, )?; - Ok((DataTransport, selected_protocol)) + Ok((DataTransport::default(), selected_protocol)) } fn process_negotiation( diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index 4f9581f3..46130007 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -1,4 +1,6 @@ use std::{collections::HashMap, hash::Hash, io}; + +use num_derive::{FromPrimitive, ToPrimitive}; use x509_parser::parse_x509_der; #[macro_export] @@ -47,3 +49,8 @@ where result } + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum CodecId { + RemoteFx = 0x3, +} From d1d6c6b04aa1618c829e20bf17738ebee667476f Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 11:55:00 +0200 Subject: [PATCH 0034/1273] ironrdp_client: remove save of image --- ironrdp_client/Cargo.toml | 1 - ironrdp_client/src/active_session.rs | 38 +-------------- .../src/active_session/codecs/rfx/tests.rs | 1 - .../src/active_session/fast_path.rs | 48 ++++--------------- ironrdp_client/src/config.rs | 27 +---------- ironrdp_client/src/main.rs | 9 ---- 6 files changed, 13 insertions(+), 111 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 5061f19f..dddf6eaf 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -30,4 +30,3 @@ exitcode = "1.1" webpki = "0.21.0" bufstream = "0.1" ring = "0.16.0" -image = "0.23" diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs index 750ca680..7180c3be 100644 --- a/ironrdp_client/src/active_session.rs +++ b/ironrdp_client/src/active_session.rs @@ -17,14 +17,13 @@ use log::warn; use crate::{ connection_sequence::DesktopSizes, transport::{Decoder, RdpTransport}, - utils, Config, RdpError, RdpResult, StaticChannels, + utils, RdpError, RdpResult, StaticChannels, }; const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; pub fn process_active_stage( mut stream: impl io::BufRead + io::Write, - config: &Config, static_channels: StaticChannels, global_channel_id: u16, initiator_id: u16, @@ -34,7 +33,6 @@ pub fn process_active_stage( u32::from(desktop_sizes.width), u32::from(desktop_sizes.height), DESTINATION_PIXEL_FORMAT, - Some(config.images_path.clone()), ))); let mut x224_processor = x224::Processor::new(utils::swap_hashmap_kv(static_channels)); let mut fast_path_processor = fast_path::ProcessorBuilder { @@ -93,49 +91,17 @@ pub fn process_active_stage( } pub struct DecodedImage { - width: u32, - height: u32, data: Vec, - images_path: Option, - frame_counter: u32, } impl DecodedImage { - fn new( - width: u32, - height: u32, - pixel_format: PixelFormat, - images_path: Option, - ) -> Self { + fn new(width: u32, height: u32, pixel_format: PixelFormat) -> Self { Self { - width, - height, data: vec![0; (width * height * u32::from(pixel_format.bytes_per_pixel())) as usize], - images_path, - frame_counter: 0, } } fn get_mut(&mut self) -> &mut [u8] { self.data.as_mut_slice() } - - fn save(&mut self) -> image::ImageResult<()> { - if let Some(images_path) = self.images_path.as_ref() { - let image_buffer = image::ImageBuffer::, _>::from_raw( - self.width, - self.height, - self.data.as_slice(), - ) - .expect("Container must be large enough"); - - image_buffer.save_with_format( - format!("{}/update#{:010}.png", images_path, self.frame_counter), - image::ImageFormat::Png, - )?; - self.frame_counter += 1; - } - - Ok(()) - } } diff --git a/ironrdp_client/src/active_session/codecs/rfx/tests.rs b/ironrdp_client/src/active_session/codecs/rfx/tests.rs index 95e960e5..2f65a35f 100644 --- a/ironrdp_client/src/active_session/codecs/rfx/tests.rs +++ b/ironrdp_client/src/active_session/codecs/rfx/tests.rs @@ -20,7 +20,6 @@ fn decode_decodes_valid_sequence_of_messages() { IMAGE_WIDTH as u32, IMAGE_HEIGHT as u32, PixelFormat::BgrX32, - None, ))); let mut handler = DecodingContext::new(PixelFormat::BgrX32); diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index df24e59c..e3ba5eec 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -11,7 +11,7 @@ use ironrdp::{ surface_commands::{FrameAction, SurfaceCommand}, PduBufferParsing, ShareDataPdu, }; -use log::{debug, error, info, warn}; +use log::{debug, info, warn}; use num_traits::FromPrimitive; use super::{codecs::rfx, DecodedImage, DESTINATION_PIXEL_FORMAT}; @@ -98,7 +98,6 @@ impl Processor { self.decoded_image.clone(), )?; } - self.frame.image_updated(); } } } @@ -128,11 +127,7 @@ impl ProcessorBuilder { complete_data: CompleteData::new(), rfx_handler: rfx::DecodingContext::new(DESTINATION_PIXEL_FORMAT), decoded_image: self.decoded_image.clone(), - frame: Frame::new( - self.decoded_image, - self.initiator_id, - self.global_channel_id, - ), + frame: Frame::new(self.initiator_id, self.global_channel_id), } } } @@ -206,18 +201,11 @@ impl CompleteData { struct Frame { transport: ShareDataHeaderTransport, - decoded_image: Arc>, - image_updated: bool, } impl Frame { - fn new( - decoded_image: Arc>, - initiator_id: u16, - global_channel_id: u16, - ) -> Self { + fn new(initiator_id: u16, global_channel_id: u16) -> Self { Self { - decoded_image, transport: ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( SendDataContextTransport::new( McsTransport::new(DataTransport::default()), @@ -227,12 +215,8 @@ impl Frame { initiator_id, global_channel_id, )), - image_updated: false, } } - fn image_updated(&mut self) { - self.image_updated = true; - } fn process_marker( &mut self, @@ -240,25 +224,13 @@ impl Frame { mut output: impl io::Write, ) -> RdpResult<()> { match marker.frame_action { - FrameAction::Begin => { - self.image_updated = false; - - Ok(()) - } - FrameAction::End => { - if self.image_updated { - if let Err(e) = self.decoded_image.lock().unwrap().save() { - error!("Failed to save frame: {}", e); - } - } - - self.transport.encode( - ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { - frame_id: marker.frame_id, - }), - &mut output, - ) - } + FrameAction::Begin => Ok(()), + FrameAction::End => self.transport.encode( + ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { + frame_id: marker.frame_id, + }), + &mut output, + ), } } } diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index fa7160d6..72e8ef2c 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -1,4 +1,4 @@ -use std::{net::SocketAddr, path}; +use std::net::SocketAddr; use clap::{crate_name, crate_version, App, Arg}; use ironrdp::nego::SecurityProtocol; @@ -9,7 +9,6 @@ const DEFAULT_HEIGHT: u16 = 1080; pub struct Config { pub log_file: String, - pub images_path: String, pub routing_addr: SocketAddr, pub width: u16, pub height: u16, @@ -33,16 +32,6 @@ impl Config { .empty_values(false) .default_value(&log_file_name), ) - .arg( - Arg::with_name("images-path") - .long("images-path") - .value_name("IMAGES_PATH") - .help("A path to the folder with graphical updates received from a server") - .takes_value(true) - .empty_values(false) - .default_value(&"./") - .validator(is_folder), - ) .arg( Arg::with_name("addr") .value_name("ADDR") @@ -66,11 +55,6 @@ impl Config { .map(String::from) .expect("log file must be at least the default"); - let images_path = matches - .value_of("images-path") - .map(String::from) - .expect("images file must be at least the default"); - let routing_addr = matches .value_of("addr") .map(|u| u.parse().unwrap()) @@ -80,7 +64,6 @@ impl Config { Self { log_file, - images_path, routing_addr, width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT, @@ -257,11 +240,3 @@ fn is_uint(s: String) -> Result<(), String> { Err(_) => Err(String::from("The value is not numeric")), } } - -fn is_folder(s: String) -> Result<(), String> { - if path::PathBuf::from(s).is_dir() { - Ok(()) - } else { - Err(String::from("The folder does not exist or is invalid")) - } -} diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index c8d1e1c0..7ca8443f 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -171,7 +171,6 @@ fn run(config: Config) -> RdpResult<()> { process_active_stage( &mut tls_stream, - &config, joined_static_channels, global_channel_id, initiator_id, @@ -247,8 +246,6 @@ pub enum RdpError { MandatoryHeaderIsAbsent, #[fail(display = "RLGR error: {}", _0)] RlgrError(#[fail(cause)] ironrdp::codecs::rfx::rlgr::RlgrError), - #[fail(display = "RLGR error: {}", _0)] - ImageError(#[fail(cause)] image::ImageError), #[fail(display = "absence of RFX channels")] NoRfxChannelsAnnounced, } @@ -322,9 +319,3 @@ impl From for RdpError { RdpError::RlgrError(e) } } - -impl From for RdpError { - fn from(e: image::ImageError) -> Self { - RdpError::ImageError(e) - } -} From 8a90aaa7fcd0502fffc128cbcd0d55f180cc9630 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 19 Mar 2020 14:59:44 +0200 Subject: [PATCH 0035/1273] ironrdp_client: update README --- ironrdp_client/README.md | 43 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/ironrdp_client/README.md b/ironrdp_client/README.md index 207f04c4..74f1fb9e 100644 --- a/ironrdp_client/README.md +++ b/ironrdp_client/README.md @@ -1,46 +1,51 @@ # IronRDP client -A command-line RDP client, which performs connection to an RDP server up to the Active state. -The client collects the minimum information about the system (the screen width, height, DPI, etc.), - and takes other info from the command-line arguments (all the arguments have a default value). -If the RDP Connection Sequence completes, the client returns a `SUCCESS` exit code, -or an `error` exit code in case of failure. +A command-line RDP client, which performs connection to an RDP server and decodes RFX graphical updates. +If IronRDP client will encounter an error, then will return `error` exit code and print what caused +an error. + +## Prerequisites +Before connection to a Windows 10 RDP server please enable RFX feature: +1. run `gpedit.msc`; +2. go to `Administrative Templates` → `Windows Components` → `Remote Desktop Services` → +`Remote Desktop Session Host` → `Remote Session Environment` → +`RemoteFX for Windows Server 2008 R2`→ `Configure RemoteFX`; +3. tap Enabled. ## Command-line Interface ``` USAGE: - ironrdp_client [OPTIONS] --password --security_protocol ... --username + ironrdp_client [OPTIONS] --password --security-protocol ... --username FLAGS: -h, --help Prints help information -v, --version Prints version information OPTIONS: - --dig_product_id + --dig-product-id Contains a value that uniquely identifies the client [default: ] -d, --domain An optional target RDP server domain name - --ime_file-name + --ime-file-name The input method editor (IME) file name associated with the active input locale [default: ] - --keyboard_functional_keys_count + --keyboard-functional-keys-count The number of function keys on the keyboard [default: 12] - --keyboard_subtype + --keyboard-subtype The keyboard subtype (an original equipment manufacturer-dependent value) [default: 0] - --keyboard_type + --keyboard-type The keyboard type [default: ibm_enhanced] [possible values: ibm_pc_xt, olivetti_ico, ibm_pc_at, ibm_enhanced, nokia1050, nokia9140, japanese] - -l, --log_file + --log-file A file with IronRDP client logs [default: ironrdp_client.log] -p, --password A target RDP server user password - -s, --security_protocol ... + --security-protocol ... Specify the security protocols to use [default: hybrid_ex] [possible values: ssl, hybrid, hybrid_ex] - --static_channel ... Unique static channel name -u, --username A target RDP server user name ARGS: @@ -57,9 +62,9 @@ It worth to notice that the client takes mandatory arguments as 1. Run the RDP server (Windows RDP server, FreeRDP server, etc.); 2. Run the IronRDP client and specify the RDP server address, username and password: ``` - cargo run -- 192.168.1.100:3389 -u SimpleUsername -p SimplePassword! + cargo run 192.168.1.100:3389 -u SimpleUsername -p SimplePassword! ``` -3. After the RDP Connection Sequence finishes, -the client will print `RDP connection sequence finished` -in case of success, and (for example) `RDP failed because of negotiation error: ...` -in case of error. Additional logs are available in ``. +3. After the RDP Connection Sequence the client will start receive RFX updates +and save to the internal buffer. +In case of error, the client will print (for example) `RDP failed because of negotiation error: ...`. +Additional logs are available in `` (`ironrdp_client.log` by default). From d4689087d01e0683c9ccdb47c3abec7de2a683f4 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 20 Mar 2020 14:21:39 +0200 Subject: [PATCH 0036/1273] ironrdp_client: add a print of clear error message on the server session termination --- ironrdp_client/src/main.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 7ca8443f..e0da7c16 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -53,23 +53,31 @@ fn main() { let config = Config::parse_args(); setup_logging(config.log_file.as_str()).expect("failed to initialize logging"); - match run(config) { + let exit_code = match run(config) { Ok(_) => { println!("RDP successfully finished"); - std::process::exit(exitcode::OK); + + exitcode::OK } - Err(e) => { + Err(RdpError::IOError(e)) if e.kind() == io::ErrorKind::UnexpectedEof => { + error!("{}", e); + println!("The server has terminated the RDP session"); + + exitcode::NOHOST + } + Err(ref e) => { error!("{}", e); println!("RDP failed because of {}", e); - let code = match e { + match e { RdpError::IOError(_) => exitcode::IOERR, RdpError::ConnectionError(_) => exitcode::NOHOST, _ => exitcode::PROTOCOL, - }; - std::process::exit(code); + } } - } + }; + + std::process::exit(exit_code); } fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { From ba6826c2d708d97ed47112a0883c3051a61a31fd Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 20 Mar 2020 19:15:44 +0200 Subject: [PATCH 0037/1273] ironrdp_client: update Fast-Path processing to raise error on inconsistent update --- .../src/active_session/fast_path.rs | 67 ++++++++++--------- ironrdp_client/src/main.rs | 5 ++ 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index e3ba5eec..8257a04c 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -40,7 +40,7 @@ impl Processor { ) -> RdpResult<()> { debug!("Got Fast-Path Header: {:?}", header); - let input_buffer = stream.fill_buf()?; + let input_buffer = &stream.fill_buf()?[..header.data_length]; let update_pdu = FastPathUpdatePdu::from_buffer(input_buffer)?; let update_pdu_length = update_pdu.buffer_length(); @@ -50,18 +50,31 @@ impl Processor { update_pdu.fragmentation ); - let processed_complete_data = self.complete_data.process_pdu(update_pdu); + let processed_complete_data = self + .complete_data + .process_data(update_pdu.data, update_pdu.fragmentation); + let update_code = update_pdu.update_code; stream.consume(update_pdu_length); - if let Some((update_code, data)) = processed_complete_data { - let update = - FastPathUpdate::from_buffer_consume_with_code(&mut data.as_slice(), update_code); - info!("Got Fast-Path Update: {:?}", update_code); + if let Some(data) = processed_complete_data { + let update = FastPathUpdate::from_buffer_with_code(data.as_slice(), update_code); match update { Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { + info!( + "Received Surface Commands: {} pieces", + surface_commands.len() + ); + self.process_surface_commands(&mut stream, surface_commands)?; } + Err(FastPathError::UnsupportedFastPathUpdate(code)) + if code == UpdateCode::Orders + || code == UpdateCode::Bitmap + || code == UpdateCode::Palette => + { + return Err(RdpError::UnexpectedFastPathUpdate(code)); + } Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { warn!("Received unsupported Fast-Path update: {:?}", update_code) } @@ -134,67 +147,61 @@ impl ProcessorBuilder { #[derive(Debug, PartialEq)] struct CompleteData { - fast_path_pdu: Option, - data: Option>, + fragmented_data: Option>, } impl CompleteData { fn new() -> Self { Self { - fast_path_pdu: None, - data: None, + fragmented_data: None, } } - fn process_pdu( - &mut self, - fast_path_pdu: FastPathUpdatePdu<'_>, - ) -> Option<(UpdateCode, Vec)> { - match fast_path_pdu.fragmentation { + fn process_data(&mut self, data: &[u8], fragmentation: Fragmentation) -> Option> { + match fragmentation { Fragmentation::Single => { self.check_data_is_empty(); - Some((fast_path_pdu.update_code, fast_path_pdu.data.to_vec())) + Some(data.to_vec()) } Fragmentation::First => { self.check_data_is_empty(); - self.data = Some(fast_path_pdu.data.to_vec()); - self.fast_path_pdu = Some(fast_path_pdu.update_code); + self.fragmented_data = Some(data.to_vec()); None } Fragmentation::Next => { - self.append_data(fast_path_pdu.data); + self.append_data(data); None } Fragmentation::Last => { - self.append_data(fast_path_pdu.data); + self.append_data(data); - let update_code = self.fast_path_pdu.take().unwrap(); - let data = self.data.take().unwrap(); + let complete_data = self.fragmented_data.take().unwrap(); - Some((update_code, data)) + Some(complete_data) } } } fn check_data_is_empty(&mut self) { - if self.data.is_some() && self.fast_path_pdu.is_some() { + if self.fragmented_data.is_some() { warn!("Skipping pending Fast-Path Update internal multiple elements data"); - self.data = None; - self.fast_path_pdu = None; + self.fragmented_data = None; } } fn append_data(&mut self, data: &[u8]) { - if self.data.is_none() && self.fast_path_pdu.is_none() { + if self.fragmented_data.is_none() { warn!("Got unexpected Next fragmentation PDU without prior First fragmentation PDU"); - self.data = None; - self.fast_path_pdu = None; + self.fragmented_data = None; } else { - self.data.as_mut().unwrap().extend_from_slice(data); + self.fragmented_data + .as_mut() + .unwrap() + .extend_from_slice(data); } } } diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index e0da7c16..cfd7a503 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -256,6 +256,11 @@ pub enum RdpError { RlgrError(#[fail(cause)] ironrdp::codecs::rfx::rlgr::RlgrError), #[fail(display = "absence of RFX channels")] NoRfxChannelsAnnounced, + #[fail( + display = "the server that started working using the inconsistent protocol: {:?}", + _0 + )] + UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), } impl From for RdpError { From a465bf126248dc3ef26a4aa45e5d0b8e0741ca0e Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 25 Mar 2020 14:19:45 +0200 Subject: [PATCH 0038/1273] ironrdp: make frame ID optional field for FrameMarker PDU --- ironrdp/Cargo.toml | 2 +- ironrdp/src/basic_output/surface_commands.rs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 5c1ac7e7..2a4e3b55 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -27,4 +27,4 @@ num-bigint = "0.2.0" der-parser = "3.0.0" bit_field = "0.10" bitvec = "0.17.1" -hex-literal = "0.2" \ No newline at end of file +hex-literal = "0.2" diff --git a/ironrdp/src/basic_output/surface_commands.rs b/ironrdp/src/basic_output/surface_commands.rs index fd78a74e..c832296b 100644 --- a/ironrdp/src/basic_output/surface_commands.rs +++ b/ironrdp/src/basic_output/surface_commands.rs @@ -96,7 +96,7 @@ impl<'a> PduBufferParsing<'a> for SurfaceBitsPdu<'a> { #[derive(Debug, Clone, PartialEq)] pub struct FrameMarkerPdu { pub frame_action: FrameAction, - pub frame_id: u32, + pub frame_id: Option, } impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { @@ -106,7 +106,15 @@ impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { let frame_action = buffer.read_u16::()?; let frame_action = FrameAction::from_u16(frame_action) .ok_or(SurfaceCommandsError::InvalidFrameAction(frame_action))?; - let frame_id = buffer.read_u32::()?; + + let frame_id = if buffer.is_empty() { + // Sometimes Windows 10 RDP server sends not complete FrameMarker PDU (without frame ID), + // so we made frame ID field as optional (not officially) + + None + } else { + Some(buffer.read_u32::()?) + }; Ok(Self { frame_action, @@ -116,7 +124,7 @@ impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u16::(self.frame_action.to_u16().unwrap())?; - buffer.write_u32::(self.frame_id)?; + buffer.write_u32::(self.frame_id.unwrap_or(0))?; Ok(()) } From 3372d1a17f0f40cdbf8849545893f87e69a5d144 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 25 Mar 2020 14:20:15 +0200 Subject: [PATCH 0039/1273] ironrdp_client: integrate FrameMarker updates related to optional field of FrameMarker --- ironrdp_client/src/active_session/fast_path.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index 8257a04c..484dc126 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -117,7 +117,8 @@ impl Processor { SurfaceCommand::FrameMarker(marker) => { info!( "Frame marker: action {:?} with ID #{}", - marker.frame_action, marker.frame_id + marker.frame_action, + marker.frame_id.unwrap_or(0) ); self.frame.process_marker(&marker, &mut output)?; } @@ -234,7 +235,7 @@ impl Frame { FrameAction::Begin => Ok(()), FrameAction::End => self.transport.encode( ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { - frame_id: marker.frame_id, + frame_id: marker.frame_id.unwrap_or(0), }), &mut output, ), From c070793fc4b80af6a735c05dfaa81cd41fee46d3 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 26 Mar 2020 14:08:52 +0200 Subject: [PATCH 0040/1273] fixup! ironrdp: make frame ID optional field for FrameMarker PDU --- ironrdp/src/basic_output/surface_commands/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ironrdp/src/basic_output/surface_commands/tests.rs b/ironrdp/src/basic_output/surface_commands/tests.rs index f16e8cd1..0b8e7dcf 100644 --- a/ironrdp/src/basic_output/surface_commands/tests.rs +++ b/ironrdp/src/basic_output/surface_commands/tests.rs @@ -84,7 +84,7 @@ const SURFACE_BITS_BUFFER: [u8; 1217] = [ const FRAME_MARKER_PDU: SurfaceCommand<'_> = SurfaceCommand::FrameMarker(FrameMarkerPdu { frame_action: FrameAction::Begin, - frame_id: 5, + frame_id: Some(5), }); lazy_static! { From 5247a3a19834197e23891ce01ce37edafd66c3f0 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Wed, 25 Mar 2020 16:34:42 +0200 Subject: [PATCH 0041/1273] ironrdp_client: move all independent from platform components to lib.rs file --- ironrdp_client/Cargo.toml | 10 +- ironrdp_client/src/active_session.rs | 12 +- .../src/active_session/codecs/rfx.rs | 12 +- .../src/active_session/fast_path.rs | 8 +- ironrdp_client/src/active_session/x224.rs | 18 +- ironrdp_client/src/config.rs | 305 +++++++++--------- ironrdp_client/src/connection_sequence.rs | 43 ++- .../src/connection_sequence/user_info.rs | 51 +-- ironrdp_client/src/errors.rs | 149 +++++++++ ironrdp_client/src/lib.rs | 24 ++ ironrdp_client/src/main.rs | 197 ++--------- ironrdp_client/src/transport.rs | 32 +- ironrdp_client/src/transport/channels.rs | 16 +- ironrdp_client/src/transport/connection.rs | 16 +- ironrdp_client/src/utils.rs | 21 +- 15 files changed, 486 insertions(+), 428 deletions(-) create mode 100644 ironrdp_client/src/errors.rs create mode 100644 ironrdp_client/src/lib.rs diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index dddf6eaf..8c1846ca 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -8,7 +8,15 @@ homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" authors = ["Marc-André Moreau ", "Vladyslav Hordiienko RdpResult<()> { + config: InputConfig, +) -> Result<(), RdpError> { let decoded_image = Arc::new(Mutex::new(DecodedImage::new( u32::from(desktop_sizes.width), u32::from(desktop_sizes.height), DESTINATION_PIXEL_FORMAT, ))); - let mut x224_processor = x224::Processor::new(utils::swap_hashmap_kv(static_channels)); + let mut x224_processor = x224::Processor::new( + utils::swap_hashmap_kv(static_channels), + config.global_channel_name.as_str(), + ); let mut fast_path_processor = fast_path::ProcessorBuilder { decoded_image, global_channel_id, diff --git a/ironrdp_client/src/active_session/codecs/rfx.rs b/ironrdp_client/src/active_session/codecs/rfx.rs index 35863bad..18f9eece 100644 --- a/ironrdp_client/src/active_session/codecs/rfx.rs +++ b/ironrdp_client/src/active_session/codecs/rfx.rs @@ -21,7 +21,7 @@ use ironrdp::{ use lazy_static::lazy_static; use log::debug; -use crate::{active_session::DecodedImage, RdpError, RdpResult}; +use crate::{active_session::DecodedImage, RdpError}; const TILE_SIZE: u16 = 64; const SOURCE_PIXEL_FORMAT: PixelFormat = PixelFormat::BgrX32; @@ -74,7 +74,7 @@ impl DecodingContext { } } - fn process_headers(&mut self, input: &mut &[u8]) -> RdpResult<()> { + fn process_headers(&mut self, input: &mut &[u8]) -> Result<(), RdpError> { let _sync = rfx::SyncPdu::from_buffer_consume(input)?; let mut context = None; @@ -107,7 +107,7 @@ impl DecodingContext { destination: &Rectangle, input: &mut &[u8], image: Arc>, - ) -> RdpResult { + ) -> Result { let width = self.channels.0.first().unwrap().width as u16; let height = self.channels.0.first().unwrap().height as u16; let entropy_algorithm = self.context.entropy_algorithm; @@ -178,7 +178,7 @@ fn process_decoded_tile( width: u16, destination_pixel_format: PixelFormat, image: &Arc>, -) -> RdpResult<()> { +) -> Result<(), RdpError> { debug!("Tile: {:?}", update_rectangle); let update_region = clipping_rectangles.intersect_rectangle(&update_rectangle); @@ -239,7 +239,7 @@ fn decode_tile( output: &mut [u8], ycbcr_temp: &mut [Vec], temp: &mut [i16], -) -> RdpResult<()> { +) -> Result<(), RdpError> { for ((quant, data), ycbcr_buffer) in tile .quants .iter() @@ -272,7 +272,7 @@ fn decode_component( data: &[u8], output: &mut [i16], temp: &mut [i16], -) -> RdpResult<()> { +) -> Result<(), RdpError> { rlgr::decode(entropy_algorithm, data, output)?; subband_reconstruction::decode(&mut output[4032..]); quantization::decode(output, quant); diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index 484dc126..e19ae7fc 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -21,7 +21,7 @@ use crate::{ ShareControlHeaderTransport, ShareDataHeaderTransport, }, utils::CodecId, - RdpError, RdpResult, + RdpError, }; use ironrdp::surface_commands::FrameMarkerPdu; @@ -37,7 +37,7 @@ impl Processor { &mut self, header: &FastPathHeader, mut stream: impl io::BufRead + io::Write, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { debug!("Got Fast-Path Header: {:?}", header); let input_buffer = &stream.fill_buf()?[..header.data_length]; @@ -91,7 +91,7 @@ impl Processor { &mut self, mut output: impl io::Write, surface_commands: Vec>, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { for command in surface_commands { match command { SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { @@ -230,7 +230,7 @@ impl Frame { &mut self, marker: &FrameMarkerPdu, mut output: impl io::Write, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { match marker.frame_action { FrameAction::Begin => Ok(()), FrameAction::End => self.transport.encode( diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index 58674275..c85b1440 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -13,21 +13,23 @@ use crate::{ Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, }, - RdpError, RdpResult, GLOBAL_CHANNEL_NAME, + RdpError, }; const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; -pub struct Processor { +pub struct Processor<'a> { static_channels: HashMap, dynamic_channels: HashMap, + global_channel_name: &'a str, } -impl Processor { - pub fn new(static_channels: HashMap) -> Self { +impl<'a> Processor<'a> { + pub fn new(static_channels: HashMap, global_channel_name: &'a str) -> Self { Self { static_channels, dynamic_channels: HashMap::new(), + global_channel_name, } } @@ -35,7 +37,7 @@ impl Processor { &mut self, mut stream: impl io::BufRead + io::Write, data: Data, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { let mut transport = SendDataContextTransport::default(); transport .mcs_transport @@ -58,7 +60,7 @@ impl Processor { self.process_dvc_message(&mut stream, transport) } - Some(GLOBAL_CHANNEL_NAME) => { + Some(name) if name == self.global_channel_name => { let transport = ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( transport, channel_ids.initiator_id, @@ -76,7 +78,7 @@ impl Processor { &mut self, mut stream: impl io::BufRead + io::Write, mut transport: DynamicVirtualChannelTransport, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { match transport.decode(&mut stream)? { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); @@ -198,7 +200,7 @@ impl Processor { fn process_session_info( mut stream: impl io::BufRead + io::Write, mut transport: ShareDataHeaderTransport, -) -> RdpResult<()> { +) -> Result<(), RdpError> { let share_data_pdu = transport.decode(&mut stream)?; if let ShareDataPdu::SaveSessionInfo(session_info) = share_data_pdu { diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index 72e8ef2c..dcf2a6d8 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -4,15 +4,17 @@ use clap::{crate_name, crate_version, App, Arg}; use ironrdp::nego::SecurityProtocol; use sspi::AuthIdentity; +use ironrdp_client::InputConfig; + const DEFAULT_WIDTH: u16 = 1920; const DEFAULT_HEIGHT: u16 = 1080; +const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; +const USER_CHANNEL_NAME: &str = "USER"; pub struct Config { pub log_file: String, pub routing_addr: SocketAddr, - pub width: u16, - pub height: u16, - pub input: Input, + pub input: InputConfig, } impl Config { @@ -47,7 +49,7 @@ impl Config { )), }), ) - .args(&Input::args()); + .args(&input_args()); let matches = cli_app.get_matches(); let log_file = matches @@ -60,177 +62,166 @@ impl Config { .map(|u| u.parse().unwrap()) .expect("addr must be at least the default"); - let input = Input::from_matches(&matches); + let input = from_input_matches(&matches); Self { log_file, routing_addr, - width: DEFAULT_WIDTH, - height: DEFAULT_HEIGHT, input, } } } -pub struct Input { - pub credentials: AuthIdentity, - pub security_protocol: SecurityProtocol, - pub keyboard_type: ironrdp::gcc::KeyboardType, - pub keyboard_subtype: u32, - pub keyboard_functional_keys_count: u32, - pub ime_file_name: String, - pub dig_product_id: String, +fn input_args<'a, 'b>() -> [Arg<'a, 'b>; 9] { + [ + Arg::with_name("username") + .short("u") + .long("username") + .value_name("USERNAME") + .help("A target RDP server user name") + .takes_value(true) + .empty_values(false) + .required(true), + Arg::with_name("domain") + .short("d") + .long("domain") + .value_name("DOMAIN") + .help("An optional target RDP server domain name") + .takes_value(true) + .required(false), + Arg::with_name("password") + .short("p") + .long("password") + .value_name("PASSWORD") + .help("A target RDP server user password") + .takes_value(true) + .required(true), + Arg::with_name("security-protocol") + .long("security-protocol") + .value_name("SECURITY_PROTOCOL") + .help("Specify the security protocols to use") + .takes_value(true) + .multiple(true) + .possible_values(&["ssl", "hybrid", "hybrid_ex"]) + .default_value(&"hybrid_ex") + .required(true), + Arg::with_name("keyboard-type") + .long("keyboard-type") + .value_name("KEYBOARD_TYPE") + .help("The keyboard type") + .takes_value(true) + .possible_values(&[ + "ibm_pc_xt", + "olivetti_ico", + "ibm_pc_at", + "ibm_enhanced", + "nokia1050", + "nokia9140", + "japanese", + ]) + .default_value(&"ibm_enhanced"), + Arg::with_name("keyboard-subtype") + .long("keyboard-subtype") + .value_name("KEYBOARD_SUBTYPE") + .help("The keyboard subtype (an original equipment manufacturer-dependent value)") + .takes_value(true) + .default_value(&"0") + .validator(is_uint), + Arg::with_name("keyboard-functional-keys-count") + .long("keyboard-functional-keys-count") + .value_name("KEYBOARD_FUNCTIONAL_KEYS_COUNT") + .help("The number of function keys on the keyboard") + .takes_value(true) + .default_value(&"12") + .validator(is_uint), + Arg::with_name("ime-file-name") + .long("ime-file-name") + .value_name("IME_FILENAME") + .help("The input method editor (IME) file name associated with the active input locale") + .takes_value(true) + .default_value(&""), + Arg::with_name("dig-product-id") + .long("dig-product-id") + .value_name("DIG_PRODUCT_ID") + .help("Contains a value that uniquely identifies the client") + .takes_value(true) + .default_value(&""), + ] } -impl Input { - fn args<'a, 'b>() -> [Arg<'a, 'b>; 9] { - [ - Arg::with_name("username") - .short("u") - .long("username") - .value_name("USERNAME") - .help("A target RDP server user name") - .takes_value(true) - .empty_values(false) - .required(true), - Arg::with_name("domain") - .short("d") - .long("domain") - .value_name("DOMAIN") - .help("An optional target RDP server domain name") - .takes_value(true) - .required(false), - Arg::with_name("password") - .short("p") - .long("password") - .value_name("PASSWORD") - .help("A target RDP server user password") - .takes_value(true) - .required(true), - Arg::with_name("security-protocol") - .long("security-protocol") - .value_name("SECURITY_PROTOCOL") - .help("Specify the security protocols to use") - .takes_value(true) - .multiple(true) - .possible_values(&["ssl", "hybrid", "hybrid_ex"]) - .default_value(&"hybrid_ex") - .required(true), - Arg::with_name("keyboard-type") - .long("keyboard-type") - .value_name("KEYBOARD_TYPE") - .help("The keyboard type") - .takes_value(true) - .possible_values(&[ - "ibm_pc_xt", - "olivetti_ico", - "ibm_pc_at", - "ibm_enhanced", - "nokia1050", - "nokia9140", - "japanese", - ]) - .default_value(&"ibm_enhanced"), - Arg::with_name("keyboard-subtype") - .long("keyboard-subtype") - .value_name("KEYBOARD_SUBTYPE") - .help( - "The keyboard subtype (an original equipment manufacturer-dependent value)", - ) - .takes_value(true) - .default_value(&"0") - .validator(is_uint), - Arg::with_name("keyboard-functional-keys-count") - .long("keyboard-functional-keys-count") - .value_name("KEYBOARD_FUNCTIONAL_KEYS_COUNT") - .help("The number of function keys on the keyboard") - .takes_value(true) - .default_value(&"12") - .validator(is_uint), - Arg::with_name("ime-file-name") - .long("ime-file-name") - .value_name("IME_FILENAME") - .help("The input method editor (IME) file name associated with the active input locale") - .takes_value(true) - .default_value(&""), - Arg::with_name("dig-product-id") - .long("dig-product-id") - .value_name("DIG_PRODUCT_ID") - .help("Contains a value that uniquely identifies the client") - .takes_value(true) - .default_value(&""), -] - } - fn from_matches(matches: &clap::ArgMatches<'_>) -> Self { - let username = matches - .value_of("username") - .map(String::from) - .expect("username must be specified"); - let domain = matches.value_of("domain").map(String::from); - let password = matches - .value_of("password") - .map(String::from) - .expect("password must be specified"); - let credentials = AuthIdentity { - username, - password, - domain, - }; +fn from_input_matches(matches: &clap::ArgMatches<'_>) -> InputConfig { + let username = matches + .value_of("username") + .map(String::from) + .expect("username must be specified"); + let domain = matches.value_of("domain").map(String::from); + let password = matches + .value_of("password") + .map(String::from) + .expect("password must be specified"); + let credentials = AuthIdentity { + username, + password, + domain, + }; - let security_protocol = matches - .values_of("security-protocol") - .expect("security-protocol must be specified") - .map(|value| match value { - "ssl" => SecurityProtocol::SSL, - "hybrid" => SecurityProtocol::HYBRID, - "hybrid_ex" => SecurityProtocol::HYBRID_EX, - _ => unreachable!("clap must not allow other security protocols"), - }) - .collect(); + let security_protocol = matches + .values_of("security-protocol") + .expect("security-protocol must be specified") + .map(|value| match value { + "ssl" => SecurityProtocol::SSL, + "hybrid" => SecurityProtocol::HYBRID, + "hybrid_ex" => SecurityProtocol::HYBRID_EX, + _ => unreachable!("clap must not allow other security protocols"), + }) + .collect(); - let keyboard_type = matches - .value_of("keyboard-type") - .map(|value| match value { - "ibm_pc_xt" => ironrdp::gcc::KeyboardType::IbmPcXt, - "olivetti_ico" => ironrdp::gcc::KeyboardType::OlivettiIco, - "ibm_pc_at" => ironrdp::gcc::KeyboardType::IbmPcAt, - "ibm_enhanced" => ironrdp::gcc::KeyboardType::IbmEnhanced, - "nokia1050" => ironrdp::gcc::KeyboardType::Nokia1050, - "nokia9140" => ironrdp::gcc::KeyboardType::Nokia9140, - "japanese" => ironrdp::gcc::KeyboardType::Japanese, - _ => unreachable!("clap must not allow other keyboard types"), - }) - .expect("keyboard type must be at least the default"); + let keyboard_type = matches + .value_of("keyboard-type") + .map(|value| match value { + "ibm_pc_xt" => ironrdp::gcc::KeyboardType::IbmPcXt, + "olivetti_ico" => ironrdp::gcc::KeyboardType::OlivettiIco, + "ibm_pc_at" => ironrdp::gcc::KeyboardType::IbmPcAt, + "ibm_enhanced" => ironrdp::gcc::KeyboardType::IbmEnhanced, + "nokia1050" => ironrdp::gcc::KeyboardType::Nokia1050, + "nokia9140" => ironrdp::gcc::KeyboardType::Nokia9140, + "japanese" => ironrdp::gcc::KeyboardType::Japanese, + _ => unreachable!("clap must not allow other keyboard types"), + }) + .expect("keyboard type must be at least the default"); - let keyboard_subtype = matches - .value_of("keyboard-subtype") - .map(|value| value.parse::().unwrap()) - .expect("keyboard subtype must be at least the default"); + let keyboard_subtype = matches + .value_of("keyboard-subtype") + .map(|value| value.parse::().unwrap()) + .expect("keyboard subtype must be at least the default"); - let keyboard_functional_keys_count = matches - .value_of("keyboard-functional-keys-count") - .map(|value| value.parse::().unwrap()) - .expect("keyboard functional keys count must be at least the default"); + let keyboard_functional_keys_count = matches + .value_of("keyboard-functional-keys-count") + .map(|value| value.parse::().unwrap()) + .expect("keyboard functional keys count must be at least the default"); - let ime_file_name = matches - .value_of("ime-file-name") - .map(String::from) - .expect("IME file name must be at least the default"); + let ime_file_name = matches + .value_of("ime-file-name") + .map(String::from) + .expect("IME file name must be at least the default"); - let dig_product_id = matches - .value_of("dig-product-id") - .map(String::from) - .expect("DIG product ID must be at least the default"); + let dig_product_id = matches + .value_of("dig-product-id") + .map(String::from) + .expect("DIG product ID must be at least the default"); - Self { - credentials, - security_protocol, - keyboard_type, - keyboard_subtype, - keyboard_functional_keys_count, - ime_file_name, - dig_product_id, - } + InputConfig { + credentials, + security_protocol, + keyboard_type, + keyboard_subtype, + keyboard_functional_keys_count, + ime_file_name, + dig_product_id, + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_string(), + user_channel_name: USER_CHANNEL_NAME.to_string(), } } diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 42236482..28209b2a 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -1,6 +1,6 @@ mod user_info; -use std::{collections::HashMap, io, iter}; +use std::{collections::HashMap, io, iter, net::SocketAddr}; use bytes::BytesMut; use ironrdp::{ @@ -21,13 +21,10 @@ use ring::rand::SecureRandom; use rustls::{internal::msgs::handshake::CertificatePayload, Session}; use sspi::internal::credssp; -use crate::{config::Config, transport::*, utils, RdpError, RdpResult}; +use crate::{transport::*, utils, InputConfig, RdpError}; pub type StaticChannels = HashMap; -pub const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; -pub const USER_CHANNEL_NAME: &str = "USER"; - pub struct DesktopSizes { pub width: u16, pub height: u16, @@ -36,7 +33,7 @@ pub struct DesktopSizes { pub fn process_cred_ssp<'a, S, T>( mut tls_stream: &mut bufstream::BufStream>, credentials: sspi::AuthIdentity, -) -> RdpResult<()> +) -> Result<(), RdpError> where S: 'a + Session + Sized, T: 'a + io::Read + io::Write + Sized, @@ -85,9 +82,9 @@ where pub fn process_mcs_connect( mut stream: impl io::BufRead + io::Write, transport: &mut DataTransport, - config: &Config, + config: &InputConfig, selected_protocol: nego::SecurityProtocol, -) -> RdpResult { +) -> Result { let connect_initial = ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks( &config, selected_protocol, @@ -136,7 +133,7 @@ pub fn process_mcs_connect( .map(|channel| channel.name) .zip(static_channel_ids.into_iter()) .chain(iter::once(( - GLOBAL_CHANNEL_NAME.to_string(), + config.global_channel_name.clone(), global_channel_id, ))) .collect::(); @@ -148,7 +145,8 @@ pub fn process_mcs( mut stream: impl io::BufRead + io::Write, transport: &mut McsTransport, mut static_channels: StaticChannels, -) -> RdpResult { + config: &InputConfig, +) -> Result { let erect_domain_request = ironrdp::mcs::ErectDomainPdu { sub_height: 0, sub_interval: 0, @@ -178,7 +176,7 @@ pub fn process_mcs( debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); static_channels.insert( - USER_CHANNEL_NAME.to_string(), + config.user_channel_name.clone(), attach_user_confirm.initiator_id, ); @@ -236,9 +234,10 @@ pub fn process_mcs( pub fn send_client_info( stream: impl io::BufRead + io::Write, transport: &mut SendDataContextTransport, - config: &Config, -) -> RdpResult<()> { - let client_info_pdu = user_info::create_client_info_pdu(config)?; + config: &InputConfig, + routing_addr: &SocketAddr, +) -> Result<(), RdpError> { + let client_info_pdu = user_info::create_client_info_pdu(config, routing_addr)?; debug!("Send Client Info PDU: {:?}", client_info_pdu); let mut pdu = Vec::with_capacity(client_info_pdu.buffer_length()); client_info_pdu @@ -252,9 +251,9 @@ pub fn send_client_info( pub fn process_server_license_exchange( mut stream: impl io::BufRead + io::Write, transport: &mut SendDataContextTransport, - config: &Config, + config: &InputConfig, global_channel_id: u16, -) -> RdpResult<()> { +) -> Result<(), RdpError> { let channel_ids = transport.decode(&mut stream)?; check_global_id(channel_ids, global_channel_id)?; @@ -288,8 +287,8 @@ pub fn process_server_license_exchange( &license_request, client_random.as_slice(), premaster_secret.as_slice(), - &config.input.credentials.username, - &config.input.credentials.domain.as_deref().unwrap_or(""), + &config.credentials.username, + &config.credentials.domain.as_deref().unwrap_or(""), ) .map_err(|err| { RdpError::IOError(io::Error::new( @@ -334,7 +333,7 @@ pub fn process_server_license_exchange( let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( &challenge, - &config.input.credentials.domain.as_deref().unwrap_or(""), + &config.credentials.domain.as_deref().unwrap_or(""), &encryption_data, ) .map_err(|err| { @@ -387,8 +386,8 @@ pub fn process_server_license_exchange( pub fn process_capability_sets( mut stream: impl io::BufRead + io::Write, transport: &mut ShareControlHeaderTransport, - config: &Config, -) -> RdpResult { + config: &InputConfig, +) -> Result { let share_control_pdu = transport.decode(&mut stream)?; let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = @@ -440,7 +439,7 @@ pub fn process_finalization( mut stream: impl io::BufRead + io::Write, transport: &mut ShareDataHeaderTransport, initiator_id: u16, -) -> RdpResult<()> { +) -> Result<(), RdpError> { use ironrdp::rdp::{ ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu, }; diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 3006f9a3..0147b54b 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -27,14 +27,14 @@ use ironrdp::{ }; use num_traits::ToPrimitive; -use crate::{config::Config, utils::CodecId, RdpError, RdpResult}; +use crate::{utils::CodecId, InputConfig, RdpError}; const SOURCE_DESCRIPTOR: &str = "IRONRDP"; pub fn create_gcc_blocks( - config: &Config, + config: &InputConfig, selected_protocol: SecurityProtocol, -) -> RdpResult { +) -> Result { Ok(ClientGccBlocks { core: create_core_data(config, selected_protocol)?, security: create_security_data(), @@ -47,12 +47,15 @@ pub fn create_gcc_blocks( }) } -pub fn create_client_info_pdu(config: &Config) -> RdpResult { +pub fn create_client_info_pdu( + config: &InputConfig, + routing_addr: &net::SocketAddr, +) -> Result { let security_header = BasicSecurityHeader { flags: BasicSecurityHeaderFlags::INFO_PKT, }; let client_info = ClientInfo { - credentials: auth_identity_to_credentials(config.input.credentials.clone()), + credentials: auth_identity_to_credentials(config.credentials.clone()), code_page: 0, // ignored if the keyboardLayout field of the Client Core Data is set to zero flags: ClientInfoFlags::UNICODE | ClientInfoFlags::DISABLE_CTRL_ALT_DEL @@ -64,11 +67,11 @@ pub fn create_client_info_pdu(config: &Config) -> RdpResult { alternate_shell: String::new(), work_dir: String::new(), extra_info: ExtendedClientInfo { - address_family: match config.routing_addr { + address_family: match routing_addr { net::SocketAddr::V4(_) => AddressFamily::INet, net::SocketAddr::V6(_) => AddressFamily::INet6, }, - address: config.routing_addr.ip().to_string(), + address: routing_addr.ip().to_string(), dir: env::current_dir() .map_err(|e| { RdpError::UserInfoError(format!( @@ -89,9 +92,9 @@ pub fn create_client_info_pdu(config: &Config) -> RdpResult { } pub fn create_client_confirm_active( - config: &Config, + config: &InputConfig, mut server_capability_sets: Vec, -) -> RdpResult { +) -> Result { server_capability_sets.retain(|capability_set| match capability_set { CapabilitySet::MultiFragmentUpdate(_) => true, _ => false, @@ -137,9 +140,9 @@ pub fn create_client_confirm_active( } fn create_core_data( - config: &Config, + config: &InputConfig, selected_protocol: SecurityProtocol, -) -> RdpResult { +) -> Result { Ok(ClientCoreData { version: RdpVersion::V5Plus, desktop_width: config.width, @@ -151,18 +154,18 @@ fn create_core_data( .map(|version| version.major * 100 + version.minor * 10 + version.patch) .unwrap_or(0) as u32, client_name: whoami::hostname(), - keyboard_type: config.input.keyboard_type, - keyboard_subtype: config.input.keyboard_subtype, - keyboard_functional_keys_count: config.input.keyboard_functional_keys_count, - ime_file_name: config.input.ime_file_name.clone(), + keyboard_type: config.keyboard_type, + keyboard_subtype: config.keyboard_subtype, + keyboard_functional_keys_count: config.keyboard_functional_keys_count, + ime_file_name: config.ime_file_name.clone(), optional_data: create_optional_core_data(config, selected_protocol)?, }) } fn create_optional_core_data( - config: &Config, + config: &InputConfig, selected_protocol: SecurityProtocol, -) -> RdpResult { +) -> Result { Ok(ClientCoreOptionalData { post_beta_color_depth: Some(ColorDepth::Bpp4), // ignored client_product_id: Some(1), @@ -173,7 +176,7 @@ fn create_optional_core_data( ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE | ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION, ), - dig_product_id: Some(config.input.dig_product_id.clone()), + dig_product_id: Some(config.dig_product_id.clone()), connection_type: Some(ConnectionType::Lan), server_selected_protocol: Some(selected_protocol), desktop_physical_width: None, @@ -212,7 +215,7 @@ fn create_general_capability_set() -> CapabilitySet { }) } -fn create_bitmap_capability_set(config: &Config) -> CapabilitySet { +fn create_bitmap_capability_set(config: &InputConfig) -> CapabilitySet { CapabilitySet::Bitmap(Bitmap { pref_bits_per_pix: 32, desktop_width: config.width, @@ -247,14 +250,14 @@ fn create_pointer_capability_set() -> CapabilitySet { }) } -fn create_input_capability_set(config: &Config) -> CapabilitySet { +fn create_input_capability_set(config: &InputConfig) -> CapabilitySet { CapabilitySet::Input(Input { input_flags: InputFlags::SCANCODES, keyboard_layout: 0, - keyboard_type: Some(config.input.keyboard_type), - keyboard_subtype: config.input.keyboard_subtype, - keyboard_function_key: config.input.keyboard_functional_keys_count, - keyboard_ime_filename: config.input.ime_file_name.clone(), + keyboard_type: Some(config.keyboard_type), + keyboard_subtype: config.keyboard_subtype, + keyboard_function_key: config.keyboard_functional_keys_count, + keyboard_ime_filename: config.ime_file_name.clone(), }) } diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs new file mode 100644 index 00000000..70d292c0 --- /dev/null +++ b/ironrdp_client/src/errors.rs @@ -0,0 +1,149 @@ +use std::io; + +use failure::Fail; +use ironrdp::{codecs, dvc::gfx, fast_path::FastPathError, nego, rdp, McsError}; + +#[derive(Debug, Fail)] +pub enum RdpError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "connection error: {}", _0)] + ConnectionError(#[fail(cause)] io::Error), + #[fail(display = "X.224 error: {}", _0)] + X224Error(#[fail(cause)] io::Error), + #[fail(display = "negotiation error: {}", _0)] + NegotiationError(#[fail(cause)] nego::NegotiationError), + #[fail(display = "unexpected PDU: {}", _0)] + UnexpectedPdu(String), + #[fail(display = "Unexpected disconnection: {}", _0)] + UnexpectedDisconnection(String), + #[fail(display = "invalid response: {}", _0)] + InvalidResponse(String), + #[fail(display = "TLS connector error: {}", _0)] + TlsConnectorError(rustls::TLSError), + #[fail(display = "TLS handshake error: {}", _0)] + TlsHandshakeError(rustls::TLSError), + #[fail(display = "CredSSP error: {}", _0)] + CredSspError(#[fail(cause)] sspi::Error), + #[fail(display = "CredSSP TSRequest error: {}", _0)] + TsRequestError(#[fail(cause)] io::Error), + #[fail(display = "early User Authentication Result error: {}", _0)] + EarlyUserAuthResultError(#[fail(cause)] io::Error), + #[fail(display = "the server denied access via Early User Authentication Result")] + AccessDenied, + #[fail(display = "MCS Connect error: {}", _0)] + McsConnectError(#[fail(cause)] McsError), + #[fail(display = "failed to get info about the user: {}", _0)] + UserInfoError(String), + #[fail(display = "MCS error: {}", _0)] + McsError(McsError), + #[fail(display = "Client Info PDU error: {}", _0)] + ClientInfoError(rdp::RdpError), + #[fail(display = "Server License PDU error: {}", _0)] + ServerLicenseError(rdp::RdpError), + #[fail(display = "Share Control Header error: {}", _0)] + ShareControlHeaderError(rdp::RdpError), + #[fail(display = "capability sets error: {}", _0)] + CapabilitySetsError(rdp::RdpError), + #[fail(display = "Virtual channel error: {}", _0)] + VirtualChannelError(rdp::vc::ChannelError), + #[fail(display = "Invalid channel id error: {}", _0)] + InvalidChannelIdError(String), + #[fail(display = "Graphics pipeline protocol error: {}", _0)] + GraphicsPipelineError(gfx::GraphicsPipelineError), + #[fail(display = "ZGFX error: {}", _0)] + ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), + #[fail(display = "Fast-Path error: {}", _0)] + FastPathError(#[fail(cause)] FastPathError), + #[fail(display = "RDP error: {}", _0)] + RdpError(#[fail(cause)] ironrdp::RdpError), + #[fail(display = "access to the non-existing channel: {}", _0)] + AccessToNonExistingChannel(u32), + #[fail(display = "data in unexpected channel: {}", _0)] + UnexpectedChannel(u16), + #[fail(display = "unexpected Surface Command codec ID: {}", _0)] + UnexpectedCodecId(u8), + #[fail(display = "RDP error: {}", _0)] + RfxError(#[fail(cause)] codecs::rfx::RfxError), + #[fail(display = "absence of mandatory Fast-Path header")] + MandatoryHeaderIsAbsent, + #[fail(display = "RLGR error: {}", _0)] + RlgrError(#[fail(cause)] codecs::rfx::rlgr::RlgrError), + #[fail(display = "absence of RFX channels")] + NoRfxChannelsAnnounced, + #[fail( + display = "the server that started working using the inconsistent protocol: {:?}", + _0 + )] + UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), +} + +impl From for RdpError { + fn from(e: io::Error) -> Self { + RdpError::IOError(e) + } +} + +impl From for RdpError { + fn from(e: rustls::TLSError) -> Self { + match e { + rustls::TLSError::InappropriateHandshakeMessage { .. } + | rustls::TLSError::HandshakeNotComplete => RdpError::TlsHandshakeError(e), + _ => RdpError::TlsConnectorError(e), + } + } +} + +impl From for RdpError { + fn from(e: nego::NegotiationError) -> Self { + RdpError::NegotiationError(e) + } +} + +impl From for RdpError { + fn from(e: McsError) -> Self { + RdpError::McsError(e) + } +} + +impl From for RdpError { + fn from(e: rdp::vc::ChannelError) -> Self { + RdpError::VirtualChannelError(e) + } +} + +impl From for RdpError { + fn from(e: gfx::GraphicsPipelineError) -> Self { + RdpError::GraphicsPipelineError(e) + } +} + +impl From for RdpError { + fn from(e: gfx::zgfx::ZgfxError) -> Self { + RdpError::ZgfxError(e) + } +} + +impl From for RdpError { + fn from(e: FastPathError) -> Self { + RdpError::FastPathError(e) + } +} + +impl From for RdpError { + fn from(e: ironrdp::RdpError) -> Self { + RdpError::RdpError(e) + } +} + +impl From for RdpError { + fn from(e: codecs::rfx::RfxError) -> Self { + RdpError::RfxError(e) + } +} + +impl From for RdpError { + fn from(e: codecs::rfx::rlgr::RlgrError) -> Self { + RdpError::RlgrError(e) + } +} diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs new file mode 100644 index 00000000..d10bcac8 --- /dev/null +++ b/ironrdp_client/src/lib.rs @@ -0,0 +1,24 @@ +pub mod active_session; +pub mod connection_sequence; +pub mod transport; + +mod errors; +mod utils; + +pub use errors::RdpError; + +use ironrdp::{gcc, nego}; + +pub struct InputConfig { + pub credentials: sspi::AuthIdentity, + pub security_protocol: nego::SecurityProtocol, + pub keyboard_type: gcc::KeyboardType, + pub keyboard_subtype: u32, + pub keyboard_functional_keys_count: u32, + pub ime_file_name: String, + pub dig_product_id: String, + pub width: u16, + pub height: u16, + pub global_channel_name: String, + pub user_channel_name: String, +} diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index cfd7a503..59b359dc 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,8 +1,4 @@ -mod active_session; mod config; -mod connection_sequence; -mod transport; -mod utils; use std::{ io::{self, Write}, @@ -10,27 +6,24 @@ use std::{ sync::Arc, }; -use failure::Fail; -use ironrdp::{dvc::gfx, fast_path::FastPathError, nego, rdp}; +use ironrdp::{nego, rdp}; use log::{debug, error, warn}; use sspi::internal::credssp; -use self::{ +use self::config::Config; +use ironrdp_client::{ active_session::process_active_stage, - config::Config, connection_sequence::{ process_capability_sets, process_cred_ssp, process_finalization, process_mcs, - process_mcs_connect, process_server_license_exchange, send_client_info, StaticChannels, - GLOBAL_CHANNEL_NAME, USER_CHANNEL_NAME, + process_mcs_connect, process_server_license_exchange, send_client_info, }, transport::{ connect, EarlyUserAuthResult, McsTransport, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, }, + RdpError, }; -pub type RdpResult = Result; - const BUF_READER_SIZE: usize = 32 * 1024; mod danger { @@ -96,8 +89,8 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { Ok(()) } -fn run(config: Config) -> RdpResult<()> { - let addr = utils::socket_addr_to_string(config.routing_addr); +fn run(config: Config) -> Result<(), RdpError> { + let addr = socket_addr_to_string(config.routing_addr); let stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; let mut stream = bufstream::BufStream::new(stream); @@ -138,27 +131,41 @@ fn run(config: Config) -> RdpResult<()> { } } - let static_channels = - process_mcs_connect(&mut tls_stream, &mut transport, &config, selected_protocol)?; + let static_channels = process_mcs_connect( + &mut tls_stream, + &mut transport, + &config.input, + selected_protocol, + )?; let mut transport = McsTransport::new(transport); - let joined_static_channels = process_mcs(&mut tls_stream, &mut transport, static_channels)?; + let joined_static_channels = process_mcs( + &mut tls_stream, + &mut transport, + static_channels, + &config.input, + )?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels - .get(GLOBAL_CHANNEL_NAME) + .get(config.input.global_channel_name.as_str()) .expect("global channel must be added"); let initiator_id = *joined_static_channels - .get(USER_CHANNEL_NAME) + .get(config.input.user_channel_name.as_str()) .expect("user channel must be added"); let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); - send_client_info(&mut tls_stream, &mut transport, &config)?; + send_client_info( + &mut tls_stream, + &mut transport, + &config.input, + &config.routing_addr, + )?; match process_server_license_exchange( &mut tls_stream, &mut transport, - &config, + &config.input, global_channel_id, ) { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( @@ -172,7 +179,7 @@ fn run(config: Config) -> RdpResult<()> { let mut transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let desktop_sizes = process_capability_sets(&mut tls_stream, &mut transport, &config)?; + let desktop_sizes = process_capability_sets(&mut tls_stream, &mut transport, &config.input)?; let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut tls_stream, &mut transport, initiator_id)?; @@ -183,152 +190,12 @@ fn run(config: Config) -> RdpResult<()> { global_channel_id, initiator_id, desktop_sizes, + config.input, )?; Ok(()) } -#[derive(Debug, Fail)] -pub enum RdpError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "connection error: {}", _0)] - ConnectionError(#[fail(cause)] io::Error), - #[fail(display = "X.224 error: {}", _0)] - X224Error(#[fail(cause)] io::Error), - #[fail(display = "negotiation error: {}", _0)] - NegotiationError(#[fail(cause)] ironrdp::nego::NegotiationError), - #[fail(display = "unexpected PDU: {}", _0)] - UnexpectedPdu(String), - #[fail(display = "Unexpected disconnection: {}", _0)] - UnexpectedDisconnection(String), - #[fail(display = "invalid response: {}", _0)] - InvalidResponse(String), - #[fail(display = "TLS connector error: {}", _0)] - TlsConnectorError(rustls::TLSError), - #[fail(display = "TLS handshake error: {}", _0)] - TlsHandshakeError(rustls::TLSError), - #[fail(display = "CredSSP error: {}", _0)] - CredSspError(#[fail(cause)] sspi::Error), - #[fail(display = "CredSSP TSRequest error: {}", _0)] - TsRequestError(#[fail(cause)] io::Error), - #[fail(display = "early User Authentication Result error: {}", _0)] - EarlyUserAuthResultError(#[fail(cause)] io::Error), - #[fail(display = "the server denied access via Early User Authentication Result")] - AccessDenied, - #[fail(display = "MCS Connect error: {}", _0)] - McsConnectError(#[fail(cause)] ironrdp::McsError), - #[fail(display = "failed to get info about the user: {}", _0)] - UserInfoError(String), - #[fail(display = "MCS error: {}", _0)] - McsError(ironrdp::McsError), - #[fail(display = "Client Info PDU error: {}", _0)] - ClientInfoError(ironrdp::rdp::RdpError), - #[fail(display = "Server License PDU error: {}", _0)] - ServerLicenseError(ironrdp::rdp::RdpError), - #[fail(display = "Share Control Header error: {}", _0)] - ShareControlHeaderError(ironrdp::rdp::RdpError), - #[fail(display = "capability sets error: {}", _0)] - CapabilitySetsError(ironrdp::rdp::RdpError), - #[fail(display = "Virtual channel error: {}", _0)] - VirtualChannelError(ironrdp::rdp::vc::ChannelError), - #[fail(display = "Invalid channel id error: {}", _0)] - InvalidChannelIdError(String), - #[fail(display = "Graphics pipeline protocol error: {}", _0)] - GraphicsPipelineError(gfx::GraphicsPipelineError), - #[fail(display = "ZGFX error: {}", _0)] - ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), - #[fail(display = "Fast-Path error: {}", _0)] - FastPathError(#[fail(cause)] FastPathError), - #[fail(display = "RDP error: {}", _0)] - RdpError(#[fail(cause)] ironrdp::RdpError), - #[fail(display = "access to the non-existing channel: {}", _0)] - AccessToNonExistingChannel(u32), - #[fail(display = "data in unexpected channel: {}", _0)] - UnexpectedChannel(u16), - #[fail(display = "unexpected Surface Command codec ID: {}", _0)] - UnexpectedCodecId(u8), - #[fail(display = "RDP error: {}", _0)] - RfxError(#[fail(cause)] ironrdp::codecs::rfx::RfxError), - #[fail(display = "absence of mandatory Fast-Path header")] - MandatoryHeaderIsAbsent, - #[fail(display = "RLGR error: {}", _0)] - RlgrError(#[fail(cause)] ironrdp::codecs::rfx::rlgr::RlgrError), - #[fail(display = "absence of RFX channels")] - NoRfxChannelsAnnounced, - #[fail( - display = "the server that started working using the inconsistent protocol: {:?}", - _0 - )] - UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), -} - -impl From for RdpError { - fn from(e: io::Error) -> Self { - RdpError::IOError(e) - } -} - -impl From for RdpError { - fn from(e: rustls::TLSError) -> Self { - match e { - rustls::TLSError::InappropriateHandshakeMessage { .. } - | rustls::TLSError::HandshakeNotComplete => RdpError::TlsHandshakeError(e), - _ => RdpError::TlsConnectorError(e), - } - } -} - -impl From for RdpError { - fn from(e: ironrdp::nego::NegotiationError) -> Self { - RdpError::NegotiationError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::McsError) -> Self { - RdpError::McsError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::rdp::vc::ChannelError) -> Self { - RdpError::VirtualChannelError(e) - } -} - -impl From for RdpError { - fn from(e: gfx::GraphicsPipelineError) -> Self { - RdpError::GraphicsPipelineError(e) - } -} - -impl From for RdpError { - fn from(e: gfx::zgfx::ZgfxError) -> Self { - RdpError::ZgfxError(e) - } -} - -impl From for RdpError { - fn from(e: FastPathError) -> Self { - RdpError::FastPathError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::RdpError) -> Self { - RdpError::RdpError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::codecs::rfx::RfxError) -> Self { - RdpError::RfxError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::codecs::rfx::rlgr::RlgrError) -> Self { - RdpError::RlgrError(e) - } +pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { + format!("{}:{}", socket_addr.ip(), socket_addr.port()) } diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index e527011e..33eeef03 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -16,7 +16,7 @@ use bytes::BytesMut; use ironrdp::{PduParsing, RdpPdu}; use log::warn; -use crate::{RdpError, RdpResult}; +use crate::RdpError; pub trait Encoder { type Item; @@ -62,7 +62,7 @@ impl Encoder for DataTransport { type Item = BytesMut; type Error = RdpError; - fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { ironrdp::Data::new(data.len()).to_buffer(&mut stream)?; stream.write_all(data.as_ref())?; stream.flush()?; @@ -75,7 +75,7 @@ impl Decoder for DataTransport { type Item = usize; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { match self.state { TransportState::ToDecode => { let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; @@ -98,7 +98,7 @@ impl McsTransport { pub fn prepare_data_to_encode( mcs_pdu: ironrdp::McsPdu, extra_data: Option>, - ) -> RdpResult { + ) -> Result { let mut mcs_pdu_buff = BytesMut::with_capacity(mcs_pdu.buffer_length()); mcs_pdu_buff.resize(mcs_pdu.buffer_length(), 0x00); mcs_pdu @@ -117,7 +117,11 @@ impl Encoder for McsTransport { type Item = BytesMut; type Error = RdpError; - fn encode(&mut self, mcs_pdu_buff: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + fn encode( + &mut self, + mcs_pdu_buff: Self::Item, + mut stream: impl io::Write, + ) -> Result<(), RdpError> { self.0.encode(mcs_pdu_buff, &mut stream) } } @@ -126,7 +130,7 @@ impl Decoder for McsTransport { type Item = ironrdp::McsPdu; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { self.0.decode(&mut stream)?; let mcs_pdu = ironrdp::McsPdu::from_buffer(&mut stream).map_err(RdpError::McsError)?; @@ -184,7 +188,7 @@ impl Encoder for SendDataContextTransport { &mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { let send_data_context = ironrdp::mcs::SendDataContext { channel_id: self.channel_ids.channel_id, initiator_id: self.channel_ids.initiator_id, @@ -205,7 +209,7 @@ impl Decoder for SendDataContextTransport { type Item = ChannelIdentificators; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { match self.state { TransportState::ToDecode => { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; @@ -264,7 +268,7 @@ impl Encoder for ShareControlHeaderTransport { &mut self, share_control_pdu: Self::Item, mut stream: impl io::Write, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { let share_control_header = ironrdp::ShareControlHeader { share_control_pdu, pdu_source: self.pdu_source, @@ -284,7 +288,7 @@ impl Decoder for ShareControlHeaderTransport { type Item = ironrdp::ShareControlPdu; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { let channel_ids = self.send_data_context_transport.decode(&mut stream)?; if channel_ids.channel_id != self.global_channel_id { return Err(RdpError::InvalidResponse(format!( @@ -320,7 +324,11 @@ impl Encoder for ShareDataHeaderTransport { type Item = ironrdp::ShareDataPdu; type Error = RdpError; - fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + fn encode( + &mut self, + share_data_pdu: Self::Item, + mut stream: impl io::Write, + ) -> Result<(), RdpError> { let share_data_header = ironrdp::ShareDataHeader { share_data_pdu, stream_priority: ironrdp::rdp::StreamPriority::Medium, @@ -339,7 +347,7 @@ impl Decoder for ShareDataHeaderTransport { type Item = ironrdp::ShareDataPdu; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { let share_control_pdu = self.0.decode(&mut stream)?; if let ironrdp::ShareControlPdu::Data(share_data_header) = share_control_pdu { diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs index 5cbd6bf1..24a5e628 100644 --- a/ironrdp_client/src/transport/channels.rs +++ b/ironrdp_client/src/transport/channels.rs @@ -3,7 +3,7 @@ use std::io; use ironrdp::{rdp::vc, PduParsing}; use super::{Decoder, Encoder, SendDataContextTransport}; -use crate::{RdpError, RdpResult}; +use crate::RdpError; #[derive(Copy, Clone, Debug)] pub struct ChannelIdentificators { @@ -37,7 +37,7 @@ impl Encoder for StaticVirtualChannelTransport { &mut self, mut channel_data_buffer: Self::Item, mut stream: impl io::Write, - ) -> RdpResult<()> { + ) -> Result<(), RdpError> { let channel_header = vc::ChannelPduHeader { total_length: channel_data_buffer.len() as u32, flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, @@ -57,7 +57,7 @@ impl Decoder for StaticVirtualChannelTransport { type Item = (u16, usize); type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { let channel_ids = self.transport.decode(&mut stream)?; self.channel_ids = channel_ids; let channel_header = vc::ChannelPduHeader::from_buffer(&mut stream)?; @@ -82,7 +82,7 @@ impl DynamicVirtualChannelTransport { pub fn prepare_data_to_encode( dvc_pdu: vc::dvc::ClientPdu, extra_data: Option>, - ) -> RdpResult> { + ) -> Result, RdpError> { let mut full_data_buff = Vec::with_capacity(dvc_pdu.buffer_length()); dvc_pdu.to_buffer(&mut full_data_buff)?; @@ -98,7 +98,11 @@ impl Encoder for DynamicVirtualChannelTransport { type Item = Vec; type Error = RdpError; - fn encode(&mut self, client_pdu_buff: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + fn encode( + &mut self, + client_pdu_buff: Self::Item, + mut stream: impl io::Write, + ) -> Result<(), RdpError> { self.transport.encode(client_pdu_buff, &mut stream) } } @@ -107,7 +111,7 @@ impl Decoder for DynamicVirtualChannelTransport { type Item = vc::dvc::ServerPdu; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { let (channel_id, dvc_data_size) = self.transport.decode(&mut stream)?; if self.drdynvc_id != channel_id { return Err(RdpError::InvalidChannelIdError(format!( diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index fbbc9ae6..c672d66c 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -6,7 +6,7 @@ use log::debug; use sspi::internal::credssp; use super::{DataTransport, Decoder, Encoder}; -use crate::{RdpError, RdpResult}; +use crate::RdpError; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; @@ -17,7 +17,11 @@ impl Encoder for TsRequestTransport { type Item = credssp::TsRequest; type Error = RdpError; - fn encode(&mut self, ts_request: Self::Item, mut stream: impl io::Write) -> RdpResult<()> { + fn encode( + &mut self, + ts_request: Self::Item, + mut stream: impl io::Write, + ) -> Result<(), RdpError> { let mut buf = BytesMut::with_capacity(ts_request.buffer_len() as usize); buf.resize(ts_request.buffer_len() as usize, 0x00); @@ -36,7 +40,7 @@ impl Decoder for TsRequestTransport { type Item = credssp::TsRequest; type Error = RdpError; - fn decode(&mut self, mut stream: impl io::Read) -> RdpResult { + fn decode(&mut self, mut stream: impl io::Read) -> Result { let mut buf = BytesMut::with_capacity(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE); buf.resize(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE, 0x00); stream.read_exact(&mut buf)?; @@ -55,7 +59,7 @@ impl Decoder for TsRequestTransport { pub struct EarlyUserAuthResult; impl EarlyUserAuthResult { - pub fn read(mut stream: impl io::Read) -> RdpResult { + pub fn read(mut stream: impl io::Read) -> Result { let mut buf = BytesMut::with_capacity(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE); buf.resize(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE, 0x00); stream.read_exact(&mut buf)?; @@ -70,7 +74,7 @@ pub fn connect( mut stream: impl io::BufRead + io::Write, security_protocol: nego::SecurityProtocol, username: String, -) -> RdpResult<(DataTransport, nego::SecurityProtocol)> { +) -> Result<(DataTransport, nego::SecurityProtocol), RdpError> { let selected_protocol = process_negotiation( &mut stream, Some(nego::NegoData::Cookie(username)), @@ -88,7 +92,7 @@ fn process_negotiation( protocol: nego::SecurityProtocol, flags: nego::RequestFlags, src_ref: u16, -) -> RdpResult { +) -> Result { let connection_request = nego::Request { nego_data, flags, diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index 46130007..c6b5a606 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -1,7 +1,6 @@ use std::{collections::HashMap, hash::Hash, io}; use num_derive::{FromPrimitive, ToPrimitive}; -use x509_parser::parse_x509_der; #[macro_export] macro_rules! eof_try { @@ -26,18 +25,6 @@ macro_rules! try_ready { }; } -pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { - format!("{}:{}", socket_addr.ip(), socket_addr.port()) -} - -pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { - let res = parse_x509_der(&cert[..]) - .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; - let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; - - Ok(public_key.data.to_vec()) -} - pub fn swap_hashmap_kv(hm: HashMap) -> HashMap where V: Hash + Eq, @@ -54,3 +41,11 @@ where pub enum CodecId { RemoteFx = 0x3, } + +pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { + let res = x509_parser::parse_x509_der(&cert[..]) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; + let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; + + Ok(public_key.data.to_vec()) +} From 34fe59191b5f5de3a5ee7abce87c0d2186f2b2d1 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 26 Mar 2020 16:38:53 +0200 Subject: [PATCH 0042/1273] ironrdp_client: remove dependence on Rustls for connection sequence --- ironrdp_client/src/connection_sequence.rs | 36 ++++++++--------------- ironrdp_client/src/main.rs | 23 ++++++++++++++- ironrdp_client/src/utils.rs | 10 +------ 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 28209b2a..06b16c43 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -18,10 +18,9 @@ use ironrdp::{ }; use log::{debug, info, trace}; use ring::rand::SecureRandom; -use rustls::{internal::msgs::handshake::CertificatePayload, Session}; use sspi::internal::credssp; -use crate::{transport::*, utils, InputConfig, RdpError}; +use crate::{transport::*, InputConfig, RdpError}; pub type StaticChannels = HashMap; @@ -30,26 +29,15 @@ pub struct DesktopSizes { pub height: u16, } -pub fn process_cred_ssp<'a, S, T>( - mut tls_stream: &mut bufstream::BufStream>, +pub fn process_cred_ssp( + mut tls_stream: impl io::Read + io::Write, credentials: sspi::AuthIdentity, -) -> Result<(), RdpError> -where - S: 'a + Session + Sized, - T: 'a + io::Read + io::Write + Sized, -{ - let cert: CertificatePayload = tls_stream - .get_ref() - .sess - .get_peer_certificates() - .ok_or_else(|| RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented))?; - - let server_tls_pubkey = utils::get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; - + server_public_key: Vec, +) -> Result<(), RdpError> { let mut transport = TsRequestTransport::default(); let mut cred_ssp_client = credssp::CredSspClient::new( - server_tls_pubkey, + server_public_key, credentials, credssp::CredSspMode::WithCredentials, ) @@ -80,7 +68,7 @@ where } pub fn process_mcs_connect( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, transport: &mut DataTransport, config: &InputConfig, selected_protocol: nego::SecurityProtocol, @@ -142,7 +130,7 @@ pub fn process_mcs_connect( } pub fn process_mcs( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, transport: &mut McsTransport, mut static_channels: StaticChannels, config: &InputConfig, @@ -232,7 +220,7 @@ pub fn process_mcs( } pub fn send_client_info( - stream: impl io::BufRead + io::Write, + stream: impl io::Read + io::Write, transport: &mut SendDataContextTransport, config: &InputConfig, routing_addr: &SocketAddr, @@ -249,7 +237,7 @@ pub fn send_client_info( } pub fn process_server_license_exchange( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, transport: &mut SendDataContextTransport, config: &InputConfig, global_channel_id: u16, @@ -384,7 +372,7 @@ pub fn process_server_license_exchange( } pub fn process_capability_sets( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, transport: &mut ShareControlHeaderTransport, config: &InputConfig, ) -> Result { @@ -436,7 +424,7 @@ pub fn process_capability_sets( } pub fn process_finalization( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, transport: &mut ShareDataHeaderTransport, initiator_id: u16, ) -> Result<(), RdpError> { diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 59b359dc..aba4ce2a 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -8,6 +8,7 @@ use std::{ use ironrdp::{nego, rdp}; use log::{debug, error, warn}; +use rustls::Session; use sspi::internal::credssp; use self::config::Config; @@ -120,7 +121,19 @@ fn run(config: Config) -> Result<(), RdpError> { if selected_protocol.contains(nego::SecurityProtocol::HYBRID) || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - process_cred_ssp(&mut tls_stream, config.input.credentials.clone())?; + let cert = tls_stream + .get_ref() + .sess + .get_peer_certificates() + .ok_or_else(|| { + RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented) + })?; + let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; + process_cred_ssp( + &mut tls_stream, + config.input.credentials.clone(), + server_public_key, + )?; if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { if let credssp::EarlyUserAuthResult::AccessDenied = @@ -199,3 +212,11 @@ fn run(config: Config) -> Result<(), RdpError> { pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { format!("{}:{}", socket_addr.ip(), socket_addr.port()) } + +pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { + let res = x509_parser::parse_x509_der(&cert[..]) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; + let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; + + Ok(public_key.data.to_vec()) +} diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index c6b5a606..ca05766f 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, hash::Hash, io}; +use std::{collections::HashMap, hash::Hash}; use num_derive::{FromPrimitive, ToPrimitive}; @@ -41,11 +41,3 @@ where pub enum CodecId { RemoteFx = 0x3, } - -pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { - let res = x509_parser::parse_x509_der(&cert[..]) - .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; - let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; - - Ok(public_key.data.to_vec()) -} From f9b5985dea616d3658554eb9200e27a209e73d71 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Thu, 26 Mar 2020 16:56:43 +0200 Subject: [PATCH 0043/1273] ironrdp_client: move connection sequence processing to lib --- ironrdp_client/src/active_session.rs | 17 +-- ironrdp_client/src/connection_sequence.rs | 113 +++++++++++++++- ironrdp_client/src/lib.rs | 8 +- ironrdp_client/src/main.rs | 143 ++++----------------- ironrdp_client/src/transport/connection.rs | 4 +- 5 files changed, 152 insertions(+), 133 deletions(-) diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs index 6e3df1f5..b7ba8ee3 100644 --- a/ironrdp_client/src/active_session.rs +++ b/ironrdp_client/src/active_session.rs @@ -15,7 +15,7 @@ use ironrdp::{ use log::warn; use crate::{ - connection_sequence::{DesktopSizes, StaticChannels}, + connection_sequence::ConnectionSequenceResult, transport::{Decoder, RdpTransport}, utils, InputConfig, RdpError, }; @@ -24,25 +24,22 @@ const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; pub fn process_active_stage( mut stream: impl io::BufRead + io::Write, - static_channels: StaticChannels, - global_channel_id: u16, - initiator_id: u16, - desktop_sizes: DesktopSizes, config: InputConfig, + connection_sequence_result: ConnectionSequenceResult, ) -> Result<(), RdpError> { let decoded_image = Arc::new(Mutex::new(DecodedImage::new( - u32::from(desktop_sizes.width), - u32::from(desktop_sizes.height), + u32::from(connection_sequence_result.desktop_sizes.width), + u32::from(connection_sequence_result.desktop_sizes.height), DESTINATION_PIXEL_FORMAT, ))); let mut x224_processor = x224::Processor::new( - utils::swap_hashmap_kv(static_channels), + utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), config.global_channel_name.as_str(), ); let mut fast_path_processor = fast_path::ProcessorBuilder { decoded_image, - global_channel_id, - initiator_id, + global_channel_id: connection_sequence_result.global_channel_id, + initiator_id: connection_sequence_result.initiator_id, } .build(); let mut rdp_transport = RdpTransport::default(); diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 06b16c43..9d2ed734 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -1,7 +1,13 @@ mod user_info; -use std::{collections::HashMap, io, iter, net::SocketAddr}; +use std::{ + collections::HashMap, + io::{self}, + iter, + net::SocketAddr, +}; +use bufstream::BufStream; use bytes::BytesMut; use ironrdp::{ nego, rdp, @@ -16,11 +22,11 @@ use ironrdp::{ }, PduParsing, }; -use log::{debug, info, trace}; +use log::{debug, info, trace, warn}; use ring::rand::SecureRandom; use sspi::internal::credssp; -use crate::{transport::*, InputConfig, RdpError}; +use crate::{transport::*, InputConfig, RdpError, BUF_STREAM_SIZE}; pub type StaticChannels = HashMap; @@ -29,6 +35,107 @@ pub struct DesktopSizes { pub height: u16, } +pub struct ConnectionSequenceResult { + pub desktop_sizes: DesktopSizes, + pub joined_static_channels: StaticChannels, + pub global_channel_id: u16, + pub initiator_id: u16, +} + +pub struct UpgradedStream +where + S: io::Read + io::Write, +{ + pub stream: S, + pub server_public_key: Vec, +} + +pub fn process_connection_sequence( + stream: S, + routing_addr: &SocketAddr, + config: &InputConfig, + upgrade_stream: F, +) -> Result<(ConnectionSequenceResult, BufStream), RdpError> +where + S: io::Read + io::Write, + US: io::Read + io::Write, + F: FnOnce(S) -> Result, RdpError>, +{ + let mut stream = BufStream::new(stream); + + let (mut transport, selected_protocol) = connect( + &mut stream, + config.security_protocol, + config.credentials.username.clone(), + )?; + + let stream = stream.into_inner().map_err(io::Error::from)?; + let UpgradedStream { + stream, + server_public_key, + } = upgrade_stream(stream)?; + let mut stream = BufStream::with_capacities(BUF_STREAM_SIZE, BUF_STREAM_SIZE, stream); + + if selected_protocol.contains(nego::SecurityProtocol::HYBRID) + || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) + { + process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key)?; + + if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { + if let credssp::EarlyUserAuthResult::AccessDenied = + EarlyUserAuthResult::read(&mut stream)? + { + return Err(RdpError::AccessDenied); + } + } + } + + let static_channels = + process_mcs_connect(&mut stream, &mut transport, &config, selected_protocol)?; + + let mut transport = McsTransport::new(transport); + let joined_static_channels = + process_mcs(&mut stream, &mut transport, static_channels, &config)?; + debug!("Joined static active_session: {:?}", joined_static_channels); + + let global_channel_id = *joined_static_channels + .get(config.global_channel_name.as_str()) + .expect("global channel must be added"); + let initiator_id = *joined_static_channels + .get(config.user_channel_name.as_str()) + .expect("user channel must be added"); + + let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); + send_client_info(&mut stream, &mut transport, &config, &routing_addr)?; + + match process_server_license_exchange(&mut stream, &mut transport, &config, global_channel_id) { + Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( + rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), + ))) => { + warn!("The server has returned STATUS_VALID_CLIENT unexpectedly"); + } + Err(error) => return Err(error), + Ok(_) => (), + } + + let mut transport = + ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); + let desktop_sizes = process_capability_sets(&mut stream, &mut transport, &config)?; + + let mut transport = ShareDataHeaderTransport::new(transport); + process_finalization(&mut stream, &mut transport, initiator_id)?; + + Ok(( + ConnectionSequenceResult { + desktop_sizes, + joined_static_channels, + global_channel_id, + initiator_id, + }, + stream, + )) +} + pub fn process_cred_ssp( mut tls_stream: impl io::Read + io::Write, credentials: sspi::AuthIdentity, diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs index d10bcac8..efc0ab1e 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp_client/src/lib.rs @@ -5,10 +5,16 @@ pub mod transport; mod errors; mod utils; -pub use errors::RdpError; +pub use self::{ + active_session::process_active_stage, + connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}, + errors::RdpError, +}; use ironrdp::{gcc, nego}; +const BUF_STREAM_SIZE: usize = 32 * 1024; + pub struct InputConfig { pub credentials: sspi::AuthIdentity, pub security_protocol: nego::SecurityProtocol, diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index aba4ce2a..f827a576 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -6,26 +6,11 @@ use std::{ sync::Arc, }; -use ironrdp::{nego, rdp}; -use log::{debug, error, warn}; +use log::error; use rustls::Session; -use sspi::internal::credssp; use self::config::Config; -use ironrdp_client::{ - active_session::process_active_stage, - connection_sequence::{ - process_capability_sets, process_cred_ssp, process_finalization, process_mcs, - process_mcs_connect, process_server_license_exchange, send_client_info, - }, - transport::{ - connect, EarlyUserAuthResult, McsTransport, SendDataContextTransport, - ShareControlHeaderTransport, ShareDataHeaderTransport, - }, - RdpError, -}; - -const BUF_READER_SIZE: usize = 32 * 1024; +use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; mod danger { pub struct NoCertificateVerification {} @@ -92,121 +77,45 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { fn run(config: Config) -> Result<(), RdpError> { let addr = socket_addr_to_string(config.routing_addr); - let stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; - let mut stream = bufstream::BufStream::new(stream); + let mut stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; - let (mut transport, selected_protocol) = connect( + let (connection_sequence_result, mut stream) = process_connection_sequence( &mut stream, - config.input.security_protocol, - config.input.credentials.username.clone(), + &config.routing_addr, + &config.input, + establish_tls, )?; - let mut stream = stream.into_inner().map_err(io::Error::from)?; + process_active_stage(&mut stream, config.input, connection_sequence_result)?; + Ok(()) +} + +fn establish_tls( + stream: impl io::Read + io::Write, +) -> Result, RdpError> { let mut client_config = rustls::ClientConfig::default(); + client_config .dangerous() .set_certificate_verifier(Arc::new(danger::NoCertificateVerification {})); let config_ref = Arc::new(client_config); let dns_name = webpki::DNSNameRef::try_from_ascii_str("stub_string").unwrap(); - let mut tls_session = rustls::ClientSession::new(&config_ref, dns_name); - - let mut tls_stream = rustls::Stream::new(&mut tls_session, &mut stream); + let tls_session = rustls::ClientSession::new(&config_ref, dns_name); + let mut tls_stream = rustls::StreamOwned::new(tls_session, stream); // handshake tls_stream.flush()?; - let mut tls_stream = - bufstream::BufStream::with_capacities(BUF_READER_SIZE, BUF_READER_SIZE, tls_stream); + let cert = tls_stream + .sess + .get_peer_certificates() + .ok_or_else(|| RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented))?; + let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; - if selected_protocol.contains(nego::SecurityProtocol::HYBRID) - || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) - { - let cert = tls_stream - .get_ref() - .sess - .get_peer_certificates() - .ok_or_else(|| { - RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented) - })?; - let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; - process_cred_ssp( - &mut tls_stream, - config.input.credentials.clone(), - server_public_key, - )?; - - if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - if let credssp::EarlyUserAuthResult::AccessDenied = - EarlyUserAuthResult::read(&mut tls_stream)? - { - return Err(RdpError::AccessDenied); - } - } - } - - let static_channels = process_mcs_connect( - &mut tls_stream, - &mut transport, - &config.input, - selected_protocol, - )?; - - let mut transport = McsTransport::new(transport); - let joined_static_channels = process_mcs( - &mut tls_stream, - &mut transport, - static_channels, - &config.input, - )?; - debug!("Joined static active_session: {:?}", joined_static_channels); - - let global_channel_id = *joined_static_channels - .get(config.input.global_channel_name.as_str()) - .expect("global channel must be added"); - let initiator_id = *joined_static_channels - .get(config.input.user_channel_name.as_str()) - .expect("user channel must be added"); - - let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); - send_client_info( - &mut tls_stream, - &mut transport, - &config.input, - &config.routing_addr, - )?; - - match process_server_license_exchange( - &mut tls_stream, - &mut transport, - &config.input, - global_channel_id, - ) { - Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( - rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), - ))) => { - warn!("The server has returned STATUS_VALID_CLIENT unexpectedly"); - } - Err(error) => return Err(error), - Ok(_) => (), - } - - let mut transport = - ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let desktop_sizes = process_capability_sets(&mut tls_stream, &mut transport, &config.input)?; - - let mut transport = ShareDataHeaderTransport::new(transport); - process_finalization(&mut tls_stream, &mut transport, initiator_id)?; - - process_active_stage( - &mut tls_stream, - joined_static_channels, - global_channel_id, - initiator_id, - desktop_sizes, - config.input, - )?; - - Ok(()) + Ok(UpgradedStream { + stream: tls_stream, + server_public_key, + }) } pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index c672d66c..99583a7b 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -71,7 +71,7 @@ impl EarlyUserAuthResult { } pub fn connect( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, security_protocol: nego::SecurityProtocol, username: String, ) -> Result<(DataTransport, nego::SecurityProtocol), RdpError> { @@ -87,7 +87,7 @@ pub fn connect( } fn process_negotiation( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read + io::Write, nego_data: Option, protocol: nego::SecurityProtocol, flags: nego::RequestFlags, From 5a984856fbbcd5ce8086eeaa5feb74b7d4541bee Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Fri, 27 Mar 2020 13:07:20 +0200 Subject: [PATCH 0044/1273] ironrdp: implement parsing of the Preconnection PDU --- ironrdp/src/lib.rs | 2 + ironrdp/src/preconnection.rs | 248 +++++++++++++++++++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100644 ironrdp/src/preconnection.rs diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 8ca1a0e2..c6eef1b4 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -7,6 +7,7 @@ pub mod rdp; mod basic_output; mod ber; mod per; +mod preconnection; mod utils; mod x224; @@ -14,6 +15,7 @@ pub use crate::{ basic_output::{fast_path, surface_commands}, mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}, nego::*, + preconnection::{PreconnectionPdu, PreconnectionPduError}, rdp::{ vc::dvc, CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, ServerDemandActive, ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs new file mode 100644 index 00000000..6a2b8225 --- /dev/null +++ b/ironrdp/src/preconnection.rs @@ -0,0 +1,248 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{ + impl_from_error, + utils::{self, SplitTo}, + PduBufferParsing, +}; + +const PRECONNECTION_PDU_V1_SIZE: usize = 16; + +#[derive(Debug, Clone, PartialEq)] +pub struct PreconnectionPdu { + pub id: u32, + pub payload: Option, +} + +impl PreconnectionPdu {} + +impl PduBufferParsing<'_> for PreconnectionPdu { + type Error = PreconnectionPduError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let size = buffer.read_u32::()? as usize; + + let expected = size + .checked_sub(4) + .ok_or(PreconnectionPduError::InvalidDataLength { + expected: PRECONNECTION_PDU_V1_SIZE, + actual: size, + })?; + + if buffer.len() < expected { + return Err(PreconnectionPduError::InvalidDataLength { + expected, + actual: buffer.len(), + }); + } + let mut buffer = buffer.split_to(expected); + + buffer.read_u32::()?; // flags + let version = buffer.read_u32::()?; + let version = + Version::from_u32(version).ok_or(PreconnectionPduError::UnexpectedVersion(version))?; + + let id = buffer.read_u32::()?; + + let payload = match version { + Version::V1 => None, + Version::V2 => { + let size = buffer.read_u16::()? as usize; + let payload_bytes = buffer.split_to(size * 2); + let payload = utils::bytes_to_utf16_string(payload_bytes) + .trim_end_matches('\0') + .into(); + + Some(payload) + } + }; + + Ok(Self { id, payload }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + let size = self.buffer_length(); + + buffer.write_u32::(size as u32)?; + buffer.write_u32::(0)?; // flags + buffer.write_u32::(Version::from(self).to_u32().unwrap())?; + buffer.write_u32::(self.id)?; + + if let Some(ref payload) = self.payload { + buffer.write_u16::(payload.len() as u16 + 1)?; // + null terminator + utils::write_string_with_null_terminator( + buffer, + payload.as_str(), + utils::CharacterSet::Unicode, + )?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + PRECONNECTION_PDU_V1_SIZE + + self + .payload + .as_ref() + .map(|p| 2 + (p.len() + 1) * 2) + .unwrap_or(0) + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +enum Version { + V1 = 0x1, + V2 = 0x2, +} + +impl From<&PreconnectionPdu> for Version { + fn from(p: &PreconnectionPdu) -> Self { + if p.payload.is_some() { + Self::V2 + } else { + Self::V1 + } + } +} + +#[derive(Debug, Fail)] +pub enum PreconnectionPduError { + #[fail(display = "IO error: {}", _0)] + IoError(#[fail(cause)] io::Error), + #[fail( + display = "Input buffer is shorter then the data length: {} < {}", + actual, expected + )] + InvalidDataLength { expected: usize, actual: usize }, + #[fail(display = "Unexpected version: {}", _0)] + UnexpectedVersion(u32), +} + +impl_from_error!( + io::Error, + PreconnectionPduError, + PreconnectionPduError::IoError +); + +#[cfg(test)] +mod tests { + use lazy_static::lazy_static; + + use super::*; + + const PRECONNECTION_PDU_V1_EMPTY_SIZE_BUFFER: [u8; 16] = [ + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0x00 = 0 bytes + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 + 0x01, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 1 + 0xeb, 0x99, 0xc6, 0xee, // -> RDP_PRECONNECTION_PDU_V1::Id = 0xEEC699EB = 4005992939 + ]; + const PRECONNECTION_PDU_V1_LARGE_DATA_LENGTH_BUFFER: [u8; 16] = [ + 0xff, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0xff + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 + 0x01, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 1 + 0xeb, 0x99, 0xc6, 0xee, // -> RDP_PRECONNECTION_PDU_V1::Id = 0xEEC699EB = 4005992939 + ]; + const PRECONNECTION_PDU_V1_BUFFER: [u8; 16] = [ + 0x10, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0x10 = 16 bytes + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 + 0x01, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 1 + 0xeb, 0x99, 0xc6, 0xee, // -> RDP_PRECONNECTION_PDU_V1::Id = 0xEEC699EB = 4005992939 + ]; + const PRECONNECTION_PDU_V2_BUFFER: [u8; 32] = [ + 0x20, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0x20 = 32 bytes + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 + 0x02, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 2 + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Id = 0 + 0x07, 0x00, // -> RDP_PRECONNECTION_PDU_V2::cchPCB = 0x7 = 7 characters + 0x54, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00, 0x56, 0x00, 0x4d, 0x00, 0x00, + 0x00, // -> RDP_PRECONNECTION_PDU_V2::wszPCB -> "TestVM" (including null terminator) + ]; + + const PRECONNECTION_PDU_V1: PreconnectionPdu = PreconnectionPdu { + id: 4_005_992_939, + payload: None, + }; + + lazy_static! { + static ref PRECONNECTION_PDU_V2: PreconnectionPdu = PreconnectionPdu { + id: 0, + payload: Some(String::from("TestVM")), + }; + } + + #[test] + fn from_buffer_for_preconnection_pdu_returns_error_on_empty_size() { + assert!( + PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V1_EMPTY_SIZE_BUFFER.as_ref()).is_err() + ); + } + + #[test] + fn from_buffer_for_preconnection_pdu_returns_error_on_data_length_greater_then_available_data() + { + assert!(PreconnectionPdu::from_buffer( + PRECONNECTION_PDU_V1_LARGE_DATA_LENGTH_BUFFER.as_ref() + ) + .is_err()); + } + + #[test] + fn from_buffer_correctly_parses_preconnection_pdu_v1() { + assert_eq!( + PRECONNECTION_PDU_V1, + PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V1_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_preconnection_pdu_v1() { + let expected = PRECONNECTION_PDU_V1_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + PRECONNECTION_PDU_V1 + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_preconnection_pdu_v1() { + assert_eq!( + PRECONNECTION_PDU_V1_BUFFER.len(), + PRECONNECTION_PDU_V1.buffer_length() + ); + } + + #[test] + fn from_buffer_correctly_parses_preconnection_pdu_v2() { + assert_eq!( + *PRECONNECTION_PDU_V2, + PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V2_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_preconnection_pdu_v2() { + let expected = PRECONNECTION_PDU_V2_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + PRECONNECTION_PDU_V2 + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_preconnection_pdu_v2() { + assert_eq!( + PRECONNECTION_PDU_V2_BUFFER.len(), + PRECONNECTION_PDU_V2.buffer_length() + ); + } +} From e2bc1eedc06a926b3a0a9950ddf2a0045c9650d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Duquette?= Date: Fri, 27 Mar 2020 15:54:26 -0400 Subject: [PATCH 0045/1273] Fuzz PreconnectionPdu parsing --- ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs index 1de40c3c..c3d65a73 100644 --- a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs @@ -15,6 +15,7 @@ fuzz_target!(|data: &[u8]| { let _ = ClientInfoPdu::from_buffer(data); let _ = CapabilitySet::from_buffer(data); let _ = ShareControlHeader::from_buffer(data); + let _ = PreconnectionPdu::from_buffer(data); let _ = gcc::ClientGccBlocks::from_buffer(data); let _ = gcc::ServerGccBlocks::from_buffer(data); From 509a81b4fe029b87bf2d30b4c59cab5d7938406f Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 30 Mar 2020 13:51:44 +0300 Subject: [PATCH 0046/1273] ironrdp: fix Preconnection PDU to check the payload size --- ironrdp/src/preconnection.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index 6a2b8225..3f138ddb 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -53,6 +53,13 @@ impl PduBufferParsing<'_> for PreconnectionPdu { Version::V1 => None, Version::V2 => { let size = buffer.read_u16::()? as usize; + if buffer.len() < size * 2 { + return Err(PreconnectionPduError::InvalidDataLength { + expected: size * 2, + actual: buffer.len(), + }); + } + let payload_bytes = buffer.split_to(size * 2); let payload = utils::bytes_to_utf16_string(payload_bytes) .trim_end_matches('\0') @@ -154,6 +161,15 @@ mod tests { 0x01, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 1 0xeb, 0x99, 0xc6, 0xee, // -> RDP_PRECONNECTION_PDU_V1::Id = 0xEEC699EB = 4005992939 ]; + const PRECONNECTION_PDU_V2_LARGE_PAYLOAD_SIZE_BUFFER: [u8; 32] = [ + 0x20, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0x20 = 32 bytes + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 + 0x02, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Version = 2 + 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Id = 0 + 0xff, 0x00, // -> RDP_PRECONNECTION_PDU_V2::cchPCB = 0xff + 0x54, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00, 0x56, 0x00, 0x4d, 0x00, 0x00, + 0x00, // -> RDP_PRECONNECTION_PDU_V2::wszPCB -> "TestVM" (including null terminator) + ]; const PRECONNECTION_PDU_V2_BUFFER: [u8; 32] = [ 0x20, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::cbSize = 0x20 = 32 bytes 0x00, 0x00, 0x00, 0x00, // -> RDP_PRECONNECTION_PDU_V1::Flags = 0 @@ -219,6 +235,15 @@ mod tests { ); } + #[test] + fn from_buffer_for_preconnection_pdu_v2_returns_error_on_payload_size_greater_then_available_data( + ) { + assert!(PreconnectionPdu::from_buffer( + PRECONNECTION_PDU_V2_LARGE_PAYLOAD_SIZE_BUFFER.as_ref() + ) + .is_err()); + } + #[test] fn from_buffer_correctly_parses_preconnection_pdu_v2() { assert_eq!( From c41bc76b8ffb7ec60156c050e147d971e3863147 Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 30 Mar 2020 15:03:20 +0200 Subject: [PATCH 0047/1273] ironrdp: implement Server Set Error Info PDU with detailed description --- ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs | 1 + ironrdp/src/rdp.rs | 13 + ironrdp/src/rdp/headers.rs | 13 +- ironrdp/src/rdp/server_error_info.rs | 455 ++++++++++++++++++++++++++ 4 files changed, 480 insertions(+), 2 deletions(-) create mode 100644 ironrdp/src/rdp/server_error_info.rs diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs index c3d65a73..9e595ed4 100644 --- a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs @@ -16,6 +16,7 @@ fuzz_target!(|data: &[u8]| { let _ = CapabilitySet::from_buffer(data); let _ = ShareControlHeader::from_buffer(data); let _ = PreconnectionPdu::from_buffer(data); + let _ = ServerSetErrorInfoPdu::from_buffer(data); let _ = gcc::ClientGccBlocks::from_buffer(data); let _ = gcc::ServerGccBlocks::from_buffer(data); diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index dcc3c475..5e11aaa5 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -9,6 +9,7 @@ pub mod vc; mod client_info; mod finalization_messages; mod headers; +mod server_error_info; pub use self::{ capability_sets::{ @@ -28,6 +29,11 @@ pub use self::{ ShareControlPdu, ShareControlPduType, ShareDataHeader, ShareDataPdu, ShareDataPduType, StreamPriority, BASIC_SECURITY_HEADER_SIZE, }, + server_error_info::{ + ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, + ProtocolIndependentLicensingCode, RdpSpecificCode, ServerSetErrorInfoError, + ServerSetErrorInfoPdu, + }, }; use std::io; @@ -106,6 +112,8 @@ pub enum RdpError { UnexpectedShareDataPdu(ShareDataPduType), #[fail(display = "Save session info PDU error: {}", _0)] SaveSessionInfoError(session_info::SessionError), + #[fail(display = "Server set error info PDU error: {}", _0)] + ServerSetErrorInfoError(ServerSetErrorInfoError), } impl_from_error!(io::Error, RdpError, RdpError::IOError); @@ -122,6 +130,11 @@ impl_from_error!( RdpError, RdpError::SaveSessionInfoError ); +impl_from_error!( + ServerSetErrorInfoError, + RdpError, + RdpError::ServerSetErrorInfoError +); impl From for io::Error { fn from(e: RdpError) -> io::Error { diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index c8539d4c..acdddb47 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -7,7 +7,7 @@ use num_traits::{FromPrimitive, ToPrimitive}; use super::{ client_info, ClientConfirmActive, ControlPdu, MonitorLayoutPdu, RdpError, ServerDemandActive, - SynchronizePdu, + ServerSetErrorInfoPdu, SynchronizePdu, }; use crate::{ codecs::rfx::FrameAcknowledgePdu, @@ -262,6 +262,7 @@ pub enum ShareDataPdu { MonitorLayout(MonitorLayoutPdu), SaveSessionInfo(SaveSessionInfoPdu), FrameAcknowledge(FrameAcknowledgePdu), + ServerSetErrorInfo(ServerSetErrorInfoPdu), } impl ShareDataPdu { @@ -274,6 +275,7 @@ impl ShareDataPdu { ShareDataPdu::MonitorLayout(_) => "Monitor Layout PDU", ShareDataPdu::SaveSessionInfo(_) => "Save session info PDU", ShareDataPdu::FrameAcknowledge(_) => "Frame Acknowledge PDU", + ShareDataPdu::ServerSetErrorInfo(_) => "Server Set Error Info PDU", } } } @@ -305,6 +307,9 @@ impl ShareDataPdu { ShareDataPduType::FrameAcknowledgePdu => Ok(ShareDataPdu::FrameAcknowledge( FrameAcknowledgePdu::from_buffer(&mut stream)?, )), + ShareDataPduType::SetErrorInfoPdu => Ok(ShareDataPdu::ServerSetErrorInfo( + ServerSetErrorInfoPdu::from_buffer(&mut stream)?, + )), ShareDataPduType::Update | ShareDataPduType::Pointer | ShareDataPduType::Input @@ -318,7 +323,6 @@ impl ShareDataPdu { | ShareDataPduType::BitmapCacheErrorPdu | ShareDataPduType::SetKeyboardImeStatus | ShareDataPduType::OffscreenCacheErrorPdu - | ShareDataPduType::SetErrorInfoPdu | ShareDataPduType::DrawNineGridErrorPdu | ShareDataPduType::DrawGdiPusErrorPdu | ShareDataPduType::ArcStatusPdu @@ -339,6 +343,9 @@ impl ShareDataPdu { ShareDataPdu::FrameAcknowledge(pdu) => { pdu.to_buffer(&mut stream).map_err(RdpError::from) } + ShareDataPdu::ServerSetErrorInfo(pdu) => { + pdu.to_buffer(&mut stream).map_err(RdpError::from) + } } } pub fn buffer_length(&self) -> usize { @@ -349,6 +356,7 @@ impl ShareDataPdu { ShareDataPdu::MonitorLayout(pdu) => pdu.buffer_length(), ShareDataPdu::SaveSessionInfo(pdu) => pdu.buffer_length(), ShareDataPdu::FrameAcknowledge(pdu) => pdu.buffer_length(), + ShareDataPdu::ServerSetErrorInfo(pdu) => pdu.buffer_length(), } } pub fn share_header_type(&self) -> ShareDataPduType { @@ -360,6 +368,7 @@ impl ShareDataPdu { ShareDataPdu::MonitorLayout(_) => ShareDataPduType::MonitorLayoutPdu, ShareDataPdu::SaveSessionInfo(_) => ShareDataPduType::SaveSessionInfo, ShareDataPdu::FrameAcknowledge(_) => ShareDataPduType::FrameAcknowledgePdu, + ShareDataPdu::ServerSetErrorInfo(_) => ShareDataPduType::SetErrorInfoPdu, } } } diff --git a/ironrdp/src/rdp/server_error_info.rs b/ironrdp/src/rdp/server_error_info.rs new file mode 100644 index 00000000..6642c1f0 --- /dev/null +++ b/ironrdp/src/rdp/server_error_info.rs @@ -0,0 +1,455 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct ServerSetErrorInfoPdu(pub ErrorInfo); + +impl PduParsing for ServerSetErrorInfoPdu { + type Error = ServerSetErrorInfoError; + + fn from_buffer(mut buffer: impl io::Read) -> Result { + let error_info = buffer.read_u32::()?; + let error_info = ErrorInfo::from_u32(error_info) + .ok_or(ServerSetErrorInfoError::UnexpectedInfoCode(error_info))?; + + Ok(Self(error_info)) + } + + fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { + buffer.write_u32::(self.0.to_u32().unwrap())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum ErrorInfo { + ProtocolIndependentCode(ProtocolIndependentCode), + ProtocolIndependentLicensingCode(ProtocolIndependentLicensingCode), + ProtocolIndependentConnectionBrokerCode(ProtocolIndependentConnectionBrokerCode), + RdpSpecificCode(RdpSpecificCode), +} + +impl ErrorInfo { + pub fn description(self) -> String { + match self { + Self::ProtocolIndependentCode(c) => { + format!("[Protocol independent error] {}", c.description()) + } + Self::ProtocolIndependentLicensingCode(c) => { + format!("[Protocol independent licensing error] {}", c.description()) + } + Self::ProtocolIndependentConnectionBrokerCode(c) => format!( + "[Protocol independent connection broker error] {}", + c.description() + ), + Self::RdpSpecificCode(c) => format!("[RDP specific code]: {}", c.description()), + } + } +} + +impl FromPrimitive for ErrorInfo { + fn from_i64(n: i64) -> Option { + if let Some(v) = ProtocolIndependentCode::from_i64(n) { + Some(Self::ProtocolIndependentCode(v)) + } else if let Some(v) = ProtocolIndependentLicensingCode::from_i64(n) { + Some(Self::ProtocolIndependentLicensingCode(v)) + } else if let Some(v) = ProtocolIndependentConnectionBrokerCode::from_i64(n) { + Some(Self::ProtocolIndependentConnectionBrokerCode(v)) + } else { + RdpSpecificCode::from_i64(n).map(Self::RdpSpecificCode) + } + } + + fn from_u64(n: u64) -> Option { + if let Some(v) = ProtocolIndependentCode::from_u64(n) { + Some(Self::ProtocolIndependentCode(v)) + } else if let Some(v) = ProtocolIndependentLicensingCode::from_u64(n) { + Some(Self::ProtocolIndependentLicensingCode(v)) + } else if let Some(v) = ProtocolIndependentConnectionBrokerCode::from_u64(n) { + Some(Self::ProtocolIndependentConnectionBrokerCode(v)) + } else { + RdpSpecificCode::from_u64(n).map(Self::RdpSpecificCode) + } + } +} + +impl ToPrimitive for ErrorInfo { + fn to_i64(&self) -> Option { + match self { + Self::ProtocolIndependentCode(c) => c.to_i64(), + Self::ProtocolIndependentLicensingCode(c) => c.to_i64(), + Self::ProtocolIndependentConnectionBrokerCode(c) => c.to_i64(), + Self::RdpSpecificCode(c) => c.to_i64(), + } + } + + fn to_u64(&self) -> Option { + match self { + Self::ProtocolIndependentCode(c) => c.to_u64(), + Self::ProtocolIndependentLicensingCode(c) => c.to_u64(), + Self::ProtocolIndependentConnectionBrokerCode(c) => c.to_u64(), + Self::RdpSpecificCode(c) => c.to_u64(), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ProtocolIndependentCode { + None = 0x0000_0000, + RpcInitiatedDisconnect = 0x0000_0001, + RpcInitiatedLogoff = 0x0000_0002, + IdleTimeout = 0x0000_0003, + LogonTimeout = 0x0000_0004, + DisconnectedByOtherconnection = 0x0000_0005, + OutOfMemory = 0x0000_0006, + ServerDeniedConnection = 0x0000_0007, + ServerInsufficientPrivileges = 0x0000_0009, + ServerFreshCredentialsRequired = 0x0000_000A, + RpcInitiatedDisconnectByuser = 0x0000_000B, + LogoffByUser = 0x0000_000C, + CloseStackOnDriverNotReady = 0x0000_000F, + ServerDwmCrash = 0x0000_0010, + CloseStackOnDriverFailure = 0x0000_0011, + CloseStackOnDriverIfaceFailure = 0x0000_0012, + ServerWinlogonCrash = 0x0000_0017, + ServerCsrssCrash = 0x0000_0018, +} + +impl ProtocolIndependentCode { + pub fn description(&self) -> &str { + match self { + Self::None => "No error has occurred", + Self::RpcInitiatedDisconnect => "The disconnection was initiated by an administrative tool on the server in another session", + Self::RpcInitiatedLogoff => "The disconnection was due to a forced logoff initiated by an administrative tool on the server in another session", + Self::IdleTimeout => "The idle session limit timer on the server has elapsed", + Self::LogonTimeout => "The active session limit timer on the server has elapsed", + Self::DisconnectedByOtherconnection => "Another user connected to the server, forcing the disconnection of the current connection", + Self::OutOfMemory => "The server ran out of available memory resources", + Self::ServerDeniedConnection => "The server denied the connection", + Self::ServerInsufficientPrivileges => "The user cannot connect to the server due to insufficient access privileges", + Self::ServerFreshCredentialsRequired => "The server does not accept saved user credentials and requires that the user enter their credentials for each connection", + Self::RpcInitiatedDisconnectByuser => "The disconnection was initiated by an administrative tool on the server running in the user’s session", + Self::LogoffByUser => "The disconnection was initiated by the user logging off his or her session on the server", + Self::CloseStackOnDriverNotReady => "The display driver in the remote session did not report any status within the time allotted for startup", + Self::ServerDwmCrash => "The DWM process running in the remote session terminated unexpectedly", + Self::CloseStackOnDriverFailure => "The display driver in the remote session was unable to complete all the tasks required for startup", + Self::CloseStackOnDriverIfaceFailure => "The display driver in the remote session started up successfully, but due to internal failures was not usable by the remoting stack", + Self::ServerWinlogonCrash => "The Winlogon process running in the remote session terminated unexpectedly", + Self::ServerCsrssCrash => "The CSRSS process running in the remote session terminated unexpectedly", + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ProtocolIndependentLicensingCode { + Internal = 0x0000_0100, + NoLicenseServer = 0x0000_0101, + NoLicense = 0x0000_0102, + BadClientMsg = 0x0000_0103, + HwidDoesntMatchLicense = 0x0000_0104, + BadClientLicense = 0x0000_0105, + CantFinishProtocol = 0x0000_0106, + ClientEndedProtocol = 0x0000_0107, + BadClientEncryption = 0x0000_0108, + CantUpgradeLicense = 0x0000_0109, + NoRemoteConnections = 0x0000_010A, +} + +impl ProtocolIndependentLicensingCode { + pub fn description(&self) -> &str { + match self { + Self::Internal => { + "An internal error has occurred in the Terminal Services licensing component" + } + Self::NoLicenseServer => { + "A Remote Desktop License Server could not be found to provide a license" + } + Self::NoLicense => { + "There are no Client Access Licenses available for the target remote computer" + } + Self::BadClientMsg => { + "The remote computer received an invalid licensing message from the client" + } + Self::HwidDoesntMatchLicense => { + "The Client Access License stored by the client has been modified" + } + Self::BadClientLicense => { + "The Client Access License stored by the client is in an invalid format" + } + Self::CantFinishProtocol => { + "Network problems have caused the licensing protocol to be terminated" + } + Self::ClientEndedProtocol => "The client prematurely ended the licensing protocol", + Self::BadClientEncryption => "A licensing message was incorrectly encrypted", + Self::CantUpgradeLicense => { + "The Client Access License stored by the client could not be upgraded or renewed" + } + Self::NoRemoteConnections => { + "The remote computer is not licensed to accept remote connections" + } + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ProtocolIndependentConnectionBrokerCode { + DestinationNotFound = 0x0000_0400, + LoadingDestination = 0x0000_0402, + RedirectingToDestination = 0x0000_0404, + SessionOnlineVmWake = 0x0000_0405, + SessionOnlineVmBoot = 0x0000_0406, + SessionOnlineVmNoDns = 0x0000_0407, + DestinationPoolNotFree = 0x0000_0408, + ConnectionCancelled = 0x0000_0409, + ConnectionErrorInvalidSettings = 0x0000_0410, + SessionOnlineVmBootTimeout = 0x0000_0411, + SessionOnlineVmSessmonFailed = 0x0000_0412, +} + +impl ProtocolIndependentConnectionBrokerCode { + pub fn description(&self) -> &str { + match self { + Self::DestinationNotFound => "The target endpoint could not be found", + Self::LoadingDestination => "The target endpoint to which the client is being redirected is disconnecting from the Connection Broker", + Self::RedirectingToDestination => "An error occurred while the connection was being redirected to the target endpoint", + Self::SessionOnlineVmWake => "An error occurred while the target endpoint (a virtual machine) was being awakened", + Self::SessionOnlineVmBoot => "An error occurred while the target endpoint (a virtual machine) was being started", + Self::SessionOnlineVmNoDns => "The IP address of the target endpoint (a virtual machine) cannot be determined", + Self::DestinationPoolNotFree => "There are no available endpoints in the pool managed by the Connection Broker", + Self::ConnectionCancelled => "Processing of the connection has been canceled", + Self::ConnectionErrorInvalidSettings => "The settings contained in the routingToken field of the X.224 Connection Request PDU cannot be validated", + Self::SessionOnlineVmBootTimeout => "A time-out occurred while the target endpoint (a virtual machine) was being started", + Self::SessionOnlineVmSessmonFailed => "A session monitoring error occurred while the target endpoint (a virtual machine) was being started", + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum RdpSpecificCode { + UnknownPduType2 = 0x0000_10C9, + UnknownPduType = 0x0000_10CA, + DataPdusEquence = 0x0000_10CB, + ControlPduSequence = 0x0000_10CD, + InvalidControlPduAction = 0x0000_10CE, + InvalidInputPduType = 0x0000_10CF, + InvalidInputPduMouse = 0x0000_10D0, + InvalidRefreshRectPdu = 0x0000_10D1, + CreateUserDataFailed = 0x0000_10D2, + ConnectFailed = 0x0000_10D3, + ConfirmActiveWrongShareId = 0x0000_10D4, + ConfirmActiveWrongOriginator = 0x0000_10D5, + PersistentKeyPduBadLength = 0x0000_10DA, + PersistentKeyPduIllegalFirst = 0x0000_10DB, + PersistentKeyPduTooManyTotalKeys = 0x0000_10DC, + PersistentKeyPduTooManyCacheKeys = 0x0000_10DD, + InputPduBadLength = 0x0000_10DE, + BitmapCacheErrorPduBadLength = 0x0000_10DF, + SecurityDataTooShort = 0x0000_10E0, + VcHannelDataTooShort = 0x0000_10E1, + ShareDataTooShort = 0x0000_10E2, + BadSupressOutputPdu = 0x0000_10E3, + ConfirmActivePduTooShort = 0x0000_10E5, + CapabilitySetTooSmall = 0x0000_10E7, + CapabilitySetTooLarge = 0x0000_10E8, + NoCursorCache = 0x0000_10E9, + BadCapabilities = 0x0000_10EA, + VirtualChannelDecompressionError = 0x0000_10EC, + InvalidVcCompressionType = 0x0000_10ED, + InvalidChannelId = 0x0000_10EF, + VirtualChannelsTooMany = 0x0000_10F0, + RemoteAppsNotEnabled = 0x0000_10F3, + CacheCapabilityNotSet = 0x0000_10F4, + BitmapCacheErrorPduBadLength2 = 0x0000_10F5, + OffscrCacheErrorPduBadLength = 0x0000_10F6, + DngCacheErrorPduBadLength = 0x0000_10F7, + GdiPlusPduBadLength = 0x0000_10F8, + SecurityDataTooShort2 = 0x0000_1111, + SecurityDataTooShort3 = 0x0000_1112, + SecurityDataTooShort4 = 0x0000_1113, + SecurityDataTooShort5 = 0x0000_1114, + SecurityDataTooShort6 = 0x0000_1115, + SecurityDataTooShort7 = 0x0000_1116, + SecurityDataTooShort8 = 0x0000_1117, + SecurityDataTooShort9 = 0x0000_1118, + SecurityDataTooShort10 = 0x0000_1119, + SecurityDataTooShort11 = 0x0000_111A, + SecurityDataTooShort12 = 0x0000_111B, + SecurityDataTooShort13 = 0x0000_111C, + SecurityDataTooShort14 = 0x0000_111D, + SecurityDataTooShort15 = 0x0000_111E, + SecurityDataTooShort16 = 0x0000_111F, + SecurityDataTooShort17 = 0x0000_1120, + SecurityDataTooShort18 = 0x0000_1121, + SecurityDataTooShort19 = 0x0000_1122, + SecurityDataTooShort20 = 0x0000_1123, + SecurityDataTooShort21 = 0x0000_1124, + SecurityDataTooShort22 = 0x0000_1125, + SecurityDataTooShort23 = 0x0000_1126, + BadMonitorData = 0x0000_1129, + VcDecompressedReassembleFailed = 0x0000_112A, + VcDataTooLong = 0x0000_112B, + BadFrameAckData = 0x0000_112C, + GraphicsModeNotSupported = 0x0000_112D, + GraphicsSubsystemResetFailed = 0x0000_112E, + GraphicsSubsystemFailed = 0x0000_112F, + TimezoneKeyNameLengthTooShort = 0x0000_1130, + TimezoneKeyNameLengthTooLong = 0x0000_1131, + DynamicDstDisabledFieldMissing = 0x0000_1132, + VcDecodingError = 0x0000_1133, + VirtualDesktopTooLarge = 0x0000_1134, + MonitorGeometryValidationFailed = 0x0000_1135, + InvalidMonitorCount = 0x0000_1136, + UpdateSessionKeyFailed = 0x0000_1191, + DecryptFailed = 0x0000_1192, + EncryptFailed = 0x0000_1193, + EncPkgMismatch = 0x0000_1194, + DecryptFailed2 = 0x0000_1195, +} + +impl RdpSpecificCode { + pub fn description(&self) -> &str { + match self { + Self::UnknownPduType2 => "Unknown pduType2 field in a received Share Data Header", + Self::UnknownPduType => "Unknown pduType field in a received Share Control Header", + Self::DataPdusEquence => "An out-of-sequence Slow-Path Data PDU has been received", + Self::ControlPduSequence => "An out-of-sequence Slow-Path Non-Data PDU has been received", + Self::InvalidControlPduAction => "A Control PDU has been received with an invalid action field", + Self::InvalidInputPduType => "One of two possible errors: A Slow-Path Input Event has been received with an invalid messageType field; or A Fast-Path Input Event has been received with an invalid eventCode field", + Self::InvalidInputPduMouse => "One of two possible errors: A Slow-Path Mouse Event or Extended Mouse Event has been received with an invalid pointerFlags field; or A Fast-Path Mouse Event or Fast-Path Extended Mouse Event has been received with an invalid pointerFlags field", + Self::InvalidRefreshRectPdu => "An invalid Refresh Rect PDU has been received", + Self::CreateUserDataFailed => "The server failed to construct the GCC Conference Create Response user data", + Self::ConnectFailed => "Processing during the Channel Connection phase of the RDP Connection Sequence has failed", + Self::ConfirmActiveWrongShareId => "A Confirm Active PDU was received from the client with an invalid shareID field", + Self::ConfirmActiveWrongOriginator => "A Confirm Active PDU was received from the client with an invalid originatorID field", + Self::PersistentKeyPduBadLength => "There is not enough data to process a Persistent Key List PDU", + Self::PersistentKeyPduIllegalFirst => "A Persistent Key List PDU marked as PERSIST_PDU_FIRST (0x01) was received after the reception of a prior Persistent Key List PDU also marked as PERSIST_PDU_FIRST", + Self::PersistentKeyPduTooManyTotalKeys => "A Persistent Key List PDU was received which specified a total number of bitmap cache entries larger than 262144", + Self::PersistentKeyPduTooManyCacheKeys => "A Persistent Key List PDU was received which specified an invalid total number of keys for a bitmap cache (the number of entries that can be stored within each bitmap cache is specified in the Revision 1 or 2 Bitmap Cache Capability Set that is sent from client to server)", + Self::InputPduBadLength => "There is not enough data to process Input Event PDU Data or a Fast-Path Input Event PDU", + Self::BitmapCacheErrorPduBadLength => "There is not enough data to process the shareDataHeader, NumInfoBlocks, Pad1, and Pad2 fields of the Bitmap Cache Error PDU Data", + Self::SecurityDataTooShort => "One of two possible errors: The dataSignature field of the Fast-Path Input Event PDU does not contain enough data; or The fipsInformation and dataSignature fields of the Fast-Path Input Event PDU do not contain enough data", + Self::VcHannelDataTooShort => "One of two possible errors: There is not enough data in the Client Network Data to read the virtual channel configuration data; or There is not enough data to read a complete Channel PDU Header", + Self::ShareDataTooShort => "One of four possible errors: There is not enough data to process Control PDU Data; or There is not enough data to read a complete Share Control Header; or There is not enough data to read a complete Share Data Header of a Slow-Path Data PDU; or There is not enough data to process Font List PDU Data", + Self::BadSupressOutputPdu => "One of two possible errors: There is not enough data to process Suppress Output PDU Data; or The allowDisplayUpdates field of the Suppress Output PDU Data is invalid", + Self::ConfirmActivePduTooShort => "One of two possible errors: There is not enough data to read the shareControlHeader, shareID, originatorID, lengthSourceDescriptor, and lengthCombinedCapabilities fields of the Confirm Active PDU Data; or There is not enough data to read the sourceDescriptor, numberCapabilities, pad2Octets, and capabilitySets fields of the Confirm Active PDU Data", + Self::CapabilitySetTooSmall => "There is not enough data to read the capabilitySetType and the lengthCapability fields in a received Capability Set", + Self::CapabilitySetTooLarge => "A Capability Set has been received with a lengthCapability field that contains a value greater than the total length of the data received", + Self::NoCursorCache => "One of two possible errors: Both the colorPointerCacheSize and pointerCacheSize fields in the Pointer Capability Set are set to zero; or The pointerCacheSize field in the Pointer Capability Set is not present, and the colorPointerCacheSize field is set to zero", + Self::BadCapabilities => "The capabilities received from the client in the Confirm Active PDU were not accepted by the server", + Self::VirtualChannelDecompressionError => "An error occurred while using the bulk compressor to decompress a Virtual Channel PDU", + Self::InvalidVcCompressionType => "An invalid bulk compression package was specified in the flags field of the Channel PDU Header", + Self::InvalidChannelId => "An invalid MCS channel ID was specified in the mcsPdu field of the Virtual Channel PDU)", + Self::VirtualChannelsTooMany => "The client requested more than the maximum allowed 31 static virtual channels in the Client Network Data", + Self::RemoteAppsNotEnabled => "The INFO_RAIL flag (0x0000_8000) MUST be set in the flags field of the Info Packet as the session on the remote server can only host remote applications", + Self::CacheCapabilityNotSet => "The client sent a Persistent Key List PDU without including the prerequisite Revision 2 Bitmap Cache Capability Set in the Confirm Active PDU", + Self::BitmapCacheErrorPduBadLength2 => "The NumInfoBlocks field in the Bitmap Cache Error PDU Data is inconsistent with the amount of data in the Info field", + Self::OffscrCacheErrorPduBadLength => "There is not enough data to process an Offscreen Bitmap Cache Error PDU", + Self::DngCacheErrorPduBadLength => "There is not enough data to process a DrawNineGrid Cache Error PDU", + Self::GdiPlusPduBadLength => "There is not enough data to process a GDI+ Error PDU", + Self::SecurityDataTooShort2 => "There is not enough data to read a Basic Security Header", + Self::SecurityDataTooShort3 => "There is not enough data to read a Non-FIPS Security Header or FIPS Security Header", + Self::SecurityDataTooShort4 => "There is not enough data to read the basicSecurityHeader and length fields of the Security Exchange PDU Data", + Self::SecurityDataTooShort5 => "There is not enough data to read the CodePage, flags, cbDomain, cbUserName, cbPassword, cbAlternateShell, cbWorkingDir, Domain, UserName, Password, AlternateShell, and WorkingDir fields in the Info Packet", + Self::SecurityDataTooShort6 => "There is not enough data to read the CodePage, flags, cbDomain, cbUserName, cbPassword, cbAlternateShell, and cbWorkingDir fields in the Info Packet", + Self::SecurityDataTooShort7 => "There is not enough data to read the clientAddressFamily and cbClientAddress fields in the Extended Info Packet", + Self::SecurityDataTooShort8 => "There is not enough data to read the clientAddress field in the Extended Info Packet", + Self::SecurityDataTooShort9 => "There is not enough data to read the cbClientDir field in the Extended Info Packet", + Self::SecurityDataTooShort10 => "There is not enough data to read the clientDir field in the Extended Info Packet", + Self::SecurityDataTooShort11 => "There is not enough data to read the clientTimeZone field in the Extended Info Packet", + Self::SecurityDataTooShort12 => "There is not enough data to read the clientSessionId field in the Extended Info Packet", + Self::SecurityDataTooShort13 => "There is not enough data to read the performanceFlags field in the Extended Info Packet", + Self::SecurityDataTooShort14 => "There is not enough data to read the cbAutoReconnectCookie field in the Extended Info Packet", + Self::SecurityDataTooShort15 => "There is not enough data to read the autoReconnectCookie field in the Extended Info Packet", + Self::SecurityDataTooShort16 => "The cbAutoReconnectCookie field in the Extended Info Packet contains a value which is larger than the maximum allowed length of 128 bytes", + Self::SecurityDataTooShort17 => "There is not enough data to read the clientAddressFamily and cbClientAddress fields in the Extended Info Packet", + Self::SecurityDataTooShort18 => "There is not enough data to read the clientAddress field in the Extended Info Packet", + Self::SecurityDataTooShort19 => "There is not enough data to read the cbClientDir field in the Extended Info Packet", + Self::SecurityDataTooShort20 => "There is not enough data to read the clientDir field in the Extended Info Packet", + Self::SecurityDataTooShort21 => "There is not enough data to read the clientTimeZone field in the Extended Info Packet", + Self::SecurityDataTooShort22 => "There is not enough data to read the clientSessionId field in the Extended Info Packet", + Self::SecurityDataTooShort23 => "There is not enough data to read the Client Info PDU Data", + Self::BadMonitorData => "The number of TS_MONITOR_DEF structures present in the monitorDefArray field of the Client Monitor Data is less than the value specified in monitorCount field", + Self::VcDecompressedReassembleFailed => "The server-side decompression buffer is invalid, or the size of the decompressed VC data exceeds the chunking size specified in the Virtual Channel Capability Set", + Self::VcDataTooLong => "The size of a received Virtual Channel PDU exceeds the chunking size specified in the Virtual Channel Capability Set", + Self::BadFrameAckData => "There is not enough data to read a TS_FRAME_ACKNOWLEDGE_PDU", + Self::GraphicsModeNotSupported => "The graphics mode requested by the client is not supported by the server", + Self::GraphicsSubsystemResetFailed => "The server-side graphics subsystem failed to reset", + Self::GraphicsSubsystemFailed => "The server-side graphics subsystem is in an error state and unable to continue graphics encoding", + Self::TimezoneKeyNameLengthTooShort => "There is not enough data to read the cbDynamicDSTTimeZoneKeyName field in the Extended Info Packet", + Self::TimezoneKeyNameLengthTooLong => "The length reported in the cbDynamicDSTTimeZoneKeyName field of the Extended Info Packet is too long", + Self::DynamicDstDisabledFieldMissing => "The dynamicDaylightTimeDisabled field is not present in the Extended Info Packet", + Self::VcDecodingError => "An error occurred when processing dynamic virtual channel data", + Self::VirtualDesktopTooLarge => "The width or height of the virtual desktop defined by the monitor layout in the Client Monitor Data is larger than the maximum allowed value of 32,766", + Self::MonitorGeometryValidationFailed => "The monitor geometry defined by the Client Monitor Data is invalid", + Self::InvalidMonitorCount => "The monitorCount field in the Client Monitor Data is too large", + Self::UpdateSessionKeyFailed => "An attempt to update the session keys while using Standard RDP Security mechanisms failed", + Self::DecryptFailed => "One of two possible error conditions: Decryption using Standard RDP Security mechanisms failed; or Session key creation using Standard RDP Security mechanisms failed", + Self::EncryptFailed => "Encryption using Standard RDP Security mechanisms failed", + Self::EncPkgMismatch => "Failed to find a usable Encryption Method in the encryptionMethods field of the Client Security Data", + Self::DecryptFailed2 => "Unencrypted data was encountered in a protocol stream which is meant to be encrypted with Standard RDP Security mechanisms", + } + } +} + +#[derive(Debug, Fail)] +pub enum ServerSetErrorInfoError { + #[fail(display = "IO error: {}", _0)] + IoError(#[fail(cause)] io::Error), + #[fail(display = "Unexpected info code: {}", _0)] + UnexpectedInfoCode(u32), +} + +impl_from_error!( + io::Error, + ServerSetErrorInfoError, + ServerSetErrorInfoError::IoError +); + +#[cfg(test)] +mod tests { + use super::*; + + const SERVER_SET_ERROR_INFO_BUFFER: [u8; 4] = [0x00, 0x01, 0x00, 0x00]; + + const SERVER_SET_ERROR_INFO: ServerSetErrorInfoPdu = ServerSetErrorInfoPdu( + ErrorInfo::ProtocolIndependentLicensingCode(ProtocolIndependentLicensingCode::Internal), + ); + + #[test] + fn from_buffer_correctly_parses_server_set_error_info() { + assert_eq!( + SERVER_SET_ERROR_INFO, + ServerSetErrorInfoPdu::from_buffer(SERVER_SET_ERROR_INFO_BUFFER.as_ref()).unwrap() + ); + } + + #[test] + fn to_buffer_correctly_serializes_server_set_error_info() { + let expected = SERVER_SET_ERROR_INFO_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + SERVER_SET_ERROR_INFO + .to_buffer(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); + } + + #[test] + fn buffer_length_is_correct_for_server_set_error_info() { + assert_eq!( + SERVER_SET_ERROR_INFO_BUFFER.len(), + SERVER_SET_ERROR_INFO.buffer_length() + ); + } +} From 72ed49611322c91e7e233996439f13ca318db41d Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Mon, 30 Mar 2020 17:01:20 +0200 Subject: [PATCH 0048/1273] ironrdp_client: integrate Server Set Error Info PDU --- ironrdp_client/src/active_session/x224.rs | 33 ++++++++++++++----- ironrdp_client/src/connection_sequence.rs | 12 ++++++- .../src/connection_sequence/user_info.rs | 3 +- ironrdp_client/src/errors.rs | 2 ++ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index c85b1440..f95c0be3 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -3,7 +3,10 @@ mod gfx; use std::{cmp, collections::HashMap, io}; use ironrdp::{ - rdp::vc::{self, dvc}, + rdp::{ + vc::{self, dvc}, + ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, + }, Data, ShareDataPdu, }; use log::{debug, error}; @@ -67,7 +70,7 @@ impl<'a> Processor<'a> { channel_ids.channel_id, )); - process_session_info(&mut stream, transport) + process_global_channel_pdu(&mut stream, transport) } Some(_) => Err(RdpError::UnexpectedChannel(channel_ids.channel_id)), None => panic!("Channel with {} ID must be added", channel_ids.channel_id), @@ -197,20 +200,32 @@ impl<'a> Processor<'a> { } } -fn process_session_info( +fn process_global_channel_pdu( mut stream: impl io::BufRead + io::Write, mut transport: ShareDataHeaderTransport, ) -> Result<(), RdpError> { let share_data_pdu = transport.decode(&mut stream)?; - if let ShareDataPdu::SaveSessionInfo(session_info) = share_data_pdu { - debug!("Got Session Save Info PDU: {:?}", session_info); - Ok(()) - } else { - Err(RdpError::UnexpectedPdu(format!( + match share_data_pdu { + ShareDataPdu::SaveSessionInfo(session_info) => { + debug!("Got Session Save Info PDU: {:?}", session_info); + + Ok(()) + } + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu( + ErrorInfo::ProtocolIndependentCode(ProtocolIndependentCode::None), + )) => { + debug!("Received None server error"); + + Ok(()) + } + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e)) => { + Err(RdpError::ServerError(e.description())) + } + _ => Err(RdpError::UnexpectedPdu(format!( "Expected Session Save Info PDU, got: {:?}", share_data_pdu.as_short_name() - ))) + ))), } } diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 9d2ed734..7535f17d 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -18,7 +18,7 @@ use ironrdp::{ InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }, - SERVER_CHANNEL_ID, + ErrorInfo, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID, }, PduParsing, }; @@ -27,6 +27,7 @@ use ring::rand::SecureRandom; use sspi::internal::credssp; use crate::{transport::*, InputConfig, RdpError, BUF_STREAM_SIZE}; +use ironrdp::rdp::ProtocolIndependentCode; pub type StaticChannels = HashMap; @@ -601,6 +602,15 @@ pub fn process_finalization( FinalizationOrder::Font } (FinalizationOrder::Font, ShareDataPdu::FontMap(_)) => FinalizationOrder::Finished, + ( + order, + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu( + ErrorInfo::ProtocolIndependentCode(ProtocolIndependentCode::None), + )), + ) => order, + (_, ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e))) => { + return Err(RdpError::ServerError(e.description())); + } (order, pdu) => { return Err(RdpError::UnexpectedPdu(format!( "Expected Server {:?} PDU, got invalid PDU: {:?}", diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 0147b54b..e9273cd5 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -174,7 +174,8 @@ fn create_optional_core_data( supported_color_depths: Some(SupportedColorDepths::all()), early_capability_flags: Some( ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE - | ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION, + | ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION + | ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU, ), dig_product_id: Some(config.dig_product_id.clone()), connection_type: Some(ConnectionType::Lan), diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs index 70d292c0..7365cb05 100644 --- a/ironrdp_client/src/errors.rs +++ b/ironrdp_client/src/errors.rs @@ -76,6 +76,8 @@ pub enum RdpError { _0 )] UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), + #[fail(display = "server error: {}", _0)] + ServerError(String), } impl From for RdpError { From 7f2b55d304f8dc15868ef41ce890ca2b5f8b59bc Mon Sep 17 00:00:00 2001 From: Vladyslav Hordiienko Date: Tue, 31 Mar 2020 16:35:20 +0200 Subject: [PATCH 0049/1273] ironrdp: implement parsing of Input Events --- ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs | 3 + ironrdp/src/input.rs | 144 ++++++++++++++++++++++++++ ironrdp/src/input/mouse.rs | 97 +++++++++++++++++ ironrdp/src/input/mouse_x.rs | 50 +++++++++ ironrdp/src/input/scan_code.rs | 46 ++++++++ ironrdp/src/input/sync.rs | 43 ++++++++ ironrdp/src/input/tests.rs | 1 + ironrdp/src/input/unicode.rs | 46 ++++++++ ironrdp/src/input/unused.rs | 31 ++++++ ironrdp/src/lib.rs | 1 + 10 files changed, 462 insertions(+) create mode 100644 ironrdp/src/input.rs create mode 100644 ironrdp/src/input/mouse.rs create mode 100644 ironrdp/src/input/mouse_x.rs create mode 100644 ironrdp/src/input/scan_code.rs create mode 100644 ironrdp/src/input/sync.rs create mode 100644 ironrdp/src/input/tests.rs create mode 100644 ironrdp/src/input/unicode.rs create mode 100644 ironrdp/src/input/unused.rs diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs index 9e595ed4..03f9d336 100644 --- a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs @@ -60,4 +60,7 @@ fuzz_target!(|data: &[u8]| { let _ = codecs::rfx::CodecVersionsPdu::from_buffer(data); let _ = codecs::rfx::ChannelsPdu::from_buffer(data); let _ = codecs::rfx::Channel::from_buffer(data); + + let _ = input::InputEventPdu::from_buffer(data); + let _ = input::InputEvent::from_buffer(data); }); diff --git a/ironrdp/src/input.rs b/ironrdp/src/input.rs new file mode 100644 index 00000000..5e819bc0 --- /dev/null +++ b/ironrdp/src/input.rs @@ -0,0 +1,144 @@ +pub mod mouse; +pub mod mouse_x; +pub mod scan_code; +pub mod sync; +#[cfg(test)] +mod tests; +pub mod unicode; +pub mod unused; + +pub use self::{ + mouse::MousePdu, mouse_x::MouseXPdu, scan_code::ScanCodePdu, sync::SyncPdu, + unicode::UnicodePdu, unused::UnusedPdu, +}; + +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; + +#[derive(Debug, Clone, PartialEq)] +pub struct InputEventPdu(pub Vec); + +impl PduParsing for InputEventPdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let number_of_events = stream.read_u16::()?; + let _padding = stream.read_u16::()?; + + let events = (0..number_of_events) + .map(|_| InputEvent::from_buffer(&mut stream)) + .collect::, _>>()?; + + Ok(Self(events)) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.0.len() as u16)?; + stream.write_u16::(0)?; // padding + + for event in self.0.iter() { + event.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 4 + self.0.iter().map(PduParsing::buffer_length).sum::() + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum InputEvent { + Sync(SyncPdu), + Unused(UnusedPdu), + ScanCode(ScanCodePdu), + Unicode(UnicodePdu), + Mouse(MousePdu), + MouseX(MouseXPdu), +} + +impl PduParsing for InputEvent { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _event_time = stream.read_u32::()?; // ignored by a server + let event_type = stream.read_u16::()?; + let event_type = InputEventType::from_u16(event_type) + .ok_or(InputEventError::InvalidInputEventType(event_type))?; + + match event_type { + InputEventType::Sync => Ok(Self::Sync(SyncPdu::from_buffer(&mut stream)?)), + InputEventType::Unused => Ok(Self::Unused(UnusedPdu::from_buffer(&mut stream)?)), + InputEventType::ScanCode => Ok(Self::ScanCode(ScanCodePdu::from_buffer(&mut stream)?)), + InputEventType::Unicode => Ok(Self::Unicode(UnicodePdu::from_buffer(&mut stream)?)), + InputEventType::Mouse => Ok(Self::Mouse(MousePdu::from_buffer(&mut stream)?)), + InputEventType::MouseX => Ok(Self::MouseX(MouseXPdu::from_buffer(&mut stream)?)), + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(0)?; // event time is ignored by a server + stream.write_u16::(InputEventType::from(self).to_u16().unwrap())?; + + match self { + Self::Sync(pdu) => pdu.to_buffer(&mut stream), + Self::Unused(pdu) => pdu.to_buffer(&mut stream), + Self::ScanCode(pdu) => pdu.to_buffer(&mut stream), + Self::Unicode(pdu) => pdu.to_buffer(&mut stream), + Self::Mouse(pdu) => pdu.to_buffer(&mut stream), + Self::MouseX(pdu) => pdu.to_buffer(&mut stream), + } + } + + fn buffer_length(&self) -> usize { + 6 + match self { + Self::Sync(pdu) => pdu.buffer_length(), + Self::Unused(pdu) => pdu.buffer_length(), + Self::ScanCode(pdu) => pdu.buffer_length(), + Self::Unicode(pdu) => pdu.buffer_length(), + Self::Mouse(pdu) => pdu.buffer_length(), + Self::MouseX(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u16)] +enum InputEventType { + Sync = 0x0000, + Unused = 0x0002, + ScanCode = 0x0004, + Unicode = 0x0005, + Mouse = 0x8001, + MouseX = 0x8002, +} + +impl From<&InputEvent> for InputEventType { + fn from(event: &InputEvent) -> Self { + match event { + InputEvent::Sync(_) => Self::Sync, + InputEvent::Unused(_) => Self::Unused, + InputEvent::ScanCode(_) => Self::ScanCode, + InputEvent::Unicode(_) => Self::Unicode, + InputEvent::Mouse(_) => Self::Mouse, + InputEvent::MouseX(_) => Self::MouseX, + } + } +} + +#[derive(Debug, Fail)] +pub enum InputEventError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid Input Event type: {}", _0)] + InvalidInputEventType(u16), +} + +impl_from_error!(io::Error, InputEventError, InputEventError::IOError); diff --git a/ironrdp/src/input/mouse.rs b/ironrdp/src/input/mouse.rs new file mode 100644 index 00000000..517bdb64 --- /dev/null +++ b/ironrdp/src/input/mouse.rs @@ -0,0 +1,97 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +const WHEEL_ROTATION_MASK: u16 = 0x00FF; + +#[derive(Debug, Clone, PartialEq)] +pub struct MousePdu { + pub wheel_events: WheelEvents, + pub movement_events: MovementEvents, + pub button_events: ButtonEvents, + pub number_of_wheel_rotations: i16, + pub x_position: u16, + pub y_position: u16, +} + +impl PduParsing for MousePdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let pointer_flags = stream.read_u16::()?; + + let wheel_events = WheelEvents::from_bits_truncate(pointer_flags); + let movement_events = MovementEvents::from_bits_truncate(pointer_flags); + let button_events = ButtonEvents::from_bits_truncate(pointer_flags); + let mut number_of_wheel_rotations = (pointer_flags & WHEEL_ROTATION_MASK) as i16; + if wheel_events.contains(WheelEvents::WHEEL_NEGATIVE) { + number_of_wheel_rotations *= -1; + } + + let x_position = stream.read_u16::()?; + let y_position = stream.read_u16::()?; + + Ok(Self { + wheel_events, + movement_events, + button_events, + number_of_wheel_rotations, + x_position, + y_position, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let wheel_negative_flag = if self.number_of_wheel_rotations < 0 { + WheelEvents::WHEEL_NEGATIVE + } else { + WheelEvents::empty() + }; + let number_of_wheel_rotations = + self.number_of_wheel_rotations as u16 & !WHEEL_ROTATION_MASK; + + let flags = self.wheel_events.bits() + | self.movement_events.bits() + | self.button_events.bits() + | wheel_negative_flag.bits() + | number_of_wheel_rotations; + + stream.write_u16::(flags)?; + stream.write_u16::(self.x_position)?; + stream.write_u16::(self.y_position)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +bitflags! { + pub struct WheelEvents: u16 { + const HORIZONTAL_WHEEL = 0x0400; + const VERTICAL_WHEEL = 0x0200; + const WHEEL_NEGATIVE = 0x0100; + } +} + +bitflags! { + pub struct MovementEvents: u16 { + const MOVE = 0x0800; + } +} + +bitflags! { + pub struct ButtonEvents: u16 { + const DOWN = 0x8000; + const LEFT_BUTTON = 0x1000; + const RIGHT_BUTTON = 0x2000; + const MIDDLE_BUTTON_OR_WHEEL = 0x4000; + + } +} diff --git a/ironrdp/src/input/mouse_x.rs b/ironrdp/src/input/mouse_x.rs new file mode 100644 index 00000000..c10767e0 --- /dev/null +++ b/ironrdp/src/input/mouse_x.rs @@ -0,0 +1,50 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct MouseXPdu { + pub flags: PointerFlags, + pub x_position: u16, + pub y_position: u16, +} + +impl PduParsing for MouseXPdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let flags = PointerFlags::from_bits_truncate(stream.read_u16::()?); + let x_position = stream.read_u16::()?; + let y_position = stream.read_u16::()?; + + Ok(Self { + flags, + x_position, + y_position, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.flags.bits())?; + stream.write_u16::(self.x_position)?; + stream.write_u16::(self.y_position)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +bitflags! { + pub struct PointerFlags: u16 { + const DOWN = 0x8000; + const BUTTON1 = 0x0001; + const BUTTON2 = 0x0002; + } +} diff --git a/ironrdp/src/input/scan_code.rs b/ironrdp/src/input/scan_code.rs new file mode 100644 index 00000000..847b8433 --- /dev/null +++ b/ironrdp/src/input/scan_code.rs @@ -0,0 +1,46 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct ScanCodePdu { + pub flags: KeyboardFlags, + pub key_code: u16, +} + +impl PduParsing for ScanCodePdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let flags = KeyboardFlags::from_bits_truncate(stream.read_u16::()?); + let key_code = stream.read_u16::()?; + let _padding = stream.read_u16::()?; + + Ok(Self { flags, key_code }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.flags.bits())?; + stream.write_u16::(self.key_code)?; + stream.write_u16::(0)?; // padding + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +bitflags! { + pub struct KeyboardFlags: u16 { + const EXTENDED = 0x0100; + const EXTENDED_1 = 0x0200; + const DOWN = 0x4000; + const RELEASE = 0x8000; + } +} diff --git a/ironrdp/src/input/sync.rs b/ironrdp/src/input/sync.rs new file mode 100644 index 00000000..0f20777d --- /dev/null +++ b/ironrdp/src/input/sync.rs @@ -0,0 +1,43 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct SyncPdu { + pub flags: SyncToggleFlags, +} + +impl PduParsing for SyncPdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _padding = stream.read_u16::()?; + let flags = SyncToggleFlags::from_bits_truncate(stream.read_u32::()?); + + Ok(Self { flags }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(0)?; // padding + stream.write_u32::(self.flags.bits())?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +bitflags! { + pub struct SyncToggleFlags: u32 { + const SCROLL_LOCK = 0x1; + const NUM_LOCK = 0x2; + const CAPS_LOCK = 0x4; + const KANA_LOCK = 0x8; + } +} diff --git a/ironrdp/src/input/tests.rs b/ironrdp/src/input/tests.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ironrdp/src/input/tests.rs @@ -0,0 +1 @@ + diff --git a/ironrdp/src/input/unicode.rs b/ironrdp/src/input/unicode.rs new file mode 100644 index 00000000..beba20b8 --- /dev/null +++ b/ironrdp/src/input/unicode.rs @@ -0,0 +1,46 @@ +use std::io; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct UnicodePdu { + pub flags: KeyboardFlags, + pub unicode_code: u16, +} + +impl PduParsing for UnicodePdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let flags = KeyboardFlags::from_bits_truncate(stream.read_u16::()?); + let unicode_code = stream.read_u16::()?; + let _padding = stream.read_u16::()?; + + Ok(Self { + flags, + unicode_code, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.flags.bits())?; + stream.write_u16::(self.unicode_code)?; + stream.write_u16::(0)?; // padding + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} + +bitflags! { + pub struct KeyboardFlags: u16 { + const RELEASE = 0x8000; + } +} diff --git a/ironrdp/src/input/unused.rs b/ironrdp/src/input/unused.rs new file mode 100644 index 00000000..ed1e004b --- /dev/null +++ b/ironrdp/src/input/unused.rs @@ -0,0 +1,31 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +use super::InputEventError; +use crate::PduParsing; + +#[derive(Debug, Clone, PartialEq)] +pub struct UnusedPdu; + +impl PduParsing for UnusedPdu { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _padding = stream.read_u32::()?; + let _padding = stream.read_u16::()?; + + Ok(Self) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u32::(0)?; // padding + stream.write_u16::(0)?; // padding + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 6 + } +} diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index c6eef1b4..f704a6c4 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -1,5 +1,6 @@ pub mod codecs; pub mod gcc; +pub mod input; pub mod mcs; pub mod nego; pub mod rdp; From c1e26ea457ec3bb338f1107baaca1047c71e5e22 Mon Sep 17 00:00:00 2001 From: Vladislav Nikonov Date: Thu, 20 Aug 2020 19:14:04 +0300 Subject: [PATCH 0050/1273] Changed Preconnection Pdu parsing logic --- ironrdp/src/preconnection.rs | 40 ++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index 3f138ddb..120fa9f1 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -25,22 +25,18 @@ impl PduBufferParsing<'_> for PreconnectionPdu { type Error = PreconnectionPduError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + if buffer.len() < PRECONNECTION_PDU_V1_SIZE { + return Err(PreconnectionPduError::IoError(io::Error::new( + io::ErrorKind::UnexpectedEof, + "More data required to parse Preconnection PDU header", + ))); + } + let size = buffer.read_u32::()? as usize; - let expected = size - .checked_sub(4) - .ok_or(PreconnectionPduError::InvalidDataLength { - expected: PRECONNECTION_PDU_V1_SIZE, - actual: size, - })?; - - if buffer.len() < expected { - return Err(PreconnectionPduError::InvalidDataLength { - expected, - actual: buffer.len(), - }); + if (size % 2 != 0) || (size < PRECONNECTION_PDU_V1_SIZE) { + return Err(PreconnectionPduError::InvalidHeader); } - let mut buffer = buffer.split_to(expected); buffer.read_u32::()?; // flags let version = buffer.read_u32::()?; @@ -49,6 +45,17 @@ impl PduBufferParsing<'_> for PreconnectionPdu { let id = buffer.read_u32::()?; + let remaining_size = size - PRECONNECTION_PDU_V1_SIZE; + + if buffer.len() < remaining_size { + return Err(PreconnectionPduError::IoError(io::Error::new( + io::ErrorKind::UnexpectedEof, + "More data required to parse Preconnection PDU payload", + ))); + } + + let mut buffer = buffer.split_to(remaining_size); + let payload = match version { Version::V1 => None, Version::V2 => { @@ -122,11 +129,8 @@ impl From<&PreconnectionPdu> for Version { pub enum PreconnectionPduError { #[fail(display = "IO error: {}", _0)] IoError(#[fail(cause)] io::Error), - #[fail( - display = "Input buffer is shorter then the data length: {} < {}", - actual, expected - )] - InvalidDataLength { expected: usize, actual: usize }, + #[fail(display = "Provided data is not an valid preconnection Pdu")] + InvalidHeader, #[fail(display = "Unexpected version: {}", _0)] UnexpectedVersion(u32), } From d8ac8b38490fbdee2e3be71bd2f90673fc7ba6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Wed, 2 Sep 2020 14:03:18 -0400 Subject: [PATCH 0051/1273] ironrdp: fix handling of extra null terminators in preconnection pdu --- ironrdp/src/preconnection.rs | 40 +++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index 120fa9f1..c67a86f7 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -16,6 +16,7 @@ const PRECONNECTION_PDU_V1_SIZE: usize = 16; #[derive(Debug, Clone, PartialEq)] pub struct PreconnectionPdu { pub id: u32, + pub cch_pcb: u16, pub payload: Option, } @@ -56,27 +57,24 @@ impl PduBufferParsing<'_> for PreconnectionPdu { let mut buffer = buffer.split_to(remaining_size); - let payload = match version { - Version::V1 => None, + let (cch_pcb, payload) = match version { + Version::V1 => (0, None), Version::V2 => { - let size = buffer.read_u16::()? as usize; - if buffer.len() < size * 2 { - return Err(PreconnectionPduError::InvalidDataLength { - expected: size * 2, - actual: buffer.len(), - }); + let cch_pcb = buffer.read_u16::()?; + if buffer.len() < usize::from(cch_pcb) * 2 { + return Err(PreconnectionPduError::InvalidHeader); } - let payload_bytes = buffer.split_to(size * 2); + let payload_bytes = buffer.split_to(usize::from(cch_pcb) * 2); let payload = utils::bytes_to_utf16_string(payload_bytes) .trim_end_matches('\0') .into(); - Some(payload) + (cch_pcb, Some(payload)) } }; - Ok(Self { id, payload }) + Ok(Self { id, cch_pcb, payload }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { @@ -100,12 +98,18 @@ impl PduBufferParsing<'_> for PreconnectionPdu { } fn buffer_length(&self) -> usize { - PRECONNECTION_PDU_V1_SIZE - + self - .payload - .as_ref() - .map(|p| 2 + (p.len() + 1) * 2) - .unwrap_or(0) + let cch_pcb = if self.cch_pcb > 0 { + self.cch_pcb as usize + } else { + self.payload.as_ref().map(|p| (p.len() + 1)).unwrap_or(0) + }; + + let version: Version = self.into(); + + match version { + Version::V1 => PRECONNECTION_PDU_V1_SIZE, + Version::V2 => PRECONNECTION_PDU_V1_SIZE + 2 + (cch_pcb * 2) + } } } @@ -186,12 +190,14 @@ mod tests { const PRECONNECTION_PDU_V1: PreconnectionPdu = PreconnectionPdu { id: 4_005_992_939, + cch_pcb: 0, payload: None, }; lazy_static! { static ref PRECONNECTION_PDU_V2: PreconnectionPdu = PreconnectionPdu { id: 0, + cch_pcb: 7, payload: Some(String::from("TestVM")), }; } From 67ca9a88186c46e109127e17bcedcd0987977d2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Wed, 2 Sep 2020 14:31:24 -0400 Subject: [PATCH 0052/1273] ironrdp: bump version (0.4.1) --- ironrdp/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 2a4e3b55..f080abca 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp" -version = "0.4.0" +version = "0.4.1" edition = "2018" readme = "../README.md" license = "MIT/Apache-2.0" From 6aaf18c97130858ecd84f6e066b90c241b6a9b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Thu, 3 Sep 2020 15:48:47 -0400 Subject: [PATCH 0053/1273] ironrdp: correctly handle new or unknown RDP version values in GCC core data block --- ironrdp/src/gcc/core_data.rs | 8 ++++++++ ironrdp/src/gcc/core_data/client.rs | 2 +- ironrdp/src/gcc/core_data/server.rs | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ironrdp/src/gcc/core_data.rs b/ironrdp/src/gcc/core_data.rs index 358368d7..6e63ad48 100644 --- a/ironrdp/src/gcc/core_data.rs +++ b/ironrdp/src/gcc/core_data.rs @@ -22,6 +22,14 @@ pub enum RdpVersion { V10_5 = 0x0008_000A, V10_6 = 0x0008_000B, V10_7 = 0x0008_000C, + V10_8 = 0x0008_000D, + + // future proofing + V10_9 = 0x0008_000E, + V10_10 = 0x0008_000F, + V10_11 = 0x0008_0010, + V10_12 = 0x0008_0011, + VUnknown = 0x0000_0000, } #[derive(Debug, Fail)] diff --git a/ironrdp/src/gcc/core_data/client.rs b/ironrdp/src/gcc/core_data/client.rs index 3049abd4..b6180359 100644 --- a/ironrdp/src/gcc/core_data/client.rs +++ b/ironrdp/src/gcc/core_data/client.rs @@ -83,7 +83,7 @@ impl PduParsing for ClientCoreData { fn from_buffer(mut buffer: impl io::Read) -> Result { let version = RdpVersion::from_u32(buffer.read_u32::()?) - .ok_or(CoreDataError::InvalidVersion)?; + .unwrap_or(RdpVersion::VUnknown); let desktop_width = buffer.read_u16::()?; let desktop_height = buffer.read_u16::()?; let color_depth = ColorDepth::from_u16(buffer.read_u16::()?) diff --git a/ironrdp/src/gcc/core_data/server.rs b/ironrdp/src/gcc/core_data/server.rs index 581fc50f..3d35c202 100644 --- a/ironrdp/src/gcc/core_data/server.rs +++ b/ironrdp/src/gcc/core_data/server.rs @@ -24,7 +24,7 @@ impl PduParsing for ServerCoreData { fn from_buffer(mut buffer: impl io::Read) -> Result { let version = RdpVersion::from_u32(buffer.read_u32::()?) - .ok_or(CoreDataError::InvalidVersion)?; + .unwrap_or(RdpVersion::VUnknown); let optional_data = ServerCoreOptionalData::from_buffer(&mut buffer)?; Ok(Self { From 23edaf8b64b1a7b1e5a0991d9edcc575c0079dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 11 Sep 2020 14:17:50 -0400 Subject: [PATCH 0054/1273] Fix decoding for invalid SystemDate As specified in [RDP protocol doc](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/526ed635-d7a9-4d3c-bbe1-4e3fb17585f4) we should be able to ignore invalid date encoding. --- ironrdp/src/rdp/client_info.rs | 75 +++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/ironrdp/src/rdp/client_info.rs b/ironrdp/src/rdp/client_info.rs index 96a4a95d..e61beb33 100644 --- a/ironrdp/src/rdp/client_info.rs +++ b/ironrdp/src/rdp/client_info.rs @@ -356,10 +356,10 @@ impl PduParsing for ExtendedClientOptionalInfo { pub struct TimezoneInfo { pub bias: u32, pub standard_name: String, - pub standard_date: SystemTime, + pub standard_date: Option, pub standard_bias: u32, pub daylight_name: String, - pub daylight_date: SystemTime, + pub daylight_date: Option, pub daylight_bias: u32, } @@ -375,7 +375,7 @@ impl PduParsing for TimezoneInfo { CharacterSet::Unicode, false, )?; - let standard_date = SystemTime::from_buffer(&mut stream)?; + let standard_date = Option::::from_buffer(&mut stream)?; let standard_bias = stream.read_u32::()?; let daylight_name = utils::read_string( @@ -384,7 +384,7 @@ impl PduParsing for TimezoneInfo { CharacterSet::Unicode, false, )?; - let daylight_date = SystemTime::from_buffer(&mut stream)?; + let daylight_date = Option::::from_buffer(&mut stream)?; let daylight_bias = stream.read_u32::()?; Ok(Self { @@ -440,42 +440,61 @@ pub struct SystemTime { pub milliseconds: u16, } -impl PduParsing for SystemTime { +impl PduParsing for Option { type Error = ClientInfoError; fn from_buffer(mut stream: impl io::Read) -> Result { let _year = stream.read_u16::()?; // This field MUST be set to zero. - let month = Month::from_u16(stream.read_u16::()?) - .ok_or(ClientInfoError::InvalidSystemTime)?; - let day_of_week = DayOfWeek::from_u16(stream.read_u16::()?) - .ok_or(ClientInfoError::InvalidSystemTime)?; - let day = DayOfWeekOccurrence::from_u16(stream.read_u16::()?) - .ok_or(ClientInfoError::InvalidSystemTime)?; + let month = stream.read_u16::()?; + let day_of_week = stream.read_u16::()?; + let day = stream.read_u16::()?; let hour = stream.read_u16::()?; let minute = stream.read_u16::()?; let second = stream.read_u16::()?; let milliseconds = stream.read_u16::()?; - Ok(Self { - month, - day_of_week, - day, - hour, - minute, - second, - milliseconds, - }) + match ( + Month::from_u16(month), + DayOfWeek::from_u16(day_of_week), + DayOfWeekOccurrence::from_u16(day), + ) { + (Some(month), Some(day_of_week), Some(day)) => { + Ok(Some(SystemTime { + month, + day_of_week, + day, + hour, + minute, + second, + milliseconds, + })) + } + _ => Ok(None), + } } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u16::(0)?; // year - stream.write_u16::(self.month.to_u16().unwrap())?; - stream.write_u16::(self.day_of_week.to_u16().unwrap())?; - stream.write_u16::(self.day.to_u16().unwrap())?; - stream.write_u16::(self.hour)?; - stream.write_u16::(self.minute)?; - stream.write_u16::(self.second)?; - stream.write_u16::(self.milliseconds)?; + match *self { + Some(SystemTime { month, day_of_week, day, hour, minute, second, milliseconds }) => { + stream.write_u16::(month.to_u16().unwrap())?; + stream.write_u16::(day_of_week.to_u16().unwrap())?; + stream.write_u16::(day.to_u16().unwrap())?; + stream.write_u16::(hour)?; + stream.write_u16::(minute)?; + stream.write_u16::(second)?; + stream.write_u16::(milliseconds)?; + } + None => { + stream.write_u16::(0)?; + stream.write_u16::(0)?; + stream.write_u16::(0)?; + stream.write_u16::(0)?; + stream.write_u16::(0)?; + stream.write_u16::(0)?; + stream.write_u16::(0)?; + } + } Ok(()) } @@ -594,8 +613,6 @@ pub enum ClientInfoError { InvalidPerformanceFlags, #[fail(display = "Invalid reconnect cookie field")] InvalidReconnectCookie, - #[fail(display = "Invalid system time field")] - InvalidSystemTime, } impl_from_error!(io::Error, ClientInfoError, ClientInfoError::IOError); From ca53209c84c55b4198981ca3686d255a689917ac Mon Sep 17 00:00:00 2001 From: Vladislav Nikonov Date: Mon, 19 Oct 2020 20:17:53 +0300 Subject: [PATCH 0055/1273] Jet-related IronRDP bugfix (#32) * Fixed parsing of Fast-Path packet with forced long length field * cargo fmt, fix, clippy * Implemented bitmap fast path packet parsing to fix Win Server 2016 TS connections * cargo fmt/clippy * Performed minor code refactoring * Fixed typos; Formatted comments * connection request parsing fix * Fixed failing broken tests * Fixed formatting --- ironrdp/src/basic_output.rs | 1 + ironrdp/src/basic_output/bitmap.rs | 240 ++++++++++++++++++ ironrdp/src/basic_output/bitmap/tests.rs | 84 ++++++ ironrdp/src/basic_output/fast_path.rs | 49 +++- ironrdp/src/basic_output/fast_path/test.rs | 35 +++ .../src/codecs/rfx/image_processing/tests.rs | 4 +- ironrdp/src/lib.rs | 2 +- ironrdp/src/nego.rs | 7 +- ironrdp/src/per.rs | 20 +- ironrdp/src/preconnection.rs | 8 +- ironrdp/src/rdp/client_info.rs | 30 ++- ironrdp/src/rdp/client_info/test.rs | 8 +- ironrdp/src/rdp/server_license.rs | 3 +- .../client_platform_challenge_response.rs | 4 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 2 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs | 4 +- .../src/active_session/fast_path.rs | 7 +- ironrdp_client/src/active_session/x224.rs | 4 +- ironrdp_client/src/active_session/x224/gfx.rs | 2 +- ironrdp_client/src/connection_sequence.rs | 5 +- .../src/connection_sequence/user_info.rs | 11 +- ironrdp_client/src/main.rs | 4 +- 22 files changed, 473 insertions(+), 61 deletions(-) create mode 100644 ironrdp/src/basic_output/bitmap.rs create mode 100644 ironrdp/src/basic_output/bitmap/tests.rs diff --git a/ironrdp/src/basic_output.rs b/ironrdp/src/basic_output.rs index 0e6c00a9..397fb370 100644 --- a/ironrdp/src/basic_output.rs +++ b/ironrdp/src/basic_output.rs @@ -1,2 +1,3 @@ +pub mod bitmap; pub mod fast_path; pub mod surface_commands; diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs new file mode 100644 index 00000000..27e7b187 --- /dev/null +++ b/ironrdp/src/basic_output/bitmap.rs @@ -0,0 +1,240 @@ +#[cfg(test)] +mod tests; + +use std::io::{self, Write}; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use std::fmt::{self, Debug}; + +use crate::{ + impl_from_error, + utils::{Rectangle, SplitTo}, + PduBufferParsing, PduParsing, +}; + +pub const COMPRESSED_DATA_HEADER_SIZE: usize = 8; +pub const BITMAP_DATA_MAIN_DATA_SIZE: usize = 12; +pub const FIRST_ROW_SIZE_VALUE: u16 = 0; + +#[derive(Debug, Clone, PartialEq)] +pub struct Bitmap<'a> { + pub rectangles_number: usize, + pub rectangles: Vec>, +} + +impl<'a> PduBufferParsing<'a> for Bitmap<'a> { + type Error = BitmapError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let update_type = BitmapFlags::from_bits_truncate(buffer.read_u16::()?); + if !update_type.contains(BitmapFlags::BITMAP_UPDATE_TYPE) { + return Err(BitmapError::InvalidUpdateType); + } + + let rectangles_number = buffer.read_u16::()? as usize; + let mut rectangles = Vec::with_capacity(rectangles_number); + + for _ in 0..rectangles_number { + rectangles.push(BitmapData::from_buffer_consume(buffer)?); + } + + Ok(Bitmap { + rectangles_number, + rectangles, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u16::(BitmapFlags::BITMAP_UPDATE_TYPE.bits())?; + buffer.write_u16::(self.rectangles_number as u16)?; + for ref bitmap_data in self.rectangles.iter() { + bitmap_data.to_buffer_consume(buffer)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + self.rectangles + .iter() + .map(|b| b.buffer_length()) + .sum::() + } +} + +#[derive(Clone, PartialEq)] +pub struct BitmapData<'a> { + pub rectangle: Rectangle, + pub width: u16, + pub height: u16, + pub bits_per_pixel: u16, + pub compression_flags: Compression, + pub bitmap_data_length: usize, + pub compressed_data_header: Option, + pub bitmap_data: &'a [u8], +} + +impl<'a> PduBufferParsing<'a> for BitmapData<'a> { + type Error = BitmapError; + + fn from_buffer_consume(mut buffer: &mut &'a [u8]) -> Result { + let rectangle = Rectangle::from_buffer(&mut buffer)?; + + let width = buffer.read_u16::()?; + let height = buffer.read_u16::()?; + + let bits_per_pixel = buffer.read_u16::()?; + let compression_flags = Compression::from_bits_truncate(buffer.read_u16::()?); + let bitmap_data_length = buffer.read_u16::()? as usize; + + if buffer.len() < bitmap_data_length { + return Err(BitmapError::InvalidDataLength { + actual: buffer.len(), + expected: bitmap_data_length, + }); + } + + let compressed_data_header = if !compression_flags.contains(Compression::NOT_COMPRESSED) { + Some(CompressedDataHeader::from_buffer_consume(buffer)?) + } else { + None + }; + + let bitmap_data = if compressed_data_header.is_some() { + buffer.split_to(bitmap_data_length - COMPRESSED_DATA_HEADER_SIZE) + } else { + buffer.split_to(bitmap_data_length) + }; + + Ok(BitmapData { + rectangle, + width, + height, + bits_per_pixel, + compression_flags, + bitmap_data_length, + compressed_data_header, + bitmap_data, + }) + } + + fn to_buffer_consume(&self, mut buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + self.rectangle.to_buffer(&mut buffer)?; + buffer.write_u16::(self.width)?; + buffer.write_u16::(self.height)?; + buffer.write_u16::(self.bits_per_pixel)?; + buffer.write_u16::(self.compression_flags.bits())?; + buffer.write_u16::(self.bitmap_data_length as u16)?; + if let Some(ref compressed_data_header) = self.compressed_data_header { + compressed_data_header.to_buffer_consume(buffer)?; + }; + buffer.write_all(self.bitmap_data)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + BITMAP_DATA_MAIN_DATA_SIZE + self.bitmap_data_length + } +} +impl<'a> Debug for BitmapData<'a> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "BitmapData:[{:?}, + width - {}, + height - {}, + bits_per_pixel - {}, + compression_flagss - ({:?}), + compressed_data_header - {:?} + \nReceived Bitmap data buffer with length - {}\n]", + self.rectangle, + self.width, + self.height, + self.bits_per_pixel, + self.compression_flags, + self.compressed_data_header, + self.bitmap_data.len() + ) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct CompressedDataHeader { + pub main_body_size: u16, + pub scan_width: u16, + pub uncompressed_size: u16, +} + +impl<'a> PduBufferParsing<'a> for CompressedDataHeader { + type Error = BitmapError; + + fn from_buffer_consume(buffer: &mut &[u8]) -> Result { + let size = buffer.read_u16::()?; + if size != FIRST_ROW_SIZE_VALUE { + return Err(BitmapError::InvalidFirstRowSize(size as usize)); + } + + let main_body_size = buffer.read_u16::()?; + let scan_width = buffer.read_u16::()?; + if scan_width % 4 != 0 { + return Err(BitmapError::InvalidScanWidth); + } + let uncompressed_size = buffer.read_u16::()?; + + Ok(Self { + main_body_size, + scan_width, + uncompressed_size, + }) + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u16::(FIRST_ROW_SIZE_VALUE)?; + buffer.write_u16::(self.main_body_size)?; + buffer.write_u16::(self.scan_width)?; + buffer.write_u16::(self.uncompressed_size)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + COMPRESSED_DATA_HEADER_SIZE + } +} + +bitflags! { + pub struct BitmapFlags: u16{ + const BITMAP_UPDATE_TYPE = 0x0001; + } +} + +bitflags! { + pub struct Compression: u16 { + const COMPRESSED_HDR = 0x0001; + const NOT_COMPRESSED = 0x0400; + } +} + +#[derive(Debug, Fail)] +pub enum BitmapError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid update type for Bitmap Update")] + InvalidUpdateType, + #[fail( + display = "Input buffer len is shorten than the data length: {} < {}", + actual, expected + )] + InvalidDataLength { actual: usize, expected: usize }, + #[fail(display = "Compression is not suppported for Bitmap data")] + NotSupportedCompression, + #[fail(display = "Invalid first row size, must be 0, but got: {}", _0)] + InvalidFirstRowSize(usize), + #[fail(display = "The witdh of the bitmap must be divisible by 4")] + InvalidScanWidth, +} + +impl_from_error!(io::Error, BitmapError, BitmapError::IOError); diff --git a/ironrdp/src/basic_output/bitmap/tests.rs b/ironrdp/src/basic_output/bitmap/tests.rs new file mode 100644 index 00000000..c060de12 --- /dev/null +++ b/ironrdp/src/basic_output/bitmap/tests.rs @@ -0,0 +1,84 @@ +use lazy_static::lazy_static; + +use super::*; + +const BITMAP_BUFFER: [u8; 114] = [ + 0x01, 0x00, // Bitmap update type = must be PDATETYPE_BITMAP (0x0001) + 0x01, 0x00, // Number of rectangles = 1 + // Rectangle + 0x00, 0x07, // Left bound of the rectangle = 1792 + 0x00, 0x04, // Top bound of the rectangle = 1024 + 0x3f, 0x07, // Right bound of the rectangle = 1855 + 0x37, 0x04, // Bottom bound of the rectangle = 1079 + 0x40, 0x00, // The width of the rectangle = 64 + 0x38, 0x00, // The height of the rectangle = 56 + 0x10, 0x00, // The color depth of the rectangle data in bits-per-pixel = 16 + 0x01, + // The flag which describes the format of the bitmap data: + // BITMAP_COMPRESSION | !NO_BITMAP_COMPRESSION_HDR => bitmapComprHdr is present + 0x00, // The size in bytes of the data in CompressedDataHeader and bitmap_data = 92 + 0x5c, 0x00, // CompressedDataHeader + 0x00, 0x00, // FirstRowSize, must be set to 0x0000 = 0 + 0x50, 0x00, // MainBodySize - size in bytes of the compressed bitmap data = 80 + 0x1c, 0x00, // ScanWidth - width of the bitmap in pixels(must be divisible by 4) = 28 + // UncompressedSize - size in bytes of the bitmap data after it has been decompressed = 4 + 0x04, 0x00, // Bitmap data + 0x21, 0x00, 0x21, 0x00, 0x01, 0x00, 0x20, 0x09, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, + 0x00, 0x10, 0xd8, 0x20, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1e, 0x21, + 0x00, 0x00, 0xa8, 0x83, 0x21, 0x00, 0x55, 0xad, 0xff, 0xff, 0x45, 0x29, 0x7a, 0xce, 0xa3, 0x10, + 0x0e, 0x82, 0x45, 0x29, 0x7a, 0xce, 0xd5, 0x82, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, + 0x45, 0x29, 0x9e, 0xf7, 0xff, 0xff, 0x9e, 0xf7, 0x45, 0x29, 0x21, 0x00, 0x55, 0xad, 0x10, 0x10, + 0xa8, 0xd8, 0x60, 0x12, +]; + +lazy_static! { + static ref BITMAP: Bitmap<'static> = Bitmap { + rectangles_number: 1, + rectangles: { + let mut vec = Vec::new(); + vec.push(BitmapData { + rectangle: Rectangle { + left: 1792, + top: 1024, + right: 1855, + bottom: 1079, + }, + width: 64, + height: 56, + bits_per_pixel: 16, + compression_flags: Compression::COMPRESSED_HDR, + bitmap_data_length: 92, + compressed_data_header: Some(CompressedDataHeader { + main_body_size: 80, + scan_width: 28, + uncompressed_size: 4, + }), + bitmap_data: &BITMAP_BUFFER[30..], + }); + vec + } + }; +} + +#[test] +fn from_buffer_bitmap_data_parsses_correctly() { + let actual = Bitmap::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); + assert_eq!(*BITMAP, actual); +} + +#[test] +fn to_buffer_bitmap_data_serializes_correcly() { + let expected = BITMAP_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + BITMAP + .to_buffer_consume(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn bitmap_data_length_is_correct() { + let actual = Bitmap::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); + let actual = actual.rectangles.get(0).unwrap().bitmap_data.len(); + assert_eq!(BITMAP_BUFFER[30..].len(), actual) +} diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs index 0636e643..0e6b3247 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp/src/basic_output/fast_path.rs @@ -10,7 +10,11 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; +use super::{ + bitmap::{Bitmap, BitmapError}, + surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}, +}; + use crate::{impl_from_error, per, utils::SplitTo, PduBufferParsing, PduParsing}; /// Implements the Fast-Path RDP message header PDU. @@ -18,6 +22,7 @@ use crate::{impl_from_error, per, utils::SplitTo, PduBufferParsing, PduParsing}; pub struct FastPathHeader { pub flags: EncryptionFlags, pub data_length: usize, + forced_long_length: bool, } impl FastPathHeader { @@ -34,8 +39,18 @@ impl FastPathHeader { }); } let data_length = length as usize - sizeof_length - 1; + // Detect case, when received packet has non-optimal packet length packing + let forced_long_length = per::sizeof_length(length as u16) != sizeof_length; - Ok(FastPathHeader { flags, data_length }) + Ok(FastPathHeader { + flags, + data_length, + forced_long_length, + }) + } + + fn minimal_buffer_length(&self) -> usize { + 1 + per::sizeof_length(self.data_length as u16) } } @@ -54,13 +69,25 @@ impl PduParsing for FastPathHeader { header.set_bits(6..8, self.flags.bits()); stream.write_u8(header)?; - per::write_length(stream, (self.data_length + self.buffer_length()) as u16)?; + if self.forced_long_length { + // Preserve same layout for header as received + per::write_long_length(stream, (self.data_length + self.buffer_length()) as u16)?; + } else { + per::write_length( + stream, + (self.data_length + self.minimal_buffer_length()) as u16, + )?; + } Ok(()) } fn buffer_length(&self) -> usize { - 1 + per::sizeof_length(self.data_length as u16) + if self.forced_long_length { + 1 + per::SIZEOF_U16 + } else { + self.minimal_buffer_length() + } } } @@ -125,6 +152,7 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { #[derive(Debug, Clone, PartialEq)] pub enum FastPathUpdate<'a> { SurfaceCommands(Vec>), + Bitmap(Bitmap<'a>), } impl<'a> FastPathUpdate<'a> { @@ -148,6 +176,10 @@ impl<'a> FastPathUpdate<'a> { Ok(Self::SurfaceCommands(commands)) } + UpdateCode::Bitmap => { + let bitmap = Bitmap::from_buffer_consume(buffer)?; + Ok(Self::Bitmap(bitmap)) + } _ => Err(FastPathError::UnsupportedFastPathUpdate(code)), } } @@ -159,6 +191,9 @@ impl<'a> FastPathUpdate<'a> { command.to_buffer_consume(buffer)?; } } + Self::Bitmap(ref bitmap) => { + bitmap.to_buffer_consume(buffer)?; + } } Ok(()) @@ -169,12 +204,14 @@ impl<'a> FastPathUpdate<'a> { Self::SurfaceCommands(commands) => { commands.iter().map(|c| c.buffer_length()).sum::() } + Self::Bitmap(bitmap) => bitmap.buffer_length(), } } pub fn as_short_name(&self) -> &str { match self { Self::SurfaceCommands(_) => "Surface Commands", + Self::Bitmap(_) => "Bitmap", } } } @@ -199,6 +236,7 @@ impl<'a> From<&FastPathUpdate<'a>> for UpdateCode { fn from(update: &FastPathUpdate<'_>) -> Self { match update { FastPathUpdate::SurfaceCommands(_) => Self::SurfaceCommands, + FastPathUpdate::Bitmap(_) => Self::Bitmap, } } } @@ -232,6 +270,8 @@ pub enum FastPathError { IOError(#[fail(cause)] io::Error), #[fail(display = "Surface Commands error: {}", _0)] SurfaceCommandsError(#[fail(cause)] SurfaceCommandsError), + #[fail(display = "Bitmap error: {}", _0)] + BitmapError(#[fail(cause)] BitmapError), /// Used in the length-related error during Fast-Path parsing. #[fail(display = "Received invalid Fast-Path package with 0 length")] NullLength { bytes_read: usize }, @@ -256,3 +296,4 @@ impl_from_error!( FastPathError, FastPathError::SurfaceCommandsError ); +impl_from_error!(BitmapError, FastPathError, FastPathError::BitmapError); diff --git a/ironrdp/src/basic_output/fast_path/test.rs b/ironrdp/src/basic_output/fast_path/test.rs index c2b997f6..03e99f41 100644 --- a/ironrdp/src/basic_output/fast_path/test.rs +++ b/ironrdp/src/basic_output/fast_path/test.rs @@ -10,14 +10,22 @@ const FAST_PATH_UPDATE_PDU_BUFFER: [u8; 19] = [ const FAST_PATH_UPDATE_PDU_WITH_LONG_LEN_BUFFER: [u8; 19] = [ 0x4, 0xff, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, ]; +const FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_BUFFER: [u8; 3] = [0x80, 0x80, 0x08]; const FAST_PATH_HEADER_WITH_SHORT_LEN_PDU: FastPathHeader = FastPathHeader { flags: EncryptionFlags::ENCRYPTED, data_length: 6, + forced_long_length: false, }; const FAST_PATH_HEADER_WITH_LONG_LEN_PDU: FastPathHeader = FastPathHeader { flags: EncryptionFlags::ENCRYPTED, data_length: 484, + forced_long_length: false, +}; +const FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_PDU: FastPathHeader = FastPathHeader { + flags: EncryptionFlags::ENCRYPTED, + data_length: 5, + forced_long_length: true, }; lazy_static! { @@ -82,6 +90,33 @@ fn buffer_length_is_correct_for_fast_path_header_with_long_length() { ); } +#[test] +fn from_buffer_correctly_parses_fast_path_header_with_forced_long_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_PDU, + FastPathHeader::from_buffer(FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_BUFFER.as_ref()).unwrap() + ); +} + +#[test] +fn to_buffer_correctly_serializes_fast_path_header_with_forced_long_length() { + let expected = FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_BUFFER.as_ref(); + let mut buffer = vec![0; expected.len()]; + + FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_PDU + .to_buffer(&mut buffer.as_mut_slice()) + .unwrap(); + assert_eq!(expected, buffer.as_slice()); +} + +#[test] +fn buffer_length_is_correct_for_fast_path_header_with_forced_long_length() { + assert_eq!( + FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_BUFFER.len(), + FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_PDU.buffer_length() + ); +} + #[test] fn from_buffer_correctly_parses_fast_path_update() { assert_eq!( diff --git a/ironrdp/src/codecs/rfx/image_processing/tests.rs b/ironrdp/src/codecs/rfx/image_processing/tests.rs index 4b7ac86d..2bab6324 100644 --- a/ironrdp/src/codecs/rfx/image_processing/tests.rs +++ b/ironrdp/src/codecs/rfx/image_processing/tests.rs @@ -12,7 +12,7 @@ fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() }, step: 256, pixel_format: PixelFormat::BgrX32, - data: &mut SOURCE_IN_RGBX_BUFFER, + data: &SOURCE_IN_RGBX_BUFFER, }; let mut destination_region = ImageRegionMut { region: Rectangle { @@ -45,7 +45,7 @@ fn image_region_correctly_writes_image_with_same_formats_and_different_sizes() { }, step: 256, pixel_format: PixelFormat::BgrX32, - data: &mut SOURCE_IN_RGBX_BUFFER, + data: &SOURCE_IN_RGBX_BUFFER, }; let mut destination_region = ImageRegionMut { region: Rectangle { diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index f704a6c4..89aa20d5 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -13,7 +13,7 @@ mod utils; mod x224; pub use crate::{ - basic_output::{fast_path, surface_commands}, + basic_output::{bitmap, fast_path, surface_commands}, mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}, nego::*, preconnection::{PreconnectionPdu, PreconnectionPduError}, diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index 8b95cf45..aab4a423 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -222,11 +222,12 @@ impl PduParsing for Request { fn buffer_length(&self) -> usize { TPDU_REQUEST_LENGTH + match &self.nego_data { - Some(NegoData::Cookie(s)) => s.len() + COOKIE_PREFIX.len(), - Some(NegoData::RoutingToken(s)) => s.len() + ROUTING_TOKEN_PREFIX.len(), + Some(NegoData::Cookie(s)) => s.len() + COOKIE_PREFIX.len() + CR_LF_SEQ_LENGTH, + Some(NegoData::RoutingToken(s)) => { + s.len() + ROUTING_TOKEN_PREFIX.len() + CR_LF_SEQ_LENGTH + } None => 0, } - + CR_LF_SEQ_LENGTH + if self.protocol.bits() > SecurityProtocol::RDP.bits() { usize::from(RDP_NEG_DATA_LENGTH) } else { diff --git a/ironrdp/src/per.rs b/ironrdp/src/per.rs index e9b0751a..a0f41b99 100644 --- a/ironrdp/src/per.rs +++ b/ironrdp/src/per.rs @@ -24,15 +24,21 @@ pub fn read_length(mut stream: impl io::Read) -> io::Result<(u16, usize)> { } } -pub fn write_length(mut stream: impl io::Write, length: u16) -> io::Result { +pub fn write_long_length(mut stream: impl io::Write, length: u16) -> io::Result { + stream.write_u16::(length | 0x8000)?; + Ok(2) +} + +pub fn write_short_length(mut stream: impl io::Write, length: u16) -> io::Result { + stream.write_u8(length as u8)?; + Ok(1) +} + +pub fn write_length(stream: impl io::Write, length: u16) -> io::Result { if length > 0x7f { - stream.write_u16::(length | 0x8000)?; - - Ok(2) + write_long_length(stream, length) } else { - stream.write_u8(length as u8)?; - - Ok(1) + write_short_length(stream, length) } } diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index c67a86f7..20e01f2d 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -74,7 +74,11 @@ impl PduBufferParsing<'_> for PreconnectionPdu { } }; - Ok(Self { id, cch_pcb, payload }) + Ok(Self { + id, + cch_pcb, + payload, + }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { @@ -108,7 +112,7 @@ impl PduBufferParsing<'_> for PreconnectionPdu { match version { Version::V1 => PRECONNECTION_PDU_V1_SIZE, - Version::V2 => PRECONNECTION_PDU_V1_SIZE + 2 + (cch_pcb * 2) + Version::V2 => PRECONNECTION_PDU_V1_SIZE + 2 + (cch_pcb * 2), } } } diff --git a/ironrdp/src/rdp/client_info.rs b/ironrdp/src/rdp/client_info.rs index e61beb33..0d5a835a 100644 --- a/ironrdp/src/rdp/client_info.rs +++ b/ironrdp/src/rdp/client_info.rs @@ -458,17 +458,15 @@ impl PduParsing for Option { DayOfWeek::from_u16(day_of_week), DayOfWeekOccurrence::from_u16(day), ) { - (Some(month), Some(day_of_week), Some(day)) => { - Ok(Some(SystemTime { - month, - day_of_week, - day, - hour, - minute, - second, - milliseconds, - })) - } + (Some(month), Some(day_of_week), Some(day)) => Ok(Some(SystemTime { + month, + day_of_week, + day, + hour, + minute, + second, + milliseconds, + })), _ => Ok(None), } } @@ -476,7 +474,15 @@ impl PduParsing for Option { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u16::(0)?; // year match *self { - Some(SystemTime { month, day_of_week, day, hour, minute, second, milliseconds }) => { + Some(SystemTime { + month, + day_of_week, + day, + hour, + minute, + second, + milliseconds, + }) => { stream.write_u16::(month.to_u16().unwrap())?; stream.write_u16::(day_of_week.to_u16().unwrap())?; stream.write_u16::(day.to_u16().unwrap())?; diff --git a/ironrdp/src/rdp/client_info/test.rs b/ironrdp/src/rdp/client_info/test.rs index 6e23ffa4..783435a3 100644 --- a/ironrdp/src/rdp/client_info/test.rs +++ b/ironrdp/src/rdp/client_info/test.rs @@ -116,7 +116,7 @@ lazy_static! { timezone: Some(TimezoneInfo { bias: 0x01e0, standard_name: String::from("Pacific Standard Time"), - standard_date: SystemTime { + standard_date: Some(SystemTime { month: Month::October, day_of_week: DayOfWeek::Sunday, day: DayOfWeekOccurrence::Last, @@ -124,10 +124,10 @@ lazy_static! { minute: 0, second: 0, milliseconds: 0, - }, + }), standard_bias: 0, daylight_name: String::from("Pacific Daylight Time"), - daylight_date: SystemTime { + daylight_date: Some(SystemTime { month: Month::April, day_of_week: DayOfWeek::Sunday, day: DayOfWeekOccurrence::First, @@ -135,7 +135,7 @@ lazy_static! { minute: 0, second: 0, milliseconds: 0, - }, + }), daylight_bias: 0xffff_ffc4, }), session_id: Some(0), diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 8ad86450..1835cd13 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -268,8 +268,7 @@ impl BlobHeader { mut stream: impl io::Read, ) -> Result { let blob_type = stream.read_u16::()?; - let blob_type = - BlobType::from_u16(blob_type).ok_or_else(|| ServerLicenseError::InvalidBlobType)?; + let blob_type = BlobType::from_u16(blob_type).ok_or(ServerLicenseError::InvalidBlobType)?; if blob_type != required_blob_type { return Err(ServerLicenseError::InvalidBlobType); diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs index f112f9bc..5a6371d8 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs @@ -191,10 +191,10 @@ impl PduParsing for PlatformChallengeResponseData { } let client_type = ClientType::from_u16(stream.read_u16::()?) - .ok_or_else(|| ServerLicenseError::InvalidChallengeResponseDataClientType)?; + .ok_or(ServerLicenseError::InvalidChallengeResponseDataClientType)?; let license_detail_level = LicenseDetailLevel::from_u16(stream.read_u16::()?) - .ok_or_else(|| ServerLicenseError::InvalidChallengeResponseDataLicenseDetail)?; + .ok_or(ServerLicenseError::InvalidChallengeResponseDataLicenseDetail)?; let challenge_len = stream.read_u16::()?; let mut challenge = vec![0u8; challenge_len as usize]; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index 41dfca72..5232500a 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -96,7 +96,7 @@ impl Decompressor { let token = TOKEN_TABLE .iter() .find(|token| token.prefix == bits[..token.prefix.len()]) - .ok_or_else(|| ZgfxError::TokenBitsNotFound)?; + .ok_or(ZgfxError::TokenBitsNotFound)?; let _prefix = bits.split_to(token.prefix.len()); match token.ty { diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs index f34873ad..bbfa2f8f 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs @@ -33,7 +33,7 @@ lazy_static! { // let mut zgfx = Decompressor::new(); // for encode in ENCODED_ZGFX_SINGLE.iter() { // zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); -// decompressed.resize(0, 0); +// decompressed.clean(); // } // }); // } @@ -51,7 +51,7 @@ fn zgfx_decopresses_multiple_single_pdus() { "Failed to decompress encoded PDU #{}", i ); - decompressed.resize(0, 0); + decompressed.clear(); } } diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index e19ae7fc..732861be 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -68,10 +68,11 @@ impl Processor { self.process_surface_commands(&mut stream, surface_commands)?; } + Ok(FastPathUpdate::Bitmap(bitmap)) => { + info!("Received Bitmap: {:?}", bitmap); + } Err(FastPathError::UnsupportedFastPathUpdate(code)) - if code == UpdateCode::Orders - || code == UpdateCode::Bitmap - || code == UpdateCode::Palette => + if code == UpdateCode::Orders || code == UpdateCode::Palette => { return Err(RdpError::UnexpectedFastPathUpdate(code)); } diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index f95c0be3..4069b173 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -149,7 +149,7 @@ impl<'a> Processor<'a> { if let Some(dvc_data) = self .dynamic_channels .get_mut(&data.channel_id) - .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .ok_or(RdpError::AccessToNonExistingChannel(data.channel_id))? .process_data_first_pdu(data.total_data_size as usize, data_buff)? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { @@ -176,7 +176,7 @@ impl<'a> Processor<'a> { if let Some(dvc_data) = self .dynamic_channels .get_mut(&data.channel_id) - .ok_or_else(|| RdpError::AccessToNonExistingChannel(data.channel_id))? + .ok_or(RdpError::AccessToNonExistingChannel(data.channel_id))? .process_data_pdu(data_buff)? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { diff --git a/ironrdp_client/src/active_session/x224/gfx.rs b/ironrdp_client/src/active_session/x224/gfx.rs index 209e9eb3..8396b97b 100644 --- a/ironrdp_client/src/active_session/x224/gfx.rs +++ b/ironrdp_client/src/active_session/x224/gfx.rs @@ -31,7 +31,7 @@ impl DynamicChannelDataHandler for Handler { &mut self, complete_data: Vec, ) -> Result>, RdpError> { - self.decompressed_buffer.resize(0, 0); + self.decompressed_buffer.clear(); self.decompressor .decompress(complete_data.as_slice(), &mut self.decompressed_buffer)?; let gfx_pdu = ServerPdu::from_buffer(self.decompressed_buffer.as_slice())?; diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 7535f17d..c271caec 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -503,10 +503,7 @@ pub fn process_capability_sets( }; let desktop_sizes = capability_sets .iter() - .find(|c| match c { - CapabilitySet::Bitmap(_) => true, - _ => false, - }) + .find(|c| matches!(c, CapabilitySet::Bitmap(_))) .map(|c| match c { CapabilitySet::Bitmap(b) => DesktopSizes { width: b.desktop_width, diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index e9273cd5..5dbc8dcd 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -95,10 +95,8 @@ pub fn create_client_confirm_active( config: &InputConfig, mut server_capability_sets: Vec, ) -> Result { - server_capability_sets.retain(|capability_set| match capability_set { - CapabilitySet::MultiFragmentUpdate(_) => true, - _ => false, - }); + server_capability_sets + .retain(|capability_set| matches!(capability_set, CapabilitySet::MultiFragmentUpdate(_))); server_capability_sets.extend_from_slice(&[ create_general_capability_set(), create_bitmap_capability_set(config), @@ -121,10 +119,7 @@ pub fn create_client_confirm_active( if server_capability_sets .iter() - .find(|c| match c { - CapabilitySet::MultiFragmentUpdate(_) => true, - _ => false, - }) + .find(|c| matches!(c, CapabilitySet::MultiFragmentUpdate(_))) .is_none() { server_capability_sets.push(create_multi_fragment_update_capability_set()); diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index f827a576..3b82eebe 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -109,7 +109,9 @@ fn establish_tls( let cert = tls_stream .sess .get_peer_certificates() - .ok_or_else(|| RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented))?; + .ok_or(RdpError::TlsConnectorError( + rustls::TLSError::NoCertificatesPresented, + ))?; let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; Ok(UpgradedStream { From 04711ff0bc4ac7891403dc591405cba623c14956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 27 Oct 2020 18:43:21 -0400 Subject: [PATCH 0056/1273] ironrdp: bump to 0.4.2 --- ironrdp/Cargo.toml | 2 +- ironrdp_client/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index f080abca..1c71f2d9 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp" -version = "0.4.1" +version = "0.4.2" edition = "2018" readme = "../README.md" license = "MIT/Apache-2.0" diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 8c1846ca..c4d20e8c 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp_client" -version = "0.4.0" +version = "0.4.2" edition = "2018" readme = "README.md" license = "MIT/Apache-2.0" From 2b97e9c0c86d4776af16924e3a08b1af26725713 Mon Sep 17 00:00:00 2001 From: Daniel Heater Date: Mon, 10 Jan 2022 09:42:12 -0600 Subject: [PATCH 0057/1273] Fix spelling errors in Bitmap error codes (#33) --- ironrdp/src/basic_output/bitmap.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index 27e7b187..f653150b 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -229,11 +229,11 @@ pub enum BitmapError { actual, expected )] InvalidDataLength { actual: usize, expected: usize }, - #[fail(display = "Compression is not suppported for Bitmap data")] + #[fail(display = "Compression is not supported for Bitmap data")] NotSupportedCompression, #[fail(display = "Invalid first row size, must be 0, but got: {}", _0)] InvalidFirstRowSize(usize), - #[fail(display = "The witdh of the bitmap must be divisible by 4")] + #[fail(display = "The width of the bitmap must be divisible by 4")] InvalidScanWidth, } From a8b68aab8a98b96a316ff5bad0136ca4ba6bd961 Mon Sep 17 00:00:00 2001 From: Daniel Heater Date: Tue, 11 Jan 2022 19:30:59 -0600 Subject: [PATCH 0058/1273] Slk 11764 (#35) * Ignore IDE/editor generated files and log from command line execution * Swallow non-zero first row size not zero error for bitmaps and make a best effort to continue running * Don't use println. Propagate bitmap error up to client and add handling there * Use map_err to remap to a BitmapError to FastPathError --- .gitignore | 6 ++++++ ironrdp/src/basic_output/bitmap.rs | 14 ++++++++++---- ironrdp/src/basic_output/fast_path.rs | 2 +- ironrdp_client/src/active_session/fast_path.rs | 3 +++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 1e7caa9e..64706cbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ Cargo.lock target/ +ironrdp_client.log + +# Editor/IDE files +*~ +tags +.idea/ diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index f653150b..b30d12ab 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -174,7 +174,10 @@ impl<'a> PduBufferParsing<'a> for CompressedDataHeader { fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let size = buffer.read_u16::()?; if size != FIRST_ROW_SIZE_VALUE { - return Err(BitmapError::InvalidFirstRowSize(size as usize)); + return Err(BitmapError::InvalidFirstRowSize { + actual: size as usize, + expected: FIRST_ROW_SIZE_VALUE as usize, + }); } let main_body_size = buffer.read_u16::()?; @@ -225,14 +228,17 @@ pub enum BitmapError { #[fail(display = "Invalid update type for Bitmap Update")] InvalidUpdateType, #[fail( - display = "Input buffer len is shorten than the data length: {} < {}", + display = "Input buffer len is shorter than the data length: {} < {}", actual, expected )] InvalidDataLength { actual: usize, expected: usize }, #[fail(display = "Compression is not supported for Bitmap data")] NotSupportedCompression, - #[fail(display = "Invalid first row size, must be 0, but got: {}", _0)] - InvalidFirstRowSize(usize), + #[fail( + display = "Invalid first row size, expected: {}, but got: {}", + actual, expected + )] + InvalidFirstRowSize { actual: usize, expected: usize }, #[fail(display = "The width of the bitmap must be divisible by 4")] InvalidScanWidth, } diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs index 0e6b3247..71efc378 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp/src/basic_output/fast_path.rs @@ -177,7 +177,7 @@ impl<'a> FastPathUpdate<'a> { Ok(Self::SurfaceCommands(commands)) } UpdateCode::Bitmap => { - let bitmap = Bitmap::from_buffer_consume(buffer)?; + let bitmap = Bitmap::from_buffer_consume(buffer).map_err(|error| FastPathError::BitmapError(error))?; Ok(Self::Bitmap(bitmap)) } _ => Err(FastPathError::UnsupportedFastPathUpdate(code)), diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index 732861be..c3a76e46 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -79,6 +79,9 @@ impl Processor { Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { warn!("Received unsupported Fast-Path update: {:?}", update_code) } + Err(FastPathError::BitmapError(error)) => { + warn!("Received invalid bitmap: {:?}", error) + } Err(e) => { return Err(RdpError::from(e)); } From d81760753e80f0d4a71e8d3905953aa34b644b4a Mon Sep 17 00:00:00 2001 From: Randy Bobandy Date: Thu, 24 Feb 2022 08:33:58 -0500 Subject: [PATCH 0059/1273] ci: updating .github/CODEOWNERS --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..9f8c87ea --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +/.github/ @devolutions/devops \ No newline at end of file From e44d5cd14ebd13211f7324bc71d4b644613ed82e Mon Sep 17 00:00:00 2001 From: Jean-Francois Theroux <261030+failshell@users.noreply.github.com> Date: Thu, 3 Mar 2022 16:15:50 -0500 Subject: [PATCH 0060/1273] chore: [skip ci] updating .github/CODEOWNERS (managed by devops) --- .github/CODEOWNERS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9f8c87ea..013f2e03 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,3 @@ -/.github/ @devolutions/devops \ No newline at end of file +# File auto-generated and managed by Devops +/.github/ @devolutions/devops +/.github/dependabot.yml @devolutions/security-managers From 8e9d8dc777f8359faddb661980045b9050c2eeeb Mon Sep 17 00:00:00 2001 From: Jean-Francois Theroux <261030+failshell@users.noreply.github.com> Date: Thu, 10 Mar 2022 10:11:12 -0500 Subject: [PATCH 0061/1273] chore: [skip ci] updating .github/CODEOWNERS (managed by devops) --- .github/CODEOWNERS | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 013f2e03..ccd1db7e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1 @@ # File auto-generated and managed by Devops -/.github/ @devolutions/devops -/.github/dependabot.yml @devolutions/security-managers From 8b69d46f9885af734854d17b3031f5e58b100562 Mon Sep 17 00:00:00 2001 From: devolutionsinfra <83407390+devolutionsinfra@users.noreply.github.com> Date: Thu, 10 Mar 2022 10:47:23 -0500 Subject: [PATCH 0062/1273] chore: [skip ci] updating .github/CODEOWNERS (managed by devops) --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ccd1db7e..013f2e03 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,3 @@ # File auto-generated and managed by Devops +/.github/ @devolutions/devops +/.github/dependabot.yml @devolutions/security-managers From ad4099ae124fa71c31068fe88abfbc6b96a15264 Mon Sep 17 00:00:00 2001 From: Daniel Heater Date: Fri, 8 Apr 2022 13:58:06 -0500 Subject: [PATCH 0063/1273] Update dependency versions and other minor cleanups (#36) --- ironrdp/Cargo.toml | 30 +++++++++---------- ironrdp/src/basic_output/bitmap.rs | 2 +- ironrdp/src/rdp/server_license.rs | 4 +-- .../client_new_license_request.rs | 8 ++--- .../client_platform_challenge_response.rs | 4 +-- .../server_license/server_license_request.rs | 4 +-- ironrdp_client/README.md | 2 +- .../src/active_session/fast_path.rs | 16 +++++----- 8 files changed, 36 insertions(+), 34 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 1c71f2d9..2dc2e367 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -12,19 +12,19 @@ description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] [dependencies] -byteorder = "1.3" -bitflags = "1.2" -num-derive = "0.3" -num-traits = "0.2" -lazy_static = "1.4" -bytes = "0.5" -num-integer = "0.1" -failure = "0.1" -x509-parser = "0.6.0" -ring = "0.16.0" -md-5 = "0.8.0" -num-bigint = "0.2.0" -der-parser = "3.0.0" bit_field = "0.10" -bitvec = "0.17.1" -hex-literal = "0.2" +bitflags = "1.3" +bitvec = "0.17" +byteorder = "1.4" +bytes = "1.1" +der-parser = "7.0.0" +failure = "0.1" +hex-literal = "0.3" +lazy_static = "1.4" +md-5 = "0.10" +num-bigint = "0.4" +num-derive = "0.3" +num-integer = "0.1" +num-traits = "0.2" +ring = "0.16" +x509-parser = "0.13" diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index b30d12ab..9722ed67 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -147,7 +147,7 @@ impl<'a> Debug for BitmapData<'a> { width - {}, height - {}, bits_per_pixel - {}, - compression_flagss - ({:?}), + compression_flags - ({:?}), compressed_data_header - {:?} \nReceived Bitmap data buffer with length - {}\n]", self.rectangle, diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 1835cd13..7ed68232 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -325,13 +325,13 @@ fn compute_mac_data(mac_salt_key: &[u8], data: &[u8]) -> Vec { let pad_two: [u8; 48] = [0x5c; 48]; let mut md5 = md5::Md5::new(); - md5.input( + md5.update( [mac_salt_key, pad_two.as_ref(), sha_result.as_ref()] .concat() .as_slice(), ); - md5.result().to_vec() + md5.finalize().to_vec() } fn read_license_header( diff --git a/ironrdp/src/rdp/server_license/client_new_license_request.rs b/ironrdp/src/rdp/server_license/client_new_license_request.rs index 421de732..61a38ed0 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request.rs @@ -74,7 +74,7 @@ impl ClientNewLicenseRequest { let mac_salt_key = &session_key_blob[..16]; let mut md5 = md5::Md5::new(); - md5.input( + md5.update( [ &session_key_blob[16..32], client_random, @@ -83,7 +83,7 @@ impl ClientNewLicenseRequest { .concat() .as_slice(), ); - let license_key = Vec::from(md5.result().as_ref()); + let license_key = md5.finalize().to_vec(); let license_header = LicenseHeader { security_header: BasicSecurityHeader { @@ -229,9 +229,9 @@ fn salted_hash(salt: &[u8], salt_first: &[u8], salt_second: &[u8], input: &[u8]) ); let mut md5 = md5::Md5::new(); - md5.input([salt, sha_result.as_ref()].concat().as_slice()); + md5.update([salt, sha_result.as_ref()].concat().as_slice()); - md5.result().to_vec() + md5.finalize().to_vec() } // According to https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/88061224-4a2f-4a28-a52e-e896b75ed2d3 diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs index 5a6371d8..7deb6be2 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs @@ -58,8 +58,8 @@ impl ClientPlatformChallengeResponse { let mut hardware_id = Vec::with_capacity(CLIENT_HARDWARE_IDENTIFICATION_SIZE); let mut md5 = md5::Md5::new(); - md5.input(hostname.as_bytes()); - let hardware_data = &md5.result(); + md5.update(hostname.as_bytes()); + let hardware_data = &md5.finalize(); hardware_id.write_u32::(PLATFORM_ID)?; hardware_id.write_all(hardware_data)?; diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index 2232022e..4a8662b9 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -5,7 +5,7 @@ pub mod test; use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use x509_parser::parse_x509_der; +use x509_parser::parse_x509_certificate; use cert::{CertificateType, ProprietaryCertificate, X509CertificateChain}; @@ -289,7 +289,7 @@ impl ServerCertificate { Ok(public_key_buffer) } CertificateType::X509(certificate) => { - if let Ok((_, tbs)) = parse_x509_der( + if let Ok((_, tbs)) = parse_x509_certificate( &certificate.certificate_array[certificate.certificate_array.len() - 1] .as_slice(), ) { diff --git a/ironrdp_client/README.md b/ironrdp_client/README.md index 74f1fb9e..d55ee893 100644 --- a/ironrdp_client/README.md +++ b/ironrdp_client/README.md @@ -1,7 +1,7 @@ # IronRDP client A command-line RDP client, which performs connection to an RDP server and decodes RFX graphical updates. -If IronRDP client will encounter an error, then will return `error` exit code and print what caused +If IronRDP client encounters an error, then will return `error` exit code and print what caused an error. ## Prerequisites diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index c3a76e46..c15a73d3 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -3,27 +3,29 @@ use std::{ sync::{Arc, Mutex}, }; +use log::{debug, info, warn}; +use num_traits::FromPrimitive; + use ironrdp::{ codecs::rfx::FrameAcknowledgePdu, fast_path::{ FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, }, - surface_commands::{FrameAction, SurfaceCommand}, - PduBufferParsing, ShareDataPdu, + PduBufferParsing, + ShareDataPdu, surface_commands::{FrameAction, SurfaceCommand}, }; -use log::{debug, info, warn}; -use num_traits::FromPrimitive; +use ironrdp::surface_commands::FrameMarkerPdu; -use super::{codecs::rfx, DecodedImage, DESTINATION_PIXEL_FORMAT}; use crate::{ + RdpError, transport::{ DataTransport, Encoder, McsTransport, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, }, utils::CodecId, - RdpError, }; -use ironrdp::surface_commands::FrameMarkerPdu; + +use super::{codecs::rfx, DecodedImage, DESTINATION_PIXEL_FORMAT}; pub struct Processor { complete_data: CompleteData, From 2e8165d7ef970b0503494b4ba572205fa58bb4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 14 Apr 2022 17:00:26 -0400 Subject: [PATCH 0064/1273] test: update `md-5` crate usage Test wasn't updated and compilation was broken. --- .../server_license/client_platform_challenge_response/test.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs index 2a08275b..bb226687 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs @@ -213,8 +213,8 @@ fn challenge_response_creates_from_server_challenge_and_encryption_data_correctl let mut hardware_id = Vec::with_capacity(CLIENT_HARDWARE_IDENTIFICATION_SIZE); let mut md5 = md5::Md5::new(); - md5.input(b"sample-hostname"); - let hardware_data = &md5.result(); + md5.update(b"sample-hostname"); + let hardware_data = &md5.finalize(); hardware_id.write_u32::(PLATFORM_ID).unwrap(); hardware_id.write_all(hardware_data).unwrap(); From c71e553537130e892c0bc62d93727be075f8f8ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 14 Apr 2022 17:01:36 -0400 Subject: [PATCH 0065/1273] build: update all dependencies using cargo-edit --- ironrdp/Cargo.toml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 2dc2e367..985d83f4 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -12,19 +12,19 @@ description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] [dependencies] -bit_field = "0.10" -bitflags = "1.3" -bitvec = "0.17" -byteorder = "1.4" -bytes = "1.1" -der-parser = "7.0.0" -failure = "0.1" -hex-literal = "0.3" -lazy_static = "1.4" -md-5 = "0.10" -num-bigint = "0.4" -num-derive = "0.3" -num-integer = "0.1" -num-traits = "0.2" -ring = "0.16" -x509-parser = "0.13" +bit_field = "0.10.1" +bitflags = "1.3.2" +bitvec = "1.0.0" +byteorder = "1.4.3" +bytes = "1.1.0" +der-parser = "8.0.0" +failure = "0.1.8" +hex-literal = "0.3.4" +lazy_static = "1.4.0" +md-5 = "0.10.1" +num-bigint = "0.4.3" +num-derive = "0.3.3" +num-integer = "0.1.44" +num-traits = "0.2.14" +ring = "0.16.20" +x509-parser = "0.13.2" From 32311d2fc9f7cf2415603de291a160c87c12a17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 14 Apr 2022 17:04:16 -0400 Subject: [PATCH 0066/1273] build: fix code using `bitvec` crate --- ironrdp/src/ber.rs | 12 ++-- ironrdp/src/codecs/rfx/rlgr.rs | 65 ++++++++++----------- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 94 ++++++++++++++++-------------- ironrdp/src/utils.rs | 11 ++-- 4 files changed, 92 insertions(+), 90 deletions(-) diff --git a/ironrdp/src/ber.rs b/ironrdp/src/ber.rs index 974721de..40ed51cd 100644 --- a/ironrdp/src/ber.rs +++ b/ironrdp/src/ber.rs @@ -54,11 +54,11 @@ pub fn sizeof_octet_string(length: u16) -> u16 { } pub fn sizeof_integer(value: u32) -> u16 { - if value < 0x80 { + if value < 0x0000_0080 { 3 - } else if value < 0x8000 { + } else if value < 0x0000_8000 { 4 - } else if value < 0x800_000 { + } else if value < 0x0080_0000 { 5 } else { 6 @@ -162,17 +162,17 @@ pub fn read_enumerated(mut stream: impl io::Read, count: u8) -> io::Result { pub fn write_integer(mut stream: impl io::Write, value: u32) -> io::Result { write_universal_tag(&mut stream, Tag::Integer, Pc::Primitive)?; - if value < 0x80 { + if value < 0x0000_0080 { write_length(&mut stream, 1)?; stream.write_u8(value as u8)?; Ok(3) - } else if value < 0x8000 { + } else if value < 0x0000_8000 { write_length(&mut stream, 2)?; stream.write_u16::(value as u16)?; Ok(4) - } else if value < 0x800_000 { + } else if value < 0x0080_0000 { write_length(&mut stream, 3)?; stream.write_u8((value >> 16) as u8)?; stream.write_u16::((value & 0xFFFF) as u16)?; diff --git a/ironrdp/src/codecs/rfx/rlgr.rs b/ironrdp/src/codecs/rfx/rlgr.rs index f60ed9c3..1793302b 100644 --- a/ironrdp/src/codecs/rfx/rlgr.rs +++ b/ironrdp/src/codecs/rfx/rlgr.rs @@ -3,7 +3,9 @@ mod tests; use std::{cmp::min, io}; -use bitvec::prelude::{BitField, BitSlice, BitStore, Msb0}; +use bitvec::field::BitField as _; +use bitvec::order::Msb0; +use bitvec::slice::BitSlice; use failure::Fail; use super::EntropyAlgorithm; @@ -56,17 +58,17 @@ pub fn decode( while !bits.is_empty() && !output.is_empty() { match CompressionMode::from(k) { CompressionMode::RunLength => { - let number_of_zeros = count_number_of_leading_value(&mut bits, false); + let number_of_zeros = truncate_leading_value(&mut bits, false); try_split_bits!(bits, 1); let run = count_run(number_of_zeros, &mut k, &mut kp) - + load_be::(try_split_bits!(bits, k as usize)); + + load_be_u32(try_split_bits!(bits, k as usize)); let sign_bit = try_split_bits!(bits, 1).load_be::(); - let number_of_ones = count_number_of_leading_value(&mut bits, true); + let number_of_ones = truncate_leading_value(&mut bits, true); try_split_bits!(bits, 1); - let code_remainder = load_be::(try_split_bits!(bits, kr as usize)) + let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) + ((number_of_ones as u32) << kr); update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); @@ -81,10 +83,10 @@ pub fn decode( write_byte!(output, magnitude); } CompressionMode::GolombRice => { - let number_of_ones = count_number_of_leading_value(&mut bits, true); + let number_of_ones = truncate_leading_value(&mut bits, true); try_split_bits!(bits, 1); - let code_remainder = load_be::(try_split_bits!(bits, kr as usize)) + let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) + ((number_of_ones as u32) << kr); update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); @@ -97,7 +99,7 @@ pub fn decode( EntropyAlgorithm::Rlgr3 => { let n_index = compute_n_index(code_remainder); - let val1 = load_be::(try_split_bits!(bits, n_index)); + let val1 = load_be_u32(try_split_bits!(bits, n_index)); let val2 = code_remainder - val1; if val1 != 0 && val2 != 0 { kp = kp.saturating_sub(2 * DQ_GR); @@ -130,26 +132,23 @@ fn fill(buffer: &mut [i16], value: i16) { } } -fn load_be(s: &BitSlice) -> U -where - U: BitStore, -{ +fn load_be_u32(s: &BitSlice) -> u32 { if s.is_empty() { - U::from(0) + 0 } else { - s.load_be::() + s.load_be::() } } -fn count_number_of_leading_value(bits: &mut Bits<'_>, value: bool) -> usize { - let number_of_zeros = bits - .iter() - .take_while(|&&v| v == value) - .map(|_| 1) - .sum::(); - bits.split_to(number_of_zeros); - - number_of_zeros +// Returns number of truncated bits +fn truncate_leading_value(bits: &mut Bits<'_>, value: bool) -> usize { + let leading_values = if value { + bits.leading_ones() + } else { + bits.leading_zeros() + }; + bits.split_to(leading_values); + leading_values } fn count_run(number_of_zeros: usize, k: &mut u32, kp: &mut u32) -> u32 { @@ -199,19 +198,15 @@ fn compute_rlgr3_magnitude(val: u32) -> i16 { } fn compute_n_index(code_remainder: u32) -> usize { - if code_remainder != 0 { - let code_bytes = code_remainder.to_be_bytes(); - let code_bits = BitSlice::::from_slice(code_bytes.as_ref()); - let number_of_zeros = code_bits - .iter() - .take_while(|&&v| !v) - .map(|_| 1) - .sum::(); - - 32 - number_of_zeros - } else { - 0 + if code_remainder == 0 { + return 0; } + + let code_bytes = code_remainder.to_be_bytes(); + let code_bits = BitSlice::::from_slice(code_bytes.as_ref()); + let leading_zeros = code_bits.leading_zeros(); + + 32 - leading_zeros } fn update_parameters_according_to_number_of_ones( diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index 5232500a..4d8897fb 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -1,11 +1,15 @@ mod circular_buffer; mod control_messages; + #[cfg(test)] mod tests; use std::io::{self, Write}; -use bitvec::prelude::{bits, BitField, BitSlice, Msb0}; +use bitvec::bits; +use bitvec::field::BitField as _; +use bitvec::order::Msb0; +use bitvec::slice::BitSlice; use byteorder::WriteBytesExt; use failure::Fail; use lazy_static::lazy_static; @@ -178,7 +182,9 @@ fn read_unencoded_bytes( let unencoded_bits = bits.split_to(length * 8); - let unencoded_bytes = unencoded_bits.as_slice(); + // FIXME: not very efficient, but we need to rework the `Bits` helper and refactor a bit otherwise + let unencoded_bits = unencoded_bits.to_bitvec(); + let unencoded_bytes = unencoded_bits.as_raw_slice(); history.write_all(unencoded_bytes)?; output.extend_from_slice(unencoded_bytes); @@ -195,7 +201,7 @@ fn read_encoded_bytes( // how many additional bits will be needed to get the full length // (the number of bytes to be copied). - let length_token_size = bits.iter().take_while(|&&v| v).map(|_| 1).sum::(); + let length_token_size = bits.leading_ones(); bits.split_to(length_token_size + 1); // length token + zero bit let length = if length_token_size == 0 { @@ -220,7 +226,7 @@ fn read_encoded_bytes( } struct Token { - pub prefix: &'static BitSlice, + pub prefix: &'static BitSlice, pub ty: TokenType, } @@ -238,252 +244,252 @@ enum TokenType { lazy_static! { static ref TOKEN_TABLE: [Token; 40] = [ Token { - prefix: bits![Msb0, u8; 0], + prefix: bits![static u8, Msb0; 0], ty: TokenType::NullLiteral, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x00 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x01 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x02 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x03 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x0ff }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x04 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 0, 1, 1, 1, 1], + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x05 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x06 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x07 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 0], ty: TokenType::Literal { literal_value: 0x08 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 0, 1, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 1], ty: TokenType::Literal { literal_value: 0x09 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x0a }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x0b }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x3a }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 0, 1, 1, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x3b }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 0], ty: TokenType::Literal { literal_value: 0x3c }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 1], ty: TokenType::Literal { literal_value: 0x3d }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 0], ty: TokenType::Literal { literal_value: 0x3e }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 0, 1, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 1], ty: TokenType::Literal { literal_value: 0x3f }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x40 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x80 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Literal { literal_value: 0x0c }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Literal { literal_value: 0x38 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 1, 0], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 0], ty: TokenType::Literal { literal_value: 0x39 }, }, Token { - prefix: bits![Msb0, u8; 1, 1, 1, 1, 1, 1, 1, 1], + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 1], ty: TokenType::Literal { literal_value: 0x66 }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 0, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 0, 0, 1], ty: TokenType::Match { distance_value_size: 5, distance_base: 0 }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 0, 1, 0], + prefix: bits![static u8, Msb0; 1, 0, 0, 1, 0], ty: TokenType::Match { distance_value_size: 7, distance_base: 32 }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 0, 1, 1], + prefix: bits![static u8, Msb0; 1, 0, 0, 1, 1], ty: TokenType::Match { distance_value_size: 9, distance_base: 160 }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 0, 0], ty: TokenType::Match { distance_value_size: 10, distance_base: 672, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 1, 0, 1], ty: TokenType::Match { distance_value_size: 12, distance_base: 1_696, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 14, distance_base: 5_792, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 15, distance_base: 22_176, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 18, distance_base: 54_944, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 20, distance_base: 317_088, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 20, distance_base: 1_365_664, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 21, distance_base: 2_414_240, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 0, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 0], ty: TokenType::Match { distance_value_size: 22, distance_base: 4_511_392, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 0, 1], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 1], ty: TokenType::Match { distance_value_size: 23, distance_base: 8_705_696, }, }, Token { - prefix: bits![Msb0, u8; 1, 0, 1, 1, 1, 1, 1, 1, 0], + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 1, 0], ty: TokenType::Match { distance_value_size: 24, distance_base: 17_094_304, diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 1edf86e4..efd25101 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -116,31 +116,32 @@ pub fn write_string_with_null_terminator( } pub struct Bits<'a> { - bits_slice: &'a BitSlice, + bits_slice: &'a BitSlice, remaining_bits_of_last_byte: usize, } impl<'a> Bits<'a> { - pub fn new(bits_slice: &'a BitSlice) -> Self { + pub fn new(bits_slice: &'a BitSlice) -> Self { Self { bits_slice, remaining_bits_of_last_byte: 0, } } - pub fn split_to(&mut self, at: usize) -> &'a BitSlice { + + pub fn split_to(&mut self, at: usize) -> &'a BitSlice { let (value, new_bits) = self.bits_slice.split_at(at); self.bits_slice = new_bits; self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; - value } + pub fn remaining_bits_of_last_byte(&self) -> usize { self.remaining_bits_of_last_byte } } impl<'a> ops::Deref for Bits<'a> { - type Target = BitSlice; + type Target = BitSlice; fn deref(&self) -> &Self::Target { self.bits_slice From 7264c017128a8143f23e3bf0a75a0dbe44bf6da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 12:44:32 -0400 Subject: [PATCH 0067/1273] refactor: fix clippy warnings Issuing `cargo clippy --fix` did most of the job. --- ironrdp/src/basic_output/bitmap.rs | 2 +- ironrdp/src/basic_output/fast_path.rs | 2 +- ironrdp/src/codecs/rfx/dwt.rs | 6 ++-- ironrdp/src/codecs/rfx/quantization.rs | 2 +- .../src/codecs/rfx/rectangles_processing.rs | 8 ++--- ironrdp/src/codecs/rfx/rlgr/tests.rs | 4 +-- ironrdp/src/gcc.rs | 6 +--- .../src/rdp/capability_sets/bitmap_codecs.rs | 2 +- ironrdp/src/rdp/capability_sets/input.rs | 5 +-- .../client_new_license_request.rs | 2 +- .../server_license/server_license_request.rs | 10 +++--- .../server_license_request/cert.rs | 2 +- .../server_license/server_upgrade_license.rs | 2 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 22 ++++++------ ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs | 35 ++++++++----------- ironrdp/src/utils.rs | 4 +-- ironrdp/src/utils/rc4.rs | 16 ++++----- ironrdp/src/utils/rsa.rs | 8 ++--- .../src/active_session/codecs/rfx.rs | 8 ++--- ironrdp_client/src/config.rs | 12 +++---- ironrdp_client/src/connection_sequence.rs | 16 ++++----- .../src/connection_sequence/user_info.rs | 5 ++- 22 files changed, 81 insertions(+), 98 deletions(-) diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index 9722ed67..1004917b 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -49,7 +49,7 @@ impl<'a> PduBufferParsing<'a> for Bitmap<'a> { fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u16::(BitmapFlags::BITMAP_UPDATE_TYPE.bits())?; buffer.write_u16::(self.rectangles_number as u16)?; - for ref bitmap_data in self.rectangles.iter() { + for bitmap_data in self.rectangles.iter() { bitmap_data.to_buffer_consume(buffer)?; } diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs index 71efc378..21e3cddc 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp/src/basic_output/fast_path.rs @@ -177,7 +177,7 @@ impl<'a> FastPathUpdate<'a> { Ok(Self::SurfaceCommands(commands)) } UpdateCode::Bitmap => { - let bitmap = Bitmap::from_buffer_consume(buffer).map_err(|error| FastPathError::BitmapError(error))?; + let bitmap = Bitmap::from_buffer_consume(buffer).map_err(FastPathError::BitmapError)?; Ok(Self::Bitmap(bitmap)) } _ => Err(FastPathError::UnsupportedFastPathUpdate(code)), diff --git a/ironrdp/src/codecs/rfx/dwt.rs b/ironrdp/src/codecs/rfx/dwt.rs index caee9cf0..56f63942 100644 --- a/ironrdp/src/codecs/rfx/dwt.rs +++ b/ironrdp/src/codecs/rfx/dwt.rs @@ -6,7 +6,7 @@ use crate::utils::SplitTo; pub fn decode(buffer: &mut [i16], temp_buffer: &mut [i16]) { decode_block(&mut buffer[3840..], temp_buffer, 8); decode_block(&mut buffer[3072..], temp_buffer, 16); - decode_block(&mut buffer[..], temp_buffer, 32); + decode_block(&mut *buffer, temp_buffer, 32); } fn decode_block(buffer: &mut [i16], temp_buffer: &mut [i16], subband_width: usize) { @@ -74,10 +74,10 @@ fn inverse_vertical(mut buffer: &mut [i16], mut temp_buffer: &[i16], subband_wid - ((i32::from(temp_buffer[subband_width * total_width]) * 2 + 1) >> 1)) as i16; - let mut l = &temp_buffer[..]; + let mut l = temp_buffer; let mut lh = &temp_buffer[(subband_width - 1) * total_width..]; let mut h = &temp_buffer[subband_width * total_width..]; - let mut dst = &mut buffer[..]; + let mut dst = &mut *buffer; for _ in 1..subband_width { l = &l[total_width..]; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp/src/codecs/rfx/quantization.rs index 945d1198..36267514 100644 --- a/ironrdp/src/codecs/rfx/quantization.rs +++ b/ironrdp/src/codecs/rfx/quantization.rs @@ -12,7 +12,7 @@ pub fn decode(buffer: &mut [i16], quant: &Quant) { let (second_level, third_level) = buffer.split_at_mut(SECOND_LEVEL_SUBBANDS_COUNT * SECOND_LEVEL_SIZE); - let decode_chunk = |mut a: (&mut [i16], u8)| decode_block(&mut a.0, a.1 as i16 - 1); + let decode_chunk = |a: (&mut [i16], u8)| decode_block(a.0, a.1 as i16 - 1); first_level .chunks_mut(FIRST_LEVEL_SIZE) diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs index 95d54e9e..5f6cecbc 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -81,16 +81,14 @@ impl Region { 0 => Self::new(), 1 => self .extents - .intersect(&rectangle) + .intersect(rectangle) .map(Self::from) .unwrap_or_default(), _ => { let rectangles = self .rectangles .iter() - .take_while(|r| r.top < rectangle.bottom) - .map(|r| r.intersect(&rectangle)) - .filter_map(|v| v) + .take_while(|r| r.top < rectangle.bottom).filter_map(|r| r.intersect(rectangle)) .collect::>(); let extents = Rectangle::union_all(rectangles.as_slice()); @@ -240,7 +238,7 @@ fn handle_rectangle_that_overlaps_band( dst, max(rectangle.top, band_top), min(rectangle.bottom, band_bottom), - &rectangle, + rectangle, ); // split current band by the `rectangle.bottom` and the current band bottom (case 1, 4) diff --git a/ironrdp/src/codecs/rfx/rlgr/tests.rs b/ironrdp/src/codecs/rfx/rlgr/tests.rs index 8e332b8a..97579d33 100644 --- a/ironrdp/src/codecs/rfx/rlgr/tests.rs +++ b/ironrdp/src/codecs/rfx/rlgr/tests.rs @@ -30,7 +30,7 @@ fn decode_works_with_rlgr3() { #[test] fn decode_correctly_decodes_rl_without_leading_zeros_and_ones() { #[allow(clippy::inconsistent_digit_grouping)] - let input = [0b11000_000]; + let input = [0b1100_0000]; let expected = [0, 1]; let mode = EntropyAlgorithm::Rlgr3; @@ -42,7 +42,7 @@ fn decode_correctly_decodes_rl_without_leading_zeros_and_ones() { #[test] fn decode_correctly_decodes_rl_with_not_null_sign_bit() { #[allow(clippy::inconsistent_digit_grouping)] - let input = [0b11100_000]; + let input = [0b1110_0000]; let expected = [0, -1]; let mode = EntropyAlgorithm::Rlgr3; diff --git a/ironrdp/src/gcc.rs b/ironrdp/src/gcc.rs index 4f4cd181..c1ebb71b 100644 --- a/ironrdp/src/gcc.rs +++ b/ironrdp/src/gcc.rs @@ -85,11 +85,7 @@ pub struct ClientGccBlocks { impl ClientGccBlocks { pub fn channel_names(&self) -> Option> { - if let Some(network) = &self.network { - Some(network.channels.clone()) - } else { - None - } + self.network.as_ref().map(|network| network.channels.clone()) } } diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs index 85849f48..72dbc8c4 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs @@ -82,7 +82,7 @@ impl PduParsing for Guid { } fn buffer_length(&self) -> usize { - 16 as usize + 16_usize } } diff --git a/ironrdp/src/rdp/capability_sets/input.rs b/ironrdp/src/rdp/capability_sets/input.rs index 4da0f064..ed8dc6e8 100644 --- a/ironrdp/src/rdp/capability_sets/input.rs +++ b/ironrdp/src/rdp/capability_sets/input.rs @@ -74,10 +74,7 @@ impl PduParsing for Input { buffer.write_u32::(self.keyboard_layout)?; let type_buffer = match self.keyboard_type.as_ref() { - Some(value) => match value.to_u32() { - Some(n) => n, - None => 0, - }, + Some(value) => value.to_u32().unwrap_or(0), None => 0, }; buffer.write_u32::(type_buffer)?; diff --git a/ironrdp/src/rdp/server_license/client_new_license_request.rs b/ironrdp/src/rdp/server_license/client_new_license_request.rs index 61a38ed0..136f6e6d 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request.rs @@ -59,7 +59,7 @@ impl ClientNewLicenseRequest { .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "attempted to retrieve the server public key from a server license request message that does not have a certificate"))?; - let encrypted_premaster_secret = encrypt_with_public_key(&premaster_secret, &public_key)?; + let encrypted_premaster_secret = encrypt_with_public_key(premaster_secret, &public_key)?; let master_secret = compute_master_secret( premaster_secret, diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index 4a8662b9..c5eaaaff 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -290,7 +290,7 @@ impl ServerCertificate { } CertificateType::X509(certificate) => { if let Ok((_, tbs)) = parse_x509_certificate( - &certificate.certificate_array[certificate.certificate_array.len() - 1] + certificate.certificate_array[certificate.certificate_array.len() - 1] .as_slice(), ) { Ok(Vec::from( @@ -369,7 +369,7 @@ impl PduParsing for ProductInfo { let version = stream.read_u32::()?; let company_name_len = stream.read_u32::()?; - if company_name_len < 2 || company_name_len > MAX_COMPANY_NAME_LEN { + if !(2..=MAX_COMPANY_NAME_LEN).contains(&company_name_len) { return Err(ServerLicenseError::InvalidCompanyNameLength( company_name_len, )); @@ -379,10 +379,10 @@ impl PduParsing for ProductInfo { stream.read_exact(&mut company_name)?; company_name.resize((company_name_len - 2) as usize, 0); - let company_name = utils::bytes_to_utf16_string(&company_name.as_slice()); + let company_name = utils::bytes_to_utf16_string(company_name.as_slice()); let product_id_len = stream.read_u32::()?; - if product_id_len < 2 || product_id_len > MAX_PRODUCT_ID_LEN { + if !(2..=MAX_PRODUCT_ID_LEN).contains(&product_id_len) { return Err(ServerLicenseError::InvalidProductIdLength(product_id_len)); } @@ -390,7 +390,7 @@ impl PduParsing for ProductInfo { stream.read_exact(&mut product_id)?; product_id.resize((product_id_len - 2) as usize, 0); - let product_id = utils::bytes_to_utf16_string(&product_id.as_slice()); + let product_id = utils::bytes_to_utf16_string(product_id.as_slice()); Ok(Self { version, diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp/src/rdp/server_license/server_license_request/cert.rs index 4b2089e4..92386d75 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/cert.rs @@ -70,7 +70,7 @@ impl PduParsing for X509CertificateChain { let padding_len = (8 + 4 * self.certificate_array.len()) as usize; // MSDN: A byte array of the length 8 + 4*NumCertBlobs let padding = vec![0u8; padding_len]; - stream.write_all(&padding.as_slice())?; + stream.write_all(padding.as_slice())?; Ok(()) } diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license.rs b/ironrdp/src/rdp/server_license/server_upgrade_license.rs index 4d69e1e6..659a3470 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license.rs +++ b/ironrdp/src/rdp/server_license/server_upgrade_license.rs @@ -176,7 +176,7 @@ impl PduParsing for NewLicenseInformation { )?; stream.write_u32::(self.license_info.len() as u32)?; - stream.write_all(&self.license_info.as_slice())?; + stream.write_all(self.license_info.as_slice())?; Ok(()) } diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index 4d8897fb..a1f49377 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -34,19 +34,19 @@ impl Decompressor { pub fn decompress( &mut self, input: &[u8], - mut output: &mut Vec, + output: &mut Vec, ) -> Result { let segmented_data = SegmentedDataPdu::from_buffer(input)?; match segmented_data { - SegmentedDataPdu::Single(segment) => self.handle_segment(&segment, &mut output), + SegmentedDataPdu::Single(segment) => self.handle_segment(&segment, output), SegmentedDataPdu::Multipart { uncompressed_size, segments, } => { let mut bytes_written = 0; for segment in segments { - let written = self.handle_segment(&segment, &mut output)?; + let written = self.handle_segment(&segment, output)?; bytes_written += written; } @@ -65,14 +65,14 @@ impl Decompressor { fn handle_segment( &mut self, segment: &BulkEncodedData<'_>, - mut output: &mut Vec, + output: &mut Vec, ) -> Result { if !segment.data.is_empty() { if segment .compression_flags .contains(CompressionFlags::COMPRESSED) { - self.decompress_segment(segment.data, &mut output) + self.decompress_segment(segment.data, output) } else { self.history.write_all(segment.data)?; output.extend_from_slice(segment.data); @@ -87,13 +87,13 @@ impl Decompressor { fn decompress_segment( &mut self, encoded_data: &[u8], - mut output: &mut Vec, + output: &mut Vec, ) -> Result { let mut bits = BitSlice::from_slice(encoded_data); // The value of the last byte indicates the number of unused bits in the final byte bits = &bits[..8 * (encoded_data.len() - 1) - *encoded_data.last().unwrap() as usize]; - let mut bits = Bits::new(&bits); + let mut bits = Bits::new(bits); let mut bytes_written = 0; while !bits.is_empty() { @@ -129,7 +129,7 @@ impl Decompressor { distance_value_size, distance_base, &mut self.history, - &mut output, + output, )?; bytes_written += written; } @@ -151,7 +151,7 @@ fn handle_match( distance_value_size: usize, distance_base: u32, history: &mut FixedCircularBuffer, - mut output: &mut Vec, + output: &mut Vec, ) -> io::Result { // Each token has been assigned a different base distance // and number of additional value bits to be added to compute the full distance. @@ -159,9 +159,9 @@ fn handle_match( let distance = (distance_base + bits.split_to(distance_value_size).load_be::()) as usize; if distance == 0 { - read_unencoded_bytes(bits, history, &mut output) + read_unencoded_bytes(bits, history, output) } else { - read_encoded_bytes(bits, distance, history, &mut output) + read_encoded_bytes(bits, distance, history, output) } } diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs index bbfa2f8f..f28c0db9 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs @@ -57,8 +57,7 @@ fn zgfx_decopresses_multiple_single_pdus() { #[test] fn zgfx_decopresses_only_one_literal() { - #[allow(clippy::inconsistent_digit_grouping)] - let buffer = [0b11001_000, 0x03]; + let buffer = [0b1100_1000, 0x03]; let expected = vec![0x01]; let mut zgfx = Decompressor::new(); @@ -70,8 +69,7 @@ fn zgfx_decopresses_only_one_literal() { #[test] fn zgfx_decopresses_one_literal_with_null_prefix() { - #[allow(clippy::inconsistent_digit_grouping)] - let buffer = [0b0_0110010, 0b1_0000000, 0x07]; + let buffer = [0b0011_0010, 0b1000_0000, 0x07]; let expected = vec![0x65]; let mut zgfx = Decompressor::new(); @@ -83,8 +81,7 @@ fn zgfx_decopresses_one_literal_with_null_prefix() { #[test] fn zgfx_decopresses_only_multiple_literals() { - #[allow(clippy::inconsistent_digit_grouping)] - let buffer = [0b11001_110, 0b100_11011, 0b0_0_011001, 0b01_000000, 0x06]; + let buffer = [0b1100_1110, 0b1001_1011, 0b0001_1001, 0b0100_0000, 0x06]; let expected = vec![0x01, 0x02, 0xff, 0x65]; let mut zgfx = Decompressor::new(); @@ -96,8 +93,7 @@ fn zgfx_decopresses_only_multiple_literals() { #[test] fn zgfx_decopresses_one_literal_with_one_match_distance_1() { - #[allow(clippy::inconsistent_digit_grouping)] - let buffer = [0b0_0110010, 0b1_10001_00, 0b001_10_00_0, 0x1]; + let buffer = [0b0011_0010, 0b1100_0100, 0b0011_0000, 0x1]; let expected = vec![0x65; 1 + 4]; // literal (1) + match repeated 4 (length) + 0 times let mut zgfx = Decompressor::new(); @@ -109,14 +105,13 @@ fn zgfx_decopresses_one_literal_with_one_match_distance_1() { #[test] fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { - #[allow(clippy::inconsistent_digit_grouping)] let buffer = [ - 0b0_0100000, - 0b1_0_010000, - 0b10_0_01000, - 0b011_10001, - 0b_00011_111, - 0b10_11001_0, + 0b0010_0000, + 0b1001_0000, + 0b1000_1000, + 0b0111_0001, + 0b0001_1111, + 0b1011_0010, 0x1, ]; let expected = "ABC".repeat(20); @@ -132,8 +127,7 @@ fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { #[test] fn zgfx_decopresses_one_match_with_match_unencoded_bytes() { let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); - #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] - let mut buffer = vec![0b10001_000, 0b00_000000, 0b00010101, 0b1_0000000]; + let mut buffer = vec![0b1000_1000, 0b0000_0000, 0b00010101, 0b1000_0000]; buffer.extend_from_slice(expected); buffer.extend_from_slice(&[0x00]); // no bits unused @@ -211,13 +205,12 @@ fn zgfx_decopresses_single_match_unencoded_block() { #[test] fn zgfx_decopresses_unencoded_block_without_padding() { - #[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)] let buffer = [ - 0b1110010_1, + 0b1110_0101, 0b0001_0000, - 0b0_0000000, + 0b0000_0000, 0b00000001, - 0b_11110000, + 0b1111_0000, 0x0, ]; let expected = vec![0x08, 0xf0]; diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index efd25101..8b53ffc1 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -3,7 +3,7 @@ pub mod rsa; use std::{ cmp::{max, min}, - io, mem, ops, + io, ops, }; use bitvec::prelude::{BitSlice, Msb0}; @@ -258,7 +258,7 @@ impl SplitTo for &mut [T] { fn split_to(&mut self, n: usize) -> Self { assert!(n <= self.len()); - let (a, b) = mem::replace(self, &mut []).split_at_mut(n); + let (a, b) = std::mem::take(self).split_at_mut(n); *self = b; a diff --git a/ironrdp/src/utils/rc4.rs b/ironrdp/src/utils/rc4.rs index fd0185b5..4afde063 100644 --- a/ironrdp/src/utils/rc4.rs +++ b/ironrdp/src/utils/rc4.rs @@ -79,7 +79,7 @@ mod test { let message = "message".to_string(); let expected = [0x66, 0x09, 0x47, 0x9E, 0x45, 0xE8, 0x1E]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -90,7 +90,7 @@ mod test { let message = "message".to_string(); let expected = [0xE5, 0x1A, 0xD5, 0xF3, 0xA2, 0x1C, 0xB1]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -101,7 +101,7 @@ mod test { let message = "0".to_string(); let expected = [0xb8]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -112,7 +112,7 @@ mod test { let message = "a".to_string(); let expected = [0xe9]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -123,7 +123,7 @@ mod test { let message = "".to_string(); let expected = []; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -135,7 +135,7 @@ mod test { let message = "message".to_string(); let expected = [0xBE, 0x74, 0xEB, 0x88, 0x64, 0x8E, 0x6A]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected ); } @@ -155,7 +155,7 @@ mod test { 0xB5, 0x98, 0x57, 0x1C, 0x13, 0x6D, 0x35, 0x0C, 0xDE, ]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected[..] ); } @@ -176,7 +176,7 @@ mod test { 0xCC, 0xA6, 0x4D, 0xBD, 0xEE, 0x31, 0x32, 0x2A, 0x2F, ]; assert_eq!( - Rc4::new(&key.as_bytes()).process(&message.as_bytes())[..], + Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected[..] ); } diff --git a/ironrdp/src/utils/rsa.rs b/ironrdp/src/utils/rsa.rs index 0e2bfea5..77ace89f 100644 --- a/ironrdp/src/utils/rsa.rs +++ b/ironrdp/src/utils/rsa.rs @@ -4,7 +4,7 @@ use der_parser::parse_der; use num_bigint::BigUint; pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Result> { - let (_, der_object) = parse_der(&public_key_der).map_err(|err| { + let (_, der_object) = parse_der(public_key_der).map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, format!("Unable to parse public key from der: {:?}", err), @@ -48,9 +48,9 @@ pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Res ) })?; - let n = BigUint::from_bytes_be(&n); - let e = BigUint::from_bytes_be(&e); - let m = BigUint::from_bytes_le(&message); + let n = BigUint::from_bytes_be(n); + let e = BigUint::from_bytes_be(e); + let m = BigUint::from_bytes_le(message); let c = m.modpow(&e, &n); let mut result = c.to_bytes_le(); diff --git a/ironrdp_client/src/active_session/codecs/rfx.rs b/ironrdp_client/src/active_session/codecs/rfx.rs index 18f9eece..d4db662b 100644 --- a/ironrdp_client/src/active_session/codecs/rfx.rs +++ b/ironrdp_client/src/active_session/codecs/rfx.rs @@ -66,7 +66,7 @@ impl DecodingContext { self.process_headers(input)?; } SequenceState::DataMessages => { - let frame_id = self.process_data_messages(&destination, input, image)?; + let frame_id = self.process_data_messages(destination, input, image)?; return Ok(frame_id); } @@ -135,12 +135,12 @@ impl DecodingContext { debug!("Region: {:?}", region); let clipping_rectangles = - clipping_rectangles(region.rectangles.as_slice(), &destination, width, height); + clipping_rectangles(region.rectangles.as_slice(), destination, width, height); debug!("Clipping rectangles: {:?}", clipping_rectangles); let clipping_rectangles_ref = &clipping_rectangles; for (update_rectangle, tile_data) in - tiles_to_rectangles(tile_set.tiles.as_slice(), &destination).zip(map_tiles_data( + tiles_to_rectangles(tile_set.tiles.as_slice(), destination).zip(map_tiles_data( tile_set.tiles.as_slice(), tile_set.quants.as_slice(), )) @@ -181,7 +181,7 @@ fn process_decoded_tile( ) -> Result<(), RdpError> { debug!("Tile: {:?}", update_rectangle); - let update_region = clipping_rectangles.intersect_rectangle(&update_rectangle); + let update_region = clipping_rectangles.intersect_rectangle(update_rectangle); for region_rectangle in update_region.rectangles() { let source_x = region_rectangle.left - update_rectangle.left; let source_y = region_rectangle.top - update_rectangle.top; diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index dcf2a6d8..db4bb131 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -103,7 +103,7 @@ fn input_args<'a, 'b>() -> [Arg<'a, 'b>; 9] { .takes_value(true) .multiple(true) .possible_values(&["ssl", "hybrid", "hybrid_ex"]) - .default_value(&"hybrid_ex") + .default_value("hybrid_ex") .required(true), Arg::with_name("keyboard-type") .long("keyboard-type") @@ -119,33 +119,33 @@ fn input_args<'a, 'b>() -> [Arg<'a, 'b>; 9] { "nokia9140", "japanese", ]) - .default_value(&"ibm_enhanced"), + .default_value("ibm_enhanced"), Arg::with_name("keyboard-subtype") .long("keyboard-subtype") .value_name("KEYBOARD_SUBTYPE") .help("The keyboard subtype (an original equipment manufacturer-dependent value)") .takes_value(true) - .default_value(&"0") + .default_value("0") .validator(is_uint), Arg::with_name("keyboard-functional-keys-count") .long("keyboard-functional-keys-count") .value_name("KEYBOARD_FUNCTIONAL_KEYS_COUNT") .help("The number of function keys on the keyboard") .takes_value(true) - .default_value(&"12") + .default_value("12") .validator(is_uint), Arg::with_name("ime-file-name") .long("ime-file-name") .value_name("IME_FILENAME") .help("The input method editor (IME) file name associated with the active input locale") .takes_value(true) - .default_value(&""), + .default_value(""), Arg::with_name("dig-product-id") .long("dig-product-id") .value_name("DIG_PRODUCT_ID") .help("Contains a value that uniquely identifies the client") .takes_value(true) - .default_value(&""), + .default_value(""), ] } diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index c271caec..69b1c89c 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -92,11 +92,11 @@ where } let static_channels = - process_mcs_connect(&mut stream, &mut transport, &config, selected_protocol)?; + process_mcs_connect(&mut stream, &mut transport, config, selected_protocol)?; let mut transport = McsTransport::new(transport); let joined_static_channels = - process_mcs(&mut stream, &mut transport, static_channels, &config)?; + process_mcs(&mut stream, &mut transport, static_channels, config)?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels @@ -107,9 +107,9 @@ where .expect("user channel must be added"); let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); - send_client_info(&mut stream, &mut transport, &config, &routing_addr)?; + send_client_info(&mut stream, &mut transport, config, routing_addr)?; - match process_server_license_exchange(&mut stream, &mut transport, &config, global_channel_id) { + match process_server_license_exchange(&mut stream, &mut transport, config, global_channel_id) { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), ))) => { @@ -121,7 +121,7 @@ where let mut transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let desktop_sizes = process_capability_sets(&mut stream, &mut transport, &config)?; + let desktop_sizes = process_capability_sets(&mut stream, &mut transport, config)?; let mut transport = ShareDataHeaderTransport::new(transport); process_finalization(&mut stream, &mut transport, initiator_id)?; @@ -182,7 +182,7 @@ pub fn process_mcs_connect( selected_protocol: nego::SecurityProtocol, ) -> Result { let connect_initial = ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks( - &config, + config, selected_protocol, )?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); @@ -384,7 +384,7 @@ pub fn process_server_license_exchange( client_random.as_slice(), premaster_secret.as_slice(), &config.credentials.username, - &config.credentials.domain.as_deref().unwrap_or(""), + config.credentials.domain.as_deref().unwrap_or(""), ) .map_err(|err| { RdpError::IOError(io::Error::new( @@ -429,7 +429,7 @@ pub fn process_server_license_exchange( let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( &challenge, - &config.credentials.domain.as_deref().unwrap_or(""), + config.credentials.domain.as_deref().unwrap_or(""), &encryption_data, ) .map_err(|err| { diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 5dbc8dcd..86cbbb9e 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -117,10 +117,9 @@ pub fn create_client_confirm_active( }), ]); - if server_capability_sets + if !server_capability_sets .iter() - .find(|c| matches!(c, CapabilitySet::MultiFragmentUpdate(_))) - .is_none() + .any(|c| matches!(&c, CapabilitySet::MultiFragmentUpdate(_))) { server_capability_sets.push(create_multi_fragment_update_capability_set()); } From ad0112b47e3f5999d9557be717ec5eab935f3b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 12:50:00 -0400 Subject: [PATCH 0068/1273] style: run cargo fmt --- ironrdp/src/basic_output/bitmap.rs | 19 +- ironrdp/src/basic_output/bitmap/tests.rs | 15 +- ironrdp/src/basic_output/fast_path.rs | 52 +- ironrdp/src/basic_output/fast_path/test.rs | 9 +- ironrdp/src/basic_output/surface_commands.rs | 54 +- .../basic_output/surface_commands/tests.rs | 178 +- ironrdp/src/ber.rs | 29 +- ironrdp/src/ber/tests.rs | 53 +- ironrdp/src/codecs/rfx.rs | 45 +- ironrdp/src/codecs/rfx/color_conversion.rs | 6 +- .../src/codecs/rfx/color_conversion/tests.rs | 3365 +++++----- ironrdp/src/codecs/rfx/data_messages.rs | 46 +- ironrdp/src/codecs/rfx/dwt.rs | 30 +- ironrdp/src/codecs/rfx/dwt/tests.rs | 1219 ++-- ironrdp/src/codecs/rfx/header_messages.rs | 24 +- ironrdp/src/codecs/rfx/image_processing.rs | 4 +- .../src/codecs/rfx/image_processing/tests.rs | 5666 ++++++++--------- ironrdp/src/codecs/rfx/quantization.rs | 567 +- .../src/codecs/rfx/rectangles_processing.rs | 67 +- .../codecs/rfx/rectangles_processing/tests.rs | 6 +- ironrdp/src/codecs/rfx/rlgr.rs | 27 +- ironrdp/src/codecs/rfx/rlgr/tests.rs | 1087 ++-- ironrdp/src/codecs/rfx/tests.rs | 75 +- ironrdp/src/gcc.rs | 187 +- ironrdp/src/gcc/cluster_data.rs | 10 +- ironrdp/src/gcc/cluster_data/test.rs | 5 +- ironrdp/src/gcc/conference_create.rs | 5 +- ironrdp/src/gcc/conference_create/test.rs | 17 +- ironrdp/src/gcc/core_data/client.rs | 111 +- ironrdp/src/gcc/core_data/client/test.rs | 76 +- ironrdp/src/gcc/core_data/server.rs | 35 +- ironrdp/src/gcc/core_data/server/test.rs | 12 +- ironrdp/src/gcc/message_channel_data.rs | 4 +- ironrdp/src/gcc/monitor_data.rs | 4 +- ironrdp/src/gcc/monitor_data/test.rs | 13 +- ironrdp/src/gcc/monitor_extended_data.rs | 10 +- ironrdp/src/gcc/monitor_extended_data/test.rs | 56 +- .../gcc/multi_transport_channel_data/test.rs | 11 +- ironrdp/src/gcc/network_data.rs | 17 +- ironrdp/src/gcc/network_data/test.rs | 4 +- ironrdp/src/gcc/security_data.rs | 38 +- ironrdp/src/gcc/security_data/test.rs | 62 +- ironrdp/src/gcc/test.rs | 27 +- ironrdp/src/input.rs | 15 +- ironrdp/src/input/mouse.rs | 3 +- ironrdp/src/input/unicode.rs | 5 +- ironrdp/src/lib.rs | 28 +- ironrdp/src/mcs.rs | 88 +- ironrdp/src/mcs/connect_initial.rs | 43 +- ironrdp/src/mcs/connect_initial/test.rs | 19 +- ironrdp/src/mcs/test.rs | 33 +- ironrdp/src/nego.rs | 44 +- ironrdp/src/nego/tests.rs | 44 +- ironrdp/src/per.rs | 28 +- ironrdp/src/per/test.rs | 5 +- ironrdp/src/preconnection.rs | 58 +- ironrdp/src/rdp.rs | 77 +- ironrdp/src/rdp/capability_sets.rs | 237 +- ironrdp/src/rdp/capability_sets/bitmap.rs | 3 +- .../src/rdp/capability_sets/bitmap_cache.rs | 8 +- .../rdp/capability_sets/bitmap_cache/test.rs | 18 +- .../src/rdp/capability_sets/bitmap_codecs.rs | 20 +- .../rdp/capability_sets/bitmap_codecs/test.rs | 50 +- ironrdp/src/rdp/capability_sets/brush.rs | 3 +- .../rdp/capability_sets/frame_acknowledge.rs | 3 +- ironrdp/src/rdp/capability_sets/general.rs | 3 +- .../src/rdp/capability_sets/glyph_cache.rs | 8 +- .../rdp/capability_sets/glyph_cache/test.rs | 11 +- ironrdp/src/rdp/capability_sets/input.rs | 11 +- ironrdp/src/rdp/capability_sets/input/test.rs | 9 +- .../src/rdp/capability_sets/large_pointer.rs | 11 +- .../capability_sets/multifragment_update.rs | 3 +- .../capability_sets/offscreen_bitmap_cache.rs | 3 +- ironrdp/src/rdp/capability_sets/order.rs | 6 +- ironrdp/src/rdp/capability_sets/order/test.rs | 9 +- ironrdp/src/rdp/capability_sets/pointer.rs | 3 +- ironrdp/src/rdp/capability_sets/sound.rs | 3 +- .../rdp/capability_sets/surface_commands.rs | 3 +- .../capability_sets/surface_commands/test.rs | 5 +- ironrdp/src/rdp/capability_sets/test.rs | 460 +- .../rdp/capability_sets/virtual_channel.rs | 3 +- .../capability_sets/virtual_channel/test.rs | 5 +- ironrdp/src/rdp/client_info.rs | 126 +- ironrdp/src/rdp/client_info/test.rs | 86 +- ironrdp/src/rdp/finalization_messages.rs | 10 +- ironrdp/src/rdp/headers.rs | 106 +- ironrdp/src/rdp/server_error_info.rs | 53 +- ironrdp/src/rdp/server_license.rs | 76 +- .../client_new_license_request.rs | 63 +- .../client_new_license_request/test.rs | 75 +- .../client_platform_challenge_response.rs | 41 +- .../test.rs | 81 +- .../server_license/licensing_error_message.rs | 12 +- .../licensing_error_message/test.rs | 5 +- .../server_license/server_license_request.rs | 50 +- .../server_license_request/cert.rs | 20 +- .../server_license_request/test.rs | 363 +- .../server_platform_challenge.rs | 7 +- .../server_platform_challenge/test.rs | 21 +- .../server_license/server_upgrade_license.rs | 50 +- .../server_upgrade_license/test.rs | 1131 ++-- ironrdp/src/rdp/server_license/test.rs | 43 +- ironrdp/src/rdp/session_info.rs | 30 +- .../src/rdp/session_info/logon_extended.rs | 25 +- ironrdp/src/rdp/session_info/logon_info.rs | 17 +- ironrdp/src/rdp/session_info/tests.rs | 333 +- ironrdp/src/rdp/test.rs | 44 +- ironrdp/src/rdp/vc.rs | 16 +- ironrdp/src/rdp/vc/dvc.rs | 71 +- ironrdp/src/rdp/vc/dvc/capabilities.rs | 7 +- ironrdp/src/rdp/vc/dvc/capabilities/tests.rs | 39 +- ironrdp/src/rdp/vc/dvc/close.rs | 8 +- ironrdp/src/rdp/vc/dvc/create.rs | 11 +- ironrdp/src/rdp/vc/dvc/create/tests.rs | 3 +- ironrdp/src/rdp/vc/dvc/data.rs | 6 +- ironrdp/src/rdp/vc/dvc/data/tests.rs | 3 +- ironrdp/src/rdp/vc/dvc/data_first.rs | 11 +- ironrdp/src/rdp/vc/dvc/data_first/tests.rs | 221 +- ironrdp/src/rdp/vc/dvc/gfx.rs | 144 +- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 77 +- .../vc/dvc/gfx/graphics_messages/server.rs | 62 +- .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 645 +- ironrdp/src/rdp/vc/dvc/gfx/test.rs | 47 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 139 +- .../rdp/vc/dvc/gfx/zgfx/circular_buffer.rs | 16 +- .../rdp/vc/dvc/gfx/zgfx/control_messages.rs | 61 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs | 56 +- ironrdp/src/rdp/vc/dvc/tests.rs | 10 +- ironrdp/src/rdp/vc/tests.rs | 3 +- ironrdp/src/utils.rs | 14 +- ironrdp/src/utils/rc4.rs | 73 +- ironrdp/src/utils/rsa.rs | 15 +- ironrdp/src/x224.rs | 26 +- ironrdp/src/x224/tests.rs | 5 +- ironrdp_client/src/active_session.rs | 23 +- .../src/active_session/codecs/rfx.rs | 69 +- .../src/active_session/codecs/rfx/tests.rs | 2235 +++---- .../src/active_session/fast_path.rs | 73 +- ironrdp_client/src/active_session/x224.rs | 86 +- ironrdp_client/src/active_session/x224/gfx.rs | 25 +- ironrdp_client/src/config.rs | 7 +- ironrdp_client/src/connection_sequence.rs | 222 +- .../src/connection_sequence/user_info.rs | 92 +- ironrdp_client/src/errors.rs | 9 +- ironrdp_client/src/lib.rs | 10 +- ironrdp_client/src/main.rs | 26 +- ironrdp_client/src/transport.rs | 77 +- ironrdp_client/src/transport/channels.rs | 23 +- ironrdp_client/src/transport/connection.rs | 18 +- ironrdp_client/src/utils.rs | 3 +- rustfmt.toml | 4 + 151 files changed, 9443 insertions(+), 12951 deletions(-) create mode 100644 rustfmt.toml diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index 1004917b..e9e97219 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -1,18 +1,15 @@ #[cfg(test)] mod tests; +use std::fmt::{self, Debug}; use std::io::{self, Write}; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use failure::Fail; -use std::fmt::{self, Debug}; -use crate::{ - impl_from_error, - utils::{Rectangle, SplitTo}, - PduBufferParsing, PduParsing, -}; +use crate::utils::{Rectangle, SplitTo}; +use crate::{impl_from_error, PduBufferParsing, PduParsing}; pub const COMPRESSED_DATA_HEADER_SIZE: usize = 8; pub const BITMAP_DATA_MAIN_DATA_SIZE: usize = 12; @@ -57,10 +54,7 @@ impl<'a> PduBufferParsing<'a> for Bitmap<'a> { } fn buffer_length(&self) -> usize { - self.rectangles - .iter() - .map(|b| b.buffer_length()) - .sum::() + self.rectangles.iter().map(|b| b.buffer_length()).sum::() } } @@ -234,10 +228,7 @@ pub enum BitmapError { InvalidDataLength { actual: usize, expected: usize }, #[fail(display = "Compression is not supported for Bitmap data")] NotSupportedCompression, - #[fail( - display = "Invalid first row size, expected: {}, but got: {}", - actual, expected - )] + #[fail(display = "Invalid first row size, expected: {}, but got: {}", actual, expected)] InvalidFirstRowSize { actual: usize, expected: usize }, #[fail(display = "The width of the bitmap must be divisible by 4")] InvalidScanWidth, diff --git a/ironrdp/src/basic_output/bitmap/tests.rs b/ironrdp/src/basic_output/bitmap/tests.rs index c060de12..be0c8d3e 100644 --- a/ironrdp/src/basic_output/bitmap/tests.rs +++ b/ironrdp/src/basic_output/bitmap/tests.rs @@ -23,12 +23,11 @@ const BITMAP_BUFFER: [u8; 114] = [ 0x1c, 0x00, // ScanWidth - width of the bitmap in pixels(must be divisible by 4) = 28 // UncompressedSize - size in bytes of the bitmap data after it has been decompressed = 4 0x04, 0x00, // Bitmap data - 0x21, 0x00, 0x21, 0x00, 0x01, 0x00, 0x20, 0x09, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, - 0x00, 0x10, 0xd8, 0x20, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1e, 0x21, - 0x00, 0x00, 0xa8, 0x83, 0x21, 0x00, 0x55, 0xad, 0xff, 0xff, 0x45, 0x29, 0x7a, 0xce, 0xa3, 0x10, - 0x0e, 0x82, 0x45, 0x29, 0x7a, 0xce, 0xd5, 0x82, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, - 0x45, 0x29, 0x9e, 0xf7, 0xff, 0xff, 0x9e, 0xf7, 0x45, 0x29, 0x21, 0x00, 0x55, 0xad, 0x10, 0x10, - 0xa8, 0xd8, 0x60, 0x12, + 0x21, 0x00, 0x21, 0x00, 0x01, 0x00, 0x20, 0x09, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x10, 0xd8, + 0x20, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1e, 0x21, 0x00, 0x00, 0xa8, 0x83, 0x21, 0x00, + 0x55, 0xad, 0xff, 0xff, 0x45, 0x29, 0x7a, 0xce, 0xa3, 0x10, 0x0e, 0x82, 0x45, 0x29, 0x7a, 0xce, 0xd5, 0x82, 0x10, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x45, 0x29, 0x9e, 0xf7, 0xff, 0xff, 0x9e, 0xf7, 0x45, 0x29, 0x21, 0x00, + 0x55, 0xad, 0x10, 0x10, 0xa8, 0xd8, 0x60, 0x12, ]; lazy_static! { @@ -70,9 +69,7 @@ fn from_buffer_bitmap_data_parsses_correctly() { fn to_buffer_bitmap_data_serializes_correcly() { let expected = BITMAP_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - BITMAP - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + BITMAP.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs index 21e3cddc..4af21759 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp/src/basic_output/fast_path.rs @@ -10,12 +10,10 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use super::{ - bitmap::{Bitmap, BitmapError}, - surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}, -}; - -use crate::{impl_from_error, per, utils::SplitTo, PduBufferParsing, PduParsing}; +use super::bitmap::{Bitmap, BitmapError}; +use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; +use crate::utils::SplitTo; +use crate::{impl_from_error, per, PduBufferParsing, PduParsing}; /// Implements the Fast-Path RDP message header PDU. #[derive(Debug, Clone, PartialEq)] @@ -26,10 +24,7 @@ pub struct FastPathHeader { } impl FastPathHeader { - pub fn from_buffer_with_header( - mut stream: impl io::Read, - header: u8, - ) -> Result { + pub fn from_buffer_with_header(mut stream: impl io::Read, header: u8) -> Result { let flags = EncryptionFlags::from_bits_truncate(header.get_bits(6..8)); let (length, sizeof_length) = per::read_length(&mut stream)?; @@ -73,10 +68,7 @@ impl PduParsing for FastPathHeader { // Preserve same layout for header as received per::write_long_length(stream, (self.data_length + self.buffer_length()) as u16)?; } else { - per::write_length( - stream, - (self.data_length + self.minimal_buffer_length()) as u16, - )?; + per::write_length(stream, (self.data_length + self.minimal_buffer_length()) as u16)?; } Ok(()) @@ -105,12 +97,11 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { let header = buffer.read_u8()?; let update_code = header.get_bits(0..4); - let update_code = UpdateCode::from_u8(update_code) - .ok_or(FastPathError::InvalidUpdateCode(update_code))?; + let update_code = UpdateCode::from_u8(update_code).ok_or(FastPathError::InvalidUpdateCode(update_code))?; let fragmentation = header.get_bits(4..6); - let fragmentation = Fragmentation::from_u8(fragmentation) - .ok_or(FastPathError::InvalidFragmentation(fragmentation))?; + let fragmentation = + Fragmentation::from_u8(fragmentation).ok_or(FastPathError::InvalidFragmentation(fragmentation))?; let compression = Compression::from_bits_truncate(header.get_bits(6..8)); if compression.contains(Compression::COMPRESSION_USED) { @@ -156,17 +147,11 @@ pub enum FastPathUpdate<'a> { } impl<'a> FastPathUpdate<'a> { - pub fn from_buffer_with_code( - mut buffer: &'a [u8], - code: UpdateCode, - ) -> Result { + pub fn from_buffer_with_code(mut buffer: &'a [u8], code: UpdateCode) -> Result { Self::from_buffer_consume_with_code(&mut buffer, code) } - pub fn from_buffer_consume_with_code( - buffer: &mut &'a [u8], - code: UpdateCode, - ) -> Result { + pub fn from_buffer_consume_with_code(buffer: &mut &'a [u8], code: UpdateCode) -> Result { match code { UpdateCode::SurfaceCommands => { let mut commands = Vec::with_capacity(1); @@ -201,9 +186,7 @@ impl<'a> FastPathUpdate<'a> { pub fn buffer_length(&self) -> usize { match self { - Self::SurfaceCommands(commands) => { - commands.iter().map(|c| c.buffer_length()).sum::() - } + Self::SurfaceCommands(commands) => commands.iter().map(|c| c.buffer_length()).sum::(), Self::Bitmap(bitmap) => bitmap.buffer_length(), } } @@ -281,19 +264,12 @@ pub enum FastPathError { InvalidFragmentation(u8), #[fail(display = "Received compressed Fast-Path package")] CompressionNotSupported, - #[fail( - display = "Input buffer is shorter then the data length: {} < {}", - actual, expected - )] + #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] InvalidDataLength { expected: usize, actual: usize }, #[fail(display = "Received unsupported Fast-Path Update: {:?}", _0)] UnsupportedFastPathUpdate(UpdateCode), } impl_from_error!(io::Error, FastPathError, FastPathError::IOError); -impl_from_error!( - SurfaceCommandsError, - FastPathError, - FastPathError::SurfaceCommandsError -); +impl_from_error!(SurfaceCommandsError, FastPathError, FastPathError::SurfaceCommandsError); impl_from_error!(BitmapError, FastPathError, FastPathError::BitmapError); diff --git a/ironrdp/src/basic_output/fast_path/test.rs b/ironrdp/src/basic_output/fast_path/test.rs index 03e99f41..204b6349 100644 --- a/ironrdp/src/basic_output/fast_path/test.rs +++ b/ironrdp/src/basic_output/fast_path/test.rs @@ -127,9 +127,7 @@ fn from_buffer_correctly_parses_fast_path_update() { #[test] fn from_buffer_returns_error_on_long_length_for_fast_path_update() { - assert!( - FastPathUpdatePdu::from_buffer(FAST_PATH_UPDATE_PDU_WITH_LONG_LEN_BUFFER.as_ref()).is_err() - ); + assert!(FastPathUpdatePdu::from_buffer(FAST_PATH_UPDATE_PDU_WITH_LONG_LEN_BUFFER.as_ref()).is_err()); } #[test] @@ -145,8 +143,5 @@ fn to_buffer_correctly_serializes_fast_path_update() { #[test] fn buffer_length_is_correct_for_fast_path_update() { - assert_eq!( - FAST_PATH_UPDATE_PDU_BUFFER.len(), - FAST_PATH_UPDATE_PDU.buffer_length() - ); + assert_eq!(FAST_PATH_UPDATE_PDU_BUFFER.len(), FAST_PATH_UPDATE_PDU.buffer_length()); } diff --git a/ironrdp/src/basic_output/surface_commands.rs b/ironrdp/src/basic_output/surface_commands.rs index c832296b..b707c295 100644 --- a/ironrdp/src/basic_output/surface_commands.rs +++ b/ironrdp/src/basic_output/surface_commands.rs @@ -9,7 +9,8 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{impl_from_error, utils::Rectangle, utils::SplitTo, PduBufferParsing, PduParsing}; +use crate::utils::{Rectangle, SplitTo}; +use crate::{impl_from_error, PduBufferParsing, PduParsing}; pub const SURFACE_COMMAND_HEADER_SIZE: usize = 2; @@ -25,19 +26,17 @@ impl<'a> PduBufferParsing<'a> for SurfaceCommand<'a> { fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { let cmd_type = buffer.read_u16::()?; - let cmd_type = SurfaceCommandType::from_u16(cmd_type) - .ok_or(SurfaceCommandsError::InvalidSurfaceCommandType(cmd_type))?; + let cmd_type = + SurfaceCommandType::from_u16(cmd_type).ok_or(SurfaceCommandsError::InvalidSurfaceCommandType(cmd_type))?; match cmd_type { - SurfaceCommandType::SetSurfaceBits => Ok(Self::SetSurfaceBits( - SurfaceBitsPdu::from_buffer_consume(buffer)?, - )), - SurfaceCommandType::FrameMarker => Ok(Self::FrameMarker( - FrameMarkerPdu::from_buffer_consume(buffer)?, - )), - SurfaceCommandType::StreamSurfaceBits => Ok(Self::StreamSurfaceBits( - SurfaceBitsPdu::from_buffer_consume(buffer)?, - )), + SurfaceCommandType::SetSurfaceBits => { + Ok(Self::SetSurfaceBits(SurfaceBitsPdu::from_buffer_consume(buffer)?)) + } + SurfaceCommandType::FrameMarker => Ok(Self::FrameMarker(FrameMarkerPdu::from_buffer_consume(buffer)?)), + SurfaceCommandType::StreamSurfaceBits => { + Ok(Self::StreamSurfaceBits(SurfaceBitsPdu::from_buffer_consume(buffer)?)) + } } } @@ -46,9 +45,7 @@ impl<'a> PduBufferParsing<'a> for SurfaceCommand<'a> { buffer.write_u16::(cmd_type.to_u16().unwrap())?; match self { - Self::SetSurfaceBits(pdu) | Self::StreamSurfaceBits(pdu) => { - pdu.to_buffer_consume(buffer) - } + Self::SetSurfaceBits(pdu) | Self::StreamSurfaceBits(pdu) => pdu.to_buffer_consume(buffer), Self::FrameMarker(pdu) => pdu.to_buffer_consume(buffer), } } @@ -104,8 +101,8 @@ impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { fn from_buffer_consume(buffer: &mut &[u8]) -> Result { let frame_action = buffer.read_u16::()?; - let frame_action = FrameAction::from_u16(frame_action) - .ok_or(SurfaceCommandsError::InvalidFrameAction(frame_action))?; + let frame_action = + FrameAction::from_u16(frame_action).ok_or(SurfaceCommandsError::InvalidFrameAction(frame_action))?; let frame_id = if buffer.is_empty() { // Sometimes Windows 10 RDP server sends not complete FrameMarker PDU (without frame ID), @@ -116,10 +113,7 @@ impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { Some(buffer.read_u32::()?) }; - Ok(Self { - frame_action, - frame_id, - }) + Ok(Self { frame_action, frame_id }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { @@ -202,12 +196,7 @@ impl<'a> PduBufferParsing<'a> for ExtendedBitmapDataPdu<'a> { } fn buffer_length(&self) -> usize { - 12 + self - .header - .as_ref() - .map(PduBufferParsing::buffer_length) - .unwrap_or(0) - + self.data.len() + 12 + self.header.as_ref().map(PduBufferParsing::buffer_length).unwrap_or(0) + self.data.len() } } @@ -289,15 +278,8 @@ pub enum SurfaceCommandsError { InvalidSurfaceCommandType(u16), #[fail(display = "Invalid Frame Marker action: {}", _0)] InvalidFrameAction(u16), - #[fail( - display = "Input buffer is shorter then the data length: {} < {}", - actual, expected - )] + #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] InvalidDataLength { expected: usize, actual: usize }, } -impl_from_error!( - io::Error, - SurfaceCommandsError, - SurfaceCommandsError::IOError -); +impl_from_error!(io::Error, SurfaceCommandsError, SurfaceCommandsError::IOError); diff --git a/ironrdp/src/basic_output/surface_commands/tests.rs b/ironrdp/src/basic_output/surface_commands/tests.rs index 0b8e7dcf..8181df89 100644 --- a/ironrdp/src/basic_output/surface_commands/tests.rs +++ b/ironrdp/src/basic_output/surface_commands/tests.rs @@ -5,81 +5,68 @@ use super::*; const FRAME_MARKER_BUFFER: [u8; 8] = [0x4, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0]; const SURFACE_BITS_BUFFER: [u8; 1217] = [ - 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7, 0x38, 0x4, 0x20, 0x0, 0x0, 0x3, 0x80, 0x7, 0x38, 0x4, - 0xab, 0x4, 0x0, 0x0, 0xc4, 0xcc, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, - 0xc6, 0xcc, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x70, 0x7, 0xa0, 0x0, 0x10, 0x0, - 0xc0, 0x0, 0xc1, 0xca, 0x1, 0x0, 0xc7, 0xcc, 0x7e, 0x4, 0x0, 0x0, 0x1, 0x0, 0xc2, 0xca, 0x0, - 0x0, 0x51, 0x50, 0x1, 0x40, 0x4, 0x0, 0x63, 0x4, 0x0, 0x0, 0x66, 0x66, 0x77, 0x88, 0x98, 0xc3, - 0xca, 0x25, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x2, 0x0, 0x0, 0x1, 0xd, 0x0, 0x5, 0x0, - 0x6, 0x41, 0xb8, 0xbc, 0x5e, 0x7e, 0x2f, 0x3f, 0x17, 0x9f, 0x8b, 0xc3, 0xf9, 0x7c, 0xbe, 0x7e, - 0x7e, 0x2f, 0x43, 0xb3, 0x85, 0x68, 0xe4, 0x70, 0x46, 0x8e, 0x47, 0xa, 0xc8, 0xe4, 0x60, 0x46, - 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, - 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x56, - 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x0, 0xcd, 0xb0, 0x34, 0x1a, 0x1a, 0x1a, 0x34, 0xd6, 0xb7, - 0xe7, 0xc7, 0xc7, 0x4e, 0x9d, 0x3a, 0x69, 0x0, 0x1, 0xf, 0x20, 0xc8, 0x32, 0x19, 0x18, 0x0, - 0xf, 0xe6, 0x43, 0xe4, 0x7c, 0x8f, 0xa7, 0xd7, 0xdf, 0xbf, 0x89, 0x32, 0x8e, 0x82, 0x13, 0xff, - 0xe0, 0x84, 0x82, 0x1f, 0xfe, 0x60, 0x1c, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, - 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0xa5, 0x4, 0x1f, 0xfe, 0x60, 0x5, 0x14, 0x10, 0x7e, 0x30, 0x0, - 0x18, 0xdc, 0x2e, 0x2e, 0x5c, 0xdb, 0x7f, 0x8f, 0xd3, 0xc9, 0x46, 0x0, 0x22, 0x10, 0x10, 0xa, - 0x13, 0xcb, 0xcb, 0x20, 0x0, 0x7e, 0x11, 0x13, 0xa8, 0x82, 0xd8, 0x8d, 0xc4, 0xc5, 0x88, 0x4f, - 0xf4, 0x9, 0xff, 0xff, 0xd1, 0x6, 0xf8, 0x88, 0x13, 0xe2, 0x20, 0x32, 0x65, 0xaf, 0x1e, 0x38, - 0x18, 0x4c, 0x25, 0x4a, 0xc0, 0x27, 0x80, 0x1a, 0xb, 0xdc, 0x1, 0x47, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xbb, 0x0, 0xa4, 0xd, 0x1, 0x25, 0x80, 0xa8, 0x18, 0x4a, 0x40, 0x18, 0x0, - 0x48, 0xa2, 0xa8, 0x0, 0x10, 0x74, 0xd6, 0x80, 0x8, 0xc4, 0x1b, 0x89, 0x10, 0x0, 0x28, 0xdf, - 0xff, 0xf6, 0xa1, 0xc0, 0x0, 0x70, 0xde, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, - 0x1f, 0x10, 0x40, 0xb4, 0x4, 0x85, 0xa0, 0x48, 0xb2, 0x40, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, - 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x3, 0x0, 0x13, 0x1, 0x5, 0x0, 0x5, 0x0, - 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, - 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, - 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, - 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, - 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, - 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, - 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, - 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, - 0xa, 0x4, 0x13, 0xe8, 0x42, 0x41, 0xf, 0xff, 0x30, 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, - 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, 0x7, 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, 0x30, 0x2, 0x8a, 0x8, - 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, 0x2, 0x94, 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, - 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, 0x14, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, - 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0x0, 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, - 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, - 0x1, 0x9, 0xff, 0xff, 0xff, 0xfd, 0x4b, 0xd, 0xb, 0xc8, 0x20, 0xf6, 0x1a, 0x5e, 0x4c, 0x32, - 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, 0x6e, 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, 0x90, - 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, 0xff, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, - 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1d, 0x0, 0x4, 0x0, 0x13, 0x1, 0x5, 0x0, 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, - 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, - 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, - 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, - 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, - 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, - 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, - 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, - 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, 0xa, 0x4, 0x13, 0xe8, 0x42, 0x41, - 0xf, 0xff, 0x30, 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, 0x7, - 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, 0x30, 0x2, 0x8a, 0x8, 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, - 0x2, 0x94, 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, - 0x14, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0x0, - 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, - 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, 0x1, 0x9, 0xff, 0xff, 0xff, 0xfd, 0x4b, 0xd, - 0xb, 0xc8, 0x20, 0xf6, 0x1a, 0x5e, 0x4c, 0x32, 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, 0x6e, - 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, 0x90, 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, - 0xff, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, - 0x0, 0xc3, 0xca, 0xde, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x5, 0x0, 0xc1, 0x0, 0x5, 0x0, - 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, - 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, - 0x72, 0x30, 0x23, 0xb, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x79, 0xf8, 0xbc, 0xfc, 0x5e, 0x7e, 0x2f, - 0x3f, 0x17, 0x9f, 0x8b, 0xcf, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x78, 0xc, 0x1e, 0x81, 0xd0, 0x74, - 0x3a, 0x18, 0x0, 0xb, 0xf5, 0x20, 0x1, 0x0, 0x20, 0x1f, 0xfd, 0x31, 0x20, 0x8, 0x4, 0x1f, 0x54, - 0x28, 0x10, 0x47, 0xd0, 0x84, 0x82, 0x13, 0xe8, 0x19, 0x21, 0xf, 0xff, 0x30, 0x5, 0xa4, 0x81, - 0x52, 0x7d, 0x2e, 0x97, 0x5f, 0x4b, 0xcf, 0xc5, 0xe7, 0xe2, 0xf0, 0x60, 0x40, 0x80, 0x8a, 0x1e, - 0x8f, 0x4c, 0x0, 0x4, 0x4, 0x85, 0x9, 0x6f, 0xff, 0xfa, 0x1, 0x4d, 0xf1, 0x2, 0xb7, 0xa8, 0x14, - 0x84, 0x92, 0x5, 0xa6, 0x16, 0x84, 0x16, 0x8c, 0x5e, 0x1, 0x24, 0x3f, 0xff, 0x80, 0x98, 0xe1, - 0x2, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0xb0, 0x1a, 0x21, 0xe4, 0x4, 0x35, - 0x80, 0xd2, 0x3c, 0x84, 0x30, 0x3, 0x81, 0xa9, 0xa3, 0xc7, 0x80, 0xc, 0x0, 0x41, 0x24, 0x20, - 0x0, 0x5, 0x12, 0xaa, 0xa0, 0x1, 0xc4, 0xe5, 0x54, 0x0, 0x72, 0x72, 0xaa, 0x0, 0x72, 0x4b, - 0x50, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc5, 0xcc, 0x8, 0x0, 0x0, 0x0, 0x1, - 0x0, + 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7, 0x38, 0x4, 0x20, 0x0, 0x0, 0x3, 0x80, 0x7, 0x38, 0x4, 0xab, 0x4, 0x0, 0x0, + 0xc4, 0xcc, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0xc6, 0xcc, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, + 0x1, 0x1, 0x0, 0x70, 0x7, 0xa0, 0x0, 0x10, 0x0, 0xc0, 0x0, 0xc1, 0xca, 0x1, 0x0, 0xc7, 0xcc, 0x7e, 0x4, 0x0, 0x0, + 0x1, 0x0, 0xc2, 0xca, 0x0, 0x0, 0x51, 0x50, 0x1, 0x40, 0x4, 0x0, 0x63, 0x4, 0x0, 0x0, 0x66, 0x66, 0x77, 0x88, 0x98, + 0xc3, 0xca, 0x25, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x2, 0x0, 0x0, 0x1, 0xd, 0x0, 0x5, 0x0, 0x6, 0x41, 0xb8, + 0xbc, 0x5e, 0x7e, 0x2f, 0x3f, 0x17, 0x9f, 0x8b, 0xc3, 0xf9, 0x7c, 0xbe, 0x7e, 0x7e, 0x2f, 0x43, 0xb3, 0x85, 0x68, + 0xe4, 0x70, 0x46, 0x8e, 0x47, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, + 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, + 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x0, 0xcd, 0xb0, 0x34, 0x1a, 0x1a, 0x1a, 0x34, 0xd6, + 0xb7, 0xe7, 0xc7, 0xc7, 0x4e, 0x9d, 0x3a, 0x69, 0x0, 0x1, 0xf, 0x20, 0xc8, 0x32, 0x19, 0x18, 0x0, 0xf, 0xe6, 0x43, + 0xe4, 0x7c, 0x8f, 0xa7, 0xd7, 0xdf, 0xbf, 0x89, 0x32, 0x8e, 0x82, 0x13, 0xff, 0xe0, 0x84, 0x82, 0x1f, 0xfe, 0x60, + 0x1c, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0xa5, 0x4, 0x1f, 0xfe, + 0x60, 0x5, 0x14, 0x10, 0x7e, 0x30, 0x0, 0x18, 0xdc, 0x2e, 0x2e, 0x5c, 0xdb, 0x7f, 0x8f, 0xd3, 0xc9, 0x46, 0x0, + 0x22, 0x10, 0x10, 0xa, 0x13, 0xcb, 0xcb, 0x20, 0x0, 0x7e, 0x11, 0x13, 0xa8, 0x82, 0xd8, 0x8d, 0xc4, 0xc5, 0x88, + 0x4f, 0xf4, 0x9, 0xff, 0xff, 0xd1, 0x6, 0xf8, 0x88, 0x13, 0xe2, 0x20, 0x32, 0x65, 0xaf, 0x1e, 0x38, 0x18, 0x4c, + 0x25, 0x4a, 0xc0, 0x27, 0x80, 0x1a, 0xb, 0xdc, 0x1, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0x0, + 0xa4, 0xd, 0x1, 0x25, 0x80, 0xa8, 0x18, 0x4a, 0x40, 0x18, 0x0, 0x48, 0xa2, 0xa8, 0x0, 0x10, 0x74, 0xd6, 0x80, 0x8, + 0xc4, 0x1b, 0x89, 0x10, 0x0, 0x28, 0xdf, 0xff, 0xf6, 0xa1, 0xc0, 0x0, 0x70, 0xde, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, + 0xe4, 0x0, 0x0, 0x0, 0x1f, 0x10, 0x40, 0xb4, 0x4, 0x85, 0xa0, 0x48, 0xb2, 0x40, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, + 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x3, 0x0, 0x13, 0x1, 0x5, 0x0, 0x5, 0x0, 0x6, 0x49, 0xc9, + 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, + 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, + 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, + 0x2, 0x32, 0x39, 0x18, 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, + 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, + 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, 0x64, 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, + 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, 0xa, 0x4, 0x13, 0xe8, 0x42, 0x41, 0xf, 0xff, 0x30, + 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, 0x7, 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, + 0x30, 0x2, 0x8a, 0x8, 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, 0x2, 0x94, 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, + 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, 0x14, 0xa0, 0x83, 0xff, 0xcc, 0x0, 0xa2, 0x82, 0xf, 0xc6, 0x0, 0x52, 0x82, + 0xf, 0xc6, 0x0, 0x0, 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, + 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, 0x1, 0x9, 0xff, 0xff, 0xff, 0xfd, 0x4b, 0xd, 0xb, 0xc8, 0x20, 0xf6, + 0x1a, 0x5e, 0x4c, 0x32, 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, 0x6e, 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, + 0x90, 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, 0xff, 0x4, 0xf2, 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, 0x8, + 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, 0xca, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x4, 0x0, 0x13, 0x1, + 0x5, 0x0, 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, + 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, + 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, + 0x64, 0x72, 0x30, 0x56, 0x47, 0x23, 0x2, 0x32, 0x39, 0x18, 0x2b, 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, + 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0x23, 0x91, + 0x82, 0xb2, 0x39, 0x18, 0x11, 0x91, 0xc8, 0xc1, 0x59, 0x1c, 0x8c, 0x8, 0xc8, 0xe4, 0x60, 0xac, 0x8e, 0x46, 0x4, + 0x64, 0x72, 0x30, 0x0, 0x4, 0x19, 0x48, 0x0, 0x40, 0x8, 0x7, 0xff, 0x46, 0x24, 0x1, 0x0, 0x83, 0xef, 0xa, 0x4, + 0x13, 0xe8, 0x42, 0x41, 0xf, 0xff, 0x30, 0xe, 0x50, 0x41, 0xff, 0xe6, 0x0, 0x51, 0x41, 0x7, 0xe3, 0x0, 0x29, 0x41, + 0x7, 0xe3, 0x0, 0x52, 0x82, 0xf, 0xff, 0x30, 0x2, 0x8a, 0x8, 0x3f, 0x18, 0x1, 0x4a, 0x8, 0x3f, 0x18, 0x2, 0x94, + 0x10, 0x7f, 0xf9, 0x80, 0x14, 0x50, 0x41, 0xf8, 0xc0, 0xa, 0x50, 0x41, 0xf8, 0xc0, 0x14, 0xa0, 0x83, 0xff, 0xcc, + 0x0, 0xa2, 0x82, 0xf, 0xc6, 0x0, 0x52, 0x82, 0xf, 0xc6, 0x0, 0x0, 0x10, 0x7f, 0x88, 0x1, 0x46, 0xf8, 0x80, 0x53, + 0x70, 0x80, 0xbb, 0x84, 0x13, 0x70, 0x84, 0x6e, 0x10, 0x80, 0x9f, 0x10, 0x81, 0xbe, 0x21, 0x0, 0x1, 0x9, 0xff, + 0xff, 0xff, 0xfd, 0x4b, 0xd, 0xb, 0xc8, 0x20, 0xf6, 0x1a, 0x5e, 0x4c, 0x32, 0xc3, 0x5b, 0x9e, 0x44, 0x40, 0x5, 0xd, + 0x6e, 0x79, 0x11, 0x0, 0x14, 0x37, 0xf8, 0x27, 0x90, 0x0, 0x38, 0x6f, 0x2, 0x79, 0x0, 0x3, 0x86, 0xff, 0x4, 0xf2, + 0x0, 0x7, 0xd, 0x73, 0xe4, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, 0xc3, 0xca, 0xde, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1d, 0x0, 0x5, 0x0, 0xc1, 0x0, 0x5, 0x0, 0x5, 0x0, 0x6, 0x49, 0xc9, 0x81, 0xf2, 0x39, 0x30, 0x23, + 0x23, 0x91, 0x81, 0x19, 0x1c, 0x8c, 0x15, 0x91, 0xc8, 0xc0, 0x8c, 0x8e, 0x46, 0xa, 0xc8, 0xe4, 0x60, 0x46, 0x47, + 0x23, 0x5, 0x64, 0x72, 0x30, 0x23, 0xb, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x79, 0xf8, 0xbc, 0xfc, 0x5e, 0x7e, 0x2f, + 0x3f, 0x17, 0x9f, 0x8b, 0xcf, 0xc5, 0xe7, 0xe2, 0xf3, 0xf1, 0x78, 0xc, 0x1e, 0x81, 0xd0, 0x74, 0x3a, 0x18, 0x0, + 0xb, 0xf5, 0x20, 0x1, 0x0, 0x20, 0x1f, 0xfd, 0x31, 0x20, 0x8, 0x4, 0x1f, 0x54, 0x28, 0x10, 0x47, 0xd0, 0x84, 0x82, + 0x13, 0xe8, 0x19, 0x21, 0xf, 0xff, 0x30, 0x5, 0xa4, 0x81, 0x52, 0x7d, 0x2e, 0x97, 0x5f, 0x4b, 0xcf, 0xc5, 0xe7, + 0xe2, 0xf0, 0x60, 0x40, 0x80, 0x8a, 0x1e, 0x8f, 0x4c, 0x0, 0x4, 0x4, 0x85, 0x9, 0x6f, 0xff, 0xfa, 0x1, 0x4d, 0xf1, + 0x2, 0xb7, 0xa8, 0x14, 0x84, 0x92, 0x5, 0xa6, 0x16, 0x84, 0x16, 0x8c, 0x5e, 0x1, 0x24, 0x3f, 0xff, 0x80, 0x98, + 0xe1, 0x2, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0xb0, 0x1a, 0x21, 0xe4, 0x4, 0x35, 0x80, 0xd2, + 0x3c, 0x84, 0x30, 0x3, 0x81, 0xa9, 0xa3, 0xc7, 0x80, 0xc, 0x0, 0x41, 0x24, 0x20, 0x0, 0x5, 0x12, 0xaa, 0xa0, 0x1, + 0xc4, 0xe5, 0x54, 0x0, 0x72, 0x72, 0xaa, 0x0, 0x72, 0x4b, 0x50, 0x0, 0x0, 0x8, 0x6, 0x0, 0x0, 0x0, 0x8, 0x6, 0x0, + 0xc5, 0xcc, 0x8, 0x0, 0x0, 0x0, 0x1, 0x0, ]; const FRAME_MARKER_PDU: SurfaceCommand<'_> = SurfaceCommand::FrameMarker(FrameMarkerPdu { @@ -88,23 +75,22 @@ const FRAME_MARKER_PDU: SurfaceCommand<'_> = SurfaceCommand::FrameMarker(FrameMa }); lazy_static! { - static ref SURFACE_BITS_PDU: SurfaceCommand<'static> = - SurfaceCommand::StreamSurfaceBits(SurfaceBitsPdu { - destination: Rectangle { - left: 0, - top: 0, - right: 1920, - bottom: 1080, - }, - extended_bitmap_data: ExtendedBitmapDataPdu { - bpp: 32, - codec_id: 3, - width: 1920, - height: 1080, - header: None, - data: &SURFACE_BITS_BUFFER[22..], - }, - }); + static ref SURFACE_BITS_PDU: SurfaceCommand<'static> = SurfaceCommand::StreamSurfaceBits(SurfaceBitsPdu { + destination: Rectangle { + left: 0, + top: 0, + right: 1920, + bottom: 1080, + }, + extended_bitmap_data: ExtendedBitmapDataPdu { + bpp: 32, + codec_id: 3, + width: 1920, + height: 1080, + header: None, + data: &SURFACE_BITS_BUFFER[22..], + }, + }); } #[test] @@ -120,9 +106,7 @@ fn to_buffer_correctly_serializes_surface_command_frame_marker() { let expected = FRAME_MARKER_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - FRAME_MARKER_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + FRAME_MARKER_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -144,9 +128,7 @@ fn to_buffer_correctly_serializes_surface_command_bits() { let expected = SURFACE_BITS_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - SURFACE_BITS_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + SURFACE_BITS_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp/src/ber.rs b/ironrdp/src/ber.rs index 40ed51cd..14b2f5a0 100644 --- a/ironrdp/src/ber.rs +++ b/ironrdp/src/ber.rs @@ -73,8 +73,7 @@ pub fn write_sequence_tag(mut stream: impl io::Write, length: u16) -> io::Result pub fn read_sequence_tag(mut stream: impl io::Read) -> io::Result { let identifier = stream.read_u8()?; - if identifier != Class::Universal as u8 | Pc::Construct as u8 | (TAG_MASK & Tag::Sequence as u8) - { + if identifier != Class::Universal as u8 | Pc::Construct as u8 | (TAG_MASK & Tag::Sequence as u8) { Err(io::Error::new( io::ErrorKind::InvalidData, "invalid sequence tag identifier", @@ -84,11 +83,7 @@ pub fn read_sequence_tag(mut stream: impl io::Read) -> io::Result { } } -pub fn write_application_tag( - mut stream: impl io::Write, - tagnum: u8, - length: u16, -) -> io::Result { +pub fn write_application_tag(mut stream: impl io::Write, tagnum: u8, length: u16) -> io::Result { let taglen = if tagnum > 0x1E { stream.write_u8(Class::Application as u8 | Pc::Construct as u8 | TAG_MASK)?; stream.write_u8(tagnum)?; @@ -142,18 +137,12 @@ pub fn read_enumerated(mut stream: impl io::Read, count: u8) -> io::Result { let length = read_length(&mut stream)?; if length != 1 { - return Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid enumerated len", - )); + return Err(io::Error::new(io::ErrorKind::InvalidData, "invalid enumerated len")); } let enumerated = stream.read_u8()?; if enumerated == std::u8::MAX || enumerated + 1 > count { - return Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid enumerated value", - )); + return Err(io::Error::new(io::ErrorKind::InvalidData, "invalid enumerated value")); } Ok(enumerated) @@ -204,10 +193,7 @@ pub fn read_integer(mut stream: impl io::Read) -> io::Result { } else if length == 8 { stream.read_u64::() } else { - Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid integer len", - )) + Err(io::Error::new(io::ErrorKind::InvalidData, "invalid integer len")) } } @@ -226,10 +212,7 @@ pub fn read_bool(mut stream: impl io::Read) -> io::Result { let length = read_length(&mut stream)?; if length != 1 { - return Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid integer len", - )); + return Err(io::Error::new(io::ErrorKind::InvalidData, "invalid integer len")); } Ok(stream.read_u8()? != 0) diff --git a/ironrdp/src/ber/tests.rs b/ironrdp/src/ber/tests.rs index 57652367..96fc221f 100644 --- a/ironrdp/src/ber/tests.rs +++ b/ironrdp/src/ber/tests.rs @@ -39,28 +39,20 @@ fn write_application_tag_is_correct_with_short_tag() { #[test] fn read_application_tag_is_correct_with_long_tag() { let buf = vec![0x7F, 0x1F, 0x0F]; - assert_eq!( - read_application_tag(&mut buf.as_slice(), 0x1F).unwrap(), - 0x0F - ); + assert_eq!(read_application_tag(&mut buf.as_slice(), 0x1F).unwrap(), 0x0F); } #[test] fn read_application_tag_is_correct_with_short_tag() { let buf = vec![0x68, 0x82, 0x01, 0x00]; - assert_eq!( - read_application_tag(&mut buf.as_slice(), 0x08).unwrap(), - 0x100 - ); + assert_eq!(read_application_tag(&mut buf.as_slice(), 0x08).unwrap(), 0x100); } #[test] fn read_application_tag_returns_error_on_invalid_long_tag() { let buf = vec![0x68, 0x1B, 0x0F]; assert_eq!( - read_application_tag(&mut buf.as_slice(), 0x1F) - .unwrap_err() - .kind(), + read_application_tag(&mut buf.as_slice(), 0x1F).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -69,9 +61,7 @@ fn read_application_tag_returns_error_on_invalid_long_tag() { fn read_application_tag_returns_error_on_invalid_long_tag_value() { let buf = vec![0x7F, 0x1B, 0x0F]; assert_eq!( - read_application_tag(&mut buf.as_slice(), 0x1F) - .unwrap_err() - .kind(), + read_application_tag(&mut buf.as_slice(), 0x1F).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -80,9 +70,7 @@ fn read_application_tag_returns_error_on_invalid_long_tag_value() { fn read_application_tag_returns_error_on_invalid_short_tag() { let buf = vec![0x67, 0x0F]; assert_eq!( - read_application_tag(&mut buf.as_slice(), 0x08) - .unwrap_err() - .kind(), + read_application_tag(&mut buf.as_slice(), 0x08).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -104,9 +92,7 @@ fn read_enumerated_is_correct() { fn read_enumerated_returns_error_on_wrong_tag() { let buf = vec![0x0B, 0x01, 0x0F]; assert_eq!( - read_enumerated(&mut buf.as_slice(), 0x10) - .unwrap_err() - .kind(), + read_enumerated(&mut buf.as_slice(), 0x10).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -115,9 +101,7 @@ fn read_enumerated_returns_error_on_wrong_tag() { fn read_enumerated_returns_error_on_invalid_len() { let buf = vec![0x0A, 0x02, 0x0F]; assert_eq!( - read_enumerated(&mut buf.as_slice(), 0x10) - .unwrap_err() - .kind(), + read_enumerated(&mut buf.as_slice(), 0x10).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -126,9 +110,7 @@ fn read_enumerated_returns_error_on_invalid_len() { fn read_enumerated_returns_error_on_invalid_variant() { let buf = vec![0x0A, 0x01, 0x0F]; assert_eq!( - read_enumerated(&mut buf.as_slice(), 0x05) - .unwrap_err() - .kind(), + read_enumerated(&mut buf.as_slice(), 0x05).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -194,9 +176,7 @@ fn read_octet_string_tag_is_correct() { fn read_octet_string_tag_returns_error_on_wrong_tag() { let buf = vec![0x05, 0x0F]; assert_eq!( - read_octet_string_tag(&mut buf.as_slice()) - .unwrap_err() - .kind(), + read_octet_string_tag(&mut buf.as_slice()).unwrap_err().kind(), io::ErrorKind::InvalidData ); } @@ -213,10 +193,7 @@ fn write_octet_string_is_correct() { #[test] fn read_octet_string_is_correct() { let buf = vec![0x04, 0x03, 0x00, 0x01, 0x02]; - assert_eq!( - read_octet_string(&mut buf.as_slice()).unwrap(), - vec![0x00, 0x01, 0x02] - ); + assert_eq!(read_octet_string(&mut buf.as_slice()).unwrap(), vec![0x00, 0x01, 0x02]); } #[test] @@ -298,10 +275,7 @@ fn write_integer_is_correct_with_1_byte_integer() { #[test] fn read_integer_is_correct_with_8_byte_integer() { let buf = vec![0x02, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; - assert_eq!( - read_integer(&mut buf.as_slice()).unwrap(), - 0x0080_0000_0000_0000 - ); + assert_eq!(read_integer(&mut buf.as_slice()).unwrap(), 0x0080_0000_0000_0000); } #[test] @@ -340,10 +314,7 @@ fn read_integer_returns_error_on_incorrect_len() { #[test] fn write_universal_tag_primitive_integer_is_correct() { let mut buf = Vec::new(); - assert_eq!( - write_universal_tag(&mut buf, Tag::Integer, Pc::Primitive).unwrap(), - 1 - ); + assert_eq!(write_universal_tag(&mut buf, Tag::Integer, Pc::Primitive).unwrap(), 1); assert_eq!(buf, vec![0x02]); } diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index ffa5436d..5dc05f8d 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -11,15 +11,6 @@ mod header_messages; #[cfg(test)] mod tests; -pub use self::{ - data_messages::{ - ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, - RfxRectangle, Tile, TileSetPdu, - }, - header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}, - rlgr::RlgrError, -}; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -27,6 +18,12 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::data_messages::{ + ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, RfxRectangle, Tile, + TileSetPdu, +}; +pub use self::header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}; +pub use self::rlgr::RlgrError; use crate::{impl_from_error, PduBufferParsing, PduParsing}; const BLOCK_HEADER_SIZE: usize = 6; @@ -52,9 +49,7 @@ impl<'a> PduBufferParsing<'a> for Headers { let ty = BlockType::from_u16(ty).ok_or(RfxError::InvalidBlockType(ty))?; match ty { - BlockType::CodecVersions => Ok(Self::CodecVersions( - CodecVersionsPdu::from_buffer_consume(buffer)?, - )), + BlockType::CodecVersions => Ok(Self::CodecVersions(CodecVersionsPdu::from_buffer_consume(buffer)?)), BlockType::Channels => Ok(Self::Channels(ChannelsPdu::from_buffer_consume(buffer)?)), BlockType::Context => Ok(Self::Context(ContextPdu::from_buffer_consume(buffer)?)), _ => Err(RfxError::InvalidHeaderBlockType(ty)), @@ -106,10 +101,7 @@ impl BlockHeader { Ok(Self { ty, data_length }) } - fn from_buffer_consume_with_expected_type( - buffer: &mut &[u8], - expected_type: BlockType, - ) -> Result { + fn from_buffer_consume_with_expected_type(buffer: &mut &[u8], expected_type: BlockType) -> Result { let ty = buffer.read_u16::()?; let ty = BlockType::from_u16(ty).ok_or(RfxError::InvalidBlockType(ty))?; if ty != expected_type { @@ -152,11 +144,7 @@ impl CodecChannelHeader { Ok(Self) } - fn to_buffer_consume_with_type( - &self, - buffer: &mut &mut [u8], - ty: BlockType, - ) -> Result<(), RfxError> { + fn to_buffer_consume_with_type(&self, buffer: &mut &mut [u8], ty: BlockType) -> Result<(), RfxError> { buffer.write_u8(CODEC_ID)?; let channel_id = match ty { @@ -232,14 +220,8 @@ pub enum RfxError { display = "Got unexpected Block type: expected ({:?}) != actual({:?})", expected, actual )] - UnexpectedBlockType { - expected: BlockType, - actual: BlockType, - }, - #[fail( - display = "Got unexpected Block type ({:?}) while was expected header message", - _0 - )] + UnexpectedBlockType { expected: BlockType, actual: BlockType }, + #[fail(display = "Got unexpected Block type ({:?}) while was expected header message", _0)] InvalidHeaderBlockType(BlockType), #[fail(display = "Got invalid block length: {}", _0)] InvalidBlockLength(usize), @@ -267,10 +249,7 @@ pub enum RfxError { InvalidEntropyAlgorithm(u16), #[fail(display = "Got invalid quantization type: {}", _0)] InvalidQuantizationType(u16), - #[fail( - display = "Input buffer is shorter then the data length: {} < {}", - actual, expected - )] + #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] InvalidDataLength { expected: usize, actual: usize }, #[fail(display = "Got invalid Region LRF: {}", _0)] InvalidLrf(bool), diff --git a/ironrdp/src/codecs/rfx/color_conversion.rs b/ironrdp/src/codecs/rfx/color_conversion.rs index 3be52c3a..9c71bf0c 100644 --- a/ironrdp/src/codecs/rfx/color_conversion.rs +++ b/ironrdp/src/codecs/rfx/color_conversion.rs @@ -1,10 +1,8 @@ #[cfg(test)] mod tests; -use std::{ - cmp::{max, min}, - io::{self, Write}, -}; +use std::cmp::{max, min}; +use std::io::{self, Write}; const DIVISOR: f32 = (1 << 16) as f32; const ALPHA: u8 = 255; diff --git a/ironrdp/src/codecs/rfx/color_conversion/tests.rs b/ironrdp/src/codecs/rfx/color_conversion/tests.rs index cabdff81..7ec593c4 100644 --- a/ironrdp/src/codecs/rfx/color_conversion/tests.rs +++ b/ironrdp/src/codecs/rfx/color_conversion/tests.rs @@ -6,11 +6,7 @@ use super::*; fn rgb_from_ycbcr_works_for_zeros() { let ycbcr = YCbCr { y: 0, cb: 0, cr: 0 }; - let expected = Rgb { - r: 128, - g: 128, - b: 128, - }; + let expected = Rgb { r: 128, g: 128, b: 128 }; let actual = Rgb::from(ycbcr); assert_eq!(expected, actual); } @@ -23,11 +19,7 @@ fn rgb_from_ycbcr_works_for_max_values() { cr: 32767, }; - let expected = Rgb { - r: 255, - g: 68, - b: 255, - }; + let expected = Rgb { r: 255, g: 68, b: 255 }; let actual = Rgb::from(ycbcr); assert_eq!(expected, actual); } @@ -53,11 +45,7 @@ fn rgb_from_ycbcr_works_for_regular_values() { cr: -2128, }; - let expected = Rgb { - r: 36, - g: 159, - b: 224, - }; + let expected = Rgb { r: 36, g: 159, b: 224 }; let actual = Rgb::from(ycbcr); assert_eq!(expected, actual); } @@ -91,1835 +79,1534 @@ fn ycbcr_to_rgb_converts_large_buffer() { } const YCBCR_BUFFER_Y: [i16; 4096] = [ - -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, - -72, -98, -124, -150, -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, - -304, -336, -368, -400, -432, -450, -468, -486, -504, -522, -540, -558, -576, -598, -620, -642, - -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, -816, -816, 68, 120, 172, 240, 53, - 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, -120, -146, - -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, - -404, -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, - -733, -754, -775, -796, -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, - 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, -64, -90, -116, -106, -95, -148, -201, -199, -196, - -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, -358, -379, -401, -422, -448, -473, - -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, -776, -776, -776, - -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, - 54, 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, - -219, -237, -254, -271, -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, - -589, -648, -707, -670, -632, -663, -694, -725, -756, -756, -756, -756, 368, 401, 434, 339, - 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, 94, 100, 106, 112, 86, 60, 2, - -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, -228, -240, - -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, - -628, -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, - 282, 260, 238, 246, 254, 118, 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, - -232, -273, -123, 29, -63, -155, -151, -146, -164, -181, -199, -216, -241, -266, -291, -315, - -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, -625, -642, -675, -708, - -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, 356, - -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, - -245, -176, -139, -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, - -400, -395, -455, -514, -558, -601, -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, - 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, 346, 258, -342, -302, -6, 288, 582, 604, - 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, -293, -175, -57, -85, - -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, -487, - -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, - 460, 430, 400, 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, - 1120, 1155, 1190, 1097, 1004, 839, 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, - -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, -368, -464, -416, -368, -448, -528, - -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, 464, 462, 492, - 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, - 1403, 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, - -172, -194, -217, -239, -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, - -601, -617, -633, -633, 772, 701, 630, 623, 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, - -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, 1711, 1806, 1709, 1612, 1531, - 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, -124, -145, - -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, - -642, 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, - 794, 1073, 1575, 1822, 1976, 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, - 1266, 1156, 902, 137, -61, -3, -121, -238, -124, -9, -70, -131, -166, -201, -221, -239, -272, - -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, -667, -619, -619, 776, 760, - 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, 1524, - 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, - 16, -2, -20, 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, - -290, -264, -142, -20, 2956, 2860, -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, - 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, 1081, 1303, 1668, 2034, 2313, 2337, - 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, 40, 74, 748, - 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, - 3007, 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, - 605, 681, 758, 110, 487, 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, - 2829, 2972, 2791, 2610, 2525, 2440, 2341, 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, - 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, -742, 2290, 1738, -1118, -902, - -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, 970, 589, - 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, - 2849, 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, - 485, 350, 216, 145, 75, -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, - 950, 924, 898, 872, 846, 820, 794, 768, 806, 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, - 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, 3314, 3173, 3032, 2941, 1826, - -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, 592, 484, - 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, - 888, 864, 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, - 3023, 3157, 3291, 3350, 3409, 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, - 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, 1545, 1403, 1254, 1106, 974, 842, 1229, - 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, 984, 954, 931, 909, - 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, - 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, - 2666, 2652, 2639, 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, - 170, -92, -354, 1560, 3986, 1970, -558, -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, - 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, 2522, 2781, 3066, 3351, 3443, 3537, - 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, 3062, 2927, - 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, - 10, -263, -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, - 690, 203, 740, 1573, 1894, 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, - 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, -10, 187, -128, 3341, 3226, 3207, 3188, 3236, - 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, 1539, 1158, 777, 396, 112, - -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, 969, - 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, - 3243, 3521, 3800, 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, - 3430, 3361, 3292, 3174, 3057, 3004, 2951, 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, - -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, 1078, 1055, 967, 880, 1114, - 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, 3674, - 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, - 3577, 3518, 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, - -14, -452, -378, -314, -250, -250, 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, - 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, 3543, 3514, 3486, 3729, 3717, 3775, - 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, 3627, 3643, - 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, - 1, -402, -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, - 344, 660, 976, 1284, 2104, 2316, 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, - 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, 3988, 3609, 3742, 3715, 3688, 3715, - 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, 1238, 880, 448, - 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, - 382, 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, - 4074, 3964, 3855, 4337, 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, - 3781, 3604, 3427, 3202, 2977, 2838, 2699, 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, - -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, 1051, 1103, 1156, 20, 933, 950, - 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, 3752, 3784, - 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, - 3292, 3375, 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, - -324, -324, 1392, 1364, 1337, 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, - 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, 736, 649, 563, 332, 102, 1939, 4033, 1982, - 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, 3752, 3806, 3861, 3836, - 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, -286, - 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, - 1204, 1564, 901, 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, - 340, 856, 4028, 4128, 4076, 4024, 4004, 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, - 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, 28, -248, -248, -248, -248, 1456, - 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, -355, 394, 1401, - 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, - 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, - 2880, 2585, 2291, 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, - 1379, 1332, 1286, 1371, 1457, 1030, -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, - 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, 3042, 496, 530, 564, 502, 440, 211, 3055, - 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, 3323, 3094, 2858, 2623, - 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, - 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, - 2150, 2503, 2857, 3105, 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, - 2113, 3945, 4116, 4031, 3946, 3862, 3838, 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, - 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, -222, -254, -254, 1504, 1462, 1420, - 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, 2120, 2322, 2524, - 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, - 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, - 1300, 1071, 842, 69, -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, - 1413, 1627, 1330, -2103, -1184, -820, -712, -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, - 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, 357, 656, 699, 198, 466, 381, 297, - 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, 1931, 1189, 447, - 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, - 1497, 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, - 3533, 3656, 3715, 3774, 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, - 526, 226, -74, 286, 1158, 1678, 1686, 1634, 1582, 1114, 646, 239, -168, -31, 107, -228, -51, - -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, 1470, 1439, 1591, -817, - -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, 3674, - 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, - 325, 108, 147, 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, - -87, -140, -204, -268, -268, 1672, 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, - -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, 3574, 3633, 3693, 3688, 3684, 3661, - 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, 212, 186, 160, - 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, - -144, -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, - 400, 806, 1468, 1938, 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, - 851, 820, 533, 438, 3415, 4252, 4066, 4055, 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, - -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, 96, -19, -134, -137, -140, -204, - -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, 111, 388, 613, - 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, - 832, 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, - 3554, 3610, 3666, 3459, 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, - -264, -264, 1662, 1653, 1644, 1619, 1851, -988, -1267, -986, -704, -402, -100, 10, 120, 404, - 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, 3238, 3303, 3576, 521, 554, - 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, 3989, 3866, - 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, - -260, -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, - 1050, 1585, 2120, 2389, 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, - 342, 2951, 4024, 4015, 4006, 3997, 3988, 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, - 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, -32, -72, -112, -120, -128, -192, - -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, 719, 706, - 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, - 327, 4207, 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, - 3929, 3812, 3695, 3604, 3513, 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, - -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, -1220, -885, -550, -208, 134, 92, 563, 449, - 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, 2460, 843, 763, 794, - 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, 3506, - 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, - -188, 1598, 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, - 435, 702, 870, 1039, 1224, 1409, 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, - 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, - 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, -154, -154, -154, -154, 1784, - 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, 202, 400, - 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, - 3862, 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, - 2623, 2592, 2562, -237, 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, - -286, -1291, -1130, -713, -393, -327, -387, -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, - 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, 3843, 3776, 3789, 3802, 3783, 3764, - 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, 2484, 2617, 1982, - -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, - -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, - 353, 602, 809, 1017, 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, - 3629, 3584, 3523, 3462, 3401, 3341, 3264, 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, - 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, -2834, -956, -2076, -2173, - -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, -304, - -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, - 3558, 3535, 3512, 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, - 270, 154, 38, -6, -50, -110, -170, -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, - -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, 824, -310, -932, -1394, -832, -750, - -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, 3444, 3443, - 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, - 50, 17, -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, - 2045, 1672, 1555, 1328, 1614, 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, - -769, -821, -617, 926, 934, 909, 1397, 3323, 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, - 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, 2291, 2115, 1283, -61, 137, - 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, 1552, - 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, - -1344, -794, 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, - 3449, 3186, 3153, 3121, 3056, 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, - 6, -26, -58, -90, -122, -122, -122, -122, 1516, 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, - 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, 953, 1160, 1111, 117, -363, - 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, 3091, - 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, - -79, -111, -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, - 1286, 1234, 1213, 1193, 1172, 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, - 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, 2798, 3007, 2705, 3106, 2996, 2962, 2928, - 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, -4, -36, -68, -100, - -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, - 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, - 2235, 2439, 2132, 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, - 2324, 2105, 1887, 1733, 811, -79, 55, 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, - 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, 1320, 1279, 1239, 1214, 1189, 1164, - 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, 1472, 2048, - 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, - 1754, 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, - 1852, 1692, 1532, 1494, 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, - 1064, 1030, 995, 996, 998, 935, 873, 878, 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, - 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, 1613, 1745, 1621, 1153, -83, - -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, 1464, - 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, - 979, 962, 945, 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, - 1488, 1844, 1688, 2171, 2142, 1249, 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, - 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, 1542, 1501, 1460, 1429, 1398, 1367, 1336, - 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, 969, 950, 931, 912, 862, - 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, 1200, - 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, - -192, 1552, 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, - 1151, 1128, 1091, 1054, 1017, 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, - 640, 680, 528, 376, 376, 888, 1464, 1016, 637, 258, 295, 332, 297, 262, 227, 192, 167, 142, - 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, 1521, 1498, 1475, 1452, - 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, 972, - 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, - 1690, 1576, 1710, 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, - -52, -82, -112, -128, -144, -144, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, - 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, - 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, 358, 333, 308, - 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, - 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, - 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, - 576, 564, 552, 644, 480, 108, 504, 159, 326, 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, - 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, - 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, - 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, - 294, 301, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, - -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, - 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, - 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, 308, 275, 242, 209, 176, - 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, + -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, -72, -98, -124, -150, + -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, -304, -336, -368, -400, -432, -450, -468, + -486, -504, -522, -540, -558, -576, -598, -620, -642, -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, + -816, -816, 68, 120, 172, 240, 53, 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, + -120, -146, -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, -404, + -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, -733, -754, -775, -796, + -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, + -64, -90, -116, -106, -95, -148, -201, -199, -196, -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, + -358, -379, -401, -422, -448, -473, -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, + -776, -776, -776, -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, 54, + 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, -219, -237, -254, -271, + -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, -589, -648, -707, -670, -632, -663, -694, + -725, -756, -756, -756, -756, 368, 401, 434, 339, 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, + 94, 100, 106, 112, 86, 60, 2, -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, + -228, -240, -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, -628, + -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, 282, 260, 238, 246, 254, 118, + 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, -232, -273, -123, 29, -63, -155, -151, -146, -164, + -181, -199, -216, -241, -266, -291, -315, -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, + -625, -642, -675, -708, -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, + 356, -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, -245, -176, -139, + -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, -400, -395, -455, -514, -558, -601, + -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, + 346, 258, -342, -302, -6, 288, 582, 604, 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, + -293, -175, -57, -85, -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, + -487, -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, 460, 430, 400, + 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, 1120, 1155, 1190, 1097, 1004, 839, + 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, + -368, -464, -416, -368, -448, -528, -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, + 464, 462, 492, 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, 1403, + 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, -172, -194, -217, -239, + -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, -601, -617, -633, -633, 772, 701, 630, 623, + 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, + 1711, 1806, 1709, 1612, 1531, 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, + -124, -145, -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, -642, + 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, 794, 1073, 1575, 1822, 1976, + 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, 1266, 1156, 902, 137, -61, -3, -121, -238, -124, + -9, -70, -131, -166, -201, -221, -239, -272, -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, + -667, -619, -619, 776, 760, 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, + 1524, 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, 16, -2, -20, + 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, -290, -264, -142, -20, 2956, 2860, + -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, + 1081, 1303, 1668, 2034, 2313, 2337, 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, + 40, 74, 748, 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, 3007, + 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, 605, 681, 758, 110, 487, + 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, 2829, 2972, 2791, 2610, 2525, 2440, 2341, + 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, + -742, 2290, 1738, -1118, -902, -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, + 970, 589, 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, 2849, + 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, 485, 350, 216, 145, 75, + -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, 950, 924, 898, 872, 846, 820, 794, 768, 806, + 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, + 3314, 3173, 3032, 2941, 1826, -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, + 592, 484, 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, 888, 864, + 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, 3023, 3157, 3291, 3350, 3409, + 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, + 1545, 1403, 1254, 1106, 974, 842, 1229, 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, + 984, 954, 931, 909, 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, + 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, 2666, 2652, 2639, + 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, 170, -92, -354, 1560, 3986, 1970, -558, + -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, + 2522, 2781, 3066, 3351, 3443, 3537, 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, + 3062, 2927, 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, 10, -263, + -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, 690, 203, 740, 1573, 1894, + 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, + -10, 187, -128, 3341, 3226, 3207, 3188, 3236, 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, + 1539, 1158, 777, 396, 112, -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, + 969, 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, 3243, 3521, 3800, + 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, 3430, 3361, 3292, 3174, 3057, 3004, 2951, + 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, + 1078, 1055, 967, 880, 1114, 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, + 3674, 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, 3577, 3518, + 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, -14, -452, -378, -314, -250, -250, + 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, + 3543, 3514, 3486, 3729, 3717, 3775, 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, + 3627, 3643, 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, 1, -402, + -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, 344, 660, 976, 1284, 2104, 2316, + 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, + 3988, 3609, 3742, 3715, 3688, 3715, 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, + 1238, 880, 448, 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, 382, + 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, 4074, 3964, 3855, 4337, + 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, 3781, 3604, 3427, 3202, 2977, 2838, 2699, + 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, + 1051, 1103, 1156, 20, 933, 950, 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, + 3752, 3784, 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, 3292, 3375, + 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, -324, -324, 1392, 1364, 1337, + 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, + 736, 649, 563, 332, 102, 1939, 4033, 1982, 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, + 3752, 3806, 3861, 3836, 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, + -286, 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, 1204, 1564, 901, + 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, 340, 856, 4028, 4128, 4076, 4024, 4004, + 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, + 28, -248, -248, -248, -248, 1456, 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, + -355, 394, 1401, 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, + 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, 2880, 2585, 2291, + 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, 1379, 1332, 1286, 1371, 1457, 1030, + -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, + 3042, 496, 530, 564, 502, 440, 211, 3055, 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, + 3323, 3094, 2858, 2623, 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, + 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, 2150, 2503, 2857, 3105, + 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, 2113, 3945, 4116, 4031, 3946, 3862, 3838, + 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, + -222, -254, -254, 1504, 1462, 1420, 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, + 2120, 2322, 2524, 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, + 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, 1300, 1071, 842, 69, + -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, 1413, 1627, 1330, -2103, -1184, -820, -712, + -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, + 357, 656, 699, 198, 466, 381, 297, 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, + 1931, 1189, 447, 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, 1497, + 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, 3533, 3656, 3715, 3774, + 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, 526, 226, -74, 286, 1158, 1678, 1686, 1634, + 1582, 1114, 646, 239, -168, -31, 107, -228, -51, -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, + 1470, 1439, 1591, -817, -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, + 3674, 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, 325, 108, 147, + 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, -87, -140, -204, -268, -268, 1672, + 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, + 3574, 3633, 3693, 3688, 3684, 3661, 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, + 212, 186, 160, 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, -144, + -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, 400, 806, 1468, 1938, + 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, 851, 820, 533, 438, 3415, 4252, 4066, 4055, + 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, + 96, -19, -134, -137, -140, -204, -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, + 111, 388, 613, 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, 832, + 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, 3554, 3610, 3666, 3459, + 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, -264, -264, 1662, 1653, 1644, 1619, 1851, + -988, -1267, -986, -704, -402, -100, 10, 120, 404, 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, + 3238, 3303, 3576, 521, 554, 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, + 3989, 3866, 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, -260, + -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, 1050, 1585, 2120, 2389, + 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, 342, 2951, 4024, 4015, 4006, 3997, 3988, + 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, + -32, -72, -112, -120, -128, -192, -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, + 719, 706, 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, 327, 4207, + 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, 3929, 3812, 3695, 3604, 3513, + 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, + -1220, -885, -550, -208, 134, 92, 563, 449, 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, + 2460, 843, 763, 794, 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, + 3506, 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, -188, 1598, + 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, 435, 702, 870, 1039, 1224, 1409, + 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, + 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, + -154, -154, -154, -154, 1784, 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, + 202, 400, 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, 3862, + 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, 2623, 2592, 2562, -237, + 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, -286, -1291, -1130, -713, -393, -327, -387, + -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, + 3843, 3776, 3789, 3802, 3783, 3764, 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, + 2484, 2617, 1982, -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, + -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, 353, 602, 809, 1017, + 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, 3629, 3584, 3523, 3462, 3401, 3341, 3264, + 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, + -2834, -956, -2076, -2173, -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, + -304, -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, 3558, 3535, 3512, + 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, 270, 154, 38, -6, -50, -110, -170, + -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, + 824, -310, -932, -1394, -832, -750, -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, + 3444, 3443, 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, 50, 17, + -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, 2045, 1672, 1555, 1328, 1614, + 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, -769, -821, -617, 926, 934, 909, 1397, 3323, + 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, + 2291, 2115, 1283, -61, 137, 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, + 1552, 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, -1344, -794, + 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, 3449, 3186, 3153, 3121, 3056, + 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, 6, -26, -58, -90, -122, -122, -122, -122, 1516, + 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, + 953, 1160, 1111, 117, -363, 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, + 3091, 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, -79, -111, + -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, 1286, 1234, 1213, 1193, 1172, + 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, + 2798, 3007, 2705, 3106, 2996, 2962, 2928, 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, + -4, -36, -68, -100, -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, + 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, 2235, 2439, 2132, + 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, 2324, 2105, 1887, 1733, 811, -79, 55, + 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, + 1320, 1279, 1239, 1214, 1189, 1164, 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, + 1472, 2048, 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, 1754, + 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, 1852, 1692, 1532, 1494, + 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, 1064, 1030, 995, 996, 998, 935, 873, 878, + 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, + 1613, 1745, 1621, 1153, -83, -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, + 1464, 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, 979, 962, 945, + 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, 1488, 1844, 1688, 2171, 2142, 1249, + 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, + 1542, 1501, 1460, 1429, 1398, 1367, 1336, 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, + 969, 950, 931, 912, 862, 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, + 1200, 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, -192, 1552, + 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, 1151, 1128, 1091, 1054, 1017, + 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, 640, 680, 528, 376, 376, 888, 1464, 1016, 637, + 258, 295, 332, 297, 262, 227, 192, 167, 142, 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, + 1521, 1498, 1475, 1452, 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, + 972, 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, 1690, 1576, 1710, + 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, -52, -82, -112, -128, -144, -144, 1536, + 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, + 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, + 358, 333, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, + 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, + 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 644, 480, 108, 504, 159, 326, + 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, + 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, + 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, + 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, + 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, + 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, + 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, ]; const YCBCR_BUFFER_CB: [i16; 4096] = [ - 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, 1740, 1736, 1732, 1728, 1796, 1864, 1804, - 1744, 1754, 1764, 1774, 1784, 1794, 1804, 1814, 1824, 1774, 1724, 1802, 1880, 1814, 1748, 1810, - 1872, 1878, 1884, 1890, 1896, 1910, 1924, 1938, 1952, 1938, 1924, 1910, 1896, 1914, 1932, 1950, - 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 1710, 1697, 1684, 1704, 1723, 1726, 1730, 1733, 1737, 1738, 1740, 1741, 1743, 1758, 1774, 1757, - 1741, 1762, 1783, 1788, 1793, 1774, 1755, 1784, 1813, 1817, 1821, 1825, 1829, 1857, 1885, 1881, - 1877, 1849, 1821, 1857, 1894, 1904, 1914, 1924, 1935, 1928, 1922, 1915, 1909, 1922, 1936, 1949, - 1963, 1974, 1985, 1997, 2008, 2009, 2011, 2012, 2014, 2017, 2020, 2023, 2026, 2026, 2026, 2026, - 1692, 1664, 1637, 1674, 1711, 1715, 1720, 1725, 1730, 1737, 1744, 1751, 1758, 1721, 1684, 1711, - 1738, 1770, 1802, 1802, 1802, 1754, 1706, 1754, 1802, 1860, 1918, 1848, 1778, 1900, 2022, 1952, - 1882, 1820, 1759, 1825, 1892, 1898, 1905, 1911, 1918, 1919, 1920, 1921, 1922, 1931, 1940, 1949, - 1958, 1974, 1991, 2008, 2025, 2021, 2018, 2015, 2012, 2018, 2024, 2030, 2036, 2036, 2036, 2036, - 1674, 1631, 1590, 1644, 1698, 1704, 1710, 1716, 1723, 1735, 1748, 1760, 1773, 1763, 1754, 1760, - 1767, 1794, 1821, 1800, 1779, 1830, 1881, 1900, 1919, 2047, 2175, 2015, 1855, 1879, 1903, 1927, - 1951, 1759, 1824, 1857, 1890, 1892, 1895, 1898, 1901, 1909, 1918, 1926, 1935, 1939, 1944, 1948, - 1953, 1974, 1997, 2019, 2041, 2033, 2025, 2017, 2010, 2019, 2028, 2037, 2046, 2046, 2046, 2046, - 1656, 1599, 1543, 1614, 1686, 1693, 1701, 1708, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1810, - 1796, 1818, 1840, 2054, 2268, 1650, 1032, 510, -12, -70, -128, 390, 908, 1602, 2296, 2158, - 2020, 1699, 1890, 1889, 1888, 1887, 1886, 1885, 1884, 1900, 1916, 1932, 1948, 1948, 1948, 1948, - 1948, 1975, 2003, 2030, 2058, 2045, 2033, 2020, 2008, 2020, 2032, 2044, 2056, 2056, 2056, 2056, - 1590, 1570, 1551, 1612, 1673, 1580, 1743, 1713, 1685, 1672, 1660, 1711, 1763, 1694, 1626, 1941, - 2001, 2060, 583, -654, -1891, -2046, -2201, -2084, -1967, -2049, -2131, -2053, -1975, -1751, - -1527, 41, 1609, 2374, 1859, 2000, 1886, 1899, 1912, 1909, 1907, 1900, 1894, 1919, 1945, 1944, - 1944, 1943, 1943, 1967, 1992, 2017, 2042, 2033, 2024, 2014, 2006, 2017, 2028, 2039, 2050, 2050, - 2050, 2050, 1524, 1542, 1560, 1610, 1661, 1467, 1785, 1719, 1654, 1611, 1568, 1653, 1738, 1839, - 1940, 793, -866, -2050, -2210, -2082, -1954, -1902, -1850, -1862, -1874, -1980, -2086, -1936, - -1786, -1776, -1766, -1820, -1874, -535, 1829, 2112, 1884, 1911, 1939, 1934, 1930, 1901, 1872, - 1907, 1942, 1941, 1940, 1939, 1938, 1960, 1982, 2004, 2027, 2021, 2015, 2009, 2004, 2014, 2024, - 2034, 2044, 2044, 2044, 2044, 1586, 1641, 1697, 1704, 1712, 1578, 1699, 1661, 1623, 1613, 1604, - 1642, 1681, 1791, -402, -2036, -1877, -2144, -1899, -1942, -1985, -1918, -1851, -1880, -1909, - -1959, -2009, -1931, -1853, -1801, -1749, -1617, -1485, -1940, -1882, 96, 2074, 1971, 1869, - 1895, 1921, 1885, 1850, 1894, 1939, 1937, 1936, 1934, 1933, 1952, 1972, 1991, 2011, 2009, 2006, - 2004, 2002, 2011, 2020, 2029, 2038, 2038, 2038, 2038, 1136, 1229, 1322, 1287, 1252, 1433, 1614, - 1603, 1592, 1616, 1640, 1632, 1624, 2256, -1720, -1792, -1864, -1982, -2100, -2058, -2016, - -1934, -1852, -1898, -1944, -1938, -1932, -1926, -1920, -1826, -1732, -1670, -1608, -1552, - -1496, -1664, -1320, 2288, 1800, 1856, 1912, 1870, 1828, 1882, 1936, 1934, 1932, 1930, 1928, - 1945, 1962, 1979, 1996, 1997, 1998, 1999, 2000, 2008, 2016, 2024, 2032, 2032, 2032, 2032, 1552, - 1625, 1698, 1675, 1652, 1645, 1638, 1615, 1592, 1611, 1630, 1681, 1733, 1146, -2001, -1788, - -1830, -1925, -2019, -2050, -2080, -1987, -1893, -1896, -1898, -1897, -1895, -1861, -1827, - -1780, -1732, -1668, -1604, -1616, -1627, -1879, -594, 2063, 1903, 2016, 1873, 2132, 1880, - 1884, 1888, 1921, 1955, 1941, 1927, 1926, 1925, 1956, 1987, 2006, 2025, 2044, 2063, 1995, 1927, - 2099, 2015, 2095, 2175, 2175, 1456, 1509, 1562, 1551, 1540, 1601, 1662, 1627, 1592, 1606, 1621, - 1731, 1842, 36, -2281, -1783, -1796, -1867, -1938, -2041, -2144, -2039, -1934, -1893, -1852, - -1855, -1857, -1796, -1734, -1733, -1731, -1666, -1600, -1679, -1758, -1837, 645, 2094, 2007, - 1920, 1322, 2139, 1933, 1886, 1840, 1909, 1979, 1952, 1926, 1907, 1888, 1933, 1978, 2015, 2052, - 2089, 2126, 1982, 1838, 2174, 1998, 2158, 2318, 2318, 1488, 1521, 1554, 1555, 1556, 1589, 1622, - 1607, 1592, 1569, 1547, 1701, 1855, -994, -2050, -1826, -1858, -1906, -1953, -2017, -2080, - -1996, -1911, -1859, -1806, -1813, -1820, -1731, -1641, -1686, -1731, -1680, -1628, -1679, - -1729, -2195, 1947, 2125, 2047, 944, -2205, 114, 2177, 2144, 1856, 1913, 1970, 1963, 1957, - 1936, 1915, 1926, 1937, 1992, 2047, 2182, 2061, 2337, 2613, 1817, 2301, 2157, 2269, 2397, 1520, - 1533, 1546, 1559, 1572, 1577, 1582, 1587, 1592, 1533, 1474, 1671, 1868, -2023, -1818, -1869, - -1920, -1944, -1968, -1992, -2016, -1952, -1888, -1824, -1760, -1771, -1782, -1665, -1548, - -1639, -1730, -1693, -1656, -1678, -1699, -1017, 2226, 1644, 2087, -287, -2148, -2167, -1674, - 611, 2384, 2173, 1962, 1975, 1988, 1965, 1942, 1919, 1896, 1969, 2042, 2019, 1484, -1916, - -1220, 2484, 1068, -916, 1708, 1964, 1504, 1515, 1526, 1537, 1548, 1551, 1554, 1557, 1560, - 1582, 1604, 1786, 689, -2139, -1895, -1907, -1918, -1927, -1935, -1944, -1952, -1879, -1805, - -1732, -1658, -1628, -1597, -1550, -1503, -1509, -1514, -1519, -1524, -1528, -1786, 147, 2080, - 1995, 2422, -2095, -2003, -2035, -1810, -1665, -1776, -190, 1397, 2536, 2139, 2122, 2105, 2328, - 2295, 2204, 2113, 2870, -213, -1669, -1077, -1237, -1653, -1589, 2059, 1931, 1488, 1497, 1506, - 1515, 1524, 1525, 1526, 1527, 1528, 1631, 1735, 1902, -490, -2255, -1971, -1944, -1916, -1909, - -1902, -1895, -1888, -1805, -1722, -1639, -1556, -1484, -1411, -1435, -1458, -1378, -1297, - -1345, -1392, -1377, -1873, 1311, 1935, 1834, 1734, -2622, -2370, -2158, -1945, -1893, -1840, - -2040, -2239, -2023, -782, -281, 220, 433, 134, -377, -888, -1655, -1398, -1166, -934, -1374, - -1302, -726, 2410, 1898, 1472, 1479, 1486, 1493, 1500, 1499, 1498, 1497, 1496, 1600, 1705, - 1666, -933, -1475, -2016, -1965, -1914, -1892, -1869, -1847, -1824, -1732, -1639, -1547, -1454, - -1388, -1322, -1192, -1317, -1151, -1241, -1251, -1260, -1546, -1576, 2459, 1885, 2057, 182, - -2430, -2225, -2089, -1953, -1929, -1904, -1906, -1908, -2150, -1879, -1836, -1793, -1670, - -1803, -1646, -1489, -1492, -1239, -1335, -1431, -1335, -1495, 681, 2345, 2089, 1456, 1461, - 1466, 1471, 1476, 1473, 1470, 1467, 1464, 1570, 1676, 1174, -1888, -950, -2060, -1986, -1912, - -1874, -1836, -1798, -1760, -1658, -1556, -1454, -1352, -1292, -1232, -1204, -1688, -1180, - -1184, -1156, -1128, -1203, -254, 2071, 1836, 2281, -1370, -2237, -2080, -2020, -1960, -1964, - -1968, -2028, -2088, -2020, -1952, -1855, -1758, -1725, -1692, -1635, -1578, -1329, -1592, - -1504, -1416, -1040, -1688, 2088, 2280, 2280, 1428, 1439, 1450, 1461, 1472, 1463, 1454, 1493, - 1533, 1512, 1748, -161, -2069, -1347, -1138, -1776, -1902, -1849, -1795, -1709, -1623, -1545, - -1467, -1357, -1247, -1199, -1150, -1197, -1756, -1247, -994, -1013, -1032, -1203, 930, 2023, - 1837, 2238, -2481, -2288, -1838, -1800, -1762, -1836, -1909, -1955, -2001, -1983, -1964, -1909, - -1854, -1831, -1807, -1750, -1693, -1540, -1642, -1526, -1410, -638, -122, 774, 1926, 1926, - 1400, 1417, 1434, 1451, 1469, 1454, 1439, 1520, 1602, 1455, 1820, -1239, -1737, -1744, -727, - -1822, -1892, -1823, -1753, -1619, -1485, -1432, -1378, -1260, -1142, -1105, -1067, -1189, - -1823, -1314, -804, -870, -936, -1203, 2115, 1976, 1838, 915, -2055, -1570, -1596, -1580, - -1563, -1707, -1850, -1882, -1913, -1945, -1976, -1963, -1949, -1936, -1922, -1865, -1807, - -1750, -1692, -1548, -1404, -1004, -92, 996, 2084, 2084, 1372, 1395, 1418, 1441, 1465, 1444, - 1424, 1483, 1543, 1765, 1732, -2205, -1534, -1613, -1180, -1276, -1882, -1765, -1647, -1562, - -1476, -1303, -1129, -1115, -1101, -995, -888, -1054, -1731, -1397, -806, -711, -872, -307, - 2051, 1929, 2063, -152, -1598, -1348, -1354, -1328, -1301, -1418, -1535, -1601, -1666, -1731, - -1796, -1825, -1853, -1881, -1909, -1884, -1858, -1768, -1678, -1570, -1462, -1434, 1154, 2402, - 1858, 1858, 1344, 1373, 1403, 1432, 1462, 1435, 1409, 1446, 1484, 1564, 621, -1891, -1842, - -1738, -1633, -729, -1872, -1707, -1541, -1504, -1466, -1429, -1391, -1226, -1060, -885, -709, - -918, -1638, -1479, -807, -552, -808, 590, 1988, 1882, 2288, -1218, -1140, -1126, -1112, -1075, - -1038, -1129, -1220, -1319, -1418, -1517, -1616, -1686, -1756, -1826, -1896, -1902, -1908, - -1786, -1664, -1592, -1520, -1864, 2400, 2016, 2144, 2144, 1348, 1373, 1399, 1424, 1450, 1463, - 1477, 1491, 1505, 1728, -607, -1839, -1791, -1737, -1683, -1005, -1350, -1711, -1560, -1521, - -1481, -1384, -1286, -1381, -1475, -1209, -943, -613, -794, -798, -801, -613, -680, 1364, 1872, - 1932, 1481, -1151, -967, -927, -886, -869, -852, -931, -1009, -1062, -1115, -1232, -1348, - -1522, -1696, -1806, -1915, -1901, -1887, -1793, -1698, -1604, -1766, -744, 2326, 2134, 2198, - 2198, 1352, 1373, 1395, 1417, 1439, 1492, 1546, 1536, 1526, 1893, -1835, -1787, -1739, -1736, - -1732, -1280, -828, -1715, -1578, -1537, -1495, -1338, -1181, -1024, -866, -765, -664, -563, - -973, -372, -283, -418, -552, 2138, 1757, 1983, 674, -1084, -793, -727, -660, -663, -665, -732, - -798, -805, -811, -946, -1080, -1358, -1635, -1785, -1934, -1900, -1865, -1799, -1732, -1616, - -2012, 376, 2252, 2252, 2252, 2252, 1356, 1373, 1391, 1409, 1427, 1425, 1423, 1501, 1579, 906, - -1815, -1703, -1848, -1911, -1717, -1636, -786, -1687, -1820, -1713, -1606, -1373, -1140, -923, - -705, -657, -609, -385, -417, -235, -309, -479, 376, 1968, 1769, 2034, -5, -841, -652, -607, - -562, -585, -607, -661, -715, -740, -764, -964, -1164, -1434, -1703, -1844, -1985, -1979, - -1972, -1885, -1798, -2012, -2226, 2152, 2178, 2194, 2210, 2210, 1360, 1374, 1388, 1402, 1416, - 1358, 1300, 1466, 1632, -81, -1794, -1619, -1956, -2085, -1702, -1991, -744, -891, -526, -353, - -180, -383, -586, -821, -1056, -805, -554, -463, -372, -353, -334, -539, 1304, 1799, 1782, - 2085, -684, -597, -510, -487, -464, -506, -548, -590, -632, -674, -716, -982, -1248, -1509, - -1770, -1903, -2036, -2057, -2078, -1971, -1864, -1896, -1416, 2392, 2104, 2136, 2168, 2168, - 1346, 1358, 1371, 1383, 1396, 1395, 1393, 1552, 1711, -1178, -1763, -2204, -1364, -465, 690, - 1941, 1913, 1747, 1837, 1816, 1794, 1888, 1983, 1773, 1564, 548, -468, -299, -387, -393, -398, - -148, 1895, 1920, 1946, 1284, -402, -398, -394, -422, -450, -479, -508, -569, -630, -723, -816, - -1069, -1321, -1698, -2075, -2083, -2092, -2131, -2169, -2032, -1894, -2028, 142, 2280, 2114, - 2082, 2050, 2050, 1332, 1343, 1354, 1365, 1377, 1432, 1487, 1382, 1278, -1763, -195, 1308, - 1788, 1667, 1547, 1522, 1498, 1569, 1641, 1681, 1721, 1600, 1480, 1552, 1624, 1901, 2179, 1145, - -401, -432, -462, -12, 1974, 1786, 2111, 484, -119, -199, -278, -357, -436, -452, -468, -548, - -627, -771, -915, -899, -882, -607, -331, -471, -611, -1436, -2260, -2092, -1924, -2160, 1700, - 2168, 2124, 2028, 1932, 1932, 1318, 1327, 1337, 1347, 1357, 1405, 1453, 1420, 1389, 1380, 1628, - 1748, 1356, 1495, 1635, 1631, 1627, 1551, 1733, 1690, 1647, 1728, 1809, 1730, 1652, 1686, 1722, - 1949, 1920, 873, -430, 363, 1925, 1764, 1860, 147, -29, -96, -162, -292, -422, -425, -428, - -559, -689, -372, -310, -281, -251, -572, -891, -859, -827, -565, -303, -1081, -1858, -1636, - 2170, 2296, 2166, 2118, 2070, 2070, 1304, 1312, 1321, 1329, 1338, 1378, 1419, 1459, 1500, 1452, - 1404, 1420, 1436, 1580, 1724, 1484, 1244, 1022, 1313, 1187, 1062, 1088, 1115, 1397, 1680, 1728, - 1777, 1729, 1682, 1922, 1651, 1763, 1876, 1742, 1609, -189, 62, 8, -45, -227, -408, -398, -387, - -569, -750, -228, -217, -431, -644, -1048, -1451, -1503, -1554, -1230, -905, -581, -256, -856, - 1616, 1912, 2208, 2208, 2208, 2208, 1290, 1304, 1320, 1335, 1350, 1377, 1404, 1271, 1395, 1525, - 1655, 1769, 1884, 1802, 1720, 1430, 1141, 1026, 1168, 1038, 908, 700, 492, 331, 172, 873, 1575, - 1525, 1731, 1991, 1739, 1774, 1811, 1914, 993, -120, 48, -75, -197, -272, -346, -409, -471, - -326, -180, -215, -505, -811, -1117, -1275, -1432, -1637, -1842, -1825, -1552, -1248, -686, - 1194, 1026, 1610, 2194, 2194, 2194, 2194, 1276, 1297, 1319, 1341, 1363, 1376, 1390, 1340, 1802, - 1854, 1907, 1863, 1820, 1768, 1717, 1377, 1038, 1031, 1024, 889, 755, 568, 381, 290, 200, 19, - -162, 553, 1781, 2060, 1827, 1786, 1746, 2086, 378, -50, 35, -157, -349, -317, -284, -420, - -555, -338, -121, -457, -792, -935, -1078, -1245, -1412, -1515, -1617, -1908, -1687, -1658, - -1116, 1964, 1972, 2076, 2180, 2180, 2180, 2180, 1262, 1290, 1318, 1347, 1375, 1359, 1344, - 1632, 1921, 1927, 1934, 1877, 1820, 1702, 1585, 1260, 935, 907, 880, 724, 569, 436, 302, 217, - 132, 44, -43, -99, 102, 801, 2011, 1878, 1745, 1426, 2131, 916, -43, -192, -341, -394, -446, - -463, -479, -239, -255, -523, -791, -963, -1135, -1520, -1648, -1761, -1873, -1447, -2046, - -1828, -1354, 2254, 2278, 2222, 2166, 2166, 2166, 2166, 1248, 1283, 1318, 1353, 1388, 1343, - 1298, 1925, 2040, 2001, 1962, 1891, 1820, 1637, 1454, 1143, 832, 784, 736, 560, 384, 304, 224, - 144, 64, 70, 76, 18, -40, 54, 1684, 1714, 1744, 1790, 1836, 1882, 1928, 798, -332, -470, -608, - -505, -402, -139, -388, -589, -790, -991, -1192, -1794, -1884, -2006, -2128, -2266, -868, 818, - 2504, 2288, 2072, 2112, 2152, 2152, 2152, 2152, 1238, 1264, 1290, 1333, 1375, 1301, 1484, 2002, - 2009, 1974, 1939, 1872, 1805, 1608, 1411, 1118, 826, 751, 676, 505, 334, 273, 212, 151, 91, 69, - 48, 10, -27, 482, 1758, 1771, 1784, 2033, 1771, 1860, 1950, 1989, 2029, 884, -260, -1157, -261, - -310, -614, -923, -975, -1412, -1848, -2062, -2019, -697, 626, 2060, 2471, 2273, 2076, 2051, - 2026, 2081, 2136, 2136, 2136, 2136, 1228, 1245, 1263, 1313, 1363, 1260, 1670, 2080, 1978, 1947, - 1916, 1853, 1791, 1580, 1369, 1094, 820, 718, 616, 450, 285, 243, 201, 159, 118, 69, 20, 3, - -13, 910, 1833, 1828, 1824, 229, 1706, 1839, 1972, 1901, 1830, 1983, 2136, 2032, 1416, 1056, - 696, 280, 376, 728, 1080, 1767, 2454, 2405, 2356, 2035, 2226, 2193, 2160, 2070, 1980, 2050, - 2120, 2120, 2120, 2120, 1218, 1226, 1236, 1293, 1350, 1235, 1888, 2061, 1979, 1936, 1893, 1834, - 1776, 1551, 1327, 1070, 814, 685, 556, 395, 235, 212, 190, 167, 145, 116, 88, -68, 32, 1306, - 1812, 1949, 1576, -200, -183, 905, 1994, 1956, 1919, 1881, 1844, 2004, 1909, 2005, 2102, 2042, - 2239, 2195, 2152, 2043, 1935, 2370, 2038, 2697, 1821, 368, 2244, 2121, 1998, 2051, 2104, 2104, - 2104, 2104, 1208, 1208, 1209, 1273, 1338, 1210, 2107, 2043, 1980, 1925, 1871, 1816, 1762, 1523, - 1285, 1046, 808, 652, 497, 341, 186, 182, 179, 175, 172, 164, 157, 117, 590, 1958, 1791, 1815, - 816, 140, -24, -28, -32, 988, 2008, 2036, 2064, 1977, 1890, 1931, 1972, 2013, 2054, 2127, 2200, - 2320, 2440, 2080, 184, -1760, -3192, 336, 2328, 2172, 2016, 2052, 2088, 2088, 2088, 2088, 1222, - 1215, 1209, 1267, 1325, 1459, 2105, 2046, 1989, 1946, 1904, 1861, 1819, 1612, 1406, 1136, 866, - 715, 565, 446, 328, 295, 263, 231, 199, 481, 765, 712, 1427, 2086, 1721, 1692, 128, -37, 55, - -14, -82, -109, -135, 334, 804, 1293, 1783, 2272, 2250, 2197, 1889, 1356, 568, -764, -2095, - -3011, -2646, -2932, -2705, 2305, 2196, 2159, 2122, 2117, 2112, 2112, 2112, 2112, 1236, 1223, - 1210, 1261, 1313, 1708, 2103, 2050, 1998, 1967, 1937, 1907, 1877, 1702, 1528, 1226, 924, 778, - 633, 552, 471, 409, 348, 287, 226, 287, 349, 283, 1241, 1702, 1652, 1826, -48, 43, 134, 1, - -132, -181, -230, -343, -456, -670, -884, -202, -544, -946, -1860, -1718, -2088, -2311, -2534, - -2469, -2404, -2311, -1706, 2483, 2064, 2146, 2228, 2182, 2136, 2136, 2136, 2136, 1250, 1230, - 1211, 1255, 1300, 1957, 2101, 2054, 2007, 1956, 1906, 1856, 1806, 1696, 1586, 1284, 982, 841, - 701, 657, 613, 555, 497, 439, 381, 413, 445, 718, 1758, 1782, 1807, 1095, -128, -70, -11, -97, - -182, -254, -325, -429, -532, -762, -991, -581, -170, -1034, -873, -1977, -1800, -2019, -2237, - -2344, -2450, -2651, -35, 2308, 2092, 2117, 2142, 2151, 2160, 2160, 2160, 2160, 1264, 1238, - 1212, 1250, 1288, 2206, 2100, 2058, 2016, 1946, 1876, 1806, 1736, 1690, 1644, 1342, 1040, 905, - 770, 763, 756, 701, 646, 591, 536, 539, 542, 897, 1764, 1607, 1962, 365, -208, -182, -156, - -194, -232, -326, -420, -514, -608, -853, -1098, -1471, -820, -97, -910, -955, -2024, -2238, - -2452, -2474, -2496, -2990, 1636, 2134, 2120, 2088, 2056, 2120, 2184, 2184, 2184, 2184, 1198, - 1191, 1185, 1227, 1525, 2065, 2093, 2009, 1925, 1887, 1850, 1781, 1712, 1682, 1653, 1464, 1275, - 1130, 986, 937, 889, 841, 792, 744, 696, 685, 674, 1335, 1741, 1840, 1939, 54, -294, -296, - -298, -299, -301, -415, -528, -642, -755, -948, -1140, -1733, -1813, -734, -166, -1039, -887, - -1235, -1582, -1610, -1637, -1158, 2392, 2279, 2166, 2119, 2072, 2121, 2170, 2170, 2170, 2170, - 1132, 1145, 1159, 1205, 1763, 1924, 2086, 1960, 1834, 1829, 1825, 1756, 1688, 1675, 1663, 1586, - 1510, 1356, 1202, 1112, 1023, 981, 939, 897, 856, 831, 807, 1774, 1718, 1817, 1405, -512, -380, - -410, -439, -404, -369, -503, -636, -769, -902, -1042, -1182, -1482, -1782, -2138, -1982, -610, - -262, -487, -712, -745, -777, 162, 2125, 1912, 2212, 2150, 2088, 2122, 2156, 2156, 2156, 2156, - 1194, 1147, 1101, 1182, 1776, 1927, 2079, 1863, 1903, 1979, 1799, 1843, 1632, 1620, 1608, 1612, - 1617, 1517, 1418, 1351, 1284, 1217, 1150, 1098, 1048, 945, 1099, 1781, 1695, 1954, 422, -566, - -530, -556, -580, -573, -566, -687, -808, -929, -1049, -1233, -1416, -1680, -1943, -2343, - -2486, -2502, -2773, -2076, -1378, -1672, -2222, 458, 2370, 2137, 2162, 2133, 2104, 2123, 2142, - 2142, 2142, 2142, 1256, 1149, 1043, 1160, 1790, 1931, 2073, 1766, 1972, 2129, 1774, 1931, 1576, - 1565, 1554, 1639, 1724, 1679, 1635, 1590, 1546, 1453, 1361, 1300, 1240, 1060, 1392, 1788, 1672, - 2092, -560, -620, -680, -701, -721, -742, -762, -871, -979, -1088, -1196, -1423, -1650, -1877, - -2104, -2291, -2478, -2857, -2724, -2896, -3067, -3111, -3666, 2546, 2103, 2107, 2112, 2116, - 2120, 2124, 2128, 2128, 2128, 2128, 1214, 1171, 1128, 1453, 1779, 1692, 1862, 1807, 1753, 1732, - 1712, 1804, 1640, 1759, 1623, 1711, 1799, 1666, 1791, 1755, 1719, 1629, 1539, 1497, 1456, 1352, - 1504, 1752, 1745, 1445, -903, -899, -894, -909, -923, -937, -951, -1071, -1191, -1312, -1431, - -1642, -1852, -2063, -2273, -2432, -2590, -2813, -2779, -2931, -3081, -3280, -2199, 2298, 2187, - 2124, 2062, 2081, 2100, 2119, 2138, 2138, 2138, 2138, 1172, 1193, 1214, 1747, 1769, 1710, 2163, - 2360, 2046, 1592, 1651, 1677, 1704, 1954, 1693, 1783, 1874, 1654, 1947, 1920, 1893, 1805, 1718, - 1695, 1672, 1644, 1617, 1717, 1818, 798, -1245, -1177, -1108, -1116, -1124, -1132, -1139, - -1271, -1403, -1535, -1666, -1860, -2054, -2248, -2442, -2572, -2702, -2768, -2834, -2965, - -3095, -3193, -219, 2306, 2272, 2142, 2012, 2046, 2080, 2114, 2148, 2148, 2148, 2148, 1194, - 1151, 1364, 1785, 1694, 1983, 2272, 1441, 2147, 1980, 1813, 1838, 1864, 1909, 1698, 1823, 1949, - 1818, 1943, 1989, 2034, 1933, 1833, 1812, 1792, 1712, 1633, 1650, 1923, -537, -1460, -1391, - -1322, -1356, -1389, -1423, -1456, -1567, -1679, -1790, -1901, -2079, -2256, -2434, -2611, - -2745, -2878, -2916, -2953, -2999, -3045, -3778, 1632, 2298, 1941, 2015, 2090, 2107, 2124, - 2141, 2158, 2158, 2158, 2158, 1216, 1109, 1514, 1823, 1620, 2001, 1870, 1803, 1224, 1600, 1464, - 1232, 1000, 1096, 1192, 1352, 1512, 1726, 1940, 2058, 2176, 2062, 1948, 1930, 1912, 1781, 1650, - 1583, 2028, -1871, -1674, -1605, -1536, -1595, -1654, -1713, -1772, -1863, -1954, -2045, -2136, - -2297, -2458, -2619, -2780, -2917, -3054, -3063, -3072, -3033, -2994, -2827, 2460, 2035, 2122, - 2145, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 1190, 1272, 1610, 1757, 1647, 1523, 1144, - 1324, 1249, 1364, 1224, 1211, 1199, 1255, 1566, 1430, 1294, 1404, 1514, 1800, 2087, 2075, 2063, - 2003, 1944, 1654, 1621, 1812, 979, -1999, -1904, -1889, -1874, -1929, -1983, -2038, -2092, - -2164, -2237, -2309, -2381, -2514, -2646, -2779, -2911, -3006, -3100, -3115, -3129, -3040, - -3206, -1085, 2317, 2104, 2148, 2159, 2171, 2175, 2179, 2183, 2187, 2187, 2187, 2187, 1164, - 1179, 1195, 1179, 1163, 1302, 1442, 1358, 1274, 1385, 1496, 1447, 1399, 1158, 1429, 1508, 1588, - 1594, 1601, 1543, 1486, 1832, 2179, 2077, 1976, 1528, 1593, 1785, -582, -2382, -2133, -2173, - -2212, -2262, -2312, -2362, -2411, -2465, -2519, -2573, -2626, -2730, -2834, -2938, -3042, - -3094, -3146, -3166, -3186, -3046, -3418, 658, 2174, 2174, 2174, 2174, 2174, 2182, 2190, 2198, - 2206, 2206, 2206, 2206, 1202, 1230, 1260, 1273, 1286, 1321, 1356, 1343, 1331, 1405, 1480, 1475, - 1470, 1349, 1484, 1522, 1562, 1576, 1591, 1574, 1557, 1589, 1622, 1719, 1816, 1690, 1820, 1694, - -2015, -2557, -2331, -2377, -2422, -2612, -2801, -2702, -2603, -2670, -2737, -2805, -2871, - -2947, -3022, -3098, -3173, -3183, -3192, -3154, -3115, -3325, -3278, 2256, 2159, 2147, 2136, - 2156, 2177, 2189, 2201, 2213, 2225, 2225, 2225, 2225, 1240, 1282, 1325, 1367, 1410, 1340, 1271, - 1329, 1388, 1426, 1465, 1503, 1542, 1540, 1539, 1537, 1536, 1559, 1582, 1605, 1628, 1603, 1578, - 1617, 1656, 1596, 1536, 1604, -2936, -2476, -2528, -2580, -2632, -2705, -2777, -2786, -2794, - -2875, -2955, -3036, -3116, -3163, -3210, -3257, -3304, -3271, -3238, -3141, -3044, -3091, - -2114, 2319, 2144, 2121, 2098, 2139, 2180, 2196, 2212, 2228, 2244, 2244, 2244, 2244, 1230, - 1255, 1281, 1307, 1333, 1303, 1273, 1338, 1405, 1436, 1469, 1501, 1533, 1535, 1537, 1539, 1542, - 1563, 1584, 1605, 1627, 1602, 1577, 1616, 1656, 1807, 1959, -417, -2793, -2798, -2546, -2582, - -2618, -2689, -2758, -2796, -2834, -2902, -2970, -3038, -3105, -3146, -3186, -3179, -3171, - -3150, -3128, -3059, -2989, -3222, -126, 2281, 2129, 2084, 2040, 2107, 2175, 2189, 2203, 2217, - 2231, 2231, 2231, 2231, 1220, 1229, 1238, 1247, 1257, 1266, 1275, 1348, 1422, 1447, 1473, 1499, - 1525, 1530, 1536, 1542, 1548, 1567, 1587, 1606, 1626, 1601, 1577, 1616, 1656, 1763, 1871, 1658, - -2138, -2863, -2563, -2584, -2604, -2672, -2739, -2806, -2873, -2929, -2984, -3039, -3094, - -3128, -3162, -3100, -3038, -3028, -3018, -2976, -2934, -3352, 1862, 2244, 2114, 2048, 1982, - 2076, 2170, 2182, 2194, 2206, 2218, 2218, 2218, 2218, 1210, 1234, 1259, 1283, 1308, 1325, 1341, - 1390, 1439, 1458, 1477, 1497, 1516, 1525, 1535, 1544, 1554, 1571, 1589, 1607, 1625, 1616, 1608, - 1632, 1656, 1719, 1782, 1685, 1845, 528, -2837, -2730, -2622, -2655, -2688, -2720, -2753, - -2764, -2774, -2993, -2955, -3031, -3106, -2814, -2777, -3227, -2908, -3134, -3359, -971, 2186, - 2270, 2099, 2075, 2052, 2108, 2165, 2175, 2185, 2195, 2205, 2205, 2205, 2205, 1200, 1240, 1280, - 1320, 1360, 1384, 1408, 1432, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1576, 1592, - 1608, 1624, 1632, 1640, 1648, 1656, 1675, 1694, 1713, 1732, 1871, 986, -827, -2640, -2638, - -2636, -2634, -2632, -2598, -2564, -2946, -2816, -2933, -3050, -2783, -3028, -3169, -1774, 293, - 2360, 2179, 1998, 2041, 2084, 2103, 2122, 2141, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, - 1232, 1266, 1300, 1334, 1368, 1390, 1412, 1434, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, - 1560, 1578, 1596, 1614, 1632, 1640, 1648, 1656, 1664, 1646, 1628, 1706, 1784, 2102, 1908, 1298, - 688, 1071, -594, -1587, -2580, -2891, -3202, -2281, -2640, -2058, -1476, -94, 1032, 2278, 2244, - 2210, 2176, 2132, 2088, 2092, 2096, 2112, 2128, 2144, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1264, 1292, 1320, 1348, 1376, 1396, 1416, 1436, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1580, 1600, 1620, 1640, 1648, 1656, 1664, 1672, 1617, 1562, 1699, 1836, 1821, 1806, - 1887, 1968, 1964, 1960, 2020, 2080, 1936, 1792, 1200, 1632, 1889, 2146, 2083, 2020, 2093, 2166, - 2079, 1992, 2085, 2178, 2143, 2108, 2121, 2134, 2147, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1296, 1318, 1340, 1362, 1384, 1402, 1420, 1438, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1582, 1604, 1626, 1648, 1656, 1664, 1672, 1680, 1668, 1656, 1740, 1824, 1812, 1800, - 1836, 1872, 1881, 1890, 1819, 1748, 1995, 450, 937, 912, 716, 2056, 2020, 1984, 2036, 2088, - 2060, 2032, 2086, 2140, 2130, 2120, 2130, 2140, 2150, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, - 1785, 1776, 1798, 1820, 1874, 1928, 1798, 2180, 674, 1216, 2103, 1966, 1957, 1948, 1979, 2010, - 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, - 1785, 1776, 1798, 1820, 1858, 1896, 1750, 1860, 2338, 1792, 2135, 1966, 1957, 1948, 1979, 2010, - 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, - 1785, 1776, 1798, 1820, 1842, 1864, 1958, 2052, 1954, 1856, 1911, 1966, 1957, 1948, 1979, 2010, - 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, - 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, - 1785, 1776, 1798, 1820, 1842, 1864, 1958, 2052, 1954, 1856, 1911, 1966, 1957, 1948, 1979, 2010, - 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, - 2192, + 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, 1740, 1736, 1732, 1728, 1796, 1864, 1804, 1744, 1754, 1764, + 1774, 1784, 1794, 1804, 1814, 1824, 1774, 1724, 1802, 1880, 1814, 1748, 1810, 1872, 1878, 1884, 1890, 1896, 1910, + 1924, 1938, 1952, 1938, 1924, 1910, 1896, 1914, 1932, 1950, 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010, 2016, + 2016, 2016, 2016, 2016, 2016, 2016, 2016, 1710, 1697, 1684, 1704, 1723, 1726, 1730, 1733, 1737, 1738, 1740, 1741, + 1743, 1758, 1774, 1757, 1741, 1762, 1783, 1788, 1793, 1774, 1755, 1784, 1813, 1817, 1821, 1825, 1829, 1857, 1885, + 1881, 1877, 1849, 1821, 1857, 1894, 1904, 1914, 1924, 1935, 1928, 1922, 1915, 1909, 1922, 1936, 1949, 1963, 1974, + 1985, 1997, 2008, 2009, 2011, 2012, 2014, 2017, 2020, 2023, 2026, 2026, 2026, 2026, 1692, 1664, 1637, 1674, 1711, + 1715, 1720, 1725, 1730, 1737, 1744, 1751, 1758, 1721, 1684, 1711, 1738, 1770, 1802, 1802, 1802, 1754, 1706, 1754, + 1802, 1860, 1918, 1848, 1778, 1900, 2022, 1952, 1882, 1820, 1759, 1825, 1892, 1898, 1905, 1911, 1918, 1919, 1920, + 1921, 1922, 1931, 1940, 1949, 1958, 1974, 1991, 2008, 2025, 2021, 2018, 2015, 2012, 2018, 2024, 2030, 2036, 2036, + 2036, 2036, 1674, 1631, 1590, 1644, 1698, 1704, 1710, 1716, 1723, 1735, 1748, 1760, 1773, 1763, 1754, 1760, 1767, + 1794, 1821, 1800, 1779, 1830, 1881, 1900, 1919, 2047, 2175, 2015, 1855, 1879, 1903, 1927, 1951, 1759, 1824, 1857, + 1890, 1892, 1895, 1898, 1901, 1909, 1918, 1926, 1935, 1939, 1944, 1948, 1953, 1974, 1997, 2019, 2041, 2033, 2025, + 2017, 2010, 2019, 2028, 2037, 2046, 2046, 2046, 2046, 1656, 1599, 1543, 1614, 1686, 1693, 1701, 1708, 1716, 1734, + 1752, 1770, 1788, 1806, 1824, 1810, 1796, 1818, 1840, 2054, 2268, 1650, 1032, 510, -12, -70, -128, 390, 908, 1602, + 2296, 2158, 2020, 1699, 1890, 1889, 1888, 1887, 1886, 1885, 1884, 1900, 1916, 1932, 1948, 1948, 1948, 1948, 1948, + 1975, 2003, 2030, 2058, 2045, 2033, 2020, 2008, 2020, 2032, 2044, 2056, 2056, 2056, 2056, 1590, 1570, 1551, 1612, + 1673, 1580, 1743, 1713, 1685, 1672, 1660, 1711, 1763, 1694, 1626, 1941, 2001, 2060, 583, -654, -1891, -2046, -2201, + -2084, -1967, -2049, -2131, -2053, -1975, -1751, -1527, 41, 1609, 2374, 1859, 2000, 1886, 1899, 1912, 1909, 1907, + 1900, 1894, 1919, 1945, 1944, 1944, 1943, 1943, 1967, 1992, 2017, 2042, 2033, 2024, 2014, 2006, 2017, 2028, 2039, + 2050, 2050, 2050, 2050, 1524, 1542, 1560, 1610, 1661, 1467, 1785, 1719, 1654, 1611, 1568, 1653, 1738, 1839, 1940, + 793, -866, -2050, -2210, -2082, -1954, -1902, -1850, -1862, -1874, -1980, -2086, -1936, -1786, -1776, -1766, -1820, + -1874, -535, 1829, 2112, 1884, 1911, 1939, 1934, 1930, 1901, 1872, 1907, 1942, 1941, 1940, 1939, 1938, 1960, 1982, + 2004, 2027, 2021, 2015, 2009, 2004, 2014, 2024, 2034, 2044, 2044, 2044, 2044, 1586, 1641, 1697, 1704, 1712, 1578, + 1699, 1661, 1623, 1613, 1604, 1642, 1681, 1791, -402, -2036, -1877, -2144, -1899, -1942, -1985, -1918, -1851, + -1880, -1909, -1959, -2009, -1931, -1853, -1801, -1749, -1617, -1485, -1940, -1882, 96, 2074, 1971, 1869, 1895, + 1921, 1885, 1850, 1894, 1939, 1937, 1936, 1934, 1933, 1952, 1972, 1991, 2011, 2009, 2006, 2004, 2002, 2011, 2020, + 2029, 2038, 2038, 2038, 2038, 1136, 1229, 1322, 1287, 1252, 1433, 1614, 1603, 1592, 1616, 1640, 1632, 1624, 2256, + -1720, -1792, -1864, -1982, -2100, -2058, -2016, -1934, -1852, -1898, -1944, -1938, -1932, -1926, -1920, -1826, + -1732, -1670, -1608, -1552, -1496, -1664, -1320, 2288, 1800, 1856, 1912, 1870, 1828, 1882, 1936, 1934, 1932, 1930, + 1928, 1945, 1962, 1979, 1996, 1997, 1998, 1999, 2000, 2008, 2016, 2024, 2032, 2032, 2032, 2032, 1552, 1625, 1698, + 1675, 1652, 1645, 1638, 1615, 1592, 1611, 1630, 1681, 1733, 1146, -2001, -1788, -1830, -1925, -2019, -2050, -2080, + -1987, -1893, -1896, -1898, -1897, -1895, -1861, -1827, -1780, -1732, -1668, -1604, -1616, -1627, -1879, -594, + 2063, 1903, 2016, 1873, 2132, 1880, 1884, 1888, 1921, 1955, 1941, 1927, 1926, 1925, 1956, 1987, 2006, 2025, 2044, + 2063, 1995, 1927, 2099, 2015, 2095, 2175, 2175, 1456, 1509, 1562, 1551, 1540, 1601, 1662, 1627, 1592, 1606, 1621, + 1731, 1842, 36, -2281, -1783, -1796, -1867, -1938, -2041, -2144, -2039, -1934, -1893, -1852, -1855, -1857, -1796, + -1734, -1733, -1731, -1666, -1600, -1679, -1758, -1837, 645, 2094, 2007, 1920, 1322, 2139, 1933, 1886, 1840, 1909, + 1979, 1952, 1926, 1907, 1888, 1933, 1978, 2015, 2052, 2089, 2126, 1982, 1838, 2174, 1998, 2158, 2318, 2318, 1488, + 1521, 1554, 1555, 1556, 1589, 1622, 1607, 1592, 1569, 1547, 1701, 1855, -994, -2050, -1826, -1858, -1906, -1953, + -2017, -2080, -1996, -1911, -1859, -1806, -1813, -1820, -1731, -1641, -1686, -1731, -1680, -1628, -1679, -1729, + -2195, 1947, 2125, 2047, 944, -2205, 114, 2177, 2144, 1856, 1913, 1970, 1963, 1957, 1936, 1915, 1926, 1937, 1992, + 2047, 2182, 2061, 2337, 2613, 1817, 2301, 2157, 2269, 2397, 1520, 1533, 1546, 1559, 1572, 1577, 1582, 1587, 1592, + 1533, 1474, 1671, 1868, -2023, -1818, -1869, -1920, -1944, -1968, -1992, -2016, -1952, -1888, -1824, -1760, -1771, + -1782, -1665, -1548, -1639, -1730, -1693, -1656, -1678, -1699, -1017, 2226, 1644, 2087, -287, -2148, -2167, -1674, + 611, 2384, 2173, 1962, 1975, 1988, 1965, 1942, 1919, 1896, 1969, 2042, 2019, 1484, -1916, -1220, 2484, 1068, -916, + 1708, 1964, 1504, 1515, 1526, 1537, 1548, 1551, 1554, 1557, 1560, 1582, 1604, 1786, 689, -2139, -1895, -1907, + -1918, -1927, -1935, -1944, -1952, -1879, -1805, -1732, -1658, -1628, -1597, -1550, -1503, -1509, -1514, -1519, + -1524, -1528, -1786, 147, 2080, 1995, 2422, -2095, -2003, -2035, -1810, -1665, -1776, -190, 1397, 2536, 2139, 2122, + 2105, 2328, 2295, 2204, 2113, 2870, -213, -1669, -1077, -1237, -1653, -1589, 2059, 1931, 1488, 1497, 1506, 1515, + 1524, 1525, 1526, 1527, 1528, 1631, 1735, 1902, -490, -2255, -1971, -1944, -1916, -1909, -1902, -1895, -1888, + -1805, -1722, -1639, -1556, -1484, -1411, -1435, -1458, -1378, -1297, -1345, -1392, -1377, -1873, 1311, 1935, 1834, + 1734, -2622, -2370, -2158, -1945, -1893, -1840, -2040, -2239, -2023, -782, -281, 220, 433, 134, -377, -888, -1655, + -1398, -1166, -934, -1374, -1302, -726, 2410, 1898, 1472, 1479, 1486, 1493, 1500, 1499, 1498, 1497, 1496, 1600, + 1705, 1666, -933, -1475, -2016, -1965, -1914, -1892, -1869, -1847, -1824, -1732, -1639, -1547, -1454, -1388, -1322, + -1192, -1317, -1151, -1241, -1251, -1260, -1546, -1576, 2459, 1885, 2057, 182, -2430, -2225, -2089, -1953, -1929, + -1904, -1906, -1908, -2150, -1879, -1836, -1793, -1670, -1803, -1646, -1489, -1492, -1239, -1335, -1431, -1335, + -1495, 681, 2345, 2089, 1456, 1461, 1466, 1471, 1476, 1473, 1470, 1467, 1464, 1570, 1676, 1174, -1888, -950, -2060, + -1986, -1912, -1874, -1836, -1798, -1760, -1658, -1556, -1454, -1352, -1292, -1232, -1204, -1688, -1180, -1184, + -1156, -1128, -1203, -254, 2071, 1836, 2281, -1370, -2237, -2080, -2020, -1960, -1964, -1968, -2028, -2088, -2020, + -1952, -1855, -1758, -1725, -1692, -1635, -1578, -1329, -1592, -1504, -1416, -1040, -1688, 2088, 2280, 2280, 1428, + 1439, 1450, 1461, 1472, 1463, 1454, 1493, 1533, 1512, 1748, -161, -2069, -1347, -1138, -1776, -1902, -1849, -1795, + -1709, -1623, -1545, -1467, -1357, -1247, -1199, -1150, -1197, -1756, -1247, -994, -1013, -1032, -1203, 930, 2023, + 1837, 2238, -2481, -2288, -1838, -1800, -1762, -1836, -1909, -1955, -2001, -1983, -1964, -1909, -1854, -1831, + -1807, -1750, -1693, -1540, -1642, -1526, -1410, -638, -122, 774, 1926, 1926, 1400, 1417, 1434, 1451, 1469, 1454, + 1439, 1520, 1602, 1455, 1820, -1239, -1737, -1744, -727, -1822, -1892, -1823, -1753, -1619, -1485, -1432, -1378, + -1260, -1142, -1105, -1067, -1189, -1823, -1314, -804, -870, -936, -1203, 2115, 1976, 1838, 915, -2055, -1570, + -1596, -1580, -1563, -1707, -1850, -1882, -1913, -1945, -1976, -1963, -1949, -1936, -1922, -1865, -1807, -1750, + -1692, -1548, -1404, -1004, -92, 996, 2084, 2084, 1372, 1395, 1418, 1441, 1465, 1444, 1424, 1483, 1543, 1765, 1732, + -2205, -1534, -1613, -1180, -1276, -1882, -1765, -1647, -1562, -1476, -1303, -1129, -1115, -1101, -995, -888, + -1054, -1731, -1397, -806, -711, -872, -307, 2051, 1929, 2063, -152, -1598, -1348, -1354, -1328, -1301, -1418, + -1535, -1601, -1666, -1731, -1796, -1825, -1853, -1881, -1909, -1884, -1858, -1768, -1678, -1570, -1462, -1434, + 1154, 2402, 1858, 1858, 1344, 1373, 1403, 1432, 1462, 1435, 1409, 1446, 1484, 1564, 621, -1891, -1842, -1738, + -1633, -729, -1872, -1707, -1541, -1504, -1466, -1429, -1391, -1226, -1060, -885, -709, -918, -1638, -1479, -807, + -552, -808, 590, 1988, 1882, 2288, -1218, -1140, -1126, -1112, -1075, -1038, -1129, -1220, -1319, -1418, -1517, + -1616, -1686, -1756, -1826, -1896, -1902, -1908, -1786, -1664, -1592, -1520, -1864, 2400, 2016, 2144, 2144, 1348, + 1373, 1399, 1424, 1450, 1463, 1477, 1491, 1505, 1728, -607, -1839, -1791, -1737, -1683, -1005, -1350, -1711, -1560, + -1521, -1481, -1384, -1286, -1381, -1475, -1209, -943, -613, -794, -798, -801, -613, -680, 1364, 1872, 1932, 1481, + -1151, -967, -927, -886, -869, -852, -931, -1009, -1062, -1115, -1232, -1348, -1522, -1696, -1806, -1915, -1901, + -1887, -1793, -1698, -1604, -1766, -744, 2326, 2134, 2198, 2198, 1352, 1373, 1395, 1417, 1439, 1492, 1546, 1536, + 1526, 1893, -1835, -1787, -1739, -1736, -1732, -1280, -828, -1715, -1578, -1537, -1495, -1338, -1181, -1024, -866, + -765, -664, -563, -973, -372, -283, -418, -552, 2138, 1757, 1983, 674, -1084, -793, -727, -660, -663, -665, -732, + -798, -805, -811, -946, -1080, -1358, -1635, -1785, -1934, -1900, -1865, -1799, -1732, -1616, -2012, 376, 2252, + 2252, 2252, 2252, 1356, 1373, 1391, 1409, 1427, 1425, 1423, 1501, 1579, 906, -1815, -1703, -1848, -1911, -1717, + -1636, -786, -1687, -1820, -1713, -1606, -1373, -1140, -923, -705, -657, -609, -385, -417, -235, -309, -479, 376, + 1968, 1769, 2034, -5, -841, -652, -607, -562, -585, -607, -661, -715, -740, -764, -964, -1164, -1434, -1703, -1844, + -1985, -1979, -1972, -1885, -1798, -2012, -2226, 2152, 2178, 2194, 2210, 2210, 1360, 1374, 1388, 1402, 1416, 1358, + 1300, 1466, 1632, -81, -1794, -1619, -1956, -2085, -1702, -1991, -744, -891, -526, -353, -180, -383, -586, -821, + -1056, -805, -554, -463, -372, -353, -334, -539, 1304, 1799, 1782, 2085, -684, -597, -510, -487, -464, -506, -548, + -590, -632, -674, -716, -982, -1248, -1509, -1770, -1903, -2036, -2057, -2078, -1971, -1864, -1896, -1416, 2392, + 2104, 2136, 2168, 2168, 1346, 1358, 1371, 1383, 1396, 1395, 1393, 1552, 1711, -1178, -1763, -2204, -1364, -465, + 690, 1941, 1913, 1747, 1837, 1816, 1794, 1888, 1983, 1773, 1564, 548, -468, -299, -387, -393, -398, -148, 1895, + 1920, 1946, 1284, -402, -398, -394, -422, -450, -479, -508, -569, -630, -723, -816, -1069, -1321, -1698, -2075, + -2083, -2092, -2131, -2169, -2032, -1894, -2028, 142, 2280, 2114, 2082, 2050, 2050, 1332, 1343, 1354, 1365, 1377, + 1432, 1487, 1382, 1278, -1763, -195, 1308, 1788, 1667, 1547, 1522, 1498, 1569, 1641, 1681, 1721, 1600, 1480, 1552, + 1624, 1901, 2179, 1145, -401, -432, -462, -12, 1974, 1786, 2111, 484, -119, -199, -278, -357, -436, -452, -468, + -548, -627, -771, -915, -899, -882, -607, -331, -471, -611, -1436, -2260, -2092, -1924, -2160, 1700, 2168, 2124, + 2028, 1932, 1932, 1318, 1327, 1337, 1347, 1357, 1405, 1453, 1420, 1389, 1380, 1628, 1748, 1356, 1495, 1635, 1631, + 1627, 1551, 1733, 1690, 1647, 1728, 1809, 1730, 1652, 1686, 1722, 1949, 1920, 873, -430, 363, 1925, 1764, 1860, + 147, -29, -96, -162, -292, -422, -425, -428, -559, -689, -372, -310, -281, -251, -572, -891, -859, -827, -565, + -303, -1081, -1858, -1636, 2170, 2296, 2166, 2118, 2070, 2070, 1304, 1312, 1321, 1329, 1338, 1378, 1419, 1459, + 1500, 1452, 1404, 1420, 1436, 1580, 1724, 1484, 1244, 1022, 1313, 1187, 1062, 1088, 1115, 1397, 1680, 1728, 1777, + 1729, 1682, 1922, 1651, 1763, 1876, 1742, 1609, -189, 62, 8, -45, -227, -408, -398, -387, -569, -750, -228, -217, + -431, -644, -1048, -1451, -1503, -1554, -1230, -905, -581, -256, -856, 1616, 1912, 2208, 2208, 2208, 2208, 1290, + 1304, 1320, 1335, 1350, 1377, 1404, 1271, 1395, 1525, 1655, 1769, 1884, 1802, 1720, 1430, 1141, 1026, 1168, 1038, + 908, 700, 492, 331, 172, 873, 1575, 1525, 1731, 1991, 1739, 1774, 1811, 1914, 993, -120, 48, -75, -197, -272, -346, + -409, -471, -326, -180, -215, -505, -811, -1117, -1275, -1432, -1637, -1842, -1825, -1552, -1248, -686, 1194, 1026, + 1610, 2194, 2194, 2194, 2194, 1276, 1297, 1319, 1341, 1363, 1376, 1390, 1340, 1802, 1854, 1907, 1863, 1820, 1768, + 1717, 1377, 1038, 1031, 1024, 889, 755, 568, 381, 290, 200, 19, -162, 553, 1781, 2060, 1827, 1786, 1746, 2086, 378, + -50, 35, -157, -349, -317, -284, -420, -555, -338, -121, -457, -792, -935, -1078, -1245, -1412, -1515, -1617, + -1908, -1687, -1658, -1116, 1964, 1972, 2076, 2180, 2180, 2180, 2180, 1262, 1290, 1318, 1347, 1375, 1359, 1344, + 1632, 1921, 1927, 1934, 1877, 1820, 1702, 1585, 1260, 935, 907, 880, 724, 569, 436, 302, 217, 132, 44, -43, -99, + 102, 801, 2011, 1878, 1745, 1426, 2131, 916, -43, -192, -341, -394, -446, -463, -479, -239, -255, -523, -791, -963, + -1135, -1520, -1648, -1761, -1873, -1447, -2046, -1828, -1354, 2254, 2278, 2222, 2166, 2166, 2166, 2166, 1248, + 1283, 1318, 1353, 1388, 1343, 1298, 1925, 2040, 2001, 1962, 1891, 1820, 1637, 1454, 1143, 832, 784, 736, 560, 384, + 304, 224, 144, 64, 70, 76, 18, -40, 54, 1684, 1714, 1744, 1790, 1836, 1882, 1928, 798, -332, -470, -608, -505, + -402, -139, -388, -589, -790, -991, -1192, -1794, -1884, -2006, -2128, -2266, -868, 818, 2504, 2288, 2072, 2112, + 2152, 2152, 2152, 2152, 1238, 1264, 1290, 1333, 1375, 1301, 1484, 2002, 2009, 1974, 1939, 1872, 1805, 1608, 1411, + 1118, 826, 751, 676, 505, 334, 273, 212, 151, 91, 69, 48, 10, -27, 482, 1758, 1771, 1784, 2033, 1771, 1860, 1950, + 1989, 2029, 884, -260, -1157, -261, -310, -614, -923, -975, -1412, -1848, -2062, -2019, -697, 626, 2060, 2471, + 2273, 2076, 2051, 2026, 2081, 2136, 2136, 2136, 2136, 1228, 1245, 1263, 1313, 1363, 1260, 1670, 2080, 1978, 1947, + 1916, 1853, 1791, 1580, 1369, 1094, 820, 718, 616, 450, 285, 243, 201, 159, 118, 69, 20, 3, -13, 910, 1833, 1828, + 1824, 229, 1706, 1839, 1972, 1901, 1830, 1983, 2136, 2032, 1416, 1056, 696, 280, 376, 728, 1080, 1767, 2454, 2405, + 2356, 2035, 2226, 2193, 2160, 2070, 1980, 2050, 2120, 2120, 2120, 2120, 1218, 1226, 1236, 1293, 1350, 1235, 1888, + 2061, 1979, 1936, 1893, 1834, 1776, 1551, 1327, 1070, 814, 685, 556, 395, 235, 212, 190, 167, 145, 116, 88, -68, + 32, 1306, 1812, 1949, 1576, -200, -183, 905, 1994, 1956, 1919, 1881, 1844, 2004, 1909, 2005, 2102, 2042, 2239, + 2195, 2152, 2043, 1935, 2370, 2038, 2697, 1821, 368, 2244, 2121, 1998, 2051, 2104, 2104, 2104, 2104, 1208, 1208, + 1209, 1273, 1338, 1210, 2107, 2043, 1980, 1925, 1871, 1816, 1762, 1523, 1285, 1046, 808, 652, 497, 341, 186, 182, + 179, 175, 172, 164, 157, 117, 590, 1958, 1791, 1815, 816, 140, -24, -28, -32, 988, 2008, 2036, 2064, 1977, 1890, + 1931, 1972, 2013, 2054, 2127, 2200, 2320, 2440, 2080, 184, -1760, -3192, 336, 2328, 2172, 2016, 2052, 2088, 2088, + 2088, 2088, 1222, 1215, 1209, 1267, 1325, 1459, 2105, 2046, 1989, 1946, 1904, 1861, 1819, 1612, 1406, 1136, 866, + 715, 565, 446, 328, 295, 263, 231, 199, 481, 765, 712, 1427, 2086, 1721, 1692, 128, -37, 55, -14, -82, -109, -135, + 334, 804, 1293, 1783, 2272, 2250, 2197, 1889, 1356, 568, -764, -2095, -3011, -2646, -2932, -2705, 2305, 2196, 2159, + 2122, 2117, 2112, 2112, 2112, 2112, 1236, 1223, 1210, 1261, 1313, 1708, 2103, 2050, 1998, 1967, 1937, 1907, 1877, + 1702, 1528, 1226, 924, 778, 633, 552, 471, 409, 348, 287, 226, 287, 349, 283, 1241, 1702, 1652, 1826, -48, 43, 134, + 1, -132, -181, -230, -343, -456, -670, -884, -202, -544, -946, -1860, -1718, -2088, -2311, -2534, -2469, -2404, + -2311, -1706, 2483, 2064, 2146, 2228, 2182, 2136, 2136, 2136, 2136, 1250, 1230, 1211, 1255, 1300, 1957, 2101, 2054, + 2007, 1956, 1906, 1856, 1806, 1696, 1586, 1284, 982, 841, 701, 657, 613, 555, 497, 439, 381, 413, 445, 718, 1758, + 1782, 1807, 1095, -128, -70, -11, -97, -182, -254, -325, -429, -532, -762, -991, -581, -170, -1034, -873, -1977, + -1800, -2019, -2237, -2344, -2450, -2651, -35, 2308, 2092, 2117, 2142, 2151, 2160, 2160, 2160, 2160, 1264, 1238, + 1212, 1250, 1288, 2206, 2100, 2058, 2016, 1946, 1876, 1806, 1736, 1690, 1644, 1342, 1040, 905, 770, 763, 756, 701, + 646, 591, 536, 539, 542, 897, 1764, 1607, 1962, 365, -208, -182, -156, -194, -232, -326, -420, -514, -608, -853, + -1098, -1471, -820, -97, -910, -955, -2024, -2238, -2452, -2474, -2496, -2990, 1636, 2134, 2120, 2088, 2056, 2120, + 2184, 2184, 2184, 2184, 1198, 1191, 1185, 1227, 1525, 2065, 2093, 2009, 1925, 1887, 1850, 1781, 1712, 1682, 1653, + 1464, 1275, 1130, 986, 937, 889, 841, 792, 744, 696, 685, 674, 1335, 1741, 1840, 1939, 54, -294, -296, -298, -299, + -301, -415, -528, -642, -755, -948, -1140, -1733, -1813, -734, -166, -1039, -887, -1235, -1582, -1610, -1637, + -1158, 2392, 2279, 2166, 2119, 2072, 2121, 2170, 2170, 2170, 2170, 1132, 1145, 1159, 1205, 1763, 1924, 2086, 1960, + 1834, 1829, 1825, 1756, 1688, 1675, 1663, 1586, 1510, 1356, 1202, 1112, 1023, 981, 939, 897, 856, 831, 807, 1774, + 1718, 1817, 1405, -512, -380, -410, -439, -404, -369, -503, -636, -769, -902, -1042, -1182, -1482, -1782, -2138, + -1982, -610, -262, -487, -712, -745, -777, 162, 2125, 1912, 2212, 2150, 2088, 2122, 2156, 2156, 2156, 2156, 1194, + 1147, 1101, 1182, 1776, 1927, 2079, 1863, 1903, 1979, 1799, 1843, 1632, 1620, 1608, 1612, 1617, 1517, 1418, 1351, + 1284, 1217, 1150, 1098, 1048, 945, 1099, 1781, 1695, 1954, 422, -566, -530, -556, -580, -573, -566, -687, -808, + -929, -1049, -1233, -1416, -1680, -1943, -2343, -2486, -2502, -2773, -2076, -1378, -1672, -2222, 458, 2370, 2137, + 2162, 2133, 2104, 2123, 2142, 2142, 2142, 2142, 1256, 1149, 1043, 1160, 1790, 1931, 2073, 1766, 1972, 2129, 1774, + 1931, 1576, 1565, 1554, 1639, 1724, 1679, 1635, 1590, 1546, 1453, 1361, 1300, 1240, 1060, 1392, 1788, 1672, 2092, + -560, -620, -680, -701, -721, -742, -762, -871, -979, -1088, -1196, -1423, -1650, -1877, -2104, -2291, -2478, + -2857, -2724, -2896, -3067, -3111, -3666, 2546, 2103, 2107, 2112, 2116, 2120, 2124, 2128, 2128, 2128, 2128, 1214, + 1171, 1128, 1453, 1779, 1692, 1862, 1807, 1753, 1732, 1712, 1804, 1640, 1759, 1623, 1711, 1799, 1666, 1791, 1755, + 1719, 1629, 1539, 1497, 1456, 1352, 1504, 1752, 1745, 1445, -903, -899, -894, -909, -923, -937, -951, -1071, -1191, + -1312, -1431, -1642, -1852, -2063, -2273, -2432, -2590, -2813, -2779, -2931, -3081, -3280, -2199, 2298, 2187, 2124, + 2062, 2081, 2100, 2119, 2138, 2138, 2138, 2138, 1172, 1193, 1214, 1747, 1769, 1710, 2163, 2360, 2046, 1592, 1651, + 1677, 1704, 1954, 1693, 1783, 1874, 1654, 1947, 1920, 1893, 1805, 1718, 1695, 1672, 1644, 1617, 1717, 1818, 798, + -1245, -1177, -1108, -1116, -1124, -1132, -1139, -1271, -1403, -1535, -1666, -1860, -2054, -2248, -2442, -2572, + -2702, -2768, -2834, -2965, -3095, -3193, -219, 2306, 2272, 2142, 2012, 2046, 2080, 2114, 2148, 2148, 2148, 2148, + 1194, 1151, 1364, 1785, 1694, 1983, 2272, 1441, 2147, 1980, 1813, 1838, 1864, 1909, 1698, 1823, 1949, 1818, 1943, + 1989, 2034, 1933, 1833, 1812, 1792, 1712, 1633, 1650, 1923, -537, -1460, -1391, -1322, -1356, -1389, -1423, -1456, + -1567, -1679, -1790, -1901, -2079, -2256, -2434, -2611, -2745, -2878, -2916, -2953, -2999, -3045, -3778, 1632, + 2298, 1941, 2015, 2090, 2107, 2124, 2141, 2158, 2158, 2158, 2158, 1216, 1109, 1514, 1823, 1620, 2001, 1870, 1803, + 1224, 1600, 1464, 1232, 1000, 1096, 1192, 1352, 1512, 1726, 1940, 2058, 2176, 2062, 1948, 1930, 1912, 1781, 1650, + 1583, 2028, -1871, -1674, -1605, -1536, -1595, -1654, -1713, -1772, -1863, -1954, -2045, -2136, -2297, -2458, + -2619, -2780, -2917, -3054, -3063, -3072, -3033, -2994, -2827, 2460, 2035, 2122, 2145, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 1190, 1272, 1610, 1757, 1647, 1523, 1144, 1324, 1249, 1364, 1224, 1211, 1199, 1255, 1566, + 1430, 1294, 1404, 1514, 1800, 2087, 2075, 2063, 2003, 1944, 1654, 1621, 1812, 979, -1999, -1904, -1889, -1874, + -1929, -1983, -2038, -2092, -2164, -2237, -2309, -2381, -2514, -2646, -2779, -2911, -3006, -3100, -3115, -3129, + -3040, -3206, -1085, 2317, 2104, 2148, 2159, 2171, 2175, 2179, 2183, 2187, 2187, 2187, 2187, 1164, 1179, 1195, + 1179, 1163, 1302, 1442, 1358, 1274, 1385, 1496, 1447, 1399, 1158, 1429, 1508, 1588, 1594, 1601, 1543, 1486, 1832, + 2179, 2077, 1976, 1528, 1593, 1785, -582, -2382, -2133, -2173, -2212, -2262, -2312, -2362, -2411, -2465, -2519, + -2573, -2626, -2730, -2834, -2938, -3042, -3094, -3146, -3166, -3186, -3046, -3418, 658, 2174, 2174, 2174, 2174, + 2174, 2182, 2190, 2198, 2206, 2206, 2206, 2206, 1202, 1230, 1260, 1273, 1286, 1321, 1356, 1343, 1331, 1405, 1480, + 1475, 1470, 1349, 1484, 1522, 1562, 1576, 1591, 1574, 1557, 1589, 1622, 1719, 1816, 1690, 1820, 1694, -2015, -2557, + -2331, -2377, -2422, -2612, -2801, -2702, -2603, -2670, -2737, -2805, -2871, -2947, -3022, -3098, -3173, -3183, + -3192, -3154, -3115, -3325, -3278, 2256, 2159, 2147, 2136, 2156, 2177, 2189, 2201, 2213, 2225, 2225, 2225, 2225, + 1240, 1282, 1325, 1367, 1410, 1340, 1271, 1329, 1388, 1426, 1465, 1503, 1542, 1540, 1539, 1537, 1536, 1559, 1582, + 1605, 1628, 1603, 1578, 1617, 1656, 1596, 1536, 1604, -2936, -2476, -2528, -2580, -2632, -2705, -2777, -2786, + -2794, -2875, -2955, -3036, -3116, -3163, -3210, -3257, -3304, -3271, -3238, -3141, -3044, -3091, -2114, 2319, + 2144, 2121, 2098, 2139, 2180, 2196, 2212, 2228, 2244, 2244, 2244, 2244, 1230, 1255, 1281, 1307, 1333, 1303, 1273, + 1338, 1405, 1436, 1469, 1501, 1533, 1535, 1537, 1539, 1542, 1563, 1584, 1605, 1627, 1602, 1577, 1616, 1656, 1807, + 1959, -417, -2793, -2798, -2546, -2582, -2618, -2689, -2758, -2796, -2834, -2902, -2970, -3038, -3105, -3146, + -3186, -3179, -3171, -3150, -3128, -3059, -2989, -3222, -126, 2281, 2129, 2084, 2040, 2107, 2175, 2189, 2203, 2217, + 2231, 2231, 2231, 2231, 1220, 1229, 1238, 1247, 1257, 1266, 1275, 1348, 1422, 1447, 1473, 1499, 1525, 1530, 1536, + 1542, 1548, 1567, 1587, 1606, 1626, 1601, 1577, 1616, 1656, 1763, 1871, 1658, -2138, -2863, -2563, -2584, -2604, + -2672, -2739, -2806, -2873, -2929, -2984, -3039, -3094, -3128, -3162, -3100, -3038, -3028, -3018, -2976, -2934, + -3352, 1862, 2244, 2114, 2048, 1982, 2076, 2170, 2182, 2194, 2206, 2218, 2218, 2218, 2218, 1210, 1234, 1259, 1283, + 1308, 1325, 1341, 1390, 1439, 1458, 1477, 1497, 1516, 1525, 1535, 1544, 1554, 1571, 1589, 1607, 1625, 1616, 1608, + 1632, 1656, 1719, 1782, 1685, 1845, 528, -2837, -2730, -2622, -2655, -2688, -2720, -2753, -2764, -2774, -2993, + -2955, -3031, -3106, -2814, -2777, -3227, -2908, -3134, -3359, -971, 2186, 2270, 2099, 2075, 2052, 2108, 2165, + 2175, 2185, 2195, 2205, 2205, 2205, 2205, 1200, 1240, 1280, 1320, 1360, 1384, 1408, 1432, 1456, 1469, 1482, 1495, + 1508, 1521, 1534, 1547, 1560, 1576, 1592, 1608, 1624, 1632, 1640, 1648, 1656, 1675, 1694, 1713, 1732, 1871, 986, + -827, -2640, -2638, -2636, -2634, -2632, -2598, -2564, -2946, -2816, -2933, -3050, -2783, -3028, -3169, -1774, 293, + 2360, 2179, 1998, 2041, 2084, 2103, 2122, 2141, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, 1232, 1266, 1300, + 1334, 1368, 1390, 1412, 1434, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1578, 1596, 1614, 1632, 1640, + 1648, 1656, 1664, 1646, 1628, 1706, 1784, 2102, 1908, 1298, 688, 1071, -594, -1587, -2580, -2891, -3202, -2281, + -2640, -2058, -1476, -94, 1032, 2278, 2244, 2210, 2176, 2132, 2088, 2092, 2096, 2112, 2128, 2144, 2160, 2168, 2176, + 2184, 2192, 2192, 2192, 2192, 1264, 1292, 1320, 1348, 1376, 1396, 1416, 1436, 1456, 1469, 1482, 1495, 1508, 1521, + 1534, 1547, 1560, 1580, 1600, 1620, 1640, 1648, 1656, 1664, 1672, 1617, 1562, 1699, 1836, 1821, 1806, 1887, 1968, + 1964, 1960, 2020, 2080, 1936, 1792, 1200, 1632, 1889, 2146, 2083, 2020, 2093, 2166, 2079, 1992, 2085, 2178, 2143, + 2108, 2121, 2134, 2147, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, 1296, 1318, 1340, 1362, 1384, 1402, 1420, + 1438, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1582, 1604, 1626, 1648, 1656, 1664, 1672, 1680, 1668, + 1656, 1740, 1824, 1812, 1800, 1836, 1872, 1881, 1890, 1819, 1748, 1995, 450, 937, 912, 716, 2056, 2020, 1984, 2036, + 2088, 2060, 2032, 2086, 2140, 2130, 2120, 2130, 2140, 2150, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, 1328, + 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1584, 1608, 1632, + 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, 1785, 1776, 1798, 1820, 1874, 1928, 1798, 2180, + 674, 1216, 2103, 1966, 1957, 1948, 1979, 2010, 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, + 2176, 2184, 2192, 2192, 2192, 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, + 1521, 1534, 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, 1785, + 1776, 1798, 1820, 1858, 1896, 1750, 1860, 2338, 1792, 2135, 1966, 1957, 1948, 1979, 2010, 2041, 2072, 2087, 2102, + 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, 1328, 1344, 1360, 1376, 1392, 1408, + 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1584, 1608, 1632, 1656, 1664, 1672, 1680, 1688, + 1719, 1750, 1781, 1812, 1803, 1794, 1785, 1776, 1798, 1820, 1842, 1864, 1958, 2052, 1954, 1856, 1911, 1966, 1957, + 1948, 1979, 2010, 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, 2160, 2168, 2176, 2184, 2192, 2192, 2192, + 2192, 1328, 1344, 1360, 1376, 1392, 1408, 1424, 1440, 1456, 1469, 1482, 1495, 1508, 1521, 1534, 1547, 1560, 1584, + 1608, 1632, 1656, 1664, 1672, 1680, 1688, 1719, 1750, 1781, 1812, 1803, 1794, 1785, 1776, 1798, 1820, 1842, 1864, + 1958, 2052, 1954, 1856, 1911, 1966, 1957, 1948, 1979, 2010, 2041, 2072, 2087, 2102, 2117, 2132, 2139, 2146, 2153, + 2160, 2168, 2176, 2184, 2192, 2192, 2192, 2192, ]; const YCBCR_BUFFER_CR: [i16; 4096] = [ - -2112, -2114, -2116, -2118, -2120, -2122, -2124, -2126, -2128, -2118, -2108, -2098, -2088, - -2150, -2212, -2146, -2080, -2100, -2120, -2140, -2160, -2164, -2168, -2172, -2176, -2092, - -2008, -2052, -2096, -2132, -2168, -2076, -1984, -2088, -2192, -2168, -2144, -2136, -2128, - -2120, -2112, -2126, -2140, -2154, -2168, -2150, -2132, -2114, -2096, -2096, -2096, -2096, - -2096, -2096, -2096, -2096, -2096, -2080, -2064, -2048, -2032, -2032, -2032, -2032, -2128, - -2114, -2099, -2116, -2133, -2134, -2135, -2136, -2137, -2128, -2118, -2108, -2098, -2118, - -2138, -2126, -2114, -2135, -2155, -2160, -2164, -2136, -2109, -2129, -2149, -2133, -2117, - -2116, -2116, -2116, -2115, -2099, -2082, -2113, -2143, -2142, -2140, -2134, -2129, -2123, - -2117, -2128, -2138, -2148, -2158, -2147, -2135, -2123, -2111, -2109, -2107, -2105, -2102, - -2102, -2102, -2102, -2101, -2087, -2073, -2059, -2045, -2045, -2045, -2045, -2144, -2113, - -2081, -2113, -2145, -2146, -2146, -2146, -2146, -2137, -2127, -2117, -2107, -2086, -2064, - -2106, -2148, -2169, -2190, -2179, -2167, -2108, -2049, -2086, -2122, -2174, -2225, -2180, - -2135, -2099, -2062, -2121, -2180, -2137, -2094, -2115, -2135, -2132, -2129, -2126, -2122, - -2129, -2135, -2142, -2148, -2143, -2137, -2132, -2126, -2122, -2117, -2113, -2108, -2108, - -2107, -2107, -2106, -2094, -2082, -2070, -2058, -2058, -2058, -2058, -2160, -2112, -2063, - -2111, -2158, -2158, -2157, -2156, -2155, -2146, -2136, -2127, -2117, -2134, -2150, -2134, - -2118, -2156, -2193, -2182, -2171, -2496, -2309, -2395, -2479, -2471, -2461, -2244, -2283, - -2354, -2169, -2176, -2182, -2162, -2141, -2136, -2131, -2130, -2129, -2129, -2127, -2130, - -2133, -2136, -2138, -2139, -2140, -2141, -2141, -2135, -2128, -2121, -2114, -2114, -2113, - -2112, -2111, -2101, -2091, -2081, -2071, -2071, -2071, -2071, -2176, -2111, -2045, -2108, - -2170, -2169, -2167, -2166, -2164, -2155, -2145, -2136, -2126, -2181, -2235, -2162, -2088, - -2142, -2195, -2441, -2686, -2372, -1033, -399, 236, 305, 375, -4, -894, -2097, -2787, -2486, - -2184, -2186, -2187, -2157, -2126, -2128, -2129, -2131, -2132, -2131, -2130, -2129, -2128, - -2135, -2142, -2149, -2156, -2147, -2138, -2129, -2120, -2119, -2118, -2117, -2116, -2108, - -2100, -2092, -2084, -2084, -2084, -2084, -2112, -2086, -2060, -2114, -2167, -2069, -2226, - -2192, -2157, -2108, -2059, -2106, -2152, -2121, -2089, -2634, -2666, -2265, -838, 844, 2526, - 3326, 2846, 2846, 2847, 2726, 2606, 2966, 3070, 2968, 2866, 395, -2074, -2747, -2138, -2282, - -2170, -2204, -2238, -2192, -2145, -2147, -2148, -2149, -2150, -2154, -2157, -2160, -2163, - -2160, -2157, -2154, -2150, -2131, -2112, -2125, -2137, -2127, -2117, -2107, -2097, -2097, - -2097, -2097, -2048, -2061, -2074, -2119, -2163, -1968, -2285, -2218, -2150, -2061, -1972, - -2075, -2177, -2316, -2455, -1058, 1364, 2989, 2567, 2593, 2619, 2368, 2630, 2508, 2386, 2332, - 2278, 2352, 2427, 2913, 2887, 3021, 3156, 1301, -2089, -2407, -2213, -2280, -2346, -2252, - -2158, -2162, -2165, -2169, -2172, -2172, -2171, -2171, -2170, -2173, -2175, -2178, -2180, - -2143, -2105, -2132, -2158, -2146, -2134, -2122, -2110, -2110, -2110, -2110, -2112, -2164, - -2216, -2236, -2256, -1996, -2248, -2196, -2143, -2110, -2077, -2124, -2171, -2272, 699, 3526, - 2770, 2035, 2324, 2294, 2263, 2178, 2350, 2265, 2181, 2129, 2078, 2154, 2231, 2522, 2556, 2559, - 2562, 3221, 3112, 140, -2833, -2036, -2262, -2201, -2139, -2161, -2183, -2189, -2194, -2190, - -2186, -2182, -2177, -2186, -2194, -2202, -2210, -2155, -2099, -2139, -2179, -2165, -2151, - -2137, -2123, -2123, -2123, -2123, -1664, -1755, -1846, -1841, -1836, -1767, -2210, -2173, - -2136, -2159, -2182, -2173, -2164, -2739, 2830, 2735, 2640, 2361, 2082, 1995, 1908, 1989, 2070, - 2023, 1976, 1927, 1878, 1957, 2036, 2131, 2226, 2353, 2480, 2581, 2682, 2943, 2692, -2815, - -2178, -2149, -2120, -2160, -2200, -2208, -2216, -2208, -2200, -2192, -2184, -2198, -2212, - -2226, -2240, -2166, -2092, -2146, -2200, -2184, -2168, -2152, -2136, -2136, -2136, -2136, - -2096, -2168, -2239, -2230, -2221, -2088, -2211, -2174, -2137, -2191, -2244, -2153, -2318, - -2032, 3375, 2862, 2605, 2306, 2007, 1852, 1697, 1756, 1815, 1810, 1806, 1756, 1707, 1754, - 1801, 1912, 2023, 2150, 2277, 2300, 2323, 2730, 1345, -2440, -2129, -2218, -2307, -2350, -2137, - -2180, -2223, -2224, -2225, -2194, -2162, -2172, -2181, -2191, -2200, -2199, -2199, -2214, - -2229, -2172, -2115, -2170, -2225, -2113, -2257, -2257, -2016, -2068, -2119, -2106, -2093, - -2153, -2212, -2175, -2138, -2222, -2305, -2133, -2472, 212, 2897, 2477, 2570, 2251, 1932, - 1709, 1487, 1524, 1561, 1598, 1636, 1586, 1537, 1552, 1567, 1693, 1820, 1947, 2074, 2019, 1964, - 2261, -514, -2321, -2080, -2031, -1982, -2284, -2074, -2152, -2229, -2239, -2249, -2195, -2140, - -2145, -2150, -2155, -2159, -2232, -2305, -2282, -2258, -2160, -2062, -2188, -2314, -2090, - -2378, -2378, -2064, -2096, -2127, -2127, -2126, -2154, -2181, -2160, -2139, -2205, -2271, - -2145, -2530, 1688, 2834, 2460, 2343, 2148, 1953, 1678, 1404, 1387, 1371, 1418, 1466, 1416, - 1367, 1349, 1332, 1442, 1553, 1664, 1775, 1818, 1861, 2416, -2405, -2458, -1999, -2036, -281, - -1466, -2395, -2380, -2364, -2303, -2241, -2196, -2150, -2167, -2183, -2183, -2183, -2201, - -2219, -2190, -2159, -2756, -2329, -1934, -2307, -2627, -2179, -2307, -2112, -2124, -2135, - -2147, -2158, -2154, -2149, -2145, -2140, -2188, -2236, -2156, -2588, 3164, 2772, 2444, 2116, - 2045, 1975, 1648, 1322, 1251, 1181, 1238, 1296, 1246, 1197, 1147, 1098, 1192, 1287, 1381, 1476, - 1617, 1758, 1291, -2760, -2083, -2430, -1273, -628, -648, -667, -1583, -2498, -2366, -2233, - -2197, -2160, -2188, -2215, -2211, -2206, -2170, -2133, -2097, -2060, -280, -548, -2448, -1788, - -860, -1980, -2236, -2112, -2122, -2132, -2142, -2151, -2147, -2142, -2138, -2133, -2148, - -2162, -2080, -718, 3207, 2525, 2291, 2057, 1942, 1828, 1553, 1279, 1174, 1070, 1094, 1118, - 1044, 970, 976, 983, 1001, 1020, 1166, 1313, 1306, 1555, -212, -2491, -2190, -2401, -868, -615, - -644, -672, -605, -537, -1356, -2174, -2272, -2370, -2342, -2312, -2331, -2350, -2317, -2284, - -2699, -1321, -420, -543, -394, -757, -741, -2261, -2261, -2112, -2120, -2128, -2136, -2143, - -2139, -2135, -2131, -2126, -2107, -2087, -2260, 640, 2995, 2279, 2138, 1998, 1839, 1681, 1459, - 1237, 1098, 960, 950, 940, 842, 744, 806, 869, 811, 753, 951, 1150, 995, 1352, -1715, -2222, - -2297, -2372, -463, -602, -640, -677, -650, -623, -601, -578, -811, -1044, -1215, -1385, -1427, - -1469, -1184, -898, -484, -582, -560, -538, -900, -750, -1134, -2542, -2286, -2112, -2118, - -2124, -2130, -2136, -2132, -2128, -2124, -2119, -2018, -1917, -2888, 1262, 2015, 2256, 2097, - 1939, 1736, 1534, 1364, 1194, 1022, 850, 806, 762, 736, 710, 508, 818, 604, 646, 752, 859, - 1132, 1149, -2866, -2273, -2340, -1639, -426, -493, -524, -554, -568, -582, -678, -774, -662, - -550, -568, -586, -587, -589, -659, -728, -574, -675, -668, -661, -798, -679, -1799, -2407, - -2151, -2112, -2116, -2120, -2124, -2128, -2124, -2120, -2116, -2112, -2185, -2258, -1723, - 1884, 1035, 2234, 2057, 1880, 1634, 1388, 1270, 1152, 946, 740, 662, 584, 630, 676, 466, 1280, - 654, 540, 554, 568, 757, -78, -2481, -2324, -2383, -906, -389, -384, -407, -430, -485, -540, - -499, -458, -513, -568, -689, -810, -771, -732, -645, -558, -663, -768, -776, -784, -696, -608, - -2464, -2272, -2016, -2104, -2111, -2117, -2123, -2129, -2106, -2082, -2106, -2130, -2206, - -2537, -85, 1856, 1149, 1209, 1702, 1683, 1507, 1332, 1188, 1045, 837, 630, 518, 407, 489, 572, - 398, 1249, 662, 330, 383, 436, 589, -1305, -2352, -2118, -2616, 213, -13, -239, -267, -294, - -322, -349, -378, -408, -485, -562, -627, -692, -677, -661, -626, -591, -684, -776, -804, -832, - -540, -248, -664, -1848, -2616, -2096, -2105, -2113, -2122, -2130, -2087, -2043, -2096, -2148, - -2226, -2816, 1554, 1829, 1519, 697, 1603, 1486, 1381, 1276, 1107, 938, 729, 520, 375, 230, - 349, 468, 331, 1219, 670, 121, 212, 304, 422, -2532, -2478, -2423, -1569, 309, -149, -94, -126, - -158, -158, -157, -257, -357, -457, -556, -565, -573, -582, -590, -607, -623, -704, -784, -832, - -880, -384, 112, -1424, -2448, -2192, -2088, -2099, -2110, -2121, -2131, -2100, -2069, -2102, - -2134, -2487, -2327, 2921, 2025, 1537, 1049, 1088, 1385, 1270, 1156, 993, 831, 700, 570, 407, - 245, 256, 268, 344, 932, 662, 136, 185, 236, -338, -2447, -2348, -2505, -794, 149, -77, -45, - -66, -86, -90, -94, -184, -274, -365, -454, -455, -455, -519, -583, -620, -656, -724, -792, - -796, -800, -868, -1960, -2296, -2376, -2248, -2080, -2093, -2106, -2119, -2132, -2113, -2094, - -2107, -2120, -2235, -813, 2752, 2222, 1555, 1401, 574, 1284, 1160, 1036, 880, 724, 672, 620, - 440, 260, 164, 69, 357, 646, 654, 151, 159, 168, -1097, -2361, -2218, -2586, -19, -11, -4, 4, - -5, -13, -22, -30, -111, -191, -272, -352, -344, -336, -456, -576, -632, -688, -744, -800, - -760, -720, -584, -2496, -2400, -2304, -2304, -2072, -2088, -2103, -2118, -2133, -2173, -2212, - -2171, -2130, -2464, 1044, 2615, 2138, 1657, 1432, 807, 951, 1193, 924, 734, 545, 397, 250, - 486, 723, 569, 417, 312, 207, 384, 305, 242, 180, -1827, -2296, -2350, -1892, 68, -20, -12, -3, - -9, -13, -18, -23, -66, -109, -184, -258, -310, -362, -478, -593, -641, -689, -737, -784, -752, - -720, -1200, -2448, -2384, -2320, -2320, -2064, -2082, -2099, -2117, -2134, -2232, -2329, - -2235, -2140, -2692, 2901, 2478, 2055, 1759, 1464, 1041, 618, 1227, 812, 589, 366, 379, 392, - 277, 162, 207, 253, 267, 281, 114, -52, 70, 192, -2556, -2231, -2482, -1197, 155, -28, -19, - -10, -12, -13, -14, -15, -21, -26, -95, -164, -276, -387, -499, -610, -650, -689, -729, -768, - -744, -720, -1816, -2400, -2368, -2336, -2336, -2056, -2076, -2096, -2116, -2135, -2179, -2223, - -2139, -2310, -1320, 2742, 2293, 2099, 1893, 1432, 1242, 541, 1036, 1020, 699, 379, 376, 374, - 275, 177, 197, 217, 190, 162, 100, 39, 153, -756, -2421, -2294, -2550, -503, 130, -4, -11, -17, - -15, -13, -10, -8, -8, -7, -103, -198, -322, -445, -520, -595, -643, -690, -721, -752, -768, - -784, -2192, -2320, -2336, -2352, -2352, -2048, -2070, -2092, -2114, -2136, -2126, -2116, - -2042, -2480, 52, 2584, 2108, 2144, 2028, 1400, 1444, 464, 78, -308, -470, -632, -394, -156, - 18, 192, 187, 182, 113, 44, 87, 130, 237, -1704, -2286, -2356, -2618, 192, 106, 20, -2, -24, - -18, -12, -6, 0, 6, 12, -110, -232, -367, -502, -541, -580, -635, -690, -713, -736, -792, -848, - -2568, -2240, -2304, -2368, -2368, -2046, -2069, -2092, -2114, -2137, -2122, -2106, -2187, - -2523, 1999, 2681, 2739, 1518, 116, -1542, -2640, -2457, -2466, -2475, -2467, -2460, -2499, - -2537, -2304, -2070, -995, 81, -76, 24, 35, 47, -150, -2394, -2423, -2451, -1807, 117, 85, 53, - 21, -11, -11, -11, -11, -11, -11, -11, -107, -203, -405, -606, -616, -625, -611, -596, -694, - -791, -757, -1491, -2401, -2287, -2303, -2319, -2319, -2044, -2068, -2091, -2114, -2137, -2117, - -2096, -2075, -2054, 2922, 219, -1749, -2692, -2564, -2435, -2115, -2306, -2194, -2081, -2160, - -2239, -2299, -2358, -2321, -2284, -2432, -2580, -1544, 4, -16, -36, -280, -2572, -2303, -2545, - -995, 43, 64, 86, 44, 2, -4, -10, -16, -22, -28, -34, -104, -174, -186, -198, -178, -158, -330, - -502, -674, -846, -722, -2134, -2234, -2334, -2302, -2270, -2270, -2042, -2067, -2090, -2114, - -2138, -2160, -2182, -2156, -2129, -2459, -2532, -2605, -2166, -2220, -2273, -2294, -2315, - -2002, -2199, -2221, -2243, -2323, -2403, -2387, -2370, -2286, -2201, -2453, -2704, -1412, 137, - -1403, -2174, -2503, -2831, 248, 0, 27, 55, 35, 15, 3, -9, -21, -33, -45, -57, -101, -145, - -176, -206, -221, -235, -178, -120, -415, -709, -191, -2489, -2547, -2349, -2349, -2349, -2349, - -2040, -2065, -2089, -2114, -2138, -2203, -2267, -2236, -2204, -2207, -2210, -2181, -2152, - -2131, -2110, -2217, -1812, -1553, -2317, -2026, -1734, -1579, -1423, -1940, -2456, -2395, - -2334, -2081, -2340, -2551, -2250, -2013, -2288, -2447, -2093, -44, -42, -9, 25, 26, 28, 10, - -8, -26, -44, -62, -80, -98, -116, -165, -214, -263, -312, -281, -250, -155, -60, -940, -1820, - -2348, -2364, -2396, -2428, -2428, -2038, -2060, -2081, -2102, -2123, -2124, -2125, -2287, - -2191, -2066, -1941, -1912, -1882, -2233, -2328, -2151, -1717, -1487, -2024, -1761, -1498, - -1243, -988, -718, -446, -1227, -2007, -2724, -2160, -2331, -2245, -2176, -2362, -2339, -1036, - 107, -29, -20, -10, 15, 41, 19, -3, -25, -47, -89, -131, -141, -151, -209, -266, -356, -445, - -459, -472, -406, -83, -1135, -1163, -1895, -2371, -2387, -2403, -2403, -2036, -2054, -2072, - -2090, -2107, -2045, -1983, -2081, -1666, -1669, -1671, -1898, -2124, -2591, -2545, -2084, - -1622, -1420, -1730, -1496, -1261, -1163, -1065, -775, -484, -314, -144, -806, -2492, -2366, - -2240, -2338, -2436, -2487, -490, 3, -15, -30, -45, 4, 54, 28, 2, -24, -50, -116, -182, -184, - -186, -252, -318, -448, -578, -636, -694, -656, -106, -2098, -2042, -2210, -2378, -2378, -2378, - -2378, -2034, -2049, -2063, -2078, -2092, -2094, -2097, -1651, -1461, -1688, -1914, -2156, - -2398, -2677, -2443, -2017, -1591, -1450, -1564, -1343, -1121, -987, -854, -624, -394, -266, - -137, 199, 24, -1554, -2363, -2325, -2286, -2123, -2728, -1221, 30, 135, -16, 25, 67, 37, 7, - -7, -21, -111, -201, -211, -221, -296, -370, -461, -551, -510, -468, -635, -545, -2805, -2249, - -2301, -2353, -2353, -2353, -2353, -2032, -2043, -2054, -2065, -2076, -2143, -2210, -1477, - -1768, -1962, -2156, -2414, -2672, -2762, -2340, -1950, -1560, -1479, -1398, -1189, -980, -811, - -642, -473, -304, -217, -130, -75, -20, 27, -2486, -2311, -2136, -2527, -2406, -2445, -2484, - -979, 14, 47, 80, 46, 12, 10, 8, -106, -220, -238, -256, -339, -422, -473, -524, -639, -754, - -1637, -2520, -2232, -2456, -2392, -2328, -2328, -2328, -2328, -2012, -2031, -2050, -2053, - -2056, -2193, -2074, -1587, -1867, -2082, -2296, -2527, -2757, -2654, -2294, -1887, -1479, - -1381, -1282, -1088, -893, -749, -604, -492, -379, -244, -109, -182, 1, -606, -2493, -2284, - -2331, -2482, -2376, -2415, -2453, -2309, -2422, -1350, -278, -125, 29, 87, 145, 126, 108, 26, - -56, -279, -502, -1108, -1715, -2164, -2612, -2533, -2453, -2297, -2397, -2369, -2341, -2341, - -2341, -2341, -1992, -2019, -2046, -2041, -2035, -2242, -1937, -1696, -1966, -2201, -2436, - -2639, -2842, -2545, -2248, -1823, -1398, -1282, -1166, -986, -806, -686, -566, -510, -454, - -271, -88, -289, 22, -1239, -2500, -2257, -2526, -388, -2346, -2384, -2421, -2359, -2297, - -2491, -2684, -2343, -2001, -1628, -1254, -1177, -1099, -1502, -1904, -2267, -2629, -2511, - -2393, -2408, -2422, -2404, -2386, -2362, -2338, -2346, -2354, -2354, -2354, -2354, -1972, - -2007, -2042, -2045, -2047, -2196, -1832, -1837, -2097, -2337, -2576, -2736, -2895, -2565, - -2234, -1840, -1445, -1280, -1114, -917, -719, -624, -528, -529, -529, -426, -323, -60, -53, - -2528, -2443, -2518, -2081, 169, -140, -1313, -2486, -2441, -2396, -2384, -2370, -2401, -2432, - -2511, -2589, -2560, -2531, -2502, -2472, -2431, -2388, -2490, -2336, -2940, -2008, -1332, - -2447, -2395, -2343, -2355, -2367, -2367, -2367, -2367, -1952, -1995, -2037, -2048, -2058, - -2149, -1727, -1978, -2228, -2472, -2716, -2832, -2948, -2584, -2220, -1856, -1492, -1277, - -1062, -847, -632, -561, -490, -547, -604, -581, -558, -343, -1152, -2281, -2386, -2523, -1124, - -41, 19, 14, 10, -1243, -2495, -2532, -2568, -2459, -2350, -2369, -2388, -2407, -2426, -2477, - -2528, -2594, -2659, -2213, -1254, 368, 967, -1027, -2508, -2428, -2348, -2364, -2380, -2380, - -2380, -2380, -1948, -1997, -2045, -2062, -2078, -1959, -1839, -2071, -2303, -2546, -2788, - -2919, -3049, -2874, -2442, -2027, -1611, -1375, -1138, -966, -793, -733, -672, -708, -743, - -848, -953, -2018, -2059, -2442, -2313, -2328, -295, 98, -19, 23, 65, 25, -15, -631, -1246, - -1796, -2345, -2510, -2675, -2541, -2406, -1887, -1368, -468, 433, 438, 699, 1162, 857, -2697, - -2409, -2413, -2417, -2389, -2361, -2361, -2361, -2361, -1944, -1999, -2053, -2075, -2097, - -1768, -1950, -2164, -2378, -2619, -2860, -3005, -3150, -3163, -2664, -2197, -1730, -1472, - -1214, -1084, -954, -904, -854, -868, -882, -859, -836, -877, -1942, -2091, -2240, -2389, 22, - -18, -57, 32, 121, 13, -94, -9, 76, 148, 221, 165, 110, 142, 175, 239, 304, 379, 454, 529, 605, - 676, 235, -2574, -2310, -2398, -2486, -2414, -2342, -2342, -2342, -2342, -1940, -2001, -2061, - -2073, -2085, -1641, -1965, -2145, -2325, -2533, -2740, -2900, -3059, -3053, -2790, -2320, - -1849, -1570, -1290, -1203, -1115, -1076, -1036, -1029, -1021, -1078, -1135, -504, -2689, - -2396, -2359, -1554, 19, -6, -31, 25, 80, 33, -13, 36, 86, 124, 162, 136, 111, 137, 163, 237, - 312, 393, 475, 524, 574, 654, -803, -2467, -2339, -2383, -2427, -2375, -2323, -2323, -2323, - -2323, -1936, -2002, -2068, -2070, -2072, -1514, -1980, -2126, -2272, -2446, -2620, -2794, - -2968, -2942, -2916, -2442, -1968, -1667, -1366, -1321, -1276, -1247, -1218, -1189, -1160, - -1041, -922, -1411, -2412, -2189, -2478, -719, 16, 6, -4, 18, 40, 54, 68, 82, 96, 100, 104, - 108, 112, 132, 152, 236, 320, 408, 496, 520, 544, 632, -1840, -2360, -2368, -2368, -2368, - -2336, -2304, -2304, -2304, -2304, -1898, -1921, -1944, -2111, -1766, -1551, -1848, -1985, - -2122, -2319, -2516, -2665, -2814, -3075, -3080, -2829, -2321, -2026, -1730, -1610, -1490, - -1458, -1426, -1394, -1362, -1247, -1132, -1880, -2373, -2534, -2694, 329, 25, 40, 55, 54, 54, - 71, 88, 105, 123, 151, 180, 208, 237, 83, -70, 48, 167, 248, 329, 346, 363, 732, -2739, -2578, - -2416, -2395, -2374, -2353, -2332, -2332, -2332, -2332, -1860, -1840, -1820, -2152, -1460, - -1588, -1716, -1844, -1972, -2192, -2412, -2536, -2659, -2951, -2731, -2959, -2674, -2384, - -2093, -1898, -1703, -1669, -1634, -1599, -1564, -1453, -1341, -2349, -2333, -2366, -1886, - -158, 34, 74, 115, 91, 68, 88, 109, 129, 150, 203, 256, 309, 362, 291, 220, 117, 14, 88, 162, - 172, 183, -703, -2613, -2283, -2464, -2422, -2380, -2370, -2360, -2360, -2360, -2360, -2110, - -1967, -1824, -1953, -1314, -1513, -1712, -1815, -1918, -2209, -2244, -2455, -2409, -2604, - -2542, -2753, -2707, -2694, -2680, -2411, -2141, -2056, -1970, -1868, -1766, -1723, -1678, - -2370, -2294, -2518, -950, -54, 75, 92, 110, 96, 82, 105, 129, 153, 177, 222, 268, 313, 359, - 354, 350, 441, 533, 472, 411, 414, 674, -1691, -2519, -2340, -2416, -2401, -2386, -2387, -2388, - -2388, -2388, -2388, -1848, -1838, -1828, -1754, -1168, -1438, -1708, -1786, -1864, -2226, - -2075, -2373, -2158, -2256, -2353, -2547, -2740, -2748, -2755, -2667, -2578, -2442, -2305, - -2137, -1968, -1992, -2015, -2391, -2254, -2670, -13, 51, 116, 111, 106, 101, 96, 123, 150, - 177, 204, 242, 280, 318, 356, 418, 480, 510, 540, 600, 661, 657, 1166, -2678, -2425, -2397, - -2368, -2380, -2392, -2404, -2416, -2416, -2416, -2416, -1882, -1711, -1796, -1369, -1198, - -1419, -1640, -1749, -1858, -1979, -1843, -2060, -2020, -2115, -2209, -2367, -2525, -2480, - -2691, -2838, -2984, -2761, -2537, -2394, -2250, -2196, -2141, -2358, -2319, -2020, 71, 113, - 157, 151, 145, 139, 134, 160, 186, 212, 239, 273, 308, 342, 377, 439, 502, 548, 595, 632, 670, - 931, 169, -2668, -2432, -2404, -2376, -2385, -2394, -2403, -2412, -2412, -2412, -2412, -1916, - -1840, -2276, -1240, -1228, -1400, -1572, -1712, -1852, -1732, -1611, -1746, -1881, -1973, - -2064, -2187, -2310, -2212, -2626, -2752, -2877, -2823, -2769, -2651, -2532, -2399, -2266, - -2325, -2383, -1370, 155, 176, 198, 191, 185, 178, 172, 197, 223, 248, 274, 305, 336, 367, 398, - 461, 524, 587, 650, 664, 679, 1206, -827, -2657, -2438, -2411, -2384, -2390, -2396, -2402, - -2408, -2408, -2408, -2408, -1950, -1953, -1956, -1063, -1194, -1317, -1440, -1435, -1430, - -1501, -1315, -1433, -1551, -1639, -1727, -1799, -1871, -1928, -2241, -2410, -2579, -2598, - -2617, -2732, -2846, -2555, -2263, -2260, -2512, -528, 175, 207, 239, 231, 224, 217, 210, 234, - 259, 284, 309, 336, 364, 391, 419, 482, 546, 609, 673, 744, 816, 936, -2016, -2486, -2188, - -2290, -2392, -2395, -2398, -2401, -2404, -2404, -2404, -2404, -1984, -2066, -1636, -886, - -1160, -1234, -1308, -1414, -1520, -2037, -2042, -1887, -1732, -1817, -1902, -1923, -1944, - -1900, -1856, -2068, -2280, -2372, -2464, -2556, -2648, -2454, -2260, -2194, -2640, 314, 196, - 238, 280, 272, 264, 256, 248, 272, 296, 320, 344, 368, 392, 416, 440, 504, 568, 632, 696, 825, - 954, 923, -2692, -2315, -2450, -2425, -2400, -2400, -2400, -2400, -2400, -2400, -2400, -2400, - -2252, -1954, -1143, -1036, -1441, -1827, -2212, -2245, -2278, -2222, -1909, -1916, -1923, - -2002, -2337, -2096, -2111, -2172, -2232, -2132, -2032, -2144, -2256, -2304, -2352, -2307, - -2261, -2360, -1690, 442, 269, 305, 341, 333, 325, 317, 309, 329, 349, 369, 389, 415, 441, 468, - 494, 536, 579, 669, 760, 797, 1091, -248, -2610, -2407, -2459, -2432, -2404, -2400, -2396, - -2392, -2388, -2388, -2388, -2388, -2008, -2097, -1673, -1954, -2234, -2163, -2091, -2052, - -2012, -2150, -2287, -2200, -2113, -1931, -2260, -2013, -2278, -2187, -2095, -2195, -2295, - -2172, -2048, -2052, -2056, -2159, -2262, -2525, -739, 570, 343, 372, 402, 394, 386, 378, 370, - 386, 402, 418, 434, 462, 491, 520, 549, 569, 590, 707, 824, 770, 1228, -1418, -2528, -2498, - -2468, -2438, -2408, -2400, -2392, -2384, -2376, -2376, -2376, -2376, -1988, -2192, -2140, - -2152, -2163, -2131, -2099, -2083, -2066, -2142, -2217, -2181, -2144, -2068, -2247, -2138, - -2285, -2234, -2182, -2227, -2271, -2328, -2384, -2168, -1952, -2252, -2551, -2466, 179, 394, - 353, 407, 463, 455, 447, 423, 399, 523, 391, 547, 447, 493, 541, 572, 603, 634, 665, 792, 920, - 1094, 1269, -2765, -2446, -2430, -2413, -2413, -2412, -2400, -2388, -2376, -2364, -2364, -2364, - -2364, -1968, -2031, -2094, -2093, -2092, -2099, -2106, -2113, -2120, -2134, -2147, -2161, - -2174, -2204, -2233, -2263, -2292, -2281, -2269, -2258, -2246, -2227, -2207, -2284, -2360, - -2344, -2327, -2407, 586, -38, 363, 443, 524, 516, 508, 468, 428, 660, 380, 676, 460, 525, 591, - 624, 658, 699, 741, 878, 1016, 907, 286, -2575, -2364, -2361, -2358, -2387, -2416, -2400, - -2384, -2368, -2352, -2352, -2352, -2352, -2020, -2073, -2125, -2081, -2037, -2064, -2090, - -2116, -2142, -2154, -2166, -2178, -2189, -2213, -2236, -2260, -2283, -2276, -2269, -2262, - -2254, -2251, -2247, -2292, -2336, -2339, -2340, -1206, -72, -16, 296, 496, 441, 469, 497, 381, - 521, 635, 493, 735, 465, 544, 624, 640, 656, 748, 840, 899, 960, 1115, -1033, -2494, -2418, - -2379, -2339, -2380, -2420, -2408, -2396, -2384, -2372, -2372, -2372, -2372, -2072, -2114, - -2155, -2069, -1982, -2028, -2073, -2119, -2164, -2174, -2184, -2194, -2203, -2221, -2239, - -2257, -2274, -2271, -2268, -2265, -2261, -2274, -2287, -2300, -2312, -2333, -2353, -2053, - -729, 6, 230, 550, 358, 422, 486, 294, 614, 610, 606, 794, 470, 564, 658, 656, 655, 797, 939, - 921, 904, 1324, -2352, -2412, -2472, -2396, -2320, -2372, -2424, -2416, -2408, -2400, -2392, - -2392, -2392, -2392, -1996, -1931, -1866, -1961, -2055, -2088, -2121, -2154, -2186, -2194, - -2202, -2210, -2218, -2230, -2242, -2254, -2265, -2266, -2267, -2268, -2269, -2282, -2295, - -2308, -2320, -2343, -2366, -2708, -2539, -1492, -188, 171, 275, 327, 379, 287, 451, 505, 559, - 773, 475, 551, 628, 512, 653, 910, 654, 1007, 1104, -740, -2583, -2507, -2430, -2398, -2365, - -2397, -2428, -2424, -2420, -2416, -2412, -2412, -2412, -2412, -1920, -2004, -2088, -2108, - -2128, -2148, -2168, -2188, -2208, -2214, -2220, -2226, -2232, -2238, -2244, -2250, -2256, - -2261, -2266, -2271, -2276, -2289, -2302, -2315, -2328, -2353, -2378, -2339, -2300, -2477, - -1630, -719, 192, 232, 272, 280, 288, 400, 512, 752, 480, 539, 598, 369, 652, 767, -142, -1211, - -2792, -2547, -2302, -2345, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, - -2432, -2432, -2432, -2024, -2070, -2116, -2130, -2144, -2164, -2184, -2204, -2224, -2228, - -2232, -2236, -2240, -2244, -2248, -2252, -2256, -2263, -2270, -2277, -2284, -2297, -2310, - -2323, -2336, -2320, -2304, -2288, -2272, -2560, -2336, -1856, -1376, -2264, -1104, -520, 64, - 384, 704, 704, 192, -44, -280, -1236, -1936, -3018, -2564, -2350, -2392, -2391, -2390, -2389, - -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2128, - -2136, -2144, -2152, -2160, -2180, -2200, -2220, -2240, -2242, -2244, -2246, -2248, -2250, - -2252, -2254, -2256, -2265, -2274, -2283, -2292, -2305, -2318, -2331, -2344, -2287, -2230, - -2237, -2244, -2387, -2530, -2481, -2432, -2456, -2480, -2600, -2720, -2448, -2176, -1904, - -2144, -2419, -2694, -2585, -2476, -2451, -2426, -2465, -2504, -2491, -2478, -2433, -2388, - -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2104, -2122, - -2140, -2158, -2176, -2196, -2216, -2236, -2256, -2256, -2256, -2256, -2256, -2256, -2256, - -2256, -2256, -2267, -2278, -2289, -2300, -2313, -2326, -2339, -2352, -2318, -2284, -2282, - -2280, -2358, -2436, -2418, -2400, -2408, -2416, -2360, -2304, -2480, -864, -1648, -1408, - -1226, -2580, -2510, -2440, -2428, -2416, -2436, -2456, -2447, -2438, -2413, -2388, -2399, - -2410, -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, - -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, - -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, - -2329, -2342, -2355, -2368, -2360, -2352, -2376, -2400, -2256, -2624, -1392, -1696, -2593, - -2466, -2435, -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, - -2421, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, - -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, - -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, - -2342, -2355, -2368, -2360, -2352, -2360, -2368, -2352, -2592, -2192, -2560, -2769, -2466, - -2435, -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, - -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, - -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, -2269, - -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, -2342, - -2355, -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, - -2404, -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, - -2432, -2432, -2432, -2432, -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, - -2232, -2252, -2272, -2270, -2268, -2266, -2264, -2262, -2260, -2258, -2256, -2269, -2282, - -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, -2329, -2342, -2355, - -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, -2404, - -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, - -2432, -2432, -2432, -2432, -2432, -2432, + -2112, -2114, -2116, -2118, -2120, -2122, -2124, -2126, -2128, -2118, -2108, -2098, -2088, -2150, -2212, -2146, + -2080, -2100, -2120, -2140, -2160, -2164, -2168, -2172, -2176, -2092, -2008, -2052, -2096, -2132, -2168, -2076, + -1984, -2088, -2192, -2168, -2144, -2136, -2128, -2120, -2112, -2126, -2140, -2154, -2168, -2150, -2132, -2114, + -2096, -2096, -2096, -2096, -2096, -2096, -2096, -2096, -2096, -2080, -2064, -2048, -2032, -2032, -2032, -2032, + -2128, -2114, -2099, -2116, -2133, -2134, -2135, -2136, -2137, -2128, -2118, -2108, -2098, -2118, -2138, -2126, + -2114, -2135, -2155, -2160, -2164, -2136, -2109, -2129, -2149, -2133, -2117, -2116, -2116, -2116, -2115, -2099, + -2082, -2113, -2143, -2142, -2140, -2134, -2129, -2123, -2117, -2128, -2138, -2148, -2158, -2147, -2135, -2123, + -2111, -2109, -2107, -2105, -2102, -2102, -2102, -2102, -2101, -2087, -2073, -2059, -2045, -2045, -2045, -2045, + -2144, -2113, -2081, -2113, -2145, -2146, -2146, -2146, -2146, -2137, -2127, -2117, -2107, -2086, -2064, -2106, + -2148, -2169, -2190, -2179, -2167, -2108, -2049, -2086, -2122, -2174, -2225, -2180, -2135, -2099, -2062, -2121, + -2180, -2137, -2094, -2115, -2135, -2132, -2129, -2126, -2122, -2129, -2135, -2142, -2148, -2143, -2137, -2132, + -2126, -2122, -2117, -2113, -2108, -2108, -2107, -2107, -2106, -2094, -2082, -2070, -2058, -2058, -2058, -2058, + -2160, -2112, -2063, -2111, -2158, -2158, -2157, -2156, -2155, -2146, -2136, -2127, -2117, -2134, -2150, -2134, + -2118, -2156, -2193, -2182, -2171, -2496, -2309, -2395, -2479, -2471, -2461, -2244, -2283, -2354, -2169, -2176, + -2182, -2162, -2141, -2136, -2131, -2130, -2129, -2129, -2127, -2130, -2133, -2136, -2138, -2139, -2140, -2141, + -2141, -2135, -2128, -2121, -2114, -2114, -2113, -2112, -2111, -2101, -2091, -2081, -2071, -2071, -2071, -2071, + -2176, -2111, -2045, -2108, -2170, -2169, -2167, -2166, -2164, -2155, -2145, -2136, -2126, -2181, -2235, -2162, + -2088, -2142, -2195, -2441, -2686, -2372, -1033, -399, 236, 305, 375, -4, -894, -2097, -2787, -2486, -2184, -2186, + -2187, -2157, -2126, -2128, -2129, -2131, -2132, -2131, -2130, -2129, -2128, -2135, -2142, -2149, -2156, -2147, + -2138, -2129, -2120, -2119, -2118, -2117, -2116, -2108, -2100, -2092, -2084, -2084, -2084, -2084, -2112, -2086, + -2060, -2114, -2167, -2069, -2226, -2192, -2157, -2108, -2059, -2106, -2152, -2121, -2089, -2634, -2666, -2265, + -838, 844, 2526, 3326, 2846, 2846, 2847, 2726, 2606, 2966, 3070, 2968, 2866, 395, -2074, -2747, -2138, -2282, + -2170, -2204, -2238, -2192, -2145, -2147, -2148, -2149, -2150, -2154, -2157, -2160, -2163, -2160, -2157, -2154, + -2150, -2131, -2112, -2125, -2137, -2127, -2117, -2107, -2097, -2097, -2097, -2097, -2048, -2061, -2074, -2119, + -2163, -1968, -2285, -2218, -2150, -2061, -1972, -2075, -2177, -2316, -2455, -1058, 1364, 2989, 2567, 2593, 2619, + 2368, 2630, 2508, 2386, 2332, 2278, 2352, 2427, 2913, 2887, 3021, 3156, 1301, -2089, -2407, -2213, -2280, -2346, + -2252, -2158, -2162, -2165, -2169, -2172, -2172, -2171, -2171, -2170, -2173, -2175, -2178, -2180, -2143, -2105, + -2132, -2158, -2146, -2134, -2122, -2110, -2110, -2110, -2110, -2112, -2164, -2216, -2236, -2256, -1996, -2248, + -2196, -2143, -2110, -2077, -2124, -2171, -2272, 699, 3526, 2770, 2035, 2324, 2294, 2263, 2178, 2350, 2265, 2181, + 2129, 2078, 2154, 2231, 2522, 2556, 2559, 2562, 3221, 3112, 140, -2833, -2036, -2262, -2201, -2139, -2161, -2183, + -2189, -2194, -2190, -2186, -2182, -2177, -2186, -2194, -2202, -2210, -2155, -2099, -2139, -2179, -2165, -2151, + -2137, -2123, -2123, -2123, -2123, -1664, -1755, -1846, -1841, -1836, -1767, -2210, -2173, -2136, -2159, -2182, + -2173, -2164, -2739, 2830, 2735, 2640, 2361, 2082, 1995, 1908, 1989, 2070, 2023, 1976, 1927, 1878, 1957, 2036, + 2131, 2226, 2353, 2480, 2581, 2682, 2943, 2692, -2815, -2178, -2149, -2120, -2160, -2200, -2208, -2216, -2208, + -2200, -2192, -2184, -2198, -2212, -2226, -2240, -2166, -2092, -2146, -2200, -2184, -2168, -2152, -2136, -2136, + -2136, -2136, -2096, -2168, -2239, -2230, -2221, -2088, -2211, -2174, -2137, -2191, -2244, -2153, -2318, -2032, + 3375, 2862, 2605, 2306, 2007, 1852, 1697, 1756, 1815, 1810, 1806, 1756, 1707, 1754, 1801, 1912, 2023, 2150, 2277, + 2300, 2323, 2730, 1345, -2440, -2129, -2218, -2307, -2350, -2137, -2180, -2223, -2224, -2225, -2194, -2162, -2172, + -2181, -2191, -2200, -2199, -2199, -2214, -2229, -2172, -2115, -2170, -2225, -2113, -2257, -2257, -2016, -2068, + -2119, -2106, -2093, -2153, -2212, -2175, -2138, -2222, -2305, -2133, -2472, 212, 2897, 2477, 2570, 2251, 1932, + 1709, 1487, 1524, 1561, 1598, 1636, 1586, 1537, 1552, 1567, 1693, 1820, 1947, 2074, 2019, 1964, 2261, -514, -2321, + -2080, -2031, -1982, -2284, -2074, -2152, -2229, -2239, -2249, -2195, -2140, -2145, -2150, -2155, -2159, -2232, + -2305, -2282, -2258, -2160, -2062, -2188, -2314, -2090, -2378, -2378, -2064, -2096, -2127, -2127, -2126, -2154, + -2181, -2160, -2139, -2205, -2271, -2145, -2530, 1688, 2834, 2460, 2343, 2148, 1953, 1678, 1404, 1387, 1371, 1418, + 1466, 1416, 1367, 1349, 1332, 1442, 1553, 1664, 1775, 1818, 1861, 2416, -2405, -2458, -1999, -2036, -281, -1466, + -2395, -2380, -2364, -2303, -2241, -2196, -2150, -2167, -2183, -2183, -2183, -2201, -2219, -2190, -2159, -2756, + -2329, -1934, -2307, -2627, -2179, -2307, -2112, -2124, -2135, -2147, -2158, -2154, -2149, -2145, -2140, -2188, + -2236, -2156, -2588, 3164, 2772, 2444, 2116, 2045, 1975, 1648, 1322, 1251, 1181, 1238, 1296, 1246, 1197, 1147, + 1098, 1192, 1287, 1381, 1476, 1617, 1758, 1291, -2760, -2083, -2430, -1273, -628, -648, -667, -1583, -2498, -2366, + -2233, -2197, -2160, -2188, -2215, -2211, -2206, -2170, -2133, -2097, -2060, -280, -548, -2448, -1788, -860, -1980, + -2236, -2112, -2122, -2132, -2142, -2151, -2147, -2142, -2138, -2133, -2148, -2162, -2080, -718, 3207, 2525, 2291, + 2057, 1942, 1828, 1553, 1279, 1174, 1070, 1094, 1118, 1044, 970, 976, 983, 1001, 1020, 1166, 1313, 1306, 1555, + -212, -2491, -2190, -2401, -868, -615, -644, -672, -605, -537, -1356, -2174, -2272, -2370, -2342, -2312, -2331, + -2350, -2317, -2284, -2699, -1321, -420, -543, -394, -757, -741, -2261, -2261, -2112, -2120, -2128, -2136, -2143, + -2139, -2135, -2131, -2126, -2107, -2087, -2260, 640, 2995, 2279, 2138, 1998, 1839, 1681, 1459, 1237, 1098, 960, + 950, 940, 842, 744, 806, 869, 811, 753, 951, 1150, 995, 1352, -1715, -2222, -2297, -2372, -463, -602, -640, -677, + -650, -623, -601, -578, -811, -1044, -1215, -1385, -1427, -1469, -1184, -898, -484, -582, -560, -538, -900, -750, + -1134, -2542, -2286, -2112, -2118, -2124, -2130, -2136, -2132, -2128, -2124, -2119, -2018, -1917, -2888, 1262, + 2015, 2256, 2097, 1939, 1736, 1534, 1364, 1194, 1022, 850, 806, 762, 736, 710, 508, 818, 604, 646, 752, 859, 1132, + 1149, -2866, -2273, -2340, -1639, -426, -493, -524, -554, -568, -582, -678, -774, -662, -550, -568, -586, -587, + -589, -659, -728, -574, -675, -668, -661, -798, -679, -1799, -2407, -2151, -2112, -2116, -2120, -2124, -2128, + -2124, -2120, -2116, -2112, -2185, -2258, -1723, 1884, 1035, 2234, 2057, 1880, 1634, 1388, 1270, 1152, 946, 740, + 662, 584, 630, 676, 466, 1280, 654, 540, 554, 568, 757, -78, -2481, -2324, -2383, -906, -389, -384, -407, -430, + -485, -540, -499, -458, -513, -568, -689, -810, -771, -732, -645, -558, -663, -768, -776, -784, -696, -608, -2464, + -2272, -2016, -2104, -2111, -2117, -2123, -2129, -2106, -2082, -2106, -2130, -2206, -2537, -85, 1856, 1149, 1209, + 1702, 1683, 1507, 1332, 1188, 1045, 837, 630, 518, 407, 489, 572, 398, 1249, 662, 330, 383, 436, 589, -1305, -2352, + -2118, -2616, 213, -13, -239, -267, -294, -322, -349, -378, -408, -485, -562, -627, -692, -677, -661, -626, -591, + -684, -776, -804, -832, -540, -248, -664, -1848, -2616, -2096, -2105, -2113, -2122, -2130, -2087, -2043, -2096, + -2148, -2226, -2816, 1554, 1829, 1519, 697, 1603, 1486, 1381, 1276, 1107, 938, 729, 520, 375, 230, 349, 468, 331, + 1219, 670, 121, 212, 304, 422, -2532, -2478, -2423, -1569, 309, -149, -94, -126, -158, -158, -157, -257, -357, + -457, -556, -565, -573, -582, -590, -607, -623, -704, -784, -832, -880, -384, 112, -1424, -2448, -2192, -2088, + -2099, -2110, -2121, -2131, -2100, -2069, -2102, -2134, -2487, -2327, 2921, 2025, 1537, 1049, 1088, 1385, 1270, + 1156, 993, 831, 700, 570, 407, 245, 256, 268, 344, 932, 662, 136, 185, 236, -338, -2447, -2348, -2505, -794, 149, + -77, -45, -66, -86, -90, -94, -184, -274, -365, -454, -455, -455, -519, -583, -620, -656, -724, -792, -796, -800, + -868, -1960, -2296, -2376, -2248, -2080, -2093, -2106, -2119, -2132, -2113, -2094, -2107, -2120, -2235, -813, 2752, + 2222, 1555, 1401, 574, 1284, 1160, 1036, 880, 724, 672, 620, 440, 260, 164, 69, 357, 646, 654, 151, 159, 168, + -1097, -2361, -2218, -2586, -19, -11, -4, 4, -5, -13, -22, -30, -111, -191, -272, -352, -344, -336, -456, -576, + -632, -688, -744, -800, -760, -720, -584, -2496, -2400, -2304, -2304, -2072, -2088, -2103, -2118, -2133, -2173, + -2212, -2171, -2130, -2464, 1044, 2615, 2138, 1657, 1432, 807, 951, 1193, 924, 734, 545, 397, 250, 486, 723, 569, + 417, 312, 207, 384, 305, 242, 180, -1827, -2296, -2350, -1892, 68, -20, -12, -3, -9, -13, -18, -23, -66, -109, + -184, -258, -310, -362, -478, -593, -641, -689, -737, -784, -752, -720, -1200, -2448, -2384, -2320, -2320, -2064, + -2082, -2099, -2117, -2134, -2232, -2329, -2235, -2140, -2692, 2901, 2478, 2055, 1759, 1464, 1041, 618, 1227, 812, + 589, 366, 379, 392, 277, 162, 207, 253, 267, 281, 114, -52, 70, 192, -2556, -2231, -2482, -1197, 155, -28, -19, + -10, -12, -13, -14, -15, -21, -26, -95, -164, -276, -387, -499, -610, -650, -689, -729, -768, -744, -720, -1816, + -2400, -2368, -2336, -2336, -2056, -2076, -2096, -2116, -2135, -2179, -2223, -2139, -2310, -1320, 2742, 2293, 2099, + 1893, 1432, 1242, 541, 1036, 1020, 699, 379, 376, 374, 275, 177, 197, 217, 190, 162, 100, 39, 153, -756, -2421, + -2294, -2550, -503, 130, -4, -11, -17, -15, -13, -10, -8, -8, -7, -103, -198, -322, -445, -520, -595, -643, -690, + -721, -752, -768, -784, -2192, -2320, -2336, -2352, -2352, -2048, -2070, -2092, -2114, -2136, -2126, -2116, -2042, + -2480, 52, 2584, 2108, 2144, 2028, 1400, 1444, 464, 78, -308, -470, -632, -394, -156, 18, 192, 187, 182, 113, 44, + 87, 130, 237, -1704, -2286, -2356, -2618, 192, 106, 20, -2, -24, -18, -12, -6, 0, 6, 12, -110, -232, -367, -502, + -541, -580, -635, -690, -713, -736, -792, -848, -2568, -2240, -2304, -2368, -2368, -2046, -2069, -2092, -2114, + -2137, -2122, -2106, -2187, -2523, 1999, 2681, 2739, 1518, 116, -1542, -2640, -2457, -2466, -2475, -2467, -2460, + -2499, -2537, -2304, -2070, -995, 81, -76, 24, 35, 47, -150, -2394, -2423, -2451, -1807, 117, 85, 53, 21, -11, -11, + -11, -11, -11, -11, -11, -107, -203, -405, -606, -616, -625, -611, -596, -694, -791, -757, -1491, -2401, -2287, + -2303, -2319, -2319, -2044, -2068, -2091, -2114, -2137, -2117, -2096, -2075, -2054, 2922, 219, -1749, -2692, -2564, + -2435, -2115, -2306, -2194, -2081, -2160, -2239, -2299, -2358, -2321, -2284, -2432, -2580, -1544, 4, -16, -36, + -280, -2572, -2303, -2545, -995, 43, 64, 86, 44, 2, -4, -10, -16, -22, -28, -34, -104, -174, -186, -198, -178, + -158, -330, -502, -674, -846, -722, -2134, -2234, -2334, -2302, -2270, -2270, -2042, -2067, -2090, -2114, -2138, + -2160, -2182, -2156, -2129, -2459, -2532, -2605, -2166, -2220, -2273, -2294, -2315, -2002, -2199, -2221, -2243, + -2323, -2403, -2387, -2370, -2286, -2201, -2453, -2704, -1412, 137, -1403, -2174, -2503, -2831, 248, 0, 27, 55, 35, + 15, 3, -9, -21, -33, -45, -57, -101, -145, -176, -206, -221, -235, -178, -120, -415, -709, -191, -2489, -2547, + -2349, -2349, -2349, -2349, -2040, -2065, -2089, -2114, -2138, -2203, -2267, -2236, -2204, -2207, -2210, -2181, + -2152, -2131, -2110, -2217, -1812, -1553, -2317, -2026, -1734, -1579, -1423, -1940, -2456, -2395, -2334, -2081, + -2340, -2551, -2250, -2013, -2288, -2447, -2093, -44, -42, -9, 25, 26, 28, 10, -8, -26, -44, -62, -80, -98, -116, + -165, -214, -263, -312, -281, -250, -155, -60, -940, -1820, -2348, -2364, -2396, -2428, -2428, -2038, -2060, -2081, + -2102, -2123, -2124, -2125, -2287, -2191, -2066, -1941, -1912, -1882, -2233, -2328, -2151, -1717, -1487, -2024, + -1761, -1498, -1243, -988, -718, -446, -1227, -2007, -2724, -2160, -2331, -2245, -2176, -2362, -2339, -1036, 107, + -29, -20, -10, 15, 41, 19, -3, -25, -47, -89, -131, -141, -151, -209, -266, -356, -445, -459, -472, -406, -83, + -1135, -1163, -1895, -2371, -2387, -2403, -2403, -2036, -2054, -2072, -2090, -2107, -2045, -1983, -2081, -1666, + -1669, -1671, -1898, -2124, -2591, -2545, -2084, -1622, -1420, -1730, -1496, -1261, -1163, -1065, -775, -484, -314, + -144, -806, -2492, -2366, -2240, -2338, -2436, -2487, -490, 3, -15, -30, -45, 4, 54, 28, 2, -24, -50, -116, -182, + -184, -186, -252, -318, -448, -578, -636, -694, -656, -106, -2098, -2042, -2210, -2378, -2378, -2378, -2378, -2034, + -2049, -2063, -2078, -2092, -2094, -2097, -1651, -1461, -1688, -1914, -2156, -2398, -2677, -2443, -2017, -1591, + -1450, -1564, -1343, -1121, -987, -854, -624, -394, -266, -137, 199, 24, -1554, -2363, -2325, -2286, -2123, -2728, + -1221, 30, 135, -16, 25, 67, 37, 7, -7, -21, -111, -201, -211, -221, -296, -370, -461, -551, -510, -468, -635, + -545, -2805, -2249, -2301, -2353, -2353, -2353, -2353, -2032, -2043, -2054, -2065, -2076, -2143, -2210, -1477, + -1768, -1962, -2156, -2414, -2672, -2762, -2340, -1950, -1560, -1479, -1398, -1189, -980, -811, -642, -473, -304, + -217, -130, -75, -20, 27, -2486, -2311, -2136, -2527, -2406, -2445, -2484, -979, 14, 47, 80, 46, 12, 10, 8, -106, + -220, -238, -256, -339, -422, -473, -524, -639, -754, -1637, -2520, -2232, -2456, -2392, -2328, -2328, -2328, + -2328, -2012, -2031, -2050, -2053, -2056, -2193, -2074, -1587, -1867, -2082, -2296, -2527, -2757, -2654, -2294, + -1887, -1479, -1381, -1282, -1088, -893, -749, -604, -492, -379, -244, -109, -182, 1, -606, -2493, -2284, -2331, + -2482, -2376, -2415, -2453, -2309, -2422, -1350, -278, -125, 29, 87, 145, 126, 108, 26, -56, -279, -502, -1108, + -1715, -2164, -2612, -2533, -2453, -2297, -2397, -2369, -2341, -2341, -2341, -2341, -1992, -2019, -2046, -2041, + -2035, -2242, -1937, -1696, -1966, -2201, -2436, -2639, -2842, -2545, -2248, -1823, -1398, -1282, -1166, -986, + -806, -686, -566, -510, -454, -271, -88, -289, 22, -1239, -2500, -2257, -2526, -388, -2346, -2384, -2421, -2359, + -2297, -2491, -2684, -2343, -2001, -1628, -1254, -1177, -1099, -1502, -1904, -2267, -2629, -2511, -2393, -2408, + -2422, -2404, -2386, -2362, -2338, -2346, -2354, -2354, -2354, -2354, -1972, -2007, -2042, -2045, -2047, -2196, + -1832, -1837, -2097, -2337, -2576, -2736, -2895, -2565, -2234, -1840, -1445, -1280, -1114, -917, -719, -624, -528, + -529, -529, -426, -323, -60, -53, -2528, -2443, -2518, -2081, 169, -140, -1313, -2486, -2441, -2396, -2384, -2370, + -2401, -2432, -2511, -2589, -2560, -2531, -2502, -2472, -2431, -2388, -2490, -2336, -2940, -2008, -1332, -2447, + -2395, -2343, -2355, -2367, -2367, -2367, -2367, -1952, -1995, -2037, -2048, -2058, -2149, -1727, -1978, -2228, + -2472, -2716, -2832, -2948, -2584, -2220, -1856, -1492, -1277, -1062, -847, -632, -561, -490, -547, -604, -581, + -558, -343, -1152, -2281, -2386, -2523, -1124, -41, 19, 14, 10, -1243, -2495, -2532, -2568, -2459, -2350, -2369, + -2388, -2407, -2426, -2477, -2528, -2594, -2659, -2213, -1254, 368, 967, -1027, -2508, -2428, -2348, -2364, -2380, + -2380, -2380, -2380, -1948, -1997, -2045, -2062, -2078, -1959, -1839, -2071, -2303, -2546, -2788, -2919, -3049, + -2874, -2442, -2027, -1611, -1375, -1138, -966, -793, -733, -672, -708, -743, -848, -953, -2018, -2059, -2442, + -2313, -2328, -295, 98, -19, 23, 65, 25, -15, -631, -1246, -1796, -2345, -2510, -2675, -2541, -2406, -1887, -1368, + -468, 433, 438, 699, 1162, 857, -2697, -2409, -2413, -2417, -2389, -2361, -2361, -2361, -2361, -1944, -1999, -2053, + -2075, -2097, -1768, -1950, -2164, -2378, -2619, -2860, -3005, -3150, -3163, -2664, -2197, -1730, -1472, -1214, + -1084, -954, -904, -854, -868, -882, -859, -836, -877, -1942, -2091, -2240, -2389, 22, -18, -57, 32, 121, 13, -94, + -9, 76, 148, 221, 165, 110, 142, 175, 239, 304, 379, 454, 529, 605, 676, 235, -2574, -2310, -2398, -2486, -2414, + -2342, -2342, -2342, -2342, -1940, -2001, -2061, -2073, -2085, -1641, -1965, -2145, -2325, -2533, -2740, -2900, + -3059, -3053, -2790, -2320, -1849, -1570, -1290, -1203, -1115, -1076, -1036, -1029, -1021, -1078, -1135, -504, + -2689, -2396, -2359, -1554, 19, -6, -31, 25, 80, 33, -13, 36, 86, 124, 162, 136, 111, 137, 163, 237, 312, 393, 475, + 524, 574, 654, -803, -2467, -2339, -2383, -2427, -2375, -2323, -2323, -2323, -2323, -1936, -2002, -2068, -2070, + -2072, -1514, -1980, -2126, -2272, -2446, -2620, -2794, -2968, -2942, -2916, -2442, -1968, -1667, -1366, -1321, + -1276, -1247, -1218, -1189, -1160, -1041, -922, -1411, -2412, -2189, -2478, -719, 16, 6, -4, 18, 40, 54, 68, 82, + 96, 100, 104, 108, 112, 132, 152, 236, 320, 408, 496, 520, 544, 632, -1840, -2360, -2368, -2368, -2368, -2336, + -2304, -2304, -2304, -2304, -1898, -1921, -1944, -2111, -1766, -1551, -1848, -1985, -2122, -2319, -2516, -2665, + -2814, -3075, -3080, -2829, -2321, -2026, -1730, -1610, -1490, -1458, -1426, -1394, -1362, -1247, -1132, -1880, + -2373, -2534, -2694, 329, 25, 40, 55, 54, 54, 71, 88, 105, 123, 151, 180, 208, 237, 83, -70, 48, 167, 248, 329, + 346, 363, 732, -2739, -2578, -2416, -2395, -2374, -2353, -2332, -2332, -2332, -2332, -1860, -1840, -1820, -2152, + -1460, -1588, -1716, -1844, -1972, -2192, -2412, -2536, -2659, -2951, -2731, -2959, -2674, -2384, -2093, -1898, + -1703, -1669, -1634, -1599, -1564, -1453, -1341, -2349, -2333, -2366, -1886, -158, 34, 74, 115, 91, 68, 88, 109, + 129, 150, 203, 256, 309, 362, 291, 220, 117, 14, 88, 162, 172, 183, -703, -2613, -2283, -2464, -2422, -2380, -2370, + -2360, -2360, -2360, -2360, -2110, -1967, -1824, -1953, -1314, -1513, -1712, -1815, -1918, -2209, -2244, -2455, + -2409, -2604, -2542, -2753, -2707, -2694, -2680, -2411, -2141, -2056, -1970, -1868, -1766, -1723, -1678, -2370, + -2294, -2518, -950, -54, 75, 92, 110, 96, 82, 105, 129, 153, 177, 222, 268, 313, 359, 354, 350, 441, 533, 472, 411, + 414, 674, -1691, -2519, -2340, -2416, -2401, -2386, -2387, -2388, -2388, -2388, -2388, -1848, -1838, -1828, -1754, + -1168, -1438, -1708, -1786, -1864, -2226, -2075, -2373, -2158, -2256, -2353, -2547, -2740, -2748, -2755, -2667, + -2578, -2442, -2305, -2137, -1968, -1992, -2015, -2391, -2254, -2670, -13, 51, 116, 111, 106, 101, 96, 123, 150, + 177, 204, 242, 280, 318, 356, 418, 480, 510, 540, 600, 661, 657, 1166, -2678, -2425, -2397, -2368, -2380, -2392, + -2404, -2416, -2416, -2416, -2416, -1882, -1711, -1796, -1369, -1198, -1419, -1640, -1749, -1858, -1979, -1843, + -2060, -2020, -2115, -2209, -2367, -2525, -2480, -2691, -2838, -2984, -2761, -2537, -2394, -2250, -2196, -2141, + -2358, -2319, -2020, 71, 113, 157, 151, 145, 139, 134, 160, 186, 212, 239, 273, 308, 342, 377, 439, 502, 548, 595, + 632, 670, 931, 169, -2668, -2432, -2404, -2376, -2385, -2394, -2403, -2412, -2412, -2412, -2412, -1916, -1840, + -2276, -1240, -1228, -1400, -1572, -1712, -1852, -1732, -1611, -1746, -1881, -1973, -2064, -2187, -2310, -2212, + -2626, -2752, -2877, -2823, -2769, -2651, -2532, -2399, -2266, -2325, -2383, -1370, 155, 176, 198, 191, 185, 178, + 172, 197, 223, 248, 274, 305, 336, 367, 398, 461, 524, 587, 650, 664, 679, 1206, -827, -2657, -2438, -2411, -2384, + -2390, -2396, -2402, -2408, -2408, -2408, -2408, -1950, -1953, -1956, -1063, -1194, -1317, -1440, -1435, -1430, + -1501, -1315, -1433, -1551, -1639, -1727, -1799, -1871, -1928, -2241, -2410, -2579, -2598, -2617, -2732, -2846, + -2555, -2263, -2260, -2512, -528, 175, 207, 239, 231, 224, 217, 210, 234, 259, 284, 309, 336, 364, 391, 419, 482, + 546, 609, 673, 744, 816, 936, -2016, -2486, -2188, -2290, -2392, -2395, -2398, -2401, -2404, -2404, -2404, -2404, + -1984, -2066, -1636, -886, -1160, -1234, -1308, -1414, -1520, -2037, -2042, -1887, -1732, -1817, -1902, -1923, + -1944, -1900, -1856, -2068, -2280, -2372, -2464, -2556, -2648, -2454, -2260, -2194, -2640, 314, 196, 238, 280, 272, + 264, 256, 248, 272, 296, 320, 344, 368, 392, 416, 440, 504, 568, 632, 696, 825, 954, 923, -2692, -2315, -2450, + -2425, -2400, -2400, -2400, -2400, -2400, -2400, -2400, -2400, -2252, -1954, -1143, -1036, -1441, -1827, -2212, + -2245, -2278, -2222, -1909, -1916, -1923, -2002, -2337, -2096, -2111, -2172, -2232, -2132, -2032, -2144, -2256, + -2304, -2352, -2307, -2261, -2360, -1690, 442, 269, 305, 341, 333, 325, 317, 309, 329, 349, 369, 389, 415, 441, + 468, 494, 536, 579, 669, 760, 797, 1091, -248, -2610, -2407, -2459, -2432, -2404, -2400, -2396, -2392, -2388, + -2388, -2388, -2388, -2008, -2097, -1673, -1954, -2234, -2163, -2091, -2052, -2012, -2150, -2287, -2200, -2113, + -1931, -2260, -2013, -2278, -2187, -2095, -2195, -2295, -2172, -2048, -2052, -2056, -2159, -2262, -2525, -739, 570, + 343, 372, 402, 394, 386, 378, 370, 386, 402, 418, 434, 462, 491, 520, 549, 569, 590, 707, 824, 770, 1228, -1418, + -2528, -2498, -2468, -2438, -2408, -2400, -2392, -2384, -2376, -2376, -2376, -2376, -1988, -2192, -2140, -2152, + -2163, -2131, -2099, -2083, -2066, -2142, -2217, -2181, -2144, -2068, -2247, -2138, -2285, -2234, -2182, -2227, + -2271, -2328, -2384, -2168, -1952, -2252, -2551, -2466, 179, 394, 353, 407, 463, 455, 447, 423, 399, 523, 391, 547, + 447, 493, 541, 572, 603, 634, 665, 792, 920, 1094, 1269, -2765, -2446, -2430, -2413, -2413, -2412, -2400, -2388, + -2376, -2364, -2364, -2364, -2364, -1968, -2031, -2094, -2093, -2092, -2099, -2106, -2113, -2120, -2134, -2147, + -2161, -2174, -2204, -2233, -2263, -2292, -2281, -2269, -2258, -2246, -2227, -2207, -2284, -2360, -2344, -2327, + -2407, 586, -38, 363, 443, 524, 516, 508, 468, 428, 660, 380, 676, 460, 525, 591, 624, 658, 699, 741, 878, 1016, + 907, 286, -2575, -2364, -2361, -2358, -2387, -2416, -2400, -2384, -2368, -2352, -2352, -2352, -2352, -2020, -2073, + -2125, -2081, -2037, -2064, -2090, -2116, -2142, -2154, -2166, -2178, -2189, -2213, -2236, -2260, -2283, -2276, + -2269, -2262, -2254, -2251, -2247, -2292, -2336, -2339, -2340, -1206, -72, -16, 296, 496, 441, 469, 497, 381, 521, + 635, 493, 735, 465, 544, 624, 640, 656, 748, 840, 899, 960, 1115, -1033, -2494, -2418, -2379, -2339, -2380, -2420, + -2408, -2396, -2384, -2372, -2372, -2372, -2372, -2072, -2114, -2155, -2069, -1982, -2028, -2073, -2119, -2164, + -2174, -2184, -2194, -2203, -2221, -2239, -2257, -2274, -2271, -2268, -2265, -2261, -2274, -2287, -2300, -2312, + -2333, -2353, -2053, -729, 6, 230, 550, 358, 422, 486, 294, 614, 610, 606, 794, 470, 564, 658, 656, 655, 797, 939, + 921, 904, 1324, -2352, -2412, -2472, -2396, -2320, -2372, -2424, -2416, -2408, -2400, -2392, -2392, -2392, -2392, + -1996, -1931, -1866, -1961, -2055, -2088, -2121, -2154, -2186, -2194, -2202, -2210, -2218, -2230, -2242, -2254, + -2265, -2266, -2267, -2268, -2269, -2282, -2295, -2308, -2320, -2343, -2366, -2708, -2539, -1492, -188, 171, 275, + 327, 379, 287, 451, 505, 559, 773, 475, 551, 628, 512, 653, 910, 654, 1007, 1104, -740, -2583, -2507, -2430, -2398, + -2365, -2397, -2428, -2424, -2420, -2416, -2412, -2412, -2412, -2412, -1920, -2004, -2088, -2108, -2128, -2148, + -2168, -2188, -2208, -2214, -2220, -2226, -2232, -2238, -2244, -2250, -2256, -2261, -2266, -2271, -2276, -2289, + -2302, -2315, -2328, -2353, -2378, -2339, -2300, -2477, -1630, -719, 192, 232, 272, 280, 288, 400, 512, 752, 480, + 539, 598, 369, 652, 767, -142, -1211, -2792, -2547, -2302, -2345, -2388, -2399, -2410, -2421, -2432, -2432, -2432, + -2432, -2432, -2432, -2432, -2432, -2024, -2070, -2116, -2130, -2144, -2164, -2184, -2204, -2224, -2228, -2232, + -2236, -2240, -2244, -2248, -2252, -2256, -2263, -2270, -2277, -2284, -2297, -2310, -2323, -2336, -2320, -2304, + -2288, -2272, -2560, -2336, -1856, -1376, -2264, -1104, -520, 64, 384, 704, 704, 192, -44, -280, -1236, -1936, + -3018, -2564, -2350, -2392, -2391, -2390, -2389, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2128, -2136, -2144, -2152, -2160, -2180, -2200, -2220, -2240, -2242, -2244, -2246, -2248, + -2250, -2252, -2254, -2256, -2265, -2274, -2283, -2292, -2305, -2318, -2331, -2344, -2287, -2230, -2237, -2244, + -2387, -2530, -2481, -2432, -2456, -2480, -2600, -2720, -2448, -2176, -1904, -2144, -2419, -2694, -2585, -2476, + -2451, -2426, -2465, -2504, -2491, -2478, -2433, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2104, -2122, -2140, -2158, -2176, -2196, -2216, -2236, -2256, -2256, -2256, -2256, -2256, + -2256, -2256, -2256, -2256, -2267, -2278, -2289, -2300, -2313, -2326, -2339, -2352, -2318, -2284, -2282, -2280, + -2358, -2436, -2418, -2400, -2408, -2416, -2360, -2304, -2480, -864, -1648, -1408, -1226, -2580, -2510, -2440, + -2428, -2416, -2436, -2456, -2447, -2438, -2413, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, + -2262, -2260, -2258, -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, + -2329, -2342, -2355, -2368, -2360, -2352, -2376, -2400, -2256, -2624, -1392, -1696, -2593, -2466, -2435, -2404, + -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, + -2262, -2260, -2258, -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, + -2329, -2342, -2355, -2368, -2360, -2352, -2360, -2368, -2352, -2592, -2192, -2560, -2769, -2466, -2435, -2404, + -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, + -2262, -2260, -2258, -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, + -2329, -2342, -2355, -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, -2404, + -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, -2080, -2108, -2136, -2164, -2192, -2212, -2232, -2252, -2272, -2270, -2268, -2266, -2264, + -2262, -2260, -2258, -2256, -2269, -2282, -2295, -2308, -2321, -2334, -2347, -2360, -2349, -2338, -2327, -2316, + -2329, -2342, -2355, -2368, -2360, -2352, -2344, -2336, -2448, -2560, -2480, -2400, -2433, -2466, -2435, -2404, + -2405, -2406, -2407, -2408, -2403, -2398, -2393, -2388, -2399, -2410, -2421, -2432, -2432, -2432, -2432, -2432, + -2432, -2432, -2432, ]; const RGB_BUFFER: [u8; 4 * 64 * 64] = [ - 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, - 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, - 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, - 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, - 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, - 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, - 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, - 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, - 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, - 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, - 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, - 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, - 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, - 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, - 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, - 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, - 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, - 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, - 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, - 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, - 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, - 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, - 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, - 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, - 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, - 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, - 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, - 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, - 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, - 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, - 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, - 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, - 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, - 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, - 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, - 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, - 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, - 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, - 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, - 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, - 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, - 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, - 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, - 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, - 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, - 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, - 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, - 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, - 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, - 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, - 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, - 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, - 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, - 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, - 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, - 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, - 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, - 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, - 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, - 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, - 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, - 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, - 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, - 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, - 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, - 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, - 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, - 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, - 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, - 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, - 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, - 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, - 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, - 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, - 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, - 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, - 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, - 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, - 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, - 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, - 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, - 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, - 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, - 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, - 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, - 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, - 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, - 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, - 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, - 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, - 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, - 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, - 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, - 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, - 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, - 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, - 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, - 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, - 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, - 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, - 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, - 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, - 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, - 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, - 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, - 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, - 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, - 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, - 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, - 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, - 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, - 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, - 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, - 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, - 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, - 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, - 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, - 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, - 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, - 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, - 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, - 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, - 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, - 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, - 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, - 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, - 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, - 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, - 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, - 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, - 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, - 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, - 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, - 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, - 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, - 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, - 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, - 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, - 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, - 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, - 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, - 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, - 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, - 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, - 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, - 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, - 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, - 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, - 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, - 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, - 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, - 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, - 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, - 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, - 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, - 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, - 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, - 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, - 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, - 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, - 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, - 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, - 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, - 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, - 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, - 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, - 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, - 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, - 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, - 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, - 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, - 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, - 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, - 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, - 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, - 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, - 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, - 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, - 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, - 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, - 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, - 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, - 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, - 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, - 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, - 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, - 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, - 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, - 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, - 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, - 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, - 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, - 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, - 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, - 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, - 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, - 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, - 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, - 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, - 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, - 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, - 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, - 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, - 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, - 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, - 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, - 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, - 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, - 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, - 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, - 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, - 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, - 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, - 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, - 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, - 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, - 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, - 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, - 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, - 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, - 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, - 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, - 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, - 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, - 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, - 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, - 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, - 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, - 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, - 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, - 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, - 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, - 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, - 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, - 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, - 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, - 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, - 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, - 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, - 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, - 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, - 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, - 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, - 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, - 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, - 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, - 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, - 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, - 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, - 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, - 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, - 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, - 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, - 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, - 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, - 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, - 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, - 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, - 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, - 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, - 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, - 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, - 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, - 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, - 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, - 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, - 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, - 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, - 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, - 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, - 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, - 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, - 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, - 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, - 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, - 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, - 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, - 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, - 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, - 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, - 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, - 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, - 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, - 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, - 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, - 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, - 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, - 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, - 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, - 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, - 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, - 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, - 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, - 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, - 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, - 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, - 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, - 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, - 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, - 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, - 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, - 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, - 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, - 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, - 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, - 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, - 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, - 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, - 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, - 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, - 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, - 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, - 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, - 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, - 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, - 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, - 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, - 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, - 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, - 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, - 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, - 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, - 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, - 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, - 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, - 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, - 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, - 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, - 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, - 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, - 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, - 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, - 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, - 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, - 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, - 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, - 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, - 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, - 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, - 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, - 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, - 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, - 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, - 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, - 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, - 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, - 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, - 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, - 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, - 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, - 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, - 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, - 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, - 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, - 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, - 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, - 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, - 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, - 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, - 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, - 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, - 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, - 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, - 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, - 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, - 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, - 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, - 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, - 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, - 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, - 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, - 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, - 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, - 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, - 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, - 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, - 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, - 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, - 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, - 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, - 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, - 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, - 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, - 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, - 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, - 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, - 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, - 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, - 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, - 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, - 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, - 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, - 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, - 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, - 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, - 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, - 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, - 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, - 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, - 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, - 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, - 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, - 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, - 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, - 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, - 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, - 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, - 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, - 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, - 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, - 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, - 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, - 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, - 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, - 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, - 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, - 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, - 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, - 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, - 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, - 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, - 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, - 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, - 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, - 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, - 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, - 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, - 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, - 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, - 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, - 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, - 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, - 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, - 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, - 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, - 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, - 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, - 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, - 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, - 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, - 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, - 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, - 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, - 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, - 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, - 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, - 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, - 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, - 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, - 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, - 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, - 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, - 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, - 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, - 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, - 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, - 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, - 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, - 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, - 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, - 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, - 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, - 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, - 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, - 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, - 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, - 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, - 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, - 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, - 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, - 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, - 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, - 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, - 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, - 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, - 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, - 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, - 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, - 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, - 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, - 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, - 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, - 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, - 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, - 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, - 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, - 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, - 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, - 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, - 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, - 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, - 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, - 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, - 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, - 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, - 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, - 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, - 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, - 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, - 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, - 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, - 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, - 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, - 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, - 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, - 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, - 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, - 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, - 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, - 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, - 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, - 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, - 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, - 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, - 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, - 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, - 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, - 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, - 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, - 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, - 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, - 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, - 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, - 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, - 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, - 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, - 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, - 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, - 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, - 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, - 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, - 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, - 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, - 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, - 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, - 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, - 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, - 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, - 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, - 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, - 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, - 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, - 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, - 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, - 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, - 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, - 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, - 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, - 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, - 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, - 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, - 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, - 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, - 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, - 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, - 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, - 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, - 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, - 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, - 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, - 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, - 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, - 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, - 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, - 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, - 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, - 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, - 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, - 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, - 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, - 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, - 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, - 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, - 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, - 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, - 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, - 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, - 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, - 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, - 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, - 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, - 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, - 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, - 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, - 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, - 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, - 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, - 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, - 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, - 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, - 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, - 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, - 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, - 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, - 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, - 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, - 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, - 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, - 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, - 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, - 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, - 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, - 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, - 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, - 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, - 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, - 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, - 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, - 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, - 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, - 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, - 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, - 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, - 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, - 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, - 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, - 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, - 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, - 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, - 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, - 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, - 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, - 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, - 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, - 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, - 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, - 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, - 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, - 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, - 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, - 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, - 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, - 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, - 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, - 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, - 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, - 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, - 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, - 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, - 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, - 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, - 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, - 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, - 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, - 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, - 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, - 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, - 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, - 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, - 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, - 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, - 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, - 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, - 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, - 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, - 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, - 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, - 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, - 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, - 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, - 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, - 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, - 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, - 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, - 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, - 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, - 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, - 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, - 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, - 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, - 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, - 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, - 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, - 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, - 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, - 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, - 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, - 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, - 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, - 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, - 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, - 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, - 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, - 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, - 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, - 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, - 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, - 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, - 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, - 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, - 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, - 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, - 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, - 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, - 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, - 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, - 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, - 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, - 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, - 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, - 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, - 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, - 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, - 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, - 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, - 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, - 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, - 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, - 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, - 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, - 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, - 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, - 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, - 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, - 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, - 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, - 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, - 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, - 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, - 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, - 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, - 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, - 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, - 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, - 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, - 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, - 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, - 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, - 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, - 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, - 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, - 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, - 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, - 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, - 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, - 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, - 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, - 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, - 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, - 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, - 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, - 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, - 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, - 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, - 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, - 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, - 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, - 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, - 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, - 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, - 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, - 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, - 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, - 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, - 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, - 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, - 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, - 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, - 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, - 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, - 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, - 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, - 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, - 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, - 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, - 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, - 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, - 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, - 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, - 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, - 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, - 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, - 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, - 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, - 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, - 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, - 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, - 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, - 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, - 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, - 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, - 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, - 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, - 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, - 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, - 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, - 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, - 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, - 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, - 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, - 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, - 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, - 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, - 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, - 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, - 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, - 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, - 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, - 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, - 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, - 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, - 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, - 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, - 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, - 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, - 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, - 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, - 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, - 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, - 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, - 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, - 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, - 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, - 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, - 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, - 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, - 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, - 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, - 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, - 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, - 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, - 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, - 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, - 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, - 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, - 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, - 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, - 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, - 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, - 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, - 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, - 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, - 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, - 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, - 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, - 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, - 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, - 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, - 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, - 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, - 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, - 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, - 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, - 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, - 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, - 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, - 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, - 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, - 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, - 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, - 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, - 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, - 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, - 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, - 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, - 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, - 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, - 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, - 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, - 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, - 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, - 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, - 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, - 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, - 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, - 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, - 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, - 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, - 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, - 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, - 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, - 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, - 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, - 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, - 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, + 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, + 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, + 0xDF, 0x9A, 0x1F, 0xFF, 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, + 0xFF, 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, 0xE0, 0x93, + 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, + 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, + 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, + 0xFF, 0xDA, 0x8C, 0x12, 0xFF, 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, + 0x11, 0xFF, 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, 0xD9, + 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0C, 0xFF, + 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, + 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, + 0x9E, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, + 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, + 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, + 0xFF, 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8E, + 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, 0xDB, 0x8D, 0x12, 0xFF, 0xDB, + 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, + 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, + 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, + 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xE2, + 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, 0xE2, 0xA1, 0x26, 0xFF, + 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, + 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, + 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, + 0x9D, 0x20, 0xFF, 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, 0xDC, 0x96, 0x1C, + 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, + 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, + 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, + 0xDD, 0x8E, 0x15, 0xFF, 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, + 0xFF, 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x86, + 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, + 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, + 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, + 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, 0xE5, + 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, 0xE3, 0x9E, 0x24, 0xFF, + 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, + 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, + 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, + 0x97, 0x1C, 0xFF, 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x92, 0x19, + 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, + 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, + 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, + 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xE7, 0xAA, + 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, 0xE4, 0xA5, 0x28, 0xFF, 0xE5, + 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, + 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, + 0xFF, 0xE7, 0xA0, 0x24, 0xFF, 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, + 0x18, 0xFF, 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, 0x7D, + 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, 0xAF, 0x87, 0x55, 0xFF, + 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, + 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, + 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, + 0x90, 0x18, 0xFF, 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, 0xE0, 0x87, 0x11, + 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, + 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, + 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, + 0xE5, 0xA9, 0x2F, 0xFF, 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, + 0xFF, 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, 0xE8, 0xA4, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, 0xF6, 0xAD, 0x12, 0xFF, 0xF8, + 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, + 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, + 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, + 0x8D, 0xFF, 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, 0xE3, + 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, 0xE2, 0x94, 0x1B, 0xFF, + 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, + 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, + 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, + 0x8A, 0x13, 0xFF, 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xE2, 0xAB, 0x33, + 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, + 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, + 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, + 0xA7, 0x8A, 0x4D, 0xFF, 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, + 0xFF, 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, 0x28, 0x6F, + 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, 0x24, 0x64, 0xF1, 0xFF, 0x21, + 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, + 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, + 0xFF, 0xE5, 0x98, 0x17, 0xFF, 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, + 0x18, 0xFF, 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, + 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, 0xE0, 0x8A, 0x10, 0xFF, + 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, + 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, + 0xAD, 0x2C, 0xFF, 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, 0xE7, 0xA9, 0x2B, + 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, + 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, + 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, + 0x2B, 0x7B, 0xF5, 0xFF, 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, + 0xFF, 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, 0xF0, 0xA7, + 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE4, 0x95, 0x1D, 0xFF, 0xE2, + 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, + 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, + 0xFF, 0xE1, 0x8E, 0x12, 0xFF, 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, + 0x15, 0xFF, 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, + 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xE6, 0xC0, 0x5F, 0xFF, + 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, + 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, + 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, + 0x4F, 0xF1, 0xFF, 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, 0x37, 0x8B, 0xF9, + 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, + 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, + 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, + 0xE3, 0x98, 0x1E, 0xFF, 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, + 0xFF, 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE0, 0x91, + 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, + 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, + 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, + 0x2F, 0xFF, 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, 0xE6, + 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, 0xEE, 0xAF, 0x28, 0xFF, + 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, + 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, + 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, + 0x98, 0xF8, 0xFF, 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, 0x62, 0x6C, 0xBE, + 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, + 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, + 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, + 0xE1, 0x91, 0x15, 0xFF, 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, + 0xFF, 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, 0xDC, 0x89, + 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, + 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, + 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, + 0xFF, 0xF1, 0xAE, 0x34, 0xFF, 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, + 0xEC, 0xFF, 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, 0x3E, + 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, 0x4C, 0xA1, 0xFA, 0xFF, + 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, + 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, + 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, + 0x97, 0x25, 0xFF, 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, 0xE4, 0x95, 0x1C, + 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, + 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, + 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEC, 0x88, 0x03, 0xFF, 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, + 0xFF, 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, 0xEA, 0xB0, + 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, 0xF8, 0xB6, 0x22, 0xFF, 0x44, + 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, + 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, + 0xFF, 0x53, 0xAE, 0xF8, 0xFF, 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, + 0xFA, 0xFF, 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, 0x50, + 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, 0xEF, 0xA5, 0x1A, 0xFF, + 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, + 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, + 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, + 0x98, 0x1C, 0xFF, 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xF0, 0x8C, 0x0C, + 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, + 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, + 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, + 0xEF, 0xB1, 0x34, 0xFF, 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, + 0xFF, 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, 0x4C, 0xB4, + 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, 0x60, 0xB7, 0xFA, 0xFF, 0x64, + 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, + 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, + 0xFF, 0x6E, 0x94, 0xDF, 0xFF, 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, + 0x4A, 0xFF, 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, 0xFE, + 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, 0xE4, 0x91, 0x18, 0xFF, + 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, + 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, + 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, + 0x8A, 0x0B, 0xFF, 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, + 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, + 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, + 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, + 0x69, 0xC3, 0xF9, 0xFF, 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, + 0xFF, 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, 0x6C, 0xB4, + 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, 0xF3, 0xA1, 0x13, 0xFF, 0xEF, + 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, + 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, + 0xFF, 0xFF, 0x93, 0x18, 0xFF, 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, + 0x1B, 0xFF, 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, 0xA0, + 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, 0x00, 0x77, 0x33, 0xFF, + 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, + 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, + 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, + 0xB3, 0x32, 0xFF, 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, 0x5A, 0xBB, 0xF8, + 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, + 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, + 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, + 0xDB, 0xAB, 0x47, 0xFF, 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, + 0xFF, 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, 0x25, 0xAD, + 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, 0x53, 0x9E, 0x51, 0xFF, 0x6D, + 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, + 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, + 0xFF, 0x11, 0x7F, 0x35, 0xFF, 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, + 0x0F, 0xFF, 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, 0xEC, + 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x3C, 0xFF, + 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, + 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, + 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, + 0xD5, 0xFA, 0xFF, 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, 0x8F, 0xCF, 0xFB, + 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, + 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, + 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, + 0x1B, 0xB8, 0x75, 0xFF, 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, + 0xFF, 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, 0x4C, 0xAC, + 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, 0x14, 0x86, 0x49, 0xFF, 0x8B, + 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, + 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, + 0x50, 0xFF, 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, 0x3C, + 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, 0x65, 0xBF, 0xF9, 0xFF, + 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, + 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, + 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, + 0x9F, 0x11, 0xFF, 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, 0x44, 0xD2, 0x99, + 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, + 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, + 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, + 0x65, 0xB9, 0x80, 0xFF, 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, + 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, + 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, + 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, + 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, + 0xFF, 0x65, 0xBC, 0xF8, 0xFF, 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, + 0xF9, 0xFF, 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, 0x62, + 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, 0xAB, 0xE5, 0xF7, 0xFF, + 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, + 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, + 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, + 0xD0, 0x9B, 0xFF, 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, 0x2B, 0xA9, 0x64, + 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, + 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, + 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, + 0xEF, 0xBA, 0x3F, 0xFF, 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, + 0xFF, 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, 0x49, 0xA5, + 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, + 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, + 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, + 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, + 0x15, 0xFF, 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, 0x7B, + 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, 0x67, 0xE5, 0xC6, 0xFF, + 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, + 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, + 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, + 0xC4, 0x9F, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xF0, 0xBE, 0x41, + 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, + 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, + 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, + 0x78, 0xC9, 0xFA, 0xFF, 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, + 0xFF, 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, 0x6E, 0xCB, + 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, + 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, + 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, + 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, + 0xB8, 0xFF, 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, 0x48, + 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, 0x2C, 0xAC, 0x66, 0xFF, + 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, + 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, + 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, + 0xBE, 0x42, 0xFF, 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, 0x57, 0xB6, 0xF7, + 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, + 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, + 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, + 0xD7, 0xF8, 0xFC, 0xFF, 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, + 0xFF, 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, 0xA6, 0xEF, + 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, 0x9E, 0xEF, 0xE0, 0xFF, 0x92, + 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, + 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, + 0xFF, 0x35, 0xBC, 0x77, 0xFF, 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, + 0x57, 0xFF, 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEF, + 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, 0xF1, 0xC1, 0x43, 0xFF, + 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, + 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, + 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, + 0xDB, 0xFB, 0xFF, 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, 0xCA, 0xFA, 0xFF, + 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, + 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, + 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, + 0xB5, 0xF3, 0xE8, 0xFF, 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, + 0xFF, 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, 0x50, 0xDC, + 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, 0x32, 0xB4, 0x6E, 0xFF, 0x2E, + 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, + 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, + 0xFF, 0xF1, 0xC3, 0x46, 0xFF, 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, + 0x3C, 0xFF, 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, 0x38, + 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, 0xAE, 0xD7, 0xF7, 0xFF, + 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, + 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, + 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, + 0xFC, 0xFC, 0xFF, 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, 0xCA, 0xF6, 0xEE, + 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, + 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, + 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, + 0x3B, 0xC2, 0x7F, 0xFF, 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, + 0xFF, 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF1, 0xC5, + 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, 0xF2, 0xC3, 0x45, 0xFF, 0xF1, + 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, + 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, + 0xFF, 0x72, 0xC2, 0xFF, 0xFF, 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, + 0xFF, 0xFF, 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0xCD, + 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, 0xDD, 0xF5, 0xFB, 0xFF, + 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, + 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, + 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, + 0xF9, 0xF1, 0xFF, 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, 0x50, 0xE1, 0xA4, + 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, + 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, + 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, + 0xF2, 0xC5, 0x48, 0xFF, 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, + 0xFF, 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, 0x32, 0x83, + 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, 0xB5, 0xDC, 0xF3, 0xFF, 0x97, + 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, + 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, + 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, + 0xFF, 0xFF, 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, 0xD6, + 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, 0xD9, 0xF8, 0xF2, 0xFF, + 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, + 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, + 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, + 0xCB, 0x87, 0xFF, 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xF2, 0xC7, 0x4E, + 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, + 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, + 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, + 0xFF, 0xC0, 0x26, 0xFF, 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, + 0xFF, 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, 0xF4, 0xBA, + 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, + 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, + 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, + 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, + 0xF5, 0xFF, 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, 0x93, + 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, 0x4D, 0xE6, 0xA6, 0xFF, + 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, + 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, + 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, + 0xCA, 0x4D, 0xFF, 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, 0xFF, 0xC7, 0x28, + 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, + 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, + 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, + 0xF2, 0xC9, 0x6F, 0xFF, 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, + 0xFF, 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, + 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, + 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, + 0xFF, 0xDB, 0xFE, 0xED, 0xFF, 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, + 0x83, 0xFF, 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, 0xEB, + 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xF4, 0xCA, 0x52, 0xFF, + 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, + 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, + 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, + 0xBB, 0x34, 0xFF, 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, 0xF2, 0xBA, 0x2F, + 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, + 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, + 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, + 0xEB, 0xFD, 0xFD, 0xFF, 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, + 0xFF, 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, 0xE9, 0xFD, + 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, + 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, + 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, + 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, + 0x4B, 0xFF, 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, 0xFC, + 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, 0xF3, 0xC4, 0x45, 0xFF, + 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, + 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, + 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, + 0xB5, 0x3E, 0xFF, 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, + 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, + 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, + 0x8A, 0xF3, 0xD2, 0xFF, 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, + 0xFF, 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, 0xF2, 0x95, + 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, + 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, + 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, + 0xFF, 0xCD, 0x83, 0x17, 0xFF, 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, + 0x2E, 0xFF, 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, 0xF5, + 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, 0xFF, 0xFE, 0xE2, 0xFF, + 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, + 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, + 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, + 0xFF, 0xFD, 0xFF, 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, 0xAB, 0xF8, 0xE2, + 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, + 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, + 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF1, 0x96, 0x0E, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, + 0xFF, 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, 0xC6, 0x74, + 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, 0xCC, 0x84, 0x0B, 0xFF, 0xCE, + 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, + 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, + 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, + 0xBB, 0xFF, 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, 0xEE, + 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, + 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, + 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, + 0xE5, 0xB7, 0xFF, 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, 0xF0, 0x95, 0x0F, + 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, + 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, + 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, + 0xCE, 0x82, 0x08, 0xFF, 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, + 0xFF, 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, 0xF8, 0xEC, + 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, + 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, + 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, + 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, + 0xFC, 0xFF, 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, 0xEB, + 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, 0x9D, 0xED, 0xD2, 0xFF, + 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, + 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, + 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, + 0x95, 0x10, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, 0xBB, 0x5C, 0x00, + 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, + 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, + 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, + 0xFB, 0xFC, 0xDF, 0xFF, 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, + 0xFF, 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, 0xF5, 0xB1, + 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, + 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, + 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, + 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, + 0x9E, 0xFF, 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, 0xFF, + 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xF3, 0x98, 0x15, 0xFF, + 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, + 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, + 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, + 0x97, 0x04, 0xFF, 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, 0xF9, 0xF7, 0xBF, + 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, + 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, + 0xF2, 0xAD, 0x22, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, + 0xFF, 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xD3, 0xF8, + 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, 0x67, 0xE2, 0xCB, 0xFF, 0x52, + 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, + 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, + 0xFF, 0xEF, 0x9B, 0x14, 0xFF, 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, + 0x11, 0xFF, 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF7, + 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, 0xC8, 0x72, 0x05, 0xFF, + 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, + 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, + 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, + 0xFD, 0xDD, 0xFF, 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, 0xEB, 0xAB, 0x17, + 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, + 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, + 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, + 0xCB, 0xBC, 0x60, 0xFF, 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, + 0xFF, 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF4, 0x9B, + 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, 0xF1, 0x99, 0x14, 0xFF, 0xEF, + 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, + 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, + 0xFF, 0xC6, 0x67, 0x03, 0xFF, 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, + 0x07, 0xFF, 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, 0xFA, + 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, 0xFA, 0xFA, 0xCD, 0xFF, + 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, + 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, + 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, + 0xD8, 0x8B, 0xFF, 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, 0xF3, 0xA2, 0x0D, + 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, + 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, + 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, + 0xEE, 0x9B, 0x16, 0xFF, 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, + 0xFF, 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, 0xF7, 0xCC, + 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, 0xD6, 0x84, 0x06, 0xFF, 0xDC, + 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, + 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, + 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, + 0xDB, 0xFF, 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, 0xF6, + 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, 0xF7, 0xDA, 0x99, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, + 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, + 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, + 0xA3, 0x16, 0xFF, 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, 0xF9, 0x97, 0x0B, + 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, + 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, + 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, + 0xCE, 0x75, 0x02, 0xFF, 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, + 0xFF, 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, 0xFB, 0xE5, + 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, + 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, + 0xFF, 0xEB, 0xAF, 0x27, 0xFF, 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, + 0xFF, 0xFF, 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, 0xE6, + 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, 0xF7, 0x9F, 0x06, 0xFF, + 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, + 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, + 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, + 0x9A, 0x13, 0xFF, 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, 0xFE, 0xD6, 0x59, + 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, + 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, + 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, + 0xFE, 0xF2, 0xB0, 0xFF, 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, + 0xFF, 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, 0xF3, 0xCC, + 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, + 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, + 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, + 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, + 0xFB, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, 0x57, + 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, 0xEF, 0x9A, 0x17, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, + 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, + 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, + 0x7B, 0x03, 0xFF, 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, 0xFB, 0xE3, 0x74, + 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, + 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, + 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, + 0xF3, 0xCE, 0x73, 0xFF, 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, + 0xFF, 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xDE, 0xFF, + 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, + 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, + 0xFF, 0xFB, 0x9A, 0x10, 0xFF, 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, + 0x13, 0xFF, 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xFC, + 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, 0xF5, 0xCE, 0x53, 0xFF, + 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, + 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, + 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, + 0xE8, 0x99, 0xFF, 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, 0xF3, 0xB4, 0x27, + 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, + 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, + 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, + 0x9F, 0xFE, 0xF5, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, + 0xFF, 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, 0x4F, 0xE8, + 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, 0xF4, 0x9D, 0x17, 0xFF, 0xF1, + 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, + 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, + 0xFF, 0xF9, 0xD7, 0x59, 0xFF, 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, + 0x0C, 0xFF, 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, 0xF5, + 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, 0xF7, 0xD6, 0x4B, 0xFF, + 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, + 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, + 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, 0xCE, 0xFD, 0xFD, + 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, + 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, + 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, + 0xF6, 0x99, 0x07, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, + 0xFF, 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xFA, 0xD9, + 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, + 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, + 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, + 0xFF, 0xEC, 0xC5, 0x13, 0xFF, 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, + 0x65, 0xFF, 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, 0xFD, + 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, 0xF6, 0xB9, 0x31, 0xFF, + 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, + 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, + 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, + 0xF9, 0xFE, 0xFF, 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, 0xC9, 0xF9, 0xFC, + 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, + 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, + 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, + 0xFF, 0xE2, 0x6D, 0xFF, 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, + 0xFF, 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, 0xE0, 0xAA, + 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, + 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, + 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, + 0xFF, 0xFB, 0xBA, 0x30, 0xFF, 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, + 0xF9, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, 0xD9, + 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xBB, 0xFD, 0xFD, 0xFF, + 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, + 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, + 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, + 0x9E, 0x1A, 0xFF, 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xFD, 0xD3, 0x66, + 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, + 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, + 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, + 0xE0, 0xAD, 0x16, 0xFF, 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, + 0xFF, 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, 0xF7, 0xD1, + 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xF4, 0xB8, 0x35, 0xFF, 0xFF, + 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, + 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, + 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, + 0xFC, 0xFF, 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, 0x47, + 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, 0x05, 0xDD, 0xFF, 0xFF, + 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, + 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, + 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, + 0x86, 0x3B, 0xFF, 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, 0xD5, 0x95, 0x21, + 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, + 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, + 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, + 0xF9, 0xBA, 0x31, 0xFF, 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, + 0xFF, 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, 0xC1, 0xFC, + 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, 0xA3, 0xFC, 0xFC, 0xFF, 0x95, + 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, + 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, + 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, + 0x17, 0xFF, 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, 0xF8, + 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF9, 0xD7, 0x64, 0xFF, + 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, + 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, + 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, + 0x9C, 0x1E, 0xFF, 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, 0xEF, 0xB9, 0x23, + 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, + 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, + 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, + 0x9C, 0xFC, 0xFC, 0xFF, 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, + 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, 0x3A, 0xE6, + 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, 0x8F, 0xB0, 0x77, 0xFF, 0xFD, + 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, + 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, + 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, + 0x00, 0xFF, 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, 0xBB, + 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, 0xCC, 0x74, 0x21, 0xFF, + 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, + 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, + 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, + 0xBB, 0x38, 0xFF, 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, 0x9F, 0xFA, 0xF8, + 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, + 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, + 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, + 0x00, 0xD9, 0xEE, 0xFF, 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, + 0xFF, 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, 0xF2, 0x99, + 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, + 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, + 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, + 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, + 0x54, 0xFF, 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, 0xDE, + 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, 0xDC, 0x98, 0x00, 0xFF, + 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, + 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, + 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, + 0xFA, 0xF9, 0xFF, 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, 0x27, 0xE3, 0xF0, + 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, + 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, + 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, + 0xFF, 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, 0xF5, 0xD6, + 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, 0xF7, 0xD3, 0x61, 0xFF, 0xF8, + 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, + 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, + 0xFF, 0xD5, 0x84, 0x01, 0xFF, 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, + 0x34, 0xFF, 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, 0x83, + 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, 0x77, 0xFA, 0xF8, 0xFF, + 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, + 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, + 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, + 0xB9, 0x9D, 0xFF, 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, 0xF4, 0x99, 0x13, + 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, + 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, + 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, + 0xF7, 0xC9, 0x47, 0xFF, 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, 0xFA, 0xCB, + 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, + 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, + 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, + 0xFF, 0x62, 0xF6, 0xF5, 0xFF, 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, + 0xFE, 0xFF, 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, 0x35, + 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, 0x18, 0xD8, 0xEC, 0xFF, + 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, + 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, + 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, + 0x99, 0x14, 0xFF, 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, 0xFC, 0xD3, 0x58, + 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, + 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, + 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, + 0xE2, 0xA1, 0x24, 0xFF, 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, + 0xFF, 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, 0x5F, 0xF5, + 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, 0x50, 0xF4, 0xF2, 0xFF, 0x4E, + 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, + 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, + 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, + 0x0E, 0xFF, 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, 0xF8, + 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, + 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, + 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, + 0xC8, 0x49, 0xFF, 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, 0xFD, 0xC3, 0x40, + 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, + 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, + 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, + 0x3F, 0xEC, 0xED, 0xFF, 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, + 0xFF, 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, 0x20, 0xEC, + 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, 0x16, 0xC9, 0xEB, 0xFF, 0x0B, + 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, + 0xFF, 0xF9, 0x9A, 0x16, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, + 0x15, 0xFF, 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, 0xFA, + 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCC, 0x4D, 0xFF, + 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, + 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, + 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, 0x31, 0xD4, 0xD5, + 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, + 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, + 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, + 0x18, 0xCE, 0xE9, 0xFF, 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, + 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF9, 0x9F, + 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF7, + 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, + 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, + 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, + 0x47, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, + 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3B, 0xFF, + 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, + 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, + 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, + 0xD7, 0xCC, 0xFF, 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, 0x19, 0xD3, 0xDD, + 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, + 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, + 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, + 0xF7, 0x9B, 0x14, 0xFF, 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, + 0xFF, 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, 0xF8, 0xCF, + 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, + 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, + 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, + 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, + 0x38, 0xFF, 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, 0xFB, + 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, 0x36, 0xDD, 0xD3, 0xFF, + 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, + 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, + 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, + 0xC1, 0xE2, 0xFF, 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x15, + 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, + 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, + 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, + 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, + 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, + 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, + 0xFF, 0x84, 0xCB, 0x93, 0xFF, 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, + 0xB4, 0xFF, 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, 0x18, + 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, 0x03, 0xBD, 0xC7, 0xFF, + 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, + 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, + 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, + 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCE, 0x4F, + 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, + 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, + 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, + 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, + 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, 0xFA, 0xB7, + 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, + 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, + 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, + 0xFF, 0x8A, 0xAC, 0x59, 0xFF, 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, + 0x20, 0xFF, 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, 0xF6, + 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, + 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, + 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, + 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, + 0xCC, 0x48, 0xFF, 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, + 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, + 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, + 0xFA, 0xB5, 0x25, 0xFF, 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, + 0xFF, 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, 0xFA, 0xBE, + 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, + 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, + 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, + 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, + 0x13, 0xFF, 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF7, + 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, 0xF9, 0xCF, 0x4E, 0xFF, + 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, + 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, + 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, + 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, 0xFB, 0xB6, 0x33, + 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, + 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, + 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, + 0xF9, 0xAC, 0x1B, 0xFF, 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, + 0xFF, 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, 0xF8, 0xA1, + 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, + 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, + 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, + 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, + 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, + 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, + 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, + 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, 0xE6, 0xBB, 0x58, + 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, + 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, + 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, + 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, + 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, + 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, + 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, + 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, + 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, + 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, + 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, + 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, + 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, + 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, + 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, + 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, + 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, + 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, + 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, + 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, + 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, + 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, + 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, + 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, + 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, + 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, + 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, + 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, + 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, + 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, + 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, + 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, + 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, + 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, + 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, + 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, + 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, + 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, + 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, + 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, + 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, + 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, ]; diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index 16e265e5..36ae6dd6 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -6,10 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use super::{ - BlockHeader, BlockType, CodecChannelHeader, RfxError, BLOCK_HEADER_SIZE, - CODEC_CHANNEL_HEADER_SIZE, -}; +use super::{BlockHeader, BlockType, CodecChannelHeader, RfxError, BLOCK_HEADER_SIZE, CODEC_CHANNEL_HEADER_SIZE}; use crate::utils::SplitTo; use crate::PduBufferParsing; @@ -34,10 +31,7 @@ pub struct ContextPdu { } impl ContextPdu { - pub fn from_buffer_consume_with_header( - buffer: &mut &[u8], - header: BlockHeader, - ) -> Result { + pub fn from_buffer_consume_with_header(buffer: &mut &[u8], header: BlockHeader) -> Result { CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Context)?; let mut buffer = buffer.split_to(header.data_length); @@ -55,9 +49,7 @@ impl ContextPdu { let flags = OperatingMode::from_bits_truncate(properties.get_bits(0..3)); let color_conversion_transform = properties.get_bits(3..5); if color_conversion_transform != COLOR_CONVERSION_ICT { - return Err(RfxError::InvalidColorConversionTransform( - color_conversion_transform, - )); + return Err(RfxError::InvalidColorConversionTransform(color_conversion_transform)); } let dwt = properties.get_bits(5..9); @@ -87,8 +79,7 @@ impl<'a> PduBufferParsing<'a> for ContextPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Context)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Context)?; Self::from_buffer_consume_with_header(buffer, header) } @@ -133,8 +124,7 @@ impl<'a> PduBufferParsing<'a> for FrameBeginPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameBegin)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameBegin)?; CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::FrameBegin)?; let mut buffer = buffer.split_to(header.data_length); @@ -175,8 +165,7 @@ impl<'a> PduBufferParsing<'a> for FrameEndPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let _header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameEnd)?; + let _header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::FrameEnd)?; CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::FrameEnd)?; Ok(Self) @@ -209,8 +198,7 @@ impl<'a> PduBufferParsing<'a> for RegionPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Region)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Region)?; CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Region)?; let mut buffer = buffer.split_to(header.data_length); @@ -293,8 +281,7 @@ impl<'a> PduBufferParsing<'a> for TileSetPdu<'a> { type Error = RfxError; fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Extension)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Extension)?; CodecChannelHeader::from_buffer_consume_with_type(buffer, BlockType::Extension)?; let mut buffer = buffer.split_to(header.data_length); @@ -321,9 +308,7 @@ impl<'a> PduBufferParsing<'a> for TileSetPdu<'a> { let color_conversion_transform = properties.get_bits(4..6); if color_conversion_transform != COLOR_CONVERSION_ICT { - return Err(RfxError::InvalidColorConversionTransform( - color_conversion_transform, - )); + return Err(RfxError::InvalidColorConversionTransform(color_conversion_transform)); } let dwt = properties.get_bits(6..10); @@ -417,11 +402,7 @@ impl<'a> PduBufferParsing<'a> for TileSetPdu<'a> { BLOCK_HEADER_SIZE + CODEC_CHANNEL_HEADER_SIZE + 14 - + self - .quants - .iter() - .map(PduBufferParsing::buffer_length) - .sum::() + + self.quants.iter().map(PduBufferParsing::buffer_length).sum::() + self.tiles.iter().map(|t| t.buffer_length()).sum::() } } @@ -443,12 +424,7 @@ impl<'a> PduBufferParsing<'a> for RfxRectangle { let width = buffer.read_u16::()?; let height = buffer.read_u16::()?; - Ok(Self { - x, - y, - width, - height, - }) + Ok(Self { x, y, width, height }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { diff --git a/ironrdp/src/codecs/rfx/dwt.rs b/ironrdp/src/codecs/rfx/dwt.rs index 56f63942..9385ef99 100644 --- a/ironrdp/src/codecs/rfx/dwt.rs +++ b/ironrdp/src/codecs/rfx/dwt.rs @@ -35,21 +35,15 @@ fn inverse_horizontal(mut buffer: &[i16], temp_buffer: &mut [i16], subband_width h_dst[0] = (i32::from(lh[0]) - ((i32::from(hh[0]) + i32::from(hh[0]) + 1) >> 1)) as i16; for n in 1..subband_width { let x = n * 2; - l_dst[x] = - (i32::from(ll[n]) - ((i32::from(hl[n - 1]) + i32::from(hl[n]) + 1) >> 1)) as i16; - h_dst[x] = - (i32::from(lh[n]) - ((i32::from(hh[n - 1]) + i32::from(hh[n]) + 1) >> 1)) as i16; + l_dst[x] = (i32::from(ll[n]) - ((i32::from(hl[n - 1]) + i32::from(hl[n]) + 1) >> 1)) as i16; + h_dst[x] = (i32::from(lh[n]) - ((i32::from(hh[n - 1]) + i32::from(hh[n]) + 1) >> 1)) as i16; } // Odd coefficients for n in 0..subband_width - 1 { let x = n * 2; - l_dst[x + 1] = (i32::from(hl[n] << 1) - + ((i32::from(l_dst[x]) + i32::from(l_dst[x + 2])) >> 1)) - as i16; - h_dst[x + 1] = (i32::from(hh[n] << 1) - + ((i32::from(h_dst[x]) + i32::from(h_dst[x + 2])) >> 1)) - as i16; + l_dst[x + 1] = (i32::from(hl[n] << 1) + ((i32::from(l_dst[x]) + i32::from(l_dst[x + 2])) >> 1)) as i16; + h_dst[x + 1] = (i32::from(hh[n] << 1) + ((i32::from(h_dst[x]) + i32::from(h_dst[x + 2])) >> 1)) as i16; } let n = subband_width - 1; let x = n * 2; @@ -70,9 +64,8 @@ fn inverse_vertical(mut buffer: &mut [i16], mut temp_buffer: &[i16], subband_wid let total_width = subband_width * 2; for _ in 0..total_width { - buffer[0] = (i32::from(temp_buffer[0]) - - ((i32::from(temp_buffer[subband_width * total_width]) * 2 + 1) >> 1)) - as i16; + buffer[0] = + (i32::from(temp_buffer[0]) - ((i32::from(temp_buffer[subband_width * total_width]) * 2 + 1) >> 1)) as i16; let mut l = temp_buffer; let mut lh = &temp_buffer[(subband_width - 1) * total_width..]; @@ -85,19 +78,16 @@ fn inverse_vertical(mut buffer: &mut [i16], mut temp_buffer: &[i16], subband_wid h = &h[total_width..]; // Even coefficients - dst[2 * total_width] = - (i32::from(l[0]) - ((i32::from(lh[0]) + i32::from(h[0]) + 1) >> 1)) as i16; + dst[2 * total_width] = (i32::from(l[0]) - ((i32::from(lh[0]) + i32::from(h[0]) + 1) >> 1)) as i16; // Odd coefficients - dst[total_width] = (i32::from(lh[0] << 1) - + ((i32::from(dst[0]) + i32::from(dst[2 * total_width])) >> 1)) - as i16; + dst[total_width] = + (i32::from(lh[0] << 1) + ((i32::from(dst[0]) + i32::from(dst[2 * total_width])) >> 1)) as i16; dst = &mut dst[2 * total_width..]; } - dst[total_width] = (i32::from(lh[total_width] << 1) - + ((i32::from(dst[0]) + i32::from(dst[0])) >> 1)) as i16; + dst[total_width] = (i32::from(lh[total_width] << 1) + ((i32::from(dst[0]) + i32::from(dst[0])) >> 1)) as i16; temp_buffer = &temp_buffer[1..]; buffer = &mut buffer[1..]; diff --git a/ironrdp/src/codecs/rfx/dwt/tests.rs b/ironrdp/src/codecs/rfx/dwt/tests.rs index 5a955fbe..a07f5755 100644 --- a/ironrdp/src/codecs/rfx/dwt/tests.rs +++ b/ironrdp/src/codecs/rfx/dwt/tests.rs @@ -31,676 +31,561 @@ fn decode_works_for_regular_values() { } const DECODED_DWT_FOR_MAX_VALUES: [i16; 4096] = [ - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, - -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, - -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, - 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, - -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, - -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, - -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, - 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, - 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, - 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, - 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, - -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, - -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, - -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, - 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, - 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, - 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, - -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, - -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, - -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, - -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, - -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, - -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, - -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, - -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4, -2, -6, - -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, - -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, - -2, -6, -2, -4, 2, -4, -2, -6, -2, -7, -4, -8, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, - 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, - 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, - 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, - 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, -4, -6, -6, 2, 16379, 32764, 16377, -2, 16377, - 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, - 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, - -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, - 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, -8, -6, -10, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, + 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, + -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, + 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, + -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, + 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, + -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, + 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, + -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, + 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, + -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, + 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, + 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, + 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, + -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, + -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, + -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, -2, -2, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, + -4100, 2, -4100, -8194, -12294, -16385, -6, 16381, 16377, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, + -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -2, + 32764, 32764, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, + -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, + 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, + 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, + -4100, -16383, -4100, 8191, 4092, 2, 4092, 8191, -4100, -16383, -4, 16383, 16379, 2, 8191, 16381, -8194, -32768, + -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, + 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, + 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, -8194, -32768, -8194, 16381, 8191, 2, 8191, 16381, + -8194, -32768, -2, 32764, 32764, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, -16385, -12294, -8194, -4100, 2, -4100, -8194, -12294, + -16385, -6, 16381, 16377, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, + -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -16385, -32768, -16383, 2, -16383, -32768, -16385, -2, -2, + -2, -2, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, + -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, -2, -6, -2, -6, -2, -4, 2, -4, + -2, -6, -2, -7, -4, -8, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, + 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, + 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, + 16381, 32764, 16383, 2, 16383, 32764, 16381, -2, -4, -6, -6, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, + 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, + 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, + 32764, 16379, 2, 16379, 32764, 16377, -2, 16377, 32764, 16379, 2, 16379, 32764, 16377, -2, -8, -6, -10, ]; const ENCODED_DWT: [i16; 4096] = [ - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 256, 0, 0, - 0, 0, 0, 0, 0, 128, 0, -256, 512, -640, -128, 0, 0, 0, 0, 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -384, 0, 384, 0, 0, 0, 0, 0, 0, -128, 512, 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, - 640, 0, 0, 0, 0, 0, 0, 256, 128, 0, 256, -640, -512, 128, 0, 0, 0, 0, 0, 0, 128, 384, -128, - 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, 0, 0, 0, - 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, 0, 0, 0, 0, 0, -384, 128, 640, 0, 0, 0, 0, 0, 0, -128, - 0, 0, 128, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, -256, 0, 0, - 0, 0, 0, 128, 0, -1152, -384, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, - -128, -128, -128, 0, 0, 0, 0, 0, 0, 768, -256, -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, - 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, 256, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 256, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, 0, -128, - 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, - 0, 128, 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -512, 0, 0, 0, 0, 0, -128, - -768, 128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, -128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 1280, 0, 0, 0, -128, - 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -640, - -640, 384, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, -128, 0, - 0, 0, 0, 0, 0, 384, -128, -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, 0, 0, 0, - -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 256, 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 768, -128, - 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, -384, -128, 768, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, -256, 0, -128, 0, 0, 0, 0, 128, - -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, -128, -1280, 384, 128, 256, - 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 384, -256, 0, 0, 0, 0, - 0, 768, -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, 128, 128, 128, 768, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 512, 128, 0, 0, 0, 0, 0, 384, 256, 0, 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, - -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, -128, 0, 0, 128, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, - -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, -128, 0, 0, - -128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, - -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, - -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, -256, - -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, - 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, 128, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 128, 384, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, -640, -384, -512, -768, -768, 896, 128, 128, - -128, 0, 0, 0, 0, 0, 0, 0, -128, -256, -384, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, -128, - 0, -256, -384, 128, 128, -1024, 768, 0, -128, 128, 0, 0, 0, 0, 128, 128, 0, 0, 768, -384, -128, - 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, 0, 256, 896, -768, -128, 0, 0, 128, 0, 0, 0, - 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, 0, -128, - 768, -128, 128, -768, 896, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -256, 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, -128, -128, 896, -1024, 0, 128, - -256, -512, -384, -128, 128, -384, -512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 128, -384, -640, 0, 128, 0, 0, 1024, -128, -896, -1152, -896, -256, 768, 384, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, - 0, 0, 128, -128, 0, 0, 0, 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -128, 128, -128, 0, 0, 0, 0, 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 256, 128, - -512, -640, -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, - -256, -128, 128, -128, 128, -128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, -128, 128, 128, 0, 128, 0, -128, 384, -128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 128, 128, 128, 0, - -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, - 512, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, - 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, - -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, - 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, - -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 256, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, - 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, -64, 0, -320, 192, -128, 64, 0, -64, 0, 0, 0, - 0, 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, 0, 64, -256, 1344, 384, 0, - 0, -320, -64, 64, 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, -128, 512, -64, 0, - 192, 64, -1152, 1024, 64, -64, 128, 0, -256, -256, 0, 0, -384, 64, -192, -64, 64, 896, -1472, - 64, 0, 64, 0, 64, -192, -64, 0, 0, 0, -320, -128, 192, -64, 704, -512, -192, 0, 64, 0, -64, - -192, 64, 0, 896, 64, 0, -64, 0, 0, -960, -128, 448, 64, -64, 64, -192, -64, -64, -128, -896, - 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, 64, -64, 192, -896, 64, -128, 128, - -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, 64, 64, 64, 0, 128, 128, 512, 0, 0, - 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, - -64, 128, 0, 0, 64, 0, -320, 0, 0, -64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, - 64, 256, 256, -128, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -64, 64, 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, - 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, 0, 64, -64, 64, 0, 64, -512, -64, 0, 0, 64, -192, - 0, 0, -64, 192, 0, 0, 64, -192, -192, -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, 192, -64, - 64, 64, 0, 64, -320, 1280, 0, 0, 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, - 0, 64, -192, 128, -576, -768, -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, - -832, 0, 0, 1024, -448, 0, 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, - -192, -1088, -896, 128, -256, -896, -64, 0, -64, 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, - 832, 960, 576, -128, 0, 128, -192, 128, 128, -128, 128, 64, -64, 64, 0, 0, -128, 320, 448, -64, - 0, 64, 256, -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, -192, 1088, 512, -64, - 256, 512, -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, 0, - 320, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -448, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -512, - -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, 0, 0, 128, - 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, -128, -128, -128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, -256, 0, 0, - -128, 384, 128, 256, -128, 0, 0, 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, - -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, -128, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, - 0, -128, 0, 0, 0, -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -256, 256, 0, 0, 128, -256, 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, -64, 32, 0, -32, -64, 0, -32, 256, 192, - 96, 0, -32, -192, 0, 128, 160, -416, -1696, -96, -64, 0, -64, -480, -224, 800, 256, 96, 224, - -800, 832, -384, 160, 640, 192, 224, -160, -416, 64, -64, 160, -1728, 320, -64, 960, 96, -1472, - 352, -288, -32, -64, 32, -576, -64, 256, -96, 96, -160, -128, -32, -160, -64, -96, 0, 32, -320, - -96, 32, -32, 32, -160, -32, -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, - -256, 768, -672, -1568, -128, 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, - -192, -576, 160, 32, -96, -128, -32, 416, 672, 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, - -448, -608, -224, 32, -32, -32, -96, -64, 0, 0, -32, -32, -32, -224, 96, 128, 224, -32, -192, - -448, -32, -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, -672, 800, -128, -64, -736, 64, - 64, 96, -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, 224, 160, 96, - 32, -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, - 448, 96, 1184, 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, 992, - 1792, 2752, 2016, 4096, 3680, 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, -1088, - 1920, 2720, 3264, 3424, 3616, 192, 672, -320, 320, -512, 4032, 3456, 2720, -320, 1888, 1664, - 1248, 960, 1120, 1696, 480, -96, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 128, 0, + -256, 512, -640, -128, 0, 0, 0, 0, 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 384, 0, 0, 0, 0, 0, 0, + -128, 512, 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, 640, 0, 0, 0, 0, 0, 0, 256, 128, 0, 256, -640, -512, 128, 0, 0, + 0, 0, 0, 0, 128, 384, -128, 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, + 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, 0, 0, 0, 0, 0, -384, 128, 640, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, + 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, -256, 0, 0, 0, 0, 0, 128, 0, -1152, -384, + 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, 0, 0, 768, -256, + -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, + 256, 384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, + 0, -128, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, 0, 128, + 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -512, 0, 0, 0, 0, 0, -128, -768, 128, 0, -128, 0, 0, 0, + 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -128, -128, 128, 1280, 0, 0, 0, -128, 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 128, -640, -640, 384, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, -128, 0, + 0, 0, 0, 0, 0, 384, -128, -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 384, 256, 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 768, -128, 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, + -128, 0, 0, 0, 0, 0, -384, -128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, + -256, 0, -128, 0, 0, 0, 0, 128, -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, -128, -1280, + 384, 128, 256, 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 384, -256, 0, 0, 0, 0, 0, + 768, -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, 128, 128, 128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 128, + 0, 0, 0, 0, 0, 384, 256, 0, 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, + -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, + -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, -128, 0, 0, 128, 0, 0, 0, 384, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, -128, 0, 0, -128, -128, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, + 0, 0, 0, 0, -256, -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, + 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, 128, 0, 0, 128, 0, 0, 0, 0, 0, + 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, + 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 128, 384, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, -640, -384, -512, -768, -768, 896, 128, 128, -128, 0, 0, 0, 0, 0, 0, 0, + -128, -256, -384, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, -128, 0, -256, -384, 128, 128, -1024, 768, 0, -128, + 128, 0, 0, 0, 0, 128, 128, 0, 0, 768, -384, -128, 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, 0, 256, 896, + -768, -128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, + 0, -128, 768, -128, 128, -768, 896, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -128, -256, 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 256, -128, -128, 896, -1024, 0, 128, -256, -512, -384, -128, 128, -384, -512, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, -384, -640, 0, 128, 0, 0, 1024, -128, -896, -1152, -896, -256, 768, 384, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, 0, 0, 128, -128, 0, 0, 0, + 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, 0, 0, 0, 0, + 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 128, 0, 0, 0, 256, 128, -512, -640, -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, -256, -128, 128, -128, 128, -128, + 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, -128, 128, 128, 0, 128, + 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 128, 128, 128, + 0, -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 512, 256, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, + 0, 0, 0, -256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, 0, 0, 0, 0, + -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, + 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, + -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, + -64, 0, -320, 192, -128, 64, 0, -64, 0, 0, 0, 0, 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, + 0, 64, -256, 1344, 384, 0, 0, -320, -64, 64, 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, -128, 512, + -64, 0, 192, 64, -1152, 1024, 64, -64, 128, 0, -256, -256, 0, 0, -384, 64, -192, -64, 64, 896, -1472, 64, 0, 64, 0, + 64, -192, -64, 0, 0, 0, -320, -128, 192, -64, 704, -512, -192, 0, 64, 0, -64, -192, 64, 0, 896, 64, 0, -64, 0, 0, + -960, -128, 448, 64, -64, 64, -192, -64, -64, -128, -896, 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, + 64, -64, 192, -896, 64, -128, 128, -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, 64, 64, 64, 0, 128, + 128, 512, 0, 0, 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, -64, + 128, 0, 0, 64, 0, -320, 0, 0, -64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, 64, 256, 256, -128, 0, 0, + -64, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, + -64, 64, 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, 0, 64, -64, 64, 0, + 64, -512, -64, 0, 0, 64, -192, 0, 0, -64, 192, 0, 0, 64, -192, -192, -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, + 192, -64, 64, 64, 0, 64, -320, 1280, 0, 0, 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, 0, 64, + -192, 128, -576, -768, -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, -832, 0, 0, 1024, -448, 0, + 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, -192, -1088, -896, 128, -256, -896, -64, 0, -64, + 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, 832, 960, 576, -128, 0, 128, -192, 128, 128, -128, 128, 64, -64, 64, 0, + 0, -128, 320, 448, -64, 0, 64, 256, -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, -192, 1088, 512, + -64, 256, 512, -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, 0, 320, -64, 0, 0, + -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -448, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -128, 0, -512, -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, + 0, 0, 128, 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, -128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, -256, 0, 0, -128, 384, 128, 256, -128, 0, 0, + 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, + -128, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 128, -256, 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 0, 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, -64, 32, 0, -32, -64, 0, -32, 256, 192, 96, 0, -32, -192, 0, 128, 160, -416, + -1696, -96, -64, 0, -64, -480, -224, 800, 256, 96, 224, -800, 832, -384, 160, 640, 192, 224, -160, -416, 64, -64, + 160, -1728, 320, -64, 960, 96, -1472, 352, -288, -32, -64, 32, -576, -64, 256, -96, 96, -160, -128, -32, -160, -64, + -96, 0, 32, -320, -96, 32, -32, 32, -160, -32, -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, + -256, 768, -672, -1568, -128, 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, -192, -576, 160, 32, + -96, -128, -32, 416, 672, 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, -448, -608, -224, 32, -32, -32, -96, -64, + 0, 0, -32, -32, -32, -224, 96, 128, 224, -32, -192, -448, -32, -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, + -672, 800, -128, -64, -736, 64, 64, 96, -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, + 224, 160, 96, 32, -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, 448, 96, + 1184, 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, 992, 1792, 2752, 2016, 4096, 3680, + 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, -1088, 1920, 2720, 3264, 3424, 3616, 192, 672, -320, 320, + -512, 4032, 3456, 2720, -320, 1888, 1664, 1248, 960, 1120, 1696, 480, -96, ]; const DECODED_DWT: [i16; 4096] = [ - -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, - -72, -98, -124, -150, -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, - -304, -336, -368, -400, -432, -450, -468, -486, -504, -522, -540, -558, -576, -598, -620, -642, - -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, -816, -816, 68, 120, 172, 240, 53, - 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, -120, -146, - -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, - -404, -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, - -733, -754, -775, -796, -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, - 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, -64, -90, -116, -106, -95, -148, -201, -199, -196, - -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, -358, -379, -401, -422, -448, -473, - -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, -776, -776, -776, - -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, - 54, 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, - -219, -237, -254, -271, -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, - -589, -648, -707, -670, -632, -663, -694, -725, -756, -756, -756, -756, 368, 401, 434, 339, - 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, 94, 100, 106, 112, 86, 60, 2, - -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, -228, -240, - -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, - -628, -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, - 282, 260, 238, 246, 254, 118, 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, - -232, -273, -123, 29, -63, -155, -151, -146, -164, -181, -199, -216, -241, -266, -291, -315, - -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, -625, -642, -675, -708, - -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, 356, - -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, - -245, -176, -139, -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, - -400, -395, -455, -514, -558, -601, -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, - 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, 346, 258, -342, -302, -6, 288, 582, 604, - 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, -293, -175, -57, -85, - -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, -487, - -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, - 460, 430, 400, 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, - 1120, 1155, 1190, 1097, 1004, 839, 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, - -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, -368, -464, -416, -368, -448, -528, - -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, 464, 462, 492, - 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, - 1403, 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, - -172, -194, -217, -239, -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, - -601, -617, -633, -633, 772, 701, 630, 623, 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, - -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, 1711, 1806, 1709, 1612, 1531, - 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, -124, -145, - -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, - -642, 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, - 794, 1073, 1575, 1822, 1976, 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, - 1266, 1156, 902, 137, -61, -3, -121, -238, -124, -9, -70, -131, -166, -201, -221, -239, -272, - -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, -667, -619, -619, 776, 760, - 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, 1524, - 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, - 16, -2, -20, 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, - -290, -264, -142, -20, 2956, 2860, -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, - 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, 1081, 1303, 1668, 2034, 2313, 2337, - 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, 40, 74, 748, - 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, - 3007, 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, - 605, 681, 758, 110, 487, 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, - 2829, 2972, 2791, 2610, 2525, 2440, 2341, 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, - 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, -742, 2290, 1738, -1118, -902, - -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, 970, 589, - 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, - 2849, 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, - 485, 350, 216, 145, 75, -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, - 950, 924, 898, 872, 846, 820, 794, 768, 806, 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, - 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, 3314, 3173, 3032, 2941, 1826, - -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, 592, 484, - 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, - 888, 864, 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, - 3023, 3157, 3291, 3350, 3409, 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, - 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, 1545, 1403, 1254, 1106, 974, 842, 1229, - 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, 984, 954, 931, 909, - 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, - 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, - 2666, 2652, 2639, 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, - 170, -92, -354, 1560, 3986, 1970, -558, -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, - 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, 2522, 2781, 3066, 3351, 3443, 3537, - 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, 3062, 2927, - 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, - 10, -263, -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, - 690, 203, 740, 1573, 1894, 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, - 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, -10, 187, -128, 3341, 3226, 3207, 3188, 3236, - 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, 1539, 1158, 777, 396, 112, - -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, 969, - 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, - 3243, 3521, 3800, 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, - 3430, 3361, 3292, 3174, 3057, 3004, 2951, 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, - -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, 1078, 1055, 967, 880, 1114, - 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, 3674, - 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, - 3577, 3518, 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, - -14, -452, -378, -314, -250, -250, 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, - 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, 3543, 3514, 3486, 3729, 3717, 3775, - 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, 3627, 3643, - 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, - 1, -402, -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, - 344, 660, 976, 1284, 2104, 2316, 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, - 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, 3988, 3609, 3742, 3715, 3688, 3715, - 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, 1238, 880, 448, - 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, - 382, 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, - 4074, 3964, 3855, 4337, 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, - 3781, 3604, 3427, 3202, 2977, 2838, 2699, 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, - -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, 1051, 1103, 1156, 20, 933, 950, - 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, 3752, 3784, - 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, - 3292, 3375, 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, - -324, -324, 1392, 1364, 1337, 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, - 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, 736, 649, 563, 332, 102, 1939, 4033, 1982, - 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, 3752, 3806, 3861, 3836, - 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, -286, - 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, - 1204, 1564, 901, 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, - 340, 856, 4028, 4128, 4076, 4024, 4004, 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, - 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, 28, -248, -248, -248, -248, 1456, - 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, -355, 394, 1401, - 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, - 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, - 2880, 2585, 2291, 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, - 1379, 1332, 1286, 1371, 1457, 1030, -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, - 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, 3042, 496, 530, 564, 502, 440, 211, 3055, - 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, 3323, 3094, 2858, 2623, - 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, - 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, - 2150, 2503, 2857, 3105, 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, - 2113, 3945, 4116, 4031, 3946, 3862, 3838, 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, - 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, -222, -254, -254, 1504, 1462, 1420, - 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, 2120, 2322, 2524, - 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, - 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, - 1300, 1071, 842, 69, -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, - 1413, 1627, 1330, -2103, -1184, -820, -712, -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, - 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, 357, 656, 699, 198, 466, 381, 297, - 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, 1931, 1189, 447, - 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, - 1497, 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, - 3533, 3656, 3715, 3774, 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, - 526, 226, -74, 286, 1158, 1678, 1686, 1634, 1582, 1114, 646, 239, -168, -31, 107, -228, -51, - -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, 1470, 1439, 1591, -817, - -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, 3674, - 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, - 325, 108, 147, 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, - -87, -140, -204, -268, -268, 1672, 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, - -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, 3574, 3633, 3693, 3688, 3684, 3661, - 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, 212, 186, 160, - 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, - -144, -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, - 400, 806, 1468, 1938, 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, - 851, 820, 533, 438, 3415, 4252, 4066, 4055, 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, - -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, 96, -19, -134, -137, -140, -204, - -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, 111, 388, 613, - 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, - 832, 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, - 3554, 3610, 3666, 3459, 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, - -264, -264, 1662, 1653, 1644, 1619, 1851, -988, -1267, -986, -704, -402, -100, 10, 120, 404, - 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, 3238, 3303, 3576, 521, 554, - 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, 3989, 3866, - 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, - -260, -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, - 1050, 1585, 2120, 2389, 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, - 342, 2951, 4024, 4015, 4006, 3997, 3988, 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, - 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, -32, -72, -112, -120, -128, -192, - -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, 719, 706, - 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, - 327, 4207, 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, - 3929, 3812, 3695, 3604, 3513, 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, - -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, -1220, -885, -550, -208, 134, 92, 563, 449, - 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, 2460, 843, 763, 794, - 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, 3506, - 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, - -188, 1598, 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, - 435, 702, 870, 1039, 1224, 1409, 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, - 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, - 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, -154, -154, -154, -154, 1784, - 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, 202, 400, - 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, - 3862, 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, - 2623, 2592, 2562, -237, 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, - -286, -1291, -1130, -713, -393, -327, -387, -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, - 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, 3843, 3776, 3789, 3802, 3783, 3764, - 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, 2484, 2617, 1982, - -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, - -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, - 353, 602, 809, 1017, 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, - 3629, 3584, 3523, 3462, 3401, 3341, 3264, 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, - 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, -2834, -956, -2076, -2173, - -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, -304, - -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, - 3558, 3535, 3512, 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, - 270, 154, 38, -6, -50, -110, -170, -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, - -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, 824, -310, -932, -1394, -832, -750, - -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, 3444, 3443, - 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, - 50, 17, -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, - 2045, 1672, 1555, 1328, 1614, 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, - -769, -821, -617, 926, 934, 909, 1397, 3323, 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, - 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, 2291, 2115, 1283, -61, 137, - 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, 1552, - 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, - -1344, -794, 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, - 3449, 3186, 3153, 3121, 3056, 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, - 6, -26, -58, -90, -122, -122, -122, -122, 1516, 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, - 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, 953, 1160, 1111, 117, -363, - 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, 3091, - 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, - -79, -111, -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, - 1286, 1234, 1213, 1193, 1172, 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, - 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, 2798, 3007, 2705, 3106, 2996, 2962, 2928, - 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, -4, -36, -68, -100, - -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, - 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, - 2235, 2439, 2132, 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, - 2324, 2105, 1887, 1733, 811, -79, 55, 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, - 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, 1320, 1279, 1239, 1214, 1189, 1164, - 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, 1472, 2048, - 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, - 1754, 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, - 1852, 1692, 1532, 1494, 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, - 1064, 1030, 995, 996, 998, 935, 873, 878, 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, - 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, 1613, 1745, 1621, 1153, -83, - -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, 1464, - 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, - 979, 962, 945, 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, - 1488, 1844, 1688, 2171, 2142, 1249, 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, - 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, 1542, 1501, 1460, 1429, 1398, 1367, 1336, - 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, 969, 950, 931, 912, 862, - 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, 1200, - 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, - -192, 1552, 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, - 1151, 1128, 1091, 1054, 1017, 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, - 640, 680, 528, 376, 376, 888, 1464, 1016, 637, 258, 295, 332, 297, 262, 227, 192, 167, 142, - 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, 1521, 1498, 1475, 1452, - 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, 972, - 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, - 1690, 1576, 1710, 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, - -52, -82, -112, -128, -144, -144, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, - 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, - 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, 358, 333, 308, - 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, - 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, - 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, - 576, 564, 552, 644, 480, 108, 504, 159, 326, 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, - 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, - 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, - 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, - 294, 301, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, - -120, -120, -120, 1536, 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, - 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, - 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, 308, 275, 242, 209, 176, - 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, + -32, 16, 64, 272, -32, -16, 0, -16, -32, -24, -16, -8, 0, -24, -48, -72, -96, -90, -84, -78, -72, -98, -124, -150, + -176, -192, -208, -224, -240, -256, -272, -288, -304, -304, -304, -304, -304, -336, -368, -400, -432, -450, -468, + -486, -504, -522, -540, -558, -576, -598, -620, -642, -664, -686, -708, -730, -752, -768, -784, -800, -816, -816, + -816, -816, 68, 120, 172, 240, 53, 55, 57, 43, 30, 32, 34, 36, 38, 20, 2, -16, -34, -36, -38, -40, -42, -68, -94, + -120, -146, -149, -152, -186, -221, -228, -234, -241, -247, -255, -262, -269, -276, -303, -330, -357, -384, -404, + -424, -444, -463, -485, -507, -529, -550, -573, -595, -617, -639, -674, -708, -710, -712, -733, -754, -775, -796, + -796, -796, -796, 168, 224, 281, 209, 138, 126, 115, 103, 92, 88, 84, 80, 76, 64, 52, 40, 28, 18, 8, -2, -12, -38, + -64, -90, -116, -106, -95, -148, -201, -199, -196, -193, -190, -205, -219, -233, -247, -270, -292, -314, -336, + -358, -379, -401, -422, -448, -473, -499, -524, -547, -569, -592, -614, -661, -707, -690, -672, -698, -724, -750, + -776, -776, -776, -776, 268, 312, 357, 274, 191, 181, 172, 163, 154, 144, 134, 124, 114, 108, 102, 80, 58, 56, 54, + 52, 50, 24, -2, -44, -86, -63, -38, -94, -150, -138, -126, -146, -165, -171, -176, -198, -219, -237, -254, -271, + -288, -312, -335, -358, -381, -411, -440, -469, -498, -521, -544, -567, -589, -648, -707, -670, -632, -663, -694, + -725, -756, -756, -756, -756, 368, 401, 434, 339, 244, 237, 230, 223, 216, 200, 184, 168, 152, 152, 152, 120, 88, + 94, 100, 106, 112, 86, 60, 2, -56, -19, 19, -40, -98, -77, -55, -98, -140, -137, -133, -162, -190, -203, -215, + -228, -240, -265, -290, -315, -340, -373, -406, -439, -472, -495, -518, -541, -564, -635, -706, -649, -592, -628, + -664, -700, -736, -736, -736, -736, 404, 557, 454, 383, 313, 532, 239, 282, 326, 304, 282, 260, 238, 246, 254, 118, + 238, 196, 154, 32, -90, -88, -86, 76, 238, 242, 247, 28, -191, -232, -273, -123, 29, -63, -155, -151, -146, -164, + -181, -199, -216, -241, -266, -291, -315, -346, -377, -408, -438, -448, -457, -498, -539, -597, -654, -503, -608, + -625, -642, -675, -708, -708, -708, -708, 440, 713, 475, 428, 382, 827, 249, 342, 436, 408, 380, 352, 324, 340, + 356, -140, -124, 42, 208, 214, 220, 250, 280, 406, 532, 504, 476, 352, 229, 125, 21, -147, -314, -245, -176, -139, + -101, -124, -147, -170, -192, -217, -241, -266, -290, -319, -347, -376, -404, -400, -395, -455, -514, -558, -601, + -357, -624, -622, -620, -650, -680, -680, -680, -680, 604, 677, 495, 457, 419, 770, 354, 386, 418, 416, 414, 380, + 346, 258, -342, -302, -6, 288, 582, 604, 626, 588, 550, 688, 826, 829, 833, 724, 616, 482, 347, 181, 15, -139, + -293, -175, -57, -85, -113, -141, -168, -193, -217, -241, -265, -292, -318, -344, -370, -352, -334, -412, -489, + -487, -485, -403, -576, -587, -598, -625, -652, -652, -652, -652, 1280, 1154, 1028, 998, 968, 970, 460, 430, 400, + 424, 448, 408, 368, 432, -528, -208, 112, 534, 956, 994, 1032, 926, 820, 970, 1120, 1155, 1190, 1097, 1004, 839, + 674, 509, 344, 223, 102, 45, -12, -45, -78, -111, -144, -168, -192, -216, -240, -264, -288, -312, -336, -304, -272, + -368, -464, -416, -368, -448, -528, -552, -576, -600, -624, -624, -624, -624, 770, 671, 573, 554, 536, 629, 467, + 464, 462, 492, 523, 490, 457, 281, -406, -101, 204, 599, 995, 1310, 1370, 1297, 1225, 1296, 1368, 1433, 1498, 1403, + 1308, 1185, 1062, 875, 688, 586, 485, 304, 123, -83, -32, -77, -122, -175, -227, -200, -172, -194, -217, -239, + -261, -315, -368, -326, -283, -361, -438, -452, -465, -515, -565, -583, -601, -617, -633, -633, 772, 701, 630, 623, + 616, 545, 474, 499, 524, 561, 599, 572, 546, 131, -283, 6, 296, 665, 1034, 1627, 1708, 1669, 1630, 1623, 1616, + 1711, 1806, 1709, 1612, 1531, 1450, 1241, 1032, 950, 869, 563, 258, -120, 15, -43, -100, -181, -262, -183, -103, + -124, -145, -166, -186, -325, -464, -283, -102, -305, -508, -455, -402, -478, -554, -566, -578, -610, -642, -642, + 774, 730, 687, 675, 664, 620, 577, 581, 586, 598, 610, 590, 571, -147, -97, 209, 516, 794, 1073, 1575, 1822, 1976, + 1875, 1869, 1864, 1989, 2114, 2015, 1916, 1877, 1838, 1607, 1376, 1266, 1156, 902, 137, -61, -3, -121, -238, -124, + -9, -70, -131, -166, -201, -221, -239, -272, -304, -129, -209, -298, -386, -427, -467, -937, -895, -549, -459, + -667, -619, -619, 776, 760, 744, 728, 712, 696, 680, 664, 648, 635, 622, 609, 596, -425, 90, 413, 736, 924, 1112, + 1524, 1936, 2284, 2120, 2116, 2112, 2267, 2422, 2321, 2220, 2223, 2226, 1973, 1720, 1582, 1444, 1242, 16, -2, -20, + 58, 136, -66, -267, -213, -158, -208, -257, -275, -292, -218, -144, 26, -316, -290, -264, -142, -20, 2956, 2860, + -788, -852, -980, -596, -596, 826, 807, 789, 770, 752, 749, 747, 744, 742, 677, 613, 517, 421, -286, 288, 574, 860, + 1081, 1303, 1668, 2034, 2313, 2337, 2344, 2352, 2453, 2554, 2575, 2596, 2507, 2418, 2249, 2080, 1961, 1843, 925, 7, + 40, 74, 748, 654, 451, 250, 48, -154, -108, -62, -112, -161, -29, 104, 44, -271, -275, -278, -842, 1411, 3007, + 3323, 327, -1389, -1197, -493, -493, 876, 855, 834, 813, 792, 803, 814, 825, 836, 720, 605, 681, 758, 110, 487, + 735, 984, 1239, 1494, 1813, 2132, 2343, 2554, 2573, 2592, 2639, 2686, 2829, 2972, 2791, 2610, 2525, 2440, 2341, + 2243, 608, -2, 83, 169, 1438, 1172, 969, 767, 565, 363, 248, 134, 52, -30, -95, -160, -193, -226, -259, -292, 763, + -742, 2290, 1738, -1118, -902, -902, -390, -390, 926, 902, 879, 855, 832, 824, 817, 809, 802, 763, 724, 397, 2375, + 970, 589, 848, 1108, 1396, 1685, 1941, 2198, 2468, 2739, 2785, 2832, 2889, 2946, 3179, 2900, 3059, 2962, 2849, + 2736, 2897, 2546, -365, 309, 206, 871, 1760, 1626, 1471, 1316, 1146, 975, 844, 714, 599, 485, 350, 216, 145, 75, + -356, 750, 2687, 529, -1067, -615, -835, -799, -847, -383, -383, 976, 950, 924, 898, 872, 846, 820, 794, 768, 806, + 844, 882, 1432, 2598, 692, 962, 1232, 1554, 1876, 2070, 2264, 2594, 2924, 2998, 3072, 3139, 3206, 3273, 2316, 3071, + 3314, 3173, 3032, 2941, 1826, -57, 108, 73, 1574, 2083, 2080, 1973, 1866, 1727, 1588, 1441, 1294, 1147, 1000, 796, + 592, 484, 376, 828, 256, 772, -248, -72, -408, 984, -184, -536, -376, -376, 1026, 997, 969, 941, 913, 888, 864, + 840, 816, 762, 709, 768, 1339, 2269, 2176, 1411, 1414, 1677, 1941, 2188, 2436, 2730, 3023, 3157, 3291, 3350, 3409, + 3420, 2152, 3001, 3594, 3403, 3213, 3234, 951, 12, 97, -302, 2883, 2756, 2373, 2312, 2252, 2144, 2036, 1861, 1687, + 1545, 1403, 1254, 1106, 974, 842, 1229, 1105, 21, 217, 46, -381, 1912, 3181, 2765, 301, -723, 1076, 1045, 1015, + 984, 954, 931, 909, 886, 864, 719, 575, 654, 1246, 1685, 3149, 1604, 1596, 1801, 2006, 2307, 2609, 2866, 3123, + 3316, 3510, 3561, 3613, 3568, 1988, 2931, 3875, 3634, 3394, 3527, 76, 81, 86, 859, 3168, 2917, 2666, 2652, 2639, + 2561, 2484, 2282, 2081, 1943, 1806, 1713, 1621, 1464, 1308, 1119, 931, 550, 170, -92, -354, 1560, 3986, 1970, -558, + -558, 1126, 1093, 1060, 1027, 995, 974, 953, 932, 912, 900, 888, -340, 1249, 1757, 2521, 2421, 1810, 2036, 2263, + 2522, 2781, 3066, 3351, 3443, 3537, 3612, 3688, 3476, 2496, 3021, 3803, 3833, 3863, 2844, 33, 134, -21, 2100, 3197, + 3062, 2927, 2944, 2961, 2882, 2804, 2607, 2410, 2309, 2209, 2140, 2071, 1842, 1614, 1329, 1044, 663, 283, 10, -263, + -488, -201, -201, -457, -457, 1176, 1141, 1106, 1071, 1036, 1017, 998, 979, 960, 825, 690, 203, 740, 1573, 1894, + 3239, 2024, 2272, 2521, 2737, 2954, 3010, 3067, 3315, 3564, 3664, 3764, 3384, 3004, 3112, 3732, 3776, 3820, 1905, + -10, 187, -128, 3341, 3226, 3207, 3188, 3236, 3284, 3204, 3124, 2932, 2740, 2676, 2612, 2567, 2522, 2221, 1920, + 1539, 1158, 777, 396, 112, -172, -488, -292, -324, -356, -356, 1194, 1162, 1131, 1100, 1069, 1047, 1026, 973, 920, + 969, 507, 381, 767, 1428, 1834, 2800, 2486, 2347, 2722, 2920, 3118, 3290, 3462, 3266, 3071, 3157, 3243, 3521, 3800, + 3674, 3548, 3710, 3873, 874, 179, 92, 517, 3440, 3291, 3334, 3377, 3403, 3430, 3361, 3292, 3174, 3057, 3004, 2951, + 2761, 2572, 2223, 1874, 1554, 1235, 884, 533, 220, -93, -470, -335, -319, -303, -303, 1212, 1184, 1157, 1129, 1102, + 1078, 1055, 967, 880, 1114, 325, 559, 794, 1284, 1775, 2361, 2948, 2423, 2923, 3103, 3283, 3314, 3346, 3474, 3602, + 3674, 3747, 3659, 3572, 3980, 3877, 3901, 3926, -157, 368, 253, 1674, 3795, 3356, 3461, 3566, 3571, 3577, 3518, + 3460, 3417, 3375, 3332, 3290, 2956, 2623, 2225, 1828, 1570, 1313, 991, 670, 328, -14, -452, -378, -314, -250, -250, + 1230, 1206, 1182, 1158, 1135, 1109, 1083, 1025, 968, 779, 78, 481, 885, 1284, 1939, 2466, 3250, 2627, 2772, 3158, + 3543, 3514, 3486, 3729, 3717, 3775, 3834, 3781, 3728, 3934, 3885, 3916, 2667, 92, 333, 174, 2831, 3702, 3549, 3588, + 3627, 3643, 3659, 3643, 3628, 3676, 3724, 3436, 3149, 2847, 2545, 2275, 2006, 1730, 1454, 1114, 775, 388, 1, -402, + -293, -309, -325, -325, 1248, 1228, 1208, 1188, 1168, 1140, 1112, 1084, 1056, 700, 344, 660, 976, 1284, 2104, 2316, + 3040, 2319, 2110, 2189, 2268, 2691, 3114, 3729, 3832, 3877, 3922, 3903, 3884, 3889, 3894, 3931, 1408, 341, 298, 95, + 3988, 3609, 3742, 3715, 3688, 3715, 3742, 3769, 3796, 3679, 3562, 3285, 3008, 2738, 2468, 2326, 2184, 1890, 1596, + 1238, 880, 448, 16, -352, -208, -304, -400, -400, 1296, 1284, 1272, 1260, 1249, 1165, 1081, 1093, 1106, 232, 382, + 677, 971, 973, 1232, 834, 693, 538, 639, 565, 490, 563, 637, -106, 944, 2358, 3773, 3795, 4074, 3964, 3855, 4337, + 212, 204, 197, 1342, 4023, 3813, 3860, 3811, 3762, 3766, 3771, 3776, 3781, 3604, 3427, 3202, 2977, 2838, 2699, + 2400, 2101, 1982, 1607, 1280, 954, 545, -120, -321, -266, -314, -362, -362, 1344, 1340, 1337, 1333, 1330, 1190, + 1051, 1103, 1156, 20, 933, 950, 967, 919, 872, 889, 906, 805, 705, 733, 761, 740, 720, 668, 616, 328, 40, 1640, + 3752, 3784, 3816, 3208, 40, 580, 97, 2589, 4058, 4018, 3979, 3907, 3836, 3818, 3801, 3784, 3767, 3529, 3292, 3375, + 3458, 3706, 3954, 3754, 3555, 2843, 1619, 1067, 516, 386, -256, -290, -324, -324, -324, -324, 1392, 1364, 1337, + 1310, 1283, 1247, 1212, 969, 982, 1424, 1100, 1079, 1058, 1073, 1088, 815, 799, 1056, 803, 773, 743, 645, 547, 769, + 736, 649, 563, 332, 102, 1939, 4033, 1982, 444, 332, -36, 4076, 4093, 4047, 4001, 3955, 3910, 3870, 3831, 3791, + 3752, 3806, 3861, 3836, 3811, 3678, 3545, 3380, 3216, 3639, 3807, 2342, 1134, 1091, 24, -387, -286, -286, -286, + -286, 1440, 1389, 1338, 1287, 1236, 1305, 1374, 1091, 1320, 1037, 1267, 1208, 1150, 715, 281, 486, 1204, 1564, 901, + 1325, 1750, 1830, 1911, 1383, 344, 459, 574, 817, 548, 351, 666, 757, 336, 340, 856, 4028, 4128, 4076, 4024, 4004, + 3984, 3922, 3861, 3799, 3738, 3828, 3919, 3785, 3652, 3394, 3137, 3007, 2878, 2900, 2923, 3105, 3800, 1284, 1328, + 28, -248, -248, -248, -248, 1456, 1407, 1358, 1309, 1261, 1210, 1159, 1444, 1218, 1265, 33, -655, -1343, -977, + -355, 394, 1401, 1753, 1338, 1739, 2140, 2575, 3010, 3524, 3784, 2536, 1033, 265, 522, 440, 615, 629, 388, 403, + 2211, 4051, 4099, 4078, 4058, 3990, 3922, 3910, 3898, 3886, 3875, 3805, 3736, 3554, 3373, 3126, 2880, 2585, 2291, + 2026, 1762, 2650, 3026, 2303, 2092, 665, -250, -250, -250, -250, 1472, 1425, 1379, 1332, 1286, 1371, 1457, 1030, + -932, -1834, -1712, -1238, -763, -621, 33, 815, 1598, 1943, 1776, 2153, 2531, 2808, 3085, 3362, 3640, 4102, 4052, + 3042, 496, 530, 564, 502, 440, 211, 3055, 3818, 4070, 4081, 4093, 3976, 3860, 3898, 3936, 3974, 4013, 3783, 3553, + 3323, 3094, 2858, 2623, 2420, 2217, 1921, 1626, 915, 2764, 250, 296, 22, -252, -252, -252, -252, 1488, 1443, 1399, + 1371, 1343, 1308, 1530, -408, -1834, -1590, -1089, -813, -536, -281, 485, 1172, 1859, 2132, 2150, 2503, 2857, 3105, + 3352, 3536, 3720, 3875, 3775, 4298, 4054, 2123, 449, 502, 556, 547, 26, 2113, 3945, 4116, 4031, 3946, 3862, 3838, + 3814, 3982, 3894, 3488, 3338, 3140, 2943, 2622, 2302, 2030, 1758, 1496, 1234, 1260, 774, -347, -188, -189, -190, + -222, -254, -254, 1504, 1462, 1420, 1410, 1400, 1246, 1604, -1334, -1712, -1089, -978, -643, -308, 59, 938, 1529, + 2120, 2322, 2524, 2854, 3184, 3402, 3620, 3710, 3800, 3905, 4010, 4019, 4028, 3973, 334, 503, 672, 627, 582, 409, + 236, 2359, 3970, 3917, 3864, 3778, 3692, 3990, 3776, 3194, 3124, 2958, 2792, 2387, 1982, 1641, 1300, 1071, 842, 69, + -192, -176, -160, -144, -128, -192, -256, -256, 1546, 1496, 1447, 1430, 1413, 1627, 1330, -2103, -1184, -820, -712, + -396, -80, 406, 1148, 1714, 2280, 2486, 2692, 2995, 3297, 3467, 3638, 3712, 3787, 3916, 4045, 3918, 4047, 3098, + 357, 656, 699, 198, 466, 381, 297, 376, 200, 1815, 3431, 3568, 3961, 4114, 3755, 3310, 3121, 2804, 2487, 2209, + 1931, 1189, 447, 37, -117, -255, -136, -111, -86, -109, -132, -196, -260, -260, 1588, 1531, 1475, 1450, 1426, 1497, + 33, -1592, -1168, -807, -446, -149, 148, 753, 1358, 1899, 2440, 2650, 2861, 3136, 3411, 3533, 3656, 3715, 3774, + 3927, 4080, 3817, 4066, 2223, 380, 553, 214, 3610, 350, 354, 358, 442, 526, 226, -74, 286, 1158, 1678, 1686, 1634, + 1582, 1114, 646, 239, -168, -31, 107, -228, -51, -66, -80, -46, -12, -74, -136, -200, -264, -264, 1630, 1566, 1502, + 1470, 1439, 1591, -817, -1401, -960, -634, -308, -14, 280, 876, 1472, 1972, 2472, 2718, 2966, 3229, 3492, 3583, + 3674, 3701, 3729, 3794, 3859, 4148, 4181, 708, 563, 418, 1297, 3917, 4234, 2198, 163, 267, 372, 348, 325, 108, 147, + 186, -31, 38, 107, 96, 85, 61, 37, -163, -106, -126, 111, 875, -152, -93, -34, -87, -140, -204, -268, -268, 1672, + 1601, 1530, 1491, 1452, 1685, -1666, -1209, -752, -461, -170, 121, 412, 999, 1586, 2045, 2504, 2787, 3071, 3322, + 3574, 3633, 3693, 3688, 3684, 3661, 3638, 3711, 2760, 473, 746, 283, 2380, 4225, 4022, 4043, 4064, 2141, 218, 215, + 212, 186, 160, 230, 300, 234, 168, 102, 36, -117, -269, 218, 1218, 2025, 2833, 1048, -224, -140, -56, -100, -144, + -208, -272, -272, 1626, 1607, 1589, 1459, 1585, 692, -1480, -1108, -736, -452, -168, 116, 400, 806, 1468, 1938, + 2408, 2703, 2999, 3327, 3655, 3569, 3483, 3620, 3759, 3440, 3121, 1602, 851, 820, 533, 438, 3415, 4252, 4066, 4055, + 4045, 4084, 4124, 2995, 1867, 1068, 269, 62, -145, -38, 69, 704, 1339, 2183, 3028, 2816, 2861, 2953, 2790, -349, + 96, -19, -134, -137, -140, -204, -268, -268, 1580, 1614, 1649, 1427, 1718, -300, -1293, -1007, -720, -443, -166, + 111, 388, 613, 1350, 1831, 2312, 2620, 2928, 3076, 3225, 3249, 3273, 3297, 3322, 3475, 3628, 3333, 1502, 655, 832, + 593, 3938, 4024, 4110, 4068, 4026, 3980, 3934, 3984, 4034, 3998, 3962, 3990, 4018, 3786, 3554, 3610, 3666, 3459, + 3253, 3111, 2969, 2858, 2236, -210, -96, -154, -212, -174, -136, -200, -264, -264, 1662, 1653, 1644, 1619, 1851, + -988, -1267, -986, -704, -402, -100, 10, 120, 404, 944, 1580, 2216, 2504, 2793, 2873, 2954, 2977, 2999, 3086, 3173, + 3238, 3303, 3576, 521, 554, 587, 1772, 3981, 4019, 4058, 4032, 4007, 3971, 3936, 3948, 3961, 3920, 3879, 3806, + 3989, 3866, 3743, 3636, 3529, 3375, 3222, 3069, 2916, 2907, 1362, -119, -64, -113, -162, -147, -132, -196, -260, + -260, 1744, 1692, 1640, 1556, 1472, -1932, -1240, -964, -688, -361, -34, 165, 364, 707, 1050, 1585, 2120, 2389, + 2658, 2671, 2684, 2705, 2726, 2875, 3024, 3001, 2978, 2283, 564, 965, 342, 2951, 4024, 4015, 4006, 3997, 3988, + 3963, 3938, 3913, 3888, 3842, 3796, 3622, 3960, 3946, 3932, 3662, 3392, 3292, 3192, 3028, 2864, 2956, 488, -28, + -32, -72, -112, -120, -128, -192, -256, -256, 1834, 1635, 1692, 1718, 207, -1664, -1230, -925, -619, -285, 50, 256, + 719, 706, 948, 1127, 1562, 1845, 2129, 2236, 2344, 2448, 2551, 2655, 2759, 2739, 2719, 1563, 663, 623, 327, 4207, + 3992, 4013, 4034, 3991, 3948, 3923, 3898, 3873, 3848, 3774, 3701, 3484, 3523, 3726, 3929, 3812, 3695, 3604, 3513, + 3407, 3300, 3349, -441, -232, -22, -48, -74, -100, -126, -174, -222, -222, 1924, 1578, 1745, 1880, -1057, -1395, + -1220, -885, -550, -208, 134, 92, 563, 449, 847, 669, 1004, 1302, 1600, 1802, 2005, 2191, 2377, 2435, 2494, 2477, + 2460, 843, 763, 794, 1337, 3928, 3960, 4011, 4062, 3985, 3908, 3883, 3858, 3833, 3808, 3707, 3607, 3603, 3599, + 3506, 3414, 3706, 3998, 3916, 3835, 3786, 3737, 2207, -346, 77, -12, -24, -36, -80, -124, -156, -188, -188, 1598, + 1585, 1830, 2154, -1874, -1414, -1210, -558, -417, -516, -102, 440, 214, 192, 682, 435, 702, 870, 1039, 1224, 1409, + 1710, 2011, 2039, 2069, 2087, 1849, 795, 766, 596, 2475, 3953, 3896, 3929, 3962, 3915, 3868, 3843, 3818, 3793, + 3768, 3688, 3609, 3577, 3546, 3462, 3379, 3312, 3245, 3364, 3485, 3189, 2893, 857, -155, 33, -34, -48, -62, -108, + -154, -154, -154, -154, 1784, 1849, 1915, 892, -1666, -1177, -1711, -742, -796, -823, 175, -748, 378, 191, 517, + 202, 400, 439, 479, 646, 814, 1229, 1645, 1644, 1644, 1697, 1239, 748, 770, 399, 3613, 3978, 3832, 3847, 3862, + 3845, 3828, 3803, 3778, 3753, 3728, 3669, 3611, 3552, 3494, 3419, 3345, 3174, 3004, 2813, 2623, 2592, 2562, -237, + 37, -10, -56, -72, -88, -136, -184, -152, -120, -120, 1802, 1900, 2255, -286, -1291, -1130, -713, -393, -327, -387, + -445, 200, -179, 436, 27, -46, -118, 203, 270, 384, 498, 686, 874, 998, 1123, 1253, 1128, 794, 717, 1161, 3654, + 3843, 3776, 3789, 3802, 3783, 3764, 3617, 3726, 3691, 3656, 3596, 3536, 3476, 3417, 3341, 3266, 3078, 2891, 2687, + 2484, 2617, 1982, -29, 8, 12, 18, -18, -54, 6, 66, -30, -126, -126, 1820, 1696, 2084, -2232, -1939, -571, -1763, + -1835, -1394, -462, -553, -388, -223, -1111, -462, -37, -124, -32, -451, -134, 183, 143, 104, 353, 602, 809, 1017, + 841, 665, 1924, 3696, 3708, 3720, 3731, 3742, 3721, 3700, 3431, 3674, 3629, 3584, 3523, 3462, 3401, 3341, 3264, + 3187, 2982, 2778, 2562, 2346, 2386, 891, -77, -21, 35, 92, 36, -20, -108, -196, -164, -132, -132, 1710, 1955, 1177, + -2834, -956, -2076, -2173, -365, -1885, -1353, -821, -1600, -844, -1250, -887, -653, -674, -555, -436, -636, -325, + -304, -282, -101, -175, 493, 906, 871, 580, 2767, 3674, 3653, 3632, 3657, 3682, 3627, 3572, 3437, 3558, 3535, 3512, + 3450, 3388, 3326, 3264, 3186, 3108, 2902, 2697, 2500, 2304, 2219, 343, 179, 270, 154, 38, -6, -50, -110, -170, + -154, -138, -138, 1600, 1959, -242, -2667, -2020, -2557, -2582, -1455, 696, 316, 960, 2052, 2120, 1940, 1760, 1292, + 824, -310, -932, -1394, -832, -750, -668, -298, -440, 434, 796, 902, 496, 3610, 3652, 3598, 3544, 3583, 3622, 3533, + 3444, 3443, 3442, 3441, 3440, 3377, 3314, 3251, 3188, 3109, 3030, 2823, 2616, 2439, 2262, 2053, -204, 179, 50, 17, + -16, -48, -80, -112, -144, -144, -144, -144, 1956, 1852, -2091, -3026, -1145, 322, 2045, 1672, 1555, 1328, 1614, + 1916, 1706, 1622, 1282, 1502, 1466, 1301, 1393, 940, -792, -1548, -769, -821, -617, 926, 934, 909, 1397, 3323, + 3456, 3446, 3436, 3393, 3351, 3388, 3426, 3374, 3321, 3445, 3313, 3265, 3217, 3153, 3090, 2998, 2906, 2686, 2467, + 2291, 2115, 1283, -61, 137, 79, 37, -5, -37, -69, -101, -133, -133, -133, -133, 1800, 1746, 669, 1992, 1779, 1665, + 1552, 1727, 1390, 1317, 1245, 1269, 1293, 1560, 1316, 1456, 1084, 1121, 1158, 971, 1297, 726, -869, -1344, -794, + 1419, 1072, 917, 2299, 3036, 3261, 3294, 3328, 3204, 3080, 3244, 3409, 3305, 3201, 3449, 3186, 3153, 3121, 3056, + 2992, 2887, 2783, 2550, 2318, 2143, 1968, 513, 82, 95, 108, 57, 6, -26, -58, -90, -122, -122, -122, -122, 1516, + 1832, 1637, 1905, 1406, 1344, 1283, 1590, 1641, 1466, 1292, 1277, 1263, 1386, 1254, 1314, 1118, 1116, 1115, 906, + 953, 1160, 1111, 117, -363, 807, 698, 701, 2240, 3325, 2362, 2934, 3252, 2998, 2745, 2924, 3103, 3156, 2953, 3277, + 3091, 3057, 3024, 2959, 2894, 2776, 2659, 2414, 2169, 2075, 1981, 255, 65, 69, 73, 45, 17, -15, -47, -79, -111, + -111, -111, -111, 1744, 1662, 1581, 1563, 1546, 1536, 1527, 1453, 1380, 1359, 1339, 1286, 1234, 1213, 1193, 1172, + 1152, 1112, 1073, 1097, 1122, 826, 1043, 1067, 1092, 964, 837, 741, 2182, 2078, 2487, 2831, 2664, 2793, 2923, 2860, + 2798, 3007, 2705, 3106, 2996, 2962, 2928, 2862, 2796, 2666, 2536, 2278, 2020, 1751, 1482, -259, 48, 43, 38, 33, 28, + -4, -36, -68, -100, -100, -100, -100, 1684, 1640, 1596, 1584, 1573, 1543, 1514, 1452, 1391, 1360, 1329, 1282, 1236, + 1213, 1191, 1168, 1146, 1107, 1070, 1064, 1058, 920, 1038, 996, 955, 924, 895, 881, 1635, 1679, 2235, 2439, 2132, + 2451, 2772, 2580, 2644, 2714, 2528, 2742, 2701, 2828, 2699, 2570, 2442, 2383, 2324, 2105, 1887, 1733, 811, -79, 55, + 63, 71, 47, 23, -7, -37, -67, -97, -113, -129, -129, 1624, 1618, 1612, 1606, 1601, 1551, 1501, 1451, 1402, 1361, + 1320, 1279, 1239, 1214, 1189, 1164, 1140, 1103, 1067, 1031, 995, 1014, 1034, 926, 818, 885, 953, 1021, 1089, 1024, + 1472, 2048, 2112, 2110, 2109, 2044, 2491, 2421, 2352, 2379, 2406, 2694, 2471, 2279, 2088, 2100, 2113, 1933, 1754, + 1715, 140, 101, 62, 83, 104, 61, 18, -10, -38, -66, -94, -126, -158, -158, 1724, 1788, 1852, 1692, 1532, 1494, + 1456, 1418, 1381, 1346, 1311, 1276, 1241, 1214, 1187, 1160, 1134, 1099, 1064, 1030, 995, 996, 998, 935, 873, 878, + 883, 793, 702, 657, 1125, 1832, 2284, 1193, 1638, 1796, 2209, 2320, 2176, 2239, 2047, 2560, 2562, 1892, 1734, 1673, + 1613, 1745, 1621, 1153, -83, -7, 69, 71, 73, 43, 13, -13, -39, -65, -91, -139, -187, -187, 1824, 1702, 1580, 1522, + 1464, 1438, 1412, 1386, 1360, 1331, 1302, 1273, 1244, 1215, 1186, 1157, 1128, 1095, 1062, 1029, 996, 979, 962, 945, + 928, 871, 814, 821, 828, 803, 1290, 1617, 1944, 2068, 1168, 1292, 1416, 1708, 1488, 1844, 1688, 2171, 2142, 1249, + 1380, 1503, 1626, 1045, -48, 79, 206, 141, 76, 59, 42, 25, 8, -16, -40, -64, -88, -152, -216, -216, 1688, 1615, + 1542, 1501, 1460, 1429, 1398, 1367, 1336, 1310, 1284, 1258, 1232, 1206, 1180, 1154, 1128, 1093, 1058, 1023, 988, + 969, 950, 931, 912, 862, 812, 794, 776, 596, 672, 972, 1272, 330, 924, 1038, 1152, 1298, 1444, 1910, 1608, 1532, + 1200, 516, 344, 260, 176, 252, 72, 123, 174, 129, 84, 65, 46, 27, 8, -18, -44, -70, -96, -144, -192, -192, 1552, + 1528, 1504, 1480, 1456, 1420, 1384, 1348, 1312, 1289, 1266, 1243, 1220, 1197, 1174, 1151, 1128, 1091, 1054, 1017, + 980, 959, 938, 917, 896, 853, 810, 767, 724, 645, 566, 583, 600, 640, 680, 528, 376, 376, 888, 1464, 1016, 637, + 258, 295, 332, 297, 262, 227, 192, 167, 142, 117, 92, 71, 50, 29, 8, -20, -48, -76, -104, -136, -168, -168, 1544, + 1521, 1498, 1475, 1452, 1411, 1370, 1329, 1288, 1268, 1248, 1228, 1208, 1188, 1168, 1148, 1128, 1089, 1050, 1011, + 972, 949, 926, 903, 880, 844, 808, 772, 736, 678, 620, 610, 600, 614, 628, 546, 464, 238, 2060, 1690, 1576, 1710, + 308, 314, 320, 286, 252, 218, 184, 163, 142, 121, 100, 77, 54, 31, 8, -22, -52, -82, -112, -128, -144, -144, 1536, + 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, + 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 612, 160, 1916, 1112, 223, + 358, 333, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, + 1514, 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, + 964, 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 644, 480, 108, 504, 159, 326, + 317, 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, + 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, + 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, + 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, 1536, 1514, + 1492, 1470, 1448, 1402, 1356, 1310, 1264, 1247, 1230, 1213, 1196, 1179, 1162, 1145, 1128, 1087, 1046, 1005, 964, + 939, 914, 889, 864, 835, 806, 777, 748, 711, 674, 637, 600, 588, 576, 564, 552, 420, 288, 348, 408, 351, 294, 301, + 308, 275, 242, 209, 176, 159, 142, 125, 108, 83, 58, 33, 8, -24, -56, -88, -120, -120, -120, -120, ]; diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp/src/codecs/rfx/header_messages.rs index 071ec0b8..863332e2 100644 --- a/ironrdp/src/codecs/rfx/header_messages.rs +++ b/ironrdp/src/codecs/rfx/header_messages.rs @@ -57,10 +57,7 @@ impl<'a> PduBufferParsing<'a> for SyncPdu { pub struct CodecVersionsPdu; impl CodecVersionsPdu { - pub fn from_buffer_consume_with_header( - buffer: &mut &[u8], - header: BlockHeader, - ) -> Result { + pub fn from_buffer_consume_with_header(buffer: &mut &[u8], header: BlockHeader) -> Result { let mut buffer = buffer.split_to(header.data_length); let codecs_number = buffer.read_u8()?; @@ -78,8 +75,7 @@ impl<'a> PduBufferParsing<'a> for CodecVersionsPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::CodecVersions)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::CodecVersions)?; Self::from_buffer_consume_with_header(buffer, header) } @@ -105,10 +101,7 @@ impl<'a> PduBufferParsing<'a> for CodecVersionsPdu { pub struct ChannelsPdu(pub Vec); impl ChannelsPdu { - pub fn from_buffer_consume_with_header( - buffer: &mut &[u8], - header: BlockHeader, - ) -> Result { + pub fn from_buffer_consume_with_header(buffer: &mut &[u8], header: BlockHeader) -> Result { let mut buffer = buffer.split_to(header.data_length); let channels_number = usize::from(buffer.read_u8()?); @@ -132,8 +125,7 @@ impl<'a> PduBufferParsing<'a> for ChannelsPdu { type Error = RfxError; fn from_buffer_consume(buffer: &mut &[u8]) -> Result { - let header = - BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Channels)?; + let header = BlockHeader::from_buffer_consume_with_expected_type(buffer, BlockType::Channels)?; Self::from_buffer_consume_with_header(buffer, header) } @@ -155,13 +147,7 @@ impl<'a> PduBufferParsing<'a> for ChannelsPdu { } fn buffer_length(&self) -> usize { - BLOCK_HEADER_SIZE - + 1 - + self - .0 - .iter() - .map(PduBufferParsing::buffer_length) - .sum::() + BLOCK_HEADER_SIZE + 1 + self.0.iter().map(PduBufferParsing::buffer_length).sum::() } } diff --git a/ironrdp/src/codecs/rfx/image_processing.rs b/ironrdp/src/codecs/rfx/image_processing.rs index 7e9d2534..3c5769d8 100644 --- a/ironrdp/src/codecs/rfx/image_processing.rs +++ b/ironrdp/src/codecs/rfx/image_processing.rs @@ -68,9 +68,7 @@ impl<'a> ImageRegion<'a> { let dst = &mut other.data[((y + dst_point.y) * dst_step)..]; for x in 0..width { - let color = self - .pixel_format - .read_color(&src[((x + src_point.x) * src_byte)..])?; + let color = self.pixel_format.read_color(&src[((x + src_point.x) * src_byte)..])?; other .pixel_format .write_color(color, &mut dst[((x + dst_point.x) * dst_byte)..])?; diff --git a/ironrdp/src/codecs/rfx/image_processing/tests.rs b/ironrdp/src/codecs/rfx/image_processing/tests.rs index 2bab6324..b4d034cc 100644 --- a/ironrdp/src/codecs/rfx/image_processing/tests.rs +++ b/ironrdp/src/codecs/rfx/image_processing/tests.rs @@ -27,10 +27,7 @@ fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() }; source_region.copy_to(&mut destination_region).unwrap(); - assert_eq!( - CONVERTED_TO_XRGB_BUFFER.as_ref(), - destination_data.as_slice() - ); + assert_eq!(CONVERTED_TO_XRGB_BUFFER.as_ref(), destination_data.as_slice()); } #[test] @@ -67,3082 +64,2599 @@ fn image_region_correctly_writes_image_with_same_formats_and_different_sizes() { } const SOURCE_IN_RGBX_BUFFER: [u8; 64 * 64 * 4] = [ - 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, - 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, - 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, - 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, - 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, - 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, - 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, - 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, - 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, - 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, - 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, - 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, - 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, - 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, - 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, - 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, - 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, - 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, - 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, - 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, - 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, - 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, - 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, - 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, - 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, - 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, - 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, - 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, - 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, - 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, - 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, - 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, - 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, - 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, - 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, - 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, - 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, - 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, - 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, - 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, - 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, - 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, - 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, - 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, - 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, - 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, - 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, - 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, - 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, - 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, - 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, - 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, - 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, - 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, - 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, - 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, - 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, - 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, - 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, - 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, - 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, - 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, - 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, - 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, - 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, - 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, - 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, - 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, - 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, - 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, - 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, - 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, - 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, - 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, - 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, - 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, - 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, - 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, - 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, - 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, - 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, - 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, - 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, - 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, - 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, - 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, - 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, - 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, - 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, - 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, - 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, - 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, - 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, - 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, - 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, - 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, - 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, - 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, - 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, - 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, - 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, - 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, - 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, - 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, - 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, - 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, - 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, - 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, - 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, - 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, - 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, - 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, - 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, - 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, - 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, - 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, - 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, - 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, - 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, - 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, - 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, - 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, - 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, - 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, - 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, - 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, - 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, - 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, - 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, - 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, - 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, - 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, - 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, - 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, - 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, - 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, - 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, - 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, - 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, - 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, - 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, - 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, - 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, - 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, - 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, - 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, - 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, - 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, - 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, - 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, - 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, - 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, - 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, - 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, - 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, - 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, - 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, - 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, - 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, - 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, - 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, - 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, - 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, - 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, - 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, - 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, - 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, - 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, - 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, - 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, - 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, - 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, - 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, - 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, - 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, - 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, - 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, - 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, - 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, - 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, - 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, - 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, - 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, - 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, - 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, - 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, - 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, - 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, - 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, - 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, - 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, - 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, - 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, - 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, - 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, - 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, - 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, - 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, - 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, - 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, - 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, - 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, - 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, - 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, - 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, - 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, - 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, - 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, - 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, - 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, - 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, - 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, - 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, - 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, - 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, - 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, - 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, - 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, - 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, - 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, - 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, - 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, - 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, - 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, - 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, - 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, - 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, - 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, - 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, - 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, - 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, - 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, - 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, - 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, - 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, - 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, - 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, - 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, - 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, - 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, - 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, - 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, - 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, - 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, - 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, - 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, - 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, - 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, - 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, - 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, - 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, - 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, - 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, - 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, - 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, - 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, - 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, - 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, - 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, - 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, - 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, - 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, - 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, - 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, - 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, - 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, - 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, - 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, - 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, - 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, - 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, - 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, - 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, - 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, - 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, - 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, - 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, - 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, - 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, - 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, - 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, - 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, - 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, - 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, - 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, - 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, - 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, - 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, - 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, - 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, - 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, - 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, - 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, - 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, - 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, - 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, - 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, - 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, - 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, - 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, - 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, - 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, - 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, - 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, - 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, - 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, - 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, - 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, - 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, - 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, - 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, - 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, - 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, - 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, - 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, - 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, - 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, - 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, - 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, - 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, - 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, - 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, - 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, - 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, - 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, - 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, - 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, - 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, - 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, - 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, - 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, - 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, - 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, - 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, - 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, - 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, - 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, - 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, - 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, - 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, - 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, - 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, - 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, - 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, - 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, - 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, - 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, - 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, - 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, - 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, - 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, - 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, - 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, - 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, - 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, - 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, - 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, - 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, - 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, - 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, - 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, - 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, - 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, - 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, - 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, - 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, - 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, - 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, - 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, - 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, - 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, - 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, - 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, - 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, - 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, - 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, - 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, - 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, - 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, - 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, - 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, - 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, - 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, - 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, - 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, - 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, - 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, - 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, - 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, - 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, - 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, - 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, - 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, - 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, - 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, - 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, - 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, - 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, - 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, - 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, - 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, - 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, - 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, - 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, - 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, - 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, - 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, - 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, - 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, - 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, - 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, - 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, - 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, - 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, - 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, - 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, - 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, - 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, - 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, - 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, - 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, - 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, - 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, - 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, - 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, - 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, - 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, - 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, - 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, - 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, - 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, - 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, - 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, - 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, - 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, - 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, - 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, - 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, - 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, - 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, - 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, - 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, - 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, - 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, - 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, - 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, - 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, - 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, - 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, - 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, - 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, - 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, - 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, - 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, - 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, - 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, - 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, - 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, - 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, - 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, - 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, - 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, - 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, - 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, - 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, - 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, - 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, - 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, - 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, - 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, - 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, - 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, - 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, - 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, - 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, - 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, - 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, - 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, - 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, - 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, - 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, - 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, - 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, - 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, - 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, - 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, - 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, - 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, - 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, - 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, - 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, - 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, - 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, - 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, - 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, - 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, - 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, - 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, - 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, - 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, - 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, - 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, - 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, - 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, - 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, - 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, - 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, - 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, - 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, - 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, - 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, - 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, - 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, - 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, - 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, - 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, - 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, - 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, - 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, - 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, - 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, - 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, - 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, - 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, - 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, - 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, - 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, - 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, - 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, - 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, - 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, - 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, - 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, - 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, - 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, - 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, - 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, - 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, - 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, - 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, - 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, - 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, - 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, - 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, - 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, - 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, - 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, - 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, - 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, - 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, - 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, - 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, - 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, - 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, - 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, - 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, - 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, - 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, - 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, - 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, - 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, - 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, - 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, - 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, - 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, - 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, - 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, - 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, - 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, - 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, - 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, - 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, - 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, - 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, - 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, - 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, - 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, - 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, - 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, - 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, - 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, - 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, - 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, - 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, - 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, - 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, - 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, - 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, - 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, - 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, - 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, - 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, - 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, - 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, - 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, - 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, - 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, - 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, - 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, - 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, - 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, - 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, - 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, - 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, - 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, - 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, - 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, - 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, - 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, - 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, - 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, - 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, - 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, - 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, - 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, - 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, - 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, - 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, - 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, - 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, - 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, - 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, - 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, - 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, - 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, - 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, - 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, - 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, - 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, - 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, - 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, - 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, - 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, - 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, - 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, - 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, - 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, - 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, - 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, - 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, - 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, - 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, - 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, - 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, - 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, - 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, - 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, - 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, - 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, - 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, - 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, - 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, - 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, - 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, - 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, - 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, - 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, - 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, - 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, - 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, - 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, - 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, - 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, - 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, - 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, - 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, - 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, - 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, - 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, - 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, - 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, - 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, - 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, - 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, - 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, - 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, - 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, - 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, - 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, - 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, - 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, - 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, - 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, - 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, - 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, - 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, - 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, - 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, - 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, - 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, - 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, - 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, - 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, - 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, - 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, - 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, - 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, - 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, - 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, - 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, - 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, - 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, - 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, - 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, - 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, - 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, - 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, - 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, - 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, - 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, - 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, - 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, - 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, - 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, - 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, - 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, - 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, - 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, - 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, - 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, - 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, - 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, - 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, - 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, - 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, - 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, - 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, - 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, - 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, - 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, - 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, - 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, - 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, - 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, - 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, - 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, - 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, - 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, - 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, - 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, - 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, - 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, - 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, - 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, - 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, - 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, - 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, - 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, - 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, - 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, - 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, - 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, - 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, - 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, - 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, - 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, - 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, - 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, - 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, - 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, - 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, - 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, - 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, - 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, - 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, - 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, - 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, - 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, - 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, - 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, - 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, - 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, - 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, - 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, - 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, - 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, - 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, - 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, - 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, - 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, - 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, - 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, - 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, - 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, - 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, - 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, - 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, - 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, - 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, - 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, - 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, - 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, - 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, - 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, - 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, - 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, - 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, - 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, - 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, - 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, - 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, - 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, - 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, - 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, - 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, - 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, - 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, - 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, - 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, - 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, - 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, - 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, - 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, - 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, - 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, - 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, - 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, - 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, - 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, - 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, - 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, - 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, - 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, - 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, - 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, - 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, - 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, - 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, - 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, - 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, - 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, - 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, - 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, - 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, - 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, - 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, - 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, - 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, - 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, - 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, - 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, - 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, - 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, - 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, - 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, - 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, - 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, - 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, - 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, - 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, - 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, - 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, - 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, - 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, - 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, - 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, - 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, - 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, - 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, - 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, - 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, - 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, - 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, - 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, - 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, - 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, - 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, - 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, - 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, - 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, - 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, - 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, - 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, - 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, - 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, + 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, + 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, + 0xDF, 0x9A, 0x1F, 0xFF, 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, + 0xFF, 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, 0xE0, 0x93, + 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, + 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, + 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, + 0xFF, 0xDA, 0x8C, 0x12, 0xFF, 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, + 0x11, 0xFF, 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, 0xD9, + 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0C, 0xFF, + 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, + 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, + 0x9E, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, + 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, + 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, + 0xFF, 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8E, + 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, 0xDB, 0x8D, 0x12, 0xFF, 0xDB, + 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, + 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, + 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, + 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xE2, + 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, 0xE2, 0xA1, 0x26, 0xFF, + 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, + 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, + 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, + 0x9D, 0x20, 0xFF, 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, 0xDC, 0x96, 0x1C, + 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, + 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, + 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, + 0xDD, 0x8E, 0x15, 0xFF, 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, + 0xFF, 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x86, + 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, + 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, + 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, + 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, 0xE5, + 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, 0xE3, 0x9E, 0x24, 0xFF, + 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, + 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, + 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, + 0x97, 0x1C, 0xFF, 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x92, 0x19, + 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, + 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, + 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, + 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xE7, 0xAA, + 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, 0xE4, 0xA5, 0x28, 0xFF, 0xE5, + 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, + 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, + 0xFF, 0xE7, 0xA0, 0x24, 0xFF, 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, + 0x18, 0xFF, 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, 0x7D, + 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, 0xAF, 0x87, 0x55, 0xFF, + 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, + 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, + 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, + 0x90, 0x18, 0xFF, 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, 0xE0, 0x87, 0x11, + 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, + 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, + 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, + 0xE5, 0xA9, 0x2F, 0xFF, 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, + 0xFF, 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, 0xE8, 0xA4, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, 0xF6, 0xAD, 0x12, 0xFF, 0xF8, + 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, + 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, + 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, + 0x8D, 0xFF, 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, 0xE3, + 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, 0xE2, 0x94, 0x1B, 0xFF, + 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, + 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, + 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, + 0x8A, 0x13, 0xFF, 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xE2, 0xAB, 0x33, + 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, + 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, + 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, + 0xA7, 0x8A, 0x4D, 0xFF, 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, + 0xFF, 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, 0x28, 0x6F, + 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, 0x24, 0x64, 0xF1, 0xFF, 0x21, + 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, + 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, + 0xFF, 0xE5, 0x98, 0x17, 0xFF, 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, + 0x18, 0xFF, 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, + 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, 0xE0, 0x8A, 0x10, 0xFF, + 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, + 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, + 0xAD, 0x2C, 0xFF, 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, 0xE7, 0xA9, 0x2B, + 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, + 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, + 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, + 0x2B, 0x7B, 0xF5, 0xFF, 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, + 0xFF, 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, 0xF0, 0xA7, + 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE4, 0x95, 0x1D, 0xFF, 0xE2, + 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, + 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, + 0xFF, 0xE1, 0x8E, 0x12, 0xFF, 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, + 0x15, 0xFF, 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, + 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xE6, 0xC0, 0x5F, 0xFF, + 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, + 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, + 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, + 0x4F, 0xF1, 0xFF, 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, 0x37, 0x8B, 0xF9, + 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, + 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, + 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, + 0xE3, 0x98, 0x1E, 0xFF, 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, + 0xFF, 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE0, 0x91, + 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, + 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, + 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, + 0x2F, 0xFF, 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, 0xE6, + 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, 0xEE, 0xAF, 0x28, 0xFF, + 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, + 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, + 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, + 0x98, 0xF8, 0xFF, 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, 0x62, 0x6C, 0xBE, + 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, + 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, + 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, + 0xE1, 0x91, 0x15, 0xFF, 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, + 0xFF, 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, 0xDC, 0x89, + 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, + 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, + 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, + 0xFF, 0xF1, 0xAE, 0x34, 0xFF, 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, + 0xEC, 0xFF, 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, 0x3E, + 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, 0x4C, 0xA1, 0xFA, 0xFF, + 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, + 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, + 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, + 0x97, 0x25, 0xFF, 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, 0xE4, 0x95, 0x1C, + 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, + 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, + 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEC, 0x88, 0x03, 0xFF, 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, + 0xFF, 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, 0xEA, 0xB0, + 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, 0xF8, 0xB6, 0x22, 0xFF, 0x44, + 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, + 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, + 0xFF, 0x53, 0xAE, 0xF8, 0xFF, 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, + 0xFA, 0xFF, 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, 0x50, + 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, 0xEF, 0xA5, 0x1A, 0xFF, + 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, + 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, + 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, + 0x98, 0x1C, 0xFF, 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xF0, 0x8C, 0x0C, + 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, + 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, + 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, + 0xEF, 0xB1, 0x34, 0xFF, 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, + 0xFF, 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, 0x4C, 0xB4, + 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, 0x60, 0xB7, 0xFA, 0xFF, 0x64, + 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, + 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, + 0xFF, 0x6E, 0x94, 0xDF, 0xFF, 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, + 0x4A, 0xFF, 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, 0xFE, + 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, 0xE4, 0x91, 0x18, 0xFF, + 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, + 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, + 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, + 0x8A, 0x0B, 0xFF, 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, + 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, + 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, + 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, + 0x69, 0xC3, 0xF9, 0xFF, 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, + 0xFF, 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, 0x6C, 0xB4, + 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, 0xF3, 0xA1, 0x13, 0xFF, 0xEF, + 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, + 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, + 0xFF, 0xFF, 0x93, 0x18, 0xFF, 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, + 0x1B, 0xFF, 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, 0xA0, + 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, 0x00, 0x77, 0x33, 0xFF, + 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, + 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, + 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, + 0xB3, 0x32, 0xFF, 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, 0x5A, 0xBB, 0xF8, + 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, + 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, + 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, + 0xDB, 0xAB, 0x47, 0xFF, 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, + 0xFF, 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, 0x25, 0xAD, + 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, 0x53, 0x9E, 0x51, 0xFF, 0x6D, + 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, + 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, + 0xFF, 0x11, 0x7F, 0x35, 0xFF, 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, + 0x0F, 0xFF, 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, 0xEC, + 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x3C, 0xFF, + 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, + 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, + 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, + 0xD5, 0xFA, 0xFF, 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, 0x8F, 0xCF, 0xFB, + 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, + 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, + 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, + 0x1B, 0xB8, 0x75, 0xFF, 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, + 0xFF, 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, 0x4C, 0xAC, + 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, 0x14, 0x86, 0x49, 0xFF, 0x8B, + 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, + 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, + 0x50, 0xFF, 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, 0x3C, + 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, 0x65, 0xBF, 0xF9, 0xFF, + 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, + 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, + 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, + 0x9F, 0x11, 0xFF, 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, 0x44, 0xD2, 0x99, + 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, + 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, + 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, + 0x65, 0xB9, 0x80, 0xFF, 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, + 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, + 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, + 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, + 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, + 0xFF, 0x65, 0xBC, 0xF8, 0xFF, 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, + 0xF9, 0xFF, 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, 0x62, + 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, 0xAB, 0xE5, 0xF7, 0xFF, + 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, + 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, + 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, + 0xD0, 0x9B, 0xFF, 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, 0x2B, 0xA9, 0x64, + 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, + 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, + 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, + 0xEF, 0xBA, 0x3F, 0xFF, 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, + 0xFF, 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, 0x49, 0xA5, + 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, + 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, + 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, + 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, + 0x15, 0xFF, 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, 0x7B, + 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, 0x67, 0xE5, 0xC6, 0xFF, + 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, + 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, + 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, + 0xC4, 0x9F, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xF0, 0xBE, 0x41, + 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, + 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, + 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, + 0x78, 0xC9, 0xFA, 0xFF, 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, + 0xFF, 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, 0x6E, 0xCB, + 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, + 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, + 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, + 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, + 0xB8, 0xFF, 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, 0x48, + 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, 0x2C, 0xAC, 0x66, 0xFF, + 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, + 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, + 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, + 0xBE, 0x42, 0xFF, 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, 0x57, 0xB6, 0xF7, + 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, + 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, + 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, + 0xD7, 0xF8, 0xFC, 0xFF, 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, + 0xFF, 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, 0xA6, 0xEF, + 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, 0x9E, 0xEF, 0xE0, 0xFF, 0x92, + 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, + 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, + 0xFF, 0x35, 0xBC, 0x77, 0xFF, 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, + 0x57, 0xFF, 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEF, + 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, 0xF1, 0xC1, 0x43, 0xFF, + 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, + 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, + 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, + 0xDB, 0xFB, 0xFF, 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, 0xCA, 0xFA, 0xFF, + 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, + 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, + 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, + 0xB5, 0xF3, 0xE8, 0xFF, 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, + 0xFF, 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, 0x50, 0xDC, + 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, 0x32, 0xB4, 0x6E, 0xFF, 0x2E, + 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, + 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, + 0xFF, 0xF1, 0xC3, 0x46, 0xFF, 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, + 0x3C, 0xFF, 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, 0x38, + 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, 0xAE, 0xD7, 0xF7, 0xFF, + 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, + 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, + 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, + 0xFC, 0xFC, 0xFF, 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, 0xCA, 0xF6, 0xEE, + 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, + 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, + 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, + 0x3B, 0xC2, 0x7F, 0xFF, 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, + 0xFF, 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF1, 0xC5, + 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, 0xF2, 0xC3, 0x45, 0xFF, 0xF1, + 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, + 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, + 0xFF, 0x72, 0xC2, 0xFF, 0xFF, 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, + 0xFF, 0xFF, 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0xCD, + 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, 0xDD, 0xF5, 0xFB, 0xFF, + 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, + 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, + 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, + 0xF9, 0xF1, 0xFF, 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, 0x50, 0xE1, 0xA4, + 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, + 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, + 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, + 0xF2, 0xC5, 0x48, 0xFF, 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, + 0xFF, 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, 0x32, 0x83, + 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, 0xB5, 0xDC, 0xF3, 0xFF, 0x97, + 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, + 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, + 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, + 0xFF, 0xFF, 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, 0xD6, + 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, 0xD9, 0xF8, 0xF2, 0xFF, + 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, + 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, + 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, + 0xCB, 0x87, 0xFF, 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xF2, 0xC7, 0x4E, + 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, + 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, + 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, + 0xFF, 0xC0, 0x26, 0xFF, 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, + 0xFF, 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, 0xF4, 0xBA, + 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, + 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, + 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, + 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, + 0xF5, 0xFF, 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, 0x93, + 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, 0x4D, 0xE6, 0xA6, 0xFF, + 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, + 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, + 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, + 0xCA, 0x4D, 0xFF, 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, 0xFF, 0xC7, 0x28, + 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, + 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, + 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, + 0xF2, 0xC9, 0x6F, 0xFF, 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, + 0xFF, 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, + 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, + 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, + 0xFF, 0xDB, 0xFE, 0xED, 0xFF, 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, + 0x83, 0xFF, 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, 0xEB, + 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xF4, 0xCA, 0x52, 0xFF, + 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, + 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, + 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, + 0xBB, 0x34, 0xFF, 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, 0xF2, 0xBA, 0x2F, + 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, + 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, + 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, + 0xEB, 0xFD, 0xFD, 0xFF, 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, + 0xFF, 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, 0xE9, 0xFD, + 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, + 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, + 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, + 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, + 0x4B, 0xFF, 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, 0xFC, + 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, 0xF3, 0xC4, 0x45, 0xFF, + 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, + 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, + 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, + 0xB5, 0x3E, 0xFF, 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, + 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, + 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, + 0x8A, 0xF3, 0xD2, 0xFF, 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, + 0xFF, 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, 0xF2, 0x95, + 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, + 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, + 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, + 0xFF, 0xCD, 0x83, 0x17, 0xFF, 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, + 0x2E, 0xFF, 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, 0xF5, + 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, 0xFF, 0xFE, 0xE2, 0xFF, + 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, + 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, + 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, + 0xFF, 0xFD, 0xFF, 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, 0xAB, 0xF8, 0xE2, + 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, + 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, + 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF1, 0x96, 0x0E, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, + 0xFF, 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, 0xC6, 0x74, + 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, 0xCC, 0x84, 0x0B, 0xFF, 0xCE, + 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, + 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, + 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, + 0xBB, 0xFF, 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, 0xEE, + 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, + 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, + 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, + 0xE5, 0xB7, 0xFF, 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, 0xF0, 0x95, 0x0F, + 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, + 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, + 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, + 0xCE, 0x82, 0x08, 0xFF, 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, + 0xFF, 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, 0xF8, 0xEC, + 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, + 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, + 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, + 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, + 0xFC, 0xFF, 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, 0xEB, + 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, 0x9D, 0xED, 0xD2, 0xFF, + 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, + 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, + 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, + 0x95, 0x10, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, 0xBB, 0x5C, 0x00, + 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, + 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, + 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, + 0xFB, 0xFC, 0xDF, 0xFF, 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, + 0xFF, 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, 0xF5, 0xB1, + 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, + 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, + 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, + 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, + 0x9E, 0xFF, 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, 0xFF, + 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xF3, 0x98, 0x15, 0xFF, + 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, + 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, + 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, + 0x97, 0x04, 0xFF, 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, 0xF9, 0xF7, 0xBF, + 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, + 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, + 0xF2, 0xAD, 0x22, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, + 0xFF, 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xD3, 0xF8, + 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, 0x67, 0xE2, 0xCB, 0xFF, 0x52, + 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, + 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, + 0xFF, 0xEF, 0x9B, 0x14, 0xFF, 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, + 0x11, 0xFF, 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF7, + 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, 0xC8, 0x72, 0x05, 0xFF, + 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, + 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, + 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, + 0xFD, 0xDD, 0xFF, 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, 0xEB, 0xAB, 0x17, + 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, + 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, + 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, + 0xCB, 0xBC, 0x60, 0xFF, 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, + 0xFF, 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF4, 0x9B, + 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, 0xF1, 0x99, 0x14, 0xFF, 0xEF, + 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, + 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, + 0xFF, 0xC6, 0x67, 0x03, 0xFF, 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, + 0x07, 0xFF, 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, 0xFA, + 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, 0xFA, 0xFA, 0xCD, 0xFF, + 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, + 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, + 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, + 0xD8, 0x8B, 0xFF, 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, 0xF3, 0xA2, 0x0D, + 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, + 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, + 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, + 0xEE, 0x9B, 0x16, 0xFF, 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, + 0xFF, 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, 0xF7, 0xCC, + 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, 0xD6, 0x84, 0x06, 0xFF, 0xDC, + 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, + 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, + 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, + 0xDB, 0xFF, 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, 0xF6, + 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, 0xF7, 0xDA, 0x99, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, + 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, + 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, + 0xA3, 0x16, 0xFF, 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, 0xF9, 0x97, 0x0B, + 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, + 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, + 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, + 0xCE, 0x75, 0x02, 0xFF, 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, + 0xFF, 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, 0xFB, 0xE5, + 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, + 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, + 0xFF, 0xEB, 0xAF, 0x27, 0xFF, 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, + 0xFF, 0xFF, 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, 0xE6, + 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, 0xF7, 0x9F, 0x06, 0xFF, + 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, + 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, + 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, + 0x9A, 0x13, 0xFF, 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, 0xFE, 0xD6, 0x59, + 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, + 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, + 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, + 0xFE, 0xF2, 0xB0, 0xFF, 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, + 0xFF, 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, 0xF3, 0xCC, + 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, + 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, + 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, + 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, + 0xFB, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, 0x57, + 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, 0xEF, 0x9A, 0x17, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, + 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, + 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, + 0x7B, 0x03, 0xFF, 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, 0xFB, 0xE3, 0x74, + 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, + 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, + 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, + 0xF3, 0xCE, 0x73, 0xFF, 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, + 0xFF, 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xDE, 0xFF, + 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, + 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, + 0xFF, 0xFB, 0x9A, 0x10, 0xFF, 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, + 0x13, 0xFF, 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xFC, + 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, 0xF5, 0xCE, 0x53, 0xFF, + 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, + 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, + 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, + 0xE8, 0x99, 0xFF, 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, 0xF3, 0xB4, 0x27, + 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, + 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, + 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, + 0x9F, 0xFE, 0xF5, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, + 0xFF, 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, 0x4F, 0xE8, + 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, 0xF4, 0x9D, 0x17, 0xFF, 0xF1, + 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, + 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, + 0xFF, 0xF9, 0xD7, 0x59, 0xFF, 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, + 0x0C, 0xFF, 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, 0xF5, + 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, 0xF7, 0xD6, 0x4B, 0xFF, + 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, + 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, + 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, 0xCE, 0xFD, 0xFD, + 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, + 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, + 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, + 0xF6, 0x99, 0x07, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, + 0xFF, 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xFA, 0xD9, + 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, + 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, + 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, + 0xFF, 0xEC, 0xC5, 0x13, 0xFF, 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, + 0x65, 0xFF, 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, 0xFD, + 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, 0xF6, 0xB9, 0x31, 0xFF, + 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, + 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, + 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, + 0xF9, 0xFE, 0xFF, 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, 0xC9, 0xF9, 0xFC, + 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, + 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, + 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, + 0xFF, 0xE2, 0x6D, 0xFF, 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, + 0xFF, 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, 0xE0, 0xAA, + 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, + 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, + 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, + 0xFF, 0xFB, 0xBA, 0x30, 0xFF, 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, + 0xF9, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, 0xD9, + 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xBB, 0xFD, 0xFD, 0xFF, + 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, + 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, + 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, + 0x9E, 0x1A, 0xFF, 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xFD, 0xD3, 0x66, + 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, + 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, + 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, + 0xE0, 0xAD, 0x16, 0xFF, 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, + 0xFF, 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, 0xF7, 0xD1, + 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xF4, 0xB8, 0x35, 0xFF, 0xFF, + 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, + 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, + 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, + 0xFC, 0xFF, 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, 0x47, + 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, 0x05, 0xDD, 0xFF, 0xFF, + 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, + 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, + 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, + 0x86, 0x3B, 0xFF, 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, 0xD5, 0x95, 0x21, + 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, + 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, + 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, + 0xF9, 0xBA, 0x31, 0xFF, 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, + 0xFF, 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, 0xC1, 0xFC, + 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, 0xA3, 0xFC, 0xFC, 0xFF, 0x95, + 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, + 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, + 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, + 0x17, 0xFF, 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, 0xF8, + 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF9, 0xD7, 0x64, 0xFF, + 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, + 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, + 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, + 0x9C, 0x1E, 0xFF, 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, 0xEF, 0xB9, 0x23, + 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, + 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, + 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, + 0x9C, 0xFC, 0xFC, 0xFF, 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, + 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, 0x3A, 0xE6, + 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, 0x8F, 0xB0, 0x77, 0xFF, 0xFD, + 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, + 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, + 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, + 0x00, 0xFF, 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, 0xBB, + 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, 0xCC, 0x74, 0x21, 0xFF, + 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, + 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, + 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, + 0xBB, 0x38, 0xFF, 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, 0x9F, 0xFA, 0xF8, + 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, + 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, + 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, + 0x00, 0xD9, 0xEE, 0xFF, 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, + 0xFF, 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, 0xF2, 0x99, + 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, + 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, + 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, + 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, + 0x54, 0xFF, 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, 0xDE, + 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, 0xDC, 0x98, 0x00, 0xFF, + 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, + 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, + 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, + 0xFA, 0xF9, 0xFF, 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, 0x27, 0xE3, 0xF0, + 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, + 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, + 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, + 0xFF, 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, 0xF5, 0xD6, + 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, 0xF7, 0xD3, 0x61, 0xFF, 0xF8, + 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, + 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, + 0xFF, 0xD5, 0x84, 0x01, 0xFF, 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, + 0x34, 0xFF, 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, 0x83, + 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, 0x77, 0xFA, 0xF8, 0xFF, + 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, + 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, + 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, + 0xB9, 0x9D, 0xFF, 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, 0xF4, 0x99, 0x13, + 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, + 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, + 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, + 0xF7, 0xC9, 0x47, 0xFF, 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, 0xFA, 0xCB, + 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, + 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, + 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, + 0xFF, 0x62, 0xF6, 0xF5, 0xFF, 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, + 0xFE, 0xFF, 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, 0x35, + 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, 0x18, 0xD8, 0xEC, 0xFF, + 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, + 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, + 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, + 0x99, 0x14, 0xFF, 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, 0xFC, 0xD3, 0x58, + 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, + 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, + 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, + 0xE2, 0xA1, 0x24, 0xFF, 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, + 0xFF, 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, 0x5F, 0xF5, + 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, 0x50, 0xF4, 0xF2, 0xFF, 0x4E, + 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, + 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, + 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, + 0x0E, 0xFF, 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, 0xF8, + 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, + 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, + 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, + 0xC8, 0x49, 0xFF, 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, 0xFD, 0xC3, 0x40, + 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, + 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, + 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, + 0x3F, 0xEC, 0xED, 0xFF, 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, + 0xFF, 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, 0x20, 0xEC, + 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, 0x16, 0xC9, 0xEB, 0xFF, 0x0B, + 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, + 0xFF, 0xF9, 0x9A, 0x16, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, + 0x15, 0xFF, 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, 0xFA, + 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCC, 0x4D, 0xFF, + 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, + 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, + 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, 0x31, 0xD4, 0xD5, + 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, + 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, + 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, + 0x18, 0xCE, 0xE9, 0xFF, 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, + 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF9, 0x9F, + 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF7, + 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, + 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, + 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, + 0x47, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, + 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3B, 0xFF, + 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, + 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, + 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, + 0xD7, 0xCC, 0xFF, 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, 0x19, 0xD3, 0xDD, + 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, + 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, + 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, + 0xF7, 0x9B, 0x14, 0xFF, 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, + 0xFF, 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, 0xF8, 0xCF, + 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, + 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, + 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, + 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, + 0x38, 0xFF, 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, 0xFB, + 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, 0x36, 0xDD, 0xD3, 0xFF, + 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, + 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, + 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, + 0xC1, 0xE2, 0xFF, 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x15, + 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, + 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, + 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, + 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, + 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, + 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, + 0xFF, 0x84, 0xCB, 0x93, 0xFF, 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, + 0xB4, 0xFF, 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, 0x18, + 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, 0x03, 0xBD, 0xC7, 0xFF, + 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, + 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, + 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, + 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCE, 0x4F, + 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, + 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, + 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, + 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, + 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, 0xFA, 0xB7, + 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, + 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, + 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, + 0xFF, 0x8A, 0xAC, 0x59, 0xFF, 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, + 0x20, 0xFF, 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, 0xF6, + 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, + 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, + 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, + 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, + 0xCC, 0x48, 0xFF, 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, + 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, + 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, + 0xFA, 0xB5, 0x25, 0xFF, 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, + 0xFF, 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, 0xFA, 0xBE, + 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, + 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, + 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, + 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, + 0x13, 0xFF, 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF7, + 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, 0xF9, 0xCF, 0x4E, 0xFF, + 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, + 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, + 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, + 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, 0xFB, 0xB6, 0x33, + 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, + 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, + 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, + 0xF9, 0xAC, 0x1B, 0xFF, 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, + 0xFF, 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, 0xF8, 0xA1, + 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, + 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, + 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, + 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, + 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, + 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, + 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, + 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, 0xE6, 0xBB, 0x58, + 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, + 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, + 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, + 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, + 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, + 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, + 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, + 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, + 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, + 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, + 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, + 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, + 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, + 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, + 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, + 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, + 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, + 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, + 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, + 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, + 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, + 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, + 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, + 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, + 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, + 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, + 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, + 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, + 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, + 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, + 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, + 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, + 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, + 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, + 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, + 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, + 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, + 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, + 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, + 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, + 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, + 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, ]; const CONVERTED_TO_XRGB_BUFFER: [u8; 64 * 64 * 4] = [ - 0x00, 0x22, 0x9B, 0xDE, 0x00, 0x23, 0x9D, 0xE0, 0x00, 0x25, 0x9E, 0xE1, 0x00, 0x2B, 0xA5, 0xE8, - 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x22, 0x9C, 0xDF, 0x00, 0x22, 0x9C, 0xE0, 0x00, 0x22, 0x9C, 0xDF, - 0x00, 0x21, 0x9B, 0xDF, 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, - 0x00, 0x24, 0x9C, 0xDF, 0x00, 0x21, 0x9B, 0xE2, 0x00, 0x1D, 0x9B, 0xE5, 0x00, 0x1F, 0x9A, 0xE1, - 0x00, 0x21, 0x98, 0xDD, 0x00, 0x21, 0x99, 0xDE, 0x00, 0x20, 0x99, 0xDE, 0x00, 0x1F, 0x9A, 0xDF, - 0x00, 0x1F, 0x9A, 0xE0, 0x00, 0x1E, 0x99, 0xE0, 0x00, 0x1D, 0x99, 0xDF, 0x00, 0x1C, 0x98, 0xDF, - 0x00, 0x1B, 0x97, 0xDF, 0x00, 0x1E, 0x95, 0xDC, 0x00, 0x21, 0x93, 0xD8, 0x00, 0x1F, 0x93, 0xDC, - 0x00, 0x1C, 0x93, 0xE0, 0x00, 0x1A, 0x94, 0xDC, 0x00, 0x18, 0x95, 0xD8, 0x00, 0x1C, 0x91, 0xDB, - 0x00, 0x1F, 0x8E, 0xDE, 0x00, 0x1A, 0x90, 0xDE, 0x00, 0x16, 0x93, 0xDE, 0x00, 0x17, 0x92, 0xDF, - 0x00, 0x18, 0x91, 0xDF, 0x00, 0x17, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8E, 0xDE, - 0x00, 0x15, 0x8C, 0xDE, 0x00, 0x14, 0x8C, 0xDD, 0x00, 0x13, 0x8C, 0xDB, 0x00, 0x12, 0x8C, 0xDA, - 0x00, 0x11, 0x8C, 0xD9, 0x00, 0x11, 0x8B, 0xD9, 0x00, 0x11, 0x89, 0xD9, 0x00, 0x11, 0x88, 0xDA, - 0x00, 0x12, 0x87, 0xDA, 0x00, 0x11, 0x86, 0xDA, 0x00, 0x10, 0x86, 0xDA, 0x00, 0x10, 0x85, 0xD9, - 0x00, 0x0F, 0x84, 0xD9, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD8, 0x00, 0x0D, 0x82, 0xD8, - 0x00, 0x0C, 0x81, 0xD8, 0x00, 0x0C, 0x80, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD6, - 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, - 0x00, 0x24, 0x9F, 0xE0, 0x00, 0x27, 0xA0, 0xE1, 0x00, 0x29, 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE5, - 0x00, 0x24, 0x9E, 0xE0, 0x00, 0x24, 0x9E, 0xE1, 0x00, 0x24, 0x9E, 0xE1, 0x00, 0x23, 0x9E, 0xE1, - 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, - 0x00, 0x25, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x22, 0x9C, 0xE2, 0x00, 0x22, 0x9C, 0xE0, - 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x21, 0x9B, 0xE0, 0x00, 0x20, 0x9B, 0xE1, 0x00, 0x20, 0x9B, 0xE1, - 0x00, 0x1F, 0x9B, 0xE1, 0x00, 0x20, 0x9A, 0xDF, 0x00, 0x20, 0x99, 0xDE, 0x00, 0x1E, 0x98, 0xDE, - 0x00, 0x1D, 0x97, 0xDF, 0x00, 0x1D, 0x97, 0xDF, 0x00, 0x1E, 0x96, 0xDF, 0x00, 0x1D, 0x95, 0xDF, - 0x00, 0x1C, 0x94, 0xDE, 0x00, 0x1C, 0x94, 0xDF, 0x00, 0x1B, 0x93, 0xE0, 0x00, 0x1C, 0x93, 0xE0, - 0x00, 0x1D, 0x92, 0xE0, 0x00, 0x1B, 0x93, 0xDE, 0x00, 0x19, 0x94, 0xDC, 0x00, 0x19, 0x93, 0xDE, - 0x00, 0x19, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, - 0x00, 0x17, 0x8E, 0xDF, 0x00, 0x16, 0x8E, 0xDE, 0x00, 0x15, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDC, - 0x00, 0x12, 0x8D, 0xDB, 0x00, 0x12, 0x8C, 0xDB, 0x00, 0x12, 0x8B, 0xDB, 0x00, 0x12, 0x89, 0xDB, - 0x00, 0x12, 0x88, 0xDB, 0x00, 0x11, 0x87, 0xDB, 0x00, 0x11, 0x87, 0xDB, 0x00, 0x10, 0x86, 0xDB, - 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x83, 0xD9, - 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x82, 0xD8, 0x00, 0x0D, 0x81, 0xD8, 0x00, 0x0D, 0x80, 0xD7, - 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, - 0x00, 0x27, 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE3, 0x00, 0x2D, 0xA5, 0xE3, 0x00, 0x29, 0xA3, 0xE3, - 0x00, 0x26, 0xA1, 0xE2, 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA0, 0xE2, - 0x00, 0x24, 0xA0, 0xE2, 0x00, 0x25, 0x9F, 0xE2, 0x00, 0x25, 0x9F, 0xE3, 0x00, 0x25, 0x9E, 0xE3, - 0x00, 0x26, 0x9E, 0xE3, 0x00, 0x26, 0x9E, 0xE1, 0x00, 0x27, 0x9D, 0xDE, 0x00, 0x24, 0x9D, 0xDF, - 0x00, 0x22, 0x9E, 0xE1, 0x00, 0x21, 0x9D, 0xE2, 0x00, 0x20, 0x9D, 0xE3, 0x00, 0x20, 0x9D, 0xE3, - 0x00, 0x20, 0x9C, 0xE3, 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x24, 0x99, 0xDC, 0x00, 0x21, 0x98, 0xDE, - 0x00, 0x1F, 0x98, 0xE0, 0x00, 0x1D, 0x99, 0xE3, 0x00, 0x1B, 0x9A, 0xE7, 0x00, 0x1B, 0x98, 0xE1, - 0x00, 0x1C, 0x96, 0xDC, 0x00, 0x1D, 0x94, 0xE2, 0x00, 0x1F, 0x92, 0xE9, 0x00, 0x1D, 0x94, 0xE5, - 0x00, 0x1A, 0x96, 0xE2, 0x00, 0x1B, 0x95, 0xDE, 0x00, 0x1D, 0x95, 0xDA, 0x00, 0x1C, 0x94, 0xDD, - 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xE0, 0x00, 0x19, 0x91, 0xDF, - 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8F, 0xDE, 0x00, 0x15, 0x8E, 0xDD, - 0x00, 0x14, 0x8E, 0xDD, 0x00, 0x14, 0x8D, 0xDC, 0x00, 0x13, 0x8C, 0xDC, 0x00, 0x12, 0x8B, 0xDC, - 0x00, 0x12, 0x8A, 0xDB, 0x00, 0x11, 0x89, 0xDC, 0x00, 0x11, 0x88, 0xDC, 0x00, 0x10, 0x87, 0xDC, - 0x00, 0x10, 0x86, 0xDC, 0x00, 0x0E, 0x84, 0xDB, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD9, - 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x82, 0xD9, 0x00, 0x0D, 0x80, 0xD8, - 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, - 0x00, 0x29, 0xA6, 0xE4, 0x00, 0x2D, 0xA7, 0xE3, 0x00, 0x30, 0xA8, 0xE3, 0x00, 0x2C, 0xA6, 0xE3, - 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x26, 0xA3, 0xE3, 0x00, 0x26, 0xA2, 0xE4, - 0x00, 0x26, 0xA2, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA0, 0xE5, - 0x00, 0x26, 0x9F, 0xE5, 0x00, 0x25, 0xA0, 0xE4, 0x00, 0x24, 0xA0, 0xE4, 0x00, 0x24, 0x9F, 0xE3, - 0x00, 0x24, 0x9E, 0xE3, 0x00, 0x23, 0x9E, 0xE4, 0x00, 0x21, 0x9F, 0xE6, 0x00, 0x21, 0x9F, 0xE5, - 0x00, 0x22, 0x9E, 0xE3, 0x00, 0x13, 0xA4, 0xE5, 0x00, 0x1A, 0x9F, 0xE7, 0x00, 0x15, 0x9F, 0xE7, - 0x00, 0x10, 0xA0, 0xE7, 0x00, 0x11, 0x9F, 0xEF, 0x00, 0x12, 0x9E, 0xF7, 0x00, 0x1A, 0x99, 0xEC, - 0x00, 0x17, 0x9A, 0xE1, 0x00, 0x14, 0x9C, 0xE3, 0x00, 0x1C, 0x98, 0xE5, 0x00, 0x1C, 0x97, 0xE6, - 0x00, 0x1B, 0x96, 0xE6, 0x00, 0x1B, 0x98, 0xDB, 0x00, 0x1C, 0x96, 0xDF, 0x00, 0x1C, 0x95, 0xE0, - 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x93, 0xE1, 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, - 0x00, 0x19, 0x92, 0xE0, 0x00, 0x18, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, - 0x00, 0x16, 0x8F, 0xDF, 0x00, 0x15, 0x8E, 0xDE, 0x00, 0x14, 0x8D, 0xDD, 0x00, 0x13, 0x8C, 0xDD, - 0x00, 0x12, 0x8B, 0xDC, 0x00, 0x12, 0x8A, 0xDC, 0x00, 0x11, 0x89, 0xDD, 0x00, 0x11, 0x87, 0xDD, - 0x00, 0x10, 0x86, 0xDE, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0E, 0x84, 0xDA, - 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0F, 0x84, 0xDA, 0x00, 0x0E, 0x83, 0xDA, 0x00, 0x0E, 0x81, 0xDA, - 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, - 0x00, 0x2C, 0xAA, 0xE7, 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x33, 0xAA, 0xE2, 0x00, 0x2E, 0xA8, 0xE3, - 0x00, 0x28, 0xA5, 0xE4, 0x00, 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA4, 0xE5, - 0x00, 0x27, 0xA4, 0xE5, 0x00, 0x27, 0xA3, 0xE6, 0x00, 0x27, 0xA2, 0xE6, 0x00, 0x27, 0xA1, 0xE7, - 0x00, 0x27, 0xA1, 0xE7, 0x00, 0x25, 0xA2, 0xE8, 0x00, 0x22, 0xA3, 0xE9, 0x00, 0x24, 0xA0, 0xE7, - 0x00, 0x27, 0x9E, 0xE6, 0x00, 0x25, 0x9F, 0xE7, 0x00, 0x22, 0xA0, 0xE8, 0x00, 0x18, 0xA3, 0xF4, - 0x00, 0x0D, 0xA7, 0xFF, 0x00, 0x1A, 0xA5, 0xDD, 0x00, 0x54, 0x8D, 0xBA, 0x00, 0x6E, 0x83, 0x9C, - 0x00, 0x88, 0x79, 0x7D, 0x00, 0x8C, 0x79, 0x7B, 0x00, 0x91, 0x79, 0x79, 0x00, 0x7E, 0x7A, 0x94, - 0x00, 0x55, 0x87, 0xAF, 0x00, 0x21, 0x9B, 0xD6, 0x00, 0x04, 0xA3, 0xFD, 0x00, 0x0F, 0x9D, 0xF4, - 0x00, 0x1B, 0x96, 0xEB, 0x00, 0x1B, 0x9A, 0xD9, 0x00, 0x1B, 0x98, 0xE4, 0x00, 0x1C, 0x96, 0xE3, - 0x00, 0x1C, 0x95, 0xE2, 0x00, 0x1C, 0x94, 0xE2, 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x94, 0xE1, - 0x00, 0x1B, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xE0, 0x00, 0x18, 0x90, 0xE1, - 0x00, 0x18, 0x8F, 0xE1, 0x00, 0x16, 0x8F, 0xE0, 0x00, 0x15, 0x8E, 0xDF, 0x00, 0x14, 0x8D, 0xDE, - 0x00, 0x12, 0x8C, 0xDC, 0x00, 0x12, 0x8B, 0xDD, 0x00, 0x12, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xDF, - 0x00, 0x11, 0x87, 0xE0, 0x00, 0x0F, 0x85, 0xDD, 0x00, 0x0D, 0x83, 0xDA, 0x00, 0x0E, 0x85, 0xDB, - 0x00, 0x10, 0x87, 0xDC, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0F, 0x84, 0xDB, 0x00, 0x0E, 0x82, 0xDB, - 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, - 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x35, 0xAF, 0xE8, 0x00, 0x33, 0xAB, 0xE3, 0x00, 0x2F, 0xA9, 0xE5, - 0x00, 0x2A, 0xA8, 0xE6, 0x00, 0x35, 0xAD, 0xE8, 0x00, 0x25, 0xA6, 0xE7, 0x00, 0x28, 0xA7, 0xE7, - 0x00, 0x2B, 0xA8, 0xE7, 0x00, 0x2D, 0xA6, 0xE5, 0x00, 0x2E, 0xA4, 0xE4, 0x00, 0x2B, 0xA4, 0xE6, - 0x00, 0x29, 0xA4, 0xE8, 0x00, 0x2A, 0xA4, 0xE5, 0x00, 0x2C, 0xA5, 0xE1, 0x00, 0x10, 0xA9, 0xEF, - 0x00, 0x12, 0xAD, 0xF6, 0x00, 0x22, 0xA2, 0xF8, 0x00, 0x60, 0x91, 0xA5, 0x00, 0xA5, 0x75, 0x5C, - 0x00, 0xEB, 0x59, 0x14, 0x00, 0xFF, 0x48, 0x0C, 0x00, 0xFA, 0x55, 0x03, 0x00, 0xFF, 0x59, 0x0F, - 0x00, 0xFF, 0x5D, 0x1A, 0x00, 0xFF, 0x60, 0x16, 0x00, 0xF9, 0x64, 0x11, 0x00, 0xFF, 0x54, 0x0F, - 0x00, 0xFF, 0x4A, 0x0C, 0x00, 0xFA, 0x49, 0x17, 0x00, 0xF5, 0x47, 0x23, 0x00, 0x8D, 0x72, 0x7E, - 0x00, 0x26, 0x9D, 0xD9, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0x1D, 0x96, 0xE1, 0x00, 0x17, 0x98, 0xE9, - 0x00, 0x1C, 0x97, 0xE3, 0x00, 0x1A, 0x97, 0xE3, 0x00, 0x18, 0x97, 0xE4, 0x00, 0x19, 0x96, 0xE3, - 0x00, 0x1B, 0x94, 0xE2, 0x00, 0x1A, 0x93, 0xE1, 0x00, 0x19, 0x93, 0xE0, 0x00, 0x18, 0x92, 0xE1, - 0x00, 0x17, 0x91, 0xE1, 0x00, 0x16, 0x90, 0xE0, 0x00, 0x15, 0x8F, 0xDF, 0x00, 0x14, 0x8E, 0xDE, - 0x00, 0x13, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDE, 0x00, 0x13, 0x8C, 0xDF, 0x00, 0x12, 0x8A, 0xDF, - 0x00, 0x10, 0x89, 0xE0, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x84, 0xDB, 0x00, 0x13, 0x8A, 0xDF, - 0x00, 0x0F, 0x87, 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0E, 0x84, 0xDB, - 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, - 0x00, 0x33, 0xAB, 0xE2, 0x00, 0x3B, 0xB3, 0xEB, 0x00, 0x33, 0xAC, 0xE5, 0x00, 0x30, 0xAB, 0xE6, - 0x00, 0x2D, 0xAA, 0xE7, 0x00, 0x43, 0xB6, 0xEA, 0x00, 0x23, 0xA7, 0xEA, 0x00, 0x29, 0xA9, 0xE9, - 0x00, 0x2F, 0xAB, 0xE9, 0x00, 0x32, 0xA9, 0xE5, 0x00, 0x35, 0xA7, 0xE2, 0x00, 0x30, 0xA7, 0xE6, - 0x00, 0x2A, 0xA8, 0xEA, 0x00, 0x25, 0xAA, 0xF0, 0x00, 0x1F, 0xAD, 0xF6, 0x00, 0x4D, 0x8A, 0xA7, - 0x00, 0xB7, 0x66, 0x4C, 0x00, 0xFF, 0x54, 0x0F, 0x00, 0xF7, 0x64, 0x0C, 0x00, 0xF8, 0x63, 0x13, - 0x00, 0xF9, 0x61, 0x1A, 0x00, 0xEF, 0x67, 0x1E, 0x00, 0xFC, 0x61, 0x22, 0x00, 0xFA, 0x68, 0x25, - 0x00, 0xF9, 0x6F, 0x28, 0x00, 0xF5, 0x70, 0x22, 0x00, 0xF2, 0x72, 0x1B, 0x00, 0xF2, 0x6B, 0x1F, - 0x00, 0xF1, 0x64, 0x24, 0x00, 0xFF, 0x55, 0x21, 0x00, 0xFF, 0x53, 0x1E, 0x00, 0xFF, 0x4B, 0x16, - 0x00, 0xFF, 0x43, 0x0E, 0x00, 0xB1, 0x61, 0x5A, 0x00, 0x1E, 0x95, 0xDF, 0x00, 0x12, 0x9A, 0xF0, - 0x00, 0x1B, 0x9A, 0xE5, 0x00, 0x18, 0x9A, 0xE5, 0x00, 0x14, 0x9A, 0xE6, 0x00, 0x17, 0x98, 0xE5, - 0x00, 0x1B, 0x95, 0xE4, 0x00, 0x1A, 0x95, 0xE2, 0x00, 0x19, 0x94, 0xE0, 0x00, 0x18, 0x93, 0xE1, - 0x00, 0x17, 0x92, 0xE2, 0x00, 0x16, 0x91, 0xE1, 0x00, 0x16, 0x90, 0xE0, 0x00, 0x15, 0x8F, 0xDF, - 0x00, 0x14, 0x8F, 0xDE, 0x00, 0x14, 0x8E, 0xDF, 0x00, 0x14, 0x8E, 0xE1, 0x00, 0x12, 0x8C, 0xE0, - 0x00, 0x10, 0x8A, 0xE0, 0x00, 0x10, 0x88, 0xDE, 0x00, 0x10, 0x86, 0xDC, 0x00, 0x17, 0x8E, 0xE3, - 0x00, 0x0D, 0x87, 0xDB, 0x00, 0x0E, 0x86, 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0E, 0x85, 0xDC, - 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, - 0x00, 0x36, 0xB0, 0xEA, 0x00, 0x36, 0xB3, 0xEF, 0x00, 0x2E, 0xAE, 0xED, 0x00, 0x2C, 0xAD, 0xEC, - 0x00, 0x2A, 0xAD, 0xEB, 0x00, 0x40, 0xB3, 0xEF, 0x00, 0x28, 0xAA, 0xE9, 0x00, 0x2B, 0xAB, 0xE7, - 0x00, 0x2F, 0xAB, 0xE6, 0x00, 0x30, 0xAA, 0xE6, 0x00, 0x31, 0xAA, 0xE5, 0x00, 0x2E, 0xA9, 0xE6, - 0x00, 0x2B, 0xA9, 0xE7, 0x00, 0x24, 0xA7, 0xEB, 0x00, 0x93, 0x6A, 0x5F, 0x00, 0xFF, 0x3D, 0x05, - 0x00, 0xF9, 0x56, 0x17, 0x00, 0xE2, 0x72, 0x12, 0x00, 0xF8, 0x72, 0x29, 0x00, 0xF7, 0x74, 0x27, - 0x00, 0xF6, 0x76, 0x25, 0x00, 0xF1, 0x76, 0x28, 0x00, 0xF8, 0x70, 0x2A, 0x00, 0xF8, 0x77, 0x2D, - 0x00, 0xF9, 0x7D, 0x30, 0x00, 0xF7, 0x7F, 0x2D, 0x00, 0xF5, 0x81, 0x2A, 0x00, 0xF5, 0x7B, 0x2B, - 0x00, 0xF5, 0x75, 0x2C, 0x00, 0xFD, 0x6A, 0x2B, 0x00, 0xFA, 0x64, 0x2A, 0x00, 0xF5, 0x5D, 0x2C, - 0x00, 0xF0, 0x57, 0x2E, 0x00, 0xFF, 0x48, 0x10, 0x00, 0xFF, 0x45, 0x0E, 0x00, 0x80, 0x76, 0x7F, - 0x00, 0x02, 0xA7, 0xF0, 0x00, 0x24, 0x95, 0xEA, 0x00, 0x19, 0x9A, 0xE3, 0x00, 0x1B, 0x98, 0xE4, - 0x00, 0x1D, 0x95, 0xE4, 0x00, 0x1B, 0x95, 0xE2, 0x00, 0x19, 0x96, 0xDF, 0x00, 0x18, 0x94, 0xE1, - 0x00, 0x17, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE2, 0x00, 0x16, 0x92, 0xE1, 0x00, 0x15, 0x91, 0xE0, - 0x00, 0x15, 0x90, 0xDF, 0x00, 0x15, 0x90, 0xE0, 0x00, 0x15, 0x91, 0xE2, 0x00, 0x12, 0x8E, 0xE1, - 0x00, 0x0F, 0x8C, 0xDF, 0x00, 0x12, 0x8B, 0xDF, 0x00, 0x14, 0x8A, 0xDF, 0x00, 0x15, 0x8D, 0xE2, - 0x00, 0x0E, 0x89, 0xDC, 0x00, 0x0E, 0x88, 0xDC, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x86, 0xDC, - 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, - 0x00, 0x5F, 0xC0, 0xE6, 0x00, 0x57, 0xBE, 0xE8, 0x00, 0x4F, 0xBB, 0xE9, 0x00, 0x4E, 0xBA, 0xE6, - 0x00, 0x4D, 0xB9, 0xE3, 0x00, 0x50, 0xB6, 0xED, 0x00, 0x2D, 0xAE, 0xE7, 0x00, 0x2E, 0xAC, 0xE6, - 0x00, 0x2E, 0xAB, 0xE4, 0x00, 0x2E, 0xAC, 0xE6, 0x00, 0x2E, 0xAD, 0xE8, 0x00, 0x2D, 0xAB, 0xE7, - 0x00, 0x2C, 0xAA, 0xE5, 0x00, 0x15, 0xB2, 0xFF, 0x00, 0xEB, 0x42, 0x10, 0x00, 0xF1, 0x4F, 0x16, - 0x00, 0xF7, 0x5C, 0x1C, 0x00, 0xF8, 0x71, 0x23, 0x00, 0xF9, 0x85, 0x29, 0x00, 0xF6, 0x88, 0x2D, - 0x00, 0xF3, 0x8B, 0x30, 0x00, 0xF4, 0x85, 0x31, 0x00, 0xF4, 0x7F, 0x33, 0x00, 0xF6, 0x85, 0x35, - 0x00, 0xF9, 0x8B, 0x37, 0x00, 0xF8, 0x8D, 0x38, 0x00, 0xF7, 0x90, 0x3A, 0x00, 0xF8, 0x8B, 0x37, - 0x00, 0xF8, 0x86, 0x35, 0x00, 0xF7, 0x7E, 0x35, 0x00, 0xF6, 0x75, 0x35, 0x00, 0xF7, 0x6D, 0x33, - 0x00, 0xF7, 0x64, 0x31, 0x00, 0xF8, 0x5E, 0x31, 0x00, 0xF8, 0x57, 0x30, 0x00, 0xFF, 0x51, 0x25, - 0x00, 0xF5, 0x51, 0x36, 0x00, 0x03, 0xA4, 0xFD, 0x00, 0x1E, 0x9A, 0xE1, 0x00, 0x1E, 0x98, 0xE3, - 0x00, 0x1E, 0x96, 0xE5, 0x00, 0x1C, 0x96, 0xE2, 0x00, 0x19, 0x97, 0xDF, 0x00, 0x18, 0x96, 0xE1, - 0x00, 0x17, 0x95, 0xE3, 0x00, 0x16, 0x94, 0xE2, 0x00, 0x16, 0x93, 0xE1, 0x00, 0x16, 0x92, 0xE0, - 0x00, 0x15, 0x91, 0xE0, 0x00, 0x16, 0x92, 0xE2, 0x00, 0x16, 0x93, 0xE4, 0x00, 0x12, 0x90, 0xE1, - 0x00, 0x0F, 0x8E, 0xDF, 0x00, 0x14, 0x8D, 0xE1, 0x00, 0x18, 0x8D, 0xE3, 0x00, 0x13, 0x8C, 0xE0, - 0x00, 0x0F, 0x8B, 0xDE, 0x00, 0x0F, 0x89, 0xDD, 0x00, 0x0E, 0x88, 0xDD, 0x00, 0x0E, 0x87, 0xDD, - 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, - 0x00, 0x3C, 0xB6, 0xED, 0x00, 0x35, 0xB3, 0xEE, 0x00, 0x2F, 0xB1, 0xEF, 0x00, 0x2F, 0xB1, 0xED, - 0x00, 0x2F, 0xB0, 0xEC, 0x00, 0x38, 0xB0, 0xEE, 0x00, 0x2D, 0xAE, 0xE9, 0x00, 0x2F, 0xAD, 0xE7, - 0x00, 0x30, 0xAD, 0xE6, 0x00, 0x2F, 0xAE, 0xE8, 0x00, 0x2D, 0xB0, 0xEA, 0x00, 0x30, 0xAD, 0xEC, - 0x00, 0x28, 0xAF, 0xEE, 0x00, 0x2F, 0xA9, 0xC8, 0x00, 0xFF, 0x3D, 0x04, 0x00, 0xFA, 0x50, 0x19, - 0x00, 0xF8, 0x5F, 0x21, 0x00, 0xF7, 0x73, 0x28, 0x00, 0xF7, 0x87, 0x2F, 0x00, 0xFA, 0x95, 0x37, - 0x00, 0xF5, 0x9B, 0x37, 0x00, 0xF5, 0x96, 0x3A, 0x00, 0xF5, 0x92, 0x3D, 0x00, 0xF7, 0x94, 0x3F, - 0x00, 0xF9, 0x96, 0x41, 0x00, 0xF9, 0x99, 0x43, 0x00, 0xF9, 0x9D, 0x46, 0x00, 0xF8, 0x98, 0x44, - 0x00, 0xF7, 0x94, 0x43, 0x00, 0xF8, 0x8D, 0x42, 0x00, 0xF9, 0x86, 0x41, 0x00, 0xF9, 0x7D, 0x3F, - 0x00, 0xF9, 0x73, 0x3C, 0x00, 0xF7, 0x70, 0x38, 0x00, 0xF4, 0x6C, 0x35, 0x00, 0xFF, 0x60, 0x21, - 0x00, 0xBE, 0x6C, 0x62, 0x00, 0x12, 0x9D, 0xEF, 0x00, 0x21, 0x9A, 0xE8, 0x00, 0x1C, 0x99, 0xED, - 0x00, 0x17, 0x9B, 0xE3, 0x00, 0x13, 0x98, 0xF0, 0x00, 0x1B, 0x94, 0xE0, 0x00, 0x1A, 0x96, 0xE1, - 0x00, 0x19, 0x97, 0xE3, 0x00, 0x18, 0x96, 0xE4, 0x00, 0x17, 0x95, 0xE5, 0x00, 0x18, 0x94, 0xE3, - 0x00, 0x19, 0x93, 0xE2, 0x00, 0x16, 0x91, 0xE0, 0x00, 0x14, 0x90, 0xDE, 0x00, 0x15, 0x91, 0xE1, - 0x00, 0x16, 0x92, 0xE5, 0x00, 0x14, 0x90, 0xE3, 0x00, 0x11, 0x8D, 0xE2, 0x00, 0x10, 0x8D, 0xE2, - 0x00, 0x0F, 0x8D, 0xE3, 0x00, 0x10, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xD8, 0x00, 0x0E, 0x87, 0xE1, - 0x00, 0x0B, 0x89, 0xDC, 0x00, 0x10, 0x85, 0xE0, 0x00, 0x09, 0x87, 0xE4, 0x00, 0x09, 0x87, 0xE4, - 0x00, 0x3F, 0xB5, 0xE8, 0x00, 0x3B, 0xB3, 0xE9, 0x00, 0x36, 0xB2, 0xEA, 0x00, 0x37, 0xB1, 0xE9, - 0x00, 0x37, 0xB1, 0xE8, 0x00, 0x32, 0xAF, 0xE9, 0x00, 0x2D, 0xAE, 0xEA, 0x00, 0x30, 0xAE, 0xE9, - 0x00, 0x32, 0xAF, 0xE8, 0x00, 0x30, 0xB1, 0xEA, 0x00, 0x2D, 0xB4, 0xEC, 0x00, 0x34, 0xAE, 0xF1, - 0x00, 0x24, 0xB4, 0xF6, 0x00, 0x8D, 0x7E, 0x86, 0x00, 0xF6, 0x4E, 0x00, 0x00, 0xEC, 0x5C, 0x1D, - 0x00, 0xF9, 0x63, 0x25, 0x00, 0xF7, 0x76, 0x2D, 0x00, 0xF4, 0x89, 0x35, 0x00, 0xFD, 0xA2, 0x41, - 0x00, 0xF6, 0xAB, 0x3E, 0x00, 0xF6, 0xA8, 0x43, 0x00, 0xF7, 0xA4, 0x47, 0x00, 0xF8, 0xA3, 0x4A, - 0x00, 0xFA, 0xA1, 0x4C, 0x00, 0xFA, 0xA5, 0x4E, 0x00, 0xFB, 0xAA, 0x51, 0x00, 0xF9, 0xA6, 0x52, - 0x00, 0xF7, 0xA2, 0x52, 0x00, 0xFA, 0x9C, 0x4F, 0x00, 0xFD, 0x97, 0x4D, 0x00, 0xFC, 0x8D, 0x4A, - 0x00, 0xFB, 0x83, 0x47, 0x00, 0xF6, 0x82, 0x40, 0x00, 0xF1, 0x82, 0x39, 0x00, 0xF4, 0x72, 0x2B, - 0x00, 0x71, 0x8C, 0xAB, 0x00, 0x16, 0x99, 0xF0, 0x00, 0x25, 0x99, 0xEF, 0x00, 0x25, 0x97, 0xE8, - 0x00, 0x26, 0x9A, 0xC5, 0x00, 0x16, 0x96, 0xF0, 0x00, 0x1C, 0x91, 0xE2, 0x00, 0x1B, 0x96, 0xE2, - 0x00, 0x1B, 0x9A, 0xE2, 0x00, 0x19, 0x99, 0xE5, 0x00, 0x18, 0x98, 0xE8, 0x00, 0x1A, 0x96, 0xE6, - 0x00, 0x1C, 0x95, 0xE4, 0x00, 0x17, 0x91, 0xDF, 0x00, 0x13, 0x8D, 0xD9, 0x00, 0x18, 0x92, 0xE2, - 0x00, 0x1E, 0x97, 0xEA, 0x00, 0x14, 0x92, 0xE5, 0x00, 0x0B, 0x8D, 0xE1, 0x00, 0x0D, 0x8E, 0xE5, - 0x00, 0x10, 0x8F, 0xE9, 0x00, 0x12, 0x8B, 0xDE, 0x00, 0x14, 0x88, 0xD4, 0x00, 0x0E, 0x87, 0xE6, - 0x00, 0x08, 0x8C, 0xDC, 0x00, 0x11, 0x84, 0xE4, 0x00, 0x03, 0x88, 0xEC, 0x00, 0x03, 0x88, 0xEC, - 0x00, 0x3D, 0xB6, 0xEA, 0x00, 0x3A, 0xB5, 0xEA, 0x00, 0x38, 0xB4, 0xEB, 0x00, 0x37, 0xB3, 0xEB, - 0x00, 0x37, 0xB3, 0xEA, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x32, 0xB1, 0xEB, 0x00, 0x33, 0xB1, 0xEB, - 0x00, 0x34, 0xB0, 0xEA, 0x00, 0x32, 0xB3, 0xE9, 0x00, 0x2F, 0xB5, 0xE8, 0x00, 0x34, 0xB0, 0xF0, - 0x00, 0x22, 0xB6, 0xF8, 0x00, 0xC5, 0x60, 0x44, 0x00, 0xF9, 0x53, 0x0B, 0x00, 0xF2, 0x63, 0x21, - 0x00, 0xF6, 0x6F, 0x29, 0x00, 0xF6, 0x7D, 0x2F, 0x00, 0xF7, 0x8A, 0x35, 0x00, 0xFA, 0xA1, 0x41, - 0x00, 0xF6, 0xAF, 0x45, 0x00, 0xFA, 0xB4, 0x4F, 0x00, 0xF6, 0xB0, 0x50, 0x00, 0xF8, 0xAE, 0x53, - 0x00, 0xFA, 0xAC, 0x56, 0x00, 0xFC, 0xB2, 0x59, 0x00, 0xFD, 0xB7, 0x5D, 0x00, 0xFA, 0xB3, 0x5F, - 0x00, 0xF6, 0xAF, 0x61, 0x00, 0xF9, 0xAC, 0x5D, 0x00, 0xFD, 0xA9, 0x59, 0x00, 0xFB, 0x9F, 0x55, - 0x00, 0xF8, 0x94, 0x50, 0x00, 0xF7, 0x91, 0x4A, 0x00, 0xF5, 0x8D, 0x44, 0x00, 0xFF, 0x7D, 0x22, - 0x00, 0x1A, 0xA5, 0xEF, 0x00, 0x12, 0x9E, 0xF3, 0x00, 0x28, 0x96, 0xF1, 0x00, 0x22, 0x9F, 0xB0, - 0x00, 0x6C, 0x96, 0x00, 0x00, 0x3B, 0x9B, 0x82, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9B, 0xF4, - 0x00, 0x14, 0x9C, 0xE2, 0x00, 0x15, 0x99, 0xE4, 0x00, 0x17, 0x96, 0xE6, 0x00, 0x18, 0x95, 0xE5, - 0x00, 0x1A, 0x93, 0xE4, 0x00, 0x18, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE0, 0x00, 0x1C, 0x98, 0xE6, - 0x00, 0x19, 0x95, 0xE4, 0x00, 0x16, 0x92, 0xE4, 0x00, 0x12, 0x8F, 0xE5, 0x00, 0x12, 0x8C, 0xEB, - 0x00, 0x12, 0x8B, 0xE3, 0x00, 0x00, 0x87, 0xE3, 0x00, 0x00, 0x7B, 0xF4, 0x00, 0x1A, 0x86, 0xD3, - 0x00, 0x0C, 0x8C, 0xF0, 0x00, 0x00, 0x8E, 0xE2, 0x00, 0x0D, 0x84, 0xEA, 0x00, 0x07, 0x86, 0xF1, - 0x00, 0x3B, 0xB7, 0xEC, 0x00, 0x3A, 0xB6, 0xEC, 0x00, 0x39, 0xB6, 0xEC, 0x00, 0x38, 0xB5, 0xEC, - 0x00, 0x37, 0xB5, 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x36, 0xB3, 0xEC, - 0x00, 0x36, 0xB2, 0xEC, 0x00, 0x33, 0xB4, 0xE8, 0x00, 0x31, 0xB5, 0xE4, 0x00, 0x34, 0xB1, 0xEF, - 0x00, 0x21, 0xB8, 0xF9, 0x00, 0xFD, 0x41, 0x02, 0x00, 0xFC, 0x58, 0x1E, 0x00, 0xF8, 0x6A, 0x25, - 0x00, 0xF3, 0x7C, 0x2C, 0x00, 0xF6, 0x84, 0x31, 0x00, 0xF9, 0x8B, 0x35, 0x00, 0xF7, 0xA0, 0x41, - 0x00, 0xF6, 0xB4, 0x4C, 0x00, 0xFE, 0xC0, 0x5B, 0x00, 0xF6, 0xBC, 0x59, 0x00, 0xF8, 0xBA, 0x5D, - 0x00, 0xFA, 0xB7, 0x60, 0x00, 0xFD, 0xBE, 0x64, 0x00, 0xFF, 0xC4, 0x69, 0x00, 0xFA, 0xC0, 0x6C, - 0x00, 0xF5, 0xBD, 0x6F, 0x00, 0xF9, 0xBC, 0x6A, 0x00, 0xFD, 0xBB, 0x65, 0x00, 0xFA, 0xB1, 0x60, - 0x00, 0xF6, 0xA6, 0x5A, 0x00, 0xF8, 0x9F, 0x54, 0x00, 0xFA, 0x98, 0x4F, 0x00, 0xDF, 0x94, 0x6E, - 0x00, 0x07, 0xA6, 0xFB, 0x00, 0x24, 0x9C, 0xDA, 0x00, 0x14, 0x9F, 0xF2, 0x00, 0x4A, 0xA1, 0x71, - 0x00, 0x68, 0xA9, 0x0D, 0x00, 0x61, 0xA3, 0x06, 0x00, 0x5A, 0x98, 0x1B, 0x00, 0x33, 0x96, 0x9B, - 0x00, 0x0D, 0x99, 0xFE, 0x00, 0x11, 0x96, 0xF1, 0x00, 0x16, 0x94, 0xE4, 0x00, 0x17, 0x93, 0xE4, - 0x00, 0x18, 0x91, 0xE4, 0x00, 0x19, 0x94, 0xE5, 0x00, 0x1A, 0x98, 0xE6, 0x00, 0x1F, 0x9D, 0xEA, - 0x00, 0x15, 0x93, 0xDE, 0x00, 0x17, 0x92, 0xE3, 0x00, 0x1A, 0x91, 0xE8, 0x00, 0x1F, 0x94, 0xEB, - 0x00, 0x25, 0x9D, 0xD1, 0x00, 0xD0, 0xF7, 0x72, 0x00, 0xC1, 0xF2, 0x95, 0x00, 0x00, 0x83, 0xF0, - 0x00, 0x17, 0x81, 0xA0, 0x00, 0x3B, 0x7E, 0x2E, 0x00, 0x16, 0x87, 0xCB, 0x00, 0x0B, 0x8A, 0xDA, - 0x00, 0x3D, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xED, 0x00, 0x3B, 0xB7, 0xED, 0x00, 0x3A, 0xB7, 0xED, - 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, - 0x00, 0x39, 0xB6, 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x34, 0xAB, 0xF2, - 0x00, 0x6D, 0x95, 0xB3, 0x00, 0xFF, 0x46, 0x00, 0x00, 0xF7, 0x64, 0x20, 0x00, 0xF6, 0x73, 0x28, - 0x00, 0xF5, 0x81, 0x30, 0x00, 0xF6, 0x8B, 0x37, 0x00, 0xF8, 0x94, 0x3D, 0x00, 0xF8, 0xA6, 0x48, - 0x00, 0xF7, 0xB7, 0x53, 0x00, 0xFB, 0xC2, 0x60, 0x00, 0xF7, 0xC4, 0x65, 0x00, 0xF9, 0xC3, 0x69, - 0x00, 0xFA, 0xC2, 0x6D, 0x00, 0xFA, 0xC6, 0x72, 0x00, 0xFA, 0xCB, 0x77, 0x00, 0xFB, 0xCB, 0x7A, - 0x00, 0xFC, 0xCB, 0x7D, 0x00, 0xFA, 0xC8, 0x7A, 0x00, 0xF8, 0xC5, 0x77, 0x00, 0xF9, 0xBC, 0x72, - 0x00, 0xFA, 0xB4, 0x6C, 0x00, 0xF6, 0xB0, 0x68, 0x00, 0xFD, 0xAA, 0x56, 0x00, 0x93, 0xA0, 0xA5, - 0x00, 0x13, 0xA1, 0xF3, 0x00, 0x21, 0x9C, 0xEF, 0x00, 0x19, 0x9D, 0xFF, 0x00, 0x71, 0xC1, 0x23, - 0x00, 0x79, 0xB7, 0x25, 0x00, 0x71, 0xB2, 0x1D, 0x00, 0x6A, 0xAA, 0x23, 0x00, 0x66, 0xA0, 0x25, - 0x00, 0x63, 0x9A, 0x18, 0x00, 0x41, 0x9C, 0x72, 0x00, 0x1E, 0x9F, 0xCB, 0x00, 0x18, 0x93, 0xFF, - 0x00, 0x13, 0x98, 0xF1, 0x00, 0x18, 0x9C, 0xF4, 0x00, 0x1D, 0xA0, 0xF7, 0x00, 0x1B, 0x9C, 0xFF, - 0x00, 0x10, 0x93, 0xF6, 0x00, 0x11, 0x93, 0xF1, 0x00, 0x13, 0x93, 0xEC, 0x00, 0x00, 0x83, 0xFF, - 0x00, 0x72, 0xCB, 0xA0, 0x00, 0xCB, 0xF9, 0x81, 0x00, 0xD0, 0xFF, 0xAC, 0x00, 0x78, 0xA0, 0x45, - 0x00, 0x33, 0x77, 0x00, 0x00, 0x3A, 0x7C, 0x02, 0x00, 0x0D, 0x8C, 0xE2, 0x00, 0x0D, 0x8E, 0xDB, - 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xB9, 0xED, 0x00, 0x3C, 0xB9, 0xED, 0x00, 0x3B, 0xB8, 0xED, - 0x00, 0x3A, 0xB8, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3C, 0xB8, 0xEE, - 0x00, 0x3C, 0xB9, 0xEE, 0x00, 0x3A, 0xB4, 0xF0, 0x00, 0x37, 0xAE, 0xF2, 0x00, 0x32, 0xB3, 0xFE, - 0x00, 0xB3, 0x8E, 0x7C, 0x00, 0xFF, 0x58, 0x06, 0x00, 0xF3, 0x71, 0x22, 0x00, 0xF4, 0x7C, 0x2B, - 0x00, 0xF6, 0x86, 0x34, 0x00, 0xF7, 0x92, 0x3D, 0x00, 0xF8, 0x9D, 0x45, 0x00, 0xF8, 0xAC, 0x4F, - 0x00, 0xF8, 0xBB, 0x5A, 0x00, 0xF9, 0xC4, 0x65, 0x00, 0xF9, 0xCC, 0x70, 0x00, 0xFA, 0xCC, 0x75, - 0x00, 0xFA, 0xCC, 0x7A, 0x00, 0xF7, 0xCF, 0x80, 0x00, 0xF4, 0xD2, 0x85, 0x00, 0xFB, 0xD5, 0x89, - 0x00, 0xFF, 0xD9, 0x8C, 0x00, 0xFA, 0xD3, 0x8B, 0x00, 0xF2, 0xCE, 0x89, 0x00, 0xF8, 0xC8, 0x84, - 0x00, 0xFE, 0xC1, 0x7F, 0x00, 0xF4, 0xC1, 0x7C, 0x00, 0xFF, 0xBC, 0x5E, 0x00, 0x47, 0xAB, 0xDB, - 0x00, 0x1E, 0x9C, 0xEA, 0x00, 0x1D, 0xA2, 0xE8, 0x00, 0x1D, 0xA7, 0xE5, 0x00, 0x98, 0xD3, 0x1B, - 0x00, 0x8A, 0xCB, 0x21, 0x00, 0x82, 0xC3, 0x26, 0x00, 0x7A, 0xBB, 0x2C, 0x00, 0x75, 0xB4, 0x28, - 0x00, 0x70, 0xAD, 0x25, 0x00, 0x6D, 0xAB, 0x16, 0x00, 0x6A, 0xA9, 0x08, 0x00, 0x5E, 0xA9, 0x11, - 0x00, 0x51, 0x9E, 0x53, 0x00, 0x47, 0x9B, 0x6D, 0x00, 0x3E, 0x97, 0x87, 0x00, 0x3B, 0x95, 0x91, - 0x00, 0x38, 0x98, 0x80, 0x00, 0x44, 0x96, 0x63, 0x00, 0x4F, 0x94, 0x45, 0x00, 0x82, 0xB4, 0x3C, - 0x00, 0x4F, 0x84, 0x1B, 0x00, 0xAF, 0xE0, 0x87, 0x00, 0x9E, 0xCC, 0x82, 0x00, 0x35, 0x7F, 0x11, - 0x00, 0x42, 0x82, 0x1B, 0x00, 0x32, 0x84, 0x3B, 0x00, 0x04, 0x92, 0xF9, 0x00, 0x0F, 0x92, 0xDC, - 0x00, 0x40, 0xBC, 0xEE, 0x00, 0x3F, 0xBB, 0xED, 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xBA, 0xED, - 0x00, 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, - 0x00, 0x3C, 0xB8, 0xEB, 0x00, 0x3F, 0xB3, 0xF0, 0x00, 0x42, 0xAF, 0xF4, 0x00, 0x0D, 0xBA, 0xE8, - 0x00, 0xFF, 0xB8, 0x96, 0x00, 0xF6, 0x81, 0x4C, 0x00, 0xF5, 0x75, 0x22, 0x00, 0xF6, 0x80, 0x2D, - 0x00, 0xF7, 0x8B, 0x38, 0x00, 0xF7, 0x99, 0x42, 0x00, 0xF7, 0xA6, 0x4D, 0x00, 0xF8, 0xB2, 0x56, - 0x00, 0xF9, 0xBD, 0x5F, 0x00, 0xF9, 0xC8, 0x6D, 0x00, 0xFA, 0xD4, 0x7A, 0x00, 0xFA, 0xD5, 0x81, - 0x00, 0xF9, 0xD7, 0x88, 0x00, 0xFA, 0xD8, 0x8D, 0x00, 0xFB, 0xDA, 0x92, 0x00, 0xF9, 0xE4, 0xA1, - 0x00, 0xFE, 0xD6, 0x91, 0x00, 0xFA, 0xDE, 0x9F, 0x00, 0xF8, 0xDB, 0x97, 0x00, 0xF9, 0xD5, 0x93, - 0x00, 0xFB, 0xCF, 0x8F, 0x00, 0xFF, 0xD1, 0x85, 0x00, 0xFF, 0xC6, 0x78, 0x00, 0x00, 0x9A, 0xFC, - 0x00, 0x26, 0xA8, 0xF1, 0x00, 0x1F, 0xA4, 0xF8, 0x00, 0x53, 0xBD, 0xA5, 0x00, 0xA4, 0xDA, 0x30, - 0x00, 0x9D, 0xD5, 0x37, 0x00, 0x97, 0xD0, 0x3A, 0x00, 0x90, 0xCA, 0x3D, 0x00, 0x8A, 0xC5, 0x39, - 0x00, 0x84, 0xBF, 0x35, 0x00, 0x7C, 0xBD, 0x30, 0x00, 0x74, 0xBC, 0x2C, 0x00, 0x75, 0xB8, 0x1B, - 0x00, 0x77, 0xAF, 0x27, 0x00, 0x72, 0xAB, 0x25, 0x00, 0x6D, 0xA7, 0x23, 0x00, 0x6A, 0xA3, 0x28, - 0x00, 0x68, 0xA2, 0x1E, 0x00, 0x57, 0x95, 0x19, 0x00, 0x77, 0xB7, 0x45, 0x00, 0xBA, 0xF0, 0x81, - 0x00, 0x72, 0xAC, 0x4C, 0x00, 0x41, 0x7B, 0x14, 0x00, 0x4F, 0x8A, 0x1D, 0x00, 0x42, 0x86, 0x1C, - 0x00, 0x49, 0x86, 0x14, 0x00, 0x16, 0x86, 0x8B, 0x00, 0x0A, 0x90, 0xF5, 0x00, 0x15, 0x8D, 0xE7, - 0x00, 0x41, 0xBE, 0xEF, 0x00, 0x40, 0xBD, 0xEE, 0x00, 0x3F, 0xBC, 0xED, 0x00, 0x3E, 0xBB, 0xED, - 0x00, 0x3D, 0xBA, 0xEC, 0x00, 0x3D, 0xBA, 0xEB, 0x00, 0x3C, 0xB9, 0xEA, 0x00, 0x3C, 0xB8, 0xE9, - 0x00, 0x3B, 0xB7, 0xE8, 0x00, 0x39, 0xB9, 0xF0, 0x00, 0x37, 0xBA, 0xF7, 0x00, 0x50, 0xB5, 0xDC, - 0x00, 0xFF, 0x96, 0x44, 0x00, 0xFE, 0xC4, 0x9C, 0x00, 0xF7, 0x79, 0x23, 0x00, 0xF8, 0x85, 0x30, - 0x00, 0xF8, 0x91, 0x3C, 0x00, 0xF8, 0xA0, 0x48, 0x00, 0xF7, 0xAF, 0x55, 0x00, 0xF8, 0xB7, 0x5D, - 0x00, 0xF9, 0xBF, 0x65, 0x00, 0xFA, 0xCD, 0x75, 0x00, 0xFB, 0xDB, 0x85, 0x00, 0xFA, 0xDE, 0x8D, - 0x00, 0xF9, 0xE1, 0x95, 0x00, 0xFD, 0xE1, 0x9A, 0x00, 0xFF, 0xE2, 0xA0, 0x00, 0xFA, 0xE8, 0xA3, - 0x00, 0xFF, 0xBD, 0x6B, 0x00, 0xFC, 0xDE, 0x9E, 0x00, 0xFF, 0xE8, 0xA6, 0x00, 0xFB, 0xE3, 0xA3, - 0x00, 0xF7, 0xDE, 0xA0, 0x00, 0xFD, 0xD7, 0x99, 0x00, 0xB5, 0xBD, 0xAB, 0x00, 0x11, 0x9F, 0xF0, - 0x00, 0x1D, 0xA3, 0xE8, 0x00, 0x19, 0x9E, 0xFF, 0x00, 0x89, 0xD4, 0x65, 0x00, 0xB0, 0xE1, 0x45, - 0x00, 0xB0, 0xDF, 0x4D, 0x00, 0xAB, 0xDC, 0x4D, 0x00, 0xA7, 0xD8, 0x4D, 0x00, 0xA0, 0xD5, 0x49, - 0x00, 0x99, 0xD2, 0x44, 0x00, 0x97, 0xCD, 0x3C, 0x00, 0x94, 0xC9, 0x34, 0x00, 0x8D, 0xC4, 0x34, - 0x00, 0x86, 0xC0, 0x33, 0x00, 0x7A, 0xBC, 0x32, 0x00, 0x6E, 0xB7, 0x31, 0x00, 0x6D, 0xB2, 0x2F, - 0x00, 0x6B, 0xAE, 0x2E, 0x00, 0x7D, 0xB9, 0x3F, 0x00, 0x6F, 0xA5, 0x30, 0x00, 0x7B, 0xB5, 0x4E, - 0x00, 0x56, 0x9A, 0x20, 0x00, 0x5B, 0x9F, 0x2A, 0x00, 0x50, 0x93, 0x24, 0x00, 0x80, 0xB9, 0x65, - 0x00, 0x5F, 0x99, 0x1C, 0x00, 0x03, 0x8F, 0xE2, 0x00, 0x10, 0x8E, 0xF2, 0x00, 0x1B, 0x88, 0xF2, - 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x42, 0xBE, 0xEE, 0x00, 0x41, 0xBD, 0xEE, 0x00, 0x40, 0xBD, 0xEE, - 0x00, 0x3F, 0xBC, 0xED, 0x00, 0x3F, 0xBB, 0xEC, 0x00, 0x3F, 0xB9, 0xEB, 0x00, 0x3D, 0xB9, 0xEC, - 0x00, 0x3C, 0xB8, 0xEE, 0x00, 0x37, 0xB8, 0xEB, 0x00, 0x26, 0xBC, 0xF6, 0x00, 0x94, 0x9B, 0x8F, - 0x00, 0xFB, 0x96, 0x37, 0x00, 0xF9, 0xBB, 0x7C, 0x00, 0xF8, 0xB5, 0x85, 0x00, 0xF6, 0x99, 0x49, - 0x00, 0xF5, 0x9B, 0x42, 0x00, 0xF6, 0xA6, 0x4E, 0x00, 0xF7, 0xB2, 0x59, 0x00, 0xF8, 0xBC, 0x65, - 0x00, 0xF9, 0xC6, 0x72, 0x00, 0xF9, 0xD3, 0x7F, 0x00, 0xFA, 0xE0, 0x8D, 0x00, 0xF9, 0xE5, 0x97, - 0x00, 0xF8, 0xEB, 0xA1, 0x00, 0xFE, 0xEA, 0xA6, 0x00, 0xFF, 0xEA, 0xAA, 0x00, 0xFC, 0xEE, 0xA8, - 0x00, 0xF9, 0xBA, 0x62, 0x00, 0xFA, 0xDC, 0x98, 0x00, 0xFE, 0xF3, 0xB9, 0x00, 0xFB, 0xEC, 0xB2, - 0x00, 0xF7, 0xE5, 0xAB, 0x00, 0xFE, 0xE4, 0xA2, 0x00, 0x64, 0xB0, 0xD1, 0x00, 0x19, 0x9F, 0xF0, - 0x00, 0x26, 0x9E, 0xE8, 0x00, 0x03, 0x98, 0xF2, 0x00, 0xE3, 0xEF, 0x50, 0x00, 0xD5, 0xEE, 0x57, - 0x00, 0xBF, 0xE3, 0x64, 0x00, 0xBC, 0xE1, 0x64, 0x00, 0xB9, 0xDF, 0x64, 0x00, 0xB4, 0xDD, 0x5D, - 0x00, 0xB0, 0xDB, 0x56, 0x00, 0xA9, 0xD7, 0x4E, 0x00, 0xA2, 0xD3, 0x46, 0x00, 0x9B, 0xD0, 0x42, - 0x00, 0x93, 0xCD, 0x3F, 0x00, 0x8B, 0xC9, 0x3D, 0x00, 0x84, 0xC5, 0x3C, 0x00, 0x80, 0xC1, 0x39, - 0x00, 0x7D, 0xBC, 0x36, 0x00, 0x8A, 0xC7, 0x45, 0x00, 0x88, 0xC1, 0x44, 0x00, 0x62, 0xA0, 0x2B, - 0x00, 0x64, 0xA9, 0x2B, 0x00, 0x5E, 0xA3, 0x2D, 0x00, 0x4F, 0x95, 0x26, 0x00, 0xA4, 0xCE, 0x98, - 0x00, 0xD8, 0xEA, 0xDC, 0x00, 0xB9, 0xDC, 0xFF, 0x00, 0x38, 0x9D, 0xF3, 0x00, 0x00, 0x8F, 0xD3, - 0x00, 0x45, 0xC1, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x41, 0xBE, 0xEF, - 0x00, 0x40, 0xBD, 0xEF, 0x00, 0x41, 0xBC, 0xED, 0x00, 0x42, 0xBA, 0xEB, 0x00, 0x3F, 0xBA, 0xEF, - 0x00, 0x3C, 0xB9, 0xF3, 0x00, 0x34, 0xB8, 0xE6, 0x00, 0x16, 0xBD, 0xF6, 0x00, 0xD8, 0x7F, 0x4F, - 0x00, 0xF7, 0x90, 0x46, 0x00, 0xF7, 0xA5, 0x54, 0x00, 0xFF, 0xDA, 0xBA, 0x00, 0xF8, 0xA1, 0x4D, - 0x00, 0xF3, 0xA5, 0x49, 0x00, 0xF4, 0xAD, 0x53, 0x00, 0xF6, 0xB5, 0x5D, 0x00, 0xF8, 0xC0, 0x6E, - 0x00, 0xFA, 0xCC, 0x7F, 0x00, 0xF9, 0xD8, 0x8A, 0x00, 0xF8, 0xE4, 0x95, 0x00, 0xF8, 0xEC, 0xA1, - 0x00, 0xF7, 0xF4, 0xAE, 0x00, 0xFE, 0xF3, 0xB2, 0x00, 0xFF, 0xF1, 0xB5, 0x00, 0xFE, 0xF4, 0xAD, - 0x00, 0xF3, 0xB6, 0x59, 0x00, 0xF8, 0xDA, 0x92, 0x00, 0xFE, 0xFF, 0xCC, 0x00, 0xFA, 0xF6, 0xC1, - 0x00, 0xF7, 0xED, 0xB6, 0x00, 0xFF, 0xF1, 0xAB, 0x00, 0x13, 0xA4, 0xF7, 0x00, 0x15, 0xA4, 0xEF, - 0x00, 0x18, 0xA5, 0xE8, 0x00, 0x56, 0xB4, 0xCD, 0x00, 0xF0, 0xF2, 0x71, 0x00, 0xD4, 0xEF, 0x84, - 0x00, 0xCF, 0xE6, 0x7B, 0x00, 0xCD, 0xE6, 0x7B, 0x00, 0xCB, 0xE6, 0x7C, 0x00, 0xC9, 0xE5, 0x71, - 0x00, 0xC6, 0xE5, 0x67, 0x00, 0xBC, 0xE1, 0x5F, 0x00, 0xB1, 0xDD, 0x57, 0x00, 0xA8, 0xDB, 0x51, - 0x00, 0xA0, 0xDA, 0x4B, 0x00, 0x9C, 0xD7, 0x48, 0x00, 0x99, 0xD4, 0x46, 0x00, 0x94, 0xCF, 0x42, - 0x00, 0x8F, 0xCA, 0x3E, 0x00, 0x88, 0xC4, 0x3B, 0x00, 0x81, 0xBE, 0x39, 0x00, 0x72, 0xB3, 0x30, - 0x00, 0x62, 0xA8, 0x27, 0x00, 0x58, 0xA0, 0x27, 0x00, 0x4E, 0x97, 0x27, 0x00, 0x9F, 0xC4, 0x79, - 0x00, 0xFF, 0xFB, 0xF7, 0x00, 0x7F, 0xD2, 0xF4, 0x00, 0x03, 0x8E, 0xE1, 0x00, 0x0E, 0x89, 0xE1, - 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, 0xC2, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, 0x43, 0xBF, 0xEF, - 0x00, 0x41, 0xBE, 0xF0, 0x00, 0x42, 0xBD, 0xEE, 0x00, 0x43, 0xBC, 0xEC, 0x00, 0x40, 0xBC, 0xEF, - 0x00, 0x3E, 0xBB, 0xF1, 0x00, 0x2F, 0xC0, 0xFD, 0x00, 0x35, 0xBD, 0xFB, 0x00, 0xF5, 0x4B, 0x00, - 0x00, 0xFF, 0x8A, 0x52, 0x00, 0xFA, 0xA5, 0x5D, 0x00, 0xFC, 0xC4, 0x8D, 0x00, 0xFB, 0xC1, 0x85, - 0x00, 0xF5, 0xAD, 0x50, 0x00, 0xF7, 0xB6, 0x5E, 0x00, 0xF9, 0xBE, 0x6B, 0x00, 0xFA, 0xC9, 0x78, - 0x00, 0xFB, 0xD4, 0x85, 0x00, 0xFE, 0xDE, 0x97, 0x00, 0xFF, 0xE8, 0xAA, 0x00, 0xFD, 0xEE, 0xAD, - 0x00, 0xF9, 0xF4, 0xB1, 0x00, 0xFC, 0xF5, 0xB9, 0x00, 0xFE, 0xF6, 0xC2, 0x00, 0xFB, 0xF0, 0xB2, - 0x00, 0xF6, 0xCB, 0x6E, 0x00, 0xFB, 0xDE, 0x91, 0x00, 0xFC, 0xFC, 0xCA, 0x00, 0xFF, 0xFB, 0xD0, - 0x00, 0xFF, 0xFC, 0xC8, 0x00, 0xCA, 0xE3, 0xC7, 0x00, 0x15, 0xA1, 0xF2, 0x00, 0x1D, 0xA3, 0xEE, - 0x00, 0x11, 0xA1, 0xF1, 0x00, 0x9E, 0xD4, 0xB9, 0x00, 0xEA, 0xF1, 0x8B, 0x00, 0xDC, 0xEF, 0x95, - 0x00, 0xD9, 0xEB, 0x90, 0x00, 0xD9, 0xEB, 0x92, 0x00, 0xD8, 0xEC, 0x94, 0x00, 0xD6, 0xEB, 0x8B, - 0x00, 0xD3, 0xEA, 0x82, 0x00, 0xC9, 0xE6, 0x78, 0x00, 0xBF, 0xE3, 0x6F, 0x00, 0xB8, 0xE2, 0x68, - 0x00, 0xB1, 0xE2, 0x61, 0x00, 0xAE, 0xE0, 0x5D, 0x00, 0xAC, 0xDE, 0x5A, 0x00, 0xA2, 0xD9, 0x51, - 0x00, 0x98, 0xD3, 0x48, 0x00, 0x8E, 0xCB, 0x41, 0x00, 0x83, 0xC3, 0x39, 0x00, 0x74, 0xB7, 0x32, - 0x00, 0x66, 0xAC, 0x2C, 0x00, 0x5D, 0xA2, 0x29, 0x00, 0x54, 0x99, 0x26, 0x00, 0x4A, 0x93, 0x21, - 0x00, 0x23, 0x99, 0xB9, 0x00, 0x15, 0x93, 0xFE, 0x00, 0x09, 0x92, 0xD8, 0x00, 0x0F, 0x8F, 0xD8, - 0x00, 0x49, 0xC4, 0xEF, 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, 0xC2, 0xF0, 0x00, 0x44, 0xC1, 0xF0, - 0x00, 0x42, 0xC0, 0xF1, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x43, 0xBE, 0xED, 0x00, 0x42, 0xBE, 0xEE, - 0x00, 0x41, 0xBD, 0xF0, 0x00, 0x37, 0xBA, 0xF0, 0x00, 0x71, 0xA1, 0xB7, 0x00, 0xFE, 0x5D, 0x1D, - 0x00, 0xF8, 0x79, 0x31, 0x00, 0xF5, 0xA1, 0x51, 0x00, 0xF8, 0xAD, 0x60, 0x00, 0xFE, 0xE0, 0xBC, - 0x00, 0xF7, 0xB6, 0x57, 0x00, 0xF9, 0xBF, 0x68, 0x00, 0xFC, 0xC8, 0x79, 0x00, 0xFC, 0xD2, 0x82, - 0x00, 0xFC, 0xDB, 0x8B, 0x00, 0xFB, 0xDE, 0x8F, 0x00, 0xFB, 0xE0, 0x92, 0x00, 0xFA, 0xEA, 0xA3, - 0x00, 0xFA, 0xF4, 0xB4, 0x00, 0xF9, 0xF8, 0xC1, 0x00, 0xF8, 0xFB, 0xCE, 0x00, 0xF9, 0xEB, 0xB6, - 0x00, 0xFA, 0xE1, 0x83, 0x00, 0xFD, 0xE2, 0x8F, 0x00, 0xFB, 0xF9, 0xC7, 0x00, 0xFC, 0xF8, 0xD7, - 0x00, 0xFE, 0xFC, 0xCA, 0x00, 0x8B, 0xCD, 0xDC, 0x00, 0x18, 0x9F, 0xED, 0x00, 0x24, 0xA3, 0xED, - 0x00, 0x0A, 0x9D, 0xFA, 0x00, 0xE7, 0xF5, 0xA5, 0x00, 0xE4, 0xF1, 0xA5, 0x00, 0xE4, 0xF0, 0xA5, - 0x00, 0xE3, 0xEF, 0xA6, 0x00, 0xE4, 0xF0, 0xA9, 0x00, 0xE6, 0xF2, 0xAD, 0x00, 0xE3, 0xF0, 0xA5, - 0x00, 0xE0, 0xEF, 0x9E, 0x00, 0xD6, 0xEC, 0x92, 0x00, 0xCD, 0xE9, 0x87, 0x00, 0xC7, 0xE9, 0x7F, - 0x00, 0xC2, 0xEA, 0x78, 0x00, 0xC1, 0xEA, 0x72, 0x00, 0xC0, 0xE9, 0x6D, 0x00, 0xB1, 0xE3, 0x60, - 0x00, 0xA2, 0xDD, 0x53, 0x00, 0x94, 0xD2, 0x46, 0x00, 0x86, 0xC8, 0x3A, 0x00, 0x77, 0xBC, 0x35, - 0x00, 0x69, 0xB0, 0x30, 0x00, 0x62, 0xA5, 0x2B, 0x00, 0x5B, 0x9B, 0x26, 0x00, 0x57, 0x91, 0x09, - 0x00, 0x09, 0x94, 0xFB, 0x00, 0x0C, 0x95, 0xE5, 0x00, 0x0F, 0x91, 0xEB, 0x00, 0x0F, 0x91, 0xEB, - 0x00, 0x4A, 0xC5, 0xEF, 0x00, 0x48, 0xC4, 0xF0, 0x00, 0x47, 0xC3, 0xF0, 0x00, 0x45, 0xC2, 0xF1, - 0x00, 0x43, 0xC1, 0xF1, 0x00, 0x41, 0xC1, 0xF1, 0x00, 0x3F, 0xC1, 0xF1, 0x00, 0x3F, 0xBE, 0xF0, - 0x00, 0x3F, 0xBC, 0xEF, 0x00, 0x32, 0xC2, 0xFD, 0x00, 0xBD, 0x7F, 0x6E, 0x00, 0xFE, 0x65, 0x26, - 0x00, 0xF5, 0x7B, 0x34, 0x00, 0xF5, 0x9A, 0x4C, 0x00, 0xF8, 0xAB, 0x5C, 0x00, 0xFA, 0xD0, 0x9F, - 0x00, 0xF7, 0xC6, 0x83, 0x00, 0xFD, 0xC1, 0x6A, 0x00, 0xFD, 0xD1, 0x7E, 0x00, 0xFB, 0xDB, 0x87, - 0x00, 0xF9, 0xE5, 0x8F, 0x00, 0xF8, 0xEC, 0x9A, 0x00, 0xF7, 0xF4, 0xA5, 0x00, 0xFB, 0xEA, 0x99, - 0x00, 0xFF, 0xDF, 0x8E, 0x00, 0xFB, 0xE2, 0x9F, 0x00, 0xF7, 0xE6, 0xB1, 0x00, 0xFB, 0xED, 0xCC, - 0x00, 0xFF, 0xFA, 0xCA, 0x00, 0xFF, 0xF2, 0xC6, 0x00, 0xFC, 0xF0, 0xC2, 0x00, 0xFE, 0xF5, 0xD2, - 0x00, 0xFF, 0xFC, 0xD3, 0x00, 0x4B, 0xB5, 0xE6, 0x00, 0x20, 0xA4, 0xED, 0x00, 0x1B, 0xA2, 0xED, - 0x00, 0x3D, 0xAA, 0xE2, 0x00, 0xEE, 0xF6, 0xAB, 0x00, 0xE5, 0xF1, 0xB1, 0x00, 0xE7, 0xF2, 0xB4, - 0x00, 0xE9, 0xF3, 0xB8, 0x00, 0xE9, 0xF3, 0xBA, 0x00, 0xEA, 0xF4, 0xBC, 0x00, 0xE8, 0xF3, 0xB5, - 0x00, 0xE5, 0xF2, 0xAF, 0x00, 0xE0, 0xF0, 0xA8, 0x00, 0xDA, 0xED, 0xA1, 0x00, 0xD5, 0xEF, 0x99, - 0x00, 0xD0, 0xF0, 0x91, 0x00, 0xC8, 0xED, 0x82, 0x00, 0xC0, 0xEA, 0x72, 0x00, 0xB0, 0xE3, 0x61, - 0x00, 0xA0, 0xDC, 0x50, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x88, 0xCA, 0x3E, 0x00, 0x7B, 0xBF, 0x38, - 0x00, 0x6E, 0xB4, 0x32, 0x00, 0x65, 0xA8, 0x2E, 0x00, 0x5D, 0xA0, 0x1B, 0x00, 0x3C, 0x94, 0x48, - 0x00, 0x0A, 0x93, 0xF6, 0x00, 0x0D, 0x94, 0xEC, 0x00, 0x10, 0x92, 0xF0, 0x00, 0x10, 0x92, 0xF0, - 0x00, 0x4B, 0xC5, 0xF0, 0x00, 0x49, 0xC4, 0xF0, 0x00, 0x48, 0xC4, 0xF1, 0x00, 0x46, 0xC3, 0xF1, - 0x00, 0x44, 0xC2, 0xF2, 0x00, 0x3F, 0xC3, 0xF4, 0x00, 0x3A, 0xC4, 0xF6, 0x00, 0x3C, 0xBF, 0xF3, - 0x00, 0x3D, 0xBA, 0xEF, 0x00, 0x2C, 0xCA, 0xFF, 0x00, 0xFF, 0x5D, 0x24, 0x00, 0xFE, 0x6D, 0x2E, - 0x00, 0xF2, 0x7D, 0x38, 0x00, 0xF5, 0x93, 0x48, 0x00, 0xF7, 0xA9, 0x57, 0x00, 0xF7, 0xC0, 0x82, - 0x00, 0xF7, 0xD7, 0xAE, 0x00, 0xFF, 0xC2, 0x6C, 0x00, 0xFE, 0xDA, 0x84, 0x00, 0xFA, 0xE4, 0x8B, - 0x00, 0xF6, 0xEE, 0x93, 0x00, 0xF8, 0xED, 0x9D, 0x00, 0xF9, 0xEC, 0xA7, 0x00, 0xF8, 0xF1, 0xB3, - 0x00, 0xF7, 0xF6, 0xC0, 0x00, 0xFB, 0xF6, 0xC8, 0x00, 0xFF, 0xF6, 0xD0, 0x00, 0xFE, 0xF2, 0xD3, - 0x00, 0xFB, 0xF3, 0xB9, 0x00, 0xFF, 0xFD, 0xE7, 0x00, 0xF6, 0xFD, 0xE9, 0x00, 0xFC, 0xFC, 0xE2, - 0x00, 0xFF, 0xFC, 0xDC, 0x00, 0x0B, 0x9D, 0xF1, 0x00, 0x29, 0xAA, 0xEC, 0x00, 0x1B, 0xAA, 0xF5, - 0x00, 0x7F, 0xC7, 0xD9, 0x00, 0xFD, 0xFE, 0xBA, 0x00, 0xE7, 0xF2, 0xBD, 0x00, 0xEB, 0xF4, 0xC3, - 0x00, 0xEE, 0xF6, 0xCA, 0x00, 0xEF, 0xF6, 0xCA, 0x00, 0xEF, 0xF7, 0xCB, 0x00, 0xED, 0xF6, 0xC5, - 0x00, 0xEB, 0xF5, 0xBF, 0x00, 0xE9, 0xF3, 0xBE, 0x00, 0xE8, 0xF2, 0xBC, 0x00, 0xE3, 0xF4, 0xB3, - 0x00, 0xDF, 0xF6, 0xAB, 0x00, 0xD0, 0xF1, 0x91, 0x00, 0xC1, 0xEC, 0x77, 0x00, 0xAF, 0xE3, 0x62, - 0x00, 0x9E, 0xDB, 0x4E, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x8A, 0xCC, 0x41, 0x00, 0x7F, 0xC2, 0x3B, - 0x00, 0x73, 0xB8, 0x35, 0x00, 0x69, 0xAC, 0x30, 0x00, 0x60, 0xA5, 0x10, 0x00, 0x22, 0x96, 0x86, - 0x00, 0x0A, 0x91, 0xF0, 0x00, 0x0E, 0x92, 0xF2, 0x00, 0x11, 0x94, 0xF4, 0x00, 0x11, 0x94, 0xF4, - 0x00, 0x4C, 0xC5, 0xF1, 0x00, 0x4A, 0xC5, 0xF1, 0x00, 0x49, 0xC4, 0xF1, 0x00, 0x47, 0xC4, 0xF2, - 0x00, 0x45, 0xC3, 0xF2, 0x00, 0x43, 0xC3, 0xF1, 0x00, 0x40, 0xC4, 0xF0, 0x00, 0x42, 0xBF, 0xF3, - 0x00, 0x39, 0xC0, 0xF5, 0x00, 0x5E, 0xAC, 0xCA, 0x00, 0xFA, 0x58, 0x1E, 0x00, 0xF3, 0x6E, 0x30, - 0x00, 0xF7, 0x80, 0x35, 0x00, 0xFB, 0x92, 0x3E, 0x00, 0xFB, 0xAF, 0x5D, 0x00, 0xFF, 0xC2, 0x72, - 0x00, 0xFD, 0xE1, 0xBA, 0x00, 0xFF, 0xCD, 0x74, 0x00, 0xFF, 0xD3, 0x71, 0x00, 0xFF, 0xE5, 0x83, - 0x00, 0xFF, 0xF7, 0x95, 0x00, 0xFE, 0xF4, 0xA1, 0x00, 0xFD, 0xF0, 0xAD, 0x00, 0xFF, 0xF8, 0xC1, - 0x00, 0xFB, 0xF7, 0xCD, 0x00, 0xFE, 0xF8, 0xD1, 0x00, 0xFF, 0xF9, 0xD6, 0x00, 0xFE, 0xF6, 0xE0, - 0x00, 0xFB, 0xF5, 0xDD, 0x00, 0xFF, 0xFB, 0xED, 0x00, 0xFB, 0xFB, 0xE8, 0x00, 0xFF, 0xFC, 0xDF, - 0x00, 0xB2, 0xE0, 0xE8, 0x00, 0x18, 0xA3, 0xEF, 0x00, 0x25, 0xAA, 0xEC, 0x00, 0x15, 0xA8, 0xF5, - 0x00, 0xC2, 0xE3, 0xD8, 0x00, 0xF9, 0xF9, 0xC5, 0x00, 0xEE, 0xF5, 0xCA, 0x00, 0xEF, 0xF6, 0xCE, - 0x00, 0xF0, 0xF7, 0xD2, 0x00, 0xF1, 0xF8, 0xD1, 0x00, 0xF1, 0xF9, 0xD0, 0x00, 0xF1, 0xF9, 0xCD, - 0x00, 0xF1, 0xF9, 0xC9, 0x00, 0xF2, 0xFB, 0xC9, 0x00, 0xF4, 0xFC, 0xCA, 0x00, 0xE6, 0xF8, 0xB6, - 0x00, 0xD9, 0xF3, 0xA2, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0xBC, 0xEB, 0x71, 0x00, 0xB0, 0xE6, 0x61, - 0x00, 0xA4, 0xE1, 0x50, 0x00, 0x99, 0xD9, 0x48, 0x00, 0x8F, 0xD2, 0x40, 0x00, 0x83, 0xC7, 0x3A, - 0x00, 0x77, 0xBC, 0x34, 0x00, 0x6A, 0xB2, 0x1C, 0x00, 0x5D, 0xA9, 0x04, 0x00, 0x13, 0x8D, 0xEA, - 0x00, 0x11, 0x93, 0xEF, 0x00, 0x0F, 0x92, 0xEF, 0x00, 0x0E, 0x92, 0xF0, 0x00, 0x0E, 0x92, 0xF0, - 0x00, 0x4D, 0xC6, 0xF2, 0x00, 0x4B, 0xC5, 0xF2, 0x00, 0x4A, 0xC5, 0xF2, 0x00, 0x48, 0xC5, 0xF2, - 0x00, 0x46, 0xC4, 0xF2, 0x00, 0x46, 0xC4, 0xEE, 0x00, 0x46, 0xC4, 0xEA, 0x00, 0x48, 0xBF, 0xF2, - 0x00, 0x34, 0xC6, 0xFB, 0x00, 0x98, 0x95, 0x91, 0x00, 0xFC, 0x64, 0x27, 0x00, 0xF1, 0x76, 0x3B, - 0x00, 0xFC, 0x83, 0x32, 0x00, 0xFF, 0x91, 0x34, 0x00, 0xFF, 0xB4, 0x63, 0x00, 0xFF, 0xBD, 0x5A, - 0x00, 0xF3, 0xDC, 0xB5, 0x00, 0xCB, 0xD0, 0x97, 0x00, 0xB4, 0xCE, 0xA4, 0x00, 0xAF, 0xD2, 0xB0, - 0x00, 0xAB, 0xD6, 0xBC, 0x00, 0xC2, 0xE1, 0xBE, 0x00, 0xDA, 0xEB, 0xC0, 0x00, 0xF5, 0xFC, 0xC7, - 0x00, 0xFF, 0xFE, 0xBD, 0x00, 0xFF, 0xFD, 0xCC, 0x00, 0xFF, 0xFC, 0xDB, 0x00, 0xFE, 0xFC, 0xE0, - 0x00, 0xFB, 0xFC, 0xE4, 0x00, 0xFD, 0xFB, 0xE6, 0x00, 0xFF, 0xFA, 0xE7, 0x00, 0xFF, 0xFB, 0xDD, - 0x00, 0x61, 0xC4, 0xF4, 0x00, 0x26, 0xAA, 0xEE, 0x00, 0x22, 0xAA, 0xEB, 0x00, 0x10, 0xA7, 0xF6, - 0x00, 0xFF, 0xFF, 0xD6, 0x00, 0xF5, 0xF4, 0xCF, 0x00, 0xF5, 0xF9, 0xD8, 0x00, 0xF4, 0xF9, 0xD9, - 0x00, 0xF2, 0xF8, 0xD9, 0x00, 0xF3, 0xF9, 0xD8, 0x00, 0xF4, 0xFB, 0xD6, 0x00, 0xF5, 0xFC, 0xD5, - 0x00, 0xF6, 0xFD, 0xD3, 0x00, 0xF3, 0xFA, 0xCD, 0x00, 0xEF, 0xF6, 0xC7, 0x00, 0xE1, 0xF3, 0xB0, - 0x00, 0xD3, 0xF0, 0x98, 0x00, 0xC5, 0xED, 0x82, 0x00, 0xB7, 0xEB, 0x6B, 0x00, 0xB0, 0xE9, 0x5F, - 0x00, 0xAA, 0xE7, 0x53, 0x00, 0x9F, 0xDF, 0x49, 0x00, 0x93, 0xD7, 0x3E, 0x00, 0x87, 0xCB, 0x39, - 0x00, 0x7B, 0xBF, 0x34, 0x00, 0x6B, 0xB4, 0x25, 0x00, 0x5B, 0xA2, 0x32, 0x00, 0x04, 0x94, 0xF9, - 0x00, 0x17, 0x94, 0xED, 0x00, 0x11, 0x92, 0xEC, 0x00, 0x0B, 0x91, 0xEB, 0x00, 0x0B, 0x91, 0xEB, - 0x00, 0x4E, 0xC7, 0xF2, 0x00, 0x4D, 0xC7, 0xF3, 0x00, 0x4C, 0xC7, 0xF3, 0x00, 0x4A, 0xC7, 0xF3, - 0x00, 0x49, 0xC7, 0xF4, 0x00, 0x47, 0xC4, 0xF1, 0x00, 0x45, 0xC1, 0xEE, 0x00, 0x42, 0xC2, 0xF7, - 0x00, 0x33, 0xC8, 0xFF, 0x00, 0xDE, 0x67, 0x46, 0x00, 0xFF, 0x63, 0x2A, 0x00, 0xFF, 0x6F, 0x1B, - 0x00, 0xE0, 0x8B, 0x52, 0x00, 0xA3, 0xA0, 0x84, 0x00, 0x62, 0xC1, 0xCC, 0x00, 0x26, 0xC0, 0xFF, - 0x00, 0x29, 0xB7, 0xFF, 0x00, 0x24, 0xB5, 0xF1, 0x00, 0x27, 0xB7, 0xF9, 0x00, 0x25, 0xB5, 0xF6, - 0x00, 0x23, 0xB2, 0xF2, 0x00, 0x24, 0xB5, 0xFA, 0x00, 0x24, 0xB7, 0xFF, 0x00, 0x17, 0x9D, 0xDE, - 0x00, 0x42, 0xBA, 0xF4, 0x00, 0x9E, 0xDA, 0xE7, 0x00, 0xF9, 0xF9, 0xDC, 0x00, 0xF3, 0xFB, 0xE6, - 0x00, 0xFF, 0xFF, 0xE9, 0x00, 0xFD, 0xFF, 0xE6, 0x00, 0xFA, 0xFB, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, - 0x00, 0x1D, 0xA7, 0xEF, 0x00, 0x1C, 0xA7, 0xF0, 0x00, 0x1A, 0xA7, 0xF1, 0x00, 0x5A, 0xC4, 0xF0, - 0x00, 0xFF, 0xFF, 0xE7, 0x00, 0xFA, 0xF9, 0xE1, 0x00, 0xFA, 0xFB, 0xE2, 0x00, 0xF8, 0xFB, 0xDF, - 0x00, 0xF5, 0xFA, 0xDC, 0x00, 0xF5, 0xFB, 0xDB, 0x00, 0xF5, 0xFB, 0xD9, 0x00, 0xF5, 0xFC, 0xD6, - 0x00, 0xF5, 0xFD, 0xD3, 0x00, 0xF0, 0xF8, 0xC8, 0x00, 0xEA, 0xF4, 0xBD, 0x00, 0xDF, 0xF1, 0xA8, - 0x00, 0xD4, 0xEF, 0x93, 0x00, 0xC6, 0xF3, 0x7A, 0x00, 0xB9, 0xF8, 0x61, 0x00, 0xB0, 0xEF, 0x57, - 0x00, 0xA6, 0xE6, 0x4D, 0x00, 0xA3, 0xE2, 0x48, 0x00, 0x98, 0xD6, 0x3A, 0x00, 0x89, 0xCD, 0x37, - 0x00, 0x7B, 0xC3, 0x35, 0x00, 0x6F, 0xB7, 0x20, 0x00, 0x3A, 0x9C, 0x84, 0x00, 0x0C, 0x93, 0xF4, - 0x00, 0x13, 0x94, 0xEC, 0x00, 0x11, 0x93, 0xE9, 0x00, 0x0F, 0x92, 0xE6, 0x00, 0x0F, 0x92, 0xE6, - 0x00, 0x50, 0xC9, 0xF3, 0x00, 0x4F, 0xC9, 0xF4, 0x00, 0x4E, 0xC9, 0xF4, 0x00, 0x4D, 0xCA, 0xF5, - 0x00, 0x4B, 0xCA, 0xF5, 0x00, 0x48, 0xC5, 0xF4, 0x00, 0x44, 0xBF, 0xF3, 0x00, 0x47, 0xC1, 0xEE, - 0x00, 0x4A, 0xC4, 0xEA, 0x00, 0xFF, 0x52, 0x1F, 0x00, 0xA6, 0x9A, 0x92, 0x00, 0x51, 0xB6, 0xE6, - 0x00, 0x28, 0xC7, 0xFF, 0x00, 0x2C, 0xC4, 0xF8, 0x00, 0x30, 0xC0, 0xF0, 0x00, 0x3F, 0xBA, 0xEF, - 0x00, 0x37, 0xBF, 0xEF, 0x00, 0x38, 0xB9, 0xEF, 0x00, 0x3A, 0xB2, 0xF0, 0x00, 0x38, 0xB5, 0xF3, - 0x00, 0x35, 0xB7, 0xF6, 0x00, 0x32, 0xB9, 0xEF, 0x00, 0x2F, 0xBB, 0xE8, 0x00, 0x2F, 0xB8, 0xEA, - 0x00, 0x2F, 0xB4, 0xED, 0x00, 0x1F, 0xAC, 0xF3, 0x00, 0x10, 0xA3, 0xF9, 0x00, 0x6F, 0xC9, 0xF2, - 0x00, 0xF5, 0xF9, 0xDF, 0x00, 0xF5, 0xFB, 0xDE, 0x00, 0xF5, 0xFD, 0xDD, 0x00, 0xD7, 0xEA, 0xE3, - 0x00, 0x10, 0xA5, 0xEE, 0x00, 0x2D, 0xB2, 0xF4, 0x00, 0x13, 0xA5, 0xF7, 0x00, 0xA5, 0xE1, 0xEB, - 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0xF2, 0x00, 0xFF, 0xFD, 0xEC, 0x00, 0xFC, 0xFC, 0xE6, - 0x00, 0xF7, 0xFC, 0xDF, 0x00, 0xF7, 0xFC, 0xDE, 0x00, 0xF6, 0xFC, 0xDC, 0x00, 0xF5, 0xFC, 0xD7, - 0x00, 0xF4, 0xFC, 0xD3, 0x00, 0xED, 0xF7, 0xC3, 0x00, 0xE5, 0xF1, 0xB4, 0x00, 0xE4, 0xF5, 0xB7, - 0x00, 0xE4, 0xF9, 0xBB, 0x00, 0xEB, 0xFE, 0xD2, 0x00, 0xF2, 0xFF, 0xE9, 0x00, 0xED, 0xFE, 0xDB, - 0x00, 0xE8, 0xF9, 0xCD, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0x9C, 0xD6, 0x35, 0x00, 0x83, 0xC6, 0x2D, - 0x00, 0x6B, 0xB7, 0x25, 0x00, 0x6C, 0xB3, 0x14, 0x00, 0x1A, 0x95, 0xD6, 0x00, 0x15, 0x91, 0xEE, - 0x00, 0x0F, 0x93, 0xEB, 0x00, 0x10, 0x93, 0xE6, 0x00, 0x12, 0x93, 0xE0, 0x00, 0x12, 0x93, 0xE0, - 0x00, 0x52, 0xCA, 0xF4, 0x00, 0x50, 0xCA, 0xF4, 0x00, 0x4E, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF3, - 0x00, 0x4A, 0xC9, 0xF3, 0x00, 0x48, 0xC8, 0xF4, 0x00, 0x46, 0xC6, 0xF6, 0x00, 0x3F, 0xBF, 0xEC, - 0x00, 0x41, 0xBF, 0xEB, 0x00, 0x40, 0xD4, 0xF8, 0x00, 0x33, 0xC9, 0xFC, 0x00, 0x2F, 0xC9, 0xFF, - 0x00, 0x42, 0xC2, 0xEC, 0x00, 0x40, 0xC3, 0xF4, 0x00, 0x3E, 0xC3, 0xFC, 0x00, 0x34, 0xBB, 0xF3, - 0x00, 0x33, 0xBB, 0xF2, 0x00, 0x49, 0xBD, 0xF6, 0x00, 0x38, 0xB7, 0xF8, 0x00, 0x36, 0xB7, 0xF5, - 0x00, 0x34, 0xB7, 0xF2, 0x00, 0x2E, 0xB5, 0xF3, 0x00, 0x27, 0xB3, 0xF5, 0x00, 0x2F, 0xBA, 0xF7, - 0x00, 0x2F, 0xBA, 0xF2, 0x00, 0x30, 0xB5, 0xF1, 0x00, 0x31, 0xB0, 0xF0, 0x00, 0x1E, 0xAC, 0xF6, - 0x00, 0x0C, 0xAA, 0xED, 0x00, 0x7E, 0xD2, 0xEC, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0x80, 0xD9, 0xD2, - 0x00, 0x2E, 0xA9, 0xF8, 0x00, 0x1C, 0xAF, 0xEB, 0x00, 0x02, 0xAA, 0xE5, 0x00, 0xFF, 0xF8, 0xFF, - 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0xF9, 0x00, 0xFF, 0xFD, 0xF4, 0x00, 0xFD, 0xFD, 0xEB, - 0x00, 0xFA, 0xFE, 0xE2, 0x00, 0xF9, 0xFD, 0xE1, 0x00, 0xF7, 0xFC, 0xE0, 0x00, 0xF5, 0xFC, 0xD7, - 0x00, 0xF3, 0xFD, 0xCF, 0x00, 0xF4, 0xFB, 0xE2, 0x00, 0xF6, 0xFD, 0xE7, 0x00, 0xF3, 0xFD, 0xE8, - 0x00, 0xF0, 0xFD, 0xE9, 0x00, 0xEB, 0xFD, 0xD3, 0x00, 0xE5, 0xFC, 0xBD, 0x00, 0xDF, 0xF7, 0xBA, - 0x00, 0xDA, 0xF2, 0xB6, 0x00, 0xE9, 0xFB, 0xD2, 0x00, 0xF1, 0xFC, 0xE6, 0x00, 0xB6, 0xDE, 0x8D, - 0x00, 0x84, 0xC7, 0x3C, 0x00, 0x99, 0xB7, 0x47, 0x00, 0x13, 0xA1, 0xF8, 0x00, 0x04, 0x94, 0xF2, - 0x00, 0x10, 0x94, 0xEE, 0x00, 0x10, 0x94, 0xEC, 0x00, 0x10, 0x95, 0xE9, 0x00, 0x10, 0x95, 0xE9, - 0x00, 0x53, 0xCC, 0xF5, 0x00, 0x50, 0xCB, 0xF3, 0x00, 0x4E, 0xCA, 0xF2, 0x00, 0x4B, 0xC9, 0xF1, - 0x00, 0x48, 0xC7, 0xF0, 0x00, 0x48, 0xCB, 0xF4, 0x00, 0x47, 0xCE, 0xF9, 0x00, 0x40, 0xC4, 0xF2, - 0x00, 0x48, 0xCA, 0xFC, 0x00, 0x3F, 0xC2, 0xF0, 0x00, 0x46, 0xC9, 0xF5, 0x00, 0x46, 0xC7, 0xF4, - 0x00, 0x45, 0xC4, 0xF3, 0x00, 0x38, 0xB4, 0xED, 0x00, 0x2C, 0xA5, 0xE8, 0x00, 0x2E, 0xB0, 0xE1, - 0x00, 0x56, 0xC0, 0xEA, 0x00, 0x6C, 0xC8, 0xE9, 0x00, 0x36, 0xC1, 0xE4, 0x00, 0x50, 0xC9, 0xEB, - 0x00, 0x6A, 0xD1, 0xF1, 0x00, 0x73, 0xD0, 0xF5, 0x00, 0x7D, 0xCF, 0xF9, 0x00, 0x56, 0xC7, 0xF8, - 0x00, 0x1F, 0xAF, 0xE7, 0x00, 0x25, 0xB1, 0xED, 0x00, 0x2B, 0xB2, 0xF4, 0x00, 0x3E, 0xB5, 0xF9, - 0x00, 0x2A, 0xB3, 0xEE, 0x00, 0x1B, 0xAF, 0xF5, 0x00, 0x32, 0xB5, 0xF0, 0x00, 0x3F, 0xB1, 0xF9, - 0x00, 0x26, 0xA9, 0xF2, 0x00, 0x1F, 0xAE, 0xEA, 0x00, 0x3F, 0xB8, 0xF3, 0x00, 0xFB, 0xFF, 0xF3, - 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFB, 0x00, 0xFE, 0xFE, 0xF0, - 0x00, 0xFD, 0xFF, 0xE5, 0x00, 0xFB, 0xFE, 0xE4, 0x00, 0xF8, 0xFC, 0xE3, 0x00, 0xF5, 0xFD, 0xD7, - 0x00, 0xF2, 0xFD, 0xCB, 0x00, 0xF4, 0xFB, 0xEB, 0x00, 0xF6, 0xFE, 0xEE, 0x00, 0xF1, 0xFD, 0xDE, - 0x00, 0xED, 0xFB, 0xCE, 0x00, 0xE2, 0xF9, 0xB0, 0x00, 0xD8, 0xF6, 0x91, 0x00, 0xD2, 0xF3, 0x8A, - 0x00, 0xCC, 0xF1, 0x83, 0x00, 0xCE, 0xEE, 0x96, 0x00, 0xD0, 0xEA, 0xA9, 0x00, 0xDA, 0xEA, 0xC0, - 0x00, 0xF4, 0xFA, 0xE8, 0x00, 0x7E, 0xC6, 0x78, 0x00, 0x59, 0xC0, 0xFF, 0x00, 0x19, 0xA0, 0xEA, - 0x00, 0x10, 0x95, 0xF2, 0x00, 0x0F, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, - 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF2, - 0x00, 0x4A, 0xC8, 0xF2, 0x00, 0x48, 0xC6, 0xF1, 0x00, 0x47, 0xC4, 0xF1, 0x00, 0x48, 0xD2, 0xF3, - 0x00, 0x46, 0xC7, 0xF3, 0x00, 0x4C, 0xC5, 0xFB, 0x00, 0x2B, 0x9A, 0xDC, 0x00, 0x17, 0x83, 0xCD, - 0x00, 0x03, 0x6B, 0xBE, 0x00, 0x00, 0x7F, 0xC5, 0x00, 0x0E, 0x96, 0xD4, 0x00, 0x2E, 0xAC, 0xDB, - 0x00, 0x60, 0xC5, 0xEA, 0x00, 0x75, 0xCC, 0xEF, 0x00, 0x51, 0xCA, 0xEA, 0x00, 0x69, 0xD2, 0xEF, - 0x00, 0x81, 0xDA, 0xF5, 0x00, 0x99, 0xE4, 0xF7, 0x00, 0xB2, 0xEE, 0xF9, 0x00, 0xCE, 0xFA, 0xFF, - 0x00, 0xE2, 0xFE, 0xFF, 0x00, 0x99, 0xE1, 0xFF, 0x00, 0x48, 0xBC, 0xF7, 0x00, 0x10, 0xB4, 0xDC, - 0x00, 0x31, 0xAD, 0xF0, 0x00, 0x27, 0xAC, 0xFB, 0x00, 0x30, 0xB2, 0xF3, 0x00, 0x34, 0xB1, 0xF5, - 0x00, 0x24, 0xAD, 0xF0, 0x00, 0x26, 0xAC, 0xF6, 0x00, 0x97, 0xD1, 0xFC, 0x00, 0xFF, 0xFD, 0xF7, - 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFB, 0x00, 0xFE, 0xFF, 0xF3, 0x00, 0xFD, 0xFF, 0xED, - 0x00, 0xFC, 0xFD, 0xE7, 0x00, 0xFB, 0xFE, 0xE3, 0x00, 0xF9, 0xFE, 0xDF, 0x00, 0xF8, 0xFD, 0xE7, - 0x00, 0xF7, 0xFC, 0xEF, 0x00, 0xF3, 0xFB, 0xEB, 0x00, 0xEF, 0xFD, 0xD8, 0x00, 0xE8, 0xFA, 0xC2, - 0x00, 0xE2, 0xF8, 0xAB, 0x00, 0xD8, 0xF4, 0x9B, 0x00, 0xCE, 0xEF, 0x8A, 0x00, 0xC1, 0xEA, 0x76, - 0x00, 0xB4, 0xE5, 0x61, 0x00, 0xAB, 0xDD, 0x5A, 0x00, 0xA2, 0xD2, 0x61, 0x00, 0xC1, 0xE9, 0x8D, - 0x00, 0xDA, 0xE7, 0xB8, 0x00, 0x96, 0xD4, 0xFF, 0x00, 0x8E, 0xD0, 0xFA, 0x00, 0x41, 0xAD, 0xED, - 0x00, 0x10, 0x95, 0xF1, 0x00, 0x0F, 0x95, 0xF1, 0x00, 0x0E, 0x96, 0xF1, 0x00, 0x0E, 0x96, 0xF1, - 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF4, 0x00, 0x50, 0xCB, 0xF4, 0x00, 0x4E, 0xC9, 0xF3, - 0x00, 0x4B, 0xC8, 0xF3, 0x00, 0x51, 0xC9, 0xF6, 0x00, 0x56, 0xCA, 0xFA, 0x00, 0x44, 0xC0, 0xEA, - 0x00, 0x19, 0x74, 0xC6, 0x00, 0x00, 0x58, 0xAD, 0x00, 0x01, 0x5B, 0xB3, 0x00, 0x06, 0x6F, 0xC0, - 0x00, 0x0B, 0x84, 0xCC, 0x00, 0x00, 0x93, 0xCE, 0x00, 0x11, 0xA7, 0xDF, 0x00, 0x3E, 0xB9, 0xE5, - 0x00, 0x6A, 0xCA, 0xEB, 0x00, 0x7E, 0xD1, 0xF5, 0x00, 0x6B, 0xD3, 0xF0, 0x00, 0x81, 0xDB, 0xF4, - 0x00, 0x97, 0xE3, 0xF8, 0x00, 0xA4, 0xEB, 0xF7, 0x00, 0xB1, 0xF4, 0xF5, 0x00, 0xC7, 0xF7, 0xF9, - 0x00, 0xDC, 0xFA, 0xFC, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xF5, 0x00, 0xBB, 0xEB, 0xFD, - 0x00, 0x22, 0xB4, 0xF2, 0x00, 0x28, 0xAF, 0xFF, 0x00, 0x2F, 0xB0, 0xF6, 0x00, 0x29, 0xB0, 0xF2, - 0x00, 0x22, 0xB1, 0xEE, 0x00, 0x19, 0xA7, 0xF9, 0x00, 0xC9, 0xE6, 0xF4, 0x00, 0xF7, 0xF7, 0xF4, - 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFC, 0xFF, 0xEA, - 0x00, 0xFA, 0xFA, 0xE8, 0x00, 0xFB, 0xFD, 0xE2, 0x00, 0xFB, 0xFF, 0xDC, 0x00, 0xFB, 0xFF, 0xE9, - 0x00, 0xFB, 0xFF, 0xF6, 0x00, 0xF1, 0xFD, 0xDC, 0x00, 0xE7, 0xFB, 0xC3, 0x00, 0xDF, 0xF5, 0xB4, - 0x00, 0xD8, 0xF0, 0xA5, 0x00, 0xCE, 0xEC, 0x94, 0x00, 0xC4, 0xE8, 0x83, 0x00, 0xB7, 0xE5, 0x77, - 0x00, 0xAB, 0xE3, 0x6B, 0x00, 0xA0, 0xDE, 0x52, 0x00, 0x94, 0xD4, 0x55, 0x00, 0x7F, 0xBD, 0x40, - 0x00, 0xD1, 0xE4, 0x98, 0x00, 0x2B, 0xA1, 0xF4, 0x00, 0x2F, 0xA1, 0xF6, 0x00, 0x1F, 0x9B, 0xF3, - 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, - 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x53, 0xCC, 0xF4, 0x00, 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF5, - 0x00, 0x4E, 0xC9, 0xF6, 0x00, 0x4D, 0xC9, 0xF4, 0x00, 0x53, 0xD0, 0xFA, 0x00, 0x2A, 0x86, 0xCD, - 0x00, 0x06, 0x52, 0xB0, 0x00, 0x04, 0x5F, 0xB8, 0x00, 0x0A, 0x73, 0xC8, 0x00, 0x08, 0x82, 0xCE, - 0x00, 0x06, 0x91, 0xD3, 0x00, 0x01, 0xA0, 0xD5, 0x00, 0x24, 0xB4, 0xE6, 0x00, 0x4C, 0xC4, 0xEA, - 0x00, 0x74, 0xD3, 0xED, 0x00, 0x83, 0xD9, 0xF4, 0x00, 0x7E, 0xDC, 0xF3, 0x00, 0x93, 0xE4, 0xF6, - 0x00, 0xA8, 0xEC, 0xF8, 0x00, 0xB5, 0xF2, 0xF9, 0x00, 0xC3, 0xF8, 0xF9, 0x00, 0xD3, 0xFA, 0xFA, - 0x00, 0xE2, 0xFB, 0xFB, 0x00, 0xED, 0xFE, 0xFB, 0x00, 0xEF, 0xF9, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, - 0x00, 0xFF, 0xFD, 0xFF, 0x00, 0x7E, 0xDC, 0xEE, 0x00, 0x26, 0xAD, 0xFD, 0x00, 0x29, 0xAF, 0xF7, - 0x00, 0x2D, 0xB1, 0xF1, 0x00, 0x34, 0xB1, 0xDF, 0x00, 0x09, 0xA6, 0xF6, 0x00, 0x8C, 0xD3, 0xF4, - 0x00, 0xFC, 0xFB, 0xF8, 0x00, 0xFF, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEB, 0x00, 0xFC, 0xFE, 0xE5, - 0x00, 0xFB, 0xFB, 0xE0, 0x00, 0xF9, 0xFC, 0xDE, 0x00, 0xF7, 0xFC, 0xDC, 0x00, 0xFC, 0xFF, 0xEF, - 0x00, 0xF8, 0xFC, 0xEB, 0x00, 0xE8, 0xF5, 0xD0, 0x00, 0xDF, 0xF5, 0xBC, 0x00, 0xD8, 0xF1, 0xAC, - 0x00, 0xD2, 0xED, 0x9D, 0x00, 0xC4, 0xE8, 0x7D, 0x00, 0xB7, 0xE1, 0x6C, 0x00, 0xAB, 0xDC, 0x5E, - 0x00, 0x9E, 0xD7, 0x4F, 0x00, 0x98, 0xC9, 0x5E, 0x00, 0x92, 0xC6, 0x35, 0x00, 0x8B, 0xC9, 0x42, - 0x00, 0x80, 0xB2, 0x4D, 0x00, 0x00, 0x9B, 0xF1, 0x00, 0x17, 0x93, 0xF8, 0x00, 0x15, 0x95, 0xF4, - 0x00, 0x12, 0x97, 0xF1, 0x00, 0x11, 0x96, 0xF0, 0x00, 0x10, 0x95, 0xEF, 0x00, 0x10, 0x95, 0xEF, - 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF5, 0x00, 0x51, 0xCB, 0xF6, - 0x00, 0x50, 0xCB, 0xF8, 0x00, 0x49, 0xC8, 0xF1, 0x00, 0x51, 0xD5, 0xF9, 0x00, 0x15, 0x62, 0xC0, - 0x00, 0x00, 0x5C, 0xBB, 0x00, 0x07, 0x74, 0xCC, 0x00, 0x02, 0x7C, 0xCD, 0x00, 0x02, 0x8D, 0xD4, - 0x00, 0x01, 0x9E, 0xDB, 0x00, 0x08, 0xAD, 0xDC, 0x00, 0x36, 0xC1, 0xED, 0x00, 0x5A, 0xCF, 0xEE, - 0x00, 0x7D, 0xDC, 0xF0, 0x00, 0x87, 0xE1, 0xF3, 0x00, 0x91, 0xE6, 0xF7, 0x00, 0xA5, 0xED, 0xF8, - 0x00, 0xB8, 0xF5, 0xF8, 0x00, 0xC6, 0xF9, 0xFB, 0x00, 0xD4, 0xFD, 0xFD, 0x00, 0xDF, 0xFC, 0xFB, - 0x00, 0xE9, 0xFC, 0xFA, 0x00, 0xF0, 0xFE, 0xFD, 0x00, 0xF7, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0xFE, - 0x00, 0xFC, 0xFE, 0xFB, 0x00, 0xFD, 0xFA, 0xFF, 0x00, 0x1D, 0xAF, 0xE7, 0x00, 0x2A, 0xB0, 0xEE, - 0x00, 0x37, 0xB1, 0xF5, 0x00, 0x24, 0xB8, 0xF6, 0x00, 0x28, 0xB4, 0xF7, 0x00, 0x21, 0xAF, 0xF4, - 0x00, 0x1A, 0xAA, 0xF2, 0x00, 0x9E, 0xD7, 0xF5, 0x00, 0xFC, 0xFF, 0xE9, 0x00, 0xFC, 0xFE, 0xE0, - 0x00, 0xFC, 0xFD, 0xD7, 0x00, 0xF8, 0xFA, 0xDA, 0x00, 0xF3, 0xF7, 0xDD, 0x00, 0xFD, 0xFD, 0xF4, - 0x00, 0xF6, 0xF9, 0xE0, 0x00, 0xDF, 0xEC, 0xC3, 0x00, 0xD7, 0xEF, 0xB5, 0x00, 0xD2, 0xEC, 0xA5, - 0x00, 0xCC, 0xE9, 0x95, 0x00, 0xBB, 0xE5, 0x67, 0x00, 0xAB, 0xDB, 0x55, 0x00, 0x9E, 0xD3, 0x44, - 0x00, 0x91, 0xCB, 0x32, 0x00, 0x85, 0xC8, 0x24, 0x00, 0x79, 0xB4, 0x6A, 0x00, 0x3A, 0x9D, 0xAF, - 0x00, 0x0B, 0x97, 0xFF, 0x00, 0x18, 0x93, 0xF9, 0x00, 0x0F, 0x9B, 0xED, 0x00, 0x12, 0x9A, 0xF0, - 0x00, 0x15, 0x98, 0xF3, 0x00, 0x13, 0x96, 0xF1, 0x00, 0x11, 0x94, 0xEF, 0x00, 0x11, 0x94, 0xEF, - 0x00, 0x58, 0xCF, 0xF4, 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x53, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF6, - 0x00, 0x52, 0xCB, 0xF8, 0x00, 0x52, 0xD5, 0xFA, 0x00, 0x4E, 0xC7, 0xFB, 0x00, 0x00, 0x4C, 0xAD, - 0x00, 0x09, 0x6F, 0xCA, 0x00, 0x0B, 0x7F, 0xD3, 0x00, 0x05, 0x88, 0xD4, 0x00, 0x04, 0x97, 0xDB, - 0x00, 0x04, 0xA7, 0xE1, 0x00, 0x18, 0xB6, 0xE5, 0x00, 0x3F, 0xC7, 0xF1, 0x00, 0x62, 0xD3, 0xF3, - 0x00, 0x86, 0xDF, 0xF4, 0x00, 0x91, 0xE4, 0xF7, 0x00, 0x9B, 0xE9, 0xF9, 0x00, 0xAD, 0xF0, 0xF9, - 0x00, 0xBF, 0xF7, 0xF9, 0x00, 0xCB, 0xFA, 0xFB, 0x00, 0xD7, 0xFC, 0xFD, 0x00, 0xDE, 0xFD, 0xFC, - 0x00, 0xE5, 0xFD, 0xFB, 0x00, 0xEF, 0xFF, 0xFE, 0x00, 0xF9, 0xFF, 0xFF, 0x00, 0xF2, 0xFE, 0xFA, - 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0xC6, 0xE9, 0xFB, 0x00, 0x1D, 0xAF, 0xEC, 0x00, 0x30, 0xB4, 0xF6, - 0x00, 0x2F, 0xB6, 0xF8, 0x00, 0x19, 0xA7, 0xF6, 0x00, 0x26, 0xB0, 0xF0, 0x00, 0x22, 0xAD, 0xF2, - 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x26, 0xA9, 0xF9, 0x00, 0x1C, 0xA6, 0xF6, 0x00, 0x7D, 0xCD, 0xE9, - 0x00, 0xDF, 0xF4, 0xDC, 0x00, 0xEA, 0xFE, 0xAF, 0x00, 0xFD, 0xFD, 0xED, 0x00, 0xFF, 0xFF, 0xEF, - 0x00, 0xFB, 0xF8, 0xD3, 0x00, 0xEC, 0xEE, 0xB4, 0x00, 0xE6, 0xE9, 0xAB, 0x00, 0xD8, 0xE6, 0x89, - 0x00, 0xCB, 0xE2, 0x67, 0x00, 0xB8, 0xE1, 0x52, 0x00, 0xA6, 0xDD, 0x4C, 0x00, 0x74, 0xC5, 0x7E, - 0x00, 0x42, 0xAD, 0xB0, 0x00, 0x22, 0x9B, 0xF3, 0x00, 0x09, 0x9C, 0xFF, 0x00, 0x09, 0x98, 0xF5, - 0x00, 0x10, 0x9C, 0xEE, 0x00, 0x17, 0x99, 0xED, 0x00, 0x14, 0x9D, 0xED, 0x00, 0x14, 0x9B, 0xEF, - 0x00, 0x15, 0x99, 0xF2, 0x00, 0x13, 0x97, 0xF0, 0x00, 0x11, 0x95, 0xEE, 0x00, 0x11, 0x95, 0xEE, - 0x00, 0x5A, 0xD0, 0xF5, 0x00, 0x57, 0xCF, 0xF4, 0x00, 0x54, 0xCE, 0xF3, 0x00, 0x53, 0xCC, 0xF5, - 0x00, 0x53, 0xCB, 0xF7, 0x00, 0x4C, 0xD3, 0xF4, 0x00, 0x2C, 0x9A, 0xDD, 0x00, 0x03, 0x5D, 0xC1, - 0x00, 0x05, 0x72, 0xC8, 0x00, 0x06, 0x83, 0xD2, 0x00, 0x07, 0x93, 0xDC, 0x00, 0x07, 0xA2, 0xE1, - 0x00, 0x08, 0xB0, 0xE7, 0x00, 0x27, 0xBF, 0xEE, 0x00, 0x47, 0xCD, 0xF6, 0x00, 0x6B, 0xD8, 0xF7, - 0x00, 0x8E, 0xE2, 0xF9, 0x00, 0x9A, 0xE7, 0xFA, 0x00, 0xA6, 0xEC, 0xFB, 0x00, 0xB6, 0xF3, 0xFA, - 0x00, 0xC7, 0xF9, 0xFA, 0x00, 0xD0, 0xFB, 0xFB, 0x00, 0xD9, 0xFC, 0xFD, 0x00, 0xDD, 0xFD, 0xFC, - 0x00, 0xE2, 0xFE, 0xFC, 0x00, 0xEE, 0xFF, 0xFE, 0x00, 0xFB, 0xFF, 0xFF, 0x00, 0xEA, 0xFD, 0xF7, - 0x00, 0xFF, 0xFE, 0xFE, 0x00, 0x8F, 0xD7, 0xF7, 0x00, 0x1E, 0xAF, 0xF1, 0x00, 0x2E, 0xB0, 0xF6, - 0x00, 0x17, 0xAB, 0xEB, 0x00, 0xDF, 0xF7, 0xFD, 0x00, 0x24, 0xAC, 0xE9, 0x00, 0x22, 0xAC, 0xF0, - 0x00, 0x21, 0xAC, 0xF8, 0x00, 0x26, 0xAE, 0xF6, 0x00, 0x2B, 0xB0, 0xF5, 0x00, 0x19, 0xA9, 0xF4, - 0x00, 0x08, 0xA2, 0xF3, 0x00, 0x22, 0xA7, 0xF9, 0x00, 0x4C, 0xC1, 0xF2, 0x00, 0x6D, 0xCD, 0xEE, - 0x00, 0x7D, 0xC9, 0xDB, 0x00, 0x7F, 0xCA, 0xC2, 0x00, 0x81, 0xC5, 0xC6, 0x00, 0x60, 0xBC, 0xCB, - 0x00, 0x40, 0xB3, 0xCF, 0x00, 0x24, 0xA7, 0xE9, 0x00, 0x07, 0x9B, 0xFF, 0x00, 0x10, 0x9D, 0xFF, - 0x00, 0x1A, 0x9F, 0xFF, 0x00, 0x0F, 0x98, 0xE9, 0x00, 0x14, 0x9C, 0xF9, 0x00, 0x14, 0x9C, 0xF7, - 0x00, 0x14, 0x9B, 0xF4, 0x00, 0x17, 0x9D, 0xF1, 0x00, 0x19, 0x9E, 0xED, 0x00, 0x16, 0x9C, 0xEF, - 0x00, 0x14, 0x99, 0xF1, 0x00, 0x12, 0x97, 0xEF, 0x00, 0x10, 0x95, 0xED, 0x00, 0x10, 0x95, 0xED, - 0x00, 0x5C, 0xD1, 0xF6, 0x00, 0x58, 0xD0, 0xF4, 0x00, 0x55, 0xCF, 0xF3, 0x00, 0x54, 0xCD, 0xF5, - 0x00, 0x53, 0xCC, 0xF7, 0x00, 0x51, 0xD5, 0xF6, 0x00, 0x16, 0x7B, 0xCE, 0x00, 0x03, 0x67, 0xC6, - 0x00, 0x06, 0x7B, 0xCF, 0x00, 0x05, 0x8B, 0xD7, 0x00, 0x05, 0x9B, 0xDF, 0x00, 0x07, 0xA8, 0xE4, - 0x00, 0x09, 0xB6, 0xEA, 0x00, 0x2A, 0xC3, 0xF1, 0x00, 0x4C, 0xD1, 0xF7, 0x00, 0x6C, 0xDB, 0xF8, - 0x00, 0x8D, 0xE4, 0xFA, 0x00, 0x9C, 0xEA, 0xFA, 0x00, 0xAB, 0xEF, 0xFB, 0x00, 0xBC, 0xF5, 0xFA, - 0x00, 0xCD, 0xFA, 0xFA, 0x00, 0xD4, 0xFB, 0xFB, 0x00, 0xDB, 0xFC, 0xFD, 0x00, 0xDC, 0xFD, 0xFC, - 0x00, 0xDD, 0xFE, 0xFC, 0x00, 0xE3, 0xFE, 0xFC, 0x00, 0xEA, 0xFE, 0xFD, 0x00, 0xFE, 0xFF, 0xFD, - 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x27, 0xC0, 0xDE, 0x00, 0x26, 0xB4, 0xF5, 0x00, 0x1E, 0xB0, 0xF8, - 0x00, 0x4D, 0xC6, 0xFF, 0x00, 0xFF, 0xF8, 0xEF, 0x00, 0xFE, 0xFF, 0xFA, 0x00, 0x8B, 0xD8, 0xF6, - 0x00, 0x18, 0xA7, 0xF3, 0x00, 0x1D, 0xA9, 0xF4, 0x00, 0x22, 0xAC, 0xF5, 0x00, 0x22, 0xAB, 0xF2, - 0x00, 0x22, 0xAB, 0xF0, 0x00, 0x1A, 0xA3, 0xF2, 0x00, 0x1A, 0xA6, 0xEE, 0x00, 0x17, 0xA8, 0xF4, - 0x00, 0x0D, 0xA2, 0xF3, 0x00, 0x10, 0xA4, 0xF2, 0x00, 0x14, 0xA3, 0xFF, 0x00, 0x15, 0xA3, 0xFC, - 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x17, 0xA2, 0xF2, 0x00, 0x18, 0xA1, 0xEC, 0x00, 0x0D, 0x99, 0xFD, - 0x00, 0x16, 0x9A, 0xED, 0x00, 0x00, 0xA0, 0xFF, 0x00, 0x2B, 0x9C, 0xE8, 0x00, 0x60, 0xB5, 0xAF, - 0x00, 0x10, 0x99, 0xF7, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x18, 0x9D, 0xED, 0x00, 0x16, 0x9B, 0xEE, - 0x00, 0x13, 0x99, 0xEF, 0x00, 0x11, 0x97, 0xED, 0x00, 0x0F, 0x95, 0xEB, 0x00, 0x0F, 0x95, 0xEB, - 0x00, 0x5E, 0xD2, 0xF7, 0x00, 0x5A, 0xD1, 0xF4, 0x00, 0x56, 0xD0, 0xF2, 0x00, 0x54, 0xCE, 0xF5, - 0x00, 0x53, 0xCC, 0xF7, 0x00, 0x56, 0xD7, 0xF7, 0x00, 0x00, 0x5B, 0xC0, 0x00, 0x03, 0x70, 0xCB, - 0x00, 0x06, 0x84, 0xD6, 0x00, 0x05, 0x94, 0xDC, 0x00, 0x03, 0xA3, 0xE2, 0x00, 0x07, 0xAF, 0xE8, - 0x00, 0x0B, 0xBB, 0xEE, 0x00, 0x2D, 0xC8, 0xF3, 0x00, 0x50, 0xD5, 0xF8, 0x00, 0x6E, 0xDE, 0xF9, - 0x00, 0x8C, 0xE6, 0xFA, 0x00, 0x9F, 0xEC, 0xFB, 0x00, 0xB1, 0xF2, 0xFB, 0x00, 0xC2, 0xF7, 0xFA, - 0x00, 0xD3, 0xFB, 0xF9, 0x00, 0xD8, 0xFC, 0xFB, 0x00, 0xDD, 0xFC, 0xFD, 0x00, 0xDB, 0xFD, 0xFC, - 0x00, 0xD8, 0xFE, 0xFC, 0x00, 0xD8, 0xFD, 0xFB, 0x00, 0xD9, 0xFC, 0xFA, 0x00, 0xE4, 0xFA, 0xFA, - 0x00, 0xA3, 0xE9, 0xF6, 0x00, 0x2A, 0xAC, 0xFB, 0x00, 0x2E, 0xB9, 0xFA, 0x00, 0x1A, 0xAD, 0xED, - 0x00, 0x99, 0xDA, 0xF7, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFC, 0x00, 0xFE, 0xFE, 0xFC, - 0x00, 0xFF, 0xFF, 0xFD, 0x00, 0x8C, 0xD4, 0xF9, 0x00, 0x19, 0xA8, 0xF5, 0x00, 0x17, 0xA9, 0xF7, - 0x00, 0x16, 0xA9, 0xF8, 0x00, 0x1A, 0xA7, 0xF3, 0x00, 0x1E, 0xA5, 0xED, 0x00, 0x1F, 0xA7, 0xF1, - 0x00, 0x20, 0xA9, 0xF6, 0x00, 0x1D, 0xA7, 0xF6, 0x00, 0x1A, 0xA5, 0xF6, 0x00, 0x16, 0xA3, 0xF8, - 0x00, 0x12, 0xA1, 0xFA, 0x00, 0x0A, 0x9D, 0xFC, 0x00, 0x03, 0x98, 0xFE, 0x00, 0x25, 0xA1, 0xF9, - 0x00, 0x6F, 0xC0, 0xB0, 0x00, 0xCF, 0xC9, 0x5D, 0x00, 0xFF, 0xE5, 0x27, 0x00, 0x73, 0xB4, 0xB3, - 0x00, 0x0B, 0x97, 0xF9, 0x00, 0x11, 0x9A, 0xF3, 0x00, 0x17, 0x9D, 0xED, 0x00, 0x15, 0x9B, 0xEE, - 0x00, 0x13, 0x9A, 0xEE, 0x00, 0x11, 0x98, 0xEC, 0x00, 0x0F, 0x96, 0xEA, 0x00, 0x0F, 0x96, 0xEA, - 0x00, 0x5D, 0xD1, 0xF6, 0x00, 0x5A, 0xD1, 0xF5, 0x00, 0x58, 0xD2, 0xF4, 0x00, 0x53, 0xCE, 0xF3, - 0x00, 0x56, 0xD1, 0xFA, 0x00, 0x3F, 0xB1, 0xE6, 0x00, 0x01, 0x64, 0xC6, 0x00, 0x02, 0x75, 0xCE, - 0x00, 0x04, 0x87, 0xD7, 0x00, 0x02, 0x95, 0xDD, 0x00, 0x00, 0xA4, 0xE4, 0x00, 0x03, 0xB0, 0xEA, - 0x00, 0x06, 0xBD, 0xF1, 0x00, 0x1B, 0xC8, 0xF2, 0x00, 0x42, 0xD5, 0xFB, 0x00, 0x63, 0xDD, 0xFB, - 0x00, 0x84, 0xE5, 0xFB, 0x00, 0x98, 0xEB, 0xFC, 0x00, 0xAB, 0xF1, 0xFC, 0x00, 0xBD, 0xF8, 0xFF, - 0x00, 0xCF, 0xFF, 0xFF, 0x00, 0xCF, 0xFC, 0xFF, 0x00, 0xCF, 0xF9, 0xFB, 0x00, 0xD2, 0xFE, 0xFD, - 0x00, 0xD4, 0xFF, 0xFF, 0x00, 0xC6, 0xF9, 0xFF, 0x00, 0xB7, 0xEE, 0xFF, 0x00, 0x59, 0xD7, 0xD9, - 0x00, 0x40, 0xB9, 0xE9, 0x00, 0x2E, 0xB9, 0xFF, 0x00, 0x2B, 0xB1, 0xEF, 0x00, 0x27, 0xAF, 0xEB, - 0x00, 0xDD, 0xEF, 0xF1, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0xFD, - 0x00, 0xFF, 0xFD, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xC1, 0xE8, 0xF0, - 0x00, 0x83, 0xCD, 0xE6, 0x00, 0x52, 0xBB, 0xE8, 0x00, 0x21, 0xA9, 0xEB, 0x00, 0x13, 0xA1, 0xFF, - 0x00, 0x06, 0x9F, 0xF7, 0x00, 0x0F, 0x9F, 0xF8, 0x00, 0x18, 0xA3, 0xEA, 0x00, 0x43, 0xB1, 0xE0, - 0x00, 0x6D, 0xC2, 0xC9, 0x00, 0xAF, 0xD6, 0x99, 0x00, 0xF1, 0xEB, 0x6A, 0x00, 0xEB, 0xEE, 0x31, - 0x00, 0xF8, 0xE6, 0x47, 0x00, 0xFF, 0xE1, 0x3A, 0x00, 0xFC, 0xE1, 0x41, 0x00, 0x00, 0x98, 0xF4, - 0x00, 0x19, 0xA1, 0xFC, 0x00, 0x15, 0x9E, 0xF6, 0x00, 0x11, 0x9A, 0xF1, 0x00, 0x13, 0x9A, 0xF0, - 0x00, 0x14, 0x99, 0xF0, 0x00, 0x12, 0x97, 0xEE, 0x00, 0x10, 0x95, 0xEC, 0x00, 0x10, 0x95, 0xEC, - 0x00, 0x5C, 0xCF, 0xF5, 0x00, 0x5A, 0xD1, 0xF6, 0x00, 0x59, 0xD4, 0xF6, 0x00, 0x51, 0xCD, 0xF2, - 0x00, 0x59, 0xD6, 0xFE, 0x00, 0x29, 0x8B, 0xD5, 0x00, 0x02, 0x6C, 0xCB, 0x00, 0x01, 0x7A, 0xD1, - 0x00, 0x01, 0x89, 0xD8, 0x00, 0x00, 0x97, 0xDE, 0x00, 0x00, 0xA5, 0xE5, 0x00, 0x00, 0xB2, 0xEC, - 0x00, 0x02, 0xBE, 0xF3, 0x00, 0x08, 0xC7, 0xF1, 0x00, 0x35, 0xD5, 0xFE, 0x00, 0x58, 0xDD, 0xFD, - 0x00, 0x7C, 0xE4, 0xFB, 0x00, 0x91, 0xEA, 0xFC, 0x00, 0xA6, 0xEF, 0xFE, 0x00, 0xB0, 0xF2, 0xFE, - 0x00, 0xBA, 0xF5, 0xFE, 0x00, 0xBD, 0xF5, 0xFC, 0x00, 0xC0, 0xF5, 0xF9, 0x00, 0xC0, 0xF7, 0xF6, - 0x00, 0xC1, 0xF9, 0xF4, 0x00, 0xC6, 0xFC, 0xFC, 0x00, 0xCC, 0xFF, 0xFF, 0x00, 0xC1, 0xF8, 0xF7, - 0x00, 0x59, 0xCC, 0xF3, 0x00, 0x38, 0xB0, 0xF2, 0x00, 0x37, 0xBA, 0xF5, 0x00, 0x29, 0xB4, 0xF7, - 0x00, 0xFC, 0xFB, 0xF8, 0x00, 0xFC, 0xFD, 0xFF, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0xFF, - 0x00, 0xFF, 0xFC, 0xF6, 0x00, 0xFC, 0xFE, 0xF2, 0x00, 0xF6, 0xFF, 0xEE, 0x00, 0xFC, 0xFF, 0xE9, - 0x00, 0xFF, 0xFF, 0xE4, 0x00, 0xFF, 0xFF, 0xD7, 0x00, 0xFF, 0xFF, 0xCA, 0x00, 0xFF, 0xFB, 0xF1, - 0x00, 0xFF, 0xFF, 0xDF, 0x00, 0xFC, 0xFD, 0xC1, 0x00, 0xF6, 0xFF, 0x88, 0x00, 0xFB, 0xFD, 0x91, - 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFC, 0x6C, 0x00, 0xF9, 0xF6, 0x59, 0x00, 0xF8, 0xEF, 0x58, - 0x00, 0xF7, 0xE9, 0x57, 0x00, 0xF6, 0xE3, 0x59, 0x00, 0xD0, 0xD2, 0x67, 0x00, 0x08, 0x98, 0xFF, - 0x00, 0x17, 0x9A, 0xEF, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x0C, 0x98, 0xF4, 0x00, 0x10, 0x99, 0xF3, - 0x00, 0x15, 0x99, 0xF1, 0x00, 0x13, 0x97, 0xEF, 0x00, 0x11, 0x95, 0xED, 0x00, 0x11, 0x95, 0xED, - 0x00, 0x5E, 0xD1, 0xF9, 0x00, 0x5B, 0xD3, 0xF7, 0x00, 0x59, 0xD4, 0xF6, 0x00, 0x57, 0xD3, 0xF8, - 0x00, 0x5E, 0xDA, 0xFF, 0x00, 0x19, 0x70, 0xCD, 0x00, 0x02, 0x6D, 0xCC, 0x00, 0x03, 0x7B, 0xD2, - 0x00, 0x04, 0x88, 0xD9, 0x00, 0x04, 0x96, 0xDF, 0x00, 0x04, 0xA5, 0xE6, 0x00, 0x01, 0xAD, 0xE6, - 0x00, 0x00, 0xB4, 0xE7, 0x00, 0x06, 0xBE, 0xEA, 0x00, 0x23, 0xCA, 0xF5, 0x00, 0x4B, 0xD7, 0xF8, - 0x00, 0x74, 0xE3, 0xFB, 0x00, 0x89, 0xE8, 0xFC, 0x00, 0x9E, 0xEC, 0xFE, 0x00, 0xA5, 0xED, 0xFE, - 0x00, 0xAB, 0xEE, 0xFE, 0x00, 0xAD, 0xEF, 0xFB, 0x00, 0xB0, 0xEF, 0xF9, 0x00, 0xB3, 0xF2, 0xF8, - 0x00, 0xB6, 0xF5, 0xF8, 0x00, 0xB5, 0xF8, 0xFC, 0x00, 0xB5, 0xFB, 0xFF, 0x00, 0xD9, 0xF3, 0xFF, - 0x00, 0x1A, 0xB9, 0xF1, 0x00, 0x28, 0xB3, 0xF3, 0x00, 0x2A, 0xB3, 0xF6, 0x00, 0x73, 0xCE, 0xF3, - 0x00, 0xFD, 0xFD, 0xF5, 0x00, 0xFD, 0xFE, 0xF9, 0x00, 0xFD, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0xF8, - 0x00, 0xFF, 0xFD, 0xF3, 0x00, 0xFD, 0xFE, 0xEE, 0x00, 0xFA, 0xFE, 0xE9, 0x00, 0xFC, 0xFF, 0xE3, - 0x00, 0xFF, 0xFF, 0xDE, 0x00, 0xFF, 0xFF, 0xD0, 0x00, 0xFF, 0xFF, 0xC2, 0x00, 0xFC, 0xFA, 0xD6, - 0x00, 0xFF, 0xFC, 0xF3, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0xFC, 0xFA, 0xC4, 0x00, 0xFC, 0xFF, 0x84, - 0x00, 0xFB, 0xFA, 0x8A, 0x00, 0xFA, 0xF6, 0x79, 0x00, 0xF9, 0xF2, 0x68, 0x00, 0xF6, 0xED, 0x5E, - 0x00, 0xF4, 0xE8, 0x53, 0x00, 0xF7, 0xE8, 0x48, 0x00, 0x87, 0xBC, 0xA8, 0x00, 0x10, 0x9A, 0xFB, - 0x00, 0x17, 0x9B, 0xF1, 0x00, 0x14, 0x9A, 0xF1, 0x00, 0x10, 0x9A, 0xF1, 0x00, 0x13, 0x99, 0xF2, - 0x00, 0x16, 0x98, 0xF3, 0x00, 0x14, 0x96, 0xF1, 0x00, 0x12, 0x94, 0xEF, 0x00, 0x12, 0x94, 0xEF, - 0x00, 0x61, 0xD4, 0xFC, 0x00, 0x5D, 0xD4, 0xF9, 0x00, 0x58, 0xD4, 0xF6, 0x00, 0x55, 0xD1, 0xF5, - 0x00, 0x53, 0xCE, 0xF5, 0x00, 0x01, 0x4D, 0xBD, 0x00, 0x02, 0x6E, 0xCD, 0x00, 0x04, 0x7B, 0xD3, - 0x00, 0x06, 0x87, 0xDA, 0x00, 0x09, 0x96, 0xE0, 0x00, 0x0C, 0xA5, 0xE6, 0x00, 0x0A, 0xB0, 0xE9, - 0x00, 0x09, 0xBA, 0xEB, 0x00, 0x15, 0xC5, 0xF3, 0x00, 0x21, 0xD0, 0xFB, 0x00, 0x46, 0xD9, 0xFB, - 0x00, 0x6B, 0xE3, 0xFB, 0x00, 0x81, 0xE6, 0xFC, 0x00, 0x97, 0xE9, 0xFD, 0x00, 0x99, 0xE8, 0xFD, - 0x00, 0x9B, 0xE8, 0xFD, 0x00, 0x9D, 0xE8, 0xFB, 0x00, 0x9F, 0xE9, 0xF8, 0x00, 0xA5, 0xEE, 0xFA, - 0x00, 0xAB, 0xF2, 0xFC, 0x00, 0xB0, 0xEF, 0xFB, 0x00, 0xB4, 0xEB, 0xFB, 0x00, 0x89, 0xDD, 0xF8, - 0x00, 0x27, 0xB4, 0xF3, 0x00, 0x3E, 0xBD, 0xF7, 0x00, 0x1E, 0xAC, 0xF7, 0x00, 0xBC, 0xE8, 0xF0, - 0x00, 0xFE, 0xFF, 0xF2, 0x00, 0xFD, 0xFF, 0xF3, 0x00, 0xFD, 0xFE, 0xF4, 0x00, 0xFD, 0xFE, 0xF2, - 0x00, 0xFE, 0xFE, 0xEF, 0x00, 0xFE, 0xFE, 0xE9, 0x00, 0xFE, 0xFE, 0xE3, 0x00, 0xFD, 0xFD, 0xDD, - 0x00, 0xFD, 0xFD, 0xD7, 0x00, 0xFC, 0xFE, 0xC8, 0x00, 0xFB, 0xFF, 0xB9, 0x00, 0xF5, 0xFE, 0x9F, - 0x00, 0xFF, 0xFF, 0xCE, 0x00, 0xFF, 0xF9, 0xF5, 0x00, 0xFF, 0xFF, 0xC8, 0x00, 0xFC, 0xF7, 0xBD, - 0x00, 0xF8, 0xF8, 0x7A, 0x00, 0xF8, 0xF5, 0x6B, 0x00, 0xF9, 0xF3, 0x5C, 0x00, 0xF5, 0xED, 0x55, - 0x00, 0xF1, 0xE8, 0x4F, 0x00, 0xF8, 0xEE, 0x37, 0x00, 0x3E, 0xA6, 0xE9, 0x00, 0x17, 0x9C, 0xF5, - 0x00, 0x17, 0x9D, 0xF4, 0x00, 0x15, 0x9C, 0xF1, 0x00, 0x14, 0x9B, 0xEE, 0x00, 0x15, 0x99, 0xF1, - 0x00, 0x17, 0x97, 0xF4, 0x00, 0x15, 0x95, 0xF2, 0x00, 0x13, 0x93, 0xF0, 0x00, 0x13, 0x93, 0xF0, - 0x00, 0x66, 0xD6, 0xFB, 0x00, 0x5E, 0xD1, 0xF4, 0x00, 0x5F, 0xD3, 0xF6, 0x00, 0x59, 0xD7, 0xF9, - 0x00, 0x39, 0x9D, 0xDA, 0x00, 0x08, 0x58, 0xBE, 0x00, 0x08, 0x6C, 0xCD, 0x00, 0x0C, 0x79, 0xD2, - 0x00, 0x0F, 0x87, 0xD7, 0x00, 0x11, 0x96, 0xDF, 0x00, 0x13, 0xA5, 0xE7, 0x00, 0x13, 0xB0, 0xEA, - 0x00, 0x1B, 0xC2, 0xF5, 0x00, 0x0F, 0xC8, 0xF3, 0x00, 0x16, 0xD0, 0xF9, 0x00, 0x27, 0xD2, 0xF4, - 0x00, 0x4B, 0xD6, 0xF7, 0x00, 0x60, 0xDA, 0xF8, 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x7F, 0xDF, 0xF9, - 0x00, 0x87, 0xE0, 0xFA, 0x00, 0x8C, 0xE4, 0xFB, 0x00, 0x91, 0xE7, 0xFB, 0x00, 0x95, 0xEA, 0xFC, - 0x00, 0x9A, 0xED, 0xFC, 0x00, 0x9E, 0xEA, 0xFB, 0x00, 0xA3, 0xE7, 0xFA, 0x00, 0x5E, 0xCC, 0xFA, - 0x00, 0x2C, 0xB6, 0xF5, 0x00, 0x24, 0xB8, 0xF9, 0x00, 0x14, 0xB1, 0xF5, 0x00, 0xFF, 0xFB, 0xFF, - 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFE, 0xEC, - 0x00, 0xFD, 0xFD, 0xEA, 0x00, 0xFD, 0xFD, 0xE3, 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFD, 0xFD, 0xD5, - 0x00, 0xFD, 0xFD, 0xCE, 0x00, 0xFC, 0xFC, 0xC1, 0x00, 0xFB, 0xFB, 0xB4, 0x00, 0xF5, 0xFA, 0x8D, - 0x00, 0xF8, 0xFC, 0x89, 0x00, 0xF8, 0xFA, 0xCB, 0x00, 0xF7, 0xFE, 0xF1, 0x00, 0xF9, 0xFF, 0xBD, - 0x00, 0xFA, 0xF9, 0xC2, 0x00, 0xFB, 0xF8, 0xAC, 0x00, 0xFC, 0xF7, 0x96, 0x00, 0xF9, 0xF4, 0x91, - 0x00, 0xF7, 0xF0, 0x8C, 0x00, 0xFF, 0xE4, 0xA8, 0x00, 0x00, 0x95, 0xF6, 0x00, 0x07, 0x99, 0xF6, - 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x15, 0x9C, 0xF0, 0x00, 0x15, 0x9A, 0xF2, - 0x00, 0x15, 0x98, 0xF4, 0x00, 0x14, 0x97, 0xF2, 0x00, 0x12, 0x95, 0xF1, 0x00, 0x12, 0x95, 0xF1, - 0x00, 0x6A, 0xD9, 0xFA, 0x00, 0x60, 0xCE, 0xF0, 0x00, 0x66, 0xD2, 0xF6, 0x00, 0x5C, 0xDD, 0xFD, - 0x00, 0x1E, 0x6C, 0xC0, 0x00, 0x0E, 0x63, 0xBE, 0x00, 0x0E, 0x69, 0xCD, 0x00, 0x13, 0x78, 0xD0, - 0x00, 0x18, 0x87, 0xD4, 0x00, 0x19, 0x96, 0xDE, 0x00, 0x1A, 0xA6, 0xE9, 0x00, 0x13, 0xA8, 0xE3, - 0x00, 0x1D, 0xBA, 0xEE, 0x00, 0x0C, 0xBD, 0xEA, 0x00, 0x22, 0xC5, 0xF6, 0x00, 0x13, 0xC5, 0xEC, - 0x00, 0x2A, 0xCA, 0xF2, 0x00, 0x40, 0xCF, 0xF3, 0x00, 0x56, 0xD3, 0xF4, 0x00, 0x65, 0xD6, 0xF5, - 0x00, 0x74, 0xD9, 0xF7, 0x00, 0x7B, 0xDF, 0xFA, 0x00, 0x82, 0xE4, 0xFE, 0x00, 0x86, 0xE6, 0xFD, - 0x00, 0x89, 0xE7, 0xFD, 0x00, 0x8D, 0xE4, 0xFB, 0x00, 0x92, 0xE2, 0xF9, 0x00, 0x33, 0xBB, 0xFC, - 0x00, 0x31, 0xB9, 0xF6, 0x00, 0x31, 0xBA, 0xFD, 0x00, 0x57, 0xC4, 0xF7, 0x00, 0xF3, 0xFF, 0xDE, - 0x00, 0xFD, 0xFF, 0xE6, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0xFF, 0xFE, 0xE6, - 0x00, 0xFD, 0xFC, 0xE5, 0x00, 0xFD, 0xFC, 0xDD, 0x00, 0xFD, 0xFC, 0xD5, 0x00, 0xFD, 0xFD, 0xCD, - 0x00, 0xFD, 0xFD, 0xC5, 0x00, 0xFC, 0xFA, 0xBA, 0x00, 0xFB, 0xF7, 0xAF, 0x00, 0xFE, 0xF9, 0x9E, - 0x00, 0xFF, 0xFB, 0x8D, 0x00, 0xFA, 0xFE, 0x77, 0x00, 0xF4, 0xFB, 0x7D, 0x00, 0xF8, 0xF7, 0xD2, - 0x00, 0xFD, 0xFF, 0xEE, 0x00, 0xFE, 0xFD, 0xDF, 0x00, 0xFE, 0xFB, 0xD0, 0x00, 0xFD, 0xFA, 0xCD, - 0x00, 0xFC, 0xF9, 0xC9, 0x00, 0xA6, 0xD2, 0xCD, 0x00, 0x02, 0x98, 0xEA, 0x00, 0x1E, 0xA0, 0xEC, - 0x00, 0x13, 0x9E, 0xF9, 0x00, 0x15, 0x9E, 0xF6, 0x00, 0x16, 0x9D, 0xF2, 0x00, 0x15, 0x9B, 0xF2, - 0x00, 0x14, 0x99, 0xF3, 0x00, 0x13, 0x98, 0xF2, 0x00, 0x12, 0x97, 0xF1, 0x00, 0x12, 0x97, 0xF1, - 0x00, 0x55, 0xD4, 0xF3, 0x00, 0x5B, 0xD1, 0xF0, 0x00, 0x69, 0xD6, 0xF6, 0x00, 0x6D, 0xE2, 0xFF, - 0x00, 0x0B, 0x4F, 0xA7, 0x00, 0x11, 0x60, 0xBE, 0x00, 0x0F, 0x6A, 0xCD, 0x00, 0x1F, 0x83, 0xD5, - 0x00, 0x1E, 0x89, 0xDC, 0x00, 0x0F, 0x8B, 0xDD, 0x00, 0x1A, 0x9B, 0xE0, 0x00, 0x22, 0xB0, 0xF3, - 0x00, 0x1D, 0xAA, 0xE0, 0x00, 0x13, 0xAE, 0xDF, 0x00, 0x25, 0xBC, 0xEE, 0x00, 0x14, 0xB9, 0xE6, - 0x00, 0x1F, 0xC1, 0xEF, 0x00, 0x25, 0xC7, 0xEF, 0x00, 0x2B, 0xCD, 0xEE, 0x00, 0x3C, 0xCD, 0xF0, - 0x00, 0x4E, 0xCE, 0xF3, 0x00, 0x5B, 0xD6, 0xF8, 0x00, 0x68, 0xDE, 0xFE, 0x00, 0x6D, 0xDD, 0xFC, - 0x00, 0x73, 0xDC, 0xFA, 0x00, 0x75, 0xDD, 0xF5, 0x00, 0x70, 0xD3, 0xF6, 0x00, 0x30, 0xBA, 0xFB, - 0x00, 0x33, 0xB8, 0xF5, 0x00, 0x24, 0xB5, 0xFE, 0x00, 0xA3, 0xDE, 0xE4, 0x00, 0xF9, 0xFF, 0xDC, - 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFE, 0xFE, 0xDC, 0x00, 0xFF, 0xFF, 0xDB, 0x00, 0xFE, 0xFE, 0xDA, - 0x00, 0xFC, 0xFD, 0xD9, 0x00, 0xFC, 0xFD, 0xD2, 0x00, 0xFC, 0xFD, 0xCA, 0x00, 0xFD, 0xFD, 0xC3, - 0x00, 0xFD, 0xFD, 0xBB, 0x00, 0xFC, 0xFB, 0xAF, 0x00, 0xFC, 0xFA, 0xA2, 0x00, 0xFD, 0xFA, 0x92, - 0x00, 0xFE, 0xFB, 0x83, 0x00, 0xFB, 0xFD, 0x6A, 0x00, 0xF8, 0xFC, 0x60, 0x00, 0xFA, 0xF8, 0x5D, - 0x00, 0xFC, 0xF7, 0x4C, 0x00, 0xFD, 0xF4, 0x76, 0x00, 0xFE, 0xF2, 0xA0, 0x00, 0xF5, 0xEC, 0x87, - 0x00, 0xF7, 0xE3, 0x5F, 0x00, 0x50, 0xBB, 0xB4, 0x00, 0x0C, 0x99, 0xFE, 0x00, 0x1A, 0x9E, 0xF7, - 0x00, 0x15, 0x9D, 0xF6, 0x00, 0x15, 0x9D, 0xF4, 0x00, 0x15, 0x9C, 0xF2, 0x00, 0x14, 0x9B, 0xF2, - 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, - 0x00, 0x66, 0xD3, 0xFD, 0x00, 0x69, 0xD6, 0xF9, 0x00, 0x6B, 0xD9, 0xF5, 0x00, 0x4E, 0xB6, 0xDC, - 0x00, 0x18, 0x52, 0xAE, 0x00, 0x1C, 0x66, 0xC6, 0x00, 0x00, 0x5A, 0xBD, 0x00, 0x1A, 0x7D, 0xCA, - 0x00, 0x15, 0x7B, 0xD4, 0x00, 0x04, 0x81, 0xDC, 0x00, 0x2A, 0xA0, 0xE7, 0x00, 0x00, 0x88, 0xD3, - 0x00, 0x2D, 0xAB, 0xE2, 0x00, 0x23, 0xA7, 0xDC, 0x00, 0x29, 0xB3, 0xE6, 0x00, 0x16, 0xAD, 0xE0, - 0x00, 0x14, 0xB7, 0xEB, 0x00, 0x15, 0xB9, 0xEA, 0x00, 0x16, 0xBA, 0xE9, 0x00, 0x1F, 0xBE, 0xEC, - 0x00, 0x28, 0xC2, 0xEE, 0x00, 0x3B, 0xCD, 0xF6, 0x00, 0x4E, 0xD8, 0xFE, 0x00, 0x55, 0xD5, 0xFB, - 0x00, 0x5D, 0xD1, 0xF7, 0x00, 0x5D, 0xD6, 0xEF, 0x00, 0x4E, 0xC4, 0xF3, 0x00, 0x2E, 0xB9, 0xFA, - 0x00, 0x35, 0xB8, 0xF4, 0x00, 0x17, 0xB1, 0xFF, 0x00, 0xF0, 0xF7, 0xD1, 0x00, 0xFE, 0xFF, 0xDA, - 0x00, 0xFC, 0xFC, 0xD2, 0x00, 0xFD, 0xFD, 0xD1, 0x00, 0xFD, 0xFE, 0xD0, 0x00, 0xFC, 0xFD, 0xCF, - 0x00, 0xFB, 0xFD, 0xCD, 0x00, 0xFC, 0xFD, 0xC6, 0x00, 0xFC, 0xFD, 0xBF, 0x00, 0xFD, 0xFD, 0xB9, - 0x00, 0xFD, 0xFC, 0xB2, 0x00, 0xFD, 0xFC, 0xA3, 0x00, 0xFD, 0xFC, 0x95, 0x00, 0xFC, 0xFC, 0x87, - 0x00, 0xFC, 0xFB, 0x78, 0x00, 0xFD, 0xFA, 0x6C, 0x00, 0xFD, 0xF8, 0x5F, 0x00, 0xF9, 0xF6, 0x45, - 0x00, 0xF5, 0xEF, 0x47, 0x00, 0xF2, 0xE9, 0x37, 0x00, 0xEE, 0xE4, 0x28, 0x00, 0xED, 0xE3, 0x24, - 0x00, 0xFF, 0xDD, 0x05, 0x00, 0x03, 0x99, 0xFF, 0x00, 0x16, 0xA0, 0xF5, 0x00, 0x16, 0x9E, 0xF4, - 0x00, 0x16, 0x9C, 0xF3, 0x00, 0x15, 0x9C, 0xF2, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x12, 0x9A, 0xF1, - 0x00, 0x10, 0x99, 0xEF, 0x00, 0x11, 0x9A, 0xF0, 0x00, 0x12, 0x9B, 0xF1, 0x00, 0x12, 0x9B, 0xF1, - 0x00, 0x65, 0xD5, 0xFB, 0x00, 0x70, 0xD4, 0xFC, 0x00, 0x77, 0xE2, 0xFF, 0x00, 0x3B, 0x86, 0xC7, - 0x00, 0x23, 0x5F, 0xBA, 0x00, 0x1E, 0x6A, 0xBA, 0x00, 0x21, 0x7A, 0xD0, 0x00, 0x27, 0x87, 0xD7, - 0x00, 0x24, 0x8C, 0xD6, 0x00, 0x1D, 0x8D, 0xD3, 0x00, 0x21, 0x88, 0xD0, 0x00, 0x2B, 0xA0, 0xEA, - 0x00, 0x21, 0x95, 0xD5, 0x00, 0x30, 0xA9, 0xEE, 0x00, 0x20, 0xA0, 0xDA, 0x00, 0x16, 0xA1, 0xDD, - 0x00, 0x0D, 0xA1, 0xDF, 0x00, 0x19, 0xAB, 0xE2, 0x00, 0x12, 0xB1, 0xEB, 0x00, 0x0F, 0xB8, 0xED, - 0x00, 0x0C, 0xBF, 0xEE, 0x00, 0x1C, 0xC1, 0xEF, 0x00, 0x2C, 0xC3, 0xF0, 0x00, 0x36, 0xC4, 0xF1, - 0x00, 0x40, 0xC5, 0xF3, 0x00, 0x46, 0xC9, 0xF1, 0x00, 0x45, 0xC2, 0xF6, 0x00, 0x31, 0xBA, 0xF9, - 0x00, 0x30, 0xB7, 0xF6, 0x00, 0x4B, 0xC1, 0xF4, 0x00, 0xF5, 0xFA, 0xC0, 0x00, 0xFD, 0xFF, 0xC6, - 0x00, 0xFC, 0xFC, 0xC4, 0x00, 0xFD, 0xFC, 0xC4, 0x00, 0xFD, 0xFD, 0xC3, 0x00, 0xFC, 0xFD, 0xC2, - 0x00, 0xFB, 0xFC, 0xC1, 0x00, 0xF8, 0xF8, 0xB5, 0x00, 0xFC, 0xFD, 0xB2, 0x00, 0xFC, 0xFC, 0xAA, - 0x00, 0xFC, 0xFC, 0xA3, 0x00, 0xFC, 0xFB, 0x95, 0x00, 0xFB, 0xFB, 0x88, 0x00, 0xFB, 0xFB, 0x7A, - 0x00, 0xFB, 0xFA, 0x6D, 0x00, 0xFB, 0xF8, 0x61, 0x00, 0xFC, 0xF6, 0x56, 0x00, 0xF8, 0xF2, 0x44, - 0x00, 0xF4, 0xEA, 0x40, 0x00, 0xEF, 0xE5, 0x31, 0x00, 0xEA, 0xDF, 0x23, 0x00, 0xFA, 0xE0, 0x1C, - 0x00, 0xC5, 0xD1, 0x44, 0x00, 0x0A, 0xA1, 0xFE, 0x00, 0x15, 0x9F, 0xF9, 0x00, 0x17, 0x9F, 0xF5, - 0x00, 0x18, 0x9F, 0xF2, 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x15, 0x9D, 0xF2, 0x00, 0x16, 0x9F, 0xF5, - 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x15, 0x9D, 0xF5, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x12, 0x9A, 0xF2, - 0x00, 0x64, 0xD7, 0xF9, 0x00, 0x64, 0xD1, 0xF6, 0x00, 0x5D, 0xE6, 0xFF, 0x00, 0x03, 0x43, 0x9A, - 0x00, 0x0D, 0x4B, 0xA5, 0x00, 0x30, 0x7B, 0xCC, 0x00, 0x04, 0x54, 0xC0, 0x00, 0x00, 0x53, 0xC9, - 0x00, 0x03, 0x67, 0xC5, 0x00, 0x25, 0x87, 0xC9, 0x00, 0x28, 0x80, 0xCA, 0x00, 0x27, 0x88, 0xD0, - 0x00, 0x26, 0x90, 0xD7, 0x00, 0x06, 0x74, 0xC9, 0x00, 0x17, 0x8D, 0xCF, 0x00, 0x1E, 0x9C, 0xE1, - 0x00, 0x16, 0x9B, 0xE3, 0x00, 0x1E, 0x9E, 0xDA, 0x00, 0x00, 0x97, 0xDD, 0x00, 0x03, 0xA4, 0xE6, - 0x00, 0x07, 0xB1, 0xEE, 0x00, 0x08, 0xB0, 0xE8, 0x00, 0x09, 0xAE, 0xE2, 0x00, 0x16, 0xB4, 0xE8, - 0x00, 0x23, 0xB9, 0xEF, 0x00, 0x30, 0xBD, 0xF4, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x34, 0xBB, 0xF9, - 0x00, 0x2C, 0xB6, 0xF9, 0x00, 0x80, 0xD2, 0xE8, 0x00, 0xFA, 0xFD, 0xAE, 0x00, 0xFB, 0xFC, 0xB2, - 0x00, 0xFC, 0xFB, 0xB6, 0x00, 0xFC, 0xFC, 0xB6, 0x00, 0xFD, 0xFC, 0xB6, 0x00, 0xFC, 0xFC, 0xB5, - 0x00, 0xFB, 0xFC, 0xB4, 0x00, 0xF3, 0xF4, 0xA4, 0x00, 0xFC, 0xFC, 0xA5, 0x00, 0xFC, 0xFC, 0x9C, - 0x00, 0xFC, 0xFB, 0x93, 0x00, 0xFB, 0xFB, 0x87, 0x00, 0xFA, 0xFA, 0x7A, 0x00, 0xFA, 0xFA, 0x6D, - 0x00, 0xF9, 0xF9, 0x61, 0x00, 0xFA, 0xF7, 0x57, 0x00, 0xFA, 0xF4, 0x4E, 0x00, 0xF6, 0xED, 0x44, - 0x00, 0xF3, 0xE6, 0x3A, 0x00, 0xED, 0xE1, 0x2C, 0x00, 0xE7, 0xDB, 0x1E, 0x00, 0xFF, 0xD1, 0x19, - 0x00, 0x77, 0xB0, 0x8F, 0x00, 0x09, 0xA0, 0xFD, 0x00, 0x14, 0x9D, 0xFD, 0x00, 0x17, 0x9F, 0xF7, - 0x00, 0x1A, 0xA2, 0xF2, 0x00, 0x18, 0xA0, 0xF2, 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x13, 0x9B, 0xF1, - 0x00, 0x10, 0x98, 0xF0, 0x00, 0x11, 0x99, 0xF1, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x12, 0x9A, 0xF2, - 0x00, 0x5F, 0xD4, 0xF7, 0x00, 0x67, 0xDC, 0xFC, 0x00, 0x4F, 0xC1, 0xF0, 0x00, 0x00, 0x2B, 0x8A, - 0x00, 0x2D, 0x6A, 0xBF, 0x00, 0x05, 0x47, 0xAC, 0x00, 0x00, 0x43, 0xB9, 0x00, 0x35, 0x85, 0xC4, - 0x00, 0x06, 0x4D, 0xBB, 0x00, 0x13, 0x61, 0xC3, 0x00, 0x2C, 0x70, 0xCA, 0x00, 0x0F, 0x5A, 0xB3, - 0x00, 0x21, 0x74, 0xCC, 0x00, 0x11, 0x69, 0xC2, 0x00, 0x18, 0x78, 0xC2, 0x00, 0x1C, 0x80, 0xD0, - 0x00, 0x18, 0x7F, 0xD6, 0x00, 0x1A, 0x86, 0xD3, 0x00, 0x10, 0x8F, 0xDD, 0x00, 0x02, 0x8C, 0xDA, - 0x00, 0x04, 0x99, 0xE6, 0x00, 0x04, 0x9B, 0xE1, 0x00, 0x04, 0x9D, 0xDC, 0x00, 0x05, 0xA6, 0xE1, - 0x00, 0x00, 0xA6, 0xDD, 0x00, 0x1F, 0xB6, 0xEE, 0x00, 0x39, 0xBD, 0xF6, 0x00, 0x38, 0xBB, 0xF6, - 0x00, 0x24, 0xB5, 0xFC, 0x00, 0xBF, 0xE8, 0xB8, 0x00, 0xFA, 0xFE, 0xA2, 0x00, 0xFB, 0xFC, 0xA5, - 0x00, 0xFB, 0xFA, 0xA8, 0x00, 0xFC, 0xFB, 0xA7, 0x00, 0xFC, 0xFC, 0xA6, 0x00, 0xFA, 0xFB, 0xA2, - 0x00, 0xF8, 0xFA, 0x9F, 0x00, 0xF5, 0xF7, 0x94, 0x00, 0xFA, 0xFB, 0x92, 0x00, 0xFA, 0xFB, 0x8B, - 0x00, 0xFB, 0xFB, 0x84, 0x00, 0xFA, 0xFA, 0x78, 0x00, 0xF9, 0xF9, 0x6D, 0x00, 0xF9, 0xF9, 0x61, - 0x00, 0xF8, 0xF8, 0x55, 0x00, 0xF8, 0xF6, 0x4B, 0x00, 0xF9, 0xF3, 0x41, 0x00, 0xF5, 0xEC, 0x39, - 0x00, 0xF1, 0xE4, 0x30, 0x00, 0xEE, 0xDD, 0x28, 0x00, 0xEB, 0xD6, 0x1F, 0x00, 0xEE, 0xD9, 0x00, - 0x00, 0x32, 0xA6, 0xE4, 0x00, 0x18, 0xA4, 0xFF, 0x00, 0x28, 0xA4, 0xF3, 0x00, 0x20, 0xA2, 0xF4, - 0x00, 0x18, 0xA0, 0xF4, 0x00, 0x16, 0x9E, 0xF4, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x13, 0x9B, 0xF2, - 0x00, 0x11, 0x99, 0xF2, 0x00, 0x11, 0x99, 0xF2, 0x00, 0x12, 0x9A, 0xF3, 0x00, 0x12, 0x9A, 0xF3, - 0x00, 0x5B, 0xD1, 0xF5, 0x00, 0x62, 0xDF, 0xFA, 0x00, 0x30, 0x8C, 0xCC, 0x00, 0x05, 0x2C, 0x91, - 0x00, 0x0E, 0x49, 0x9A, 0x00, 0x00, 0x36, 0x9E, 0x00, 0x00, 0x38, 0x96, 0x00, 0x14, 0x5E, 0xB6, - 0x00, 0x53, 0xAA, 0xD9, 0x00, 0x30, 0xA6, 0xE2, 0x00, 0x44, 0xBB, 0xEE, 0x00, 0x6D, 0xDD, 0xFF, - 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x6C, 0xD9, 0xF9, 0x00, 0x63, 0xD4, 0xF8, 0x00, 0x54, 0xC4, 0xF3, - 0x00, 0x44, 0xB4, 0xED, 0x00, 0x23, 0x8E, 0xD5, 0x00, 0x11, 0x77, 0xCE, 0x00, 0x00, 0x6C, 0xC6, - 0x00, 0x02, 0x81, 0xDE, 0x00, 0x00, 0x87, 0xDA, 0x00, 0x00, 0x8D, 0xD6, 0x00, 0x06, 0x9B, 0xE1, - 0x00, 0x00, 0x98, 0xDC, 0x00, 0x22, 0xB1, 0xF0, 0x00, 0x35, 0xB9, 0xF4, 0x00, 0x3C, 0xBC, 0xF3, - 0x00, 0x1B, 0xB4, 0xFF, 0x00, 0xFE, 0xFD, 0x89, 0x00, 0xFA, 0xFF, 0x95, 0x00, 0xFA, 0xFC, 0x97, - 0x00, 0xFB, 0xF8, 0x99, 0x00, 0xFB, 0xFB, 0x97, 0x00, 0xFC, 0xFD, 0x95, 0x00, 0xF9, 0xFB, 0x8F, - 0x00, 0xF6, 0xF9, 0x89, 0x00, 0xF7, 0xF9, 0x84, 0x00, 0xF8, 0xF9, 0x7F, 0x00, 0xF9, 0xFA, 0x7A, - 0x00, 0xFA, 0xFA, 0x75, 0x00, 0xF9, 0xF9, 0x6A, 0x00, 0xF8, 0xF9, 0x5F, 0x00, 0xF7, 0xF8, 0x54, - 0x00, 0xF6, 0xF7, 0x49, 0x00, 0xF7, 0xF5, 0x3F, 0x00, 0xF7, 0xF2, 0x35, 0x00, 0xF3, 0xEB, 0x2E, - 0x00, 0xF0, 0xE3, 0x27, 0x00, 0xF0, 0xDA, 0x24, 0x00, 0xF0, 0xD1, 0x21, 0x00, 0xE8, 0xC9, 0x23, - 0x00, 0x03, 0x9B, 0xFF, 0x00, 0x20, 0xA3, 0xF6, 0x00, 0x16, 0xA1, 0xF6, 0x00, 0x16, 0x9F, 0xF7, - 0x00, 0x16, 0x9D, 0xF7, 0x00, 0x15, 0x9C, 0xF6, 0x00, 0x14, 0x9B, 0xF5, 0x00, 0x13, 0x9A, 0xF4, - 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, - 0x00, 0x5A, 0xE2, 0xFE, 0x00, 0x64, 0xD7, 0xFF, 0x00, 0x0C, 0x46, 0x97, 0x00, 0x00, 0x25, 0x82, - 0x00, 0x1D, 0x6A, 0xB7, 0x00, 0x39, 0xA2, 0xDE, 0x00, 0x5E, 0xE5, 0xFF, 0x00, 0x51, 0xD8, 0xFD, - 0x00, 0x4C, 0xD6, 0xF5, 0x00, 0x48, 0xCC, 0xF4, 0x00, 0x5E, 0xCF, 0xF6, 0x00, 0x67, 0xD9, 0xFE, - 0x00, 0x61, 0xD3, 0xF7, 0x00, 0x5A, 0xD1, 0xF8, 0x00, 0x41, 0xCB, 0xFE, 0x00, 0x53, 0xCE, 0xFE, - 0x00, 0x51, 0xCF, 0xF5, 0x00, 0x49, 0xCA, 0xF6, 0x00, 0x49, 0xCD, 0xFF, 0x00, 0x3F, 0xB9, 0xFF, - 0x00, 0x0E, 0x7E, 0xDA, 0x00, 0x00, 0x69, 0xC2, 0x00, 0x05, 0x84, 0xDA, 0x00, 0x01, 0x84, 0xD5, - 0x00, 0x05, 0x8C, 0xD8, 0x00, 0x37, 0xBE, 0xF8, 0x00, 0x3A, 0xBE, 0xF6, 0x00, 0x34, 0xBD, 0xFF, - 0x00, 0x61, 0xC6, 0xE1, 0x00, 0xFB, 0xF3, 0x79, 0x00, 0xF7, 0xFA, 0x82, 0x00, 0xF9, 0xF9, 0x83, - 0x00, 0xFA, 0xF7, 0x83, 0x00, 0xF8, 0xF7, 0x7F, 0x00, 0xF6, 0xF6, 0x7B, 0x00, 0xF7, 0xF8, 0x79, - 0x00, 0xF8, 0xFA, 0x77, 0x00, 0xF7, 0xF9, 0x71, 0x00, 0xF7, 0xF8, 0x6C, 0x00, 0xFB, 0xFC, 0x6B, - 0x00, 0xF8, 0xF8, 0x63, 0x00, 0xF8, 0xF7, 0x5A, 0x00, 0xF7, 0xF7, 0x52, 0x00, 0xF7, 0xF5, 0x48, - 0x00, 0xF6, 0xF4, 0x3F, 0x00, 0xF5, 0xF2, 0x37, 0x00, 0xF4, 0xEF, 0x2F, 0x00, 0xF1, 0xE6, 0x27, - 0x00, 0xEE, 0xDD, 0x20, 0x00, 0xEA, 0xD6, 0x1F, 0x00, 0xF1, 0xCC, 0x10, 0x00, 0x9D, 0xB9, 0x6C, - 0x00, 0x0B, 0x9F, 0xFE, 0x00, 0x1A, 0xA3, 0xF8, 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x16, 0xA0, 0xF8, - 0x00, 0x16, 0x9E, 0xF7, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x14, 0x9B, 0xF6, 0x00, 0x14, 0x9A, 0xF5, - 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, - 0x00, 0x60, 0xD8, 0xF8, 0x00, 0x5A, 0xD8, 0xF7, 0x00, 0x4B, 0xAD, 0xD7, 0x00, 0x68, 0xDD, 0xFF, - 0x00, 0x55, 0xDC, 0xF7, 0x00, 0x55, 0xD6, 0xFC, 0x00, 0x54, 0xCF, 0xFF, 0x00, 0x5C, 0xD5, 0xFF, - 0x00, 0x53, 0xCA, 0xF1, 0x00, 0x4A, 0xCA, 0xF5, 0x00, 0x42, 0xC9, 0xF9, 0x00, 0x47, 0xC9, 0xF7, - 0x00, 0x4B, 0xC8, 0xF5, 0x00, 0x5C, 0xCF, 0xF0, 0x00, 0x46, 0xCC, 0xF8, 0x00, 0x55, 0xCA, 0xFF, - 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x43, 0xC2, 0xFB, 0x00, 0x48, 0xC1, 0xFC, 0x00, 0x3E, 0xBE, 0xF3, - 0x00, 0x43, 0xCB, 0xFA, 0x00, 0x37, 0xB3, 0xFC, 0x00, 0x0B, 0x7B, 0xDD, 0x00, 0x00, 0x6D, 0xC8, - 0x00, 0x0D, 0x7F, 0xD4, 0x00, 0x4D, 0xCC, 0xFF, 0x00, 0x3E, 0xC2, 0xF9, 0x00, 0x2D, 0xC1, 0xFF, - 0x00, 0xA7, 0xDE, 0xA7, 0x00, 0xF7, 0xEB, 0x5B, 0x00, 0xF4, 0xF5, 0x6F, 0x00, 0xF7, 0xF5, 0x6E, - 0x00, 0xF9, 0xF6, 0x6D, 0x00, 0xF5, 0xF3, 0x67, 0x00, 0xF1, 0xF0, 0x60, 0x00, 0xF5, 0xF6, 0x62, - 0x00, 0xFA, 0xFC, 0x65, 0x00, 0xF8, 0xF9, 0x5E, 0x00, 0xF5, 0xF6, 0x58, 0x00, 0xFE, 0xFE, 0x5D, - 0x00, 0xF6, 0xF6, 0x52, 0x00, 0xF6, 0xF5, 0x4B, 0x00, 0xF7, 0xF5, 0x44, 0x00, 0xF6, 0xF3, 0x3D, - 0x00, 0xF5, 0xF1, 0x35, 0x00, 0xF3, 0xEE, 0x2F, 0x00, 0xF0, 0xEB, 0x28, 0x00, 0xEE, 0xE1, 0x20, - 0x00, 0xEC, 0xD8, 0x18, 0x00, 0xE4, 0xD2, 0x1A, 0x00, 0xF3, 0xC6, 0x00, 0x00, 0x51, 0xA8, 0xB4, - 0x00, 0x13, 0xA3, 0xFA, 0x00, 0x15, 0xA3, 0xFB, 0x00, 0x17, 0xA3, 0xFB, 0x00, 0x16, 0xA0, 0xFA, - 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, 0x9C, 0xF7, 0x00, 0x14, 0x9A, 0xF6, - 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, - 0x00, 0x58, 0xCE, 0xF1, 0x00, 0x59, 0xDC, 0xFD, 0x00, 0x55, 0xD5, 0xF8, 0x00, 0x5D, 0xDD, 0xFF, - 0x00, 0x4D, 0xCE, 0xF3, 0x00, 0x4C, 0xCB, 0xF3, 0x00, 0x4C, 0xC8, 0xF3, 0x00, 0x56, 0xD1, 0xFB, - 0x00, 0x58, 0xD3, 0xFC, 0x00, 0x4F, 0xCE, 0xFB, 0x00, 0x47, 0xC9, 0xFA, 0x00, 0x48, 0xC8, 0xF9, - 0x00, 0x49, 0xC7, 0xF8, 0x00, 0x50, 0xCA, 0xF5, 0x00, 0x44, 0xC9, 0xF9, 0x00, 0x4B, 0xC8, 0xFD, - 0x00, 0x3E, 0xC5, 0xF9, 0x00, 0x40, 0xC3, 0xFA, 0x00, 0x43, 0xC2, 0xFA, 0x00, 0x3A, 0xBD, 0xF3, - 0x00, 0x3A, 0xBF, 0xF3, 0x00, 0x3E, 0xC7, 0xFC, 0x00, 0x3A, 0xC6, 0xFC, 0x00, 0x24, 0xA1, 0xE2, - 0x00, 0x1F, 0x8C, 0xD9, 0x00, 0x36, 0xB9, 0xF6, 0x00, 0x26, 0xBB, 0xFA, 0x00, 0x29, 0xBA, 0xF3, - 0x00, 0xCD, 0xD7, 0x56, 0x00, 0xF9, 0xFA, 0x5A, 0x00, 0xD9, 0xDA, 0x48, 0x00, 0xED, 0xEC, 0x58, - 0x00, 0xF9, 0xF5, 0x5F, 0x00, 0xF1, 0xEF, 0x4D, 0x00, 0xE9, 0xE9, 0x3A, 0x00, 0xED, 0xEE, 0x45, - 0x00, 0xF2, 0xF4, 0x50, 0x00, 0xF9, 0xF3, 0x4E, 0x00, 0xED, 0xF0, 0x44, 0x00, 0xFE, 0xF8, 0x4B, - 0x00, 0xF4, 0xF5, 0x41, 0x00, 0xF5, 0xF4, 0x3C, 0x00, 0xF6, 0xF2, 0x37, 0x00, 0xF5, 0xF0, 0x31, - 0x00, 0xF4, 0xEF, 0x2A, 0x00, 0xF2, 0xEA, 0x26, 0x00, 0xF0, 0xE6, 0x22, 0x00, 0xEE, 0xDB, 0x1C, - 0x00, 0xEC, 0xD0, 0x17, 0x00, 0xF0, 0xCC, 0x08, 0x00, 0xF5, 0xC4, 0x08, 0x00, 0x0E, 0xAD, 0xFF, - 0x00, 0x16, 0xA1, 0xF9, 0x00, 0x17, 0xA1, 0xF8, 0x00, 0x18, 0xA1, 0xF8, 0x00, 0x17, 0xA0, 0xF8, - 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9A, 0xF7, - 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, - 0x00, 0x60, 0xD5, 0xFB, 0x00, 0x5A, 0xD3, 0xFA, 0x00, 0x55, 0xD1, 0xFA, 0x00, 0x55, 0xD0, 0xFC, - 0x00, 0x54, 0xCF, 0xFE, 0x00, 0x54, 0xD0, 0xFA, 0x00, 0x53, 0xD1, 0xF6, 0x00, 0x50, 0xCE, 0xF6, - 0x00, 0x4E, 0xCB, 0xF7, 0x00, 0x4C, 0xCA, 0xF9, 0x00, 0x4B, 0xCA, 0xFA, 0x00, 0x49, 0xC8, 0xFB, - 0x00, 0x47, 0xC6, 0xFB, 0x00, 0x45, 0xC6, 0xFB, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, - 0x00, 0x3F, 0xC6, 0xF8, 0x00, 0x3E, 0xC4, 0xF8, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3F, 0xC3, 0xFB, - 0x00, 0x40, 0xC3, 0xFD, 0x00, 0x38, 0xBA, 0xF2, 0x00, 0x3F, 0xC0, 0xF7, 0x00, 0x3D, 0xC2, 0xFA, - 0x00, 0x3A, 0xC5, 0xFD, 0x00, 0x37, 0xC1, 0xF6, 0x00, 0x34, 0xBD, 0xEF, 0x00, 0x2D, 0xBB, 0xEF, - 0x00, 0xDD, 0xD6, 0x21, 0x00, 0xBF, 0xDC, 0x37, 0x00, 0xDD, 0xE0, 0x41, 0x00, 0xEB, 0xEA, 0x49, - 0x00, 0xEA, 0xE3, 0x41, 0x00, 0xED, 0xE8, 0x41, 0x00, 0xF1, 0xED, 0x41, 0x00, 0xED, 0xEC, 0x3F, - 0x00, 0xEA, 0xEB, 0x3C, 0x00, 0xFA, 0xEE, 0x3E, 0x00, 0xE5, 0xEB, 0x31, 0x00, 0xFE, 0xF2, 0x39, - 0x00, 0xF1, 0xF4, 0x31, 0x00, 0xF3, 0xF2, 0x2D, 0x00, 0xF5, 0xF0, 0x29, 0x00, 0xF4, 0xEE, 0x25, - 0x00, 0xF4, 0xEC, 0x20, 0x00, 0xF1, 0xE6, 0x1E, 0x00, 0xEF, 0xE1, 0x1C, 0x00, 0xED, 0xD5, 0x19, - 0x00, 0xEB, 0xC9, 0x16, 0x00, 0xDE, 0xC3, 0x0B, 0x00, 0xBA, 0xBE, 0x39, 0x00, 0x07, 0x98, 0xF8, - 0x00, 0x19, 0x9F, 0xF8, 0x00, 0x19, 0x9F, 0xF6, 0x00, 0x19, 0x9F, 0xF5, 0x00, 0x18, 0x9F, 0xF7, - 0x00, 0x16, 0x9F, 0xF9, 0x00, 0x16, 0x9D, 0xF9, 0x00, 0x16, 0x9C, 0xF9, 0x00, 0x16, 0x9A, 0xF9, - 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, - 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x58, 0xD4, 0xF8, 0x00, 0x54, 0xD3, 0xF8, 0x00, 0x56, 0xD1, 0xF9, - 0x00, 0x57, 0xD0, 0xFA, 0x00, 0x55, 0xD0, 0xF8, 0x00, 0x53, 0xD0, 0xF5, 0x00, 0x50, 0xCE, 0xF7, - 0x00, 0x4D, 0xCC, 0xF9, 0x00, 0x4C, 0xCB, 0xF9, 0x00, 0x4A, 0xCA, 0xFA, 0x00, 0x48, 0xC8, 0xFB, - 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC6, 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, - 0x00, 0x3F, 0xC6, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, 0xC3, 0xF9, 0x00, 0x3E, 0xC2, 0xFA, - 0x00, 0x3E, 0xC1, 0xFB, 0x00, 0x3A, 0xBD, 0xF5, 0x00, 0x3D, 0xC1, 0xF7, 0x00, 0x3A, 0xC0, 0xF8, - 0x00, 0x37, 0xC0, 0xF9, 0x00, 0x36, 0xBD, 0xFF, 0x00, 0x35, 0xBB, 0xFF, 0x00, 0x66, 0xBA, 0x84, - 0x00, 0xAF, 0xD2, 0x18, 0x00, 0xB3, 0xD2, 0x19, 0x00, 0xD2, 0xDA, 0x39, 0x00, 0xE1, 0xDC, 0x3D, - 0x00, 0xD5, 0xD4, 0x31, 0x00, 0xE1, 0xDF, 0x37, 0x00, 0xEC, 0xE9, 0x3E, 0x00, 0xE1, 0xE6, 0x35, - 0x00, 0xE9, 0xE5, 0x35, 0x00, 0xF0, 0xE5, 0x34, 0x00, 0xE4, 0xE3, 0x2A, 0x00, 0xF5, 0xE5, 0x2D, - 0x00, 0xE8, 0xEB, 0x28, 0x00, 0xF0, 0xEE, 0x2A, 0x00, 0xEF, 0xE8, 0x24, 0x00, 0xEC, 0xE4, 0x20, - 0x00, 0xE9, 0xDF, 0x1C, 0x00, 0xEB, 0xDB, 0x1C, 0x00, 0xED, 0xD7, 0x1B, 0x00, 0xE9, 0xCE, 0x18, - 0x00, 0xE5, 0xC5, 0x15, 0x00, 0xE7, 0xBF, 0x03, 0x00, 0x6C, 0xB1, 0x92, 0x00, 0x10, 0x9C, 0xFB, - 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x19, 0xA0, 0xF5, 0x00, 0x1B, 0xA0, 0xF3, 0x00, 0x19, 0x9F, 0xF6, - 0x00, 0x16, 0x9F, 0xF9, 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9B, 0xF8, - 0x00, 0x15, 0x99, 0xF8, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x98, 0xF7, 0x00, 0x14, 0x98, 0xF7, - 0x00, 0x57, 0xD3, 0xF6, 0x00, 0x55, 0xD4, 0xF6, 0x00, 0x53, 0xD5, 0xF6, 0x00, 0x57, 0xD2, 0xF7, - 0x00, 0x5B, 0xD0, 0xF7, 0x00, 0x57, 0xD0, 0xF6, 0x00, 0x54, 0xCF, 0xF5, 0x00, 0x50, 0xCE, 0xF7, - 0x00, 0x4C, 0xCC, 0xFA, 0x00, 0x4B, 0xCB, 0xFA, 0x00, 0x49, 0xCA, 0xFA, 0x00, 0x47, 0xC8, 0xFA, - 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC7, 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, - 0x00, 0x3F, 0xC5, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, - 0x00, 0x3B, 0xC0, 0xF9, 0x00, 0x3C, 0xC1, 0xF8, 0x00, 0x3C, 0xC2, 0xF7, 0x00, 0x38, 0xBE, 0xF6, - 0x00, 0x34, 0xBB, 0xF5, 0x00, 0x35, 0xBC, 0xFD, 0x00, 0x36, 0xBE, 0xFF, 0x00, 0x45, 0xBB, 0xFB, - 0x00, 0x82, 0xC9, 0x2B, 0x00, 0xA0, 0xBE, 0x01, 0x00, 0xB8, 0xC4, 0x20, 0x00, 0xD8, 0xCF, 0x31, - 0x00, 0xD1, 0xD5, 0x31, 0x00, 0xD4, 0xD5, 0x2E, 0x00, 0xD7, 0xD4, 0x2A, 0x00, 0xCC, 0xD7, 0x24, - 0x00, 0xE8, 0xDE, 0x2E, 0x00, 0xE6, 0xDD, 0x29, 0x00, 0xE4, 0xDC, 0x24, 0x00, 0xED, 0xD9, 0x22, - 0x00, 0xDF, 0xE1, 0x20, 0x00, 0xEC, 0xE9, 0x27, 0x00, 0xEA, 0xE0, 0x1E, 0x00, 0xE3, 0xD9, 0x1B, - 0x00, 0xDD, 0xD3, 0x19, 0x00, 0xE4, 0xD0, 0x1A, 0x00, 0xEB, 0xCD, 0x1B, 0x00, 0xE4, 0xC7, 0x17, - 0x00, 0xDE, 0xC2, 0x14, 0x00, 0xEF, 0xBC, 0x00, 0x00, 0x1D, 0xA4, 0xEB, 0x00, 0x19, 0xA0, 0xFF, - 0x00, 0x15, 0xA2, 0xF6, 0x00, 0x19, 0xA2, 0xF3, 0x00, 0x1D, 0xA1, 0xF0, 0x00, 0x19, 0xA0, 0xF4, - 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF8, 0x00, 0x14, 0x9B, 0xF7, - 0x00, 0x14, 0x9A, 0xF7, 0x00, 0x13, 0x99, 0xF6, 0x00, 0x12, 0x98, 0xF5, 0x00, 0x12, 0x98, 0xF5, - 0x00, 0x5E, 0xD5, 0xF8, 0x00, 0x63, 0xD5, 0xFC, 0x00, 0x68, 0xD6, 0xFF, 0x00, 0x5E, 0xD2, 0xFB, - 0x00, 0x55, 0xCF, 0xF8, 0x00, 0x53, 0xCF, 0xF7, 0x00, 0x50, 0xCE, 0xF7, 0x00, 0x4D, 0xCD, 0xF9, - 0x00, 0x4B, 0xCC, 0xFA, 0x00, 0x49, 0xCB, 0xFA, 0x00, 0x48, 0xCA, 0xFA, 0x00, 0x47, 0xC9, 0xFA, - 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x44, 0xC7, 0xFA, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, - 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x3F, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, - 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3A, 0xC1, 0xF8, 0x00, 0x38, 0xBF, 0xF7, - 0x00, 0x35, 0xBD, 0xF6, 0x00, 0x34, 0xBD, 0xFA, 0x00, 0x33, 0xBD, 0xFE, 0x00, 0x22, 0xC3, 0xF5, - 0x00, 0x26, 0xBA, 0xFB, 0x00, 0x53, 0xB0, 0xB1, 0x00, 0x9A, 0xC5, 0x06, 0x00, 0xC0, 0xD2, 0x22, - 0x00, 0xD3, 0xDD, 0x36, 0x00, 0xB3, 0xBA, 0x12, 0x00, 0xC3, 0xC7, 0x1E, 0x00, 0xC4, 0xCE, 0x21, - 0x00, 0xD8, 0xD8, 0x2C, 0x00, 0xDE, 0xDA, 0x2F, 0x00, 0xDC, 0xD5, 0x2A, 0x00, 0xE7, 0xD4, 0x20, - 0x00, 0xD4, 0xD5, 0x1C, 0x00, 0xE8, 0xE4, 0x28, 0x00, 0xEB, 0xE3, 0x24, 0x00, 0xD1, 0xCD, 0x1F, - 0x00, 0xD2, 0xC5, 0x1C, 0x00, 0xDC, 0xC2, 0x01, 0x00, 0xCF, 0xC3, 0x11, 0x00, 0xE2, 0xC1, 0x09, - 0x00, 0xE3, 0xBE, 0x00, 0x00, 0x83, 0xBE, 0x6E, 0x00, 0x0C, 0x9F, 0xF6, 0x00, 0x11, 0x9F, 0xFD, - 0x00, 0x17, 0xA1, 0xF6, 0x00, 0x19, 0xA1, 0xF4, 0x00, 0x1A, 0xA1, 0xF3, 0x00, 0x18, 0xA0, 0xF5, - 0x00, 0x15, 0x9F, 0xF8, 0x00, 0x15, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, 0x14, 0x9C, 0xF7, - 0x00, 0x13, 0x9B, 0xF7, 0x00, 0x11, 0x99, 0xF5, 0x00, 0x10, 0x98, 0xF4, 0x00, 0x10, 0x98, 0xF4, - 0x00, 0x64, 0xD6, 0xFB, 0x00, 0x5D, 0xD4, 0xF9, 0x00, 0x55, 0xD2, 0xF8, 0x00, 0x53, 0xD0, 0xF8, - 0x00, 0x50, 0xCE, 0xF8, 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4D, 0xCD, 0xFA, 0x00, 0x4B, 0xCC, 0xFA, - 0x00, 0x49, 0xCC, 0xFB, 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, 0xCA, 0xFA, 0x00, 0x46, 0xC9, 0xFA, - 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x43, 0xC7, 0xFA, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3F, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, - 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3A, 0xC0, 0xF8, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, - 0x00, 0x36, 0xBF, 0xF8, 0x00, 0x34, 0xBD, 0xF7, 0x00, 0x31, 0xBC, 0xF7, 0x00, 0x33, 0xBB, 0xF8, - 0x00, 0x35, 0xBA, 0xF9, 0x00, 0x2C, 0xBC, 0xFF, 0x00, 0x60, 0xC2, 0xDE, 0x00, 0x93, 0xCB, 0x84, - 0x00, 0xC5, 0xD4, 0x2A, 0x00, 0xCA, 0xD7, 0x2E, 0x00, 0xB0, 0xBA, 0x12, 0x00, 0xB4, 0xBE, 0x16, - 0x00, 0xB8, 0xC2, 0x1A, 0x00, 0xC6, 0xC8, 0x25, 0x00, 0xC4, 0xBE, 0x20, 0x00, 0xDA, 0xC8, 0x16, - 0x00, 0xC9, 0xC8, 0x18, 0x00, 0xDB, 0xD7, 0x21, 0x00, 0xDD, 0xD6, 0x1A, 0x00, 0xB7, 0xBC, 0x0D, - 0x00, 0xC7, 0xBD, 0x03, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xAC, 0xC9, 0x50, 0x00, 0x6B, 0xB8, 0xB0, - 0x00, 0x04, 0xA3, 0xFF, 0x00, 0x12, 0xA3, 0xFA, 0x00, 0x21, 0xA4, 0xF4, 0x00, 0x1D, 0xA2, 0xF5, - 0x00, 0x19, 0xA1, 0xF5, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, 0xA0, 0xF6, 0x00, 0x16, 0x9F, 0xF7, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, 0x13, 0x9C, 0xF6, - 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x99, 0xF4, 0x00, 0x0E, 0x97, 0xF2, 0x00, 0x0E, 0x97, 0xF2, - 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x57, 0xD3, 0xF8, 0x00, 0x53, 0xD1, 0xF8, 0x00, 0x51, 0xD0, 0xF8, - 0x00, 0x4F, 0xCE, 0xF9, 0x00, 0x4D, 0xCE, 0xF9, 0x00, 0x4B, 0xCD, 0xF9, 0x00, 0x4A, 0xCC, 0xFA, - 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, 0xCA, 0xFA, 0x00, 0x46, 0xCA, 0xFA, 0x00, 0x45, 0xC9, 0xF9, - 0x00, 0x44, 0xC8, 0xF9, 0x00, 0x43, 0xC7, 0xF9, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, - 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, 0x00, 0x37, 0xBF, 0xF8, - 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBD, 0xF5, 0x00, 0x34, 0xBB, 0xF3, 0x00, 0x34, 0xB9, 0xF7, - 0x00, 0x34, 0xB7, 0xFA, 0x00, 0x22, 0xB5, 0xFF, 0x00, 0x2E, 0xB4, 0xFE, 0x00, 0x4D, 0xB9, 0xE6, - 0x00, 0x6B, 0xBF, 0xCD, 0x00, 0x27, 0xB1, 0xC5, 0x00, 0x6C, 0xBB, 0x7C, 0x00, 0x89, 0xBD, 0x48, - 0x00, 0xA6, 0xBE, 0x15, 0x00, 0xB9, 0xBF, 0x08, 0x00, 0xCB, 0xBF, 0x00, 0x00, 0xDA, 0xC4, 0x3D, - 0x00, 0xBA, 0xCA, 0x20, 0x00, 0xAD, 0xC6, 0x3E, 0x00, 0x99, 0xBB, 0x53, 0x00, 0x59, 0xAC, 0x8A, - 0x00, 0x35, 0xAA, 0xC3, 0x00, 0x03, 0xB3, 0xFF, 0x00, 0x15, 0xA6, 0xFF, 0x00, 0x20, 0xA4, 0xFF, - 0x00, 0x19, 0xA0, 0xFA, 0x00, 0x1B, 0xA2, 0xF9, 0x00, 0x1C, 0xA4, 0xF8, 0x00, 0x1B, 0xA2, 0xF7, - 0x00, 0x19, 0xA1, 0xF6, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x16, 0x9F, 0xF7, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF6, 0x00, 0x13, 0x9C, 0xF6, - 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x0F, 0x98, 0xF3, 0x00, 0x0F, 0x98, 0xF3, - 0x00, 0x53, 0xD2, 0xF6, 0x00, 0x52, 0xD1, 0xF7, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF8, - 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4C, 0xCE, 0xF9, 0x00, 0x4A, 0xCD, 0xF9, 0x00, 0x48, 0xCC, 0xF9, - 0x00, 0x46, 0xCB, 0xF9, 0x00, 0x46, 0xCA, 0xF9, 0x00, 0x45, 0xC9, 0xF9, 0x00, 0x44, 0xC8, 0xF9, - 0x00, 0x43, 0xC8, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3B, 0xC1, 0xF9, - 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF8, 0x00, 0x36, 0xBE, 0xF8, - 0x00, 0x35, 0xBE, 0xF8, 0x00, 0x36, 0xBC, 0xF4, 0x00, 0x37, 0xBA, 0xEF, 0x00, 0x35, 0xB7, 0xF5, - 0x00, 0x34, 0xB5, 0xFC, 0x00, 0x2B, 0xB5, 0xF8, 0x00, 0x22, 0xB6, 0xF5, 0x00, 0x25, 0xB5, 0xFA, - 0x00, 0x28, 0xB3, 0xFF, 0x00, 0x28, 0xB5, 0xFF, 0x00, 0x28, 0xB7, 0xFF, 0x00, 0x1E, 0xB4, 0xFF, - 0x00, 0x14, 0xB2, 0xFE, 0x00, 0x20, 0xAD, 0xF6, 0x00, 0x3C, 0xB9, 0xFE, 0x00, 0x5A, 0xCB, 0xF0, - 0x00, 0x41, 0xBE, 0xFA, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x11, 0xAD, 0xFE, 0x00, 0x17, 0xAC, 0xFC, - 0x00, 0x1D, 0xAB, 0xFA, 0x00, 0x1D, 0xA9, 0xFD, 0x00, 0x1D, 0xA7, 0xFF, 0x00, 0x1B, 0xA7, 0xFA, - 0x00, 0x18, 0xA8, 0xF4, 0x00, 0x18, 0xA6, 0xF8, 0x00, 0x17, 0xA4, 0xFC, 0x00, 0x19, 0xA2, 0xFA, - 0x00, 0x1A, 0xA1, 0xF7, 0x00, 0x19, 0xA0, 0xF7, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x16, 0x9F, 0xF7, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x13, 0x9C, 0xF6, - 0x00, 0x12, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF4, 0x00, 0x10, 0x99, 0xF3, 0x00, 0x10, 0x99, 0xF3, - 0x00, 0x54, 0xD1, 0xF7, 0x00, 0x52, 0xD0, 0xF8, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF9, - 0x00, 0x4E, 0xCF, 0xF9, 0x00, 0x4B, 0xCE, 0xF9, 0x00, 0x49, 0xCD, 0xF9, 0x00, 0x47, 0xCC, 0xF9, - 0x00, 0x45, 0xCA, 0xF8, 0x00, 0x44, 0xCA, 0xF8, 0x00, 0x44, 0xC9, 0xF8, 0x00, 0x43, 0xC8, 0xF9, - 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3B, 0xC1, 0xF9, - 0x00, 0x39, 0xC0, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBE, 0xF8, - 0x00, 0x34, 0xBD, 0xF8, 0x00, 0x34, 0xBC, 0xF6, 0x00, 0x35, 0xBA, 0xF4, 0x00, 0x34, 0xB8, 0xF8, - 0x00, 0x33, 0xB6, 0xFB, 0x00, 0x2D, 0xB6, 0xF9, 0x00, 0x28, 0xB6, 0xF6, 0x00, 0x29, 0xB5, 0xF8, - 0x00, 0x29, 0xB4, 0xFA, 0x00, 0x29, 0xB4, 0xFB, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x29, 0xB2, 0xF5, - 0x00, 0x29, 0xAF, 0xEF, 0x00, 0x1A, 0xA9, 0xF5, 0x00, 0x9A, 0xCE, 0xD9, 0x00, 0x6C, 0xCF, 0xE8, - 0x00, 0x73, 0xC6, 0xE3, 0x00, 0x7F, 0xC9, 0xDD, 0x00, 0x18, 0xAD, 0xFB, 0x00, 0x1B, 0xAC, 0xF9, - 0x00, 0x1F, 0xAB, 0xF7, 0x00, 0x1E, 0xA9, 0xF9, 0x00, 0x1D, 0xA7, 0xFB, 0x00, 0x1C, 0xA7, 0xF8, - 0x00, 0x1A, 0xA6, 0xF6, 0x00, 0x19, 0xA5, 0xF8, 0x00, 0x19, 0xA3, 0xFA, 0x00, 0x1A, 0xA2, 0xF9, - 0x00, 0x1A, 0xA1, 0xF8, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF7, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, - 0x00, 0x11, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x10, 0x9A, 0xF4, - 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, - 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, - 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, - 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, - 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, - 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, - 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, - 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x29, 0xB2, 0xF9, - 0x00, 0x28, 0xB2, 0xFB, 0x00, 0x30, 0xB2, 0xF6, 0x00, 0x11, 0xA8, 0xFD, 0x00, 0x7E, 0xD3, 0xE1, - 0x00, 0x58, 0xBB, 0xE6, 0x00, 0x15, 0xAA, 0xFB, 0x00, 0x1F, 0xAD, 0xF7, 0x00, 0x1F, 0xAB, 0xF6, - 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, - 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, - 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, - 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, - 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, - 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, - 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, - 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, - 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, - 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, - 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, - 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF8, - 0x00, 0x29, 0xB1, 0xFA, 0x00, 0x2D, 0xB5, 0xF4, 0x00, 0x1D, 0xB4, 0xF5, 0x00, 0x23, 0x9B, 0xFF, - 0x00, 0x1F, 0xB5, 0xF2, 0x00, 0x0B, 0xAB, 0xFB, 0x00, 0x1E, 0xAC, 0xF6, 0x00, 0x1F, 0xAB, 0xF6, - 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, - 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, - 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, - 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, - 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, - 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, - 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, - 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, - 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, - 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, - 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, - 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, - 0x00, 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, 0xFA, 0x00, 0x1E, 0xAD, 0xF6, - 0x00, 0x23, 0xAE, 0xF3, 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, 0xAA, 0xF5, - 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, - 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, - 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, - 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, - 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, - 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, - 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, - 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, - 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, - 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, - 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, - 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, - 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, - 0x00, 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, 0xFA, 0x00, 0x1E, 0xAD, 0xF6, - 0x00, 0x23, 0xAE, 0xF3, 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, 0xAA, 0xF5, - 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, - 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, - 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, - 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, - 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, + 0x00, 0x22, 0x9B, 0xDE, 0x00, 0x23, 0x9D, 0xE0, 0x00, 0x25, 0x9E, 0xE1, 0x00, 0x2B, 0xA5, 0xE8, 0x00, 0x22, 0x9B, + 0xDF, 0x00, 0x22, 0x9C, 0xDF, 0x00, 0x22, 0x9C, 0xE0, 0x00, 0x22, 0x9C, 0xDF, 0x00, 0x21, 0x9B, 0xDF, 0x00, 0x22, + 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, 0x00, 0x23, 0x9B, 0xDF, 0x00, 0x24, 0x9C, 0xDF, 0x00, 0x21, 0x9B, 0xE2, 0x00, + 0x1D, 0x9B, 0xE5, 0x00, 0x1F, 0x9A, 0xE1, 0x00, 0x21, 0x98, 0xDD, 0x00, 0x21, 0x99, 0xDE, 0x00, 0x20, 0x99, 0xDE, + 0x00, 0x1F, 0x9A, 0xDF, 0x00, 0x1F, 0x9A, 0xE0, 0x00, 0x1E, 0x99, 0xE0, 0x00, 0x1D, 0x99, 0xDF, 0x00, 0x1C, 0x98, + 0xDF, 0x00, 0x1B, 0x97, 0xDF, 0x00, 0x1E, 0x95, 0xDC, 0x00, 0x21, 0x93, 0xD8, 0x00, 0x1F, 0x93, 0xDC, 0x00, 0x1C, + 0x93, 0xE0, 0x00, 0x1A, 0x94, 0xDC, 0x00, 0x18, 0x95, 0xD8, 0x00, 0x1C, 0x91, 0xDB, 0x00, 0x1F, 0x8E, 0xDE, 0x00, + 0x1A, 0x90, 0xDE, 0x00, 0x16, 0x93, 0xDE, 0x00, 0x17, 0x92, 0xDF, 0x00, 0x18, 0x91, 0xDF, 0x00, 0x17, 0x90, 0xDF, + 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8E, 0xDE, 0x00, 0x15, 0x8C, 0xDE, 0x00, 0x14, 0x8C, 0xDD, 0x00, 0x13, 0x8C, + 0xDB, 0x00, 0x12, 0x8C, 0xDA, 0x00, 0x11, 0x8C, 0xD9, 0x00, 0x11, 0x8B, 0xD9, 0x00, 0x11, 0x89, 0xD9, 0x00, 0x11, + 0x88, 0xDA, 0x00, 0x12, 0x87, 0xDA, 0x00, 0x11, 0x86, 0xDA, 0x00, 0x10, 0x86, 0xDA, 0x00, 0x10, 0x85, 0xD9, 0x00, + 0x0F, 0x84, 0xD9, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD8, 0x00, 0x0D, 0x82, 0xD8, 0x00, 0x0C, 0x81, 0xD8, + 0x00, 0x0C, 0x80, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, + 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x0D, 0x7E, 0xD6, 0x00, 0x24, 0x9F, 0xE0, 0x00, 0x27, 0xA0, 0xE1, 0x00, 0x29, + 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE5, 0x00, 0x24, 0x9E, 0xE0, 0x00, 0x24, 0x9E, 0xE1, 0x00, 0x24, 0x9E, 0xE1, 0x00, + 0x23, 0x9E, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, 0x00, 0x24, 0x9D, 0xE1, + 0x00, 0x25, 0x9D, 0xE1, 0x00, 0x23, 0x9D, 0xE1, 0x00, 0x22, 0x9C, 0xE2, 0x00, 0x22, 0x9C, 0xE0, 0x00, 0x22, 0x9B, + 0xDF, 0x00, 0x21, 0x9B, 0xE0, 0x00, 0x20, 0x9B, 0xE1, 0x00, 0x20, 0x9B, 0xE1, 0x00, 0x1F, 0x9B, 0xE1, 0x00, 0x20, + 0x9A, 0xDF, 0x00, 0x20, 0x99, 0xDE, 0x00, 0x1E, 0x98, 0xDE, 0x00, 0x1D, 0x97, 0xDF, 0x00, 0x1D, 0x97, 0xDF, 0x00, + 0x1E, 0x96, 0xDF, 0x00, 0x1D, 0x95, 0xDF, 0x00, 0x1C, 0x94, 0xDE, 0x00, 0x1C, 0x94, 0xDF, 0x00, 0x1B, 0x93, 0xE0, + 0x00, 0x1C, 0x93, 0xE0, 0x00, 0x1D, 0x92, 0xE0, 0x00, 0x1B, 0x93, 0xDE, 0x00, 0x19, 0x94, 0xDC, 0x00, 0x19, 0x93, + 0xDE, 0x00, 0x19, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, 0x00, 0x17, + 0x8E, 0xDF, 0x00, 0x16, 0x8E, 0xDE, 0x00, 0x15, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDC, 0x00, 0x12, 0x8D, 0xDB, 0x00, + 0x12, 0x8C, 0xDB, 0x00, 0x12, 0x8B, 0xDB, 0x00, 0x12, 0x89, 0xDB, 0x00, 0x12, 0x88, 0xDB, 0x00, 0x11, 0x87, 0xDB, + 0x00, 0x11, 0x87, 0xDB, 0x00, 0x10, 0x86, 0xDB, 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0D, 0x83, + 0xD9, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0D, 0x82, 0xD8, 0x00, 0x0D, 0x81, 0xD8, 0x00, 0x0D, + 0x80, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, 0x0D, 0x7F, 0xD7, 0x00, + 0x27, 0xA2, 0xE2, 0x00, 0x2A, 0xA4, 0xE3, 0x00, 0x2D, 0xA5, 0xE3, 0x00, 0x29, 0xA3, 0xE3, 0x00, 0x26, 0xA1, 0xE2, + 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA1, 0xE2, 0x00, 0x25, 0xA0, 0xE2, 0x00, 0x24, 0xA0, 0xE2, 0x00, 0x25, 0x9F, + 0xE2, 0x00, 0x25, 0x9F, 0xE3, 0x00, 0x25, 0x9E, 0xE3, 0x00, 0x26, 0x9E, 0xE3, 0x00, 0x26, 0x9E, 0xE1, 0x00, 0x27, + 0x9D, 0xDE, 0x00, 0x24, 0x9D, 0xDF, 0x00, 0x22, 0x9E, 0xE1, 0x00, 0x21, 0x9D, 0xE2, 0x00, 0x20, 0x9D, 0xE3, 0x00, + 0x20, 0x9D, 0xE3, 0x00, 0x20, 0x9C, 0xE3, 0x00, 0x22, 0x9B, 0xDF, 0x00, 0x24, 0x99, 0xDC, 0x00, 0x21, 0x98, 0xDE, + 0x00, 0x1F, 0x98, 0xE0, 0x00, 0x1D, 0x99, 0xE3, 0x00, 0x1B, 0x9A, 0xE7, 0x00, 0x1B, 0x98, 0xE1, 0x00, 0x1C, 0x96, + 0xDC, 0x00, 0x1D, 0x94, 0xE2, 0x00, 0x1F, 0x92, 0xE9, 0x00, 0x1D, 0x94, 0xE5, 0x00, 0x1A, 0x96, 0xE2, 0x00, 0x1B, + 0x95, 0xDE, 0x00, 0x1D, 0x95, 0xDA, 0x00, 0x1C, 0x94, 0xDD, 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, + 0x19, 0x91, 0xE0, 0x00, 0x19, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDE, 0x00, 0x16, 0x8F, 0xDE, + 0x00, 0x15, 0x8E, 0xDD, 0x00, 0x14, 0x8E, 0xDD, 0x00, 0x14, 0x8D, 0xDC, 0x00, 0x13, 0x8C, 0xDC, 0x00, 0x12, 0x8B, + 0xDC, 0x00, 0x12, 0x8A, 0xDB, 0x00, 0x11, 0x89, 0xDC, 0x00, 0x11, 0x88, 0xDC, 0x00, 0x10, 0x87, 0xDC, 0x00, 0x10, + 0x86, 0xDC, 0x00, 0x0E, 0x84, 0xDB, 0x00, 0x0D, 0x83, 0xD9, 0x00, 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x84, 0xDA, 0x00, + 0x0E, 0x83, 0xD9, 0x00, 0x0E, 0x82, 0xD9, 0x00, 0x0D, 0x80, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, + 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x0D, 0x7F, 0xD8, 0x00, 0x29, 0xA6, 0xE4, 0x00, 0x2D, 0xA7, 0xE3, 0x00, 0x30, 0xA8, + 0xE3, 0x00, 0x2C, 0xA6, 0xE3, 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x27, 0xA3, 0xE3, 0x00, 0x26, 0xA3, 0xE3, 0x00, 0x26, + 0xA2, 0xE4, 0x00, 0x26, 0xA2, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA1, 0xE4, 0x00, 0x26, 0xA0, 0xE5, 0x00, + 0x26, 0x9F, 0xE5, 0x00, 0x25, 0xA0, 0xE4, 0x00, 0x24, 0xA0, 0xE4, 0x00, 0x24, 0x9F, 0xE3, 0x00, 0x24, 0x9E, 0xE3, + 0x00, 0x23, 0x9E, 0xE4, 0x00, 0x21, 0x9F, 0xE6, 0x00, 0x21, 0x9F, 0xE5, 0x00, 0x22, 0x9E, 0xE3, 0x00, 0x13, 0xA4, + 0xE5, 0x00, 0x1A, 0x9F, 0xE7, 0x00, 0x15, 0x9F, 0xE7, 0x00, 0x10, 0xA0, 0xE7, 0x00, 0x11, 0x9F, 0xEF, 0x00, 0x12, + 0x9E, 0xF7, 0x00, 0x1A, 0x99, 0xEC, 0x00, 0x17, 0x9A, 0xE1, 0x00, 0x14, 0x9C, 0xE3, 0x00, 0x1C, 0x98, 0xE5, 0x00, + 0x1C, 0x97, 0xE6, 0x00, 0x1B, 0x96, 0xE6, 0x00, 0x1B, 0x98, 0xDB, 0x00, 0x1C, 0x96, 0xDF, 0x00, 0x1C, 0x95, 0xE0, + 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x93, 0xE1, 0x00, 0x1A, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x92, + 0xE0, 0x00, 0x18, 0x91, 0xDF, 0x00, 0x18, 0x90, 0xDF, 0x00, 0x17, 0x8F, 0xDF, 0x00, 0x16, 0x8F, 0xDF, 0x00, 0x15, + 0x8E, 0xDE, 0x00, 0x14, 0x8D, 0xDD, 0x00, 0x13, 0x8C, 0xDD, 0x00, 0x12, 0x8B, 0xDC, 0x00, 0x12, 0x8A, 0xDC, 0x00, + 0x11, 0x89, 0xDD, 0x00, 0x11, 0x87, 0xDD, 0x00, 0x10, 0x86, 0xDE, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0D, 0x83, 0xD9, + 0x00, 0x0E, 0x84, 0xDA, 0x00, 0x0F, 0x85, 0xDB, 0x00, 0x0F, 0x84, 0xDA, 0x00, 0x0E, 0x83, 0xDA, 0x00, 0x0E, 0x81, + 0xDA, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x0D, 0x80, 0xD9, 0x00, 0x2C, + 0xAA, 0xE7, 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x33, 0xAA, 0xE2, 0x00, 0x2E, 0xA8, 0xE3, 0x00, 0x28, 0xA5, 0xE4, 0x00, + 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA5, 0xE5, 0x00, 0x28, 0xA4, 0xE5, 0x00, 0x27, 0xA4, 0xE5, 0x00, 0x27, 0xA3, 0xE6, + 0x00, 0x27, 0xA2, 0xE6, 0x00, 0x27, 0xA1, 0xE7, 0x00, 0x27, 0xA1, 0xE7, 0x00, 0x25, 0xA2, 0xE8, 0x00, 0x22, 0xA3, + 0xE9, 0x00, 0x24, 0xA0, 0xE7, 0x00, 0x27, 0x9E, 0xE6, 0x00, 0x25, 0x9F, 0xE7, 0x00, 0x22, 0xA0, 0xE8, 0x00, 0x18, + 0xA3, 0xF4, 0x00, 0x0D, 0xA7, 0xFF, 0x00, 0x1A, 0xA5, 0xDD, 0x00, 0x54, 0x8D, 0xBA, 0x00, 0x6E, 0x83, 0x9C, 0x00, + 0x88, 0x79, 0x7D, 0x00, 0x8C, 0x79, 0x7B, 0x00, 0x91, 0x79, 0x79, 0x00, 0x7E, 0x7A, 0x94, 0x00, 0x55, 0x87, 0xAF, + 0x00, 0x21, 0x9B, 0xD6, 0x00, 0x04, 0xA3, 0xFD, 0x00, 0x0F, 0x9D, 0xF4, 0x00, 0x1B, 0x96, 0xEB, 0x00, 0x1B, 0x9A, + 0xD9, 0x00, 0x1B, 0x98, 0xE4, 0x00, 0x1C, 0x96, 0xE3, 0x00, 0x1C, 0x95, 0xE2, 0x00, 0x1C, 0x94, 0xE2, 0x00, 0x1B, + 0x94, 0xE1, 0x00, 0x1B, 0x94, 0xE1, 0x00, 0x1B, 0x93, 0xE0, 0x00, 0x1A, 0x92, 0xE0, 0x00, 0x19, 0x91, 0xE0, 0x00, + 0x18, 0x90, 0xE1, 0x00, 0x18, 0x8F, 0xE1, 0x00, 0x16, 0x8F, 0xE0, 0x00, 0x15, 0x8E, 0xDF, 0x00, 0x14, 0x8D, 0xDE, + 0x00, 0x12, 0x8C, 0xDC, 0x00, 0x12, 0x8B, 0xDD, 0x00, 0x12, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xDF, 0x00, 0x11, 0x87, + 0xE0, 0x00, 0x0F, 0x85, 0xDD, 0x00, 0x0D, 0x83, 0xDA, 0x00, 0x0E, 0x85, 0xDB, 0x00, 0x10, 0x87, 0xDC, 0x00, 0x0F, + 0x85, 0xDC, 0x00, 0x0F, 0x84, 0xDB, 0x00, 0x0E, 0x82, 0xDB, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, + 0x0D, 0x81, 0xDA, 0x00, 0x0D, 0x81, 0xDA, 0x00, 0x30, 0xAA, 0xE4, 0x00, 0x35, 0xAF, 0xE8, 0x00, 0x33, 0xAB, 0xE3, + 0x00, 0x2F, 0xA9, 0xE5, 0x00, 0x2A, 0xA8, 0xE6, 0x00, 0x35, 0xAD, 0xE8, 0x00, 0x25, 0xA6, 0xE7, 0x00, 0x28, 0xA7, + 0xE7, 0x00, 0x2B, 0xA8, 0xE7, 0x00, 0x2D, 0xA6, 0xE5, 0x00, 0x2E, 0xA4, 0xE4, 0x00, 0x2B, 0xA4, 0xE6, 0x00, 0x29, + 0xA4, 0xE8, 0x00, 0x2A, 0xA4, 0xE5, 0x00, 0x2C, 0xA5, 0xE1, 0x00, 0x10, 0xA9, 0xEF, 0x00, 0x12, 0xAD, 0xF6, 0x00, + 0x22, 0xA2, 0xF8, 0x00, 0x60, 0x91, 0xA5, 0x00, 0xA5, 0x75, 0x5C, 0x00, 0xEB, 0x59, 0x14, 0x00, 0xFF, 0x48, 0x0C, + 0x00, 0xFA, 0x55, 0x03, 0x00, 0xFF, 0x59, 0x0F, 0x00, 0xFF, 0x5D, 0x1A, 0x00, 0xFF, 0x60, 0x16, 0x00, 0xF9, 0x64, + 0x11, 0x00, 0xFF, 0x54, 0x0F, 0x00, 0xFF, 0x4A, 0x0C, 0x00, 0xFA, 0x49, 0x17, 0x00, 0xF5, 0x47, 0x23, 0x00, 0x8D, + 0x72, 0x7E, 0x00, 0x26, 0x9D, 0xD9, 0x00, 0x05, 0xA1, 0xFF, 0x00, 0x1D, 0x96, 0xE1, 0x00, 0x17, 0x98, 0xE9, 0x00, + 0x1C, 0x97, 0xE3, 0x00, 0x1A, 0x97, 0xE3, 0x00, 0x18, 0x97, 0xE4, 0x00, 0x19, 0x96, 0xE3, 0x00, 0x1B, 0x94, 0xE2, + 0x00, 0x1A, 0x93, 0xE1, 0x00, 0x19, 0x93, 0xE0, 0x00, 0x18, 0x92, 0xE1, 0x00, 0x17, 0x91, 0xE1, 0x00, 0x16, 0x90, + 0xE0, 0x00, 0x15, 0x8F, 0xDF, 0x00, 0x14, 0x8E, 0xDE, 0x00, 0x13, 0x8D, 0xDD, 0x00, 0x13, 0x8D, 0xDE, 0x00, 0x13, + 0x8C, 0xDF, 0x00, 0x12, 0x8A, 0xDF, 0x00, 0x10, 0x89, 0xE0, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x84, 0xDB, 0x00, + 0x13, 0x8A, 0xDF, 0x00, 0x0F, 0x87, 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0F, 0x85, 0xDC, 0x00, 0x0E, 0x84, 0xDB, + 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x0D, 0x82, 0xDB, 0x00, 0x33, 0xAB, + 0xE2, 0x00, 0x3B, 0xB3, 0xEB, 0x00, 0x33, 0xAC, 0xE5, 0x00, 0x30, 0xAB, 0xE6, 0x00, 0x2D, 0xAA, 0xE7, 0x00, 0x43, + 0xB6, 0xEA, 0x00, 0x23, 0xA7, 0xEA, 0x00, 0x29, 0xA9, 0xE9, 0x00, 0x2F, 0xAB, 0xE9, 0x00, 0x32, 0xA9, 0xE5, 0x00, + 0x35, 0xA7, 0xE2, 0x00, 0x30, 0xA7, 0xE6, 0x00, 0x2A, 0xA8, 0xEA, 0x00, 0x25, 0xAA, 0xF0, 0x00, 0x1F, 0xAD, 0xF6, + 0x00, 0x4D, 0x8A, 0xA7, 0x00, 0xB7, 0x66, 0x4C, 0x00, 0xFF, 0x54, 0x0F, 0x00, 0xF7, 0x64, 0x0C, 0x00, 0xF8, 0x63, + 0x13, 0x00, 0xF9, 0x61, 0x1A, 0x00, 0xEF, 0x67, 0x1E, 0x00, 0xFC, 0x61, 0x22, 0x00, 0xFA, 0x68, 0x25, 0x00, 0xF9, + 0x6F, 0x28, 0x00, 0xF5, 0x70, 0x22, 0x00, 0xF2, 0x72, 0x1B, 0x00, 0xF2, 0x6B, 0x1F, 0x00, 0xF1, 0x64, 0x24, 0x00, + 0xFF, 0x55, 0x21, 0x00, 0xFF, 0x53, 0x1E, 0x00, 0xFF, 0x4B, 0x16, 0x00, 0xFF, 0x43, 0x0E, 0x00, 0xB1, 0x61, 0x5A, + 0x00, 0x1E, 0x95, 0xDF, 0x00, 0x12, 0x9A, 0xF0, 0x00, 0x1B, 0x9A, 0xE5, 0x00, 0x18, 0x9A, 0xE5, 0x00, 0x14, 0x9A, + 0xE6, 0x00, 0x17, 0x98, 0xE5, 0x00, 0x1B, 0x95, 0xE4, 0x00, 0x1A, 0x95, 0xE2, 0x00, 0x19, 0x94, 0xE0, 0x00, 0x18, + 0x93, 0xE1, 0x00, 0x17, 0x92, 0xE2, 0x00, 0x16, 0x91, 0xE1, 0x00, 0x16, 0x90, 0xE0, 0x00, 0x15, 0x8F, 0xDF, 0x00, + 0x14, 0x8F, 0xDE, 0x00, 0x14, 0x8E, 0xDF, 0x00, 0x14, 0x8E, 0xE1, 0x00, 0x12, 0x8C, 0xE0, 0x00, 0x10, 0x8A, 0xE0, + 0x00, 0x10, 0x88, 0xDE, 0x00, 0x10, 0x86, 0xDC, 0x00, 0x17, 0x8E, 0xE3, 0x00, 0x0D, 0x87, 0xDB, 0x00, 0x0E, 0x86, + 0xDB, 0x00, 0x0F, 0x86, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x0E, + 0x83, 0xDB, 0x00, 0x0E, 0x83, 0xDB, 0x00, 0x36, 0xB0, 0xEA, 0x00, 0x36, 0xB3, 0xEF, 0x00, 0x2E, 0xAE, 0xED, 0x00, + 0x2C, 0xAD, 0xEC, 0x00, 0x2A, 0xAD, 0xEB, 0x00, 0x40, 0xB3, 0xEF, 0x00, 0x28, 0xAA, 0xE9, 0x00, 0x2B, 0xAB, 0xE7, + 0x00, 0x2F, 0xAB, 0xE6, 0x00, 0x30, 0xAA, 0xE6, 0x00, 0x31, 0xAA, 0xE5, 0x00, 0x2E, 0xA9, 0xE6, 0x00, 0x2B, 0xA9, + 0xE7, 0x00, 0x24, 0xA7, 0xEB, 0x00, 0x93, 0x6A, 0x5F, 0x00, 0xFF, 0x3D, 0x05, 0x00, 0xF9, 0x56, 0x17, 0x00, 0xE2, + 0x72, 0x12, 0x00, 0xF8, 0x72, 0x29, 0x00, 0xF7, 0x74, 0x27, 0x00, 0xF6, 0x76, 0x25, 0x00, 0xF1, 0x76, 0x28, 0x00, + 0xF8, 0x70, 0x2A, 0x00, 0xF8, 0x77, 0x2D, 0x00, 0xF9, 0x7D, 0x30, 0x00, 0xF7, 0x7F, 0x2D, 0x00, 0xF5, 0x81, 0x2A, + 0x00, 0xF5, 0x7B, 0x2B, 0x00, 0xF5, 0x75, 0x2C, 0x00, 0xFD, 0x6A, 0x2B, 0x00, 0xFA, 0x64, 0x2A, 0x00, 0xF5, 0x5D, + 0x2C, 0x00, 0xF0, 0x57, 0x2E, 0x00, 0xFF, 0x48, 0x10, 0x00, 0xFF, 0x45, 0x0E, 0x00, 0x80, 0x76, 0x7F, 0x00, 0x02, + 0xA7, 0xF0, 0x00, 0x24, 0x95, 0xEA, 0x00, 0x19, 0x9A, 0xE3, 0x00, 0x1B, 0x98, 0xE4, 0x00, 0x1D, 0x95, 0xE4, 0x00, + 0x1B, 0x95, 0xE2, 0x00, 0x19, 0x96, 0xDF, 0x00, 0x18, 0x94, 0xE1, 0x00, 0x17, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE2, + 0x00, 0x16, 0x92, 0xE1, 0x00, 0x15, 0x91, 0xE0, 0x00, 0x15, 0x90, 0xDF, 0x00, 0x15, 0x90, 0xE0, 0x00, 0x15, 0x91, + 0xE2, 0x00, 0x12, 0x8E, 0xE1, 0x00, 0x0F, 0x8C, 0xDF, 0x00, 0x12, 0x8B, 0xDF, 0x00, 0x14, 0x8A, 0xDF, 0x00, 0x15, + 0x8D, 0xE2, 0x00, 0x0E, 0x89, 0xDC, 0x00, 0x0E, 0x88, 0xDC, 0x00, 0x0F, 0x87, 0xDD, 0x00, 0x0E, 0x86, 0xDC, 0x00, + 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x0E, 0x85, 0xDC, 0x00, 0x5F, 0xC0, 0xE6, + 0x00, 0x57, 0xBE, 0xE8, 0x00, 0x4F, 0xBB, 0xE9, 0x00, 0x4E, 0xBA, 0xE6, 0x00, 0x4D, 0xB9, 0xE3, 0x00, 0x50, 0xB6, + 0xED, 0x00, 0x2D, 0xAE, 0xE7, 0x00, 0x2E, 0xAC, 0xE6, 0x00, 0x2E, 0xAB, 0xE4, 0x00, 0x2E, 0xAC, 0xE6, 0x00, 0x2E, + 0xAD, 0xE8, 0x00, 0x2D, 0xAB, 0xE7, 0x00, 0x2C, 0xAA, 0xE5, 0x00, 0x15, 0xB2, 0xFF, 0x00, 0xEB, 0x42, 0x10, 0x00, + 0xF1, 0x4F, 0x16, 0x00, 0xF7, 0x5C, 0x1C, 0x00, 0xF8, 0x71, 0x23, 0x00, 0xF9, 0x85, 0x29, 0x00, 0xF6, 0x88, 0x2D, + 0x00, 0xF3, 0x8B, 0x30, 0x00, 0xF4, 0x85, 0x31, 0x00, 0xF4, 0x7F, 0x33, 0x00, 0xF6, 0x85, 0x35, 0x00, 0xF9, 0x8B, + 0x37, 0x00, 0xF8, 0x8D, 0x38, 0x00, 0xF7, 0x90, 0x3A, 0x00, 0xF8, 0x8B, 0x37, 0x00, 0xF8, 0x86, 0x35, 0x00, 0xF7, + 0x7E, 0x35, 0x00, 0xF6, 0x75, 0x35, 0x00, 0xF7, 0x6D, 0x33, 0x00, 0xF7, 0x64, 0x31, 0x00, 0xF8, 0x5E, 0x31, 0x00, + 0xF8, 0x57, 0x30, 0x00, 0xFF, 0x51, 0x25, 0x00, 0xF5, 0x51, 0x36, 0x00, 0x03, 0xA4, 0xFD, 0x00, 0x1E, 0x9A, 0xE1, + 0x00, 0x1E, 0x98, 0xE3, 0x00, 0x1E, 0x96, 0xE5, 0x00, 0x1C, 0x96, 0xE2, 0x00, 0x19, 0x97, 0xDF, 0x00, 0x18, 0x96, + 0xE1, 0x00, 0x17, 0x95, 0xE3, 0x00, 0x16, 0x94, 0xE2, 0x00, 0x16, 0x93, 0xE1, 0x00, 0x16, 0x92, 0xE0, 0x00, 0x15, + 0x91, 0xE0, 0x00, 0x16, 0x92, 0xE2, 0x00, 0x16, 0x93, 0xE4, 0x00, 0x12, 0x90, 0xE1, 0x00, 0x0F, 0x8E, 0xDF, 0x00, + 0x14, 0x8D, 0xE1, 0x00, 0x18, 0x8D, 0xE3, 0x00, 0x13, 0x8C, 0xE0, 0x00, 0x0F, 0x8B, 0xDE, 0x00, 0x0F, 0x89, 0xDD, + 0x00, 0x0E, 0x88, 0xDD, 0x00, 0x0E, 0x87, 0xDD, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x0E, 0x86, + 0xDC, 0x00, 0x0E, 0x86, 0xDC, 0x00, 0x3C, 0xB6, 0xED, 0x00, 0x35, 0xB3, 0xEE, 0x00, 0x2F, 0xB1, 0xEF, 0x00, 0x2F, + 0xB1, 0xED, 0x00, 0x2F, 0xB0, 0xEC, 0x00, 0x38, 0xB0, 0xEE, 0x00, 0x2D, 0xAE, 0xE9, 0x00, 0x2F, 0xAD, 0xE7, 0x00, + 0x30, 0xAD, 0xE6, 0x00, 0x2F, 0xAE, 0xE8, 0x00, 0x2D, 0xB0, 0xEA, 0x00, 0x30, 0xAD, 0xEC, 0x00, 0x28, 0xAF, 0xEE, + 0x00, 0x2F, 0xA9, 0xC8, 0x00, 0xFF, 0x3D, 0x04, 0x00, 0xFA, 0x50, 0x19, 0x00, 0xF8, 0x5F, 0x21, 0x00, 0xF7, 0x73, + 0x28, 0x00, 0xF7, 0x87, 0x2F, 0x00, 0xFA, 0x95, 0x37, 0x00, 0xF5, 0x9B, 0x37, 0x00, 0xF5, 0x96, 0x3A, 0x00, 0xF5, + 0x92, 0x3D, 0x00, 0xF7, 0x94, 0x3F, 0x00, 0xF9, 0x96, 0x41, 0x00, 0xF9, 0x99, 0x43, 0x00, 0xF9, 0x9D, 0x46, 0x00, + 0xF8, 0x98, 0x44, 0x00, 0xF7, 0x94, 0x43, 0x00, 0xF8, 0x8D, 0x42, 0x00, 0xF9, 0x86, 0x41, 0x00, 0xF9, 0x7D, 0x3F, + 0x00, 0xF9, 0x73, 0x3C, 0x00, 0xF7, 0x70, 0x38, 0x00, 0xF4, 0x6C, 0x35, 0x00, 0xFF, 0x60, 0x21, 0x00, 0xBE, 0x6C, + 0x62, 0x00, 0x12, 0x9D, 0xEF, 0x00, 0x21, 0x9A, 0xE8, 0x00, 0x1C, 0x99, 0xED, 0x00, 0x17, 0x9B, 0xE3, 0x00, 0x13, + 0x98, 0xF0, 0x00, 0x1B, 0x94, 0xE0, 0x00, 0x1A, 0x96, 0xE1, 0x00, 0x19, 0x97, 0xE3, 0x00, 0x18, 0x96, 0xE4, 0x00, + 0x17, 0x95, 0xE5, 0x00, 0x18, 0x94, 0xE3, 0x00, 0x19, 0x93, 0xE2, 0x00, 0x16, 0x91, 0xE0, 0x00, 0x14, 0x90, 0xDE, + 0x00, 0x15, 0x91, 0xE1, 0x00, 0x16, 0x92, 0xE5, 0x00, 0x14, 0x90, 0xE3, 0x00, 0x11, 0x8D, 0xE2, 0x00, 0x10, 0x8D, + 0xE2, 0x00, 0x0F, 0x8D, 0xE3, 0x00, 0x10, 0x8A, 0xDE, 0x00, 0x11, 0x88, 0xD8, 0x00, 0x0E, 0x87, 0xE1, 0x00, 0x0B, + 0x89, 0xDC, 0x00, 0x10, 0x85, 0xE0, 0x00, 0x09, 0x87, 0xE4, 0x00, 0x09, 0x87, 0xE4, 0x00, 0x3F, 0xB5, 0xE8, 0x00, + 0x3B, 0xB3, 0xE9, 0x00, 0x36, 0xB2, 0xEA, 0x00, 0x37, 0xB1, 0xE9, 0x00, 0x37, 0xB1, 0xE8, 0x00, 0x32, 0xAF, 0xE9, + 0x00, 0x2D, 0xAE, 0xEA, 0x00, 0x30, 0xAE, 0xE9, 0x00, 0x32, 0xAF, 0xE8, 0x00, 0x30, 0xB1, 0xEA, 0x00, 0x2D, 0xB4, + 0xEC, 0x00, 0x34, 0xAE, 0xF1, 0x00, 0x24, 0xB4, 0xF6, 0x00, 0x8D, 0x7E, 0x86, 0x00, 0xF6, 0x4E, 0x00, 0x00, 0xEC, + 0x5C, 0x1D, 0x00, 0xF9, 0x63, 0x25, 0x00, 0xF7, 0x76, 0x2D, 0x00, 0xF4, 0x89, 0x35, 0x00, 0xFD, 0xA2, 0x41, 0x00, + 0xF6, 0xAB, 0x3E, 0x00, 0xF6, 0xA8, 0x43, 0x00, 0xF7, 0xA4, 0x47, 0x00, 0xF8, 0xA3, 0x4A, 0x00, 0xFA, 0xA1, 0x4C, + 0x00, 0xFA, 0xA5, 0x4E, 0x00, 0xFB, 0xAA, 0x51, 0x00, 0xF9, 0xA6, 0x52, 0x00, 0xF7, 0xA2, 0x52, 0x00, 0xFA, 0x9C, + 0x4F, 0x00, 0xFD, 0x97, 0x4D, 0x00, 0xFC, 0x8D, 0x4A, 0x00, 0xFB, 0x83, 0x47, 0x00, 0xF6, 0x82, 0x40, 0x00, 0xF1, + 0x82, 0x39, 0x00, 0xF4, 0x72, 0x2B, 0x00, 0x71, 0x8C, 0xAB, 0x00, 0x16, 0x99, 0xF0, 0x00, 0x25, 0x99, 0xEF, 0x00, + 0x25, 0x97, 0xE8, 0x00, 0x26, 0x9A, 0xC5, 0x00, 0x16, 0x96, 0xF0, 0x00, 0x1C, 0x91, 0xE2, 0x00, 0x1B, 0x96, 0xE2, + 0x00, 0x1B, 0x9A, 0xE2, 0x00, 0x19, 0x99, 0xE5, 0x00, 0x18, 0x98, 0xE8, 0x00, 0x1A, 0x96, 0xE6, 0x00, 0x1C, 0x95, + 0xE4, 0x00, 0x17, 0x91, 0xDF, 0x00, 0x13, 0x8D, 0xD9, 0x00, 0x18, 0x92, 0xE2, 0x00, 0x1E, 0x97, 0xEA, 0x00, 0x14, + 0x92, 0xE5, 0x00, 0x0B, 0x8D, 0xE1, 0x00, 0x0D, 0x8E, 0xE5, 0x00, 0x10, 0x8F, 0xE9, 0x00, 0x12, 0x8B, 0xDE, 0x00, + 0x14, 0x88, 0xD4, 0x00, 0x0E, 0x87, 0xE6, 0x00, 0x08, 0x8C, 0xDC, 0x00, 0x11, 0x84, 0xE4, 0x00, 0x03, 0x88, 0xEC, + 0x00, 0x03, 0x88, 0xEC, 0x00, 0x3D, 0xB6, 0xEA, 0x00, 0x3A, 0xB5, 0xEA, 0x00, 0x38, 0xB4, 0xEB, 0x00, 0x37, 0xB3, + 0xEB, 0x00, 0x37, 0xB3, 0xEA, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x32, 0xB1, 0xEB, 0x00, 0x33, 0xB1, 0xEB, 0x00, 0x34, + 0xB0, 0xEA, 0x00, 0x32, 0xB3, 0xE9, 0x00, 0x2F, 0xB5, 0xE8, 0x00, 0x34, 0xB0, 0xF0, 0x00, 0x22, 0xB6, 0xF8, 0x00, + 0xC5, 0x60, 0x44, 0x00, 0xF9, 0x53, 0x0B, 0x00, 0xF2, 0x63, 0x21, 0x00, 0xF6, 0x6F, 0x29, 0x00, 0xF6, 0x7D, 0x2F, + 0x00, 0xF7, 0x8A, 0x35, 0x00, 0xFA, 0xA1, 0x41, 0x00, 0xF6, 0xAF, 0x45, 0x00, 0xFA, 0xB4, 0x4F, 0x00, 0xF6, 0xB0, + 0x50, 0x00, 0xF8, 0xAE, 0x53, 0x00, 0xFA, 0xAC, 0x56, 0x00, 0xFC, 0xB2, 0x59, 0x00, 0xFD, 0xB7, 0x5D, 0x00, 0xFA, + 0xB3, 0x5F, 0x00, 0xF6, 0xAF, 0x61, 0x00, 0xF9, 0xAC, 0x5D, 0x00, 0xFD, 0xA9, 0x59, 0x00, 0xFB, 0x9F, 0x55, 0x00, + 0xF8, 0x94, 0x50, 0x00, 0xF7, 0x91, 0x4A, 0x00, 0xF5, 0x8D, 0x44, 0x00, 0xFF, 0x7D, 0x22, 0x00, 0x1A, 0xA5, 0xEF, + 0x00, 0x12, 0x9E, 0xF3, 0x00, 0x28, 0x96, 0xF1, 0x00, 0x22, 0x9F, 0xB0, 0x00, 0x6C, 0x96, 0x00, 0x00, 0x3B, 0x9B, + 0x82, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9B, 0xF4, 0x00, 0x14, 0x9C, 0xE2, 0x00, 0x15, 0x99, 0xE4, 0x00, 0x17, + 0x96, 0xE6, 0x00, 0x18, 0x95, 0xE5, 0x00, 0x1A, 0x93, 0xE4, 0x00, 0x18, 0x93, 0xE2, 0x00, 0x16, 0x92, 0xE0, 0x00, + 0x1C, 0x98, 0xE6, 0x00, 0x19, 0x95, 0xE4, 0x00, 0x16, 0x92, 0xE4, 0x00, 0x12, 0x8F, 0xE5, 0x00, 0x12, 0x8C, 0xEB, + 0x00, 0x12, 0x8B, 0xE3, 0x00, 0x00, 0x87, 0xE3, 0x00, 0x00, 0x7B, 0xF4, 0x00, 0x1A, 0x86, 0xD3, 0x00, 0x0C, 0x8C, + 0xF0, 0x00, 0x00, 0x8E, 0xE2, 0x00, 0x0D, 0x84, 0xEA, 0x00, 0x07, 0x86, 0xF1, 0x00, 0x3B, 0xB7, 0xEC, 0x00, 0x3A, + 0xB6, 0xEC, 0x00, 0x39, 0xB6, 0xEC, 0x00, 0x38, 0xB5, 0xEC, 0x00, 0x37, 0xB5, 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, + 0x37, 0xB4, 0xEC, 0x00, 0x36, 0xB3, 0xEC, 0x00, 0x36, 0xB2, 0xEC, 0x00, 0x33, 0xB4, 0xE8, 0x00, 0x31, 0xB5, 0xE4, + 0x00, 0x34, 0xB1, 0xEF, 0x00, 0x21, 0xB8, 0xF9, 0x00, 0xFD, 0x41, 0x02, 0x00, 0xFC, 0x58, 0x1E, 0x00, 0xF8, 0x6A, + 0x25, 0x00, 0xF3, 0x7C, 0x2C, 0x00, 0xF6, 0x84, 0x31, 0x00, 0xF9, 0x8B, 0x35, 0x00, 0xF7, 0xA0, 0x41, 0x00, 0xF6, + 0xB4, 0x4C, 0x00, 0xFE, 0xC0, 0x5B, 0x00, 0xF6, 0xBC, 0x59, 0x00, 0xF8, 0xBA, 0x5D, 0x00, 0xFA, 0xB7, 0x60, 0x00, + 0xFD, 0xBE, 0x64, 0x00, 0xFF, 0xC4, 0x69, 0x00, 0xFA, 0xC0, 0x6C, 0x00, 0xF5, 0xBD, 0x6F, 0x00, 0xF9, 0xBC, 0x6A, + 0x00, 0xFD, 0xBB, 0x65, 0x00, 0xFA, 0xB1, 0x60, 0x00, 0xF6, 0xA6, 0x5A, 0x00, 0xF8, 0x9F, 0x54, 0x00, 0xFA, 0x98, + 0x4F, 0x00, 0xDF, 0x94, 0x6E, 0x00, 0x07, 0xA6, 0xFB, 0x00, 0x24, 0x9C, 0xDA, 0x00, 0x14, 0x9F, 0xF2, 0x00, 0x4A, + 0xA1, 0x71, 0x00, 0x68, 0xA9, 0x0D, 0x00, 0x61, 0xA3, 0x06, 0x00, 0x5A, 0x98, 0x1B, 0x00, 0x33, 0x96, 0x9B, 0x00, + 0x0D, 0x99, 0xFE, 0x00, 0x11, 0x96, 0xF1, 0x00, 0x16, 0x94, 0xE4, 0x00, 0x17, 0x93, 0xE4, 0x00, 0x18, 0x91, 0xE4, + 0x00, 0x19, 0x94, 0xE5, 0x00, 0x1A, 0x98, 0xE6, 0x00, 0x1F, 0x9D, 0xEA, 0x00, 0x15, 0x93, 0xDE, 0x00, 0x17, 0x92, + 0xE3, 0x00, 0x1A, 0x91, 0xE8, 0x00, 0x1F, 0x94, 0xEB, 0x00, 0x25, 0x9D, 0xD1, 0x00, 0xD0, 0xF7, 0x72, 0x00, 0xC1, + 0xF2, 0x95, 0x00, 0x00, 0x83, 0xF0, 0x00, 0x17, 0x81, 0xA0, 0x00, 0x3B, 0x7E, 0x2E, 0x00, 0x16, 0x87, 0xCB, 0x00, + 0x0B, 0x8A, 0xDA, 0x00, 0x3D, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xED, 0x00, 0x3B, 0xB7, 0xED, 0x00, 0x3A, 0xB7, 0xED, + 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, 0xED, 0x00, 0x39, 0xB6, + 0xED, 0x00, 0x37, 0xB4, 0xEC, 0x00, 0x34, 0xB2, 0xEB, 0x00, 0x34, 0xAB, 0xF2, 0x00, 0x6D, 0x95, 0xB3, 0x00, 0xFF, + 0x46, 0x00, 0x00, 0xF7, 0x64, 0x20, 0x00, 0xF6, 0x73, 0x28, 0x00, 0xF5, 0x81, 0x30, 0x00, 0xF6, 0x8B, 0x37, 0x00, + 0xF8, 0x94, 0x3D, 0x00, 0xF8, 0xA6, 0x48, 0x00, 0xF7, 0xB7, 0x53, 0x00, 0xFB, 0xC2, 0x60, 0x00, 0xF7, 0xC4, 0x65, + 0x00, 0xF9, 0xC3, 0x69, 0x00, 0xFA, 0xC2, 0x6D, 0x00, 0xFA, 0xC6, 0x72, 0x00, 0xFA, 0xCB, 0x77, 0x00, 0xFB, 0xCB, + 0x7A, 0x00, 0xFC, 0xCB, 0x7D, 0x00, 0xFA, 0xC8, 0x7A, 0x00, 0xF8, 0xC5, 0x77, 0x00, 0xF9, 0xBC, 0x72, 0x00, 0xFA, + 0xB4, 0x6C, 0x00, 0xF6, 0xB0, 0x68, 0x00, 0xFD, 0xAA, 0x56, 0x00, 0x93, 0xA0, 0xA5, 0x00, 0x13, 0xA1, 0xF3, 0x00, + 0x21, 0x9C, 0xEF, 0x00, 0x19, 0x9D, 0xFF, 0x00, 0x71, 0xC1, 0x23, 0x00, 0x79, 0xB7, 0x25, 0x00, 0x71, 0xB2, 0x1D, + 0x00, 0x6A, 0xAA, 0x23, 0x00, 0x66, 0xA0, 0x25, 0x00, 0x63, 0x9A, 0x18, 0x00, 0x41, 0x9C, 0x72, 0x00, 0x1E, 0x9F, + 0xCB, 0x00, 0x18, 0x93, 0xFF, 0x00, 0x13, 0x98, 0xF1, 0x00, 0x18, 0x9C, 0xF4, 0x00, 0x1D, 0xA0, 0xF7, 0x00, 0x1B, + 0x9C, 0xFF, 0x00, 0x10, 0x93, 0xF6, 0x00, 0x11, 0x93, 0xF1, 0x00, 0x13, 0x93, 0xEC, 0x00, 0x00, 0x83, 0xFF, 0x00, + 0x72, 0xCB, 0xA0, 0x00, 0xCB, 0xF9, 0x81, 0x00, 0xD0, 0xFF, 0xAC, 0x00, 0x78, 0xA0, 0x45, 0x00, 0x33, 0x77, 0x00, + 0x00, 0x3A, 0x7C, 0x02, 0x00, 0x0D, 0x8C, 0xE2, 0x00, 0x0D, 0x8E, 0xDB, 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xB9, + 0xED, 0x00, 0x3C, 0xB9, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3A, 0xB8, 0xED, 0x00, 0x3B, 0xB8, 0xED, 0x00, 0x3B, + 0xB8, 0xED, 0x00, 0x3C, 0xB8, 0xEE, 0x00, 0x3C, 0xB9, 0xEE, 0x00, 0x3A, 0xB4, 0xF0, 0x00, 0x37, 0xAE, 0xF2, 0x00, + 0x32, 0xB3, 0xFE, 0x00, 0xB3, 0x8E, 0x7C, 0x00, 0xFF, 0x58, 0x06, 0x00, 0xF3, 0x71, 0x22, 0x00, 0xF4, 0x7C, 0x2B, + 0x00, 0xF6, 0x86, 0x34, 0x00, 0xF7, 0x92, 0x3D, 0x00, 0xF8, 0x9D, 0x45, 0x00, 0xF8, 0xAC, 0x4F, 0x00, 0xF8, 0xBB, + 0x5A, 0x00, 0xF9, 0xC4, 0x65, 0x00, 0xF9, 0xCC, 0x70, 0x00, 0xFA, 0xCC, 0x75, 0x00, 0xFA, 0xCC, 0x7A, 0x00, 0xF7, + 0xCF, 0x80, 0x00, 0xF4, 0xD2, 0x85, 0x00, 0xFB, 0xD5, 0x89, 0x00, 0xFF, 0xD9, 0x8C, 0x00, 0xFA, 0xD3, 0x8B, 0x00, + 0xF2, 0xCE, 0x89, 0x00, 0xF8, 0xC8, 0x84, 0x00, 0xFE, 0xC1, 0x7F, 0x00, 0xF4, 0xC1, 0x7C, 0x00, 0xFF, 0xBC, 0x5E, + 0x00, 0x47, 0xAB, 0xDB, 0x00, 0x1E, 0x9C, 0xEA, 0x00, 0x1D, 0xA2, 0xE8, 0x00, 0x1D, 0xA7, 0xE5, 0x00, 0x98, 0xD3, + 0x1B, 0x00, 0x8A, 0xCB, 0x21, 0x00, 0x82, 0xC3, 0x26, 0x00, 0x7A, 0xBB, 0x2C, 0x00, 0x75, 0xB4, 0x28, 0x00, 0x70, + 0xAD, 0x25, 0x00, 0x6D, 0xAB, 0x16, 0x00, 0x6A, 0xA9, 0x08, 0x00, 0x5E, 0xA9, 0x11, 0x00, 0x51, 0x9E, 0x53, 0x00, + 0x47, 0x9B, 0x6D, 0x00, 0x3E, 0x97, 0x87, 0x00, 0x3B, 0x95, 0x91, 0x00, 0x38, 0x98, 0x80, 0x00, 0x44, 0x96, 0x63, + 0x00, 0x4F, 0x94, 0x45, 0x00, 0x82, 0xB4, 0x3C, 0x00, 0x4F, 0x84, 0x1B, 0x00, 0xAF, 0xE0, 0x87, 0x00, 0x9E, 0xCC, + 0x82, 0x00, 0x35, 0x7F, 0x11, 0x00, 0x42, 0x82, 0x1B, 0x00, 0x32, 0x84, 0x3B, 0x00, 0x04, 0x92, 0xF9, 0x00, 0x0F, + 0x92, 0xDC, 0x00, 0x40, 0xBC, 0xEE, 0x00, 0x3F, 0xBB, 0xED, 0x00, 0x3E, 0xBA, 0xED, 0x00, 0x3D, 0xBA, 0xED, 0x00, + 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB9, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xEC, 0x00, 0x3C, 0xB8, 0xEB, + 0x00, 0x3F, 0xB3, 0xF0, 0x00, 0x42, 0xAF, 0xF4, 0x00, 0x0D, 0xBA, 0xE8, 0x00, 0xFF, 0xB8, 0x96, 0x00, 0xF6, 0x81, + 0x4C, 0x00, 0xF5, 0x75, 0x22, 0x00, 0xF6, 0x80, 0x2D, 0x00, 0xF7, 0x8B, 0x38, 0x00, 0xF7, 0x99, 0x42, 0x00, 0xF7, + 0xA6, 0x4D, 0x00, 0xF8, 0xB2, 0x56, 0x00, 0xF9, 0xBD, 0x5F, 0x00, 0xF9, 0xC8, 0x6D, 0x00, 0xFA, 0xD4, 0x7A, 0x00, + 0xFA, 0xD5, 0x81, 0x00, 0xF9, 0xD7, 0x88, 0x00, 0xFA, 0xD8, 0x8D, 0x00, 0xFB, 0xDA, 0x92, 0x00, 0xF9, 0xE4, 0xA1, + 0x00, 0xFE, 0xD6, 0x91, 0x00, 0xFA, 0xDE, 0x9F, 0x00, 0xF8, 0xDB, 0x97, 0x00, 0xF9, 0xD5, 0x93, 0x00, 0xFB, 0xCF, + 0x8F, 0x00, 0xFF, 0xD1, 0x85, 0x00, 0xFF, 0xC6, 0x78, 0x00, 0x00, 0x9A, 0xFC, 0x00, 0x26, 0xA8, 0xF1, 0x00, 0x1F, + 0xA4, 0xF8, 0x00, 0x53, 0xBD, 0xA5, 0x00, 0xA4, 0xDA, 0x30, 0x00, 0x9D, 0xD5, 0x37, 0x00, 0x97, 0xD0, 0x3A, 0x00, + 0x90, 0xCA, 0x3D, 0x00, 0x8A, 0xC5, 0x39, 0x00, 0x84, 0xBF, 0x35, 0x00, 0x7C, 0xBD, 0x30, 0x00, 0x74, 0xBC, 0x2C, + 0x00, 0x75, 0xB8, 0x1B, 0x00, 0x77, 0xAF, 0x27, 0x00, 0x72, 0xAB, 0x25, 0x00, 0x6D, 0xA7, 0x23, 0x00, 0x6A, 0xA3, + 0x28, 0x00, 0x68, 0xA2, 0x1E, 0x00, 0x57, 0x95, 0x19, 0x00, 0x77, 0xB7, 0x45, 0x00, 0xBA, 0xF0, 0x81, 0x00, 0x72, + 0xAC, 0x4C, 0x00, 0x41, 0x7B, 0x14, 0x00, 0x4F, 0x8A, 0x1D, 0x00, 0x42, 0x86, 0x1C, 0x00, 0x49, 0x86, 0x14, 0x00, + 0x16, 0x86, 0x8B, 0x00, 0x0A, 0x90, 0xF5, 0x00, 0x15, 0x8D, 0xE7, 0x00, 0x41, 0xBE, 0xEF, 0x00, 0x40, 0xBD, 0xEE, + 0x00, 0x3F, 0xBC, 0xED, 0x00, 0x3E, 0xBB, 0xED, 0x00, 0x3D, 0xBA, 0xEC, 0x00, 0x3D, 0xBA, 0xEB, 0x00, 0x3C, 0xB9, + 0xEA, 0x00, 0x3C, 0xB8, 0xE9, 0x00, 0x3B, 0xB7, 0xE8, 0x00, 0x39, 0xB9, 0xF0, 0x00, 0x37, 0xBA, 0xF7, 0x00, 0x50, + 0xB5, 0xDC, 0x00, 0xFF, 0x96, 0x44, 0x00, 0xFE, 0xC4, 0x9C, 0x00, 0xF7, 0x79, 0x23, 0x00, 0xF8, 0x85, 0x30, 0x00, + 0xF8, 0x91, 0x3C, 0x00, 0xF8, 0xA0, 0x48, 0x00, 0xF7, 0xAF, 0x55, 0x00, 0xF8, 0xB7, 0x5D, 0x00, 0xF9, 0xBF, 0x65, + 0x00, 0xFA, 0xCD, 0x75, 0x00, 0xFB, 0xDB, 0x85, 0x00, 0xFA, 0xDE, 0x8D, 0x00, 0xF9, 0xE1, 0x95, 0x00, 0xFD, 0xE1, + 0x9A, 0x00, 0xFF, 0xE2, 0xA0, 0x00, 0xFA, 0xE8, 0xA3, 0x00, 0xFF, 0xBD, 0x6B, 0x00, 0xFC, 0xDE, 0x9E, 0x00, 0xFF, + 0xE8, 0xA6, 0x00, 0xFB, 0xE3, 0xA3, 0x00, 0xF7, 0xDE, 0xA0, 0x00, 0xFD, 0xD7, 0x99, 0x00, 0xB5, 0xBD, 0xAB, 0x00, + 0x11, 0x9F, 0xF0, 0x00, 0x1D, 0xA3, 0xE8, 0x00, 0x19, 0x9E, 0xFF, 0x00, 0x89, 0xD4, 0x65, 0x00, 0xB0, 0xE1, 0x45, + 0x00, 0xB0, 0xDF, 0x4D, 0x00, 0xAB, 0xDC, 0x4D, 0x00, 0xA7, 0xD8, 0x4D, 0x00, 0xA0, 0xD5, 0x49, 0x00, 0x99, 0xD2, + 0x44, 0x00, 0x97, 0xCD, 0x3C, 0x00, 0x94, 0xC9, 0x34, 0x00, 0x8D, 0xC4, 0x34, 0x00, 0x86, 0xC0, 0x33, 0x00, 0x7A, + 0xBC, 0x32, 0x00, 0x6E, 0xB7, 0x31, 0x00, 0x6D, 0xB2, 0x2F, 0x00, 0x6B, 0xAE, 0x2E, 0x00, 0x7D, 0xB9, 0x3F, 0x00, + 0x6F, 0xA5, 0x30, 0x00, 0x7B, 0xB5, 0x4E, 0x00, 0x56, 0x9A, 0x20, 0x00, 0x5B, 0x9F, 0x2A, 0x00, 0x50, 0x93, 0x24, + 0x00, 0x80, 0xB9, 0x65, 0x00, 0x5F, 0x99, 0x1C, 0x00, 0x03, 0x8F, 0xE2, 0x00, 0x10, 0x8E, 0xF2, 0x00, 0x1B, 0x88, + 0xF2, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x42, 0xBE, 0xEE, 0x00, 0x41, 0xBD, 0xEE, 0x00, 0x40, 0xBD, 0xEE, 0x00, 0x3F, + 0xBC, 0xED, 0x00, 0x3F, 0xBB, 0xEC, 0x00, 0x3F, 0xB9, 0xEB, 0x00, 0x3D, 0xB9, 0xEC, 0x00, 0x3C, 0xB8, 0xEE, 0x00, + 0x37, 0xB8, 0xEB, 0x00, 0x26, 0xBC, 0xF6, 0x00, 0x94, 0x9B, 0x8F, 0x00, 0xFB, 0x96, 0x37, 0x00, 0xF9, 0xBB, 0x7C, + 0x00, 0xF8, 0xB5, 0x85, 0x00, 0xF6, 0x99, 0x49, 0x00, 0xF5, 0x9B, 0x42, 0x00, 0xF6, 0xA6, 0x4E, 0x00, 0xF7, 0xB2, + 0x59, 0x00, 0xF8, 0xBC, 0x65, 0x00, 0xF9, 0xC6, 0x72, 0x00, 0xF9, 0xD3, 0x7F, 0x00, 0xFA, 0xE0, 0x8D, 0x00, 0xF9, + 0xE5, 0x97, 0x00, 0xF8, 0xEB, 0xA1, 0x00, 0xFE, 0xEA, 0xA6, 0x00, 0xFF, 0xEA, 0xAA, 0x00, 0xFC, 0xEE, 0xA8, 0x00, + 0xF9, 0xBA, 0x62, 0x00, 0xFA, 0xDC, 0x98, 0x00, 0xFE, 0xF3, 0xB9, 0x00, 0xFB, 0xEC, 0xB2, 0x00, 0xF7, 0xE5, 0xAB, + 0x00, 0xFE, 0xE4, 0xA2, 0x00, 0x64, 0xB0, 0xD1, 0x00, 0x19, 0x9F, 0xF0, 0x00, 0x26, 0x9E, 0xE8, 0x00, 0x03, 0x98, + 0xF2, 0x00, 0xE3, 0xEF, 0x50, 0x00, 0xD5, 0xEE, 0x57, 0x00, 0xBF, 0xE3, 0x64, 0x00, 0xBC, 0xE1, 0x64, 0x00, 0xB9, + 0xDF, 0x64, 0x00, 0xB4, 0xDD, 0x5D, 0x00, 0xB0, 0xDB, 0x56, 0x00, 0xA9, 0xD7, 0x4E, 0x00, 0xA2, 0xD3, 0x46, 0x00, + 0x9B, 0xD0, 0x42, 0x00, 0x93, 0xCD, 0x3F, 0x00, 0x8B, 0xC9, 0x3D, 0x00, 0x84, 0xC5, 0x3C, 0x00, 0x80, 0xC1, 0x39, + 0x00, 0x7D, 0xBC, 0x36, 0x00, 0x8A, 0xC7, 0x45, 0x00, 0x88, 0xC1, 0x44, 0x00, 0x62, 0xA0, 0x2B, 0x00, 0x64, 0xA9, + 0x2B, 0x00, 0x5E, 0xA3, 0x2D, 0x00, 0x4F, 0x95, 0x26, 0x00, 0xA4, 0xCE, 0x98, 0x00, 0xD8, 0xEA, 0xDC, 0x00, 0xB9, + 0xDC, 0xFF, 0x00, 0x38, 0x9D, 0xF3, 0x00, 0x00, 0x8F, 0xD3, 0x00, 0x45, 0xC1, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, + 0x43, 0xBF, 0xEF, 0x00, 0x41, 0xBE, 0xEF, 0x00, 0x40, 0xBD, 0xEF, 0x00, 0x41, 0xBC, 0xED, 0x00, 0x42, 0xBA, 0xEB, + 0x00, 0x3F, 0xBA, 0xEF, 0x00, 0x3C, 0xB9, 0xF3, 0x00, 0x34, 0xB8, 0xE6, 0x00, 0x16, 0xBD, 0xF6, 0x00, 0xD8, 0x7F, + 0x4F, 0x00, 0xF7, 0x90, 0x46, 0x00, 0xF7, 0xA5, 0x54, 0x00, 0xFF, 0xDA, 0xBA, 0x00, 0xF8, 0xA1, 0x4D, 0x00, 0xF3, + 0xA5, 0x49, 0x00, 0xF4, 0xAD, 0x53, 0x00, 0xF6, 0xB5, 0x5D, 0x00, 0xF8, 0xC0, 0x6E, 0x00, 0xFA, 0xCC, 0x7F, 0x00, + 0xF9, 0xD8, 0x8A, 0x00, 0xF8, 0xE4, 0x95, 0x00, 0xF8, 0xEC, 0xA1, 0x00, 0xF7, 0xF4, 0xAE, 0x00, 0xFE, 0xF3, 0xB2, + 0x00, 0xFF, 0xF1, 0xB5, 0x00, 0xFE, 0xF4, 0xAD, 0x00, 0xF3, 0xB6, 0x59, 0x00, 0xF8, 0xDA, 0x92, 0x00, 0xFE, 0xFF, + 0xCC, 0x00, 0xFA, 0xF6, 0xC1, 0x00, 0xF7, 0xED, 0xB6, 0x00, 0xFF, 0xF1, 0xAB, 0x00, 0x13, 0xA4, 0xF7, 0x00, 0x15, + 0xA4, 0xEF, 0x00, 0x18, 0xA5, 0xE8, 0x00, 0x56, 0xB4, 0xCD, 0x00, 0xF0, 0xF2, 0x71, 0x00, 0xD4, 0xEF, 0x84, 0x00, + 0xCF, 0xE6, 0x7B, 0x00, 0xCD, 0xE6, 0x7B, 0x00, 0xCB, 0xE6, 0x7C, 0x00, 0xC9, 0xE5, 0x71, 0x00, 0xC6, 0xE5, 0x67, + 0x00, 0xBC, 0xE1, 0x5F, 0x00, 0xB1, 0xDD, 0x57, 0x00, 0xA8, 0xDB, 0x51, 0x00, 0xA0, 0xDA, 0x4B, 0x00, 0x9C, 0xD7, + 0x48, 0x00, 0x99, 0xD4, 0x46, 0x00, 0x94, 0xCF, 0x42, 0x00, 0x8F, 0xCA, 0x3E, 0x00, 0x88, 0xC4, 0x3B, 0x00, 0x81, + 0xBE, 0x39, 0x00, 0x72, 0xB3, 0x30, 0x00, 0x62, 0xA8, 0x27, 0x00, 0x58, 0xA0, 0x27, 0x00, 0x4E, 0x97, 0x27, 0x00, + 0x9F, 0xC4, 0x79, 0x00, 0xFF, 0xFB, 0xF7, 0x00, 0x7F, 0xD2, 0xF4, 0x00, 0x03, 0x8E, 0xE1, 0x00, 0x0E, 0x89, 0xE1, + 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, 0xC2, 0xEF, 0x00, 0x44, 0xC0, 0xEF, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x41, 0xBE, + 0xF0, 0x00, 0x42, 0xBD, 0xEE, 0x00, 0x43, 0xBC, 0xEC, 0x00, 0x40, 0xBC, 0xEF, 0x00, 0x3E, 0xBB, 0xF1, 0x00, 0x2F, + 0xC0, 0xFD, 0x00, 0x35, 0xBD, 0xFB, 0x00, 0xF5, 0x4B, 0x00, 0x00, 0xFF, 0x8A, 0x52, 0x00, 0xFA, 0xA5, 0x5D, 0x00, + 0xFC, 0xC4, 0x8D, 0x00, 0xFB, 0xC1, 0x85, 0x00, 0xF5, 0xAD, 0x50, 0x00, 0xF7, 0xB6, 0x5E, 0x00, 0xF9, 0xBE, 0x6B, + 0x00, 0xFA, 0xC9, 0x78, 0x00, 0xFB, 0xD4, 0x85, 0x00, 0xFE, 0xDE, 0x97, 0x00, 0xFF, 0xE8, 0xAA, 0x00, 0xFD, 0xEE, + 0xAD, 0x00, 0xF9, 0xF4, 0xB1, 0x00, 0xFC, 0xF5, 0xB9, 0x00, 0xFE, 0xF6, 0xC2, 0x00, 0xFB, 0xF0, 0xB2, 0x00, 0xF6, + 0xCB, 0x6E, 0x00, 0xFB, 0xDE, 0x91, 0x00, 0xFC, 0xFC, 0xCA, 0x00, 0xFF, 0xFB, 0xD0, 0x00, 0xFF, 0xFC, 0xC8, 0x00, + 0xCA, 0xE3, 0xC7, 0x00, 0x15, 0xA1, 0xF2, 0x00, 0x1D, 0xA3, 0xEE, 0x00, 0x11, 0xA1, 0xF1, 0x00, 0x9E, 0xD4, 0xB9, + 0x00, 0xEA, 0xF1, 0x8B, 0x00, 0xDC, 0xEF, 0x95, 0x00, 0xD9, 0xEB, 0x90, 0x00, 0xD9, 0xEB, 0x92, 0x00, 0xD8, 0xEC, + 0x94, 0x00, 0xD6, 0xEB, 0x8B, 0x00, 0xD3, 0xEA, 0x82, 0x00, 0xC9, 0xE6, 0x78, 0x00, 0xBF, 0xE3, 0x6F, 0x00, 0xB8, + 0xE2, 0x68, 0x00, 0xB1, 0xE2, 0x61, 0x00, 0xAE, 0xE0, 0x5D, 0x00, 0xAC, 0xDE, 0x5A, 0x00, 0xA2, 0xD9, 0x51, 0x00, + 0x98, 0xD3, 0x48, 0x00, 0x8E, 0xCB, 0x41, 0x00, 0x83, 0xC3, 0x39, 0x00, 0x74, 0xB7, 0x32, 0x00, 0x66, 0xAC, 0x2C, + 0x00, 0x5D, 0xA2, 0x29, 0x00, 0x54, 0x99, 0x26, 0x00, 0x4A, 0x93, 0x21, 0x00, 0x23, 0x99, 0xB9, 0x00, 0x15, 0x93, + 0xFE, 0x00, 0x09, 0x92, 0xD8, 0x00, 0x0F, 0x8F, 0xD8, 0x00, 0x49, 0xC4, 0xEF, 0x00, 0x47, 0xC3, 0xEF, 0x00, 0x46, + 0xC2, 0xF0, 0x00, 0x44, 0xC1, 0xF0, 0x00, 0x42, 0xC0, 0xF1, 0x00, 0x43, 0xBF, 0xEF, 0x00, 0x43, 0xBE, 0xED, 0x00, + 0x42, 0xBE, 0xEE, 0x00, 0x41, 0xBD, 0xF0, 0x00, 0x37, 0xBA, 0xF0, 0x00, 0x71, 0xA1, 0xB7, 0x00, 0xFE, 0x5D, 0x1D, + 0x00, 0xF8, 0x79, 0x31, 0x00, 0xF5, 0xA1, 0x51, 0x00, 0xF8, 0xAD, 0x60, 0x00, 0xFE, 0xE0, 0xBC, 0x00, 0xF7, 0xB6, + 0x57, 0x00, 0xF9, 0xBF, 0x68, 0x00, 0xFC, 0xC8, 0x79, 0x00, 0xFC, 0xD2, 0x82, 0x00, 0xFC, 0xDB, 0x8B, 0x00, 0xFB, + 0xDE, 0x8F, 0x00, 0xFB, 0xE0, 0x92, 0x00, 0xFA, 0xEA, 0xA3, 0x00, 0xFA, 0xF4, 0xB4, 0x00, 0xF9, 0xF8, 0xC1, 0x00, + 0xF8, 0xFB, 0xCE, 0x00, 0xF9, 0xEB, 0xB6, 0x00, 0xFA, 0xE1, 0x83, 0x00, 0xFD, 0xE2, 0x8F, 0x00, 0xFB, 0xF9, 0xC7, + 0x00, 0xFC, 0xF8, 0xD7, 0x00, 0xFE, 0xFC, 0xCA, 0x00, 0x8B, 0xCD, 0xDC, 0x00, 0x18, 0x9F, 0xED, 0x00, 0x24, 0xA3, + 0xED, 0x00, 0x0A, 0x9D, 0xFA, 0x00, 0xE7, 0xF5, 0xA5, 0x00, 0xE4, 0xF1, 0xA5, 0x00, 0xE4, 0xF0, 0xA5, 0x00, 0xE3, + 0xEF, 0xA6, 0x00, 0xE4, 0xF0, 0xA9, 0x00, 0xE6, 0xF2, 0xAD, 0x00, 0xE3, 0xF0, 0xA5, 0x00, 0xE0, 0xEF, 0x9E, 0x00, + 0xD6, 0xEC, 0x92, 0x00, 0xCD, 0xE9, 0x87, 0x00, 0xC7, 0xE9, 0x7F, 0x00, 0xC2, 0xEA, 0x78, 0x00, 0xC1, 0xEA, 0x72, + 0x00, 0xC0, 0xE9, 0x6D, 0x00, 0xB1, 0xE3, 0x60, 0x00, 0xA2, 0xDD, 0x53, 0x00, 0x94, 0xD2, 0x46, 0x00, 0x86, 0xC8, + 0x3A, 0x00, 0x77, 0xBC, 0x35, 0x00, 0x69, 0xB0, 0x30, 0x00, 0x62, 0xA5, 0x2B, 0x00, 0x5B, 0x9B, 0x26, 0x00, 0x57, + 0x91, 0x09, 0x00, 0x09, 0x94, 0xFB, 0x00, 0x0C, 0x95, 0xE5, 0x00, 0x0F, 0x91, 0xEB, 0x00, 0x0F, 0x91, 0xEB, 0x00, + 0x4A, 0xC5, 0xEF, 0x00, 0x48, 0xC4, 0xF0, 0x00, 0x47, 0xC3, 0xF0, 0x00, 0x45, 0xC2, 0xF1, 0x00, 0x43, 0xC1, 0xF1, + 0x00, 0x41, 0xC1, 0xF1, 0x00, 0x3F, 0xC1, 0xF1, 0x00, 0x3F, 0xBE, 0xF0, 0x00, 0x3F, 0xBC, 0xEF, 0x00, 0x32, 0xC2, + 0xFD, 0x00, 0xBD, 0x7F, 0x6E, 0x00, 0xFE, 0x65, 0x26, 0x00, 0xF5, 0x7B, 0x34, 0x00, 0xF5, 0x9A, 0x4C, 0x00, 0xF8, + 0xAB, 0x5C, 0x00, 0xFA, 0xD0, 0x9F, 0x00, 0xF7, 0xC6, 0x83, 0x00, 0xFD, 0xC1, 0x6A, 0x00, 0xFD, 0xD1, 0x7E, 0x00, + 0xFB, 0xDB, 0x87, 0x00, 0xF9, 0xE5, 0x8F, 0x00, 0xF8, 0xEC, 0x9A, 0x00, 0xF7, 0xF4, 0xA5, 0x00, 0xFB, 0xEA, 0x99, + 0x00, 0xFF, 0xDF, 0x8E, 0x00, 0xFB, 0xE2, 0x9F, 0x00, 0xF7, 0xE6, 0xB1, 0x00, 0xFB, 0xED, 0xCC, 0x00, 0xFF, 0xFA, + 0xCA, 0x00, 0xFF, 0xF2, 0xC6, 0x00, 0xFC, 0xF0, 0xC2, 0x00, 0xFE, 0xF5, 0xD2, 0x00, 0xFF, 0xFC, 0xD3, 0x00, 0x4B, + 0xB5, 0xE6, 0x00, 0x20, 0xA4, 0xED, 0x00, 0x1B, 0xA2, 0xED, 0x00, 0x3D, 0xAA, 0xE2, 0x00, 0xEE, 0xF6, 0xAB, 0x00, + 0xE5, 0xF1, 0xB1, 0x00, 0xE7, 0xF2, 0xB4, 0x00, 0xE9, 0xF3, 0xB8, 0x00, 0xE9, 0xF3, 0xBA, 0x00, 0xEA, 0xF4, 0xBC, + 0x00, 0xE8, 0xF3, 0xB5, 0x00, 0xE5, 0xF2, 0xAF, 0x00, 0xE0, 0xF0, 0xA8, 0x00, 0xDA, 0xED, 0xA1, 0x00, 0xD5, 0xEF, + 0x99, 0x00, 0xD0, 0xF0, 0x91, 0x00, 0xC8, 0xED, 0x82, 0x00, 0xC0, 0xEA, 0x72, 0x00, 0xB0, 0xE3, 0x61, 0x00, 0xA0, + 0xDC, 0x50, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x88, 0xCA, 0x3E, 0x00, 0x7B, 0xBF, 0x38, 0x00, 0x6E, 0xB4, 0x32, 0x00, + 0x65, 0xA8, 0x2E, 0x00, 0x5D, 0xA0, 0x1B, 0x00, 0x3C, 0x94, 0x48, 0x00, 0x0A, 0x93, 0xF6, 0x00, 0x0D, 0x94, 0xEC, + 0x00, 0x10, 0x92, 0xF0, 0x00, 0x10, 0x92, 0xF0, 0x00, 0x4B, 0xC5, 0xF0, 0x00, 0x49, 0xC4, 0xF0, 0x00, 0x48, 0xC4, + 0xF1, 0x00, 0x46, 0xC3, 0xF1, 0x00, 0x44, 0xC2, 0xF2, 0x00, 0x3F, 0xC3, 0xF4, 0x00, 0x3A, 0xC4, 0xF6, 0x00, 0x3C, + 0xBF, 0xF3, 0x00, 0x3D, 0xBA, 0xEF, 0x00, 0x2C, 0xCA, 0xFF, 0x00, 0xFF, 0x5D, 0x24, 0x00, 0xFE, 0x6D, 0x2E, 0x00, + 0xF2, 0x7D, 0x38, 0x00, 0xF5, 0x93, 0x48, 0x00, 0xF7, 0xA9, 0x57, 0x00, 0xF7, 0xC0, 0x82, 0x00, 0xF7, 0xD7, 0xAE, + 0x00, 0xFF, 0xC2, 0x6C, 0x00, 0xFE, 0xDA, 0x84, 0x00, 0xFA, 0xE4, 0x8B, 0x00, 0xF6, 0xEE, 0x93, 0x00, 0xF8, 0xED, + 0x9D, 0x00, 0xF9, 0xEC, 0xA7, 0x00, 0xF8, 0xF1, 0xB3, 0x00, 0xF7, 0xF6, 0xC0, 0x00, 0xFB, 0xF6, 0xC8, 0x00, 0xFF, + 0xF6, 0xD0, 0x00, 0xFE, 0xF2, 0xD3, 0x00, 0xFB, 0xF3, 0xB9, 0x00, 0xFF, 0xFD, 0xE7, 0x00, 0xF6, 0xFD, 0xE9, 0x00, + 0xFC, 0xFC, 0xE2, 0x00, 0xFF, 0xFC, 0xDC, 0x00, 0x0B, 0x9D, 0xF1, 0x00, 0x29, 0xAA, 0xEC, 0x00, 0x1B, 0xAA, 0xF5, + 0x00, 0x7F, 0xC7, 0xD9, 0x00, 0xFD, 0xFE, 0xBA, 0x00, 0xE7, 0xF2, 0xBD, 0x00, 0xEB, 0xF4, 0xC3, 0x00, 0xEE, 0xF6, + 0xCA, 0x00, 0xEF, 0xF6, 0xCA, 0x00, 0xEF, 0xF7, 0xCB, 0x00, 0xED, 0xF6, 0xC5, 0x00, 0xEB, 0xF5, 0xBF, 0x00, 0xE9, + 0xF3, 0xBE, 0x00, 0xE8, 0xF2, 0xBC, 0x00, 0xE3, 0xF4, 0xB3, 0x00, 0xDF, 0xF6, 0xAB, 0x00, 0xD0, 0xF1, 0x91, 0x00, + 0xC1, 0xEC, 0x77, 0x00, 0xAF, 0xE3, 0x62, 0x00, 0x9E, 0xDB, 0x4E, 0x00, 0x94, 0xD3, 0x47, 0x00, 0x8A, 0xCC, 0x41, + 0x00, 0x7F, 0xC2, 0x3B, 0x00, 0x73, 0xB8, 0x35, 0x00, 0x69, 0xAC, 0x30, 0x00, 0x60, 0xA5, 0x10, 0x00, 0x22, 0x96, + 0x86, 0x00, 0x0A, 0x91, 0xF0, 0x00, 0x0E, 0x92, 0xF2, 0x00, 0x11, 0x94, 0xF4, 0x00, 0x11, 0x94, 0xF4, 0x00, 0x4C, + 0xC5, 0xF1, 0x00, 0x4A, 0xC5, 0xF1, 0x00, 0x49, 0xC4, 0xF1, 0x00, 0x47, 0xC4, 0xF2, 0x00, 0x45, 0xC3, 0xF2, 0x00, + 0x43, 0xC3, 0xF1, 0x00, 0x40, 0xC4, 0xF0, 0x00, 0x42, 0xBF, 0xF3, 0x00, 0x39, 0xC0, 0xF5, 0x00, 0x5E, 0xAC, 0xCA, + 0x00, 0xFA, 0x58, 0x1E, 0x00, 0xF3, 0x6E, 0x30, 0x00, 0xF7, 0x80, 0x35, 0x00, 0xFB, 0x92, 0x3E, 0x00, 0xFB, 0xAF, + 0x5D, 0x00, 0xFF, 0xC2, 0x72, 0x00, 0xFD, 0xE1, 0xBA, 0x00, 0xFF, 0xCD, 0x74, 0x00, 0xFF, 0xD3, 0x71, 0x00, 0xFF, + 0xE5, 0x83, 0x00, 0xFF, 0xF7, 0x95, 0x00, 0xFE, 0xF4, 0xA1, 0x00, 0xFD, 0xF0, 0xAD, 0x00, 0xFF, 0xF8, 0xC1, 0x00, + 0xFB, 0xF7, 0xCD, 0x00, 0xFE, 0xF8, 0xD1, 0x00, 0xFF, 0xF9, 0xD6, 0x00, 0xFE, 0xF6, 0xE0, 0x00, 0xFB, 0xF5, 0xDD, + 0x00, 0xFF, 0xFB, 0xED, 0x00, 0xFB, 0xFB, 0xE8, 0x00, 0xFF, 0xFC, 0xDF, 0x00, 0xB2, 0xE0, 0xE8, 0x00, 0x18, 0xA3, + 0xEF, 0x00, 0x25, 0xAA, 0xEC, 0x00, 0x15, 0xA8, 0xF5, 0x00, 0xC2, 0xE3, 0xD8, 0x00, 0xF9, 0xF9, 0xC5, 0x00, 0xEE, + 0xF5, 0xCA, 0x00, 0xEF, 0xF6, 0xCE, 0x00, 0xF0, 0xF7, 0xD2, 0x00, 0xF1, 0xF8, 0xD1, 0x00, 0xF1, 0xF9, 0xD0, 0x00, + 0xF1, 0xF9, 0xCD, 0x00, 0xF1, 0xF9, 0xC9, 0x00, 0xF2, 0xFB, 0xC9, 0x00, 0xF4, 0xFC, 0xCA, 0x00, 0xE6, 0xF8, 0xB6, + 0x00, 0xD9, 0xF3, 0xA2, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0xBC, 0xEB, 0x71, 0x00, 0xB0, 0xE6, 0x61, 0x00, 0xA4, 0xE1, + 0x50, 0x00, 0x99, 0xD9, 0x48, 0x00, 0x8F, 0xD2, 0x40, 0x00, 0x83, 0xC7, 0x3A, 0x00, 0x77, 0xBC, 0x34, 0x00, 0x6A, + 0xB2, 0x1C, 0x00, 0x5D, 0xA9, 0x04, 0x00, 0x13, 0x8D, 0xEA, 0x00, 0x11, 0x93, 0xEF, 0x00, 0x0F, 0x92, 0xEF, 0x00, + 0x0E, 0x92, 0xF0, 0x00, 0x0E, 0x92, 0xF0, 0x00, 0x4D, 0xC6, 0xF2, 0x00, 0x4B, 0xC5, 0xF2, 0x00, 0x4A, 0xC5, 0xF2, + 0x00, 0x48, 0xC5, 0xF2, 0x00, 0x46, 0xC4, 0xF2, 0x00, 0x46, 0xC4, 0xEE, 0x00, 0x46, 0xC4, 0xEA, 0x00, 0x48, 0xBF, + 0xF2, 0x00, 0x34, 0xC6, 0xFB, 0x00, 0x98, 0x95, 0x91, 0x00, 0xFC, 0x64, 0x27, 0x00, 0xF1, 0x76, 0x3B, 0x00, 0xFC, + 0x83, 0x32, 0x00, 0xFF, 0x91, 0x34, 0x00, 0xFF, 0xB4, 0x63, 0x00, 0xFF, 0xBD, 0x5A, 0x00, 0xF3, 0xDC, 0xB5, 0x00, + 0xCB, 0xD0, 0x97, 0x00, 0xB4, 0xCE, 0xA4, 0x00, 0xAF, 0xD2, 0xB0, 0x00, 0xAB, 0xD6, 0xBC, 0x00, 0xC2, 0xE1, 0xBE, + 0x00, 0xDA, 0xEB, 0xC0, 0x00, 0xF5, 0xFC, 0xC7, 0x00, 0xFF, 0xFE, 0xBD, 0x00, 0xFF, 0xFD, 0xCC, 0x00, 0xFF, 0xFC, + 0xDB, 0x00, 0xFE, 0xFC, 0xE0, 0x00, 0xFB, 0xFC, 0xE4, 0x00, 0xFD, 0xFB, 0xE6, 0x00, 0xFF, 0xFA, 0xE7, 0x00, 0xFF, + 0xFB, 0xDD, 0x00, 0x61, 0xC4, 0xF4, 0x00, 0x26, 0xAA, 0xEE, 0x00, 0x22, 0xAA, 0xEB, 0x00, 0x10, 0xA7, 0xF6, 0x00, + 0xFF, 0xFF, 0xD6, 0x00, 0xF5, 0xF4, 0xCF, 0x00, 0xF5, 0xF9, 0xD8, 0x00, 0xF4, 0xF9, 0xD9, 0x00, 0xF2, 0xF8, 0xD9, + 0x00, 0xF3, 0xF9, 0xD8, 0x00, 0xF4, 0xFB, 0xD6, 0x00, 0xF5, 0xFC, 0xD5, 0x00, 0xF6, 0xFD, 0xD3, 0x00, 0xF3, 0xFA, + 0xCD, 0x00, 0xEF, 0xF6, 0xC7, 0x00, 0xE1, 0xF3, 0xB0, 0x00, 0xD3, 0xF0, 0x98, 0x00, 0xC5, 0xED, 0x82, 0x00, 0xB7, + 0xEB, 0x6B, 0x00, 0xB0, 0xE9, 0x5F, 0x00, 0xAA, 0xE7, 0x53, 0x00, 0x9F, 0xDF, 0x49, 0x00, 0x93, 0xD7, 0x3E, 0x00, + 0x87, 0xCB, 0x39, 0x00, 0x7B, 0xBF, 0x34, 0x00, 0x6B, 0xB4, 0x25, 0x00, 0x5B, 0xA2, 0x32, 0x00, 0x04, 0x94, 0xF9, + 0x00, 0x17, 0x94, 0xED, 0x00, 0x11, 0x92, 0xEC, 0x00, 0x0B, 0x91, 0xEB, 0x00, 0x0B, 0x91, 0xEB, 0x00, 0x4E, 0xC7, + 0xF2, 0x00, 0x4D, 0xC7, 0xF3, 0x00, 0x4C, 0xC7, 0xF3, 0x00, 0x4A, 0xC7, 0xF3, 0x00, 0x49, 0xC7, 0xF4, 0x00, 0x47, + 0xC4, 0xF1, 0x00, 0x45, 0xC1, 0xEE, 0x00, 0x42, 0xC2, 0xF7, 0x00, 0x33, 0xC8, 0xFF, 0x00, 0xDE, 0x67, 0x46, 0x00, + 0xFF, 0x63, 0x2A, 0x00, 0xFF, 0x6F, 0x1B, 0x00, 0xE0, 0x8B, 0x52, 0x00, 0xA3, 0xA0, 0x84, 0x00, 0x62, 0xC1, 0xCC, + 0x00, 0x26, 0xC0, 0xFF, 0x00, 0x29, 0xB7, 0xFF, 0x00, 0x24, 0xB5, 0xF1, 0x00, 0x27, 0xB7, 0xF9, 0x00, 0x25, 0xB5, + 0xF6, 0x00, 0x23, 0xB2, 0xF2, 0x00, 0x24, 0xB5, 0xFA, 0x00, 0x24, 0xB7, 0xFF, 0x00, 0x17, 0x9D, 0xDE, 0x00, 0x42, + 0xBA, 0xF4, 0x00, 0x9E, 0xDA, 0xE7, 0x00, 0xF9, 0xF9, 0xDC, 0x00, 0xF3, 0xFB, 0xE6, 0x00, 0xFF, 0xFF, 0xE9, 0x00, + 0xFD, 0xFF, 0xE6, 0x00, 0xFA, 0xFB, 0xE2, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x1D, 0xA7, 0xEF, 0x00, 0x1C, 0xA7, 0xF0, + 0x00, 0x1A, 0xA7, 0xF1, 0x00, 0x5A, 0xC4, 0xF0, 0x00, 0xFF, 0xFF, 0xE7, 0x00, 0xFA, 0xF9, 0xE1, 0x00, 0xFA, 0xFB, + 0xE2, 0x00, 0xF8, 0xFB, 0xDF, 0x00, 0xF5, 0xFA, 0xDC, 0x00, 0xF5, 0xFB, 0xDB, 0x00, 0xF5, 0xFB, 0xD9, 0x00, 0xF5, + 0xFC, 0xD6, 0x00, 0xF5, 0xFD, 0xD3, 0x00, 0xF0, 0xF8, 0xC8, 0x00, 0xEA, 0xF4, 0xBD, 0x00, 0xDF, 0xF1, 0xA8, 0x00, + 0xD4, 0xEF, 0x93, 0x00, 0xC6, 0xF3, 0x7A, 0x00, 0xB9, 0xF8, 0x61, 0x00, 0xB0, 0xEF, 0x57, 0x00, 0xA6, 0xE6, 0x4D, + 0x00, 0xA3, 0xE2, 0x48, 0x00, 0x98, 0xD6, 0x3A, 0x00, 0x89, 0xCD, 0x37, 0x00, 0x7B, 0xC3, 0x35, 0x00, 0x6F, 0xB7, + 0x20, 0x00, 0x3A, 0x9C, 0x84, 0x00, 0x0C, 0x93, 0xF4, 0x00, 0x13, 0x94, 0xEC, 0x00, 0x11, 0x93, 0xE9, 0x00, 0x0F, + 0x92, 0xE6, 0x00, 0x0F, 0x92, 0xE6, 0x00, 0x50, 0xC9, 0xF3, 0x00, 0x4F, 0xC9, 0xF4, 0x00, 0x4E, 0xC9, 0xF4, 0x00, + 0x4D, 0xCA, 0xF5, 0x00, 0x4B, 0xCA, 0xF5, 0x00, 0x48, 0xC5, 0xF4, 0x00, 0x44, 0xBF, 0xF3, 0x00, 0x47, 0xC1, 0xEE, + 0x00, 0x4A, 0xC4, 0xEA, 0x00, 0xFF, 0x52, 0x1F, 0x00, 0xA6, 0x9A, 0x92, 0x00, 0x51, 0xB6, 0xE6, 0x00, 0x28, 0xC7, + 0xFF, 0x00, 0x2C, 0xC4, 0xF8, 0x00, 0x30, 0xC0, 0xF0, 0x00, 0x3F, 0xBA, 0xEF, 0x00, 0x37, 0xBF, 0xEF, 0x00, 0x38, + 0xB9, 0xEF, 0x00, 0x3A, 0xB2, 0xF0, 0x00, 0x38, 0xB5, 0xF3, 0x00, 0x35, 0xB7, 0xF6, 0x00, 0x32, 0xB9, 0xEF, 0x00, + 0x2F, 0xBB, 0xE8, 0x00, 0x2F, 0xB8, 0xEA, 0x00, 0x2F, 0xB4, 0xED, 0x00, 0x1F, 0xAC, 0xF3, 0x00, 0x10, 0xA3, 0xF9, + 0x00, 0x6F, 0xC9, 0xF2, 0x00, 0xF5, 0xF9, 0xDF, 0x00, 0xF5, 0xFB, 0xDE, 0x00, 0xF5, 0xFD, 0xDD, 0x00, 0xD7, 0xEA, + 0xE3, 0x00, 0x10, 0xA5, 0xEE, 0x00, 0x2D, 0xB2, 0xF4, 0x00, 0x13, 0xA5, 0xF7, 0x00, 0xA5, 0xE1, 0xEB, 0x00, 0xFF, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0xF2, 0x00, 0xFF, 0xFD, 0xEC, 0x00, 0xFC, 0xFC, 0xE6, 0x00, 0xF7, 0xFC, 0xDF, 0x00, + 0xF7, 0xFC, 0xDE, 0x00, 0xF6, 0xFC, 0xDC, 0x00, 0xF5, 0xFC, 0xD7, 0x00, 0xF4, 0xFC, 0xD3, 0x00, 0xED, 0xF7, 0xC3, + 0x00, 0xE5, 0xF1, 0xB4, 0x00, 0xE4, 0xF5, 0xB7, 0x00, 0xE4, 0xF9, 0xBB, 0x00, 0xEB, 0xFE, 0xD2, 0x00, 0xF2, 0xFF, + 0xE9, 0x00, 0xED, 0xFE, 0xDB, 0x00, 0xE8, 0xF9, 0xCD, 0x00, 0xCA, 0xEF, 0x89, 0x00, 0x9C, 0xD6, 0x35, 0x00, 0x83, + 0xC6, 0x2D, 0x00, 0x6B, 0xB7, 0x25, 0x00, 0x6C, 0xB3, 0x14, 0x00, 0x1A, 0x95, 0xD6, 0x00, 0x15, 0x91, 0xEE, 0x00, + 0x0F, 0x93, 0xEB, 0x00, 0x10, 0x93, 0xE6, 0x00, 0x12, 0x93, 0xE0, 0x00, 0x12, 0x93, 0xE0, 0x00, 0x52, 0xCA, 0xF4, + 0x00, 0x50, 0xCA, 0xF4, 0x00, 0x4E, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF3, 0x00, 0x4A, 0xC9, 0xF3, 0x00, 0x48, 0xC8, + 0xF4, 0x00, 0x46, 0xC6, 0xF6, 0x00, 0x3F, 0xBF, 0xEC, 0x00, 0x41, 0xBF, 0xEB, 0x00, 0x40, 0xD4, 0xF8, 0x00, 0x33, + 0xC9, 0xFC, 0x00, 0x2F, 0xC9, 0xFF, 0x00, 0x42, 0xC2, 0xEC, 0x00, 0x40, 0xC3, 0xF4, 0x00, 0x3E, 0xC3, 0xFC, 0x00, + 0x34, 0xBB, 0xF3, 0x00, 0x33, 0xBB, 0xF2, 0x00, 0x49, 0xBD, 0xF6, 0x00, 0x38, 0xB7, 0xF8, 0x00, 0x36, 0xB7, 0xF5, + 0x00, 0x34, 0xB7, 0xF2, 0x00, 0x2E, 0xB5, 0xF3, 0x00, 0x27, 0xB3, 0xF5, 0x00, 0x2F, 0xBA, 0xF7, 0x00, 0x2F, 0xBA, + 0xF2, 0x00, 0x30, 0xB5, 0xF1, 0x00, 0x31, 0xB0, 0xF0, 0x00, 0x1E, 0xAC, 0xF6, 0x00, 0x0C, 0xAA, 0xED, 0x00, 0x7E, + 0xD2, 0xEC, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0x80, 0xD9, 0xD2, 0x00, 0x2E, 0xA9, 0xF8, 0x00, 0x1C, 0xAF, 0xEB, 0x00, + 0x02, 0xAA, 0xE5, 0x00, 0xFF, 0xF8, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0xF9, 0x00, 0xFF, 0xFD, 0xF4, + 0x00, 0xFD, 0xFD, 0xEB, 0x00, 0xFA, 0xFE, 0xE2, 0x00, 0xF9, 0xFD, 0xE1, 0x00, 0xF7, 0xFC, 0xE0, 0x00, 0xF5, 0xFC, + 0xD7, 0x00, 0xF3, 0xFD, 0xCF, 0x00, 0xF4, 0xFB, 0xE2, 0x00, 0xF6, 0xFD, 0xE7, 0x00, 0xF3, 0xFD, 0xE8, 0x00, 0xF0, + 0xFD, 0xE9, 0x00, 0xEB, 0xFD, 0xD3, 0x00, 0xE5, 0xFC, 0xBD, 0x00, 0xDF, 0xF7, 0xBA, 0x00, 0xDA, 0xF2, 0xB6, 0x00, + 0xE9, 0xFB, 0xD2, 0x00, 0xF1, 0xFC, 0xE6, 0x00, 0xB6, 0xDE, 0x8D, 0x00, 0x84, 0xC7, 0x3C, 0x00, 0x99, 0xB7, 0x47, + 0x00, 0x13, 0xA1, 0xF8, 0x00, 0x04, 0x94, 0xF2, 0x00, 0x10, 0x94, 0xEE, 0x00, 0x10, 0x94, 0xEC, 0x00, 0x10, 0x95, + 0xE9, 0x00, 0x10, 0x95, 0xE9, 0x00, 0x53, 0xCC, 0xF5, 0x00, 0x50, 0xCB, 0xF3, 0x00, 0x4E, 0xCA, 0xF2, 0x00, 0x4B, + 0xC9, 0xF1, 0x00, 0x48, 0xC7, 0xF0, 0x00, 0x48, 0xCB, 0xF4, 0x00, 0x47, 0xCE, 0xF9, 0x00, 0x40, 0xC4, 0xF2, 0x00, + 0x48, 0xCA, 0xFC, 0x00, 0x3F, 0xC2, 0xF0, 0x00, 0x46, 0xC9, 0xF5, 0x00, 0x46, 0xC7, 0xF4, 0x00, 0x45, 0xC4, 0xF3, + 0x00, 0x38, 0xB4, 0xED, 0x00, 0x2C, 0xA5, 0xE8, 0x00, 0x2E, 0xB0, 0xE1, 0x00, 0x56, 0xC0, 0xEA, 0x00, 0x6C, 0xC8, + 0xE9, 0x00, 0x36, 0xC1, 0xE4, 0x00, 0x50, 0xC9, 0xEB, 0x00, 0x6A, 0xD1, 0xF1, 0x00, 0x73, 0xD0, 0xF5, 0x00, 0x7D, + 0xCF, 0xF9, 0x00, 0x56, 0xC7, 0xF8, 0x00, 0x1F, 0xAF, 0xE7, 0x00, 0x25, 0xB1, 0xED, 0x00, 0x2B, 0xB2, 0xF4, 0x00, + 0x3E, 0xB5, 0xF9, 0x00, 0x2A, 0xB3, 0xEE, 0x00, 0x1B, 0xAF, 0xF5, 0x00, 0x32, 0xB5, 0xF0, 0x00, 0x3F, 0xB1, 0xF9, + 0x00, 0x26, 0xA9, 0xF2, 0x00, 0x1F, 0xAE, 0xEA, 0x00, 0x3F, 0xB8, 0xF3, 0x00, 0xFB, 0xFF, 0xF3, 0x00, 0xFF, 0xFF, + 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFB, 0x00, 0xFE, 0xFE, 0xF0, 0x00, 0xFD, 0xFF, 0xE5, 0x00, 0xFB, + 0xFE, 0xE4, 0x00, 0xF8, 0xFC, 0xE3, 0x00, 0xF5, 0xFD, 0xD7, 0x00, 0xF2, 0xFD, 0xCB, 0x00, 0xF4, 0xFB, 0xEB, 0x00, + 0xF6, 0xFE, 0xEE, 0x00, 0xF1, 0xFD, 0xDE, 0x00, 0xED, 0xFB, 0xCE, 0x00, 0xE2, 0xF9, 0xB0, 0x00, 0xD8, 0xF6, 0x91, + 0x00, 0xD2, 0xF3, 0x8A, 0x00, 0xCC, 0xF1, 0x83, 0x00, 0xCE, 0xEE, 0x96, 0x00, 0xD0, 0xEA, 0xA9, 0x00, 0xDA, 0xEA, + 0xC0, 0x00, 0xF4, 0xFA, 0xE8, 0x00, 0x7E, 0xC6, 0x78, 0x00, 0x59, 0xC0, 0xFF, 0x00, 0x19, 0xA0, 0xEA, 0x00, 0x10, + 0x95, 0xF2, 0x00, 0x0F, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, 0x00, 0x0D, 0x96, 0xF2, 0x00, 0x54, 0xCD, 0xF4, 0x00, + 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF3, 0x00, 0x4C, 0xC9, 0xF2, 0x00, 0x4A, 0xC8, 0xF2, 0x00, 0x48, 0xC6, 0xF1, + 0x00, 0x47, 0xC4, 0xF1, 0x00, 0x48, 0xD2, 0xF3, 0x00, 0x46, 0xC7, 0xF3, 0x00, 0x4C, 0xC5, 0xFB, 0x00, 0x2B, 0x9A, + 0xDC, 0x00, 0x17, 0x83, 0xCD, 0x00, 0x03, 0x6B, 0xBE, 0x00, 0x00, 0x7F, 0xC5, 0x00, 0x0E, 0x96, 0xD4, 0x00, 0x2E, + 0xAC, 0xDB, 0x00, 0x60, 0xC5, 0xEA, 0x00, 0x75, 0xCC, 0xEF, 0x00, 0x51, 0xCA, 0xEA, 0x00, 0x69, 0xD2, 0xEF, 0x00, + 0x81, 0xDA, 0xF5, 0x00, 0x99, 0xE4, 0xF7, 0x00, 0xB2, 0xEE, 0xF9, 0x00, 0xCE, 0xFA, 0xFF, 0x00, 0xE2, 0xFE, 0xFF, + 0x00, 0x99, 0xE1, 0xFF, 0x00, 0x48, 0xBC, 0xF7, 0x00, 0x10, 0xB4, 0xDC, 0x00, 0x31, 0xAD, 0xF0, 0x00, 0x27, 0xAC, + 0xFB, 0x00, 0x30, 0xB2, 0xF3, 0x00, 0x34, 0xB1, 0xF5, 0x00, 0x24, 0xAD, 0xF0, 0x00, 0x26, 0xAC, 0xF6, 0x00, 0x97, + 0xD1, 0xFC, 0x00, 0xFF, 0xFD, 0xF7, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFB, 0x00, 0xFE, 0xFF, 0xF3, 0x00, + 0xFD, 0xFF, 0xED, 0x00, 0xFC, 0xFD, 0xE7, 0x00, 0xFB, 0xFE, 0xE3, 0x00, 0xF9, 0xFE, 0xDF, 0x00, 0xF8, 0xFD, 0xE7, + 0x00, 0xF7, 0xFC, 0xEF, 0x00, 0xF3, 0xFB, 0xEB, 0x00, 0xEF, 0xFD, 0xD8, 0x00, 0xE8, 0xFA, 0xC2, 0x00, 0xE2, 0xF8, + 0xAB, 0x00, 0xD8, 0xF4, 0x9B, 0x00, 0xCE, 0xEF, 0x8A, 0x00, 0xC1, 0xEA, 0x76, 0x00, 0xB4, 0xE5, 0x61, 0x00, 0xAB, + 0xDD, 0x5A, 0x00, 0xA2, 0xD2, 0x61, 0x00, 0xC1, 0xE9, 0x8D, 0x00, 0xDA, 0xE7, 0xB8, 0x00, 0x96, 0xD4, 0xFF, 0x00, + 0x8E, 0xD0, 0xFA, 0x00, 0x41, 0xAD, 0xED, 0x00, 0x10, 0x95, 0xF1, 0x00, 0x0F, 0x95, 0xF1, 0x00, 0x0E, 0x96, 0xF1, + 0x00, 0x0E, 0x96, 0xF1, 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF4, 0x00, 0x50, 0xCB, 0xF4, 0x00, 0x4E, 0xC9, + 0xF3, 0x00, 0x4B, 0xC8, 0xF3, 0x00, 0x51, 0xC9, 0xF6, 0x00, 0x56, 0xCA, 0xFA, 0x00, 0x44, 0xC0, 0xEA, 0x00, 0x19, + 0x74, 0xC6, 0x00, 0x00, 0x58, 0xAD, 0x00, 0x01, 0x5B, 0xB3, 0x00, 0x06, 0x6F, 0xC0, 0x00, 0x0B, 0x84, 0xCC, 0x00, + 0x00, 0x93, 0xCE, 0x00, 0x11, 0xA7, 0xDF, 0x00, 0x3E, 0xB9, 0xE5, 0x00, 0x6A, 0xCA, 0xEB, 0x00, 0x7E, 0xD1, 0xF5, + 0x00, 0x6B, 0xD3, 0xF0, 0x00, 0x81, 0xDB, 0xF4, 0x00, 0x97, 0xE3, 0xF8, 0x00, 0xA4, 0xEB, 0xF7, 0x00, 0xB1, 0xF4, + 0xF5, 0x00, 0xC7, 0xF7, 0xF9, 0x00, 0xDC, 0xFA, 0xFC, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xF5, 0x00, 0xBB, + 0xEB, 0xFD, 0x00, 0x22, 0xB4, 0xF2, 0x00, 0x28, 0xAF, 0xFF, 0x00, 0x2F, 0xB0, 0xF6, 0x00, 0x29, 0xB0, 0xF2, 0x00, + 0x22, 0xB1, 0xEE, 0x00, 0x19, 0xA7, 0xF9, 0x00, 0xC9, 0xE6, 0xF4, 0x00, 0xF7, 0xF7, 0xF4, 0x00, 0xFE, 0xFF, 0xFF, + 0x00, 0xFE, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFC, 0xFF, 0xEA, 0x00, 0xFA, 0xFA, 0xE8, 0x00, 0xFB, 0xFD, + 0xE2, 0x00, 0xFB, 0xFF, 0xDC, 0x00, 0xFB, 0xFF, 0xE9, 0x00, 0xFB, 0xFF, 0xF6, 0x00, 0xF1, 0xFD, 0xDC, 0x00, 0xE7, + 0xFB, 0xC3, 0x00, 0xDF, 0xF5, 0xB4, 0x00, 0xD8, 0xF0, 0xA5, 0x00, 0xCE, 0xEC, 0x94, 0x00, 0xC4, 0xE8, 0x83, 0x00, + 0xB7, 0xE5, 0x77, 0x00, 0xAB, 0xE3, 0x6B, 0x00, 0xA0, 0xDE, 0x52, 0x00, 0x94, 0xD4, 0x55, 0x00, 0x7F, 0xBD, 0x40, + 0x00, 0xD1, 0xE4, 0x98, 0x00, 0x2B, 0xA1, 0xF4, 0x00, 0x2F, 0xA1, 0xF6, 0x00, 0x1F, 0x9B, 0xF3, 0x00, 0x0F, 0x95, + 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x0F, 0x95, 0xF0, 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x53, + 0xCC, 0xF4, 0x00, 0x51, 0xCB, 0xF4, 0x00, 0x4F, 0xCA, 0xF5, 0x00, 0x4E, 0xC9, 0xF6, 0x00, 0x4D, 0xC9, 0xF4, 0x00, + 0x53, 0xD0, 0xFA, 0x00, 0x2A, 0x86, 0xCD, 0x00, 0x06, 0x52, 0xB0, 0x00, 0x04, 0x5F, 0xB8, 0x00, 0x0A, 0x73, 0xC8, + 0x00, 0x08, 0x82, 0xCE, 0x00, 0x06, 0x91, 0xD3, 0x00, 0x01, 0xA0, 0xD5, 0x00, 0x24, 0xB4, 0xE6, 0x00, 0x4C, 0xC4, + 0xEA, 0x00, 0x74, 0xD3, 0xED, 0x00, 0x83, 0xD9, 0xF4, 0x00, 0x7E, 0xDC, 0xF3, 0x00, 0x93, 0xE4, 0xF6, 0x00, 0xA8, + 0xEC, 0xF8, 0x00, 0xB5, 0xF2, 0xF9, 0x00, 0xC3, 0xF8, 0xF9, 0x00, 0xD3, 0xFA, 0xFA, 0x00, 0xE2, 0xFB, 0xFB, 0x00, + 0xED, 0xFE, 0xFB, 0x00, 0xEF, 0xF9, 0xF3, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFD, 0xFF, 0x00, 0x7E, 0xDC, 0xEE, + 0x00, 0x26, 0xAD, 0xFD, 0x00, 0x29, 0xAF, 0xF7, 0x00, 0x2D, 0xB1, 0xF1, 0x00, 0x34, 0xB1, 0xDF, 0x00, 0x09, 0xA6, + 0xF6, 0x00, 0x8C, 0xD3, 0xF4, 0x00, 0xFC, 0xFB, 0xF8, 0x00, 0xFF, 0xFF, 0xF6, 0x00, 0xFD, 0xFF, 0xEB, 0x00, 0xFC, + 0xFE, 0xE5, 0x00, 0xFB, 0xFB, 0xE0, 0x00, 0xF9, 0xFC, 0xDE, 0x00, 0xF7, 0xFC, 0xDC, 0x00, 0xFC, 0xFF, 0xEF, 0x00, + 0xF8, 0xFC, 0xEB, 0x00, 0xE8, 0xF5, 0xD0, 0x00, 0xDF, 0xF5, 0xBC, 0x00, 0xD8, 0xF1, 0xAC, 0x00, 0xD2, 0xED, 0x9D, + 0x00, 0xC4, 0xE8, 0x7D, 0x00, 0xB7, 0xE1, 0x6C, 0x00, 0xAB, 0xDC, 0x5E, 0x00, 0x9E, 0xD7, 0x4F, 0x00, 0x98, 0xC9, + 0x5E, 0x00, 0x92, 0xC6, 0x35, 0x00, 0x8B, 0xC9, 0x42, 0x00, 0x80, 0xB2, 0x4D, 0x00, 0x00, 0x9B, 0xF1, 0x00, 0x17, + 0x93, 0xF8, 0x00, 0x15, 0x95, 0xF4, 0x00, 0x12, 0x97, 0xF1, 0x00, 0x11, 0x96, 0xF0, 0x00, 0x10, 0x95, 0xEF, 0x00, + 0x10, 0x95, 0xEF, 0x00, 0x55, 0xCE, 0xF4, 0x00, 0x54, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF5, 0x00, 0x51, 0xCB, 0xF6, + 0x00, 0x50, 0xCB, 0xF8, 0x00, 0x49, 0xC8, 0xF1, 0x00, 0x51, 0xD5, 0xF9, 0x00, 0x15, 0x62, 0xC0, 0x00, 0x00, 0x5C, + 0xBB, 0x00, 0x07, 0x74, 0xCC, 0x00, 0x02, 0x7C, 0xCD, 0x00, 0x02, 0x8D, 0xD4, 0x00, 0x01, 0x9E, 0xDB, 0x00, 0x08, + 0xAD, 0xDC, 0x00, 0x36, 0xC1, 0xED, 0x00, 0x5A, 0xCF, 0xEE, 0x00, 0x7D, 0xDC, 0xF0, 0x00, 0x87, 0xE1, 0xF3, 0x00, + 0x91, 0xE6, 0xF7, 0x00, 0xA5, 0xED, 0xF8, 0x00, 0xB8, 0xF5, 0xF8, 0x00, 0xC6, 0xF9, 0xFB, 0x00, 0xD4, 0xFD, 0xFD, + 0x00, 0xDF, 0xFC, 0xFB, 0x00, 0xE9, 0xFC, 0xFA, 0x00, 0xF0, 0xFE, 0xFD, 0x00, 0xF7, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, + 0xFE, 0x00, 0xFC, 0xFE, 0xFB, 0x00, 0xFD, 0xFA, 0xFF, 0x00, 0x1D, 0xAF, 0xE7, 0x00, 0x2A, 0xB0, 0xEE, 0x00, 0x37, + 0xB1, 0xF5, 0x00, 0x24, 0xB8, 0xF6, 0x00, 0x28, 0xB4, 0xF7, 0x00, 0x21, 0xAF, 0xF4, 0x00, 0x1A, 0xAA, 0xF2, 0x00, + 0x9E, 0xD7, 0xF5, 0x00, 0xFC, 0xFF, 0xE9, 0x00, 0xFC, 0xFE, 0xE0, 0x00, 0xFC, 0xFD, 0xD7, 0x00, 0xF8, 0xFA, 0xDA, + 0x00, 0xF3, 0xF7, 0xDD, 0x00, 0xFD, 0xFD, 0xF4, 0x00, 0xF6, 0xF9, 0xE0, 0x00, 0xDF, 0xEC, 0xC3, 0x00, 0xD7, 0xEF, + 0xB5, 0x00, 0xD2, 0xEC, 0xA5, 0x00, 0xCC, 0xE9, 0x95, 0x00, 0xBB, 0xE5, 0x67, 0x00, 0xAB, 0xDB, 0x55, 0x00, 0x9E, + 0xD3, 0x44, 0x00, 0x91, 0xCB, 0x32, 0x00, 0x85, 0xC8, 0x24, 0x00, 0x79, 0xB4, 0x6A, 0x00, 0x3A, 0x9D, 0xAF, 0x00, + 0x0B, 0x97, 0xFF, 0x00, 0x18, 0x93, 0xF9, 0x00, 0x0F, 0x9B, 0xED, 0x00, 0x12, 0x9A, 0xF0, 0x00, 0x15, 0x98, 0xF3, + 0x00, 0x13, 0x96, 0xF1, 0x00, 0x11, 0x94, 0xEF, 0x00, 0x11, 0x94, 0xEF, 0x00, 0x58, 0xCF, 0xF4, 0x00, 0x55, 0xCE, + 0xF4, 0x00, 0x53, 0xCD, 0xF4, 0x00, 0x52, 0xCC, 0xF6, 0x00, 0x52, 0xCB, 0xF8, 0x00, 0x52, 0xD5, 0xFA, 0x00, 0x4E, + 0xC7, 0xFB, 0x00, 0x00, 0x4C, 0xAD, 0x00, 0x09, 0x6F, 0xCA, 0x00, 0x0B, 0x7F, 0xD3, 0x00, 0x05, 0x88, 0xD4, 0x00, + 0x04, 0x97, 0xDB, 0x00, 0x04, 0xA7, 0xE1, 0x00, 0x18, 0xB6, 0xE5, 0x00, 0x3F, 0xC7, 0xF1, 0x00, 0x62, 0xD3, 0xF3, + 0x00, 0x86, 0xDF, 0xF4, 0x00, 0x91, 0xE4, 0xF7, 0x00, 0x9B, 0xE9, 0xF9, 0x00, 0xAD, 0xF0, 0xF9, 0x00, 0xBF, 0xF7, + 0xF9, 0x00, 0xCB, 0xFA, 0xFB, 0x00, 0xD7, 0xFC, 0xFD, 0x00, 0xDE, 0xFD, 0xFC, 0x00, 0xE5, 0xFD, 0xFB, 0x00, 0xEF, + 0xFF, 0xFE, 0x00, 0xF9, 0xFF, 0xFF, 0x00, 0xF2, 0xFE, 0xFA, 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0xC6, 0xE9, 0xFB, 0x00, + 0x1D, 0xAF, 0xEC, 0x00, 0x30, 0xB4, 0xF6, 0x00, 0x2F, 0xB6, 0xF8, 0x00, 0x19, 0xA7, 0xF6, 0x00, 0x26, 0xB0, 0xF0, + 0x00, 0x22, 0xAD, 0xF2, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x26, 0xA9, 0xF9, 0x00, 0x1C, 0xA6, 0xF6, 0x00, 0x7D, 0xCD, + 0xE9, 0x00, 0xDF, 0xF4, 0xDC, 0x00, 0xEA, 0xFE, 0xAF, 0x00, 0xFD, 0xFD, 0xED, 0x00, 0xFF, 0xFF, 0xEF, 0x00, 0xFB, + 0xF8, 0xD3, 0x00, 0xEC, 0xEE, 0xB4, 0x00, 0xE6, 0xE9, 0xAB, 0x00, 0xD8, 0xE6, 0x89, 0x00, 0xCB, 0xE2, 0x67, 0x00, + 0xB8, 0xE1, 0x52, 0x00, 0xA6, 0xDD, 0x4C, 0x00, 0x74, 0xC5, 0x7E, 0x00, 0x42, 0xAD, 0xB0, 0x00, 0x22, 0x9B, 0xF3, + 0x00, 0x09, 0x9C, 0xFF, 0x00, 0x09, 0x98, 0xF5, 0x00, 0x10, 0x9C, 0xEE, 0x00, 0x17, 0x99, 0xED, 0x00, 0x14, 0x9D, + 0xED, 0x00, 0x14, 0x9B, 0xEF, 0x00, 0x15, 0x99, 0xF2, 0x00, 0x13, 0x97, 0xF0, 0x00, 0x11, 0x95, 0xEE, 0x00, 0x11, + 0x95, 0xEE, 0x00, 0x5A, 0xD0, 0xF5, 0x00, 0x57, 0xCF, 0xF4, 0x00, 0x54, 0xCE, 0xF3, 0x00, 0x53, 0xCC, 0xF5, 0x00, + 0x53, 0xCB, 0xF7, 0x00, 0x4C, 0xD3, 0xF4, 0x00, 0x2C, 0x9A, 0xDD, 0x00, 0x03, 0x5D, 0xC1, 0x00, 0x05, 0x72, 0xC8, + 0x00, 0x06, 0x83, 0xD2, 0x00, 0x07, 0x93, 0xDC, 0x00, 0x07, 0xA2, 0xE1, 0x00, 0x08, 0xB0, 0xE7, 0x00, 0x27, 0xBF, + 0xEE, 0x00, 0x47, 0xCD, 0xF6, 0x00, 0x6B, 0xD8, 0xF7, 0x00, 0x8E, 0xE2, 0xF9, 0x00, 0x9A, 0xE7, 0xFA, 0x00, 0xA6, + 0xEC, 0xFB, 0x00, 0xB6, 0xF3, 0xFA, 0x00, 0xC7, 0xF9, 0xFA, 0x00, 0xD0, 0xFB, 0xFB, 0x00, 0xD9, 0xFC, 0xFD, 0x00, + 0xDD, 0xFD, 0xFC, 0x00, 0xE2, 0xFE, 0xFC, 0x00, 0xEE, 0xFF, 0xFE, 0x00, 0xFB, 0xFF, 0xFF, 0x00, 0xEA, 0xFD, 0xF7, + 0x00, 0xFF, 0xFE, 0xFE, 0x00, 0x8F, 0xD7, 0xF7, 0x00, 0x1E, 0xAF, 0xF1, 0x00, 0x2E, 0xB0, 0xF6, 0x00, 0x17, 0xAB, + 0xEB, 0x00, 0xDF, 0xF7, 0xFD, 0x00, 0x24, 0xAC, 0xE9, 0x00, 0x22, 0xAC, 0xF0, 0x00, 0x21, 0xAC, 0xF8, 0x00, 0x26, + 0xAE, 0xF6, 0x00, 0x2B, 0xB0, 0xF5, 0x00, 0x19, 0xA9, 0xF4, 0x00, 0x08, 0xA2, 0xF3, 0x00, 0x22, 0xA7, 0xF9, 0x00, + 0x4C, 0xC1, 0xF2, 0x00, 0x6D, 0xCD, 0xEE, 0x00, 0x7D, 0xC9, 0xDB, 0x00, 0x7F, 0xCA, 0xC2, 0x00, 0x81, 0xC5, 0xC6, + 0x00, 0x60, 0xBC, 0xCB, 0x00, 0x40, 0xB3, 0xCF, 0x00, 0x24, 0xA7, 0xE9, 0x00, 0x07, 0x9B, 0xFF, 0x00, 0x10, 0x9D, + 0xFF, 0x00, 0x1A, 0x9F, 0xFF, 0x00, 0x0F, 0x98, 0xE9, 0x00, 0x14, 0x9C, 0xF9, 0x00, 0x14, 0x9C, 0xF7, 0x00, 0x14, + 0x9B, 0xF4, 0x00, 0x17, 0x9D, 0xF1, 0x00, 0x19, 0x9E, 0xED, 0x00, 0x16, 0x9C, 0xEF, 0x00, 0x14, 0x99, 0xF1, 0x00, + 0x12, 0x97, 0xEF, 0x00, 0x10, 0x95, 0xED, 0x00, 0x10, 0x95, 0xED, 0x00, 0x5C, 0xD1, 0xF6, 0x00, 0x58, 0xD0, 0xF4, + 0x00, 0x55, 0xCF, 0xF3, 0x00, 0x54, 0xCD, 0xF5, 0x00, 0x53, 0xCC, 0xF7, 0x00, 0x51, 0xD5, 0xF6, 0x00, 0x16, 0x7B, + 0xCE, 0x00, 0x03, 0x67, 0xC6, 0x00, 0x06, 0x7B, 0xCF, 0x00, 0x05, 0x8B, 0xD7, 0x00, 0x05, 0x9B, 0xDF, 0x00, 0x07, + 0xA8, 0xE4, 0x00, 0x09, 0xB6, 0xEA, 0x00, 0x2A, 0xC3, 0xF1, 0x00, 0x4C, 0xD1, 0xF7, 0x00, 0x6C, 0xDB, 0xF8, 0x00, + 0x8D, 0xE4, 0xFA, 0x00, 0x9C, 0xEA, 0xFA, 0x00, 0xAB, 0xEF, 0xFB, 0x00, 0xBC, 0xF5, 0xFA, 0x00, 0xCD, 0xFA, 0xFA, + 0x00, 0xD4, 0xFB, 0xFB, 0x00, 0xDB, 0xFC, 0xFD, 0x00, 0xDC, 0xFD, 0xFC, 0x00, 0xDD, 0xFE, 0xFC, 0x00, 0xE3, 0xFE, + 0xFC, 0x00, 0xEA, 0xFE, 0xFD, 0x00, 0xFE, 0xFF, 0xFD, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x27, 0xC0, 0xDE, 0x00, 0x26, + 0xB4, 0xF5, 0x00, 0x1E, 0xB0, 0xF8, 0x00, 0x4D, 0xC6, 0xFF, 0x00, 0xFF, 0xF8, 0xEF, 0x00, 0xFE, 0xFF, 0xFA, 0x00, + 0x8B, 0xD8, 0xF6, 0x00, 0x18, 0xA7, 0xF3, 0x00, 0x1D, 0xA9, 0xF4, 0x00, 0x22, 0xAC, 0xF5, 0x00, 0x22, 0xAB, 0xF2, + 0x00, 0x22, 0xAB, 0xF0, 0x00, 0x1A, 0xA3, 0xF2, 0x00, 0x1A, 0xA6, 0xEE, 0x00, 0x17, 0xA8, 0xF4, 0x00, 0x0D, 0xA2, + 0xF3, 0x00, 0x10, 0xA4, 0xF2, 0x00, 0x14, 0xA3, 0xFF, 0x00, 0x15, 0xA3, 0xFC, 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x17, + 0xA2, 0xF2, 0x00, 0x18, 0xA1, 0xEC, 0x00, 0x0D, 0x99, 0xFD, 0x00, 0x16, 0x9A, 0xED, 0x00, 0x00, 0xA0, 0xFF, 0x00, + 0x2B, 0x9C, 0xE8, 0x00, 0x60, 0xB5, 0xAF, 0x00, 0x10, 0x99, 0xF7, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x18, 0x9D, 0xED, + 0x00, 0x16, 0x9B, 0xEE, 0x00, 0x13, 0x99, 0xEF, 0x00, 0x11, 0x97, 0xED, 0x00, 0x0F, 0x95, 0xEB, 0x00, 0x0F, 0x95, + 0xEB, 0x00, 0x5E, 0xD2, 0xF7, 0x00, 0x5A, 0xD1, 0xF4, 0x00, 0x56, 0xD0, 0xF2, 0x00, 0x54, 0xCE, 0xF5, 0x00, 0x53, + 0xCC, 0xF7, 0x00, 0x56, 0xD7, 0xF7, 0x00, 0x00, 0x5B, 0xC0, 0x00, 0x03, 0x70, 0xCB, 0x00, 0x06, 0x84, 0xD6, 0x00, + 0x05, 0x94, 0xDC, 0x00, 0x03, 0xA3, 0xE2, 0x00, 0x07, 0xAF, 0xE8, 0x00, 0x0B, 0xBB, 0xEE, 0x00, 0x2D, 0xC8, 0xF3, + 0x00, 0x50, 0xD5, 0xF8, 0x00, 0x6E, 0xDE, 0xF9, 0x00, 0x8C, 0xE6, 0xFA, 0x00, 0x9F, 0xEC, 0xFB, 0x00, 0xB1, 0xF2, + 0xFB, 0x00, 0xC2, 0xF7, 0xFA, 0x00, 0xD3, 0xFB, 0xF9, 0x00, 0xD8, 0xFC, 0xFB, 0x00, 0xDD, 0xFC, 0xFD, 0x00, 0xDB, + 0xFD, 0xFC, 0x00, 0xD8, 0xFE, 0xFC, 0x00, 0xD8, 0xFD, 0xFB, 0x00, 0xD9, 0xFC, 0xFA, 0x00, 0xE4, 0xFA, 0xFA, 0x00, + 0xA3, 0xE9, 0xF6, 0x00, 0x2A, 0xAC, 0xFB, 0x00, 0x2E, 0xB9, 0xFA, 0x00, 0x1A, 0xAD, 0xED, 0x00, 0x99, 0xDA, 0xF7, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFD, 0xFC, 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0xFF, 0xFF, 0xFD, 0x00, 0x8C, 0xD4, + 0xF9, 0x00, 0x19, 0xA8, 0xF5, 0x00, 0x17, 0xA9, 0xF7, 0x00, 0x16, 0xA9, 0xF8, 0x00, 0x1A, 0xA7, 0xF3, 0x00, 0x1E, + 0xA5, 0xED, 0x00, 0x1F, 0xA7, 0xF1, 0x00, 0x20, 0xA9, 0xF6, 0x00, 0x1D, 0xA7, 0xF6, 0x00, 0x1A, 0xA5, 0xF6, 0x00, + 0x16, 0xA3, 0xF8, 0x00, 0x12, 0xA1, 0xFA, 0x00, 0x0A, 0x9D, 0xFC, 0x00, 0x03, 0x98, 0xFE, 0x00, 0x25, 0xA1, 0xF9, + 0x00, 0x6F, 0xC0, 0xB0, 0x00, 0xCF, 0xC9, 0x5D, 0x00, 0xFF, 0xE5, 0x27, 0x00, 0x73, 0xB4, 0xB3, 0x00, 0x0B, 0x97, + 0xF9, 0x00, 0x11, 0x9A, 0xF3, 0x00, 0x17, 0x9D, 0xED, 0x00, 0x15, 0x9B, 0xEE, 0x00, 0x13, 0x9A, 0xEE, 0x00, 0x11, + 0x98, 0xEC, 0x00, 0x0F, 0x96, 0xEA, 0x00, 0x0F, 0x96, 0xEA, 0x00, 0x5D, 0xD1, 0xF6, 0x00, 0x5A, 0xD1, 0xF5, 0x00, + 0x58, 0xD2, 0xF4, 0x00, 0x53, 0xCE, 0xF3, 0x00, 0x56, 0xD1, 0xFA, 0x00, 0x3F, 0xB1, 0xE6, 0x00, 0x01, 0x64, 0xC6, + 0x00, 0x02, 0x75, 0xCE, 0x00, 0x04, 0x87, 0xD7, 0x00, 0x02, 0x95, 0xDD, 0x00, 0x00, 0xA4, 0xE4, 0x00, 0x03, 0xB0, + 0xEA, 0x00, 0x06, 0xBD, 0xF1, 0x00, 0x1B, 0xC8, 0xF2, 0x00, 0x42, 0xD5, 0xFB, 0x00, 0x63, 0xDD, 0xFB, 0x00, 0x84, + 0xE5, 0xFB, 0x00, 0x98, 0xEB, 0xFC, 0x00, 0xAB, 0xF1, 0xFC, 0x00, 0xBD, 0xF8, 0xFF, 0x00, 0xCF, 0xFF, 0xFF, 0x00, + 0xCF, 0xFC, 0xFF, 0x00, 0xCF, 0xF9, 0xFB, 0x00, 0xD2, 0xFE, 0xFD, 0x00, 0xD4, 0xFF, 0xFF, 0x00, 0xC6, 0xF9, 0xFF, + 0x00, 0xB7, 0xEE, 0xFF, 0x00, 0x59, 0xD7, 0xD9, 0x00, 0x40, 0xB9, 0xE9, 0x00, 0x2E, 0xB9, 0xFF, 0x00, 0x2B, 0xB1, + 0xEF, 0x00, 0x27, 0xAF, 0xEB, 0x00, 0xDD, 0xEF, 0xF1, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0xFF, 0x00, 0xFF, + 0xFE, 0xFD, 0x00, 0xFF, 0xFD, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xFF, 0xFF, 0xF9, 0x00, 0xC1, 0xE8, 0xF0, 0x00, + 0x83, 0xCD, 0xE6, 0x00, 0x52, 0xBB, 0xE8, 0x00, 0x21, 0xA9, 0xEB, 0x00, 0x13, 0xA1, 0xFF, 0x00, 0x06, 0x9F, 0xF7, + 0x00, 0x0F, 0x9F, 0xF8, 0x00, 0x18, 0xA3, 0xEA, 0x00, 0x43, 0xB1, 0xE0, 0x00, 0x6D, 0xC2, 0xC9, 0x00, 0xAF, 0xD6, + 0x99, 0x00, 0xF1, 0xEB, 0x6A, 0x00, 0xEB, 0xEE, 0x31, 0x00, 0xF8, 0xE6, 0x47, 0x00, 0xFF, 0xE1, 0x3A, 0x00, 0xFC, + 0xE1, 0x41, 0x00, 0x00, 0x98, 0xF4, 0x00, 0x19, 0xA1, 0xFC, 0x00, 0x15, 0x9E, 0xF6, 0x00, 0x11, 0x9A, 0xF1, 0x00, + 0x13, 0x9A, 0xF0, 0x00, 0x14, 0x99, 0xF0, 0x00, 0x12, 0x97, 0xEE, 0x00, 0x10, 0x95, 0xEC, 0x00, 0x10, 0x95, 0xEC, + 0x00, 0x5C, 0xCF, 0xF5, 0x00, 0x5A, 0xD1, 0xF6, 0x00, 0x59, 0xD4, 0xF6, 0x00, 0x51, 0xCD, 0xF2, 0x00, 0x59, 0xD6, + 0xFE, 0x00, 0x29, 0x8B, 0xD5, 0x00, 0x02, 0x6C, 0xCB, 0x00, 0x01, 0x7A, 0xD1, 0x00, 0x01, 0x89, 0xD8, 0x00, 0x00, + 0x97, 0xDE, 0x00, 0x00, 0xA5, 0xE5, 0x00, 0x00, 0xB2, 0xEC, 0x00, 0x02, 0xBE, 0xF3, 0x00, 0x08, 0xC7, 0xF1, 0x00, + 0x35, 0xD5, 0xFE, 0x00, 0x58, 0xDD, 0xFD, 0x00, 0x7C, 0xE4, 0xFB, 0x00, 0x91, 0xEA, 0xFC, 0x00, 0xA6, 0xEF, 0xFE, + 0x00, 0xB0, 0xF2, 0xFE, 0x00, 0xBA, 0xF5, 0xFE, 0x00, 0xBD, 0xF5, 0xFC, 0x00, 0xC0, 0xF5, 0xF9, 0x00, 0xC0, 0xF7, + 0xF6, 0x00, 0xC1, 0xF9, 0xF4, 0x00, 0xC6, 0xFC, 0xFC, 0x00, 0xCC, 0xFF, 0xFF, 0x00, 0xC1, 0xF8, 0xF7, 0x00, 0x59, + 0xCC, 0xF3, 0x00, 0x38, 0xB0, 0xF2, 0x00, 0x37, 0xBA, 0xF5, 0x00, 0x29, 0xB4, 0xF7, 0x00, 0xFC, 0xFB, 0xF8, 0x00, + 0xFC, 0xFD, 0xFF, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0xFF, 0x00, 0xFF, 0xFC, 0xF6, 0x00, 0xFC, 0xFE, 0xF2, + 0x00, 0xF6, 0xFF, 0xEE, 0x00, 0xFC, 0xFF, 0xE9, 0x00, 0xFF, 0xFF, 0xE4, 0x00, 0xFF, 0xFF, 0xD7, 0x00, 0xFF, 0xFF, + 0xCA, 0x00, 0xFF, 0xFB, 0xF1, 0x00, 0xFF, 0xFF, 0xDF, 0x00, 0xFC, 0xFD, 0xC1, 0x00, 0xF6, 0xFF, 0x88, 0x00, 0xFB, + 0xFD, 0x91, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFC, 0x6C, 0x00, 0xF9, 0xF6, 0x59, 0x00, 0xF8, 0xEF, 0x58, 0x00, + 0xF7, 0xE9, 0x57, 0x00, 0xF6, 0xE3, 0x59, 0x00, 0xD0, 0xD2, 0x67, 0x00, 0x08, 0x98, 0xFF, 0x00, 0x17, 0x9A, 0xEF, + 0x00, 0x12, 0x99, 0xF1, 0x00, 0x0C, 0x98, 0xF4, 0x00, 0x10, 0x99, 0xF3, 0x00, 0x15, 0x99, 0xF1, 0x00, 0x13, 0x97, + 0xEF, 0x00, 0x11, 0x95, 0xED, 0x00, 0x11, 0x95, 0xED, 0x00, 0x5E, 0xD1, 0xF9, 0x00, 0x5B, 0xD3, 0xF7, 0x00, 0x59, + 0xD4, 0xF6, 0x00, 0x57, 0xD3, 0xF8, 0x00, 0x5E, 0xDA, 0xFF, 0x00, 0x19, 0x70, 0xCD, 0x00, 0x02, 0x6D, 0xCC, 0x00, + 0x03, 0x7B, 0xD2, 0x00, 0x04, 0x88, 0xD9, 0x00, 0x04, 0x96, 0xDF, 0x00, 0x04, 0xA5, 0xE6, 0x00, 0x01, 0xAD, 0xE6, + 0x00, 0x00, 0xB4, 0xE7, 0x00, 0x06, 0xBE, 0xEA, 0x00, 0x23, 0xCA, 0xF5, 0x00, 0x4B, 0xD7, 0xF8, 0x00, 0x74, 0xE3, + 0xFB, 0x00, 0x89, 0xE8, 0xFC, 0x00, 0x9E, 0xEC, 0xFE, 0x00, 0xA5, 0xED, 0xFE, 0x00, 0xAB, 0xEE, 0xFE, 0x00, 0xAD, + 0xEF, 0xFB, 0x00, 0xB0, 0xEF, 0xF9, 0x00, 0xB3, 0xF2, 0xF8, 0x00, 0xB6, 0xF5, 0xF8, 0x00, 0xB5, 0xF8, 0xFC, 0x00, + 0xB5, 0xFB, 0xFF, 0x00, 0xD9, 0xF3, 0xFF, 0x00, 0x1A, 0xB9, 0xF1, 0x00, 0x28, 0xB3, 0xF3, 0x00, 0x2A, 0xB3, 0xF6, + 0x00, 0x73, 0xCE, 0xF3, 0x00, 0xFD, 0xFD, 0xF5, 0x00, 0xFD, 0xFE, 0xF9, 0x00, 0xFD, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, + 0xF8, 0x00, 0xFF, 0xFD, 0xF3, 0x00, 0xFD, 0xFE, 0xEE, 0x00, 0xFA, 0xFE, 0xE9, 0x00, 0xFC, 0xFF, 0xE3, 0x00, 0xFF, + 0xFF, 0xDE, 0x00, 0xFF, 0xFF, 0xD0, 0x00, 0xFF, 0xFF, 0xC2, 0x00, 0xFC, 0xFA, 0xD6, 0x00, 0xFF, 0xFC, 0xF3, 0x00, + 0xFE, 0xFF, 0xBF, 0x00, 0xFC, 0xFA, 0xC4, 0x00, 0xFC, 0xFF, 0x84, 0x00, 0xFB, 0xFA, 0x8A, 0x00, 0xFA, 0xF6, 0x79, + 0x00, 0xF9, 0xF2, 0x68, 0x00, 0xF6, 0xED, 0x5E, 0x00, 0xF4, 0xE8, 0x53, 0x00, 0xF7, 0xE8, 0x48, 0x00, 0x87, 0xBC, + 0xA8, 0x00, 0x10, 0x9A, 0xFB, 0x00, 0x17, 0x9B, 0xF1, 0x00, 0x14, 0x9A, 0xF1, 0x00, 0x10, 0x9A, 0xF1, 0x00, 0x13, + 0x99, 0xF2, 0x00, 0x16, 0x98, 0xF3, 0x00, 0x14, 0x96, 0xF1, 0x00, 0x12, 0x94, 0xEF, 0x00, 0x12, 0x94, 0xEF, 0x00, + 0x61, 0xD4, 0xFC, 0x00, 0x5D, 0xD4, 0xF9, 0x00, 0x58, 0xD4, 0xF6, 0x00, 0x55, 0xD1, 0xF5, 0x00, 0x53, 0xCE, 0xF5, + 0x00, 0x01, 0x4D, 0xBD, 0x00, 0x02, 0x6E, 0xCD, 0x00, 0x04, 0x7B, 0xD3, 0x00, 0x06, 0x87, 0xDA, 0x00, 0x09, 0x96, + 0xE0, 0x00, 0x0C, 0xA5, 0xE6, 0x00, 0x0A, 0xB0, 0xE9, 0x00, 0x09, 0xBA, 0xEB, 0x00, 0x15, 0xC5, 0xF3, 0x00, 0x21, + 0xD0, 0xFB, 0x00, 0x46, 0xD9, 0xFB, 0x00, 0x6B, 0xE3, 0xFB, 0x00, 0x81, 0xE6, 0xFC, 0x00, 0x97, 0xE9, 0xFD, 0x00, + 0x99, 0xE8, 0xFD, 0x00, 0x9B, 0xE8, 0xFD, 0x00, 0x9D, 0xE8, 0xFB, 0x00, 0x9F, 0xE9, 0xF8, 0x00, 0xA5, 0xEE, 0xFA, + 0x00, 0xAB, 0xF2, 0xFC, 0x00, 0xB0, 0xEF, 0xFB, 0x00, 0xB4, 0xEB, 0xFB, 0x00, 0x89, 0xDD, 0xF8, 0x00, 0x27, 0xB4, + 0xF3, 0x00, 0x3E, 0xBD, 0xF7, 0x00, 0x1E, 0xAC, 0xF7, 0x00, 0xBC, 0xE8, 0xF0, 0x00, 0xFE, 0xFF, 0xF2, 0x00, 0xFD, + 0xFF, 0xF3, 0x00, 0xFD, 0xFE, 0xF4, 0x00, 0xFD, 0xFE, 0xF2, 0x00, 0xFE, 0xFE, 0xEF, 0x00, 0xFE, 0xFE, 0xE9, 0x00, + 0xFE, 0xFE, 0xE3, 0x00, 0xFD, 0xFD, 0xDD, 0x00, 0xFD, 0xFD, 0xD7, 0x00, 0xFC, 0xFE, 0xC8, 0x00, 0xFB, 0xFF, 0xB9, + 0x00, 0xF5, 0xFE, 0x9F, 0x00, 0xFF, 0xFF, 0xCE, 0x00, 0xFF, 0xF9, 0xF5, 0x00, 0xFF, 0xFF, 0xC8, 0x00, 0xFC, 0xF7, + 0xBD, 0x00, 0xF8, 0xF8, 0x7A, 0x00, 0xF8, 0xF5, 0x6B, 0x00, 0xF9, 0xF3, 0x5C, 0x00, 0xF5, 0xED, 0x55, 0x00, 0xF1, + 0xE8, 0x4F, 0x00, 0xF8, 0xEE, 0x37, 0x00, 0x3E, 0xA6, 0xE9, 0x00, 0x17, 0x9C, 0xF5, 0x00, 0x17, 0x9D, 0xF4, 0x00, + 0x15, 0x9C, 0xF1, 0x00, 0x14, 0x9B, 0xEE, 0x00, 0x15, 0x99, 0xF1, 0x00, 0x17, 0x97, 0xF4, 0x00, 0x15, 0x95, 0xF2, + 0x00, 0x13, 0x93, 0xF0, 0x00, 0x13, 0x93, 0xF0, 0x00, 0x66, 0xD6, 0xFB, 0x00, 0x5E, 0xD1, 0xF4, 0x00, 0x5F, 0xD3, + 0xF6, 0x00, 0x59, 0xD7, 0xF9, 0x00, 0x39, 0x9D, 0xDA, 0x00, 0x08, 0x58, 0xBE, 0x00, 0x08, 0x6C, 0xCD, 0x00, 0x0C, + 0x79, 0xD2, 0x00, 0x0F, 0x87, 0xD7, 0x00, 0x11, 0x96, 0xDF, 0x00, 0x13, 0xA5, 0xE7, 0x00, 0x13, 0xB0, 0xEA, 0x00, + 0x1B, 0xC2, 0xF5, 0x00, 0x0F, 0xC8, 0xF3, 0x00, 0x16, 0xD0, 0xF9, 0x00, 0x27, 0xD2, 0xF4, 0x00, 0x4B, 0xD6, 0xF7, + 0x00, 0x60, 0xDA, 0xF8, 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x7F, 0xDF, 0xF9, 0x00, 0x87, 0xE0, 0xFA, 0x00, 0x8C, 0xE4, + 0xFB, 0x00, 0x91, 0xE7, 0xFB, 0x00, 0x95, 0xEA, 0xFC, 0x00, 0x9A, 0xED, 0xFC, 0x00, 0x9E, 0xEA, 0xFB, 0x00, 0xA3, + 0xE7, 0xFA, 0x00, 0x5E, 0xCC, 0xFA, 0x00, 0x2C, 0xB6, 0xF5, 0x00, 0x24, 0xB8, 0xF9, 0x00, 0x14, 0xB1, 0xF5, 0x00, + 0xFF, 0xFB, 0xFF, 0x00, 0xFD, 0xFF, 0xEC, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFF, 0xED, 0x00, 0xFF, 0xFE, 0xEC, + 0x00, 0xFD, 0xFD, 0xEA, 0x00, 0xFD, 0xFD, 0xE3, 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFD, 0xFD, 0xD5, 0x00, 0xFD, 0xFD, + 0xCE, 0x00, 0xFC, 0xFC, 0xC1, 0x00, 0xFB, 0xFB, 0xB4, 0x00, 0xF5, 0xFA, 0x8D, 0x00, 0xF8, 0xFC, 0x89, 0x00, 0xF8, + 0xFA, 0xCB, 0x00, 0xF7, 0xFE, 0xF1, 0x00, 0xF9, 0xFF, 0xBD, 0x00, 0xFA, 0xF9, 0xC2, 0x00, 0xFB, 0xF8, 0xAC, 0x00, + 0xFC, 0xF7, 0x96, 0x00, 0xF9, 0xF4, 0x91, 0x00, 0xF7, 0xF0, 0x8C, 0x00, 0xFF, 0xE4, 0xA8, 0x00, 0x00, 0x95, 0xF6, + 0x00, 0x07, 0x99, 0xF6, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x15, 0x9C, 0xF0, 0x00, 0x15, 0x9A, + 0xF2, 0x00, 0x15, 0x98, 0xF4, 0x00, 0x14, 0x97, 0xF2, 0x00, 0x12, 0x95, 0xF1, 0x00, 0x12, 0x95, 0xF1, 0x00, 0x6A, + 0xD9, 0xFA, 0x00, 0x60, 0xCE, 0xF0, 0x00, 0x66, 0xD2, 0xF6, 0x00, 0x5C, 0xDD, 0xFD, 0x00, 0x1E, 0x6C, 0xC0, 0x00, + 0x0E, 0x63, 0xBE, 0x00, 0x0E, 0x69, 0xCD, 0x00, 0x13, 0x78, 0xD0, 0x00, 0x18, 0x87, 0xD4, 0x00, 0x19, 0x96, 0xDE, + 0x00, 0x1A, 0xA6, 0xE9, 0x00, 0x13, 0xA8, 0xE3, 0x00, 0x1D, 0xBA, 0xEE, 0x00, 0x0C, 0xBD, 0xEA, 0x00, 0x22, 0xC5, + 0xF6, 0x00, 0x13, 0xC5, 0xEC, 0x00, 0x2A, 0xCA, 0xF2, 0x00, 0x40, 0xCF, 0xF3, 0x00, 0x56, 0xD3, 0xF4, 0x00, 0x65, + 0xD6, 0xF5, 0x00, 0x74, 0xD9, 0xF7, 0x00, 0x7B, 0xDF, 0xFA, 0x00, 0x82, 0xE4, 0xFE, 0x00, 0x86, 0xE6, 0xFD, 0x00, + 0x89, 0xE7, 0xFD, 0x00, 0x8D, 0xE4, 0xFB, 0x00, 0x92, 0xE2, 0xF9, 0x00, 0x33, 0xBB, 0xFC, 0x00, 0x31, 0xB9, 0xF6, + 0x00, 0x31, 0xBA, 0xFD, 0x00, 0x57, 0xC4, 0xF7, 0x00, 0xF3, 0xFF, 0xDE, 0x00, 0xFD, 0xFF, 0xE6, 0x00, 0xFF, 0xFF, + 0xE6, 0x00, 0xFF, 0xFF, 0xE6, 0x00, 0xFF, 0xFE, 0xE6, 0x00, 0xFD, 0xFC, 0xE5, 0x00, 0xFD, 0xFC, 0xDD, 0x00, 0xFD, + 0xFC, 0xD5, 0x00, 0xFD, 0xFD, 0xCD, 0x00, 0xFD, 0xFD, 0xC5, 0x00, 0xFC, 0xFA, 0xBA, 0x00, 0xFB, 0xF7, 0xAF, 0x00, + 0xFE, 0xF9, 0x9E, 0x00, 0xFF, 0xFB, 0x8D, 0x00, 0xFA, 0xFE, 0x77, 0x00, 0xF4, 0xFB, 0x7D, 0x00, 0xF8, 0xF7, 0xD2, + 0x00, 0xFD, 0xFF, 0xEE, 0x00, 0xFE, 0xFD, 0xDF, 0x00, 0xFE, 0xFB, 0xD0, 0x00, 0xFD, 0xFA, 0xCD, 0x00, 0xFC, 0xF9, + 0xC9, 0x00, 0xA6, 0xD2, 0xCD, 0x00, 0x02, 0x98, 0xEA, 0x00, 0x1E, 0xA0, 0xEC, 0x00, 0x13, 0x9E, 0xF9, 0x00, 0x15, + 0x9E, 0xF6, 0x00, 0x16, 0x9D, 0xF2, 0x00, 0x15, 0x9B, 0xF2, 0x00, 0x14, 0x99, 0xF3, 0x00, 0x13, 0x98, 0xF2, 0x00, + 0x12, 0x97, 0xF1, 0x00, 0x12, 0x97, 0xF1, 0x00, 0x55, 0xD4, 0xF3, 0x00, 0x5B, 0xD1, 0xF0, 0x00, 0x69, 0xD6, 0xF6, + 0x00, 0x6D, 0xE2, 0xFF, 0x00, 0x0B, 0x4F, 0xA7, 0x00, 0x11, 0x60, 0xBE, 0x00, 0x0F, 0x6A, 0xCD, 0x00, 0x1F, 0x83, + 0xD5, 0x00, 0x1E, 0x89, 0xDC, 0x00, 0x0F, 0x8B, 0xDD, 0x00, 0x1A, 0x9B, 0xE0, 0x00, 0x22, 0xB0, 0xF3, 0x00, 0x1D, + 0xAA, 0xE0, 0x00, 0x13, 0xAE, 0xDF, 0x00, 0x25, 0xBC, 0xEE, 0x00, 0x14, 0xB9, 0xE6, 0x00, 0x1F, 0xC1, 0xEF, 0x00, + 0x25, 0xC7, 0xEF, 0x00, 0x2B, 0xCD, 0xEE, 0x00, 0x3C, 0xCD, 0xF0, 0x00, 0x4E, 0xCE, 0xF3, 0x00, 0x5B, 0xD6, 0xF8, + 0x00, 0x68, 0xDE, 0xFE, 0x00, 0x6D, 0xDD, 0xFC, 0x00, 0x73, 0xDC, 0xFA, 0x00, 0x75, 0xDD, 0xF5, 0x00, 0x70, 0xD3, + 0xF6, 0x00, 0x30, 0xBA, 0xFB, 0x00, 0x33, 0xB8, 0xF5, 0x00, 0x24, 0xB5, 0xFE, 0x00, 0xA3, 0xDE, 0xE4, 0x00, 0xF9, + 0xFF, 0xDC, 0x00, 0xFD, 0xFD, 0xDC, 0x00, 0xFE, 0xFE, 0xDC, 0x00, 0xFF, 0xFF, 0xDB, 0x00, 0xFE, 0xFE, 0xDA, 0x00, + 0xFC, 0xFD, 0xD9, 0x00, 0xFC, 0xFD, 0xD2, 0x00, 0xFC, 0xFD, 0xCA, 0x00, 0xFD, 0xFD, 0xC3, 0x00, 0xFD, 0xFD, 0xBB, + 0x00, 0xFC, 0xFB, 0xAF, 0x00, 0xFC, 0xFA, 0xA2, 0x00, 0xFD, 0xFA, 0x92, 0x00, 0xFE, 0xFB, 0x83, 0x00, 0xFB, 0xFD, + 0x6A, 0x00, 0xF8, 0xFC, 0x60, 0x00, 0xFA, 0xF8, 0x5D, 0x00, 0xFC, 0xF7, 0x4C, 0x00, 0xFD, 0xF4, 0x76, 0x00, 0xFE, + 0xF2, 0xA0, 0x00, 0xF5, 0xEC, 0x87, 0x00, 0xF7, 0xE3, 0x5F, 0x00, 0x50, 0xBB, 0xB4, 0x00, 0x0C, 0x99, 0xFE, 0x00, + 0x1A, 0x9E, 0xF7, 0x00, 0x15, 0x9D, 0xF6, 0x00, 0x15, 0x9D, 0xF4, 0x00, 0x15, 0x9C, 0xF2, 0x00, 0x14, 0x9B, 0xF2, + 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x12, 0x99, 0xF1, 0x00, 0x66, 0xD3, + 0xFD, 0x00, 0x69, 0xD6, 0xF9, 0x00, 0x6B, 0xD9, 0xF5, 0x00, 0x4E, 0xB6, 0xDC, 0x00, 0x18, 0x52, 0xAE, 0x00, 0x1C, + 0x66, 0xC6, 0x00, 0x00, 0x5A, 0xBD, 0x00, 0x1A, 0x7D, 0xCA, 0x00, 0x15, 0x7B, 0xD4, 0x00, 0x04, 0x81, 0xDC, 0x00, + 0x2A, 0xA0, 0xE7, 0x00, 0x00, 0x88, 0xD3, 0x00, 0x2D, 0xAB, 0xE2, 0x00, 0x23, 0xA7, 0xDC, 0x00, 0x29, 0xB3, 0xE6, + 0x00, 0x16, 0xAD, 0xE0, 0x00, 0x14, 0xB7, 0xEB, 0x00, 0x15, 0xB9, 0xEA, 0x00, 0x16, 0xBA, 0xE9, 0x00, 0x1F, 0xBE, + 0xEC, 0x00, 0x28, 0xC2, 0xEE, 0x00, 0x3B, 0xCD, 0xF6, 0x00, 0x4E, 0xD8, 0xFE, 0x00, 0x55, 0xD5, 0xFB, 0x00, 0x5D, + 0xD1, 0xF7, 0x00, 0x5D, 0xD6, 0xEF, 0x00, 0x4E, 0xC4, 0xF3, 0x00, 0x2E, 0xB9, 0xFA, 0x00, 0x35, 0xB8, 0xF4, 0x00, + 0x17, 0xB1, 0xFF, 0x00, 0xF0, 0xF7, 0xD1, 0x00, 0xFE, 0xFF, 0xDA, 0x00, 0xFC, 0xFC, 0xD2, 0x00, 0xFD, 0xFD, 0xD1, + 0x00, 0xFD, 0xFE, 0xD0, 0x00, 0xFC, 0xFD, 0xCF, 0x00, 0xFB, 0xFD, 0xCD, 0x00, 0xFC, 0xFD, 0xC6, 0x00, 0xFC, 0xFD, + 0xBF, 0x00, 0xFD, 0xFD, 0xB9, 0x00, 0xFD, 0xFC, 0xB2, 0x00, 0xFD, 0xFC, 0xA3, 0x00, 0xFD, 0xFC, 0x95, 0x00, 0xFC, + 0xFC, 0x87, 0x00, 0xFC, 0xFB, 0x78, 0x00, 0xFD, 0xFA, 0x6C, 0x00, 0xFD, 0xF8, 0x5F, 0x00, 0xF9, 0xF6, 0x45, 0x00, + 0xF5, 0xEF, 0x47, 0x00, 0xF2, 0xE9, 0x37, 0x00, 0xEE, 0xE4, 0x28, 0x00, 0xED, 0xE3, 0x24, 0x00, 0xFF, 0xDD, 0x05, + 0x00, 0x03, 0x99, 0xFF, 0x00, 0x16, 0xA0, 0xF5, 0x00, 0x16, 0x9E, 0xF4, 0x00, 0x16, 0x9C, 0xF3, 0x00, 0x15, 0x9C, + 0xF2, 0x00, 0x14, 0x9B, 0xF2, 0x00, 0x12, 0x9A, 0xF1, 0x00, 0x10, 0x99, 0xEF, 0x00, 0x11, 0x9A, 0xF0, 0x00, 0x12, + 0x9B, 0xF1, 0x00, 0x12, 0x9B, 0xF1, 0x00, 0x65, 0xD5, 0xFB, 0x00, 0x70, 0xD4, 0xFC, 0x00, 0x77, 0xE2, 0xFF, 0x00, + 0x3B, 0x86, 0xC7, 0x00, 0x23, 0x5F, 0xBA, 0x00, 0x1E, 0x6A, 0xBA, 0x00, 0x21, 0x7A, 0xD0, 0x00, 0x27, 0x87, 0xD7, + 0x00, 0x24, 0x8C, 0xD6, 0x00, 0x1D, 0x8D, 0xD3, 0x00, 0x21, 0x88, 0xD0, 0x00, 0x2B, 0xA0, 0xEA, 0x00, 0x21, 0x95, + 0xD5, 0x00, 0x30, 0xA9, 0xEE, 0x00, 0x20, 0xA0, 0xDA, 0x00, 0x16, 0xA1, 0xDD, 0x00, 0x0D, 0xA1, 0xDF, 0x00, 0x19, + 0xAB, 0xE2, 0x00, 0x12, 0xB1, 0xEB, 0x00, 0x0F, 0xB8, 0xED, 0x00, 0x0C, 0xBF, 0xEE, 0x00, 0x1C, 0xC1, 0xEF, 0x00, + 0x2C, 0xC3, 0xF0, 0x00, 0x36, 0xC4, 0xF1, 0x00, 0x40, 0xC5, 0xF3, 0x00, 0x46, 0xC9, 0xF1, 0x00, 0x45, 0xC2, 0xF6, + 0x00, 0x31, 0xBA, 0xF9, 0x00, 0x30, 0xB7, 0xF6, 0x00, 0x4B, 0xC1, 0xF4, 0x00, 0xF5, 0xFA, 0xC0, 0x00, 0xFD, 0xFF, + 0xC6, 0x00, 0xFC, 0xFC, 0xC4, 0x00, 0xFD, 0xFC, 0xC4, 0x00, 0xFD, 0xFD, 0xC3, 0x00, 0xFC, 0xFD, 0xC2, 0x00, 0xFB, + 0xFC, 0xC1, 0x00, 0xF8, 0xF8, 0xB5, 0x00, 0xFC, 0xFD, 0xB2, 0x00, 0xFC, 0xFC, 0xAA, 0x00, 0xFC, 0xFC, 0xA3, 0x00, + 0xFC, 0xFB, 0x95, 0x00, 0xFB, 0xFB, 0x88, 0x00, 0xFB, 0xFB, 0x7A, 0x00, 0xFB, 0xFA, 0x6D, 0x00, 0xFB, 0xF8, 0x61, + 0x00, 0xFC, 0xF6, 0x56, 0x00, 0xF8, 0xF2, 0x44, 0x00, 0xF4, 0xEA, 0x40, 0x00, 0xEF, 0xE5, 0x31, 0x00, 0xEA, 0xDF, + 0x23, 0x00, 0xFA, 0xE0, 0x1C, 0x00, 0xC5, 0xD1, 0x44, 0x00, 0x0A, 0xA1, 0xFE, 0x00, 0x15, 0x9F, 0xF9, 0x00, 0x17, + 0x9F, 0xF5, 0x00, 0x18, 0x9F, 0xF2, 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x15, 0x9D, 0xF2, 0x00, 0x16, 0x9F, 0xF5, 0x00, + 0x18, 0xA0, 0xF8, 0x00, 0x15, 0x9D, 0xF5, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x64, 0xD7, 0xF9, + 0x00, 0x64, 0xD1, 0xF6, 0x00, 0x5D, 0xE6, 0xFF, 0x00, 0x03, 0x43, 0x9A, 0x00, 0x0D, 0x4B, 0xA5, 0x00, 0x30, 0x7B, + 0xCC, 0x00, 0x04, 0x54, 0xC0, 0x00, 0x00, 0x53, 0xC9, 0x00, 0x03, 0x67, 0xC5, 0x00, 0x25, 0x87, 0xC9, 0x00, 0x28, + 0x80, 0xCA, 0x00, 0x27, 0x88, 0xD0, 0x00, 0x26, 0x90, 0xD7, 0x00, 0x06, 0x74, 0xC9, 0x00, 0x17, 0x8D, 0xCF, 0x00, + 0x1E, 0x9C, 0xE1, 0x00, 0x16, 0x9B, 0xE3, 0x00, 0x1E, 0x9E, 0xDA, 0x00, 0x00, 0x97, 0xDD, 0x00, 0x03, 0xA4, 0xE6, + 0x00, 0x07, 0xB1, 0xEE, 0x00, 0x08, 0xB0, 0xE8, 0x00, 0x09, 0xAE, 0xE2, 0x00, 0x16, 0xB4, 0xE8, 0x00, 0x23, 0xB9, + 0xEF, 0x00, 0x30, 0xBD, 0xF4, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x34, 0xBB, 0xF9, 0x00, 0x2C, 0xB6, 0xF9, 0x00, 0x80, + 0xD2, 0xE8, 0x00, 0xFA, 0xFD, 0xAE, 0x00, 0xFB, 0xFC, 0xB2, 0x00, 0xFC, 0xFB, 0xB6, 0x00, 0xFC, 0xFC, 0xB6, 0x00, + 0xFD, 0xFC, 0xB6, 0x00, 0xFC, 0xFC, 0xB5, 0x00, 0xFB, 0xFC, 0xB4, 0x00, 0xF3, 0xF4, 0xA4, 0x00, 0xFC, 0xFC, 0xA5, + 0x00, 0xFC, 0xFC, 0x9C, 0x00, 0xFC, 0xFB, 0x93, 0x00, 0xFB, 0xFB, 0x87, 0x00, 0xFA, 0xFA, 0x7A, 0x00, 0xFA, 0xFA, + 0x6D, 0x00, 0xF9, 0xF9, 0x61, 0x00, 0xFA, 0xF7, 0x57, 0x00, 0xFA, 0xF4, 0x4E, 0x00, 0xF6, 0xED, 0x44, 0x00, 0xF3, + 0xE6, 0x3A, 0x00, 0xED, 0xE1, 0x2C, 0x00, 0xE7, 0xDB, 0x1E, 0x00, 0xFF, 0xD1, 0x19, 0x00, 0x77, 0xB0, 0x8F, 0x00, + 0x09, 0xA0, 0xFD, 0x00, 0x14, 0x9D, 0xFD, 0x00, 0x17, 0x9F, 0xF7, 0x00, 0x1A, 0xA2, 0xF2, 0x00, 0x18, 0xA0, 0xF2, + 0x00, 0x16, 0x9E, 0xF2, 0x00, 0x13, 0x9B, 0xF1, 0x00, 0x10, 0x98, 0xF0, 0x00, 0x11, 0x99, 0xF1, 0x00, 0x12, 0x9A, + 0xF2, 0x00, 0x12, 0x9A, 0xF2, 0x00, 0x5F, 0xD4, 0xF7, 0x00, 0x67, 0xDC, 0xFC, 0x00, 0x4F, 0xC1, 0xF0, 0x00, 0x00, + 0x2B, 0x8A, 0x00, 0x2D, 0x6A, 0xBF, 0x00, 0x05, 0x47, 0xAC, 0x00, 0x00, 0x43, 0xB9, 0x00, 0x35, 0x85, 0xC4, 0x00, + 0x06, 0x4D, 0xBB, 0x00, 0x13, 0x61, 0xC3, 0x00, 0x2C, 0x70, 0xCA, 0x00, 0x0F, 0x5A, 0xB3, 0x00, 0x21, 0x74, 0xCC, + 0x00, 0x11, 0x69, 0xC2, 0x00, 0x18, 0x78, 0xC2, 0x00, 0x1C, 0x80, 0xD0, 0x00, 0x18, 0x7F, 0xD6, 0x00, 0x1A, 0x86, + 0xD3, 0x00, 0x10, 0x8F, 0xDD, 0x00, 0x02, 0x8C, 0xDA, 0x00, 0x04, 0x99, 0xE6, 0x00, 0x04, 0x9B, 0xE1, 0x00, 0x04, + 0x9D, 0xDC, 0x00, 0x05, 0xA6, 0xE1, 0x00, 0x00, 0xA6, 0xDD, 0x00, 0x1F, 0xB6, 0xEE, 0x00, 0x39, 0xBD, 0xF6, 0x00, + 0x38, 0xBB, 0xF6, 0x00, 0x24, 0xB5, 0xFC, 0x00, 0xBF, 0xE8, 0xB8, 0x00, 0xFA, 0xFE, 0xA2, 0x00, 0xFB, 0xFC, 0xA5, + 0x00, 0xFB, 0xFA, 0xA8, 0x00, 0xFC, 0xFB, 0xA7, 0x00, 0xFC, 0xFC, 0xA6, 0x00, 0xFA, 0xFB, 0xA2, 0x00, 0xF8, 0xFA, + 0x9F, 0x00, 0xF5, 0xF7, 0x94, 0x00, 0xFA, 0xFB, 0x92, 0x00, 0xFA, 0xFB, 0x8B, 0x00, 0xFB, 0xFB, 0x84, 0x00, 0xFA, + 0xFA, 0x78, 0x00, 0xF9, 0xF9, 0x6D, 0x00, 0xF9, 0xF9, 0x61, 0x00, 0xF8, 0xF8, 0x55, 0x00, 0xF8, 0xF6, 0x4B, 0x00, + 0xF9, 0xF3, 0x41, 0x00, 0xF5, 0xEC, 0x39, 0x00, 0xF1, 0xE4, 0x30, 0x00, 0xEE, 0xDD, 0x28, 0x00, 0xEB, 0xD6, 0x1F, + 0x00, 0xEE, 0xD9, 0x00, 0x00, 0x32, 0xA6, 0xE4, 0x00, 0x18, 0xA4, 0xFF, 0x00, 0x28, 0xA4, 0xF3, 0x00, 0x20, 0xA2, + 0xF4, 0x00, 0x18, 0xA0, 0xF4, 0x00, 0x16, 0x9E, 0xF4, 0x00, 0x15, 0x9D, 0xF3, 0x00, 0x13, 0x9B, 0xF2, 0x00, 0x11, + 0x99, 0xF2, 0x00, 0x11, 0x99, 0xF2, 0x00, 0x12, 0x9A, 0xF3, 0x00, 0x12, 0x9A, 0xF3, 0x00, 0x5B, 0xD1, 0xF5, 0x00, + 0x62, 0xDF, 0xFA, 0x00, 0x30, 0x8C, 0xCC, 0x00, 0x05, 0x2C, 0x91, 0x00, 0x0E, 0x49, 0x9A, 0x00, 0x00, 0x36, 0x9E, + 0x00, 0x00, 0x38, 0x96, 0x00, 0x14, 0x5E, 0xB6, 0x00, 0x53, 0xAA, 0xD9, 0x00, 0x30, 0xA6, 0xE2, 0x00, 0x44, 0xBB, + 0xEE, 0x00, 0x6D, 0xDD, 0xFF, 0x00, 0x76, 0xDE, 0xF9, 0x00, 0x6C, 0xD9, 0xF9, 0x00, 0x63, 0xD4, 0xF8, 0x00, 0x54, + 0xC4, 0xF3, 0x00, 0x44, 0xB4, 0xED, 0x00, 0x23, 0x8E, 0xD5, 0x00, 0x11, 0x77, 0xCE, 0x00, 0x00, 0x6C, 0xC6, 0x00, + 0x02, 0x81, 0xDE, 0x00, 0x00, 0x87, 0xDA, 0x00, 0x00, 0x8D, 0xD6, 0x00, 0x06, 0x9B, 0xE1, 0x00, 0x00, 0x98, 0xDC, + 0x00, 0x22, 0xB1, 0xF0, 0x00, 0x35, 0xB9, 0xF4, 0x00, 0x3C, 0xBC, 0xF3, 0x00, 0x1B, 0xB4, 0xFF, 0x00, 0xFE, 0xFD, + 0x89, 0x00, 0xFA, 0xFF, 0x95, 0x00, 0xFA, 0xFC, 0x97, 0x00, 0xFB, 0xF8, 0x99, 0x00, 0xFB, 0xFB, 0x97, 0x00, 0xFC, + 0xFD, 0x95, 0x00, 0xF9, 0xFB, 0x8F, 0x00, 0xF6, 0xF9, 0x89, 0x00, 0xF7, 0xF9, 0x84, 0x00, 0xF8, 0xF9, 0x7F, 0x00, + 0xF9, 0xFA, 0x7A, 0x00, 0xFA, 0xFA, 0x75, 0x00, 0xF9, 0xF9, 0x6A, 0x00, 0xF8, 0xF9, 0x5F, 0x00, 0xF7, 0xF8, 0x54, + 0x00, 0xF6, 0xF7, 0x49, 0x00, 0xF7, 0xF5, 0x3F, 0x00, 0xF7, 0xF2, 0x35, 0x00, 0xF3, 0xEB, 0x2E, 0x00, 0xF0, 0xE3, + 0x27, 0x00, 0xF0, 0xDA, 0x24, 0x00, 0xF0, 0xD1, 0x21, 0x00, 0xE8, 0xC9, 0x23, 0x00, 0x03, 0x9B, 0xFF, 0x00, 0x20, + 0xA3, 0xF6, 0x00, 0x16, 0xA1, 0xF6, 0x00, 0x16, 0x9F, 0xF7, 0x00, 0x16, 0x9D, 0xF7, 0x00, 0x15, 0x9C, 0xF6, 0x00, + 0x14, 0x9B, 0xF5, 0x00, 0x13, 0x9A, 0xF4, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, 0x00, 0x12, 0x99, 0xF3, + 0x00, 0x12, 0x99, 0xF3, 0x00, 0x5A, 0xE2, 0xFE, 0x00, 0x64, 0xD7, 0xFF, 0x00, 0x0C, 0x46, 0x97, 0x00, 0x00, 0x25, + 0x82, 0x00, 0x1D, 0x6A, 0xB7, 0x00, 0x39, 0xA2, 0xDE, 0x00, 0x5E, 0xE5, 0xFF, 0x00, 0x51, 0xD8, 0xFD, 0x00, 0x4C, + 0xD6, 0xF5, 0x00, 0x48, 0xCC, 0xF4, 0x00, 0x5E, 0xCF, 0xF6, 0x00, 0x67, 0xD9, 0xFE, 0x00, 0x61, 0xD3, 0xF7, 0x00, + 0x5A, 0xD1, 0xF8, 0x00, 0x41, 0xCB, 0xFE, 0x00, 0x53, 0xCE, 0xFE, 0x00, 0x51, 0xCF, 0xF5, 0x00, 0x49, 0xCA, 0xF6, + 0x00, 0x49, 0xCD, 0xFF, 0x00, 0x3F, 0xB9, 0xFF, 0x00, 0x0E, 0x7E, 0xDA, 0x00, 0x00, 0x69, 0xC2, 0x00, 0x05, 0x84, + 0xDA, 0x00, 0x01, 0x84, 0xD5, 0x00, 0x05, 0x8C, 0xD8, 0x00, 0x37, 0xBE, 0xF8, 0x00, 0x3A, 0xBE, 0xF6, 0x00, 0x34, + 0xBD, 0xFF, 0x00, 0x61, 0xC6, 0xE1, 0x00, 0xFB, 0xF3, 0x79, 0x00, 0xF7, 0xFA, 0x82, 0x00, 0xF9, 0xF9, 0x83, 0x00, + 0xFA, 0xF7, 0x83, 0x00, 0xF8, 0xF7, 0x7F, 0x00, 0xF6, 0xF6, 0x7B, 0x00, 0xF7, 0xF8, 0x79, 0x00, 0xF8, 0xFA, 0x77, + 0x00, 0xF7, 0xF9, 0x71, 0x00, 0xF7, 0xF8, 0x6C, 0x00, 0xFB, 0xFC, 0x6B, 0x00, 0xF8, 0xF8, 0x63, 0x00, 0xF8, 0xF7, + 0x5A, 0x00, 0xF7, 0xF7, 0x52, 0x00, 0xF7, 0xF5, 0x48, 0x00, 0xF6, 0xF4, 0x3F, 0x00, 0xF5, 0xF2, 0x37, 0x00, 0xF4, + 0xEF, 0x2F, 0x00, 0xF1, 0xE6, 0x27, 0x00, 0xEE, 0xDD, 0x20, 0x00, 0xEA, 0xD6, 0x1F, 0x00, 0xF1, 0xCC, 0x10, 0x00, + 0x9D, 0xB9, 0x6C, 0x00, 0x0B, 0x9F, 0xFE, 0x00, 0x1A, 0xA3, 0xF8, 0x00, 0x16, 0xA2, 0xF9, 0x00, 0x16, 0xA0, 0xF8, + 0x00, 0x16, 0x9E, 0xF7, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x14, 0x9B, 0xF6, 0x00, 0x14, 0x9A, 0xF5, 0x00, 0x13, 0x99, + 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x13, 0x99, 0xF4, 0x00, 0x60, 0xD8, 0xF8, 0x00, 0x5A, + 0xD8, 0xF7, 0x00, 0x4B, 0xAD, 0xD7, 0x00, 0x68, 0xDD, 0xFF, 0x00, 0x55, 0xDC, 0xF7, 0x00, 0x55, 0xD6, 0xFC, 0x00, + 0x54, 0xCF, 0xFF, 0x00, 0x5C, 0xD5, 0xFF, 0x00, 0x53, 0xCA, 0xF1, 0x00, 0x4A, 0xCA, 0xF5, 0x00, 0x42, 0xC9, 0xF9, + 0x00, 0x47, 0xC9, 0xF7, 0x00, 0x4B, 0xC8, 0xF5, 0x00, 0x5C, 0xCF, 0xF0, 0x00, 0x46, 0xCC, 0xF8, 0x00, 0x55, 0xCA, + 0xFF, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x43, 0xC2, 0xFB, 0x00, 0x48, 0xC1, 0xFC, 0x00, 0x3E, 0xBE, 0xF3, 0x00, 0x43, + 0xCB, 0xFA, 0x00, 0x37, 0xB3, 0xFC, 0x00, 0x0B, 0x7B, 0xDD, 0x00, 0x00, 0x6D, 0xC8, 0x00, 0x0D, 0x7F, 0xD4, 0x00, + 0x4D, 0xCC, 0xFF, 0x00, 0x3E, 0xC2, 0xF9, 0x00, 0x2D, 0xC1, 0xFF, 0x00, 0xA7, 0xDE, 0xA7, 0x00, 0xF7, 0xEB, 0x5B, + 0x00, 0xF4, 0xF5, 0x6F, 0x00, 0xF7, 0xF5, 0x6E, 0x00, 0xF9, 0xF6, 0x6D, 0x00, 0xF5, 0xF3, 0x67, 0x00, 0xF1, 0xF0, + 0x60, 0x00, 0xF5, 0xF6, 0x62, 0x00, 0xFA, 0xFC, 0x65, 0x00, 0xF8, 0xF9, 0x5E, 0x00, 0xF5, 0xF6, 0x58, 0x00, 0xFE, + 0xFE, 0x5D, 0x00, 0xF6, 0xF6, 0x52, 0x00, 0xF6, 0xF5, 0x4B, 0x00, 0xF7, 0xF5, 0x44, 0x00, 0xF6, 0xF3, 0x3D, 0x00, + 0xF5, 0xF1, 0x35, 0x00, 0xF3, 0xEE, 0x2F, 0x00, 0xF0, 0xEB, 0x28, 0x00, 0xEE, 0xE1, 0x20, 0x00, 0xEC, 0xD8, 0x18, + 0x00, 0xE4, 0xD2, 0x1A, 0x00, 0xF3, 0xC6, 0x00, 0x00, 0x51, 0xA8, 0xB4, 0x00, 0x13, 0xA3, 0xFA, 0x00, 0x15, 0xA3, + 0xFB, 0x00, 0x17, 0xA3, 0xFB, 0x00, 0x16, 0xA0, 0xFA, 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF7, 0x00, 0x15, + 0x9C, 0xF7, 0x00, 0x14, 0x9A, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, 0x14, 0x99, 0xF6, 0x00, + 0x14, 0x99, 0xF6, 0x00, 0x58, 0xCE, 0xF1, 0x00, 0x59, 0xDC, 0xFD, 0x00, 0x55, 0xD5, 0xF8, 0x00, 0x5D, 0xDD, 0xFF, + 0x00, 0x4D, 0xCE, 0xF3, 0x00, 0x4C, 0xCB, 0xF3, 0x00, 0x4C, 0xC8, 0xF3, 0x00, 0x56, 0xD1, 0xFB, 0x00, 0x58, 0xD3, + 0xFC, 0x00, 0x4F, 0xCE, 0xFB, 0x00, 0x47, 0xC9, 0xFA, 0x00, 0x48, 0xC8, 0xF9, 0x00, 0x49, 0xC7, 0xF8, 0x00, 0x50, + 0xCA, 0xF5, 0x00, 0x44, 0xC9, 0xF9, 0x00, 0x4B, 0xC8, 0xFD, 0x00, 0x3E, 0xC5, 0xF9, 0x00, 0x40, 0xC3, 0xFA, 0x00, + 0x43, 0xC2, 0xFA, 0x00, 0x3A, 0xBD, 0xF3, 0x00, 0x3A, 0xBF, 0xF3, 0x00, 0x3E, 0xC7, 0xFC, 0x00, 0x3A, 0xC6, 0xFC, + 0x00, 0x24, 0xA1, 0xE2, 0x00, 0x1F, 0x8C, 0xD9, 0x00, 0x36, 0xB9, 0xF6, 0x00, 0x26, 0xBB, 0xFA, 0x00, 0x29, 0xBA, + 0xF3, 0x00, 0xCD, 0xD7, 0x56, 0x00, 0xF9, 0xFA, 0x5A, 0x00, 0xD9, 0xDA, 0x48, 0x00, 0xED, 0xEC, 0x58, 0x00, 0xF9, + 0xF5, 0x5F, 0x00, 0xF1, 0xEF, 0x4D, 0x00, 0xE9, 0xE9, 0x3A, 0x00, 0xED, 0xEE, 0x45, 0x00, 0xF2, 0xF4, 0x50, 0x00, + 0xF9, 0xF3, 0x4E, 0x00, 0xED, 0xF0, 0x44, 0x00, 0xFE, 0xF8, 0x4B, 0x00, 0xF4, 0xF5, 0x41, 0x00, 0xF5, 0xF4, 0x3C, + 0x00, 0xF6, 0xF2, 0x37, 0x00, 0xF5, 0xF0, 0x31, 0x00, 0xF4, 0xEF, 0x2A, 0x00, 0xF2, 0xEA, 0x26, 0x00, 0xF0, 0xE6, + 0x22, 0x00, 0xEE, 0xDB, 0x1C, 0x00, 0xEC, 0xD0, 0x17, 0x00, 0xF0, 0xCC, 0x08, 0x00, 0xF5, 0xC4, 0x08, 0x00, 0x0E, + 0xAD, 0xFF, 0x00, 0x16, 0xA1, 0xF9, 0x00, 0x17, 0xA1, 0xF8, 0x00, 0x18, 0xA1, 0xF8, 0x00, 0x17, 0xA0, 0xF8, 0x00, + 0x16, 0x9E, 0xF8, 0x00, 0x16, 0x9D, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9A, 0xF7, 0x00, 0x14, 0x99, 0xF7, + 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x14, 0x99, 0xF7, 0x00, 0x60, 0xD5, 0xFB, 0x00, 0x5A, 0xD3, + 0xFA, 0x00, 0x55, 0xD1, 0xFA, 0x00, 0x55, 0xD0, 0xFC, 0x00, 0x54, 0xCF, 0xFE, 0x00, 0x54, 0xD0, 0xFA, 0x00, 0x53, + 0xD1, 0xF6, 0x00, 0x50, 0xCE, 0xF6, 0x00, 0x4E, 0xCB, 0xF7, 0x00, 0x4C, 0xCA, 0xF9, 0x00, 0x4B, 0xCA, 0xFA, 0x00, + 0x49, 0xC8, 0xFB, 0x00, 0x47, 0xC6, 0xFB, 0x00, 0x45, 0xC6, 0xFB, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, + 0x00, 0x3F, 0xC6, 0xF8, 0x00, 0x3E, 0xC4, 0xF8, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3F, 0xC3, 0xFB, 0x00, 0x40, 0xC3, + 0xFD, 0x00, 0x38, 0xBA, 0xF2, 0x00, 0x3F, 0xC0, 0xF7, 0x00, 0x3D, 0xC2, 0xFA, 0x00, 0x3A, 0xC5, 0xFD, 0x00, 0x37, + 0xC1, 0xF6, 0x00, 0x34, 0xBD, 0xEF, 0x00, 0x2D, 0xBB, 0xEF, 0x00, 0xDD, 0xD6, 0x21, 0x00, 0xBF, 0xDC, 0x37, 0x00, + 0xDD, 0xE0, 0x41, 0x00, 0xEB, 0xEA, 0x49, 0x00, 0xEA, 0xE3, 0x41, 0x00, 0xED, 0xE8, 0x41, 0x00, 0xF1, 0xED, 0x41, + 0x00, 0xED, 0xEC, 0x3F, 0x00, 0xEA, 0xEB, 0x3C, 0x00, 0xFA, 0xEE, 0x3E, 0x00, 0xE5, 0xEB, 0x31, 0x00, 0xFE, 0xF2, + 0x39, 0x00, 0xF1, 0xF4, 0x31, 0x00, 0xF3, 0xF2, 0x2D, 0x00, 0xF5, 0xF0, 0x29, 0x00, 0xF4, 0xEE, 0x25, 0x00, 0xF4, + 0xEC, 0x20, 0x00, 0xF1, 0xE6, 0x1E, 0x00, 0xEF, 0xE1, 0x1C, 0x00, 0xED, 0xD5, 0x19, 0x00, 0xEB, 0xC9, 0x16, 0x00, + 0xDE, 0xC3, 0x0B, 0x00, 0xBA, 0xBE, 0x39, 0x00, 0x07, 0x98, 0xF8, 0x00, 0x19, 0x9F, 0xF8, 0x00, 0x19, 0x9F, 0xF6, + 0x00, 0x19, 0x9F, 0xF5, 0x00, 0x18, 0x9F, 0xF7, 0x00, 0x16, 0x9F, 0xF9, 0x00, 0x16, 0x9D, 0xF9, 0x00, 0x16, 0x9C, + 0xF9, 0x00, 0x16, 0x9A, 0xF9, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, 0x15, + 0x99, 0xF8, 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x58, 0xD4, 0xF8, 0x00, 0x54, 0xD3, 0xF8, 0x00, 0x56, 0xD1, 0xF9, 0x00, + 0x57, 0xD0, 0xFA, 0x00, 0x55, 0xD0, 0xF8, 0x00, 0x53, 0xD0, 0xF5, 0x00, 0x50, 0xCE, 0xF7, 0x00, 0x4D, 0xCC, 0xF9, + 0x00, 0x4C, 0xCB, 0xF9, 0x00, 0x4A, 0xCA, 0xFA, 0x00, 0x48, 0xC8, 0xFB, 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC6, + 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x3F, 0xC6, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, + 0xC3, 0xF9, 0x00, 0x3E, 0xC2, 0xFA, 0x00, 0x3E, 0xC1, 0xFB, 0x00, 0x3A, 0xBD, 0xF5, 0x00, 0x3D, 0xC1, 0xF7, 0x00, + 0x3A, 0xC0, 0xF8, 0x00, 0x37, 0xC0, 0xF9, 0x00, 0x36, 0xBD, 0xFF, 0x00, 0x35, 0xBB, 0xFF, 0x00, 0x66, 0xBA, 0x84, + 0x00, 0xAF, 0xD2, 0x18, 0x00, 0xB3, 0xD2, 0x19, 0x00, 0xD2, 0xDA, 0x39, 0x00, 0xE1, 0xDC, 0x3D, 0x00, 0xD5, 0xD4, + 0x31, 0x00, 0xE1, 0xDF, 0x37, 0x00, 0xEC, 0xE9, 0x3E, 0x00, 0xE1, 0xE6, 0x35, 0x00, 0xE9, 0xE5, 0x35, 0x00, 0xF0, + 0xE5, 0x34, 0x00, 0xE4, 0xE3, 0x2A, 0x00, 0xF5, 0xE5, 0x2D, 0x00, 0xE8, 0xEB, 0x28, 0x00, 0xF0, 0xEE, 0x2A, 0x00, + 0xEF, 0xE8, 0x24, 0x00, 0xEC, 0xE4, 0x20, 0x00, 0xE9, 0xDF, 0x1C, 0x00, 0xEB, 0xDB, 0x1C, 0x00, 0xED, 0xD7, 0x1B, + 0x00, 0xE9, 0xCE, 0x18, 0x00, 0xE5, 0xC5, 0x15, 0x00, 0xE7, 0xBF, 0x03, 0x00, 0x6C, 0xB1, 0x92, 0x00, 0x10, 0x9C, + 0xFB, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x19, 0xA0, 0xF5, 0x00, 0x1B, 0xA0, 0xF3, 0x00, 0x19, 0x9F, 0xF6, 0x00, 0x16, + 0x9F, 0xF9, 0x00, 0x16, 0x9E, 0xF8, 0x00, 0x15, 0x9C, 0xF8, 0x00, 0x15, 0x9B, 0xF8, 0x00, 0x15, 0x99, 0xF8, 0x00, + 0x14, 0x99, 0xF7, 0x00, 0x14, 0x98, 0xF7, 0x00, 0x14, 0x98, 0xF7, 0x00, 0x57, 0xD3, 0xF6, 0x00, 0x55, 0xD4, 0xF6, + 0x00, 0x53, 0xD5, 0xF6, 0x00, 0x57, 0xD2, 0xF7, 0x00, 0x5B, 0xD0, 0xF7, 0x00, 0x57, 0xD0, 0xF6, 0x00, 0x54, 0xCF, + 0xF5, 0x00, 0x50, 0xCE, 0xF7, 0x00, 0x4C, 0xCC, 0xFA, 0x00, 0x4B, 0xCB, 0xFA, 0x00, 0x49, 0xCA, 0xFA, 0x00, 0x47, + 0xC8, 0xFA, 0x00, 0x46, 0xC7, 0xFB, 0x00, 0x44, 0xC7, 0xFA, 0x00, 0x43, 0xC6, 0xFA, 0x00, 0x41, 0xC6, 0xF9, 0x00, + 0x3F, 0xC5, 0xF9, 0x00, 0x3E, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x3B, 0xC0, 0xF9, + 0x00, 0x3C, 0xC1, 0xF8, 0x00, 0x3C, 0xC2, 0xF7, 0x00, 0x38, 0xBE, 0xF6, 0x00, 0x34, 0xBB, 0xF5, 0x00, 0x35, 0xBC, + 0xFD, 0x00, 0x36, 0xBE, 0xFF, 0x00, 0x45, 0xBB, 0xFB, 0x00, 0x82, 0xC9, 0x2B, 0x00, 0xA0, 0xBE, 0x01, 0x00, 0xB8, + 0xC4, 0x20, 0x00, 0xD8, 0xCF, 0x31, 0x00, 0xD1, 0xD5, 0x31, 0x00, 0xD4, 0xD5, 0x2E, 0x00, 0xD7, 0xD4, 0x2A, 0x00, + 0xCC, 0xD7, 0x24, 0x00, 0xE8, 0xDE, 0x2E, 0x00, 0xE6, 0xDD, 0x29, 0x00, 0xE4, 0xDC, 0x24, 0x00, 0xED, 0xD9, 0x22, + 0x00, 0xDF, 0xE1, 0x20, 0x00, 0xEC, 0xE9, 0x27, 0x00, 0xEA, 0xE0, 0x1E, 0x00, 0xE3, 0xD9, 0x1B, 0x00, 0xDD, 0xD3, + 0x19, 0x00, 0xE4, 0xD0, 0x1A, 0x00, 0xEB, 0xCD, 0x1B, 0x00, 0xE4, 0xC7, 0x17, 0x00, 0xDE, 0xC2, 0x14, 0x00, 0xEF, + 0xBC, 0x00, 0x00, 0x1D, 0xA4, 0xEB, 0x00, 0x19, 0xA0, 0xFF, 0x00, 0x15, 0xA2, 0xF6, 0x00, 0x19, 0xA2, 0xF3, 0x00, + 0x1D, 0xA1, 0xF0, 0x00, 0x19, 0xA0, 0xF4, 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9E, 0xF8, 0x00, 0x15, 0x9D, 0xF8, + 0x00, 0x14, 0x9B, 0xF7, 0x00, 0x14, 0x9A, 0xF7, 0x00, 0x13, 0x99, 0xF6, 0x00, 0x12, 0x98, 0xF5, 0x00, 0x12, 0x98, + 0xF5, 0x00, 0x5E, 0xD5, 0xF8, 0x00, 0x63, 0xD5, 0xFC, 0x00, 0x68, 0xD6, 0xFF, 0x00, 0x5E, 0xD2, 0xFB, 0x00, 0x55, + 0xCF, 0xF8, 0x00, 0x53, 0xCF, 0xF7, 0x00, 0x50, 0xCE, 0xF7, 0x00, 0x4D, 0xCD, 0xF9, 0x00, 0x4B, 0xCC, 0xFA, 0x00, + 0x49, 0xCB, 0xFA, 0x00, 0x48, 0xCA, 0xFA, 0x00, 0x47, 0xC9, 0xFA, 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x44, 0xC7, 0xFA, + 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x3F, 0xC4, 0xF9, 0x00, 0x3D, 0xC2, + 0xF9, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3B, 0xC0, 0xF8, 0x00, 0x3A, 0xC1, 0xF8, 0x00, 0x38, + 0xBF, 0xF7, 0x00, 0x35, 0xBD, 0xF6, 0x00, 0x34, 0xBD, 0xFA, 0x00, 0x33, 0xBD, 0xFE, 0x00, 0x22, 0xC3, 0xF5, 0x00, + 0x26, 0xBA, 0xFB, 0x00, 0x53, 0xB0, 0xB1, 0x00, 0x9A, 0xC5, 0x06, 0x00, 0xC0, 0xD2, 0x22, 0x00, 0xD3, 0xDD, 0x36, + 0x00, 0xB3, 0xBA, 0x12, 0x00, 0xC3, 0xC7, 0x1E, 0x00, 0xC4, 0xCE, 0x21, 0x00, 0xD8, 0xD8, 0x2C, 0x00, 0xDE, 0xDA, + 0x2F, 0x00, 0xDC, 0xD5, 0x2A, 0x00, 0xE7, 0xD4, 0x20, 0x00, 0xD4, 0xD5, 0x1C, 0x00, 0xE8, 0xE4, 0x28, 0x00, 0xEB, + 0xE3, 0x24, 0x00, 0xD1, 0xCD, 0x1F, 0x00, 0xD2, 0xC5, 0x1C, 0x00, 0xDC, 0xC2, 0x01, 0x00, 0xCF, 0xC3, 0x11, 0x00, + 0xE2, 0xC1, 0x09, 0x00, 0xE3, 0xBE, 0x00, 0x00, 0x83, 0xBE, 0x6E, 0x00, 0x0C, 0x9F, 0xF6, 0x00, 0x11, 0x9F, 0xFD, + 0x00, 0x17, 0xA1, 0xF6, 0x00, 0x19, 0xA1, 0xF4, 0x00, 0x1A, 0xA1, 0xF3, 0x00, 0x18, 0xA0, 0xF5, 0x00, 0x15, 0x9F, + 0xF8, 0x00, 0x15, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, 0x14, 0x9C, 0xF7, 0x00, 0x13, 0x9B, 0xF7, 0x00, 0x11, + 0x99, 0xF5, 0x00, 0x10, 0x98, 0xF4, 0x00, 0x10, 0x98, 0xF4, 0x00, 0x64, 0xD6, 0xFB, 0x00, 0x5D, 0xD4, 0xF9, 0x00, + 0x55, 0xD2, 0xF8, 0x00, 0x53, 0xD0, 0xF8, 0x00, 0x50, 0xCE, 0xF8, 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4D, 0xCD, 0xFA, + 0x00, 0x4B, 0xCC, 0xFA, 0x00, 0x49, 0xCC, 0xFB, 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, 0xCA, 0xFA, 0x00, 0x46, 0xC9, + 0xFA, 0x00, 0x45, 0xC8, 0xFA, 0x00, 0x43, 0xC7, 0xFA, 0x00, 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, 0x00, 0x40, + 0xC4, 0xF9, 0x00, 0x3F, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x3B, 0xC0, 0xF8, 0x00, + 0x3A, 0xC0, 0xF8, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, 0x00, 0x36, 0xBF, 0xF8, 0x00, 0x34, 0xBD, 0xF7, + 0x00, 0x31, 0xBC, 0xF7, 0x00, 0x33, 0xBB, 0xF8, 0x00, 0x35, 0xBA, 0xF9, 0x00, 0x2C, 0xBC, 0xFF, 0x00, 0x60, 0xC2, + 0xDE, 0x00, 0x93, 0xCB, 0x84, 0x00, 0xC5, 0xD4, 0x2A, 0x00, 0xCA, 0xD7, 0x2E, 0x00, 0xB0, 0xBA, 0x12, 0x00, 0xB4, + 0xBE, 0x16, 0x00, 0xB8, 0xC2, 0x1A, 0x00, 0xC6, 0xC8, 0x25, 0x00, 0xC4, 0xBE, 0x20, 0x00, 0xDA, 0xC8, 0x16, 0x00, + 0xC9, 0xC8, 0x18, 0x00, 0xDB, 0xD7, 0x21, 0x00, 0xDD, 0xD6, 0x1A, 0x00, 0xB7, 0xBC, 0x0D, 0x00, 0xC7, 0xBD, 0x03, + 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xAC, 0xC9, 0x50, 0x00, 0x6B, 0xB8, 0xB0, 0x00, 0x04, 0xA3, 0xFF, 0x00, 0x12, 0xA3, + 0xFA, 0x00, 0x21, 0xA4, 0xF4, 0x00, 0x1D, 0xA2, 0xF5, 0x00, 0x19, 0xA1, 0xF5, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, + 0xA0, 0xF6, 0x00, 0x16, 0x9F, 0xF7, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF7, 0x00, + 0x13, 0x9C, 0xF6, 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x99, 0xF4, 0x00, 0x0E, 0x97, 0xF2, 0x00, 0x0E, 0x97, 0xF2, + 0x00, 0x5C, 0xD4, 0xF8, 0x00, 0x57, 0xD3, 0xF8, 0x00, 0x53, 0xD1, 0xF8, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCE, + 0xF9, 0x00, 0x4D, 0xCE, 0xF9, 0x00, 0x4B, 0xCD, 0xF9, 0x00, 0x4A, 0xCC, 0xFA, 0x00, 0x48, 0xCB, 0xFA, 0x00, 0x47, + 0xCA, 0xFA, 0x00, 0x46, 0xCA, 0xFA, 0x00, 0x45, 0xC9, 0xF9, 0x00, 0x44, 0xC8, 0xF9, 0x00, 0x43, 0xC7, 0xF9, 0x00, + 0x42, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, + 0x00, 0x3C, 0xC1, 0xF9, 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x39, 0xBF, 0xF8, 0x00, 0x38, 0xBF, 0xF8, 0x00, 0x37, 0xBF, + 0xF8, 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBD, 0xF5, 0x00, 0x34, 0xBB, 0xF3, 0x00, 0x34, 0xB9, 0xF7, 0x00, 0x34, + 0xB7, 0xFA, 0x00, 0x22, 0xB5, 0xFF, 0x00, 0x2E, 0xB4, 0xFE, 0x00, 0x4D, 0xB9, 0xE6, 0x00, 0x6B, 0xBF, 0xCD, 0x00, + 0x27, 0xB1, 0xC5, 0x00, 0x6C, 0xBB, 0x7C, 0x00, 0x89, 0xBD, 0x48, 0x00, 0xA6, 0xBE, 0x15, 0x00, 0xB9, 0xBF, 0x08, + 0x00, 0xCB, 0xBF, 0x00, 0x00, 0xDA, 0xC4, 0x3D, 0x00, 0xBA, 0xCA, 0x20, 0x00, 0xAD, 0xC6, 0x3E, 0x00, 0x99, 0xBB, + 0x53, 0x00, 0x59, 0xAC, 0x8A, 0x00, 0x35, 0xAA, 0xC3, 0x00, 0x03, 0xB3, 0xFF, 0x00, 0x15, 0xA6, 0xFF, 0x00, 0x20, + 0xA4, 0xFF, 0x00, 0x19, 0xA0, 0xFA, 0x00, 0x1B, 0xA2, 0xF9, 0x00, 0x1C, 0xA4, 0xF8, 0x00, 0x1B, 0xA2, 0xF7, 0x00, + 0x19, 0xA1, 0xF6, 0x00, 0x18, 0xA0, 0xF6, 0x00, 0x17, 0xA0, 0xF7, 0x00, 0x16, 0x9F, 0xF7, 0x00, 0x15, 0x9F, 0xF7, + 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x14, 0x9D, 0xF6, 0x00, 0x13, 0x9C, 0xF6, 0x00, 0x12, 0x9B, 0xF6, 0x00, 0x10, 0x9A, + 0xF4, 0x00, 0x0F, 0x98, 0xF3, 0x00, 0x0F, 0x98, 0xF3, 0x00, 0x53, 0xD2, 0xF6, 0x00, 0x52, 0xD1, 0xF7, 0x00, 0x51, + 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF8, 0x00, 0x4E, 0xCE, 0xF9, 0x00, 0x4C, 0xCE, 0xF9, 0x00, 0x4A, 0xCD, 0xF9, 0x00, + 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF9, 0x00, 0x46, 0xCA, 0xF9, 0x00, 0x45, 0xC9, 0xF9, 0x00, 0x44, 0xC8, 0xF9, + 0x00, 0x43, 0xC8, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x41, 0xC5, 0xF9, 0x00, 0x40, 0xC4, + 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3D, 0xC2, 0xF9, 0x00, 0x3B, 0xC1, 0xF9, 0x00, 0x3A, 0xC0, 0xF9, 0x00, 0x38, + 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF8, 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBE, 0xF8, 0x00, 0x36, 0xBC, 0xF4, 0x00, + 0x37, 0xBA, 0xEF, 0x00, 0x35, 0xB7, 0xF5, 0x00, 0x34, 0xB5, 0xFC, 0x00, 0x2B, 0xB5, 0xF8, 0x00, 0x22, 0xB6, 0xF5, + 0x00, 0x25, 0xB5, 0xFA, 0x00, 0x28, 0xB3, 0xFF, 0x00, 0x28, 0xB5, 0xFF, 0x00, 0x28, 0xB7, 0xFF, 0x00, 0x1E, 0xB4, + 0xFF, 0x00, 0x14, 0xB2, 0xFE, 0x00, 0x20, 0xAD, 0xF6, 0x00, 0x3C, 0xB9, 0xFE, 0x00, 0x5A, 0xCB, 0xF0, 0x00, 0x41, + 0xBE, 0xFA, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x11, 0xAD, 0xFE, 0x00, 0x17, 0xAC, 0xFC, 0x00, 0x1D, 0xAB, 0xFA, 0x00, + 0x1D, 0xA9, 0xFD, 0x00, 0x1D, 0xA7, 0xFF, 0x00, 0x1B, 0xA7, 0xFA, 0x00, 0x18, 0xA8, 0xF4, 0x00, 0x18, 0xA6, 0xF8, + 0x00, 0x17, 0xA4, 0xFC, 0x00, 0x19, 0xA2, 0xFA, 0x00, 0x1A, 0xA1, 0xF7, 0x00, 0x19, 0xA0, 0xF7, 0x00, 0x17, 0xA0, + 0xF7, 0x00, 0x16, 0x9F, 0xF7, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x13, + 0x9C, 0xF6, 0x00, 0x12, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF4, 0x00, 0x10, 0x99, 0xF3, 0x00, 0x10, 0x99, 0xF3, 0x00, + 0x54, 0xD1, 0xF7, 0x00, 0x52, 0xD0, 0xF8, 0x00, 0x51, 0xD0, 0xF8, 0x00, 0x4F, 0xCF, 0xF9, 0x00, 0x4E, 0xCF, 0xF9, + 0x00, 0x4B, 0xCE, 0xF9, 0x00, 0x49, 0xCD, 0xF9, 0x00, 0x47, 0xCC, 0xF9, 0x00, 0x45, 0xCA, 0xF8, 0x00, 0x44, 0xCA, + 0xF8, 0x00, 0x44, 0xC9, 0xF8, 0x00, 0x43, 0xC8, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x42, 0xC7, 0xF9, 0x00, 0x41, + 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, + 0x3B, 0xC1, 0xF9, 0x00, 0x39, 0xC0, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF8, 0x00, 0x35, 0xBE, 0xF8, + 0x00, 0x34, 0xBD, 0xF8, 0x00, 0x34, 0xBC, 0xF6, 0x00, 0x35, 0xBA, 0xF4, 0x00, 0x34, 0xB8, 0xF8, 0x00, 0x33, 0xB6, + 0xFB, 0x00, 0x2D, 0xB6, 0xF9, 0x00, 0x28, 0xB6, 0xF6, 0x00, 0x29, 0xB5, 0xF8, 0x00, 0x29, 0xB4, 0xFA, 0x00, 0x29, + 0xB4, 0xFB, 0x00, 0x29, 0xB5, 0xFC, 0x00, 0x29, 0xB2, 0xF5, 0x00, 0x29, 0xAF, 0xEF, 0x00, 0x1A, 0xA9, 0xF5, 0x00, + 0x9A, 0xCE, 0xD9, 0x00, 0x6C, 0xCF, 0xE8, 0x00, 0x73, 0xC6, 0xE3, 0x00, 0x7F, 0xC9, 0xDD, 0x00, 0x18, 0xAD, 0xFB, + 0x00, 0x1B, 0xAC, 0xF9, 0x00, 0x1F, 0xAB, 0xF7, 0x00, 0x1E, 0xA9, 0xF9, 0x00, 0x1D, 0xA7, 0xFB, 0x00, 0x1C, 0xA7, + 0xF8, 0x00, 0x1A, 0xA6, 0xF6, 0x00, 0x19, 0xA5, 0xF8, 0x00, 0x19, 0xA3, 0xFA, 0x00, 0x1A, 0xA2, 0xF9, 0x00, 0x1A, + 0xA1, 0xF8, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF7, 0x00, 0x15, 0x9F, 0xF7, 0x00, + 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, 0x00, 0x11, 0x9B, 0xF5, 0x00, 0x11, 0x9A, 0xF5, + 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x10, 0x9A, 0xF4, 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, + 0xF9, 0x00, 0x4F, 0xCF, 0xFA, 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, + 0xCB, 0xF8, 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, 0x00, + 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, + 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, + 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, + 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, + 0x2C, 0xB5, 0xF6, 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x29, 0xB2, 0xF9, + 0x00, 0x28, 0xB2, 0xFB, 0x00, 0x30, 0xB2, 0xF6, 0x00, 0x11, 0xA8, 0xFD, 0x00, 0x7E, 0xD3, 0xE1, 0x00, 0x58, 0xBB, + 0xE6, 0x00, 0x15, 0xAA, 0xFB, 0x00, 0x1F, 0xAD, 0xF7, 0x00, 0x1F, 0xAB, 0xF6, 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, + 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, + 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, + 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, + 0xF6, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x54, + 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, 0x00, 0x4D, 0xCF, 0xFA, 0x00, + 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, + 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, + 0xF9, 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, + 0xC1, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, 0x00, + 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, 0x00, 0x31, 0xB7, 0xFB, + 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, + 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF8, 0x00, 0x29, 0xB1, 0xFA, 0x00, 0x2D, 0xB5, 0xF4, 0x00, 0x1D, + 0xB4, 0xF5, 0x00, 0x23, 0x9B, 0xFF, 0x00, 0x1F, 0xB5, 0xF2, 0x00, 0x0B, 0xAB, 0xFB, 0x00, 0x1E, 0xAC, 0xF6, 0x00, + 0x1F, 0xAB, 0xF6, 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, + 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, 0x00, 0x1A, 0xA1, + 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, + 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, + 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x54, 0xD0, 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, + 0x00, 0x4F, 0xCF, 0xFA, 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, + 0xF8, 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, 0x00, 0x42, + 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, 0x00, + 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, + 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, 0x00, 0x33, 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, + 0xF9, 0x00, 0x32, 0xB9, 0xFA, 0x00, 0x31, 0xB7, 0xFB, 0x00, 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, + 0xB5, 0xF6, 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, 0x00, + 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, 0xFA, 0x00, 0x1E, 0xAD, 0xF6, 0x00, 0x23, 0xAE, 0xF3, + 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, 0xAA, 0xF5, 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, + 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, 0x00, 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, + 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, 0x00, 0x1A, 0xA1, 0xF9, 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, + 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, + 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x54, 0xD0, + 0xF9, 0x00, 0x52, 0xCF, 0xF9, 0x00, 0x51, 0xCF, 0xF9, 0x00, 0x4F, 0xCF, 0xFA, 0x00, 0x4D, 0xCF, 0xFA, 0x00, 0x4A, + 0xCE, 0xF9, 0x00, 0x48, 0xCC, 0xF9, 0x00, 0x46, 0xCB, 0xF8, 0x00, 0x43, 0xCA, 0xF8, 0x00, 0x43, 0xC9, 0xF8, 0x00, + 0x43, 0xC9, 0xF8, 0x00, 0x42, 0xC8, 0xF8, 0x00, 0x42, 0xC7, 0xF8, 0x00, 0x41, 0xC7, 0xF8, 0x00, 0x41, 0xC6, 0xF9, + 0x00, 0x40, 0xC5, 0xF9, 0x00, 0x40, 0xC4, 0xF9, 0x00, 0x3E, 0xC3, 0xF9, 0x00, 0x3C, 0xC2, 0xF9, 0x00, 0x3A, 0xC1, + 0xF9, 0x00, 0x38, 0xBF, 0xF9, 0x00, 0x37, 0xBF, 0xF9, 0x00, 0x36, 0xBE, 0xF9, 0x00, 0x34, 0xBE, 0xF8, 0x00, 0x33, + 0xBD, 0xF8, 0x00, 0x33, 0xBC, 0xF9, 0x00, 0x32, 0xBA, 0xF9, 0x00, 0x32, 0xB9, 0xFA, 0x00, 0x31, 0xB7, 0xFB, 0x00, + 0x30, 0xB6, 0xF9, 0x00, 0x2E, 0xB6, 0xF8, 0x00, 0x2C, 0xB5, 0xF6, 0x00, 0x2A, 0xB4, 0xF4, 0x00, 0x2A, 0xB3, 0xF5, + 0x00, 0x2A, 0xB2, 0xF6, 0x00, 0x2A, 0xB2, 0xF7, 0x00, 0x2A, 0xB1, 0xF8, 0x00, 0x21, 0xAE, 0xF9, 0x00, 0x18, 0xAC, + 0xFA, 0x00, 0x1E, 0xAD, 0xF6, 0x00, 0x23, 0xAE, 0xF3, 0x00, 0x20, 0xAC, 0xF4, 0x00, 0x1D, 0xAB, 0xF5, 0x00, 0x1E, + 0xAA, 0xF5, 0x00, 0x20, 0xAA, 0xF5, 0x00, 0x1F, 0xA9, 0xF6, 0x00, 0x1E, 0xA7, 0xF6, 0x00, 0x1D, 0xA6, 0xF7, 0x00, + 0x1B, 0xA5, 0xF8, 0x00, 0x1B, 0xA4, 0xF8, 0x00, 0x1B, 0xA3, 0xF8, 0x00, 0x1B, 0xA2, 0xF8, 0x00, 0x1A, 0xA1, 0xF9, + 0x00, 0x19, 0xA1, 0xF8, 0x00, 0x18, 0xA0, 0xF8, 0x00, 0x16, 0x9F, 0xF8, 0x00, 0x15, 0x9F, 0xF7, 0x00, 0x14, 0x9E, + 0xF7, 0x00, 0x13, 0x9D, 0xF6, 0x00, 0x12, 0x9C, 0xF6, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, 0x00, 0x11, + 0x9A, 0xF5, 0x00, 0x11, 0x9A, 0xF5, ]; const CONVERTED_TO_BGRX_WITH_PARTIALLY_COVERED_RECTANGLE_BUFFER: [u8; 64 * 64 * 4] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, - 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, - 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, - 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, - 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, - 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, - 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, - 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, - 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, - 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, - 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, - 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, - 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, - 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, - 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, - 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, - 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, - 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, - 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, - 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, - 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, - 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, - 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, - 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, - 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, - 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, - 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, - 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, - 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, - 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, - 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, - 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, - 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, - 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, - 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, - 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, - 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, - 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, - 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, - 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, - 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, - 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, - 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, - 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, - 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, - 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, - 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, - 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, - 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, - 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, - 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, - 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, - 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, - 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, - 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, - 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, - 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, - 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, - 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, - 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, - 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, - 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, - 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, - 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, - 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, - 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, - 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, - 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, - 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, - 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, - 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, - 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, - 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, - 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, - 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, - 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, - 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, - 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, - 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, - 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, - 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, - 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, - 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, - 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, - 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, - 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, - 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, - 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, - 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, - 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, - 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, - 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, - 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, - 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, - 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, - 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, - 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, - 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, - 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, - 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, - 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, - 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, - 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, - 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, - 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, - 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, - 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, - 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, - 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, - 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, - 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, - 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, - 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, + 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, + 0x4F, 0xF1, 0xFF, 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, 0x37, 0x8B, 0xF9, + 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, + 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, + 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, + 0xE3, 0x98, 0x1E, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, + 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, 0xEE, 0xAF, 0x28, 0xFF, + 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, + 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, + 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, + 0x98, 0xF8, 0xFF, 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, 0x62, 0x6C, 0xBE, + 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, + 0xFF, 0xF1, 0xAE, 0x34, 0xFF, 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, + 0xEC, 0xFF, 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, 0x3E, + 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, 0x4C, 0xA1, 0xFA, 0xFF, + 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, + 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, + 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, + 0x97, 0x25, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xB0, + 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, 0xF8, 0xB6, 0x22, 0xFF, 0x44, + 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, + 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, + 0xFF, 0x53, 0xAE, 0xF8, 0xFF, 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, + 0xFA, 0xFF, 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, 0x50, + 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, 0xEF, 0xA5, 0x1A, 0xFF, + 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, + 0xEF, 0xB1, 0x34, 0xFF, 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, + 0xFF, 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, 0x4C, 0xB4, + 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, 0x60, 0xB7, 0xFA, 0xFF, 0x64, + 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, + 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, + 0xFF, 0x6E, 0x94, 0xDF, 0xFF, 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, + 0x4A, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xB6, 0x39, + 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, + 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, + 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, + 0x69, 0xC3, 0xF9, 0xFF, 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, + 0xFF, 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, 0x6C, 0xB4, + 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, 0xF3, 0xA1, 0x13, 0xFF, 0xEF, + 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, + 0xB3, 0x32, 0xFF, 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, 0x5A, 0xBB, 0xF8, + 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, + 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, + 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, + 0xDB, 0xAB, 0x47, 0xFF, 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xB8, 0x3C, 0xFF, + 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, + 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, + 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, + 0xD5, 0xFA, 0xFF, 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, 0x8F, 0xCF, 0xFB, + 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, + 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, + 0x50, 0xFF, 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, 0x3C, + 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, 0x65, 0xBF, 0xF9, 0xFF, + 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, + 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, + 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, + 0x9F, 0x11, 0xFF, 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, + 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, + 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, + 0xFF, 0x65, 0xBC, 0xF8, 0xFF, 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, + 0xF9, 0xFF, 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, 0x62, + 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, 0xAB, 0xE5, 0xF7, 0xFF, + 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, + 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, + 0xFF, 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, 0x49, 0xA5, + 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, + 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, + 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, + 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, + 0x15, 0xFF, 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, + 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, + 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, + 0x78, 0xC9, 0xFA, 0xFF, 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, + 0xFF, 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, 0x6E, 0xCB, + 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, + 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, + 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, 0x57, 0xB6, 0xF7, + 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, + 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, + 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, + 0xD7, 0xF8, 0xFC, 0xFF, 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, + 0xFF, 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, + 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, + 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, + 0xDB, 0xFB, 0xFF, 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, 0xCA, 0xFA, 0xFF, + 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, + 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, + 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, 0x38, + 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, 0xAE, 0xD7, 0xF7, 0xFF, + 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, + 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, + 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, + 0xFC, 0xFC, 0xFF, 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, + 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, + 0xFF, 0x72, 0xC2, 0xFF, 0xFF, 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, + 0xFF, 0xFF, 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0xCD, + 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, 0xDD, 0xF5, 0xFB, 0xFF, + 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, + 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, + 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp/src/codecs/rfx/quantization.rs index 36267514..da66e8c0 100644 --- a/ironrdp/src/codecs/rfx/quantization.rs +++ b/ironrdp/src/codecs/rfx/quantization.rs @@ -9,8 +9,7 @@ const SECOND_LEVEL_SUBBANDS_COUNT: usize = 3; pub fn decode(buffer: &mut [i16], quant: &Quant) { let (first_level, buffer) = buffer.split_at_mut(FISRT_LEVEL_SUBBANDS_COUNT * FIRST_LEVEL_SIZE); - let (second_level, third_level) = - buffer.split_at_mut(SECOND_LEVEL_SUBBANDS_COUNT * SECOND_LEVEL_SIZE); + let (second_level, third_level) = buffer.split_at_mut(SECOND_LEVEL_SUBBANDS_COUNT * SECOND_LEVEL_SIZE); let decode_chunk = |a: (&mut [i16], u8)| decode_block(a.0, a.1 as i16 - 1); @@ -85,318 +84,262 @@ mod tests { } const QUANTIZIED_BUFFER: [i16; 4096] = [ - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, -5, -1, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, 4, 4, -5, -1, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, - 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, 0, 1, 3, -1, 5, 0, -1, 0, 0, 0, 0, 0, -2, -2, -3, - 0, 0, 0, 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, - -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 6, -2, -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 5, 2, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, -1, 0, -1, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, 1, 2, -1, 0, -5, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -2, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, - 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, -1, 0, 0, - 0, 0, -1, 7, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 1, 0, 0, 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -6, 0, 0, 0, 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 6, -8, -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1, -2, 5, - -3, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, -3, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, -1, -1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, 0, -1, 3, - -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, 0, - 0, -1, -2, -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, - 0, 0, 0, 0, 1, 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, - 0, -1, 6, -1, 1, -6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, -1, 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -3, -5, 0, 1, 0, 0, 8, -1, -7, -9, -7, -2, 6, 3, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, - 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, -4, -5, -8, -6, -4, 1, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, -1, -1, 1, 0, 0, 0, - 0, 0, -1, 4, -2, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, -3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, - 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - -1, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, - 0, 0, 0, 1, -4, -1, 0, 0, 1, -5, -2, 1, 1, 1, 6, -2, -1, 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, - 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, 8, -1, 0, 3, 1, -18, 16, 1, -1, 2, 0, -4, - -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, 0, -5, -2, 3, -1, 11, -8, - -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, -3, -1, -1, -2, -14, - 0, 1, 0, 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, 11, -16, -2, 2, - -1, 1, 0, -9, 0, -1, 19, 1, 1, 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, -1, 0, -2, - -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, 0, -5, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, - 0, 0, 0, 0, 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, - -1, 3, 0, 0, 1, -3, -3, -3, 3, -4, 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, - 0, 0, -1, 2, 7, -1, 0, 3, -2, 1, 0, 4, -1, 0, 1, 0, 1, -3, 2, -9, -12, -19, 10, -1, 2, 0, - -1, 1, 9, -13, 0, 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, -2, -1, 2, -1, 0, 0, 0, 1, 1, - 0, 0, 4, -3, -17, -14, 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, 13, 15, 9, - -2, 0, 2, -3, 2, 2, -2, 2, 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, - 0, 0, 0, 0, -1, 1, 0, -3, 17, 8, -1, 4, 8, -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, - 0, 0, -2, -2, 2, 0, 0, 5, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, -2, -6, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, -4, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, - -1, 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 1, -1, -3, 3, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, 3, 1, 2, -1, 0, 0, 0, -2, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 2, 0, -1, 1, - 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, 2, 1, -1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, 3, 0, -1, -6, - 0, 4, 5, -13, -53, -3, -2, 0, -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, 7, -5, -13, - 2, -2, 5, -54, 10, -2, 30, 3, -46, 11, -9, -1, -2, 1, -18, -2, 8, -3, 3, -5, -4, -1, -5, - -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, -1, -3, 3, 7, -14, -13, 10, 0, -1, 11, 2, 5, 2, 12, 0, - -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, 9, 12, -6, -18, 5, 1, -3, -4, - -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, -1, - -1, -1, -7, 3, 4, 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, - -2, -23, 2, 2, 3, -4, 22, -4, 5, -4, -2, -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, - 1, 0, 0, 6, 1, -4, 2, 0, -1, 0, -1, -15, -12, -12, -19, -23, 27, 14, 3, 37, 11, -12, -15, - -16, 29, 25, 46, 103, 86, 43, 26, 11, 38, 31, 56, 86, 63, 128, 115, 27, 72, -31, 54, 125, - 9, 97, 67, 10, 67, -34, 60, 85, 102, 107, 113, 6, 21, -10, 10, -16, 126, 108, 85, -10, 59, - 52, 39, 30, 35, 53, 15, -3, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, + -5, -1, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, 4, 4, -5, -1, + 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, 0, 1, 3, -1, 5, 0, -1, 0, 0, + 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, + -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, + 0, 0, 0, 6, -2, -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, + 5, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, -1, 0, -1, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, 1, 2, -1, 0, -5, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, + 0, -1, -2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, 0, -8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, -1, 7, -1, 0, 0, 0, + -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, + 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, + 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 6, -8, -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1, -2, 5, -3, 2, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, 1, 0, 0, 1, 1, 0, 0, + 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 0, 0, 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, -1, -1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, + 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, + 0, -1, 3, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, + 0, 0, -1, -2, -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, 0, 0, 0, 0, 1, + 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, -1, 6, -1, 1, -6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, + -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, -1, 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -3, -5, 0, 1, 0, 0, 8, -1, -7, -9, -7, -2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, -1, -1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, -4, -5, -8, -6, -4, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, -1, -1, 1, 0, 0, 0, 0, 0, -1, 4, -2, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, 0, 0, 0, 1, -4, -1, 0, 0, 1, -5, -2, 1, + 1, 1, 6, -2, -1, 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, 8, -1, 0, 3, + 1, -18, 16, 1, -1, 2, 0, -4, -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, 0, -5, -2, 3, + -1, 11, -8, -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, -3, -1, -1, -2, -14, 0, 1, 0, + 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, 11, -16, -2, 2, -1, 1, 0, -9, 0, -1, 19, 1, 1, + 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, -1, 0, -2, -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, + 0, -5, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, + 0, 0, 0, 0, 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, -1, 3, 0, 0, 1, -3, + -3, -3, 3, -4, 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, 0, 0, -1, 2, 7, -1, 0, 3, -2, 1, 0, 4, + -1, 0, 1, 0, 1, -3, 2, -9, -12, -19, 10, -1, 2, 0, -1, 1, 9, -13, 0, 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, + -2, -1, 2, -1, 0, 0, 0, 1, 1, 0, 0, 4, -3, -17, -14, 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, + 13, 15, 9, -2, 0, 2, -3, 2, 2, -2, 2, 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, 0, 0, 0, + 0, -1, 1, 0, -3, 17, 8, -1, 4, 8, -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -2, -2, 2, 0, 0, 5, -1, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, -2, -6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, -4, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, -1, + 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -3, 3, 0, 0, 0, + -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, 3, 1, 2, -1, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 2, 0, -1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, + 2, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, 3, 0, -1, -6, 0, 4, 5, -13, -53, -3, -2, 0, + -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, 7, -5, -13, 2, -2, 5, -54, 10, -2, 30, 3, -46, 11, -9, -1, + -2, 1, -18, -2, 8, -3, 3, -5, -4, -1, -5, -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, -1, -3, 3, 7, -14, -13, 10, 0, + -1, 11, 2, 5, 2, 12, 0, -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, 9, 12, -6, -18, 5, 1, -3, + -4, -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, -1, -1, -1, -7, 3, 4, + 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, -2, -23, 2, 2, 3, -4, 22, -4, 5, -4, -2, + -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, 1, 0, 0, 6, 1, -4, 2, 0, -1, 0, -1, -15, -12, -12, -19, -23, + 27, 14, 3, 37, 11, -12, -15, -16, 29, 25, 46, 103, 86, 43, 26, 11, 38, 31, 56, 86, 63, 128, 115, 27, 72, -31, + 54, 125, 9, 97, 67, 10, 67, -34, 60, 85, 102, 107, 113, 6, 21, -10, 10, -16, 126, 108, 85, -10, 59, 52, 39, 30, + 35, 53, 15, -3, ]; const DEQUANTIZED_BUFFER: [i16; 4096] = [ - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 128, 0, -256, 512, -640, -128, 0, 0, 0, 0, - 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 384, 0, 0, 0, 0, 0, 0, -128, 512, - 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, 640, 0, 0, 0, 0, 0, 0, 256, 128, 0, 256, -640, - -512, 128, 0, 0, 0, 0, 0, 0, 128, 384, -128, 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, - 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, - 0, 0, 0, 0, 0, -384, 128, 640, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 896, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, -256, 0, 0, 0, 0, 0, 128, 0, -1152, -384, - 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, - 0, 0, 0, 768, -256, -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, - -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, 256, 384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 256, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, 0, -128, 896, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, 0, - 128, 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, -512, 0, 0, 0, 0, 0, -128, - -768, 128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, -128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 1280, 0, 0, 0, - -128, 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - -640, -640, 384, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, - -128, 0, 0, 0, 0, 0, 0, 384, -128, -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, - 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 256, 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, - 0, 768, -128, 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, -384, -128, - 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, -256, 0, - -128, 0, 0, 0, 0, 128, -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, - -128, -1280, 384, 128, 256, 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, - 0, 0, 0, 384, -256, 0, 0, 0, 0, 0, 768, -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, - 128, 128, 128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 128, 0, 0, 0, 0, 0, 384, 256, 0, - 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, -256, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, - 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, - -128, -128, 0, 0, 128, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, -128, 0, 0, -128, -128, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, -128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, -256, - -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, - 0, 0, 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 128, 384, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, -640, -384, - -512, -768, -768, 896, 128, 128, -128, 0, 0, 0, 0, 0, 0, 0, -128, -256, -384, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, 256, -128, 0, -256, -384, 128, 128, -1024, 768, 0, -128, 128, 0, - 0, 0, 0, 128, 128, 0, 0, 768, -384, -128, 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, - 0, 256, 896, -768, -128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, - 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, 0, -128, 768, -128, 128, -768, 896, 0, 0, 0, 0, 0, 0, - 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -256, - 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 256, -128, -128, 896, -1024, 0, 128, -256, -512, -384, -128, 128, -384, - -512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, -384, -640, 0, 128, 0, 0, - 1024, -128, -896, -1152, -896, -256, 768, 384, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, -128, - -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, 0, 0, 128, -128, - 0, 0, 0, 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -128, 128, -128, 0, 0, 0, 0, 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 256, 128, -512, -640, - -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, - -256, -128, 128, -128, 128, -128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, -128, 128, 128, 0, 128, 0, -128, - 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, - 128, 128, 128, 0, -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -128, 512, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, 0, 0, - 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, - 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 256, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 0, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, -64, 0, -320, 192, -128, 64, 0, -64, - 0, 0, 0, 0, 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, 0, 64, -256, - 1344, 384, 0, 0, -320, -64, 64, 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, - -128, 512, -64, 0, 192, 64, -1152, 1024, 64, -64, 128, 0, -256, -256, 0, 0, -384, 64, -192, - -64, 64, 896, -1472, 64, 0, 64, 0, 64, -192, -64, 0, 0, 0, -320, -128, 192, -64, 704, -512, - -192, 0, 64, 0, -64, -192, 64, 0, 896, 64, 0, -64, 0, 0, -960, -128, 448, 64, -64, 64, - -192, -64, -64, -128, -896, 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, 64, - -64, 192, -896, 64, -128, 128, -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, - 64, 64, 64, 0, 128, 128, 512, 0, 0, 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, - 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, -64, 128, 0, 0, 64, 0, -320, 0, 0, -64, 0, 0, 64, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, 64, 256, 256, -128, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -64, - 64, 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, - 0, 64, -64, 64, 0, 64, -512, -64, 0, 0, 64, -192, 0, 0, -64, 192, 0, 0, 64, -192, -192, - -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, 192, -64, 64, 64, 0, 64, -320, 1280, 0, 0, - 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, 0, 64, -192, 128, -576, -768, - -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, -832, 0, 0, 1024, -448, 0, - 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, -192, -1088, -896, 128, - -256, -896, -64, 0, -64, 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, 832, 960, 576, -128, - 0, 128, -192, 128, 128, -128, 128, 64, -64, 64, 0, 0, -128, 320, 448, -64, 0, 64, 256, - -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, -192, 1088, 512, -64, 256, 512, - -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, 0, 320, - -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -448, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, - -512, -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, 0, - 0, 128, 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, -128, -128, -128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, - -256, 0, 0, -128, 384, 128, 256, -128, 0, 0, 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 0, 128, 128, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, -128, 128, 0, 0, 0, - 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 128, -256, 128, -128, -128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, - -64, 32, 0, -32, -64, 0, -32, 256, 192, 96, 0, -32, -192, 0, 128, 160, -416, -1696, -96, - -64, 0, -64, -480, -224, 800, 256, 96, 224, -800, 832, -384, 160, 640, 192, 224, -160, - -416, 64, -64, 160, -1728, 320, -64, 960, 96, -1472, 352, -288, -32, -64, 32, -576, -64, - 256, -96, 96, -160, -128, -32, -160, -64, -96, 0, 32, -320, -96, 32, -32, 32, -160, -32, - -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, -256, 768, -672, -1568, - -128, 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, -192, -576, 160, 32, - -96, -128, -32, 416, 672, 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, -448, -608, -224, - 32, -32, -32, -96, -64, 0, 0, -32, -32, -32, -224, 96, 128, 224, -32, -192, -448, -32, - -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, -672, 800, -128, -64, -736, 64, 64, 96, - -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, 224, 160, 96, 32, - -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, - 448, 96, 1184, 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, - 992, 1792, 2752, 2016, 4096, 3680, 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, - -1088, 1920, 2720, 3264, 3424, 3616, 192, 672, -320, 320, -512, 4032, 3456, 2720, -320, - 1888, 1664, 1248, 960, 1120, 1696, 480, -96, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, -128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 256, + 0, 0, 0, 0, 0, 0, 0, 128, 0, -256, 512, -640, -128, 0, 0, 0, 0, 0, 0, -128, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -384, 0, 384, 0, 0, 0, 0, 0, 0, -128, 512, 512, -640, -128, 0, 0, 0, 0, 0, 0, -256, 640, 0, 0, 0, 0, 0, 0, 256, + 128, 0, 256, -640, -512, 128, 0, 0, 0, 0, 0, 0, 128, 384, -128, 640, 0, -128, 0, 0, 0, 0, 0, -256, -256, -384, + 0, 0, 0, 0, 0, 384, 0, 0, 896, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 256, -128, 0, 0, 0, 0, 0, -384, + 128, 640, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 256, 0, + 0, 0, -256, 0, 0, 0, 0, 0, 128, 0, -1152, -384, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, + 0, -128, -128, -128, 0, 0, 0, 0, 0, 0, 768, -256, -1024, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, + 0, 0, -384, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 640, 256, 384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 256, 0, 0, 0, 0, + 0, 0, -128, 128, 0, 0, -128, 256, 0, 0, 128, 0, 0, -128, 0, -128, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, + -256, 0, 0, 0, 0, 0, 384, -128, 0, -128, 0, 128, 0, 0, 0, 128, 256, -128, 0, -640, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -384, -512, 0, 0, 0, 0, 0, -128, -768, 128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 768, 0, -128, 0, 128, 0, 0, 128, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, 128, 1280, 0, 0, 0, + -128, 128, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -640, -640, 384, 0, + 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, -128, -256, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 384, -128, + -896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -768, 0, 0, 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 256, + 512, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 768, -128, 0, 0, 0, 0, -128, 896, -128, 0, 0, 0, -128, -128, 0, 0, 0, 0, + 0, -384, -128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 128, 0, 0, 0, 0, 0, 512, 128, 256, -256, -256, 0, -128, + 0, 0, 0, 0, 128, -128, -896, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, -128, -1280, 384, 128, + 256, 0, -256, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 384, -256, 0, 0, 0, 0, 0, 768, + -1024, -256, 0, -256, 128, 0, 0, -128, -128, -128, 128, 128, 128, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 128, + 0, 0, 0, 0, 0, 384, 256, 0, 128, 0, 0, 128, 128, 0, 0, 128, -256, 640, -384, 256, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, -384, 0, 128, 0, 0, 128, 128, 0, 0, 0, 0, + 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, -128, 0, 0, 128, 0, 0, 0, + 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 128, 128, 128, -256, 0, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -256, 128, 128, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + -128, -128, 0, 0, -128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, + -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, -256, -1024, 256, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 128, 0, -256, 512, 512, -128, 0, 0, 0, 0, 0, 0, -128, 384, -128, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 384, 384, -896, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 768, 384, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 128, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, -256, -256, 256, -128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, 0, + 128, 128, 384, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, + -640, -384, -512, -768, -768, 896, 128, 128, -128, 0, 0, 0, 0, 0, 0, 0, -128, -256, -384, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 0, 256, -128, 0, -256, -384, 128, 128, -1024, 768, 0, -128, 128, 0, 0, 0, 0, 128, 128, 0, 0, + 768, -384, -128, 0, 0, 0, 0, 0, -128, 640, 256, -768, -256, 0, 0, 0, 256, 896, -768, -128, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, -128, -128, 128, 768, 0, 0, 0, 0, 0, 0, -256, 128, 0, 0, 0, 0, 0, 0, 0, -128, 768, -128, 128, + -768, 896, 0, 0, 0, 0, 0, 0, 0, 0, 128, -128, -128, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -128, -256, 0, -1024, 768, 768, 512, 384, 384, 512, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 256, -128, -128, 896, -1024, 0, 128, -256, -512, -384, -128, 128, -384, -512, 128, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 128, -384, -640, 0, 128, 0, 0, 1024, -128, -896, -1152, -896, -256, 768, 384, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 0, 0, -128, -128, 0, 0, 0, 0, 0, 128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, 0, 0, 0, 0, 0, -128, 128, 0, 0, 128, -128, 0, + 0, 0, 0, -128, 128, -128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 128, -128, + 0, 0, 0, 0, 0, 0, 128, 128, 384, 384, 0, 128, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 128, 0, 0, 0, 128, 0, 0, 0, 256, 128, -512, -640, -1024, -768, -512, 128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 384, -1152, -640, 1280, 256, 256, 0, -128, 256, 768, -512, -128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 256, -128, -128, 128, 0, 0, 0, 0, 0, -128, 512, -256, + -128, 128, -128, 128, -128, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, -128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -128, -128, 0, -128, 128, 128, 0, 128, 0, -128, 384, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -128, -128, -128, 128, 128, 128, 0, -256, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 512, 256, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, -256, 256, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, -256, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 256, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, + 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 512, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 256, -256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, -64, 0, 0, -64, -64, 0, -320, 192, -128, 64, 0, -64, 0, 0, 0, 0, + 64, -256, -64, 0, 0, 64, -320, -128, 64, 64, 64, 384, -128, -64, 0, 64, -256, 1344, 384, 0, 0, -320, -64, 64, + 128, 256, 256, 192, 320, 0, 0, -64, 256, -512, -704, 0, 0, -128, 512, -64, 0, 192, 64, -1152, 1024, 64, -64, + 128, 0, -256, -256, 0, 0, -384, 64, -192, -64, 64, 896, -1472, 64, 0, 64, 0, 64, -192, -64, 0, 0, 0, -320, + -128, 192, -64, 704, -512, -192, 0, 64, 0, -64, -192, 64, 0, 896, 64, 0, -64, 0, 0, -960, -128, 448, 64, -64, + 64, -192, -64, -64, -128, -896, 0, 64, 0, 0, 320, -1152, 896, -448, -64, -64, -128, 832, 64, -64, 192, -896, + 64, -128, 128, -64, 704, -1024, -128, 128, -64, 64, 0, -576, 0, -64, 1216, 64, 64, 64, 0, 128, 128, 512, 0, 0, + 0, 0, 64, -832, 0, 0, -384, -192, -64, 0, -128, -128, 384, 832, 0, 0, 0, 64, 576, 64, 0, 0, -64, 128, 0, 0, 64, + 0, -320, 0, 0, -64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, -128, -256, 64, 256, 256, -128, 0, 0, -64, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 0, -256, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -64, 64, + 64, -64, -192, 0, -128, -192, 0, 0, 0, 0, 0, 0, 0, -128, -128, 0, 64, -64, 128, 0, 0, 0, 64, -64, 64, 0, 64, + -512, -64, 0, 0, 64, -192, 0, 0, -64, 192, 0, 0, 64, -192, -192, -192, 192, -256, 0, 0, 0, 64, 0, 0, 192, -192, + 192, -64, 64, 64, 0, 64, -320, 1280, 0, 0, 0, -64, 128, 448, -64, 0, 192, -128, 64, 0, 256, -64, 0, 64, 0, 64, + -192, 128, -576, -768, -1216, 640, -64, 128, 0, -64, 64, 576, -832, 0, 0, 64, -256, -832, 0, 0, 1024, -448, 0, + 1024, -192, 64, -128, -64, 128, -64, 0, 0, 0, 64, 64, 0, 0, 256, -192, -1088, -896, 128, -256, -896, -64, 0, + -64, 64, 0, -64, 0, 64, 64, -128, 64, 192, 1088, 832, 960, 576, -128, 0, 128, -192, 128, 128, -128, 128, 64, + -64, 64, 0, 0, -128, 320, 448, -64, 0, 64, 256, -448, -896, -448, 128, -128, 0, 0, 0, 0, 0, 0, -64, 64, 0, + -192, 1088, 512, -64, 256, 512, -576, 384, 0, 64, 0, 0, 0, 0, 0, 0, -64, 64, 0, 0, 0, 0, 0, -128, -128, 128, 0, + 0, 320, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -320, -256, -128, -384, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -448, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -512, -128, 0, 0, 0, 0, 0, 0, -128, -128, 128, -128, + 0, 0, 0, 0, 256, 256, 0, 0, 0, 384, 0, 0, 128, 128, -128, 128, 0, 0, 0, 0, -512, -1024, 0, 0, 0, -128, 0, 0, + -128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, -128, -384, 384, 0, 0, 0, -128, 128, 0, 0, 0, 0, 128, + -256, 0, 0, -128, 384, 128, 256, -128, 0, 0, 0, -256, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 0, + -384, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, -128, 256, 0, -128, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, -128, 0, 0, 0, + -128, 0, -256, 0, 0, 256, 256, 128, -128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 256, 0, 0, 128, -256, + 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, -128, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, -64, -64, 32, + 0, -32, -64, 0, -32, 256, 192, 96, 0, -32, -192, 0, 128, 160, -416, -1696, -96, -64, 0, -64, -480, -224, 800, + 256, 96, 224, -800, 832, -384, 160, 640, 192, 224, -160, -416, 64, -64, 160, -1728, 320, -64, 960, 96, -1472, + 352, -288, -32, -64, 32, -576, -64, 256, -96, 96, -160, -128, -32, -160, -64, -96, 0, 32, -320, -96, 32, -32, + 32, -160, -32, -96, 96, 224, -448, -416, 320, 0, -32, 352, 64, 160, 64, 384, 0, -256, 768, -672, -1568, -128, + 320, 288, 992, -32, 160, 320, 32, 416, -1824, -1664, 288, 384, -192, -576, 160, 32, -96, -128, -32, 416, 672, + 256, 352, 96, 224, 224, -64, -96, -32, 0, 64, -448, -608, -224, 32, -32, -32, -96, -64, 0, 0, -32, -32, -32, + -224, 96, 128, 224, -32, -192, -448, -32, -224, 96, -384, -512, -64, 64, -32, -288, 32, 224, -672, 800, -128, + -64, -736, 64, 64, 96, -128, 704, -128, 160, -128, -64, -64, 128, -224, 0, 0, 96, 64, 544, -192, 224, 160, 96, + 32, -160, 0, 32, 0, 0, 192, 32, -128, 64, 0, -32, 0, -32, -480, -384, -384, -608, -736, 864, 448, 96, 1184, + 352, -384, -480, -512, 928, 800, 1472, 3296, 2752, 1376, 832, 352, 1216, 992, 1792, 2752, 2016, 4096, 3680, + 864, 2304, -992, 1728, 4000, 288, 3104, 2144, 320, 2144, -1088, 1920, 2720, 3264, 3424, 3616, 192, 672, -320, + 320, -512, 4032, 3456, 2720, -320, 1888, 1664, 1248, 960, 1120, 1696, 480, -96, ]; } diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs index 5f6cecbc..7d0cc6e3 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -57,13 +57,7 @@ impl Region { if !bands.is_empty() { let next_band = bands[0]; - handle_rectangle_between_bands( - &rectangle, - band, - next_band, - &mut dst, - top_inter_band, - ); + handle_rectangle_between_bands(&rectangle, band, next_band, &mut dst, top_inter_band); } } @@ -79,23 +73,17 @@ impl Region { pub fn intersect_rectangle(&self, rectangle: &Rectangle) -> Self { match self.rectangles.len() { 0 => Self::new(), - 1 => self - .extents - .intersect(rectangle) - .map(Self::from) - .unwrap_or_default(), + 1 => self.extents.intersect(rectangle).map(Self::from).unwrap_or_default(), _ => { let rectangles = self .rectangles .iter() - .take_while(|r| r.top < rectangle.bottom).filter_map(|r| r.intersect(rectangle)) + .take_while(|r| r.top < rectangle.bottom) + .filter_map(|r| r.intersect(rectangle)) .collect::>(); let extents = Rectangle::union_all(rectangles.as_slice()); - let mut region = Self { - rectangles, - extents, - }; + let mut region = Self { rectangles, extents }; region.simplify(); region @@ -126,19 +114,14 @@ impl Region { < self.rectangles.len() { let current_band = get_current_band(&self.rectangles[current_band_start..]); - let next_band = - get_current_band(&self.rectangles[current_band_start + current_band.len()..]); + let next_band = get_current_band(&self.rectangles[current_band_start + current_band.len()..]); - if current_band[0].bottom == next_band[0].top - && bands_internals_equal(current_band, next_band) - { + if current_band[0].bottom == next_band[0].top && bands_internals_equal(current_band, next_band) { let first_band_len = current_band.len(); let second_band_len = next_band.len(); let second_band_bottom = next_band[0].bottom; - self.rectangles.drain( - current_band_start + first_band_len - ..current_band_start + first_band_len + second_band_len, - ); + self.rectangles + .drain(current_band_start + first_band_len..current_band_start + first_band_len + second_band_len); self.rectangles .iter_mut() .skip(current_band_start) @@ -166,11 +149,7 @@ impl From for Region { } } -fn handle_rectangle_higher_relative_to_extents( - rectangle: &Rectangle, - extents: &Rectangle, - dst: &mut Vec, -) { +fn handle_rectangle_higher_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { if rectangle.top < extents.top { dst.push(Rectangle { top: rectangle.top, @@ -181,11 +160,7 @@ fn handle_rectangle_higher_relative_to_extents( } } -fn handle_rectangle_lower_relative_to_extents( - rectangle: &Rectangle, - extents: &Rectangle, - dst: &mut Vec, -) { +fn handle_rectangle_lower_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { if extents.bottom < rectangle.bottom { dst.push(Rectangle { top: max(extents.bottom, rectangle.top), @@ -196,11 +171,7 @@ fn handle_rectangle_lower_relative_to_extents( } } -fn handle_rectangle_that_overlaps_band( - rectangle: &Rectangle, - band: &[Rectangle], - dst: &mut Vec, -) { +fn handle_rectangle_that_overlaps_band(rectangle: &Rectangle, band: &[Rectangle], dst: &mut Vec) { /* rect overlaps the band: | | | | ====^=================| |==| |=========================== band @@ -273,10 +244,7 @@ fn handle_rectangle_between_bands( let band_bottom = band[0].bottom; let next_band_top = next_band[0].top; - if next_band_top != band_bottom - && band_bottom < rectangle.bottom - && rectangle.top < next_band_top - { + if next_band_top != band_bottom && band_bottom < rectangle.bottom && rectangle.top < next_band_top { dst.push(Rectangle { top: top_inter_band, bottom: min(next_band_top, rectangle.bottom), @@ -348,10 +316,7 @@ fn copy_band_with_union( right: r.right, }) .take_while(|r| r.right < union_rectangle.left); - let items_before_union_rectangle_len = items_before_union_rectangle - .clone() - .map(|_| 1) - .sum::(); + let items_before_union_rectangle_len = items_before_union_rectangle.clone().map(|_| 1).sum::(); dst.extend(items_before_union_rectangle); band = &band[items_before_union_rectangle_len..]; @@ -420,9 +385,7 @@ fn bands_internals_equal(first_band: &[Rectangle], second_band: &[Rectangle]) -> } for (first_band_rect, second_band_rect) in first_band.iter().zip(second_band.iter()) { - if first_band_rect.left != second_band_rect.left - || first_band_rect.right != second_band_rect.right - { + if first_band_rect.left != second_band_rect.left || first_band_rect.right != second_band_rect.right { return false; } } diff --git a/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs b/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs index 477b9aac..85f3eefc 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs @@ -434,8 +434,7 @@ fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_without_merging } #[test] -fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles() -{ +fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles() { let mut region = Region { extents: Rectangle { left: 2, @@ -499,8 +498,7 @@ fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_wi } #[test] -fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles_on_board( -) { +fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles_on_board() { let mut region = Region { extents: Rectangle { left: 2, diff --git a/ironrdp/src/codecs/rfx/rlgr.rs b/ironrdp/src/codecs/rfx/rlgr.rs index 1793302b..22d63152 100644 --- a/ironrdp/src/codecs/rfx/rlgr.rs +++ b/ironrdp/src/codecs/rfx/rlgr.rs @@ -1,7 +1,8 @@ #[cfg(test)] mod tests; -use std::{cmp::min, io}; +use std::cmp::min; +use std::io; use bitvec::field::BitField as _; use bitvec::order::Msb0; @@ -9,7 +10,8 @@ use bitvec::slice::BitSlice; use failure::Fail; use super::EntropyAlgorithm; -use crate::{impl_from_error, utils::Bits}; +use crate::impl_from_error; +use crate::utils::Bits; const KP_MAX: u32 = 80; const LS_GR: u32 = 3; @@ -40,11 +42,7 @@ macro_rules! try_split_bits { }; } -pub fn decode( - mode: EntropyAlgorithm, - tile: &[u8], - mut output: &mut [i16], -) -> Result<(), RlgrError> { +pub fn decode(mode: EntropyAlgorithm, tile: &[u8], mut output: &mut [i16]) -> Result<(), RlgrError> { let mut k: u32 = 1; let mut kr: u32 = 1; let mut kp: u32 = k << LS_GR; @@ -60,16 +58,14 @@ pub fn decode( CompressionMode::RunLength => { let number_of_zeros = truncate_leading_value(&mut bits, false); try_split_bits!(bits, 1); - let run = count_run(number_of_zeros, &mut k, &mut kp) - + load_be_u32(try_split_bits!(bits, k as usize)); + let run = count_run(number_of_zeros, &mut k, &mut kp) + load_be_u32(try_split_bits!(bits, k as usize)); let sign_bit = try_split_bits!(bits, 1).load_be::(); let number_of_ones = truncate_leading_value(&mut bits, true); try_split_bits!(bits, 1); - let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) - + ((number_of_ones as u32) << kr); + let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) + ((number_of_ones as u32) << kr); update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); kp = kp.saturating_sub(DN_GR); @@ -86,8 +82,7 @@ pub fn decode( let number_of_ones = truncate_leading_value(&mut bits, true); try_split_bits!(bits, 1); - let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) - + ((number_of_ones as u32) << kr); + let code_remainder = load_be_u32(try_split_bits!(bits, kr as usize)) + ((number_of_ones as u32) << kr); update_parameters_according_to_number_of_ones(number_of_ones, &mut kr, &mut krp); @@ -209,11 +204,7 @@ fn compute_n_index(code_remainder: u32) -> usize { 32 - leading_zeros } -fn update_parameters_according_to_number_of_ones( - number_of_ones: usize, - kr: &mut u32, - krp: &mut u32, -) { +fn update_parameters_according_to_number_of_ones(number_of_ones: usize, kr: &mut u32, krp: &mut u32) { if number_of_ones == 0 { *krp = (*krp).saturating_sub(2); *kr = *krp >> LS_GR; diff --git a/ironrdp/src/codecs/rfx/rlgr/tests.rs b/ironrdp/src/codecs/rfx/rlgr/tests.rs index 97579d33..a08ab093 100644 --- a/ironrdp/src/codecs/rfx/rlgr/tests.rs +++ b/ironrdp/src/codecs/rfx/rlgr/tests.rs @@ -17,12 +17,7 @@ fn decode_works_with_rlgr3() { let mut output = vec![0i16; expected.len() * output_len]; for (i, (input, expected)) in input.iter().zip(expected.iter()).enumerate() { - decode( - mode, - input, - &mut output[i * output_len..(i + 1) * output_len], - ) - .unwrap(); + decode(mode, input, &mut output[i * output_len..(i + 1) * output_len]).unwrap(); assert_eq!(&expected[..], &output[i * 4096..(i + 1) * 4096]); } } @@ -100,608 +95,510 @@ fn decode_correctly_decodes_rlgr1() { } const Y_DATA_ENCODED: [u8; 942] = [ - 0xc0, 0x01, 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, 0x11, 0xdc, 0x22, 0x29, 0x74, - 0xef, 0xfd, 0x20, 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, 0x53, 0x0c, - 0x1f, 0xe2, 0x54, 0x0c, 0x77, 0x7c, 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, - 0x5d, 0xff, 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, - 0x24, 0xa0, 0x8f, 0xab, 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, 0x80, 0xc3, 0x22, 0x50, - 0xaf, 0x4c, 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, 0x65, - 0xa3, 0xaf, 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, - 0x42, 0x87, 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, 0x6a, 0xff, 0xfb, - 0x43, 0x8b, 0xa3, 0x7a, 0x32, 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, - 0x08, 0x04, 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, - 0x2d, 0x40, 0xa1, 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, 0x2f, 0xcc, 0x01, 0xce, 0x03, - 0x48, 0xc0, 0x8d, 0x63, 0xf4, 0xfd, 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, 0xc0, 0x8a, - 0x09, 0x52, 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, - 0x84, 0x34, 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, 0xb4, 0x1d, 0xa7, 0xfa, - 0x47, 0x82, 0xec, 0x7a, 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, 0x80, - 0xc0, 0x69, 0x01, 0xc2, 0x3e, 0x90, 0x14, 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, - 0x13, 0x68, 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, - 0x41, 0x46, 0x5f, 0xf8, 0xf1, 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, 0x8f, 0xe5, 0x75, - 0x61, 0x03, 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, - 0xc0, 0x60, 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, 0x59, 0x90, 0x80, 0x30, 0x64, - 0x53, 0xff, 0xf5, 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, 0x00, 0xe8, - 0x7b, 0x46, 0xe6, 0xd8, 0x02, 0x03, 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, - 0x81, 0xb4, 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, - 0xf1, 0x70, 0x30, 0x24, 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, 0x83, 0x00, 0x36, 0x20, - 0xd1, 0x50, 0xe7, 0xd8, 0xad, 0x58, 0x20, 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, 0xf1, - 0x60, 0x75, 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, - 0x42, 0x81, 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, 0x18, 0xa1, 0xaa, - 0x47, 0x0e, 0x11, 0x1a, 0x40, 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, - 0x83, 0xa2, 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, - 0x32, 0xf8, 0x86, 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, - 0x78, 0xe7, 0xd2, 0x97, 0x0b, 0xbc, 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, 0x18, 0x18, - 0x11, 0x1f, 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, - 0x17, 0xde, 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, 0x9e, 0xf4, 0x01, 0x43, - 0xea, 0x0c, 0x46, 0x73, 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, 0xb0, - 0x8c, 0x54, 0x59, 0xfa, 0xac, 0x76, 0x36, 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, - 0x71, 0xcc, 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, - 0x57, 0xd7, 0xff, 0x10, 0xf2, 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, 0xb4, 0x12, 0xdb, - 0x1a, 0x48, 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, - 0x5b, 0x2f, 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, 0x5f, 0x24, 0xfe, 0x8b, 0xcb, - 0x42, 0x43, 0x7e, 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, 0x30, 0x44, - 0x15, 0x8f, 0xe9, 0x0c, 0xd3, 0xa6, 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, - 0x02, 0x54, 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, - 0x3f, 0xfd, 0x44, 0x91, 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, 0x31, 0x34, 0x06, 0x41, - 0x79, 0x6f, 0xf0, 0xcc, 0x03, 0x79, 0x00, 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, 0x44, - 0xc8, 0xeb, 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, - 0xf9, 0xb6, 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, 0xef, 0x25, 0xfa, - 0x5a, 0x3e, 0x92, 0x3e, 0x79, 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, - 0xf0, 0x7d, 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, - 0x6e, 0x2b, 0x18, 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, 0xeb, 0xbe, 0x1f, 0x04, 0x34, - 0x75, 0x84, 0x31, 0x42, 0x4c, 0x65, 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, 0x26, 0x3a, - 0x1b, 0xf4, 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, - 0xf9, 0xe5, 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, 0xb0, 0xda, 0xa9, 0xcb, - 0x58, 0xe4, 0x18, 0x77, 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, 0x9b, - 0x8d, 0xbc, 0xcb, 0x9d, 0xc4, 0x18, 0x05, 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, - 0xe5, 0x3a, 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, - 0x2d, 0xd4, 0x3f, 0xfe, 0x61, 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, 0x47, 0xf4, 0xdc, - 0xad, 0xaa, 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, - 0x47, 0x5a, 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, 0xab, 0x9e, 0xab, 0x2b, 0xdd, - 0x3c, 0x66, 0xa0, 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, + 0xc0, 0x01, 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, 0x11, 0xdc, 0x22, 0x29, 0x74, 0xef, 0xfd, 0x20, + 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, 0x53, 0x0c, 0x1f, 0xe2, 0x54, 0x0c, 0x77, 0x7c, + 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, 0x5d, 0xff, 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, + 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, 0x24, 0xa0, 0x8f, 0xab, 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, + 0x80, 0xc3, 0x22, 0x50, 0xaf, 0x4c, 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, + 0x65, 0xa3, 0xaf, 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, 0x42, 0x87, + 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, 0x6a, 0xff, 0xfb, 0x43, 0x8b, 0xa3, 0x7a, 0x32, + 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, 0x08, 0x04, 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, + 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, 0x2d, 0x40, 0xa1, 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, + 0x2f, 0xcc, 0x01, 0xce, 0x03, 0x48, 0xc0, 0x8d, 0x63, 0xf4, 0xfd, 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, + 0xc0, 0x8a, 0x09, 0x52, 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, 0x84, + 0x34, 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, 0xb4, 0x1d, 0xa7, 0xfa, 0x47, 0x82, 0xec, 0x7a, + 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, 0x80, 0xc0, 0x69, 0x01, 0xc2, 0x3e, 0x90, 0x14, + 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, 0x13, 0x68, 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, + 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, 0x41, 0x46, 0x5f, 0xf8, 0xf1, 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, + 0x8f, 0xe5, 0x75, 0x61, 0x03, 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, + 0xc0, 0x60, 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, 0x59, 0x90, 0x80, 0x30, 0x64, 0x53, 0xff, 0xf5, + 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, 0x00, 0xe8, 0x7b, 0x46, 0xe6, 0xd8, 0x02, 0x03, + 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, 0x81, 0xb4, 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, + 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, 0xf1, 0x70, 0x30, 0x24, 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, + 0x83, 0x00, 0x36, 0x20, 0xd1, 0x50, 0xe7, 0xd8, 0xad, 0x58, 0x20, 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, + 0xf1, 0x60, 0x75, 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, 0x42, 0x81, + 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, 0x18, 0xa1, 0xaa, 0x47, 0x0e, 0x11, 0x1a, 0x40, + 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, 0x83, 0xa2, 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, + 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, 0x32, 0xf8, 0x86, 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, + 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, 0x78, 0xe7, 0xd2, 0x97, 0x0b, 0xbc, 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, + 0x18, 0x18, 0x11, 0x1f, 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, 0x17, + 0xde, 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, 0x9e, 0xf4, 0x01, 0x43, 0xea, 0x0c, 0x46, 0x73, + 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, 0xb0, 0x8c, 0x54, 0x59, 0xfa, 0xac, 0x76, 0x36, + 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, 0x71, 0xcc, 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, + 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, 0x57, 0xd7, 0xff, 0x10, 0xf2, 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, + 0xb4, 0x12, 0xdb, 0x1a, 0x48, 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, + 0x5b, 0x2f, 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, 0x5f, 0x24, 0xfe, 0x8b, 0xcb, 0x42, 0x43, 0x7e, + 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, 0x30, 0x44, 0x15, 0x8f, 0xe9, 0x0c, 0xd3, 0xa6, + 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, 0x02, 0x54, 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, + 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, 0x3f, 0xfd, 0x44, 0x91, 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, + 0x31, 0x34, 0x06, 0x41, 0x79, 0x6f, 0xf0, 0xcc, 0x03, 0x79, 0x00, 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, + 0x44, 0xc8, 0xeb, 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, 0xf9, 0xb6, + 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, 0xef, 0x25, 0xfa, 0x5a, 0x3e, 0x92, 0x3e, 0x79, + 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, 0xf0, 0x7d, 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, + 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, 0x6e, 0x2b, 0x18, 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, + 0xeb, 0xbe, 0x1f, 0x04, 0x34, 0x75, 0x84, 0x31, 0x42, 0x4c, 0x65, 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, + 0x26, 0x3a, 0x1b, 0xf4, 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, 0xf9, + 0xe5, 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, 0xb0, 0xda, 0xa9, 0xcb, 0x58, 0xe4, 0x18, 0x77, + 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, 0x9b, 0x8d, 0xbc, 0xcb, 0x9d, 0xc4, 0x18, 0x05, + 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, 0xe5, 0x3a, 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, + 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, 0x2d, 0xd4, 0x3f, 0xfe, 0x61, 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, + 0x47, 0xf4, 0xdc, 0xad, 0xaa, 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, + 0x47, 0x5a, 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, 0xab, 0x9e, 0xab, 0x2b, 0xdd, 0x3c, 0x66, 0xa0, + 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, ]; const CB_DATA_ENCODED: [u8; 975] = [ - 0x00, 0xb0, 0x33, 0x56, 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, - 0xc8, 0x10, 0x56, 0x84, 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, - 0x2f, 0x82, 0x04, 0x9f, 0x91, 0xc2, 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, - 0x30, 0xf0, 0x08, 0x18, 0xf1, 0x81, 0x45, 0x9a, 0x60, 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, - 0xea, 0x31, 0x5a, 0xff, 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, 0x81, 0xcb, 0x00, 0xe1, - 0x10, 0xd2, 0xb4, 0xbe, 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, 0x04, - 0xf6, 0x06, 0x0e, 0x28, 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, - 0x85, 0x4c, 0x16, 0x80, 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, - 0xa9, 0xd5, 0xff, 0xff, 0xea, 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, - 0x78, 0x4a, 0x17, 0x52, 0x5d, 0xe4, 0x25, 0x1f, 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, - 0x82, 0x80, 0x90, 0x41, 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, 0x2f, 0x43, 0x7e, 0x50, 0x78, - 0xf2, 0x67, 0x78, 0x41, 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, 0x1f, 0x22, - 0x60, 0x41, 0x6c, 0x00, 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, - 0xa0, 0x5d, 0x1f, 0xa3, 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, - 0x76, 0x81, 0x05, 0xef, 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, - 0xc4, 0x7f, 0xff, 0xfd, 0x04, 0x80, 0x06, 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, - 0x00, 0xe0, 0x91, 0x00, 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, - 0x04, 0xe9, 0x45, 0x40, 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, 0xfc, 0xbf, 0xc3, - 0xb4, 0x46, 0x6a, 0x01, 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, - 0x08, 0x61, 0xfd, 0xa8, 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, - 0xff, 0xf3, 0x01, 0x45, 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, - 0x30, 0x01, 0x51, 0x42, 0xbc, 0x43, 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, - 0xe0, 0x7e, 0x99, 0xf2, 0x4a, 0xe9, 0x40, 0x02, 0x81, 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, - 0x91, 0xc8, 0x68, 0x25, 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, 0x91, 0xdd, 0xeb, 0x93, - 0x00, 0x21, 0x49, 0x24, 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, 0x32, - 0x00, 0xe3, 0x19, 0xfc, 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, - 0x84, 0xe1, 0x34, 0xd4, 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, - 0xa1, 0x40, 0x2e, 0x2f, 0x48, 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, - 0xa4, 0x16, 0xa2, 0x1b, 0x84, 0xa2, 0x89, 0x58, 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, - 0x32, 0x09, 0x02, 0x80, 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, 0x99, 0xf2, 0xff, 0xff, 0x3d, - 0x5a, 0x1f, 0xa9, 0x02, 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, 0x41, 0x0c, - 0x40, 0x0a, 0x20, 0xc4, 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, - 0xf8, 0x31, 0x02, 0x49, 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, - 0x15, 0xa4, 0x59, 0xc8, 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, - 0x21, 0x0e, 0x7f, 0x2b, 0xc5, 0x08, 0x59, 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, - 0xbb, 0x21, 0xff, 0xfe, 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, - 0x68, 0x8e, 0x07, 0xa6, 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, 0x21, 0xae, 0xf7, - 0xfb, 0x80, 0x28, 0x86, 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, - 0x0c, 0x29, 0xff, 0x0e, 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, - 0x10, 0x70, 0x30, 0xd8, 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, - 0x30, 0xdd, 0x00, 0xdb, 0xe4, 0x48, 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, - 0x60, 0xff, 0xa4, 0xa6, 0xff, 0xf6, 0x8c, 0x00, 0x40, 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, - 0x84, 0x38, 0x81, 0x94, 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, 0x28, 0xa2, 0x1c, 0x2a, - 0x8b, 0x64, 0xd4, 0x86, 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, 0x4c, - 0xbf, 0xb4, 0x1c, 0xd8, 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, - 0xc9, 0x0a, 0x64, 0x20, 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, - 0x07, 0x23, 0xb4, 0xbb, 0x57, 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, - 0xdd, 0x8e, 0x22, 0xdc, 0x14, 0x2c, 0x61, 0xa3, 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, - 0xf4, 0x96, 0xff, 0xf5, 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, 0x9e, 0x43, 0xa5, 0x7f, 0xf0, - 0x4c, 0x4c, 0x2b, 0x3c, 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, 0x5d, 0x7c, - 0x93, 0xba, 0x18, 0xaf, 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, - 0x92, 0x22, 0x4b, 0xdb, 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, - 0x49, 0x34, 0x42, 0x8b, 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, - 0xa9, 0xd8, 0x82, 0x07, 0xa6, 0x30, 0x0f, 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, - 0xe0, 0xd7, 0x02, 0x60, 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, - 0x48, 0x0e, 0x82, 0xa4, 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, 0x31, 0x0e, 0x11, - 0x77, 0xfe, 0x02, 0x60, 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, - 0x2a, 0x41, 0xfd, 0x8a, 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, - 0x13, 0x3e, 0x20, 0x3a, 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, - 0xb2, 0xe9, 0x3f, 0x41, 0x55, 0x1f, 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, - 0xbc, 0x3f, 0xc4, 0xc7, 0x36, 0xdc, 0x23, 0xc8, 0xb8, 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, + 0x00, 0xb0, 0x33, 0x56, 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, 0xc8, 0x10, 0x56, + 0x84, 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, 0x2f, 0x82, 0x04, 0x9f, 0x91, 0xc2, + 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, 0x30, 0xf0, 0x08, 0x18, 0xf1, 0x81, 0x45, 0x9a, 0x60, + 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, 0xea, 0x31, 0x5a, 0xff, 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, + 0x81, 0xcb, 0x00, 0xe1, 0x10, 0xd2, 0xb4, 0xbe, 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, + 0x04, 0xf6, 0x06, 0x0e, 0x28, 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, 0x85, 0x4c, + 0x16, 0x80, 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, 0xa9, 0xd5, 0xff, 0xff, 0xea, + 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, 0x78, 0x4a, 0x17, 0x52, 0x5d, 0xe4, 0x25, 0x1f, + 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, 0x82, 0x80, 0x90, 0x41, 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, + 0x2f, 0x43, 0x7e, 0x50, 0x78, 0xf2, 0x67, 0x78, 0x41, 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, + 0x1f, 0x22, 0x60, 0x41, 0x6c, 0x00, 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, 0xa0, + 0x5d, 0x1f, 0xa3, 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, 0x76, 0x81, 0x05, 0xef, + 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, 0xc4, 0x7f, 0xff, 0xfd, 0x04, 0x80, 0x06, + 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, 0x00, 0xe0, 0x91, 0x00, 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, + 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, 0x04, 0xe9, 0x45, 0x40, 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, + 0xfc, 0xbf, 0xc3, 0xb4, 0x46, 0x6a, 0x01, 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, + 0x08, 0x61, 0xfd, 0xa8, 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, 0xff, 0xf3, 0x01, + 0x45, 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, 0x30, 0x01, 0x51, 0x42, 0xbc, 0x43, + 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, 0xe0, 0x7e, 0x99, 0xf2, 0x4a, 0xe9, 0x40, 0x02, 0x81, + 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, 0x91, 0xc8, 0x68, 0x25, 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, + 0x91, 0xdd, 0xeb, 0x93, 0x00, 0x21, 0x49, 0x24, 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, + 0x32, 0x00, 0xe3, 0x19, 0xfc, 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, 0x84, 0xe1, + 0x34, 0xd4, 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, 0xa1, 0x40, 0x2e, 0x2f, 0x48, + 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, 0xa4, 0x16, 0xa2, 0x1b, 0x84, 0xa2, 0x89, 0x58, + 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, 0x32, 0x09, 0x02, 0x80, 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, + 0x99, 0xf2, 0xff, 0xff, 0x3d, 0x5a, 0x1f, 0xa9, 0x02, 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, + 0x41, 0x0c, 0x40, 0x0a, 0x20, 0xc4, 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, 0xf8, + 0x31, 0x02, 0x49, 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, 0x15, 0xa4, 0x59, 0xc8, + 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, 0x21, 0x0e, 0x7f, 0x2b, 0xc5, 0x08, 0x59, + 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, 0xbb, 0x21, 0xff, 0xfe, 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, + 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, 0x68, 0x8e, 0x07, 0xa6, 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, + 0x21, 0xae, 0xf7, 0xfb, 0x80, 0x28, 0x86, 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, + 0x0c, 0x29, 0xff, 0x0e, 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, 0x10, 0x70, 0x30, + 0xd8, 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, 0x30, 0xdd, 0x00, 0xdb, 0xe4, 0x48, + 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, 0x60, 0xff, 0xa4, 0xa6, 0xff, 0xf6, 0x8c, 0x00, 0x40, + 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, 0x84, 0x38, 0x81, 0x94, 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, + 0x28, 0xa2, 0x1c, 0x2a, 0x8b, 0x64, 0xd4, 0x86, 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, + 0x4c, 0xbf, 0xb4, 0x1c, 0xd8, 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, 0xc9, 0x0a, + 0x64, 0x20, 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, 0x07, 0x23, 0xb4, 0xbb, 0x57, + 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, 0xdd, 0x8e, 0x22, 0xdc, 0x14, 0x2c, 0x61, 0xa3, + 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, 0xf4, 0x96, 0xff, 0xf5, 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, + 0x9e, 0x43, 0xa5, 0x7f, 0xf0, 0x4c, 0x4c, 0x2b, 0x3c, 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, + 0x5d, 0x7c, 0x93, 0xba, 0x18, 0xaf, 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, 0x92, + 0x22, 0x4b, 0xdb, 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, 0x49, 0x34, 0x42, 0x8b, + 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, 0xa9, 0xd8, 0x82, 0x07, 0xa6, 0x30, 0x0f, + 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, 0xe0, 0xd7, 0x02, 0x60, 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, + 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, 0x48, 0x0e, 0x82, 0xa4, 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, + 0x31, 0x0e, 0x11, 0x77, 0xfe, 0x02, 0x60, 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, + 0x2a, 0x41, 0xfd, 0x8a, 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, 0x13, 0x3e, 0x20, + 0x3a, 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, 0xb2, 0xe9, 0x3f, 0x41, 0x55, 0x1f, + 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, 0xbc, 0x3f, 0xc4, 0xc7, 0x36, 0xdc, 0x23, 0xc8, 0xb8, + 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, ]; const CR_DATA_ENCODED: [u8; 915] = [ - 0x00, 0xb2, 0x46, 0xa2, 0x56, 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, 0xfa, 0x34, 0x0c, - 0x5f, 0xf8, 0x0c, 0x12, 0x50, 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, - 0x25, 0x9d, 0xc1, 0xff, 0x7e, 0x60, 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, - 0xfe, 0x2d, 0x40, 0x7c, 0x28, 0x9e, 0x71, 0x01, 0xd2, 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, - 0x08, 0x4c, 0x04, 0x52, 0x7e, 0xf2, 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, 0x80, 0xae, 0xaf, 0xfe, - 0xb0, 0x6d, 0x23, 0xf2, 0x41, 0xe3, 0x2e, 0x20, 0x11, 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, 0x38, - 0xa3, 0x95, 0x82, 0x15, 0xf0, 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, 0x26, 0x81, 0xe9, 0x47, - 0xff, 0xee, 0x0d, 0x20, 0x34, 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, 0x27, - 0xf1, 0x90, 0x85, 0x09, 0x86, 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, - 0x16, 0xbf, 0x04, 0xa7, 0xf8, 0xa2, 0x46, 0x0b, 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, - 0xf4, 0x0b, 0x14, 0x82, 0xfa, 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, 0x11, 0x7f, 0x03, 0x68, 0x44, - 0xc1, 0x1f, 0x81, 0x3a, 0x6c, 0x77, 0x95, 0x02, 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, 0x90, 0xe8, - 0xfd, 0x1f, 0xa6, 0x40, 0x0b, 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, 0xe8, 0xaf, 0x9a, 0xc1, 0x80, - 0x0f, 0x0a, 0x14, 0x02, 0x3c, 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, 0xe4, 0x83, - 0x8e, 0x03, 0x88, 0xd5, 0xaf, 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, - 0x02, 0x43, 0xc4, 0x14, 0x2a, 0x3f, 0xc8, 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, - 0x56, 0x80, 0xa6, 0x85, 0x00, 0xea, 0x3e, 0x8f, 0xeb, 0x9f, 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, - 0x78, 0xa0, 0x1e, 0x6f, 0x54, 0x78, 0x51, 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, 0x4c, 0x21, 0x3b, - 0xfb, 0x90, 0x0a, 0xcc, 0x1d, 0xd2, 0x47, 0xff, 0xfc, 0x70, 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, - 0x7f, 0x91, 0xd3, 0x66, 0x2f, 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, 0x6b, 0x72, 0x00, - 0xab, 0x33, 0x04, 0xcf, 0x43, 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, - 0x41, 0x44, 0x84, 0x8e, 0x08, 0x19, 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, - 0xd2, 0xd0, 0x1f, 0x13, 0x42, 0xa0, 0x21, 0x41, 0xc4, 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, - 0x7d, 0x35, 0x4f, 0x7f, 0xff, 0xf9, 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, 0x00, 0x09, 0x50, 0x4b, - 0x90, 0x8a, 0xc7, 0x94, 0x4d, 0x47, 0xc1, 0x62, 0x32, 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, 0x1c, - 0x96, 0x44, 0xa0, 0x09, 0xc8, 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, 0x3e, 0x3e, 0x19, 0x93, - 0xa0, 0x36, 0x26, 0x22, 0x08, 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, 0x06, - 0xd4, 0xa8, 0x22, 0x73, 0x7b, 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, - 0x77, 0xac, 0xe0, 0xc4, 0x06, 0x1f, 0xb8, 0xa5, 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, - 0x71, 0x2a, 0x3d, 0x14, 0x19, 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, 0x5f, 0xc5, 0x90, 0x0a, 0x85, - 0xc2, 0x3f, 0x87, 0x03, 0xa8, 0x26, 0x17, 0xc4, 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, 0x48, 0x16, - 0xed, 0x96, 0x93, 0xec, 0x1b, 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, 0x4d, 0xce, 0x40, 0xf3, 0x0c, - 0x51, 0x4b, 0x84, 0x9e, 0x67, 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, 0x81, 0x35, - 0x87, 0xff, 0x98, 0x0f, 0x40, 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, - 0x80, 0x6a, 0xa0, 0x43, 0xff, 0x2d, 0xd6, 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, - 0x1a, 0x2a, 0x06, 0xc0, 0x01, 0x40, 0x0c, 0x30, 0xc1, 0xd0, 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, - 0xd3, 0xb4, 0x0d, 0x88, 0x98, 0xea, 0xda, 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, 0x40, 0x14, 0xff, - 0xff, 0xff, 0xea, 0xdb, 0x9b, 0x92, 0xd8, 0x68, 0x08, 0x0b, 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, - 0xb0, 0x9a, 0x98, 0xc0, 0x80, 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, 0x03, 0x29, 0x7f, - 0xe1, 0x6d, 0x4c, 0x0f, 0x01, 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, - 0x33, 0xf1, 0x80, 0xe1, 0x49, 0x08, 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, - 0x5e, 0xca, 0xf8, 0x3a, 0x00, 0x1e, 0xb0, 0x06, 0x84, 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, - 0x21, 0x43, 0x8e, 0xa5, 0x55, 0x77, 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, 0x0c, 0x42, 0x20, 0xd2, - 0x48, 0x61, 0xc8, 0x1c, 0x65, 0xf8, 0xfe, 0x4c, 0x88, 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, 0x54, - 0x09, 0x13, 0x28, 0x52, 0xf5, 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, 0xcf, 0xf8, 0xf4, 0x7f, - 0xff, 0xfd, 0x01, 0x49, 0xa4, 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, 0xb2, - 0x50, 0x76, 0x30, 0x5b, 0x03, 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, - 0x7a, 0xc6, 0x1c, 0x87, 0xd7, 0x48, 0x7b, 0x49, 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, - 0x0d, 0x1e, 0x9e, 0x53, 0xb7, 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, 0x11, 0x3f, 0xb1, 0xa9, 0xa6, - 0xe8, 0x4d, 0x47, 0x77, 0xda, 0x43, 0x76, 0x89, 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, 0x09, 0x6f, - 0xe7, 0x2d, 0x82, 0x35, 0x07, 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, 0x42, 0x54, 0x80, 0x43, 0x12, - 0x6c, 0x9a, 0x55, 0xc9, 0x0a, 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, 0xc9, 0x4e, - 0xfe, 0x5b, 0x30, 0xa4, 0xe8, 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, - 0x1f, 0xff, 0xfa, 0xc3, 0xe3, 0x55, 0xf1, 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, - 0x01, 0x26, 0x15, 0xa9, 0xf9, 0xd9, 0x32, 0x41, 0x90, 0x36, 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, - 0x8c, 0x6e, 0x42, 0x5d, 0xd8, 0x1e, 0xfe, 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, 0x14, 0xeb, 0x6e, - 0x48, 0x7a, 0x91, 0x88, 0x7b, 0x7d, 0x8f, 0x72, 0x42, 0x39, 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, + 0x00, 0xb2, 0x46, 0xa2, 0x56, 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, 0xfa, 0x34, 0x0c, 0x5f, 0xf8, 0x0c, + 0x12, 0x50, 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, 0x25, 0x9d, 0xc1, 0xff, 0x7e, 0x60, + 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, 0xfe, 0x2d, 0x40, 0x7c, 0x28, 0x9e, 0x71, 0x01, 0xd2, + 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, 0x08, 0x4c, 0x04, 0x52, 0x7e, 0xf2, 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, + 0x80, 0xae, 0xaf, 0xfe, 0xb0, 0x6d, 0x23, 0xf2, 0x41, 0xe3, 0x2e, 0x20, 0x11, 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, + 0x38, 0xa3, 0x95, 0x82, 0x15, 0xf0, 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, 0x26, 0x81, 0xe9, 0x47, 0xff, 0xee, + 0x0d, 0x20, 0x34, 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, 0x27, 0xf1, 0x90, 0x85, 0x09, 0x86, + 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, 0x16, 0xbf, 0x04, 0xa7, 0xf8, 0xa2, 0x46, 0x0b, + 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, 0xf4, 0x0b, 0x14, 0x82, 0xfa, 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, + 0x11, 0x7f, 0x03, 0x68, 0x44, 0xc1, 0x1f, 0x81, 0x3a, 0x6c, 0x77, 0x95, 0x02, 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, + 0x90, 0xe8, 0xfd, 0x1f, 0xa6, 0x40, 0x0b, 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, 0xe8, 0xaf, 0x9a, 0xc1, 0x80, 0x0f, + 0x0a, 0x14, 0x02, 0x3c, 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, 0xe4, 0x83, 0x8e, 0x03, 0x88, 0xd5, + 0xaf, 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, 0x02, 0x43, 0xc4, 0x14, 0x2a, 0x3f, 0xc8, + 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, 0x56, 0x80, 0xa6, 0x85, 0x00, 0xea, 0x3e, 0x8f, 0xeb, 0x9f, + 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, 0x78, 0xa0, 0x1e, 0x6f, 0x54, 0x78, 0x51, 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, + 0x4c, 0x21, 0x3b, 0xfb, 0x90, 0x0a, 0xcc, 0x1d, 0xd2, 0x47, 0xff, 0xfc, 0x70, 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, + 0x7f, 0x91, 0xd3, 0x66, 0x2f, 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, 0x6b, 0x72, 0x00, 0xab, 0x33, 0x04, + 0xcf, 0x43, 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, 0x41, 0x44, 0x84, 0x8e, 0x08, 0x19, + 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, 0xd2, 0xd0, 0x1f, 0x13, 0x42, 0xa0, 0x21, 0x41, 0xc4, + 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, 0x7d, 0x35, 0x4f, 0x7f, 0xff, 0xf9, 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, + 0x00, 0x09, 0x50, 0x4b, 0x90, 0x8a, 0xc7, 0x94, 0x4d, 0x47, 0xc1, 0x62, 0x32, 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, + 0x1c, 0x96, 0x44, 0xa0, 0x09, 0xc8, 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, 0x3e, 0x3e, 0x19, 0x93, 0xa0, 0x36, + 0x26, 0x22, 0x08, 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, 0x06, 0xd4, 0xa8, 0x22, 0x73, 0x7b, + 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, 0x77, 0xac, 0xe0, 0xc4, 0x06, 0x1f, 0xb8, 0xa5, + 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, 0x71, 0x2a, 0x3d, 0x14, 0x19, 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, + 0x5f, 0xc5, 0x90, 0x0a, 0x85, 0xc2, 0x3f, 0x87, 0x03, 0xa8, 0x26, 0x17, 0xc4, 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, + 0x48, 0x16, 0xed, 0x96, 0x93, 0xec, 0x1b, 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, 0x4d, 0xce, 0x40, 0xf3, 0x0c, 0x51, + 0x4b, 0x84, 0x9e, 0x67, 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, 0x81, 0x35, 0x87, 0xff, 0x98, 0x0f, + 0x40, 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, 0x80, 0x6a, 0xa0, 0x43, 0xff, 0x2d, 0xd6, + 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, 0x1a, 0x2a, 0x06, 0xc0, 0x01, 0x40, 0x0c, 0x30, 0xc1, 0xd0, + 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, 0xd3, 0xb4, 0x0d, 0x88, 0x98, 0xea, 0xda, 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, + 0x40, 0x14, 0xff, 0xff, 0xff, 0xea, 0xdb, 0x9b, 0x92, 0xd8, 0x68, 0x08, 0x0b, 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, + 0xb0, 0x9a, 0x98, 0xc0, 0x80, 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, 0x03, 0x29, 0x7f, 0xe1, 0x6d, 0x4c, + 0x0f, 0x01, 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, 0x33, 0xf1, 0x80, 0xe1, 0x49, 0x08, + 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, 0x5e, 0xca, 0xf8, 0x3a, 0x00, 0x1e, 0xb0, 0x06, 0x84, + 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, 0x21, 0x43, 0x8e, 0xa5, 0x55, 0x77, 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, + 0x0c, 0x42, 0x20, 0xd2, 0x48, 0x61, 0xc8, 0x1c, 0x65, 0xf8, 0xfe, 0x4c, 0x88, 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, + 0x54, 0x09, 0x13, 0x28, 0x52, 0xf5, 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, 0xcf, 0xf8, 0xf4, 0x7f, 0xff, 0xfd, + 0x01, 0x49, 0xa4, 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, 0xb2, 0x50, 0x76, 0x30, 0x5b, 0x03, + 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, 0x7a, 0xc6, 0x1c, 0x87, 0xd7, 0x48, 0x7b, 0x49, + 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, 0x0d, 0x1e, 0x9e, 0x53, 0xb7, 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, + 0x11, 0x3f, 0xb1, 0xa9, 0xa6, 0xe8, 0x4d, 0x47, 0x77, 0xda, 0x43, 0x76, 0x89, 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, + 0x09, 0x6f, 0xe7, 0x2d, 0x82, 0x35, 0x07, 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, 0x42, 0x54, 0x80, 0x43, 0x12, 0x6c, + 0x9a, 0x55, 0xc9, 0x0a, 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, 0xc9, 0x4e, 0xfe, 0x5b, 0x30, 0xa4, + 0xe8, 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, 0x1f, 0xff, 0xfa, 0xc3, 0xe3, 0x55, 0xf1, + 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, 0x01, 0x26, 0x15, 0xa9, 0xf9, 0xd9, 0x32, 0x41, 0x90, 0x36, + 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, 0x8c, 0x6e, 0x42, 0x5d, 0xd8, 0x1e, 0xfe, 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, + 0x14, 0xeb, 0x6e, 0x48, 0x7a, 0x91, 0x88, 0x7b, 0x7d, 0x8f, 0x72, 0x42, 0x39, 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, 0x60, 0x30, 0x00, ]; const Y_DATA_DECODED: [i16; 4096] = [ - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, - -5, -1, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, - 4, 4, -5, -1, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, - 0, 1, 3, -1, 5, 0, -1, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 6, -2, - -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, - 5, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, - -1, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, - 1, 2, -1, 0, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -2, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, 0, - -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, - -1, 7, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, - 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, - 0, 0, 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, - -2, 0, 0, 0, 0, 0, 6, -8, -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, 1, 0, 0, 1, -2, 5, -3, 2, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, 1, 0, 0, 1, 1, 0, - 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, -1, 0, - 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 1, 1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, - 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, 0, - -1, 3, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -2, - -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, 0, 0, 0, 0, 1, - 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, -1, 6, -1, 1, -6, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - -1, -1, 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 1, -3, -5, 0, 1, 0, 0, 8, -1, -7, -9, -7, -2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, - 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, - 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, - -4, -5, -8, -6, -4, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, - -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 2, -1, -1, 1, 0, 0, 0, 0, 0, -1, 4, -2, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, - -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 2, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, - 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, - 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, 0, 0, 0, 1, -4, -1, 0, 0, 1, -5, -2, 1, 1, 1, 6, -2, -1, - 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, 8, -1, 0, 3, - 1, -18, 16, 1, -1, 2, 0, -4, -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, - 0, -5, -2, 3, -1, 11, -8, -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, - -3, -1, -1, -2, -14, 0, 1, 0, 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, - 11, -16, -2, 2, -1, 1, 0, -9, 0, -1, 19, 1, 1, 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, - -1, 0, -2, -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, 0, -5, 0, 0, -1, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, 0, - 0, 0, 0, 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, -1, 3, - 0, 0, 1, -3, -3, -3, 3, -4, 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, 0, 0, -1, 2, - 7, -1, 0, 3, -2, 1, 0, 4, -1, 0, 1, 0, 1, -3, 2, -9, -12, -19, 10, -1, 2, 0, -1, 1, 9, -13, 0, - 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, -2, -1, 2, -1, 0, 0, 0, 1, 1, 0, 0, 4, -3, -17, -14, - 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, 13, 15, 9, -2, 0, 2, -3, 2, 2, -2, 2, - 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, 0, 0, 0, 0, -1, 1, 0, -3, 17, - 8, -1, 4, 8, -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -2, -2, 2, 0, 0, 5, -1, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, -2, -6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -4, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, - 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, -1, 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, -1, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -3, 3, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, - 3, 1, 2, -1, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, -1, 2, 0, -1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, 2, - 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, - 3, 0, -1, -6, 0, 4, 5, -13, -53, -3, -2, 0, -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, - 7, -5, -13, 2, -2, 5, -54, 10, -2, 30, 3, -46, 11, -9, -1, -2, 1, -18, -2, 8, -3, 3, -5, -4, - -1, -5, -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, -1, -3, 3, 7, -14, -13, 10, 0, -1, 11, 2, 5, 2, - 12, 0, -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, 9, 12, -6, -18, 5, 1, -3, - -4, -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, -1, - -1, -1, -7, 3, 4, 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, -2, - -23, 2, 2, 3, -4, 22, -4, 5, -4, -2, -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, 1, 0, 0, - 6, 1, -4, 2, 0, -1, 1, -1, -14, 3, 0, -7, -4, 50, -13, -11, 34, -26, -23, -3, -1, 45, -4, 21, - 57, -17, -43, -17, -15, 27, -7, 25, 30, -23, 65, -13, -88, 45, -103, 85, 71, -116, 88, -30, - -57, 57, -101, 94, 25, 17, 5, 6, -107, 15, -31, 20, -26, 142, -18, -23, -95, 69, -7, -13, -9, - 5, 18, -38, -18, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 4, -5, -1, 0, 0, 0, 0, + 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 3, 0, 0, 0, 0, 0, 0, -1, 4, 4, -5, -1, 0, 0, 0, 0, 0, 0, -2, 5, + 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, -5, -4, 1, 0, 0, 0, 0, 0, 0, 1, 3, -1, 5, 0, -1, 0, 0, 0, 0, 0, -2, -2, -3, 0, 0, 0, + 0, 0, 3, 0, 0, 7, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 2, -1, 0, 0, 0, 0, 0, -3, 1, 5, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 1, 0, -9, -3, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 6, -2, -8, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 5, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 2, 0, 0, 1, 0, 0, -1, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0, 0, 0, + 0, 0, 3, -1, 0, -1, 0, 1, 0, 0, 0, 1, 2, -1, 0, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -4, 0, 0, 0, 0, 0, -1, -6, 1, + 0, -1, 0, 0, 0, 0, 0, 0, 0, 6, 0, -1, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -1, 1, 10, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -5, -5, 3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -1, -7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, -1, 7, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -3, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 0, 0, 0, 0, 0, 4, 1, 2, -2, -2, 0, -1, 0, 0, 0, 0, 1, -1, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, + 0, 0, -1, -10, 3, 1, 2, 0, -2, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 6, -8, + -2, 0, -2, 1, 0, 0, -1, -1, -1, 1, 1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, 0, 1, + 1, 0, 0, 1, -2, 5, -3, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 0, -3, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, + -1, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, -2, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, -1, -1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -8, 2, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -2, 4, 4, -1, 0, 0, 0, 0, 0, 0, -1, 3, + -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, -7, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2, 2, -1, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -5, -3, -4, -6, -6, 7, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -2, -3, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 2, -1, 0, -2, -3, 1, 1, -8, 6, 0, -1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 6, -3, -1, 0, 0, 0, 0, 0, -1, + 5, 2, -6, -2, 0, 0, 0, 2, 7, -6, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 6, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, + 0, 0, 0, 0, 0, -1, 6, -1, 1, -6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -2, 0, -8, 6, 6, 4, 3, 3, 4, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, -1, + 7, -8, 0, 1, -2, -4, -3, -1, 1, -3, -4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -3, -5, 0, 1, 0, 0, 8, + -1, -7, -9, -7, -2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0, + 0, 0, 0, -1, 1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, + 1, 3, 3, 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, -4, -5, -8, + -6, -4, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -9, -5, 10, 2, 2, 0, -1, 2, 6, -4, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, -1, -1, 1, 0, 0, 0, 0, 0, -1, 4, -2, -1, 1, + -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 1, 1, 0, 1, 0, -1, 3, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, -2, -3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -1, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, + 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, -5, 3, -2, 1, 0, -1, 0, 0, 0, 0, 1, -4, -1, 0, + 0, 1, -5, -2, 1, 1, 1, 6, -2, -1, 0, 1, -4, 21, 6, 0, 0, -5, -1, 1, 2, 4, 4, 3, 5, 0, 0, -1, 4, -8, -11, 0, 0, -2, + 8, -1, 0, 3, 1, -18, 16, 1, -1, 2, 0, -4, -4, 0, 0, -6, 1, -3, -1, 1, 14, -23, 1, 0, 1, 0, 1, -3, -1, 0, 0, 0, -5, + -2, 3, -1, 11, -8, -3, 0, 1, 0, -1, -3, 1, 0, 14, 1, 0, -1, 0, 0, -15, -2, 7, 1, -1, 1, -3, -1, -1, -2, -14, 0, 1, + 0, 0, 5, -18, 14, -7, -1, -1, -2, 13, 1, -1, 3, -14, 1, -2, 2, -1, 11, -16, -2, 2, -1, 1, 0, -9, 0, -1, 19, 1, 1, + 1, 0, 2, 2, 8, 0, 0, 0, 0, 1, -13, 0, 0, -6, -3, -1, 0, -2, -2, 6, 13, 0, 0, 0, 1, 9, 1, 0, 0, -1, 2, 0, 0, 1, 0, + -5, 0, 0, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -4, 1, 4, 4, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 1, 1, -1, -3, 0, -2, -3, 0, 0, 0, 0, 0, + 0, 0, -2, -2, 0, 1, -1, 2, 0, 0, 0, 1, -1, 1, 0, 1, -8, -1, 0, 0, 1, -3, 0, 0, -1, 3, 0, 0, 1, -3, -3, -3, 3, -4, + 0, 0, 0, 1, 0, 0, 3, -3, 3, -1, 1, 1, 0, 1, -5, 20, 0, 0, 0, -1, 2, 7, -1, 0, 3, -2, 1, 0, 4, -1, 0, 1, 0, 1, -3, + 2, -9, -12, -19, 10, -1, 2, 0, -1, 1, 9, -13, 0, 0, 1, -4, -13, 0, 0, 16, -7, 0, 16, -3, 1, -2, -1, 2, -1, 0, 0, 0, + 1, 1, 0, 0, 4, -3, -17, -14, 2, -4, -14, -1, 0, -1, 1, 0, -1, 0, 1, 1, -2, 1, 3, 17, 13, 15, 9, -2, 0, 2, -3, 2, 2, + -2, 2, 1, -1, 1, 0, 0, -2, 5, 7, -1, 0, 1, 4, -7, -14, -7, 2, -2, 0, 0, 0, 0, 0, 0, -1, 1, 0, -3, 17, 8, -1, 4, 8, + -9, 6, 0, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -2, -2, 2, 0, 0, 5, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -4, + -2, -6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -4, -1, 0, 0, 0, 0, + 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 1, 1, -1, 1, 0, 0, 0, 0, -4, -8, 0, 0, 0, -1, 0, 0, -1, + -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -3, 3, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, 0, 0, -1, 3, 1, 2, -1, 0, + 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 2, 0, -1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, 0, 0, 2, 2, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 2, 0, 0, + 1, -2, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 1, 0, -1, -2, 0, -1, 8, 6, 3, + 0, -1, -6, 0, 4, 5, -13, -53, -3, -2, 0, -2, -15, -7, 25, 8, 3, 7, -25, 26, -12, 5, 20, 6, 7, -5, -13, 2, -2, 5, + -54, 10, -2, 30, 3, -46, 11, -9, -1, -2, 1, -18, -2, 8, -3, 3, -5, -4, -1, -5, -2, -3, 0, 1, -10, -3, 1, -1, 1, -5, + -1, -3, 3, 7, -14, -13, 10, 0, -1, 11, 2, 5, 2, 12, 0, -8, 24, -21, -49, -4, 10, 9, 31, -1, 5, 10, 1, 13, -57, -52, + 9, 12, -6, -18, 5, 1, -3, -4, -1, 13, 21, 8, 11, 3, 7, 7, -2, -3, -1, 0, 2, -14, -19, -7, 1, -1, -1, -3, -2, 0, 0, + -1, -1, -1, -7, 3, 4, 7, -1, -6, -14, -1, -7, 3, -12, -16, -2, 2, -1, -9, 1, 7, -21, 25, -4, -2, -23, 2, 2, 3, -4, + 22, -4, 5, -4, -2, -2, 4, -7, 0, 0, 3, 2, 17, -6, 7, 5, 3, 1, -5, 0, 1, 0, 0, 6, 1, -4, 2, 0, -1, 1, -1, -14, 3, 0, + -7, -4, 50, -13, -11, 34, -26, -23, -3, -1, 45, -4, 21, 57, -17, -43, -17, -15, 27, -7, 25, 30, -23, 65, -13, -88, + 45, -103, 85, 71, -116, 88, -30, -57, 57, -101, 94, 25, 17, 5, 6, -107, 15, -31, 20, -26, 142, -18, -23, -95, 69, + -7, -13, -9, 5, 18, -38, -18, ]; const CB_DATA_DECODED: [i16; 4096] = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, - 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -2, -1, -1, 1, 0, 1, 0, 0, - 0, 3, -7, 7, -8, 1, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, -10, 0, 0, 0, -1, - 0, 1, 0, 0, 0, -2, -5, -2, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, -2, 6, 9, -2, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 2, 6, 0, 0, 0, 0, 0, -1, -6, -2, -2, 0, 0, 0, 0, 0, 1, 0, 0, -7, 0, 5, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, -6, 0, 4, 0, 0, 0, 0, 0, 1, -1, 1, 0, -1, - -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -2, 0, 0, 0, 0, 1, 1, 0, 6, - 3, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 0, 0, 0, 0, 0, 0, - -4, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -8, 1, 0, 1, 0, 0, 0, 0, 0, 1, - 0, -3, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 1, 0, 0, -4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 3, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, 10, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0, 0, 0, 0, 0, -2, 2, 0, 0, 0, -10, 1, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -4, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -3, -1, 0, 0, 0, - 0, 0, -1, 0, -1, 1, 1, 0, 0, 0, 0, 0, 0, -1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 12, 0, 0, - 0, 0, 0, 0, 1, -1, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 5, - 0, 0, 0, 0, 0, -1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0, 1, 0, 0, 0, 0, - 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 4, 5, 2, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 4, -8, -7, -4, -4, -6, - -7, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, -3, -3, 1, 0, 0, 0, 0, - 0, 0, 1, -8, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 1, 1, -6, 8, -1, 0, 0, 0, 0, 0, 2, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -8, 7, 7, 4, 5, 8, 1, -1, -7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, -4, -4, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, -1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -3, -3, -1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, - 0, 1, -4, -6, 4, 7, 5, 4, 6, 5, -5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -4, -3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 5, -1, 0, 1, 1, 1, 2, 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 5, -3, 2, 0, - 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, -1, -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, -1, 1, - -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 1, -1, 3, -4, 0, 0, 0, 0, 0, 0, 0, 1, - -2, -7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 5, -5, -4, -3, -3, - -7, -9, 3, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, -4, 4, 0, -1, 1, - 3, 4, 2, -2, 4, 8, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, -1, 0, 0, -4, - 0, 5, 6, 7, 2, -9, -7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, -2, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, -5, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, -2, 0, -1, 0, 1, -1, -1, 1, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 8, -7, 0, 0, 0, 0, 0, 0, 1, -2, -11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, -9, -10, -7, -4, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 2, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 2, 0, -1, -2, 1, 1, -2, 0, 0, 0, 0, 0, 0, 1, 1, -2, -8, -1, 1, 0, -1, -5, 9, 2, 0, 0, -1, 2, - 0, 0, 0, 1, -17, 0, 0, -1, -1, -18, 20, -1, 1, 0, 5, -8, 8, 0, 0, 17, 1, 0, 0, 2, 3, -6, -10, - 3, -1, 1, 0, 3, 32, 0, -1, 5, 5, -1, 0, 5, 4, 14, -16, 1, 0, 0, -1, -17, 2, 0, -1, -17, -3, -2, - 1, -1, -9, 15, -1, 0, 1, -1, -1, -8, -4, 0, 1, 0, 3, 1, -1, 1, -6, 3, 2, 0, 2, -1, 2, 11, 0, 0, - -3, 0, 1, 1, 0, 0, 7, 1, -3, 0, -1, -4, 0, 4, 0, 0, 3, 0, 0, 0, 0, -2, 10, -7, 4, 0, -1, 3, - -24, -2, 0, -1, 4, 0, 2, -1, 0, -5, 10, 2, -1, -3, 4, -1, 11, -1, 0, -4, 1, 0, -1, 0, 0, -2, - -6, 0, 0, 1, -2, 0, 24, 0, 0, 1, 2, 1, 0, 0, 0, -1, -17, 0, 0, 0, -1, -26, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 22, -2, -1, 0, 0, 2, -7, -3, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 1, -1, -2, -4, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 10, 6, -2, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 0, 2, -3, -19, -9, -13, -13, 14, -2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, -1, 0, 0, 0, -2, - 14, 2, -2, -2, 6, 8, 0, 0, 1, -2, 0, 0, 0, 1, 0, 1, 0, -17, -6, 1, -8, -9, 0, 0, 1, -1, 0, 1, - 1, -1, 0, 0, 0, -2, -1, 0, 0, -2, 0, 0, 1, 1, -1, -8, 0, 3, -1, 0, 1, 1, 3, 1, 0, 0, 0, 1, -7, - 13, 13, 12, 14, -7, 0, 0, 0, -1, 1, 9, -7, 2, 0, 0, -1, 2, 0, 0, -8, 4, 0, -9, 2, 2, 0, 1, -12, - 3, 0, 0, 0, 0, 0, 0, 0, -2, 1, 9, 10, -4, 2, 35, 4, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, -1, -10, -8, - -21, -13, 3, 0, -1, 1, -1, 0, 1, -1, 0, 1, 0, 1, 1, -5, 14, 14, -2, 0, 0, 0, 2, 3, 2, 0, 1, 1, - 0, 1, 0, 0, 1, 1, -1, 0, 0, -3, -1, 0, 0, -2, 2, 0, -1, -1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, - 0, 2, -12, -4, 1, 1, 2, -20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 19, 16, 15, 24, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, -1, 0, 0, -1, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 3, 0, 0, -1, - 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 2, 2, -1, 1, -1, 3, 4, 0, 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0, - 0, 0, 1, 0, 0, 0, -2, -1, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, -2, 0, 0, 0, 2, -2, 0, 0, - 0, -1, 1, -1, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, -1, -1, 1, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, -1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 1, -2, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, - -9, -1, -2, 5, 1, 1, 0, 1, 33, -2, -2, 5, 1, 2, -3, -4, -14, -3, 2, 76, 4, 5, 17, 3, -37, 1, - -15, -8, 3, -1, 80, -5, 14, -2, -11, 2, 7, -16, 15, -2, 3, -2, 29, -2, 1, -51, -8, 6, -4, 3, 4, - 6, 4, 35, -1, -1, 1, -2, 8, -3, -7, 17, 1, 1, -4, 35, -4, 34, -5, 2, -1, 3, 0, 0, 2, 3, -17, - 46, 10, -2, 4, -9, -5, -2, 3, 4, 0, 1, 4, 28, 33, 2, -3, 14, -6, -1, 0, -4, -1, -7, 38, 60, -5, - -3, 2, 6, 1, 4, 4, -3, 1, -1, -3, -2, -7, -28, -5, -31, 8, 2, 0, 0, -8, 56, 85, 24, -3, 0, -10, - 3, -4, 4, 2, 1, 0, 1, 4, 2, 4, 15, 10, 6, -9, -1, -1, -4, 1, 5, 2, 0, 4, 1, 13, -3, 10, -11, - -4, 2, 7, -1, 0, -2, 1, -14, -3, 2, 2, 0, -1, -1, 3, 0, -5, -9, -4, -2, 2, -5, -28, 1, 7, 17, - 1, 0, 0, 0, -18, 5, 15, -6, 0, 55, -4, 34, -14, 18, -33, 7, -1, -16, 19, -109, -29, 19, 123, - 10, -6, -31, 13, -129, 32, 31, -43, 7, 9, 83, -29, -34, 15, 32, -44, -12, -18, 79, 31, -21, - -40, 58, -51, -33, 63, -8, 35, -31, -13, -10, -20, -44, 102, -11, 9, 2, 17, -136, 4, -58, 208, - -49, 6, 4, 11, -83, -38, 84, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, + 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -2, -1, -1, 1, 0, 1, 0, 0, 0, 3, -7, 7, -8, 1, + 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, -10, 0, 0, 0, -1, 0, 1, 0, 0, 0, -2, -5, -2, 0, 0, 0, 0, + 0, 5, 4, 0, 0, 0, 0, 0, 0, 1, 1, 0, -2, 6, 9, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 6, 0, 0, 0, 0, 0, -1, -6, -2, -2, + 0, 0, 0, 0, 0, 1, 0, 0, -7, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, -6, 0, 4, 0, 0, 0, 0, 0, + 1, -1, 1, 0, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -2, 0, 0, 0, 0, 1, 1, 0, 6, 3, + -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 0, 0, 0, 0, 0, 0, -4, 1, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -8, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, -3, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -8, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, -4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 2, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 4, 0, 0, 0, 0, 0, 2, + 0, 0, 0, -1, -1, 10, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0, 0, 0, 0, 0, -2, 2, 0, 0, 0, + -10, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -4, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -3, -1, 0, 0, + 0, 0, 0, -1, 0, -1, 1, 1, 0, 0, 0, 0, 0, 0, -1, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 12, 0, 0, 0, 0, 0, 0, 1, + -1, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 5, 0, 0, 0, 0, 0, -1, 1, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0, 1, 0, 0, 0, 0, 1, -2, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 4, 5, 2, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 7, 4, -8, -7, -4, -4, -6, -7, 7, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, -3, -3, 1, 0, 0, 0, 0, 0, 0, 1, -8, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, -6, 8, -1, 0, 0, 0, 0, 0, 2, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -8, 7, 7, 4, 5, 8, 1, -1, -7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, -2, -4, -4, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -3, -1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, + 0, 0, 0, 0, 1, -4, -6, 4, 7, 5, 4, 6, 5, -5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -4, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 5, -1, 0, 1, 1, 1, 2, 0, -1, 5, -4, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 5, -3, 2, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, + 0, 0, -1, -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, -1, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -3, 1, -1, 3, -4, 0, 0, 0, 0, 0, 0, 0, 1, -2, -7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 5, -5, -4, -3, -3, -7, -9, 3, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, -4, 4, 0, -1, + 1, 3, 4, 2, -2, 4, 8, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, -1, 0, 0, -4, 0, 5, 6, 7, 2, -9, + -7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -5, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, -2, 0, -1, 0, 1, -1, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 8, -7, 0, 0, 0, 0, 0, 0, 1, -2, -11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 0, -9, -10, -7, -4, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, + 0, 0, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, -1, -2, 1, 1, -2, 0, + 0, 0, 0, 0, 0, 1, 1, -2, -8, -1, 1, 0, -1, -5, 9, 2, 0, 0, -1, 2, 0, 0, 0, 1, -17, 0, 0, -1, -1, -18, 20, -1, 1, 0, + 5, -8, 8, 0, 0, 17, 1, 0, 0, 2, 3, -6, -10, 3, -1, 1, 0, 3, 32, 0, -1, 5, 5, -1, 0, 5, 4, 14, -16, 1, 0, 0, -1, + -17, 2, 0, -1, -17, -3, -2, 1, -1, -9, 15, -1, 0, 1, -1, -1, -8, -4, 0, 1, 0, 3, 1, -1, 1, -6, 3, 2, 0, 2, -1, 2, + 11, 0, 0, -3, 0, 1, 1, 0, 0, 7, 1, -3, 0, -1, -4, 0, 4, 0, 0, 3, 0, 0, 0, 0, -2, 10, -7, 4, 0, -1, 3, -24, -2, 0, + -1, 4, 0, 2, -1, 0, -5, 10, 2, -1, -3, 4, -1, 11, -1, 0, -4, 1, 0, -1, 0, 0, -2, -6, 0, 0, 1, -2, 0, 24, 0, 0, 1, + 2, 1, 0, 0, 0, -1, -17, 0, 0, 0, -1, -26, 0, 0, 0, 0, -1, 0, 0, 0, 0, 22, -2, -1, 0, 0, 2, -7, -3, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 2, 1, -1, -2, -4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 10, + 6, -2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, -3, -19, -9, -13, -13, 14, -2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, -1, 0, 0, 0, + -2, 14, 2, -2, -2, 6, 8, 0, 0, 1, -2, 0, 0, 0, 1, 0, 1, 0, -17, -6, 1, -8, -9, 0, 0, 1, -1, 0, 1, 1, -1, 0, 0, 0, + -2, -1, 0, 0, -2, 0, 0, 1, 1, -1, -8, 0, 3, -1, 0, 1, 1, 3, 1, 0, 0, 0, 1, -7, 13, 13, 12, 14, -7, 0, 0, 0, -1, 1, + 9, -7, 2, 0, 0, -1, 2, 0, 0, -8, 4, 0, -9, 2, 2, 0, 1, -12, 3, 0, 0, 0, 0, 0, 0, 0, -2, 1, 9, 10, -4, 2, 35, 4, 0, + 0, 0, 0, 1, 0, 0, -1, 1, 0, -1, -10, -8, -21, -13, 3, 0, -1, 1, -1, 0, 1, -1, 0, 1, 0, 1, 1, -5, 14, 14, -2, 0, 0, + 0, 2, 3, 2, 0, 1, 1, 0, 1, 0, 0, 1, 1, -1, 0, 0, -3, -1, 0, 0, -2, 2, 0, -1, -1, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, + 0, 2, -12, -4, 1, 1, 2, -20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 19, 16, 15, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 0, 0, -1, 3, -2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 3, 0, 0, -1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 2, 2, -1, 1, -1, 3, 4, 0, + 0, 1, 2, 0, 0, 0, 1, 2, -1, 0, 0, 0, 0, 1, 0, 0, 0, -2, -1, -1, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, -2, 0, 0, + 0, 2, -2, 0, 0, 0, -1, 1, -1, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, -1, -1, 1, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, -1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -2, + 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -9, -1, -2, 5, 1, 1, 0, 1, 33, -2, -2, 5, 1, 2, -3, -4, -14, -3, 2, 76, 4, 5, 17, + 3, -37, 1, -15, -8, 3, -1, 80, -5, 14, -2, -11, 2, 7, -16, 15, -2, 3, -2, 29, -2, 1, -51, -8, 6, -4, 3, 4, 6, 4, + 35, -1, -1, 1, -2, 8, -3, -7, 17, 1, 1, -4, 35, -4, 34, -5, 2, -1, 3, 0, 0, 2, 3, -17, 46, 10, -2, 4, -9, -5, -2, + 3, 4, 0, 1, 4, 28, 33, 2, -3, 14, -6, -1, 0, -4, -1, -7, 38, 60, -5, -3, 2, 6, 1, 4, 4, -3, 1, -1, -3, -2, -7, -28, + -5, -31, 8, 2, 0, 0, -8, 56, 85, 24, -3, 0, -10, 3, -4, 4, 2, 1, 0, 1, 4, 2, 4, 15, 10, 6, -9, -1, -1, -4, 1, 5, 2, + 0, 4, 1, 13, -3, 10, -11, -4, 2, 7, -1, 0, -2, 1, -14, -3, 2, 2, 0, -1, -1, 3, 0, -5, -9, -4, -2, 2, -5, -28, 1, 7, + 17, 1, 0, 0, 0, -18, 5, 15, -6, 0, 55, -4, 34, -14, 18, -33, 7, -1, -16, 19, -109, -29, 19, 123, 10, -6, -31, 13, + -129, 32, 31, -43, 7, 9, 83, -29, -34, 15, 32, -44, -12, -18, 79, 31, -21, -40, 58, -51, -33, 63, -8, 35, -31, -13, + -10, -20, -44, 102, -11, 9, 2, 17, -136, 4, -58, 208, -49, 6, 4, 11, -83, -38, 84, 54, ]; const CR_DATA_DECODED: [i16; 4096] = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, -13, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, -4, -1, -1, 0, 0, 0, 0, - 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 3, -3, 3, -1, 0, 0, 0, 0, 0, -7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, -7, -4, 0, 0, 0, 0, 0, 0, -2, -1, 0, 2, -6, -4, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 1, 9, 1, 2, 0, 0, 0, 0, 0, -2, 0, 0, 6, 0, -3, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 9, -1, -3, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - -6, -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 4, -1, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 13, -1, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, 2, 0, 0, 0, - 0, 0, -1, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 1, 0, - 0, 0, 0, 1, -1, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -5, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, -1, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -7, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -1, 0, 0, 0, 0, 0, - -2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -2, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, - 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -8, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -4, - 0, 0, 0, 0, 0, -1, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, - 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -2, 0, 0, 0, 1, 1, 0, 0, 0, 0, - 1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, 0, -1, 0, 1, 0, 0, 0, - 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 0, -1, - 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 1, - 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -6, -6, -3, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, -5, 11, 9, 6, 5, 9, - 11, -11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 4, 4, -1, 0, 0, - 0, 0, 0, 0, -1, 11, -10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 3, -4, 0, 0, 0, 0, 0, 0, -1, -4, -1, -1, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -3, -3, -2, -2, -4, -1, 1, 3, 0, 0, 0, 0, 0, - 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, - 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 6, 8, -5, -7, -5, -4, -5, -4, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -8, 1, 0, -1, 0, -1, -2, 0, 1, -6, 4, 0, -1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 4, -4, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -1, 1, -4, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -5, - 4, 4, 3, 3, 4, 4, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 4, - -5, 0, 1, -1, -3, -3, -1, 1, -3, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, - 0, 1, 0, 0, 5, 0, -5, -6, -5, -1, 6, 4, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, - 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 2, 1, -2, -2, 1, 0, - -1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 2, 0, 0, 0, 0, 0, 0, 0, 1, 7, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 5, 6, 4, 3, -5, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 1, -1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, -4, 0, 1, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0, -1, -1, 3, 13, -2, 1, -2, 2, 7, - -15, -1, 0, 0, 1, -1, 0, 0, 0, -3, 25, 2, -1, 0, 0, 20, -7, 1, -1, 0, -2, 6, -3, 0, 0, -20, 0, - -1, -1, -2, -4, 5, 5, -1, 0, -1, 1, -3, -17, 0, 1, -5, -7, 2, 0, -3, -3, -13, 12, 0, 0, 1, 0, - 7, -2, 0, 1, 28, 0, 1, -1, 2, 10, -16, 1, 0, 1, -1, 0, 3, 1, 0, -1, 0, -3, -2, 2, 0, 7, -5, -2, - 0, 0, 0, -1, -6, 0, 0, -2, 1, -3, -1, -1, 0, -10, -2, 4, 0, 0, 1, -1, -2, 0, 0, 3, -1, 0, 0, 1, - 3, -12, 9, -5, 0, 0, -2, 16, 1, 0, -1, 2, 0, -4, 2, 0, 7, -11, -2, 1, 0, -1, 0, -7, 0, 0, -3, - -1, 0, 1, -1, 0, 2, 6, 0, 0, 0, 0, 0, -16, 0, 0, 1, -1, -1, -1, 1, 0, 1, 12, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -14, 1, 0, 0, 0, -2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 3, 1, 3, - -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -13, -8, 3, 0, - 0, 0, 0, 0, 0, 0, -1, -1, 0, -3, 3, 27, 12, 19, 20, -21, 3, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, - -1, 0, 0, 0, 0, -5, -1, 1, 1, -3, -4, 0, 0, -1, 5, -1, 0, 0, -2, 0, -1, -2, 7, 2, 0, 5, 3, 0, - 0, -1, 0, -1, 0, -2, 1, -1, -1, 1, 1, -1, 0, -2, 7, 0, 0, -1, -1, 3, 5, 1, -2, 2, -1, 0, 0, 1, - 0, 0, 0, 0, -1, 11, -17, -14, -10, -14, 7, -1, 1, 0, 0, 0, 2, -3, 0, 0, 0, 3, 2, 0, 0, 9, -5, - 0, 11, -2, -1, -1, -2, 5, -1, 0, 0, 0, 0, 1, 0, 0, 3, -2, -11, -10, 2, -2, -18, -3, 0, 0, 0, - -1, -2, 0, 0, 0, -2, 1, 2, 11, 9, 12, 9, -2, 0, 0, 0, 1, -1, -3, 2, 0, -1, 0, 0, 0, 1, -3, -3, - 0, 0, 0, -1, 1, 2, 1, -4, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, -2, -1, -1, 0, 3, 1, 0, 0, 0, - 0, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 4, 3, 0, -1, 0, 14, -3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, - -11, -11, -9, -15, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 1, 0, -1, 2, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -2, - 0, 0, -2, -2, 0, 0, 0, -1, -2, 1, 0, 0, 0, 0, -2, -3, 0, 0, 3, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, - 0, 0, 0, 0, -1, 3, 0, 1, -1, -2, 2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, -1, 2, 1, 2, -1, - 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 0, 0, 0, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 4, 5, -8, -2, 0, 1, -1, -43, -7, -3, -4, 1, -1, 1, 5, - 22, -1, -1, -54, -2, -2, -4, -4, 52, -5, 17, 7, 1, -3, -33, -4, -25, 1, 15, 3, 2, 2, -11, 4, - -14, 5, -34, 6, -1, 35, 6, 11, 4, -2, -5, -4, -7, -21, 1, -2, 0, 1, -6, 1, 3, -11, 0, -2, 6, - -45, 14, -45, 4, -1, 1, -3, 1, 1, -7, -7, 5, -19, -4, 2, -4, 8, 4, -1, 3, 0, 0, 2, -15, -27, - -36, -2, 5, -1, 14, 2, -5, 7, 0, 8, -39, -41, 6, 1, 4, -12, -6, 0, -2, -2, -1, -4, -5, -3, 6, - 14, -2, 22, -5, -2, -1, 0, 5, -33, -51, -15, 2, 0, 14, -1, 8, -5, -1, 0, 0, -1, -2, -5, -5, - -10, -5, -3, 2, 2, 5, 5, -4, -8, -1, 0, -3, 2, -13, 5, -14, 15, -1, -1, -12, 1, -1, 2, -3, 15, - -1, 3, -3, 1, 5, -4, -2, 0, 2, 6, 2, -4, 0, 2, 15, 0, -5, -12, 0, 0, 0, 0, 12, -3, -10, 4, 0, - -68, 7, -44, 27, -28, 42, -3, 3, 1, -23, 147, 12, 8, -162, 6, 3, 10, -12, 147, -60, -13, -24, - -1, 1, -44, 40, 33, -24, -22, 48, -14, -22, -38, -3, -1, 61, -68, 60, -4, -37, 1, -18, 2, 29, - 29, 8, 18, -74, 10, 5, -17, -22, 108, -16, 33, -124, 22, -7, 0, -4, 48, 26, -46, -33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, + 0, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, + -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -13, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, -4, -1, -1, 0, 0, 0, 0, 0, + 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, -3, 3, + -1, 0, 0, 0, 0, 0, -7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, + 0, -7, -4, 0, 0, 0, 0, 0, 0, -2, -1, 0, 2, -6, -4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 1, 9, 1, 2, + 0, 0, 0, 0, 0, -2, 0, 0, 6, 0, -3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 9, -1, -3, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -6, + -3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, -1, -6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 13, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, 2, 0, 0, 0, 0, 0, -1, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, + 0, 0, 0, -1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, -1, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -5, 0, 0, 0, 0, 0, 0, 2, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -1, -1, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -3, -3, 2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, -7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, -1, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -2, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, + 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -8, 0, 0, 0, 0, 0, + 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, -1, 2, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -2, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, 0, -1, 0, 1, 0, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 0, -1, 1, 1, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -6, -6, -3, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -10, -5, 11, 9, 6, 5, 9, 11, -11, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 4, 4, -1, 0, 0, 0, 0, 0, 0, -1, 11, -10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 3, -4, 0, 0, 0, 0, 0, 0, -1, -4, -1, -1, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -3, -3, -2, -2, -4, -1, 1, 3, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 1, -1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 6, 8, -5, -7, -5, -4, -5, -4, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -2, -8, 1, 0, -1, 0, -1, -2, 0, 1, -6, 4, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, + 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 4, -4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, -1, 1, -4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, -1, 0, -5, 4, 4, 3, 3, 4, 4, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, + 4, -5, 0, 1, -1, -3, -3, -1, 1, -3, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -3, 0, 1, 0, 0, 5, + 0, -5, -6, -5, -1, 6, 4, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, -1, 0, + 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, + 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 2, 1, -2, -2, 1, 0, -1, 0, -1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 2, 0, 0, 0, 0, 0, 0, 0, 1, 7, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 5, 6, 4, 3, -5, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, + 0, 1, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0, -1, -1, 3, 13, -2, 1, -2, 2, 7, -15, -1, 0, 0, 1, -1, 0, 0, 0, -3, 25, 2, -1, + 0, 0, 20, -7, 1, -1, 0, -2, 6, -3, 0, 0, -20, 0, -1, -1, -2, -4, 5, 5, -1, 0, -1, 1, -3, -17, 0, 1, -5, -7, 2, 0, + -3, -3, -13, 12, 0, 0, 1, 0, 7, -2, 0, 1, 28, 0, 1, -1, 2, 10, -16, 1, 0, 1, -1, 0, 3, 1, 0, -1, 0, -3, -2, 2, 0, + 7, -5, -2, 0, 0, 0, -1, -6, 0, 0, -2, 1, -3, -1, -1, 0, -10, -2, 4, 0, 0, 1, -1, -2, 0, 0, 3, -1, 0, 0, 1, 3, -12, + 9, -5, 0, 0, -2, 16, 1, 0, -1, 2, 0, -4, 2, 0, 7, -11, -2, 1, 0, -1, 0, -7, 0, 0, -3, -1, 0, 1, -1, 0, 2, 6, 0, 0, + 0, 0, 0, -16, 0, 0, 1, -1, -1, -1, 1, 0, 1, 12, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 1, 0, 0, 0, -2, 4, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 3, 1, 3, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, -13, -8, 3, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -3, 3, 27, 12, 19, 20, -21, 3, 0, 0, 0, 0, 0, -1, -1, 0, + -1, 0, -1, 0, 0, 0, 0, -5, -1, 1, 1, -3, -4, 0, 0, -1, 5, -1, 0, 0, -2, 0, -1, -2, 7, 2, 0, 5, 3, 0, 0, -1, 0, -1, + 0, -2, 1, -1, -1, 1, 1, -1, 0, -2, 7, 0, 0, -1, -1, 3, 5, 1, -2, 2, -1, 0, 0, 1, 0, 0, 0, 0, -1, 11, -17, -14, -10, + -14, 7, -1, 1, 0, 0, 0, 2, -3, 0, 0, 0, 3, 2, 0, 0, 9, -5, 0, 11, -2, -1, -1, -2, 5, -1, 0, 0, 0, 0, 1, 0, 0, 3, + -2, -11, -10, 2, -2, -18, -3, 0, 0, 0, -1, -2, 0, 0, 0, -2, 1, 2, 11, 9, 12, 9, -2, 0, 0, 0, 1, -1, -3, 2, 0, -1, + 0, 0, 0, 1, -3, -3, 0, 0, 0, -1, 1, 2, 1, -4, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, -2, -1, -1, 0, 3, 1, 0, 0, 0, + 0, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 4, 3, 0, -1, 0, 14, -3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, -11, -11, -9, -15, -2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -6, 1, 0, -1, 2, -4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, + 0, 0, -1, -1, 0, 0, 0, -1, -2, 0, 0, -2, -2, 0, 0, 0, -1, -2, 1, 0, 0, 0, 0, -2, -3, 0, 0, 3, 1, 1, 0, 0, -1, -1, + 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0, 1, -1, -2, 2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, -1, 2, 1, 2, -1, 0, 0, 0, + -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 4, 5, -8, -2, 0, 1, -1, -43, -7, -3, -4, 1, -1, + 1, 5, 22, -1, -1, -54, -2, -2, -4, -4, 52, -5, 17, 7, 1, -3, -33, -4, -25, 1, 15, 3, 2, 2, -11, 4, -14, 5, -34, 6, + -1, 35, 6, 11, 4, -2, -5, -4, -7, -21, 1, -2, 0, 1, -6, 1, 3, -11, 0, -2, 6, -45, 14, -45, 4, -1, 1, -3, 1, 1, -7, + -7, 5, -19, -4, 2, -4, 8, 4, -1, 3, 0, 0, 2, -15, -27, -36, -2, 5, -1, 14, 2, -5, 7, 0, 8, -39, -41, 6, 1, 4, -12, + -6, 0, -2, -2, -1, -4, -5, -3, 6, 14, -2, 22, -5, -2, -1, 0, 5, -33, -51, -15, 2, 0, 14, -1, 8, -5, -1, 0, 0, -1, + -2, -5, -5, -10, -5, -3, 2, 2, 5, 5, -4, -8, -1, 0, -3, 2, -13, 5, -14, 15, -1, -1, -12, 1, -1, 2, -3, 15, -1, 3, + -3, 1, 5, -4, -2, 0, 2, 6, 2, -4, 0, 2, 15, 0, -5, -12, 0, 0, 0, 0, 12, -3, -10, 4, 0, -68, 7, -44, 27, -28, 42, + -3, 3, 1, -23, 147, 12, 8, -162, 6, 3, 10, -12, 147, -60, -13, -24, -1, 1, -44, 40, 33, -24, -22, 48, -14, -22, + -38, -3, -1, 61, -68, 60, -4, -37, 1, -18, 2, 29, 29, 8, 18, -74, 10, 5, -17, -22, 108, -16, 33, -124, 22, -7, 0, + -4, 48, 26, -46, -33, ]; diff --git a/ironrdp/src/codecs/rfx/tests.rs b/ironrdp/src/codecs/rfx/tests.rs index c2e63a3a..c510aa4e 100644 --- a/ironrdp/src/codecs/rfx/tests.rs +++ b/ironrdp/src/codecs/rfx/tests.rs @@ -1,6 +1,7 @@ use lazy_static::lazy_static; -use super::{data_messages::*, header_messages::*}; +use super::data_messages::*; +use super::header_messages::*; use crate::PduBufferParsing; const SYNC_PDU_BUFFER: [u8; 12] = [ @@ -233,14 +234,8 @@ const FRAME_END_PDU: FrameEndPdu = FrameEndPdu; lazy_static! { static ref CHANNELS_PDU: ChannelsPdu = ChannelsPdu(vec![ - Channel { - width: 64, - height: 64, - }, - Channel { - width: 32, - height: 32, - } + Channel { width: 64, height: 64 }, + Channel { width: 32, height: 32 } ]); static ref REGION_PDU: RegionPdu = RegionPdu { rectangles: vec![ @@ -321,10 +316,7 @@ fn from_buffer_for_pdu_with_codec_channel_header_returns_error_on_small_buffer() #[test] fn from_buffer_correctly_parses_sync_pdu() { - assert_eq!( - SYNC_PDU, - SyncPdu::from_buffer(SYNC_PDU_BUFFER.as_ref()).unwrap() - ); + assert_eq!(SYNC_PDU, SyncPdu::from_buffer(SYNC_PDU_BUFFER.as_ref()).unwrap()); } #[test] @@ -332,9 +324,7 @@ fn to_buffer_correctly_serializes_sync_pdu() { let expected = SYNC_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - SYNC_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + SYNC_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -364,10 +354,7 @@ fn to_buffer_correctly_serializes_codec_versions_pdu() { #[test] fn buffer_length_is_correct_for_codec_versions_pdu() { - assert_eq!( - CODEC_VERSIONS_PDU_BUFFER.len(), - CODEC_VERSIONS_PDU.buffer_length() - ); + assert_eq!(CODEC_VERSIONS_PDU_BUFFER.len(), CODEC_VERSIONS_PDU.buffer_length()); } #[test] @@ -383,17 +370,13 @@ fn to_buffer_correctly_serializes_channels_pdu() { let expected = CHANNELS_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - CHANNELS_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + CHANNELS_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } #[test] fn from_buffer_returns_error_on_invalid_data_length_for_channels_pdu() { - assert!( - ChannelsPdu::from_buffer(CHANNELS_PDU_BUFFER_WITH_INVALID_DATA_LENGTH.as_ref()).is_err() - ); + assert!(ChannelsPdu::from_buffer(CHANNELS_PDU_BUFFER_WITH_INVALID_DATA_LENGTH.as_ref()).is_err()); } #[test] @@ -424,9 +407,7 @@ fn to_buffer_correctly_serializes_context_pdu() { let expected = CONTEXT_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - CONTEXT_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + CONTEXT_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -448,18 +429,13 @@ fn to_buffer_correctly_serializes_frame_begin_pdu() { let expected = FRAME_BEGIN_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - FRAME_BEGIN_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + FRAME_BEGIN_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } #[test] fn buffer_length_is_correct_for_frame_begin_pdu() { - assert_eq!( - FRAME_BEGIN_PDU_BUFFER.len(), - FRAME_BEGIN_PDU.buffer_length() - ); + assert_eq!(FRAME_BEGIN_PDU_BUFFER.len(), FRAME_BEGIN_PDU.buffer_length()); } #[test] @@ -475,9 +451,7 @@ fn to_buffer_correctly_serializes_frame_end_pdu() { let expected = FRAME_END_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - FRAME_END_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + FRAME_END_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -488,10 +462,7 @@ fn buffer_length_is_correct_for_frame_end_pdu() { #[test] fn from_buffer_correctly_parses_region_pdu() { - assert_eq!( - *REGION_PDU, - RegionPdu::from_buffer(REGION_PDU_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*REGION_PDU, RegionPdu::from_buffer(REGION_PDU_BUFFER.as_ref()).unwrap()); } #[test] @@ -499,9 +470,7 @@ fn to_buffer_correctly_serializes_region_pdu() { let expected = REGION_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - REGION_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + REGION_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -512,18 +481,12 @@ fn buffer_length_is_correct_for_region_pdu() { #[test] fn from_buffer_returns_error_on_invalid_number_of_quants_for_tile_set_pdu() { - assert!(TileSetPdu::from_buffer_consume( - &mut TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS.as_ref() - ) - .is_err()); + assert!(TileSetPdu::from_buffer_consume(&mut TILESET_PDU_BUFFER_WITH_INVALID_NUMBER_OF_QUANTS.as_ref()).is_err()); } #[test] fn from_buffer_returns_error_on_invalid_tiles_data_size_for_tile_set_pdu() { - assert!(TileSetPdu::from_buffer_consume( - &mut TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE.as_ref() - ) - .is_err()); + assert!(TileSetPdu::from_buffer_consume(&mut TILESET_PDU_BUFFER_WITH_INVALID_TILES_DATA_SIZE.as_ref()).is_err()); } #[test] @@ -539,9 +502,7 @@ fn to_buffer_correctly_serializes_tile_set_pdu() { let expected = TILESET_PDU_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - TILESET_PDU - .to_buffer_consume(&mut buffer.as_mut_slice()) - .unwrap(); + TILESET_PDU.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp/src/gcc.rs b/ironrdp/src/gcc.rs index c1ebb71b..8a61ee30 100644 --- a/ironrdp/src/gcc.rs +++ b/ironrdp/src/gcc.rs @@ -11,39 +11,6 @@ mod multi_transport_channel_data; mod network_data; mod security_data; -pub use self::{ - cluster_data::{ClientClusterData, ClusterDataError, RedirectionFlags, RedirectionVersion}, - conference_create::{ConferenceCreateRequest, ConferenceCreateResponse}, - core_data::{ - client::{ - ClientColorDepth, ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, - ColorDepth, ConnectionType, HighColorDepth, KeyboardType, SecureAccessSequence, - SupportedColorDepths, IME_FILE_NAME_SIZE, - }, - server::{ServerCoreData, ServerCoreOptionalData, ServerEarlyCapabilityFlags}, - CoreDataError, RdpVersion, - }, - message_channel_data::{ClientMessageChannelData, ServerMessageChannelData}, - monitor_data::{ - ClientMonitorData, Monitor, MonitorDataError, MonitorFlags, MONITOR_COUNT_SIZE, - MONITOR_FLAGS_SIZE, MONITOR_SIZE, - }, - monitor_extended_data::{ - ClientMonitorExtendedData, ExtendedMonitorInfo, MonitorExtendedDataError, - MonitorOrientation, - }, - multi_transport_channel_data::{ - MultiTransportChannelData, MultiTransportChannelDataError, MultiTransportFlags, - }, - network_data::{ - Channel, ChannelOptions, ClientNetworkData, NetworkDataError, ServerNetworkData, - }, - security_data::{ - ClientSecurityData, EncryptionLevel, EncryptionMethod, SecurityDataError, - ServerSecurityData, - }, -}; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -51,6 +18,28 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::cluster_data::{ClientClusterData, ClusterDataError, RedirectionFlags, RedirectionVersion}; +pub use self::conference_create::{ConferenceCreateRequest, ConferenceCreateResponse}; +pub use self::core_data::client::{ + ClientColorDepth, ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ColorDepth, ConnectionType, + HighColorDepth, KeyboardType, SecureAccessSequence, SupportedColorDepths, IME_FILE_NAME_SIZE, +}; +pub use self::core_data::server::{ServerCoreData, ServerCoreOptionalData, ServerEarlyCapabilityFlags}; +pub use self::core_data::{CoreDataError, RdpVersion}; +pub use self::message_channel_data::{ClientMessageChannelData, ServerMessageChannelData}; +pub use self::monitor_data::{ + ClientMonitorData, Monitor, MonitorDataError, MonitorFlags, MONITOR_COUNT_SIZE, MONITOR_FLAGS_SIZE, MONITOR_SIZE, +}; +pub use self::monitor_extended_data::{ + ClientMonitorExtendedData, ExtendedMonitorInfo, MonitorExtendedDataError, MonitorOrientation, +}; +pub use self::multi_transport_channel_data::{ + MultiTransportChannelData, MultiTransportChannelDataError, MultiTransportFlags, +}; +pub use self::network_data::{Channel, ChannelOptions, ClientNetworkData, NetworkDataError, ServerNetworkData}; +pub use self::security_data::{ + ClientSecurityData, EncryptionLevel, EncryptionMethod, SecurityDataError, ServerSecurityData, +}; use crate::{impl_from_error, PduParsing}; macro_rules! user_header_try { @@ -103,34 +92,21 @@ impl PduParsing for ClientGccBlocks { let mut monitor_extended = None; loop { - let user_header = - user_header_try!(UserDataHeader::::from_buffer(&mut buffer)); + let user_header = user_header_try!(UserDataHeader::::from_buffer(&mut buffer)); match user_header.block_type { - ClientGccType::CoreData => { - core = Some(ClientCoreData::from_buffer( - user_header.block_data.as_slice(), - )?) - } + ClientGccType::CoreData => core = Some(ClientCoreData::from_buffer(user_header.block_data.as_slice())?), ClientGccType::SecurityData => { - security = Some(ClientSecurityData::from_buffer( - user_header.block_data.as_slice(), - )?) + security = Some(ClientSecurityData::from_buffer(user_header.block_data.as_slice())?) } ClientGccType::NetworkData => { - network = Some(ClientNetworkData::from_buffer( - user_header.block_data.as_slice(), - )?) + network = Some(ClientNetworkData::from_buffer(user_header.block_data.as_slice())?) } ClientGccType::ClusterData => { - cluster = Some(ClientClusterData::from_buffer( - user_header.block_data.as_slice(), - )?) + cluster = Some(ClientClusterData::from_buffer(user_header.block_data.as_slice())?) } ClientGccType::MonitorData => { - monitor = Some(ClientMonitorData::from_buffer( - user_header.block_data.as_slice(), - )?) + monitor = Some(ClientMonitorData::from_buffer(user_header.block_data.as_slice())?) } ClientGccType::MessageChannelData => { message_channel = Some(ClientMessageChannelData::from_buffer( @@ -151,12 +127,8 @@ impl PduParsing for ClientGccBlocks { } Ok(Self { - core: core.ok_or(GccError::RequiredClientDataBlockIsAbsent( - ClientGccType::CoreData, - ))?, - security: security.ok_or(GccError::RequiredClientDataBlockIsAbsent( - ClientGccType::SecurityData, - ))?, + core: core.ok_or(GccError::RequiredClientDataBlockIsAbsent(ClientGccType::CoreData))?, + security: security.ok_or(GccError::RequiredClientDataBlockIsAbsent(ClientGccType::SecurityData))?, network, cluster, monitor, @@ -167,33 +139,25 @@ impl PduParsing for ClientGccBlocks { } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - UserDataHeader::from_gcc_block(ClientGccType::CoreData, &self.core)? - .to_buffer(&mut buffer)?; - UserDataHeader::from_gcc_block(ClientGccType::SecurityData, &self.security)? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::CoreData, &self.core)?.to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::SecurityData, &self.security)?.to_buffer(&mut buffer)?; if let Some(ref network) = self.network { - UserDataHeader::from_gcc_block(ClientGccType::NetworkData, network)? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::NetworkData, network)?.to_buffer(&mut buffer)?; } if let Some(ref cluster) = self.cluster { - UserDataHeader::from_gcc_block(ClientGccType::ClusterData, cluster)? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::ClusterData, cluster)?.to_buffer(&mut buffer)?; } if let Some(ref monitor) = self.monitor { - UserDataHeader::from_gcc_block(ClientGccType::MonitorData, monitor)? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::MonitorData, monitor)?.to_buffer(&mut buffer)?; } if let Some(ref message_channel) = self.message_channel { UserDataHeader::from_gcc_block(ClientGccType::MessageChannelData, message_channel)? .to_buffer(&mut buffer)?; } if let Some(ref multi_transport_channel) = self.multi_transport_channel { - UserDataHeader::from_gcc_block( - ClientGccType::MultiTransportChannelData, - multi_transport_channel, - )? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ClientGccType::MultiTransportChannelData, multi_transport_channel)? + .to_buffer(&mut buffer)?; } if let Some(ref monitor_extended) = self.monitor_extended { UserDataHeader::from_gcc_block(ClientGccType::MonitorExtendedData, monitor_extended)? @@ -204,8 +168,7 @@ impl PduParsing for ClientGccBlocks { } fn buffer_length(&self) -> usize { - let mut size = - self.core.buffer_length() + self.security.buffer_length() + USER_DATA_HEADER_SIZE * 2; + let mut size = self.core.buffer_length() + self.security.buffer_length() + USER_DATA_HEADER_SIZE * 2; if let Some(ref network) = self.network { size += network.buffer_length() + USER_DATA_HEADER_SIZE; @@ -259,24 +222,15 @@ impl PduParsing for ServerGccBlocks { let mut multi_transport_channel = None; loop { - let user_header = - user_header_try!(UserDataHeader::::from_buffer(&mut buffer)); + let user_header = user_header_try!(UserDataHeader::::from_buffer(&mut buffer)); match user_header.block_type { - ServerGccType::CoreData => { - core = Some(ServerCoreData::from_buffer( - user_header.block_data.as_slice(), - )?) - } + ServerGccType::CoreData => core = Some(ServerCoreData::from_buffer(user_header.block_data.as_slice())?), ServerGccType::NetworkData => { - network = Some(ServerNetworkData::from_buffer( - user_header.block_data.as_slice(), - )?) + network = Some(ServerNetworkData::from_buffer(user_header.block_data.as_slice())?) } ServerGccType::SecurityData => { - security = Some(ServerSecurityData::from_buffer( - user_header.block_data.as_slice(), - )?) + security = Some(ServerSecurityData::from_buffer(user_header.block_data.as_slice())?) } ServerGccType::MessageChannelData => { message_channel = Some(ServerMessageChannelData::from_buffer( @@ -292,38 +246,26 @@ impl PduParsing for ServerGccBlocks { } Ok(Self { - core: core.ok_or(GccError::RequiredServerDataBlockIsAbsent( - ServerGccType::CoreData, - ))?, - network: network.ok_or(GccError::RequiredServerDataBlockIsAbsent( - ServerGccType::NetworkData, - ))?, - security: security.ok_or(GccError::RequiredServerDataBlockIsAbsent( - ServerGccType::SecurityData, - ))?, + core: core.ok_or(GccError::RequiredServerDataBlockIsAbsent(ServerGccType::CoreData))?, + network: network.ok_or(GccError::RequiredServerDataBlockIsAbsent(ServerGccType::NetworkData))?, + security: security.ok_or(GccError::RequiredServerDataBlockIsAbsent(ServerGccType::SecurityData))?, message_channel, multi_transport_channel, }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - UserDataHeader::from_gcc_block(ServerGccType::CoreData, &self.core)? - .to_buffer(&mut buffer)?; - UserDataHeader::from_gcc_block(ServerGccType::NetworkData, &self.network)? - .to_buffer(&mut buffer)?; - UserDataHeader::from_gcc_block(ServerGccType::SecurityData, &self.security)? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ServerGccType::CoreData, &self.core)?.to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ServerGccType::NetworkData, &self.network)?.to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ServerGccType::SecurityData, &self.security)?.to_buffer(&mut buffer)?; if let Some(ref message_channel) = self.message_channel { UserDataHeader::from_gcc_block(ServerGccType::MessageChannelData, message_channel)? .to_buffer(&mut buffer)?; } if let Some(ref multi_transport_channel) = self.multi_transport_channel { - UserDataHeader::from_gcc_block( - ServerGccType::MultiTransportChannelData, - multi_transport_channel, - )? - .to_buffer(&mut buffer)?; + UserDataHeader::from_gcc_block(ServerGccType::MultiTransportChannelData, multi_transport_channel)? + .to_buffer(&mut buffer)?; } Ok(()) @@ -383,10 +325,7 @@ impl UserDataHeader { let mut block_data = Vec::with_capacity(gcc_block.buffer_length()); gcc_block.to_buffer(&mut block_data)?; - Ok(Self { - block_type, - block_data, - }) + Ok(Self { block_type, block_data }) } fn block_length(&self) -> usize { @@ -398,8 +337,7 @@ impl PduParsing for UserDataHeader { type Error = GccError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let block_type = - T::from_u16(buffer.read_u16::()?).ok_or(GccError::InvalidGccType)?; + let block_type = T::from_u16(buffer.read_u16::()?).ok_or(GccError::InvalidGccType)?; let block_length = buffer.read_u16::()?; if block_length <= USER_DATA_HEADER_SIZE as u16 { @@ -412,10 +350,7 @@ impl PduParsing for UserDataHeader { let mut block_data = vec![0; block_length as usize - USER_DATA_HEADER_SIZE]; buffer.read_exact(&mut block_data)?; - Ok(Self { - block_type, - block_data, - }) + Ok(Self { block_type, block_data }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { @@ -455,15 +390,9 @@ pub enum GccError { InvalidConferenceCreateRequest(String), #[fail(display = "Invalid Conference create response: {}", _0)] InvalidConferenceCreateResponse(String), - #[fail( - display = "A server did not send the required GCC data block: {:?}", - _0 - )] + #[fail(display = "A server did not send the required GCC data block: {:?}", _0)] RequiredClientDataBlockIsAbsent(ClientGccType), - #[fail( - display = "A client did not send the required GCC data block: {:?}", - _0 - )] + #[fail(display = "A client did not send the required GCC data block: {:?}", _0)] RequiredServerDataBlockIsAbsent(ServerGccType), } @@ -478,8 +407,4 @@ impl_from_error!( GccError, GccError::MultiTransportChannelError ); -impl_from_error!( - MonitorExtendedDataError, - GccError, - GccError::MonitorExtendedError -); +impl_from_error!(MonitorExtendedDataError, GccError, GccError::MonitorExtendedError); diff --git a/ironrdp/src/gcc/cluster_data.rs b/ironrdp/src/gcc/cluster_data.rs index 71e90bdf..ef44e9cc 100644 --- a/ironrdp/src/gcc/cluster_data.rs +++ b/ironrdp/src/gcc/cluster_data.rs @@ -32,10 +32,9 @@ impl PduParsing for ClientClusterData { let flags = RedirectionFlags::from_bits(flags_with_version & !REDIRECTION_VERSION_MASK) .ok_or(ClusterDataError::InvalidRedirectionFlags)?; - let redirection_version = RedirectionVersion::from_u8( - ((flags_with_version & REDIRECTION_VERSION_MASK) >> 2) as u8, - ) - .ok_or(ClusterDataError::InvalidRedirectionFlags)?; + let redirection_version = + RedirectionVersion::from_u8(((flags_with_version & REDIRECTION_VERSION_MASK) >> 2) as u8) + .ok_or(ClusterDataError::InvalidRedirectionFlags)?; Ok(Self { flags, @@ -45,8 +44,7 @@ impl PduParsing for ClientClusterData { } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - let flags_with_version = - self.flags.bits() | (self.redirection_version.to_u32().unwrap() << 2); + let flags_with_version = self.flags.bits() | (self.redirection_version.to_u32().unwrap() << 2); buffer.write_u32::(flags_with_version)?; buffer.write_u32::(self.redirected_session_id)?; diff --git a/ironrdp/src/gcc/cluster_data/test.rs b/ironrdp/src/gcc/cluster_data/test.rs index 6edcfe9f..13356e32 100644 --- a/ironrdp/src/gcc/cluster_data/test.rs +++ b/ironrdp/src/gcc/cluster_data/test.rs @@ -16,10 +16,7 @@ lazy_static! { fn from_buffer_correctly_parses_client_cluster_data() { let buffer = CLUSTER_DATA_BUFFER.as_ref(); - assert_eq!( - *CLUSTER_DATA, - ClientClusterData::from_buffer(buffer).unwrap() - ); + assert_eq!(*CLUSTER_DATA, ClientClusterData::from_buffer(buffer).unwrap()); } #[test] diff --git a/ironrdp/src/gcc/conference_create.rs b/ironrdp/src/gcc/conference_create.rs index a2f58957..76008763 100644 --- a/ironrdp/src/gcc/conference_create.rs +++ b/ironrdp/src/gcc/conference_create.rs @@ -210,10 +210,7 @@ impl PduParsing for ConferenceCreateResponse { let (_gcc_blocks_buffer_length, _) = per::read_length(&mut stream)?; let gcc_blocks = ServerGccBlocks::from_buffer(&mut stream)?; - Ok(Self { - user_id, - gcc_blocks, - }) + Ok(Self { user_id, gcc_blocks }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/gcc/conference_create/test.rs b/ironrdp/src/gcc/conference_create/test.rs index 70c2a965..efe29cb1 100644 --- a/ironrdp/src/gcc/conference_create/test.rs +++ b/ironrdp/src/gcc/conference_create/test.rs @@ -4,23 +4,22 @@ use super::*; use crate::gcc; const CONFERENCE_CREATE_REQUEST_PREFIX_BUFFER: [u8; 23] = [ - 0x00, 0x05, 0x00, 0x14, 0x7c, 0x00, 0x01, 0x81, 0x28, 0x00, 0x08, 0x00, 0x10, 0x00, 0x01, 0xc0, - 0x00, 0x44, 0x75, 0x63, 0x61, 0x81, 0x1c, + 0x00, 0x05, 0x00, 0x14, 0x7c, 0x00, 0x01, 0x81, 0x28, 0x00, 0x08, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x44, 0x75, + 0x63, 0x61, 0x81, 0x1c, ]; const CONFERENCE_CREATE_RESPONSE_PREFIX_BUFFER: [u8; 24] = [ - 0x00, 0x05, 0x00, 0x14, 0x7c, 0x00, 0x01, 0x81, 0x15, 0x14, 0x76, 0x0a, 0x01, 0x01, 0x00, 0x01, - 0xc0, 0x00, 0x4d, 0x63, 0x44, 0x6e, 0x81, 0x08, + 0x00, 0x05, 0x00, 0x14, 0x7c, 0x00, 0x01, 0x81, 0x15, 0x14, 0x76, 0x0a, 0x01, 0x01, 0x00, 0x01, 0xc0, 0x00, 0x4d, + 0x63, 0x44, 0x6e, 0x81, 0x08, ]; lazy_static! { pub static ref CONFERENCE_CREATE_REQUEST: ConferenceCreateRequest = ConferenceCreateRequest { gcc_blocks: gcc::test::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD.clone(), }; - pub static ref CONFERENCE_CREATE_RESPONSE: ConferenceCreateResponse = - ConferenceCreateResponse { - user_id: 0x79f3, - gcc_blocks: gcc::test::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS.clone(), - }; + pub static ref CONFERENCE_CREATE_RESPONSE: ConferenceCreateResponse = ConferenceCreateResponse { + user_id: 0x79f3, + gcc_blocks: gcc::test::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS.clone(), + }; pub static ref CONFERENCE_CREATE_REQUEST_BUFFER: Vec = { let mut buffer = CONFERENCE_CREATE_REQUEST_PREFIX_BUFFER.to_vec(); buffer.extend(gcc::test::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD_BUFFER.as_slice()); diff --git a/ironrdp/src/gcc/core_data/client.rs b/ironrdp/src/gcc/core_data/client.rs index b6180359..35d2edb9 100644 --- a/ironrdp/src/gcc/core_data/client.rs +++ b/ironrdp/src/gcc/core_data/client.rs @@ -61,8 +61,7 @@ impl ClientCoreData { pub fn client_color_depth(&self) -> ClientColorDepth { if let Some(high_color_depth) = self.optional_data.high_color_depth { if let Some(early_capability_flags) = self.optional_data.early_capability_flags { - if early_capability_flags.contains(ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION) - { + if early_capability_flags.contains(ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION) { ClientColorDepth::Bpp32 } else { From::from(high_color_depth) @@ -82,15 +81,13 @@ impl PduParsing for ClientCoreData { type Error = CoreDataError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let version = RdpVersion::from_u32(buffer.read_u32::()?) - .unwrap_or(RdpVersion::VUnknown); + let version = RdpVersion::from_u32(buffer.read_u32::()?).unwrap_or(RdpVersion::VUnknown); let desktop_width = buffer.read_u16::()?; let desktop_height = buffer.read_u16::()?; - let color_depth = ColorDepth::from_u16(buffer.read_u16::()?) - .ok_or(CoreDataError::InvalidColorDepth)?; - let sec_access_sequence = - SecureAccessSequence::from_u16(buffer.read_u16::()?) - .ok_or(CoreDataError::InvalidSecureAccessSequence)?; + let color_depth = + ColorDepth::from_u16(buffer.read_u16::()?).ok_or(CoreDataError::InvalidColorDepth)?; + let sec_access_sequence = SecureAccessSequence::from_u16(buffer.read_u16::()?) + .ok_or(CoreDataError::InvalidSecureAccessSequence)?; let keyboard_layout = buffer.read_u32::()?; let client_build = buffer.read_u32::()?; @@ -100,8 +97,8 @@ impl PduParsing for ClientCoreData { .trim_end_matches('\u{0}') .into(); - let keyboard_type = KeyboardType::from_u32(buffer.read_u32::()?) - .ok_or(CoreDataError::InvalidKeyboardType)?; + let keyboard_type = + KeyboardType::from_u32(buffer.read_u32::()?).ok_or(CoreDataError::InvalidKeyboardType)?; let keyboard_subtype = buffer.read_u32::()?; let keyboard_functional_keys_count = buffer.read_u32::()?; @@ -196,44 +193,26 @@ impl PduParsing for ClientCoreOptionalData { let mut optional_data = Self::default(); optional_data.post_beta_color_depth = Some( - ColorDepth::from_u16(try_read_optional!( - buffer.read_u16::(), - optional_data - )) - .ok_or(CoreDataError::InvalidPostBetaColorDepth)?, + ColorDepth::from_u16(try_read_optional!(buffer.read_u16::(), optional_data)) + .ok_or(CoreDataError::InvalidPostBetaColorDepth)?, ); - optional_data.client_product_id = Some(try_read_optional!( - buffer.read_u16::(), - optional_data - )); - optional_data.serial_number = Some(try_read_optional!( - buffer.read_u32::(), - optional_data - )); + optional_data.client_product_id = Some(try_read_optional!(buffer.read_u16::(), optional_data)); + optional_data.serial_number = Some(try_read_optional!(buffer.read_u32::(), optional_data)); optional_data.high_color_depth = Some( - HighColorDepth::from_u16(try_read_optional!( - buffer.read_u16::(), - optional_data - )) - .ok_or(CoreDataError::InvalidHighColorDepth)?, + HighColorDepth::from_u16(try_read_optional!(buffer.read_u16::(), optional_data)) + .ok_or(CoreDataError::InvalidHighColorDepth)?, ); optional_data.supported_color_depths = Some( - SupportedColorDepths::from_bits(try_read_optional!( - buffer.read_u16::(), - optional_data - )) - .ok_or(CoreDataError::InvalidSupportedColorDepths)?, + SupportedColorDepths::from_bits(try_read_optional!(buffer.read_u16::(), optional_data)) + .ok_or(CoreDataError::InvalidSupportedColorDepths)?, ); optional_data.early_capability_flags = Some( - ClientEarlyCapabilityFlags::from_bits(try_read_optional!( - buffer.read_u16::(), - optional_data - )) - .ok_or(CoreDataError::InvalidEarlyCapabilityFlags)?, + ClientEarlyCapabilityFlags::from_bits(try_read_optional!(buffer.read_u16::(), optional_data)) + .ok_or(CoreDataError::InvalidEarlyCapabilityFlags)?, ); let mut dig_product_id_buffer = [0; DIG_PRODUCT_ID_SIZE]; @@ -252,28 +231,17 @@ impl PduParsing for ClientCoreOptionalData { try_read_optional!(buffer.read_u8(), optional_data); // pad1octet optional_data.server_selected_protocol = Some( - nego::SecurityProtocol::from_bits(try_read_optional!( - buffer.read_u32::(), - optional_data - )) - .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, + nego::SecurityProtocol::from_bits(try_read_optional!(buffer.read_u32::(), optional_data)) + .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, ); - optional_data.desktop_physical_width = Some(try_read_optional!( - buffer.read_u32::(), - optional_data - )); + optional_data.desktop_physical_width = + Some(try_read_optional!(buffer.read_u32::(), optional_data)); // physical height must be present, if the physical width is present optional_data.desktop_physical_height = Some(buffer.read_u32::()?); - optional_data.desktop_orientation = Some(try_read_optional!( - buffer.read_u16::(), - optional_data - )); - optional_data.desktop_scale_factor = Some(try_read_optional!( - buffer.read_u32::(), - optional_data - )); + optional_data.desktop_orientation = Some(try_read_optional!(buffer.read_u16::(), optional_data)); + optional_data.desktop_scale_factor = Some(try_read_optional!(buffer.read_u32::(), optional_data)); // device scale factor must be present, if the desktop scale factor is present optional_data.device_scale_factor = Some(buffer.read_u32::()?); @@ -292,19 +260,15 @@ impl PduParsing for ClientCoreOptionalData { .write_u32::(*value)); try_write_optional!(self.high_color_depth, |value: &HighColorDepth| buffer + .write_u16::(value.to_u16().unwrap())); + + try_write_optional!(self.supported_color_depths, |value: &SupportedColorDepths| buffer .write_u16::( - value.to_u16().unwrap() + value.bits() )); - try_write_optional!( - self.supported_color_depths, - |value: &SupportedColorDepths| buffer.write_u16::(value.bits()) - ); - - try_write_optional!( - self.early_capability_flags, - |value: &ClientEarlyCapabilityFlags| buffer.write_u16::(value.bits()) - ); + try_write_optional!(self.early_capability_flags, |value: &ClientEarlyCapabilityFlags| buffer + .write_u16::(value.bits())); try_write_optional!(self.dig_product_id, |value: &str| { let mut dig_product_id_buffer = utils::string_to_utf16(value); @@ -319,20 +283,15 @@ impl PduParsing for ClientCoreOptionalData { buffer.write_u8(0)?; // pad1octet - try_write_optional!( - self.server_selected_protocol, - |value: &nego::SecurityProtocol| { buffer.write_u32::(value.bits()) } - ); + try_write_optional!(self.server_selected_protocol, |value: &nego::SecurityProtocol| { + buffer.write_u32::(value.bits()) + }); try_write_optional!(self.desktop_physical_width, |value: &u32| buffer - .write_u32::( - *value - )); + .write_u32::(*value)); try_write_optional!(self.desktop_physical_height, |value: &u32| buffer - .write_u32::( - *value - )); + .write_u32::(*value)); try_write_optional!(self.desktop_orientation, |value: &u16| buffer .write_u16::(*value)); diff --git a/ironrdp/src/gcc/core_data/client/test.rs b/ironrdp/src/gcc/core_data/client/test.rs index cd4c3811..615b0298 100644 --- a/ironrdp/src/gcc/core_data/client/test.rs +++ b/ironrdp/src/gcc/core_data/client/test.rs @@ -1,9 +1,8 @@ use lazy_static::lazy_static; -use crate::{ - gcc::core_data::{client::*, *}, - nego, -}; +use crate::gcc::core_data::client::*; +use crate::gcc::core_data::*; +use crate::nego; const CLIENT_CORE_DATA_BUFFER: [u8; 128] = [ 0x04, 0x00, 0x08, 0x00, // version @@ -13,17 +12,15 @@ const CLIENT_CORE_DATA_BUFFER: [u8; 128] = [ 0x03, 0xaa, // sas sequence 0x09, 0x04, 0x00, 0x00, // keyboard layout 0xce, 0x0e, 0x00, 0x00, // client build - 0x45, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x53, 0x00, 0x2d, 0x00, 0x44, 0x00, - 0x45, 0x00, 0x56, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // client name + 0x45, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x53, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, + 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // client name 0x04, 0x00, 0x00, 0x00, // keyboard type 0x00, 0x00, 0x00, 0x00, // keyboard subtype 0x0c, 0x00, 0x00, 0x00, // keyboard function key - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // ime file name + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ime file name ]; const CLIENT_OPTIONAL_CORE_DATA_TO_HIGH_COLOR_DEPTH_BUFFER: [u8; 8] = [ 0x01, 0xca, // post beta color depth @@ -37,18 +34,16 @@ const CLIENT_OPTIONAL_CORE_DATA_FROM_HIGH_COLOR_DEPTH_TO_SERVER_SELECTED_PROTOCO 0x18, 0x00, // high color depth 0x07, 0x00, // supported color depths 0x01, 0x00, // early capability flags - 0x36, 0x00, 0x39, 0x00, 0x37, 0x00, 0x31, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x38, 0x00, - 0x33, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00, 0x39, 0x00, 0x37, 0x00, - 0x34, 0x00, 0x2d, 0x00, 0x34, 0x00, 0x32, 0x00, 0x37, 0x00, 0x31, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // client dig product id + 0x36, 0x00, 0x39, 0x00, 0x37, 0x00, 0x31, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x38, 0x00, 0x33, 0x00, 0x2d, + 0x00, 0x30, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00, 0x39, 0x00, 0x37, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x34, 0x00, + 0x32, 0x00, 0x37, 0x00, 0x31, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // client dig product id 0x00, // connection type 0x00, // padding 0x00, 0x00, 0x00, 0x00, // server selected protocol ]; -const CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER: [u8; - 18] = [ +const CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER: [u8; 18] = [ 0x88, 0x13, 0x00, 0x00, // desktop physical width 0xb8, 0x0b, 0x00, 0x00, //desktop physical height 0x5a, 0x00, // desktop orientation @@ -84,11 +79,9 @@ lazy_static! { pub static ref CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL: ClientCoreData = { let mut data = CLIENT_OPTIONAL_CORE_DATA_TO_HIGH_COLOR_DEPTH.clone(); data.optional_data.high_color_depth = Some(HighColorDepth::Bpp24); - data.optional_data.supported_color_depths = Some( - SupportedColorDepths::BPP24 | SupportedColorDepths::BPP16 | SupportedColorDepths::BPP15, - ); - data.optional_data.early_capability_flags = - Some(ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU); + data.optional_data.supported_color_depths = + Some(SupportedColorDepths::BPP24 | SupportedColorDepths::BPP16 | SupportedColorDepths::BPP15); + data.optional_data.early_capability_flags = Some(ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU); data.optional_data.dig_product_id = Some(String::from("69712-783-0357974-42714")); data.optional_data.connection_type = Some(ConnectionType::NotUsed); data.optional_data.server_selected_protocol = Some(nego::SecurityProtocol::RDP); @@ -107,8 +100,7 @@ lazy_static! { }; pub static ref CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG: ClientCoreData = { let mut data = CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS.clone(); - data.optional_data.early_capability_flags = - Some(ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION); + data.optional_data.early_capability_flags = Some(ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION); data }; @@ -120,39 +112,28 @@ lazy_static! { }; pub static ref CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL_BUFFER: Vec = { let mut buffer = CLIENT_OPTIONAL_CORE_DATA_TO_HIGH_COLOR_DEPTH_BUFFER_BUFFER.to_vec(); - buffer.extend( - CLIENT_OPTIONAL_CORE_DATA_FROM_HIGH_COLOR_DEPTH_TO_SERVER_SELECTED_PROTOCOL_BUFFER - .as_ref(), - ); + buffer.extend(CLIENT_OPTIONAL_CORE_DATA_FROM_HIGH_COLOR_DEPTH_TO_SERVER_SELECTED_PROTOCOL_BUFFER.as_ref()); buffer }; pub static ref CLIENT_OPTIONAL_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_BUFFER: Vec = { let mut buffer = CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL_BUFFER.to_vec(); - buffer.extend( - CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER - .as_ref(), - ); + buffer.extend(CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER.as_ref()); buffer }; pub static ref CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG_BUFFER: Vec = { - let early_capability_flags = ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION - .bits() - .to_le_bytes(); + let early_capability_flags = ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION.bits().to_le_bytes(); let mut from_high_color_to_server_protocol = CLIENT_OPTIONAL_CORE_DATA_FROM_HIGH_COLOR_DEPTH_TO_SERVER_SELECTED_PROTOCOL_BUFFER; - from_high_color_to_server_protocol[EARLY_CAPABILITY_FLAGS_START - ..EARLY_CAPABILITY_FLAGS_START + EARLY_CAPABILITY_FLAGS_LENGTH] + from_high_color_to_server_protocol + [EARLY_CAPABILITY_FLAGS_START..EARLY_CAPABILITY_FLAGS_START + EARLY_CAPABILITY_FLAGS_LENGTH] .clone_from_slice(early_capability_flags.as_ref()); let mut buffer = CLIENT_OPTIONAL_CORE_DATA_TO_HIGH_COLOR_DEPTH_BUFFER_BUFFER.to_vec(); buffer.extend(from_high_color_to_server_protocol.as_ref()); - buffer.extend( - CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER - .as_ref(), - ); + buffer.extend(CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACTOR_BUFFER.as_ref()); buffer }; @@ -277,18 +258,15 @@ fn client_color_depth_is_high_color_depth_if_want_32_bpp_flag_is_absent() { let buffer = CLIENT_OPTIONAL_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_BUFFER.clone(); let core_data = ClientCoreData::from_buffer(buffer.as_slice()).unwrap(); - let expected_client_color_depth: ClientColorDepth = - From::from(core_data.optional_data.high_color_depth.unwrap()); + let expected_client_color_depth: ClientColorDepth = From::from(core_data.optional_data.high_color_depth.unwrap()); assert_eq!(expected_client_color_depth, core_data.client_color_depth()); } #[test] fn client_color_depth_is_32_bpp_if_want_32_bpp_flag_is_set() { - let buffer = - CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG_BUFFER.clone(); - let expected_core_data = - CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG.clone(); + let buffer = CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG_BUFFER.clone(); + let expected_core_data = CLIENT_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS_WITH_WANT_32_BPP_EARLY_FLAG.clone(); let expected_client_color_depth = ClientColorDepth::Bpp32; let core_data = ClientCoreData::from_buffer(buffer.as_slice()).unwrap(); diff --git a/ironrdp/src/gcc/core_data/server.rs b/ironrdp/src/gcc/core_data/server.rs index 3d35c202..3c021e5d 100644 --- a/ironrdp/src/gcc/core_data/server.rs +++ b/ironrdp/src/gcc/core_data/server.rs @@ -23,14 +23,10 @@ impl PduParsing for ServerCoreData { type Error = CoreDataError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let version = RdpVersion::from_u32(buffer.read_u32::()?) - .unwrap_or(RdpVersion::VUnknown); + let version = RdpVersion::from_u32(buffer.read_u32::()?).unwrap_or(RdpVersion::VUnknown); let optional_data = ServerCoreOptionalData::from_buffer(&mut buffer)?; - Ok(Self { - version, - optional_data, - }) + Ok(Self { version, optional_data }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { @@ -56,34 +52,25 @@ impl PduParsing for ServerCoreOptionalData { let mut optional_data = Self::default(); optional_data.client_requested_protocols = Some( - nego::SecurityProtocol::from_bits(try_read_optional!( - buffer.read_u32::(), - optional_data - )) - .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, + nego::SecurityProtocol::from_bits(try_read_optional!(buffer.read_u32::(), optional_data)) + .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, ); optional_data.early_capability_flags = Some( - ServerEarlyCapabilityFlags::from_bits(try_read_optional!( - buffer.read_u32::(), - optional_data - )) - .ok_or(CoreDataError::InvalidEarlyCapabilityFlags)?, + ServerEarlyCapabilityFlags::from_bits(try_read_optional!(buffer.read_u32::(), optional_data)) + .ok_or(CoreDataError::InvalidEarlyCapabilityFlags)?, ); Ok(optional_data) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - try_write_optional!( - self.client_requested_protocols, - |value: &nego::SecurityProtocol| { buffer.write_u32::(value.bits()) } - ); + try_write_optional!(self.client_requested_protocols, |value: &nego::SecurityProtocol| { + buffer.write_u32::(value.bits()) + }); - try_write_optional!( - self.early_capability_flags, - |value: &ServerEarlyCapabilityFlags| buffer.write_u32::(value.bits()) - ); + try_write_optional!(self.early_capability_flags, |value: &ServerEarlyCapabilityFlags| buffer + .write_u32::(value.bits())); Ok(()) } diff --git a/ironrdp/src/gcc/core_data/server/test.rs b/ironrdp/src/gcc/core_data/server/test.rs index 3dd93993..38d37eee 100644 --- a/ironrdp/src/gcc/core_data/server/test.rs +++ b/ironrdp/src/gcc/core_data/server/test.rs @@ -1,9 +1,8 @@ use lazy_static::lazy_static; -use crate::{ - gcc::core_data::{server::*, *}, - nego, -}; +use crate::gcc::core_data::server::*; +use crate::gcc::core_data::*; +use crate::nego; const SERVER_CORE_DATA_BUFFER: [u8; 4] = [ 0x04, 0x00, 0x08, 0x00, // version @@ -55,10 +54,7 @@ lazy_static! { fn from_buffer_correctly_parses_server_core_data_without_optional_fields() { let buffer = SERVER_CORE_DATA_BUFFER.as_ref(); - assert_eq!( - *SERVER_CORE_DATA, - ServerCoreData::from_buffer(buffer).unwrap() - ); + assert_eq!(*SERVER_CORE_DATA, ServerCoreData::from_buffer(buffer).unwrap()); } #[test] diff --git a/ironrdp/src/gcc/message_channel_data.rs b/ironrdp/src/gcc/message_channel_data.rs index a5a0d4d7..9d414aaf 100644 --- a/ironrdp/src/gcc/message_channel_data.rs +++ b/ironrdp/src/gcc/message_channel_data.rs @@ -43,9 +43,7 @@ impl PduParsing for ServerMessageChannelData { fn from_buffer(mut buffer: impl io::Read) -> Result { let mcs_message_channel_id = buffer.read_u16::()?; - Ok(Self { - mcs_message_channel_id, - }) + Ok(Self { mcs_message_channel_id }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { buffer.write_u16::(self.mcs_message_channel_id)?; diff --git a/ironrdp/src/gcc/monitor_data.rs b/ironrdp/src/gcc/monitor_data.rs index 849addf8..3218c319 100644 --- a/ironrdp/src/gcc/monitor_data.rs +++ b/ironrdp/src/gcc/monitor_data.rs @@ -71,8 +71,8 @@ impl PduParsing for Monitor { let top = buffer.read_i32::()?; let right = buffer.read_i32::()?; let bottom = buffer.read_i32::()?; - let flags = MonitorFlags::from_bits(buffer.read_u32::()?) - .ok_or(MonitorDataError::InvalidMonitorFlags)?; + let flags = + MonitorFlags::from_bits(buffer.read_u32::()?).ok_or(MonitorDataError::InvalidMonitorFlags)?; Ok(Self { left, diff --git a/ironrdp/src/gcc/monitor_data/test.rs b/ironrdp/src/gcc/monitor_data/test.rs index 0f604c05..0f8d5b82 100644 --- a/ironrdp/src/gcc/monitor_data/test.rs +++ b/ironrdp/src/gcc/monitor_data/test.rs @@ -2,18 +2,15 @@ use lazy_static::lazy_static; use super::*; -pub const MONITOR_DATA_WITHOUT_MONITORS_BUFFER: [u8; 8] = - [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; +pub const MONITOR_DATA_WITHOUT_MONITORS_BUFFER: [u8; 8] = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; pub const MONITOR_DATA_WITH_MONITORS_BUFFER: [u8; 48] = [ - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x07, 0x00, 0x00, 0x37, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x07, 0x00, + 0x00, 0x37, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; lazy_static! { - pub static ref MONITOR_DATA_WITHOUT_MONITORS: ClientMonitorData = ClientMonitorData { - monitors: Vec::new() - }; + pub static ref MONITOR_DATA_WITHOUT_MONITORS: ClientMonitorData = ClientMonitorData { monitors: Vec::new() }; pub static ref MONITOR_DATA_WITH_MONITORS: ClientMonitorData = ClientMonitorData { monitors: vec![ Monitor { diff --git a/ironrdp/src/gcc/monitor_extended_data.rs b/ironrdp/src/gcc/monitor_extended_data.rs index ab7597a1..b50b064a 100644 --- a/ironrdp/src/gcc/monitor_extended_data.rs +++ b/ironrdp/src/gcc/monitor_extended_data.rs @@ -45,9 +45,7 @@ impl PduParsing for ClientMonitorExtendedData { extended_monitors_info.push(ExtendedMonitorInfo::from_buffer(&mut buffer)?); } - Ok(Self { - extended_monitors_info, - }) + Ok(Self { extended_monitors_info }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { buffer.write_u32::(0)?; // flags @@ -131,8 +129,4 @@ pub enum MonitorExtendedDataError { InvalidMonitorCount, } -impl_from_error!( - io::Error, - MonitorExtendedDataError, - MonitorExtendedDataError::IOError -); +impl_from_error!(io::Error, MonitorExtendedDataError, MonitorExtendedDataError::IOError); diff --git a/ironrdp/src/gcc/monitor_extended_data/test.rs b/ironrdp/src/gcc/monitor_extended_data/test.rs index bc77537a..23757bc6 100644 --- a/ironrdp/src/gcc/monitor_extended_data/test.rs +++ b/ironrdp/src/gcc/monitor_extended_data/test.rs @@ -2,40 +2,36 @@ use lazy_static::lazy_static; use super::*; -pub const MONITOR_DATA_WITHOUT_MONITORS_BUFFER: [u8; 12] = [ - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -]; +pub const MONITOR_DATA_WITHOUT_MONITORS_BUFFER: [u8; 12] = + [0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; pub const MONITOR_DATA_WITH_MONITORS_BUFFER: [u8; 52] = [ - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; lazy_static! { - pub static ref MONITOR_DATA_WITHOUT_MONITORS: ClientMonitorExtendedData = - ClientMonitorExtendedData { - extended_monitors_info: Vec::new() - }; - pub static ref MONITOR_DATA_WITH_MONITORS: ClientMonitorExtendedData = - ClientMonitorExtendedData { - extended_monitors_info: vec![ - ExtendedMonitorInfo { - physical_width: 0, - physical_height: 0, - orientation: MonitorOrientation::Landscape, - desktop_scale_factor: 0, - device_scale_factor: 0, - }, - ExtendedMonitorInfo { - physical_width: 0, - physical_height: 0, - orientation: MonitorOrientation::Landscape, - desktop_scale_factor: 0, - device_scale_factor: 0, - } - ] - }; + pub static ref MONITOR_DATA_WITHOUT_MONITORS: ClientMonitorExtendedData = ClientMonitorExtendedData { + extended_monitors_info: Vec::new() + }; + pub static ref MONITOR_DATA_WITH_MONITORS: ClientMonitorExtendedData = ClientMonitorExtendedData { + extended_monitors_info: vec![ + ExtendedMonitorInfo { + physical_width: 0, + physical_height: 0, + orientation: MonitorOrientation::Landscape, + desktop_scale_factor: 0, + device_scale_factor: 0, + }, + ExtendedMonitorInfo { + physical_width: 0, + physical_height: 0, + orientation: MonitorOrientation::Landscape, + desktop_scale_factor: 0, + device_scale_factor: 0, + } + ] + }; } #[test] diff --git a/ironrdp/src/gcc/multi_transport_channel_data/test.rs b/ironrdp/src/gcc/multi_transport_channel_data/test.rs index 63a2046a..f5f14a20 100644 --- a/ironrdp/src/gcc/multi_transport_channel_data/test.rs +++ b/ironrdp/src/gcc/multi_transport_channel_data/test.rs @@ -5,12 +5,11 @@ use super::*; pub const SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK_BUFFER: [u8; 4] = [0x01, 0x03, 0x00, 0x00]; lazy_static! { - pub static ref SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK: MultiTransportChannelData = - MultiTransportChannelData { - flags: MultiTransportFlags::TRANSPORT_TYPE_UDP_FECR - | MultiTransportFlags::TRANSPORT_TYPE_UDP_PREFERRED - | MultiTransportFlags::SOFT_SYNC_TCP_TO_UDP, - }; + pub static ref SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK: MultiTransportChannelData = MultiTransportChannelData { + flags: MultiTransportFlags::TRANSPORT_TYPE_UDP_FECR + | MultiTransportFlags::TRANSPORT_TYPE_UDP_PREFERRED + | MultiTransportFlags::SOFT_SYNC_TCP_TO_UDP, + }; } #[test] diff --git a/ironrdp/src/gcc/network_data.rs b/ironrdp/src/gcc/network_data.rs index 8f0252c2..40462c05 100644 --- a/ironrdp/src/gcc/network_data.rs +++ b/ironrdp/src/gcc/network_data.rs @@ -1,10 +1,8 @@ #[cfg(test)] pub mod test; -use std::{ - io::{self, Write}, - str, -}; +use std::io::{self, Write}; +use std::str; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -120,10 +118,7 @@ impl PduParsing for ServerNetworkData { fn buffer_length(&self) -> usize { let padding_size = if self.write_padding() { 2 } else { 0 }; - SERVER_IO_CHANNEL_SIZE - + SERVER_CHANNEL_COUNT_SIZE - + self.channel_ids.len() * SERVER_CHANNEL_SIZE - + padding_size + SERVER_IO_CHANNEL_SIZE + SERVER_CHANNEL_COUNT_SIZE + self.channel_ids.len() * SERVER_CHANNEL_SIZE + padding_size } } @@ -194,8 +189,4 @@ pub enum NetworkDataError { } impl_from_error!(io::Error, NetworkDataError, NetworkDataError::IOError); -impl_from_error!( - str::Utf8Error, - NetworkDataError, - NetworkDataError::Utf8Error -); +impl_from_error!(str::Utf8Error, NetworkDataError, NetworkDataError::Utf8Error); diff --git a/ironrdp/src/gcc/network_data/test.rs b/ironrdp/src/gcc/network_data/test.rs index 3c0f0597..68c2bf47 100644 --- a/ironrdp/src/gcc/network_data/test.rs +++ b/ironrdp/src/gcc/network_data/test.rs @@ -51,9 +51,7 @@ lazy_static! { io_channel: 1003, channel_ids: vec![1004, 1005, 1006], }; - static ref CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS: ClientNetworkData = ClientNetworkData { - channels: Vec::new() - }; + static ref CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS: ClientNetworkData = ClientNetworkData { channels: Vec::new() }; static ref SERVER_NETOWORK_DATA_WITHOUT_CHANNELS_ID: ServerNetworkData = ServerNetworkData { io_channel: 1003, channel_ids: Vec::new(), diff --git a/ironrdp/src/gcc/security_data.rs b/ironrdp/src/gcc/security_data.rs index 96f8e59f..22d158ae 100644 --- a/ironrdp/src/gcc/security_data.rs +++ b/ironrdp/src/gcc/security_data.rs @@ -90,31 +90,29 @@ impl PduParsing for ServerSecurityData { let encryption_level = EncryptionLevel::from_u32(buffer.read_u32::()?) .ok_or(SecurityDataError::InvalidEncryptionLevel)?; - let (server_random, server_cert) = - if encryption_method.is_empty() && encryption_level == EncryptionLevel::None { - (None, Vec::new()) - } else { - let server_random_len = buffer.read_u32::()?; - if server_random_len != SERVER_RANDOM_LEN as u32 { - return Err(SecurityDataError::InvalidServerRandomLen(server_random_len)); - } + let (server_random, server_cert) = if encryption_method.is_empty() && encryption_level == EncryptionLevel::None + { + (None, Vec::new()) + } else { + let server_random_len = buffer.read_u32::()?; + if server_random_len != SERVER_RANDOM_LEN as u32 { + return Err(SecurityDataError::InvalidServerRandomLen(server_random_len)); + } - let server_cert_len = buffer.read_u32::()?; + let server_cert_len = buffer.read_u32::()?; - if server_cert_len > MAX_SERVER_CERT_LEN { - return Err(SecurityDataError::InvalidServerCertificateLen( - server_cert_len, - )); - } + if server_cert_len > MAX_SERVER_CERT_LEN { + return Err(SecurityDataError::InvalidServerCertificateLen(server_cert_len)); + } - let mut server_random = [0; SERVER_RANDOM_LEN]; - buffer.read_exact(&mut server_random)?; + let mut server_random = [0; SERVER_RANDOM_LEN]; + buffer.read_exact(&mut server_random)?; - let mut server_cert = vec![0; server_cert_len as usize]; - buffer.read_exact(&mut server_cert)?; + let mut server_cert = vec![0; server_cert_len as usize]; + buffer.read_exact(&mut server_cert)?; - (Some(server_random), server_cert) - }; + (Some(server_random), server_cert) + }; Ok(Self { encryption_method, diff --git a/ironrdp/src/gcc/security_data/test.rs b/ironrdp/src/gcc/security_data/test.rs index 93a93efb..7cb9599c 100644 --- a/ironrdp/src/gcc/security_data/test.rs +++ b/ironrdp/src/gcc/security_data/test.rs @@ -16,22 +16,20 @@ const SERVER_SECURITY_DATA_WITH_OPTIONAL_FIELDS_PREFIX_BUFFER: [u8; 8] = [ 0x02, 0x00, 0x00, 0x00, // encryption level ]; const SERVER_RANDOM_BUFFER: [u8; 32] = [ - 0x10, 0x11, 0x77, 0x20, 0x30, 0x61, 0x0a, 0x12, 0xe4, 0x34, 0xa1, 0x1e, 0xf2, 0xc3, 0x9f, 0x31, - 0x7d, 0xa4, 0x5f, 0x01, 0x89, 0x34, 0x96, 0xe0, 0xff, 0x11, 0x08, 0x69, 0x7f, 0x1a, 0xc3, 0xd2, + 0x10, 0x11, 0x77, 0x20, 0x30, 0x61, 0x0a, 0x12, 0xe4, 0x34, 0xa1, 0x1e, 0xf2, 0xc3, 0x9f, 0x31, 0x7d, 0xa4, 0x5f, + 0x01, 0x89, 0x34, 0x96, 0xe0, 0xff, 0x11, 0x08, 0x69, 0x7f, 0x1a, 0xc3, 0xd2, ]; const SERVER_CERT_BUFFER: [u8; 184] = [ - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x5c, 0x00, - 0x52, 0x53, 0x41, 0x31, 0x48, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x00, 0xcb, 0x81, 0xfe, 0xba, 0x6d, 0x61, 0xc3, 0x55, 0x05, 0xd5, 0x5f, 0x2e, - 0x87, 0xf8, 0x71, 0x94, 0xd6, 0xf1, 0xa5, 0xcb, 0xf1, 0x5f, 0x0c, 0x3d, 0xf8, 0x70, 0x02, 0x96, - 0xc4, 0xfb, 0x9b, 0xc8, 0x3c, 0x2d, 0x55, 0xae, 0xe8, 0xff, 0x32, 0x75, 0xea, 0x68, 0x79, 0xe5, - 0xa2, 0x01, 0xfd, 0x31, 0xa0, 0xb1, 0x1f, 0x55, 0xa6, 0x1f, 0xc1, 0xf6, 0xd1, 0x83, 0x88, 0x63, - 0x26, 0x56, 0x12, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x00, - 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, - 0xe1, 0x8f, 0x5f, 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, - 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, - 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x5c, 0x00, 0x52, 0x53, 0x41, + 0x31, 0x48, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xcb, 0x81, + 0xfe, 0xba, 0x6d, 0x61, 0xc3, 0x55, 0x05, 0xd5, 0x5f, 0x2e, 0x87, 0xf8, 0x71, 0x94, 0xd6, 0xf1, 0xa5, 0xcb, 0xf1, + 0x5f, 0x0c, 0x3d, 0xf8, 0x70, 0x02, 0x96, 0xc4, 0xfb, 0x9b, 0xc8, 0x3c, 0x2d, 0x55, 0xae, 0xe8, 0xff, 0x32, 0x75, + 0xea, 0x68, 0x79, 0xe5, 0xa2, 0x01, 0xfd, 0x31, 0xa0, 0xb1, 0x1f, 0x55, 0xa6, 0x1f, 0xc1, 0xf6, 0xd1, 0x83, 0x88, + 0x63, 0x26, 0x56, 0x12, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x00, 0xe9, 0xe1, + 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, 0xe1, 0x8f, 0x5f, 0x81, 0x57, + 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, 0xb5, 0x69, + 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, 0x68, 0x3f, + 0x6c, 0xd6, 0x76, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; lazy_static! { @@ -42,20 +40,18 @@ lazy_static! { | EncryptionMethod::FIPS, ext_encryption_methods: 0, }; - pub static ref SERVER_SECURITY_DATA_WITHOUT_OPTIONAL_FIELDS: ServerSecurityData = - ServerSecurityData { - encryption_method: EncryptionMethod::empty(), - encryption_level: EncryptionLevel::None, - server_random: None, - server_cert: Vec::new(), - }; - pub static ref SERVER_SECURITY_DATA_WITH_OPTIONAL_FIELDS: ServerSecurityData = - ServerSecurityData { - encryption_method: EncryptionMethod::BIT_128, - encryption_level: EncryptionLevel::ClientCompatible, - server_random: Some(SERVER_RANDOM_BUFFER), - server_cert: SERVER_CERT_BUFFER.to_vec(), - }; + pub static ref SERVER_SECURITY_DATA_WITHOUT_OPTIONAL_FIELDS: ServerSecurityData = ServerSecurityData { + encryption_method: EncryptionMethod::empty(), + encryption_level: EncryptionLevel::None, + server_random: None, + server_cert: Vec::new(), + }; + pub static ref SERVER_SECURITY_DATA_WITH_OPTIONAL_FIELDS: ServerSecurityData = ServerSecurityData { + encryption_method: EncryptionMethod::BIT_128, + encryption_level: EncryptionLevel::ClientCompatible, + server_random: Some(SERVER_RANDOM_BUFFER), + server_cert: SERVER_CERT_BUFFER.to_vec(), + }; pub static ref SERVER_SECURITY_DATA_WITH_MISMATCH_OF_REQUIRED_AND_OPTIONAL_FIELDS: ServerSecurityData = ServerSecurityData { encryption_method: EncryptionMethod::empty(), @@ -99,10 +95,7 @@ lazy_static! { fn from_buffer_correctly_parses_client_security_data() { let buffer = CLIENT_SECURITY_DATA_BUFFER.as_ref(); - assert_eq!( - *CLIENT_SECURITY_DATA, - ClientSecurityData::from_buffer(buffer).unwrap() - ); + assert_eq!(*CLIENT_SECURITY_DATA, ClientSecurityData::from_buffer(buffer).unwrap()); } #[test] @@ -152,10 +145,7 @@ fn from_buffer_server_security_data_fails_with_invalid_server_random_length() { match ServerSecurityData::from_buffer(buffer.as_slice()) { Err(SecurityDataError::InvalidServerRandomLen(_)) => (), - res => panic!( - "Expected the invalid server random length error, got: {:?}", - res - ), + res => panic!("Expected the invalid server random length error, got: {:?}", res), }; } diff --git a/ironrdp/src/gcc/test.rs b/ironrdp/src/gcc/test.rs index eef3261f..bb47e5c6 100644 --- a/ironrdp/src/gcc/test.rs +++ b/ironrdp/src/gcc/test.rs @@ -3,8 +3,8 @@ use num_traits::{FromPrimitive, ToPrimitive}; use super::*; use crate::gcc::{ - cluster_data, core_data, message_channel_data, monitor_data, monitor_extended_data, - multi_transport_channel_data, network_data, security_data, + cluster_data, core_data, message_channel_data, monitor_data, monitor_extended_data, multi_transport_channel_data, + network_data, security_data, }; const USER_HEADER_LEN: usize = 4; @@ -64,8 +64,7 @@ lazy_static! { buffer }; pub static ref CLIENT_GCC_WITHOUT_OPTIONAL_FIELDS: ClientGccBlocks = ClientGccBlocks { - core: core_data::client::test::CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL - .clone(), + core: core_data::client::test::CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL.clone(), security: security_data::test::CLIENT_SECURITY_DATA.clone(), network: Some(network_data::test::CLIENT_NETOWORK_DATA_WITH_CHANNELS.clone()), cluster: None, @@ -83,8 +82,7 @@ lazy_static! { pub static ref CLIENT_GCC_WITH_ALL_OPTIONAL_FIELDS: ClientGccBlocks = { let mut data = CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD.clone(); data.monitor = Some(monitor_data::test::MONITOR_DATA_WITH_MONITORS.clone()); - data.monitor_extended = - Some(monitor_extended_data::test::MONITOR_DATA_WITH_MONITORS.clone()); + data.monitor_extended = Some(monitor_extended_data::test::MONITOR_DATA_WITH_MONITORS.clone()); data }; @@ -98,16 +96,14 @@ lazy_static! { pub static ref SERVER_GCC_WITH_OPTIONAL_FIELDS: ServerGccBlocks = { let mut data = SERVER_GCC_WITHOUT_OPTIONAL_FIELDS.clone(); data.message_channel = Some(message_channel_data::test::SERVER_GCC_MESSAGE_CHANNEL_BLOCK); - data.multi_transport_channel = Some( - multi_transport_channel_data::test::SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK.clone(), - ); + data.multi_transport_channel = + Some(multi_transport_channel_data::test::SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK.clone()); data }; pub static ref CLIENT_GCC_CORE_BLOCK_BUFFER: Vec = make_gcc_block_buffer( ClientGccType::CoreData, - core_data::client::test::CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL_BUFFER - .as_ref(), + core_data::client::test::CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL_BUFFER.as_ref(), ); pub static ref CLIENT_GCC_SECURITY_BLOCK_BUFFER: Vec = make_gcc_block_buffer( ClientGccType::SecurityData, @@ -147,19 +143,14 @@ lazy_static! { ); pub static ref SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK_BUFFER: Vec = make_gcc_block_buffer( ServerGccType::MultiTransportChannelData, - multi_transport_channel_data::test::SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK_BUFFER - .as_ref(), + multi_transport_channel_data::test::SERVER_GCC_MULTI_TRANSPORT_CHANNEL_BLOCK_BUFFER.as_ref(), ); } fn make_gcc_block_buffer(data_type: T, buffer: &[u8]) -> Vec { let mut result = Vec::new(); result.extend(data_type.to_u16().unwrap().to_le_bytes().as_ref()); - result.extend( - ((buffer.len() + USER_HEADER_LEN) as u16) - .to_le_bytes() - .as_ref(), - ); + result.extend(((buffer.len() + USER_HEADER_LEN) as u16).to_le_bytes().as_ref()); result.extend(buffer.as_ref()); result diff --git a/ironrdp/src/input.rs b/ironrdp/src/input.rs index 5e819bc0..0d75a6ea 100644 --- a/ironrdp/src/input.rs +++ b/ironrdp/src/input.rs @@ -7,11 +7,6 @@ mod tests; pub mod unicode; pub mod unused; -pub use self::{ - mouse::MousePdu, mouse_x::MouseXPdu, scan_code::ScanCodePdu, sync::SyncPdu, - unicode::UnicodePdu, unused::UnusedPdu, -}; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -19,6 +14,12 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::mouse::MousePdu; +pub use self::mouse_x::MouseXPdu; +pub use self::scan_code::ScanCodePdu; +pub use self::sync::SyncPdu; +pub use self::unicode::UnicodePdu; +pub use self::unused::UnusedPdu; use crate::{impl_from_error, PduParsing}; #[derive(Debug, Clone, PartialEq)] @@ -70,8 +71,8 @@ impl PduParsing for InputEvent { fn from_buffer(mut stream: impl io::Read) -> Result { let _event_time = stream.read_u32::()?; // ignored by a server let event_type = stream.read_u16::()?; - let event_type = InputEventType::from_u16(event_type) - .ok_or(InputEventError::InvalidInputEventType(event_type))?; + let event_type = + InputEventType::from_u16(event_type).ok_or(InputEventError::InvalidInputEventType(event_type))?; match event_type { InputEventType::Sync => Ok(Self::Sync(SyncPdu::from_buffer(&mut stream)?)), diff --git a/ironrdp/src/input/mouse.rs b/ironrdp/src/input/mouse.rs index 517bdb64..b3a89779 100644 --- a/ironrdp/src/input/mouse.rs +++ b/ironrdp/src/input/mouse.rs @@ -51,8 +51,7 @@ impl PduParsing for MousePdu { } else { WheelEvents::empty() }; - let number_of_wheel_rotations = - self.number_of_wheel_rotations as u16 & !WHEEL_ROTATION_MASK; + let number_of_wheel_rotations = self.number_of_wheel_rotations as u16 & !WHEEL_ROTATION_MASK; let flags = self.wheel_events.bits() | self.movement_events.bits() diff --git a/ironrdp/src/input/unicode.rs b/ironrdp/src/input/unicode.rs index beba20b8..f3b1a576 100644 --- a/ironrdp/src/input/unicode.rs +++ b/ironrdp/src/input/unicode.rs @@ -20,10 +20,7 @@ impl PduParsing for UnicodePdu { let unicode_code = stream.read_u16::()?; let _padding = stream.read_u16::()?; - Ok(Self { - flags, - unicode_code, - }) + Ok(Self { flags, unicode_code }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 89aa20d5..7246cf7d 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -12,19 +12,17 @@ mod preconnection; mod utils; mod x224; -pub use crate::{ - basic_output::{bitmap, fast_path, surface_commands}, - mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}, - nego::*, - preconnection::{PreconnectionPdu, PreconnectionPduError}, - rdp::{ - vc::dvc, CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, - ServerDemandActive, ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, - VirtualChannel, - }, - utils::Rectangle, - x224::*, +pub use crate::basic_output::{bitmap, fast_path, surface_commands}; +pub use crate::mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}; +pub use crate::nego::*; +pub use crate::preconnection::{PreconnectionPdu, PreconnectionPduError}; +pub use crate::rdp::vc::dvc; +pub use crate::rdp::{ + CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, ServerDemandActive, + ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, VirtualChannel, }; +pub use crate::utils::Rectangle; +pub use crate::x224::*; pub trait PduParsing { type Error; @@ -65,13 +63,11 @@ impl PduParsing for RdpPdu { let action = Action::from_u8(action).ok_or(RdpError::InvalidActionCode(action))?; match action { - Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version( + Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version(&mut stream, header)?)), + Action::FastPath => Ok(Self::FastPath(fast_path::FastPathHeader::from_buffer_with_header( &mut stream, header, )?)), - Action::FastPath => Ok(Self::FastPath( - fast_path::FastPathHeader::from_buffer_with_header(&mut stream, header)?, - )), } } diff --git a/ironrdp/src/mcs.rs b/ironrdp/src/mcs.rs index 81d0b4b0..a3b39e81 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp/src/mcs.rs @@ -2,8 +2,6 @@ mod connect_initial; #[cfg(test)] mod test; -pub use self::connect_initial::{ConnectInitial, ConnectResponse, DomainParameters}; - use std::io; use byteorder::{ReadBytesExt, WriteBytesExt}; @@ -11,7 +9,9 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{gcc::GccError, impl_from_error, per, PduParsing}; +pub use self::connect_initial::{ConnectInitial, ConnectResponse, DomainParameters}; +use crate::gcc::GccError; +use crate::{impl_from_error, per, PduParsing}; pub const RESULT_ENUM_LENGTH: u8 = 16; @@ -54,28 +54,26 @@ impl PduParsing for McsPdu { let mcs_pdu = DomainMcsPdu::from_u8(choice >> 2).ok_or(McsError::InvalidDomainMcsPdu)?; match mcs_pdu { - DomainMcsPdu::ErectDomainRequest => Ok(McsPdu::ErectDomainRequest( - ErectDomainPdu::from_buffer(&mut stream)?, - )), + DomainMcsPdu::ErectDomainRequest => { + Ok(McsPdu::ErectDomainRequest(ErectDomainPdu::from_buffer(&mut stream)?)) + } DomainMcsPdu::AttachUserRequest => Ok(McsPdu::AttachUserRequest), - DomainMcsPdu::AttachUserConfirm => Ok(McsPdu::AttachUserConfirm( - AttachUserConfirmPdu::from_buffer(&mut stream)?, - )), - DomainMcsPdu::ChannelJoinRequest => Ok(McsPdu::ChannelJoinRequest( - ChannelJoinRequestPdu::from_buffer(&mut stream)?, - )), - DomainMcsPdu::ChannelJoinConfirm => Ok(McsPdu::ChannelJoinConfirm( - ChannelJoinConfirmPdu::from_buffer(&mut stream)?, - )), + DomainMcsPdu::AttachUserConfirm => Ok(McsPdu::AttachUserConfirm(AttachUserConfirmPdu::from_buffer( + &mut stream, + )?)), + DomainMcsPdu::ChannelJoinRequest => Ok(McsPdu::ChannelJoinRequest(ChannelJoinRequestPdu::from_buffer( + &mut stream, + )?)), + DomainMcsPdu::ChannelJoinConfirm => Ok(McsPdu::ChannelJoinConfirm(ChannelJoinConfirmPdu::from_buffer( + &mut stream, + )?)), DomainMcsPdu::DisconnectProviderUltimatum => Ok(McsPdu::DisconnectProviderUltimatum( DisconnectUltimatumReason::from_choice(&mut stream, choice)?, )), - DomainMcsPdu::SendDataRequest => Ok(McsPdu::SendDataRequest( - SendDataContext::from_buffer(&mut stream)?, - )), - DomainMcsPdu::SendDataIndication => Ok(McsPdu::SendDataIndication( - SendDataContext::from_buffer(&mut stream)?, - )), + DomainMcsPdu::SendDataRequest => Ok(McsPdu::SendDataRequest(SendDataContext::from_buffer(&mut stream)?)), + DomainMcsPdu::SendDataIndication => { + Ok(McsPdu::SendDataIndication(SendDataContext::from_buffer(&mut stream)?)) + } } } @@ -92,25 +90,14 @@ impl PduParsing for McsPdu { McsPdu::SendDataRequest(_) => (DomainMcsPdu::SendDataRequest, 0), McsPdu::SendDataIndication(_) => (DomainMcsPdu::SendDataIndication, 0), }; - per::write_choice( - &mut stream, - (domain_mcs_pdu.to_u8().unwrap() << 2) | options, - )?; + per::write_choice(&mut stream, (domain_mcs_pdu.to_u8().unwrap() << 2) | options)?; match self { - McsPdu::ErectDomainRequest(erect_domain_request) => { - erect_domain_request.to_buffer(&mut stream)? - } + McsPdu::ErectDomainRequest(erect_domain_request) => erect_domain_request.to_buffer(&mut stream)?, McsPdu::AttachUserRequest => (), - McsPdu::AttachUserConfirm(attach_user_confirm_pdu) => { - attach_user_confirm_pdu.to_buffer(&mut stream)? - } - McsPdu::ChannelJoinRequest(channel_join_request_pdu) => { - channel_join_request_pdu.to_buffer(&mut stream)? - } - McsPdu::ChannelJoinConfirm(channel_join_confirm_pdu) => { - channel_join_confirm_pdu.to_buffer(&mut stream)? - } + McsPdu::AttachUserConfirm(attach_user_confirm_pdu) => attach_user_confirm_pdu.to_buffer(&mut stream)?, + McsPdu::ChannelJoinRequest(channel_join_request_pdu) => channel_join_request_pdu.to_buffer(&mut stream)?, + McsPdu::ChannelJoinConfirm(channel_join_confirm_pdu) => channel_join_confirm_pdu.to_buffer(&mut stream)?, McsPdu::DisconnectProviderUltimatum(reason) => reason.to_buffer(&mut stream)?, McsPdu::SendDataRequest(send_data) => send_data.to_buffer(&mut stream)?, McsPdu::SendDataIndication(send_data) => send_data.to_buffer(&mut stream)?, @@ -121,19 +108,11 @@ impl PduParsing for McsPdu { fn buffer_length(&self) -> usize { let pdu_length = match self { - McsPdu::ErectDomainRequest(erect_domain_request) => { - erect_domain_request.buffer_length() - } + McsPdu::ErectDomainRequest(erect_domain_request) => erect_domain_request.buffer_length(), McsPdu::AttachUserRequest => 0, - McsPdu::AttachUserConfirm(attach_user_confirm_pdu) => { - attach_user_confirm_pdu.buffer_length() - } - McsPdu::ChannelJoinRequest(channel_join_request_pdu) => { - channel_join_request_pdu.buffer_length() - } - McsPdu::ChannelJoinConfirm(channel_join_confirm_pdu) => { - channel_join_confirm_pdu.buffer_length() - } + McsPdu::AttachUserConfirm(attach_user_confirm_pdu) => attach_user_confirm_pdu.buffer_length(), + McsPdu::ChannelJoinRequest(channel_join_request_pdu) => channel_join_request_pdu.buffer_length(), + McsPdu::ChannelJoinConfirm(channel_join_confirm_pdu) => channel_join_confirm_pdu.buffer_length(), McsPdu::DisconnectProviderUltimatum(reason) => reason.buffer_length(), McsPdu::SendDataRequest(send_data) => send_data.buffer_length(), McsPdu::SendDataIndication(send_data) => send_data.buffer_length(), @@ -335,14 +314,12 @@ impl DisconnectUltimatumReason { fn from_choice(mut stream: impl io::Read, choice: u8) -> Result { let b = per::read_choice(&mut stream)?; - Self::from_u8(((choice & 0x01) << 1) | (b >> 7)) - .ok_or(McsError::InvalidDisconnectProviderUltimatum) + Self::from_u8(((choice & 0x01) << 1) | (b >> 7)).ok_or(McsError::InvalidDisconnectProviderUltimatum) } fn to_buffer(self, mut stream: impl io::Write) -> Result<(), McsError> { let enumerated = match self { - DisconnectUltimatumReason::UserRequested - | DisconnectUltimatumReason::ProviderInitiated => 0x80, + DisconnectUltimatumReason::UserRequested | DisconnectUltimatumReason::ProviderInitiated => 0x80, _ => 0x40, }; per::write_enum(&mut stream, enumerated)?; @@ -382,9 +359,6 @@ impl_from_error!(GccError, McsError, McsError::GccError); impl From for io::Error { fn from(e: McsError) -> io::Error { - io::Error::new( - io::ErrorKind::Other, - format!("MCS Connection Sequence error: {}", e), - ) + io::Error::new(io::ErrorKind::Other, format!("MCS Connection Sequence error: {}", e)) } } diff --git a/ironrdp/src/mcs/connect_initial.rs b/ironrdp/src/mcs/connect_initial.rs index 7b81c703..7091d044 100644 --- a/ironrdp/src/mcs/connect_initial.rs +++ b/ironrdp/src/mcs/connect_initial.rs @@ -4,14 +4,9 @@ mod test; use std::io; use super::{McsError, RESULT_ENUM_LENGTH}; -use crate::{ - ber, - gcc::{ - conference_create::{ConferenceCreateRequest, ConferenceCreateResponse}, - Channel, ClientGccBlocks, - }, - PduParsing, -}; +use crate::gcc::conference_create::{ConferenceCreateRequest, ConferenceCreateResponse}; +use crate::gcc::{Channel, ClientGccBlocks}; +use crate::{ber, PduParsing}; const MCS_TYPE_CONNECT_INITIAL: u8 = 0x65; const MCS_TYPE_CONNECT_RESPONSE: u8 = 0x66; @@ -81,21 +76,14 @@ impl PduParsing for ConnectInitial { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), McsError> { - ber::write_application_tag( - &mut stream, - MCS_TYPE_CONNECT_INITIAL, - self.fields_buffer_ber_length(), - )?; + ber::write_application_tag(&mut stream, MCS_TYPE_CONNECT_INITIAL, self.fields_buffer_ber_length())?; ber::write_octet_string(&mut stream, self.calling_domain_selector.as_ref())?; ber::write_octet_string(&mut stream, self.called_domain_selector.as_ref())?; ber::write_bool(&mut stream, self.upward_flag)?; self.target_parameters.to_buffer(&mut stream)?; self.min_parameters.to_buffer(&mut stream)?; self.max_parameters.to_buffer(&mut stream)?; - ber::write_octet_string_tag( - &mut stream, - self.conference_create_request.buffer_length() as u16, - )?; + ber::write_octet_string_tag(&mut stream, self.conference_create_request.buffer_length() as u16)?; self.conference_create_request.to_buffer(&mut stream)?; Ok(()) @@ -104,8 +92,7 @@ impl PduParsing for ConnectInitial { fn buffer_length(&self) -> usize { let fields_buffer_ber_length = self.fields_buffer_ber_length(); - (fields_buffer_ber_length - + ber::sizeof_application_tag(MCS_TYPE_CONNECT_INITIAL, fields_buffer_ber_length)) + (fields_buffer_ber_length + ber::sizeof_application_tag(MCS_TYPE_CONNECT_INITIAL, fields_buffer_ber_length)) as usize } } @@ -122,9 +109,7 @@ impl ConnectResponse { self.conference_create_response.gcc_blocks.channel_ids() } pub fn global_channel_id(&self) -> u16 { - self.conference_create_response - .gcc_blocks - .global_channel_id() + self.conference_create_response.gcc_blocks.global_channel_id() } fn fields_buffer_ber_length(&self) -> u16 { @@ -154,18 +139,11 @@ impl PduParsing for ConnectResponse { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), McsError> { - ber::write_application_tag( - &mut stream, - MCS_TYPE_CONNECT_RESPONSE, - self.fields_buffer_ber_length(), - )?; + ber::write_application_tag(&mut stream, MCS_TYPE_CONNECT_RESPONSE, self.fields_buffer_ber_length())?; ber::write_enumerated(&mut stream, 0)?; ber::write_integer(&mut stream, self.called_connect_id)?; self.domain_parameters.to_buffer(&mut stream)?; - ber::write_octet_string_tag( - &mut stream, - self.conference_create_response.buffer_length() as u16, - )?; + ber::write_octet_string_tag(&mut stream, self.conference_create_response.buffer_length() as u16)?; self.conference_create_response.to_buffer(&mut stream)?; Ok(()) @@ -174,8 +152,7 @@ impl PduParsing for ConnectResponse { fn buffer_length(&self) -> usize { let fields_buffer_ber_length = self.fields_buffer_ber_length(); - (fields_buffer_ber_length - + ber::sizeof_application_tag(MCS_TYPE_CONNECT_RESPONSE, fields_buffer_ber_length)) + (fields_buffer_ber_length + ber::sizeof_application_tag(MCS_TYPE_CONNECT_RESPONSE, fields_buffer_ber_length)) as usize } } diff --git a/ironrdp/src/mcs/connect_initial/test.rs b/ironrdp/src/mcs/connect_initial/test.rs index c75d1987..281e77c6 100644 --- a/ironrdp/src/mcs/connect_initial/test.rs +++ b/ironrdp/src/mcs/connect_initial/test.rs @@ -5,20 +5,19 @@ use crate::gcc::conference_create; const CONNECT_INITIAL_PREFIX_BUFFER_LEN: usize = 107; const CONNECT_INITIAL_PREFIX_BUFFER: [u8; CONNECT_INITIAL_PREFIX_BUFFER_LEN] = [ - 0x7f, 0x65, 0x82, 0x01, 0x99, 0x04, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0xff, 0x30, 0x1a, - 0x02, 0x01, 0x22, 0x02, 0x01, 0x02, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, - 0x01, 0x01, 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x02, 0x30, 0x19, 0x02, 0x01, 0x01, 0x02, - 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, - 0x04, 0x20, 0x02, 0x01, 0x02, 0x30, 0x20, 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x03, 0x00, 0xfc, - 0x17, 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, - 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x02, 0x04, 0x82, 0x01, 0x33, + 0x7f, 0x65, 0x82, 0x01, 0x99, 0x04, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0xff, 0x30, 0x1a, 0x02, 0x01, 0x22, + 0x02, 0x01, 0x02, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00, 0xff, + 0xff, 0x02, 0x01, 0x02, 0x30, 0x19, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, + 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x20, 0x02, 0x01, 0x02, 0x30, 0x20, 0x02, 0x03, 0x00, 0xff, 0xff, + 0x02, 0x03, 0x00, 0xfc, 0x17, 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, + 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x02, 0x04, 0x82, 0x01, 0x33, ]; const CONNECT_RESPONSE_PREFIX_BUFFER_LEN: usize = 43; const CONNECT_RESPONSE_PREFIX_BUFFER: [u8; CONNECT_RESPONSE_PREFIX_BUFFER_LEN] = [ - 0x7f, 0x66, 0x82, 0x01, 0x46, 0x0a, 0x01, 0x00, 0x02, 0x01, 0x00, 0x30, 0x1a, 0x02, 0x01, 0x22, - 0x02, 0x01, 0x03, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, - 0x03, 0x00, 0xff, 0xf8, 0x02, 0x01, 0x02, 0x04, 0x82, 0x01, 0x20, + 0x7f, 0x66, 0x82, 0x01, 0x46, 0x0a, 0x01, 0x00, 0x02, 0x01, 0x00, 0x30, 0x1a, 0x02, 0x01, 0x22, 0x02, 0x01, 0x03, + 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00, 0xff, 0xf8, 0x02, 0x01, + 0x02, 0x04, 0x82, 0x01, 0x20, ]; lazy_static! { diff --git a/ironrdp/src/mcs/test.rs b/ironrdp/src/mcs/test.rs index 9392dffd..4b2a089c 100644 --- a/ironrdp/src/mcs/test.rs +++ b/ironrdp/src/mcs/test.rs @@ -10,20 +10,17 @@ const ATTACH_USER_REQUEST_PDU_BUFFER_LEN: usize = 1; const ATTACH_USER_REQUEST_PDU_BUFFER: [u8; ATTACH_USER_REQUEST_PDU_BUFFER_LEN] = [0x28]; const ATTACH_USER_CONFIRM_PDU_BUFFER_LEN: usize = 4; -const ATTACH_USER_CONFIRM_PDU_BUFFER: [u8; ATTACH_USER_CONFIRM_PDU_BUFFER_LEN] = - [0x2e, 0x00, 0x00, 0x06]; +const ATTACH_USER_CONFIRM_PDU_BUFFER: [u8; ATTACH_USER_CONFIRM_PDU_BUFFER_LEN] = [0x2e, 0x00, 0x00, 0x06]; const CHANNEL_JOIN_REQUEST_PDU_BUFFER_LEN: usize = 5; -const CHANNEL_JOIN_REQUEST_PDU_BUFFER: [u8; CHANNEL_JOIN_REQUEST_PDU_BUFFER_LEN] = - [0x38, 0x00, 0x06, 0x03, 0xef]; +const CHANNEL_JOIN_REQUEST_PDU_BUFFER: [u8; CHANNEL_JOIN_REQUEST_PDU_BUFFER_LEN] = [0x38, 0x00, 0x06, 0x03, 0xef]; const CHANNEL_JOIN_CONFIRM_PDU_BUFFER_LEN: usize = 8; const CHANNEL_JOIN_CONFIRM_PDU_BUFFER: [u8; CHANNEL_JOIN_CONFIRM_PDU_BUFFER_LEN] = [0x3e, 0x00, 0x00, 0x06, 0x03, 0xef, 0x03, 0xef]; const DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER_LEN: usize = 2; -const DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER: [u8; DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER_LEN] = - [0x21, 0x80]; +const DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER: [u8; DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER_LEN] = [0x21, 0x80]; const SEND_DATA_REQUEST_PDU_BUFFER_PREFIX_LEN: usize = 8; const SEND_DATA_REQUEST_PDU_BUFFER_PREFIX: [u8; SEND_DATA_REQUEST_PDU_BUFFER_PREFIX_LEN] = @@ -82,9 +79,7 @@ lazy_static! { #[test] fn from_buffer_returns_error_with_invalid_domain_mcs_pdu() { - let buf = vec![ - 0x48, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01, 0x03, 0xEB, 0x70, 0x14, - ]; + let buf = vec![0x48, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01, 0x03, 0xEB, 0x70, 0x14]; match McsPdu::from_buffer(&mut buf.as_slice()) { Err(McsError::InvalidDomainMcsPdu) => (), @@ -124,10 +119,7 @@ fn buffer_length_is_correct_for_erect_domain_request() { fn from_buffer_correct_parses_attach_user_request() { let buf = ATTACH_USER_REQUEST_PDU_BUFFER; - assert_eq!( - ATTACH_USER_REQUEST_PDU, - McsPdu::from_buffer(buf.as_ref()).unwrap() - ); + assert_eq!(ATTACH_USER_REQUEST_PDU, McsPdu::from_buffer(buf.as_ref()).unwrap()); } #[test] @@ -155,10 +147,7 @@ fn buffer_length_is_correct_for_attach_user_request() { fn from_buffer_correct_parses_attach_user_confirm() { let buf = ATTACH_USER_CONFIRM_PDU_BUFFER; - assert_eq!( - ATTACH_USER_CONFIRM_PDU, - McsPdu::from_buffer(buf.as_ref()).unwrap() - ); + assert_eq!(ATTACH_USER_CONFIRM_PDU, McsPdu::from_buffer(buf.as_ref()).unwrap()); } #[test] @@ -186,10 +175,7 @@ fn buffer_length_is_correct_for_attach_user_confirm() { fn from_buffer_correct_parses_channel_join_request() { let buf = CHANNEL_JOIN_REQUEST_PDU_BUFFER; - assert_eq!( - CHANNEL_JOIN_REQUEST_PDU, - McsPdu::from_buffer(buf.as_ref()).unwrap() - ); + assert_eq!(CHANNEL_JOIN_REQUEST_PDU, McsPdu::from_buffer(buf.as_ref()).unwrap()); } #[test] @@ -217,10 +203,7 @@ fn buffer_length_is_correct_for_channel_join_request() { fn from_buffer_correct_parses_channel_join_confirm() { let buf = CHANNEL_JOIN_CONFIRM_PDU_BUFFER; - assert_eq!( - CHANNEL_JOIN_CONFIRM_PDU, - McsPdu::from_buffer(buf.as_ref()).unwrap() - ); + assert_eq!(CHANNEL_JOIN_CONFIRM_PDU, McsPdu::from_buffer(buf.as_ref()).unwrap()); } #[test] diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index aab4a423..dae51d59 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -1,7 +1,8 @@ #[cfg(test)] mod tests; -use std::io::{self, prelude::*}; +use std::io::prelude::*; +use std::io::{self}; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -9,11 +10,8 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - impl_from_error, - x224::{TpktHeader, X224TPDUType, TPDU_REQUEST_LENGTH, TPKT_HEADER_LENGTH}, - PduParsing, -}; +use crate::x224::{TpktHeader, X224TPDUType, TPDU_REQUEST_LENGTH, TPKT_HEADER_LENGTH}; +use crate::{impl_from_error, PduParsing}; const COOKIE_PREFIX: &str = "Cookie: mstshash="; const ROUTING_TOKEN_PREFIX: &str = "Cookie: msts="; @@ -203,9 +201,7 @@ impl PduParsing for Request { match &self.nego_data { Some(NegoData::Cookie(s)) => writeln!(&mut stream, "{}{}\r", COOKIE_PREFIX, s)?, - Some(NegoData::RoutingToken(s)) => { - writeln!(&mut stream, "{}{}\r", ROUTING_TOKEN_PREFIX, s)? - } + Some(NegoData::RoutingToken(s)) => writeln!(&mut stream, "{}{}\r", ROUTING_TOKEN_PREFIX, s)?, None => (), } @@ -223,9 +219,7 @@ impl PduParsing for Request { TPDU_REQUEST_LENGTH + match &self.nego_data { Some(NegoData::Cookie(s)) => s.len() + COOKIE_PREFIX.len() + CR_LF_SEQ_LENGTH, - Some(NegoData::RoutingToken(s)) => { - s.len() + ROUTING_TOKEN_PREFIX.len() + CR_LF_SEQ_LENGTH - } + Some(NegoData::RoutingToken(s)) => s.len() + ROUTING_TOKEN_PREFIX.len() + CR_LF_SEQ_LENGTH, None => 0, } + if self.protocol.bits() > SecurityProtocol::RDP.bits() { @@ -278,8 +272,7 @@ impl PduParsing for Response { match neg_resp { Message::Response => { - let protocol = - SecurityProtocol::from_bits_truncate(stream.read_u32::()?); + let protocol = SecurityProtocol::from_bits_truncate(stream.read_u32::()?); Ok(Self { response: Some(ResponseData::Response { flags, protocol }), @@ -288,13 +281,12 @@ impl PduParsing for Response { }) } Message::Failure => { - let error = - FailureCode::from_u32(stream.read_u32::()?).ok_or_else(|| { - NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid negotiation failure code", - )) - })?; + let error = FailureCode::from_u32(stream.read_u32::()?).ok_or_else(|| { + NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid negotiation failure code", + )) + })?; Err(NegotiationError::ResponseFailure(error)) } @@ -350,10 +342,7 @@ fn read_nego_data(stream: &[u8]) -> Option<(NegoData, usize)> { } } -fn read_string_with_cr_lf( - mut stream: impl io::BufRead, - start: &str, -) -> io::Result<(String, usize)> { +fn read_string_with_cr_lf(mut stream: impl io::BufRead, start: &str) -> io::Result<(String, usize)> { let mut read_start = String::new(); stream .by_ref() @@ -392,10 +381,7 @@ fn read_string_with_cr_lf( } } -fn read_and_check_class( - mut stream: impl io::Read, - required_class: u8, -) -> Result<(), NegotiationError> { +fn read_and_check_class(mut stream: impl io::Read, required_class: u8) -> Result<(), NegotiationError> { let class = stream.read_u8()?; if class != required_class { diff --git a/ironrdp/src/nego/tests.rs b/ironrdp/src/nego/tests.rs index 564ef4ef..591b9a4d 100644 --- a/ironrdp/src/nego/tests.rs +++ b/ironrdp/src/nego/tests.rs @@ -14,10 +14,7 @@ fn rdp_negotiation_data_is_written_to_request_if_nla_security() { request.to_buffer(&mut buffer).unwrap(); - assert_eq!( - buffer[buffer.len() - usize::from(RDP_NEG_DATA_LENGTH)..], - expected - ); + assert_eq!(buffer[buffer.len() - usize::from(RDP_NEG_DATA_LENGTH)..], expected); } #[test] @@ -177,8 +174,7 @@ fn negotiation_failure_in_response_results_in_error() { ]; match Response::from_buffer(buffer.as_ref()) { - Err(NegotiationError::ResponseFailure(e)) - if e == FailureCode::SSLWithUserAuthRequiredByServer => {} + Err(NegotiationError::ResponseFailure(e)) if e == FailureCode::SSLWithUserAuthRequiredByServer => {} Err(e) => panic!("wrong error type: {}", e), _ => panic!("error expected"), } @@ -187,8 +183,8 @@ fn negotiation_failure_in_response_results_in_error() { #[test] fn cookie_in_request_is_parsed_correctly() { let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, 0xFF, 0xFF, + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, + 0x73, 0x65, 0x72, 0x0D, 0x0A, 0xFF, 0xFF, ]; let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); @@ -202,9 +198,9 @@ fn cookie_in_request_is_parsed_correctly() { #[test] fn routing_token_in_request_is_parsed_correctly() { let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x3D, 0x33, 0x36, - 0x34, 0x30, 0x32, 0x30, 0x35, 0x32, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x32, 0x39, 0x2E, - 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, 0xFF, 0xFF, + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x3D, 0x33, 0x36, 0x34, 0x30, 0x32, + 0x30, 0x35, 0x32, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, + 0xFF, 0xFF, ]; let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); @@ -218,8 +214,8 @@ fn routing_token_in_request_is_parsed_correctly() { #[test] fn read_string_with_cr_lf_on_non_value_results_in_error() { let request = [ - 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x0F, 0x42, 0x73, - 0x65, 0x72, 0x0D, 0x0A, 0xFF, 0xFF, + 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x0F, 0x42, 0x73, 0x65, 0x72, 0x0D, + 0x0A, 0xFF, 0xFF, ]; match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { @@ -232,8 +228,8 @@ fn read_string_with_cr_lf_on_non_value_results_in_error() { #[test] fn read_string_with_cr_lf_on_unterminated_message_results_in_error() { let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, + 0x73, 0x65, 0x72, ]; match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { @@ -246,8 +242,7 @@ fn read_string_with_cr_lf_on_unterminated_message_results_in_error() { #[test] fn read_string_with_cr_lf_on_unterminated_with_cr_message() { let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x0a, + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x0a, ]; match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { @@ -259,8 +254,8 @@ fn read_string_with_cr_lf_on_unterminated_with_cr_message() { #[test] fn negotiation_request_with_negotiation_data_is_parsed_correctly() { - let expected_flags = RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED - | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; + let expected_flags = + RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; #[rustfmt::skip] let buffer = [ @@ -295,8 +290,8 @@ fn negotiation_request_with_negotiation_data_is_parsed_correctly() { #[test] fn negotiation_request_without_variable_fields_is_parsed_correctly() { - let expected_flags = RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED - | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; + let expected_flags = + RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; #[rustfmt::skip] let buffer = [ @@ -625,8 +620,7 @@ fn read_and_check_tpdu_header_reads_correct_data_correctly() { 0x00, // class ]; - crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::ConnectionConfirm) - .unwrap(); + crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::ConnectionConfirm).unwrap(); } #[test] @@ -657,8 +651,8 @@ fn invalid_class_is_handeled_correctly() { #[test] fn parse_negotiation_request_correctly_handles_invalid_slice_length() { let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x0a, // failing cookie + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, + 0x0a, // failing cookie ]; match Request::from_buffer(request.as_ref()) { diff --git a/ironrdp/src/per.rs b/ironrdp/src/per.rs index a0f41b99..481f54ff 100644 --- a/ironrdp/src/per.rs +++ b/ironrdp/src/per.rs @@ -162,10 +162,7 @@ pub fn read_enum(mut stream: impl io::Read, count: u8) -> io::Result { if u16::from(enumerated) + 1 > u16::from(count) { Err(io::Error::new( io::ErrorKind::InvalidData, - format!( - "Enumerated value ({}) does not fall within expected range", - enumerated - ), + format!("Enumerated value ({}) does not fall within expected range", enumerated), )) } else { Ok(enumerated) @@ -199,10 +196,7 @@ pub fn read_object_id(mut stream: impl io::Read) -> io::Result<[u8; OBJECT_ID_LE Ok(read_object_ids) } -pub fn write_object_id( - mut stream: impl io::Write, - object_ids: [u8; OBJECT_ID_LEN], -) -> io::Result { +pub fn write_object_id(mut stream: impl io::Write, object_ids: [u8; OBJECT_ID_LEN]) -> io::Result { let size = write_length(&mut stream, OBJECT_ID_LEN as u16 - 1)?; let first_two_tuples = object_ids[0] * 40 + object_ids[1]; @@ -224,11 +218,7 @@ pub fn read_octet_string(mut stream: impl io::Read, min: usize) -> io::Result io::Result { +pub fn write_octet_string(mut stream: impl io::Write, octet_string: &[u8], min: usize) -> io::Result { let length = if octet_string.len() >= min { octet_string.len() - min } else { @@ -252,16 +242,8 @@ pub fn read_numeric_string(mut stream: impl io::Read, min: u16) -> io::Result<() Ok(()) } -pub fn write_numeric_string( - mut stream: impl io::Write, - num_str: &[u8], - min: usize, -) -> io::Result { - let length = if num_str.len() >= min { - num_str.len() - min - } else { - min - }; +pub fn write_numeric_string(mut stream: impl io::Write, num_str: &[u8], min: usize) -> io::Result { + let length = if num_str.len() >= min { num_str.len() - min } else { min }; let mut size = write_length(&mut stream, length as u16)?; diff --git a/ironrdp/src/per/test.rs b/ironrdp/src/per/test.rs index e53302ae..9c90a52a 100644 --- a/ironrdp/src/per/test.rs +++ b/ironrdp/src/per/test.rs @@ -220,10 +220,7 @@ fn write_numeric_string_is_correct() { #[test] fn read_octet_string_returns_ok() { let buf = [0x00, 0x44, 0x75, 0x63, 0x61]; - assert_eq!( - b"Duca".as_ref(), - read_octet_string(buf.as_ref(), 4).unwrap().as_slice() - ); + assert_eq!(b"Duca".as_ref(), read_octet_string(buf.as_ref(), 4).unwrap().as_slice()); } #[test] diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index 20e01f2d..98bed42f 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -5,11 +5,8 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - impl_from_error, - utils::{self, SplitTo}, - PduBufferParsing, -}; +use crate::utils::{self, SplitTo}; +use crate::{impl_from_error, PduBufferParsing}; const PRECONNECTION_PDU_V1_SIZE: usize = 16; @@ -41,8 +38,7 @@ impl PduBufferParsing<'_> for PreconnectionPdu { buffer.read_u32::()?; // flags let version = buffer.read_u32::()?; - let version = - Version::from_u32(version).ok_or(PreconnectionPduError::UnexpectedVersion(version))?; + let version = Version::from_u32(version).ok_or(PreconnectionPduError::UnexpectedVersion(version))?; let id = buffer.read_u32::()?; @@ -74,11 +70,7 @@ impl PduBufferParsing<'_> for PreconnectionPdu { } }; - Ok(Self { - id, - cch_pcb, - payload, - }) + Ok(Self { id, cch_pcb, payload }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { @@ -91,11 +83,7 @@ impl PduBufferParsing<'_> for PreconnectionPdu { if let Some(ref payload) = self.payload { buffer.write_u16::(payload.len() as u16 + 1)?; // + null terminator - utils::write_string_with_null_terminator( - buffer, - payload.as_str(), - utils::CharacterSet::Unicode, - )?; + utils::write_string_with_null_terminator(buffer, payload.as_str(), utils::CharacterSet::Unicode)?; } Ok(()) @@ -143,11 +131,7 @@ pub enum PreconnectionPduError { UnexpectedVersion(u32), } -impl_from_error!( - io::Error, - PreconnectionPduError, - PreconnectionPduError::IoError -); +impl_from_error!(io::Error, PreconnectionPduError, PreconnectionPduError::IoError); #[cfg(test)] mod tests { @@ -208,18 +192,12 @@ mod tests { #[test] fn from_buffer_for_preconnection_pdu_returns_error_on_empty_size() { - assert!( - PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V1_EMPTY_SIZE_BUFFER.as_ref()).is_err() - ); + assert!(PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V1_EMPTY_SIZE_BUFFER.as_ref()).is_err()); } #[test] - fn from_buffer_for_preconnection_pdu_returns_error_on_data_length_greater_then_available_data() - { - assert!(PreconnectionPdu::from_buffer( - PRECONNECTION_PDU_V1_LARGE_DATA_LENGTH_BUFFER.as_ref() - ) - .is_err()); + fn from_buffer_for_preconnection_pdu_returns_error_on_data_length_greater_then_available_data() { + assert!(PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V1_LARGE_DATA_LENGTH_BUFFER.as_ref()).is_err()); } #[test] @@ -243,19 +221,12 @@ mod tests { #[test] fn buffer_length_is_correct_for_preconnection_pdu_v1() { - assert_eq!( - PRECONNECTION_PDU_V1_BUFFER.len(), - PRECONNECTION_PDU_V1.buffer_length() - ); + assert_eq!(PRECONNECTION_PDU_V1_BUFFER.len(), PRECONNECTION_PDU_V1.buffer_length()); } #[test] - fn from_buffer_for_preconnection_pdu_v2_returns_error_on_payload_size_greater_then_available_data( - ) { - assert!(PreconnectionPdu::from_buffer( - PRECONNECTION_PDU_V2_LARGE_PAYLOAD_SIZE_BUFFER.as_ref() - ) - .is_err()); + fn from_buffer_for_preconnection_pdu_v2_returns_error_on_payload_size_greater_then_available_data() { + assert!(PreconnectionPdu::from_buffer(PRECONNECTION_PDU_V2_LARGE_PAYLOAD_SIZE_BUFFER.as_ref()).is_err()); } #[test] @@ -279,9 +250,6 @@ mod tests { #[test] fn buffer_length_is_correct_for_preconnection_pdu_v2() { - assert_eq!( - PRECONNECTION_PDU_V2_BUFFER.len(), - PRECONNECTION_PDU_V2.buffer_length() - ); + assert_eq!(PRECONNECTION_PDU_V2_BUFFER.len(), PRECONNECTION_PDU_V2.buffer_length()); } } diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 5e11aaa5..141764ff 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -11,39 +11,32 @@ mod finalization_messages; mod headers; mod server_error_info; -pub use self::{ - capability_sets::{ - CapabilitySet, CapabilitySetsError, ClientConfirmActive, DemandActive, ServerDemandActive, - VirtualChannel, SERVER_CHANNEL_ID, - }, - client_info::{ - AddressFamily, ClientInfo, ClientInfoFlags, CompressionType, Credentials, DayOfWeek, - DayOfWeekOccurrence, ExtendedClientInfo, ExtendedClientOptionalInfo, Month, - PerformanceFlags, SystemTime, TimezoneInfo, - }, - finalization_messages::{ - ControlAction, ControlPdu, FontPdu, MonitorLayoutPdu, SequenceFlags, SynchronizePdu, - }, - headers::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, CompressionFlags, ShareControlHeader, - ShareControlPdu, ShareControlPduType, ShareDataHeader, ShareDataPdu, ShareDataPduType, - StreamPriority, BASIC_SECURITY_HEADER_SIZE, - }, - server_error_info::{ - ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, - ProtocolIndependentLicensingCode, RdpSpecificCode, ServerSetErrorInfoError, - ServerSetErrorInfoPdu, - }, -}; - use std::io; use failure::Fail; -use self::{ - client_info::ClientInfoError, finalization_messages::FinalizationMessagesError, - server_license::ServerLicenseError, +pub use self::capability_sets::{ + CapabilitySet, CapabilitySetsError, ClientConfirmActive, DemandActive, ServerDemandActive, VirtualChannel, + SERVER_CHANNEL_ID, }; +use self::client_info::ClientInfoError; +pub use self::client_info::{ + AddressFamily, ClientInfo, ClientInfoFlags, CompressionType, Credentials, DayOfWeek, DayOfWeekOccurrence, + ExtendedClientInfo, ExtendedClientOptionalInfo, Month, PerformanceFlags, SystemTime, TimezoneInfo, +}; +use self::finalization_messages::FinalizationMessagesError; +pub use self::finalization_messages::{ + ControlAction, ControlPdu, FontPdu, MonitorLayoutPdu, SequenceFlags, SynchronizePdu, +}; +pub use self::headers::{ + BasicSecurityHeader, BasicSecurityHeaderFlags, CompressionFlags, ShareControlHeader, ShareControlPdu, + ShareControlPduType, ShareDataHeader, ShareDataPdu, ShareDataPduType, StreamPriority, BASIC_SECURITY_HEADER_SIZE, +}; +pub use self::server_error_info::{ + ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, + RdpSpecificCode, ServerSetErrorInfoError, ServerSetErrorInfoPdu, +}; +use self::server_license::ServerLicenseError; use crate::{impl_from_error, PduParsing}; #[derive(Debug, Clone, PartialEq)] @@ -57,10 +50,7 @@ impl PduParsing for ClientInfoPdu { fn from_buffer(mut stream: impl io::Read) -> Result { let security_header = BasicSecurityHeader::from_buffer(&mut stream)?; - if security_header - .flags - .contains(BasicSecurityHeaderFlags::INFO_PKT) - { + if security_header.flags.contains(BasicSecurityHeaderFlags::INFO_PKT) { let client_info = ClientInfo::from_buffer(&mut stream)?; Ok(Self { @@ -120,27 +110,12 @@ impl_from_error!(io::Error, RdpError, RdpError::IOError); impl_from_error!(ClientInfoError, RdpError, RdpError::ClientInfoError); impl_from_error!(ServerLicenseError, RdpError, RdpError::ServerLicenseError); impl_from_error!(CapabilitySetsError, RdpError, RdpError::CapabilitySetsError); -impl_from_error!( - FinalizationMessagesError, - RdpError, - RdpError::FinalizationMessagesError -); -impl_from_error!( - session_info::SessionError, - RdpError, - RdpError::SaveSessionInfoError -); -impl_from_error!( - ServerSetErrorInfoError, - RdpError, - RdpError::ServerSetErrorInfoError -); +impl_from_error!(FinalizationMessagesError, RdpError, RdpError::FinalizationMessagesError); +impl_from_error!(session_info::SessionError, RdpError, RdpError::SaveSessionInfoError); +impl_from_error!(ServerSetErrorInfoError, RdpError, RdpError::ServerSetErrorInfoError); impl From for io::Error { fn from(e: RdpError) -> io::Error { - io::Error::new( - io::ErrorKind::Other, - format!("RDP Connection Sequence error: {}", e), - ) + io::Error::new(io::ErrorKind::Other, format!("RDP Connection Sequence error: {}", e)) } } diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index 730f4680..ec3f9680 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -20,35 +20,32 @@ mod virtual_channel; use std::io; -pub use self::{ - bitmap::{Bitmap, BitmapDrawingFlags}, - bitmap_cache::{ - BitmapCache, BitmapCacheRev2, CacheEntry, CacheFlags, CellInfo, BITMAP_CACHE_ENTRIES_NUM, - }, - bitmap_codecs::{ - BitmapCodecs, CaptureFlags, Codec, CodecProperty, EntropyBits, Guid, NsCodec, - RemoteFxContainer, RfxCaps, RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, - }, - brush::{Brush, SupportLevel}, - frame_acknowledge::FrameAcknowledge, - general::{General, GeneralExtraFlags, MajorPlatformType, MinorPlatformType}, - glyph_cache::{CacheDefinition, GlyphCache, GlyphSupportLevel, GLYPH_CACHE_NUM}, - input::{Input, InputFlags}, - large_pointer::{LargePointer, LargePointerSupportFlags}, - multifragment_update::MultifragmentUpdate, - offscreen_bitmap_cache::OffscreenBitmapCache, - order::{Order, OrderFlags, OrderSupportExFlags, OrderSupportIndex}, - pointer::Pointer, - sound::{Sound, SoundFlags}, - surface_commands::{CmdFlags, SurfaceCommands}, - virtual_channel::{VirtualChannel, VirtualChannelFlags}, -}; - use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::bitmap::{Bitmap, BitmapDrawingFlags}; +pub use self::bitmap_cache::{ + BitmapCache, BitmapCacheRev2, CacheEntry, CacheFlags, CellInfo, BITMAP_CACHE_ENTRIES_NUM, +}; +pub use self::bitmap_codecs::{ + BitmapCodecs, CaptureFlags, Codec, CodecProperty, EntropyBits, Guid, NsCodec, RemoteFxContainer, RfxCaps, + RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, +}; +pub use self::brush::{Brush, SupportLevel}; +pub use self::frame_acknowledge::FrameAcknowledge; +pub use self::general::{General, GeneralExtraFlags, MajorPlatformType, MinorPlatformType}; +pub use self::glyph_cache::{CacheDefinition, GlyphCache, GlyphSupportLevel, GLYPH_CACHE_NUM}; +pub use self::input::{Input, InputFlags}; +pub use self::large_pointer::{LargePointer, LargePointerSupportFlags}; +pub use self::multifragment_update::MultifragmentUpdate; +pub use self::offscreen_bitmap_cache::OffscreenBitmapCache; +pub use self::order::{Order, OrderFlags, OrderSupportExFlags, OrderSupportIndex}; +pub use self::pointer::Pointer; +pub use self::sound::{Sound, SoundFlags}; +pub use self::surface_commands::{CmdFlags, SurfaceCommands}; +pub use self::virtual_channel::{VirtualChannel, VirtualChannelFlags}; use crate::{impl_from_error, PduParsing}; pub const SERVER_CHANNEL_ID: u16 = 0x03ea; @@ -167,9 +164,7 @@ impl PduParsing for DemandActive { + NUMBER_CAPABILITIES_FIELD_SIZE + PADDING_SIZE; - stream.write_u16::( - (self.source_descriptor.len() + NULL_TERMINATOR.as_bytes().len()) as u16, - )?; + stream.write_u16::((self.source_descriptor.len() + NULL_TERMINATOR.as_bytes().len()) as u16)?; stream.write_u16::(combined_length as u16)?; stream.write_all(self.source_descriptor.as_ref())?; stream.write_all(NULL_TERMINATOR.as_bytes())?; @@ -239,8 +234,8 @@ impl PduParsing for CapabilitySet { type Error = CapabilitySetsError; fn from_buffer(mut stream: impl io::Read) -> Result { - let capability_set_type = CapabilitySetType::from_u16(stream.read_u16::()?) - .ok_or(CapabilitySetsError::InvalidType)?; + let capability_set_type = + CapabilitySetType::from_u16(stream.read_u16::()?).ok_or(CapabilitySetsError::InvalidType)?; let length = stream.read_u16::()? as usize; @@ -248,8 +243,7 @@ impl PduParsing for CapabilitySet { return Err(CapabilitySetsError::InvalidLength); } - let buffer_length = - length - CAPABILITY_SET_TYPE_FIELD_SIZE - CAPABILITY_SET_LENGTH_FIELD_SIZE; + let buffer_length = length - CAPABILITY_SET_TYPE_FIELD_SIZE - CAPABILITY_SET_LENGTH_FIELD_SIZE; let mut capability_set_buffer = vec![0; buffer_length]; stream.read_exact(capability_set_buffer.as_mut())?; @@ -263,12 +257,12 @@ impl PduParsing for CapabilitySet { CapabilitySetType::Order => Ok(CapabilitySet::Order(Order::from_buffer( &mut capability_set_buffer.as_slice(), )?)), - CapabilitySetType::BitmapCache => Ok(CapabilitySet::BitmapCache( - BitmapCache::from_buffer(&mut capability_set_buffer.as_slice())?, - )), - CapabilitySetType::BitmapCacheRev2 => Ok(CapabilitySet::BitmapCacheRev2( - BitmapCacheRev2::from_buffer(&mut capability_set_buffer.as_slice())?, - )), + CapabilitySetType::BitmapCache => Ok(CapabilitySet::BitmapCache(BitmapCache::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), + CapabilitySetType::BitmapCacheRev2 => Ok(CapabilitySet::BitmapCacheRev2(BitmapCacheRev2::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), CapabilitySetType::Pointer => Ok(CapabilitySet::Pointer(Pointer::from_buffer( &mut capability_set_buffer.as_slice(), )?)), @@ -281,50 +275,44 @@ impl PduParsing for CapabilitySet { CapabilitySetType::Brush => Ok(CapabilitySet::Brush(Brush::from_buffer( &mut capability_set_buffer.as_slice(), )?)), - CapabilitySetType::GlyphCache => Ok(CapabilitySet::GlyphCache( - GlyphCache::from_buffer(&mut capability_set_buffer.as_slice())?, - )), + CapabilitySetType::GlyphCache => Ok(CapabilitySet::GlyphCache(GlyphCache::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), CapabilitySetType::OffscreenBitmapCache => Ok(CapabilitySet::OffscreenBitmapCache( OffscreenBitmapCache::from_buffer(&mut capability_set_buffer.as_slice())?, )), - CapabilitySetType::VirtualChannel => Ok(CapabilitySet::VirtualChannel( - VirtualChannel::from_buffer(&mut capability_set_buffer.as_slice())?, - )), - CapabilitySetType::SurfaceCommands => Ok(CapabilitySet::SurfaceCommands( - SurfaceCommands::from_buffer(&mut capability_set_buffer.as_slice())?, - )), - CapabilitySetType::BitmapCodecs => Ok(CapabilitySet::BitmapCodecs( - BitmapCodecs::from_buffer(&mut capability_set_buffer.as_slice())?, - )), + CapabilitySetType::VirtualChannel => Ok(CapabilitySet::VirtualChannel(VirtualChannel::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), + CapabilitySetType::SurfaceCommands => Ok(CapabilitySet::SurfaceCommands(SurfaceCommands::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), + CapabilitySetType::BitmapCodecs => Ok(CapabilitySet::BitmapCodecs(BitmapCodecs::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), CapabilitySetType::Control => Ok(CapabilitySet::Control(capability_set_buffer)), - CapabilitySetType::WindowActivation => { - Ok(CapabilitySet::WindowActivation(capability_set_buffer)) - } + CapabilitySetType::WindowActivation => Ok(CapabilitySet::WindowActivation(capability_set_buffer)), CapabilitySetType::Share => Ok(CapabilitySet::Share(capability_set_buffer)), CapabilitySetType::Font => Ok(CapabilitySet::Font(capability_set_buffer)), CapabilitySetType::BitmapCacheHostSupport => { Ok(CapabilitySet::BitmapCacheHostSupport(capability_set_buffer)) } - CapabilitySetType::DesktopComposition => { - Ok(CapabilitySet::DesktopComposition(capability_set_buffer)) - } + CapabilitySetType::DesktopComposition => Ok(CapabilitySet::DesktopComposition(capability_set_buffer)), CapabilitySetType::MultiFragmentUpdate => Ok(CapabilitySet::MultiFragmentUpdate( MultifragmentUpdate::from_buffer(&mut capability_set_buffer.as_slice())?, )), - CapabilitySetType::LargePointer => Ok(CapabilitySet::LargePointer( - LargePointer::from_buffer(&mut capability_set_buffer.as_slice())?, - )), + CapabilitySetType::LargePointer => Ok(CapabilitySet::LargePointer(LargePointer::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), CapabilitySetType::ColorCache => Ok(CapabilitySet::ColorCache(capability_set_buffer)), - CapabilitySetType::DrawNineGridCache => { - Ok(CapabilitySet::DrawNineGridCache(capability_set_buffer)) - } + CapabilitySetType::DrawNineGridCache => Ok(CapabilitySet::DrawNineGridCache(capability_set_buffer)), CapabilitySetType::DrawGdiPlus => Ok(CapabilitySet::DrawGdiPlus(capability_set_buffer)), CapabilitySetType::Rail => Ok(CapabilitySet::Rail(capability_set_buffer)), CapabilitySetType::WindowList => Ok(CapabilitySet::WindowList(capability_set_buffer)), - CapabilitySetType::FrameAcknowledge => Ok(CapabilitySet::FrameAcknowledge( - FrameAcknowledge::from_buffer(&mut capability_set_buffer.as_slice())?, - )), + CapabilitySetType::FrameAcknowledge => Ok(CapabilitySet::FrameAcknowledge(FrameAcknowledge::from_buffer( + &mut capability_set_buffer.as_slice(), + )?)), } } @@ -333,190 +321,134 @@ impl PduParsing for CapabilitySet { CapabilitySet::General(capset) => { stream.write_u16::(CapabilitySetType::General.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Bitmap(capset) => { stream.write_u16::(CapabilitySetType::Bitmap.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Order(capset) => { stream.write_u16::(CapabilitySetType::Order.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::BitmapCache(capset) => { - stream - .write_u16::(CapabilitySetType::BitmapCache.to_u16().unwrap())?; + stream.write_u16::(CapabilitySetType::BitmapCache.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::BitmapCacheRev2(capset) => { + stream.write_u16::(CapabilitySetType::BitmapCacheRev2.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::BitmapCacheRev2.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Pointer(capset) => { stream.write_u16::(CapabilitySetType::Pointer.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Sound(capset) => { stream.write_u16::(CapabilitySetType::Sound.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Input(capset) => { stream.write_u16::(CapabilitySetType::Input.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::Brush(capset) => { stream.write_u16::(CapabilitySetType::Brush.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::GlyphCache(capset) => { - stream - .write_u16::(CapabilitySetType::GlyphCache.to_u16().unwrap())?; + stream.write_u16::(CapabilitySetType::GlyphCache.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::OffscreenBitmapCache(capset) => { + stream.write_u16::(CapabilitySetType::OffscreenBitmapCache.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::OffscreenBitmapCache.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::VirtualChannel(capset) => { + stream.write_u16::(CapabilitySetType::VirtualChannel.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::VirtualChannel.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::SurfaceCommands(capset) => { + stream.write_u16::(CapabilitySetType::SurfaceCommands.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::SurfaceCommands.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::BitmapCodecs(capset) => { - stream - .write_u16::(CapabilitySetType::BitmapCodecs.to_u16().unwrap())?; + stream.write_u16::(CapabilitySetType::BitmapCodecs.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::MultiFragmentUpdate(capset) => { + stream.write_u16::(CapabilitySetType::MultiFragmentUpdate.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::MultiFragmentUpdate.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::LargePointer(capset) => { - stream - .write_u16::(CapabilitySetType::LargePointer.to_u16().unwrap())?; + stream.write_u16::(CapabilitySetType::LargePointer.to_u16().unwrap())?; stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } CapabilitySet::FrameAcknowledge(capset) => { + stream.write_u16::(CapabilitySetType::FrameAcknowledge.to_u16().unwrap())?; stream.write_u16::( - CapabilitySetType::FrameAcknowledge.to_u16().unwrap(), - )?; - stream.write_u16::( - (capset.buffer_length() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capset.buffer_length() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, )?; capset.to_buffer(&mut stream)?; } _ => { let (capability_set_type, capability_set_buffer) = match self { CapabilitySet::Control(buffer) => (CapabilitySetType::Control, buffer), - CapabilitySet::WindowActivation(buffer) => { - (CapabilitySetType::WindowActivation, buffer) - } + CapabilitySet::WindowActivation(buffer) => (CapabilitySetType::WindowActivation, buffer), CapabilitySet::Share(buffer) => (CapabilitySetType::Share, buffer), CapabilitySet::Font(buffer) => (CapabilitySetType::Font, buffer), CapabilitySet::BitmapCacheHostSupport(buffer) => { (CapabilitySetType::BitmapCacheHostSupport, buffer) } - CapabilitySet::DesktopComposition(buffer) => { - (CapabilitySetType::DesktopComposition, buffer) - } + CapabilitySet::DesktopComposition(buffer) => (CapabilitySetType::DesktopComposition, buffer), CapabilitySet::ColorCache(buffer) => (CapabilitySetType::ColorCache, buffer), - CapabilitySet::DrawNineGridCache(buffer) => { - (CapabilitySetType::DrawNineGridCache, buffer) - } + CapabilitySet::DrawNineGridCache(buffer) => (CapabilitySetType::DrawNineGridCache, buffer), CapabilitySet::DrawGdiPlus(buffer) => (CapabilitySetType::DrawGdiPlus, buffer), CapabilitySet::Rail(buffer) => (CapabilitySetType::Rail, buffer), CapabilitySet::WindowList(buffer) => (CapabilitySetType::WindowList, buffer), @@ -525,9 +457,8 @@ impl PduParsing for CapabilitySet { stream.write_u16::(capability_set_type.to_u16().unwrap())?; stream.write_u16::( - (capability_set_buffer.len() - + CAPABILITY_SET_TYPE_FIELD_SIZE - + CAPABILITY_SET_LENGTH_FIELD_SIZE) as u16, + (capability_set_buffer.len() + CAPABILITY_SET_TYPE_FIELD_SIZE + CAPABILITY_SET_LENGTH_FIELD_SIZE) + as u16, )?; stream.write_all(capability_set_buffer)?; } diff --git a/ironrdp/src/rdp/capability_sets/bitmap.rs b/ironrdp/src/rdp/capability_sets/bitmap.rs index 0c6e2eb4..b2017348 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const BITMAP_LENGTH: usize = 24; diff --git a/ironrdp/src/rdp/capability_sets/bitmap_cache.rs b/ironrdp/src/rdp/capability_sets/bitmap_cache.rs index 881090da..c13647d9 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_cache.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_cache.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; pub const BITMAP_CACHE_ENTRIES_NUM: usize = 3; @@ -74,10 +75,7 @@ impl PduParsing for CacheEntry { let entries = buffer.read_u16::()?; let max_cell_size = buffer.read_u16::()?; - Ok(CacheEntry { - entries, - max_cell_size, - }) + Ok(CacheEntry { entries, max_cell_size }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs b/ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs index 387f551d..993d81da 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs @@ -52,8 +52,7 @@ lazy_static! { ], }; pub static ref BITMAP_CACHE_REV2: BitmapCacheRev2 = BitmapCacheRev2 { - cache_flags: CacheFlags::PERSISTENT_KEYS_EXPECTED_FLAG - | CacheFlags::ALLOW_CACHE_WAITING_LIST_FLAG, + cache_flags: CacheFlags::PERSISTENT_KEYS_EXPECTED_FLAG | CacheFlags::ALLOW_CACHE_WAITING_LIST_FLAG, num_cell_caches: 3, cache_cell_info: [ CellInfo { @@ -112,10 +111,7 @@ fn buffer_length_is_correct_for_bitmap_cache_capset() { fn from_buffer_correctly_parses_bitmap_cache_rev2_capset() { let buffer = BITMAP_CACHE_REV2_BUFFER.as_ref(); - assert_eq!( - *BITMAP_CACHE_REV2, - BitmapCacheRev2::from_buffer(buffer).unwrap() - ); + assert_eq!(*BITMAP_CACHE_REV2, BitmapCacheRev2::from_buffer(buffer).unwrap()); } #[test] @@ -128,18 +124,12 @@ fn to_buffer_correctly_serializes_bitmap_cache_rev2_capset() { #[test] fn buffer_length_is_correct_for_bitmap_cache_rev2_capset() { - assert_eq!( - BITMAP_CACHE_REV2_BUFFER.len(), - BITMAP_CACHE_REV2.buffer_length() - ); + assert_eq!(BITMAP_CACHE_REV2_BUFFER.len(), BITMAP_CACHE_REV2.buffer_length()); } #[test] fn from_buffer_correctly_parses_cell_info() { - assert_eq!( - *CELL_INFO, - CellInfo::from_buffer(CELL_INFO_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*CELL_INFO, CellInfo::from_buffer(CELL_INFO_BUFFER.as_ref()).unwrap()); } #[test] diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs index 72dbc8c4..c92b0951 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs @@ -8,7 +8,8 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const RFX_ICAP_VERSION: u16 = 0x0100; const RFX_ICAP_TILE_SIZE: u16 = 0x40; @@ -138,9 +139,7 @@ impl PduParsing for Codec { buffer.read_exact(&mut property_buffer)?; match guid { - GUID_NSCODEC => { - CodecProperty::NsCodec(NsCodec::from_buffer(&mut property_buffer.as_slice())?) - } + GUID_NSCODEC => CodecProperty::NsCodec(NsCodec::from_buffer(&mut property_buffer.as_slice())?), GUID_REMOTEFX | GUID_IMAGE_REMOTEFX => { let property = if property_buffer[0] == 0 { RemoteFxContainer::ServerContainer(codec_properties_len) @@ -417,9 +416,7 @@ impl PduParsing for RfxCapset { fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { buffer.write_u16::(RFX_CAPSET_BLOCK_TYPE)?; - buffer.write_u32::( - (RFX_CAPSET_STATIC_DATA_LENGTH + self.0.len() * RFX_ICAP_LENGTH) as u32, - )?; + buffer.write_u32::((RFX_CAPSET_STATIC_DATA_LENGTH + self.0.len() * RFX_ICAP_LENGTH) as u32)?; buffer.write_u8(1)?; // codec id buffer.write_u16::(RFX_CAPSET_TYPE)?; buffer.write_u16::(self.0.len() as u16)?; @@ -469,13 +466,10 @@ impl PduParsing for RfxICap { return Err(CapabilitySetsError::InvalidRfxICapTransformBits); } - let entropy_bits = EntropyBits::from_u8(buffer.read_u8()?) - .ok_or(CapabilitySetsError::InvalidRfxICapEntropyBits)?; + let entropy_bits = + EntropyBits::from_u8(buffer.read_u8()?).ok_or(CapabilitySetsError::InvalidRfxICapEntropyBits)?; - Ok(RfxICap { - flags, - entropy_bits, - }) + Ok(RfxICap { flags, entropy_bits }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs b/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs index bcf42f31..7f744424 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs @@ -94,8 +94,7 @@ const NSCODEC_BUFFER: [u8; 3] = [ ]; const CODEC_BUFFER: [u8; 68] = [ - 0x12, 0x2f, 0x77, 0x76, 0x72, 0xbd, 0x63, 0x44, 0xAF, 0xB3, 0xB7, 0x3C, 0x9C, 0x6F, 0x78, - 0x86, // guid + 0x12, 0x2f, 0x77, 0x76, 0x72, 0xbd, 0x63, 0x44, 0xAF, 0xB3, 0xB7, 0x3C, 0x9C, 0x6F, 0x78, 0x86, // guid 0x03, // codec id 0x31, 0x00, // codec properties len 0x31, 0x00, 0x00, 0x00, // length @@ -284,10 +283,7 @@ fn buffer_length_is_correct_for_guid() { #[test] fn from_buffer_correctly_parses_rfx_icap() { - assert_eq!( - *RFX_ICAP, - RfxICap::from_buffer(RFX_ICAP_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*RFX_ICAP, RfxICap::from_buffer(RFX_ICAP_BUFFER.as_ref()).unwrap()); } #[test] @@ -306,10 +302,7 @@ fn buffer_length_is_correct_for_rfx_icap() { #[test] fn from_buffer_correctly_parses_rfx_capset() { - assert_eq!( - *RFX_CAPSET, - RfxCapset::from_buffer(RFX_CAPSET_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*RFX_CAPSET, RfxCapset::from_buffer(RFX_CAPSET_BUFFER.as_ref()).unwrap()); } #[test] @@ -328,10 +321,7 @@ fn buffer_length_is_correct_for_rfx_capset() { #[test] fn from_buffer_correctly_parses_rfx_caps() { - assert_eq!( - *RFX_CAPS, - RfxCaps::from_buffer(RFX_CAPS_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*RFX_CAPS, RfxCaps::from_buffer(RFX_CAPS_BUFFER.as_ref()).unwrap()); } #[test] @@ -375,10 +365,7 @@ fn buffer_length_is_correct_for_rfx_client_caps_container() { #[test] fn from_buffer_correctly_parses_nscodec() { - assert_eq!( - *NSCODEC, - NsCodec::from_buffer(NSCODEC_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*NSCODEC, NsCodec::from_buffer(NSCODEC_BUFFER.as_ref()).unwrap()); } #[test] @@ -461,8 +448,7 @@ fn buffer_length_is_correct_for_bitmap_codec() { #[test] fn codec_with_invalid_property_length_handles_correctly() { let codec_buffer: [u8; 68] = [ - 0x12, 0x2f, 0x77, 0x76, 0x72, 0xbd, 0x63, 0x44, 0xAF, 0xB3, 0xB7, 0x3C, 0x9C, 0x6F, 0x78, - 0x86, // guid + 0x12, 0x2f, 0x77, 0x76, 0x72, 0xbd, 0x63, 0x44, 0xAF, 0xB3, 0xB7, 0x3C, 0x9C, 0x6F, 0x78, 0x86, // guid 0x03, // codec id 0x00, 0x00, // codec properties len 0x31, 0x00, 0x00, 0x00, // length @@ -501,8 +487,8 @@ fn codec_with_invalid_property_length_handles_correctly() { #[test] fn codec_with_empty_property_length_and_ignore_guid_handles_correctly() { let codec_buffer: [u8; 19] = [ - 0xa6, 0x51, 0x43, 0x9c, 0x35, 0x35, 0xae, 0x42, 0x91, 0x0c, 0xcd, 0xfc, 0xe5, 0x76, 0x0b, - 0x58, 0x00, // codec id + 0xa6, 0x51, 0x43, 0x9c, 0x35, 0x35, 0xae, 0x42, 0x91, 0x0c, 0xcd, 0xfc, 0xe5, 0x76, 0x0b, 0x58, + 0x00, // codec id 0x00, 0x00, // codec properties len ]; @@ -517,8 +503,8 @@ fn codec_with_empty_property_length_and_ignore_guid_handles_correctly() { #[test] fn codec_with_property_length_and_ignore_guid_handled_correctly() { let codec_buffer = vec![ - 0xa6u8, 0x51, 0x43, 0x9c, 0x35, 0x35, 0xae, 0x42, 0x91, 0x0c, 0xcd, 0xfc, 0xe5, 0x76, 0x0b, - 0x58, 0x00, // codec id + 0xa6u8, 0x51, 0x43, 0x9c, 0x35, 0x35, 0xae, 0x42, 0x91, 0x0c, 0xcd, 0xfc, 0xe5, 0x76, 0x0b, 0x58, + 0x00, // codec id 0x0f, 0x00, // codec properties len 0xa6, 0x51, 0x43, 0x9c, 0x35, 0x35, 0xae, 0x42, 0x91, 0x0c, 0xcd, 0xfc, 0xe5, 0x76, 0x0b, ]; @@ -537,8 +523,7 @@ fn codec_with_property_length_and_ignore_guid_handled_correctly() { #[test] fn ns_codec_with_too_high_color_loss_level_handled_correctly() { let codec_buffer = vec![ - 0xb9, 0x1b, 0x8d, 0xca, 0x0f, 0x00, 0x4f, 0x15, 0x58, 0x9F, 0xAE, 0x2D, 0x1A, 0x87, 0xE2, - 0xd6, // guid + 0xb9, 0x1b, 0x8d, 0xca, 0x0f, 0x00, 0x4f, 0x15, 0x58, 0x9F, 0xAE, 0x2D, 0x1A, 0x87, 0xE2, 0xd6, // guid 0x00, // codec id 0x03, 0x00, // codec properties len 0x01, // allow dynamic fidelity @@ -555,17 +540,13 @@ fn ns_codec_with_too_high_color_loss_level_handled_correctly() { }), }; - assert_eq!( - codec, - Codec::from_buffer(&mut codec_buffer.as_slice()).unwrap() - ); + assert_eq!(codec, Codec::from_buffer(&mut codec_buffer.as_slice()).unwrap()); } #[test] fn ns_codec_with_too_low_color_loss_level_handled_correctly() { let codec_buffer = vec![ - 0xb9, 0x1b, 0x8d, 0xca, 0x0f, 0x00, 0x4f, 0x15, 0x58, 0x9F, 0xAE, 0x2D, 0x1A, 0x87, 0xE2, - 0xd6, // guid + 0xb9, 0x1b, 0x8d, 0xca, 0x0f, 0x00, 0x4f, 0x15, 0x58, 0x9F, 0xAE, 0x2D, 0x1A, 0x87, 0xE2, 0xd6, // guid 0x00, // codec id 0x03, 0x00, // codec properties len 0x01, // allow dynamic fidelity @@ -582,8 +563,5 @@ fn ns_codec_with_too_low_color_loss_level_handled_correctly() { }), }; - assert_eq!( - codec, - Codec::from_buffer(&mut codec_buffer.as_slice()).unwrap() - ); + assert_eq!(codec, Codec::from_buffer(&mut codec_buffer.as_slice()).unwrap()); } diff --git a/ironrdp/src/rdp/capability_sets/brush.rs b/ironrdp/src/rdp/capability_sets/brush.rs index b688899c..97077769 100644 --- a/ironrdp/src/rdp/capability_sets/brush.rs +++ b/ironrdp/src/rdp/capability_sets/brush.rs @@ -7,7 +7,8 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const BRUSH_LENGTH: usize = 4; diff --git a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs index 29d887fc..8e435f8e 100644 --- a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs +++ b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs @@ -2,7 +2,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; #[derive(Debug, Clone, PartialEq)] pub struct FrameAcknowledge { diff --git a/ironrdp/src/rdp/capability_sets/general.rs b/ironrdp/src/rdp/capability_sets/general.rs index 74adf18c..ca734368 100644 --- a/ironrdp/src/rdp/capability_sets/general.rs +++ b/ironrdp/src/rdp/capability_sets/general.rs @@ -8,7 +8,8 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const GENERAL_LENGTH: usize = 20; const PROTOCOL_VER: u16 = 0x0200; diff --git a/ironrdp/src/rdp/capability_sets/glyph_cache.rs b/ironrdp/src/rdp/capability_sets/glyph_cache.rs index aee96f59..94a8d9ae 100644 --- a/ironrdp/src/rdp/capability_sets/glyph_cache.rs +++ b/ironrdp/src/rdp/capability_sets/glyph_cache.rs @@ -7,7 +7,8 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; pub const GLYPH_CACHE_NUM: usize = 10; @@ -35,10 +36,7 @@ impl PduParsing for CacheDefinition { let entries = buffer.read_u16::()?; let max_cell_size = buffer.read_u16::()?; - Ok(CacheDefinition { - entries, - max_cell_size, - }) + Ok(CacheDefinition { entries, max_cell_size }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/capability_sets/glyph_cache/test.rs b/ironrdp/src/rdp/capability_sets/glyph_cache/test.rs index c3aebdf0..95f6ef40 100644 --- a/ironrdp/src/rdp/capability_sets/glyph_cache/test.rs +++ b/ironrdp/src/rdp/capability_sets/glyph_cache/test.rs @@ -3,9 +3,9 @@ use lazy_static::lazy_static; use super::*; const GLYPH_CACHE_BUFFER: [u8; 48] = [ - 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x08, 0x00, - 0xfe, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x80, 0x00, - 0xfe, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, // GlyphCache + 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x10, + 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x40, 0x00, + 0x00, 0x08, // GlyphCache 0x00, 0x01, 0x00, 0x01, // FragCache 0x03, 0x00, // GlyphSupportLevel 0x00, 0x00, // pad2octets @@ -110,8 +110,5 @@ fn to_buffer_correctly_serializes_cache_definition() { #[test] fn buffer_length_is_correct_for_cache_definition() { - assert_eq!( - CACHE_DEFINITION_BUFFER.len(), - CACHE_DEFINITION.buffer_length() - ); + assert_eq!(CACHE_DEFINITION_BUFFER.len(), CACHE_DEFINITION.buffer_length()); } diff --git a/ironrdp/src/rdp/capability_sets/input.rs b/ironrdp/src/rdp/capability_sets/input.rs index ed8dc6e8..7249ca5c 100644 --- a/ironrdp/src/rdp/capability_sets/input.rs +++ b/ironrdp/src/rdp/capability_sets/input.rs @@ -7,11 +7,9 @@ use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - gcc::{KeyboardType, IME_FILE_NAME_SIZE}, - rdp::CapabilitySetsError, - utils, PduParsing, -}; +use crate::gcc::{KeyboardType, IME_FILE_NAME_SIZE}; +use crate::rdp::CapabilitySetsError; +use crate::{utils, PduParsing}; const INPUT_LENGTH: usize = 84; @@ -82,8 +80,7 @@ impl PduParsing for Input { buffer.write_u32::(self.keyboard_subtype)?; buffer.write_u32::(self.keyboard_function_key)?; - let mut keyboard_ime_file_name_buffer = - utils::string_to_utf16(self.keyboard_ime_filename.as_ref()); + let mut keyboard_ime_file_name_buffer = utils::string_to_utf16(self.keyboard_ime_filename.as_ref()); keyboard_ime_file_name_buffer.resize(IME_FILE_NAME_SIZE - 2, 0); buffer.write_all(keyboard_ime_file_name_buffer.as_ref())?; buffer.write_u16::(0)?; // ime file name null terminator diff --git a/ironrdp/src/rdp/capability_sets/input/test.rs b/ironrdp/src/rdp/capability_sets/input/test.rs index 9722fba0..ea3eea72 100644 --- a/ironrdp/src/rdp/capability_sets/input/test.rs +++ b/ironrdp/src/rdp/capability_sets/input/test.rs @@ -9,11 +9,10 @@ const INPUT_BUFFER: [u8; 84] = [ 0x04, 0x00, 0x00, 0x00, // keyboardType 0x00, 0x00, 0x00, 0x00, // keyboardSubType 0x0c, 0x00, 0x00, 0x00, // keyboardFunctionKey - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // imeFileName + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // imeFileName ]; lazy_static! { diff --git a/ironrdp/src/rdp/capability_sets/large_pointer.rs b/ironrdp/src/rdp/capability_sets/large_pointer.rs index 7cf9a4ca..a4ba8a4b 100644 --- a/ironrdp/src/rdp/capability_sets/large_pointer.rs +++ b/ironrdp/src/rdp/capability_sets/large_pointer.rs @@ -3,7 +3,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; #[derive(Debug, PartialEq, Clone)] pub struct LargePointer { @@ -14,8 +15,7 @@ impl PduParsing for LargePointer { type Error = CapabilitySetsError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let flags = - LargePointerSupportFlags::from_bits_truncate(buffer.read_u16::()?); + let flags = LargePointerSupportFlags::from_bits_truncate(buffer.read_u16::()?); Ok(Self { flags }) } @@ -66,9 +66,6 @@ mod test { #[test] fn buffer_length_is_correct_for_large_pointer() { - assert_eq!( - LARGE_POINTER_PDU_BUFFER.len(), - LARGE_POINTER_PDU.buffer_length() - ); + assert_eq!(LARGE_POINTER_PDU_BUFFER.len(), LARGE_POINTER_PDU.buffer_length()); } } diff --git a/ironrdp/src/rdp/capability_sets/multifragment_update.rs b/ironrdp/src/rdp/capability_sets/multifragment_update.rs index 79860b98..11b8da93 100644 --- a/ironrdp/src/rdp/capability_sets/multifragment_update.rs +++ b/ironrdp/src/rdp/capability_sets/multifragment_update.rs @@ -2,7 +2,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; #[derive(Debug, PartialEq, Clone)] pub struct MultifragmentUpdate { diff --git a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs b/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs index b37f4cb5..728cee12 100644 --- a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs +++ b/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs @@ -5,7 +5,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const OFFSCREEN_BITMAP_CACHE_LENGTH: usize = 8; diff --git a/ironrdp/src/rdp/capability_sets/order.rs b/ironrdp/src/rdp/capability_sets/order.rs index 319ad040..fd0e6557 100644 --- a/ironrdp/src/rdp/capability_sets/order.rs +++ b/ironrdp/src/rdp/capability_sets/order.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const ORDER_LENGTH: usize = 84; const ORD_LEVEL_1_ORDERS: u16 = 1; @@ -108,8 +109,7 @@ impl PduParsing for Order { let _text_flags = buffer.read_u16::()?; - let order_support_ex_flags = - OrderSupportExFlags::from_bits_truncate(buffer.read_u16::()?); + let order_support_ex_flags = OrderSupportExFlags::from_bits_truncate(buffer.read_u16::()?); let _padding = buffer.read_u32::()?; let desktop_save_size = buffer.read_u32::()?; diff --git a/ironrdp/src/rdp/capability_sets/order/test.rs b/ironrdp/src/rdp/capability_sets/order/test.rs index 6f576a1e..ae4e9765 100644 --- a/ironrdp/src/rdp/capability_sets/order/test.rs +++ b/ironrdp/src/rdp/capability_sets/order/test.rs @@ -3,17 +3,16 @@ use lazy_static::lazy_static; use super::*; const ORDER_BUFFER: [u8; 84] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, // pad4octetsA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, // pad4octetsA 0x01, 0x00, // desktopSaveXGranularity 0x14, 0x00, // desktopSaveYGranularity 0x00, 0x00, // pad2octetsA 0x01, 0x00, // maximumOrderLevel 0x00, 0x00, // numberFonts 0x22, 0x00, // orderFlags - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, // orderSupport + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, // orderSupport 0x00, 0x00, // textFlags 0x02, 0x00, // orderSupportExFlags 0x00, 0x00, 0x00, 0x00, // pad4octetsB diff --git a/ironrdp/src/rdp/capability_sets/pointer.rs b/ironrdp/src/rdp/capability_sets/pointer.rs index cedd42a8..cea28ca6 100644 --- a/ironrdp/src/rdp/capability_sets/pointer.rs +++ b/ironrdp/src/rdp/capability_sets/pointer.rs @@ -5,7 +5,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const POINTER_LENGTH: usize = 6; diff --git a/ironrdp/src/rdp/capability_sets/sound.rs b/ironrdp/src/rdp/capability_sets/sound.rs index e1347fd7..885d0482 100644 --- a/ironrdp/src/rdp/capability_sets/sound.rs +++ b/ironrdp/src/rdp/capability_sets/sound.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const SOUND_LENGTH: usize = 4; diff --git a/ironrdp/src/rdp/capability_sets/surface_commands.rs b/ironrdp/src/rdp/capability_sets/surface_commands.rs index 98227c8f..a5d658df 100644 --- a/ironrdp/src/rdp/capability_sets/surface_commands.rs +++ b/ironrdp/src/rdp/capability_sets/surface_commands.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::PduParsing; const SURFACE_COMMANDS_LENGTH: usize = 8; diff --git a/ironrdp/src/rdp/capability_sets/surface_commands/test.rs b/ironrdp/src/rdp/capability_sets/surface_commands/test.rs index 86267dce..d5e84159 100644 --- a/ironrdp/src/rdp/capability_sets/surface_commands/test.rs +++ b/ironrdp/src/rdp/capability_sets/surface_commands/test.rs @@ -32,8 +32,5 @@ fn to_buffer_correctly_serializes_surface_commands_capset() { #[test] fn buffer_length_is_correct_for_surface_commands_capset() { - assert_eq!( - SURFACE_COMMANDS_BUFFER.len(), - SURFACE_COMMANDS.buffer_length() - ); + assert_eq!(SURFACE_COMMANDS_BUFFER.len(), SURFACE_COMMANDS.buffer_length()); } diff --git a/ironrdp/src/rdp/capability_sets/test.rs b/ironrdp/src/rdp/capability_sets/test.rs index 9cf96a41..80201e33 100644 --- a/ironrdp/src/rdp/capability_sets/test.rs +++ b/ironrdp/src/rdp/capability_sets/test.rs @@ -9,35 +9,30 @@ pub const SERVER_DEMAND_ACTIVE_BUFFER: [u8; 357] = [ 0x0d, 0x00, // capabilities count 0x00, 0x00, // padding 0x09, 0x00, 0x08, 0x00, 0xea, 0x03, 0xdc, 0xe2, // Share capability set, - 0x01, 0x00, 0x18, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, // General capability set - 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, - 0x00, // VirtualChannel capability set - 0x16, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf6, 0x13, 0xf3, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x9c, 0xf6, 0x13, 0xf3, 0x61, 0xa6, 0x82, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x91, 0xbf, // DrawGdiPlus capability set + 0x01, 0x00, 0x18, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, // General capability set + 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, // VirtualChannel capability set + 0x16, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf6, 0x13, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x9c, 0xf6, 0x13, 0xf3, 0x61, 0xa6, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, + 0x91, 0xbf, // DrawGdiPlus capability set 0x0e, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, // Font capability set - 0x02, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, // Bitmap capability set - 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x22, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Order capability set + 0x02, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // Bitmap capability set + 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Order capability set 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, // ColorCache capability set 0x12, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, // BitmapCache capability set 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x19, 0x00, 0x19, 0x00, // Pointer capability set - 0x0d, 0x00, 0x58, 0x00, 0x35, 0x00, 0x00, 0x00, 0xa1, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0xf6, 0x13, 0xf3, 0x93, 0x5a, 0x37, 0xf3, 0x00, 0x90, 0x30, 0xe1, 0x34, 0x1c, 0x38, 0xf3, - 0x40, 0xf6, 0x13, 0xf3, 0x04, 0x00, 0x00, 0x00, 0x4c, 0x54, 0xdc, 0xe2, 0x08, 0x50, 0xdc, 0xe2, - 0x01, 0x00, 0x00, 0x00, 0x08, 0x50, 0xdc, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf6, 0x13, 0xf3, - 0x2e, 0x05, 0x38, 0xf3, 0x08, 0x50, 0xdc, 0xe2, 0x2c, 0xf6, 0x13, 0xf3, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, // Input capability set + 0x0d, 0x00, 0x58, 0x00, 0x35, 0x00, 0x00, 0x00, 0xa1, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf6, 0x13, + 0xf3, 0x93, 0x5a, 0x37, 0xf3, 0x00, 0x90, 0x30, 0xe1, 0x34, 0x1c, 0x38, 0xf3, 0x40, 0xf6, 0x13, 0xf3, 0x04, 0x00, + 0x00, 0x00, 0x4c, 0x54, 0xdc, 0xe2, 0x08, 0x50, 0xdc, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x08, 0x50, 0xdc, 0xe2, 0x00, + 0x00, 0x00, 0x00, 0x38, 0xf6, 0x13, 0xf3, 0x2e, 0x05, 0x38, 0xf3, 0x08, 0x50, 0xdc, 0xe2, 0x2c, 0xf6, 0x13, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, // Input capability set 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // Rail capability set - 0x18, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // WindowList capability set + 0x18, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // WindowList capability set 0x00, 0x00, 0x00, 0x00, // session id ]; pub const CLIENT_DEMAND_ACTIVE_WITH_INCOMPLETE_CAPABILITY_SET_BUFFER: [u8; 501] = [ @@ -47,41 +42,36 @@ pub const CLIENT_DEMAND_ACTIVE_WITH_INCOMPLETE_CAPABILITY_SET_BUFFER: [u8; 501] 0x4d, 0x53, 0x54, 0x53, 0x43, 0x0, // source descriptor 0x14, 0x0, // capability sets count 0x0, 0x0, // padding - 0x1, 0x0, 0x18, 0x0, 0x1, 0x0, 0x3, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x4, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // general capability set - 0x2, 0x0, 0x1c, 0x0, 0x20, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x20, 0x3, 0x58, 0x2, 0x0, 0x0, - 0x1, 0x0, 0x1, 0x0, 0x0, 0xa, 0x1, 0x0, 0x0, 0x0, // bitmap - 0x3, 0x0, 0x58, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x1, - 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x84, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4, 0x4, 0x0, 0x0, // order - 0x4, 0x0, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0x10, 0x51, - 0x1, 0x0, 0x40, // bitmap cache + 0x1, 0x0, 0x18, 0x0, 0x1, 0x0, 0x3, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, // general capability set + 0x2, 0x0, 0x1c, 0x0, 0x20, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x20, 0x3, 0x58, 0x2, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, + 0x0, 0xa, 0x1, 0x0, 0x0, 0x0, // bitmap + 0x3, 0x0, 0x58, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x84, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4, 0x4, 0x0, 0x0, // order + 0x4, 0x0, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0x10, 0x51, 0x1, 0x0, 0x40, // bitmap cache 0xa, 0x0, 0x8, 0x0, 0x6, 0x0, 0x0, 0x0, // color cache 0x7, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // window activation 0x5, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x0, // control 0x8, 0x0, 0xa, 0x0, 0x1, 0x0, 0x14, 0x0, 0x15, 0x0, // pointer 0x9, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, // share - 0xd, 0x0, 0x58, 0x0, 0x91, 0x0, 0x0, 0x0, 0x9, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // input + 0xd, 0x0, 0x58, 0x0, 0x91, 0x0, 0x0, 0x0, 0x9, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // input 0xc, 0x0, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, // sound 0xe, 0x0, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, // font - 0x10, 0x0, 0x34, 0x0, 0xfe, 0x0, 0x4, 0x0, 0xfe, 0x0, 0x4, 0x0, 0xfe, 0x0, 0x8, 0x0, 0xfe, 0x0, - 0x8, 0x0, 0xfe, 0x0, 0x10, 0x0, 0xfe, 0x0, 0x20, 0x0, 0xfe, 0x0, 0x40, 0x0, 0xfe, 0x0, 0x80, - 0x0, 0xfe, 0x0, 0x0, 0x1, 0x40, 0x0, 0x0, 0x8, 0x0, 0x1, 0x0, 0x1, 0x3, 0x0, 0x0, - 0x0, // glyph cache + 0x10, 0x0, 0x34, 0x0, 0xfe, 0x0, 0x4, 0x0, 0xfe, 0x0, 0x4, 0x0, 0xfe, 0x0, 0x8, 0x0, 0xfe, 0x0, 0x8, 0x0, 0xfe, + 0x0, 0x10, 0x0, 0xfe, 0x0, 0x20, 0x0, 0xfe, 0x0, 0x40, 0x0, 0xfe, 0x0, 0x80, 0x0, 0xfe, 0x0, 0x0, 0x1, 0x40, 0x0, + 0x0, 0x8, 0x0, 0x1, 0x0, 0x1, 0x3, 0x0, 0x0, 0x0, // glyph cache 0xf, 0x0, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, // brush 0x11, 0x0, 0xc, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x64, 0x0, // offscreen bitmap cache 0x14, 0x0, 0x8, 0x0, 0x1, 0x0, 0x0, 0x0, // virtual channel 0x15, 0x0, 0xc, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0x1, // draw nine grid cache - 0x16, 0x0, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, // draw GDI plus + 0x16, 0x0, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // draw GDI plus 0x1a, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, // multi fragment update 0x18, 0x0, 0xb, 0x0, 0x1, 0x0, 0x0, 0x0, 0x3, 0xc, 0x0, // window list ]; @@ -92,165 +82,144 @@ pub const CLIENT_DEMAND_ACTIVE_BUFFER: [u8; 486] = [ 0x4d, 0x53, 0x54, 0x53, 0x43, 0x00, // source descriptor 0x12, 0x00, // capabilities count 0x00, 0x00, // padding - 0x01, 0x00, 0x18, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // general capability set - 0x02, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, - 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, // bitmap capability set - 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x2a, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // order capability set - 0x13, 0x00, 0x28, 0x00, 0x03, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0xfb, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // bitmap cache rev 2 capability set + 0x01, 0x00, 0x18, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, // general capability set + 0x02, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // bitmap capability set + 0x03, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // order capability set + 0x13, 0x00, 0x28, 0x00, 0x03, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfb, 0x09, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, // bitmap cache rev 2 capability set 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, // color cache - 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // window activation capability set - 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, - 0x00, // control capability set + 0x07, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // window activation capability set + 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, // control capability set 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x14, 0x00, 0x15, 0x00, // pointer capability set 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // share capability set - 0x0d, 0x00, 0x58, 0x00, 0x15, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // input capability set + 0x0d, 0x00, 0x58, 0x00, 0x15, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // input capability set 0x0c, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, // sound capability set 0x0e, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, // font capability set - 0x10, 0x00, 0x34, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, - 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, - 0xfe, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, - 0x03, 0x00, 0x00, 0x00, // glyph cache capability set + 0x10, 0x00, 0x34, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x08, + 0x00, 0xfe, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x80, 0x00, 0xfe, 0x00, + 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, // glyph cache capability set 0x0f, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, // brush capability set 0x11, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x00, // offscreen bitmap cache capability set - 0x14, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, - 0x00, // virtual channel capability set - 0x15, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, - 0x01, // draw nine grid cache capability set - 0x16, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // draw gdi plus capability set + 0x14, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, // virtual channel capability set + 0x15, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, // draw nine grid cache capability set + 0x16, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, // draw gdi plus capability set ]; const SERVER_SHARE_CAPABILITY_SET: [u8; 4] = [0xea, 0x03, 0xdc, 0xe2]; const SERVER_GENERAL_CAPABILITY_SET: [u8; 20] = [ - 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, ]; -const SERVER_VIRTUAL_CHANNEL_CAPABILITY_SET: [u8; 8] = - [0x02, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00]; +const SERVER_VIRTUAL_CHANNEL_CAPABILITY_SET: [u8; 8] = [0x02, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00]; const SERVER_DRAW_GDI_PLUS_CAPABILITY_SET: [u8; 36] = [ - 0x00, 0x00, 0x00, 0x00, 0x70, 0xf6, 0x13, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x9c, 0xf6, 0x13, 0xf3, 0x61, 0xa6, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x50, 0x91, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x70, 0xf6, 0x13, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x9c, 0xf6, 0x13, 0xf3, 0x61, 0xa6, 0x82, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x91, 0xbf, ]; const SERVER_FONT_CAPABILITY_SET: [u8; 4] = [0x00, 0x01, 0x00, 0x00]; const SERVER_BITMAP_CAPABILITY_SET: [u8; 24] = [ - 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, ]; const SERVER_ORDER_CAPABILITY_SET: [u8; 84] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const SERVER_COLOR_CACHE_CAPABILITY_SET: [u8; 4] = [0x06, 0x00, 0x00, 0x00]; const SERVER_BITMAP_CACHE_HOST_SUPPORT_CAPABILITY_SET: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; const SERVER_POINTER_CAPABILITY_SET: [u8; 6] = [0x01, 0x00, 0x19, 0x00, 0x19, 0x00]; const SERVER_INPUT_CAPABILITY_SET: [u8; 84] = [ - 0x35, 0x00, 0x00, 0x00, 0xa1, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf6, 0x13, 0xf3, - 0x93, 0x5a, 0x37, 0xf3, 0x00, 0x90, 0x30, 0xe1, 0x34, 0x1c, 0x38, 0xf3, 0x40, 0xf6, 0x13, 0xf3, - 0x04, 0x00, 0x00, 0x00, 0x4c, 0x54, 0xdc, 0xe2, 0x08, 0x50, 0xdc, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x08, 0x50, 0xdc, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x38, 0xf6, 0x13, 0xf3, 0x2e, 0x05, 0x38, 0xf3, - 0x08, 0x50, 0xdc, 0xe2, 0x2c, 0xf6, 0x13, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, - 0x01, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xa1, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf6, 0x13, 0xf3, 0x93, 0x5a, 0x37, + 0xf3, 0x00, 0x90, 0x30, 0xe1, 0x34, 0x1c, 0x38, 0xf3, 0x40, 0xf6, 0x13, 0xf3, 0x04, 0x00, 0x00, 0x00, 0x4c, 0x54, + 0xdc, 0xe2, 0x08, 0x50, 0xdc, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x08, 0x50, 0xdc, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xf6, 0x13, 0xf3, 0x2e, 0x05, 0x38, 0xf3, 0x08, 0x50, 0xdc, 0xe2, 0x2c, 0xf6, 0x13, 0xf3, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, ]; const SERVER_RAIL_CAPABILITY_SET: [u8; 4] = [0x00, 0x00, 0x00, 0x00]; const SERVER_WINDOW_LIST_CAPABILITY_SET: [u8; 7] = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; const CLIENT_GENERAL_CAPABILITY_SET: [u8; 20] = [ - 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, ]; const CLIENT_BITMAP_CAPABILITY_SET: [u8; 24] = [ - 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, ]; const CLIENT_BITMAP_CAPABILITY_SET_32_BIT: [u8; 24] = [ - 0x20, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x20, 0x3, 0x58, 0x2, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, - 0x0, 0xa, 0x1, 0x0, 0x0, 0x0, + 0x20, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x20, 0x3, 0x58, 0x2, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0xa, 0x1, 0x0, + 0x0, 0x0, ]; const CLIENT_ORDER_CAPABILITY_SET: [u8; 84] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const CLIENT_ORDER_CAPABILITY_SET_ANSI_CODE_PAGE: [u8; 84] = [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x1, 0x0, 0x14, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, - 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x84, 0x3, - 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4, 0x4, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x14, + 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x84, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4, 0x4, 0x0, 0x0, ]; const CLIENT_BITMAP_CACHE_REV_2_CAPABILITY_SET: [u8; 36] = [ - 0x03, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfb, 0x09, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xfb, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const CLIENT_BITMAP_CACHE_REV_1_CAPABILITY_SET: [u8; 36] = [ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0x10, 0x51, 0x1, 0x0, 0x40, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x78, 0x0, 0x0, 0x4, 0x78, 0x0, 0x0, 0x10, 0x51, 0x1, 0x0, 0x40, ]; const CLIENT_COLOR_CACHE_CAPABILITY_SET: [u8; 4] = [0x06, 0x00, 0x00, 0x00]; -const CLIENT_WINDOW_ACTIVATION_CAPABILITY_SET: [u8; 8] = - [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; +const CLIENT_WINDOW_ACTIVATION_CAPABILITY_SET: [u8; 8] = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]; const CLIENT_CONTROL_CAPABILITY_SET: [u8; 8] = [0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00]; const CLIENT_POINTER_CAPABILITY_SET: [u8; 6] = [0x01, 0x00, 0x14, 0x00, 0x15, 0x00]; const CLIENT_SHARE_CAPABILITY_SET: [u8; 4] = [0x00, 0x00, 0x00, 0x00]; const CLIENT_INPUT_CAPABILITY_SET: [u8; 84] = [ - 0x15, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const CLIENT_INPUT_CAPABILITY_SET_UNICODE: [u8; 84] = [ - 0x91, 0x0, 0x20, 0x0, 0x9, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x91, 0x0, 0x20, 0x0, 0x9, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ]; const CLIENT_SOUND_CAPABILITY_SET: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; const CLIENT_FONT_CAPABILITY_SET: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; const CLIENT_GLYPH_CACHE_CAPABILITY_SET: [u8; 48] = [ - 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x08, 0x00, - 0xfe, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x80, 0x00, - 0xfe, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x10, + 0x00, 0xfe, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x40, 0x00, 0xfe, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x40, 0x00, + 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, ]; const CLIENT_BRUSH_CAPABILITY_SET: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; -const CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET: [u8; 8] = - [0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x00]; +const CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET: [u8; 8] = [0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x00]; const CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET_INCOMPLETE: [u8; 4] = [0x1, 0x0, 0x0, 0x0]; -const CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET: [u8; 8] = - [0x01, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00]; -const CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET: [u8; 8] = - [0x02, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01]; +const CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET: [u8; 8] = [0x01, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00]; +const CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET: [u8; 8] = [0x02, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01]; const CLIENT_DRAW_GDI_PLUS_CAPABILITY_SET: [u8; 36] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const CLIENT_MULTI_FRAGMENT_UPDATE_CAPABILITY_SET: [u8; 4] = [0x0, 0x0, 0x0, 0x0]; const CLIENT_WINDOW_LIST_CAPABILITY_SET: [u8; 7] = [0x1, 0x0, 0x0, 0x0, 0x3, 0xc, 0x0]; @@ -261,156 +230,87 @@ lazy_static! { source_descriptor: String::from("RDP"), capability_sets: vec![ CapabilitySet::Share(SERVER_SHARE_CAPABILITY_SET.to_vec()), - CapabilitySet::General( - General::from_buffer(SERVER_GENERAL_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::General(General::from_buffer(SERVER_GENERAL_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::VirtualChannel( - VirtualChannel::from_buffer(SERVER_VIRTUAL_CHANNEL_CAPABILITY_SET.as_ref()) - .unwrap() + VirtualChannel::from_buffer(SERVER_VIRTUAL_CHANNEL_CAPABILITY_SET.as_ref()).unwrap() ), CapabilitySet::DrawGdiPlus(SERVER_DRAW_GDI_PLUS_CAPABILITY_SET.to_vec()), CapabilitySet::Font(SERVER_FONT_CAPABILITY_SET.to_vec()), - CapabilitySet::Bitmap( - Bitmap::from_buffer(SERVER_BITMAP_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Order( - Order::from_buffer(SERVER_ORDER_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::Bitmap(Bitmap::from_buffer(SERVER_BITMAP_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Order(Order::from_buffer(SERVER_ORDER_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::ColorCache(SERVER_COLOR_CACHE_CAPABILITY_SET.to_vec()), - CapabilitySet::BitmapCacheHostSupport( - SERVER_BITMAP_CACHE_HOST_SUPPORT_CAPABILITY_SET.to_vec() - ), - CapabilitySet::Pointer( - Pointer::from_buffer(SERVER_POINTER_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Input( - Input::from_buffer(SERVER_INPUT_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::BitmapCacheHostSupport(SERVER_BITMAP_CACHE_HOST_SUPPORT_CAPABILITY_SET.to_vec()), + CapabilitySet::Pointer(Pointer::from_buffer(SERVER_POINTER_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Input(Input::from_buffer(SERVER_INPUT_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::Rail(SERVER_RAIL_CAPABILITY_SET.to_vec()), CapabilitySet::WindowList(SERVER_WINDOW_LIST_CAPABILITY_SET.to_vec()), ], } }; - pub static ref CLIENT_DEMAND_ACTIVE_WITH_INCOMPLETE_CAPABILITY_SET: ClientConfirmActive = - ClientConfirmActive { - originator_id: SERVER_CHANNEL_ID, - pdu: DemandActive { - source_descriptor: String::from("MSTSC"), - capability_sets: vec![ - CapabilitySet::General( - General::from_buffer(CLIENT_GENERAL_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Bitmap( - Bitmap::from_buffer(CLIENT_BITMAP_CAPABILITY_SET_32_BIT.as_ref()).unwrap() - ), - CapabilitySet::Order( - Order::from_buffer(CLIENT_ORDER_CAPABILITY_SET_ANSI_CODE_PAGE.as_ref()) - .unwrap() - ), - CapabilitySet::BitmapCache( - BitmapCache::from_buffer(CLIENT_BITMAP_CACHE_REV_1_CAPABILITY_SET.as_ref()) - .unwrap() - ), - CapabilitySet::ColorCache(CLIENT_COLOR_CACHE_CAPABILITY_SET.to_vec()), - CapabilitySet::WindowActivation( - CLIENT_WINDOW_ACTIVATION_CAPABILITY_SET.to_vec() - ), - CapabilitySet::Control(CLIENT_CONTROL_CAPABILITY_SET.to_vec()), - CapabilitySet::Pointer( - Pointer::from_buffer(CLIENT_POINTER_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Share(CLIENT_SHARE_CAPABILITY_SET.to_vec()), - CapabilitySet::Input( - Input::from_buffer(CLIENT_INPUT_CAPABILITY_SET_UNICODE.as_ref()).unwrap() - ), - CapabilitySet::Sound( - Sound::from_buffer(CLIENT_SOUND_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Font(CLIENT_FONT_CAPABILITY_SET.to_vec()), - CapabilitySet::GlyphCache( - GlyphCache::from_buffer(CLIENT_GLYPH_CACHE_CAPABILITY_SET.as_ref()) - .unwrap() - ), - CapabilitySet::Brush( - Brush::from_buffer(CLIENT_BRUSH_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::OffscreenBitmapCache( - OffscreenBitmapCache::from_buffer( - CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET.as_ref() - ) - .unwrap() - ), - CapabilitySet::VirtualChannel( - VirtualChannel::from_buffer( - CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET_INCOMPLETE.as_ref() - ) - .unwrap() - ), - CapabilitySet::DrawNineGridCache( - CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET.to_vec() - ), - CapabilitySet::DrawGdiPlus(CLIENT_DRAW_GDI_PLUS_CAPABILITY_SET.to_vec()), - CapabilitySet::MultiFragmentUpdate( - MultifragmentUpdate::from_buffer( - CLIENT_MULTI_FRAGMENT_UPDATE_CAPABILITY_SET.as_ref() - ) - .unwrap() - ), - CapabilitySet::WindowList(CLIENT_WINDOW_LIST_CAPABILITY_SET.to_vec()), - ], - } - }; + pub static ref CLIENT_DEMAND_ACTIVE_WITH_INCOMPLETE_CAPABILITY_SET: ClientConfirmActive = ClientConfirmActive { + originator_id: SERVER_CHANNEL_ID, + pdu: DemandActive { + source_descriptor: String::from("MSTSC"), + capability_sets: vec![ + CapabilitySet::General(General::from_buffer(CLIENT_GENERAL_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Bitmap(Bitmap::from_buffer(CLIENT_BITMAP_CAPABILITY_SET_32_BIT.as_ref()).unwrap()), + CapabilitySet::Order(Order::from_buffer(CLIENT_ORDER_CAPABILITY_SET_ANSI_CODE_PAGE.as_ref()).unwrap()), + CapabilitySet::BitmapCache( + BitmapCache::from_buffer(CLIENT_BITMAP_CACHE_REV_1_CAPABILITY_SET.as_ref()).unwrap() + ), + CapabilitySet::ColorCache(CLIENT_COLOR_CACHE_CAPABILITY_SET.to_vec()), + CapabilitySet::WindowActivation(CLIENT_WINDOW_ACTIVATION_CAPABILITY_SET.to_vec()), + CapabilitySet::Control(CLIENT_CONTROL_CAPABILITY_SET.to_vec()), + CapabilitySet::Pointer(Pointer::from_buffer(CLIENT_POINTER_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Share(CLIENT_SHARE_CAPABILITY_SET.to_vec()), + CapabilitySet::Input(Input::from_buffer(CLIENT_INPUT_CAPABILITY_SET_UNICODE.as_ref()).unwrap()), + CapabilitySet::Sound(Sound::from_buffer(CLIENT_SOUND_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Font(CLIENT_FONT_CAPABILITY_SET.to_vec()), + CapabilitySet::GlyphCache(GlyphCache::from_buffer(CLIENT_GLYPH_CACHE_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Brush(Brush::from_buffer(CLIENT_BRUSH_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::OffscreenBitmapCache( + OffscreenBitmapCache::from_buffer(CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET.as_ref()).unwrap() + ), + CapabilitySet::VirtualChannel( + VirtualChannel::from_buffer(CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET_INCOMPLETE.as_ref()).unwrap() + ), + CapabilitySet::DrawNineGridCache(CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET.to_vec()), + CapabilitySet::DrawGdiPlus(CLIENT_DRAW_GDI_PLUS_CAPABILITY_SET.to_vec()), + CapabilitySet::MultiFragmentUpdate( + MultifragmentUpdate::from_buffer(CLIENT_MULTI_FRAGMENT_UPDATE_CAPABILITY_SET.as_ref()).unwrap() + ), + CapabilitySet::WindowList(CLIENT_WINDOW_LIST_CAPABILITY_SET.to_vec()), + ], + } + }; pub static ref CLIENT_DEMAND_ACTIVE: ClientConfirmActive = ClientConfirmActive { originator_id: SERVER_CHANNEL_ID, pdu: DemandActive { source_descriptor: String::from("MSTSC"), capability_sets: vec![ - CapabilitySet::General( - General::from_buffer(CLIENT_GENERAL_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Bitmap( - Bitmap::from_buffer(CLIENT_BITMAP_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Order( - Order::from_buffer(CLIENT_ORDER_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::General(General::from_buffer(CLIENT_GENERAL_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Bitmap(Bitmap::from_buffer(CLIENT_BITMAP_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Order(Order::from_buffer(CLIENT_ORDER_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::BitmapCacheRev2( - BitmapCacheRev2::from_buffer(CLIENT_BITMAP_CACHE_REV_2_CAPABILITY_SET.as_ref()) - .unwrap() + BitmapCacheRev2::from_buffer(CLIENT_BITMAP_CACHE_REV_2_CAPABILITY_SET.as_ref()).unwrap() ), CapabilitySet::ColorCache(CLIENT_COLOR_CACHE_CAPABILITY_SET.to_vec()), CapabilitySet::WindowActivation(CLIENT_WINDOW_ACTIVATION_CAPABILITY_SET.to_vec()), CapabilitySet::Control(CLIENT_CONTROL_CAPABILITY_SET.to_vec()), - CapabilitySet::Pointer( - Pointer::from_buffer(CLIENT_POINTER_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::Pointer(Pointer::from_buffer(CLIENT_POINTER_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::Share(CLIENT_SHARE_CAPABILITY_SET.to_vec()), - CapabilitySet::Input( - Input::from_buffer(CLIENT_INPUT_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Sound( - Sound::from_buffer(CLIENT_SOUND_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::Input(Input::from_buffer(CLIENT_INPUT_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Sound(Sound::from_buffer(CLIENT_SOUND_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::Font(CLIENT_FONT_CAPABILITY_SET.to_vec()), - CapabilitySet::GlyphCache( - GlyphCache::from_buffer(CLIENT_GLYPH_CACHE_CAPABILITY_SET.as_ref()).unwrap() - ), - CapabilitySet::Brush( - Brush::from_buffer(CLIENT_BRUSH_CAPABILITY_SET.as_ref()).unwrap() - ), + CapabilitySet::GlyphCache(GlyphCache::from_buffer(CLIENT_GLYPH_CACHE_CAPABILITY_SET.as_ref()).unwrap()), + CapabilitySet::Brush(Brush::from_buffer(CLIENT_BRUSH_CAPABILITY_SET.as_ref()).unwrap()), CapabilitySet::OffscreenBitmapCache( - OffscreenBitmapCache::from_buffer( - CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET.as_ref() - ) - .unwrap() + OffscreenBitmapCache::from_buffer(CLIENT_OFFSCREEN_BITMAP_CAPABILITY_SET.as_ref()).unwrap() ), CapabilitySet::VirtualChannel( - VirtualChannel::from_buffer(CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET.as_ref()) - .unwrap() - ), - CapabilitySet::DrawNineGridCache( - CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET.to_vec() + VirtualChannel::from_buffer(CLIENT_VIRTUAL_CHANNEL_CAPABILITY_SET.as_ref()).unwrap() ), + CapabilitySet::DrawNineGridCache(CLIENT_DRAW_NINE_GRID_CACHE_CAPABILITY_SET.to_vec()), CapabilitySet::DrawGdiPlus(CLIENT_DRAW_GDI_PLUS_CAPABILITY_SET.to_vec()), ], } @@ -421,10 +321,7 @@ lazy_static! { fn from_buffer_correctly_parses_server_demand_active() { let buffer = SERVER_DEMAND_ACTIVE_BUFFER.as_ref(); - assert_eq!( - *SERVER_DEMAND_ACTIVE, - ServerDemandActive::from_buffer(buffer).unwrap() - ); + assert_eq!(*SERVER_DEMAND_ACTIVE, ServerDemandActive::from_buffer(buffer).unwrap()); } #[test] @@ -441,10 +338,7 @@ fn from_buffer_correctly_parses_client_demand_active_with_incomplete_capability_ fn from_buffer_correctly_parses_client_demand_active() { let buffer = CLIENT_DEMAND_ACTIVE_BUFFER.as_ref(); - assert_eq!( - *CLIENT_DEMAND_ACTIVE, - ClientConfirmActive::from_buffer(buffer).unwrap() - ); + assert_eq!(*CLIENT_DEMAND_ACTIVE, ClientConfirmActive::from_buffer(buffer).unwrap()); } #[test] diff --git a/ironrdp/src/rdp/capability_sets/virtual_channel.rs b/ironrdp/src/rdp/capability_sets/virtual_channel.rs index e631c86d..a08b85b6 100644 --- a/ironrdp/src/rdp/capability_sets/virtual_channel.rs +++ b/ironrdp/src/rdp/capability_sets/virtual_channel.rs @@ -6,7 +6,8 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use crate::{rdp::CapabilitySetsError, try_read_optional, try_write_optional, PduParsing}; +use crate::rdp::CapabilitySetsError; +use crate::{try_read_optional, try_write_optional, PduParsing}; const FLAGS_FIELD_SIZE: usize = 4; const CHUNK_SIZE_FIELD_SIZE: usize = 4; diff --git a/ironrdp/src/rdp/capability_sets/virtual_channel/test.rs b/ironrdp/src/rdp/capability_sets/virtual_channel/test.rs index 2e82a276..b897ab3c 100644 --- a/ironrdp/src/rdp/capability_sets/virtual_channel/test.rs +++ b/ironrdp/src/rdp/capability_sets/virtual_channel/test.rs @@ -66,8 +66,5 @@ fn buffer_length_is_correct_for_virtual_channel_incomplete_capset() { #[test] fn buffer_length_is_correct_for_virtual_channel_capset() { - assert_eq!( - VIRTUAL_CHANNEL_BUFFER.len(), - VIRTUAL_CHANNEL.buffer_length() - ); + assert_eq!(VIRTUAL_CHANNEL_BUFFER.len(), VIRTUAL_CHANNEL.buffer_length()); } diff --git a/ironrdp/src/rdp/client_info.rs b/ironrdp/src/rdp/client_info.rs index 0d5a835a..a6332172 100644 --- a/ironrdp/src/rdp/client_info.rs +++ b/ironrdp/src/rdp/client_info.rs @@ -9,9 +9,8 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - impl_from_error, try_read_optional, try_write_optional, utils, utils::CharacterSet, PduParsing, -}; +use crate::utils::CharacterSet; +use crate::{impl_from_error, try_read_optional, try_write_optional, utils, PduParsing}; const RECONNECT_COOKIE_LEN: usize = 28; const TIMEZONE_INFO_NAME_LEN: usize = 64; @@ -52,13 +51,11 @@ impl PduParsing for ClientInfo { let code_page = stream.read_u32::()?; let flags_with_compression_type = stream.read_u32::()?; - let flags = - ClientInfoFlags::from_bits(flags_with_compression_type & !COMPRESSION_TYPE_MASK) + let flags = ClientInfoFlags::from_bits(flags_with_compression_type & !COMPRESSION_TYPE_MASK) + .ok_or(ClientInfoError::InvalidClientInfoFlags)?; + let compression_type = + CompressionType::from_u8(((flags_with_compression_type & COMPRESSION_TYPE_MASK) >> 9) as u8) .ok_or(ClientInfoError::InvalidClientInfoFlags)?; - let compression_type = CompressionType::from_u8( - ((flags_with_compression_type & COMPRESSION_TYPE_MASK) >> 9) as u8, - ) - .ok_or(ClientInfoError::InvalidClientInfoFlags)?; let character_set = if flags.contains(ClientInfoFlags::UNICODE) { CharacterSet::Unicode } else { @@ -76,19 +73,14 @@ impl PduParsing for ClientInfo { let username = utils::read_string(&mut stream, user_name_size, character_set, true)?; let password = utils::read_string(&mut stream, password_size, character_set, true)?; - let domain = if domain.is_empty() { - None - } else { - Some(domain) - }; + let domain = if domain.is_empty() { None } else { Some(domain) }; let credentials = Credentials { username, password, domain, }; - let alternate_shell = - utils::read_string(&mut stream, alternate_shell_size, character_set, true)?; + let alternate_shell = utils::read_string(&mut stream, alternate_shell_size, character_set, true)?; let work_dir = utils::read_string(&mut stream, work_dir_size, character_set, true)?; let extra_info = ExtendedClientInfo::from_buffer(&mut stream, character_set)?; @@ -113,45 +105,21 @@ impl PduParsing for ClientInfo { stream.write_u32::(self.code_page)?; - let flags_with_compression_type = - self.flags.bits() | (self.compression_type.to_u32().unwrap() << 9); + let flags_with_compression_type = self.flags.bits() | (self.compression_type.to_u32().unwrap() << 9); stream.write_u32::(flags_with_compression_type)?; let domain = self.credentials.domain.clone().unwrap_or_default(); stream.write_u16::(string_len(domain.as_str(), character_set))?; - stream.write_u16::(string_len( - self.credentials.username.as_str(), - character_set, - ))?; - stream.write_u16::(string_len( - self.credentials.password.as_str(), - character_set, - ))?; - stream - .write_u16::(string_len(self.alternate_shell.as_str(), character_set))?; + stream.write_u16::(string_len(self.credentials.username.as_str(), character_set))?; + stream.write_u16::(string_len(self.credentials.password.as_str(), character_set))?; + stream.write_u16::(string_len(self.alternate_shell.as_str(), character_set))?; stream.write_u16::(string_len(self.work_dir.as_str(), character_set))?; utils::write_string_with_null_terminator(&mut stream, domain.as_str(), character_set)?; - utils::write_string_with_null_terminator( - &mut stream, - self.credentials.username.as_str(), - character_set, - )?; - utils::write_string_with_null_terminator( - &mut stream, - self.credentials.password.as_str(), - character_set, - )?; - utils::write_string_with_null_terminator( - &mut stream, - self.alternate_shell.as_str(), - character_set, - )?; - utils::write_string_with_null_terminator( - &mut stream, - self.work_dir.as_str(), - character_set, - )?; + utils::write_string_with_null_terminator(&mut stream, self.credentials.username.as_str(), character_set)?; + utils::write_string_with_null_terminator(&mut stream, self.credentials.password.as_str(), character_set)?; + utils::write_string_with_null_terminator(&mut stream, self.alternate_shell.as_str(), character_set)?; + utils::write_string_with_null_terminator(&mut stream, self.work_dir.as_str(), character_set)?; self.extra_info.to_buffer(&mut stream, character_set)?; @@ -199,12 +167,9 @@ pub struct ExtendedClientInfo { } impl ExtendedClientInfo { - fn from_buffer( - mut stream: impl io::Read, - character_set: CharacterSet, - ) -> Result { - let address_family = AddressFamily::from_u16(stream.read_u16::()?) - .ok_or(ClientInfoError::InvalidAddressFamily)?; + fn from_buffer(mut stream: impl io::Read, character_set: CharacterSet) -> Result { + let address_family = + AddressFamily::from_u16(stream.read_u16::()?).ok_or(ClientInfoError::InvalidAddressFamily)?; // This size includes the length of the mandatory null terminator. let address_size = stream.read_u16::()? as usize; @@ -224,22 +189,14 @@ impl ExtendedClientInfo { }) } - fn to_buffer( - &self, - mut stream: impl io::Write, - character_set: CharacterSet, - ) -> Result<(), ClientInfoError> { + fn to_buffer(&self, mut stream: impl io::Write, character_set: CharacterSet) -> Result<(), ClientInfoError> { stream.write_u16::(self.address_family.to_u16().unwrap())?; // + size of null terminator, which will write in the write_string function stream.write_u16::( string_len(self.address.as_str(), character_set) + character_set.to_u16().unwrap(), )?; - utils::write_string_with_null_terminator( - &mut stream, - self.address.as_str(), - character_set, - )?; + utils::write_string_with_null_terminator(&mut stream, self.address.as_str(), character_set)?; stream.write_u16::( string_len(self.dir.as_str(), character_set) + character_set.to_u16().unwrap(), @@ -285,20 +242,13 @@ impl PduParsing for ExtendedClientOptionalInfo { } Err(e) => return Err(e), }; - optional_data.session_id = Some(try_read_optional!( - stream.read_u32::(), - optional_data - )); + optional_data.session_id = Some(try_read_optional!(stream.read_u32::(), optional_data)); optional_data.performance_flags = Some( - PerformanceFlags::from_bits(try_read_optional!( - stream.read_u32::(), - optional_data - )) - .ok_or(ClientInfoError::InvalidPerformanceFlags)?, + PerformanceFlags::from_bits(try_read_optional!(stream.read_u32::(), optional_data)) + .ok_or(ClientInfoError::InvalidPerformanceFlags)?, ); - let reconnect_cookie_size = - try_read_optional!(stream.read_u16::(), optional_data); + let reconnect_cookie_size = try_read_optional!(stream.read_u16::(), optional_data); if reconnect_cookie_size != RECONNECT_COOKIE_LEN as u16 && reconnect_cookie_size != 0 { return Err(ClientInfoError::InvalidReconnectCookie); } @@ -317,10 +267,8 @@ impl PduParsing for ExtendedClientOptionalInfo { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - try_write_optional!(self.timezone, |value: &TimezoneInfo| value - .to_buffer(&mut stream)); - try_write_optional!(self.session_id, |value: &u32| stream - .write_u32::(*value)); + try_write_optional!(self.timezone, |value: &TimezoneInfo| value.to_buffer(&mut stream)); + try_write_optional!(self.session_id, |value: &u32| stream.write_u32::(*value)); try_write_optional!(self.performance_flags, |value: &PerformanceFlags| { stream.write_u32::(value.bits()) }); @@ -369,21 +317,11 @@ impl PduParsing for TimezoneInfo { fn from_buffer(mut stream: impl io::Read) -> Result { let bias = stream.read_u32::()?; - let standard_name = utils::read_string( - &mut stream, - TIMEZONE_INFO_NAME_LEN, - CharacterSet::Unicode, - false, - )?; + let standard_name = utils::read_string(&mut stream, TIMEZONE_INFO_NAME_LEN, CharacterSet::Unicode, false)?; let standard_date = Option::::from_buffer(&mut stream)?; let standard_bias = stream.read_u32::()?; - let daylight_name = utils::read_string( - &mut stream, - TIMEZONE_INFO_NAME_LEN, - CharacterSet::Unicode, - false, - )?; + let daylight_name = utils::read_string(&mut stream, TIMEZONE_INFO_NAME_LEN, CharacterSet::Unicode, false)?; let daylight_date = Option::::from_buffer(&mut stream)?; let daylight_bias = stream.read_u32::()?; @@ -622,11 +560,7 @@ pub enum ClientInfoError { } impl_from_error!(io::Error, ClientInfoError, ClientInfoError::IOError); -impl_from_error!( - std::string::FromUtf8Error, - ClientInfoError, - ClientInfoError::Utf8Error -); +impl_from_error!(std::string::FromUtf8Error, ClientInfoError, ClientInfoError::Utf8Error); fn string_len(value: &str, character_set: CharacterSet) -> u16 { value.len() as u16 * character_set.to_u16().unwrap() diff --git a/ironrdp/src/rdp/client_info/test.rs b/ironrdp/src/rdp/client_info/test.rs index 783435a3..61b7ca16 100644 --- a/ironrdp/src/rdp/client_info/test.rs +++ b/ironrdp/src/rdp/client_info/test.rs @@ -14,37 +14,33 @@ pub const CLIENT_INFO_BUFFER_UNICODE: [u8; CLIENT_INFO_BUFFER_UNICODE_LEN] = [ 0x00, 0x00, // alternate shell size 0x00, 0x00, // work dir size 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, // domain - 0x65, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, - 0x00, // user name + 0x65, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, // user name 0x00, 0x00, // password 0x00, 0x00, // alternate shell 0x00, 0x00, // work dir 0x02, 0x00, // client address family 0x1e, 0x00, // client address size - 0x31, 0x00, 0x35, 0x00, 0x37, 0x00, 0x2e, 0x00, 0x35, 0x00, 0x39, 0x00, 0x2e, 0x00, 0x32, 0x00, - 0x34, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x35, 0x00, 0x36, 0x00, 0x00, - 0x00, // client address + 0x31, 0x00, 0x35, 0x00, 0x37, 0x00, 0x2e, 0x00, 0x35, 0x00, 0x39, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x34, 0x00, 0x32, + 0x00, 0x2e, 0x00, 0x31, 0x00, 0x35, 0x00, 0x36, 0x00, 0x00, 0x00, // client address 0x84, 0x00, // client dir size - 0x43, 0x00, 0x3a, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x65, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x74, 0x00, - 0x73, 0x00, 0x5c, 0x00, 0x77, 0x00, 0x32, 0x00, 0x6b, 0x00, 0x33, 0x00, 0x5f, 0x00, 0x31, 0x00, - 0x5c, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x72, 0x00, 0x76, 0x00, - 0x5c, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x77, 0x00, 0x63, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x65, 0x00, - 0x6e, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x77, 0x00, - 0x69, 0x00, 0x6e, 0x00, 0x33, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x6a, 0x00, - 0x5c, 0x00, 0x69, 0x00, 0x33, 0x00, 0x38, 0x00, 0x36, 0x00, 0x5c, 0x00, 0x6d, 0x00, 0x73, 0x00, - 0x74, 0x00, 0x73, 0x00, 0x63, 0x00, 0x61, 0x00, 0x78, 0x00, 0x2e, 0x00, 0x64, 0x00, 0x6c, 0x00, - 0x6c, 0x00, 0x00, 0x00, // client dir - 0xe0, 0x01, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, - 0x63, 0x00, 0x20, 0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, - 0x72, 0x00, 0x64, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, - 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x79, 0x00, 0x6c, 0x00, - 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, 0xff, // TimezoneInfo + 0x43, 0x00, 0x3a, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x65, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x73, 0x00, 0x5c, + 0x00, 0x77, 0x00, 0x32, 0x00, 0x6b, 0x00, 0x33, 0x00, 0x5f, 0x00, 0x31, 0x00, 0x5c, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x72, 0x00, 0x76, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x77, 0x00, 0x63, + 0x00, 0x6c, 0x00, 0x69, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x62, 0x00, + 0x5c, 0x00, 0x77, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x33, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x6a, + 0x00, 0x5c, 0x00, 0x69, 0x00, 0x33, 0x00, 0x38, 0x00, 0x36, 0x00, 0x5c, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x73, 0x00, 0x63, 0x00, 0x61, 0x00, 0x78, 0x00, 0x2e, 0x00, 0x64, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x00, + 0x00, // client dir + 0xe0, 0x01, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, + 0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, 0x72, 0x00, 0x64, 0x00, 0x20, 0x00, + 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, + 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, + 0xff, // TimezoneInfo 0x00, 0x00, 0x00, 0x00, // session id 0x01, 0x00, 0x00, 0x00, // performance flags ]; @@ -65,25 +61,22 @@ const CLIENT_INFO_BUFFER_ANSI: [u8; CLIENT_INFO_BUFFER_ANSI_LEN] = [ 0x00, // work dir 0x02, 0x00, // client address family 0x0f, 0x00, // client address size - 0x31, 0x35, 0x37, 0x2e, 0x35, 0x39, 0x2e, 0x32, 0x34, 0x32, 0x2e, 0x31, 0x35, 0x36, - 0x00, // client address + 0x31, 0x35, 0x37, 0x2e, 0x35, 0x39, 0x2e, 0x32, 0x34, 0x32, 0x2e, 0x31, 0x35, 0x36, 0x00, // client address 0x42, 0x00, // client dir size - 0x43, 0x3a, 0x5c, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x73, 0x5c, 0x77, 0x32, 0x6b, 0x33, 0x5f, 0x31, - 0x5c, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x72, 0x76, 0x5c, 0x6e, 0x65, 0x77, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5c, 0x6c, 0x69, 0x62, 0x5c, 0x77, 0x69, 0x6e, 0x33, 0x32, 0x5c, 0x6f, 0x62, 0x6a, - 0x5c, 0x69, 0x33, 0x38, 0x36, 0x5c, 0x6d, 0x73, 0x74, 0x73, 0x63, 0x61, 0x78, 0x2e, 0x64, 0x6c, - 0x6c, 0x00, // client dir - 0xe0, 0x01, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, - 0x63, 0x00, 0x20, 0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, - 0x72, 0x00, 0x64, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, - 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x79, 0x00, 0x6c, 0x00, - 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, 0xff, // TimezoneInfo + 0x43, 0x3a, 0x5c, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x73, 0x5c, 0x77, 0x32, 0x6b, 0x33, 0x5f, 0x31, 0x5c, 0x74, 0x65, + 0x72, 0x6d, 0x73, 0x72, 0x76, 0x5c, 0x6e, 0x65, 0x77, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5c, 0x6c, 0x69, 0x62, + 0x5c, 0x77, 0x69, 0x6e, 0x33, 0x32, 0x5c, 0x6f, 0x62, 0x6a, 0x5c, 0x69, 0x33, 0x38, 0x36, 0x5c, 0x6d, 0x73, 0x74, + 0x73, 0x63, 0x61, 0x78, 0x2e, 0x64, 0x6c, 0x6c, 0x00, // client dir + 0xe0, 0x01, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, + 0x00, 0x53, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, 0x72, 0x00, 0x64, 0x00, 0x20, 0x00, + 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x61, 0x00, 0x63, 0x00, 0x69, + 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0xff, + 0xff, // TimezoneInfo 0x00, 0x00, 0x00, 0x00, // session id 0x01, 0x00, 0x00, 0x00, // performance flags ]; @@ -109,9 +102,7 @@ lazy_static! { extra_info: ExtendedClientInfo { address_family: AddressFamily::INet, address: String::from("157.59.242.156"), - dir: String::from( - "C:\\depots\\w2k3_1\\termsrv\\newclient\\lib\\win32\\obj\\i386\\mstscax.dll" - ), + dir: String::from("C:\\depots\\w2k3_1\\termsrv\\newclient\\lib\\win32\\obj\\i386\\mstscax.dll"), optional_data: ExtendedClientOptionalInfo { timezone: Some(TimezoneInfo { bias: 0x01e0, @@ -184,8 +175,7 @@ fn from_buffer_correct_parses_client_info_pdu_unicode() { fn from_buffer_correct_parses_client_info_pdu_unicode_without_optional_fields() { assert_eq!( CLIENT_INFO_UNICODE_WITHOUT_OPTIONAL_FIELDS.clone(), - ClientInfo::from_buffer(CLIENT_INFO_BUFFER_UNICODE_WITHOUT_OPTIONAL_FIELDS.as_slice()) - .unwrap() + ClientInfo::from_buffer(CLIENT_INFO_BUFFER_UNICODE_WITHOUT_OPTIONAL_FIELDS.as_slice()).unwrap() ); } diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp/src/rdp/finalization_messages.rs index 4af0e4ec..ca636d2e 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp/src/rdp/finalization_messages.rs @@ -132,9 +132,7 @@ impl PduParsing for MonitorLayoutPdu { fn from_buffer(mut stream: impl io::Read) -> Result { let monitor_count = stream.read_u32::()?; if monitor_count > MAX_MONITOR_COUNT { - return Err(FinalizationMessagesError::InvalidMonitorCount( - monitor_count, - )); + return Err(FinalizationMessagesError::InvalidMonitorCount(monitor_count)); } let mut monitors = Vec::with_capacity(monitor_count as usize); @@ -196,11 +194,7 @@ pub enum FinalizationMessagesError { InvalidMonitorCount(u32), } -impl_from_error!( - io::Error, - FinalizationMessagesError, - FinalizationMessagesError::IOError -); +impl_from_error!(io::Error, FinalizationMessagesError, FinalizationMessagesError::IOError); impl_from_error!( gcc::MonitorDataError, FinalizationMessagesError, diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index acdddb47..9b6f0f2a 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -9,11 +9,10 @@ use super::{ client_info, ClientConfirmActive, ControlPdu, MonitorLayoutPdu, RdpError, ServerDemandActive, ServerSetErrorInfoPdu, SynchronizePdu, }; -use crate::{ - codecs::rfx::FrameAcknowledgePdu, - rdp::{finalization_messages::FontPdu, session_info::SaveSessionInfoPdu}, - PduParsing, -}; +use crate::codecs::rfx::FrameAcknowledgePdu; +use crate::rdp::finalization_messages::FontPdu; +use crate::rdp::session_info::SaveSessionInfoPdu; +use crate::PduParsing; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; const SHARE_CONTROL_HEADER_MASK: u16 = 0xf; @@ -74,11 +73,8 @@ impl PduParsing for ShareControlHeader { let pdu_source = stream.read_u16::()?; let share_id = stream.read_u32::()?; - let pdu_type = - ShareControlPduType::from_u16(pdu_type_with_version & SHARE_CONTROL_HEADER_MASK) - .ok_or_else(|| { - RdpError::InvalidShareControlHeader(String::from("Invalid pdu type")) - })?; + let pdu_type = ShareControlPduType::from_u16(pdu_type_with_version & SHARE_CONTROL_HEADER_MASK) + .ok_or_else(|| RdpError::InvalidShareControlHeader(String::from("Invalid pdu type")))?; let pdu_version = pdu_type_with_version & !SHARE_CONTROL_HEADER_MASK; if pdu_version != PROTOCOL_VERSION { return Err(RdpError::InvalidShareControlHeader(format!( @@ -96,12 +92,10 @@ impl PduParsing for ShareControlHeader { }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - let pdu_type_with_version = - PROTOCOL_VERSION | self.share_control_pdu.share_header_type().to_u16().unwrap(); + let pdu_type_with_version = PROTOCOL_VERSION | self.share_control_pdu.share_header_type().to_u16().unwrap(); - stream.write_u16::( - (self.share_control_pdu.buffer_length() + SHARE_CONTROL_HEADER_SIZE) as u16, - )?; + stream + .write_u16::((self.share_control_pdu.buffer_length() + SHARE_CONTROL_HEADER_SIZE) as u16)?; stream.write_u16::(pdu_type_with_version)?; stream.write_u16::(self.pdu_source)?; stream.write_u32::(self.share_id)?; @@ -131,10 +125,7 @@ impl ShareControlPdu { } impl ShareControlPdu { - pub fn from_type( - mut stream: impl io::Read, - share_type: ShareControlPduType, - ) -> Result { + pub fn from_type(mut stream: impl io::Read, share_type: ShareControlPduType) -> Result { match share_type { ShareControlPduType::DemandActivePdu => Ok(ShareControlPdu::ServerDemandActive( ServerDemandActive::from_buffer(&mut stream)?, @@ -142,20 +133,14 @@ impl ShareControlPdu { ShareControlPduType::ConfirmActivePdu => Ok(ShareControlPdu::ClientConfirmActive( ClientConfirmActive::from_buffer(&mut stream)?, )), - ShareControlPduType::DataPdu => Ok(ShareControlPdu::Data( - ShareDataHeader::from_buffer(&mut stream)?, - )), + ShareControlPduType::DataPdu => Ok(ShareControlPdu::Data(ShareDataHeader::from_buffer(&mut stream)?)), _ => Err(RdpError::UnexpectedShareControlPdu(share_type)), } } pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), RdpError> { match self { - ShareControlPdu::ServerDemandActive(pdu) => { - pdu.to_buffer(&mut stream).map_err(RdpError::from) - } - ShareControlPdu::ClientConfirmActive(pdu) => { - pdu.to_buffer(&mut stream).map_err(RdpError::from) - } + ShareControlPdu::ServerDemandActive(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), + ShareControlPdu::ClientConfirmActive(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), ShareControlPdu::Data(share_data_header) => share_data_header.to_buffer(&mut stream), } } @@ -188,23 +173,18 @@ impl PduParsing for ShareDataHeader { fn from_buffer(mut stream: impl io::Read) -> Result { let _padding = stream.read_u8()?; - let stream_priority = StreamPriority::from_u8(stream.read_u8()?).ok_or_else(|| { - RdpError::InvalidShareDataHeader(String::from("Invalid stream priority")) - })?; + let stream_priority = StreamPriority::from_u8(stream.read_u8()?) + .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid stream priority")))?; let _uncompressed_length = stream.read_u16::()?; let pdu_type = ShareDataPduType::from_u8(stream.read_u8()?) .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid pdu type")))?; let compression_flags_with_type = stream.read_u8()?; - let compression_flags = CompressionFlags::from_bits_truncate( - compression_flags_with_type & SHARE_DATA_HEADER_MASK, - ); - let compression_type = client_info::CompressionType::from_u8( - compression_flags_with_type & !SHARE_DATA_HEADER_MASK, - ) - .ok_or_else(|| { - RdpError::InvalidShareDataHeader(String::from("Invalid compression type")) - })?; + let compression_flags = + CompressionFlags::from_bits_truncate(compression_flags_with_type & SHARE_DATA_HEADER_MASK); + let compression_type = + client_info::CompressionType::from_u8(compression_flags_with_type & !SHARE_DATA_HEADER_MASK) + .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid compression type")))?; let _compressed_length = stream.read_u16::()?; let share_data_pdu = ShareDataPdu::from_type(&mut stream, pdu_type)?; @@ -219,8 +199,7 @@ impl PduParsing for ShareDataHeader { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { if self.compression_flags.is_empty() { - let compression_flags_with_type = - self.compression_flags.bits() | self.compression_type.to_u8().unwrap(); + let compression_flags_with_type = self.compression_flags.bits() | self.compression_type.to_u8().unwrap(); stream.write_u8(0)?; // padding stream.write_u8(self.stream_priority.to_u8().unwrap())?; @@ -281,29 +260,18 @@ impl ShareDataPdu { } impl ShareDataPdu { - pub fn from_type( - mut stream: impl io::Read, - share_type: ShareDataPduType, - ) -> Result { + pub fn from_type(mut stream: impl io::Read, share_type: ShareDataPduType) -> Result { match share_type { - ShareDataPduType::Synchronize => Ok(ShareDataPdu::Synchronize( - SynchronizePdu::from_buffer(&mut stream)?, - )), - ShareDataPduType::Control => { - Ok(ShareDataPdu::Control(ControlPdu::from_buffer(&mut stream)?)) + ShareDataPduType::Synchronize => Ok(ShareDataPdu::Synchronize(SynchronizePdu::from_buffer(&mut stream)?)), + ShareDataPduType::Control => Ok(ShareDataPdu::Control(ControlPdu::from_buffer(&mut stream)?)), + ShareDataPduType::FontList => Ok(ShareDataPdu::FontList(FontPdu::from_buffer(&mut stream)?)), + ShareDataPduType::FontMap => Ok(ShareDataPdu::FontMap(FontPdu::from_buffer(&mut stream)?)), + ShareDataPduType::MonitorLayoutPdu => { + Ok(ShareDataPdu::MonitorLayout(MonitorLayoutPdu::from_buffer(&mut stream)?)) } - ShareDataPduType::FontList => { - Ok(ShareDataPdu::FontList(FontPdu::from_buffer(&mut stream)?)) - } - ShareDataPduType::FontMap => { - Ok(ShareDataPdu::FontMap(FontPdu::from_buffer(&mut stream)?)) - } - ShareDataPduType::MonitorLayoutPdu => Ok(ShareDataPdu::MonitorLayout( - MonitorLayoutPdu::from_buffer(&mut stream)?, - )), - ShareDataPduType::SaveSessionInfo => Ok(ShareDataPdu::SaveSessionInfo( - SaveSessionInfoPdu::from_buffer(&mut stream)?, - )), + ShareDataPduType::SaveSessionInfo => Ok(ShareDataPdu::SaveSessionInfo(SaveSessionInfoPdu::from_buffer( + &mut stream, + )?)), ShareDataPduType::FrameAcknowledgePdu => Ok(ShareDataPdu::FrameAcknowledge( FrameAcknowledgePdu::from_buffer(&mut stream)?, )), @@ -337,15 +305,9 @@ impl ShareDataPdu { pdu.to_buffer(&mut stream).map_err(RdpError::from) } ShareDataPdu::MonitorLayout(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), - ShareDataPdu::SaveSessionInfo(pdu) => { - pdu.to_buffer(&mut stream).map_err(RdpError::from) - } - ShareDataPdu::FrameAcknowledge(pdu) => { - pdu.to_buffer(&mut stream).map_err(RdpError::from) - } - ShareDataPdu::ServerSetErrorInfo(pdu) => { - pdu.to_buffer(&mut stream).map_err(RdpError::from) - } + ShareDataPdu::SaveSessionInfo(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), + ShareDataPdu::FrameAcknowledge(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), + ShareDataPdu::ServerSetErrorInfo(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), } } pub fn buffer_length(&self) -> usize { diff --git a/ironrdp/src/rdp/server_error_info.rs b/ironrdp/src/rdp/server_error_info.rs index 6642c1f0..74346a6e 100644 --- a/ironrdp/src/rdp/server_error_info.rs +++ b/ironrdp/src/rdp/server_error_info.rs @@ -15,8 +15,8 @@ impl PduParsing for ServerSetErrorInfoPdu { fn from_buffer(mut buffer: impl io::Read) -> Result { let error_info = buffer.read_u32::()?; - let error_info = ErrorInfo::from_u32(error_info) - .ok_or(ServerSetErrorInfoError::UnexpectedInfoCode(error_info))?; + let error_info = + ErrorInfo::from_u32(error_info).ok_or(ServerSetErrorInfoError::UnexpectedInfoCode(error_info))?; Ok(Self(error_info)) } @@ -49,10 +49,9 @@ impl ErrorInfo { Self::ProtocolIndependentLicensingCode(c) => { format!("[Protocol independent licensing error] {}", c.description()) } - Self::ProtocolIndependentConnectionBrokerCode(c) => format!( - "[Protocol independent connection broker error] {}", - c.description() - ), + Self::ProtocolIndependentConnectionBrokerCode(c) => { + format!("[Protocol independent connection broker error] {}", c.description()) + } Self::RdpSpecificCode(c) => format!("[RDP specific code]: {}", c.description()), } } @@ -169,35 +168,19 @@ pub enum ProtocolIndependentLicensingCode { impl ProtocolIndependentLicensingCode { pub fn description(&self) -> &str { match self { - Self::Internal => { - "An internal error has occurred in the Terminal Services licensing component" - } - Self::NoLicenseServer => { - "A Remote Desktop License Server could not be found to provide a license" - } - Self::NoLicense => { - "There are no Client Access Licenses available for the target remote computer" - } - Self::BadClientMsg => { - "The remote computer received an invalid licensing message from the client" - } - Self::HwidDoesntMatchLicense => { - "The Client Access License stored by the client has been modified" - } - Self::BadClientLicense => { - "The Client Access License stored by the client is in an invalid format" - } - Self::CantFinishProtocol => { - "Network problems have caused the licensing protocol to be terminated" - } + Self::Internal => "An internal error has occurred in the Terminal Services licensing component", + Self::NoLicenseServer => "A Remote Desktop License Server could not be found to provide a license", + Self::NoLicense => "There are no Client Access Licenses available for the target remote computer", + Self::BadClientMsg => "The remote computer received an invalid licensing message from the client", + Self::HwidDoesntMatchLicense => "The Client Access License stored by the client has been modified", + Self::BadClientLicense => "The Client Access License stored by the client is in an invalid format", + Self::CantFinishProtocol => "Network problems have caused the licensing protocol to be terminated", Self::ClientEndedProtocol => "The client prematurely ended the licensing protocol", Self::BadClientEncryption => "A licensing message was incorrectly encrypted", Self::CantUpgradeLicense => { "The Client Access License stored by the client could not be upgraded or renewed" } - Self::NoRemoteConnections => { - "The remote computer is not licensed to accept remote connections" - } + Self::NoRemoteConnections => "The remote computer is not licensed to accept remote connections", } } } @@ -410,11 +393,7 @@ pub enum ServerSetErrorInfoError { UnexpectedInfoCode(u32), } -impl_from_error!( - io::Error, - ServerSetErrorInfoError, - ServerSetErrorInfoError::IoError -); +impl_from_error!(io::Error, ServerSetErrorInfoError, ServerSetErrorInfoError::IoError); #[cfg(test)] mod tests { @@ -439,9 +418,7 @@ mod tests { let expected = SERVER_SET_ERROR_INFO_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - SERVER_SET_ERROR_INFO - .to_buffer(&mut buffer.as_mut_slice()) - .unwrap(); + SERVER_SET_ERROR_INFO.to_buffer(&mut buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 7ed68232..0a8f0bc4 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -18,16 +18,12 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use ring::digest; -pub use self::{ - client_new_license_request::{ClientNewLicenseRequest, PLATFORM_ID}, - client_platform_challenge_response::ClientPlatformChallengeResponse, - licensing_error_message::{LicenseErrorCode, LicensingErrorMessage, LicensingStateTransition}, - server_license_request::{ - InitialMessageType, InitialServerLicenseMessage, ServerLicenseRequest, - }, - server_platform_challenge::ServerPlatformChallenge, - server_upgrade_license::ServerUpgradeLicense, -}; +pub use self::client_new_license_request::{ClientNewLicenseRequest, PLATFORM_ID}; +pub use self::client_platform_challenge_response::ClientPlatformChallengeResponse; +pub use self::licensing_error_message::{LicenseErrorCode, LicensingErrorMessage, LicensingStateTransition}; +pub use self::server_license_request::{InitialMessageType, InitialServerLicenseMessage, ServerLicenseRequest}; +pub use self::server_platform_challenge::ServerPlatformChallenge; +pub use self::server_upgrade_license::ServerUpgradeLicense; use crate::rdp::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; use crate::{impl_from_error, PduParsing}; @@ -74,31 +70,23 @@ impl PduParsing for LicenseHeader { )) })?; - if !security_header - .flags - .contains(BasicSecurityHeaderFlags::LICENSE_PKT) - { + if !security_header.flags.contains(BasicSecurityHeaderFlags::LICENSE_PKT) { return Err(ServerLicenseError::InvalidSecurityFlags); } - let preamble_message_type = PreambleType::from_u8(stream.read_u8()?) - .ok_or(ServerLicenseError::InvalidLicenseType)?; + let preamble_message_type = + PreambleType::from_u8(stream.read_u8()?).ok_or(ServerLicenseError::InvalidLicenseType)?; let flags_with_version = stream.read_u8()?; let preamble_message_size = stream.read_u16::()?; let preamble_flags = PreambleFlags::from_bits(flags_with_version & !PROTOCOL_VERSION_MASK) - .ok_or_else(|| { - ServerLicenseError::InvalidPreamble(String::from("Got invalid flags field")) - })?; + .ok_or_else(|| ServerLicenseError::InvalidPreamble(String::from("Got invalid flags field")))?; - let preamble_version = - PreambleVersion::from_u8((flags_with_version & PROTOCOL_VERSION_MASK) as u8) - .ok_or_else(|| { - ServerLicenseError::InvalidPreamble(String::from( - "Got invalid version in the flags field", - )) - })?; + let preamble_version = PreambleVersion::from_u8((flags_with_version & PROTOCOL_VERSION_MASK) as u8) + .ok_or_else(|| { + ServerLicenseError::InvalidPreamble(String::from("Got invalid version in the flags field")) + })?; Ok(Self { security_header, @@ -117,8 +105,7 @@ impl PduParsing for LicenseHeader { )) })?; - let flags_with_version = - self.preamble_flags.bits() | self.preamble_version.to_u8().unwrap(); + let flags_with_version = self.preamble_flags.bits() | self.preamble_version.to_u8().unwrap(); stream.write_u8(self.preamble_message_type.to_u8().unwrap())?; stream.write_u8(flags_with_version)?; @@ -197,9 +184,7 @@ pub enum ServerLicenseError { RsaKeyEncryptionError, #[fail(display = "Invalid License Request key exchange algorithm value")] InvalidKeyExchangeValue, - #[fail( - display = "MAC checksum generated over decrypted data does not match the server's checksum" - )] + #[fail(display = "MAC checksum generated over decrypted data does not match the server's checksum")] InvalidMacData, #[fail(display = "Invalid platform challenge response data version")] InvalidChallengeResponseDataVersion, @@ -235,15 +220,9 @@ pub enum ServerLicenseError { UnexpectedValidClientError(LicensingErrorMessage), #[fail(display = "Invalid Key Exchange List field")] InvalidKeyExchangeAlgorithm, - #[fail( - display = "Received invalid company name length (Product Information): {}", - _0 - )] + #[fail(display = "Received invalid company name length (Product Information): {}", _0)] InvalidCompanyNameLength(u32), - #[fail( - display = "Received invalid product ID length (Product Information): {}", - _0 - )] + #[fail(display = "Received invalid product ID length (Product Information): {}", _0)] InvalidProductIdLength(u32), #[fail(display = "Received invalid scope count field: {}", _0)] InvalidScopeCount(u32), @@ -279,9 +258,7 @@ impl BlobHeader { Ok(Self { blob_type, length }) } - pub fn read_any_blob_from_buffer( - mut stream: impl io::Read, - ) -> Result { + pub fn read_any_blob_from_buffer(mut stream: impl io::Read) -> Result { let _blob_type = stream.read_u16::()?; let length = stream.read_u16::()? as usize; @@ -312,14 +289,9 @@ fn compute_mac_data(mac_salt_key: &[u8], data: &[u8]) -> Vec { let sha_result = digest::digest( &digest::SHA1_FOR_LEGACY_USE_ONLY, - [ - mac_salt_key, - pad_one.as_ref(), - data_len_buffer.as_ref(), - data, - ] - .concat() - .as_slice(), + [mac_salt_key, pad_one.as_ref(), data_len_buffer.as_ref(), data] + .concat() + .as_slice(), ); let pad_two: [u8; 48] = [0x5c; 48]; @@ -347,9 +319,7 @@ fn read_license_header( if license_error.error_code == LicenseErrorCode::StatusValidClient && license_error.state_transition == LicensingStateTransition::NoTransition { - return Err(ServerLicenseError::UnexpectedValidClientError( - license_error, - )); + return Err(ServerLicenseError::UnexpectedValidClientError(license_error)); } else { return Err(ServerLicenseError::UnexpectedServerError(license_error)); } diff --git a/ironrdp/src/rdp/server_license/client_new_license_request.rs b/ironrdp/src/rdp/server_license/client_new_license_request.rs index 136f6e6d..fd15e6ec 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request.rs @@ -3,20 +3,19 @@ pub mod test; use std::io; -use crate::utils::rsa::encrypt_with_public_key; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use md5::Digest; - use ring::digest; use super::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, - LicenseHeader, PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, - ServerLicenseRequest, KEY_EXCHANGE_ALGORITHM_RSA, PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, - UTF8_NULL_TERMINATOR_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, + PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, ServerLicenseRequest, KEY_EXCHANGE_ALGORITHM_RSA, + PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; -use crate::{utils, utils::CharacterSet, PduParsing}; +use crate::utils::rsa::encrypt_with_public_key; +use crate::utils::CharacterSet; +use crate::{utils, PduParsing}; const LICENSE_REQUEST_STATIC_FIELDS_SIZE: usize = 20; @@ -142,28 +141,15 @@ impl PduParsing for ClientNewLicenseRequest { let mut client_random = vec![0u8; RANDOM_NUMBER_SIZE]; stream.read_exact(&mut client_random)?; - let premaster_secret_blob_header = - BlobHeader::read_from_buffer(BlobType::Random, &mut stream)?; + let premaster_secret_blob_header = BlobHeader::read_from_buffer(BlobType::Random, &mut stream)?; let mut encrypted_premaster_secret = vec![0u8; premaster_secret_blob_header.length]; stream.read_exact(&mut encrypted_premaster_secret)?; - let username_blob_header = - BlobHeader::read_from_buffer(BlobType::ClientUserName, &mut stream)?; - let client_username = utils::read_string( - &mut stream, - username_blob_header.length, - CharacterSet::Ansi, - false, - )?; + let username_blob_header = BlobHeader::read_from_buffer(BlobType::ClientUserName, &mut stream)?; + let client_username = utils::read_string(&mut stream, username_blob_header.length, CharacterSet::Ansi, false)?; - let machine_name_blob = - BlobHeader::read_from_buffer(BlobType::ClientMachineNameBlob, &mut stream)?; - let client_machine_name = utils::read_string( - &mut stream, - machine_name_blob.length, - CharacterSet::Ansi, - false, - )?; + let machine_name_blob = BlobHeader::read_from_buffer(BlobType::ClientMachineNameBlob, &mut stream)?; + let client_machine_name = utils::read_string(&mut stream, machine_name_blob.length, CharacterSet::Ansi, false)?; Ok(Self { license_header, @@ -181,8 +167,7 @@ impl PduParsing for ClientNewLicenseRequest { stream.write_u32::(PLATFORM_ID)?; stream.write_all(&self.client_random)?; - BlobHeader::new(BlobType::Random, self.encrypted_premaster_secret.len()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::Random, self.encrypted_premaster_secret.len()).write_to_buffer(&mut stream)?; stream.write_all(&self.encrypted_premaster_secret)?; BlobHeader::new( @@ -190,22 +175,14 @@ impl PduParsing for ClientNewLicenseRequest { self.client_username.len() + UTF8_NULL_TERMINATOR_SIZE, ) .write_to_buffer(&mut stream)?; - utils::write_string_with_null_terminator( - &mut stream, - &self.client_username, - CharacterSet::Ansi, - )?; + utils::write_string_with_null_terminator(&mut stream, &self.client_username, CharacterSet::Ansi)?; BlobHeader::new( BlobType::ClientMachineNameBlob, self.client_machine_name.len() + UTF8_NULL_TERMINATOR_SIZE, ) .write_to_buffer(&mut stream)?; - utils::write_string_with_null_terminator( - &mut stream, - &self.client_machine_name, - CharacterSet::Ansi, - )?; + utils::write_string_with_null_terminator(&mut stream, &self.client_machine_name, CharacterSet::Ansi)?; Ok(()) } @@ -235,11 +212,7 @@ fn salted_hash(salt: &[u8], salt_first: &[u8], salt_second: &[u8], input: &[u8]) } // According to https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/88061224-4a2f-4a28-a52e-e896b75ed2d3 -fn compute_master_secret( - premaster_secret: &[u8], - client_random: &[u8], - server_random: &[u8], -) -> Vec { +fn compute_master_secret(premaster_secret: &[u8], client_random: &[u8], server_random: &[u8]) -> Vec { [ salted_hash(premaster_secret, client_random, server_random, b"A"), salted_hash(premaster_secret, client_random, server_random, b"BB"), @@ -249,11 +222,7 @@ fn compute_master_secret( } // According to https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/88061224-4a2f-4a28-a52e-e896b75ed2d3 -fn compute_session_key_blob( - master_secret: &[u8], - client_random: &[u8], - server_random: &[u8], -) -> Vec { +fn compute_session_key_blob(master_secret: &[u8], client_random: &[u8], server_random: &[u8]) -> Vec { [ salted_hash(master_secret, server_random, client_random, b"A"), salted_hash(master_secret, server_random, client_random, b"BB"), diff --git a/ironrdp/src/rdp/server_license/client_new_license_request/test.rs b/ironrdp/src/rdp/server_license/client_new_license_request/test.rs index 0c6ca76d..870392d6 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request/test.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request/test.rs @@ -1,14 +1,10 @@ -use super::*; -use crate::rdp::server_license::{ - server_license_request::{ - cert::{CertificateType, X509CertificateChain}, - ProductInfo, Scope, ServerCertificate, - }, - PREAMBLE_SIZE, -}; - use lazy_static::lazy_static; +use super::*; +use crate::rdp::server_license::server_license_request::cert::{CertificateType, X509CertificateChain}; +use crate::rdp::server_license::server_license_request::{ProductInfo, Scope, ServerCertificate}; +use crate::rdp::server_license::PREAMBLE_SIZE; + const LICENSE_HEADER_BUFFER_NO_SIZE: [u8; 6] = [ 0x80, 0x00, // flags 0x00, 0x00, // flagsHi @@ -16,27 +12,26 @@ const LICENSE_HEADER_BUFFER_NO_SIZE: [u8; 6] = [ ]; const CLIENT_RANDOM_BUFFER: [u8; 32] = [ - 0x4b, 0x5b, 0x7b, 0x43, 0x63, 0x8a, 0x8, 0xfe, 0xd1, 0x7a, 0xba, 0xf5, 0x91, 0x85, 0x77, 0xfe, - 0x39, 0x36, 0xf6, 0xd7, 0x78, 0xec, 0x6a, 0xcc, 0x89, 0x4a, 0x90, 0x41, 0x2c, 0xac, 0x5a, 0x49, + 0x4b, 0x5b, 0x7b, 0x43, 0x63, 0x8a, 0x8, 0xfe, 0xd1, 0x7a, 0xba, 0xf5, 0x91, 0x85, 0x77, 0xfe, 0x39, 0x36, 0xf6, + 0xd7, 0x78, 0xec, 0x6a, 0xcc, 0x89, 0x4a, 0x90, 0x41, 0x2c, 0xac, 0x5a, 0x49, ]; const SERVER_RANDOM_BUFFER: [u8; 32] = [ - 0x5c, 0x81, 0xf0, 0x11, 0xeb, 0xcf, 0xd1, 0xe, 0xb4, 0x1f, 0xb3, 0xba, 0x93, 0xa2, 0xd7, 0x39, - 0x9, 0xaa, 0x99, 0xe9, 0x10, 0xd4, 0xd7, 0x95, 0xdd, 0xad, 0x91, 0x69, 0x5, 0x26, 0x6b, 0x6a, + 0x5c, 0x81, 0xf0, 0x11, 0xeb, 0xcf, 0xd1, 0xe, 0xb4, 0x1f, 0xb3, 0xba, 0x93, 0xa2, 0xd7, 0x39, 0x9, 0xaa, 0x99, + 0xe9, 0x10, 0xd4, 0xd7, 0x95, 0xdd, 0xad, 0x91, 0x69, 0x5, 0x26, 0x6b, 0x6a, ]; const ENCRYPTED_PREMASTER_SECRET: [u8; 72] = [ - 0xb0, 0x95, 0xf7, 0xcb, 0x81, 0x34, 0x45, 0x85, 0x65, 0x83, 0xb2, 0xcf, 0x5b, 0xdf, 0xfe, 0x40, - 0x6f, 0xd8, 0x14, 0x14, 0x18, 0xb, 0x2b, 0x6d, 0xaa, 0xd0, 0x38, 0xa, 0xaf, 0x74, 0xe9, 0x51, - 0x55, 0x2b, 0xdb, 0xfd, 0x3b, 0xd3, 0xfb, 0x2f, 0x34, 0x92, 0xdd, 0xc8, 0xaf, 0x48, 0xf3, 0x91, - 0x61, 0x8a, 0x5b, 0xbd, 0x81, 0x87, 0xec, 0xb8, 0xcc, 0xb, 0xb, 0xc9, 0xd, 0x1c, 0xe7, 0x17, 0, - 0, 0, 0, 0, 0, 0, 0, + 0xb0, 0x95, 0xf7, 0xcb, 0x81, 0x34, 0x45, 0x85, 0x65, 0x83, 0xb2, 0xcf, 0x5b, 0xdf, 0xfe, 0x40, 0x6f, 0xd8, 0x14, + 0x14, 0x18, 0xb, 0x2b, 0x6d, 0xaa, 0xd0, 0x38, 0xa, 0xaf, 0x74, 0xe9, 0x51, 0x55, 0x2b, 0xdb, 0xfd, 0x3b, 0xd3, + 0xfb, 0x2f, 0x34, 0x92, 0xdd, 0xc8, 0xaf, 0x48, 0xf3, 0x91, 0x61, 0x8a, 0x5b, 0xbd, 0x81, 0x87, 0xec, 0xb8, 0xcc, + 0xb, 0xb, 0xc9, 0xd, 0x1c, 0xe7, 0x17, 0, 0, 0, 0, 0, 0, 0, 0, ]; const PREMASTER_SECRET_BUFFER: [u8; 48] = [ - 0x14, 0x28, 0xda, 0xfb, 0xb9, 0xea, 0x38, 0xab, 0x5e, 0xa2, 0xf9, 0x4, 0xf7, 0x89, 0x9c, 0x98, - 0x3d, 0x50, 0x45, 0x77, 0xbf, 0x17, 0x81, 0x1c, 0x37, 0x87, 0xc2, 0x48, 0x13, 0xe8, 0xc9, 0x20, - 0x4d, 0xdf, 0xf3, 0x27, 0xbd, 0xb6, 0x98, 0x7e, 0x64, 0xda, 0xfe, 0x1d, 0x31, 0x2f, 0x62, 0xca, + 0x14, 0x28, 0xda, 0xfb, 0xb9, 0xea, 0x38, 0xab, 0x5e, 0xa2, 0xf9, 0x4, 0xf7, 0x89, 0x9c, 0x98, 0x3d, 0x50, 0x45, + 0x77, 0xbf, 0x17, 0x81, 0x1c, 0x37, 0x87, 0xc2, 0x48, 0x13, 0xe8, 0xc9, 0x20, 0x4d, 0xdf, 0xf3, 0x27, 0xbd, 0xb6, + 0x98, 0x7e, 0x64, 0xda, 0xfe, 0x1d, 0x31, 0x2f, 0x62, 0xca, ]; const SALTED_HASH_BUFFER: [u8; 16] = [ @@ -44,15 +39,15 @@ const SALTED_HASH_BUFFER: [u8; 16] = [ ]; const MASTER_SECRET_BUFFER: [u8; 48] = [ - 0xfe, 0xdc, 0x51, 0x9a, 0xdb, 0x3a, 0xc9, 0x61, 0x4, 0x7, 0x24, 0x94, 0x5d, 0xc, 0x43, 0xa7, - 0x70, 0xe3, 0xf3, 0x0, 0x50, 0xd7, 0xa8, 0x72, 0x3e, 0xab, 0x7e, 0x1b, 0xe4, 0x64, 0xe5, 0xc5, - 0x74, 0xae, 0xed, 0x10, 0x72, 0x96, 0x2a, 0x4c, 0x65, 0x9, 0x4f, 0x60, 0x12, 0xa9, 0x12, 0xa1, + 0xfe, 0xdc, 0x51, 0x9a, 0xdb, 0x3a, 0xc9, 0x61, 0x4, 0x7, 0x24, 0x94, 0x5d, 0xc, 0x43, 0xa7, 0x70, 0xe3, 0xf3, 0x0, + 0x50, 0xd7, 0xa8, 0x72, 0x3e, 0xab, 0x7e, 0x1b, 0xe4, 0x64, 0xe5, 0xc5, 0x74, 0xae, 0xed, 0x10, 0x72, 0x96, 0x2a, + 0x4c, 0x65, 0x9, 0x4f, 0x60, 0x12, 0xa9, 0x12, 0xa1, ]; const SESSION_KEY_BLOB: [u8; 48] = [ - 0xf7, 0x3, 0x75, 0xb9, 0x5f, 0xda, 0xd0, 0xbe, 0xb4, 0x2a, 0xf5, 0xc1, 0x3d, 0x98, 0x85, 0x7a, - 0xd6, 0xc5, 0x39, 0x4c, 0xe3, 0xcb, 0x76, 0x61, 0xaa, 0x4a, 0xb6, 0x15, 0x7e, 0x89, 0x21, 0x3d, - 0xdf, 0x5b, 0x25, 0x32, 0xee, 0x5, 0x6, 0xd, 0x5b, 0xaa, 0x63, 0x14, 0xaf, 0xa5, 0x46, 0xf, + 0xf7, 0x3, 0x75, 0xb9, 0x5f, 0xda, 0xd0, 0xbe, 0xb4, 0x2a, 0xf5, 0xc1, 0x3d, 0x98, 0x85, 0x7a, 0xd6, 0xc5, 0x39, + 0x4c, 0xe3, 0xcb, 0x76, 0x61, 0xaa, 0x4a, 0xb6, 0x15, 0x7e, 0x89, 0x21, 0x3d, 0xdf, 0x5b, 0x25, 0x32, 0xee, 0x5, + 0x6, 0xd, 0x5b, 0xaa, 0x63, 0x14, 0xaf, 0xa5, 0x46, 0xf, ]; const LICENSE_KEY_BUFFER: [u8; 16] = [ @@ -276,32 +271,26 @@ fn from_buffer_correctly_parses_client_new_license_request() { #[test] fn to_buffer_correctly_serializes_client_new_license_request() { let mut serialized_request = Vec::new(); - CLIENT_NEW_LICENSE_REQUEST - .to_buffer(&mut serialized_request) - .unwrap(); + CLIENT_NEW_LICENSE_REQUEST.to_buffer(&mut serialized_request).unwrap(); assert_eq!(REQUEST_BUFFER.as_slice(), serialized_request.as_slice()); } #[test] fn buffer_length_is_correct_for_client_new_license_request() { - assert_eq!( - REQUEST_BUFFER.len(), - CLIENT_NEW_LICENSE_REQUEST.buffer_length() - ); + assert_eq!(REQUEST_BUFFER.len(), CLIENT_NEW_LICENSE_REQUEST.buffer_length()); } #[test] fn client_new_license_request_creates_correctly() { - let (client_new_license_request, encryption_data) = - ClientNewLicenseRequest::from_server_license_request( - &SERVER_LICENSE_REQUEST, - CLIENT_RANDOM_BUFFER.as_ref(), - PREMASTER_SECRET_BUFFER.as_ref(), - CLIENT_USERNAME, - CLIENT_MACHINE_NAME, - ) - .unwrap(); + let (client_new_license_request, encryption_data) = ClientNewLicenseRequest::from_server_license_request( + &SERVER_LICENSE_REQUEST, + CLIENT_RANDOM_BUFFER.as_ref(), + PREMASTER_SECRET_BUFFER.as_ref(), + CLIENT_USERNAME, + CLIENT_MACHINE_NAME, + ) + .unwrap(); assert_eq!(encryption_data.license_key, LICENSE_KEY_BUFFER.as_ref()); assert_eq!(client_new_license_request, *CLIENT_NEW_LICENSE_REQUEST); diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs index 7deb6be2..116de939 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs @@ -1,7 +1,8 @@ #[cfg(test)] mod test; -use std::{io, io::Write}; +use std::io; +use std::io::Write; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use md5::Digest; @@ -9,12 +10,12 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, - LicenseHeader, PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, - ServerPlatformChallenge, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, PLATFORM_ID, - PREAMBLE_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, + PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, ServerPlatformChallenge, BLOB_LENGTH_SIZE, + BLOB_TYPE_SIZE, MAC_SIZE, PLATFORM_ID, PREAMBLE_SIZE, }; -use crate::{utils::rc4::Rc4, PduParsing}; +use crate::utils::rc4::Rc4; +use crate::PduParsing; const RESPONSE_DATA_VERSION: u16 = 0x100; const RESPONSE_DATA_STATIC_FIELDS_SIZE: usize = 8; @@ -36,13 +37,10 @@ impl ClientPlatformChallengeResponse { encryption_data: &LicenseEncryptionData, ) -> Result { let mut rc4 = Rc4::new(&encryption_data.license_key); - let decrypted_challenge = - rc4.process(platform_challenge.encrypted_platform_challenge.as_slice()); + let decrypted_challenge = rc4.process(platform_challenge.encrypted_platform_challenge.as_slice()); - let decrypted_challenge_mac = super::compute_mac_data( - encryption_data.mac_salt_key.as_slice(), - decrypted_challenge.as_slice(), - ); + let decrypted_challenge_mac = + super::compute_mac_data(encryption_data.mac_salt_key.as_slice(), decrypted_challenge.as_slice()); if decrypted_challenge_mac != platform_challenge.mac_data { return Err(ServerLicenseError::InvalidMacData); @@ -51,8 +49,7 @@ impl ClientPlatformChallengeResponse { let mut challenge_response_data = vec![0u8; RESPONSE_DATA_STATIC_FIELDS_SIZE]; challenge_response_data.write_u16::(RESPONSE_DATA_VERSION)?; challenge_response_data.write_u16::(ClientType::Other.to_u16().unwrap())?; - challenge_response_data - .write_u16::(LicenseDetailLevel::Detail.to_u16().unwrap())?; + challenge_response_data.write_u16::(LicenseDetailLevel::Detail.to_u16().unwrap())?; challenge_response_data.write_u16::(decrypted_challenge.len() as u16)?; challenge_response_data.write_all(&decrypted_challenge)?; @@ -111,14 +108,12 @@ impl PduParsing for ClientPlatformChallengeResponse { ))); } - let encrypted_challenge_blob = - BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; + let encrypted_challenge_blob = BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; let mut encrypted_challenge_response_data = vec![0u8; encrypted_challenge_blob.length]; stream.read_exact(&mut encrypted_challenge_response_data)?; - let encrypted_hwid_blob = - BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; + let encrypted_hwid_blob = BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; let mut encrypted_hwid = vec![0u8; encrypted_hwid_blob.length]; stream.read_exact(&mut encrypted_hwid)?; @@ -136,15 +131,11 @@ impl PduParsing for ClientPlatformChallengeResponse { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { self.license_header.to_buffer(&mut stream)?; - BlobHeader::new( - BlobType::EncryptedData, - self.encrypted_challenge_response_data.len(), - ) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::EncryptedData, self.encrypted_challenge_response_data.len()) + .write_to_buffer(&mut stream)?; stream.write_all(&self.encrypted_challenge_response_data)?; - BlobHeader::new(BlobType::EncryptedData, self.encrypted_hwid.len()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::EncryptedData, self.encrypted_hwid.len()).write_to_buffer(&mut stream)?; stream.write_all(&self.encrypted_hwid)?; stream.write_all(&self.mac_data)?; diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs index bb226687..f52c63d8 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs @@ -1,11 +1,11 @@ +use lazy_static::lazy_static; + use super::*; use crate::rdp::server_license::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, LicenseHeader, PreambleFlags, PreambleType, - PreambleVersion, BASIC_SECURITY_HEADER_SIZE, PREAMBLE_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, LicenseHeader, PreambleFlags, PreambleType, PreambleVersion, + BASIC_SECURITY_HEADER_SIZE, PREAMBLE_SIZE, }; -use lazy_static::lazy_static; - const PLATFORM_CHALLENGE_RESPONSE_DATA_BUFFER: [u8; 18] = [ 0x00, 0x01, // version 0x00, 0x01, // client type @@ -28,14 +28,13 @@ const CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER: [u8; 70] = [ 0x15, 0x03, 0x42, 0x00, // preamble 0x09, 0x00, // blob type, ignored 0x12, 0x00, // blob len - 0xfa, 0xb4, 0xe8, 0x24, 0xcf, 0x56, 0xb2, 0x4e, 0x80, 0x02, 0xbd, 0xb6, 0x61, 0xfc, 0xdf, 0xe9, - 0x6c, 0x44, // encrypted platform challenge response + 0xfa, 0xb4, 0xe8, 0x24, 0xcf, 0x56, 0xb2, 0x4e, 0x80, 0x02, 0xbd, 0xb6, 0x61, 0xfc, 0xdf, 0xe9, 0x6c, + 0x44, // encrypted platform challenge response 0x09, 0x00, // blob type, ignored 0x14, 0x00, // blob len - 0xf8, 0xb5, 0xe8, 0x25, 0x3d, 0x0f, 0x3f, 0x70, 0x1d, 0xda, 0x60, 0x19, 0x16, 0xfe, 0x73, 0x1a, - 0x45, 0x7e, 0x02, 0x71, // encrypted hwid - 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, - 0x0a, // mac data + 0xf8, 0xb5, 0xe8, 0x25, 0x3d, 0x0f, 0x3f, 0x70, 0x1d, 0xda, 0x60, 0x19, 0x16, 0xfe, 0x73, 0x1a, 0x45, 0x7e, 0x02, + 0x71, // encrypted hwid + 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, 0x0a, // mac data ]; const CHALLENGE_BUFFER: [u8; 10] = [ @@ -53,11 +52,10 @@ lazy_static! { license_detail_level: LicenseDetailLevel::Detail, challenge: Vec::from(CHALLENGE_BUFFER.as_ref()), }; - pub static ref CLIENT_HARDWARE_IDENTIFICATION: ClientHardwareIdentification = - ClientHardwareIdentification { - platform_id: HARDWARE_ID, - data: Vec::from(DATA_BUFFER.as_ref()), - }; + pub static ref CLIENT_HARDWARE_IDENTIFICATION: ClientHardwareIdentification = ClientHardwareIdentification { + platform_id: HARDWARE_ID, + data: Vec::from(DATA_BUFFER.as_ref()), + }; pub static ref CLIENT_PLATFORM_CHALLENGE_RESPONSE: ClientPlatformChallengeResponse = ClientPlatformChallengeResponse { license_header: LicenseHeader { @@ -67,16 +65,13 @@ lazy_static! { preamble_message_type: PreambleType::PlatformChallengeResponse, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.len() - - BASIC_SECURITY_HEADER_SIZE) as u16, + preamble_message_size: (CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) + as u16, }, - encrypted_challenge_response_data: Vec::from( - &CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER[12..30] - ), + encrypted_challenge_response_data: Vec::from(&CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER[12..30]), encrypted_hwid: Vec::from(&CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER[34..54]), mac_data: Vec::from( - &CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER - [CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.len() - 16..] + &CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER[CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.len() - 16..] ), }; } @@ -85,10 +80,7 @@ lazy_static! { fn from_buffer_correctly_parses_platform_challenge_response_data() { assert_eq!( *RESPONSE, - PlatformChallengeResponseData::from_buffer( - PLATFORM_CHALLENGE_RESPONSE_DATA_BUFFER.as_ref() - ) - .unwrap() + PlatformChallengeResponseData::from_buffer(PLATFORM_CHALLENGE_RESPONSE_DATA_BUFFER.as_ref()).unwrap() ); } @@ -105,18 +97,14 @@ fn to_buffer_correctly_serializes_platform_challenge_response_data() { #[test] fn buffer_length_is_correct_for_platform_challenge_response_data() { - assert_eq!( - PLATFORM_CHALLENGE_RESPONSE_DATA_BUFFER.len(), - RESPONSE.buffer_length() - ); + assert_eq!(PLATFORM_CHALLENGE_RESPONSE_DATA_BUFFER.len(), RESPONSE.buffer_length()); } #[test] fn from_buffer_correctly_parses_client_hardware_identification() { assert_eq!( *CLIENT_HARDWARE_IDENTIFICATION, - ClientHardwareIdentification::from_buffer(CLIENT_HARDWARE_IDENTIFICATION_BUFFER.as_ref()) - .unwrap() + ClientHardwareIdentification::from_buffer(CLIENT_HARDWARE_IDENTIFICATION_BUFFER.as_ref()).unwrap() ); } @@ -145,10 +133,7 @@ fn buffer_length_is_correct_for_client_hardware_identification() { fn from_buffer_correctly_parses_client_platform_challenge_response() { assert_eq!( *CLIENT_PLATFORM_CHALLENGE_RESPONSE, - ClientPlatformChallengeResponse::from_buffer( - CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.as_ref() - ) - .unwrap() + ClientPlatformChallengeResponse::from_buffer(CLIENT_PLATFORM_CHALLENGE_RESPONSE_BUFFER.as_ref()).unwrap() ); } @@ -175,12 +160,10 @@ fn buffer_length_is_correct_for_client_platform_challege_response() { #[test] fn challenge_response_creates_from_server_challenge_and_encryption_data_correctly() { - let encrypted_platform_challenge = - vec![0x26, 0x38, 0x88, 0x77, 0xcb, 0xe8, 0xbf, 0xce, 0x2c, 0x51]; + let encrypted_platform_challenge = vec![0x26, 0x38, 0x88, 0x77, 0xcb, 0xe8, 0xbf, 0xce, 0x2c, 0x51]; let mac_data = vec![ - 0x51, 0x4a, 0x27, 0x2c, 0x74, 0x18, 0xec, 0x88, 0x95, 0xdd, 0xac, 0x10, 0x3e, 0x3f, 0xa, - 0x72, + 0x51, 0x4a, 0x27, 0x2c, 0x74, 0x18, 0xec, 0x88, 0x95, 0xdd, 0xac, 0x10, 0x3e, 0x3f, 0xa, 0x72, ]; let server_challenge = ServerPlatformChallenge { @@ -191,9 +174,7 @@ fn challenge_response_creates_from_server_challenge_and_encryption_data_correctl preamble_message_type: PreambleType::PlatformChallenge, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (encrypted_platform_challenge.len() - + mac_data.len() - + PREAMBLE_SIZE) as u16, + preamble_message_size: (encrypted_platform_challenge.len() + mac_data.len() + PREAMBLE_SIZE) as u16, }, encrypted_platform_challenge, mac_data, @@ -202,12 +183,10 @@ fn challenge_response_creates_from_server_challenge_and_encryption_data_correctl let encryption_data = LicenseEncryptionData { premaster_secret: Vec::new(), // premaster secret is not involved in this unit test mac_salt_key: vec![ - 0x1, 0x5b, 0x9e, 0x5f, 0x6, 0x97, 0x71, 0x58, 0xc3, 0xb8, 0x8b, 0x8c, 0x6e, 0x77, 0x21, - 0x37, + 0x1, 0x5b, 0x9e, 0x5f, 0x6, 0x97, 0x71, 0x58, 0xc3, 0xb8, 0x8b, 0x8c, 0x6e, 0x77, 0x21, 0x37, ], license_key: vec![ - 0xe1, 0x78, 0xe4, 0xa0, 0x2a, 0xc5, 0xca, 0xb8, 0xa2, 0xd1, 0x53, 0xb8, 0x7, 0x23, - 0xf3, 0xd2, + 0xe1, 0x78, 0xe4, 0xa0, 0x2a, 0xc5, 0xca, 0xb8, 0xa2, 0xd1, 0x53, 0xb8, 0x7, 0x23, 0xf3, 0xd2, ], }; @@ -223,8 +202,8 @@ fn challenge_response_creates_from_server_challenge_and_encryption_data_correctl let encrypted_hwid = rc4.process(&hardware_id); let response_data: [u8; 26] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x03, 0x00, 0x0a, - 0x00, 0x54, 0x00, 0x45, 0x00, 0x53, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x03, 0x00, 0x0a, 0x00, 0x54, 0x00, + 0x45, 0x00, 0x53, 0x00, 0x54, 0x00, 0x00, 0x00, ]; let mut rc4 = Rc4::new(&encryption_data.license_key); @@ -232,9 +211,7 @@ fn challenge_response_creates_from_server_challenge_and_encryption_data_correctl let mac_data = crate::rdp::server_license::compute_mac_data( encryption_data.mac_salt_key.as_slice(), - [response_data.as_ref(), hardware_id.as_slice()] - .concat() - .as_slice(), + [response_data.as_ref(), hardware_id.as_slice()].concat().as_slice(), ); let correct_challenge_response = ClientPlatformChallengeResponse { diff --git a/ironrdp/src/rdp/server_license/licensing_error_message.rs b/ironrdp/src/rdp/server_license/licensing_error_message.rs index d259d84d..7f628d54 100644 --- a/ironrdp/src/rdp/server_license/licensing_error_message.rs +++ b/ironrdp/src/rdp/server_license/licensing_error_message.rs @@ -8,7 +8,6 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{BlobHeader, BlobType, ServerLicenseError, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE}; - use crate::PduParsing; const ERROR_CODE_SIZE: usize = 4; @@ -27,9 +26,8 @@ impl PduParsing for LicensingErrorMessage { fn from_buffer(mut stream: impl io::Read) -> Result { let error_code = LicenseErrorCode::from_u32(stream.read_u32::()?) .ok_or(ServerLicenseError::InvalidErrorCode)?; - let state_transition = - LicensingStateTransition::from_u32(stream.read_u32::()?) - .ok_or(ServerLicenseError::InvalidStateTransition)?; + let state_transition = LicensingStateTransition::from_u32(stream.read_u32::()?) + .ok_or(ServerLicenseError::InvalidStateTransition)?; let error_info_blob = BlobHeader::read_from_buffer(BlobType::Error, &mut stream)?; let error_info = vec![0u8; error_info_blob.length]; @@ -52,11 +50,7 @@ impl PduParsing for LicensingErrorMessage { } fn buffer_length(&self) -> usize { - ERROR_CODE_SIZE - + STATE_TRANSITION_SIZE - + self.error_info.len() - + BLOB_LENGTH_SIZE - + BLOB_TYPE_SIZE + ERROR_CODE_SIZE + STATE_TRANSITION_SIZE + self.error_info.len() + BLOB_LENGTH_SIZE + BLOB_TYPE_SIZE } } diff --git a/ironrdp/src/rdp/server_license/licensing_error_message/test.rs b/ironrdp/src/rdp/server_license/licensing_error_message/test.rs index e7d91063..f551f49f 100644 --- a/ironrdp/src/rdp/server_license/licensing_error_message/test.rs +++ b/ironrdp/src/rdp/server_license/licensing_error_message/test.rs @@ -32,8 +32,5 @@ fn to_buffer_correctly_serializes_licensing_error_message() { #[test] fn buffer_length_is_correct_for_licensing_error_message() { - assert_eq!( - LICENSE_MESSAGE_BUFFER.len(), - LICENSING_ERROR_MESSAGE.buffer_length() - ); + assert_eq!(LICENSE_MESSAGE_BUFFER.len(), LICENSING_ERROR_MESSAGE.buffer_length()); } diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index c5eaaaff..a4881ebc 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -5,16 +5,14 @@ pub mod test; use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use cert::{CertificateType, ProprietaryCertificate, X509CertificateChain}; use x509_parser::parse_x509_certificate; -use cert::{CertificateType, ProprietaryCertificate, X509CertificateChain}; - use super::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseErrorCode, - LicenseHeader, LicensingErrorMessage, LicensingStateTransition, PreambleFlags, PreambleType, - PreambleVersion, ServerLicenseError, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, - KEY_EXCHANGE_ALGORITHM_RSA, PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, UTF16_NULL_TERMINATOR_SIZE, - UTF8_NULL_TERMINATOR_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseErrorCode, LicenseHeader, + LicensingErrorMessage, LicensingStateTransition, PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, + BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, KEY_EXCHANGE_ALGORITHM_RSA, PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, + UTF16_NULL_TERMINATOR_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; use crate::{utils, PduParsing}; @@ -58,8 +56,7 @@ impl InitialServerLicenseMessage { preamble_message_type: PreambleType::ErrorAlert, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (PREAMBLE_SIZE + valid_client_message.buffer_length()) - as u16, + preamble_message_size: (PREAMBLE_SIZE + valid_client_message.buffer_length()) as u16, }, message_type: InitialMessageType::StatusValidClient(valid_client_message), } @@ -127,9 +124,7 @@ impl PduParsing for InitialServerLicenseMessage { fn buffer_length(&self) -> usize { self.license_header.buffer_length() + match &self.message_type { - InitialMessageType::LicenseRequest(license_request) => { - license_request.buffer_length() - } + InitialMessageType::LicenseRequest(license_request) => license_request.buffer_length(), InitialMessageType::StatusValidClient(valid_client) => valid_client.buffer_length(), } } @@ -145,10 +140,7 @@ pub struct ServerLicenseRequest { impl ServerLicenseRequest { pub fn get_public_key(&self) -> Result>, ServerLicenseError> { - self.server_certificate - .as_ref() - .map(|c| c.get_public_key()) - .transpose() + self.server_certificate.as_ref().map(|c| c.get_public_key()).transpose() } } @@ -161,8 +153,7 @@ impl PduParsing for ServerLicenseRequest { let product_info = ProductInfo::from_buffer(&mut stream)?; - let _key_exchange_algorithm_blob = - BlobHeader::read_from_buffer(BlobType::KeyExchangeAlgorithm, &mut stream)?; + let _key_exchange_algorithm_blob = BlobHeader::read_from_buffer(BlobType::KeyExchangeAlgorithm, &mut stream)?; let key_exchange_algorithm = stream.read_u32::()?; if key_exchange_algorithm != RSA_EXCHANGE_ALGORITHM { @@ -201,15 +192,10 @@ impl PduParsing for ServerLicenseRequest { stream.write_all(&self.server_random)?; self.product_info.to_buffer(&mut stream)?; - BlobHeader::new(BlobType::KeyExchangeAlgorithm, KEY_EXCHANGE_FIELD_SIZE) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::KeyExchangeAlgorithm, KEY_EXCHANGE_FIELD_SIZE).write_to_buffer(&mut stream)?; stream.write_u32::(KEY_EXCHANGE_ALGORITHM_RSA)?; - let cert_size = self - .server_certificate - .as_ref() - .map(|v| v.buffer_length()) - .unwrap_or(0); + let cert_size = self.server_certificate.as_ref().map(|v| v.buffer_length()).unwrap_or(0); BlobHeader::new(BlobType::Certificate, cert_size).write_to_buffer(&mut stream)?; if let Some(cert) = &self.server_certificate { @@ -283,19 +269,15 @@ impl ServerCertificate { pub fn get_public_key(&self) -> Result, ServerLicenseError> { match &self.certificate { CertificateType::Proprietary(certificate) => { - let mut public_key_buffer = - Vec::with_capacity(certificate.public_key.buffer_length()); + let mut public_key_buffer = Vec::with_capacity(certificate.public_key.buffer_length()); certificate.public_key.to_buffer(&mut public_key_buffer)?; Ok(public_key_buffer) } CertificateType::X509(certificate) => { if let Ok((_, tbs)) = parse_x509_certificate( - certificate.certificate_array[certificate.certificate_array.len() - 1] - .as_slice(), + certificate.certificate_array[certificate.certificate_array.len() - 1].as_slice(), ) { - Ok(Vec::from( - tbs.tbs_certificate.subject_pki.subject_public_key.data, - )) + Ok(Vec::from(tbs.tbs_certificate.subject_pki.subject_public_key.data)) } else { Err(ServerLicenseError::InvalidX509Certificate) } @@ -370,9 +352,7 @@ impl PduParsing for ProductInfo { let company_name_len = stream.read_u32::()?; if !(2..=MAX_COMPANY_NAME_LEN).contains(&company_name_len) { - return Err(ServerLicenseError::InvalidCompanyNameLength( - company_name_len, - )); + return Err(ServerLicenseError::InvalidCompanyNameLength(company_name_len)); } let mut company_name = vec![0u8; company_name_len as usize]; diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp/src/rdp/server_license/server_license_request/cert.rs index 92386d75..d37dafa5 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/cert.rs @@ -42,9 +42,7 @@ impl PduParsing for X509CertificateChain { .map(|_| { let certificate_len = stream.read_u32::()?; if certificate_len > MAX_CERTIFICATE_LEN { - return Err(ServerLicenseError::InvalidCertificateLength( - certificate_len, - )); + return Err(ServerLicenseError::InvalidCertificateLength(certificate_len)); } let mut certificate = vec![0u8; certificate_len as usize]; @@ -113,32 +111,24 @@ impl PduParsing for ProprietaryCertificate { let mut signature = vec![0u8; sig_blob_header.length]; stream.read_exact(&mut signature)?; - Ok(Self { - public_key, - signature, - }) + Ok(Self { public_key, signature }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u32::(SIGNATURE_ALGORITHM_RSA as u32)?; stream.write_u32::(KEY_EXCHANGE_ALGORITHM_RSA as u32)?; - BlobHeader::new(BlobType::RsaKey, self.public_key.buffer_length()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::RsaKey, self.public_key.buffer_length()).write_to_buffer(&mut stream)?; self.public_key.to_buffer(&mut stream)?; - BlobHeader::new(BlobType::RsaSignature, self.signature.len()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::RsaSignature, self.signature.len()).write_to_buffer(&mut stream)?; stream.write_all(&self.signature)?; Ok(()) } fn buffer_length(&self) -> usize { - PROP_CERT_BLOBS_HEADERS_SIZE - + PROP_CERT_NO_BLOBS_SIZE - + self.public_key.buffer_length() - + self.signature.len() + PROP_CERT_BLOBS_HEADERS_SIZE + PROP_CERT_NO_BLOBS_SIZE + self.public_key.buffer_length() + self.signature.len() } } diff --git a/ironrdp/src/rdp/server_license/server_license_request/test.rs b/ironrdp/src/rdp/server_license/server_license_request/test.rs index 60679427..b18aa357 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/test.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/test.rs @@ -1,22 +1,19 @@ use lazy_static::lazy_static; -use super::cert::{ - RsaPublicKey, PROP_CERT_BLOBS_HEADERS_SIZE, PROP_CERT_NO_BLOBS_SIZE, - RSA_KEY_SIZE_WITHOUT_MODULUS, -}; +use super::cert::{RsaPublicKey, PROP_CERT_BLOBS_HEADERS_SIZE, PROP_CERT_NO_BLOBS_SIZE, RSA_KEY_SIZE_WITHOUT_MODULUS}; use super::*; const SERVER_RANDOM_BUFFER: [u8; 32] = [ - 0x84, 0xef, 0xae, 0x20, 0xb1, 0xd5, 0x9e, 0x36, 0x49, 0x1a, 0xe8, 0x2e, 0x0a, 0x99, 0x89, 0xac, - 0x49, 0xa6, 0x47, 0x4f, 0x33, 0x9b, 0x5a, 0xb9, 0x95, 0x03, 0xa6, 0xc6, 0xc2, 0x3c, 0x3f, 0x61, + 0x84, 0xef, 0xae, 0x20, 0xb1, 0xd5, 0x9e, 0x36, 0x49, 0x1a, 0xe8, 0x2e, 0x0a, 0x99, 0x89, 0xac, 0x49, 0xa6, 0x47, + 0x4f, 0x33, 0x9b, 0x5a, 0xb9, 0x95, 0x03, 0xa6, 0xc6, 0xc2, 0x3c, 0x3f, 0x61, ]; const PRODUCT_INFO_BUFFER: [u8; 64] = [ 0x00, 0x00, 0x06, 0x00, // version 0x2c, 0x00, 0x00, 0x00, // company name len - 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, - 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, - 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, // company name + 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, // company name 0x08, 0x00, 0x00, 0x00, // product id len 0x41, 0x00, 0x30, 0x00, 0x32, 0x00, 0x00, 0x00, // product id ]; @@ -39,150 +36,129 @@ const CERT_HEADER_BUFFER: [u8; 8] = [ ]; const CERT_1_BUFFER: [u8; 757] = [ - 0x30, 0x82, 0x02, 0xf1, 0x30, 0x82, 0x01, 0xdd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x01, - 0x9e, 0x24, 0xa2, 0xf2, 0xae, 0x90, 0x80, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, - 0x05, 0x00, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, - 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, - 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x37, 0x30, 0x30, 0x35, 0x32, 0x37, - 0x30, 0x31, 0x31, 0x31, 0x30, 0x33, 0x5a, 0x17, 0x0d, 0x34, 0x39, 0x30, 0x35, 0x32, 0x37, 0x30, - 0x31, 0x31, 0x31, 0x30, 0x33, 0x5a, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, - 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, - 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, - 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, - 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x88, 0xad, 0x7c, 0x8f, 0x8b, - 0x82, 0x76, 0x5a, 0xbd, 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, 0xed, 0x68, 0x01, - 0xc6, 0x34, 0x35, 0xb0, 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, - 0xb8, 0x25, 0xff, 0x16, 0x47, 0x6f, 0xbd, 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, - 0x75, 0xad, 0x73, 0x28, 0x80, 0xa0, 0x4d, 0xfc, 0x6c, 0xc0, 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, - 0x01, 0x60, 0x19, 0x7e, 0x79, 0x19, 0x39, 0x8d, 0xb5, 0xce, 0x39, 0x58, 0xdd, 0x55, 0x24, 0x3b, - 0x55, 0x7b, 0x43, 0xc1, 0x7f, 0x14, 0x2f, 0xb0, 0x64, 0x3a, 0x54, 0x95, 0x2b, 0x88, 0x49, 0x0c, - 0x61, 0x2d, 0xac, 0xf8, 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, 0xf8, 0x75, 0xc7, 0x26, - 0x6d, 0xb5, 0xbb, 0x39, 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, 0x84, - 0x11, 0x36, 0xa2, 0x61, 0x76, 0xaa, 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, - 0xa9, 0xea, 0xb7, 0x41, 0x94, 0x00, 0x58, 0xaa, 0xc9, 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, - 0x14, 0x01, 0xa8, 0xdc, 0x30, 0x7c, 0x77, 0x5a, 0x20, 0x71, 0x5a, 0xa2, 0x3f, 0xaf, 0x13, 0x7e, - 0xe8, 0xfd, 0x84, 0xa2, 0x5b, 0xcf, 0x25, 0xe9, 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, 0x84, 0xc7, 0x04, - 0x5e, 0x53, 0x73, 0x4e, 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, 0x24, 0xb7, 0x80, 0x53, 0x3c, - 0x54, 0xc8, 0xc1, 0x53, 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, 0xde, 0xae, - 0xf9, 0xe6, 0xaf, 0x57, 0xae, 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, - 0x01, 0x03, 0x38, 0x10, 0xbe, 0x7c, 0x42, 0x67, 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, - 0xa3, 0x13, 0x30, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, - 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, - 0x03, 0x82, 0x01, 0x01, 0x00, 0x81, 0xdd, 0xd2, 0xd3, 0x33, 0xd4, 0xa3, 0xb6, 0x8e, 0x6e, 0x7d, - 0x9f, 0xfd, 0x73, 0x9f, 0x31, 0x0b, 0xdd, 0x42, 0x82, 0x3f, 0x7e, 0x21, 0xdf, 0x28, 0xcc, 0x59, - 0xca, 0x6a, 0xc0, 0xa9, 0x3d, 0x30, 0x7d, 0xe1, 0x91, 0xdb, 0x77, 0x6b, 0x8b, 0x10, 0xe6, 0xfd, - 0xbc, 0x3c, 0xa3, 0x58, 0x48, 0xc2, 0x36, 0xdd, 0xa0, 0x0b, 0xf5, 0x8e, 0x13, 0xda, 0x7b, 0x04, - 0x08, 0x44, 0xb4, 0xf2, 0xa8, 0x0d, 0x1e, 0x0b, 0x1d, 0x1a, 0x3f, 0xf9, 0x9b, 0x4b, 0x5a, 0x54, - 0xc5, 0xb3, 0xb4, 0x03, 0x93, 0x75, 0xb3, 0x72, 0x5c, 0x3d, 0xcf, 0x63, 0x0f, 0x15, 0xe1, 0x64, - 0x58, 0xde, 0x52, 0x8d, 0x97, 0x79, 0x0e, 0xa4, 0x34, 0xd5, 0x66, 0x05, 0x58, 0xb8, 0x6e, 0x79, - 0xb2, 0x09, 0x86, 0xd5, 0xf0, 0xed, 0xc4, 0x6b, 0x4c, 0xab, 0x02, 0xb8, 0x16, 0x5f, 0x3b, 0xed, - 0x88, 0x5f, 0xd1, 0xde, 0x44, 0xe3, 0x73, 0x47, 0x21, 0xf7, 0x03, 0xce, 0xe1, 0x6d, 0x10, 0x0f, - 0x95, 0xcf, 0x7c, 0xa2, 0x7a, 0xa6, 0xbf, 0x20, 0xdb, 0xe1, 0x93, 0x04, 0xc8, 0x5e, 0x6a, 0xbe, - 0xc8, 0x01, 0x5d, 0x27, 0xb2, 0x03, 0x0f, 0x66, 0x75, 0xe7, 0xcb, 0xea, 0x8d, 0x4e, 0x98, 0x9d, - 0x22, 0xed, 0x28, 0x40, 0xd2, 0x7d, 0xa4, 0x4b, 0xef, 0xcc, 0xbf, 0x01, 0x2a, 0x6d, 0x3a, 0x3e, - 0xbe, 0x47, 0x38, 0xf8, 0xea, 0xa4, 0xc6, 0x30, 0x1d, 0x5e, 0x25, 0xcf, 0xfb, 0xe8, 0x3d, 0x42, - 0xdd, 0x29, 0xe8, 0x99, 0x89, 0x9e, 0xbf, 0x39, 0xee, 0x77, 0x09, 0xd9, 0x3e, 0x8b, 0x52, 0x36, - 0xb6, 0xbb, 0x8b, 0xbd, 0x0d, 0xb2, 0x52, 0xaa, 0x2c, 0xcf, 0x38, 0x4e, 0x4d, 0xcf, 0x1d, 0x6d, - 0x5d, 0x25, 0x17, 0xac, 0x2c, 0xf6, 0xf0, 0x65, 0x5a, 0xc9, 0xfe, 0x31, 0x53, 0xb4, 0xf0, 0x0c, - 0x94, 0x4e, 0x0d, 0x54, 0x8e, + 0x30, 0x82, 0x02, 0xf1, 0x30, 0x82, 0x01, 0xdd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x01, 0x9e, 0x24, 0xa2, + 0xf2, 0xae, 0x90, 0x80, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x30, 0x32, 0x31, 0x30, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, + 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, + 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x37, 0x30, 0x30, 0x35, 0x32, + 0x37, 0x30, 0x31, 0x31, 0x31, 0x30, 0x33, 0x5a, 0x17, 0x0d, 0x34, 0x39, 0x30, 0x35, 0x32, 0x37, 0x30, 0x31, 0x31, + 0x31, 0x30, 0x33, 0x5a, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, + 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, + 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x88, 0xad, 0x7c, 0x8f, 0x8b, 0x82, + 0x76, 0x5a, 0xbd, 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, 0xed, 0x68, 0x01, 0xc6, 0x34, 0x35, 0xb0, + 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, 0xb8, 0x25, 0xff, 0x16, 0x47, 0x6f, 0xbd, + 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, 0x75, 0xad, 0x73, 0x28, 0x80, 0xa0, 0x4d, 0xfc, 0x6c, 0xc0, + 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, 0x01, 0x60, 0x19, 0x7e, 0x79, 0x19, 0x39, 0x8d, 0xb5, 0xce, 0x39, 0x58, 0xdd, + 0x55, 0x24, 0x3b, 0x55, 0x7b, 0x43, 0xc1, 0x7f, 0x14, 0x2f, 0xb0, 0x64, 0x3a, 0x54, 0x95, 0x2b, 0x88, 0x49, 0x0c, + 0x61, 0x2d, 0xac, 0xf8, 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, 0xf8, 0x75, 0xc7, 0x26, 0x6d, 0xb5, 0xbb, + 0x39, 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, 0x84, 0x11, 0x36, 0xa2, 0x61, 0x76, 0xaa, + 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, 0xa9, 0xea, 0xb7, 0x41, 0x94, 0x00, 0x58, 0xaa, 0xc9, + 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, 0x14, 0x01, 0xa8, 0xdc, 0x30, 0x7c, 0x77, 0x5a, 0x20, 0x71, 0x5a, 0xa2, + 0x3f, 0xaf, 0x13, 0x7e, 0xe8, 0xfd, 0x84, 0xa2, 0x5b, 0xcf, 0x25, 0xe9, 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, 0x84, 0xc7, + 0x04, 0x5e, 0x53, 0x73, 0x4e, 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, 0x24, 0xb7, 0x80, 0x53, 0x3c, 0x54, 0xc8, + 0xc1, 0x53, 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, 0xde, 0xae, 0xf9, 0xe6, 0xaf, 0x57, 0xae, + 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, 0x01, 0x03, 0x38, 0x10, 0xbe, 0x7c, 0x42, 0x67, + 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x13, 0x30, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x81, 0xdd, 0xd2, 0xd3, 0x33, 0xd4, 0xa3, 0xb6, 0x8e, 0x6e, 0x7d, 0x9f, + 0xfd, 0x73, 0x9f, 0x31, 0x0b, 0xdd, 0x42, 0x82, 0x3f, 0x7e, 0x21, 0xdf, 0x28, 0xcc, 0x59, 0xca, 0x6a, 0xc0, 0xa9, + 0x3d, 0x30, 0x7d, 0xe1, 0x91, 0xdb, 0x77, 0x6b, 0x8b, 0x10, 0xe6, 0xfd, 0xbc, 0x3c, 0xa3, 0x58, 0x48, 0xc2, 0x36, + 0xdd, 0xa0, 0x0b, 0xf5, 0x8e, 0x13, 0xda, 0x7b, 0x04, 0x08, 0x44, 0xb4, 0xf2, 0xa8, 0x0d, 0x1e, 0x0b, 0x1d, 0x1a, + 0x3f, 0xf9, 0x9b, 0x4b, 0x5a, 0x54, 0xc5, 0xb3, 0xb4, 0x03, 0x93, 0x75, 0xb3, 0x72, 0x5c, 0x3d, 0xcf, 0x63, 0x0f, + 0x15, 0xe1, 0x64, 0x58, 0xde, 0x52, 0x8d, 0x97, 0x79, 0x0e, 0xa4, 0x34, 0xd5, 0x66, 0x05, 0x58, 0xb8, 0x6e, 0x79, + 0xb2, 0x09, 0x86, 0xd5, 0xf0, 0xed, 0xc4, 0x6b, 0x4c, 0xab, 0x02, 0xb8, 0x16, 0x5f, 0x3b, 0xed, 0x88, 0x5f, 0xd1, + 0xde, 0x44, 0xe3, 0x73, 0x47, 0x21, 0xf7, 0x03, 0xce, 0xe1, 0x6d, 0x10, 0x0f, 0x95, 0xcf, 0x7c, 0xa2, 0x7a, 0xa6, + 0xbf, 0x20, 0xdb, 0xe1, 0x93, 0x04, 0xc8, 0x5e, 0x6a, 0xbe, 0xc8, 0x01, 0x5d, 0x27, 0xb2, 0x03, 0x0f, 0x66, 0x75, + 0xe7, 0xcb, 0xea, 0x8d, 0x4e, 0x98, 0x9d, 0x22, 0xed, 0x28, 0x40, 0xd2, 0x7d, 0xa4, 0x4b, 0xef, 0xcc, 0xbf, 0x01, + 0x2a, 0x6d, 0x3a, 0x3e, 0xbe, 0x47, 0x38, 0xf8, 0xea, 0xa4, 0xc6, 0x30, 0x1d, 0x5e, 0x25, 0xcf, 0xfb, 0xe8, 0x3d, + 0x42, 0xdd, 0x29, 0xe8, 0x99, 0x89, 0x9e, 0xbf, 0x39, 0xee, 0x77, 0x09, 0xd9, 0x3e, 0x8b, 0x52, 0x36, 0xb6, 0xbb, + 0x8b, 0xbd, 0x0d, 0xb2, 0x52, 0xaa, 0x2c, 0xcf, 0x38, 0x4e, 0x4d, 0xcf, 0x1d, 0x6d, 0x5d, 0x25, 0x17, 0xac, 0x2c, + 0xf6, 0xf0, 0x65, 0x5a, 0xc9, 0xfe, 0x31, 0x53, 0xb4, 0xf0, 0x0c, 0x94, 0x4e, 0x0d, 0x54, 0x8e, ]; const CERT_2_BUFFER: [u8; 1277] = [ - 0x30, 0x82, 0x04, 0xf9, 0x30, 0x82, 0x03, 0xe5, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x05, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x30, - 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, - 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, - 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, - 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x35, 0x32, 0x36, 0x31, 0x32, 0x34, - 0x35, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x33, 0x38, 0x30, 0x31, 0x31, 0x39, 0x30, 0x33, 0x31, 0x34, - 0x30, 0x37, 0x5a, 0x30, 0x81, 0x92, 0x31, 0x81, 0x8f, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x1e, 0x1c, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x63, - 0x00, 0x3a, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x23, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x1c, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x61, 0x00, 0x6c, 0x00, - 0x72, 0x00, 0x70, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, - 0x4e, 0x00, 0x54, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x05, 0x1e, 0x3c, 0x00, 0x31, 0x00, 0x42, - 0x00, 0x63, 0x00, 0x4b, 0x00, 0x65, 0x00, 0x62, 0x00, 0x68, 0x00, 0x70, 0x00, 0x58, 0x00, 0x5a, - 0x00, 0x74, 0x00, 0x4c, 0x00, 0x71, 0x00, 0x4f, 0x00, 0x37, 0x00, 0x53, 0x00, 0x51, 0x00, 0x6e, - 0x00, 0x42, 0x00, 0x70, 0x00, 0x52, 0x00, 0x66, 0x00, 0x75, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, - 0x00, 0x59, 0x00, 0x3d, 0x00, 0x0d, 0x00, 0x0a, 0x30, 0x82, 0x01, 0x1e, 0x30, 0x09, 0x06, 0x05, - 0x2b, 0x0e, 0x03, 0x02, 0x0f, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, - 0x02, 0x82, 0x01, 0x01, 0x00, 0xc8, 0x90, 0x6b, 0xf0, 0xc6, 0x58, 0x81, 0xa6, 0x89, 0x1c, 0x0e, - 0xf2, 0xf6, 0xd9, 0x82, 0x12, 0x71, 0xa5, 0x6e, 0x51, 0xdb, 0xe0, 0x32, 0x66, 0xaa, 0x91, 0x77, - 0x0e, 0x88, 0xab, 0x44, 0xb7, 0xd3, 0x97, 0xda, 0x78, 0x8f, 0x0e, 0x44, 0x26, 0x46, 0x7f, 0x16, - 0xd4, 0xc6, 0x63, 0xeb, 0xca, 0x55, 0xe5, 0x4e, 0x8b, 0x2d, 0xa6, 0x6d, 0x83, 0x95, 0xa7, 0xa8, - 0x6a, 0xfa, 0xd0, 0xbe, 0x26, 0x80, 0xae, 0xab, 0x0a, 0x64, 0x90, 0x32, 0x8c, 0xdf, 0x5c, 0xf8, - 0xf9, 0xd0, 0x7e, 0xd1, 0x6b, 0x3a, 0x29, 0x7e, 0x7d, 0xbd, 0x02, 0xa3, 0x86, 0x6c, 0xfd, 0xa5, - 0x35, 0x71, 0xda, 0x21, 0xb4, 0xee, 0xa4, 0x97, 0xf3, 0xa8, 0xb2, 0x12, 0xdb, 0xa4, 0x27, 0x57, - 0x36, 0xc9, 0x08, 0x22, 0x5c, 0x54, 0xf7, 0x99, 0x7b, 0xa3, 0x2f, 0xb8, 0x5c, 0xd5, 0x16, 0xb8, - 0x19, 0x27, 0x6b, 0x71, 0x97, 0x14, 0x5b, 0xe8, 0x1f, 0x23, 0xe8, 0x5c, 0xb8, 0x1b, 0x73, 0x4b, - 0x6e, 0x7a, 0x03, 0x13, 0xff, 0x97, 0xe9, 0x62, 0xb9, 0x4a, 0xa0, 0x51, 0x23, 0xc3, 0x6c, 0x32, - 0x3e, 0x02, 0xf2, 0x63, 0x97, 0x23, 0x1c, 0xc5, 0x78, 0xd8, 0xfc, 0xb7, 0x07, 0x4b, 0xb0, 0x56, - 0x0f, 0x74, 0xdf, 0xc5, 0x56, 0x28, 0xe4, 0x96, 0xfd, 0x20, 0x8e, 0x65, 0x5a, 0xe6, 0x45, 0xed, - 0xc1, 0x05, 0x3e, 0xab, 0x58, 0x55, 0x40, 0xaf, 0xe2, 0x47, 0xa0, 0x4c, 0x49, 0xa3, 0x8d, 0x39, - 0xe3, 0x66, 0x5f, 0x93, 0x33, 0x6d, 0xf8, 0x5f, 0xc5, 0x54, 0xe5, 0xfb, 0x57, 0x3a, 0xde, 0x45, - 0x12, 0xb5, 0xc7, 0x05, 0x4b, 0x88, 0x1f, 0xb4, 0x35, 0x0f, 0x7c, 0xc0, 0x75, 0x17, 0xc6, 0x67, - 0xdd, 0x48, 0x80, 0xcb, 0x0a, 0xbe, 0x9d, 0xf6, 0x93, 0x60, 0x65, 0x34, 0xeb, 0x97, 0xaf, 0x65, - 0x6d, 0xdf, 0xbf, 0x6f, 0x5b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xbf, 0x30, 0x82, - 0x01, 0xbb, 0x30, 0x14, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x04, 0x01, - 0x01, 0xff, 0x04, 0x04, 0x01, 0x00, 0x05, 0x00, 0x30, 0x3c, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, - 0x01, 0x82, 0x37, 0x12, 0x02, 0x01, 0x01, 0xff, 0x04, 0x2c, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, - 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, - 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, - 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x30, 0x81, 0xcd, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, - 0x82, 0x37, 0x12, 0x05, 0x01, 0x01, 0xff, 0x04, 0x81, 0xbc, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x4a, 0x00, 0x66, 0x00, - 0x4a, 0x00, 0xb0, 0x00, 0x01, 0x00, 0x33, 0x00, 0x64, 0x00, 0x32, 0x00, 0x36, 0x00, 0x37, 0x00, - 0x39, 0x00, 0x35, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, 0x37, 0x00, - 0x2d, 0x00, 0x31, 0x00, 0x31, 0x00, 0x64, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x62, 0x00, 0x39, 0x00, - 0x34, 0x00, 0x65, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, 0x00, 0x63, 0x00, 0x30, 0x00, 0x34, 0x00, - 0x66, 0x00, 0x61, 0x00, 0x33, 0x00, 0x30, 0x00, 0x38, 0x00, 0x30, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x64, 0x00, 0x32, 0x00, 0x36, 0x00, 0x37, 0x00, 0x39, 0x00, 0x35, 0x00, 0x34, 0x00, - 0x2d, 0x00, 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x31, 0x00, - 0x64, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x62, 0x00, 0x39, 0x00, 0x34, 0x00, 0x65, 0x00, 0x2d, 0x00, - 0x30, 0x00, 0x30, 0x00, 0x63, 0x00, 0x30, 0x00, 0x34, 0x00, 0x66, 0x00, 0x61, 0x00, 0x33, 0x00, - 0x30, 0x00, 0x38, 0x00, 0x30, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6e, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, - 0x37, 0x12, 0x06, 0x01, 0x01, 0xff, 0x04, 0x5e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, - 0x3e, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x38, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, 0x00, - 0x36, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x38, 0x00, 0x36, 0x00, 0x37, 0x00, 0x30, 0x00, 0x34, 0x00, - 0x35, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x25, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x01, 0x01, 0xff, - 0x04, 0x1b, 0x30, 0x19, 0xa1, 0x10, 0xa4, 0x0e, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, - 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, 0x82, 0x05, 0x01, 0x00, 0x00, 0x00, 0x02, 0x30, 0x09, 0x06, - 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x2e, 0xeb, 0xc7, - 0x0d, 0xb8, 0x1d, 0x47, 0x11, 0x9d, 0x09, 0x88, 0x9b, 0x51, 0xdc, 0x45, 0xdd, 0x56, 0x51, 0xe2, - 0xd1, 0x23, 0x11, 0x39, 0x9b, 0x2d, 0xda, 0xc7, 0xfe, 0x7a, 0xd7, 0x84, 0xe3, 0x3d, 0x54, 0x77, - 0x97, 0x4d, 0x19, 0x92, 0x30, 0x64, 0xa0, 0x47, 0xc6, 0x2f, 0x6d, 0x93, 0xd2, 0x64, 0x7c, 0x76, - 0xc8, 0x26, 0x45, 0xad, 0x5a, 0x44, 0x54, 0xea, 0xf6, 0x4b, 0x28, 0x77, 0x1f, 0x77, 0xea, 0xec, - 0x74, 0x02, 0x38, 0x68, 0x9e, 0x79, 0x14, 0x72, 0x83, 0x34, 0x74, 0x62, 0xd2, 0xc1, 0x0c, 0xa4, - 0x0b, 0xf2, 0xa9, 0xb0, 0x38, 0xbb, 0x7c, 0xd0, 0xae, 0xbe, 0xbf, 0x74, 0x47, 0x16, 0xa0, 0xa2, - 0xd3, 0xfc, 0x1d, 0xb9, 0xba, 0x26, 0x10, 0x06, 0xef, 0xba, 0x1d, 0x43, 0x01, 0x4e, 0x4e, 0x6f, - 0x56, 0xca, 0xe0, 0xee, 0xd0, 0xf9, 0x4e, 0xa6, 0x62, 0x63, 0xff, 0xda, 0x0b, 0xc9, 0x15, 0x61, - 0x6c, 0xed, 0x6b, 0x0b, 0xc4, 0x58, 0x53, 0x86, 0x0f, 0x8c, 0x0c, 0x1a, 0x2e, 0xdf, 0xc1, 0xf2, - 0x43, 0x48, 0xd4, 0xaf, 0x0a, 0x78, 0x36, 0xb2, 0x51, 0x32, 0x28, 0x6c, 0xc2, 0x75, 0x79, 0x3f, - 0x6e, 0x99, 0x66, 0x88, 0x3e, 0x34, 0xd3, 0x7f, 0x6d, 0x9d, 0x07, 0xe4, 0x6b, 0xeb, 0x84, 0xe2, - 0x0a, 0xbb, 0xca, 0x7d, 0x3a, 0x40, 0x71, 0xb0, 0xbe, 0x47, 0x9f, 0x12, 0x58, 0x31, 0x61, 0x2b, - 0x9b, 0x4a, 0x9a, 0x49, 0x8f, 0xe5, 0xb4, 0x0c, 0xf5, 0x04, 0x4d, 0x3c, 0xce, 0xbc, 0xd2, 0x79, - 0x15, 0xd9, 0x28, 0xf4, 0x23, 0x56, 0x77, 0x9f, 0x38, 0x64, 0x3e, 0x03, 0x88, 0x92, 0x04, 0x26, - 0x76, 0xb9, 0xb5, 0xdf, 0x19, 0xd0, 0x78, 0x4b, 0x7a, 0x60, 0x40, 0x23, 0x91, 0xf1, 0x15, 0x22, - 0x2b, 0xb4, 0xe7, 0x02, 0x54, 0xa9, 0x16, 0x21, 0x5b, 0x60, 0x96, 0xa9, 0x5c, + 0x30, 0x82, 0x04, 0xf9, 0x30, 0x82, 0x03, 0xe5, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x05, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, + 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x35, 0x32, 0x36, 0x31, 0x32, + 0x34, 0x35, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x33, 0x38, 0x30, 0x31, 0x31, 0x39, 0x30, 0x33, 0x31, 0x34, 0x30, 0x37, + 0x5a, 0x30, 0x81, 0x92, 0x31, 0x81, 0x8f, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x1c, 0x00, 0x6e, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, + 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x1c, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x61, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x05, 0x1e, 0x3c, 0x00, 0x31, 0x00, 0x42, 0x00, + 0x63, 0x00, 0x4b, 0x00, 0x65, 0x00, 0x62, 0x00, 0x68, 0x00, 0x70, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x4c, + 0x00, 0x71, 0x00, 0x4f, 0x00, 0x37, 0x00, 0x53, 0x00, 0x51, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x70, 0x00, 0x52, 0x00, + 0x66, 0x00, 0x75, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x59, 0x00, 0x3d, 0x00, 0x0d, 0x00, 0x0a, 0x30, 0x82, + 0x01, 0x1e, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x0f, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc8, 0x90, 0x6b, 0xf0, 0xc6, 0x58, 0x81, 0xa6, 0x89, 0x1c, 0x0e, + 0xf2, 0xf6, 0xd9, 0x82, 0x12, 0x71, 0xa5, 0x6e, 0x51, 0xdb, 0xe0, 0x32, 0x66, 0xaa, 0x91, 0x77, 0x0e, 0x88, 0xab, + 0x44, 0xb7, 0xd3, 0x97, 0xda, 0x78, 0x8f, 0x0e, 0x44, 0x26, 0x46, 0x7f, 0x16, 0xd4, 0xc6, 0x63, 0xeb, 0xca, 0x55, + 0xe5, 0x4e, 0x8b, 0x2d, 0xa6, 0x6d, 0x83, 0x95, 0xa7, 0xa8, 0x6a, 0xfa, 0xd0, 0xbe, 0x26, 0x80, 0xae, 0xab, 0x0a, + 0x64, 0x90, 0x32, 0x8c, 0xdf, 0x5c, 0xf8, 0xf9, 0xd0, 0x7e, 0xd1, 0x6b, 0x3a, 0x29, 0x7e, 0x7d, 0xbd, 0x02, 0xa3, + 0x86, 0x6c, 0xfd, 0xa5, 0x35, 0x71, 0xda, 0x21, 0xb4, 0xee, 0xa4, 0x97, 0xf3, 0xa8, 0xb2, 0x12, 0xdb, 0xa4, 0x27, + 0x57, 0x36, 0xc9, 0x08, 0x22, 0x5c, 0x54, 0xf7, 0x99, 0x7b, 0xa3, 0x2f, 0xb8, 0x5c, 0xd5, 0x16, 0xb8, 0x19, 0x27, + 0x6b, 0x71, 0x97, 0x14, 0x5b, 0xe8, 0x1f, 0x23, 0xe8, 0x5c, 0xb8, 0x1b, 0x73, 0x4b, 0x6e, 0x7a, 0x03, 0x13, 0xff, + 0x97, 0xe9, 0x62, 0xb9, 0x4a, 0xa0, 0x51, 0x23, 0xc3, 0x6c, 0x32, 0x3e, 0x02, 0xf2, 0x63, 0x97, 0x23, 0x1c, 0xc5, + 0x78, 0xd8, 0xfc, 0xb7, 0x07, 0x4b, 0xb0, 0x56, 0x0f, 0x74, 0xdf, 0xc5, 0x56, 0x28, 0xe4, 0x96, 0xfd, 0x20, 0x8e, + 0x65, 0x5a, 0xe6, 0x45, 0xed, 0xc1, 0x05, 0x3e, 0xab, 0x58, 0x55, 0x40, 0xaf, 0xe2, 0x47, 0xa0, 0x4c, 0x49, 0xa3, + 0x8d, 0x39, 0xe3, 0x66, 0x5f, 0x93, 0x33, 0x6d, 0xf8, 0x5f, 0xc5, 0x54, 0xe5, 0xfb, 0x57, 0x3a, 0xde, 0x45, 0x12, + 0xb5, 0xc7, 0x05, 0x4b, 0x88, 0x1f, 0xb4, 0x35, 0x0f, 0x7c, 0xc0, 0x75, 0x17, 0xc6, 0x67, 0xdd, 0x48, 0x80, 0xcb, + 0x0a, 0xbe, 0x9d, 0xf6, 0x93, 0x60, 0x65, 0x34, 0xeb, 0x97, 0xaf, 0x65, 0x6d, 0xdf, 0xbf, 0x6f, 0x5b, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xbf, 0x30, 0x82, 0x01, 0xbb, 0x30, 0x14, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, + 0x01, 0x82, 0x37, 0x12, 0x04, 0x01, 0x01, 0xff, 0x04, 0x04, 0x01, 0x00, 0x05, 0x00, 0x30, 0x3c, 0x06, 0x09, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x02, 0x01, 0x01, 0xff, 0x04, 0x2c, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, + 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, + 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x30, 0x81, 0xcd, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x05, 0x01, 0x01, 0xff, 0x04, 0x81, + 0xbc, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x1c, 0x00, + 0x4a, 0x00, 0x66, 0x00, 0x4a, 0x00, 0xb0, 0x00, 0x01, 0x00, 0x33, 0x00, 0x64, 0x00, 0x32, 0x00, 0x36, 0x00, 0x37, + 0x00, 0x39, 0x00, 0x35, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, 0x37, 0x00, 0x2d, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x64, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x62, 0x00, 0x39, 0x00, 0x34, 0x00, 0x65, 0x00, 0x2d, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x63, 0x00, 0x30, 0x00, 0x34, 0x00, 0x66, 0x00, 0x61, 0x00, 0x33, 0x00, 0x30, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x64, 0x00, 0x00, 0x00, 0x33, 0x00, 0x64, 0x00, 0x32, 0x00, 0x36, 0x00, 0x37, 0x00, 0x39, + 0x00, 0x35, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x31, 0x00, + 0x31, 0x00, 0x64, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x62, 0x00, 0x39, 0x00, 0x34, 0x00, 0x65, 0x00, 0x2d, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x63, 0x00, 0x30, 0x00, 0x34, 0x00, 0x66, 0x00, 0x61, 0x00, 0x33, 0x00, 0x30, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x6e, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x06, 0x01, 0x01, 0xff, 0x04, 0x5e, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, + 0x00, 0x00, 0x00, 0x37, 0x00, 0x38, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x36, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x38, 0x00, 0x36, 0x00, 0x37, 0x00, 0x30, 0x00, 0x34, 0x00, 0x35, 0x00, 0x2d, + 0x00, 0x37, 0x00, 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x00, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, + 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x25, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x01, 0x01, 0xff, 0x04, 0x1b, 0x30, 0x19, 0xa1, 0x10, 0xa4, 0x0e, 0x52, 0x00, 0x4f, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, 0x82, 0x05, 0x01, 0x00, 0x00, 0x00, 0x02, 0x30, 0x09, + 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x2e, 0xeb, 0xc7, 0x0d, 0xb8, + 0x1d, 0x47, 0x11, 0x9d, 0x09, 0x88, 0x9b, 0x51, 0xdc, 0x45, 0xdd, 0x56, 0x51, 0xe2, 0xd1, 0x23, 0x11, 0x39, 0x9b, + 0x2d, 0xda, 0xc7, 0xfe, 0x7a, 0xd7, 0x84, 0xe3, 0x3d, 0x54, 0x77, 0x97, 0x4d, 0x19, 0x92, 0x30, 0x64, 0xa0, 0x47, + 0xc6, 0x2f, 0x6d, 0x93, 0xd2, 0x64, 0x7c, 0x76, 0xc8, 0x26, 0x45, 0xad, 0x5a, 0x44, 0x54, 0xea, 0xf6, 0x4b, 0x28, + 0x77, 0x1f, 0x77, 0xea, 0xec, 0x74, 0x02, 0x38, 0x68, 0x9e, 0x79, 0x14, 0x72, 0x83, 0x34, 0x74, 0x62, 0xd2, 0xc1, + 0x0c, 0xa4, 0x0b, 0xf2, 0xa9, 0xb0, 0x38, 0xbb, 0x7c, 0xd0, 0xae, 0xbe, 0xbf, 0x74, 0x47, 0x16, 0xa0, 0xa2, 0xd3, + 0xfc, 0x1d, 0xb9, 0xba, 0x26, 0x10, 0x06, 0xef, 0xba, 0x1d, 0x43, 0x01, 0x4e, 0x4e, 0x6f, 0x56, 0xca, 0xe0, 0xee, + 0xd0, 0xf9, 0x4e, 0xa6, 0x62, 0x63, 0xff, 0xda, 0x0b, 0xc9, 0x15, 0x61, 0x6c, 0xed, 0x6b, 0x0b, 0xc4, 0x58, 0x53, + 0x86, 0x0f, 0x8c, 0x0c, 0x1a, 0x2e, 0xdf, 0xc1, 0xf2, 0x43, 0x48, 0xd4, 0xaf, 0x0a, 0x78, 0x36, 0xb2, 0x51, 0x32, + 0x28, 0x6c, 0xc2, 0x75, 0x79, 0x3f, 0x6e, 0x99, 0x66, 0x88, 0x3e, 0x34, 0xd3, 0x7f, 0x6d, 0x9d, 0x07, 0xe4, 0x6b, + 0xeb, 0x84, 0xe2, 0x0a, 0xbb, 0xca, 0x7d, 0x3a, 0x40, 0x71, 0xb0, 0xbe, 0x47, 0x9f, 0x12, 0x58, 0x31, 0x61, 0x2b, + 0x9b, 0x4a, 0x9a, 0x49, 0x8f, 0xe5, 0xb4, 0x0c, 0xf5, 0x04, 0x4d, 0x3c, 0xce, 0xbc, 0xd2, 0x79, 0x15, 0xd9, 0x28, + 0xf4, 0x23, 0x56, 0x77, 0x9f, 0x38, 0x64, 0x3e, 0x03, 0x88, 0x92, 0x04, 0x26, 0x76, 0xb9, 0xb5, 0xdf, 0x19, 0xd0, + 0x78, 0x4b, 0x7a, 0x60, 0x40, 0x23, 0x91, 0xf1, 0x15, 0x22, 0x2b, 0xb4, 0xe7, 0x02, 0x54, 0xa9, 0x16, 0x21, 0x5b, + 0x60, 0x96, 0xa9, 0x5c, ]; const CERT_2_LEN_BUFFER: [u8; 4] = [0xfd, 0x04, 0x00, 0x00]; const PADDING_BUFFER: [u8; 16] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, // padding + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // padding ]; const SCOPE_BUFFER_WITH_COUNT: [u8; 22] = [ 0x01, 0x00, 0x00, 0x00, // scope count - 0x0e, 0x00, 0x0e, 0x00, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, - 0x6d, 0x00, // scope list + 0x0e, 0x00, 0x0e, 0x00, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x00, // scope list ]; const MAGIC: [u8; 4] = [0x52, 0x53, 0x41, 0x31]; @@ -192,11 +168,10 @@ const DATALEN: [u8; 4] = [0x3f, 0x00, 0x00, 0x00]; const PUB_EXP: [u8; 4] = [0x01, 0x00, 0x01, 0x00]; const MODULUS: [u8; 72] = [ - 0xcb, 0x81, 0xfe, 0xba, 0x6d, 0x61, 0xc3, 0x55, 0x05, 0xd5, 0x5f, 0x2e, 0x87, 0xf8, 0x71, 0x94, - 0xd6, 0xf1, 0xa5, 0xcb, 0xf1, 0x5f, 0x0c, 0x3d, 0xf8, 0x70, 0x02, 0x96, 0xc4, 0xfb, 0x9b, 0xc8, - 0x3c, 0x2d, 0x55, 0xae, 0xe8, 0xff, 0x32, 0x75, 0xea, 0x68, 0x79, 0xe5, 0xa2, 0x01, 0xfd, 0x31, - 0xa0, 0xb1, 0x1f, 0x55, 0xa6, 0x1f, 0xc1, 0xf6, 0xd1, 0x83, 0x88, 0x63, 0x26, 0x56, 0x12, 0xbc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0x81, 0xfe, 0xba, 0x6d, 0x61, 0xc3, 0x55, 0x05, 0xd5, 0x5f, 0x2e, 0x87, 0xf8, 0x71, 0x94, 0xd6, 0xf1, 0xa5, + 0xcb, 0xf1, 0x5f, 0x0c, 0x3d, 0xf8, 0x70, 0x02, 0x96, 0xc4, 0xfb, 0x9b, 0xc8, 0x3c, 0x2d, 0x55, 0xae, 0xe8, 0xff, + 0x32, 0x75, 0xea, 0x68, 0x79, 0xe5, 0xa2, 0x01, 0xfd, 0x31, 0xa0, 0xb1, 0x1f, 0x55, 0xa6, 0x1f, 0xc1, 0xf6, 0xd1, + 0x83, 0x88, 0x63, 0x26, 0x56, 0x12, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const CERT_HEADER_WITH_PARTIAL_RSA: [u8; 32] = [ @@ -204,16 +179,15 @@ const CERT_HEADER_WITH_PARTIAL_RSA: [u8; 32] = [ 0x01, 0x00, 0x00, 0x00, // dwkeyal 0x06, 0x00, // blob type 0x5c, 0x00, // len - 0x52, 0x53, 0x41, 0x31, 0x48, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x00, // rsa without modulus + 0x52, 0x53, 0x41, 0x31, 0x48, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, + 0x00, // rsa without modulus ]; const SIGNATURE: [u8; 72] = [ - 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, - 0xe1, 0x8f, 0x5f, 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, - 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, - 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, 0xe1, 0x8f, 0x5f, + 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, + 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, + 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const SIGNATURE_BLOB_HEADER: [u8; 4] = [ @@ -226,8 +200,8 @@ const SERVER_CERTIFICATE_HEADER_BUFFER: [u8; 4] = [ ]; const SCOPE_BUFFER: [u8; 18] = [ - 0x0e, 0x00, 0x0e, 0x00, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, - 0x6d, 0x00, // scope array + 0x0e, 0x00, 0x0e, 0x00, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x00, // scope array ]; lazy_static! { @@ -257,10 +231,7 @@ lazy_static! { server_certificate: Some(ServerCertificate { issued_permanently: true, certificate: CertificateType::X509(X509CertificateChain { - certificate_array: vec![ - Vec::from(CERT_1_BUFFER.as_ref()), - Vec::from(CERT_2_BUFFER.as_ref()), - ], + certificate_array: vec![Vec::from(CERT_1_BUFFER.as_ref()), Vec::from(CERT_2_BUFFER.as_ref()),], }), }), scope_list: vec![Scope(String::from("microsoft.com"))], @@ -268,18 +239,12 @@ lazy_static! { pub static ref X509_CERTIFICATE: ServerCertificate = ServerCertificate { issued_permanently: true, certificate: CertificateType::X509(X509CertificateChain { - certificate_array: vec![ - Vec::from(CERT_1_BUFFER.as_ref()), - Vec::from(CERT_2_BUFFER.as_ref()), - ], + certificate_array: vec![Vec::from(CERT_1_BUFFER.as_ref()), Vec::from(CERT_2_BUFFER.as_ref()),], }), }; pub static ref SCOPE: Scope = Scope(String::from("microsoft.com")); static ref CERT_CHAIN: X509CertificateChain = X509CertificateChain { - certificate_array: vec![ - Vec::from(CERT_1_BUFFER.as_ref()), - Vec::from(CERT_2_BUFFER.as_ref()), - ], + certificate_array: vec![Vec::from(CERT_1_BUFFER.as_ref()), Vec::from(CERT_2_BUFFER.as_ref()),], }; } @@ -364,10 +329,7 @@ fn to_buffer_correctly_serializes_server_license_request() { server_certificate: Some(ServerCertificate { issued_permanently: true, certificate: CertificateType::X509(X509CertificateChain { - certificate_array: vec![ - Vec::from(CERT_1_BUFFER.as_ref()), - Vec::from(CERT_2_BUFFER.as_ref()), - ], + certificate_array: vec![Vec::from(CERT_1_BUFFER.as_ref()), Vec::from(CERT_2_BUFFER.as_ref())], }), }), scope_list: vec![Scope(String::from("microsoft.com"))], @@ -410,10 +372,7 @@ fn from_buffer_correctly_parses_rsa_public_key() { ] .concat(); - assert_eq!( - *PUBLIC_KEY, - RsaPublicKey::from_buffer(&mut buffer.as_slice()).unwrap() - ); + assert_eq!(*PUBLIC_KEY, RsaPublicKey::from_buffer(&mut buffer.as_slice()).unwrap()); } #[test] @@ -436,10 +395,7 @@ fn to_buffer_correctly_serializes_rsa_public_key() { #[test] fn buffer_length_is_correct_for_rsa_public_key() { - assert_eq!( - PUBLIC_KEY.buffer_length(), - RSA_KEY_SIZE_WITHOUT_MODULUS + MODULUS.len() - ); + assert_eq!(PUBLIC_KEY.buffer_length(), RSA_KEY_SIZE_WITHOUT_MODULUS + MODULUS.len()); } #[test] @@ -469,9 +425,7 @@ fn to_buffer_correctly_serializes_proprietary_certificate() { .concat(); let mut serialized_certificate = Vec::new(); - PROPRIETARY_CERTIFICATE - .to_buffer(&mut serialized_certificate) - .unwrap(); + PROPRIETARY_CERTIFICATE.to_buffer(&mut serialized_certificate).unwrap(); assert_eq!(serialized_certificate, certificate_buffer); } @@ -485,10 +439,7 @@ fn buffer_length_is_correct_for_proprietary_certificate() { assert_eq!( certificate.buffer_length(), - PUBLIC_KEY.buffer_length() - + SIGNATURE.len() - + PROP_CERT_NO_BLOBS_SIZE - + PROP_CERT_BLOBS_HEADERS_SIZE + PUBLIC_KEY.buffer_length() + SIGNATURE.len() + PROP_CERT_NO_BLOBS_SIZE + PROP_CERT_BLOBS_HEADERS_SIZE ); } @@ -529,23 +480,20 @@ fn buffer_length_is_correct_for_product_information() { #[test] fn get_public_key_correctly_gets_key_from_server_certificate() { let public_key: [u8; 270] = [ - 0x30, 0x82, 0x1, 0xa, 0x2, 0x82, 0x1, 0x1, 0x0, 0xc8, 0x90, 0x6b, 0xf0, 0xc6, 0x58, 0x81, - 0xa6, 0x89, 0x1c, 0xe, 0xf2, 0xf6, 0xd9, 0x82, 0x12, 0x71, 0xa5, 0x6e, 0x51, 0xdb, 0xe0, - 0x32, 0x66, 0xaa, 0x91, 0x77, 0xe, 0x88, 0xab, 0x44, 0xb7, 0xd3, 0x97, 0xda, 0x78, 0x8f, - 0xe, 0x44, 0x26, 0x46, 0x7f, 0x16, 0xd4, 0xc6, 0x63, 0xeb, 0xca, 0x55, 0xe5, 0x4e, 0x8b, - 0x2d, 0xa6, 0x6d, 0x83, 0x95, 0xa7, 0xa8, 0x6a, 0xfa, 0xd0, 0xbe, 0x26, 0x80, 0xae, 0xab, - 0xa, 0x64, 0x90, 0x32, 0x8c, 0xdf, 0x5c, 0xf8, 0xf9, 0xd0, 0x7e, 0xd1, 0x6b, 0x3a, 0x29, - 0x7e, 0x7d, 0xbd, 0x2, 0xa3, 0x86, 0x6c, 0xfd, 0xa5, 0x35, 0x71, 0xda, 0x21, 0xb4, 0xee, - 0xa4, 0x97, 0xf3, 0xa8, 0xb2, 0x12, 0xdb, 0xa4, 0x27, 0x57, 0x36, 0xc9, 0x8, 0x22, 0x5c, - 0x54, 0xf7, 0x99, 0x7b, 0xa3, 0x2f, 0xb8, 0x5c, 0xd5, 0x16, 0xb8, 0x19, 0x27, 0x6b, 0x71, - 0x97, 0x14, 0x5b, 0xe8, 0x1f, 0x23, 0xe8, 0x5c, 0xb8, 0x1b, 0x73, 0x4b, 0x6e, 0x7a, 0x3, - 0x13, 0xff, 0x97, 0xe9, 0x62, 0xb9, 0x4a, 0xa0, 0x51, 0x23, 0xc3, 0x6c, 0x32, 0x3e, 0x2, - 0xf2, 0x63, 0x97, 0x23, 0x1c, 0xc5, 0x78, 0xd8, 0xfc, 0xb7, 0x7, 0x4b, 0xb0, 0x56, 0xf, - 0x74, 0xdf, 0xc5, 0x56, 0x28, 0xe4, 0x96, 0xfd, 0x20, 0x8e, 0x65, 0x5a, 0xe6, 0x45, 0xed, - 0xc1, 0x5, 0x3e, 0xab, 0x58, 0x55, 0x40, 0xaf, 0xe2, 0x47, 0xa0, 0x4c, 0x49, 0xa3, 0x8d, - 0x39, 0xe3, 0x66, 0x5f, 0x93, 0x33, 0x6d, 0xf8, 0x5f, 0xc5, 0x54, 0xe5, 0xfb, 0x57, 0x3a, - 0xde, 0x45, 0x12, 0xb5, 0xc7, 0x5, 0x4b, 0x88, 0x1f, 0xb4, 0x35, 0xf, 0x7c, 0xc0, 0x75, - 0x17, 0xc6, 0x67, 0xdd, 0x48, 0x80, 0xcb, 0xa, 0xbe, 0x9d, 0xf6, 0x93, 0x60, 0x65, 0x34, + 0x30, 0x82, 0x1, 0xa, 0x2, 0x82, 0x1, 0x1, 0x0, 0xc8, 0x90, 0x6b, 0xf0, 0xc6, 0x58, 0x81, 0xa6, 0x89, 0x1c, + 0xe, 0xf2, 0xf6, 0xd9, 0x82, 0x12, 0x71, 0xa5, 0x6e, 0x51, 0xdb, 0xe0, 0x32, 0x66, 0xaa, 0x91, 0x77, 0xe, 0x88, + 0xab, 0x44, 0xb7, 0xd3, 0x97, 0xda, 0x78, 0x8f, 0xe, 0x44, 0x26, 0x46, 0x7f, 0x16, 0xd4, 0xc6, 0x63, 0xeb, + 0xca, 0x55, 0xe5, 0x4e, 0x8b, 0x2d, 0xa6, 0x6d, 0x83, 0x95, 0xa7, 0xa8, 0x6a, 0xfa, 0xd0, 0xbe, 0x26, 0x80, + 0xae, 0xab, 0xa, 0x64, 0x90, 0x32, 0x8c, 0xdf, 0x5c, 0xf8, 0xf9, 0xd0, 0x7e, 0xd1, 0x6b, 0x3a, 0x29, 0x7e, + 0x7d, 0xbd, 0x2, 0xa3, 0x86, 0x6c, 0xfd, 0xa5, 0x35, 0x71, 0xda, 0x21, 0xb4, 0xee, 0xa4, 0x97, 0xf3, 0xa8, + 0xb2, 0x12, 0xdb, 0xa4, 0x27, 0x57, 0x36, 0xc9, 0x8, 0x22, 0x5c, 0x54, 0xf7, 0x99, 0x7b, 0xa3, 0x2f, 0xb8, + 0x5c, 0xd5, 0x16, 0xb8, 0x19, 0x27, 0x6b, 0x71, 0x97, 0x14, 0x5b, 0xe8, 0x1f, 0x23, 0xe8, 0x5c, 0xb8, 0x1b, + 0x73, 0x4b, 0x6e, 0x7a, 0x3, 0x13, 0xff, 0x97, 0xe9, 0x62, 0xb9, 0x4a, 0xa0, 0x51, 0x23, 0xc3, 0x6c, 0x32, + 0x3e, 0x2, 0xf2, 0x63, 0x97, 0x23, 0x1c, 0xc5, 0x78, 0xd8, 0xfc, 0xb7, 0x7, 0x4b, 0xb0, 0x56, 0xf, 0x74, 0xdf, + 0xc5, 0x56, 0x28, 0xe4, 0x96, 0xfd, 0x20, 0x8e, 0x65, 0x5a, 0xe6, 0x45, 0xed, 0xc1, 0x5, 0x3e, 0xab, 0x58, + 0x55, 0x40, 0xaf, 0xe2, 0x47, 0xa0, 0x4c, 0x49, 0xa3, 0x8d, 0x39, 0xe3, 0x66, 0x5f, 0x93, 0x33, 0x6d, 0xf8, + 0x5f, 0xc5, 0x54, 0xe5, 0xfb, 0x57, 0x3a, 0xde, 0x45, 0x12, 0xb5, 0xc7, 0x5, 0x4b, 0x88, 0x1f, 0xb4, 0x35, 0xf, + 0x7c, 0xc0, 0x75, 0x17, 0xc6, 0x67, 0xdd, 0x48, 0x80, 0xcb, 0xa, 0xbe, 0x9d, 0xf6, 0x93, 0x60, 0x65, 0x34, 0xeb, 0x97, 0xaf, 0x65, 0x6d, 0xdf, 0xbf, 0x6f, 0x5b, 0x2, 0x3, 0x1, 0x0, 0x1, ]; @@ -586,9 +534,7 @@ fn to_buffer_correctly_serializes_server_certificate() { .concat(); let mut serialized_certificate = Vec::new(); - X509_CERTIFICATE - .to_buffer(&mut serialized_certificate) - .unwrap(); + X509_CERTIFICATE.to_buffer(&mut serialized_certificate).unwrap(); assert_eq!(serialized_certificate, certificate_buffer); } @@ -610,10 +556,7 @@ fn buffer_length_is_correct_for_server_certificate() { #[test] fn from_buffer_correctly_parses_scope() { - assert_eq!( - *SCOPE, - Scope::from_buffer(&mut SCOPE_BUFFER.as_ref()).unwrap() - ); + assert_eq!(*SCOPE, Scope::from_buffer(&mut SCOPE_BUFFER.as_ref()).unwrap()); } #[test] diff --git a/ironrdp/src/rdp/server_license/server_platform_challenge.rs b/ironrdp/src/rdp/server_license/server_platform_challenge.rs index b2f4bd2e..7872907b 100644 --- a/ironrdp/src/rdp/server_license/server_platform_challenge.rs +++ b/ironrdp/src/rdp/server_license/server_platform_challenge.rs @@ -6,8 +6,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{ - read_license_header, BlobHeader, BlobType, LicenseHeader, PreambleType, ServerLicenseError, - BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, + read_license_header, BlobHeader, BlobType, LicenseHeader, PreambleType, ServerLicenseError, BLOB_LENGTH_SIZE, + BLOB_TYPE_SIZE, MAC_SIZE, }; use crate::PduParsing; @@ -48,8 +48,7 @@ impl PduParsing for ServerPlatformChallenge { stream.write_u32::(0)?; // connect_flags, ignored - BlobHeader::new(BlobType::Any, self.encrypted_platform_challenge.len()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::Any, self.encrypted_platform_challenge.len()).write_to_buffer(&mut stream)?; stream.write_all(&self.encrypted_platform_challenge)?; stream.write_all(&self.mac_data)?; diff --git a/ironrdp/src/rdp/server_license/server_platform_challenge/test.rs b/ironrdp/src/rdp/server_license/server_platform_challenge/test.rs index a8473128..7b3628c9 100644 --- a/ironrdp/src/rdp/server_license/server_platform_challenge/test.rs +++ b/ironrdp/src/rdp/server_license/server_platform_challenge/test.rs @@ -1,11 +1,10 @@ +use lazy_static::lazy_static; + use super::*; use crate::rdp::server_license::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, PreambleFlags, PreambleVersion, - BASIC_SECURITY_HEADER_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, PreambleFlags, PreambleVersion, BASIC_SECURITY_HEADER_SIZE, }; -use lazy_static::lazy_static; - const PLATFORM_CHALLENGE_BUFFER: [u8; 42] = [ 0x80, 0x00, // flags 0x00, 0x00, // flagsHi @@ -14,8 +13,7 @@ const PLATFORM_CHALLENGE_BUFFER: [u8; 42] = [ 0x00, 0x00, // ignored 0x0a, 0x00, // blob len 0x46, 0x37, 0x85, 0x54, 0x8e, 0xc5, 0x91, 0x34, 0x97, 0x5d, // challenge - 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, - 0x0a, // mac data + 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, 0x0a, // mac data ]; const CHALLENGE_BUFFER: [u8; 10] = [ @@ -23,8 +21,7 @@ const CHALLENGE_BUFFER: [u8; 10] = [ ]; const MAC_DATA_BUFFER: [u8; MAC_SIZE] = [ - 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, - 0x0a, // mac data + 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, 0x0a, // mac data ]; lazy_static! { @@ -36,8 +33,7 @@ lazy_static! { preamble_message_type: PreambleType::PlatformChallenge, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (PLATFORM_CHALLENGE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) - as u16, + preamble_message_size: (PLATFORM_CHALLENGE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) as u16, }, encrypted_platform_challenge: Vec::from(CHALLENGE_BUFFER.as_ref()), mac_data: Vec::from(MAC_DATA_BUFFER.as_ref()), @@ -67,8 +63,5 @@ fn to_buffer_correctly_serializes_server_platform_challenge() { #[test] fn buffer_length_is_correct_for_server_platform_challenge() { - assert_eq!( - PLATFORM_CHALLENGE_BUFFER.len(), - PLATFORM_CHALLENGE.buffer_length() - ); + assert_eq!(PLATFORM_CHALLENGE_BUFFER.len(), PLATFORM_CHALLENGE.buffer_length()); } diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license.rs b/ironrdp/src/rdp/server_license/server_upgrade_license.rs index 659a3470..bbe314fa 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license.rs +++ b/ironrdp/src/rdp/server_license/server_upgrade_license.rs @@ -6,15 +6,12 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{ - read_license_header, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, PreambleType, - ServerLicenseError, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, UTF16_NULL_TERMINATOR_SIZE, - UTF8_NULL_TERMINATOR_SIZE, -}; -use crate::{ - utils, - utils::{rc4::Rc4, CharacterSet}, - PduParsing, + read_license_header, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, PreambleType, ServerLicenseError, + BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, UTF16_NULL_TERMINATOR_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; +use crate::utils::rc4::Rc4; +use crate::utils::CharacterSet; +use crate::{utils, PduParsing}; const NEW_LICENSE_INFO_STATIC_FIELDS_SIZE: usize = 20; @@ -26,16 +23,11 @@ pub struct ServerUpgradeLicense { } impl ServerUpgradeLicense { - pub fn verify_server_license( - &self, - encryption_data: &LicenseEncryptionData, - ) -> Result<(), ServerLicenseError> { + pub fn verify_server_license(&self, encryption_data: &LicenseEncryptionData) -> Result<(), ServerLicenseError> { let mut rc4 = Rc4::new(encryption_data.license_key.as_slice()); let decrypted_license_info = rc4.process(self.encrypted_license_info.as_slice()); - let mac_data = super::compute_mac_data( - encryption_data.mac_salt_key.as_slice(), - decrypted_license_info.as_ref(), - ); + let mac_data = + super::compute_mac_data(encryption_data.mac_salt_key.as_slice(), decrypted_license_info.as_ref()); if mac_data != self.mac_data { return Err(ServerLicenseError::InvalidMacData); @@ -62,8 +54,7 @@ impl PduParsing for ServerUpgradeLicense { ))); } - let encrypted_license_info_blob = - BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; + let encrypted_license_info_blob = BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; let mut encrypted_license_info = vec![0u8; encrypted_license_info_blob.length as usize]; stream.read_exact(&mut encrypted_license_info)?; @@ -81,8 +72,7 @@ impl PduParsing for ServerUpgradeLicense { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { self.license_header.to_buffer(&mut stream)?; - BlobHeader::new(BlobType::EncryptedData, self.encrypted_license_info.len()) - .write_to_buffer(&mut stream)?; + BlobHeader::new(BlobType::EncryptedData, self.encrypted_license_info.len()).write_to_buffer(&mut stream)?; stream.write_all(&self.encrypted_license_info)?; stream.write_all(&self.mac_data)?; @@ -157,23 +147,11 @@ impl PduParsing for NewLicenseInformation { stream.write_u32::((self.scope.len() + UTF8_NULL_TERMINATOR_SIZE) as u32)?; utils::write_string_with_null_terminator(&mut stream, &self.scope, CharacterSet::Ansi)?; - stream.write_u32::( - (self.company_name.len() * 2 + UTF16_NULL_TERMINATOR_SIZE) as u32, - )?; - utils::write_string_with_null_terminator( - &mut stream, - &self.company_name, - CharacterSet::Unicode, - )?; + stream.write_u32::((self.company_name.len() * 2 + UTF16_NULL_TERMINATOR_SIZE) as u32)?; + utils::write_string_with_null_terminator(&mut stream, &self.company_name, CharacterSet::Unicode)?; - stream.write_u32::( - (self.product_id.len() * 2 + UTF16_NULL_TERMINATOR_SIZE) as u32, - )?; - utils::write_string_with_null_terminator( - &mut stream, - &self.product_id, - CharacterSet::Unicode, - )?; + stream.write_u32::((self.product_id.len() * 2 + UTF16_NULL_TERMINATOR_SIZE) as u32)?; + utils::write_string_with_null_terminator(&mut stream, &self.product_id, CharacterSet::Unicode)?; stream.write_u32::(self.license_info.len() as u32)?; stream.write_all(self.license_info.as_slice())?; diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs b/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs index eb22e38c..0a6aa56d 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs +++ b/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs @@ -1,147 +1,126 @@ +use lazy_static::lazy_static; + use super::*; use crate::rdp::server_license::{ - BasicSecurityHeader, BasicSecurityHeaderFlags, PreambleFlags, PreambleVersion, - BASIC_SECURITY_HEADER_SIZE, PREAMBLE_SIZE, + BasicSecurityHeader, BasicSecurityHeaderFlags, PreambleFlags, PreambleVersion, BASIC_SECURITY_HEADER_SIZE, + PREAMBLE_SIZE, }; -use lazy_static::lazy_static; - const SERVER_UPGRADE_LICENSE_BUFFER: [u8; 2059] = [ 0x80, 0x00, // flags 0x00, 0x00, // flagsHi 0x03, 0x03, 0x07, 0x08, // preamble 0x09, 0x00, // blob type 0xef, 0x07, // blob len - 0xdb, 0xa3, 0x13, 0x30, 0x79, 0xa3, 0xcd, 0x9e, 0x48, 0xf4, 0x8f, 0x06, 0x37, 0x1b, 0x45, 0xdd, - 0x60, 0xa9, 0x2e, 0x29, 0x26, 0xbf, 0xc1, 0x96, 0x5e, 0x07, 0x93, 0x9d, 0xf2, 0x2d, 0x3e, 0xa3, - 0x3a, 0xff, 0xd5, 0x6d, 0xf5, 0x85, 0x30, 0x28, 0xe1, 0x46, 0xfd, 0x56, 0xd1, 0x20, 0x41, 0x33, - 0x94, 0x88, 0x0c, 0x27, 0x23, 0xa0, 0x61, 0x38, 0x60, 0xdb, 0x86, 0xd6, 0xce, 0x2c, 0xcd, 0x40, - 0x39, 0x55, 0x23, 0x39, 0x12, 0xb9, 0xfd, 0xc2, 0x8d, 0x58, 0x0a, 0x37, 0x33, 0x42, 0x5c, 0x61, - 0xd7, 0xc8, 0xa0, 0x11, 0x66, 0xe2, 0x45, 0xba, 0x41, 0x39, 0xea, 0x85, 0x2a, 0x6e, 0x7a, 0xb3, - 0xe7, 0x27, 0x75, 0xfc, 0x4d, 0xc0, 0xfb, 0x0d, 0xe8, 0x67, 0x90, 0xb3, 0x3a, 0x40, 0xf0, 0x15, - 0x8a, 0x15, 0x8e, 0x2c, 0x99, 0x0f, 0x1c, 0xbd, 0xd2, 0x08, 0x66, 0x51, 0x9e, 0x6a, 0xe6, 0x2c, - 0xf7, 0x1f, 0xd0, 0xc0, 0x8e, 0x89, 0x76, 0x64, 0x18, 0x58, 0xa1, 0x94, 0xbd, 0xce, 0xb1, 0x2d, - 0x96, 0xab, 0x53, 0xcf, 0xf8, 0xbf, 0xd0, 0xc9, 0xc0, 0x2e, 0xe6, 0xa4, 0x0b, 0x50, 0x31, 0x4a, - 0x4e, 0xd8, 0x47, 0x4b, 0xaf, 0xb8, 0x21, 0x78, 0xbf, 0x09, 0xac, 0x7f, 0x2d, 0x2d, 0x88, 0xf6, - 0xd8, 0xc7, 0x45, 0x33, 0x9f, 0xac, 0x69, 0xf5, 0x88, 0x9d, 0x5c, 0x6e, 0xc9, 0xd0, 0xca, 0x8c, - 0xbc, 0xa9, 0xd6, 0x07, 0x36, 0xed, 0x40, 0x95, 0x8a, 0xc1, 0x3f, 0x04, 0x41, 0xb3, 0xc9, 0xb3, - 0x18, 0x9d, 0x33, 0x1b, 0x04, 0x55, 0xcd, 0x41, 0xdf, 0x19, 0xe1, 0xcd, 0xa0, 0xa4, 0x35, 0x6e, - 0xb7, 0x0a, 0xf3, 0xec, 0x48, 0x10, 0x4f, 0x28, 0xc6, 0x35, 0xf3, 0x9b, 0xa2, 0xd5, 0xf7, 0x58, - 0x03, 0x4d, 0x9a, 0x16, 0x34, 0xfb, 0x96, 0x0c, 0xd5, 0x3a, 0xae, 0x52, 0x1b, 0x2f, 0x1f, 0x1f, - 0x31, 0xb2, 0xd9, 0x14, 0x3b, 0x73, 0x0f, 0xe3, 0x04, 0xe0, 0xa5, 0x52, 0x89, 0x68, 0xba, 0x0f, - 0x99, 0x9d, 0x24, 0xa6, 0xf3, 0xe8, 0x9f, 0xcc, 0xd2, 0x44, 0x9f, 0x08, 0x8b, 0x0a, 0x24, 0x89, - 0xf7, 0xc9, 0x07, 0x0d, 0x25, 0x07, 0xed, 0x3e, 0x75, 0x21, 0x19, 0x65, 0xdc, 0x98, 0x41, 0x9d, - 0x05, 0x12, 0x18, 0x88, 0x86, 0x16, 0x43, 0x49, 0x29, 0xf2, 0xe8, 0x26, 0x16, 0x1e, 0xce, 0xcd, - 0x32, 0xe7, 0x36, 0x74, 0x51, 0x27, 0xfd, 0xa2, 0xa9, 0x62, 0x57, 0x60, 0x28, 0xe4, 0x64, 0x02, - 0x06, 0x6b, 0xff, 0x01, 0xab, 0xc5, 0x1c, 0x25, 0x98, 0x07, 0xe1, 0x40, 0xad, 0x19, 0xb7, 0x68, - 0x66, 0x12, 0x4e, 0x80, 0xbc, 0x83, 0xd2, 0xde, 0xcb, 0x7e, 0xc2, 0x32, 0xc7, 0xb8, 0x4d, 0xd6, - 0x7d, 0xdd, 0x63, 0xa9, 0x95, 0x45, 0xc1, 0x90, 0xc7, 0x99, 0x3c, 0x0a, 0x24, 0x62, 0xfc, 0x24, - 0x15, 0xdb, 0xd3, 0xd2, 0x9b, 0x5d, 0x78, 0x04, 0x78, 0xd5, 0x40, 0x1d, 0xe3, 0x4e, 0xe8, 0x30, - 0x9f, 0x56, 0x91, 0x71, 0x00, 0x86, 0x2c, 0x6a, 0xb2, 0x78, 0xec, 0x70, 0xd9, 0x71, 0xe6, 0xaa, - 0xb1, 0xad, 0x18, 0xf9, 0xa6, 0x84, 0xb7, 0x4b, 0x5f, 0x32, 0xb8, 0xe3, 0xc7, 0x84, 0xef, 0x37, - 0xfe, 0xae, 0x99, 0xb5, 0xf2, 0x34, 0x84, 0x82, 0x4a, 0xb3, 0xd0, 0x7c, 0x5e, 0x25, 0x71, 0x89, - 0x8b, 0x7d, 0x6f, 0x5f, 0x96, 0x7a, 0x1d, 0x84, 0x96, 0x56, 0x34, 0x30, 0xce, 0x09, 0xd5, 0x00, - 0xa8, 0xac, 0x15, 0x72, 0x21, 0xc4, 0x71, 0x57, 0xe5, 0x2a, 0x3d, 0xdf, 0x82, 0xb8, 0xb8, 0x63, - 0xdc, 0x3f, 0x2e, 0x99, 0x6c, 0xc3, 0xe3, 0xfd, 0x92, 0xe0, 0x26, 0xe1, 0x27, 0xb8, 0x04, 0x71, - 0xb0, 0xa8, 0xd1, 0xdf, 0x7e, 0x24, 0x23, 0xb9, 0x82, 0x01, 0x77, 0xdc, 0x8f, 0x77, 0x54, 0xe6, - 0x93, 0xc8, 0x6c, 0x66, 0x87, 0xb7, 0xaa, 0x9d, 0x66, 0xd4, 0xc6, 0x2f, 0x5e, 0x9e, 0xe1, 0xcf, - 0xdb, 0xb2, 0x74, 0x0e, 0xea, 0xa5, 0xe0, 0xf7, 0x00, 0xf1, 0x76, 0xf7, 0x45, 0x2c, 0xf8, 0xa9, - 0x3b, 0xd9, 0x81, 0x59, 0x52, 0x0f, 0xfe, 0xd9, 0x28, 0x02, 0x59, 0x82, 0x39, 0x51, 0x6e, 0xb9, - 0xac, 0xf9, 0x6a, 0x48, 0x73, 0x6f, 0x2c, 0x4d, 0x7b, 0xc0, 0xbf, 0xbe, 0x69, 0xae, 0x0e, 0xdc, - 0x8b, 0xe6, 0xd8, 0x9f, 0x66, 0x30, 0x1e, 0x45, 0x1d, 0x85, 0x23, 0xeb, 0xa8, 0x02, 0xb5, 0xba, - 0xc2, 0xfd, 0xa1, 0xff, 0xc5, 0x55, 0x2b, 0xa0, 0xf7, 0x5b, 0x24, 0xee, 0x81, 0xd8, 0xe1, 0xb8, - 0x02, 0x06, 0x85, 0x6e, 0x41, 0x5a, 0xb8, 0x07, 0xff, 0x65, 0xdb, 0xb4, 0x59, 0x89, 0x71, 0x95, - 0xd5, 0x0c, 0x2a, 0x67, 0x4d, 0x57, 0xfd, 0x4a, 0xe8, 0x07, 0x02, 0x42, 0x20, 0xd9, 0xf1, 0xc6, - 0xd5, 0x4c, 0x53, 0xb0, 0x32, 0x68, 0xc0, 0xdc, 0xd7, 0x5d, 0x8f, 0xec, 0x24, 0x29, 0x00, 0x4f, - 0x46, 0x8d, 0xd2, 0x99, 0xb2, 0xf4, 0x06, 0x99, 0x9a, 0xa6, 0x31, 0xf1, 0x49, 0x16, 0xfe, 0x94, - 0xbb, 0x8e, 0x15, 0x55, 0x06, 0x93, 0x16, 0xa3, 0x2d, 0x10, 0xb7, 0xb1, 0xcf, 0x61, 0x78, 0xaf, - 0x93, 0x66, 0x5a, 0x75, 0x5e, 0x97, 0xc0, 0x97, 0x4c, 0xba, 0xa9, 0x50, 0xac, 0x1b, 0xd6, 0x92, - 0x2a, 0xac, 0x0a, 0x21, 0x12, 0x9e, 0x4a, 0xf0, 0x40, 0x39, 0x4b, 0xe5, 0x78, 0x88, 0x86, 0x17, - 0xb9, 0xeb, 0xa0, 0x33, 0x8a, 0x9a, 0xfc, 0x7c, 0x91, 0x16, 0xd7, 0x52, 0xec, 0x05, 0x7e, 0x4e, - 0x90, 0x78, 0x5e, 0x45, 0x4a, 0xdd, 0xf6, 0xf4, 0x2e, 0x68, 0xf7, 0x8e, 0xfc, 0x60, 0x95, 0xaa, - 0x6a, 0x07, 0x9c, 0xea, 0xce, 0xc1, 0xd9, 0x55, 0x3a, 0x78, 0x54, 0x9a, 0x2a, 0x5f, 0x47, 0x87, - 0x18, 0x4a, 0x8c, 0x6c, 0x34, 0xf5, 0xb8, 0xe2, 0x84, 0x36, 0xef, 0x0d, 0x2e, 0x9d, 0x42, 0xd9, - 0xff, 0x56, 0xe2, 0x87, 0x0b, 0x2f, 0x4d, 0x0e, 0xc0, 0x60, 0x35, 0x06, 0x9f, 0x61, 0x9e, 0x4e, - 0x7b, 0x49, 0x41, 0xb4, 0xfa, 0x04, 0x10, 0xbd, 0xf6, 0xad, 0x02, 0xd9, 0x7c, 0xba, 0x06, 0x68, - 0xbb, 0xa7, 0xa6, 0x8a, 0xab, 0xab, 0xb1, 0x2d, 0x69, 0x2a, 0xf1, 0xc6, 0x7b, 0x1b, 0x71, 0xb9, - 0xd0, 0x91, 0x82, 0x6f, 0xa8, 0x3c, 0xe1, 0xa3, 0x23, 0x3d, 0x4e, 0x48, 0x74, 0xe5, 0xc9, 0xc5, - 0x95, 0x31, 0xad, 0xe7, 0xa9, 0xdb, 0x35, 0xcd, 0x02, 0x08, 0x2c, 0x29, 0x5f, 0xf9, 0x17, 0x86, - 0x69, 0x8f, 0x13, 0xd1, 0xca, 0x83, 0xfc, 0xac, 0x55, 0xcf, 0x5a, 0xe6, 0x45, 0xaf, 0xe5, 0xbb, - 0xe7, 0xb5, 0x53, 0x4e, 0xf0, 0x63, 0xfc, 0x9a, 0x49, 0xf6, 0x45, 0x93, 0xc6, 0xbf, 0xd5, 0xb3, - 0x25, 0xe2, 0x93, 0xb0, 0xa6, 0xa7, 0x14, 0x80, 0x6d, 0xb2, 0x03, 0x15, 0x6a, 0xad, 0xe8, 0x25, - 0xf1, 0x80, 0xd4, 0xba, 0x9a, 0x88, 0xbc, 0x56, 0x14, 0x7a, 0x4d, 0xad, 0xc3, 0x24, 0x3f, 0x4d, - 0x35, 0x8b, 0xf6, 0x59, 0x5b, 0xfd, 0xc9, 0x32, 0x1d, 0xf5, 0xa5, 0x53, 0xb5, 0xfb, 0xba, 0x83, - 0x29, 0x0b, 0x9c, 0x62, 0x9b, 0x56, 0x4b, 0x44, 0xbc, 0xcc, 0x19, 0x59, 0x7c, 0x0b, 0x74, 0xd9, - 0x04, 0x28, 0xb3, 0x67, 0xab, 0x82, 0x36, 0x39, 0x55, 0x5f, 0x7c, 0xed, 0x84, 0xc1, 0x16, 0xd3, - 0x9e, 0x9c, 0x90, 0x9d, 0x55, 0xbc, 0x3e, 0xb9, 0x63, 0x12, 0xf2, 0x26, 0x6d, 0xd7, 0xcc, 0x4f, - 0x01, 0xa2, 0x0b, 0xd9, 0x66, 0x60, 0xad, 0xed, 0x2e, 0xbd, 0xbe, 0x28, 0x5f, 0x4a, 0x33, 0xc8, - 0xe8, 0xd4, 0xa6, 0x23, 0x8a, 0xfd, 0x66, 0xf5, 0x28, 0x90, 0x81, 0x27, 0xa9, 0x44, 0x93, 0x68, - 0x57, 0x44, 0x5e, 0xba, 0x90, 0x12, 0x03, 0x15, 0x2f, 0x69, 0x80, 0x55, 0xe8, 0x32, 0x63, 0x88, - 0x30, 0x85, 0x50, 0x9b, 0xb6, 0xbc, 0xbb, 0xc6, 0xfe, 0xa2, 0xe7, 0x32, 0x9d, 0x3d, 0x7d, 0xe2, - 0x31, 0x93, 0xa6, 0x4e, 0xa0, 0xdc, 0x11, 0x44, 0xd2, 0x93, 0x32, 0x94, 0x1e, 0xc6, 0x4c, 0x28, - 0xde, 0xa2, 0xa6, 0x0d, 0x14, 0x02, 0x74, 0x8a, 0x84, 0x2a, 0x03, 0x67, 0x35, 0x1d, 0x66, 0x3e, - 0xe9, 0x68, 0x4a, 0xb2, 0x92, 0x1a, 0x69, 0x48, 0xbd, 0x23, 0xfd, 0x70, 0x5a, 0xfd, 0xfe, 0x74, - 0x39, 0xc5, 0xfa, 0x11, 0xac, 0x04, 0xc9, 0x94, 0xfc, 0x12, 0x2e, 0x06, 0x04, 0x61, 0x8e, 0x32, - 0xf4, 0xf8, 0x3b, 0xd1, 0xd8, 0x09, 0xb3, 0xe4, 0xac, 0x0f, 0x3e, 0x92, 0xf7, 0x75, 0x0b, 0x32, - 0x9b, 0xd4, 0x8a, 0x13, 0x99, 0x6a, 0x26, 0x77, 0x9f, 0x34, 0x08, 0xa8, 0xeb, 0xb3, 0x3e, 0x2a, - 0x5b, 0x4a, 0x44, 0xf9, 0x21, 0x89, 0x2a, 0x09, 0x9c, 0xc7, 0x0d, 0x2a, 0xd8, 0xd6, 0x27, 0x30, - 0x25, 0x39, 0x84, 0x14, 0x11, 0x47, 0xff, 0x60, 0xe4, 0x7c, 0xc3, 0x41, 0xfd, 0xd5, 0x34, 0xdd, - 0xb1, 0x1c, 0xf2, 0xeb, 0xb1, 0x67, 0x04, 0xfa, 0xfd, 0x65, 0x5b, 0x20, 0x6e, 0x28, 0x75, 0xa9, - 0x74, 0x8e, 0xc4, 0x2f, 0xf7, 0xb2, 0xf5, 0x9f, 0x13, 0x44, 0xff, 0xb0, 0xf0, 0x68, 0xb0, 0x69, - 0x15, 0xa6, 0x16, 0xa8, 0xac, 0xc3, 0x06, 0x14, 0x8e, 0x51, 0x99, 0xa9, 0x4c, 0x19, 0xd1, 0x25, - 0x34, 0xb5, 0x79, 0xc2, 0xa7, 0xbf, 0xd8, 0x3d, 0x2d, 0x4c, 0x33, 0xac, 0x1b, 0x6c, 0xaf, 0x10, - 0x42, 0x41, 0x14, 0x02, 0xe6, 0x87, 0x2b, 0xe9, 0xec, 0xc6, 0xb1, 0xeb, 0x97, 0xd4, 0x35, 0x49, - 0x97, 0xfc, 0xe2, 0x73, 0xf9, 0x98, 0x46, 0x7c, 0xf6, 0x17, 0x2d, 0xb5, 0x43, 0x07, 0x8b, 0x19, - 0x95, 0x9b, 0x65, 0xd3, 0x05, 0x7e, 0xb0, 0x68, 0x0d, 0x6e, 0x4b, 0x60, 0xad, 0x5c, 0x47, 0x6e, - 0x37, 0xfd, 0x3f, 0x60, 0x43, 0xda, 0xb2, 0x34, 0x00, 0xd6, 0x9c, 0x6d, 0x46, 0x7f, 0x41, 0xe2, - 0xc1, 0x1a, 0xd0, 0x53, 0x72, 0x81, 0x0b, 0x3f, 0x77, 0xe1, 0xbc, 0xcc, 0x09, 0x0f, 0xa1, 0x1d, - 0x73, 0x8c, 0xac, 0xa4, 0x48, 0x90, 0x80, 0xa8, 0x50, 0x63, 0x6a, 0xb7, 0x76, 0x91, 0x91, 0x2f, - 0x1a, 0x5e, 0x83, 0x80, 0xe6, 0xae, 0x66, 0x77, 0x44, 0xe0, 0x0f, 0x14, 0x70, 0xc9, 0xd3, 0x91, - 0xe8, 0xd2, 0xc4, 0x89, 0xa8, 0x45, 0xc0, 0x3d, 0xbd, 0x09, 0x58, 0xe0, 0xcd, 0xe6, 0x5c, 0x9e, - 0x02, 0x94, 0xd2, 0xbe, 0xdf, 0x94, 0x35, 0xf7, 0x67, 0x96, 0x75, 0x88, 0x08, 0x59, 0xd9, 0x19, - 0x21, 0xda, 0xd0, 0xa2, 0x74, 0x2d, 0x22, 0x87, 0x37, 0x27, 0x6e, 0x58, 0xdc, 0x8e, 0x9f, 0x50, - 0xd5, 0x62, 0xf3, 0x4a, 0xa4, 0xb2, 0xfb, 0xf9, 0x3e, 0xd5, 0xda, 0x57, 0x56, 0x5c, 0xcb, 0x0e, - 0xd1, 0x62, 0x4f, 0xea, 0x42, 0x4a, 0x62, 0xb2, 0x4e, 0x1c, 0xd1, 0xcc, 0x24, 0x1b, 0xdc, 0xac, - 0xd4, 0xb0, 0x2f, 0x5d, 0x62, 0x87, 0x56, 0x3d, 0xe4, 0x03, 0xae, 0x4a, 0x7e, 0x7d, 0x05, 0xfe, - 0x85, 0x33, 0xda, 0x5f, 0x36, 0xcb, 0x56, 0xa1, 0x14, 0x80, 0x63, 0x26, 0x75, 0x3a, 0xc2, 0x1f, - 0x9c, 0xdd, 0x8a, 0xd6, 0xf8, 0xa9, 0x1a, 0xf6, 0xc2, 0x57, 0xe0, 0x7b, 0x80, 0x55, 0xd5, 0x12, - 0xf1, 0xb4, 0xe7, 0x1d, 0x95, 0x68, 0x02, 0xf1, 0x19, 0xff, 0x74, 0x72, 0x32, 0xdb, 0x6c, 0xc9, - 0xa0, 0x2d, 0x69, 0xfc, 0xc0, 0xe8, 0x27, 0x11, 0xb8, 0xe0, 0xf5, 0x83, 0x60, 0x3f, 0xb4, 0x94, - 0xe5, 0x9d, 0xb8, 0xfd, 0xc5, 0x9e, 0x50, 0x76, 0x92, 0xc7, 0x33, 0x6b, 0xe0, 0x7e, 0x9b, 0x2c, - 0x3b, 0x27, 0xd8, 0xa6, 0xda, 0xb3, 0xa1, 0x45, 0xef, 0x3b, 0x3d, 0x76, 0x1d, 0x5a, 0x43, 0xa4, - 0xe1, 0x82, 0x5f, 0x7d, 0x0b, 0x10, 0x28, 0x1c, 0xb9, 0x8f, 0x2b, 0xcd, 0xf9, 0xc5, 0x93, 0xe3, - 0x65, 0xa5, 0x5b, 0x50, 0xa9, 0x07, 0x16, 0xb3, 0x45, 0x4a, 0x69, 0xfc, 0x58, 0x12, 0x7b, 0x58, - 0x34, 0x9f, 0x6f, 0x5e, 0x7a, 0xc2, 0x9f, 0x7b, 0xcf, 0x62, 0x62, 0x6c, 0x1e, 0x7d, 0xd9, 0x72, - 0xca, 0x98, 0x1e, 0xd4, 0xe5, 0xc7, 0x98, 0x27, 0xe3, 0x9f, 0xc5, 0x3c, 0x90, 0x9e, 0x26, 0xed, - 0x7e, 0x38, 0x2b, 0xcf, 0xc4, 0x99, 0xf5, 0xb4, 0x78, 0x48, 0x7c, 0x08, 0x99, 0xbc, 0x80, 0x47, - 0xb1, 0xc5, 0x58, 0x60, 0x17, 0x84, 0x11, 0xf8, 0x70, 0xa1, 0x26, 0x95, 0x94, 0x77, 0xf4, 0x8d, - 0x1d, 0x47, 0x96, 0xdf, 0x95, 0x1d, 0x97, 0x37, 0x5a, 0x12, 0xfb, 0x3f, 0xcd, 0xa0, 0xfb, 0xac, - 0x61, 0x62, 0x1f, 0xee, 0xdc, 0x6d, 0x2c, 0x45, 0x5f, 0xc0, 0x80, 0x7d, 0x99, 0x62, 0x38, 0xf7, - 0x6d, 0x88, 0xd5, 0xe2, 0x24, 0x9d, 0xed, 0xa7, 0xd5, 0xe7, 0x1c, 0x8a, 0x75, 0x9b, 0x67, 0x0c, - 0x64, 0xfe, 0xe7, 0xe2, 0xe9, 0xa0, 0x94, 0x60, 0x26, 0x46, 0xd8, 0xc9, 0x59, 0x43, 0x17, 0x85, - 0x07, 0x32, 0x8b, 0x0c, 0x5a, 0x1e, 0x35, 0x48, 0x46, 0xe5, 0x44, 0x5b, 0xc7, 0x07, 0xcd, 0x30, - 0x97, 0x80, 0xfa, 0xf9, 0xeb, 0x0d, 0xaf, 0xaf, 0x3e, 0xbe, 0x27, 0x43, 0x8e, 0x4a, 0xf2, 0x60, - 0xeb, 0x2b, 0x4d, 0x11, 0x9a, 0xe1, 0xd7, 0x59, 0x78, 0x29, 0x26, 0x3e, 0x9b, 0xda, 0x61, 0x15, - 0xab, 0xe8, 0x6f, 0x81, 0x73, 0xac, 0x9f, 0x43, 0xc6, 0xb1, 0x81, 0x73, 0x36, 0x4a, 0x1e, 0x57, - 0x2b, 0xd9, 0x7a, 0x06, 0x4f, 0xb6, 0x37, 0x11, 0xe6, 0xc6, 0x90, 0x41, 0xa4, 0xa6, 0xb7, 0x3a, - 0x7e, 0xc9, 0xce, 0x50, 0x2f, 0x8c, 0x07, 0xdb, 0x9a, 0x19, 0x38, 0x51, 0x35, 0x50, 0xf3, 0x09, - 0x33, 0x20, 0x62, 0x36, 0xa8, 0x6c, 0x8e, 0xf2, 0x56, 0x8c, 0x82, 0xd3, 0xfa, 0x16, 0xb5, 0x3d, - 0x74, 0x28, 0xdc, 0x2a, 0xe5, 0xae, 0xab, 0x77, 0xe5, 0x22, 0x3d, 0x69, 0x92, 0xb8, 0x56, 0xc5, - 0x06, 0x6b, 0x8b, 0xda, 0x46, 0x18, 0xaf, 0x93, 0xa2, 0x0c, 0xb5, 0xd3, 0xd6, 0x94, 0x4a, 0x29, - 0xfd, 0x4b, 0x48, 0x48, 0xa1, 0x73, 0xbc, 0xde, 0xcb, 0x3a, 0x35, 0x27, 0xd5, 0x40, 0x3a, 0x1d, - 0x5b, 0xe3, 0x62, 0xa5, 0x22, 0xa2, 0x7b, 0xb5, 0x6a, 0xf0, 0x5e, 0x0a, 0x96, 0x5c, 0xe8, 0x3b, - 0x41, 0x58, 0xa1, 0xd5, 0x11, 0x2c, 0x36, 0x9e, 0xe5, 0x2b, 0xc9, 0xfb, 0x1b, 0x37, 0xd0, 0x8e, - 0xcf, 0xc2, 0x01, 0x6f, 0xb6, 0x21, 0x96, 0x9c, 0x14, 0x2f, 0x76, 0x19, 0xb0, 0x6a, 0x9d, 0xef, - 0x69, 0xfd, 0xd0, 0x03, 0xd9, 0xeb, 0xb7, 0x86, 0x76, 0x20, 0xd3, 0x20, 0x6a, 0xd8, 0xcb, 0xc8, - 0x9e, 0xb7, 0x82, 0x28, 0xb2, 0x25, 0xa7, 0xa2, 0x6b, 0xfd, 0x60, 0xb0, 0x11, 0x09, 0x53, 0x5f, - 0x79, 0x6b, 0x72, 0xd7, 0x1b, 0x21, 0x73, 0xf7, 0x21, 0xd5, 0x5c, 0xc4, 0xe5, 0x52, 0x82, 0x73, - 0x1f, 0x9c, 0x95, 0xe1, 0x21, 0xbf, 0x12, 0x67, 0xc9, 0x41, 0xe5, 0x64, 0xc4, 0xd4, 0xf9, 0xa2, - 0x9b, 0x29, 0xdf, 0xe5, 0xa4, 0xf3, 0xb4, 0x69, 0x6d, 0x2c, 0xb0, 0x42, 0xe3, 0xe6, 0x25, 0xa7, - 0x8f, 0xf5, 0x12, 0x99, 0x8c, 0xbf, 0xbb, 0xd8, 0xa8, 0x23, 0xdb, 0x8e, 0xec, 0x37, 0xb0, 0x8e, - 0x4f, 0xed, 0x67, 0xaa, 0x3e, 0xf6, 0x24, 0x56, 0x96, 0xe3, 0xd4, 0xbc, 0x25, 0x0b, + 0xdb, 0xa3, 0x13, 0x30, 0x79, 0xa3, 0xcd, 0x9e, 0x48, 0xf4, 0x8f, 0x06, 0x37, 0x1b, 0x45, 0xdd, 0x60, 0xa9, 0x2e, + 0x29, 0x26, 0xbf, 0xc1, 0x96, 0x5e, 0x07, 0x93, 0x9d, 0xf2, 0x2d, 0x3e, 0xa3, 0x3a, 0xff, 0xd5, 0x6d, 0xf5, 0x85, + 0x30, 0x28, 0xe1, 0x46, 0xfd, 0x56, 0xd1, 0x20, 0x41, 0x33, 0x94, 0x88, 0x0c, 0x27, 0x23, 0xa0, 0x61, 0x38, 0x60, + 0xdb, 0x86, 0xd6, 0xce, 0x2c, 0xcd, 0x40, 0x39, 0x55, 0x23, 0x39, 0x12, 0xb9, 0xfd, 0xc2, 0x8d, 0x58, 0x0a, 0x37, + 0x33, 0x42, 0x5c, 0x61, 0xd7, 0xc8, 0xa0, 0x11, 0x66, 0xe2, 0x45, 0xba, 0x41, 0x39, 0xea, 0x85, 0x2a, 0x6e, 0x7a, + 0xb3, 0xe7, 0x27, 0x75, 0xfc, 0x4d, 0xc0, 0xfb, 0x0d, 0xe8, 0x67, 0x90, 0xb3, 0x3a, 0x40, 0xf0, 0x15, 0x8a, 0x15, + 0x8e, 0x2c, 0x99, 0x0f, 0x1c, 0xbd, 0xd2, 0x08, 0x66, 0x51, 0x9e, 0x6a, 0xe6, 0x2c, 0xf7, 0x1f, 0xd0, 0xc0, 0x8e, + 0x89, 0x76, 0x64, 0x18, 0x58, 0xa1, 0x94, 0xbd, 0xce, 0xb1, 0x2d, 0x96, 0xab, 0x53, 0xcf, 0xf8, 0xbf, 0xd0, 0xc9, + 0xc0, 0x2e, 0xe6, 0xa4, 0x0b, 0x50, 0x31, 0x4a, 0x4e, 0xd8, 0x47, 0x4b, 0xaf, 0xb8, 0x21, 0x78, 0xbf, 0x09, 0xac, + 0x7f, 0x2d, 0x2d, 0x88, 0xf6, 0xd8, 0xc7, 0x45, 0x33, 0x9f, 0xac, 0x69, 0xf5, 0x88, 0x9d, 0x5c, 0x6e, 0xc9, 0xd0, + 0xca, 0x8c, 0xbc, 0xa9, 0xd6, 0x07, 0x36, 0xed, 0x40, 0x95, 0x8a, 0xc1, 0x3f, 0x04, 0x41, 0xb3, 0xc9, 0xb3, 0x18, + 0x9d, 0x33, 0x1b, 0x04, 0x55, 0xcd, 0x41, 0xdf, 0x19, 0xe1, 0xcd, 0xa0, 0xa4, 0x35, 0x6e, 0xb7, 0x0a, 0xf3, 0xec, + 0x48, 0x10, 0x4f, 0x28, 0xc6, 0x35, 0xf3, 0x9b, 0xa2, 0xd5, 0xf7, 0x58, 0x03, 0x4d, 0x9a, 0x16, 0x34, 0xfb, 0x96, + 0x0c, 0xd5, 0x3a, 0xae, 0x52, 0x1b, 0x2f, 0x1f, 0x1f, 0x31, 0xb2, 0xd9, 0x14, 0x3b, 0x73, 0x0f, 0xe3, 0x04, 0xe0, + 0xa5, 0x52, 0x89, 0x68, 0xba, 0x0f, 0x99, 0x9d, 0x24, 0xa6, 0xf3, 0xe8, 0x9f, 0xcc, 0xd2, 0x44, 0x9f, 0x08, 0x8b, + 0x0a, 0x24, 0x89, 0xf7, 0xc9, 0x07, 0x0d, 0x25, 0x07, 0xed, 0x3e, 0x75, 0x21, 0x19, 0x65, 0xdc, 0x98, 0x41, 0x9d, + 0x05, 0x12, 0x18, 0x88, 0x86, 0x16, 0x43, 0x49, 0x29, 0xf2, 0xe8, 0x26, 0x16, 0x1e, 0xce, 0xcd, 0x32, 0xe7, 0x36, + 0x74, 0x51, 0x27, 0xfd, 0xa2, 0xa9, 0x62, 0x57, 0x60, 0x28, 0xe4, 0x64, 0x02, 0x06, 0x6b, 0xff, 0x01, 0xab, 0xc5, + 0x1c, 0x25, 0x98, 0x07, 0xe1, 0x40, 0xad, 0x19, 0xb7, 0x68, 0x66, 0x12, 0x4e, 0x80, 0xbc, 0x83, 0xd2, 0xde, 0xcb, + 0x7e, 0xc2, 0x32, 0xc7, 0xb8, 0x4d, 0xd6, 0x7d, 0xdd, 0x63, 0xa9, 0x95, 0x45, 0xc1, 0x90, 0xc7, 0x99, 0x3c, 0x0a, + 0x24, 0x62, 0xfc, 0x24, 0x15, 0xdb, 0xd3, 0xd2, 0x9b, 0x5d, 0x78, 0x04, 0x78, 0xd5, 0x40, 0x1d, 0xe3, 0x4e, 0xe8, + 0x30, 0x9f, 0x56, 0x91, 0x71, 0x00, 0x86, 0x2c, 0x6a, 0xb2, 0x78, 0xec, 0x70, 0xd9, 0x71, 0xe6, 0xaa, 0xb1, 0xad, + 0x18, 0xf9, 0xa6, 0x84, 0xb7, 0x4b, 0x5f, 0x32, 0xb8, 0xe3, 0xc7, 0x84, 0xef, 0x37, 0xfe, 0xae, 0x99, 0xb5, 0xf2, + 0x34, 0x84, 0x82, 0x4a, 0xb3, 0xd0, 0x7c, 0x5e, 0x25, 0x71, 0x89, 0x8b, 0x7d, 0x6f, 0x5f, 0x96, 0x7a, 0x1d, 0x84, + 0x96, 0x56, 0x34, 0x30, 0xce, 0x09, 0xd5, 0x00, 0xa8, 0xac, 0x15, 0x72, 0x21, 0xc4, 0x71, 0x57, 0xe5, 0x2a, 0x3d, + 0xdf, 0x82, 0xb8, 0xb8, 0x63, 0xdc, 0x3f, 0x2e, 0x99, 0x6c, 0xc3, 0xe3, 0xfd, 0x92, 0xe0, 0x26, 0xe1, 0x27, 0xb8, + 0x04, 0x71, 0xb0, 0xa8, 0xd1, 0xdf, 0x7e, 0x24, 0x23, 0xb9, 0x82, 0x01, 0x77, 0xdc, 0x8f, 0x77, 0x54, 0xe6, 0x93, + 0xc8, 0x6c, 0x66, 0x87, 0xb7, 0xaa, 0x9d, 0x66, 0xd4, 0xc6, 0x2f, 0x5e, 0x9e, 0xe1, 0xcf, 0xdb, 0xb2, 0x74, 0x0e, + 0xea, 0xa5, 0xe0, 0xf7, 0x00, 0xf1, 0x76, 0xf7, 0x45, 0x2c, 0xf8, 0xa9, 0x3b, 0xd9, 0x81, 0x59, 0x52, 0x0f, 0xfe, + 0xd9, 0x28, 0x02, 0x59, 0x82, 0x39, 0x51, 0x6e, 0xb9, 0xac, 0xf9, 0x6a, 0x48, 0x73, 0x6f, 0x2c, 0x4d, 0x7b, 0xc0, + 0xbf, 0xbe, 0x69, 0xae, 0x0e, 0xdc, 0x8b, 0xe6, 0xd8, 0x9f, 0x66, 0x30, 0x1e, 0x45, 0x1d, 0x85, 0x23, 0xeb, 0xa8, + 0x02, 0xb5, 0xba, 0xc2, 0xfd, 0xa1, 0xff, 0xc5, 0x55, 0x2b, 0xa0, 0xf7, 0x5b, 0x24, 0xee, 0x81, 0xd8, 0xe1, 0xb8, + 0x02, 0x06, 0x85, 0x6e, 0x41, 0x5a, 0xb8, 0x07, 0xff, 0x65, 0xdb, 0xb4, 0x59, 0x89, 0x71, 0x95, 0xd5, 0x0c, 0x2a, + 0x67, 0x4d, 0x57, 0xfd, 0x4a, 0xe8, 0x07, 0x02, 0x42, 0x20, 0xd9, 0xf1, 0xc6, 0xd5, 0x4c, 0x53, 0xb0, 0x32, 0x68, + 0xc0, 0xdc, 0xd7, 0x5d, 0x8f, 0xec, 0x24, 0x29, 0x00, 0x4f, 0x46, 0x8d, 0xd2, 0x99, 0xb2, 0xf4, 0x06, 0x99, 0x9a, + 0xa6, 0x31, 0xf1, 0x49, 0x16, 0xfe, 0x94, 0xbb, 0x8e, 0x15, 0x55, 0x06, 0x93, 0x16, 0xa3, 0x2d, 0x10, 0xb7, 0xb1, + 0xcf, 0x61, 0x78, 0xaf, 0x93, 0x66, 0x5a, 0x75, 0x5e, 0x97, 0xc0, 0x97, 0x4c, 0xba, 0xa9, 0x50, 0xac, 0x1b, 0xd6, + 0x92, 0x2a, 0xac, 0x0a, 0x21, 0x12, 0x9e, 0x4a, 0xf0, 0x40, 0x39, 0x4b, 0xe5, 0x78, 0x88, 0x86, 0x17, 0xb9, 0xeb, + 0xa0, 0x33, 0x8a, 0x9a, 0xfc, 0x7c, 0x91, 0x16, 0xd7, 0x52, 0xec, 0x05, 0x7e, 0x4e, 0x90, 0x78, 0x5e, 0x45, 0x4a, + 0xdd, 0xf6, 0xf4, 0x2e, 0x68, 0xf7, 0x8e, 0xfc, 0x60, 0x95, 0xaa, 0x6a, 0x07, 0x9c, 0xea, 0xce, 0xc1, 0xd9, 0x55, + 0x3a, 0x78, 0x54, 0x9a, 0x2a, 0x5f, 0x47, 0x87, 0x18, 0x4a, 0x8c, 0x6c, 0x34, 0xf5, 0xb8, 0xe2, 0x84, 0x36, 0xef, + 0x0d, 0x2e, 0x9d, 0x42, 0xd9, 0xff, 0x56, 0xe2, 0x87, 0x0b, 0x2f, 0x4d, 0x0e, 0xc0, 0x60, 0x35, 0x06, 0x9f, 0x61, + 0x9e, 0x4e, 0x7b, 0x49, 0x41, 0xb4, 0xfa, 0x04, 0x10, 0xbd, 0xf6, 0xad, 0x02, 0xd9, 0x7c, 0xba, 0x06, 0x68, 0xbb, + 0xa7, 0xa6, 0x8a, 0xab, 0xab, 0xb1, 0x2d, 0x69, 0x2a, 0xf1, 0xc6, 0x7b, 0x1b, 0x71, 0xb9, 0xd0, 0x91, 0x82, 0x6f, + 0xa8, 0x3c, 0xe1, 0xa3, 0x23, 0x3d, 0x4e, 0x48, 0x74, 0xe5, 0xc9, 0xc5, 0x95, 0x31, 0xad, 0xe7, 0xa9, 0xdb, 0x35, + 0xcd, 0x02, 0x08, 0x2c, 0x29, 0x5f, 0xf9, 0x17, 0x86, 0x69, 0x8f, 0x13, 0xd1, 0xca, 0x83, 0xfc, 0xac, 0x55, 0xcf, + 0x5a, 0xe6, 0x45, 0xaf, 0xe5, 0xbb, 0xe7, 0xb5, 0x53, 0x4e, 0xf0, 0x63, 0xfc, 0x9a, 0x49, 0xf6, 0x45, 0x93, 0xc6, + 0xbf, 0xd5, 0xb3, 0x25, 0xe2, 0x93, 0xb0, 0xa6, 0xa7, 0x14, 0x80, 0x6d, 0xb2, 0x03, 0x15, 0x6a, 0xad, 0xe8, 0x25, + 0xf1, 0x80, 0xd4, 0xba, 0x9a, 0x88, 0xbc, 0x56, 0x14, 0x7a, 0x4d, 0xad, 0xc3, 0x24, 0x3f, 0x4d, 0x35, 0x8b, 0xf6, + 0x59, 0x5b, 0xfd, 0xc9, 0x32, 0x1d, 0xf5, 0xa5, 0x53, 0xb5, 0xfb, 0xba, 0x83, 0x29, 0x0b, 0x9c, 0x62, 0x9b, 0x56, + 0x4b, 0x44, 0xbc, 0xcc, 0x19, 0x59, 0x7c, 0x0b, 0x74, 0xd9, 0x04, 0x28, 0xb3, 0x67, 0xab, 0x82, 0x36, 0x39, 0x55, + 0x5f, 0x7c, 0xed, 0x84, 0xc1, 0x16, 0xd3, 0x9e, 0x9c, 0x90, 0x9d, 0x55, 0xbc, 0x3e, 0xb9, 0x63, 0x12, 0xf2, 0x26, + 0x6d, 0xd7, 0xcc, 0x4f, 0x01, 0xa2, 0x0b, 0xd9, 0x66, 0x60, 0xad, 0xed, 0x2e, 0xbd, 0xbe, 0x28, 0x5f, 0x4a, 0x33, + 0xc8, 0xe8, 0xd4, 0xa6, 0x23, 0x8a, 0xfd, 0x66, 0xf5, 0x28, 0x90, 0x81, 0x27, 0xa9, 0x44, 0x93, 0x68, 0x57, 0x44, + 0x5e, 0xba, 0x90, 0x12, 0x03, 0x15, 0x2f, 0x69, 0x80, 0x55, 0xe8, 0x32, 0x63, 0x88, 0x30, 0x85, 0x50, 0x9b, 0xb6, + 0xbc, 0xbb, 0xc6, 0xfe, 0xa2, 0xe7, 0x32, 0x9d, 0x3d, 0x7d, 0xe2, 0x31, 0x93, 0xa6, 0x4e, 0xa0, 0xdc, 0x11, 0x44, + 0xd2, 0x93, 0x32, 0x94, 0x1e, 0xc6, 0x4c, 0x28, 0xde, 0xa2, 0xa6, 0x0d, 0x14, 0x02, 0x74, 0x8a, 0x84, 0x2a, 0x03, + 0x67, 0x35, 0x1d, 0x66, 0x3e, 0xe9, 0x68, 0x4a, 0xb2, 0x92, 0x1a, 0x69, 0x48, 0xbd, 0x23, 0xfd, 0x70, 0x5a, 0xfd, + 0xfe, 0x74, 0x39, 0xc5, 0xfa, 0x11, 0xac, 0x04, 0xc9, 0x94, 0xfc, 0x12, 0x2e, 0x06, 0x04, 0x61, 0x8e, 0x32, 0xf4, + 0xf8, 0x3b, 0xd1, 0xd8, 0x09, 0xb3, 0xe4, 0xac, 0x0f, 0x3e, 0x92, 0xf7, 0x75, 0x0b, 0x32, 0x9b, 0xd4, 0x8a, 0x13, + 0x99, 0x6a, 0x26, 0x77, 0x9f, 0x34, 0x08, 0xa8, 0xeb, 0xb3, 0x3e, 0x2a, 0x5b, 0x4a, 0x44, 0xf9, 0x21, 0x89, 0x2a, + 0x09, 0x9c, 0xc7, 0x0d, 0x2a, 0xd8, 0xd6, 0x27, 0x30, 0x25, 0x39, 0x84, 0x14, 0x11, 0x47, 0xff, 0x60, 0xe4, 0x7c, + 0xc3, 0x41, 0xfd, 0xd5, 0x34, 0xdd, 0xb1, 0x1c, 0xf2, 0xeb, 0xb1, 0x67, 0x04, 0xfa, 0xfd, 0x65, 0x5b, 0x20, 0x6e, + 0x28, 0x75, 0xa9, 0x74, 0x8e, 0xc4, 0x2f, 0xf7, 0xb2, 0xf5, 0x9f, 0x13, 0x44, 0xff, 0xb0, 0xf0, 0x68, 0xb0, 0x69, + 0x15, 0xa6, 0x16, 0xa8, 0xac, 0xc3, 0x06, 0x14, 0x8e, 0x51, 0x99, 0xa9, 0x4c, 0x19, 0xd1, 0x25, 0x34, 0xb5, 0x79, + 0xc2, 0xa7, 0xbf, 0xd8, 0x3d, 0x2d, 0x4c, 0x33, 0xac, 0x1b, 0x6c, 0xaf, 0x10, 0x42, 0x41, 0x14, 0x02, 0xe6, 0x87, + 0x2b, 0xe9, 0xec, 0xc6, 0xb1, 0xeb, 0x97, 0xd4, 0x35, 0x49, 0x97, 0xfc, 0xe2, 0x73, 0xf9, 0x98, 0x46, 0x7c, 0xf6, + 0x17, 0x2d, 0xb5, 0x43, 0x07, 0x8b, 0x19, 0x95, 0x9b, 0x65, 0xd3, 0x05, 0x7e, 0xb0, 0x68, 0x0d, 0x6e, 0x4b, 0x60, + 0xad, 0x5c, 0x47, 0x6e, 0x37, 0xfd, 0x3f, 0x60, 0x43, 0xda, 0xb2, 0x34, 0x00, 0xd6, 0x9c, 0x6d, 0x46, 0x7f, 0x41, + 0xe2, 0xc1, 0x1a, 0xd0, 0x53, 0x72, 0x81, 0x0b, 0x3f, 0x77, 0xe1, 0xbc, 0xcc, 0x09, 0x0f, 0xa1, 0x1d, 0x73, 0x8c, + 0xac, 0xa4, 0x48, 0x90, 0x80, 0xa8, 0x50, 0x63, 0x6a, 0xb7, 0x76, 0x91, 0x91, 0x2f, 0x1a, 0x5e, 0x83, 0x80, 0xe6, + 0xae, 0x66, 0x77, 0x44, 0xe0, 0x0f, 0x14, 0x70, 0xc9, 0xd3, 0x91, 0xe8, 0xd2, 0xc4, 0x89, 0xa8, 0x45, 0xc0, 0x3d, + 0xbd, 0x09, 0x58, 0xe0, 0xcd, 0xe6, 0x5c, 0x9e, 0x02, 0x94, 0xd2, 0xbe, 0xdf, 0x94, 0x35, 0xf7, 0x67, 0x96, 0x75, + 0x88, 0x08, 0x59, 0xd9, 0x19, 0x21, 0xda, 0xd0, 0xa2, 0x74, 0x2d, 0x22, 0x87, 0x37, 0x27, 0x6e, 0x58, 0xdc, 0x8e, + 0x9f, 0x50, 0xd5, 0x62, 0xf3, 0x4a, 0xa4, 0xb2, 0xfb, 0xf9, 0x3e, 0xd5, 0xda, 0x57, 0x56, 0x5c, 0xcb, 0x0e, 0xd1, + 0x62, 0x4f, 0xea, 0x42, 0x4a, 0x62, 0xb2, 0x4e, 0x1c, 0xd1, 0xcc, 0x24, 0x1b, 0xdc, 0xac, 0xd4, 0xb0, 0x2f, 0x5d, + 0x62, 0x87, 0x56, 0x3d, 0xe4, 0x03, 0xae, 0x4a, 0x7e, 0x7d, 0x05, 0xfe, 0x85, 0x33, 0xda, 0x5f, 0x36, 0xcb, 0x56, + 0xa1, 0x14, 0x80, 0x63, 0x26, 0x75, 0x3a, 0xc2, 0x1f, 0x9c, 0xdd, 0x8a, 0xd6, 0xf8, 0xa9, 0x1a, 0xf6, 0xc2, 0x57, + 0xe0, 0x7b, 0x80, 0x55, 0xd5, 0x12, 0xf1, 0xb4, 0xe7, 0x1d, 0x95, 0x68, 0x02, 0xf1, 0x19, 0xff, 0x74, 0x72, 0x32, + 0xdb, 0x6c, 0xc9, 0xa0, 0x2d, 0x69, 0xfc, 0xc0, 0xe8, 0x27, 0x11, 0xb8, 0xe0, 0xf5, 0x83, 0x60, 0x3f, 0xb4, 0x94, + 0xe5, 0x9d, 0xb8, 0xfd, 0xc5, 0x9e, 0x50, 0x76, 0x92, 0xc7, 0x33, 0x6b, 0xe0, 0x7e, 0x9b, 0x2c, 0x3b, 0x27, 0xd8, + 0xa6, 0xda, 0xb3, 0xa1, 0x45, 0xef, 0x3b, 0x3d, 0x76, 0x1d, 0x5a, 0x43, 0xa4, 0xe1, 0x82, 0x5f, 0x7d, 0x0b, 0x10, + 0x28, 0x1c, 0xb9, 0x8f, 0x2b, 0xcd, 0xf9, 0xc5, 0x93, 0xe3, 0x65, 0xa5, 0x5b, 0x50, 0xa9, 0x07, 0x16, 0xb3, 0x45, + 0x4a, 0x69, 0xfc, 0x58, 0x12, 0x7b, 0x58, 0x34, 0x9f, 0x6f, 0x5e, 0x7a, 0xc2, 0x9f, 0x7b, 0xcf, 0x62, 0x62, 0x6c, + 0x1e, 0x7d, 0xd9, 0x72, 0xca, 0x98, 0x1e, 0xd4, 0xe5, 0xc7, 0x98, 0x27, 0xe3, 0x9f, 0xc5, 0x3c, 0x90, 0x9e, 0x26, + 0xed, 0x7e, 0x38, 0x2b, 0xcf, 0xc4, 0x99, 0xf5, 0xb4, 0x78, 0x48, 0x7c, 0x08, 0x99, 0xbc, 0x80, 0x47, 0xb1, 0xc5, + 0x58, 0x60, 0x17, 0x84, 0x11, 0xf8, 0x70, 0xa1, 0x26, 0x95, 0x94, 0x77, 0xf4, 0x8d, 0x1d, 0x47, 0x96, 0xdf, 0x95, + 0x1d, 0x97, 0x37, 0x5a, 0x12, 0xfb, 0x3f, 0xcd, 0xa0, 0xfb, 0xac, 0x61, 0x62, 0x1f, 0xee, 0xdc, 0x6d, 0x2c, 0x45, + 0x5f, 0xc0, 0x80, 0x7d, 0x99, 0x62, 0x38, 0xf7, 0x6d, 0x88, 0xd5, 0xe2, 0x24, 0x9d, 0xed, 0xa7, 0xd5, 0xe7, 0x1c, + 0x8a, 0x75, 0x9b, 0x67, 0x0c, 0x64, 0xfe, 0xe7, 0xe2, 0xe9, 0xa0, 0x94, 0x60, 0x26, 0x46, 0xd8, 0xc9, 0x59, 0x43, + 0x17, 0x85, 0x07, 0x32, 0x8b, 0x0c, 0x5a, 0x1e, 0x35, 0x48, 0x46, 0xe5, 0x44, 0x5b, 0xc7, 0x07, 0xcd, 0x30, 0x97, + 0x80, 0xfa, 0xf9, 0xeb, 0x0d, 0xaf, 0xaf, 0x3e, 0xbe, 0x27, 0x43, 0x8e, 0x4a, 0xf2, 0x60, 0xeb, 0x2b, 0x4d, 0x11, + 0x9a, 0xe1, 0xd7, 0x59, 0x78, 0x29, 0x26, 0x3e, 0x9b, 0xda, 0x61, 0x15, 0xab, 0xe8, 0x6f, 0x81, 0x73, 0xac, 0x9f, + 0x43, 0xc6, 0xb1, 0x81, 0x73, 0x36, 0x4a, 0x1e, 0x57, 0x2b, 0xd9, 0x7a, 0x06, 0x4f, 0xb6, 0x37, 0x11, 0xe6, 0xc6, + 0x90, 0x41, 0xa4, 0xa6, 0xb7, 0x3a, 0x7e, 0xc9, 0xce, 0x50, 0x2f, 0x8c, 0x07, 0xdb, 0x9a, 0x19, 0x38, 0x51, 0x35, + 0x50, 0xf3, 0x09, 0x33, 0x20, 0x62, 0x36, 0xa8, 0x6c, 0x8e, 0xf2, 0x56, 0x8c, 0x82, 0xd3, 0xfa, 0x16, 0xb5, 0x3d, + 0x74, 0x28, 0xdc, 0x2a, 0xe5, 0xae, 0xab, 0x77, 0xe5, 0x22, 0x3d, 0x69, 0x92, 0xb8, 0x56, 0xc5, 0x06, 0x6b, 0x8b, + 0xda, 0x46, 0x18, 0xaf, 0x93, 0xa2, 0x0c, 0xb5, 0xd3, 0xd6, 0x94, 0x4a, 0x29, 0xfd, 0x4b, 0x48, 0x48, 0xa1, 0x73, + 0xbc, 0xde, 0xcb, 0x3a, 0x35, 0x27, 0xd5, 0x40, 0x3a, 0x1d, 0x5b, 0xe3, 0x62, 0xa5, 0x22, 0xa2, 0x7b, 0xb5, 0x6a, + 0xf0, 0x5e, 0x0a, 0x96, 0x5c, 0xe8, 0x3b, 0x41, 0x58, 0xa1, 0xd5, 0x11, 0x2c, 0x36, 0x9e, 0xe5, 0x2b, 0xc9, 0xfb, + 0x1b, 0x37, 0xd0, 0x8e, 0xcf, 0xc2, 0x01, 0x6f, 0xb6, 0x21, 0x96, 0x9c, 0x14, 0x2f, 0x76, 0x19, 0xb0, 0x6a, 0x9d, + 0xef, 0x69, 0xfd, 0xd0, 0x03, 0xd9, 0xeb, 0xb7, 0x86, 0x76, 0x20, 0xd3, 0x20, 0x6a, 0xd8, 0xcb, 0xc8, 0x9e, 0xb7, + 0x82, 0x28, 0xb2, 0x25, 0xa7, 0xa2, 0x6b, 0xfd, 0x60, 0xb0, 0x11, 0x09, 0x53, 0x5f, 0x79, 0x6b, 0x72, 0xd7, 0x1b, + 0x21, 0x73, 0xf7, 0x21, 0xd5, 0x5c, 0xc4, 0xe5, 0x52, 0x82, 0x73, 0x1f, 0x9c, 0x95, 0xe1, 0x21, 0xbf, 0x12, 0x67, + 0xc9, 0x41, 0xe5, 0x64, 0xc4, 0xd4, 0xf9, 0xa2, 0x9b, 0x29, 0xdf, 0xe5, 0xa4, 0xf3, 0xb4, 0x69, 0x6d, 0x2c, 0xb0, + 0x42, 0xe3, 0xe6, 0x25, 0xa7, 0x8f, 0xf5, 0x12, 0x99, 0x8c, 0xbf, 0xbb, 0xd8, 0xa8, 0x23, 0xdb, 0x8e, 0xec, 0x37, + 0xb0, 0x8e, 0x4f, 0xed, 0x67, 0xaa, 0x3e, 0xf6, 0x24, 0x56, 0x96, 0xe3, 0xd4, 0xbc, 0x25, 0x0b, 0x56, // encrypted new license info - 0xed, 0xe8, 0xbf, 0xd6, 0x13, 0xa0, 0xf5, 0x80, 0x4a, 0xe5, 0xff, 0x85, 0x16, 0xfa, 0xcb, - 0x1f, // mac data + 0xed, 0xe8, 0xbf, 0xd6, 0x13, 0xa0, 0xf5, 0x80, 0x4a, 0xe5, 0xff, 0x85, 0x16, 0xfa, 0xcb, 0x1f, // mac data ]; const MAC_DATA: [u8; 16] = [ @@ -151,137 +130,117 @@ const MAC_DATA: [u8; 16] = [ const NEW_LICENSE_INFORMATION_BUFFER: [u8; 2031] = [ 0x00, 0x00, 0x06, 0x00, // version 0x0e, 0x00, 0x00, 0x00, // scope length - 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, - 0x00, // scope + 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x00, // scope 0x2c, 0x00, 0x00, 0x00, // company name length 26 - 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, - 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, - 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, // company name 44 + 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, // company name 44 0x08, 0x00, 0x00, 0x00, // product id length 0x41, 0x00, 0x30, 0x00, 0x32, 0x00, 0x00, 0x00, // product id 0x99, 0x07, 0x00, 0x00, // license info length - 0x30, 0x82, 0x07, 0x95, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, - 0x82, 0x07, 0x86, 0x30, 0x82, 0x07, 0x82, 0x02, 0x01, 0x01, 0x31, 0x00, 0x30, 0x0b, 0x06, 0x09, - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x07, 0x6a, 0x30, 0x82, 0x02, - 0xf1, 0x30, 0x82, 0x01, 0xdd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x01, 0x9e, 0x27, 0x4d, - 0x68, 0xac, 0xed, 0x20, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x30, - 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, - 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, - 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, - 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x37, 0x30, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x33, - 0x36, 0x31, 0x38, 0x5a, 0x17, 0x0d, 0x34, 0x39, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x33, 0x36, - 0x31, 0x38, 0x5a, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, - 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, - 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, - 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, - 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x88, 0xad, 0x7c, 0x8f, 0x8b, 0x82, 0x76, 0x5a, - 0xbd, 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, 0xed, 0x68, 0x01, 0xc6, 0x34, 0x35, - 0xb0, 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, 0xb8, 0x25, 0xff, - 0x16, 0x47, 0x6f, 0xbd, 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, 0x75, 0xad, 0x73, - 0x28, 0x80, 0xa0, 0x4d, 0xfc, 0x6c, 0xc0, 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, 0x01, 0x60, 0x19, - 0x7e, 0x79, 0x19, 0x39, 0x8d, 0xb5, 0xce, 0x39, 0x58, 0xdd, 0x55, 0x24, 0x3b, 0x55, 0x7b, 0x43, - 0xc1, 0x7f, 0x14, 0x2f, 0xb0, 0x64, 0x3a, 0x54, 0x95, 0x2b, 0x88, 0x49, 0x0c, 0x61, 0x2d, 0xac, - 0xf8, 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, 0xf8, 0x75, 0xc7, 0x26, 0x6d, 0xb5, 0xbb, - 0x39, 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, 0x84, 0x11, 0x36, 0xa2, - 0x61, 0x76, 0xaa, 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, 0xa9, 0xea, 0xb7, - 0x41, 0x94, 0x00, 0x58, 0xaa, 0xc9, 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, 0x14, 0x01, 0xa8, - 0xdc, 0x30, 0x7c, 0x77, 0x5a, 0x20, 0x71, 0x5a, 0xa2, 0x3f, 0xaf, 0x13, 0x7e, 0xe8, 0xfd, 0x84, - 0xa2, 0x5b, 0xcf, 0x25, 0xe9, 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, 0x84, 0xc7, 0x04, 0x5e, 0x53, 0x73, - 0x4e, 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, 0x24, 0xb7, 0x80, 0x53, 0x3c, 0x54, 0xc8, 0xc1, - 0x53, 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, 0xde, 0xae, 0xf9, 0xe6, 0xaf, - 0x57, 0xae, 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, 0x01, 0x03, 0x38, - 0x10, 0xbe, 0x7c, 0x42, 0x67, 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x13, 0x30, - 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, - 0x01, 0x00, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x03, 0x82, 0x01, - 0x01, 0x00, 0x70, 0xdb, 0x21, 0x2b, 0x84, 0x9a, 0x7a, 0xc3, 0xb1, 0x68, 0xfa, 0xc0, 0x00, 0x8b, - 0x71, 0xab, 0x43, 0x9f, 0xb6, 0x7b, 0xb7, 0x1f, 0x20, 0x83, 0xac, 0x0a, 0xb5, 0x0e, 0xad, 0xb6, - 0x36, 0xef, 0x65, 0x17, 0x99, 0x86, 0x8a, 0x3d, 0xba, 0x0c, 0x53, 0x2e, 0xa3, 0x75, 0xa0, 0xf3, - 0x11, 0x3d, 0xe7, 0x65, 0x4b, 0xae, 0x3c, 0x42, 0x70, 0x11, 0xdc, 0xca, 0x83, 0xc0, 0xbe, 0x3e, - 0x97, 0x71, 0x84, 0x69, 0xd6, 0xa8, 0x27, 0x33, 0x9b, 0x3e, 0x17, 0x3c, 0xa0, 0x4c, 0x64, 0xca, - 0x20, 0x37, 0xa4, 0x11, 0xa9, 0x28, 0x8f, 0xb7, 0x18, 0x96, 0x69, 0x15, 0x0d, 0x74, 0x04, 0x75, - 0x2a, 0x00, 0xc7, 0xa6, 0x6a, 0xbe, 0xac, 0xb3, 0xf2, 0xfb, 0x06, 0x1b, 0x6c, 0x11, 0xbd, 0x96, - 0xe2, 0x34, 0x74, 0x5d, 0xf5, 0x98, 0x8f, 0x3a, 0x8d, 0x69, 0x08, 0x6f, 0x53, 0x12, 0x4e, 0x39, - 0x80, 0x90, 0xce, 0x8b, 0x5e, 0x88, 0x23, 0x2d, 0xfd, 0x55, 0xfd, 0x58, 0x3d, 0x39, 0x27, 0xb3, - 0x7c, 0x57, 0xfe, 0x3b, 0xab, 0x62, 0x26, 0x60, 0xe2, 0xd0, 0xc8, 0xf4, 0x02, 0x23, 0x16, 0xc3, - 0x52, 0x5d, 0x9f, 0x05, 0x49, 0xa2, 0x71, 0x2d, 0x6d, 0x5b, 0x90, 0xdd, 0xbf, 0xe5, 0xa9, 0x2e, - 0xf1, 0x85, 0x8a, 0x8a, 0xb8, 0xa9, 0x6b, 0x13, 0xcc, 0x8d, 0x4c, 0x22, 0x41, 0xad, 0x32, 0x1e, - 0x3b, 0x4b, 0x89, 0x37, 0x66, 0xdf, 0x1e, 0xa5, 0x4a, 0x03, 0x52, 0x1c, 0xd9, 0x19, 0x79, 0x22, - 0xd4, 0xa7, 0x3b, 0x47, 0x93, 0xa9, 0x0c, 0x03, 0x6a, 0xd8, 0x5f, 0xfc, 0xc0, 0x75, 0x33, 0xe5, - 0x26, 0xda, 0xf7, 0x4a, 0x77, 0xd8, 0xf1, 0x30, 0x80, 0x39, 0x38, 0x1e, 0x86, 0x1d, 0x97, 0x00, - 0x9c, 0x0e, 0xba, 0x00, 0x54, 0x8a, 0xc0, 0x12, 0x32, 0x6f, 0x3d, 0xc4, 0x15, 0xf9, 0x50, 0xf8, - 0xce, 0x95, 0x30, 0x82, 0x04, 0x71, 0x30, 0x82, 0x03, 0x5d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, - 0x05, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, - 0x00, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, - 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, - 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, 0x32, 0x30, 0x31, - 0x34, 0x35, 0x31, 0x33, 0x35, 0x5a, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x39, 0x31, 0x38, 0x31, 0x34, - 0x35, 0x31, 0x33, 0x35, 0x5a, 0x30, 0x7f, 0x31, 0x7d, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x21, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x1a, 0x00, 0x41, 0x00, 0x64, 0x00, 0x6d, 0x00, 0x69, 0x00, - 0x6e, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x6f, 0x00, - 0x72, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x05, 0x1e, 0x3c, 0x00, 0x31, 0x00, 0x42, 0x00, 0x63, - 0x00, 0x4b, 0x00, 0x65, 0x00, 0x64, 0x00, 0x79, 0x00, 0x32, 0x00, 0x6b, 0x00, 0x72, 0x00, 0x4f, - 0x00, 0x34, 0x00, 0x2f, 0x00, 0x4d, 0x00, 0x43, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x49, 0x00, 0x31, - 0x00, 0x41, 0x00, 0x48, 0x00, 0x5a, 0x00, 0x63, 0x00, 0x50, 0x00, 0x69, 0x00, 0x61, 0x00, 0x73, - 0x00, 0x3d, 0x00, 0x0d, 0x00, 0x0a, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, - 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x88, 0xad, 0x7c, 0x8f, 0x8b, 0x82, 0x76, 0x5a, 0xbd, - 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, 0xed, 0x68, 0x01, 0xc6, 0x34, 0x35, 0xb0, - 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, 0xb8, 0x25, 0xff, 0x16, - 0x47, 0x6f, 0xbd, 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, 0x75, 0xad, 0x73, 0x28, - 0x80, 0xa0, 0x4d, 0xfc, 0x6c, 0xc0, 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, 0x01, 0x60, 0x19, 0x7e, - 0x79, 0x19, 0x39, 0x8d, 0xb5, 0xce, 0x39, 0x58, 0xdd, 0x55, 0x24, 0x3b, 0x55, 0x7b, 0x43, 0xc1, - 0x7f, 0x14, 0x2f, 0xb0, 0x64, 0x3a, 0x54, 0x95, 0x2b, 0x88, 0x49, 0x0c, 0x61, 0x2d, 0xac, 0xf8, - 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, 0xf8, 0x75, 0xc7, 0x26, 0x6d, 0xb5, 0xbb, 0x39, - 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, 0x84, 0x11, 0x36, 0xa2, 0x61, - 0x76, 0xaa, 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, 0xa9, 0xea, 0xb7, 0x41, - 0x94, 0x00, 0x58, 0xaa, 0xc9, 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, 0x14, 0x01, 0xa8, 0xdc, - 0x30, 0x7c, 0x77, 0x5a, 0x20, 0x71, 0x5a, 0xa2, 0x3f, 0xaf, 0x13, 0x7e, 0xe8, 0xfd, 0x84, 0xa2, - 0x5b, 0xcf, 0x25, 0xe9, 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, 0x84, 0xc7, 0x04, 0x5e, 0x53, 0x73, 0x4e, - 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, 0x24, 0xb7, 0x80, 0x53, 0x3c, 0x54, 0xc8, 0xc1, 0x53, - 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, 0xde, 0xae, 0xf9, 0xe6, 0xaf, 0x57, - 0xae, 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, 0x01, 0x03, 0x38, 0x10, - 0xbe, 0x7c, 0x42, 0x67, 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, - 0x30, 0x82, 0x01, 0x43, 0x30, 0x14, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, - 0x04, 0x01, 0x01, 0xff, 0x04, 0x04, 0x01, 0x00, 0x05, 0x00, 0x30, 0x3c, 0x06, 0x09, 0x2b, 0x06, - 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x02, 0x01, 0x01, 0xff, 0x04, 0x2c, 0x4d, 0x00, 0x69, 0x00, - 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, - 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, - 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x30, 0x56, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, - 0x01, 0x82, 0x37, 0x12, 0x05, 0x01, 0x01, 0xff, 0x04, 0x46, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x24, 0x00, - 0x16, 0x00, 0x3a, 0x00, 0x01, 0x00, 0x41, 0x00, 0x30, 0x00, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, - 0x30, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2d, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x64, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x6e, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x06, 0x01, 0x01, 0xff, - 0x04, 0x5e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x4f, 0x00, - 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, 0x37, 0x00, 0x38, 0x00, 0x34, 0x00, - 0x34, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, 0x00, 0x36, 0x00, 0x2d, 0x00, 0x35, 0x00, - 0x38, 0x00, 0x36, 0x00, 0x37, 0x00, 0x30, 0x00, 0x34, 0x00, 0x35, 0x00, 0x2d, 0x00, 0x37, 0x00, - 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x00, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, - 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x25, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x01, 0x01, 0xff, 0x04, 0x1b, 0x30, 0x19, 0xa1, 0x10, - 0xa4, 0x0e, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x82, 0x05, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x13, 0x1b, 0xdc, 0x89, 0xd2, 0xfc, 0x54, 0x0c, 0xee, - 0x82, 0x45, 0x68, 0x6a, 0x72, 0xc3, 0x3e, 0x17, 0x73, 0x96, 0x53, 0x44, 0x39, 0x50, 0x0e, 0x0b, - 0x9f, 0x95, 0xd6, 0x2c, 0x6b, 0x53, 0x14, 0x9c, 0xe5, 0x55, 0xed, 0x65, 0xdf, 0x2a, 0xeb, 0x5c, - 0x64, 0x85, 0x70, 0x1f, 0xbc, 0x96, 0xcf, 0xa3, 0x76, 0xb1, 0x72, 0x3b, 0xe1, 0xf6, 0xad, 0xad, - 0xad, 0x2a, 0x14, 0xaf, 0xba, 0xd0, 0xd6, 0xd5, 0x6d, 0x55, 0xec, 0x1e, 0xc3, 0x4b, 0xba, 0x06, - 0x9c, 0x59, 0x78, 0x93, 0x64, 0x87, 0x4b, 0x03, 0xf9, 0xee, 0x4c, 0xdd, 0x36, 0x5b, 0xbd, 0xd4, - 0xe5, 0x4c, 0x4e, 0xda, 0x7b, 0xc1, 0xae, 0x23, 0x28, 0x9e, 0x77, 0x6f, 0x0f, 0xe6, 0x94, 0xfe, - 0x05, 0x22, 0x00, 0xab, 0x63, 0x5b, 0xe1, 0x82, 0x45, 0xa6, 0xec, 0x1f, 0x6f, 0x2c, 0x7b, 0x56, - 0xde, 0x78, 0x25, 0x7d, 0x10, 0x60, 0x0e, 0x53, 0x42, 0x4b, 0x6c, 0x7a, 0x6b, 0x5d, 0xc9, 0xd5, - 0xa6, 0xae, 0xc8, 0xc8, 0x52, 0x29, 0xd6, 0x42, 0x56, 0x02, 0xec, 0xf9, 0x23, 0xa8, 0x8c, 0x8d, - 0x89, 0xc9, 0x7c, 0x84, 0x07, 0xfc, 0x33, 0xe1, 0x1e, 0xea, 0xe2, 0x8f, 0x2b, 0xbe, 0x8f, 0xa9, - 0xd3, 0xd1, 0xe1, 0x5e, 0x0b, 0xdc, 0xb6, 0x43, 0x6e, 0x33, 0x0a, 0xf4, 0x2e, 0x9d, 0x0c, 0xc9, - 0x58, 0x54, 0x34, 0xaa, 0xe1, 0xd2, 0xa2, 0xe4, 0x90, 0x02, 0x23, 0x26, 0xa0, 0x92, 0x26, 0x26, - 0x0a, 0x83, 0xb4, 0x4d, 0xd9, 0x4b, 0xef, 0xeb, 0x9d, 0xa9, 0x24, 0x3f, 0x92, 0x8b, 0xdb, 0x04, - 0x7b, 0x9d, 0x64, 0x91, 0xa4, 0x4b, 0xd2, 0x6e, 0x51, 0x05, 0x08, 0xc9, 0x91, 0xaf, 0x31, 0x26, - 0x55, 0x21, 0xb1, 0xea, 0xce, 0xa3, 0xa4, 0x0d, 0x5e, 0x4c, 0x46, 0xdb, 0x16, 0x2d, 0x98, 0xdc, - 0x60, 0x19, 0xb8, 0x1b, 0xb9, 0xcd, 0xfb, 0x31, 0x00, // license info + 0x30, 0x82, 0x07, 0x95, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x07, 0x86, + 0x30, 0x82, 0x07, 0x82, 0x02, 0x01, 0x01, 0x31, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x07, 0x01, 0xa0, 0x82, 0x07, 0x6a, 0x30, 0x82, 0x02, 0xf1, 0x30, 0x82, 0x01, 0xdd, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x08, 0x01, 0x9e, 0x27, 0x4d, 0x68, 0xac, 0xed, 0x20, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, + 0x1d, 0x05, 0x00, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, + 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, + 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, + 0x17, 0x0d, 0x37, 0x30, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x33, 0x36, 0x31, 0x38, 0x5a, 0x17, 0x0d, 0x34, 0x39, + 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x33, 0x36, 0x31, 0x38, 0x5a, 0x30, 0x32, 0x31, 0x30, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, + 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0x88, 0xad, 0x7c, 0x8f, 0x8b, 0x82, 0x76, 0x5a, 0xbd, 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, + 0xed, 0x68, 0x01, 0xc6, 0x34, 0x35, 0xb0, 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, + 0xb8, 0x25, 0xff, 0x16, 0x47, 0x6f, 0xbd, 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, 0x75, 0xad, 0x73, + 0x28, 0x80, 0xa0, 0x4d, 0xfc, 0x6c, 0xc0, 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, 0x01, 0x60, 0x19, 0x7e, 0x79, 0x19, + 0x39, 0x8d, 0xb5, 0xce, 0x39, 0x58, 0xdd, 0x55, 0x24, 0x3b, 0x55, 0x7b, 0x43, 0xc1, 0x7f, 0x14, 0x2f, 0xb0, 0x64, + 0x3a, 0x54, 0x95, 0x2b, 0x88, 0x49, 0x0c, 0x61, 0x2d, 0xac, 0xf8, 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, + 0xf8, 0x75, 0xc7, 0x26, 0x6d, 0xb5, 0xbb, 0x39, 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, + 0x84, 0x11, 0x36, 0xa2, 0x61, 0x76, 0xaa, 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, 0xa9, 0xea, + 0xb7, 0x41, 0x94, 0x00, 0x58, 0xaa, 0xc9, 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, 0x14, 0x01, 0xa8, 0xdc, 0x30, + 0x7c, 0x77, 0x5a, 0x20, 0x71, 0x5a, 0xa2, 0x3f, 0xaf, 0x13, 0x7e, 0xe8, 0xfd, 0x84, 0xa2, 0x5b, 0xcf, 0x25, 0xe9, + 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, 0x84, 0xc7, 0x04, 0x5e, 0x53, 0x73, 0x4e, 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, + 0x24, 0xb7, 0x80, 0x53, 0x3c, 0x54, 0xc8, 0xc1, 0x53, 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, + 0xde, 0xae, 0xf9, 0xe6, 0xaf, 0x57, 0xae, 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, 0x01, + 0x03, 0x38, 0x10, 0xbe, 0x7c, 0x42, 0x67, 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x13, 0x30, 0x11, + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x09, + 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x70, 0xdb, 0x21, 0x2b, 0x84, + 0x9a, 0x7a, 0xc3, 0xb1, 0x68, 0xfa, 0xc0, 0x00, 0x8b, 0x71, 0xab, 0x43, 0x9f, 0xb6, 0x7b, 0xb7, 0x1f, 0x20, 0x83, + 0xac, 0x0a, 0xb5, 0x0e, 0xad, 0xb6, 0x36, 0xef, 0x65, 0x17, 0x99, 0x86, 0x8a, 0x3d, 0xba, 0x0c, 0x53, 0x2e, 0xa3, + 0x75, 0xa0, 0xf3, 0x11, 0x3d, 0xe7, 0x65, 0x4b, 0xae, 0x3c, 0x42, 0x70, 0x11, 0xdc, 0xca, 0x83, 0xc0, 0xbe, 0x3e, + 0x97, 0x71, 0x84, 0x69, 0xd6, 0xa8, 0x27, 0x33, 0x9b, 0x3e, 0x17, 0x3c, 0xa0, 0x4c, 0x64, 0xca, 0x20, 0x37, 0xa4, + 0x11, 0xa9, 0x28, 0x8f, 0xb7, 0x18, 0x96, 0x69, 0x15, 0x0d, 0x74, 0x04, 0x75, 0x2a, 0x00, 0xc7, 0xa6, 0x6a, 0xbe, + 0xac, 0xb3, 0xf2, 0xfb, 0x06, 0x1b, 0x6c, 0x11, 0xbd, 0x96, 0xe2, 0x34, 0x74, 0x5d, 0xf5, 0x98, 0x8f, 0x3a, 0x8d, + 0x69, 0x08, 0x6f, 0x53, 0x12, 0x4e, 0x39, 0x80, 0x90, 0xce, 0x8b, 0x5e, 0x88, 0x23, 0x2d, 0xfd, 0x55, 0xfd, 0x58, + 0x3d, 0x39, 0x27, 0xb3, 0x7c, 0x57, 0xfe, 0x3b, 0xab, 0x62, 0x26, 0x60, 0xe2, 0xd0, 0xc8, 0xf4, 0x02, 0x23, 0x16, + 0xc3, 0x52, 0x5d, 0x9f, 0x05, 0x49, 0xa2, 0x71, 0x2d, 0x6d, 0x5b, 0x90, 0xdd, 0xbf, 0xe5, 0xa9, 0x2e, 0xf1, 0x85, + 0x8a, 0x8a, 0xb8, 0xa9, 0x6b, 0x13, 0xcc, 0x8d, 0x4c, 0x22, 0x41, 0xad, 0x32, 0x1e, 0x3b, 0x4b, 0x89, 0x37, 0x66, + 0xdf, 0x1e, 0xa5, 0x4a, 0x03, 0x52, 0x1c, 0xd9, 0x19, 0x79, 0x22, 0xd4, 0xa7, 0x3b, 0x47, 0x93, 0xa9, 0x0c, 0x03, + 0x6a, 0xd8, 0x5f, 0xfc, 0xc0, 0x75, 0x33, 0xe5, 0x26, 0xda, 0xf7, 0x4a, 0x77, 0xd8, 0xf1, 0x30, 0x80, 0x39, 0x38, + 0x1e, 0x86, 0x1d, 0x97, 0x00, 0x9c, 0x0e, 0xba, 0x00, 0x54, 0x8a, 0xc0, 0x12, 0x32, 0x6f, 0x3d, 0xc4, 0x15, 0xf9, + 0x50, 0xf8, 0xce, 0x95, 0x30, 0x82, 0x04, 0x71, 0x30, 0x82, 0x03, 0x5d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x05, + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x30, 0x32, 0x31, + 0x30, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, + 0x4e, 0x00, 0x54, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, 0x12, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, 0x00, + 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, + 0x32, 0x30, 0x31, 0x34, 0x35, 0x31, 0x33, 0x35, 0x5a, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x39, 0x31, 0x38, 0x31, 0x34, + 0x35, 0x31, 0x33, 0x35, 0x5a, 0x30, 0x7f, 0x31, 0x7d, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x0c, 0x00, + 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x07, 0x1e, + 0x1a, 0x00, 0x41, 0x00, 0x64, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74, 0x00, 0x72, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x72, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x05, 0x1e, 0x3c, 0x00, 0x31, + 0x00, 0x42, 0x00, 0x63, 0x00, 0x4b, 0x00, 0x65, 0x00, 0x64, 0x00, 0x79, 0x00, 0x32, 0x00, 0x6b, 0x00, 0x72, 0x00, + 0x4f, 0x00, 0x34, 0x00, 0x2f, 0x00, 0x4d, 0x00, 0x43, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x49, 0x00, 0x31, 0x00, 0x41, + 0x00, 0x48, 0x00, 0x5a, 0x00, 0x63, 0x00, 0x50, 0x00, 0x69, 0x00, 0x61, 0x00, 0x73, 0x00, 0x3d, 0x00, 0x0d, 0x00, + 0x0a, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x88, 0xad, 0x7c, 0x8f, + 0x8b, 0x82, 0x76, 0x5a, 0xbd, 0x8f, 0x6f, 0x62, 0x18, 0xe1, 0xd9, 0xaa, 0x41, 0xfd, 0xed, 0x68, 0x01, 0xc6, 0x34, + 0x35, 0xb0, 0x29, 0x04, 0xca, 0x4a, 0x4a, 0x1c, 0x7e, 0x80, 0x14, 0xf7, 0x8e, 0x77, 0xb8, 0x25, 0xff, 0x16, 0x47, + 0x6f, 0xbd, 0xe2, 0x34, 0x3d, 0x2e, 0x02, 0xb9, 0x53, 0xe4, 0x33, 0x75, 0xad, 0x73, 0x28, 0x80, 0xa0, 0x4d, 0xfc, + 0x6c, 0xc0, 0x22, 0x53, 0x1b, 0x2c, 0xf8, 0xf5, 0x01, 0x60, 0x19, 0x7e, 0x79, 0x19, 0x39, 0x8d, 0xb5, 0xce, 0x39, + 0x58, 0xdd, 0x55, 0x24, 0x3b, 0x55, 0x7b, 0x43, 0xc1, 0x7f, 0x14, 0x2f, 0xb0, 0x64, 0x3a, 0x54, 0x95, 0x2b, 0x88, + 0x49, 0x0c, 0x61, 0x2d, 0xac, 0xf8, 0x45, 0xf5, 0xda, 0x88, 0x18, 0x5f, 0xae, 0x42, 0xf8, 0x75, 0xc7, 0x26, 0x6d, + 0xb5, 0xbb, 0x39, 0x6f, 0xcc, 0x55, 0x1b, 0x32, 0x11, 0x38, 0x8d, 0xe4, 0xe9, 0x44, 0x84, 0x11, 0x36, 0xa2, 0x61, + 0x76, 0xaa, 0x4c, 0xb4, 0xe3, 0x55, 0x0f, 0xe4, 0x77, 0x8e, 0xde, 0xe3, 0xa9, 0xea, 0xb7, 0x41, 0x94, 0x00, 0x58, + 0xaa, 0xc9, 0x34, 0xa2, 0x98, 0xc6, 0x01, 0x1a, 0x76, 0x14, 0x01, 0xa8, 0xdc, 0x30, 0x7c, 0x77, 0x5a, 0x20, 0x71, + 0x5a, 0xa2, 0x3f, 0xaf, 0x13, 0x7e, 0xe8, 0xfd, 0x84, 0xa2, 0x5b, 0xcf, 0x25, 0xe9, 0xc7, 0x8f, 0xa8, 0xf2, 0x8b, + 0x84, 0xc7, 0x04, 0x5e, 0x53, 0x73, 0x4e, 0x0e, 0x89, 0xa3, 0x3c, 0xe7, 0x68, 0x5c, 0x24, 0xb7, 0x80, 0x53, 0x3c, + 0x54, 0xc8, 0xc1, 0x53, 0xaa, 0x71, 0x71, 0x3d, 0x36, 0x15, 0xd6, 0x6a, 0x9d, 0x7d, 0xde, 0xae, 0xf9, 0xe6, 0xaf, + 0x57, 0xae, 0xb9, 0x01, 0x96, 0x5d, 0xe0, 0x4d, 0xcd, 0xed, 0xc8, 0xd7, 0xf3, 0x01, 0x03, 0x38, 0x10, 0xbe, 0x7c, + 0x42, 0x67, 0x01, 0xa7, 0x23, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30, 0x82, 0x01, 0x43, 0x30, + 0x14, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x04, 0x01, 0x01, 0xff, 0x04, 0x04, 0x01, 0x00, + 0x05, 0x00, 0x30, 0x3c, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x02, 0x01, 0x01, 0xff, 0x04, + 0x2c, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, + 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x30, 0x56, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, + 0x05, 0x01, 0x01, 0xff, 0x04, 0x46, 0x00, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x24, 0x00, 0x16, 0x00, 0x3a, 0x00, 0x01, 0x00, 0x41, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x30, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x2d, 0x00, 0x53, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x64, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x6e, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x12, 0x06, 0x01, 0x01, 0xff, 0x04, 0x5e, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x37, 0x00, 0x38, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x36, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x38, 0x00, 0x36, 0x00, 0x37, 0x00, 0x30, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x2d, 0x00, 0x37, 0x00, 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x00, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x52, + 0x00, 0x4b, 0x00, 0x47, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x25, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x01, 0x01, 0xff, 0x04, 0x1b, 0x30, 0x19, 0xa1, 0x10, 0xa4, 0x0e, 0x52, 0x00, 0x4f, + 0x00, 0x44, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x00, 0x00, 0x82, 0x05, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x30, + 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x13, 0x1b, 0xdc, 0x89, + 0xd2, 0xfc, 0x54, 0x0c, 0xee, 0x82, 0x45, 0x68, 0x6a, 0x72, 0xc3, 0x3e, 0x17, 0x73, 0x96, 0x53, 0x44, 0x39, 0x50, + 0x0e, 0x0b, 0x9f, 0x95, 0xd6, 0x2c, 0x6b, 0x53, 0x14, 0x9c, 0xe5, 0x55, 0xed, 0x65, 0xdf, 0x2a, 0xeb, 0x5c, 0x64, + 0x85, 0x70, 0x1f, 0xbc, 0x96, 0xcf, 0xa3, 0x76, 0xb1, 0x72, 0x3b, 0xe1, 0xf6, 0xad, 0xad, 0xad, 0x2a, 0x14, 0xaf, + 0xba, 0xd0, 0xd6, 0xd5, 0x6d, 0x55, 0xec, 0x1e, 0xc3, 0x4b, 0xba, 0x06, 0x9c, 0x59, 0x78, 0x93, 0x64, 0x87, 0x4b, + 0x03, 0xf9, 0xee, 0x4c, 0xdd, 0x36, 0x5b, 0xbd, 0xd4, 0xe5, 0x4c, 0x4e, 0xda, 0x7b, 0xc1, 0xae, 0x23, 0x28, 0x9e, + 0x77, 0x6f, 0x0f, 0xe6, 0x94, 0xfe, 0x05, 0x22, 0x00, 0xab, 0x63, 0x5b, 0xe1, 0x82, 0x45, 0xa6, 0xec, 0x1f, 0x6f, + 0x2c, 0x7b, 0x56, 0xde, 0x78, 0x25, 0x7d, 0x10, 0x60, 0x0e, 0x53, 0x42, 0x4b, 0x6c, 0x7a, 0x6b, 0x5d, 0xc9, 0xd5, + 0xa6, 0xae, 0xc8, 0xc8, 0x52, 0x29, 0xd6, 0x42, 0x56, 0x02, 0xec, 0xf9, 0x23, 0xa8, 0x8c, 0x8d, 0x89, 0xc9, 0x7c, + 0x84, 0x07, 0xfc, 0x33, 0xe1, 0x1e, 0xea, 0xe2, 0x8f, 0x2b, 0xbe, 0x8f, 0xa9, 0xd3, 0xd1, 0xe1, 0x5e, 0x0b, 0xdc, + 0xb6, 0x43, 0x6e, 0x33, 0x0a, 0xf4, 0x2e, 0x9d, 0x0c, 0xc9, 0x58, 0x54, 0x34, 0xaa, 0xe1, 0xd2, 0xa2, 0xe4, 0x90, + 0x02, 0x23, 0x26, 0xa0, 0x92, 0x26, 0x26, 0x0a, 0x83, 0xb4, 0x4d, 0xd9, 0x4b, 0xef, 0xeb, 0x9d, 0xa9, 0x24, 0x3f, + 0x92, 0x8b, 0xdb, 0x04, 0x7b, 0x9d, 0x64, 0x91, 0xa4, 0x4b, 0xd2, 0x6e, 0x51, 0x05, 0x08, 0xc9, 0x91, 0xaf, 0x31, + 0x26, 0x55, 0x21, 0xb1, 0xea, 0xce, 0xa3, 0xa4, 0x0d, 0x5e, 0x4c, 0x46, 0xdb, 0x16, 0x2d, 0x98, 0xdc, 0x60, 0x19, + 0xb8, 0x1b, 0xb9, 0xcd, 0xfb, 0x31, 0x00, // license info ]; lazy_static! { @@ -290,9 +249,7 @@ lazy_static! { scope: "microsoft.com".to_string(), company_name: "Microsoft Corporation".to_string(), product_id: "A02".to_string(), - license_info: Vec::from( - &NEW_LICENSE_INFORMATION_BUFFER[NEW_LICENSE_INFORMATION_BUFFER.len() - 0x0799..] - ), + license_info: Vec::from(&NEW_LICENSE_INFORMATION_BUFFER[NEW_LICENSE_INFORMATION_BUFFER.len() - 0x0799..]), }; pub static ref SERVER_UPGRADE_LICENSE: ServerUpgradeLicense = ServerUpgradeLicense { license_header: LicenseHeader { @@ -302,8 +259,7 @@ lazy_static! { preamble_message_type: PreambleType::NewLicense, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (SERVER_UPGRADE_LICENSE_BUFFER.len() - - BASIC_SECURITY_HEADER_SIZE) as u16, + preamble_message_size: (SERVER_UPGRADE_LICENSE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) as u16, }, encrypted_license_info: Vec::from( &SERVER_UPGRADE_LICENSE_BUFFER[12..SERVER_UPGRADE_LICENSE_BUFFER.len() - MAC_SIZE] @@ -373,358 +329,295 @@ fn buffer_length_is_correct_for_server_upgrade_license() { #[test] fn upgrade_license_verifies_correctly() { let encrypted_license_info = vec![ - 0xa5, 0x62, 0xcc, 0xe8, 0x5f, 0x22, 0x79, 0x2b, 0xf3, 0xe7, 0x3c, 0x3, 0xde, 0xfe, 0x54, - 0x8c, 0xe1, 0xa4, 0xc2, 0x61, 0x81, 0x8b, 0x48, 0x38, 0x7d, 0x6, 0x4, 0x28, 0xbe, 0x53, - 0xc5, 0x30, 0x38, 0x3b, 0x1e, 0xed, 0x48, 0xc6, 0x2c, 0x88, 0x4, 0xbb, 0x58, 0xd7, 0x10, - 0xa8, 0x8e, 0xff, 0x89, 0x4a, 0xc0, 0x3a, 0x6, 0x82, 0xc4, 0xfe, 0x73, 0x2f, 0x39, 0xe7, - 0xb7, 0xba, 0xb7, 0xa8, 0xfb, 0xb6, 0x68, 0x8, 0x90, 0xc6, 0x2d, 0x99, 0xbb, 0x85, 0x17, - 0x48, 0xcd, 0x2d, 0xe1, 0xf7, 0x80, 0x26, 0x78, 0x6d, 0xce, 0x62, 0xed, 0x2, 0x7c, 0x8f, - 0x35, 0xde, 0x1c, 0xb6, 0xa, 0x95, 0xab, 0x38, 0xd9, 0x51, 0x8c, 0x49, 0x35, 0xce, 0xa6, - 0xd4, 0x1e, 0x3a, 0xe7, 0xd9, 0x7e, 0xd4, 0x2a, 0xf9, 0xfa, 0xb2, 0x8, 0xd2, 0xdf, 0xa9, - 0x51, 0x2d, 0x6e, 0x8c, 0x99, 0xd2, 0xb6, 0x7c, 0x30, 0xac, 0xa, 0x8, 0x2f, 0x29, 0xaa, - 0x15, 0xfe, 0x8e, 0x3f, 0x99, 0xd, 0x9a, 0xfb, 0x74, 0x68, 0xa9, 0x72, 0x1, 0xd, 0x5, 0x59, - 0x60, 0x8, 0xc3, 0x5b, 0x72, 0xe3, 0x47, 0x71, 0xbe, 0xa7, 0xa4, 0x79, 0x89, 0xde, 0xe2, - 0xd7, 0x5f, 0x97, 0x8e, 0x18, 0x2a, 0xd0, 0x92, 0x30, 0x51, 0xfa, 0xa7, 0xa9, 0x62, 0x7a, - 0x32, 0x8e, 0xf, 0xc5, 0x98, 0xd8, 0x24, 0x39, 0x5a, 0xca, 0xcf, 0x1d, 0x52, 0x62, 0x16, - 0x5b, 0xfe, 0x45, 0xfc, 0x56, 0xf0, 0x20, 0xb1, 0xb4, 0x16, 0x19, 0x1e, 0x19, 0xba, 0x5b, - 0xe, 0x73, 0x78, 0xd1, 0x5, 0xe5, 0xa7, 0xbc, 0x6, 0xca, 0x3b, 0x3b, 0x16, 0x48, 0xa4, - 0x52, 0x58, 0x20, 0x8, 0x91, 0x31, 0x17, 0x68, 0xd1, 0x2a, 0x88, 0x5b, 0xd2, 0xc1, 0xd3, - 0xd0, 0x88, 0xc5, 0x2c, 0xfa, 0xdc, 0x39, 0xf7, 0xeb, 0x72, 0x6d, 0x6b, 0x77, 0xd7, 0x57, - 0x6f, 0x62, 0x40, 0x12, 0xc0, 0xff, 0xb2, 0xaa, 0xbf, 0x35, 0x11, 0x30, 0xc7, 0xf4, 0x78, - 0xf8, 0x70, 0x40, 0xf0, 0xb6, 0x20, 0xab, 0xb, 0x94, 0x52, 0xd5, 0x53, 0x74, 0x3b, 0x4b, - 0xfb, 0x53, 0x83, 0xf1, 0x7f, 0x46, 0xef, 0x37, 0xe0, 0x44, 0xba, 0xc, 0x5a, 0x65, 0x7d, - 0x37, 0x1f, 0x66, 0xe, 0x6f, 0x75, 0x1a, 0x2d, 0xe9, 0xd6, 0x3f, 0x5, 0x74, 0xa9, 0x7, 0x5, - 0xc4, 0x4f, 0x6a, 0x8d, 0x5a, 0xad, 0x95, 0xf5, 0xf2, 0x2a, 0xd9, 0x32, 0x4c, 0x4d, 0x44, - 0x6a, 0xb4, 0x1e, 0xb7, 0x29, 0x2, 0xf4, 0x2f, 0x23, 0x52, 0x8a, 0xe6, 0xb0, 0x94, 0x29, - 0x7c, 0xf8, 0x9e, 0x99, 0xbe, 0x63, 0x32, 0xa9, 0x2c, 0xdf, 0xb7, 0x64, 0xe5, 0xc5, 0xa7, - 0x24, 0x75, 0xb1, 0x43, 0x6f, 0x7, 0xf3, 0x7e, 0x15, 0x9a, 0x8f, 0x5e, 0xc0, 0x15, 0x8f, - 0xcc, 0xfa, 0x3c, 0x9e, 0x66, 0xa, 0x84, 0xe4, 0x70, 0xb2, 0x20, 0x89, 0x4e, 0x1e, 0x29, - 0xbf, 0x74, 0x7f, 0xd1, 0x48, 0x64, 0x1d, 0xec, 0x3, 0xe9, 0x85, 0x76, 0xab, 0xcf, 0x93, - 0xfa, 0x6f, 0x4a, 0xf5, 0xa4, 0xc5, 0xf5, 0xc3, 0x6f, 0xd5, 0xae, 0x58, 0xa9, 0x94, 0x77, - 0x64, 0x75, 0x45, 0x12, 0x7d, 0x7a, 0x6d, 0x83, 0x2b, 0x23, 0xf9, 0x3e, 0x5e, 0x49, 0x57, - 0xbe, 0x4f, 0x64, 0x59, 0xcc, 0xae, 0x8f, 0xea, 0x7b, 0xa6, 0xe3, 0x6b, 0x8e, 0xab, 0xa, - 0xdf, 0x59, 0x8b, 0x5, 0x9b, 0x93, 0x32, 0xe8, 0x2e, 0x6b, 0xcc, 0xcb, 0x2e, 0xb8, 0x26, - 0x26, 0x1b, 0x42, 0x8c, 0xf3, 0xe2, 0xaf, 0xf9, 0xb3, 0xfe, 0x49, 0xf6, 0x8b, 0x9b, 0xea, - 0x64, 0xc2, 0x85, 0xca, 0x59, 0x5a, 0xfe, 0xe5, 0xc5, 0xd4, 0x7a, 0x0, 0x87, 0x4a, 0xb5, - 0xe8, 0xb4, 0xbb, 0x6a, 0x84, 0x87, 0x7e, 0x82, 0x44, 0x13, 0xcf, 0xf, 0xeb, 0xff, 0xd7, - 0xf0, 0xab, 0x56, 0x79, 0xa1, 0x33, 0xe, 0xf0, 0xa, 0x4b, 0x1, 0x81, 0x8c, 0xfe, 0x76, - 0xb2, 0xd1, 0x57, 0x3d, 0x26, 0x94, 0x36, 0x19, 0x74, 0x48, 0x48, 0xcd, 0xc3, 0xfc, 0xc0, - 0xe5, 0xb6, 0x2b, 0xef, 0xb2, 0x6a, 0x44, 0x64, 0x54, 0x42, 0x6e, 0x10, 0xf0, 0xfe, 0x6, - 0xbe, 0x1, 0x73, 0xde, 0x16, 0x2e, 0x4b, 0xa9, 0x5b, 0xe0, 0xa9, 0x1a, 0xda, 0xb9, 0xb3, - 0x7e, 0xaf, 0x63, 0x1, 0x6, 0x9a, 0x8, 0xce, 0x7e, 0x3a, 0x3f, 0x33, 0xb9, 0x41, 0x38, - 0xaf, 0x43, 0xa, 0x79, 0xe3, 0xf, 0x7c, 0x9a, 0x6c, 0xbd, 0x2c, 0xc3, 0xa2, 0xba, 0x50, - 0x98, 0xaa, 0x77, 0xc4, 0x2, 0x97, 0xc7, 0x60, 0xc4, 0x4d, 0x14, 0xf9, 0xa0, 0xe0, 0x96, - 0xa6, 0x27, 0x83, 0xbd, 0x96, 0x1b, 0xf6, 0xcf, 0x9f, 0xba, 0xe8, 0xac, 0x38, 0x4d, 0xf9, - 0xe0, 0x49, 0x75, 0xd1, 0xf8, 0x5a, 0xff, 0x43, 0x87, 0x5, 0x45, 0x18, 0x90, 0x8f, 0x53, - 0xf8, 0x8e, 0xf7, 0x3b, 0x2b, 0xfe, 0x2f, 0xcf, 0x5d, 0x73, 0x59, 0xd8, 0x8f, 0xc7, 0x3a, - 0x4f, 0xa7, 0x78, 0xfa, 0xc4, 0x68, 0xd, 0x95, 0xc7, 0x82, 0x6b, 0xa2, 0xb7, 0x1f, 0xdc, - 0xb8, 0xc9, 0x5d, 0x83, 0x27, 0x24, 0x84, 0x2f, 0xf4, 0x5f, 0xb, 0xa7, 0x3d, 0x0, 0x35, - 0xbb, 0x5c, 0xbb, 0xbf, 0x5e, 0x7c, 0xb4, 0xf4, 0x43, 0x13, 0x2b, 0x17, 0x6e, 0xef, 0xbf, - 0x19, 0x57, 0xa4, 0x29, 0xbc, 0xdf, 0xd9, 0x89, 0x7b, 0x2d, 0x54, 0x46, 0xd6, 0x44, 0x90, - 0x37, 0xea, 0xeb, 0x74, 0xb6, 0x9f, 0xe5, 0x4e, 0x57, 0x63, 0x43, 0xe5, 0xd7, 0xf, 0x72, - 0x65, 0x8c, 0x91, 0xe, 0xd4, 0xdd, 0x67, 0xce, 0x6a, 0xb5, 0xe2, 0x60, 0x38, 0x5a, 0xe8, - 0x3b, 0x55, 0xd3, 0x9a, 0x12, 0xdb, 0x57, 0x3, 0xb3, 0x64, 0xd9, 0x96, 0x9b, 0x7, 0xfd, - 0x25, 0x41, 0x8c, 0xbc, 0x20, 0x91, 0x11, 0x1, 0x5f, 0xfe, 0x44, 0x1e, 0x68, 0xc, 0x40, - 0xa4, 0xc3, 0xc2, 0xb7, 0x4d, 0x5c, 0xa1, 0x36, 0x6e, 0x52, 0xda, 0xed, 0x71, 0xc5, 0xce, - 0x27, 0x1e, 0xdc, 0xfd, 0xb8, 0xda, 0x70, 0xba, 0x7a, 0x33, 0x66, 0x91, 0x62, 0x46, 0xd1, - 0xae, 0x12, 0xc8, 0x90, 0xe4, 0xb4, 0x21, 0x2f, 0xa5, 0xb8, 0x6, 0x71, 0x26, 0x49, 0x37, - 0xe5, 0xc7, 0xd6, 0xa1, 0x4f, 0xb0, 0xe9, 0xdb, 0xce, 0xee, 0x6e, 0xc1, 0xb, 0x11, 0x5f, - 0x6f, 0x72, 0x23, 0xb5, 0xb6, 0x81, 0x4d, 0x7f, 0xe3, 0xe5, 0x41, 0xf4, 0x29, 0x55, 0x89, - 0xfd, 0x62, 0x5d, 0x11, 0xaa, 0xd, 0x94, 0x58, 0xe0, 0x9f, 0xd9, 0xb7, 0xc7, 0x47, 0x4e, - 0x70, 0xe6, 0x84, 0xb1, 0x5d, 0x3a, 0xd1, 0xed, 0x5, 0x61, 0x79, 0xe2, 0xe7, 0x5, 0x53, - 0x94, 0xe2, 0x44, 0x49, 0xc, 0xc4, 0x36, 0x85, 0x22, 0xb9, 0x7b, 0xa5, 0xb, 0x59, 0xeb, - 0xb8, 0x5d, 0x38, 0x4d, 0x6d, 0xe, 0x6b, 0x8a, 0x5f, 0x9f, 0x3b, 0x93, 0x5f, 0x26, 0xc3, - 0x33, 0x17, 0x21, 0x15, 0x3c, 0x92, 0xf3, 0x53, 0x48, 0x1c, 0x2c, 0x46, 0x48, 0xee, 0x9e, - 0xf1, 0x9d, 0x12, 0x0, 0xd2, 0x7c, 0x7b, 0xd1, 0xd5, 0x7c, 0xdc, 0x63, 0x2e, 0x22, 0x1e, - 0x16, 0x8a, 0x31, 0x3, 0xee, 0x24, 0x11, 0x53, 0x15, 0xef, 0x15, 0xf1, 0xcd, 0xc, 0x33, - 0x51, 0x20, 0xab, 0xab, 0xa3, 0x6d, 0xdb, 0x89, 0x12, 0xfe, 0xeb, 0x59, 0x75, 0x84, 0x28, - 0xf9, 0x62, 0x86, 0xfb, 0xd9, 0xca, 0xc6, 0x28, 0x88, 0x1b, 0x41, 0xfe, 0xf5, 0xe4, 0x6c, - 0x15, 0x1a, 0xa1, 0xe1, 0xe3, 0x9, 0xb0, 0x71, 0x16, 0xc2, 0xee, 0xb4, 0x54, 0x48, 0x9d, - 0x37, 0xa1, 0x33, 0x86, 0xdd, 0x3f, 0x6e, 0x9b, 0x3f, 0x99, 0xce, 0x11, 0x5c, 0xea, 0xc9, - 0xec, 0xaa, 0x17, 0xd6, 0x4d, 0x5c, 0x77, 0x99, 0x5, 0x23, 0xd4, 0x1d, 0xa1, 0xc1, 0x8c, - 0xec, 0x64, 0x90, 0xd5, 0xb3, 0xb8, 0x73, 0x88, 0x0, 0xe6, 0x41, 0x88, 0x2b, 0x77, 0x9, - 0x3, 0xa0, 0xe4, 0xa4, 0x93, 0xe7, 0xbe, 0xd7, 0xe9, 0x6c, 0x0, 0x15, 0xa6, 0xde, 0x38, - 0xda, 0x2b, 0x6d, 0xfb, 0xde, 0x0, 0x96, 0x75, 0x8e, 0x8c, 0xef, 0x94, 0xc4, 0x64, 0xcd, - 0xfc, 0xb7, 0xf8, 0x6, 0x5c, 0xcc, 0x41, 0xf6, 0xce, 0x2c, 0xf3, 0xba, 0x44, 0x9e, 0x9f, - 0xa8, 0xe6, 0xb3, 0x5a, 0xdb, 0x38, 0x5e, 0x53, 0x45, 0x4, 0xb2, 0x3e, 0xe7, 0xea, 0xc5, - 0x1b, 0x40, 0xaf, 0xd0, 0xb7, 0xd3, 0x6c, 0x9e, 0x30, 0xa1, 0x72, 0xc, 0xde, 0x66, 0x3b, - 0x9c, 0x75, 0xb7, 0x67, 0x48, 0x17, 0x8c, 0x97, 0xbc, 0xd2, 0x9, 0xc6, 0x94, 0xc9, 0x3f, - 0xbf, 0xd6, 0x1d, 0x5f, 0x63, 0x18, 0xf1, 0x95, 0x6c, 0x49, 0x37, 0x85, 0xb0, 0x3f, 0xa4, - 0x7a, 0x36, 0xa8, 0xeb, 0xe1, 0xce, 0x88, 0xcc, 0x37, 0x45, 0xa9, 0xda, 0x91, 0x96, 0xfa, - 0xc4, 0xda, 0x2e, 0xcc, 0x49, 0xe1, 0x98, 0xf1, 0x93, 0x28, 0x37, 0xa0, 0xf4, 0x5f, 0xda, - 0x50, 0xfc, 0x63, 0xef, 0x74, 0x29, 0xc0, 0x31, 0xfb, 0x6a, 0x9a, 0x19, 0x4f, 0x44, 0x54, - 0xcf, 0x8c, 0x77, 0xda, 0xf3, 0xaa, 0xe7, 0x1f, 0x5, 0xa1, 0x11, 0xf1, 0x1b, 0xa6, 0x77, - 0xbb, 0xc6, 0xa8, 0x59, 0x2c, 0x9d, 0xea, 0x98, 0x1a, 0x7c, 0x65, 0x79, 0x88, 0xdb, 0x30, - 0xa2, 0xe8, 0xa, 0xe1, 0x21, 0x82, 0x2f, 0x68, 0xb0, 0xe4, 0xce, 0xe7, 0x46, 0x82, 0x8d, - 0xb5, 0xea, 0xad, 0x26, 0xb6, 0xf4, 0xd6, 0xdd, 0x6b, 0xd3, 0x30, 0x84, 0x2e, 0xd8, 0x72, - 0x1, 0xec, 0x68, 0x49, 0x4f, 0xa2, 0x3f, 0xe1, 0xee, 0x38, 0x59, 0x69, 0x2f, 0xb, 0x92, - 0x14, 0xb9, 0xc5, 0x3b, 0xae, 0x0, 0xf5, 0x23, 0xd5, 0x3c, 0x1b, 0x9f, 0xef, 0xe1, 0x4c, - 0x40, 0xfd, 0x8, 0xba, 0x81, 0xbc, 0x3c, 0x6d, 0x59, 0x92, 0x4a, 0x5c, 0xa8, 0xc5, 0xfd, - 0x7b, 0x71, 0xa5, 0x13, 0xfb, 0xdd, 0x15, 0x99, 0x21, 0x42, 0x54, 0x66, 0x78, 0xc5, 0x75, - 0xac, 0xfb, 0xca, 0x71, 0x91, 0xae, 0x63, 0xf1, 0x67, 0x29, 0xc, 0x4b, 0xaf, 0x78, 0xad, - 0xd9, 0xc1, 0x9, 0xa7, 0x28, 0x14, 0x78, 0x50, 0xe3, 0x45, 0xfa, 0xb7, 0x41, 0x9f, 0x96, - 0xd4, 0x51, 0x56, 0xf7, 0xee, 0xdf, 0xf8, 0xa5, 0x36, 0x85, 0xa0, 0x72, 0xc9, 0x64, 0xb0, - 0x23, 0x1d, 0xd6, 0x62, 0x7, 0xf3, 0xf1, 0xfb, 0x41, 0x17, 0x32, 0xef, 0x56, 0x6d, 0x83, - 0xc4, 0x1f, 0x70, 0x8b, 0x73, 0x33, 0x62, 0xba, 0x47, 0x1, 0x24, 0x89, 0xed, 0xc, 0xc0, - 0x18, 0x9, 0x40, 0x93, 0xda, 0x5e, 0x39, 0x2f, 0xd4, 0x3f, 0x9d, 0xb3, 0xa4, 0xd, 0xd1, - 0x3b, 0xc4, 0xf4, 0xf7, 0x23, 0xa5, 0xb, 0x9a, 0x93, 0xae, 0xc9, 0x3, 0xf, 0x9b, 0xbb, - 0xb0, 0xc2, 0xb0, 0x41, 0x6e, 0xaf, 0xf2, 0xb9, 0xad, 0x9a, 0x71, 0xc1, 0x87, 0xf0, 0x0, - 0x53, 0xac, 0xad, 0x24, 0x4c, 0x6f, 0x14, 0xd2, 0xd1, 0x85, 0x56, 0xb2, 0x7c, 0xf9, 0xa2, - 0x92, 0x81, 0x43, 0x8e, 0xc8, 0xa4, 0x58, 0x79, 0x4a, 0xde, 0x8f, 0xac, 0xa1, 0xcb, 0xf2, - 0x9c, 0x38, 0x9c, 0xd6, 0xb2, 0x1a, 0xfa, 0x1c, 0xb5, 0x19, 0xe2, 0x13, 0x36, 0x41, 0x9e, - 0xc3, 0x73, 0xe9, 0x20, 0xf, 0xe3, 0xfd, 0xc, 0xa2, 0xd1, 0x77, 0xf8, 0xae, 0xb6, 0x11, - 0xd1, 0x55, 0x5b, 0xae, 0xd9, 0xb5, 0x2a, 0xd3, 0x96, 0x86, 0x77, 0xf7, 0xe2, 0x2, 0xa6, - 0xc2, 0x10, 0x37, 0x2f, 0x10, 0xff, 0xee, 0xc9, 0x29, 0xd1, 0xf4, 0x89, 0x4b, 0x89, 0x0, - 0xee, 0xb5, 0x9f, 0xd1, 0xad, 0x7b, 0x92, 0x17, 0x87, 0x85, 0x21, 0x59, 0xc7, 0xc3, 0xbf, - 0x86, 0xf6, 0xff, 0xd8, 0x8a, 0x47, 0xb9, 0x61, 0xa1, 0x52, 0xed, 0xf, 0x34, 0x17, 0xe2, - 0xcb, 0x92, 0x0, 0x16, 0x2a, 0x1f, 0x4a, 0x60, 0x54, 0xd7, 0x1d, 0x7a, 0x97, 0x4c, 0x91, - 0x41, 0x8f, 0x80, 0x68, 0xbd, 0xa5, 0x57, 0x26, 0xe4, 0xf7, 0x8a, 0xe0, 0x57, 0x76, 0x58, - 0xe, 0x14, 0xfc, 0xab, 0xae, 0x60, 0xa8, 0xb2, 0x62, 0xd0, 0x9, 0x4b, 0xbc, 0x8, 0x20, - 0x1f, 0x58, 0x9, 0x52, 0x8, 0xd4, 0xf5, 0xdb, 0x87, 0x1e, 0x1c, 0xaf, 0x47, 0xe, 0x8b, - 0x19, 0x3f, 0xf3, 0x7, 0x38, 0x5a, 0x5c, 0x29, 0x66, 0x54, 0x77, 0x22, 0x4f, 0xb6, 0x5d, - 0xc6, 0xc9, 0x35, 0x44, 0xe9, 0xeb, 0x33, 0x8a, 0x12, 0x77, 0xc2, 0x1e, 0x83, 0xca, 0xfa, - 0x1a, 0x2f, 0xef, 0x13, 0x6f, 0x70, 0xa6, 0x1f, 0x2e, 0x61, 0x83, 0xf4, 0x10, 0xb8, 0x1, - 0xa4, 0xb7, 0x9, 0xaa, 0x32, 0x36, 0x77, 0x39, 0x62, 0xfa, 0x7b, 0x19, 0x6b, 0x97, 0xe0, - 0xd2, 0x1, 0xfd, 0x33, 0x60, 0x8, 0xe0, 0x4, 0xdf, 0xa7, 0x86, 0xd1, 0x8d, 0xc4, 0xf6, - 0x9c, 0xed, 0x77, 0x68, 0x9d, 0xee, 0xd0, 0x67, 0xc7, 0xce, 0xd7, 0xf2, 0x2b, 0x2f, 0xe2, - 0x82, 0x80, 0x89, 0x4b, 0x4c, 0x35, 0xd8, 0xf3, 0xca, 0x8a, 0xd5, 0x37, 0xe, 0xf4, 0xac, - 0x2f, 0xd7, 0xc2, 0x34, 0x39, 0x81, 0xce, 0x95, 0x65, 0x11, 0x2, 0xfa, 0xa0, 0x20, 0x96, - 0xd2, 0x7b, 0x42, 0x6b, 0xc8, 0x91, 0x9d, 0xe8, 0xc7, 0x62, 0xc7, 0x32, 0x6b, 0x66, 0x59, - 0xe1, 0xca, 0xf7, 0x42, 0x4a, 0x6c, 0xca, 0x72, 0xe, 0x82, 0x3, 0x93, 0xd6, 0xdf, 0xa5, - 0xd3, 0xf6, 0xa6, 0x62, 0xec, 0x85, 0x12, 0x7a, 0xde, 0x1, 0xd5, 0x13, 0x47, 0x23, 0x3e, - 0xda, 0xcb, 0x3, 0x72, 0xde, 0x5e, 0x70, 0x10, 0x52, 0x7e, 0x62, 0x84, 0x1e, 0x66, 0x37, - 0x3a, 0x48, 0x5d, 0x96, 0x2b, 0x8f, 0x1, 0x16, 0xb, 0x0, 0xff, 0x1d, 0xf7, 0xe8, 0xa2, - 0xc7, 0xa1, 0xc9, 0x39, 0x8b, 0x75, 0x59, 0x8d, 0x33, 0x5e, 0x54, 0xae, 0xa8, 0x2b, 0x63, - 0x89, 0x5e, 0x7a, 0x3e, 0x35, 0x5c, 0x39, 0x9c, 0xfc, 0xa8, 0x1b, 0x33, 0x4b, 0xfe, 0xf3, - 0xa7, 0x2, 0xe5, 0xc3, 0x6b, 0x17, 0xc1, 0xb5, 0xdb, 0x26, 0x51, 0xff, 0x58, 0x4a, 0x3, - 0x52, 0x1e, 0xde, 0x8, 0x96, 0x3a, 0x7d, 0x14, 0x63, 0x80, 0xca, 0x5, 0x7f, 0x24, 0x73, - 0x65, 0xb7, 0x70, 0x5a, 0x4f, 0xea, 0x6f, 0x8d, 0xa6, 0xf0, 0x6f, 0x60, 0xdb, 0x34, 0x77, - 0xef, 0xa0, 0x21, 0x17, 0xa2, 0x95, 0x4a, 0x73, 0xad, 0x68, 0xc1, 0xf3, 0xad, 0x67, 0x68, - 0x30, 0xa0, 0xda, 0x98, 0xfb, 0x15, 0xd7, 0x28, 0x9b, 0xb3, 0xf0, 0x34, 0x92, 0xb5, 0x3, - 0x12, 0x0, 0xcb, 0x54, 0x98, 0xf2, 0x75, 0x1d, 0x7a, 0x38, 0x5d, 0x3, 0xb1, 0xa9, 0x70, - 0xc7, 0x5a, 0x1d, 0x25, 0x73, 0xfc, 0xfb, 0x13, 0x6d, 0x5b, 0xe9, 0xb4, 0x5, 0xd2, 0xd, - 0x1a, 0xd2, 0x38, 0x1c, 0x75, 0x19, 0xa, 0x9b, 0x16, 0x9, 0xfb, 0x1a, 0xb2, 0xe2, 0xe, - 0x85, 0x6e, 0x32, 0x9, 0x1b, 0xb5, 0xc3, 0x3b, 0x78, 0x41, 0xf0, 0x92, 0xeb, 0xcd, 0x9, - 0xde, 0x61, 0x30, 0x1f, 0xe2, 0x24, 0x80, 0x50, 0xa5, 0xe, 0x9, 0x18, 0xe, 0xe5, 0x70, - 0x1f, 0xde, 0x6c, 0x51, 0x3e, 0xdd, 0x9e, 0xad, 0xc5, 0x79, 0xd3, 0x2e, 0x9, 0x7, 0xa7, - 0x52, 0xb7, 0x2c, 0x7f, 0xdb, 0x66, 0xf8, 0xa2, 0xea, 0x47, 0xfe, 0xe2, 0x75, 0x77, 0xb3, - 0xa9, 0x69, 0x98, 0xa3, 0x1a, 0xd9, 0xec, 0x5e, 0xf6, 0x2b, 0x58, 0x8c, 0xd0, 0x58, 0x3f, - 0x74, 0x7e, 0x6f, 0xe2, 0xe3, 0x6f, 0xa8, 0xc8, 0x1a, 0xf7, 0x7f, 0xbb, 0x7, 0xca, 0x3, - 0xfa, 0xab, 0xd8, 0x28, 0x15, 0x90, 0x89, 0x89, 0xf, 0xc4, 0xe2, 0xf8, 0xa6, 0xb7, 0x92, - 0x59, 0x24, 0x53, 0x15, 0x25, 0xd5, 0xf2, 0xb, 0xc2, 0xf0, 0x81, 0x16, 0x39, 0xcb, 0x7b, - 0xae, 0x1e, 0xc1, 0x5d, 0x16, 0xb8, 0x6d, 0x30, 0xdc, 0xf0, 0x17, 0x99, 0x8d, 0xd0, 0xab, - 0x2a, 0xc8, 0x24, 0x3a, 0xd7, 0xe4, 0x16, 0x50, 0xb7, 0x36, 0x6, 0x99, 0x90, 0x91, 0x84, - 0xad, 0xf1, 0xb, 0xc2, 0xec, 0x15, 0x3a, 0x6e, 0xe8, 0x6, 0x5e, 0xcf, 0x1a, 0x82, 0x15, - 0xd8, 0x83, 0x60, 0x4c, 0xe8, 0x2d, 0x68, 0x7b, 0x6, 0x87, 0xd0, 0xe2, 0xec, 0x1f, 0x56, - 0xb1, 0xc7, 0xa8, 0xad, 0x7e, 0xf2, 0x25, 0x59, 0xbb, 0x2c, 0xc0, 0x2e, 0x56, 0x68, 0x2c, - 0xa0, 0xd8, 0x27, 0xd5, 0x9d, 0xb1, 0x9c, 0x3, 0xa3, 0xa7, 0xb8, 0xde, 0x5d, 0x62, 0xe, - 0x8b, 0xb6, 0x7a, 0xf2, 0x8, 0x8, 0x51, 0xe8, 0xe3, 0xa4, 0x13, 0x20, 0xcf, 0xa7, 0xbf, - 0x3c, 0x62, 0xbc, 0xad, 0x16, 0xba, 0x84, 0xb8, 0xab, 0xac, 0x15, 0x8e, 0x29, 0x33, 0x12, - 0xd0, 0x83, 0x21, 0x5f, 0x87, 0x5a, 0x2f, 0x74, 0xd4, 0x91, 0xf8, 0x3f, 0x6d, 0xa9, 0xa5, - 0x62, 0xaa, 0x47, 0x62, 0x58, 0xf1, 0x16, 0x36, 0x81, 0x38, 0xc2, 0x21, 0xba, 0x23, 0x1, - 0x27, 0x1f, 0xad, 0x7f, 0x4a, 0x3e, 0xca, 0x9d, 0x9e, 0x4e, 0xea, 0xeb, 0xa4, 0xd7, 0xd, - 0xf3, 0xa0, 0x12, 0x64, 0xdc, 0xf4, 0x4e, 0xa7, 0x45, 0x55, 0x97, 0xef, 0x75, 0x78, 0x91, - 0x6e, 0x66, 0x72, 0xe4, 0x84, 0xe5, 0xc4, 0x72, 0xc4, 0xc0, 0x3, 0x83, 0xd4, 0x31, 0xc4, - 0x49, 0x43, 0xe1, 0x79, 0x7a, 0x70, 0xe2, 0x40, 0xa1, 0x51, 0x56, 0xae, 0x11, 0xfb, 0x7b, - 0x89, 0x8a, 0xdd, 0x55, 0xa4, 0x18, 0xb6, 0xee, 0x6, 0xd7, 0x8a, 0xc1, 0x89, 0xbf, 0x2d, - 0xd7, 0xbf, 0x18, 0x14, 0xb0, 0xec, 0xed, 0xe1, 0x20, 0x18, 0xb6, 0x21, 0x6b, 0x3c, 0xe0, - 0x9f, 0x92, 0xed, 0xb4, 0x40, 0xd9, 0x77, 0x32, 0x50, 0x85, 0x25, 0x39, 0x2c, 0x37, 0x31, - 0x4c, 0x9e, 0xbf, 0xe4, 0xfc, 0x47, 0xe7, 0xc4, 0xaf, 0x4d, 0x7e, 0x9d, 0x80, 0x34, 0x60, - 0xc5, 0xca, 0x74, 0xef, 0x38, 0x4, 0x71, 0xf3, 0x1b, 0x99, 0x3f, 0xb5, 0xa8, 0x10, 0xf, - 0xef, 0x84, 0x1, 0xe1, 0x9, 0x46, 0xe7, 0xe2, 0x56, 0x19, 0x7d, 0x6a, 0x9f, 0x21, 0x7a, - 0xd1, 0x82, 0x59, 0x7c, 0x9a, 0x13, 0xe2, 0x7f, 0x1e, 0x71, 0xcb, 0xf5, 0xf6, 0x47, 0x8, - 0x30, 0xa3, 0x3e, 0x1f, 0x2e, 0x26, 0x80, 0xe6, 0x1a, 0x62, 0x24, 0x1f, 0x18, 0x11, 0xf, - 0xcf, 0xa7, 0x76, 0x57, 0x3f, 0x7, 0xba, 0xbc, 0x26, 0xdc, 0x49, 0x38, 0x53, 0x71, 0xdc, - 0x5b, 0xc3, 0x9f, 0x17, 0x44, 0xe9, 0x58, 0xde, 0x97, 0xbf, 0x5a, 0xf, 0x69, 0x57, 0xb7, - 0x3b, 0xda, 0x9c, 0x6c, 0x3a, 0x9c, 0x47, 0x2d, 0xd9, 0xc3, 0x3a, 0xbf, 0x4c, 0x10, 0x75, - 0x33, 0x3b, 0x83, 0x28, 0x70, 0xc7, 0xd7, 0x6e, 0x2f, 0xeb, 0xd3, 0xe5, 0x39, 0x20, 0x8f, - 0x6f, 0x9f, 0xad, 0x19, 0xe3, 0x3f, 0x40, 0xb0, 0x14, 0xef, 0x9c, 0xfd, 0x91, 0xf3, 0xf7, - 0x7f, 0x94, 0x47, 0xbb, 0x22, 0xc7, 0x68, 0xc9, 0xf1, 0x4b, 0x4b, 0x46, 0x2c, 0xa2, 0x6f, - 0xd3, 0xc0, 0x48, 0xef, 0xde, 0xde, 0xc4, 0x55, 0x8f, 0xfd, 0xff, 0x12, 0xd0, 0x38, 0xc0, - 0x4, 0xe9, 0x1b, 0x73, 0x5, 0xe0, 0x10, 0x53, 0xd7, 0x4b, 0x84, 0x80, 0xab, 0xea, 0xf5, - 0xd9, 0xb4, 0x6f, 0xbf, 0xea, 0x25, 0x90, 0xcf, 0x4f, 0x15, 0xc4, 0xd3, 0xa3, 0x83, 0x59, - 0xf, 0x38, 0x66, 0xfa, 0xb8, 0xec, 0xde, 0xdc, 0x31, 0x47, 0xbf, 0x8b, 0xfe, 0x27, 0x28, - 0x70, 0x79, 0xf6, 0x44, 0x7f, 0xcb, 0xf7, 0xab, 0x55, 0x56, 0x9b, 0xd4, 0x9a, 0xbf, 0xa3, - 0xa9, 0xbd, 0xc2, 0xb8, 0x1c, 0x85, 0x3c, 0x13, 0x5e, 0xd7, 0x97, 0xec, 0xf9, 0x94, 0x5f, - 0xf8, 0xa0, 0xb9, 0x4d, 0x2, 0x8e, 0x9f, 0x64, 0xbe, 0x69, 0xb0, 0x94, 0x92, 0xbd, 0xd8, - 0xfa, 0xc9, 0x7, 0x29, 0x7a, 0x0, 0x2f, 0xe8, 0x9f, 0x33, 0xb4, 0xcb, 0x3f, 0xd7, 0x6c, - 0x65, 0xf8, 0x15, 0xa7, 0xa7, 0x5, 0x4a, 0xb7, 0x6c, 0x28, 0x5c, 0xf3, 0x3, 0xb1, 0x80, - 0x93, 0x86, 0xf9, 0xdf, 0x4b, 0x56, 0x96, 0x36, 0xfd, 0x36, 0xc9, 0xe4, 0xa2, 0x24, 0x34, - 0x40, 0x54, 0x35, 0xbe, 0x26, 0x94, 0xd0, 0xd4, 0xd4, 0x55, 0xb4, 0x47, 0xf8, 0xe4, 0x7c, - 0xe5, 0x37, 0xdf, 0x11, 0xba, 0xea, 0xd, 0x92, 0xed, 0x92, 0x93, 0x7c, 0xa0, 0xad, 0x89, - 0xd4, 0x82, 0xc5, 0x74, 0xfc, 0x56, 0x69, 0x24, 0xf8, 0xe6, 0xfa, 0xc2, 0xd9, 0x7, 0x47, - 0xb8, 0x4e, 0x9e, 0x23, 0x13, 0x16, 0xe0, 0xa1, 0xcd, 0x2f, 0x69, 0x62, 0x4c, 0xc0, 0x72, - 0x22, 0x86, 0x2f, 0x3a, 0x1c, 0xb4, 0x73, 0x56, 0x88, 0xe6, 0x82, 0xfd, 0x2f, 0x2f, 0xc0, - 0x30, 0x7f, 0x72, 0x23, 0xa7, 0x94, 0xc2, 0x6e, 0xf4, 0x2, 0xf6, 0xa3, 0xe0, 0x5d, 0xc, - 0x4c, 0xf7, 0x4e, 0x60, 0x12, 0x2, 0xca, 0x40, 0xc7, 0x1a, 0x4e, 0x3c, 0x7c, 0xce, 0xd8, - 0x1b, 0xba, 0x5, 0x89, 0xf, 0xec, 0xfe, 0x4, 0x96, 0xd, 0x99, 0x2b, 0xb6, 0xbd, 0x6e, 0xa5, - 0x6d, 0x28, 0xd4, 0xc0, 0x19, 0xe3, 0x91, 0x49, 0xe1, 0xa7, 0x84, 0xc8, 0xe7, 0x77, 0x56, - 0x57, 0x94, 0xa2, 0x2e, 0x49, 0xf7, 0x8b, 0x1c, 0x8f, 0x85, 0x75, 0x8f, 0x69, 0x97, 0x6b, - 0xc2, 0x4d, 0xd9, 0x88, 0x23, 0xdc, 0x50, 0xb3, 0xa, 0xbb, 0x19, 0xbc, 0xe0, 0x21, 0x76, - 0xde, 0xe9, 0x46, 0x5d, 0x32, 0x6b, 0x8d, 0x4b, 0x99, 0xd4, 0x85, 0xc, 0x77, 0x29, 0x1f, - 0x6b, 0x8f, 0xf2, 0x2, 0x89, 0xef, 0x63, 0xab, 0xc, 0xe1, 0xd6, 0x72, 0xe3, 0xdf, 0x88, - 0xd0, 0x2c, 0xdf, 0xae, 0xd6, 0xf9, 0x29, 0x7, 0x94, 0x93, 0x10, 0x66, 0x57, 0x78, 0x6b, - 0x8e, 0x84, 0x11, 0x6d, 0x2b, 0xe5, 0x8a, 0xa5, 0x65, 0x98, 0xfc, 0x92, 0x47, 0x1d, 0xfd, - 0x4b, 0x41, 0xdc, 0x87, 0x42, 0xf8, 0xbc, 0x9e, 0xc1, 0xfa, 0x91, 0x81, 0x11, 0xcc, 0x92, - 0x2f, 0xdb, 0xd8, 0xf8, 0x2e, 0x56, 0x6f, 0xbe, 0xf8, 0x6c, 0xf8, 0x5f, 0x2d, 0x61, 0xb4, - 0x4c, 0x7c, 0x6c, 0x11, 0x46, 0x4a, 0x63, 0x51, 0x55, 0x5a, 0xf5, 0xfa, 0x26, 0xc7, 0x45, - 0x3, 0x64, 0x84, 0xcb, 0x69, 0x36, 0x9b, 0x5, 0x1f, 0x1c, 0x10, 0x68, 0xbc, 0x12, 0x70, - 0xde, 0x83, 0xdf, 0x94, 0x9b, 0x94, 0x6f, 0xae, 0xdb, 0xe8, 0xef, 0xd7, 0x6c, 0x23, 0xd0, - 0x6f, 0x8c, 0xc5, 0x6b, 0x37, 0xad, 0x72, 0x16, 0x69, 0x77, 0x95, 0xb4, 0x6d, 0x6e, 0x1, - 0x9f, 0xf0, 0xbd, 0xd5, 0x1f, 0x5b, 0x7a, 0xc5, 0xe3, 0x2d, 0xf7, 0x3e, 0xd1, 0xce, 0xbe, - 0x89, 0x34, 0xfa, 0x3d, 0x93, 0x6c, 0x90, 0x53, 0x3d, 0xfd, 0x7, 0xc4, 0xb3, 0xb, 0x9a, - 0x22, 0xba, 0xaa, 0x50, 0x20, 0xaa, 0x4f, 0x72, 0xb6, 0xf9, 0xed, 0xc0, 0x89, 0xef, 0xab, - 0x66, 0x5a, 0x47, 0x3, 0x6f, 0xc7, 0xb4, 0x10, 0x0, 0x89, 0x7, 0x4f, 0xa, 0xbe, 0x64, 0xfb, - 0x5b, 0x33, 0x28, 0xbe, 0x5a, 0xe6, 0x9c, 0x1b, 0x94, 0x5f, 0x1, 0x88, 0x6, 0xbc, 0xbf, - 0x81, 0x98, 0x97, 0x54, 0xe7, 0x52, 0xa0, 0xa, 0x37, 0xf, 0xf0, 0x3f, 0xba, 0x7, 0xc1, - 0xbc, 0xbe, 0x36, 0x31, 0x94, 0x5d, 0x7a, 0x8c, 0x2d, 0xbe, 0xc, 0x2c, 0xb2, 0x71, 0xa2, - 0x73, 0xb4, 0xfc, 0xd2, 0xc4, 0x24, 0x5, 0x64, 0xd1, 0x15, 0xf6, 0x61, 0x7c, 0x60, 0x90, - 0x49, 0x8c, 0x69, 0x68, 0xa3, 0x73, 0xf9, 0x1, 0x7, 0xfa, 0x4f, 0x2a, 0xd0, 0x52, 0x84, - 0x7c, 0x5c, 0x47, 0x78, 0x3c, 0xac, 0xc4, 0x5c, 0x18, 0x32, 0x6c, 0x5e, 0xbb, 0xdb, 0xbd, - 0x3c, 0x84, 0xc9, 0x9f, 0x65, 0xab, 0x3f, 0xa, 0x53, 0x2c, 0xa1, 0x50, 0x4a, 0x45, 0x62, - 0x46, 0xaa, 0xb4, 0xe8, 0x49, 0x11, 0x33, 0xa1, 0x32, 0x30, 0x2d, 0xf0, 0xb2, 0x2f, 0x60, - 0x68, 0x4a, 0x3b, 0x27, 0xd3, 0xb, 0xfa, 0x53, 0xc8, 0xdb, 0x99, 0xea, 0x8c, 0x67, 0x57, - 0x25, 0x26, 0xe, 0xc5, 0x98, 0xd0, 0xaf, 0xff, 0xac, 0x83, 0x85, 0x8f, 0x21, 0x4b, 0x91, - 0xdd, 0x79, 0x40, 0x9e, 0x36, 0x1f, 0x28, 0x62, 0xc9, 0xd3, 0x32, 0xe8, 0xc0, 0x62, 0x1b, - 0x5b, 0xd5, 0x16, 0xf9, 0x2f, 0xa5, 0x46, 0x73, 0xb3, 0x0, 0xc9, 0xbf, 0x3c, 0x31, 0x60, - 0x3a, 0xbf, 0xc3, 0xdd, 0xc9, 0xb0, 0x8b, 0x7c, 0x2, 0x39, 0x88, 0x37, 0x15, 0xfb, 0x81, - 0x59, 0x80, 0xb2, 0xd9, 0x62, 0xf, 0xac, 0x85, 0x82, 0x8a, 0x49, 0x4, 0xea, 0x4a, 0x1d, - 0xb2, 0x29, 0x81, 0xba, 0xd7, 0xe4, 0x1a, 0x7f, 0x5d, 0x95, 0xf8, 0xcc, 0x70, 0x33, 0x79, - 0x91, 0x85, 0xf0, 0xc, 0xbb, 0x62, 0x3a, 0xcb, 0x1a, 0x6, 0x59, 0x88, 0x73, 0xb7, 0x54, - 0xf6, 0x2a, 0xdb, 0xb4, 0xd3, 0x6a, 0xe2, 0x72, 0x33, 0xf5, 0x55, 0xa9, 0x9c, 0xb8, 0xb6, - 0xf2, 0x69, 0x65, 0xde, 0xc5, 0xf9, 0x9a, 0x25, 0xe6, 0x9b, 0x38, 0x74, 0xe0, 0x17, 0x47, - 0x96, 0x84, 0xce, 0x6c, 0x35, 0xb7, 0xfd, 0x90, 0x8e, 0xaf, 0x48, 0x41, 0x17, 0xd8, 0xd8, - 0xe0, 0x45, 0x1, 0x1b, 0xea, 0x75, 0x5b, 0x4, 0xfb, 0xf2, 0x8d, 0x47, 0xfd, 0x4f, 0xf1, - 0xd0, 0xd1, 0x33, 0xab, 0xce, 0x57, 0xd1, 0x3f, 0xde, 0xc, 0xf1, 0xbe, 0x2b, 0x81, 0xe2, - 0x45, 0x4a, 0x2f, 0x25, 0x16, 0xf7, 0x9f, 0x8, 0x98, 0x7f, 0x4a, 0x31, 0xd7, 0x66, 0xf9, - 0xa0, 0x5c, 0x4e, 0xee, 0x4f, 0x3f, 0xbc, 0x4a, 0x4a, 0xcd, 0x2c, 0x28, 0x25, 0xbc, 0xe1, - 0x47, 0x8d, 0xd2, 0x92, 0x5, 0xa, 0x67, 0xb2, 0x49, 0x4f, 0x47, 0xe8, 0xe5, 0x63, 0x92, - 0xe0, 0xd2, 0x35, 0xed, 0xd9, 0xb6, 0x7b, 0x37, 0x7f, 0x20, 0xc4, 0xe4, 0xc4, 0x20, 0xbb, - 0xd, 0x88, 0x29, 0xbe, 0x68, 0x87, 0xf, 0xfe, 0xb, 0xff, 0x2, 0x6b, 0xca, 0x47, 0x40, 0x80, - 0x15, 0xc7, 0xcc, 0x7f, 0x31, 0x20, 0x62, 0x59, 0x51, 0xe5, 0x35, 0x57, 0x27, 0x6b, 0x34, - 0x3e, 0x1c, 0xa1, 0x32, 0x3b, 0x8b, 0xeb, 0x6a, 0xa6, 0x4a, 0xe8, 0x7d, 0xaa, 0x98, 0x4c, - 0x6e, 0x97, 0x1c, 0x5b, 0x15, 0xef, 0x57, 0xd7, 0x4f, 0x8a, 0x5f, 0xde, 0x49, 0xc, 0x80, - 0xa5, 0xcb, 0x19, 0x85, 0xe5, 0xbe, 0x16, 0x32, 0x6b, 0xd1, 0xf2, 0xe0, 0xff, 0x58, 0x31, - 0xe5, 0x55, 0x72, 0xbf, 0xa5, 0x2e, 0x7f, 0x9, 0x2c, 0x77, 0xc4, 0xec, 0x75, 0xcd, 0x11, - 0x31, 0x78, 0x39, 0xed, 0x79, 0x7d, 0x3, 0x70, 0xac, 0xa3, 0x2a, 0x8f, 0xe7, 0x7b, 0x2, - 0xa0, 0x1b, 0x1c, 0xf9, 0x36, 0x36, 0x91, 0x31, 0x71, 0x80, 0x3a, 0x2e, 0x6d, 0x2d, 0x73, - 0xf1, 0x8c, 0xfe, 0x6, 0x2c, 0x1c, 0x69, 0x8f, 0xae, 0x46, 0x5a, 0xdc, 0xfa, 0x3b, 0x3d, - 0x2a, 0x50, 0xd1, 0x3f, 0xd0, 0xa5, 0xfb, 0x21, 0xfe, 0xc8, 0x60, 0x6f, 0x71, 0xb8, 0xa9, - 0xbf, 0xe5, 0x35, 0x80, 0x3b, 0xde, 0xb4, 0xdf, 0xca, 0xa0, 0x1e, 0xbc, 0x9b, 0xcb, 0xc2, - 0x9e, 0x83, 0x44, 0xf9, 0x9f, 0x92, 0x57, 0x22, 0x2f, 0x19, 0xa3, 0x73, 0x85, 0x62, 0x86, - 0x2d, 0xce, 0xf6, 0x3d, 0xb3, 0x8e, 0xeb, 0xaa, 0x9e, 0xe6, 0x1f, 0xf5, 0x51, 0x3e, 0xf3, - 0xb8, 0xd9, 0x44, 0x55, 0x1e, 0xbe, 0x89, 0x2f, 0x6a, 0xb5, 0xfb, 0x83, 0xc7, 0x55, 0x5c, - 0xaa, 0xa0, 0x1c, 0x15, 0x3e, 0xd4, 0x2e, 0x2e, 0x36, 0x69, 0x2f, 0x8e, 0xcb, 0xc7, 0xea, - 0x3d, 0x79, 0x2e, 0xf0, 0x2e, 0xa6, 0xd8, 0x39, 0x3b, 0xa4, 0x99, 0xae, 0xc, 0x8f, 0x3e, - 0x77, 0x2a, 0xf3, 0x93, 0x8d, 0xdc, 0x79, 0xbe, 0x79, 0x1c, 0xe6, 0xf9, 0xc4, 0x78, 0x38, - 0xce, 0x93, 0x96, 0xf7, 0x3a, 0xa5, 0x54, 0x70, 0xe6, 0x6f, 0x8a, 0x61, 0x3e, 0xdf, 0xd9, - 0x72, 0x2f, 0x2e, 0x3d, 0xeb, 0xb6, 0x29, 0xc6, 0x87, 0xb2, 0xf9, 0x72, 0x2, 0x56, 0x67, - 0x74, 0xec, 0xe7, 0xa2, 0xd2, 0xc2, 0x9f, 0xa, 0x9e, 0x22, 0xd2, 0xf5, 0xf7, 0x74, 0x24, - 0x4f, 0xfc, 0x8f, 0xdf, 0xab, 0xe0, 0x34, 0x80, 0xa0, 0x82, 0xab, 0x44, 0x19, 0x28, 0x75, - 0x74, 0xe5, 0x1b, 0x75, 0xff, 0xfc, 0x94, 0x4d, 0x80, 0xea, 0x94, 0x85, 0xd6, 0xf5, 0x8b, - 0x39, 0x51, 0x7c, 0x12, 0x3f, 0x6a, 0xf0, 0xa1, 0xed, 0xfd, 0x52, 0x2d, 0x90, 0xa8, 0x4b, - 0x2b, 0xe1, 0x3b, 0x37, 0xc4, 0xe8, 0x98, 0xfb, 0x1c, 0x5f, 0xdc, 0x5d, 0x2f, 0xde, 0xae, - 0xd0, 0xa, 0x5c, 0x3a, 0x1f, 0xce, 0x37, 0x7f, 0x9d, 0x84, 0xb9, 0xc7, 0xe2, 0xfc, 0xf7, - 0x73, 0xee, 0x79, 0xbf, 0x6a, 0x62, 0x6a, 0x8c, 0x0, 0x54, 0x3e, 0xca, 0x66, 0x7e, 0xf0, - 0xf9, 0x5c, 0xd3, 0xc9, 0xd, 0xd8, 0x85, 0x3e, 0xa7, 0x19, 0x91, 0xf5, 0x90, 0x51, 0xbb, - 0xfb, 0x63, 0xec, 0x25, 0x12, 0x14, 0x3, 0xce, 0xde, 0x7, 0xf7, 0x59, 0x8f, 0x73, 0xb4, - 0xe2, 0xf1, 0x32, 0x35, 0x21, 0x2f, 0x0, 0x61, 0x69, 0x5e, 0x2f, 0x12, 0x4f, 0x85, 0xbc, - 0xb3, 0x14, 0x85, 0x1f, 0x54, 0x6d, 0xa7, 0xfe, 0x47, 0xe8, 0xc4, 0xb2, 0x3f, 0xf4, 0x15, - 0xf8, 0xc6, 0xdd, 0x24, 0x14, 0x81, 0xa8, 0xe, 0xb1, 0x9b, 0x59, 0x60, 0x86, 0x64, 0x92, - 0xc2, 0x5c, 0xc2, 0x2d, 0x92, 0xcc, 0x9e, 0xbb, 0xa8, 0xed, 0xe5, 0x2b, 0xd1, 0x40, 0xdf, - 0xdd, 0x57, 0x8d, 0x96, 0x3, 0x34, 0x6e, 0xbf, 0xaf, 0xfd, 0x0, 0xfd, 0x4f, 0x0, 0x4, 0x35, - 0xb8, 0x2b, 0x3b, 0xec, 0x33, 0x48, 0x94, 0xd0, 0x3c, 0x16, 0x98, 0x9, 0xd1, 0xbc, 0x0, - 0x36, 0xb3, 0x9d, 0x60, 0x7f, 0xab, 0x29, 0xe4, 0xca, 0xc0, 0x30, 0xd7, 0x45, 0x7d, 0xd7, - 0xb7, 0xf2, 0xc5, 0x6e, 0x7c, 0x9a, 0x5d, 0xe8, 0xfc, 0x2c, 0x27, 0x7b, 0xdb, 0x30, 0xb9, - 0xc3, 0x51, 0x6c, 0xc7, 0x35, 0x0, 0xeb, 0x8c, 0x27, 0xf9, 0x70, 0xe4, 0x54, 0xee, 0xb0, - 0xe6, 0xbe, 0xb8, 0x94, 0x14, 0x6f, 0xf5, 0xa6, 0x28, 0xa2, 0xc3, 0x7e, 0x3c, 0x93, 0x5a, - 0xdd, 0x79, 0x44, 0x7f, 0x9c, 0xf8, 0xde, 0x6c, 0xfa, 0xda, 0xa9, 0xe5, 0x42, 0x99, 0x4e, - 0x60, 0x21, 0x9e, 0x12, 0x4a, 0x94, 0xb5, 0x9b, 0xa6, 0x0, 0x57, 0x23, 0x7b, 0xcf, 0x38, - 0xe8, 0xe3, 0xcb, 0x1d, 0xf8, 0x13, 0x9f, 0x2f, 0x35, 0x91, 0xb4, 0xd8, 0xac, 0xe8, 0xe7, - 0xb2, 0x87, 0x3f, 0xac, 0xd, 0xcc, 0x6f, 0xbd, 0xfb, 0x5f, 0xd6, 0x68, 0x37, 0x61, 0xe8, - 0x71, 0xbe, 0xc6, 0xc0, 0xae, 0x52, 0xf5, 0x1d, 0xc1, 0x1, 0xc8, 0xfa, 0x89, 0xf, 0x3b, - 0x90, 0x57, 0xa5, 0x99, 0xec, 0xa, 0xb8, 0xab, 0x6d, 0x12, 0x9a, 0x8b, 0xe8, 0xcc, 0xe0, - 0x30, 0x9f, 0x42, 0x35, 0x7, 0xa0, 0x4a, 0x71, 0xab, 0x6d, 0x82, 0x98, 0x9b, 0x7f, 0xb3, - 0xc7, 0x6b, 0x25, 0x6f, 0xe5, 0x86, 0xa8, 0xdb, 0xb2, 0x7f, 0x37, 0xb1, 0xd3, 0x46, 0xe9, - 0xe6, 0x92, 0xbe, 0x69, 0x90, 0xbf, 0xc5, 0xf0, 0xb4, 0xe1, 0x22, 0xe4, 0xc5, 0x7d, 0x1a, - 0x28, 0x50, 0x5b, 0x36, 0x3d, 0x86, 0x80, 0x92, 0x22, 0xed, 0xc6, 0x5d, 0x2a, 0x3f, 0xad, - 0x75, 0xb1, 0x3a, 0x5e, 0xae, 0xed, 0x4f, 0xa5, 0xaa, 0x48, 0x85, 0x5f, 0xb8, 0x21, 0xa, - 0x55, 0x5d, 0x2f, 0x2c, 0x17, 0xf7, 0xac, 0x38, 0xa3, 0x95, 0x62, 0x86, 0xc2, 0xa3, 0x6a, - 0x44, 0xdc, 0xb3, 0x43, 0x44, 0xc3, 0x3b, 0xc8, 0xc2, 0x5d, 0xe8, 0x12, 0x35, 0xae, 0xfd, - 0x26, 0x75, 0x87, 0x6, 0x7, 0xe0, 0x81, 0xe7, 0x4b, 0x2f, 0x54, 0xd6, 0x4a, 0x1c, 0xb9, - 0x2f, 0xfb, 0xad, 0x6d, 0x32, 0x94, 0x68, 0x65, 0x6, 0xa9, 0x9f, 0xf4, 0xe9, 0x8e, 0xaf, - 0x6, 0xb0, 0x41, 0x11, 0xbb, 0x98, 0xec, 0x76, 0x40, 0x7a, 0xd, 0xa7, 0x7, 0x77, 0x1b, - 0xa0, 0x7, 0x8b, 0x84, 0x9e, 0xeb, 0xda, 0x80, 0xcf, 0xc, 0x48, 0xa9, 0x7f, 0x27, 0xcd, - 0xa5, 0x1a, 0x92, 0xfc, 0xde, 0x99, 0xe2, 0x97, 0x83, 0x80, 0x65, 0xbf, 0xb1, 0xba, 0xed, - 0xdb, 0x3a, 0xe0, 0xee, 0xc2, 0x2, 0x8, 0x21, 0x60, 0xfe, 0x91, 0x7a, 0xcd, 0x92, 0xd3, - 0x12, 0x13, 0x19, 0x82, 0x90, 0xd2, 0xb4, 0x9a, 0xd7, 0x32, 0xd0, 0xf2, 0x85, 0x99, 0xa4, - 0x0, 0xcb, 0x4f, 0x8a, 0xf8, 0x86, 0x50, 0x11, 0x23, 0x53, 0xe9, 0x6a, 0xe, 0x2a, 0x19, - 0x7c, 0xe8, 0x80, 0x17, 0x9e, 0xc9, 0xf4, 0x19, 0x28, 0xb6, 0x32, 0x24, 0x61, 0xac, 0xe5, - 0xaa, 0x11, 0x53, 0x1b, 0x34, 0x1f, 0x24, 0x85, 0x14, 0x86, 0xb1, 0x9e, 0x2e, 0x4d, 0x82, - 0x12, 0x69, 0x6a, 0xbb, 0xb3, 0x8f, 0xf3, 0xc2, 0x40, 0x7c, 0xbd, 0xad, 0x31, 0xdd, 0x6, - 0xf5, 0x16, 0x3c, 0xb, 0x43, 0x31, 0x1, 0x39, 0xfd, 0xa, 0xfe, 0x5d, 0x5d, 0x59, 0x1a, - 0xf1, 0x3a, 0xc5, 0xc5, 0xeb, 0x30, 0x57, 0xa4, 0xdc, 0xf4, 0xfa, 0xa3, 0xf, 0x71, 0xb6, - 0x52, 0xb8, 0x73, 0x5, 0x8a, 0xcf, 0xdb, 0x9b, 0xdb, 0x65, 0xdb, 0x64, 0xbd, 0x27, 0x45, - 0xde, 0xe6, 0x50, 0x0, 0xa, 0x1e, 0x4d, 0xce, 0x98, 0xe0, 0x2e, 0x2e, 0xe0, 0xd9, 0x44, - 0xbf, 0x86, 0x60, 0xb1, 0x33, 0xb3, 0x33, 0xaa, 0x8e, 0x5, 0x96, 0x10, 0xca, 0x4b, 0x2c, - 0x56, 0xdf, 0x42, 0x59, 0xdc, 0x93, 0xc1, 0x79, 0xed, 0x0, 0x54, 0x44, 0x40, 0xf7, 0x86, - 0xaa, 0x8e, 0xbb, 0x5c, 0x1a, 0x6, 0x28, 0xea, 0x11, 0xab, 0xba, 0x6a, 0x36, 0x1c, 0x30, - 0x6c, 0x66, 0x11, 0xce, 0xf4, 0xd, 0xab, 0xed, 0xa0, 0x50, 0xeb, 0x13, 0xe1, 0x22, 0x1a, - 0x75, 0x68, 0x29, 0x62, 0x10, 0xae, 0x68, 0x80, 0xf6, 0xa7, 0xd4, 0x9d, 0xcd, 0x2c, 0x22, - 0x6c, 0xab, 0x44, 0x4d, 0x53, 0xad, 0x1c, 0x2, 0x5d, 0x3, 0xbb, 0x9b, 0x41, 0x97, 0x43, - 0x46, 0x24, 0x34, 0xdf, 0x7a, 0xaf, 0x27, 0xbd, 0xac, 0x4f, 0x31, 0xed, 0xeb, 0x6d, 0x9f, - 0x46, 0x2d, 0x78, 0xc7, 0xad, 0x60, 0xea, 0x21, 0x52, 0x1f, 0x66, 0x4, 0xd4, 0xe2, 0x0, - 0x3, 0xda, 0xee, 0x4a, 0xa, 0xc7, 0x5b, 0x70, 0x12, 0x9f, 0xb7, 0xa2, 0x6a, 0x7d, 0xca, - 0x28, 0x3a, 0xc6, 0x5e, 0x57, 0x2, 0xb1, 0x88, 0x29, 0x72, 0xa4, 0x82, 0x9a, 0x59, 0xb6, - 0xc0, 0x63, 0xbb, 0x88, 0xc5, 0x15, 0x3f, 0x33, 0xf5, 0x24, 0x54, 0xbc, 0x16, 0x7c, 0xc6, - 0xda, 0xd8, 0xfa, 0xb9, 0xe5, 0xca, 0x1e, 0x49, 0xdc, 0x2a, 0x25, 0x42, 0xe, 0x58, 0xa1, - 0x60, 0x1, 0x91, 0x1d, 0x8a, 0xaf, 0x91, 0x60, 0x9, 0x17, 0xed, 0xc8, 0x28, 0xcf, 0x88, - 0xb0, 0xb0, 0x40, 0xca, 0x6d, 0xe1, 0x9, 0xe, 0x19, 0x4a, 0xc2, 0x48, 0xba, 0x5a, 0x22, - 0xfe, 0x4b, 0xe2, 0x38, 0xe6, 0xe0, 0x44, 0x33, 0x8b, 0xcd, 0xc, 0x25, 0x2b, 0x89, 0x68, - 0x64, 0x61, 0x55, 0x3a, 0x55, 0xb2, 0x7c, 0xbc, 0xe6, 0x93, 0x62, 0x5c, 0xc1, 0x76, 0x1c, - 0x5c, 0x1e, 0x59, 0x3f, 0xcb, 0x39, 0x53, 0x19, 0xf3, 0x7e, 0xaf, 0xc3, 0xab, 0x74, 0x78, - 0x73, 0x73, 0x4d, 0x2f, 0xe6, 0x9f, 0x3c, 0xb1, 0xc8, 0x77, 0xbe, 0x16, 0xd2, 0xe5, 0x8, - 0xe1, 0x71, 0xce, 0xb4, 0x2, 0xd7, 0x69, 0x1, 0x3e, 0x49, 0x31, 0x27, 0x5, 0xad, 0x92, - 0xdf, 0x10, 0x90, 0xc5, 0x54, 0x76, 0xc4, 0x4f, 0x8f, 0x14, 0x8d, 0xff, 0x88, 0xd0, 0x50, - 0x20, 0x8d, 0x70, 0x8a, 0xcb, 0x43, 0xab, 0x31, 0x30, 0xec, 0x7b, 0x93, 0x71, 0xfc, 0xc3, - 0x68, 0x4a, 0x72, 0x3e, 0xe7, 0x84, 0xce, 0x91, 0x68, 0xf, 0xfa, 0xb9, 0xce, 0x4f, 0x7a, - 0xde, 0x18, 0x12, 0x90, 0xf5, 0xf2, 0xce, 0xc5, 0xc5, 0xd6, 0x64, 0x5b, 0xa1, 0x66, 0xe0, - 0x3a, 0xff, 0xd, 0x49, 0xb1, 0x5d, 0x2c, 0x6e, 0x3e, 0x5b, 0x86, 0x2e, 0xd7, 0xae, 0xd5, - 0xc1, 0xcc, 0xc7, 0x3b, 0x44, 0x1f, 0x72, 0x67, 0x84, 0x6, 0xbb, 0x5c, 0x13, 0xff, 0x20, - 0xd8, 0x21, 0x22, 0xd6, 0x9c, 0x2b, 0xa6, 0x47, 0x85, 0xbd, 0xcf, 0xc6, 0xc3, 0x4d, 0x5d, - 0xee, 0x7d, 0x63, 0x4f, 0xe4, 0xab, 0x37, 0xfc, 0x95, 0x84, 0xbd, 0xc8, 0x14, 0x24, 0x30, - 0x43, 0x29, 0xc6, 0x8d, 0xd5, 0xa7, 0x84, 0xf6, 0x4a, 0x74, 0x54, 0x7e, 0x4b, 0x4d, 0xba, - 0xbc, 0x2c, 0xa8, 0xe0, 0x3b, 0xbd, 0xd4, 0x8d, 0x32, 0xf8, 0x92, 0x91, 0x3f, 0x42, 0xdb, - 0xbe, 0xac, 0x66, 0x8d, 0x78, 0x3f, 0xca, 0xe9, 0x45, 0x78, 0xd7, 0x2f, 0xec, 0xfa, 0xb6, - 0x7c, 0x92, 0xed, 0xb, 0xff, 0xa0, 0xb7, 0xd4, 0xfb, 0xe8, 0x6e, 0x63, 0x52, 0x54, 0xa9, - 0x64, 0x8e, 0x61, 0xd6, 0x1a, 0x7f, 0x97, 0x53, 0x41, 0xb2, 0xa0, 0xf2, 0x4c, 0xff, 0x54, - 0xd7, 0x9c, 0x90, 0xcf, 0x3, 0xa3, 0xc6, 0x59, 0xb2, 0xb2, 0xe0, 0xb2, 0xe2, 0xd6, 0x54, - 0xd8, 0xad, 0x71, 0xf4, 0xae, 0xc7, 0x7a, 0xfd, 0x30, 0xb0, 0x6c, 0xa2, 0x4b, 0xc4, 0x2e, - 0x59, 0xab, 0xcd, 0xb4, 0xf4, 0xe7, 0xde, 0xad, 0x14, 0x1b, 0x64, 0x42, 0x4b, 0x5d, 0xf3, - 0xba, 0xf3, 0x7a, 0xb9, 0xb7, 0xd1, 0xcb, 0x42, 0xec, 0x23, 0x8a, 0xbb, 0x44, 0x79, 0x58, - 0x9e, 0x79, 0x38, 0x20, 0x8, 0x0, 0x8e, 0xa7, 0xbf, 0xbd, 0x75, 0x69, 0xd5, 0x4a, 0x83, - 0x62, 0x70, 0x9b, 0xb3, 0xf2, 0x28, 0xdb, 0xf, 0x8d, 0xad, 0xf3, 0xb9, 0xa9, 0x2d, 0x16, - 0x42, 0x1b, 0x55, 0x1b, 0x66, 0xfa, 0x14, 0xa8, 0x29, 0x49, 0x23, 0xb2, 0xfd, 0x68, 0x9, - 0x69, 0x7d, 0x74, 0xc6, 0x4f, 0xc8, 0x29, 0xc5, 0x8a, 0x9a, 0xde, 0x7, 0xd3, 0x78, 0xf4, - 0xe6, 0x5b, 0x8e, 0x34, 0xc4, 0xf, 0x9, 0x0, 0x68, 0xce, 0x2d, 0x81, 0x27, 0x24, 0x2f, - 0xcd, 0x70, 0x5c, 0x86, 0x9c, 0x2d, 0x10, 0xee, 0xd4, 0x9a, 0x1a, 0xdf, 0x2c, 0xc8, 0x65, - 0x8a, 0xd4, 0xd7, 0x6d, 0x10, 0x16, 0x9f, 0xeb, 0xc7, 0x64, 0x61, 0xb4, 0xbd, 0x51, 0x7b, - 0x88, 0xc5, 0x50, 0x95, 0xc7, 0xa4, 0x7e, 0xa9, 0x74, 0x44, 0x9e, 0xd5, 0x56, 0x95, 0x4, - 0xd8, 0xb0, 0xb2, 0x5c, 0x4f, 0x5, 0x82, 0x2b, 0xfc, 0x1e, 0x53, 0x9d, 0xe2, 0x10, 0xaa, - 0x32, 0x51, 0x91, 0x1d, 0xeb, 0x47, 0x4, 0x6, 0x70, 0xd6, 0x61, 0xb6, 0xc8, 0xe3, 0xd, - 0x52, 0x84, 0xdb, 0x9c, 0x55, 0x6f, 0x46, 0x6c, 0x50, 0xb6, 0x62, 0x42, 0x31, 0xfa, 0x63, - 0x9d, 0x97, 0xa7, 0x9c, 0x31, 0xb1, 0x43, 0x54, 0x4f, 0x5f, 0x7e, 0x6a, 0x34, 0x91, 0x38, - 0x68, 0x9b, 0x6b, 0x5e, 0xc1, 0x48, 0x5, 0x9d, 0x1b, 0x7e, 0x95, 0x63, 0x64, 0x9f, 0x3c, - 0x4c, 0x71, 0x5c, 0x9b, 0x87, 0xce, 0x31, 0x5c, 0xc7, 0xa7, 0x24, 0x16, 0xdb, 0x83, 0xdb, - 0x54, 0xea, 0x6a, 0xb8, 0xe, 0xd6, 0xba, 0x10, 0xeb, 0xe3, 0x7c, 0xa0, 0xcc, 0x91, 0xe8, - 0x6, 0x69, 0x66, 0x60, 0xef, 0x55, 0x4a, 0x3e, 0xf9, 0xe6, 0xb4, 0x5b, 0x48, 0xb6, 0xf4, - 0xeb, 0x8, 0xe6, 0xc3, 0xb5, 0x22, 0xf8, 0x18, 0x1b, 0xc0, 0xb6, 0xdb, 0x87, 0x8b, 0x13, - 0x3c, 0x21, + 0xa5, 0x62, 0xcc, 0xe8, 0x5f, 0x22, 0x79, 0x2b, 0xf3, 0xe7, 0x3c, 0x3, 0xde, 0xfe, 0x54, 0x8c, 0xe1, 0xa4, + 0xc2, 0x61, 0x81, 0x8b, 0x48, 0x38, 0x7d, 0x6, 0x4, 0x28, 0xbe, 0x53, 0xc5, 0x30, 0x38, 0x3b, 0x1e, 0xed, 0x48, + 0xc6, 0x2c, 0x88, 0x4, 0xbb, 0x58, 0xd7, 0x10, 0xa8, 0x8e, 0xff, 0x89, 0x4a, 0xc0, 0x3a, 0x6, 0x82, 0xc4, 0xfe, + 0x73, 0x2f, 0x39, 0xe7, 0xb7, 0xba, 0xb7, 0xa8, 0xfb, 0xb6, 0x68, 0x8, 0x90, 0xc6, 0x2d, 0x99, 0xbb, 0x85, + 0x17, 0x48, 0xcd, 0x2d, 0xe1, 0xf7, 0x80, 0x26, 0x78, 0x6d, 0xce, 0x62, 0xed, 0x2, 0x7c, 0x8f, 0x35, 0xde, + 0x1c, 0xb6, 0xa, 0x95, 0xab, 0x38, 0xd9, 0x51, 0x8c, 0x49, 0x35, 0xce, 0xa6, 0xd4, 0x1e, 0x3a, 0xe7, 0xd9, + 0x7e, 0xd4, 0x2a, 0xf9, 0xfa, 0xb2, 0x8, 0xd2, 0xdf, 0xa9, 0x51, 0x2d, 0x6e, 0x8c, 0x99, 0xd2, 0xb6, 0x7c, + 0x30, 0xac, 0xa, 0x8, 0x2f, 0x29, 0xaa, 0x15, 0xfe, 0x8e, 0x3f, 0x99, 0xd, 0x9a, 0xfb, 0x74, 0x68, 0xa9, 0x72, + 0x1, 0xd, 0x5, 0x59, 0x60, 0x8, 0xc3, 0x5b, 0x72, 0xe3, 0x47, 0x71, 0xbe, 0xa7, 0xa4, 0x79, 0x89, 0xde, 0xe2, + 0xd7, 0x5f, 0x97, 0x8e, 0x18, 0x2a, 0xd0, 0x92, 0x30, 0x51, 0xfa, 0xa7, 0xa9, 0x62, 0x7a, 0x32, 0x8e, 0xf, + 0xc5, 0x98, 0xd8, 0x24, 0x39, 0x5a, 0xca, 0xcf, 0x1d, 0x52, 0x62, 0x16, 0x5b, 0xfe, 0x45, 0xfc, 0x56, 0xf0, + 0x20, 0xb1, 0xb4, 0x16, 0x19, 0x1e, 0x19, 0xba, 0x5b, 0xe, 0x73, 0x78, 0xd1, 0x5, 0xe5, 0xa7, 0xbc, 0x6, 0xca, + 0x3b, 0x3b, 0x16, 0x48, 0xa4, 0x52, 0x58, 0x20, 0x8, 0x91, 0x31, 0x17, 0x68, 0xd1, 0x2a, 0x88, 0x5b, 0xd2, + 0xc1, 0xd3, 0xd0, 0x88, 0xc5, 0x2c, 0xfa, 0xdc, 0x39, 0xf7, 0xeb, 0x72, 0x6d, 0x6b, 0x77, 0xd7, 0x57, 0x6f, + 0x62, 0x40, 0x12, 0xc0, 0xff, 0xb2, 0xaa, 0xbf, 0x35, 0x11, 0x30, 0xc7, 0xf4, 0x78, 0xf8, 0x70, 0x40, 0xf0, + 0xb6, 0x20, 0xab, 0xb, 0x94, 0x52, 0xd5, 0x53, 0x74, 0x3b, 0x4b, 0xfb, 0x53, 0x83, 0xf1, 0x7f, 0x46, 0xef, + 0x37, 0xe0, 0x44, 0xba, 0xc, 0x5a, 0x65, 0x7d, 0x37, 0x1f, 0x66, 0xe, 0x6f, 0x75, 0x1a, 0x2d, 0xe9, 0xd6, 0x3f, + 0x5, 0x74, 0xa9, 0x7, 0x5, 0xc4, 0x4f, 0x6a, 0x8d, 0x5a, 0xad, 0x95, 0xf5, 0xf2, 0x2a, 0xd9, 0x32, 0x4c, 0x4d, + 0x44, 0x6a, 0xb4, 0x1e, 0xb7, 0x29, 0x2, 0xf4, 0x2f, 0x23, 0x52, 0x8a, 0xe6, 0xb0, 0x94, 0x29, 0x7c, 0xf8, + 0x9e, 0x99, 0xbe, 0x63, 0x32, 0xa9, 0x2c, 0xdf, 0xb7, 0x64, 0xe5, 0xc5, 0xa7, 0x24, 0x75, 0xb1, 0x43, 0x6f, + 0x7, 0xf3, 0x7e, 0x15, 0x9a, 0x8f, 0x5e, 0xc0, 0x15, 0x8f, 0xcc, 0xfa, 0x3c, 0x9e, 0x66, 0xa, 0x84, 0xe4, 0x70, + 0xb2, 0x20, 0x89, 0x4e, 0x1e, 0x29, 0xbf, 0x74, 0x7f, 0xd1, 0x48, 0x64, 0x1d, 0xec, 0x3, 0xe9, 0x85, 0x76, + 0xab, 0xcf, 0x93, 0xfa, 0x6f, 0x4a, 0xf5, 0xa4, 0xc5, 0xf5, 0xc3, 0x6f, 0xd5, 0xae, 0x58, 0xa9, 0x94, 0x77, + 0x64, 0x75, 0x45, 0x12, 0x7d, 0x7a, 0x6d, 0x83, 0x2b, 0x23, 0xf9, 0x3e, 0x5e, 0x49, 0x57, 0xbe, 0x4f, 0x64, + 0x59, 0xcc, 0xae, 0x8f, 0xea, 0x7b, 0xa6, 0xe3, 0x6b, 0x8e, 0xab, 0xa, 0xdf, 0x59, 0x8b, 0x5, 0x9b, 0x93, 0x32, + 0xe8, 0x2e, 0x6b, 0xcc, 0xcb, 0x2e, 0xb8, 0x26, 0x26, 0x1b, 0x42, 0x8c, 0xf3, 0xe2, 0xaf, 0xf9, 0xb3, 0xfe, + 0x49, 0xf6, 0x8b, 0x9b, 0xea, 0x64, 0xc2, 0x85, 0xca, 0x59, 0x5a, 0xfe, 0xe5, 0xc5, 0xd4, 0x7a, 0x0, 0x87, + 0x4a, 0xb5, 0xe8, 0xb4, 0xbb, 0x6a, 0x84, 0x87, 0x7e, 0x82, 0x44, 0x13, 0xcf, 0xf, 0xeb, 0xff, 0xd7, 0xf0, + 0xab, 0x56, 0x79, 0xa1, 0x33, 0xe, 0xf0, 0xa, 0x4b, 0x1, 0x81, 0x8c, 0xfe, 0x76, 0xb2, 0xd1, 0x57, 0x3d, 0x26, + 0x94, 0x36, 0x19, 0x74, 0x48, 0x48, 0xcd, 0xc3, 0xfc, 0xc0, 0xe5, 0xb6, 0x2b, 0xef, 0xb2, 0x6a, 0x44, 0x64, + 0x54, 0x42, 0x6e, 0x10, 0xf0, 0xfe, 0x6, 0xbe, 0x1, 0x73, 0xde, 0x16, 0x2e, 0x4b, 0xa9, 0x5b, 0xe0, 0xa9, 0x1a, + 0xda, 0xb9, 0xb3, 0x7e, 0xaf, 0x63, 0x1, 0x6, 0x9a, 0x8, 0xce, 0x7e, 0x3a, 0x3f, 0x33, 0xb9, 0x41, 0x38, 0xaf, + 0x43, 0xa, 0x79, 0xe3, 0xf, 0x7c, 0x9a, 0x6c, 0xbd, 0x2c, 0xc3, 0xa2, 0xba, 0x50, 0x98, 0xaa, 0x77, 0xc4, 0x2, + 0x97, 0xc7, 0x60, 0xc4, 0x4d, 0x14, 0xf9, 0xa0, 0xe0, 0x96, 0xa6, 0x27, 0x83, 0xbd, 0x96, 0x1b, 0xf6, 0xcf, + 0x9f, 0xba, 0xe8, 0xac, 0x38, 0x4d, 0xf9, 0xe0, 0x49, 0x75, 0xd1, 0xf8, 0x5a, 0xff, 0x43, 0x87, 0x5, 0x45, + 0x18, 0x90, 0x8f, 0x53, 0xf8, 0x8e, 0xf7, 0x3b, 0x2b, 0xfe, 0x2f, 0xcf, 0x5d, 0x73, 0x59, 0xd8, 0x8f, 0xc7, + 0x3a, 0x4f, 0xa7, 0x78, 0xfa, 0xc4, 0x68, 0xd, 0x95, 0xc7, 0x82, 0x6b, 0xa2, 0xb7, 0x1f, 0xdc, 0xb8, 0xc9, + 0x5d, 0x83, 0x27, 0x24, 0x84, 0x2f, 0xf4, 0x5f, 0xb, 0xa7, 0x3d, 0x0, 0x35, 0xbb, 0x5c, 0xbb, 0xbf, 0x5e, 0x7c, + 0xb4, 0xf4, 0x43, 0x13, 0x2b, 0x17, 0x6e, 0xef, 0xbf, 0x19, 0x57, 0xa4, 0x29, 0xbc, 0xdf, 0xd9, 0x89, 0x7b, + 0x2d, 0x54, 0x46, 0xd6, 0x44, 0x90, 0x37, 0xea, 0xeb, 0x74, 0xb6, 0x9f, 0xe5, 0x4e, 0x57, 0x63, 0x43, 0xe5, + 0xd7, 0xf, 0x72, 0x65, 0x8c, 0x91, 0xe, 0xd4, 0xdd, 0x67, 0xce, 0x6a, 0xb5, 0xe2, 0x60, 0x38, 0x5a, 0xe8, 0x3b, + 0x55, 0xd3, 0x9a, 0x12, 0xdb, 0x57, 0x3, 0xb3, 0x64, 0xd9, 0x96, 0x9b, 0x7, 0xfd, 0x25, 0x41, 0x8c, 0xbc, 0x20, + 0x91, 0x11, 0x1, 0x5f, 0xfe, 0x44, 0x1e, 0x68, 0xc, 0x40, 0xa4, 0xc3, 0xc2, 0xb7, 0x4d, 0x5c, 0xa1, 0x36, 0x6e, + 0x52, 0xda, 0xed, 0x71, 0xc5, 0xce, 0x27, 0x1e, 0xdc, 0xfd, 0xb8, 0xda, 0x70, 0xba, 0x7a, 0x33, 0x66, 0x91, + 0x62, 0x46, 0xd1, 0xae, 0x12, 0xc8, 0x90, 0xe4, 0xb4, 0x21, 0x2f, 0xa5, 0xb8, 0x6, 0x71, 0x26, 0x49, 0x37, + 0xe5, 0xc7, 0xd6, 0xa1, 0x4f, 0xb0, 0xe9, 0xdb, 0xce, 0xee, 0x6e, 0xc1, 0xb, 0x11, 0x5f, 0x6f, 0x72, 0x23, + 0xb5, 0xb6, 0x81, 0x4d, 0x7f, 0xe3, 0xe5, 0x41, 0xf4, 0x29, 0x55, 0x89, 0xfd, 0x62, 0x5d, 0x11, 0xaa, 0xd, + 0x94, 0x58, 0xe0, 0x9f, 0xd9, 0xb7, 0xc7, 0x47, 0x4e, 0x70, 0xe6, 0x84, 0xb1, 0x5d, 0x3a, 0xd1, 0xed, 0x5, + 0x61, 0x79, 0xe2, 0xe7, 0x5, 0x53, 0x94, 0xe2, 0x44, 0x49, 0xc, 0xc4, 0x36, 0x85, 0x22, 0xb9, 0x7b, 0xa5, 0xb, + 0x59, 0xeb, 0xb8, 0x5d, 0x38, 0x4d, 0x6d, 0xe, 0x6b, 0x8a, 0x5f, 0x9f, 0x3b, 0x93, 0x5f, 0x26, 0xc3, 0x33, + 0x17, 0x21, 0x15, 0x3c, 0x92, 0xf3, 0x53, 0x48, 0x1c, 0x2c, 0x46, 0x48, 0xee, 0x9e, 0xf1, 0x9d, 0x12, 0x0, + 0xd2, 0x7c, 0x7b, 0xd1, 0xd5, 0x7c, 0xdc, 0x63, 0x2e, 0x22, 0x1e, 0x16, 0x8a, 0x31, 0x3, 0xee, 0x24, 0x11, + 0x53, 0x15, 0xef, 0x15, 0xf1, 0xcd, 0xc, 0x33, 0x51, 0x20, 0xab, 0xab, 0xa3, 0x6d, 0xdb, 0x89, 0x12, 0xfe, + 0xeb, 0x59, 0x75, 0x84, 0x28, 0xf9, 0x62, 0x86, 0xfb, 0xd9, 0xca, 0xc6, 0x28, 0x88, 0x1b, 0x41, 0xfe, 0xf5, + 0xe4, 0x6c, 0x15, 0x1a, 0xa1, 0xe1, 0xe3, 0x9, 0xb0, 0x71, 0x16, 0xc2, 0xee, 0xb4, 0x54, 0x48, 0x9d, 0x37, + 0xa1, 0x33, 0x86, 0xdd, 0x3f, 0x6e, 0x9b, 0x3f, 0x99, 0xce, 0x11, 0x5c, 0xea, 0xc9, 0xec, 0xaa, 0x17, 0xd6, + 0x4d, 0x5c, 0x77, 0x99, 0x5, 0x23, 0xd4, 0x1d, 0xa1, 0xc1, 0x8c, 0xec, 0x64, 0x90, 0xd5, 0xb3, 0xb8, 0x73, + 0x88, 0x0, 0xe6, 0x41, 0x88, 0x2b, 0x77, 0x9, 0x3, 0xa0, 0xe4, 0xa4, 0x93, 0xe7, 0xbe, 0xd7, 0xe9, 0x6c, 0x0, + 0x15, 0xa6, 0xde, 0x38, 0xda, 0x2b, 0x6d, 0xfb, 0xde, 0x0, 0x96, 0x75, 0x8e, 0x8c, 0xef, 0x94, 0xc4, 0x64, + 0xcd, 0xfc, 0xb7, 0xf8, 0x6, 0x5c, 0xcc, 0x41, 0xf6, 0xce, 0x2c, 0xf3, 0xba, 0x44, 0x9e, 0x9f, 0xa8, 0xe6, + 0xb3, 0x5a, 0xdb, 0x38, 0x5e, 0x53, 0x45, 0x4, 0xb2, 0x3e, 0xe7, 0xea, 0xc5, 0x1b, 0x40, 0xaf, 0xd0, 0xb7, + 0xd3, 0x6c, 0x9e, 0x30, 0xa1, 0x72, 0xc, 0xde, 0x66, 0x3b, 0x9c, 0x75, 0xb7, 0x67, 0x48, 0x17, 0x8c, 0x97, + 0xbc, 0xd2, 0x9, 0xc6, 0x94, 0xc9, 0x3f, 0xbf, 0xd6, 0x1d, 0x5f, 0x63, 0x18, 0xf1, 0x95, 0x6c, 0x49, 0x37, + 0x85, 0xb0, 0x3f, 0xa4, 0x7a, 0x36, 0xa8, 0xeb, 0xe1, 0xce, 0x88, 0xcc, 0x37, 0x45, 0xa9, 0xda, 0x91, 0x96, + 0xfa, 0xc4, 0xda, 0x2e, 0xcc, 0x49, 0xe1, 0x98, 0xf1, 0x93, 0x28, 0x37, 0xa0, 0xf4, 0x5f, 0xda, 0x50, 0xfc, + 0x63, 0xef, 0x74, 0x29, 0xc0, 0x31, 0xfb, 0x6a, 0x9a, 0x19, 0x4f, 0x44, 0x54, 0xcf, 0x8c, 0x77, 0xda, 0xf3, + 0xaa, 0xe7, 0x1f, 0x5, 0xa1, 0x11, 0xf1, 0x1b, 0xa6, 0x77, 0xbb, 0xc6, 0xa8, 0x59, 0x2c, 0x9d, 0xea, 0x98, + 0x1a, 0x7c, 0x65, 0x79, 0x88, 0xdb, 0x30, 0xa2, 0xe8, 0xa, 0xe1, 0x21, 0x82, 0x2f, 0x68, 0xb0, 0xe4, 0xce, + 0xe7, 0x46, 0x82, 0x8d, 0xb5, 0xea, 0xad, 0x26, 0xb6, 0xf4, 0xd6, 0xdd, 0x6b, 0xd3, 0x30, 0x84, 0x2e, 0xd8, + 0x72, 0x1, 0xec, 0x68, 0x49, 0x4f, 0xa2, 0x3f, 0xe1, 0xee, 0x38, 0x59, 0x69, 0x2f, 0xb, 0x92, 0x14, 0xb9, 0xc5, + 0x3b, 0xae, 0x0, 0xf5, 0x23, 0xd5, 0x3c, 0x1b, 0x9f, 0xef, 0xe1, 0x4c, 0x40, 0xfd, 0x8, 0xba, 0x81, 0xbc, 0x3c, + 0x6d, 0x59, 0x92, 0x4a, 0x5c, 0xa8, 0xc5, 0xfd, 0x7b, 0x71, 0xa5, 0x13, 0xfb, 0xdd, 0x15, 0x99, 0x21, 0x42, + 0x54, 0x66, 0x78, 0xc5, 0x75, 0xac, 0xfb, 0xca, 0x71, 0x91, 0xae, 0x63, 0xf1, 0x67, 0x29, 0xc, 0x4b, 0xaf, + 0x78, 0xad, 0xd9, 0xc1, 0x9, 0xa7, 0x28, 0x14, 0x78, 0x50, 0xe3, 0x45, 0xfa, 0xb7, 0x41, 0x9f, 0x96, 0xd4, + 0x51, 0x56, 0xf7, 0xee, 0xdf, 0xf8, 0xa5, 0x36, 0x85, 0xa0, 0x72, 0xc9, 0x64, 0xb0, 0x23, 0x1d, 0xd6, 0x62, + 0x7, 0xf3, 0xf1, 0xfb, 0x41, 0x17, 0x32, 0xef, 0x56, 0x6d, 0x83, 0xc4, 0x1f, 0x70, 0x8b, 0x73, 0x33, 0x62, + 0xba, 0x47, 0x1, 0x24, 0x89, 0xed, 0xc, 0xc0, 0x18, 0x9, 0x40, 0x93, 0xda, 0x5e, 0x39, 0x2f, 0xd4, 0x3f, 0x9d, + 0xb3, 0xa4, 0xd, 0xd1, 0x3b, 0xc4, 0xf4, 0xf7, 0x23, 0xa5, 0xb, 0x9a, 0x93, 0xae, 0xc9, 0x3, 0xf, 0x9b, 0xbb, + 0xb0, 0xc2, 0xb0, 0x41, 0x6e, 0xaf, 0xf2, 0xb9, 0xad, 0x9a, 0x71, 0xc1, 0x87, 0xf0, 0x0, 0x53, 0xac, 0xad, + 0x24, 0x4c, 0x6f, 0x14, 0xd2, 0xd1, 0x85, 0x56, 0xb2, 0x7c, 0xf9, 0xa2, 0x92, 0x81, 0x43, 0x8e, 0xc8, 0xa4, + 0x58, 0x79, 0x4a, 0xde, 0x8f, 0xac, 0xa1, 0xcb, 0xf2, 0x9c, 0x38, 0x9c, 0xd6, 0xb2, 0x1a, 0xfa, 0x1c, 0xb5, + 0x19, 0xe2, 0x13, 0x36, 0x41, 0x9e, 0xc3, 0x73, 0xe9, 0x20, 0xf, 0xe3, 0xfd, 0xc, 0xa2, 0xd1, 0x77, 0xf8, 0xae, + 0xb6, 0x11, 0xd1, 0x55, 0x5b, 0xae, 0xd9, 0xb5, 0x2a, 0xd3, 0x96, 0x86, 0x77, 0xf7, 0xe2, 0x2, 0xa6, 0xc2, + 0x10, 0x37, 0x2f, 0x10, 0xff, 0xee, 0xc9, 0x29, 0xd1, 0xf4, 0x89, 0x4b, 0x89, 0x0, 0xee, 0xb5, 0x9f, 0xd1, + 0xad, 0x7b, 0x92, 0x17, 0x87, 0x85, 0x21, 0x59, 0xc7, 0xc3, 0xbf, 0x86, 0xf6, 0xff, 0xd8, 0x8a, 0x47, 0xb9, + 0x61, 0xa1, 0x52, 0xed, 0xf, 0x34, 0x17, 0xe2, 0xcb, 0x92, 0x0, 0x16, 0x2a, 0x1f, 0x4a, 0x60, 0x54, 0xd7, 0x1d, + 0x7a, 0x97, 0x4c, 0x91, 0x41, 0x8f, 0x80, 0x68, 0xbd, 0xa5, 0x57, 0x26, 0xe4, 0xf7, 0x8a, 0xe0, 0x57, 0x76, + 0x58, 0xe, 0x14, 0xfc, 0xab, 0xae, 0x60, 0xa8, 0xb2, 0x62, 0xd0, 0x9, 0x4b, 0xbc, 0x8, 0x20, 0x1f, 0x58, 0x9, + 0x52, 0x8, 0xd4, 0xf5, 0xdb, 0x87, 0x1e, 0x1c, 0xaf, 0x47, 0xe, 0x8b, 0x19, 0x3f, 0xf3, 0x7, 0x38, 0x5a, 0x5c, + 0x29, 0x66, 0x54, 0x77, 0x22, 0x4f, 0xb6, 0x5d, 0xc6, 0xc9, 0x35, 0x44, 0xe9, 0xeb, 0x33, 0x8a, 0x12, 0x77, + 0xc2, 0x1e, 0x83, 0xca, 0xfa, 0x1a, 0x2f, 0xef, 0x13, 0x6f, 0x70, 0xa6, 0x1f, 0x2e, 0x61, 0x83, 0xf4, 0x10, + 0xb8, 0x1, 0xa4, 0xb7, 0x9, 0xaa, 0x32, 0x36, 0x77, 0x39, 0x62, 0xfa, 0x7b, 0x19, 0x6b, 0x97, 0xe0, 0xd2, 0x1, + 0xfd, 0x33, 0x60, 0x8, 0xe0, 0x4, 0xdf, 0xa7, 0x86, 0xd1, 0x8d, 0xc4, 0xf6, 0x9c, 0xed, 0x77, 0x68, 0x9d, 0xee, + 0xd0, 0x67, 0xc7, 0xce, 0xd7, 0xf2, 0x2b, 0x2f, 0xe2, 0x82, 0x80, 0x89, 0x4b, 0x4c, 0x35, 0xd8, 0xf3, 0xca, + 0x8a, 0xd5, 0x37, 0xe, 0xf4, 0xac, 0x2f, 0xd7, 0xc2, 0x34, 0x39, 0x81, 0xce, 0x95, 0x65, 0x11, 0x2, 0xfa, 0xa0, + 0x20, 0x96, 0xd2, 0x7b, 0x42, 0x6b, 0xc8, 0x91, 0x9d, 0xe8, 0xc7, 0x62, 0xc7, 0x32, 0x6b, 0x66, 0x59, 0xe1, + 0xca, 0xf7, 0x42, 0x4a, 0x6c, 0xca, 0x72, 0xe, 0x82, 0x3, 0x93, 0xd6, 0xdf, 0xa5, 0xd3, 0xf6, 0xa6, 0x62, 0xec, + 0x85, 0x12, 0x7a, 0xde, 0x1, 0xd5, 0x13, 0x47, 0x23, 0x3e, 0xda, 0xcb, 0x3, 0x72, 0xde, 0x5e, 0x70, 0x10, 0x52, + 0x7e, 0x62, 0x84, 0x1e, 0x66, 0x37, 0x3a, 0x48, 0x5d, 0x96, 0x2b, 0x8f, 0x1, 0x16, 0xb, 0x0, 0xff, 0x1d, 0xf7, + 0xe8, 0xa2, 0xc7, 0xa1, 0xc9, 0x39, 0x8b, 0x75, 0x59, 0x8d, 0x33, 0x5e, 0x54, 0xae, 0xa8, 0x2b, 0x63, 0x89, + 0x5e, 0x7a, 0x3e, 0x35, 0x5c, 0x39, 0x9c, 0xfc, 0xa8, 0x1b, 0x33, 0x4b, 0xfe, 0xf3, 0xa7, 0x2, 0xe5, 0xc3, + 0x6b, 0x17, 0xc1, 0xb5, 0xdb, 0x26, 0x51, 0xff, 0x58, 0x4a, 0x3, 0x52, 0x1e, 0xde, 0x8, 0x96, 0x3a, 0x7d, 0x14, + 0x63, 0x80, 0xca, 0x5, 0x7f, 0x24, 0x73, 0x65, 0xb7, 0x70, 0x5a, 0x4f, 0xea, 0x6f, 0x8d, 0xa6, 0xf0, 0x6f, + 0x60, 0xdb, 0x34, 0x77, 0xef, 0xa0, 0x21, 0x17, 0xa2, 0x95, 0x4a, 0x73, 0xad, 0x68, 0xc1, 0xf3, 0xad, 0x67, + 0x68, 0x30, 0xa0, 0xda, 0x98, 0xfb, 0x15, 0xd7, 0x28, 0x9b, 0xb3, 0xf0, 0x34, 0x92, 0xb5, 0x3, 0x12, 0x0, 0xcb, + 0x54, 0x98, 0xf2, 0x75, 0x1d, 0x7a, 0x38, 0x5d, 0x3, 0xb1, 0xa9, 0x70, 0xc7, 0x5a, 0x1d, 0x25, 0x73, 0xfc, + 0xfb, 0x13, 0x6d, 0x5b, 0xe9, 0xb4, 0x5, 0xd2, 0xd, 0x1a, 0xd2, 0x38, 0x1c, 0x75, 0x19, 0xa, 0x9b, 0x16, 0x9, + 0xfb, 0x1a, 0xb2, 0xe2, 0xe, 0x85, 0x6e, 0x32, 0x9, 0x1b, 0xb5, 0xc3, 0x3b, 0x78, 0x41, 0xf0, 0x92, 0xeb, 0xcd, + 0x9, 0xde, 0x61, 0x30, 0x1f, 0xe2, 0x24, 0x80, 0x50, 0xa5, 0xe, 0x9, 0x18, 0xe, 0xe5, 0x70, 0x1f, 0xde, 0x6c, + 0x51, 0x3e, 0xdd, 0x9e, 0xad, 0xc5, 0x79, 0xd3, 0x2e, 0x9, 0x7, 0xa7, 0x52, 0xb7, 0x2c, 0x7f, 0xdb, 0x66, 0xf8, + 0xa2, 0xea, 0x47, 0xfe, 0xe2, 0x75, 0x77, 0xb3, 0xa9, 0x69, 0x98, 0xa3, 0x1a, 0xd9, 0xec, 0x5e, 0xf6, 0x2b, + 0x58, 0x8c, 0xd0, 0x58, 0x3f, 0x74, 0x7e, 0x6f, 0xe2, 0xe3, 0x6f, 0xa8, 0xc8, 0x1a, 0xf7, 0x7f, 0xbb, 0x7, + 0xca, 0x3, 0xfa, 0xab, 0xd8, 0x28, 0x15, 0x90, 0x89, 0x89, 0xf, 0xc4, 0xe2, 0xf8, 0xa6, 0xb7, 0x92, 0x59, 0x24, + 0x53, 0x15, 0x25, 0xd5, 0xf2, 0xb, 0xc2, 0xf0, 0x81, 0x16, 0x39, 0xcb, 0x7b, 0xae, 0x1e, 0xc1, 0x5d, 0x16, + 0xb8, 0x6d, 0x30, 0xdc, 0xf0, 0x17, 0x99, 0x8d, 0xd0, 0xab, 0x2a, 0xc8, 0x24, 0x3a, 0xd7, 0xe4, 0x16, 0x50, + 0xb7, 0x36, 0x6, 0x99, 0x90, 0x91, 0x84, 0xad, 0xf1, 0xb, 0xc2, 0xec, 0x15, 0x3a, 0x6e, 0xe8, 0x6, 0x5e, 0xcf, + 0x1a, 0x82, 0x15, 0xd8, 0x83, 0x60, 0x4c, 0xe8, 0x2d, 0x68, 0x7b, 0x6, 0x87, 0xd0, 0xe2, 0xec, 0x1f, 0x56, + 0xb1, 0xc7, 0xa8, 0xad, 0x7e, 0xf2, 0x25, 0x59, 0xbb, 0x2c, 0xc0, 0x2e, 0x56, 0x68, 0x2c, 0xa0, 0xd8, 0x27, + 0xd5, 0x9d, 0xb1, 0x9c, 0x3, 0xa3, 0xa7, 0xb8, 0xde, 0x5d, 0x62, 0xe, 0x8b, 0xb6, 0x7a, 0xf2, 0x8, 0x8, 0x51, + 0xe8, 0xe3, 0xa4, 0x13, 0x20, 0xcf, 0xa7, 0xbf, 0x3c, 0x62, 0xbc, 0xad, 0x16, 0xba, 0x84, 0xb8, 0xab, 0xac, + 0x15, 0x8e, 0x29, 0x33, 0x12, 0xd0, 0x83, 0x21, 0x5f, 0x87, 0x5a, 0x2f, 0x74, 0xd4, 0x91, 0xf8, 0x3f, 0x6d, + 0xa9, 0xa5, 0x62, 0xaa, 0x47, 0x62, 0x58, 0xf1, 0x16, 0x36, 0x81, 0x38, 0xc2, 0x21, 0xba, 0x23, 0x1, 0x27, + 0x1f, 0xad, 0x7f, 0x4a, 0x3e, 0xca, 0x9d, 0x9e, 0x4e, 0xea, 0xeb, 0xa4, 0xd7, 0xd, 0xf3, 0xa0, 0x12, 0x64, + 0xdc, 0xf4, 0x4e, 0xa7, 0x45, 0x55, 0x97, 0xef, 0x75, 0x78, 0x91, 0x6e, 0x66, 0x72, 0xe4, 0x84, 0xe5, 0xc4, + 0x72, 0xc4, 0xc0, 0x3, 0x83, 0xd4, 0x31, 0xc4, 0x49, 0x43, 0xe1, 0x79, 0x7a, 0x70, 0xe2, 0x40, 0xa1, 0x51, + 0x56, 0xae, 0x11, 0xfb, 0x7b, 0x89, 0x8a, 0xdd, 0x55, 0xa4, 0x18, 0xb6, 0xee, 0x6, 0xd7, 0x8a, 0xc1, 0x89, + 0xbf, 0x2d, 0xd7, 0xbf, 0x18, 0x14, 0xb0, 0xec, 0xed, 0xe1, 0x20, 0x18, 0xb6, 0x21, 0x6b, 0x3c, 0xe0, 0x9f, + 0x92, 0xed, 0xb4, 0x40, 0xd9, 0x77, 0x32, 0x50, 0x85, 0x25, 0x39, 0x2c, 0x37, 0x31, 0x4c, 0x9e, 0xbf, 0xe4, + 0xfc, 0x47, 0xe7, 0xc4, 0xaf, 0x4d, 0x7e, 0x9d, 0x80, 0x34, 0x60, 0xc5, 0xca, 0x74, 0xef, 0x38, 0x4, 0x71, + 0xf3, 0x1b, 0x99, 0x3f, 0xb5, 0xa8, 0x10, 0xf, 0xef, 0x84, 0x1, 0xe1, 0x9, 0x46, 0xe7, 0xe2, 0x56, 0x19, 0x7d, + 0x6a, 0x9f, 0x21, 0x7a, 0xd1, 0x82, 0x59, 0x7c, 0x9a, 0x13, 0xe2, 0x7f, 0x1e, 0x71, 0xcb, 0xf5, 0xf6, 0x47, + 0x8, 0x30, 0xa3, 0x3e, 0x1f, 0x2e, 0x26, 0x80, 0xe6, 0x1a, 0x62, 0x24, 0x1f, 0x18, 0x11, 0xf, 0xcf, 0xa7, 0x76, + 0x57, 0x3f, 0x7, 0xba, 0xbc, 0x26, 0xdc, 0x49, 0x38, 0x53, 0x71, 0xdc, 0x5b, 0xc3, 0x9f, 0x17, 0x44, 0xe9, + 0x58, 0xde, 0x97, 0xbf, 0x5a, 0xf, 0x69, 0x57, 0xb7, 0x3b, 0xda, 0x9c, 0x6c, 0x3a, 0x9c, 0x47, 0x2d, 0xd9, + 0xc3, 0x3a, 0xbf, 0x4c, 0x10, 0x75, 0x33, 0x3b, 0x83, 0x28, 0x70, 0xc7, 0xd7, 0x6e, 0x2f, 0xeb, 0xd3, 0xe5, + 0x39, 0x20, 0x8f, 0x6f, 0x9f, 0xad, 0x19, 0xe3, 0x3f, 0x40, 0xb0, 0x14, 0xef, 0x9c, 0xfd, 0x91, 0xf3, 0xf7, + 0x7f, 0x94, 0x47, 0xbb, 0x22, 0xc7, 0x68, 0xc9, 0xf1, 0x4b, 0x4b, 0x46, 0x2c, 0xa2, 0x6f, 0xd3, 0xc0, 0x48, + 0xef, 0xde, 0xde, 0xc4, 0x55, 0x8f, 0xfd, 0xff, 0x12, 0xd0, 0x38, 0xc0, 0x4, 0xe9, 0x1b, 0x73, 0x5, 0xe0, 0x10, + 0x53, 0xd7, 0x4b, 0x84, 0x80, 0xab, 0xea, 0xf5, 0xd9, 0xb4, 0x6f, 0xbf, 0xea, 0x25, 0x90, 0xcf, 0x4f, 0x15, + 0xc4, 0xd3, 0xa3, 0x83, 0x59, 0xf, 0x38, 0x66, 0xfa, 0xb8, 0xec, 0xde, 0xdc, 0x31, 0x47, 0xbf, 0x8b, 0xfe, + 0x27, 0x28, 0x70, 0x79, 0xf6, 0x44, 0x7f, 0xcb, 0xf7, 0xab, 0x55, 0x56, 0x9b, 0xd4, 0x9a, 0xbf, 0xa3, 0xa9, + 0xbd, 0xc2, 0xb8, 0x1c, 0x85, 0x3c, 0x13, 0x5e, 0xd7, 0x97, 0xec, 0xf9, 0x94, 0x5f, 0xf8, 0xa0, 0xb9, 0x4d, + 0x2, 0x8e, 0x9f, 0x64, 0xbe, 0x69, 0xb0, 0x94, 0x92, 0xbd, 0xd8, 0xfa, 0xc9, 0x7, 0x29, 0x7a, 0x0, 0x2f, 0xe8, + 0x9f, 0x33, 0xb4, 0xcb, 0x3f, 0xd7, 0x6c, 0x65, 0xf8, 0x15, 0xa7, 0xa7, 0x5, 0x4a, 0xb7, 0x6c, 0x28, 0x5c, + 0xf3, 0x3, 0xb1, 0x80, 0x93, 0x86, 0xf9, 0xdf, 0x4b, 0x56, 0x96, 0x36, 0xfd, 0x36, 0xc9, 0xe4, 0xa2, 0x24, + 0x34, 0x40, 0x54, 0x35, 0xbe, 0x26, 0x94, 0xd0, 0xd4, 0xd4, 0x55, 0xb4, 0x47, 0xf8, 0xe4, 0x7c, 0xe5, 0x37, + 0xdf, 0x11, 0xba, 0xea, 0xd, 0x92, 0xed, 0x92, 0x93, 0x7c, 0xa0, 0xad, 0x89, 0xd4, 0x82, 0xc5, 0x74, 0xfc, + 0x56, 0x69, 0x24, 0xf8, 0xe6, 0xfa, 0xc2, 0xd9, 0x7, 0x47, 0xb8, 0x4e, 0x9e, 0x23, 0x13, 0x16, 0xe0, 0xa1, + 0xcd, 0x2f, 0x69, 0x62, 0x4c, 0xc0, 0x72, 0x22, 0x86, 0x2f, 0x3a, 0x1c, 0xb4, 0x73, 0x56, 0x88, 0xe6, 0x82, + 0xfd, 0x2f, 0x2f, 0xc0, 0x30, 0x7f, 0x72, 0x23, 0xa7, 0x94, 0xc2, 0x6e, 0xf4, 0x2, 0xf6, 0xa3, 0xe0, 0x5d, 0xc, + 0x4c, 0xf7, 0x4e, 0x60, 0x12, 0x2, 0xca, 0x40, 0xc7, 0x1a, 0x4e, 0x3c, 0x7c, 0xce, 0xd8, 0x1b, 0xba, 0x5, 0x89, + 0xf, 0xec, 0xfe, 0x4, 0x96, 0xd, 0x99, 0x2b, 0xb6, 0xbd, 0x6e, 0xa5, 0x6d, 0x28, 0xd4, 0xc0, 0x19, 0xe3, 0x91, + 0x49, 0xe1, 0xa7, 0x84, 0xc8, 0xe7, 0x77, 0x56, 0x57, 0x94, 0xa2, 0x2e, 0x49, 0xf7, 0x8b, 0x1c, 0x8f, 0x85, + 0x75, 0x8f, 0x69, 0x97, 0x6b, 0xc2, 0x4d, 0xd9, 0x88, 0x23, 0xdc, 0x50, 0xb3, 0xa, 0xbb, 0x19, 0xbc, 0xe0, + 0x21, 0x76, 0xde, 0xe9, 0x46, 0x5d, 0x32, 0x6b, 0x8d, 0x4b, 0x99, 0xd4, 0x85, 0xc, 0x77, 0x29, 0x1f, 0x6b, + 0x8f, 0xf2, 0x2, 0x89, 0xef, 0x63, 0xab, 0xc, 0xe1, 0xd6, 0x72, 0xe3, 0xdf, 0x88, 0xd0, 0x2c, 0xdf, 0xae, 0xd6, + 0xf9, 0x29, 0x7, 0x94, 0x93, 0x10, 0x66, 0x57, 0x78, 0x6b, 0x8e, 0x84, 0x11, 0x6d, 0x2b, 0xe5, 0x8a, 0xa5, + 0x65, 0x98, 0xfc, 0x92, 0x47, 0x1d, 0xfd, 0x4b, 0x41, 0xdc, 0x87, 0x42, 0xf8, 0xbc, 0x9e, 0xc1, 0xfa, 0x91, + 0x81, 0x11, 0xcc, 0x92, 0x2f, 0xdb, 0xd8, 0xf8, 0x2e, 0x56, 0x6f, 0xbe, 0xf8, 0x6c, 0xf8, 0x5f, 0x2d, 0x61, + 0xb4, 0x4c, 0x7c, 0x6c, 0x11, 0x46, 0x4a, 0x63, 0x51, 0x55, 0x5a, 0xf5, 0xfa, 0x26, 0xc7, 0x45, 0x3, 0x64, + 0x84, 0xcb, 0x69, 0x36, 0x9b, 0x5, 0x1f, 0x1c, 0x10, 0x68, 0xbc, 0x12, 0x70, 0xde, 0x83, 0xdf, 0x94, 0x9b, + 0x94, 0x6f, 0xae, 0xdb, 0xe8, 0xef, 0xd7, 0x6c, 0x23, 0xd0, 0x6f, 0x8c, 0xc5, 0x6b, 0x37, 0xad, 0x72, 0x16, + 0x69, 0x77, 0x95, 0xb4, 0x6d, 0x6e, 0x1, 0x9f, 0xf0, 0xbd, 0xd5, 0x1f, 0x5b, 0x7a, 0xc5, 0xe3, 0x2d, 0xf7, + 0x3e, 0xd1, 0xce, 0xbe, 0x89, 0x34, 0xfa, 0x3d, 0x93, 0x6c, 0x90, 0x53, 0x3d, 0xfd, 0x7, 0xc4, 0xb3, 0xb, 0x9a, + 0x22, 0xba, 0xaa, 0x50, 0x20, 0xaa, 0x4f, 0x72, 0xb6, 0xf9, 0xed, 0xc0, 0x89, 0xef, 0xab, 0x66, 0x5a, 0x47, + 0x3, 0x6f, 0xc7, 0xb4, 0x10, 0x0, 0x89, 0x7, 0x4f, 0xa, 0xbe, 0x64, 0xfb, 0x5b, 0x33, 0x28, 0xbe, 0x5a, 0xe6, + 0x9c, 0x1b, 0x94, 0x5f, 0x1, 0x88, 0x6, 0xbc, 0xbf, 0x81, 0x98, 0x97, 0x54, 0xe7, 0x52, 0xa0, 0xa, 0x37, 0xf, + 0xf0, 0x3f, 0xba, 0x7, 0xc1, 0xbc, 0xbe, 0x36, 0x31, 0x94, 0x5d, 0x7a, 0x8c, 0x2d, 0xbe, 0xc, 0x2c, 0xb2, 0x71, + 0xa2, 0x73, 0xb4, 0xfc, 0xd2, 0xc4, 0x24, 0x5, 0x64, 0xd1, 0x15, 0xf6, 0x61, 0x7c, 0x60, 0x90, 0x49, 0x8c, + 0x69, 0x68, 0xa3, 0x73, 0xf9, 0x1, 0x7, 0xfa, 0x4f, 0x2a, 0xd0, 0x52, 0x84, 0x7c, 0x5c, 0x47, 0x78, 0x3c, 0xac, + 0xc4, 0x5c, 0x18, 0x32, 0x6c, 0x5e, 0xbb, 0xdb, 0xbd, 0x3c, 0x84, 0xc9, 0x9f, 0x65, 0xab, 0x3f, 0xa, 0x53, + 0x2c, 0xa1, 0x50, 0x4a, 0x45, 0x62, 0x46, 0xaa, 0xb4, 0xe8, 0x49, 0x11, 0x33, 0xa1, 0x32, 0x30, 0x2d, 0xf0, + 0xb2, 0x2f, 0x60, 0x68, 0x4a, 0x3b, 0x27, 0xd3, 0xb, 0xfa, 0x53, 0xc8, 0xdb, 0x99, 0xea, 0x8c, 0x67, 0x57, + 0x25, 0x26, 0xe, 0xc5, 0x98, 0xd0, 0xaf, 0xff, 0xac, 0x83, 0x85, 0x8f, 0x21, 0x4b, 0x91, 0xdd, 0x79, 0x40, + 0x9e, 0x36, 0x1f, 0x28, 0x62, 0xc9, 0xd3, 0x32, 0xe8, 0xc0, 0x62, 0x1b, 0x5b, 0xd5, 0x16, 0xf9, 0x2f, 0xa5, + 0x46, 0x73, 0xb3, 0x0, 0xc9, 0xbf, 0x3c, 0x31, 0x60, 0x3a, 0xbf, 0xc3, 0xdd, 0xc9, 0xb0, 0x8b, 0x7c, 0x2, 0x39, + 0x88, 0x37, 0x15, 0xfb, 0x81, 0x59, 0x80, 0xb2, 0xd9, 0x62, 0xf, 0xac, 0x85, 0x82, 0x8a, 0x49, 0x4, 0xea, 0x4a, + 0x1d, 0xb2, 0x29, 0x81, 0xba, 0xd7, 0xe4, 0x1a, 0x7f, 0x5d, 0x95, 0xf8, 0xcc, 0x70, 0x33, 0x79, 0x91, 0x85, + 0xf0, 0xc, 0xbb, 0x62, 0x3a, 0xcb, 0x1a, 0x6, 0x59, 0x88, 0x73, 0xb7, 0x54, 0xf6, 0x2a, 0xdb, 0xb4, 0xd3, 0x6a, + 0xe2, 0x72, 0x33, 0xf5, 0x55, 0xa9, 0x9c, 0xb8, 0xb6, 0xf2, 0x69, 0x65, 0xde, 0xc5, 0xf9, 0x9a, 0x25, 0xe6, + 0x9b, 0x38, 0x74, 0xe0, 0x17, 0x47, 0x96, 0x84, 0xce, 0x6c, 0x35, 0xb7, 0xfd, 0x90, 0x8e, 0xaf, 0x48, 0x41, + 0x17, 0xd8, 0xd8, 0xe0, 0x45, 0x1, 0x1b, 0xea, 0x75, 0x5b, 0x4, 0xfb, 0xf2, 0x8d, 0x47, 0xfd, 0x4f, 0xf1, 0xd0, + 0xd1, 0x33, 0xab, 0xce, 0x57, 0xd1, 0x3f, 0xde, 0xc, 0xf1, 0xbe, 0x2b, 0x81, 0xe2, 0x45, 0x4a, 0x2f, 0x25, + 0x16, 0xf7, 0x9f, 0x8, 0x98, 0x7f, 0x4a, 0x31, 0xd7, 0x66, 0xf9, 0xa0, 0x5c, 0x4e, 0xee, 0x4f, 0x3f, 0xbc, + 0x4a, 0x4a, 0xcd, 0x2c, 0x28, 0x25, 0xbc, 0xe1, 0x47, 0x8d, 0xd2, 0x92, 0x5, 0xa, 0x67, 0xb2, 0x49, 0x4f, 0x47, + 0xe8, 0xe5, 0x63, 0x92, 0xe0, 0xd2, 0x35, 0xed, 0xd9, 0xb6, 0x7b, 0x37, 0x7f, 0x20, 0xc4, 0xe4, 0xc4, 0x20, + 0xbb, 0xd, 0x88, 0x29, 0xbe, 0x68, 0x87, 0xf, 0xfe, 0xb, 0xff, 0x2, 0x6b, 0xca, 0x47, 0x40, 0x80, 0x15, 0xc7, + 0xcc, 0x7f, 0x31, 0x20, 0x62, 0x59, 0x51, 0xe5, 0x35, 0x57, 0x27, 0x6b, 0x34, 0x3e, 0x1c, 0xa1, 0x32, 0x3b, + 0x8b, 0xeb, 0x6a, 0xa6, 0x4a, 0xe8, 0x7d, 0xaa, 0x98, 0x4c, 0x6e, 0x97, 0x1c, 0x5b, 0x15, 0xef, 0x57, 0xd7, + 0x4f, 0x8a, 0x5f, 0xde, 0x49, 0xc, 0x80, 0xa5, 0xcb, 0x19, 0x85, 0xe5, 0xbe, 0x16, 0x32, 0x6b, 0xd1, 0xf2, + 0xe0, 0xff, 0x58, 0x31, 0xe5, 0x55, 0x72, 0xbf, 0xa5, 0x2e, 0x7f, 0x9, 0x2c, 0x77, 0xc4, 0xec, 0x75, 0xcd, + 0x11, 0x31, 0x78, 0x39, 0xed, 0x79, 0x7d, 0x3, 0x70, 0xac, 0xa3, 0x2a, 0x8f, 0xe7, 0x7b, 0x2, 0xa0, 0x1b, 0x1c, + 0xf9, 0x36, 0x36, 0x91, 0x31, 0x71, 0x80, 0x3a, 0x2e, 0x6d, 0x2d, 0x73, 0xf1, 0x8c, 0xfe, 0x6, 0x2c, 0x1c, + 0x69, 0x8f, 0xae, 0x46, 0x5a, 0xdc, 0xfa, 0x3b, 0x3d, 0x2a, 0x50, 0xd1, 0x3f, 0xd0, 0xa5, 0xfb, 0x21, 0xfe, + 0xc8, 0x60, 0x6f, 0x71, 0xb8, 0xa9, 0xbf, 0xe5, 0x35, 0x80, 0x3b, 0xde, 0xb4, 0xdf, 0xca, 0xa0, 0x1e, 0xbc, + 0x9b, 0xcb, 0xc2, 0x9e, 0x83, 0x44, 0xf9, 0x9f, 0x92, 0x57, 0x22, 0x2f, 0x19, 0xa3, 0x73, 0x85, 0x62, 0x86, + 0x2d, 0xce, 0xf6, 0x3d, 0xb3, 0x8e, 0xeb, 0xaa, 0x9e, 0xe6, 0x1f, 0xf5, 0x51, 0x3e, 0xf3, 0xb8, 0xd9, 0x44, + 0x55, 0x1e, 0xbe, 0x89, 0x2f, 0x6a, 0xb5, 0xfb, 0x83, 0xc7, 0x55, 0x5c, 0xaa, 0xa0, 0x1c, 0x15, 0x3e, 0xd4, + 0x2e, 0x2e, 0x36, 0x69, 0x2f, 0x8e, 0xcb, 0xc7, 0xea, 0x3d, 0x79, 0x2e, 0xf0, 0x2e, 0xa6, 0xd8, 0x39, 0x3b, + 0xa4, 0x99, 0xae, 0xc, 0x8f, 0x3e, 0x77, 0x2a, 0xf3, 0x93, 0x8d, 0xdc, 0x79, 0xbe, 0x79, 0x1c, 0xe6, 0xf9, + 0xc4, 0x78, 0x38, 0xce, 0x93, 0x96, 0xf7, 0x3a, 0xa5, 0x54, 0x70, 0xe6, 0x6f, 0x8a, 0x61, 0x3e, 0xdf, 0xd9, + 0x72, 0x2f, 0x2e, 0x3d, 0xeb, 0xb6, 0x29, 0xc6, 0x87, 0xb2, 0xf9, 0x72, 0x2, 0x56, 0x67, 0x74, 0xec, 0xe7, + 0xa2, 0xd2, 0xc2, 0x9f, 0xa, 0x9e, 0x22, 0xd2, 0xf5, 0xf7, 0x74, 0x24, 0x4f, 0xfc, 0x8f, 0xdf, 0xab, 0xe0, + 0x34, 0x80, 0xa0, 0x82, 0xab, 0x44, 0x19, 0x28, 0x75, 0x74, 0xe5, 0x1b, 0x75, 0xff, 0xfc, 0x94, 0x4d, 0x80, + 0xea, 0x94, 0x85, 0xd6, 0xf5, 0x8b, 0x39, 0x51, 0x7c, 0x12, 0x3f, 0x6a, 0xf0, 0xa1, 0xed, 0xfd, 0x52, 0x2d, + 0x90, 0xa8, 0x4b, 0x2b, 0xe1, 0x3b, 0x37, 0xc4, 0xe8, 0x98, 0xfb, 0x1c, 0x5f, 0xdc, 0x5d, 0x2f, 0xde, 0xae, + 0xd0, 0xa, 0x5c, 0x3a, 0x1f, 0xce, 0x37, 0x7f, 0x9d, 0x84, 0xb9, 0xc7, 0xe2, 0xfc, 0xf7, 0x73, 0xee, 0x79, + 0xbf, 0x6a, 0x62, 0x6a, 0x8c, 0x0, 0x54, 0x3e, 0xca, 0x66, 0x7e, 0xf0, 0xf9, 0x5c, 0xd3, 0xc9, 0xd, 0xd8, 0x85, + 0x3e, 0xa7, 0x19, 0x91, 0xf5, 0x90, 0x51, 0xbb, 0xfb, 0x63, 0xec, 0x25, 0x12, 0x14, 0x3, 0xce, 0xde, 0x7, 0xf7, + 0x59, 0x8f, 0x73, 0xb4, 0xe2, 0xf1, 0x32, 0x35, 0x21, 0x2f, 0x0, 0x61, 0x69, 0x5e, 0x2f, 0x12, 0x4f, 0x85, + 0xbc, 0xb3, 0x14, 0x85, 0x1f, 0x54, 0x6d, 0xa7, 0xfe, 0x47, 0xe8, 0xc4, 0xb2, 0x3f, 0xf4, 0x15, 0xf8, 0xc6, + 0xdd, 0x24, 0x14, 0x81, 0xa8, 0xe, 0xb1, 0x9b, 0x59, 0x60, 0x86, 0x64, 0x92, 0xc2, 0x5c, 0xc2, 0x2d, 0x92, + 0xcc, 0x9e, 0xbb, 0xa8, 0xed, 0xe5, 0x2b, 0xd1, 0x40, 0xdf, 0xdd, 0x57, 0x8d, 0x96, 0x3, 0x34, 0x6e, 0xbf, + 0xaf, 0xfd, 0x0, 0xfd, 0x4f, 0x0, 0x4, 0x35, 0xb8, 0x2b, 0x3b, 0xec, 0x33, 0x48, 0x94, 0xd0, 0x3c, 0x16, 0x98, + 0x9, 0xd1, 0xbc, 0x0, 0x36, 0xb3, 0x9d, 0x60, 0x7f, 0xab, 0x29, 0xe4, 0xca, 0xc0, 0x30, 0xd7, 0x45, 0x7d, 0xd7, + 0xb7, 0xf2, 0xc5, 0x6e, 0x7c, 0x9a, 0x5d, 0xe8, 0xfc, 0x2c, 0x27, 0x7b, 0xdb, 0x30, 0xb9, 0xc3, 0x51, 0x6c, + 0xc7, 0x35, 0x0, 0xeb, 0x8c, 0x27, 0xf9, 0x70, 0xe4, 0x54, 0xee, 0xb0, 0xe6, 0xbe, 0xb8, 0x94, 0x14, 0x6f, + 0xf5, 0xa6, 0x28, 0xa2, 0xc3, 0x7e, 0x3c, 0x93, 0x5a, 0xdd, 0x79, 0x44, 0x7f, 0x9c, 0xf8, 0xde, 0x6c, 0xfa, + 0xda, 0xa9, 0xe5, 0x42, 0x99, 0x4e, 0x60, 0x21, 0x9e, 0x12, 0x4a, 0x94, 0xb5, 0x9b, 0xa6, 0x0, 0x57, 0x23, + 0x7b, 0xcf, 0x38, 0xe8, 0xe3, 0xcb, 0x1d, 0xf8, 0x13, 0x9f, 0x2f, 0x35, 0x91, 0xb4, 0xd8, 0xac, 0xe8, 0xe7, + 0xb2, 0x87, 0x3f, 0xac, 0xd, 0xcc, 0x6f, 0xbd, 0xfb, 0x5f, 0xd6, 0x68, 0x37, 0x61, 0xe8, 0x71, 0xbe, 0xc6, + 0xc0, 0xae, 0x52, 0xf5, 0x1d, 0xc1, 0x1, 0xc8, 0xfa, 0x89, 0xf, 0x3b, 0x90, 0x57, 0xa5, 0x99, 0xec, 0xa, 0xb8, + 0xab, 0x6d, 0x12, 0x9a, 0x8b, 0xe8, 0xcc, 0xe0, 0x30, 0x9f, 0x42, 0x35, 0x7, 0xa0, 0x4a, 0x71, 0xab, 0x6d, + 0x82, 0x98, 0x9b, 0x7f, 0xb3, 0xc7, 0x6b, 0x25, 0x6f, 0xe5, 0x86, 0xa8, 0xdb, 0xb2, 0x7f, 0x37, 0xb1, 0xd3, + 0x46, 0xe9, 0xe6, 0x92, 0xbe, 0x69, 0x90, 0xbf, 0xc5, 0xf0, 0xb4, 0xe1, 0x22, 0xe4, 0xc5, 0x7d, 0x1a, 0x28, + 0x50, 0x5b, 0x36, 0x3d, 0x86, 0x80, 0x92, 0x22, 0xed, 0xc6, 0x5d, 0x2a, 0x3f, 0xad, 0x75, 0xb1, 0x3a, 0x5e, + 0xae, 0xed, 0x4f, 0xa5, 0xaa, 0x48, 0x85, 0x5f, 0xb8, 0x21, 0xa, 0x55, 0x5d, 0x2f, 0x2c, 0x17, 0xf7, 0xac, + 0x38, 0xa3, 0x95, 0x62, 0x86, 0xc2, 0xa3, 0x6a, 0x44, 0xdc, 0xb3, 0x43, 0x44, 0xc3, 0x3b, 0xc8, 0xc2, 0x5d, + 0xe8, 0x12, 0x35, 0xae, 0xfd, 0x26, 0x75, 0x87, 0x6, 0x7, 0xe0, 0x81, 0xe7, 0x4b, 0x2f, 0x54, 0xd6, 0x4a, 0x1c, + 0xb9, 0x2f, 0xfb, 0xad, 0x6d, 0x32, 0x94, 0x68, 0x65, 0x6, 0xa9, 0x9f, 0xf4, 0xe9, 0x8e, 0xaf, 0x6, 0xb0, 0x41, + 0x11, 0xbb, 0x98, 0xec, 0x76, 0x40, 0x7a, 0xd, 0xa7, 0x7, 0x77, 0x1b, 0xa0, 0x7, 0x8b, 0x84, 0x9e, 0xeb, 0xda, + 0x80, 0xcf, 0xc, 0x48, 0xa9, 0x7f, 0x27, 0xcd, 0xa5, 0x1a, 0x92, 0xfc, 0xde, 0x99, 0xe2, 0x97, 0x83, 0x80, + 0x65, 0xbf, 0xb1, 0xba, 0xed, 0xdb, 0x3a, 0xe0, 0xee, 0xc2, 0x2, 0x8, 0x21, 0x60, 0xfe, 0x91, 0x7a, 0xcd, 0x92, + 0xd3, 0x12, 0x13, 0x19, 0x82, 0x90, 0xd2, 0xb4, 0x9a, 0xd7, 0x32, 0xd0, 0xf2, 0x85, 0x99, 0xa4, 0x0, 0xcb, + 0x4f, 0x8a, 0xf8, 0x86, 0x50, 0x11, 0x23, 0x53, 0xe9, 0x6a, 0xe, 0x2a, 0x19, 0x7c, 0xe8, 0x80, 0x17, 0x9e, + 0xc9, 0xf4, 0x19, 0x28, 0xb6, 0x32, 0x24, 0x61, 0xac, 0xe5, 0xaa, 0x11, 0x53, 0x1b, 0x34, 0x1f, 0x24, 0x85, + 0x14, 0x86, 0xb1, 0x9e, 0x2e, 0x4d, 0x82, 0x12, 0x69, 0x6a, 0xbb, 0xb3, 0x8f, 0xf3, 0xc2, 0x40, 0x7c, 0xbd, + 0xad, 0x31, 0xdd, 0x6, 0xf5, 0x16, 0x3c, 0xb, 0x43, 0x31, 0x1, 0x39, 0xfd, 0xa, 0xfe, 0x5d, 0x5d, 0x59, 0x1a, + 0xf1, 0x3a, 0xc5, 0xc5, 0xeb, 0x30, 0x57, 0xa4, 0xdc, 0xf4, 0xfa, 0xa3, 0xf, 0x71, 0xb6, 0x52, 0xb8, 0x73, 0x5, + 0x8a, 0xcf, 0xdb, 0x9b, 0xdb, 0x65, 0xdb, 0x64, 0xbd, 0x27, 0x45, 0xde, 0xe6, 0x50, 0x0, 0xa, 0x1e, 0x4d, 0xce, + 0x98, 0xe0, 0x2e, 0x2e, 0xe0, 0xd9, 0x44, 0xbf, 0x86, 0x60, 0xb1, 0x33, 0xb3, 0x33, 0xaa, 0x8e, 0x5, 0x96, + 0x10, 0xca, 0x4b, 0x2c, 0x56, 0xdf, 0x42, 0x59, 0xdc, 0x93, 0xc1, 0x79, 0xed, 0x0, 0x54, 0x44, 0x40, 0xf7, + 0x86, 0xaa, 0x8e, 0xbb, 0x5c, 0x1a, 0x6, 0x28, 0xea, 0x11, 0xab, 0xba, 0x6a, 0x36, 0x1c, 0x30, 0x6c, 0x66, + 0x11, 0xce, 0xf4, 0xd, 0xab, 0xed, 0xa0, 0x50, 0xeb, 0x13, 0xe1, 0x22, 0x1a, 0x75, 0x68, 0x29, 0x62, 0x10, + 0xae, 0x68, 0x80, 0xf6, 0xa7, 0xd4, 0x9d, 0xcd, 0x2c, 0x22, 0x6c, 0xab, 0x44, 0x4d, 0x53, 0xad, 0x1c, 0x2, + 0x5d, 0x3, 0xbb, 0x9b, 0x41, 0x97, 0x43, 0x46, 0x24, 0x34, 0xdf, 0x7a, 0xaf, 0x27, 0xbd, 0xac, 0x4f, 0x31, + 0xed, 0xeb, 0x6d, 0x9f, 0x46, 0x2d, 0x78, 0xc7, 0xad, 0x60, 0xea, 0x21, 0x52, 0x1f, 0x66, 0x4, 0xd4, 0xe2, 0x0, + 0x3, 0xda, 0xee, 0x4a, 0xa, 0xc7, 0x5b, 0x70, 0x12, 0x9f, 0xb7, 0xa2, 0x6a, 0x7d, 0xca, 0x28, 0x3a, 0xc6, 0x5e, + 0x57, 0x2, 0xb1, 0x88, 0x29, 0x72, 0xa4, 0x82, 0x9a, 0x59, 0xb6, 0xc0, 0x63, 0xbb, 0x88, 0xc5, 0x15, 0x3f, + 0x33, 0xf5, 0x24, 0x54, 0xbc, 0x16, 0x7c, 0xc6, 0xda, 0xd8, 0xfa, 0xb9, 0xe5, 0xca, 0x1e, 0x49, 0xdc, 0x2a, + 0x25, 0x42, 0xe, 0x58, 0xa1, 0x60, 0x1, 0x91, 0x1d, 0x8a, 0xaf, 0x91, 0x60, 0x9, 0x17, 0xed, 0xc8, 0x28, 0xcf, + 0x88, 0xb0, 0xb0, 0x40, 0xca, 0x6d, 0xe1, 0x9, 0xe, 0x19, 0x4a, 0xc2, 0x48, 0xba, 0x5a, 0x22, 0xfe, 0x4b, 0xe2, + 0x38, 0xe6, 0xe0, 0x44, 0x33, 0x8b, 0xcd, 0xc, 0x25, 0x2b, 0x89, 0x68, 0x64, 0x61, 0x55, 0x3a, 0x55, 0xb2, + 0x7c, 0xbc, 0xe6, 0x93, 0x62, 0x5c, 0xc1, 0x76, 0x1c, 0x5c, 0x1e, 0x59, 0x3f, 0xcb, 0x39, 0x53, 0x19, 0xf3, + 0x7e, 0xaf, 0xc3, 0xab, 0x74, 0x78, 0x73, 0x73, 0x4d, 0x2f, 0xe6, 0x9f, 0x3c, 0xb1, 0xc8, 0x77, 0xbe, 0x16, + 0xd2, 0xe5, 0x8, 0xe1, 0x71, 0xce, 0xb4, 0x2, 0xd7, 0x69, 0x1, 0x3e, 0x49, 0x31, 0x27, 0x5, 0xad, 0x92, 0xdf, + 0x10, 0x90, 0xc5, 0x54, 0x76, 0xc4, 0x4f, 0x8f, 0x14, 0x8d, 0xff, 0x88, 0xd0, 0x50, 0x20, 0x8d, 0x70, 0x8a, + 0xcb, 0x43, 0xab, 0x31, 0x30, 0xec, 0x7b, 0x93, 0x71, 0xfc, 0xc3, 0x68, 0x4a, 0x72, 0x3e, 0xe7, 0x84, 0xce, + 0x91, 0x68, 0xf, 0xfa, 0xb9, 0xce, 0x4f, 0x7a, 0xde, 0x18, 0x12, 0x90, 0xf5, 0xf2, 0xce, 0xc5, 0xc5, 0xd6, + 0x64, 0x5b, 0xa1, 0x66, 0xe0, 0x3a, 0xff, 0xd, 0x49, 0xb1, 0x5d, 0x2c, 0x6e, 0x3e, 0x5b, 0x86, 0x2e, 0xd7, + 0xae, 0xd5, 0xc1, 0xcc, 0xc7, 0x3b, 0x44, 0x1f, 0x72, 0x67, 0x84, 0x6, 0xbb, 0x5c, 0x13, 0xff, 0x20, 0xd8, + 0x21, 0x22, 0xd6, 0x9c, 0x2b, 0xa6, 0x47, 0x85, 0xbd, 0xcf, 0xc6, 0xc3, 0x4d, 0x5d, 0xee, 0x7d, 0x63, 0x4f, + 0xe4, 0xab, 0x37, 0xfc, 0x95, 0x84, 0xbd, 0xc8, 0x14, 0x24, 0x30, 0x43, 0x29, 0xc6, 0x8d, 0xd5, 0xa7, 0x84, + 0xf6, 0x4a, 0x74, 0x54, 0x7e, 0x4b, 0x4d, 0xba, 0xbc, 0x2c, 0xa8, 0xe0, 0x3b, 0xbd, 0xd4, 0x8d, 0x32, 0xf8, + 0x92, 0x91, 0x3f, 0x42, 0xdb, 0xbe, 0xac, 0x66, 0x8d, 0x78, 0x3f, 0xca, 0xe9, 0x45, 0x78, 0xd7, 0x2f, 0xec, + 0xfa, 0xb6, 0x7c, 0x92, 0xed, 0xb, 0xff, 0xa0, 0xb7, 0xd4, 0xfb, 0xe8, 0x6e, 0x63, 0x52, 0x54, 0xa9, 0x64, + 0x8e, 0x61, 0xd6, 0x1a, 0x7f, 0x97, 0x53, 0x41, 0xb2, 0xa0, 0xf2, 0x4c, 0xff, 0x54, 0xd7, 0x9c, 0x90, 0xcf, + 0x3, 0xa3, 0xc6, 0x59, 0xb2, 0xb2, 0xe0, 0xb2, 0xe2, 0xd6, 0x54, 0xd8, 0xad, 0x71, 0xf4, 0xae, 0xc7, 0x7a, + 0xfd, 0x30, 0xb0, 0x6c, 0xa2, 0x4b, 0xc4, 0x2e, 0x59, 0xab, 0xcd, 0xb4, 0xf4, 0xe7, 0xde, 0xad, 0x14, 0x1b, + 0x64, 0x42, 0x4b, 0x5d, 0xf3, 0xba, 0xf3, 0x7a, 0xb9, 0xb7, 0xd1, 0xcb, 0x42, 0xec, 0x23, 0x8a, 0xbb, 0x44, + 0x79, 0x58, 0x9e, 0x79, 0x38, 0x20, 0x8, 0x0, 0x8e, 0xa7, 0xbf, 0xbd, 0x75, 0x69, 0xd5, 0x4a, 0x83, 0x62, 0x70, + 0x9b, 0xb3, 0xf2, 0x28, 0xdb, 0xf, 0x8d, 0xad, 0xf3, 0xb9, 0xa9, 0x2d, 0x16, 0x42, 0x1b, 0x55, 0x1b, 0x66, + 0xfa, 0x14, 0xa8, 0x29, 0x49, 0x23, 0xb2, 0xfd, 0x68, 0x9, 0x69, 0x7d, 0x74, 0xc6, 0x4f, 0xc8, 0x29, 0xc5, + 0x8a, 0x9a, 0xde, 0x7, 0xd3, 0x78, 0xf4, 0xe6, 0x5b, 0x8e, 0x34, 0xc4, 0xf, 0x9, 0x0, 0x68, 0xce, 0x2d, 0x81, + 0x27, 0x24, 0x2f, 0xcd, 0x70, 0x5c, 0x86, 0x9c, 0x2d, 0x10, 0xee, 0xd4, 0x9a, 0x1a, 0xdf, 0x2c, 0xc8, 0x65, + 0x8a, 0xd4, 0xd7, 0x6d, 0x10, 0x16, 0x9f, 0xeb, 0xc7, 0x64, 0x61, 0xb4, 0xbd, 0x51, 0x7b, 0x88, 0xc5, 0x50, + 0x95, 0xc7, 0xa4, 0x7e, 0xa9, 0x74, 0x44, 0x9e, 0xd5, 0x56, 0x95, 0x4, 0xd8, 0xb0, 0xb2, 0x5c, 0x4f, 0x5, 0x82, + 0x2b, 0xfc, 0x1e, 0x53, 0x9d, 0xe2, 0x10, 0xaa, 0x32, 0x51, 0x91, 0x1d, 0xeb, 0x47, 0x4, 0x6, 0x70, 0xd6, 0x61, + 0xb6, 0xc8, 0xe3, 0xd, 0x52, 0x84, 0xdb, 0x9c, 0x55, 0x6f, 0x46, 0x6c, 0x50, 0xb6, 0x62, 0x42, 0x31, 0xfa, + 0x63, 0x9d, 0x97, 0xa7, 0x9c, 0x31, 0xb1, 0x43, 0x54, 0x4f, 0x5f, 0x7e, 0x6a, 0x34, 0x91, 0x38, 0x68, 0x9b, + 0x6b, 0x5e, 0xc1, 0x48, 0x5, 0x9d, 0x1b, 0x7e, 0x95, 0x63, 0x64, 0x9f, 0x3c, 0x4c, 0x71, 0x5c, 0x9b, 0x87, + 0xce, 0x31, 0x5c, 0xc7, 0xa7, 0x24, 0x16, 0xdb, 0x83, 0xdb, 0x54, 0xea, 0x6a, 0xb8, 0xe, 0xd6, 0xba, 0x10, + 0xeb, 0xe3, 0x7c, 0xa0, 0xcc, 0x91, 0xe8, 0x6, 0x69, 0x66, 0x60, 0xef, 0x55, 0x4a, 0x3e, 0xf9, 0xe6, 0xb4, + 0x5b, 0x48, 0xb6, 0xf4, 0xeb, 0x8, 0xe6, 0xc3, 0xb5, 0x22, 0xf8, 0x18, 0x1b, 0xc0, 0xb6, 0xdb, 0x87, 0x8b, + 0x13, 0x3c, 0x21, ]; let mac_data = vec![ - 0xe8, 0x38, 0x46, 0xb7, 0xa8, 0xf9, 0x5c, 0x66, 0xe3, 0x8e, 0x10, 0x8f, 0xb6, 0x4, 0x80, - 0xc7, + 0xe8, 0x38, 0x46, 0xb7, 0xa8, 0xf9, 0x5c, 0x66, 0xe3, 0x8e, 0x10, 0x8f, 0xb6, 0x4, 0x80, 0xc7, ]; let upgrade_license = ServerUpgradeLicense { @@ -748,16 +641,12 @@ fn upgrade_license_verifies_correctly() { let encryption_info = LicenseEncryptionData { premaster_secret: Vec::new(), // this field is not involved in this unit test mac_salt_key: vec![ - 0xd5, 0x2c, 0x7c, 0xd2, 0x71, 0x15, 0x2c, 0x41, 0xbb, 0xd8, 0x36, 0xdb, 0x19, 0x3e, - 0xc0, 0xf3, + 0xd5, 0x2c, 0x7c, 0xd2, 0x71, 0x15, 0x2c, 0x41, 0xbb, 0xd8, 0x36, 0xdb, 0x19, 0x3e, 0xc0, 0xf3, ], license_key: vec![ - 0x88, 0x7d, 0x33, 0xa6, 0x13, 0xd, 0x76, 0xbf, 0x76, 0x2a, 0xf, 0x57, 0x71, 0x1d, 0x40, - 0xa3, + 0x88, 0x7d, 0x33, 0xa6, 0x13, 0xd, 0x76, 0xbf, 0x76, 0x2a, 0xf, 0x57, 0x71, 0x1d, 0x40, 0xa3, ], }; - upgrade_license - .verify_server_license(&encryption_info) - .unwrap(); + upgrade_license.verify_server_license(&encryption_info).unwrap(); } diff --git a/ironrdp/src/rdp/server_license/test.rs b/ironrdp/src/rdp/server_license/test.rs index 2160bf3f..c704a779 100644 --- a/ironrdp/src/rdp/server_license/test.rs +++ b/ironrdp/src/rdp/server_license/test.rs @@ -11,11 +11,10 @@ const LICENSE_HEADER_BUFFER: [u8; 8] = [ const BLOB_BUFFER: [u8; 76] = [ 0x08, 0x00, // sig blob type 0x48, 0x00, // sig blob len - 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, - 0xe1, 0x8f, 0x5f, 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, - 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, - 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // blob data + 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, 0xe1, 0x8f, 0x5f, + 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, + 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, + 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // blob data ]; const PLATFORM_CHALLENGE_BUFFER: [u8; 42] = [ @@ -26,8 +25,7 @@ const PLATFORM_CHALLENGE_BUFFER: [u8; 42] = [ 0x00, 0x00, // ignored 0x0a, 0x00, // blob len 0x46, 0x37, 0x85, 0x54, 0x8e, 0xc5, 0x91, 0x34, 0x97, 0x5d, // challenge - 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, - 0x0a, // mac data + 0x38, 0x23, 0x62, 0x5d, 0x10, 0x8b, 0x93, 0xc3, 0xf1, 0xe4, 0x67, 0x1f, 0x4a, 0xb6, 0x00, 0x0a, // mac data ]; pub const STATUS_VALID_CLIENT_BUFFER: [u8; 20] = [ @@ -58,11 +56,7 @@ lazy_static! { fn read_blob_header_handles_wrong_type_correctly() { match BlobHeader::read_from_buffer(BlobType::Certificate, &mut BLOB_BUFFER.as_ref()) { Err(ServerLicenseError::InvalidBlobType) => (), - Err(err) => panic!( - "expected {}, found {}", - ServerLicenseError::InvalidBlobType, - err - ), + Err(err) => panic!("expected {}, found {}", ServerLicenseError::InvalidBlobType, err), Ok(_) => panic!("expected error, found Ok"), } } @@ -72,28 +66,23 @@ fn read_blob_header_handles_invalid_type_correctly() { let invalid_blob_buffer: [u8; 76] = [ 0x99, 0x00, // sig blob type 0x48, 0x00, // sig blob len - 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, - 0xb4, 0xe1, 0x8f, 0x5f, 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, - 0xdb, 0xb3, 0x4a, 0xfd, 0x9a, 0xda, 0x42, 0xad, 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, - 0x4c, 0x1a, 0xa8, 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, 0x9a, 0xe4, 0x99, 0x68, 0x3f, 0x6c, - 0xd6, 0x76, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // blob data + 0xe9, 0xe1, 0xd6, 0x28, 0x46, 0x8b, 0x4e, 0xf5, 0x0a, 0xdf, 0xfd, 0xee, 0x21, 0x99, 0xac, 0xb4, 0xe1, 0x8f, + 0x5f, 0x81, 0x57, 0x82, 0xef, 0x9d, 0x96, 0x52, 0x63, 0x27, 0x18, 0x29, 0xdb, 0xb3, 0x4a, 0xfd, 0x9a, 0xda, + 0x42, 0xad, 0xb5, 0x69, 0x21, 0x89, 0x0e, 0x1d, 0xc0, 0x4c, 0x1a, 0xa8, 0xaa, 0x71, 0x3e, 0x0f, 0x54, 0xb9, + 0x9a, 0xe4, 0x99, 0x68, 0x3f, 0x6c, 0xd6, 0x76, 0x84, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, // blob data ]; match BlobHeader::read_from_buffer(BlobType::Certificate, invalid_blob_buffer.as_ref()) { Err(ServerLicenseError::InvalidBlobType) => (), - Err(err) => panic!( - "expected error {}, found {}", - ServerLicenseError::InvalidBlobType, - err - ), + Err(err) => panic!("expected error {}, found {}", ServerLicenseError::InvalidBlobType, err), Ok(_) => panic!("expected error, found Ok"), } } #[test] fn read_blob_header_reads_blob_correctly() { - let blob = - BlobHeader::read_from_buffer(BlobType::RsaSignature, &mut BLOB_BUFFER.as_ref()).unwrap(); + let blob = BlobHeader::read_from_buffer(BlobType::RsaSignature, &mut BLOB_BUFFER.as_ref()).unwrap(); assert_eq!(blob.length, BLOB_BUFFER.len() - 4); } @@ -117,12 +106,10 @@ fn mac_data_computes_correctly() { ]; let server_mac_data: [u8; 16] = [ - 0x58, 0xaf, 0x1f, 0x30, 0xd6, 0x4e, 0xe8, 0x6, 0xfc, 0xf9, 0xe6, 0x68, 0x21, 0x64, 0x25, - 0x3d, + 0x58, 0xaf, 0x1f, 0x30, 0xd6, 0x4e, 0xe8, 0x6, 0xfc, 0xf9, 0xe6, 0x68, 0x21, 0x64, 0x25, 0x3d, ]; - let decrypted_server_challenge: [u8; 10] = - [0x54, 0x0, 0x45, 0x0, 0x53, 0x0, 0x54, 0x0, 0x0, 0x0]; + let decrypted_server_challenge: [u8; 10] = [0x54, 0x0, 0x45, 0x0, 0x53, 0x0, 0x54, 0x0, 0x0, 0x0]; assert_eq!( compute_mac_data(mac_salt_key.as_ref(), decrypted_server_challenge.as_ref()), diff --git a/ironrdp/src/rdp/session_info.rs b/ironrdp/src/rdp/session_info.rs index 4e1362e7..63949594 100644 --- a/ironrdp/src/rdp/session_info.rs +++ b/ironrdp/src/rdp/session_info.rs @@ -4,14 +4,6 @@ mod tests; mod logon_extended; mod logon_info; -pub use self::{ - logon_extended::{ - LogonErrorNotificationData, LogonErrorNotificationType, LogonErrorsInfo, LogonExFlags, - LogonInfoExtended, ServerAutoReconnect, - }, - logon_info::{LogonInfo, LogonInfoVersion1, LogonInfoVersion2}, -}; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -19,6 +11,11 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::logon_extended::{ + LogonErrorNotificationData, LogonErrorNotificationType, LogonErrorsInfo, LogonExFlags, LogonInfoExtended, + ServerAutoReconnect, +}; +pub use self::logon_info::{LogonInfo, LogonInfoVersion1, LogonInfoVersion2}; use crate::{impl_from_error, PduParsing}; const INFO_TYPE_FIELD_SIZE: usize = 4; @@ -35,29 +32,22 @@ impl PduParsing for SaveSessionInfoPdu { type Error = SessionError; fn from_buffer(mut stream: impl io::Read) -> Result { - let info_type = InfoType::from_u32(stream.read_u32::()?) - .ok_or(SessionError::InvalidSaveSessionInfoType)?; + let info_type = + InfoType::from_u32(stream.read_u32::()?).ok_or(SessionError::InvalidSaveSessionInfoType)?; let info_data = match info_type { InfoType::Logon => InfoData::LogonInfoV1(LogonInfoVersion1::from_buffer(&mut stream)?), - InfoType::LogonLong => { - InfoData::LogonInfoV2(LogonInfoVersion2::from_buffer(&mut stream)?) - } + InfoType::LogonLong => InfoData::LogonInfoV2(LogonInfoVersion2::from_buffer(&mut stream)?), InfoType::PlainNotify => { let mut padding_buffer = [0; PLAIN_NOTIFY_PADDING_SIZE]; stream.read_exact(&mut padding_buffer)?; InfoData::PlainNotify } - InfoType::LogonExtended => { - InfoData::LogonExtended(LogonInfoExtended::from_buffer(&mut stream)?) - } + InfoType::LogonExtended => InfoData::LogonExtended(LogonInfoExtended::from_buffer(&mut stream)?), }; - Ok(Self { - info_type, - info_data, - }) + Ok(Self { info_type, info_data }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/session_info/logon_extended.rs b/ironrdp/src/rdp/session_info/logon_extended.rs index 87144ce3..4540929b 100644 --- a/ironrdp/src/rdp/session_info/logon_extended.rs +++ b/ironrdp/src/rdp/session_info/logon_extended.rs @@ -28,17 +28,9 @@ pub struct LogonInfoExtended { impl LogonInfoExtended { fn get_internal_size(&self) -> usize { - let reconnect_size = self - .auto_reconnect - .as_ref() - .map(|r| r.buffer_length()) - .unwrap_or(0); + let reconnect_size = self.auto_reconnect.as_ref().map(|r| r.buffer_length()).unwrap_or(0); - let errors_size = self - .errors_info - .as_ref() - .map(|r| r.buffer_length()) - .unwrap_or(0); + let errors_size = self.errors_info.as_ref().map(|r| r.buffer_length()).unwrap_or(0); LOGON_EX_LENGTH_FIELD_SIZE + LOGON_EX_FLAGS_FIELD_SIZE + reconnect_size + errors_size } @@ -49,8 +41,7 @@ impl PduParsing for LogonInfoExtended { fn from_buffer(mut stream: impl io::Read) -> Result { let _self_length = stream.read_u16::()?; - let present_fields_flags = - LogonExFlags::from_bits_truncate(stream.read_u32::()?); + let present_fields_flags = LogonExFlags::from_bits_truncate(stream.read_u32::()?); let auto_reconnect = if present_fields_flags.contains(LogonExFlags::AUTO_RECONNECT_COOKIE) { Some(ServerAutoReconnect::from_buffer(&mut stream)?) @@ -120,10 +111,7 @@ impl PduParsing for ServerAutoReconnect { let mut random_bits = [0; AUTO_RECONNECT_RANDOM_BITS_SIZE]; stream.read_exact(&mut random_bits)?; - Ok(Self { - logon_id, - random_bits, - }) + Ok(Self { logon_id, random_bits }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { @@ -157,10 +145,7 @@ impl PduParsing for LogonErrorsInfo { let error_data = LogonErrorNotificationData::from_u32(stream.read_u32::()?) .ok_or(SessionError::InvalidLogonErrorData)?; - Ok(Self { - error_type, - error_data, - }) + Ok(Self { error_type, error_data }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/session_info/logon_info.rs b/ironrdp/src/rdp/session_info/logon_info.rs index 42a07858..4afe79cf 100644 --- a/ironrdp/src/rdp/session_info/logon_info.rs +++ b/ironrdp/src/rdp/session_info/logon_info.rs @@ -14,8 +14,7 @@ const ID_SESSION_SIZE: usize = 4; const SAVE_SESSION_PDU_VERSION_ONE: u16 = 0x0001; const LOGON_INFO_V2_SIZE: usize = 18; const LOGON_INFO_V2_PADDING_SIZE: usize = 558; -const LOGON_INFO_V2_PADDING_BUFFER: [u8; LOGON_INFO_V2_PADDING_SIZE] = - [0; LOGON_INFO_V2_PADDING_SIZE]; +const LOGON_INFO_V2_PADDING_BUFFER: [u8; LOGON_INFO_V2_PADDING_SIZE] = [0; LOGON_INFO_V2_PADDING_SIZE]; const DOMAIN_NAME_SIZE_V2: usize = 52; const USER_NAME_SIZE_V2: usize = 512; @@ -33,24 +32,14 @@ impl PduParsing for LogonInfoVersion1 { return Err(SessionError::InvalidDomainNameSize); } - let domain_name = utils::read_string( - &mut stream, - DOMAIN_NAME_SIZE_V1, - utils::CharacterSet::Unicode, - false, - )?; + let domain_name = utils::read_string(&mut stream, DOMAIN_NAME_SIZE_V1, utils::CharacterSet::Unicode, false)?; let user_name_size = stream.read_u32::()?; if user_name_size > USER_NAME_SIZE_V1 as u32 { return Err(SessionError::InvalidUserNameSize); } - let user_name = utils::read_string( - &mut stream, - USER_NAME_SIZE_V1, - utils::CharacterSet::Unicode, - false, - )?; + let user_name = utils::read_string(&mut stream, USER_NAME_SIZE_V1, utils::CharacterSet::Unicode, false)?; let session_id = stream.read_u32::()?; diff --git a/ironrdp/src/rdp/session_info/tests.rs b/ironrdp/src/rdp/session_info/tests.rs index b80ffef4..7c4e69e3 100644 --- a/ironrdp/src/rdp/session_info/tests.rs +++ b/ironrdp/src/rdp/session_info/tests.rs @@ -3,200 +3,174 @@ use lazy_static::lazy_static; use super::*; const LOGON_INFO_V1_BUFFER: [u8; 576] = [ - 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x65, 0x00, 0x6c, 0x00, - 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, ]; const LOGON_INFO_V2_BUFFER: [u8; 602] = [ - 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, 0x65, 0x00, 0x6c, 0x00, - 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, 0x65, + 0x00, 0x6c, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, 0x00, ]; const SESSION_PLAIN_NOTIFY_BUFFER: [u8; 580] = [ - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const LOGON_EXTENDED_BUFFER: [u8; 620] = [ - 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, - 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, + 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const INVALID_SESSION_INFO_TYPE_BUFFER: [u8; 4] = [0x04, 0x00, 0x00, 0x00]; const LOGON_INFO_V1_WITH_INVALID_DOMAIN_SIZE_BUFFER: [u8; 4] = [0x35, 0x00, 0x00, 0x00]; const LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER: [u8; 60] = [ - 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x44, 0x00, 0x45, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x00, 0x00, ]; const LOGON_INFO_V2_WITH_INVALID_LOGON_VERSION_BUFFER: [u8; 2] = [0x00, 0x00]; -const LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER: [u8; 6] = - [0x01, 0x00, 0x13, 0x00, 0x00, 0x00]; +const LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER: [u8; 6] = [0x01, 0x00, 0x13, 0x00, 0x00, 0x00]; const LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER: [u8; 14] = [ 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, ]; const LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER: [u8; 18] = [ - 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, + 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, ]; const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER: [u8; 46] = [ - 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, - 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, + 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, ]; const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER: [u8; 50] = [ - 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, - 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x04, 0x00, - 0x00, 0x00, + 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, + 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, ]; const DOMAIN_NAME: &str = "NTDEV"; @@ -223,8 +197,7 @@ lazy_static! { auto_reconnect: Some(ServerAutoReconnect { logon_id: SESSION_ID, random_bits: [ - 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, - 0xa1, 0xa8 + 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8 ], }), errors_info: Some(LogonErrorsInfo { @@ -371,8 +344,7 @@ fn from_buffer_parsing_with_invalid_domain_size_fails() { #[test] fn from_buffer_parsing_with_invalid_user_name_size_fails() { - match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER.as_ref()) - { + match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidUserNameSize) => (), res => panic!("Expected InvalidUserNameSize error, got: {:?}", res), }; @@ -388,9 +360,7 @@ fn from_buffer_parsing_with_invalid_logon_version_fails() { #[test] fn from_buffer_parsing_with_invalid_logon_infov2_size_fails() { - match LogonInfoVersion2::from_buffer( - LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER.as_ref(), - ) { + match LogonInfoVersion2::from_buffer(LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidLogonVersion2Size) => (), res => panic!("Expected InvalidLogonVersion2Size error, got: {:?}", res), }; @@ -398,22 +368,15 @@ fn from_buffer_parsing_with_invalid_logon_infov2_size_fails() { #[test] fn from_buffer_parsing_with_invalid_reconnect_packet_size_fails() { - match LogonInfoExtended::from_buffer( - LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER.as_ref(), - ) { + match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidAutoReconnectPacketSize) => (), - res => panic!( - "Expected InvalidAutoReconnectPacketSize error, got: {:?}", - res - ), + res => panic!("Expected InvalidAutoReconnectPacketSize error, got: {:?}", res), }; } #[test] fn from_buffer_parsing_with_invalid_reconnect_version_fails() { - match LogonInfoExtended::from_buffer( - LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER.as_ref(), - ) { + match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER.as_ref()) { Err(SessionError::InvalidAutoReconnectVersion) => (), res => panic!("Expected InvalidAutoReconnectVersion error, got: {:?}", res), }; @@ -421,9 +384,7 @@ fn from_buffer_parsing_with_invalid_reconnect_version_fails() { #[test] fn from_buffer_parsing_with_invalid_logon_error_type_fails() { - match LogonInfoExtended::from_buffer( - LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER.as_ref(), - ) { + match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER.as_ref()) { Err(SessionError::InvalidLogonErrorType) => (), res => panic!("Expected InvalidLogonErrorType error, got: {:?}", res), }; @@ -431,9 +392,7 @@ fn from_buffer_parsing_with_invalid_logon_error_type_fails() { #[test] fn from_buffer_parsing_with_invalid_logon_error_data_fails() { - match LogonInfoExtended::from_buffer( - LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER.as_ref(), - ) { + match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER.as_ref()) { Err(SessionError::InvalidLogonErrorData) => (), res => panic!("Expected InvalidLogonErrorData error, got: {:?}", res), }; diff --git a/ironrdp/src/rdp/test.rs b/ironrdp/src/rdp/test.rs index dae2a6e9..7d42d26b 100644 --- a/ironrdp/src/rdp/test.rs +++ b/ironrdp/src/rdp/test.rs @@ -1,16 +1,14 @@ use lazy_static::lazy_static; -use super::{finalization_messages::*, headers::*, server_license::*, *}; -use crate::{ - gcc::{self, monitor_data}, - rdp::{ - capability_sets::test::{ - CLIENT_DEMAND_ACTIVE, CLIENT_DEMAND_ACTIVE_BUFFER, SERVER_DEMAND_ACTIVE, - SERVER_DEMAND_ACTIVE_BUFFER, - }, - client_info::test::{CLIENT_INFO_BUFFER_UNICODE, CLIENT_INFO_UNICODE}, - }, +use super::finalization_messages::*; +use super::headers::*; +use super::server_license::*; +use super::*; +use crate::gcc::{self, monitor_data}; +use crate::rdp::capability_sets::test::{ + CLIENT_DEMAND_ACTIVE, CLIENT_DEMAND_ACTIVE_BUFFER, SERVER_DEMAND_ACTIVE, SERVER_DEMAND_ACTIVE_BUFFER, }; +use crate::rdp::client_info::test::{CLIENT_INFO_BUFFER_UNICODE, CLIENT_INFO_UNICODE}; const CLIENT_INFO_PDU_SECURITY_HEADER_BUFFER: [u8; 4] = [ 0x40, 0x00, // flags @@ -153,8 +151,7 @@ lazy_static! { preamble_message_type: PreambleType::ErrorAlert, preamble_flags: PreambleFlags::empty(), preamble_version: PreambleVersion::V3, - preamble_message_size: (SERVER_LICENSE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) - as u16 + preamble_message_size: (SERVER_LICENSE_BUFFER.len() - BASIC_SECURITY_HEADER_SIZE) as u16 }, message_type: InitialMessageType::StatusValidClient(LicensingErrorMessage { error_code: LicenseErrorCode::StatusValidClient, @@ -176,9 +173,7 @@ lazy_static! { }; pub static ref CLIENT_SYNCHRONIZE: ShareControlHeader = ShareControlHeader { share_control_pdu: ShareControlPdu::Data(ShareDataHeader { - share_data_pdu: ShareDataPdu::Synchronize(SynchronizePdu { - target_user_id: 0x03ea - }), + share_data_pdu: ShareDataPdu::Synchronize(SynchronizePdu { target_user_id: 0x03ea }), stream_priority: StreamPriority::Low, compression_flags: CompressionFlags::empty(), compression_type: client_info::CompressionType::K8, @@ -267,9 +262,7 @@ lazy_static! { pub static ref MONITOR_LAYOUT_PDU: ShareControlHeader = ShareControlHeader { share_control_pdu: ShareControlPdu::Data(ShareDataHeader { share_data_pdu: ShareDataPdu::MonitorLayout(MonitorLayoutPdu { - monitors: gcc::monitor_data::test::MONITOR_DATA_WITH_MONITORS - .monitors - .clone(), + monitors: gcc::monitor_data::test::MONITOR_DATA_WITH_MONITORS.monitors.clone(), }), stream_priority: StreamPriority::Low, compression_flags: CompressionFlags::empty(), @@ -361,10 +354,7 @@ fn from_buffer_correctly_parses_rdp_pdu_client_synchronize() { fn from_buffer_correctly_parses_rdp_pdu_client_control_cooperate() { let buf = CONTROL_COOPERATE_BUFFER.as_ref(); - assert_eq!( - CONTROL_COOPERATE.clone(), - ShareControlHeader::from_buffer(buf).unwrap() - ); + assert_eq!(CONTROL_COOPERATE.clone(), ShareControlHeader::from_buffer(buf).unwrap()); } #[test] @@ -391,20 +381,14 @@ fn from_buffer_correctly_parses_rdp_pdu_server_control_granted_control() { fn from_buffer_correctly_parses_rdp_pdu_client_font_list() { let buf = CLIENT_FONT_LIST_BUFFER.as_ref(); - assert_eq!( - CLIENT_FONT_LIST.clone(), - ShareControlHeader::from_buffer(buf).unwrap() - ); + assert_eq!(CLIENT_FONT_LIST.clone(), ShareControlHeader::from_buffer(buf).unwrap()); } #[test] fn from_buffer_correctly_parses_rdp_pdu_server_font_map() { let buf = SERVER_FONT_MAP_BUFFER.as_ref(); - assert_eq!( - SERVER_FONT_MAP.clone(), - ShareControlHeader::from_buffer(buf).unwrap() - ); + assert_eq!(SERVER_FONT_MAP.clone(), ShareControlHeader::from_buffer(buf).unwrap()); } #[test] diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index 645df13e..f8476ef9 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -29,10 +29,7 @@ impl PduParsing for ChannelPduHeader { let total_length = stream.read_u32::()?; let flags = ChannelControlFlags::from_bits_truncate(stream.read_u32::()?); - Ok(Self { - total_length, - flags, - }) + Ok(Self { total_length, flags }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { @@ -90,17 +87,10 @@ pub enum ChannelError { } impl_from_error!(io::Error, ChannelError, ChannelError::IOError); -impl_from_error!( - std::string::FromUtf8Error, - ChannelError, - ChannelError::FromUtf8Error -); +impl_from_error!(std::string::FromUtf8Error, ChannelError, ChannelError::FromUtf8Error); impl From for io::Error { fn from(e: ChannelError) -> io::Error { - io::Error::new( - io::ErrorKind::Other, - format!("Virtual channel error: {}", e), - ) + io::Error::new(io::ErrorKind::Other, format!("Virtual channel error: {}", e)) } } diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index 61650d68..fec477a1 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -9,24 +9,19 @@ mod create; mod data; mod data_first; -pub use self::{ - capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}, - close::ClosePdu, - create::{ - CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_NO_LISTENER, - DVC_CREATION_STATUS_OK, - }, - data::DataPdu, - data_first::DataFirstPdu, -}; - -use std::{collections::HashMap, io, mem}; +use std::collections::HashMap; +use std::{io, mem}; use bit_field::BitField; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use self::capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}; +pub use self::close::ClosePdu; +pub use self::create::{CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_NO_LISTENER, DVC_CREATION_STATUS_OK}; +pub use self::data::DataPdu; +pub use self::data_first::DataFirstPdu; use super::ChannelError; use crate::PduParsing; @@ -57,28 +52,25 @@ pub enum ServerPdu { } impl ServerPdu { - pub fn from_buffer( - mut stream: impl io::Read, - mut dvc_data_size: usize, - ) -> Result { + pub fn from_buffer(mut stream: impl io::Read, mut dvc_data_size: usize) -> Result { let dvc_header = Header::from_buffer(&mut stream)?; - let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) - .ok_or(ChannelError::InvalidDVChannelIdLength)?; + let channel_id_type = + FieldType::from_u8(dvc_header.channel_id_type).ok_or(ChannelError::InvalidDVChannelIdLength)?; dvc_data_size -= HEADER_SIZE; match dvc_header.pdu_type { - PduType::Capabilities => Ok(ServerPdu::CapabilitiesRequest( - CapabilitiesRequestPdu::from_buffer(&mut stream)?, - )), + PduType::Capabilities => Ok(ServerPdu::CapabilitiesRequest(CapabilitiesRequestPdu::from_buffer( + &mut stream, + )?)), PduType::Create => Ok(ServerPdu::CreateRequest(CreateRequestPdu::from_buffer( &mut stream, channel_id_type, dvc_data_size, )?)), PduType::DataFirst => { - let data_length_type = FieldType::from_u8(dvc_header.pdu_dependent) - .ok_or(ChannelError::InvalidDvcDataLength)?; + let data_length_type = + FieldType::from_u8(dvc_header.pdu_dependent).ok_or(ChannelError::InvalidDvcDataLength)?; Ok(ServerPdu::DataFirst(DataFirstPdu::from_buffer( &mut stream, @@ -142,27 +134,24 @@ pub enum ClientPdu { } impl ClientPdu { - pub fn from_buffer( - mut stream: impl io::Read, - mut dvc_data_size: usize, - ) -> Result { + pub fn from_buffer(mut stream: impl io::Read, mut dvc_data_size: usize) -> Result { let dvc_header = Header::from_buffer(&mut stream)?; - let channel_id_type = FieldType::from_u8(dvc_header.channel_id_type) - .ok_or(ChannelError::InvalidDVChannelIdLength)?; + let channel_id_type = + FieldType::from_u8(dvc_header.channel_id_type).ok_or(ChannelError::InvalidDVChannelIdLength)?; dvc_data_size -= HEADER_SIZE; match dvc_header.pdu_type { - PduType::Capabilities => Ok(ClientPdu::CapabilitiesResponse( - CapabilitiesResponsePdu::from_buffer(&mut stream)?, - )), + PduType::Capabilities => Ok(ClientPdu::CapabilitiesResponse(CapabilitiesResponsePdu::from_buffer( + &mut stream, + )?)), PduType::Create => Ok(ClientPdu::CreateResponse(CreateResponsePdu::from_buffer( &mut stream, channel_id_type, )?)), PduType::DataFirst => { - let data_length_type = FieldType::from_u8(dvc_header.pdu_dependent) - .ok_or(ChannelError::InvalidDvcDataLength)?; + let data_length_type = + FieldType::from_u8(dvc_header.pdu_dependent).ok_or(ChannelError::InvalidDvcDataLength)?; Ok(ClientPdu::DataFirst(DataFirstPdu::from_buffer( &mut stream, @@ -225,10 +214,7 @@ pub enum FieldType { } impl FieldType { - pub fn read_buffer_according_to_type( - self, - mut stream: impl io::Read, - ) -> Result { + pub fn read_buffer_according_to_type(self, mut stream: impl io::Read) -> Result { let value = match self { FieldType::U8 => u32::from(stream.read_u8()?), FieldType::U16 => u32::from(stream.read_u16::()?), @@ -238,11 +224,7 @@ impl FieldType { Ok(value) } - pub fn to_buffer_according_to_type( - self, - mut stream: impl io::Write, - value: u32, - ) -> Result<(), io::Error> { + pub fn to_buffer_according_to_type(self, mut stream: impl io::Write, value: u32) -> Result<(), io::Error> { match self { FieldType::U8 => stream.write_u8(value as u8)?, FieldType::U16 => stream.write_u16::(value as u16)?, @@ -275,8 +257,7 @@ impl PduParsing for Header { let dvc_header = stream.read_u8()?; let channel_id_type = dvc_header.get_bits(0..2); let pdu_dependent = dvc_header.get_bits(2..4); - let pdu_type = - PduType::from_u8(dvc_header.get_bits(4..8)).ok_or(ChannelError::InvalidDvcPduType)?; + let pdu_type = PduType::from_u8(dvc_header.get_bits(4..8)).ok_or(ChannelError::InvalidDvcPduType)?; Ok(Self { channel_id_type, diff --git a/ironrdp/src/rdp/vc/dvc/capabilities.rs b/ironrdp/src/rdp/vc/dvc/capabilities.rs index 2408c43c..d76787a8 100644 --- a/ironrdp/src/rdp/vc/dvc/capabilities.rs +++ b/ironrdp/src/rdp/vc/dvc/capabilities.rs @@ -8,7 +8,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{Header, PduType, HEADER_SIZE, UNUSED_U8}; -use crate::{rdp::vc::ChannelError, PduParsing}; +use crate::rdp::vc::ChannelError; +use crate::PduParsing; const DVC_CAPABILITIES_PAD_SIZE: usize = 1; const DVC_CAPABILITIES_VERSION_SIZE: usize = 2; @@ -67,9 +68,7 @@ impl PduParsing for CapabilitiesRequestPdu { stream.write_u8(UNUSED_U8)?; match self { - CapabilitiesRequestPdu::V1 => { - stream.write_u16::(CapsVersion::V1.to_u16().unwrap())? - } + CapabilitiesRequestPdu::V1 => stream.write_u16::(CapsVersion::V1.to_u16().unwrap())?, CapabilitiesRequestPdu::V2 { charges } => { stream.write_u16::(CapsVersion::V2.to_u16().unwrap())?; for charge in charges.iter() { diff --git a/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs b/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs index 87b1acb4..d1394fe8 100644 --- a/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs @@ -3,17 +3,14 @@ use lazy_static::lazy_static; use super::*; const DVC_CAPABILITIES_REQUEST_V1_SIZE: usize = 4; -const DVC_CAPABILITIES_REQUEST_V1_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V1_SIZE] = - [0x50, 0x00, 0x01, 0x00]; +const DVC_CAPABILITIES_REQUEST_V1_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V1_SIZE] = [0x50, 0x00, 0x01, 0x00]; const DVC_CAPABILITIES_REQUEST_V2_SIZE: usize = 12; -const DVC_CAPABILITIES_REQUEST_V2_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V2_SIZE] = [ - 0x50, 0x00, 0x02, 0x00, 0x33, 0x33, 0x11, 0x11, 0x3d, 0x0a, 0xa7, 0x04, -]; +const DVC_CAPABILITIES_REQUEST_V2_BUFFER: [u8; DVC_CAPABILITIES_REQUEST_V2_SIZE] = + [0x50, 0x00, 0x02, 0x00, 0x33, 0x33, 0x11, 0x11, 0x3d, 0x0a, 0xa7, 0x04]; const DVC_CAPABILITIES_RESPONSE_SIZE: usize = 4; -const DVC_CAPABILITIES_RESPONSE_BUFFER: [u8; DVC_CAPABILITIES_RESPONSE_SIZE] = - [0x50, 0x00, 0x01, 0x00]; +const DVC_CAPABILITIES_RESPONSE_BUFFER: [u8; DVC_CAPABILITIES_RESPONSE_SIZE] = [0x50, 0x00, 0x01, 0x00]; lazy_static! { static ref DVC_CAPABILITIES_REQUEST_V1: CapabilitiesRequestPdu = CapabilitiesRequestPdu::V1; @@ -30,10 +27,7 @@ fn from_buffer_parsing_for_dvc_caps_request_pdu_with_invalid_caps_version_fails( let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; match CapabilitiesRequestPdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), - res => panic!( - "Expected InvalidDvcCapabilitiesVersion error, got: {:?}", - res - ), + res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {:?}", res), }; } @@ -50,14 +44,9 @@ fn to_buffer_correct_serializes_dvc_capabilities_request_pdu_v1() { let dvc_capabilities_request_pdu_v1 = DVC_CAPABILITIES_REQUEST_V1.clone(); let mut buffer = Vec::new(); - dvc_capabilities_request_pdu_v1 - .to_buffer(&mut buffer) - .unwrap(); + dvc_capabilities_request_pdu_v1.to_buffer(&mut buffer).unwrap(); - assert_eq!( - DVC_CAPABILITIES_REQUEST_V1_BUFFER.as_ref(), - buffer.as_slice() - ); + assert_eq!(DVC_CAPABILITIES_REQUEST_V1_BUFFER.as_ref(), buffer.as_slice()); } #[test] @@ -83,14 +72,9 @@ fn to_buffer_correct_serializes_dvc_capabilities_request_pdu_v2() { let dvc_capabilities_request_pdu_v2 = DVC_CAPABILITIES_REQUEST_V2.clone(); let mut buffer = Vec::new(); - dvc_capabilities_request_pdu_v2 - .to_buffer(&mut buffer) - .unwrap(); + dvc_capabilities_request_pdu_v2.to_buffer(&mut buffer).unwrap(); - assert_eq!( - DVC_CAPABILITIES_REQUEST_V2_BUFFER.as_ref(), - buffer.as_slice() - ); + assert_eq!(DVC_CAPABILITIES_REQUEST_V2_BUFFER.as_ref(), buffer.as_slice()); } #[test] @@ -108,10 +92,7 @@ fn from_buffer_parsing_for_dvc_caps_response_pdu_with_invalid_caps_version_fails let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; match CapabilitiesResponsePdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), - res => panic!( - "Expected InvalidDvcCapabilitiesVersion error, got: {:?}", - res - ), + res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {:?}", res), }; } diff --git a/ironrdp/src/rdp/vc/dvc/close.rs b/ironrdp/src/rdp/vc/dvc/close.rs index f693e3ce..4932babc 100644 --- a/ironrdp/src/rdp/vc/dvc/close.rs +++ b/ironrdp/src/rdp/vc/dvc/close.rs @@ -4,7 +4,8 @@ mod tests; use std::io; use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; -use crate::{rdp::vc::ChannelError, PduParsing}; +use crate::rdp::vc::ChannelError; +use crate::PduParsing; #[derive(Debug, Clone, PartialEq)] pub struct ClosePdu { @@ -13,10 +14,7 @@ pub struct ClosePdu { } impl ClosePdu { - pub fn from_buffer( - mut stream: impl io::Read, - channel_id_type: FieldType, - ) -> Result { + pub fn from_buffer(mut stream: impl io::Read, channel_id_type: FieldType) -> Result { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; Ok(Self { diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs index 2bfe43ce..707eb866 100644 --- a/ironrdp/src/rdp/vc/dvc/create.rs +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -6,7 +6,8 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; -use crate::{rdp::vc::ChannelError, utils, PduParsing}; +use crate::rdp::vc::ChannelError; +use crate::{utils, PduParsing}; pub const DVC_CREATION_STATUS_OK: u32 = 0x0000_0000; pub const DVC_CREATION_STATUS_NO_LISTENER: u32 = 0xC000_0001; @@ -29,8 +30,7 @@ impl CreateRequestPdu { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; data_size -= channel_id_type.get_type_size(); - let channel_name = - utils::read_string(&mut stream, data_size, utils::CharacterSet::Ansi, false)?; + let channel_name = utils::read_string(&mut stream, data_size, utils::CharacterSet::Ansi, false)?; Ok(Self { channel_id_type, @@ -67,10 +67,7 @@ pub struct CreateResponsePdu { } impl CreateResponsePdu { - pub fn from_buffer( - mut stream: impl io::Read, - channel_id_type: FieldType, - ) -> Result { + pub fn from_buffer(mut stream: impl io::Read, channel_id_type: FieldType) -> Result { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; let creation_status = stream.read_u32::()?; diff --git a/ironrdp/src/rdp/vc/dvc/create/tests.rs b/ironrdp/src/rdp/vc/dvc/create/tests.rs index 66275c95..39e18b2c 100644 --- a/ironrdp/src/rdp/vc/dvc/create/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/create/tests.rs @@ -9,8 +9,7 @@ const DVC_CREATE_REQUEST_BUFFER: [u8; DVC_CREATE_REQUEST_BUFFER_SIZE] = [0x10, 0x03, 0x74, 0x65, 0x73, 0x74, 0x64, 0x76, 0x63, 0x00]; const DVC_CREATE_RESPONSE_BUFFER_SIZE: usize = 6; -const DVC_CREATE_RESPONSE_BUFFER: [u8; DVC_CREATE_RESPONSE_BUFFER_SIZE] = - [0x10, 0x03, 0x00, 0x00, 0x00, 0x00]; +const DVC_CREATE_RESPONSE_BUFFER: [u8; DVC_CREATE_RESPONSE_BUFFER_SIZE] = [0x10, 0x03, 0x00, 0x00, 0x00, 0x00]; const DVC_TEST_HEADER_SIZE: usize = 0x01; diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp/src/rdp/vc/dvc/data.rs index ddbabde9..9eb92fcf 100644 --- a/ironrdp/src/rdp/vc/dvc/data.rs +++ b/ironrdp/src/rdp/vc/dvc/data.rs @@ -4,7 +4,8 @@ mod tests; use std::io; use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE, UNUSED_U8}; -use crate::{rdp::vc::ChannelError, PduParsing}; +use crate::rdp::vc::ChannelError; +use crate::PduParsing; #[derive(Debug, Clone, PartialEq)] pub struct DataPdu { @@ -22,8 +23,7 @@ impl DataPdu { let channel_id = channel_id_type.read_buffer_according_to_type(&mut stream)?; data_size -= channel_id_type.get_type_size(); - let expected_max_data_size = - PDU_WITH_DATA_MAX_SIZE - (HEADER_SIZE + channel_id_type.get_type_size()); + let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE - (HEADER_SIZE + channel_id_type.get_type_size()); if data_size > expected_max_data_size { Err(ChannelError::InvalidDvcMessageSize) diff --git a/ironrdp/src/rdp/vc/dvc/data/tests.rs b/ironrdp/src/rdp/vc/dvc/data/tests.rs index b75271be..d4181b4f 100644 --- a/ironrdp/src/rdp/vc/dvc/data/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data/tests.rs @@ -8,8 +8,7 @@ const DVC_FULL_DATA_BUFFER_SIZE: usize = 14; const DVC_DATA_PREFIX: [u8; 2] = [0x30, 0x03]; const DVC_DATA_BUFFER: [u8; 12] = [0x71; 12]; -const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = - [0x77; PDU_WITH_DATA_MAX_SIZE]; +const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = [0x77; PDU_WITH_DATA_MAX_SIZE]; const DVC_TEST_HEADER_SIZE: usize = 0x01; diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs index e9555975..a8f54737 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -4,7 +4,8 @@ mod tests; use std::io; use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE}; -use crate::{rdp::vc::ChannelError, PduParsing}; +use crate::rdp::vc::ChannelError; +use crate::PduParsing; #[derive(Debug, Clone, PartialEq)] pub struct DataFirstPdu { @@ -34,9 +35,7 @@ impl DataFirstPdu { } let expected_max_data_size = PDU_WITH_DATA_MAX_SIZE - - (HEADER_SIZE - + channel_id_type.get_type_size() - + total_data_size_type.get_type_size()); + - (HEADER_SIZE + channel_id_type.get_type_size() + total_data_size_type.get_type_size()); if data_size > expected_max_data_size { Err(ChannelError::InvalidDvcMessageSize) @@ -67,8 +66,6 @@ impl DataFirstPdu { } pub fn buffer_length(&self) -> usize { - HEADER_SIZE - + self.channel_id_type.get_type_size() - + self.total_data_size_type.get_type_size() + HEADER_SIZE + self.channel_id_type.get_type_size() + self.total_data_size_type.get_type_size() } } diff --git a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs index d874c27e..c346e06d 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs @@ -8,122 +8,101 @@ const DVC_TEST_DATA_LENGTH: u32 = 0x0000_0C7B; const DVC_FULL_DATA_FIRST_BUFFER_SIZE: usize = 16; const DVC_DATA_FIRST_PREFIX: [u8; 4] = [0x24, 0x03, 0x7b, 0x0c]; -const DVC_DATA_FIRST_BUFFER: [u8; 12] = [ - 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, -]; +const DVC_DATA_FIRST_BUFFER: [u8; 12] = [0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71]; const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE: usize = 0x06; const DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER: [u8; - DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE] = - [0x03, 0x03, 0x71, 0x71, 0x71, 0x71]; + DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE] = [0x03, 0x03, 0x71, 0x71, 0x71, 0x71]; -const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = - [0x77; PDU_WITH_DATA_MAX_SIZE]; +const DVC_INVALID_DATA_MESSAGE_BUFFER: [u8; PDU_WITH_DATA_MAX_SIZE] = [0x77; PDU_WITH_DATA_MAX_SIZE]; -const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX: [u8; 4] = - [0x24, 0x7, 0x39, 0x6]; +const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX: [u8; 4] = [0x24, 0x7, 0x39, 0x6]; const DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER: [u8; 1593] = [ - 0xe0, 0x24, 0xa9, 0xba, 0xe0, 0x68, 0xa9, 0xba, 0x8a, 0x73, 0x41, 0x25, 0x12, 0x12, 0x1c, 0x28, - 0x3b, 0xa6, 0x34, 0x8, 0x8, 0x7a, 0x38, 0x34, 0x2c, 0xe8, 0xf8, 0xd0, 0xef, 0x18, 0xc2, 0xc, - 0x27, 0x1f, 0xb1, 0x83, 0x3c, 0x58, 0x8a, 0x67, 0x1, 0x58, 0x9d, 0x50, 0x8b, 0x8c, 0x60, 0x31, - 0x53, 0x55, 0x54, 0xd8, 0x51, 0x32, 0x23, 0x54, 0xd9, 0xd1, 0x65, 0x54, 0xd6, 0xe0, 0xb6, 0x4b, - 0x8b, 0xd1, 0x1a, 0x32, 0x6d, 0x10, 0xed, 0x21, 0x48, 0x8d, 0x1d, 0xa2, 0x6a, 0x90, 0x14, 0x88, - 0x30, 0x18, 0x8a, 0x11, 0x1a, 0x37, 0xc6, 0xa7, 0x32, 0x8b, 0xea, 0x32, 0x44, 0x78, 0xc9, 0x4e, - 0xdb, 0x47, 0x11, 0x53, 0xc6, 0x16, 0xc9, 0x72, 0x55, 0x11, 0x4e, 0x12, 0x55, 0x31, 0xd4, 0x4b, - 0x16, 0x71, 0x7e, 0x32, 0x13, 0x5, 0xb2, 0x5c, 0x9c, 0xa4, 0xab, 0x78, 0xc9, 0x20, 0x88, 0xfb, - 0x18, 0xa6, 0xb, 0x44, 0xac, 0x6, 0x23, 0x4b, 0x2d, 0x12, 0xa3, 0x1a, 0x8b, 0xea, 0x2c, 0x44, - 0x69, 0x12, 0xa8, 0xca, 0xa2, 0xc4, 0x64, 0x98, 0x99, 0x11, 0xd4, 0x5e, 0x8a, 0x51, 0x92, 0x23, - 0xa8, 0xbd, 0x34, 0x44, 0xc8, 0x65, 0x44, 0xd7, 0x30, 0x76, 0x11, 0xea, 0x5a, 0xf7, 0x8b, 0xf1, - 0x90, 0xaa, 0x90, 0x14, 0x52, 0x93, 0x4, 0x4c, 0x8b, 0x18, 0xc, 0x55, 0x2b, 0xd1, 0x5a, 0x4e, - 0xea, 0xa9, 0x82, 0x8b, 0xe0, 0xb2, 0x4a, 0x8e, 0x91, 0x62, 0x46, 0xf1, 0x8a, 0x77, 0x90, 0xd4, - 0x89, 0xa2, 0x34, 0x53, 0x15, 0x4f, 0xa4, 0xcf, 0x53, 0x2e, 0x93, 0x18, 0xa2, 0x35, 0x54, 0x51, - 0x11, 0xa4, 0x91, 0x16, 0x26, 0xd8, 0x44, 0xc9, 0x21, 0xde, 0x2f, 0xc6, 0x3b, 0x44, 0x69, 0xd, - 0x44, 0xd0, 0x59, 0x99, 0xde, 0x4b, 0x33, 0x44, 0x44, 0x9a, 0xa2, 0xe5, 0x55, 0xc0, 0x5b, 0x26, - 0x55, 0x57, 0x92, 0x0, 0x96, 0xe5, 0x55, 0xb6, 0xa2, 0x6a, 0x8b, 0xea, 0x3b, 0x45, 0xf5, 0x13, - 0x44, 0x88, 0x4c, 0x85, 0x22, 0xc4, 0x46, 0x8e, 0xd1, 0x1a, 0x6d, 0x21, 0x68, 0x97, 0x21, 0x88, - 0xde, 0xa2, 0x94, 0x74, 0x95, 0xcc, 0x62, 0x9d, 0xdb, 0x2d, 0x66, 0x92, 0xc9, 0x5a, 0xa5, 0x90, - 0xa4, 0x46, 0x91, 0xb4, 0x85, 0x22, 0x94, 0x4d, 0x13, 0x37, 0xb, 0x84, 0xd9, 0x2a, 0x9a, 0xaf, - 0x32, 0x3a, 0xa8, 0xdd, 0x11, 0xa4, 0x87, 0x78, 0xbe, 0x91, 0xa8, 0x53, 0xcc, 0x95, 0x22, 0xca, - 0x89, 0xb1, 0x8c, 0x92, 0x38, 0x91, 0x34, 0x8f, 0xa6, 0x88, 0x4c, 0x71, 0x31, 0x8a, 0x50, 0x51, - 0x1a, 0x34, 0x48, 0x4e, 0x31, 0x4e, 0x2b, 0x15, 0x62, 0x96, 0x2c, 0xc6, 0x29, 0xe2, 0x46, 0x21, - 0xf, 0x32, 0x32, 0xc0, 0x62, 0x49, 0x12, 0x6a, 0x88, 0xea, 0x2c, 0x46, 0x88, 0x9a, 0xa4, 0xcd, - 0x14, 0xa3, 0x84, 0x64, 0x91, 0xee, 0x28, 0xcb, 0x79, 0x4, 0x50, 0x44, 0x17, 0x9, 0xb1, 0x42, - 0x23, 0x47, 0xbb, 0xc5, 0xf5, 0x31, 0x2, 0x23, 0x45, 0x95, 0x13, 0x63, 0x27, 0xe8, 0xb3, 0x18, - 0xa6, 0xa4, 0x11, 0x31, 0xf6, 0x12, 0xc4, 0x8d, 0x2a, 0x26, 0xde, 0x63, 0x8e, 0x59, 0xd, 0xe5, - 0x97, 0x49, 0x98, 0x99, 0x2e, 0x9d, 0x12, 0x2b, 0xcb, 0x22, 0x9, 0x51, 0xde, 0x2f, 0x4b, 0xa6, - 0x11, 0xea, 0x7e, 0xe4, 0x8c, 0x26, 0x1a, 0x49, 0xb2, 0x23, 0xa8, 0xb1, 0x19, 0x24, 0x19, 0x11, - 0xd4, 0x58, 0x8e, 0x2a, 0x43, 0x51, 0xda, 0x23, 0x46, 0x48, 0xee, 0xa2, 0x66, 0x3, 0x11, 0x2a, - 0x23, 0xeb, 0x90, 0xcd, 0x24, 0x1f, 0x1a, 0x16, 0x48, 0xb3, 0x19, 0x2a, 0xf2, 0x67, 0xeb, 0x48, - 0xaf, 0x14, 0x9f, 0xa4, 0xab, 0xd2, 0x6c, 0x35, 0x9a, 0x53, 0x7c, 0x24, 0xb7, 0x79, 0x8f, 0x91, - 0x96, 0xf2, 0x8, 0x9e, 0xc2, 0x65, 0x11, 0x58, 0xe8, 0x4c, 0xc9, 0x15, 0x8d, 0xc4, 0x47, 0x32, - 0x18, 0x88, 0xea, 0x35, 0x82, 0xd5, 0xab, 0xa, 0xe2, 0x46, 0xf7, 0x8b, 0xf7, 0x90, 0x75, 0x8, - 0xe9, 0x8a, 0x11, 0x1d, 0x48, 0xf2, 0x4c, 0xd3, 0x6d, 0xd4, 0x65, 0x51, 0x7a, 0x52, 0x14, 0x22, - 0xd2, 0x37, 0xbc, 0x5f, 0xa4, 0x7c, 0x90, 0x74, 0x95, 0xb, 0x64, 0xc9, 0x21, 0x44, 0x69, 0x1b, - 0x8a, 0x13, 0x4a, 0x1, 0x28, 0x9a, 0x64, 0xc1, 0x1a, 0xc4, 0xc0, 0x6a, 0x28, 0x68, 0x98, 0x5b, - 0x26, 0x4c, 0x46, 0x92, 0x1d, 0x22, 0xc3, 0x61, 0xaa, 0xd2, 0x92, 0x44, 0x85, 0x22, 0x65, 0x3c, - 0xe8, 0xb2, 0xa9, 0x2a, 0x39, 0xa, 0x4a, 0x49, 0x3c, 0xba, 0x95, 0xe9, 0x92, 0xc6, 0x98, 0xd5, - 0x81, 0x8f, 0x95, 0x41, 0x94, 0x79, 0x93, 0x14, 0x8c, 0x71, 0x58, 0x27, 0xc9, 0x87, 0x73, 0xf1, - 0x66, 0x3c, 0x7d, 0xd3, 0xe6, 0xac, 0xa, 0xb7, 0x63, 0x18, 0x91, 0x8a, 0xc1, 0x48, 0xdc, 0xc9, - 0x4c, 0x1e, 0xc, 0xec, 0x82, 0xd6, 0x97, 0x57, 0x90, 0xfb, 0x89, 0x88, 0xdf, 0x70, 0xb0, 0xce, - 0xae, 0x54, 0x1e, 0x4b, 0x7a, 0x7d, 0x88, 0x8c, 0xd, 0x24, 0x63, 0x43, 0x7f, 0xc4, 0xee, 0xa3, - 0x51, 0xb7, 0x27, 0xb9, 0x73, 0x4f, 0x91, 0xe3, 0xec, 0x79, 0xa9, 0xf9, 0xca, 0x89, 0x28, 0x2d, - 0x44, 0xe0, 0xf3, 0xd1, 0x77, 0x4b, 0xab, 0xc8, 0xb5, 0xc4, 0x74, 0xf, 0xf0, 0xff, 0x3b, 0x8d, - 0xd2, 0xe, 0x22, 0xf6, 0x8c, 0xc, 0xfd, 0xd3, 0x12, 0x31, 0xa9, 0x57, 0xf0, 0x50, 0xd6, 0x45, - 0x30, 0xcb, 0x45, 0x82, 0xfe, 0x9f, 0x63, 0xc3, 0x3, 0x32, 0xa1, 0xa1, 0x83, 0xf, 0xb5, 0x42, - 0x85, 0x36, 0xf5, 0x4f, 0x18, 0x34, 0xf9, 0x1e, 0x3e, 0xc7, 0x9a, 0xb9, 0xd9, 0xe5, 0x51, 0x7a, - 0x8c, 0xac, 0x5b, 0x39, 0x98, 0x6e, 0x14, 0x87, 0x1c, 0x67, 0xc7, 0xa3, 0xed, 0xde, 0x48, 0xd9, - 0x47, 0xd0, 0xc5, 0x70, 0xa4, 0x38, 0xe3, 0x60, 0x1a, 0x17, 0x1e, 0x45, 0x1e, 0xdc, 0x6c, 0x23, - 0x1d, 0xc2, 0x90, 0xe3, 0x8d, 0x8c, 0x13, 0x8, 0xa5, 0x86, 0x9, 0x70, 0xca, 0x68, 0xc9, 0x70, - 0xa4, 0x38, 0xe3, 0x45, 0xa9, 0x5e, 0xce, 0x11, 0x23, 0xa5, 0x88, 0xed, 0x32, 0xd5, 0x83, 0xd3, - 0x58, 0x31, 0x30, 0x46, 0x8e, 0xc6, 0xc3, 0x88, 0xf4, 0xd2, 0x28, 0x7e, 0xfd, 0xff, 0xd2, 0xea, - 0xf1, 0xf5, 0x71, 0x1d, 0xde, 0x65, 0xb6, 0xf2, 0xa0, 0x98, 0xd2, 0x3c, 0x19, 0xf4, 0xba, 0xbc, - 0x7d, 0x5c, 0x4b, 0x54, 0xab, 0x8d, 0xc0, 0xcc, 0xf0, 0xac, 0x5d, 0x9a, 0x26, 0xae, 0x7c, 0x99, - 0xd9, 0xf6, 0x70, 0x4c, 0xfe, 0xba, 0x7b, 0x70, 0x5f, 0x7f, 0x1a, 0xd7, 0x26, 0x99, 0xb3, 0x13, - 0x67, 0x54, 0xe7, 0x99, 0x22, 0x13, 0xae, 0x24, 0x63, 0x61, 0x52, 0xb5, 0x22, 0x1a, 0xa6, 0xac, - 0x7c, 0x90, 0x4, 0x8c, 0x68, 0xe5, 0x41, 0x36, 0x95, 0xa9, 0xc7, 0x8a, 0x7d, 0xea, 0x6b, 0xd2, - 0xea, 0xf2, 0x81, 0x71, 0x1f, 0x46, 0x4a, 0xe6, 0xb2, 0xa0, 0x64, 0x6d, 0x1a, 0x1b, 0x26, 0xcc, - 0x4a, 0x82, 0x6b, 0x44, 0x9a, 0x64, 0x61, 0x69, 0xa6, 0xd, 0x2e, 0x72, 0xab, 0x2d, 0x4a, 0x6d, - 0x9b, 0x31, 0x2a, 0x8, 0xf3, 0x56, 0xc0, 0x7d, 0x9, 0xfc, 0xb5, 0x15, 0x8c, 0x97, 0xe6, 0xed, - 0x2e, 0xaf, 0x1f, 0x57, 0x10, 0xb7, 0x5, 0x80, 0x82, 0x23, 0x89, 0xbb, 0xd9, 0xbf, 0x49, 0xf8, - 0x95, 0x82, 0x74, 0xb6, 0x68, 0x25, 0xf, 0xb1, 0xd1, 0xe3, 0x27, 0x32, 0x6d, 0x4a, 0x70, 0xd3, - 0xee, 0x25, 0x41, 0x88, 0xf3, 0x47, 0x8b, 0x8d, 0x9f, 0xe0, 0x1a, 0x47, 0x39, 0x6, 0xce, 0x37, - 0xa, 0x56, 0xce, 0x34, 0x31, 0x71, 0x7e, 0xab, 0x37, 0x3a, 0xc2, 0x5b, 0xce, 0x5a, 0x5d, 0x5e, - 0x40, 0x6e, 0x23, 0xf8, 0xd7, 0xb3, 0xd5, 0xe6, 0xe0, 0x5e, 0xfa, 0x39, 0xcd, 0xd0, 0x95, 0x25, - 0x4b, 0xdd, 0x31, 0x26, 0x41, 0x94, 0xcb, 0xd, 0x3a, 0xd8, 0x12, 0x93, 0xda, 0x7, 0x4a, 0xa, - 0x91, 0x41, 0xc0, 0xc0, 0xa9, 0xaa, 0x28, 0x2a, 0x60, 0x6c, 0xb, 0x1e, 0x51, 0xe4, 0xc7, 0xaa, - 0x35, 0x24, 0x75, 0xd2, 0xea, 0xf1, 0xe7, 0x71, 0x15, 0xdc, 0x4f, 0x12, 0x92, 0xad, 0xf1, 0xbc, - 0xd0, 0x76, 0xd2, 0xea, 0xf1, 0x5b, 0x71, 0x23, 0x93, 0xaa, 0xd5, 0xf1, 0xb1, 0xaa, 0x11, 0x1a, - 0x9d, 0xf4, 0xba, 0xbc, 0x48, 0xdc, 0x46, 0xf6, 0xc8, 0xa7, 0xe3, 0xdc, 0x88, 0xaf, 0x21, 0x9e, - 0x25, 0xb2, 0x33, 0xf2, 0xa9, 0xe2, 0x96, 0xcc, 0x9c, 0x2c, 0xd3, 0xca, 0xf4, 0x2e, 0xe6, 0x17, - 0x25, 0xcf, 0x32, 0xd9, 0x19, 0xa1, 0xc0, 0xac, 0x2f, 0x25, 0xb3, 0x5, 0xab, 0x87, 0xd1, 0x84, - 0x4f, 0x91, 0x46, 0x4f, 0x5a, 0x5d, 0x5d, 0xf8, 0xae, 0x24, 0x12, 0x4c, 0x58, 0xfa, 0x7d, 0xa9, - 0x53, 0x8c, 0xe3, 0xdc, 0x8c, 0x3e, 0x48, 0xc2, 0xe1, 0x4b, 0xb9, 0xa6, 0xb, 0x61, 0x27, 0x39, - 0x10, 0xea, 0x93, 0x5c, 0x9f, 0x28, 0x54, 0x2c, 0xa4, 0xa2, 0x23, 0xcd, 0x3, 0xed, 0x4, 0x78, - 0x55, 0x60, 0xce, 0x35, 0x11, 0xcf, 0xb3, 0x9e, 0x46, 0x68, 0x64, 0x25, 0x43, 0x31, 0x11, 0x5c, - 0xe3, 0xfc, 0x1c, 0x36, 0xa2, 0x99, 0x87, 0xe9, 0xcf, 0x23, 0x34, 0x32, 0x11, 0xe6, 0x65, 0x17, - 0x9b, 0x99, 0x17, 0xe1, 0xe4, 0x5e, 0x24, 0x9f, 0xf4, 0xba, 0xbb, 0xca, 0xdc, 0x4c, 0xb7, 0xa1, - 0x11, 0x4, 0xd6, 0x9, 0x6c, 0xdc, 0xfb, 0xa5, 0xd5, 0xde, 0x8e, 0xe2, 0x15, 0xf0, 0x56, 0x95, - 0x9c, 0x6, 0xb3, 0xa1, 0x69, 0x3, 0x32, 0xe2, 0x73, 0xe6, 0x26, 0xcc, 0xd0, 0x88, 0x74, 0x2e, - 0x6, 0x5, 0x2c, 0x42, 0xfb, 0x45, 0x5, 0x31, 0x24, 0x4d, 0xd0, 0xfb, 0x37, 0x46, 0x6c, 0x47, - 0xb9, 0xf, 0xcb, 0x35, 0x8d, 0xc1, 0x88, 0x83, 0xd2, 0xed, 0xd5, 0x94, 0xf1, 0x11, 0xdf, 0x2c, - 0xb6, 0x29, 0x39, 0xc6, 0x64, 0x2a, 0xa1, 0x24, 0x61, 0x89, 0x18, 0x7c, 0x91, 0x8c, 0xd3, 0x66, - 0xc5, 0x8a, 0xa9, 0xc4, 0xd, 0x3c, 0x33, 0x50, 0xba, 0x5d, 0xba, 0xad, 0x5e, 0x2d, 0xcf, 0x75, - 0x32, 0x90, 0xee, 0xa8, 0xf4, 0xc5, 0x43, 0x50, 0xa8, 0x62, 0x87, 0xd2, 0x46, 0x34, 0x43, 0xf4, - 0x68, 0x88, 0x59, 0x3f, 0xa2, 0xd0, 0x7a, 0x1e, 0x69, 0x45, 0x56, 0x3d, 0x33, 0x12, 0x70, 0x4c, - 0x8d, 0x2c, 0x42, 0x1a, 0x94, 0xd4, 0xb7, 0x62, 0x18, 0x11, 0x1a, 0x5d, 0x5d, 0xe8, 0xee, 0x23, - 0x29, 0xc9, 0x8c, 0x65, 0x60, 0x7b, 0x7b, 0x8c, 0x11, 0x3a, 0x5d, 0xba, 0xcc, 0xde, 0x27, 0x99, - 0x58, 0x8a, 0x8c, 0x69, 0x91, 0xa, 0x2f, 0xb4, 0x55, 0xe, 0x4, 0xc1, 0xd, 0x25, 0x43, 0x42, - 0xb2, 0x81, 0x5e, 0x56, 0x5f, 0x16, 0xc6, 0x28, 0xb4, 0x5e, 0x97, 0x6e, 0xb3, 0x37, 0x89, 0x98, - 0xe3, 0x13, 0xbb, 0xc9, 0x49, 0x87, 0xe1, 0x6d, 0x19, 0xa5, 0xdb, 0xac, 0xcd, 0xe2, 0x32, 0xb3, - 0x99, 0x2b, 0xf3, 0x60, 0xd1, 0x20, 0x7e, 0x46, 0xcc, 0x4, 0xc6, 0x2c, 0xc0, 0x12, 0x26, 0x8, - 0xc8, 0xad, 0xfa, 0xf6, 0x3f, 0x10, 0x45, 0xca, 0xe0, 0x9a, 0x3b, 0x4b, 0xb7, 0x57, 0x33, 0xc4, - 0x90, 0x72, 0xab, 0x5a, 0xcc, 0xf, 0x26, 0x42, 0xea, 0x3e, 0x87, 0x2, 0xab, 0xbc, 0x9f, 0x99, - 0x23, 0x19, 0x76, 0xa, 0x8c, 0xc4, 0x8b, 0xc7, 0xf3, 0x95, 0xd2, 0x90, 0xd2, 0xed, 0xd5, 0xcc, - 0xf1, 0x31, 0x1d, 0xa7, 0xa4, 0xba, 0xdd, 0x88, 0x2d, 0x6b, 0xa4, 0x74, 0xbb, 0x75, 0x73, 0x3c, - 0x4c, 0x44, 0x42, 0xd, 0x74, 0x61, 0x39, 0x79, 0x76, 0xa4, 0xa7, 0x3c, 0x4c, 0x80, 0xc4, 0xc8, - 0x1a, 0x27, 0x1c, 0xe4, 0xde, 0x8, 0xb2, 0xba, 0x30, 0xa5, 0x74, 0x36, 0x76, 0xa6, 0x53, 0x9f, - 0x33, 0x56, 0x98, 0x88, 0x92, 0x2a, 0xd1, 0x90, 0x1, + 0xe0, 0x24, 0xa9, 0xba, 0xe0, 0x68, 0xa9, 0xba, 0x8a, 0x73, 0x41, 0x25, 0x12, 0x12, 0x1c, 0x28, 0x3b, 0xa6, 0x34, + 0x8, 0x8, 0x7a, 0x38, 0x34, 0x2c, 0xe8, 0xf8, 0xd0, 0xef, 0x18, 0xc2, 0xc, 0x27, 0x1f, 0xb1, 0x83, 0x3c, 0x58, + 0x8a, 0x67, 0x1, 0x58, 0x9d, 0x50, 0x8b, 0x8c, 0x60, 0x31, 0x53, 0x55, 0x54, 0xd8, 0x51, 0x32, 0x23, 0x54, 0xd9, + 0xd1, 0x65, 0x54, 0xd6, 0xe0, 0xb6, 0x4b, 0x8b, 0xd1, 0x1a, 0x32, 0x6d, 0x10, 0xed, 0x21, 0x48, 0x8d, 0x1d, 0xa2, + 0x6a, 0x90, 0x14, 0x88, 0x30, 0x18, 0x8a, 0x11, 0x1a, 0x37, 0xc6, 0xa7, 0x32, 0x8b, 0xea, 0x32, 0x44, 0x78, 0xc9, + 0x4e, 0xdb, 0x47, 0x11, 0x53, 0xc6, 0x16, 0xc9, 0x72, 0x55, 0x11, 0x4e, 0x12, 0x55, 0x31, 0xd4, 0x4b, 0x16, 0x71, + 0x7e, 0x32, 0x13, 0x5, 0xb2, 0x5c, 0x9c, 0xa4, 0xab, 0x78, 0xc9, 0x20, 0x88, 0xfb, 0x18, 0xa6, 0xb, 0x44, 0xac, + 0x6, 0x23, 0x4b, 0x2d, 0x12, 0xa3, 0x1a, 0x8b, 0xea, 0x2c, 0x44, 0x69, 0x12, 0xa8, 0xca, 0xa2, 0xc4, 0x64, 0x98, + 0x99, 0x11, 0xd4, 0x5e, 0x8a, 0x51, 0x92, 0x23, 0xa8, 0xbd, 0x34, 0x44, 0xc8, 0x65, 0x44, 0xd7, 0x30, 0x76, 0x11, + 0xea, 0x5a, 0xf7, 0x8b, 0xf1, 0x90, 0xaa, 0x90, 0x14, 0x52, 0x93, 0x4, 0x4c, 0x8b, 0x18, 0xc, 0x55, 0x2b, 0xd1, + 0x5a, 0x4e, 0xea, 0xa9, 0x82, 0x8b, 0xe0, 0xb2, 0x4a, 0x8e, 0x91, 0x62, 0x46, 0xf1, 0x8a, 0x77, 0x90, 0xd4, 0x89, + 0xa2, 0x34, 0x53, 0x15, 0x4f, 0xa4, 0xcf, 0x53, 0x2e, 0x93, 0x18, 0xa2, 0x35, 0x54, 0x51, 0x11, 0xa4, 0x91, 0x16, + 0x26, 0xd8, 0x44, 0xc9, 0x21, 0xde, 0x2f, 0xc6, 0x3b, 0x44, 0x69, 0xd, 0x44, 0xd0, 0x59, 0x99, 0xde, 0x4b, 0x33, + 0x44, 0x44, 0x9a, 0xa2, 0xe5, 0x55, 0xc0, 0x5b, 0x26, 0x55, 0x57, 0x92, 0x0, 0x96, 0xe5, 0x55, 0xb6, 0xa2, 0x6a, + 0x8b, 0xea, 0x3b, 0x45, 0xf5, 0x13, 0x44, 0x88, 0x4c, 0x85, 0x22, 0xc4, 0x46, 0x8e, 0xd1, 0x1a, 0x6d, 0x21, 0x68, + 0x97, 0x21, 0x88, 0xde, 0xa2, 0x94, 0x74, 0x95, 0xcc, 0x62, 0x9d, 0xdb, 0x2d, 0x66, 0x92, 0xc9, 0x5a, 0xa5, 0x90, + 0xa4, 0x46, 0x91, 0xb4, 0x85, 0x22, 0x94, 0x4d, 0x13, 0x37, 0xb, 0x84, 0xd9, 0x2a, 0x9a, 0xaf, 0x32, 0x3a, 0xa8, + 0xdd, 0x11, 0xa4, 0x87, 0x78, 0xbe, 0x91, 0xa8, 0x53, 0xcc, 0x95, 0x22, 0xca, 0x89, 0xb1, 0x8c, 0x92, 0x38, 0x91, + 0x34, 0x8f, 0xa6, 0x88, 0x4c, 0x71, 0x31, 0x8a, 0x50, 0x51, 0x1a, 0x34, 0x48, 0x4e, 0x31, 0x4e, 0x2b, 0x15, 0x62, + 0x96, 0x2c, 0xc6, 0x29, 0xe2, 0x46, 0x21, 0xf, 0x32, 0x32, 0xc0, 0x62, 0x49, 0x12, 0x6a, 0x88, 0xea, 0x2c, 0x46, + 0x88, 0x9a, 0xa4, 0xcd, 0x14, 0xa3, 0x84, 0x64, 0x91, 0xee, 0x28, 0xcb, 0x79, 0x4, 0x50, 0x44, 0x17, 0x9, 0xb1, + 0x42, 0x23, 0x47, 0xbb, 0xc5, 0xf5, 0x31, 0x2, 0x23, 0x45, 0x95, 0x13, 0x63, 0x27, 0xe8, 0xb3, 0x18, 0xa6, 0xa4, + 0x11, 0x31, 0xf6, 0x12, 0xc4, 0x8d, 0x2a, 0x26, 0xde, 0x63, 0x8e, 0x59, 0xd, 0xe5, 0x97, 0x49, 0x98, 0x99, 0x2e, + 0x9d, 0x12, 0x2b, 0xcb, 0x22, 0x9, 0x51, 0xde, 0x2f, 0x4b, 0xa6, 0x11, 0xea, 0x7e, 0xe4, 0x8c, 0x26, 0x1a, 0x49, + 0xb2, 0x23, 0xa8, 0xb1, 0x19, 0x24, 0x19, 0x11, 0xd4, 0x58, 0x8e, 0x2a, 0x43, 0x51, 0xda, 0x23, 0x46, 0x48, 0xee, + 0xa2, 0x66, 0x3, 0x11, 0x2a, 0x23, 0xeb, 0x90, 0xcd, 0x24, 0x1f, 0x1a, 0x16, 0x48, 0xb3, 0x19, 0x2a, 0xf2, 0x67, + 0xeb, 0x48, 0xaf, 0x14, 0x9f, 0xa4, 0xab, 0xd2, 0x6c, 0x35, 0x9a, 0x53, 0x7c, 0x24, 0xb7, 0x79, 0x8f, 0x91, 0x96, + 0xf2, 0x8, 0x9e, 0xc2, 0x65, 0x11, 0x58, 0xe8, 0x4c, 0xc9, 0x15, 0x8d, 0xc4, 0x47, 0x32, 0x18, 0x88, 0xea, 0x35, + 0x82, 0xd5, 0xab, 0xa, 0xe2, 0x46, 0xf7, 0x8b, 0xf7, 0x90, 0x75, 0x8, 0xe9, 0x8a, 0x11, 0x1d, 0x48, 0xf2, 0x4c, + 0xd3, 0x6d, 0xd4, 0x65, 0x51, 0x7a, 0x52, 0x14, 0x22, 0xd2, 0x37, 0xbc, 0x5f, 0xa4, 0x7c, 0x90, 0x74, 0x95, 0xb, + 0x64, 0xc9, 0x21, 0x44, 0x69, 0x1b, 0x8a, 0x13, 0x4a, 0x1, 0x28, 0x9a, 0x64, 0xc1, 0x1a, 0xc4, 0xc0, 0x6a, 0x28, + 0x68, 0x98, 0x5b, 0x26, 0x4c, 0x46, 0x92, 0x1d, 0x22, 0xc3, 0x61, 0xaa, 0xd2, 0x92, 0x44, 0x85, 0x22, 0x65, 0x3c, + 0xe8, 0xb2, 0xa9, 0x2a, 0x39, 0xa, 0x4a, 0x49, 0x3c, 0xba, 0x95, 0xe9, 0x92, 0xc6, 0x98, 0xd5, 0x81, 0x8f, 0x95, + 0x41, 0x94, 0x79, 0x93, 0x14, 0x8c, 0x71, 0x58, 0x27, 0xc9, 0x87, 0x73, 0xf1, 0x66, 0x3c, 0x7d, 0xd3, 0xe6, 0xac, + 0xa, 0xb7, 0x63, 0x18, 0x91, 0x8a, 0xc1, 0x48, 0xdc, 0xc9, 0x4c, 0x1e, 0xc, 0xec, 0x82, 0xd6, 0x97, 0x57, 0x90, + 0xfb, 0x89, 0x88, 0xdf, 0x70, 0xb0, 0xce, 0xae, 0x54, 0x1e, 0x4b, 0x7a, 0x7d, 0x88, 0x8c, 0xd, 0x24, 0x63, 0x43, + 0x7f, 0xc4, 0xee, 0xa3, 0x51, 0xb7, 0x27, 0xb9, 0x73, 0x4f, 0x91, 0xe3, 0xec, 0x79, 0xa9, 0xf9, 0xca, 0x89, 0x28, + 0x2d, 0x44, 0xe0, 0xf3, 0xd1, 0x77, 0x4b, 0xab, 0xc8, 0xb5, 0xc4, 0x74, 0xf, 0xf0, 0xff, 0x3b, 0x8d, 0xd2, 0xe, + 0x22, 0xf6, 0x8c, 0xc, 0xfd, 0xd3, 0x12, 0x31, 0xa9, 0x57, 0xf0, 0x50, 0xd6, 0x45, 0x30, 0xcb, 0x45, 0x82, 0xfe, + 0x9f, 0x63, 0xc3, 0x3, 0x32, 0xa1, 0xa1, 0x83, 0xf, 0xb5, 0x42, 0x85, 0x36, 0xf5, 0x4f, 0x18, 0x34, 0xf9, 0x1e, + 0x3e, 0xc7, 0x9a, 0xb9, 0xd9, 0xe5, 0x51, 0x7a, 0x8c, 0xac, 0x5b, 0x39, 0x98, 0x6e, 0x14, 0x87, 0x1c, 0x67, 0xc7, + 0xa3, 0xed, 0xde, 0x48, 0xd9, 0x47, 0xd0, 0xc5, 0x70, 0xa4, 0x38, 0xe3, 0x60, 0x1a, 0x17, 0x1e, 0x45, 0x1e, 0xdc, + 0x6c, 0x23, 0x1d, 0xc2, 0x90, 0xe3, 0x8d, 0x8c, 0x13, 0x8, 0xa5, 0x86, 0x9, 0x70, 0xca, 0x68, 0xc9, 0x70, 0xa4, + 0x38, 0xe3, 0x45, 0xa9, 0x5e, 0xce, 0x11, 0x23, 0xa5, 0x88, 0xed, 0x32, 0xd5, 0x83, 0xd3, 0x58, 0x31, 0x30, 0x46, + 0x8e, 0xc6, 0xc3, 0x88, 0xf4, 0xd2, 0x28, 0x7e, 0xfd, 0xff, 0xd2, 0xea, 0xf1, 0xf5, 0x71, 0x1d, 0xde, 0x65, 0xb6, + 0xf2, 0xa0, 0x98, 0xd2, 0x3c, 0x19, 0xf4, 0xba, 0xbc, 0x7d, 0x5c, 0x4b, 0x54, 0xab, 0x8d, 0xc0, 0xcc, 0xf0, 0xac, + 0x5d, 0x9a, 0x26, 0xae, 0x7c, 0x99, 0xd9, 0xf6, 0x70, 0x4c, 0xfe, 0xba, 0x7b, 0x70, 0x5f, 0x7f, 0x1a, 0xd7, 0x26, + 0x99, 0xb3, 0x13, 0x67, 0x54, 0xe7, 0x99, 0x22, 0x13, 0xae, 0x24, 0x63, 0x61, 0x52, 0xb5, 0x22, 0x1a, 0xa6, 0xac, + 0x7c, 0x90, 0x4, 0x8c, 0x68, 0xe5, 0x41, 0x36, 0x95, 0xa9, 0xc7, 0x8a, 0x7d, 0xea, 0x6b, 0xd2, 0xea, 0xf2, 0x81, + 0x71, 0x1f, 0x46, 0x4a, 0xe6, 0xb2, 0xa0, 0x64, 0x6d, 0x1a, 0x1b, 0x26, 0xcc, 0x4a, 0x82, 0x6b, 0x44, 0x9a, 0x64, + 0x61, 0x69, 0xa6, 0xd, 0x2e, 0x72, 0xab, 0x2d, 0x4a, 0x6d, 0x9b, 0x31, 0x2a, 0x8, 0xf3, 0x56, 0xc0, 0x7d, 0x9, + 0xfc, 0xb5, 0x15, 0x8c, 0x97, 0xe6, 0xed, 0x2e, 0xaf, 0x1f, 0x57, 0x10, 0xb7, 0x5, 0x80, 0x82, 0x23, 0x89, 0xbb, + 0xd9, 0xbf, 0x49, 0xf8, 0x95, 0x82, 0x74, 0xb6, 0x68, 0x25, 0xf, 0xb1, 0xd1, 0xe3, 0x27, 0x32, 0x6d, 0x4a, 0x70, + 0xd3, 0xee, 0x25, 0x41, 0x88, 0xf3, 0x47, 0x8b, 0x8d, 0x9f, 0xe0, 0x1a, 0x47, 0x39, 0x6, 0xce, 0x37, 0xa, 0x56, + 0xce, 0x34, 0x31, 0x71, 0x7e, 0xab, 0x37, 0x3a, 0xc2, 0x5b, 0xce, 0x5a, 0x5d, 0x5e, 0x40, 0x6e, 0x23, 0xf8, 0xd7, + 0xb3, 0xd5, 0xe6, 0xe0, 0x5e, 0xfa, 0x39, 0xcd, 0xd0, 0x95, 0x25, 0x4b, 0xdd, 0x31, 0x26, 0x41, 0x94, 0xcb, 0xd, + 0x3a, 0xd8, 0x12, 0x93, 0xda, 0x7, 0x4a, 0xa, 0x91, 0x41, 0xc0, 0xc0, 0xa9, 0xaa, 0x28, 0x2a, 0x60, 0x6c, 0xb, + 0x1e, 0x51, 0xe4, 0xc7, 0xaa, 0x35, 0x24, 0x75, 0xd2, 0xea, 0xf1, 0xe7, 0x71, 0x15, 0xdc, 0x4f, 0x12, 0x92, 0xad, + 0xf1, 0xbc, 0xd0, 0x76, 0xd2, 0xea, 0xf1, 0x5b, 0x71, 0x23, 0x93, 0xaa, 0xd5, 0xf1, 0xb1, 0xaa, 0x11, 0x1a, 0x9d, + 0xf4, 0xba, 0xbc, 0x48, 0xdc, 0x46, 0xf6, 0xc8, 0xa7, 0xe3, 0xdc, 0x88, 0xaf, 0x21, 0x9e, 0x25, 0xb2, 0x33, 0xf2, + 0xa9, 0xe2, 0x96, 0xcc, 0x9c, 0x2c, 0xd3, 0xca, 0xf4, 0x2e, 0xe6, 0x17, 0x25, 0xcf, 0x32, 0xd9, 0x19, 0xa1, 0xc0, + 0xac, 0x2f, 0x25, 0xb3, 0x5, 0xab, 0x87, 0xd1, 0x84, 0x4f, 0x91, 0x46, 0x4f, 0x5a, 0x5d, 0x5d, 0xf8, 0xae, 0x24, + 0x12, 0x4c, 0x58, 0xfa, 0x7d, 0xa9, 0x53, 0x8c, 0xe3, 0xdc, 0x8c, 0x3e, 0x48, 0xc2, 0xe1, 0x4b, 0xb9, 0xa6, 0xb, + 0x61, 0x27, 0x39, 0x10, 0xea, 0x93, 0x5c, 0x9f, 0x28, 0x54, 0x2c, 0xa4, 0xa2, 0x23, 0xcd, 0x3, 0xed, 0x4, 0x78, + 0x55, 0x60, 0xce, 0x35, 0x11, 0xcf, 0xb3, 0x9e, 0x46, 0x68, 0x64, 0x25, 0x43, 0x31, 0x11, 0x5c, 0xe3, 0xfc, 0x1c, + 0x36, 0xa2, 0x99, 0x87, 0xe9, 0xcf, 0x23, 0x34, 0x32, 0x11, 0xe6, 0x65, 0x17, 0x9b, 0x99, 0x17, 0xe1, 0xe4, 0x5e, + 0x24, 0x9f, 0xf4, 0xba, 0xbb, 0xca, 0xdc, 0x4c, 0xb7, 0xa1, 0x11, 0x4, 0xd6, 0x9, 0x6c, 0xdc, 0xfb, 0xa5, 0xd5, + 0xde, 0x8e, 0xe2, 0x15, 0xf0, 0x56, 0x95, 0x9c, 0x6, 0xb3, 0xa1, 0x69, 0x3, 0x32, 0xe2, 0x73, 0xe6, 0x26, 0xcc, + 0xd0, 0x88, 0x74, 0x2e, 0x6, 0x5, 0x2c, 0x42, 0xfb, 0x45, 0x5, 0x31, 0x24, 0x4d, 0xd0, 0xfb, 0x37, 0x46, 0x6c, + 0x47, 0xb9, 0xf, 0xcb, 0x35, 0x8d, 0xc1, 0x88, 0x83, 0xd2, 0xed, 0xd5, 0x94, 0xf1, 0x11, 0xdf, 0x2c, 0xb6, 0x29, + 0x39, 0xc6, 0x64, 0x2a, 0xa1, 0x24, 0x61, 0x89, 0x18, 0x7c, 0x91, 0x8c, 0xd3, 0x66, 0xc5, 0x8a, 0xa9, 0xc4, 0xd, + 0x3c, 0x33, 0x50, 0xba, 0x5d, 0xba, 0xad, 0x5e, 0x2d, 0xcf, 0x75, 0x32, 0x90, 0xee, 0xa8, 0xf4, 0xc5, 0x43, 0x50, + 0xa8, 0x62, 0x87, 0xd2, 0x46, 0x34, 0x43, 0xf4, 0x68, 0x88, 0x59, 0x3f, 0xa2, 0xd0, 0x7a, 0x1e, 0x69, 0x45, 0x56, + 0x3d, 0x33, 0x12, 0x70, 0x4c, 0x8d, 0x2c, 0x42, 0x1a, 0x94, 0xd4, 0xb7, 0x62, 0x18, 0x11, 0x1a, 0x5d, 0x5d, 0xe8, + 0xee, 0x23, 0x29, 0xc9, 0x8c, 0x65, 0x60, 0x7b, 0x7b, 0x8c, 0x11, 0x3a, 0x5d, 0xba, 0xcc, 0xde, 0x27, 0x99, 0x58, + 0x8a, 0x8c, 0x69, 0x91, 0xa, 0x2f, 0xb4, 0x55, 0xe, 0x4, 0xc1, 0xd, 0x25, 0x43, 0x42, 0xb2, 0x81, 0x5e, 0x56, 0x5f, + 0x16, 0xc6, 0x28, 0xb4, 0x5e, 0x97, 0x6e, 0xb3, 0x37, 0x89, 0x98, 0xe3, 0x13, 0xbb, 0xc9, 0x49, 0x87, 0xe1, 0x6d, + 0x19, 0xa5, 0xdb, 0xac, 0xcd, 0xe2, 0x32, 0xb3, 0x99, 0x2b, 0xf3, 0x60, 0xd1, 0x20, 0x7e, 0x46, 0xcc, 0x4, 0xc6, + 0x2c, 0xc0, 0x12, 0x26, 0x8, 0xc8, 0xad, 0xfa, 0xf6, 0x3f, 0x10, 0x45, 0xca, 0xe0, 0x9a, 0x3b, 0x4b, 0xb7, 0x57, + 0x33, 0xc4, 0x90, 0x72, 0xab, 0x5a, 0xcc, 0xf, 0x26, 0x42, 0xea, 0x3e, 0x87, 0x2, 0xab, 0xbc, 0x9f, 0x99, 0x23, + 0x19, 0x76, 0xa, 0x8c, 0xc4, 0x8b, 0xc7, 0xf3, 0x95, 0xd2, 0x90, 0xd2, 0xed, 0xd5, 0xcc, 0xf1, 0x31, 0x1d, 0xa7, + 0xa4, 0xba, 0xdd, 0x88, 0x2d, 0x6b, 0xa4, 0x74, 0xbb, 0x75, 0x73, 0x3c, 0x4c, 0x44, 0x42, 0xd, 0x74, 0x61, 0x39, + 0x79, 0x76, 0xa4, 0xa7, 0x3c, 0x4c, 0x80, 0xc4, 0xc8, 0x1a, 0x27, 0x1c, 0xe4, 0xde, 0x8, 0xb2, 0xba, 0x30, 0xa5, + 0x74, 0x36, 0x76, 0xa6, 0x53, 0x9f, 0x33, 0x56, 0x98, 0x88, 0x92, 0x2a, 0xd1, 0x90, 0x1, ]; const DVC_TEST_HEADER_SIZE: usize = 0x01; @@ -148,14 +127,13 @@ lazy_static! { total_data_size: DVC_TEST_DATA_LENGTH, data_size: DVC_DATA_FIRST_BUFFER.len() }; - static ref DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH: ClientPdu = - ClientPdu::DataFirst(DataFirstPdu { - channel_id_type: FieldType::U8, - channel_id: 0x7, - total_data_size_type: FieldType::U16, - total_data_size: 0x639, - data_size: DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(), - }); + static ref DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH: ClientPdu = ClientPdu::DataFirst(DataFirstPdu { + channel_id_type: FieldType::U8, + channel_id: 0x7, + total_data_size_type: FieldType::U16, + total_data_size: 0x639, + data_size: DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_BUFFER.len(), + }); } #[test] @@ -219,8 +197,7 @@ fn buffer_length_is_correct_for_dvc_data_first_pdu() { } #[test] -fn from_buffer_correct_parses_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( -) { +fn from_buffer_correct_parses_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length() { assert_eq!( *DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH, ClientPdu::from_buffer( @@ -232,8 +209,7 @@ fn from_buffer_correct_parses_dvc_server_pdu_with_data_first_where_total_length_ } #[test] -fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( -) { +fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length() { let data_first = &*DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH; let mut buffer = Vec::new(); @@ -246,8 +222,7 @@ fn to_buffer_correct_serializes_dvc_server_pdu_with_data_first_where_total_lengt } #[test] -fn buffer_length_is_correct_for_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length( -) { +fn buffer_length_is_correct_for_dvc_server_pdu_with_data_first_where_total_length_equals_to_buffer_length() { let data_first = &*DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH; let expected_buf_len = DATA_FIRST_WHERE_TOTAL_LENGTH_EQUALS_TO_BUFFER_LENGTH_PREFIX.len(); diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index 484037ec..7da974b3 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -4,25 +4,22 @@ mod graphics_messages; #[cfg(test)] mod test; -pub use graphics_messages::{ - CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, CapabilitiesConfirmPdu, - CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, - CapabilitiesV8Flags, CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, - DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, - FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, - SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, WireToSurface1Pdu, - WireToSurface2Pdu, -}; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use failure::Fail; +use graphics_messages::RESET_GRAPHICS_PDU_SIZE; +pub use graphics_messages::{ + CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, CapabilitiesConfirmPdu, CapabilitiesV103Flags, + CapabilitiesV104Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, Codec1Type, + Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, + FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, + SurfaceToCachePdu, SurfaceToSurfacePdu, WireToSurface1Pdu, WireToSurface2Pdu, +}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use crate::{impl_from_error, PduParsing}; -use graphics_messages::RESET_GRAPHICS_PDU_SIZE; const RDP_GFX_HEADER_SIZE: usize = 8; @@ -50,8 +47,8 @@ impl PduParsing for ServerPdu { type Error = GraphicsPipelineError; fn from_buffer(mut stream: impl io::Read) -> Result { - let pdu_type = ServerPduType::from_u16(stream.read_u16::()?) - .ok_or(GraphicsPipelineError::InvalidCmdId)?; + let pdu_type = + ServerPduType::from_u16(stream.read_u16::()?).ok_or(GraphicsPipelineError::InvalidCmdId)?; let _flags = stream.read_u16::()?; let pdu_length = stream.read_u32::()? as usize; @@ -85,12 +82,10 @@ impl PduParsing for ServerPdu { } _ => { let pdu = match pdu_type { - ServerPduType::DeleteEncodingContext => ServerPdu::DeleteEncodingContext( - DeleteEncodingContextPdu::from_buffer(&mut stream)?, - ), - ServerPduType::SolidFill => { - ServerPdu::SolidFill(SolidFillPdu::from_buffer(&mut stream)?) + ServerPduType::DeleteEncodingContext => { + ServerPdu::DeleteEncodingContext(DeleteEncodingContextPdu::from_buffer(&mut stream)?) } + ServerPduType::SolidFill => ServerPdu::SolidFill(SolidFillPdu::from_buffer(&mut stream)?), ServerPduType::SurfaceToSurface => { ServerPdu::SurfaceToSurface(SurfaceToSurfacePdu::from_buffer(&mut stream)?) } @@ -109,21 +104,17 @@ impl PduParsing for ServerPdu { ServerPduType::DeleteSurface => { ServerPdu::DeleteSurface(DeleteSurfacePdu::from_buffer(&mut stream)?) } - ServerPduType::StartFrame => { - ServerPdu::StartFrame(StartFramePdu::from_buffer(&mut stream)?) - } - ServerPduType::EndFrame => { - ServerPdu::EndFrame(EndFramePdu::from_buffer(&mut stream)?) - } + ServerPduType::StartFrame => ServerPdu::StartFrame(StartFramePdu::from_buffer(&mut stream)?), + ServerPduType::EndFrame => ServerPdu::EndFrame(EndFramePdu::from_buffer(&mut stream)?), ServerPduType::ResetGraphics => { ServerPdu::ResetGraphics(ResetGraphicsPdu::from_buffer(&mut stream)?) } - ServerPduType::MapSurfaceToOutput => ServerPdu::MapSurfaceToOutput( - MapSurfaceToOutputPdu::from_buffer(&mut stream)?, - ), - ServerPduType::CapabilitiesConfirm => ServerPdu::CapabilitiesConfirm( - CapabilitiesConfirmPdu::from_buffer(&mut stream)?, - ), + ServerPduType::MapSurfaceToOutput => { + ServerPdu::MapSurfaceToOutput(MapSurfaceToOutputPdu::from_buffer(&mut stream)?) + } + ServerPduType::CapabilitiesConfirm => { + ServerPdu::CapabilitiesConfirm(CapabilitiesConfirmPdu::from_buffer(&mut stream)?) + } ServerPduType::CacheImportReply => { ServerPdu::CacheImportReply(CacheImportReplyPdu::from_buffer(&mut stream)?) } @@ -158,54 +149,22 @@ impl PduParsing for ServerPdu { stream.write_u32::(buffer_length as u32)?; match self { - ServerPdu::WireToSurface1(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::WireToSurface2(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::DeleteEncodingContext(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::SolidFill(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::SurfaceToSurface(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::SurfaceToCache(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::CacheToSurface(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::CreateSurface(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::DeleteSurface(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::ResetGraphics(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::MapSurfaceToOutput(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::StartFrame(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::EndFrame(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::EvictCacheEntry(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::CapabilitiesConfirm(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ServerPdu::CacheImportReply(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), + ServerPdu::WireToSurface1(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::WireToSurface2(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::DeleteEncodingContext(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::SolidFill(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::SurfaceToSurface(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::SurfaceToCache(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::CacheToSurface(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::CreateSurface(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::DeleteSurface(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::ResetGraphics(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::MapSurfaceToOutput(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::StartFrame(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::EndFrame(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::EvictCacheEntry(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::CapabilitiesConfirm(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::CacheImportReply(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), } } @@ -242,8 +201,8 @@ impl PduParsing for ClientPdu { type Error = GraphicsPipelineError; fn from_buffer(mut stream: impl io::Read) -> Result { - let pdu_type = ClientPduType::from_u16(stream.read_u16::()?) - .ok_or(GraphicsPipelineError::InvalidCmdId)?; + let pdu_type = + ClientPduType::from_u16(stream.read_u16::()?).ok_or(GraphicsPipelineError::InvalidCmdId)?; let _flags = stream.read_u16::()?; let pdu_length = stream.read_u32::()? as usize; @@ -251,9 +210,9 @@ impl PduParsing for ClientPdu { ClientPduType::FrameAcknowledge => { ClientPdu::FrameAcknowledge(FrameAcknowledgePdu::from_buffer(&mut stream)?) } - ClientPduType::CapabilitiesAdvertise => ClientPdu::CapabilitiesAdvertise( - CapabilitiesAdvertisePdu::from_buffer(&mut stream)?, - ), + ClientPduType::CapabilitiesAdvertise => { + ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu::from_buffer(&mut stream)?) + } _ => return Err(GraphicsPipelineError::UnexpectedClientPduType(pdu_type)), }; @@ -273,12 +232,8 @@ impl PduParsing for ClientPdu { stream.write_u32::(self.buffer_length() as u32)?; match self { - ClientPdu::FrameAcknowledge(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), - ClientPdu::CapabilitiesAdvertise(pdu) => pdu - .to_buffer(&mut stream) - .map_err(GraphicsPipelineError::from), + ClientPdu::FrameAcknowledge(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ClientPdu::CapabilitiesAdvertise(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), } } @@ -371,18 +326,11 @@ pub enum GraphicsPipelineError { expected, actual )] InvalidResetGraphicsPduSize { expected: usize, actual: usize }, - #[fail( - display = "Invalid PDU length: expected ({}) != actual ({})", - expected, actual - )] + #[fail(display = "Invalid PDU length: expected ({}) != actual ({})", expected, actual)] InvalidPduLength { expected: usize, actual: usize }, } -impl_from_error!( - io::Error, - GraphicsPipelineError, - GraphicsPipelineError::IOError -); +impl_from_error!(io::Error, GraphicsPipelineError, GraphicsPipelineError::IOError); impl_from_error!( graphics_messages::GraphicsMessagesError, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs index 9b0dc15d..e956090f 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -3,25 +3,25 @@ mod server; #[cfg(test)] pub mod test; -pub use client::{CacheImportReplyPdu, CapabilitiesAdvertisePdu, FrameAcknowledgePdu, QueueDepth}; -pub use server::{ - CacheToSurfacePdu, CapabilitiesConfirmPdu, Codec1Type, Codec2Type, CreateSurfacePdu, - DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, - MapSurfaceToOutputPdu, PixelFormat, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, - SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, WireToSurface2Pdu, - RESET_GRAPHICS_PDU_SIZE, -}; - use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +pub use client::{CacheImportReplyPdu, CapabilitiesAdvertisePdu, FrameAcknowledgePdu, QueueDepth}; use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +pub use server::{ + CacheToSurfacePdu, CapabilitiesConfirmPdu, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, + DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, MapSurfaceToOutputPdu, PixelFormat, ResetGraphicsPdu, + SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, + WireToSurface2Pdu, RESET_GRAPHICS_PDU_SIZE, +}; use super::RDP_GFX_HEADER_SIZE; -use crate::{gcc::MonitorDataError, impl_from_error, utils::Rectangle, PduParsing}; +use crate::gcc::MonitorDataError; +use crate::utils::Rectangle; +use crate::{impl_from_error, PduParsing}; const CAPABILITY_SET_HEADER_SIZE: usize = 8; @@ -71,19 +71,13 @@ impl PduParsing for CapabilitySet { match version { CapabilityVersion::V8 => Ok(CapabilitySet::V8 { - flags: CapabilitiesV8Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV8Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V8_1 => Ok(CapabilitySet::V8_1 { - flags: CapabilitiesV81Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV81Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10 => Ok(CapabilitySet::V10 { - flags: CapabilitiesV10Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV10Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10_1 => { data.as_slice().read_u128::()?; @@ -91,29 +85,19 @@ impl PduParsing for CapabilitySet { Ok(CapabilitySet::V10_1) } CapabilityVersion::V10_2 => Ok(CapabilitySet::V10_2 { - flags: CapabilitiesV10Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV10Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10_3 => Ok(CapabilitySet::V10_3 { - flags: CapabilitiesV103Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV103Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10_4 => Ok(CapabilitySet::V10_4 { - flags: CapabilitiesV104Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV104Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10_5 => Ok(CapabilitySet::V10_5 { - flags: CapabilitiesV104Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV104Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::V10_6 => Ok(CapabilitySet::V10_6 { - flags: CapabilitiesV104Flags::from_bits_truncate( - data.as_slice().read_u32::()?, - ), + flags: CapabilitiesV104Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), CapabilityVersion::Unknown => Ok(CapabilitySet::Unknown(data)), } @@ -121,9 +105,7 @@ impl PduParsing for CapabilitySet { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), GraphicsMessagesError> { stream.write_u32::(self.version().to_u32().unwrap())?; - stream.write_u32::( - (self.buffer_length() - CAPABILITY_SET_HEADER_SIZE) as u32, - )?; + stream.write_u32::((self.buffer_length() - CAPABILITY_SET_HEADER_SIZE) as u32)?; match self { CapabilitySet::V8 { flags } => stream.write_u32::(flags.bits())?, @@ -283,30 +265,17 @@ pub enum GraphicsMessagesError { InvalidFixelFormat, #[fail(display = "Monitor error: {}", _0)] MonitorError(#[fail(cause)] MonitorDataError), - #[fail( - display = "Invalid ResetGraphics PDU width: {} > MAX ({})", - actual, max - )] + #[fail(display = "Invalid ResetGraphics PDU width: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduWidth { actual: u32, max: u32 }, - #[fail( - display = "Invalid ResetGraphics PDU height: {} > MAX ({})", - actual, max - )] + #[fail(display = "Invalid ResetGraphics PDU height: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduHeight { actual: u32, max: u32 }, - #[fail( - display = "Invalid ResetGraphics PDU monitors count: {} > MAX ({})", - actual, max - )] + #[fail(display = "Invalid ResetGraphics PDU monitors count: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduMonitorsCount { actual: u32, max: u32 }, #[fail(display = "Invalid capabilities version")] InvalidCapabilitiesVersion, } -impl_from_error!( - io::Error, - GraphicsMessagesError, - GraphicsMessagesError::IOError -); +impl_from_error!(io::Error, GraphicsMessagesError, GraphicsMessagesError::IOError); impl_from_error!( MonitorDataError, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index 014760b9..8ca198e6 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -6,10 +6,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{CapabilitySet, Color, GraphicsMessagesError, Point, Rectangle, RDP_GFX_HEADER_SIZE}; -use crate::{ - gcc::{Monitor, MonitorDataError}, - PduParsing, -}; +use crate::gcc::{Monitor, MonitorDataError}; +use crate::PduParsing; pub const RESET_GRAPHICS_PDU_SIZE: usize = 340; @@ -30,10 +28,9 @@ impl PduParsing for WireToSurface1Pdu { fn from_buffer(mut stream: impl io::Read) -> Result { let surface_id = stream.read_u16::()?; - let codec_id = Codec1Type::from_u16(stream.read_u16::()?) - .ok_or(GraphicsMessagesError::InvalidCodec1Id)?; - let pixel_format = PixelFormat::from_u8(stream.read_u8()?) - .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + let codec_id = + Codec1Type::from_u16(stream.read_u16::()?).ok_or(GraphicsMessagesError::InvalidCodec1Id)?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?).ok_or(GraphicsMessagesError::InvalidFixelFormat)?; let destination_rectangle = Rectangle::from_buffer(&mut stream)?; let bitmap_data_length = stream.read_u32::()? as usize; @@ -75,11 +72,10 @@ impl PduParsing for WireToSurface2Pdu { fn from_buffer(mut stream: impl io::Read) -> Result { let surface_id = stream.read_u16::()?; - let codec_id = Codec2Type::from_u16(stream.read_u16::()?) - .ok_or(GraphicsMessagesError::InvalidCodec2Id)?; + let codec_id = + Codec2Type::from_u16(stream.read_u16::()?).ok_or(GraphicsMessagesError::InvalidCodec2Id)?; let codec_context_id = stream.read_u32::()?; - let pixel_format = PixelFormat::from_u8(stream.read_u8()?) - .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?).ok_or(GraphicsMessagesError::InvalidFixelFormat)?; let bitmap_data_length = stream.read_u32::()? as usize; Ok(Self { @@ -175,11 +171,7 @@ impl PduParsing for SolidFillPdu { } fn buffer_length(&self) -> usize { - 8 + self - .rectangles - .iter() - .map(|r| r.buffer_length()) - .sum::() + 8 + self.rectangles.iter().map(|r| r.buffer_length()).sum::() } } @@ -227,11 +219,7 @@ impl PduParsing for SurfaceToSurfacePdu { fn buffer_length(&self) -> usize { 6 + self.source_rectangle.buffer_length() - + self - .destination_points - .iter() - .map(|r| r.buffer_length()) - .sum::() + + self.destination_points.iter().map(|r| r.buffer_length()).sum::() } } @@ -312,11 +300,7 @@ impl PduParsing for CacheToSurfacePdu { } fn buffer_length(&self) -> usize { - 6 + self - .destination_points - .iter() - .map(|p| p.buffer_length()) - .sum::() + 6 + self.destination_points.iter().map(|p| p.buffer_length()).sum::() } } @@ -335,8 +319,7 @@ impl PduParsing for CreateSurfacePdu { let surface_id = stream.read_u16::()?; let width = stream.read_u16::()?; let height = stream.read_u16::()?; - let pixel_format = PixelFormat::from_u8(stream.read_u8()?) - .ok_or(GraphicsMessagesError::InvalidFixelFormat)?; + let pixel_format = PixelFormat::from_u8(stream.read_u8()?).ok_or(GraphicsMessagesError::InvalidFixelFormat)?; Ok(Self { surface_id, @@ -397,11 +380,7 @@ impl ResetGraphicsPdu { RESET_GRAPHICS_PDU_SIZE - RDP_GFX_HEADER_SIZE - 12 - - self - .monitors - .iter() - .map(|m| m.buffer_length()) - .sum::() + - self.monitors.iter().map(|m| m.buffer_length()).sum::() } } @@ -427,12 +406,10 @@ impl PduParsing for ResetGraphicsPdu { let monitor_count = stream.read_u32::()?; if monitor_count > MONITOR_COUNT_MAX { - return Err( - GraphicsMessagesError::InvalidResetGraphicsPduMonitorsCount { - actual: monitor_count, - max: MAX_RESET_GRAPHICS_WIDTH_HEIGHT, - }, - ); + return Err(GraphicsMessagesError::InvalidResetGraphicsPduMonitorsCount { + actual: monitor_count, + max: MAX_RESET_GRAPHICS_WIDTH_HEIGHT, + }); } let monitors = (0..monitor_count) @@ -546,10 +523,7 @@ impl PduParsing for StartFramePdu { let timestamp = Timestamp::from_buffer(&mut stream)?; let frame_id = stream.read_u32::()?; - Ok(Self { - timestamp, - frame_id, - }) + Ok(Self { timestamp, frame_id }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 9c2275d7..0a47b332 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -4,62 +4,54 @@ use super::*; use crate::gcc::{Monitor, MonitorFlags}; pub const WIRE_TO_SURFACE_1_BUFFER: [u8; 218] = [ - 0x00, 0x00, 0x08, 0x00, 0x20, 0xa5, 0x03, 0xde, 0x02, 0xab, 0x03, 0xe7, 0x02, 0xc9, 0x00, 0x00, - 0x00, 0x01, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3f, 0x27, - 0x19, 0x82, 0x72, 0x69, 0x40, 0x28, 0x1a, 0x3f, 0x27, 0x19, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, - 0x4f, 0x39, 0x2c, 0xa0, 0x94, 0x8d, 0xc0, 0xb8, 0xb3, 0x00, 0x09, 0xd8, 0xd3, 0xd0, 0x97, 0x8a, - 0x82, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, 0x3f, 0x27, 0x19, 0x4f, 0x39, 0x2c, 0xdf, 0xdb, 0xd9, - 0xd8, 0xd3, 0xd0, 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xff, 0xff, 0x3f, 0x27, 0x19, 0x41, 0x29, - 0x1b, 0x40, 0x28, 0x1a, 0x40, 0x28, 0x1a, 0xe5, 0xe1, 0xe0, 0x81, 0x71, 0x68, 0x40, 0x28, 0x1a, - 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xff, 0xff, 0x60, 0x4b, 0x40, 0x4f, 0x39, 0x2c, 0x60, 0x4b, - 0x40, 0xd8, 0xd3, 0xd0, 0xc0, 0xb8, 0xb3, 0x43, 0x2b, 0x1d, 0x3f, 0x27, 0x19, 0xff, 0xff, 0xff, - 0x00, 0x09, 0xc0, 0xb8, 0xb3, 0xef, 0xed, 0xeb, 0xdf, 0xdb, 0xd9, 0xea, 0xe7, 0xe6, 0xc0, 0xb8, - 0xb3, 0x41, 0x29, 0x1b, 0x41, 0x29, 0x1b, 0x42, 0x2a, 0x1c, 0xff, 0xff, 0xff, 0x00, 0x09, 0x41, - 0x29, 0x1b, 0x81, 0x71, 0x68, 0x80, 0x71, 0x67, 0x5f, 0x4b, 0x3f, 0x40, 0x28, 0x1a, 0x42, 0x2a, - 0x1c, 0x40, 0x28, 0x1a, 0x3f, 0x27, 0x19, 0xc0, 0xb8, 0xb3, + 0x00, 0x00, 0x08, 0x00, 0x20, 0xa5, 0x03, 0xde, 0x02, 0xab, 0x03, 0xe7, 0x02, 0xc9, 0x00, 0x00, 0x00, 0x01, 0x0e, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x3f, 0x27, 0x19, 0x82, 0x72, 0x69, 0x40, 0x28, 0x1a, 0x3f, 0x27, + 0x19, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, 0x4f, 0x39, 0x2c, 0xa0, 0x94, 0x8d, 0xc0, 0xb8, 0xb3, 0x00, 0x09, 0xd8, + 0xd3, 0xd0, 0x97, 0x8a, 0x82, 0x40, 0x28, 0x1a, 0x41, 0x29, 0x1b, 0x3f, 0x27, 0x19, 0x4f, 0x39, 0x2c, 0xdf, 0xdb, + 0xd9, 0xd8, 0xd3, 0xd0, 0xff, 0xff, 0xff, 0x00, 0x09, 0xff, 0xff, 0xff, 0x3f, 0x27, 0x19, 0x41, 0x29, 0x1b, 0x40, + 0x28, 0x1a, 0x40, 0x28, 0x1a, 0xe5, 0xe1, 0xe0, 0x81, 0x71, 0x68, 0x40, 0x28, 0x1a, 0xff, 0xff, 0xff, 0x00, 0x09, + 0xff, 0xff, 0xff, 0x60, 0x4b, 0x40, 0x4f, 0x39, 0x2c, 0x60, 0x4b, 0x40, 0xd8, 0xd3, 0xd0, 0xc0, 0xb8, 0xb3, 0x43, + 0x2b, 0x1d, 0x3f, 0x27, 0x19, 0xff, 0xff, 0xff, 0x00, 0x09, 0xc0, 0xb8, 0xb3, 0xef, 0xed, 0xeb, 0xdf, 0xdb, 0xd9, + 0xea, 0xe7, 0xe6, 0xc0, 0xb8, 0xb3, 0x41, 0x29, 0x1b, 0x41, 0x29, 0x1b, 0x42, 0x2a, 0x1c, 0xff, 0xff, 0xff, 0x00, + 0x09, 0x41, 0x29, 0x1b, 0x81, 0x71, 0x68, 0x80, 0x71, 0x67, 0x5f, 0x4b, 0x3f, 0x40, 0x28, 0x1a, 0x42, 0x2a, 0x1c, + 0x40, 0x28, 0x1a, 0x3f, 0x27, 0x19, 0xc0, 0xb8, 0xb3, ]; pub const WIRE_TO_SURFACE_2_BUFFER: [u8; 629] = [ - 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x68, 0x02, 0x00, 0x00, 0xc1, 0xcc, 0x0c, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc4, 0xcc, 0x56, 0x02, 0x00, 0x00, 0x40, - 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x37, 0x02, 0x00, 0x00, 0x63, 0x02, 0x51, 0x01, 0x45, - 0x00, 0x29, 0x00, 0x66, 0x76, 0x88, 0x99, 0xa9, 0xc6, 0xcc, 0x53, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x05, 0x00, 0x01, 0xff, 0x9a, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x91, 0x02, 0xc6, 0xd9, 0x08, 0x8c, 0x99, 0x11, 0xb3, 0xc9, 0x0f, 0x88, 0x8d, 0x99, 0x1b, - 0x32, 0x36, 0x64, 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xcc, 0x8d, 0x99, 0x1b, 0x32, - 0x36, 0x64, 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xc0, 0x0b, 0x3a, 0x05, 0x02, 0x82, - 0x85, 0x14, 0x52, 0xaa, 0xaf, 0xa0, 0x00, 0x06, 0x4e, 0x0d, 0x4e, 0x87, 0xe8, 0xfa, 0x38, 0x81, - 0x5c, 0x42, 0xf1, 0x11, 0x44, 0x8f, 0x8f, 0xc5, 0xe2, 0xf0, 0x32, 0x20, 0x66, 0x8a, 0x55, 0x55, - 0x00, 0x03, 0x19, 0x29, 0x00, 0x05, 0xee, 0x85, 0x49, 0xe8, 0xaa, 0x77, 0xf5, 0x97, 0x8b, 0xda, - 0x20, 0x80, 0x52, 0x8a, 0x27, 0x0f, 0x77, 0x70, 0x01, 0x4b, 0x54, 0x53, 0x4e, 0x00, 0x78, 0x64, - 0x8a, 0x16, 0x27, 0xe8, 0x5f, 0xbf, 0xff, 0xff, 0x00, 0x05, 0x1e, 0x50, 0xf7, 0xfe, 0x80, 0x02, - 0x87, 0x64, 0x1c, 0xf6, 0x00, 0x0a, 0x3b, 0x43, 0x9f, 0xe8, 0x00, 0x29, 0xe4, 0x86, 0xff, 0x80, - 0x00, 0xa3, 0x68, 0x6f, 0xf0, 0x00, 0x32, 0x23, 0x00, 0x00, 0x09, 0xa1, 0x78, 0xf8, 0x5c, 0x2e, - 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, 0x82, 0xc3, 0xc1, 0x61, 0xe0, 0xb0, 0x01, 0x5e, 0x01, 0xf3, - 0x53, 0x01, 0x0f, 0x23, 0xc0, 0x93, 0x90, 0x4a, 0x06, 0x80, 0x49, 0x4f, 0x42, 0x91, 0x16, 0x1a, - 0x40, 0x14, 0x41, 0x0a, 0x00, 0xa9, 0x24, 0x40, 0x4f, 0x78, 0x9a, 0x28, 0x35, 0x49, 0xef, 0x83, - 0xc4, 0xfb, 0xf8, 0x0f, 0x13, 0xdf, 0x03, 0xda, 0xff, 0xf5, 0x80, 0x74, 0x27, 0xb4, 0x0e, 0x5f, - 0xea, 0x0c, 0x90, 0x00, 0x0a, 0xc1, 0x78, 0xf8, 0x5c, 0x2e, 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, - 0x82, 0xc3, 0xc1, 0x61, 0xe0, 0xb0, 0xf0, 0x58, 0x3d, 0x00, 0x61, 0x90, 0x04, 0x02, 0x02, 0x04, - 0x08, 0x21, 0x90, 0xd8, 0x00, 0x00, 0x3f, 0x62, 0x0a, 0x3a, 0x04, 0x11, 0x08, 0xd0, 0x89, 0x15, - 0xd4, 0x8c, 0x4b, 0x4f, 0x09, 0xa5, 0x2a, 0x10, 0x8d, 0x80, 0x1a, 0xd1, 0xa5, 0x60, 0x0c, 0xe8, - 0x11, 0x41, 0x1b, 0x2b, 0xe1, 0x1f, 0xfe, 0x43, 0xff, 0x81, 0x8f, 0x84, 0x3d, 0x08, 0x1f, 0xf8, - 0x87, 0xa0, 0x9a, 0x85, 0xf0, 0x27, 0x42, 0x7f, 0x01, 0xe6, 0x80, 0xc6, 0xcc, 0xe4, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x01, 0xff, 0x82, 0x00, 0x1d, 0x00, 0x2e, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0xe8, 0x1c, 0xc8, 0x87, 0xe8, 0x0d, 0x01, 0xa0, 0x68, 0x34, 0x34, 0x34, - 0x69, 0xad, 0x6e, 0xeb, 0x6d, 0xb6, 0x80, 0x00, 0x0c, 0x64, 0x1b, 0x0d, 0x0f, 0xa3, 0xe8, 0xfa, - 0x7d, 0x7d, 0xfb, 0xf3, 0xe7, 0xc5, 0xc0, 0xa4, 0x81, 0x02, 0x48, 0x44, 0x6c, 0x09, 0xad, 0xd7, - 0x55, 0x70, 0x00, 0x18, 0x48, 0x08, 0x10, 0x41, 0x04, 0x20, 0x00, 0x15, 0xfd, 0x00, 0x9b, 0xd0, - 0x2d, 0xe8, 0x38, 0x9d, 0x02, 0xf4, 0x0b, 0xc7, 0x05, 0x34, 0x69, 0xbf, 0x78, 0x80, 0xb2, 0xed, - 0xd4, 0x00, 0x61, 0xd0, 0xe8, 0xb2, 0xcb, 0x00, 0x01, 0x01, 0xc2, 0x0b, 0x42, 0xa2, 0xff, 0xe2, - 0x17, 0xff, 0xec, 0x01, 0xfe, 0x48, 0x04, 0xff, 0x14, 0x10, 0xfe, 0x40, 0x09, 0x7f, 0x12, 0x00, - 0xe6, 0x20, 0x0f, 0xd4, 0x80, 0x7e, 0xc0, 0x39, 0xfa, 0x90, 0x0f, 0xb0, 0x0e, 0x3d, 0x48, 0x46, - 0x88, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x1d, 0x66, 0x40, 0x34, 0x02, 0x87, 0xa0, 0x25, 0x9a, 0x01, - 0x21, 0x0a, 0x48, 0x91, 0x49, 0x44, 0x28, 0x88, 0x43, 0xbc, 0x84, 0x2c, 0x42, 0x38, 0x56, 0x0b, - 0x00, 0x00, 0x00, 0x1b, 0xfc, 0x40, 0xe4, 0x1c, 0x87, 0x21, 0xca, 0x95, 0x04, 0x08, 0x10, 0x42, - 0x18, 0xc0, 0x09, 0x68, 0xa5, 0x54, 0x00, 0x61, 0x40, 0xe6, 0x97, 0xcd, 0xee, 0xcf, 0xb8, 0x3f, - 0xf1, 0x23, 0xa8, 0x7f, 0x86, 0x1a, 0x8f, 0xf0, 0x2c, 0x49, 0x88, 0xbe, 0x16, 0xc5, 0xe0, 0xc2, - 0xcc, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x68, 0x02, 0x00, 0x00, 0xc1, 0xcc, 0x0c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc4, 0xcc, 0x56, 0x02, 0x00, 0x00, 0x40, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, + 0x00, 0x37, 0x02, 0x00, 0x00, 0x63, 0x02, 0x51, 0x01, 0x45, 0x00, 0x29, 0x00, 0x66, 0x76, 0x88, 0x99, 0xa9, 0xc6, + 0xcc, 0x53, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x05, 0x00, 0x01, 0xff, 0x9a, 0x00, 0x4a, 0x00, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x91, 0x02, 0xc6, 0xd9, 0x08, 0x8c, 0x99, 0x11, 0xb3, 0xc9, 0x0f, 0x88, 0x8d, 0x99, + 0x1b, 0x32, 0x36, 0x64, 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xcc, 0x8d, 0x99, 0x1b, 0x32, 0x36, 0x64, + 0x6c, 0xc8, 0xd9, 0x91, 0xb3, 0x23, 0x66, 0x46, 0xc0, 0x0b, 0x3a, 0x05, 0x02, 0x82, 0x85, 0x14, 0x52, 0xaa, 0xaf, + 0xa0, 0x00, 0x06, 0x4e, 0x0d, 0x4e, 0x87, 0xe8, 0xfa, 0x38, 0x81, 0x5c, 0x42, 0xf1, 0x11, 0x44, 0x8f, 0x8f, 0xc5, + 0xe2, 0xf0, 0x32, 0x20, 0x66, 0x8a, 0x55, 0x55, 0x00, 0x03, 0x19, 0x29, 0x00, 0x05, 0xee, 0x85, 0x49, 0xe8, 0xaa, + 0x77, 0xf5, 0x97, 0x8b, 0xda, 0x20, 0x80, 0x52, 0x8a, 0x27, 0x0f, 0x77, 0x70, 0x01, 0x4b, 0x54, 0x53, 0x4e, 0x00, + 0x78, 0x64, 0x8a, 0x16, 0x27, 0xe8, 0x5f, 0xbf, 0xff, 0xff, 0x00, 0x05, 0x1e, 0x50, 0xf7, 0xfe, 0x80, 0x02, 0x87, + 0x64, 0x1c, 0xf6, 0x00, 0x0a, 0x3b, 0x43, 0x9f, 0xe8, 0x00, 0x29, 0xe4, 0x86, 0xff, 0x80, 0x00, 0xa3, 0x68, 0x6f, + 0xf0, 0x00, 0x32, 0x23, 0x00, 0x00, 0x09, 0xa1, 0x78, 0xf8, 0x5c, 0x2e, 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, 0x82, + 0xc3, 0xc1, 0x61, 0xe0, 0xb0, 0x01, 0x5e, 0x01, 0xf3, 0x53, 0x01, 0x0f, 0x23, 0xc0, 0x93, 0x90, 0x4a, 0x06, 0x80, + 0x49, 0x4f, 0x42, 0x91, 0x16, 0x1a, 0x40, 0x14, 0x41, 0x0a, 0x00, 0xa9, 0x24, 0x40, 0x4f, 0x78, 0x9a, 0x28, 0x35, + 0x49, 0xef, 0x83, 0xc4, 0xfb, 0xf8, 0x0f, 0x13, 0xdf, 0x03, 0xda, 0xff, 0xf5, 0x80, 0x74, 0x27, 0xb4, 0x0e, 0x5f, + 0xea, 0x0c, 0x90, 0x00, 0x0a, 0xc1, 0x78, 0xf8, 0x5c, 0x2e, 0x1e, 0x1e, 0x0b, 0x0f, 0x05, 0x87, 0x82, 0xc3, 0xc1, + 0x61, 0xe0, 0xb0, 0xf0, 0x58, 0x3d, 0x00, 0x61, 0x90, 0x04, 0x02, 0x02, 0x04, 0x08, 0x21, 0x90, 0xd8, 0x00, 0x00, + 0x3f, 0x62, 0x0a, 0x3a, 0x04, 0x11, 0x08, 0xd0, 0x89, 0x15, 0xd4, 0x8c, 0x4b, 0x4f, 0x09, 0xa5, 0x2a, 0x10, 0x8d, + 0x80, 0x1a, 0xd1, 0xa5, 0x60, 0x0c, 0xe8, 0x11, 0x41, 0x1b, 0x2b, 0xe1, 0x1f, 0xfe, 0x43, 0xff, 0x81, 0x8f, 0x84, + 0x3d, 0x08, 0x1f, 0xf8, 0x87, 0xa0, 0x9a, 0x85, 0xf0, 0x27, 0x42, 0x7f, 0x01, 0xe6, 0x80, 0xc6, 0xcc, 0xe4, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x01, 0xff, 0x82, 0x00, 0x1d, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xe8, 0x1c, 0xc8, 0x87, 0xe8, 0x0d, 0x01, 0xa0, 0x68, 0x34, 0x34, 0x34, 0x69, 0xad, 0x6e, 0xeb, 0x6d, + 0xb6, 0x80, 0x00, 0x0c, 0x64, 0x1b, 0x0d, 0x0f, 0xa3, 0xe8, 0xfa, 0x7d, 0x7d, 0xfb, 0xf3, 0xe7, 0xc5, 0xc0, 0xa4, + 0x81, 0x02, 0x48, 0x44, 0x6c, 0x09, 0xad, 0xd7, 0x55, 0x70, 0x00, 0x18, 0x48, 0x08, 0x10, 0x41, 0x04, 0x20, 0x00, + 0x15, 0xfd, 0x00, 0x9b, 0xd0, 0x2d, 0xe8, 0x38, 0x9d, 0x02, 0xf4, 0x0b, 0xc7, 0x05, 0x34, 0x69, 0xbf, 0x78, 0x80, + 0xb2, 0xed, 0xd4, 0x00, 0x61, 0xd0, 0xe8, 0xb2, 0xcb, 0x00, 0x01, 0x01, 0xc2, 0x0b, 0x42, 0xa2, 0xff, 0xe2, 0x17, + 0xff, 0xec, 0x01, 0xfe, 0x48, 0x04, 0xff, 0x14, 0x10, 0xfe, 0x40, 0x09, 0x7f, 0x12, 0x00, 0xe6, 0x20, 0x0f, 0xd4, + 0x80, 0x7e, 0xc0, 0x39, 0xfa, 0x90, 0x0f, 0xb0, 0x0e, 0x3d, 0x48, 0x46, 0x88, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x1d, + 0x66, 0x40, 0x34, 0x02, 0x87, 0xa0, 0x25, 0x9a, 0x01, 0x21, 0x0a, 0x48, 0x91, 0x49, 0x44, 0x28, 0x88, 0x43, 0xbc, + 0x84, 0x2c, 0x42, 0x38, 0x56, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0xfc, 0x40, 0xe4, 0x1c, 0x87, 0x21, 0xca, 0x95, 0x04, + 0x08, 0x10, 0x42, 0x18, 0xc0, 0x09, 0x68, 0xa5, 0x54, 0x00, 0x61, 0x40, 0xe6, 0x97, 0xcd, 0xee, 0xcf, 0xb8, 0x3f, + 0xf1, 0x23, 0xa8, 0x7f, 0x86, 0x1a, 0x8f, 0xf0, 0x2c, 0x49, 0x88, 0xbe, 0x16, 0xc5, 0xe0, 0xc2, 0xcc, 0x06, 0x00, + 0x00, 0x00, ]; pub const DELETE_ENCODING_CONTEXT_BUFFER: [u8; 6] = [0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; @@ -69,49 +61,43 @@ pub const SOLID_FILL_BUFFER: [u8; 16] = [ ]; pub const SURFACE_TO_SURFACE_BUFFER: [u8; 18] = [ - 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x3c, 0x00, 0xa4, 0x02, 0x94, 0x00, 0x01, 0x00, 0x80, 0x00, - 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x3c, 0x00, 0xa4, 0x02, 0x94, 0x00, 0x01, 0x00, 0x80, 0x00, 0x3c, 0x00, ]; pub const SURFACE_TO_CACHE_BUFFER: [u8; 20] = [ - 0x00, 0x00, 0xb7, 0x7f, 0xa3, 0xa6, 0xda, 0x86, 0x3d, 0x11, 0x0e, 0x00, 0x80, 0x02, 0x00, 0x00, - 0xc0, 0x02, 0x40, 0x00, + 0x00, 0x00, 0xb7, 0x7f, 0xa3, 0xa6, 0xda, 0x86, 0x3d, 0x11, 0x0e, 0x00, 0x80, 0x02, 0x00, 0x00, 0xc0, 0x02, 0x40, + 0x00, ]; -pub const CACHE_TO_SURFACE_BUFFER: [u8; 10] = - [0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x40, 0x01]; +pub const CACHE_TO_SURFACE_BUFFER: [u8; 10] = [0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x40, 0x01]; pub const CREATE_SURFACE_BUFFER: [u8; 7] = [0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x21]; pub const DELETE_SURFACE_BUFFER: [u8; 2] = [0x00, 0x00]; pub const RESET_GRAPHICS_BUFFER: [u8; 332] = [ - 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; -pub const MAP_SURFACE_TO_OUTPUT_BUFFER: [u8; 12] = [ - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2, 0x00, 0x00, 0x00, -]; +pub const MAP_SURFACE_TO_OUTPUT_BUFFER: [u8; 12] = + [0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2, 0x00, 0x00, 0x00]; pub const EVICT_CACHE_ENTRY_BUFFER: [u8; 2] = [0x00, 0x00]; @@ -119,132 +105,109 @@ pub const START_FRAME_BUFFER: [u8; 8] = [0xf7, 0xe8, 0x9b, 0x5, 0x05, 0x00, 0x00 pub const END_FRAME_BUFFER: [u8; 4] = [0x01, 0x00, 0x00, 0x00]; -pub const CAPABILITIES_CONFIRM_BUFFER: [u8; 12] = [ - 0x02, 0x05, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, -]; +pub const CAPABILITIES_CONFIRM_BUFFER: [u8; 12] = + [0x02, 0x05, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00]; pub const CAPABILITIES_ADVERTISE_BUFFER: [u8; 122] = [ - 0x9, 0x0, 0x4, 0x0, 0x8, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x1, 0x8, 0x0, 0x4, - 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x2, 0x0, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, - 0x0, 0x1, 0xa, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x3, - 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, - 0x20, 0x0, 0x0, 0x0, 0x2, 0x5, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x6, + 0x9, 0x0, 0x4, 0x0, 0x8, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x5, 0x1, 0x8, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, + 0x0, 0x0, 0x0, 0x2, 0x0, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x1, 0xa, 0x0, 0x10, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xa, 0x0, 0x4, 0x0, + 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x3, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x0, + 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x2, 0x5, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x6, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, ]; -pub const FRAME_ACKNOWLEDGE_BUFFER: [u8; 12] = - [0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0]; +pub const FRAME_ACKNOWLEDGE_BUFFER: [u8; 12] = [0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0]; pub const CACHE_IMPORT_REPLY_BUFFER: [u8; 1840] = [ - 0x97, 0x3, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x0, 0xa, - 0x0, 0xb, 0x0, 0xc, 0x0, 0xd, 0x0, 0xe, 0x0, 0xf, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, - 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1a, 0x0, 0x1b, 0x0, - 0x1c, 0x0, 0x1d, 0x0, 0x1e, 0x0, 0x1f, 0x0, 0x20, 0x0, 0x21, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, - 0x0, 0x25, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x0, 0x2c, 0x0, - 0x2d, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, - 0x0, 0x36, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0x3b, 0x0, 0x3c, 0x0, 0x3d, 0x0, - 0x3e, 0x0, 0x3f, 0x0, 0x40, 0x0, 0x41, 0x0, 0x42, 0x0, 0x43, 0x0, 0x44, 0x0, 0x45, 0x0, 0x46, - 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4a, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x4e, 0x0, - 0x4f, 0x0, 0x50, 0x0, 0x51, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, 0x56, 0x0, 0x57, - 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0x5b, 0x0, 0x5c, 0x0, 0x5d, 0x0, 0x5e, 0x0, 0x5f, 0x0, - 0x60, 0x0, 0x61, 0x0, 0x62, 0x0, 0x63, 0x0, 0x64, 0x0, 0x65, 0x0, 0x66, 0x0, 0x67, 0x0, 0x68, - 0x0, 0x69, 0x0, 0x6a, 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x6d, 0x0, 0x6e, 0x0, 0x6f, 0x0, 0x70, 0x0, - 0x71, 0x0, 0x72, 0x0, 0x73, 0x0, 0x74, 0x0, 0x75, 0x0, 0x76, 0x0, 0x77, 0x0, 0x78, 0x0, 0x79, - 0x0, 0x7a, 0x0, 0x7b, 0x0, 0x7c, 0x0, 0x7d, 0x0, 0x7e, 0x0, 0x7f, 0x0, 0x80, 0x0, 0x81, 0x0, - 0x82, 0x0, 0x83, 0x0, 0x84, 0x0, 0x85, 0x0, 0x86, 0x0, 0x87, 0x0, 0x88, 0x0, 0x89, 0x0, 0x8a, - 0x0, 0x8b, 0x0, 0x8c, 0x0, 0x8d, 0x0, 0x8e, 0x0, 0x8f, 0x0, 0x90, 0x0, 0x91, 0x0, 0x92, 0x0, - 0x93, 0x0, 0x94, 0x0, 0x95, 0x0, 0x96, 0x0, 0x97, 0x0, 0x98, 0x0, 0x99, 0x0, 0x9a, 0x0, 0x9b, - 0x0, 0x9c, 0x0, 0x9d, 0x0, 0x9e, 0x0, 0x9f, 0x0, 0xa0, 0x0, 0xa1, 0x0, 0xa2, 0x0, 0xa3, 0x0, - 0xa4, 0x0, 0xa5, 0x0, 0xa6, 0x0, 0xa7, 0x0, 0xa8, 0x0, 0xa9, 0x0, 0xaa, 0x0, 0xab, 0x0, 0xac, - 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0xb1, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, - 0xb5, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x0, 0xb9, 0x0, 0xba, 0x0, 0xbb, 0x0, 0xbc, 0x0, 0xbd, - 0x0, 0xbe, 0x0, 0xbf, 0x0, 0xc0, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0xc5, 0x0, - 0xc6, 0x0, 0xc7, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0xca, 0x0, 0xcb, 0x0, 0xcc, 0x0, 0xcd, 0x0, 0xce, - 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x0, - 0xd7, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0xdb, 0x0, 0xdc, 0x0, 0xdd, 0x0, 0xde, 0x0, 0xdf, - 0x0, 0xe0, 0x0, 0xe1, 0x0, 0xe2, 0x0, 0xe3, 0x0, 0xe4, 0x0, 0xe5, 0x0, 0xe6, 0x0, 0xe7, 0x0, - 0xe8, 0x0, 0xe9, 0x0, 0xea, 0x0, 0xeb, 0x0, 0xec, 0x0, 0xed, 0x0, 0xee, 0x0, 0xef, 0x0, 0xf0, - 0x0, 0xf1, 0x0, 0xf2, 0x0, 0xf3, 0x0, 0xf4, 0x0, 0xf5, 0x0, 0xf6, 0x0, 0xf7, 0x0, 0xf8, 0x0, - 0xf9, 0x0, 0xfa, 0x0, 0xfb, 0x0, 0xfc, 0x0, 0xfd, 0x0, 0xfe, 0x0, 0xff, 0x0, 0x0, 0x1, 0x1, - 0x1, 0x2, 0x1, 0x3, 0x1, 0x4, 0x1, 0x5, 0x1, 0x6, 0x1, 0x7, 0x1, 0x8, 0x1, 0x9, 0x1, 0xa, 0x1, - 0xb, 0x1, 0xc, 0x1, 0xd, 0x1, 0xe, 0x1, 0xf, 0x1, 0x10, 0x1, 0x11, 0x1, 0x12, 0x1, 0x13, 0x1, - 0x14, 0x1, 0x15, 0x1, 0x16, 0x1, 0x17, 0x1, 0x18, 0x1, 0x19, 0x1, 0x1a, 0x1, 0x1b, 0x1, 0x1c, - 0x1, 0x1d, 0x1, 0x1e, 0x1, 0x1f, 0x1, 0x20, 0x1, 0x21, 0x1, 0x22, 0x1, 0x23, 0x1, 0x24, 0x1, - 0x25, 0x1, 0x26, 0x1, 0x27, 0x1, 0x28, 0x1, 0x29, 0x1, 0x2a, 0x1, 0x2b, 0x1, 0x2c, 0x1, 0x2d, - 0x1, 0x2e, 0x1, 0x2f, 0x1, 0x30, 0x1, 0x31, 0x1, 0x32, 0x1, 0x33, 0x1, 0x34, 0x1, 0x35, 0x1, - 0x36, 0x1, 0x37, 0x1, 0x38, 0x1, 0x39, 0x1, 0x3a, 0x1, 0x3b, 0x1, 0x3c, 0x1, 0x3d, 0x1, 0x3e, - 0x1, 0x3f, 0x1, 0x40, 0x1, 0x41, 0x1, 0x42, 0x1, 0x43, 0x1, 0x44, 0x1, 0x45, 0x1, 0x46, 0x1, - 0x47, 0x1, 0x48, 0x1, 0x49, 0x1, 0x4a, 0x1, 0x4b, 0x1, 0x4c, 0x1, 0x4d, 0x1, 0x4e, 0x1, 0x4f, - 0x1, 0x50, 0x1, 0x51, 0x1, 0x52, 0x1, 0x53, 0x1, 0x54, 0x1, 0x55, 0x1, 0x56, 0x1, 0x57, 0x1, - 0x58, 0x1, 0x59, 0x1, 0x5a, 0x1, 0x5b, 0x1, 0x5c, 0x1, 0x5d, 0x1, 0x5e, 0x1, 0x5f, 0x1, 0x60, - 0x1, 0x61, 0x1, 0x62, 0x1, 0x63, 0x1, 0x64, 0x1, 0x65, 0x1, 0x66, 0x1, 0x67, 0x1, 0x68, 0x1, - 0x69, 0x1, 0x6a, 0x1, 0x6b, 0x1, 0x6c, 0x1, 0x6d, 0x1, 0x6e, 0x1, 0x6f, 0x1, 0x70, 0x1, 0x71, - 0x1, 0x72, 0x1, 0x73, 0x1, 0x74, 0x1, 0x75, 0x1, 0x76, 0x1, 0x77, 0x1, 0x78, 0x1, 0x79, 0x1, - 0x7a, 0x1, 0x7b, 0x1, 0x7c, 0x1, 0x7d, 0x1, 0x7e, 0x1, 0x7f, 0x1, 0x80, 0x1, 0x81, 0x1, 0x82, - 0x1, 0x83, 0x1, 0x84, 0x1, 0x85, 0x1, 0x86, 0x1, 0x87, 0x1, 0x88, 0x1, 0x89, 0x1, 0x8a, 0x1, - 0x8b, 0x1, 0x8c, 0x1, 0x8d, 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x1, 0x91, 0x1, 0x92, 0x1, 0x93, - 0x1, 0x94, 0x1, 0x95, 0x1, 0x96, 0x1, 0x97, 0x1, 0x98, 0x1, 0x99, 0x1, 0x9a, 0x1, 0x9b, 0x1, - 0x9c, 0x1, 0x9d, 0x1, 0x9e, 0x1, 0x9f, 0x1, 0xa0, 0x1, 0xa1, 0x1, 0xa2, 0x1, 0xa3, 0x1, 0xa4, - 0x1, 0xa5, 0x1, 0xa6, 0x1, 0xa7, 0x1, 0xa8, 0x1, 0xa9, 0x1, 0xaa, 0x1, 0xab, 0x1, 0xac, 0x1, - 0xad, 0x1, 0xae, 0x1, 0xaf, 0x1, 0xb0, 0x1, 0xb1, 0x1, 0xb2, 0x1, 0xb3, 0x1, 0xb4, 0x1, 0xb5, - 0x1, 0xb6, 0x1, 0xb7, 0x1, 0xb8, 0x1, 0xb9, 0x1, 0xba, 0x1, 0xbb, 0x1, 0xbc, 0x1, 0xbd, 0x1, - 0xbe, 0x1, 0xbf, 0x1, 0xc0, 0x1, 0xc1, 0x1, 0xc2, 0x1, 0xc3, 0x1, 0xc4, 0x1, 0xc5, 0x1, 0xc6, - 0x1, 0xc7, 0x1, 0xc8, 0x1, 0xc9, 0x1, 0xca, 0x1, 0xcb, 0x1, 0xcc, 0x1, 0xcd, 0x1, 0xce, 0x1, - 0xcf, 0x1, 0xd0, 0x1, 0xd1, 0x1, 0xd2, 0x1, 0xd3, 0x1, 0xd4, 0x1, 0xd5, 0x1, 0xd6, 0x1, 0xd7, - 0x1, 0xd8, 0x1, 0xd9, 0x1, 0xda, 0x1, 0xdb, 0x1, 0xdc, 0x1, 0xdd, 0x1, 0xde, 0x1, 0xdf, 0x1, - 0xe0, 0x1, 0xe1, 0x1, 0xe2, 0x1, 0xe3, 0x1, 0xe4, 0x1, 0xe5, 0x1, 0xe6, 0x1, 0xe7, 0x1, 0xe8, - 0x1, 0xe9, 0x1, 0xea, 0x1, 0xeb, 0x1, 0xec, 0x1, 0xed, 0x1, 0xee, 0x1, 0xef, 0x1, 0xf0, 0x1, - 0xf1, 0x1, 0xf2, 0x1, 0xf3, 0x1, 0xf4, 0x1, 0xf5, 0x1, 0xf6, 0x1, 0xf7, 0x1, 0xf8, 0x1, 0xf9, - 0x1, 0xfa, 0x1, 0xfb, 0x1, 0xfc, 0x1, 0xfd, 0x1, 0xfe, 0x1, 0xff, 0x1, 0x0, 0x2, 0x1, 0x2, 0x2, - 0x2, 0x3, 0x2, 0x4, 0x2, 0x5, 0x2, 0x6, 0x2, 0x7, 0x2, 0x8, 0x2, 0x9, 0x2, 0xa, 0x2, 0xb, 0x2, - 0xc, 0x2, 0xd, 0x2, 0xe, 0x2, 0xf, 0x2, 0x10, 0x2, 0x11, 0x2, 0x12, 0x2, 0x13, 0x2, 0x14, 0x2, - 0x15, 0x2, 0x16, 0x2, 0x17, 0x2, 0x18, 0x2, 0x19, 0x2, 0x1a, 0x2, 0x1b, 0x2, 0x1c, 0x2, 0x1d, - 0x2, 0x1e, 0x2, 0x1f, 0x2, 0x20, 0x2, 0x21, 0x2, 0x22, 0x2, 0x23, 0x2, 0x24, 0x2, 0x25, 0x2, - 0x26, 0x2, 0x27, 0x2, 0x28, 0x2, 0x29, 0x2, 0x2a, 0x2, 0x2b, 0x2, 0x2c, 0x2, 0x2d, 0x2, 0x2e, - 0x2, 0x2f, 0x2, 0x30, 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x35, 0x2, 0x36, 0x2, - 0x37, 0x2, 0x38, 0x2, 0x39, 0x2, 0x3a, 0x2, 0x3b, 0x2, 0x3c, 0x2, 0x3d, 0x2, 0x3e, 0x2, 0x3f, - 0x2, 0x40, 0x2, 0x41, 0x2, 0x42, 0x2, 0x43, 0x2, 0x44, 0x2, 0x45, 0x2, 0x46, 0x2, 0x47, 0x2, - 0x48, 0x2, 0x49, 0x2, 0x4a, 0x2, 0x4b, 0x2, 0x4c, 0x2, 0x4d, 0x2, 0x4e, 0x2, 0x4f, 0x2, 0x50, - 0x2, 0x51, 0x2, 0x52, 0x2, 0x53, 0x2, 0x54, 0x2, 0x55, 0x2, 0x56, 0x2, 0x57, 0x2, 0x58, 0x2, - 0x59, 0x2, 0x5a, 0x2, 0x5b, 0x2, 0x5c, 0x2, 0x5d, 0x2, 0x5e, 0x2, 0x5f, 0x2, 0x60, 0x2, 0x61, - 0x2, 0x62, 0x2, 0x63, 0x2, 0x64, 0x2, 0x65, 0x2, 0x66, 0x2, 0x67, 0x2, 0x68, 0x2, 0x69, 0x2, - 0x6a, 0x2, 0x6b, 0x2, 0x6c, 0x2, 0x6d, 0x2, 0x6e, 0x2, 0x6f, 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, - 0x2, 0x73, 0x2, 0x74, 0x2, 0x75, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, 0x7a, 0x2, - 0x7b, 0x2, 0x7c, 0x2, 0x7d, 0x2, 0x7e, 0x2, 0x7f, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, - 0x2, 0x84, 0x2, 0x85, 0x2, 0x86, 0x2, 0x87, 0x2, 0x88, 0x2, 0x89, 0x2, 0x8a, 0x2, 0x8b, 0x2, - 0x8c, 0x2, 0x8d, 0x2, 0x8e, 0x2, 0x8f, 0x2, 0x90, 0x2, 0x91, 0x2, 0x92, 0x2, 0x93, 0x2, 0x94, - 0x2, 0x95, 0x2, 0x96, 0x2, 0x97, 0x2, 0x98, 0x2, 0x99, 0x2, 0x9a, 0x2, 0x9b, 0x2, 0x9c, 0x2, - 0x9d, 0x2, 0x9e, 0x2, 0x9f, 0x2, 0xa0, 0x2, 0xa1, 0x2, 0xa2, 0x2, 0xa3, 0x2, 0xa4, 0x2, 0xa5, - 0x2, 0xa6, 0x2, 0xa7, 0x2, 0xa8, 0x2, 0xa9, 0x2, 0xaa, 0x2, 0xab, 0x2, 0xac, 0x2, 0xad, 0x2, - 0xae, 0x2, 0xaf, 0x2, 0xb0, 0x2, 0xb1, 0x2, 0xb2, 0x2, 0xb3, 0x2, 0xb4, 0x2, 0xb5, 0x2, 0xb6, - 0x2, 0xb7, 0x2, 0xb8, 0x2, 0xb9, 0x2, 0xba, 0x2, 0xbb, 0x2, 0xbc, 0x2, 0xbd, 0x2, 0xbe, 0x2, - 0xbf, 0x2, 0xc0, 0x2, 0xc1, 0x2, 0xc2, 0x2, 0xc3, 0x2, 0xc4, 0x2, 0xc5, 0x2, 0xc6, 0x2, 0xc7, - 0x2, 0xc8, 0x2, 0xc9, 0x2, 0xca, 0x2, 0xcb, 0x2, 0xcc, 0x2, 0xcd, 0x2, 0xce, 0x2, 0xcf, 0x2, - 0xd0, 0x2, 0xd1, 0x2, 0xd2, 0x2, 0xd3, 0x2, 0xd4, 0x2, 0xd5, 0x2, 0xd6, 0x2, 0xd7, 0x2, 0xd8, - 0x2, 0xd9, 0x2, 0xda, 0x2, 0xdb, 0x2, 0xdc, 0x2, 0xdd, 0x2, 0xde, 0x2, 0xdf, 0x2, 0xe0, 0x2, - 0xe1, 0x2, 0xe2, 0x2, 0xe3, 0x2, 0xe4, 0x2, 0xe5, 0x2, 0xe6, 0x2, 0xe7, 0x2, 0xe8, 0x2, 0xe9, - 0x2, 0xea, 0x2, 0xeb, 0x2, 0xec, 0x2, 0xed, 0x2, 0xee, 0x2, 0xef, 0x2, 0xf0, 0x2, 0xf1, 0x2, - 0xf2, 0x2, 0xf3, 0x2, 0xf4, 0x2, 0xf5, 0x2, 0xf6, 0x2, 0xf7, 0x2, 0xf8, 0x2, 0xf9, 0x2, 0xfa, - 0x2, 0xfb, 0x2, 0xfc, 0x2, 0xfd, 0x2, 0xfe, 0x2, 0xff, 0x2, 0x0, 0x3, 0x1, 0x3, 0x2, 0x3, 0x3, - 0x3, 0x4, 0x3, 0x5, 0x3, 0x6, 0x3, 0x7, 0x3, 0x8, 0x3, 0x9, 0x3, 0xa, 0x3, 0xb, 0x3, 0xc, 0x3, - 0xd, 0x3, 0xe, 0x3, 0xf, 0x3, 0x10, 0x3, 0x11, 0x3, 0x12, 0x3, 0x13, 0x3, 0x14, 0x3, 0x15, 0x3, - 0x16, 0x3, 0x17, 0x3, 0x18, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1e, - 0x3, 0x1f, 0x3, 0x20, 0x3, 0x21, 0x3, 0x22, 0x3, 0x23, 0x3, 0x24, 0x3, 0x25, 0x3, 0x26, 0x3, - 0x27, 0x3, 0x28, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2f, - 0x3, 0x30, 0x3, 0x31, 0x3, 0x32, 0x3, 0x33, 0x3, 0x34, 0x3, 0x35, 0x3, 0x36, 0x3, 0x37, 0x3, - 0x38, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x40, - 0x3, 0x41, 0x3, 0x42, 0x3, 0x43, 0x3, 0x44, 0x3, 0x45, 0x3, 0x46, 0x3, 0x47, 0x3, 0x48, 0x3, - 0x49, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x51, - 0x3, 0x52, 0x3, 0x53, 0x3, 0x54, 0x3, 0x55, 0x3, 0x56, 0x3, 0x57, 0x3, 0x58, 0x3, 0x59, 0x3, - 0x5a, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x61, 0x3, 0x62, - 0x3, 0x63, 0x3, 0x64, 0x3, 0x65, 0x3, 0x66, 0x3, 0x67, 0x3, 0x68, 0x3, 0x69, 0x3, 0x6a, 0x3, - 0x6b, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x70, 0x3, 0x71, 0x3, 0x72, 0x3, 0x73, - 0x3, 0x74, 0x3, 0x75, 0x3, 0x76, 0x3, 0x77, 0x3, 0x78, 0x3, 0x79, 0x3, 0x7a, 0x3, 0x7b, 0x3, - 0x7c, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x80, 0x3, 0x81, 0x3, 0x82, 0x3, 0x83, 0x3, 0x84, - 0x3, 0x85, 0x3, 0x86, 0x3, 0x87, 0x3, 0x88, 0x3, 0x89, 0x3, 0x8a, 0x3, 0x8b, 0x3, 0x8c, 0x3, - 0x8d, 0x3, 0x8e, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x91, 0x3, 0x92, 0x3, 0x93, 0x3, 0x94, 0x3, 0x95, - 0x3, 0x96, 0x3, 0x97, 0x3, 0x98, 0x3, + 0x97, 0x3, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x0, 0xa, 0x0, 0xb, 0x0, 0xc, + 0x0, 0xd, 0x0, 0xe, 0x0, 0xf, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x13, 0x0, 0x14, 0x0, 0x15, 0x0, 0x16, 0x0, + 0x17, 0x0, 0x18, 0x0, 0x19, 0x0, 0x1a, 0x0, 0x1b, 0x0, 0x1c, 0x0, 0x1d, 0x0, 0x1e, 0x0, 0x1f, 0x0, 0x20, 0x0, 0x21, + 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, 0x0, 0x25, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x0, + 0x2c, 0x0, 0x2d, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0x30, 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, + 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0x3b, 0x0, 0x3c, 0x0, 0x3d, 0x0, 0x3e, 0x0, 0x3f, 0x0, 0x40, 0x0, + 0x41, 0x0, 0x42, 0x0, 0x43, 0x0, 0x44, 0x0, 0x45, 0x0, 0x46, 0x0, 0x47, 0x0, 0x48, 0x0, 0x49, 0x0, 0x4a, 0x0, 0x4b, + 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x4e, 0x0, 0x4f, 0x0, 0x50, 0x0, 0x51, 0x0, 0x52, 0x0, 0x53, 0x0, 0x54, 0x0, 0x55, 0x0, + 0x56, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0x5b, 0x0, 0x5c, 0x0, 0x5d, 0x0, 0x5e, 0x0, 0x5f, 0x0, 0x60, + 0x0, 0x61, 0x0, 0x62, 0x0, 0x63, 0x0, 0x64, 0x0, 0x65, 0x0, 0x66, 0x0, 0x67, 0x0, 0x68, 0x0, 0x69, 0x0, 0x6a, 0x0, + 0x6b, 0x0, 0x6c, 0x0, 0x6d, 0x0, 0x6e, 0x0, 0x6f, 0x0, 0x70, 0x0, 0x71, 0x0, 0x72, 0x0, 0x73, 0x0, 0x74, 0x0, 0x75, + 0x0, 0x76, 0x0, 0x77, 0x0, 0x78, 0x0, 0x79, 0x0, 0x7a, 0x0, 0x7b, 0x0, 0x7c, 0x0, 0x7d, 0x0, 0x7e, 0x0, 0x7f, 0x0, + 0x80, 0x0, 0x81, 0x0, 0x82, 0x0, 0x83, 0x0, 0x84, 0x0, 0x85, 0x0, 0x86, 0x0, 0x87, 0x0, 0x88, 0x0, 0x89, 0x0, 0x8a, + 0x0, 0x8b, 0x0, 0x8c, 0x0, 0x8d, 0x0, 0x8e, 0x0, 0x8f, 0x0, 0x90, 0x0, 0x91, 0x0, 0x92, 0x0, 0x93, 0x0, 0x94, 0x0, + 0x95, 0x0, 0x96, 0x0, 0x97, 0x0, 0x98, 0x0, 0x99, 0x0, 0x9a, 0x0, 0x9b, 0x0, 0x9c, 0x0, 0x9d, 0x0, 0x9e, 0x0, 0x9f, + 0x0, 0xa0, 0x0, 0xa1, 0x0, 0xa2, 0x0, 0xa3, 0x0, 0xa4, 0x0, 0xa5, 0x0, 0xa6, 0x0, 0xa7, 0x0, 0xa8, 0x0, 0xa9, 0x0, + 0xaa, 0x0, 0xab, 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0xb1, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, + 0x0, 0xb5, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x0, 0xb9, 0x0, 0xba, 0x0, 0xbb, 0x0, 0xbc, 0x0, 0xbd, 0x0, 0xbe, 0x0, + 0xbf, 0x0, 0xc0, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0xc5, 0x0, 0xc6, 0x0, 0xc7, 0x0, 0xc8, 0x0, 0xc9, + 0x0, 0xca, 0x0, 0xcb, 0x0, 0xcc, 0x0, 0xcd, 0x0, 0xce, 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, 0x0, 0xd3, 0x0, + 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x0, 0xd7, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0xdb, 0x0, 0xdc, 0x0, 0xdd, 0x0, 0xde, + 0x0, 0xdf, 0x0, 0xe0, 0x0, 0xe1, 0x0, 0xe2, 0x0, 0xe3, 0x0, 0xe4, 0x0, 0xe5, 0x0, 0xe6, 0x0, 0xe7, 0x0, 0xe8, 0x0, + 0xe9, 0x0, 0xea, 0x0, 0xeb, 0x0, 0xec, 0x0, 0xed, 0x0, 0xee, 0x0, 0xef, 0x0, 0xf0, 0x0, 0xf1, 0x0, 0xf2, 0x0, 0xf3, + 0x0, 0xf4, 0x0, 0xf5, 0x0, 0xf6, 0x0, 0xf7, 0x0, 0xf8, 0x0, 0xf9, 0x0, 0xfa, 0x0, 0xfb, 0x0, 0xfc, 0x0, 0xfd, 0x0, + 0xfe, 0x0, 0xff, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x4, 0x1, 0x5, 0x1, 0x6, 0x1, 0x7, 0x1, 0x8, 0x1, + 0x9, 0x1, 0xa, 0x1, 0xb, 0x1, 0xc, 0x1, 0xd, 0x1, 0xe, 0x1, 0xf, 0x1, 0x10, 0x1, 0x11, 0x1, 0x12, 0x1, 0x13, 0x1, + 0x14, 0x1, 0x15, 0x1, 0x16, 0x1, 0x17, 0x1, 0x18, 0x1, 0x19, 0x1, 0x1a, 0x1, 0x1b, 0x1, 0x1c, 0x1, 0x1d, 0x1, 0x1e, + 0x1, 0x1f, 0x1, 0x20, 0x1, 0x21, 0x1, 0x22, 0x1, 0x23, 0x1, 0x24, 0x1, 0x25, 0x1, 0x26, 0x1, 0x27, 0x1, 0x28, 0x1, + 0x29, 0x1, 0x2a, 0x1, 0x2b, 0x1, 0x2c, 0x1, 0x2d, 0x1, 0x2e, 0x1, 0x2f, 0x1, 0x30, 0x1, 0x31, 0x1, 0x32, 0x1, 0x33, + 0x1, 0x34, 0x1, 0x35, 0x1, 0x36, 0x1, 0x37, 0x1, 0x38, 0x1, 0x39, 0x1, 0x3a, 0x1, 0x3b, 0x1, 0x3c, 0x1, 0x3d, 0x1, + 0x3e, 0x1, 0x3f, 0x1, 0x40, 0x1, 0x41, 0x1, 0x42, 0x1, 0x43, 0x1, 0x44, 0x1, 0x45, 0x1, 0x46, 0x1, 0x47, 0x1, 0x48, + 0x1, 0x49, 0x1, 0x4a, 0x1, 0x4b, 0x1, 0x4c, 0x1, 0x4d, 0x1, 0x4e, 0x1, 0x4f, 0x1, 0x50, 0x1, 0x51, 0x1, 0x52, 0x1, + 0x53, 0x1, 0x54, 0x1, 0x55, 0x1, 0x56, 0x1, 0x57, 0x1, 0x58, 0x1, 0x59, 0x1, 0x5a, 0x1, 0x5b, 0x1, 0x5c, 0x1, 0x5d, + 0x1, 0x5e, 0x1, 0x5f, 0x1, 0x60, 0x1, 0x61, 0x1, 0x62, 0x1, 0x63, 0x1, 0x64, 0x1, 0x65, 0x1, 0x66, 0x1, 0x67, 0x1, + 0x68, 0x1, 0x69, 0x1, 0x6a, 0x1, 0x6b, 0x1, 0x6c, 0x1, 0x6d, 0x1, 0x6e, 0x1, 0x6f, 0x1, 0x70, 0x1, 0x71, 0x1, 0x72, + 0x1, 0x73, 0x1, 0x74, 0x1, 0x75, 0x1, 0x76, 0x1, 0x77, 0x1, 0x78, 0x1, 0x79, 0x1, 0x7a, 0x1, 0x7b, 0x1, 0x7c, 0x1, + 0x7d, 0x1, 0x7e, 0x1, 0x7f, 0x1, 0x80, 0x1, 0x81, 0x1, 0x82, 0x1, 0x83, 0x1, 0x84, 0x1, 0x85, 0x1, 0x86, 0x1, 0x87, + 0x1, 0x88, 0x1, 0x89, 0x1, 0x8a, 0x1, 0x8b, 0x1, 0x8c, 0x1, 0x8d, 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x1, 0x91, 0x1, + 0x92, 0x1, 0x93, 0x1, 0x94, 0x1, 0x95, 0x1, 0x96, 0x1, 0x97, 0x1, 0x98, 0x1, 0x99, 0x1, 0x9a, 0x1, 0x9b, 0x1, 0x9c, + 0x1, 0x9d, 0x1, 0x9e, 0x1, 0x9f, 0x1, 0xa0, 0x1, 0xa1, 0x1, 0xa2, 0x1, 0xa3, 0x1, 0xa4, 0x1, 0xa5, 0x1, 0xa6, 0x1, + 0xa7, 0x1, 0xa8, 0x1, 0xa9, 0x1, 0xaa, 0x1, 0xab, 0x1, 0xac, 0x1, 0xad, 0x1, 0xae, 0x1, 0xaf, 0x1, 0xb0, 0x1, 0xb1, + 0x1, 0xb2, 0x1, 0xb3, 0x1, 0xb4, 0x1, 0xb5, 0x1, 0xb6, 0x1, 0xb7, 0x1, 0xb8, 0x1, 0xb9, 0x1, 0xba, 0x1, 0xbb, 0x1, + 0xbc, 0x1, 0xbd, 0x1, 0xbe, 0x1, 0xbf, 0x1, 0xc0, 0x1, 0xc1, 0x1, 0xc2, 0x1, 0xc3, 0x1, 0xc4, 0x1, 0xc5, 0x1, 0xc6, + 0x1, 0xc7, 0x1, 0xc8, 0x1, 0xc9, 0x1, 0xca, 0x1, 0xcb, 0x1, 0xcc, 0x1, 0xcd, 0x1, 0xce, 0x1, 0xcf, 0x1, 0xd0, 0x1, + 0xd1, 0x1, 0xd2, 0x1, 0xd3, 0x1, 0xd4, 0x1, 0xd5, 0x1, 0xd6, 0x1, 0xd7, 0x1, 0xd8, 0x1, 0xd9, 0x1, 0xda, 0x1, 0xdb, + 0x1, 0xdc, 0x1, 0xdd, 0x1, 0xde, 0x1, 0xdf, 0x1, 0xe0, 0x1, 0xe1, 0x1, 0xe2, 0x1, 0xe3, 0x1, 0xe4, 0x1, 0xe5, 0x1, + 0xe6, 0x1, 0xe7, 0x1, 0xe8, 0x1, 0xe9, 0x1, 0xea, 0x1, 0xeb, 0x1, 0xec, 0x1, 0xed, 0x1, 0xee, 0x1, 0xef, 0x1, 0xf0, + 0x1, 0xf1, 0x1, 0xf2, 0x1, 0xf3, 0x1, 0xf4, 0x1, 0xf5, 0x1, 0xf6, 0x1, 0xf7, 0x1, 0xf8, 0x1, 0xf9, 0x1, 0xfa, 0x1, + 0xfb, 0x1, 0xfc, 0x1, 0xfd, 0x1, 0xfe, 0x1, 0xff, 0x1, 0x0, 0x2, 0x1, 0x2, 0x2, 0x2, 0x3, 0x2, 0x4, 0x2, 0x5, 0x2, + 0x6, 0x2, 0x7, 0x2, 0x8, 0x2, 0x9, 0x2, 0xa, 0x2, 0xb, 0x2, 0xc, 0x2, 0xd, 0x2, 0xe, 0x2, 0xf, 0x2, 0x10, 0x2, + 0x11, 0x2, 0x12, 0x2, 0x13, 0x2, 0x14, 0x2, 0x15, 0x2, 0x16, 0x2, 0x17, 0x2, 0x18, 0x2, 0x19, 0x2, 0x1a, 0x2, 0x1b, + 0x2, 0x1c, 0x2, 0x1d, 0x2, 0x1e, 0x2, 0x1f, 0x2, 0x20, 0x2, 0x21, 0x2, 0x22, 0x2, 0x23, 0x2, 0x24, 0x2, 0x25, 0x2, + 0x26, 0x2, 0x27, 0x2, 0x28, 0x2, 0x29, 0x2, 0x2a, 0x2, 0x2b, 0x2, 0x2c, 0x2, 0x2d, 0x2, 0x2e, 0x2, 0x2f, 0x2, 0x30, + 0x2, 0x31, 0x2, 0x32, 0x2, 0x33, 0x2, 0x34, 0x2, 0x35, 0x2, 0x36, 0x2, 0x37, 0x2, 0x38, 0x2, 0x39, 0x2, 0x3a, 0x2, + 0x3b, 0x2, 0x3c, 0x2, 0x3d, 0x2, 0x3e, 0x2, 0x3f, 0x2, 0x40, 0x2, 0x41, 0x2, 0x42, 0x2, 0x43, 0x2, 0x44, 0x2, 0x45, + 0x2, 0x46, 0x2, 0x47, 0x2, 0x48, 0x2, 0x49, 0x2, 0x4a, 0x2, 0x4b, 0x2, 0x4c, 0x2, 0x4d, 0x2, 0x4e, 0x2, 0x4f, 0x2, + 0x50, 0x2, 0x51, 0x2, 0x52, 0x2, 0x53, 0x2, 0x54, 0x2, 0x55, 0x2, 0x56, 0x2, 0x57, 0x2, 0x58, 0x2, 0x59, 0x2, 0x5a, + 0x2, 0x5b, 0x2, 0x5c, 0x2, 0x5d, 0x2, 0x5e, 0x2, 0x5f, 0x2, 0x60, 0x2, 0x61, 0x2, 0x62, 0x2, 0x63, 0x2, 0x64, 0x2, + 0x65, 0x2, 0x66, 0x2, 0x67, 0x2, 0x68, 0x2, 0x69, 0x2, 0x6a, 0x2, 0x6b, 0x2, 0x6c, 0x2, 0x6d, 0x2, 0x6e, 0x2, 0x6f, + 0x2, 0x70, 0x2, 0x71, 0x2, 0x72, 0x2, 0x73, 0x2, 0x74, 0x2, 0x75, 0x2, 0x76, 0x2, 0x77, 0x2, 0x78, 0x2, 0x79, 0x2, + 0x7a, 0x2, 0x7b, 0x2, 0x7c, 0x2, 0x7d, 0x2, 0x7e, 0x2, 0x7f, 0x2, 0x80, 0x2, 0x81, 0x2, 0x82, 0x2, 0x83, 0x2, 0x84, + 0x2, 0x85, 0x2, 0x86, 0x2, 0x87, 0x2, 0x88, 0x2, 0x89, 0x2, 0x8a, 0x2, 0x8b, 0x2, 0x8c, 0x2, 0x8d, 0x2, 0x8e, 0x2, + 0x8f, 0x2, 0x90, 0x2, 0x91, 0x2, 0x92, 0x2, 0x93, 0x2, 0x94, 0x2, 0x95, 0x2, 0x96, 0x2, 0x97, 0x2, 0x98, 0x2, 0x99, + 0x2, 0x9a, 0x2, 0x9b, 0x2, 0x9c, 0x2, 0x9d, 0x2, 0x9e, 0x2, 0x9f, 0x2, 0xa0, 0x2, 0xa1, 0x2, 0xa2, 0x2, 0xa3, 0x2, + 0xa4, 0x2, 0xa5, 0x2, 0xa6, 0x2, 0xa7, 0x2, 0xa8, 0x2, 0xa9, 0x2, 0xaa, 0x2, 0xab, 0x2, 0xac, 0x2, 0xad, 0x2, 0xae, + 0x2, 0xaf, 0x2, 0xb0, 0x2, 0xb1, 0x2, 0xb2, 0x2, 0xb3, 0x2, 0xb4, 0x2, 0xb5, 0x2, 0xb6, 0x2, 0xb7, 0x2, 0xb8, 0x2, + 0xb9, 0x2, 0xba, 0x2, 0xbb, 0x2, 0xbc, 0x2, 0xbd, 0x2, 0xbe, 0x2, 0xbf, 0x2, 0xc0, 0x2, 0xc1, 0x2, 0xc2, 0x2, 0xc3, + 0x2, 0xc4, 0x2, 0xc5, 0x2, 0xc6, 0x2, 0xc7, 0x2, 0xc8, 0x2, 0xc9, 0x2, 0xca, 0x2, 0xcb, 0x2, 0xcc, 0x2, 0xcd, 0x2, + 0xce, 0x2, 0xcf, 0x2, 0xd0, 0x2, 0xd1, 0x2, 0xd2, 0x2, 0xd3, 0x2, 0xd4, 0x2, 0xd5, 0x2, 0xd6, 0x2, 0xd7, 0x2, 0xd8, + 0x2, 0xd9, 0x2, 0xda, 0x2, 0xdb, 0x2, 0xdc, 0x2, 0xdd, 0x2, 0xde, 0x2, 0xdf, 0x2, 0xe0, 0x2, 0xe1, 0x2, 0xe2, 0x2, + 0xe3, 0x2, 0xe4, 0x2, 0xe5, 0x2, 0xe6, 0x2, 0xe7, 0x2, 0xe8, 0x2, 0xe9, 0x2, 0xea, 0x2, 0xeb, 0x2, 0xec, 0x2, 0xed, + 0x2, 0xee, 0x2, 0xef, 0x2, 0xf0, 0x2, 0xf1, 0x2, 0xf2, 0x2, 0xf3, 0x2, 0xf4, 0x2, 0xf5, 0x2, 0xf6, 0x2, 0xf7, 0x2, + 0xf8, 0x2, 0xf9, 0x2, 0xfa, 0x2, 0xfb, 0x2, 0xfc, 0x2, 0xfd, 0x2, 0xfe, 0x2, 0xff, 0x2, 0x0, 0x3, 0x1, 0x3, 0x2, + 0x3, 0x3, 0x3, 0x4, 0x3, 0x5, 0x3, 0x6, 0x3, 0x7, 0x3, 0x8, 0x3, 0x9, 0x3, 0xa, 0x3, 0xb, 0x3, 0xc, 0x3, 0xd, 0x3, + 0xe, 0x3, 0xf, 0x3, 0x10, 0x3, 0x11, 0x3, 0x12, 0x3, 0x13, 0x3, 0x14, 0x3, 0x15, 0x3, 0x16, 0x3, 0x17, 0x3, 0x18, + 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x20, 0x3, 0x21, 0x3, 0x22, 0x3, + 0x23, 0x3, 0x24, 0x3, 0x25, 0x3, 0x26, 0x3, 0x27, 0x3, 0x28, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2d, + 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x30, 0x3, 0x31, 0x3, 0x32, 0x3, 0x33, 0x3, 0x34, 0x3, 0x35, 0x3, 0x36, 0x3, 0x37, 0x3, + 0x38, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x41, 0x3, 0x42, + 0x3, 0x43, 0x3, 0x44, 0x3, 0x45, 0x3, 0x46, 0x3, 0x47, 0x3, 0x48, 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4c, 0x3, + 0x4d, 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x51, 0x3, 0x52, 0x3, 0x53, 0x3, 0x54, 0x3, 0x55, 0x3, 0x56, 0x3, 0x57, + 0x3, 0x58, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x61, 0x3, + 0x62, 0x3, 0x63, 0x3, 0x64, 0x3, 0x65, 0x3, 0x66, 0x3, 0x67, 0x3, 0x68, 0x3, 0x69, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6c, + 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x70, 0x3, 0x71, 0x3, 0x72, 0x3, 0x73, 0x3, 0x74, 0x3, 0x75, 0x3, 0x76, 0x3, + 0x77, 0x3, 0x78, 0x3, 0x79, 0x3, 0x7a, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x80, 0x3, 0x81, + 0x3, 0x82, 0x3, 0x83, 0x3, 0x84, 0x3, 0x85, 0x3, 0x86, 0x3, 0x87, 0x3, 0x88, 0x3, 0x89, 0x3, 0x8a, 0x3, 0x8b, 0x3, + 0x8c, 0x3, 0x8d, 0x3, 0x8e, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x91, 0x3, 0x92, 0x3, 0x93, 0x3, 0x94, 0x3, 0x95, 0x3, 0x96, + 0x3, 0x97, 0x3, 0x98, 0x3, ]; lazy_static! { @@ -260,8 +223,7 @@ lazy_static! { }, bitmap_data_length: 201, }; - pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = - (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(); + pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(); pub static ref WIRE_TO_SURFACE_2: WireToSurface2Pdu = WireToSurface2Pdu { surface_id: 0, codec_id: Codec2Type::RemoteFxProgressive, @@ -269,8 +231,7 @@ lazy_static! { pixel_format: PixelFormat::XRgb, bitmap_data_length: 616, }; - pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = - (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(); + pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(); pub static ref DELETE_ENCODING_CONTEXT: DeleteEncodingContextPdu = DeleteEncodingContextPdu { surface_id: 0, codec_context_id: 1, @@ -351,38 +312,36 @@ lazy_static! { frame_id: 5 }; pub static ref END_FRAME: EndFramePdu = EndFramePdu { frame_id: 1 }; - pub static ref CAPABILITIES_CONFIRM: CapabilitiesConfirmPdu = - CapabilitiesConfirmPdu(CapabilitySet::V10_5 { - flags: CapabilitiesV104Flags::AVC_DISABLED, - }); - pub static ref CAPABILITIES_ADVERTISE: CapabilitiesAdvertisePdu = - CapabilitiesAdvertisePdu(vec![ - CapabilitySet::V8 { - flags: CapabilitiesV8Flags::THIN_CLIENT - }, - CapabilitySet::V8_1 { - flags: CapabilitiesV81Flags::THIN_CLIENT - }, - CapabilitySet::V10 { - flags: CapabilitiesV10Flags::AVC_DISABLED - }, - CapabilitySet::V10_1, - CapabilitySet::V10_2 { - flags: CapabilitiesV10Flags::AVC_DISABLED - }, - CapabilitySet::V10_3 { - flags: CapabilitiesV103Flags::AVC_DISABLED - }, - CapabilitySet::V10_4 { - flags: CapabilitiesV104Flags::AVC_DISABLED - }, - CapabilitySet::V10_5 { - flags: CapabilitiesV104Flags::AVC_DISABLED - }, - CapabilitySet::V10_6 { - flags: CapabilitiesV104Flags::AVC_DISABLED - } - ]); + pub static ref CAPABILITIES_CONFIRM: CapabilitiesConfirmPdu = CapabilitiesConfirmPdu(CapabilitySet::V10_5 { + flags: CapabilitiesV104Flags::AVC_DISABLED, + }); + pub static ref CAPABILITIES_ADVERTISE: CapabilitiesAdvertisePdu = CapabilitiesAdvertisePdu(vec![ + CapabilitySet::V8 { + flags: CapabilitiesV8Flags::THIN_CLIENT + }, + CapabilitySet::V8_1 { + flags: CapabilitiesV81Flags::THIN_CLIENT + }, + CapabilitySet::V10 { + flags: CapabilitiesV10Flags::AVC_DISABLED + }, + CapabilitySet::V10_1, + CapabilitySet::V10_2 { + flags: CapabilitiesV10Flags::AVC_DISABLED + }, + CapabilitySet::V10_3 { + flags: CapabilitiesV103Flags::AVC_DISABLED + }, + CapabilitySet::V10_4 { + flags: CapabilitiesV104Flags::AVC_DISABLED + }, + CapabilitySet::V10_5 { + flags: CapabilitiesV104Flags::AVC_DISABLED + }, + CapabilitySet::V10_6 { + flags: CapabilitiesV104Flags::AVC_DISABLED + } + ]); pub static ref FRAME_ACKNOWLEDGE: FrameAcknowledgePdu = FrameAcknowledgePdu { queue_depth: QueueDepth::Unavailable, frame_id: 1, @@ -390,80 +349,65 @@ lazy_static! { }; pub static ref CACHE_IMPORT_REPLY: CacheImportReplyPdu = CacheImportReplyPdu { cache_slots: vec![ - 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, - 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, - 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, - 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, - 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, - 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, - 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, - 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, - 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, - 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, - 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, - 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, - 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, - 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, - 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x100, - 0x101, 0x102, 0x103, 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10a, 0x10b, 0x10c, - 0x10d, 0x10e, 0x10f, 0x110, 0x111, 0x112, 0x113, 0x114, 0x115, 0x116, 0x117, 0x118, - 0x119, 0x11a, 0x11b, 0x11c, 0x11d, 0x11e, 0x11f, 0x120, 0x121, 0x122, 0x123, 0x124, - 0x125, 0x126, 0x127, 0x128, 0x129, 0x12a, 0x12b, 0x12c, 0x12d, 0x12e, 0x12f, 0x130, - 0x131, 0x132, 0x133, 0x134, 0x135, 0x136, 0x137, 0x138, 0x139, 0x13a, 0x13b, 0x13c, - 0x13d, 0x13e, 0x13f, 0x140, 0x141, 0x142, 0x143, 0x144, 0x145, 0x146, 0x147, 0x148, - 0x149, 0x14a, 0x14b, 0x14c, 0x14d, 0x14e, 0x14f, 0x150, 0x151, 0x152, 0x153, 0x154, - 0x155, 0x156, 0x157, 0x158, 0x159, 0x15a, 0x15b, 0x15c, 0x15d, 0x15e, 0x15f, 0x160, - 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167, 0x168, 0x169, 0x16a, 0x16b, 0x16c, - 0x16d, 0x16e, 0x16f, 0x170, 0x171, 0x172, 0x173, 0x174, 0x175, 0x176, 0x177, 0x178, - 0x179, 0x17a, 0x17b, 0x17c, 0x17d, 0x17e, 0x17f, 0x180, 0x181, 0x182, 0x183, 0x184, - 0x185, 0x186, 0x187, 0x188, 0x189, 0x18a, 0x18b, 0x18c, 0x18d, 0x18e, 0x18f, 0x190, - 0x191, 0x192, 0x193, 0x194, 0x195, 0x196, 0x197, 0x198, 0x199, 0x19a, 0x19b, 0x19c, - 0x19d, 0x19e, 0x19f, 0x1a0, 0x1a1, 0x1a2, 0x1a3, 0x1a4, 0x1a5, 0x1a6, 0x1a7, 0x1a8, - 0x1a9, 0x1aa, 0x1ab, 0x1ac, 0x1ad, 0x1ae, 0x1af, 0x1b0, 0x1b1, 0x1b2, 0x1b3, 0x1b4, - 0x1b5, 0x1b6, 0x1b7, 0x1b8, 0x1b9, 0x1ba, 0x1bb, 0x1bc, 0x1bd, 0x1be, 0x1bf, 0x1c0, - 0x1c1, 0x1c2, 0x1c3, 0x1c4, 0x1c5, 0x1c6, 0x1c7, 0x1c8, 0x1c9, 0x1ca, 0x1cb, 0x1cc, - 0x1cd, 0x1ce, 0x1cf, 0x1d0, 0x1d1, 0x1d2, 0x1d3, 0x1d4, 0x1d5, 0x1d6, 0x1d7, 0x1d8, - 0x1d9, 0x1da, 0x1db, 0x1dc, 0x1dd, 0x1de, 0x1df, 0x1e0, 0x1e1, 0x1e2, 0x1e3, 0x1e4, - 0x1e5, 0x1e6, 0x1e7, 0x1e8, 0x1e9, 0x1ea, 0x1eb, 0x1ec, 0x1ed, 0x1ee, 0x1ef, 0x1f0, - 0x1f1, 0x1f2, 0x1f3, 0x1f4, 0x1f5, 0x1f6, 0x1f7, 0x1f8, 0x1f9, 0x1fa, 0x1fb, 0x1fc, - 0x1fd, 0x1fe, 0x1ff, 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, - 0x209, 0x20a, 0x20b, 0x20c, 0x20d, 0x20e, 0x20f, 0x210, 0x211, 0x212, 0x213, 0x214, - 0x215, 0x216, 0x217, 0x218, 0x219, 0x21a, 0x21b, 0x21c, 0x21d, 0x21e, 0x21f, 0x220, - 0x221, 0x222, 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22a, 0x22b, 0x22c, - 0x22d, 0x22e, 0x22f, 0x230, 0x231, 0x232, 0x233, 0x234, 0x235, 0x236, 0x237, 0x238, - 0x239, 0x23a, 0x23b, 0x23c, 0x23d, 0x23e, 0x23f, 0x240, 0x241, 0x242, 0x243, 0x244, - 0x245, 0x246, 0x247, 0x248, 0x249, 0x24a, 0x24b, 0x24c, 0x24d, 0x24e, 0x24f, 0x250, - 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257, 0x258, 0x259, 0x25a, 0x25b, 0x25c, - 0x25d, 0x25e, 0x25f, 0x260, 0x261, 0x262, 0x263, 0x264, 0x265, 0x266, 0x267, 0x268, - 0x269, 0x26a, 0x26b, 0x26c, 0x26d, 0x26e, 0x26f, 0x270, 0x271, 0x272, 0x273, 0x274, - 0x275, 0x276, 0x277, 0x278, 0x279, 0x27a, 0x27b, 0x27c, 0x27d, 0x27e, 0x27f, 0x280, - 0x281, 0x282, 0x283, 0x284, 0x285, 0x286, 0x287, 0x288, 0x289, 0x28a, 0x28b, 0x28c, - 0x28d, 0x28e, 0x28f, 0x290, 0x291, 0x292, 0x293, 0x294, 0x295, 0x296, 0x297, 0x298, - 0x299, 0x29a, 0x29b, 0x29c, 0x29d, 0x29e, 0x29f, 0x2a0, 0x2a1, 0x2a2, 0x2a3, 0x2a4, - 0x2a5, 0x2a6, 0x2a7, 0x2a8, 0x2a9, 0x2aa, 0x2ab, 0x2ac, 0x2ad, 0x2ae, 0x2af, 0x2b0, - 0x2b1, 0x2b2, 0x2b3, 0x2b4, 0x2b5, 0x2b6, 0x2b7, 0x2b8, 0x2b9, 0x2ba, 0x2bb, 0x2bc, - 0x2bd, 0x2be, 0x2bf, 0x2c0, 0x2c1, 0x2c2, 0x2c3, 0x2c4, 0x2c5, 0x2c6, 0x2c7, 0x2c8, - 0x2c9, 0x2ca, 0x2cb, 0x2cc, 0x2cd, 0x2ce, 0x2cf, 0x2d0, 0x2d1, 0x2d2, 0x2d3, 0x2d4, - 0x2d5, 0x2d6, 0x2d7, 0x2d8, 0x2d9, 0x2da, 0x2db, 0x2dc, 0x2dd, 0x2de, 0x2df, 0x2e0, - 0x2e1, 0x2e2, 0x2e3, 0x2e4, 0x2e5, 0x2e6, 0x2e7, 0x2e8, 0x2e9, 0x2ea, 0x2eb, 0x2ec, - 0x2ed, 0x2ee, 0x2ef, 0x2f0, 0x2f1, 0x2f2, 0x2f3, 0x2f4, 0x2f5, 0x2f6, 0x2f7, 0x2f8, - 0x2f9, 0x2fa, 0x2fb, 0x2fc, 0x2fd, 0x2fe, 0x2ff, 0x300, 0x301, 0x302, 0x303, 0x304, - 0x305, 0x306, 0x307, 0x308, 0x309, 0x30a, 0x30b, 0x30c, 0x30d, 0x30e, 0x30f, 0x310, - 0x311, 0x312, 0x313, 0x314, 0x315, 0x316, 0x317, 0x318, 0x319, 0x31a, 0x31b, 0x31c, - 0x31d, 0x31e, 0x31f, 0x320, 0x321, 0x322, 0x323, 0x324, 0x325, 0x326, 0x327, 0x328, - 0x329, 0x32a, 0x32b, 0x32c, 0x32d, 0x32e, 0x32f, 0x330, 0x331, 0x332, 0x333, 0x334, - 0x335, 0x336, 0x337, 0x338, 0x339, 0x33a, 0x33b, 0x33c, 0x33d, 0x33e, 0x33f, 0x340, - 0x341, 0x342, 0x343, 0x344, 0x345, 0x346, 0x347, 0x348, 0x349, 0x34a, 0x34b, 0x34c, - 0x34d, 0x34e, 0x34f, 0x350, 0x351, 0x352, 0x353, 0x354, 0x355, 0x356, 0x357, 0x358, - 0x359, 0x35a, 0x35b, 0x35c, 0x35d, 0x35e, 0x35f, 0x360, 0x361, 0x362, 0x363, 0x364, - 0x365, 0x366, 0x367, 0x368, 0x369, 0x36a, 0x36b, 0x36c, 0x36d, 0x36e, 0x36f, 0x370, - 0x371, 0x372, 0x373, 0x374, 0x375, 0x376, 0x377, 0x378, 0x379, 0x37a, 0x37b, 0x37c, - 0x37d, 0x37e, 0x37f, 0x380, 0x381, 0x382, 0x383, 0x384, 0x385, 0x386, 0x387, 0x388, - 0x389, 0x38a, 0x38b, 0x38c, 0x38d, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, 0x394, - 0x395, 0x396, 0x397, 0x398 + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, + 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, + 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, + 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + 0x100, 0x101, 0x102, 0x103, 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10a, 0x10b, 0x10c, 0x10d, 0x10e, + 0x10f, 0x110, 0x111, 0x112, 0x113, 0x114, 0x115, 0x116, 0x117, 0x118, 0x119, 0x11a, 0x11b, 0x11c, 0x11d, + 0x11e, 0x11f, 0x120, 0x121, 0x122, 0x123, 0x124, 0x125, 0x126, 0x127, 0x128, 0x129, 0x12a, 0x12b, 0x12c, + 0x12d, 0x12e, 0x12f, 0x130, 0x131, 0x132, 0x133, 0x134, 0x135, 0x136, 0x137, 0x138, 0x139, 0x13a, 0x13b, + 0x13c, 0x13d, 0x13e, 0x13f, 0x140, 0x141, 0x142, 0x143, 0x144, 0x145, 0x146, 0x147, 0x148, 0x149, 0x14a, + 0x14b, 0x14c, 0x14d, 0x14e, 0x14f, 0x150, 0x151, 0x152, 0x153, 0x154, 0x155, 0x156, 0x157, 0x158, 0x159, + 0x15a, 0x15b, 0x15c, 0x15d, 0x15e, 0x15f, 0x160, 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167, 0x168, + 0x169, 0x16a, 0x16b, 0x16c, 0x16d, 0x16e, 0x16f, 0x170, 0x171, 0x172, 0x173, 0x174, 0x175, 0x176, 0x177, + 0x178, 0x179, 0x17a, 0x17b, 0x17c, 0x17d, 0x17e, 0x17f, 0x180, 0x181, 0x182, 0x183, 0x184, 0x185, 0x186, + 0x187, 0x188, 0x189, 0x18a, 0x18b, 0x18c, 0x18d, 0x18e, 0x18f, 0x190, 0x191, 0x192, 0x193, 0x194, 0x195, + 0x196, 0x197, 0x198, 0x199, 0x19a, 0x19b, 0x19c, 0x19d, 0x19e, 0x19f, 0x1a0, 0x1a1, 0x1a2, 0x1a3, 0x1a4, + 0x1a5, 0x1a6, 0x1a7, 0x1a8, 0x1a9, 0x1aa, 0x1ab, 0x1ac, 0x1ad, 0x1ae, 0x1af, 0x1b0, 0x1b1, 0x1b2, 0x1b3, + 0x1b4, 0x1b5, 0x1b6, 0x1b7, 0x1b8, 0x1b9, 0x1ba, 0x1bb, 0x1bc, 0x1bd, 0x1be, 0x1bf, 0x1c0, 0x1c1, 0x1c2, + 0x1c3, 0x1c4, 0x1c5, 0x1c6, 0x1c7, 0x1c8, 0x1c9, 0x1ca, 0x1cb, 0x1cc, 0x1cd, 0x1ce, 0x1cf, 0x1d0, 0x1d1, + 0x1d2, 0x1d3, 0x1d4, 0x1d5, 0x1d6, 0x1d7, 0x1d8, 0x1d9, 0x1da, 0x1db, 0x1dc, 0x1dd, 0x1de, 0x1df, 0x1e0, + 0x1e1, 0x1e2, 0x1e3, 0x1e4, 0x1e5, 0x1e6, 0x1e7, 0x1e8, 0x1e9, 0x1ea, 0x1eb, 0x1ec, 0x1ed, 0x1ee, 0x1ef, + 0x1f0, 0x1f1, 0x1f2, 0x1f3, 0x1f4, 0x1f5, 0x1f6, 0x1f7, 0x1f8, 0x1f9, 0x1fa, 0x1fb, 0x1fc, 0x1fd, 0x1fe, + 0x1ff, 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x207, 0x208, 0x209, 0x20a, 0x20b, 0x20c, 0x20d, + 0x20e, 0x20f, 0x210, 0x211, 0x212, 0x213, 0x214, 0x215, 0x216, 0x217, 0x218, 0x219, 0x21a, 0x21b, 0x21c, + 0x21d, 0x21e, 0x21f, 0x220, 0x221, 0x222, 0x223, 0x224, 0x225, 0x226, 0x227, 0x228, 0x229, 0x22a, 0x22b, + 0x22c, 0x22d, 0x22e, 0x22f, 0x230, 0x231, 0x232, 0x233, 0x234, 0x235, 0x236, 0x237, 0x238, 0x239, 0x23a, + 0x23b, 0x23c, 0x23d, 0x23e, 0x23f, 0x240, 0x241, 0x242, 0x243, 0x244, 0x245, 0x246, 0x247, 0x248, 0x249, + 0x24a, 0x24b, 0x24c, 0x24d, 0x24e, 0x24f, 0x250, 0x251, 0x252, 0x253, 0x254, 0x255, 0x256, 0x257, 0x258, + 0x259, 0x25a, 0x25b, 0x25c, 0x25d, 0x25e, 0x25f, 0x260, 0x261, 0x262, 0x263, 0x264, 0x265, 0x266, 0x267, + 0x268, 0x269, 0x26a, 0x26b, 0x26c, 0x26d, 0x26e, 0x26f, 0x270, 0x271, 0x272, 0x273, 0x274, 0x275, 0x276, + 0x277, 0x278, 0x279, 0x27a, 0x27b, 0x27c, 0x27d, 0x27e, 0x27f, 0x280, 0x281, 0x282, 0x283, 0x284, 0x285, + 0x286, 0x287, 0x288, 0x289, 0x28a, 0x28b, 0x28c, 0x28d, 0x28e, 0x28f, 0x290, 0x291, 0x292, 0x293, 0x294, + 0x295, 0x296, 0x297, 0x298, 0x299, 0x29a, 0x29b, 0x29c, 0x29d, 0x29e, 0x29f, 0x2a0, 0x2a1, 0x2a2, 0x2a3, + 0x2a4, 0x2a5, 0x2a6, 0x2a7, 0x2a8, 0x2a9, 0x2aa, 0x2ab, 0x2ac, 0x2ad, 0x2ae, 0x2af, 0x2b0, 0x2b1, 0x2b2, + 0x2b3, 0x2b4, 0x2b5, 0x2b6, 0x2b7, 0x2b8, 0x2b9, 0x2ba, 0x2bb, 0x2bc, 0x2bd, 0x2be, 0x2bf, 0x2c0, 0x2c1, + 0x2c2, 0x2c3, 0x2c4, 0x2c5, 0x2c6, 0x2c7, 0x2c8, 0x2c9, 0x2ca, 0x2cb, 0x2cc, 0x2cd, 0x2ce, 0x2cf, 0x2d0, + 0x2d1, 0x2d2, 0x2d3, 0x2d4, 0x2d5, 0x2d6, 0x2d7, 0x2d8, 0x2d9, 0x2da, 0x2db, 0x2dc, 0x2dd, 0x2de, 0x2df, + 0x2e0, 0x2e1, 0x2e2, 0x2e3, 0x2e4, 0x2e5, 0x2e6, 0x2e7, 0x2e8, 0x2e9, 0x2ea, 0x2eb, 0x2ec, 0x2ed, 0x2ee, + 0x2ef, 0x2f0, 0x2f1, 0x2f2, 0x2f3, 0x2f4, 0x2f5, 0x2f6, 0x2f7, 0x2f8, 0x2f9, 0x2fa, 0x2fb, 0x2fc, 0x2fd, + 0x2fe, 0x2ff, 0x300, 0x301, 0x302, 0x303, 0x304, 0x305, 0x306, 0x307, 0x308, 0x309, 0x30a, 0x30b, 0x30c, + 0x30d, 0x30e, 0x30f, 0x310, 0x311, 0x312, 0x313, 0x314, 0x315, 0x316, 0x317, 0x318, 0x319, 0x31a, 0x31b, + 0x31c, 0x31d, 0x31e, 0x31f, 0x320, 0x321, 0x322, 0x323, 0x324, 0x325, 0x326, 0x327, 0x328, 0x329, 0x32a, + 0x32b, 0x32c, 0x32d, 0x32e, 0x32f, 0x330, 0x331, 0x332, 0x333, 0x334, 0x335, 0x336, 0x337, 0x338, 0x339, + 0x33a, 0x33b, 0x33c, 0x33d, 0x33e, 0x33f, 0x340, 0x341, 0x342, 0x343, 0x344, 0x345, 0x346, 0x347, 0x348, + 0x349, 0x34a, 0x34b, 0x34c, 0x34d, 0x34e, 0x34f, 0x350, 0x351, 0x352, 0x353, 0x354, 0x355, 0x356, 0x357, + 0x358, 0x359, 0x35a, 0x35b, 0x35c, 0x35d, 0x35e, 0x35f, 0x360, 0x361, 0x362, 0x363, 0x364, 0x365, 0x366, + 0x367, 0x368, 0x369, 0x36a, 0x36b, 0x36c, 0x36d, 0x36e, 0x36f, 0x370, 0x371, 0x372, 0x373, 0x374, 0x375, + 0x376, 0x377, 0x378, 0x379, 0x37a, 0x37b, 0x37c, 0x37d, 0x37e, 0x37f, 0x380, 0x381, 0x382, 0x383, 0x384, + 0x385, 0x386, 0x387, 0x388, 0x389, 0x38a, 0x38b, 0x38c, 0x38d, 0x38e, 0x38f, 0x390, 0x391, 0x392, 0x393, + 0x394, 0x395, 0x396, 0x397, 0x398 ] }; } @@ -472,10 +416,7 @@ lazy_static! { fn from_buffer_correctly_parses_wire_to_surface_1_pdu() { let mut buffer = WIRE_TO_SURFACE_1_BUFFER.as_ref(); - assert_eq!( - *WIRE_TO_SURFACE_1, - WireToSurface1Pdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*WIRE_TO_SURFACE_1, WireToSurface1Pdu::from_buffer(&mut buffer).unwrap()); assert_eq!(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice(), buffer); } @@ -500,10 +441,7 @@ fn buffer_length_is_correct_for_wire_to_surface_1_pdu() { fn from_buffer_correctly_parses_wire_to_surface_2_pdu() { let mut buffer = WIRE_TO_SURFACE_2_BUFFER.as_ref(); - assert_eq!( - *WIRE_TO_SURFACE_2, - WireToSurface2Pdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*WIRE_TO_SURFACE_2, WireToSurface2Pdu::from_buffer(&mut buffer).unwrap()); assert_eq!(WIRE_TO_SURFACE_2_BITMAP_DATA.as_slice(), buffer); } @@ -593,20 +531,14 @@ fn to_buffer_correctly_serializes_surface_to_surface_pdu() { #[test] fn buffer_length_is_correct_for_surface_to_surface_pdu() { - assert_eq!( - SURFACE_TO_SURFACE_BUFFER.len(), - SURFACE_TO_SURFACE.buffer_length() - ); + assert_eq!(SURFACE_TO_SURFACE_BUFFER.len(), SURFACE_TO_SURFACE.buffer_length()); } #[test] fn from_buffer_correctly_parses_surface_to_cache_pdu() { let mut buffer = SURFACE_TO_CACHE_BUFFER.as_ref(); - assert_eq!( - *SURFACE_TO_CACHE, - SurfaceToCachePdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*SURFACE_TO_CACHE, SurfaceToCachePdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -620,20 +552,14 @@ fn to_buffer_correctly_serializes_surface_to_cache_pdu() { #[test] fn buffer_length_is_correct_for_surface_to_cache_pdu() { - assert_eq!( - SURFACE_TO_CACHE_BUFFER.len(), - SURFACE_TO_CACHE.buffer_length() - ); + assert_eq!(SURFACE_TO_CACHE_BUFFER.len(), SURFACE_TO_CACHE.buffer_length()); } #[test] fn from_buffer_correctly_parses_cache_to_surface_pdu() { let mut buffer = CACHE_TO_SURFACE_BUFFER.as_ref(); - assert_eq!( - *CACHE_TO_SURFACE, - CacheToSurfacePdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*CACHE_TO_SURFACE, CacheToSurfacePdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -647,20 +573,14 @@ fn to_buffer_correctly_serializes_cache_to_surface_pdu() { #[test] fn buffer_length_is_correct_for_cache_to_surface_pdu() { - assert_eq!( - CACHE_TO_SURFACE_BUFFER.len(), - CACHE_TO_SURFACE.buffer_length() - ); + assert_eq!(CACHE_TO_SURFACE_BUFFER.len(), CACHE_TO_SURFACE.buffer_length()); } #[test] fn from_buffer_correctly_parses_create_surface_pdu() { let mut buffer = CREATE_SURFACE_BUFFER.as_ref(); - assert_eq!( - *CREATE_SURFACE, - CreateSurfacePdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*CREATE_SURFACE, CreateSurfacePdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -681,10 +601,7 @@ fn buffer_length_is_correct_for_create_surface_pdu() { fn from_buffer_correctly_parses_delete_surface_pdu() { let mut buffer = DELETE_SURFACE_BUFFER.as_ref(); - assert_eq!( - *DELETE_SURFACE, - DeleteSurfacePdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*DELETE_SURFACE, DeleteSurfacePdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -705,10 +622,7 @@ fn buffer_length_is_correct_for_delete_surface_pdu() { fn from_buffer_correctly_parses_reset_graphics() { let mut buffer = RESET_GRAPHICS_BUFFER.as_ref(); - assert_eq!( - *RESET_GRAPHICS, - ResetGraphicsPdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*RESET_GRAPHICS, ResetGraphicsPdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -773,20 +687,14 @@ fn to_buffer_correctly_serializes_evict_cache_entry_pdu() { #[test] fn buffer_length_is_correct_for_evict_cache_entry_pdu() { - assert_eq!( - EVICT_CACHE_ENTRY_BUFFER.len(), - EVICT_CACHE_ENTRY.buffer_length() - ); + assert_eq!(EVICT_CACHE_ENTRY_BUFFER.len(), EVICT_CACHE_ENTRY.buffer_length()); } #[test] fn from_buffer_correctly_parses_start_frame_pdu() { let mut buffer = START_FRAME_BUFFER.as_ref(); - assert_eq!( - *START_FRAME, - StartFramePdu::from_buffer(&mut buffer).unwrap() - ); + assert_eq!(*START_FRAME, StartFramePdu::from_buffer(&mut buffer).unwrap()); assert!(buffer.is_empty()); } @@ -845,10 +753,7 @@ fn to_buffer_correctly_serializes_capabilities_confirm_pdu() { #[test] fn buffer_length_is_correct_for_capabilities_confirm_pdu() { - assert_eq!( - CAPABILITIES_CONFIRM_BUFFER.len(), - CAPABILITIES_CONFIRM.buffer_length() - ); + assert_eq!(CAPABILITIES_CONFIRM_BUFFER.len(), CAPABILITIES_CONFIRM.buffer_length()); } #[test] @@ -899,10 +804,7 @@ fn to_buffer_correctly_serializes_frame_acknowledge_pdu() { #[test] fn buffer_length_is_correct_for_frame_acknowledge_pdu() { - assert_eq!( - FRAME_ACKNOWLEDGE_BUFFER.len(), - FRAME_ACKNOWLEDGE.buffer_length() - ); + assert_eq!(FRAME_ACKNOWLEDGE_BUFFER.len(), FRAME_ACKNOWLEDGE.buffer_length()); } #[test] @@ -926,8 +828,5 @@ fn to_buffer_correctly_serializes_cache_import_reply() { #[test] fn buffer_length_is_correct_for_cache_import_reply() { - assert_eq!( - CACHE_IMPORT_REPLY_BUFFER.len(), - CACHE_IMPORT_REPLY.buffer_length() - ); + assert_eq!(CACHE_IMPORT_REPLY_BUFFER.len(), CACHE_IMPORT_REPLY.buffer_length()); } diff --git a/ironrdp/src/rdp/vc/dvc/gfx/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/test.rs index b734f921..a1922623 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/test.rs @@ -1,35 +1,21 @@ use lazy_static::lazy_static; -use super::{ - graphics_messages::test::{ - FRAME_ACKNOWLEDGE, FRAME_ACKNOWLEDGE_BUFFER, WIRE_TO_SURFACE_1, - WIRE_TO_SURFACE_1_BITMAP_DATA, WIRE_TO_SURFACE_1_BUFFER, - }, - *, +use super::graphics_messages::test::{ + FRAME_ACKNOWLEDGE, FRAME_ACKNOWLEDGE_BUFFER, WIRE_TO_SURFACE_1, WIRE_TO_SURFACE_1_BITMAP_DATA, + WIRE_TO_SURFACE_1_BUFFER, }; +use super::*; const WIRE_TO_SURFACE_1_HEADER_BUFFER: [u8; 8] = [0x01, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00]; const FRAME_ACKNOWLEDGE_HEADER_BUFFER: [u8; 8] = [0x0d, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00]; lazy_static! { - static ref HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER: Vec = { - [ - &WIRE_TO_SURFACE_1_HEADER_BUFFER[..], - &WIRE_TO_SURFACE_1_BUFFER[..], - ] - .concat() - }; - static ref HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER: Vec = { - [ - &FRAME_ACKNOWLEDGE_HEADER_BUFFER[..], - &FRAME_ACKNOWLEDGE_BUFFER[..], - ] - .concat() - }; - static ref HEADER_WITH_WIRE_TO_SURFACE_1: ServerPdu = - ServerPdu::WireToSurface1(WIRE_TO_SURFACE_1.clone()); - static ref HEADER_WITH_FRAME_ACKNOWLEDGE: ClientPdu = - ClientPdu::FrameAcknowledge(FRAME_ACKNOWLEDGE.clone()); + static ref HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER: Vec = + { [&WIRE_TO_SURFACE_1_HEADER_BUFFER[..], &WIRE_TO_SURFACE_1_BUFFER[..],].concat() }; + static ref HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER: Vec = + { [&FRAME_ACKNOWLEDGE_HEADER_BUFFER[..], &FRAME_ACKNOWLEDGE_BUFFER[..],].concat() }; + static ref HEADER_WITH_WIRE_TO_SURFACE_1: ServerPdu = ServerPdu::WireToSurface1(WIRE_TO_SURFACE_1.clone()); + static ref HEADER_WITH_FRAME_ACKNOWLEDGE: ClientPdu = ClientPdu::FrameAcknowledge(FRAME_ACKNOWLEDGE.clone()); } #[test] @@ -46,9 +32,7 @@ fn from_buffer_correctly_parses_server_pdu() { #[test] fn to_buffer_correctly_serializes_server_pdu() { let mut buffer = Vec::with_capacity(HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.len()); - HEADER_WITH_WIRE_TO_SURFACE_1 - .to_buffer(&mut buffer) - .unwrap(); + HEADER_WITH_WIRE_TO_SURFACE_1.to_buffer(&mut buffer).unwrap(); buffer.extend_from_slice(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice()); assert_eq!(buffer, HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.as_slice()); @@ -66,18 +50,13 @@ fn buffer_length_is_correct_for_server_pdu() { fn from_buffer_correctly_parses_client_pdu() { let buffer = HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER.as_slice(); - assert_eq!( - *HEADER_WITH_FRAME_ACKNOWLEDGE, - ClientPdu::from_buffer(buffer).unwrap() - ); + assert_eq!(*HEADER_WITH_FRAME_ACKNOWLEDGE, ClientPdu::from_buffer(buffer).unwrap()); } #[test] fn to_buffer_correctly_serializes_client_pdu() { let mut buffer = Vec::with_capacity(1024); - HEADER_WITH_FRAME_ACKNOWLEDGE - .to_buffer(&mut buffer) - .unwrap(); + HEADER_WITH_FRAME_ACKNOWLEDGE.to_buffer(&mut buffer).unwrap(); assert_eq!(buffer, HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER.as_slice()); } diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs index a1f49377..2f76f482 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs @@ -11,12 +11,13 @@ use bitvec::field::BitField as _; use bitvec::order::Msb0; use bitvec::slice::BitSlice; use byteorder::WriteBytesExt; +use circular_buffer::FixedCircularBuffer; +use control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; use failure::Fail; use lazy_static::lazy_static; -use crate::{impl_from_error, utils::Bits}; -use circular_buffer::FixedCircularBuffer; -use control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; +use crate::impl_from_error; +use crate::utils::Bits; const HISTORY_SIZE: usize = 2_500_000; @@ -31,11 +32,7 @@ impl Decompressor { } } - pub fn decompress( - &mut self, - input: &[u8], - output: &mut Vec, - ) -> Result { + pub fn decompress(&mut self, input: &[u8], output: &mut Vec) -> Result { let segmented_data = SegmentedDataPdu::from_buffer(input)?; match segmented_data { @@ -62,16 +59,9 @@ impl Decompressor { } } - fn handle_segment( - &mut self, - segment: &BulkEncodedData<'_>, - output: &mut Vec, - ) -> Result { + fn handle_segment(&mut self, segment: &BulkEncodedData<'_>, output: &mut Vec) -> Result { if !segment.data.is_empty() { - if segment - .compression_flags - .contains(CompressionFlags::COMPRESSED) - { + if segment.compression_flags.contains(CompressionFlags::COMPRESSED) { self.decompress_segment(segment.data, output) } else { self.history.write_all(segment.data)?; @@ -84,11 +74,7 @@ impl Decompressor { } } - fn decompress_segment( - &mut self, - encoded_data: &[u8], - output: &mut Vec, - ) -> Result { + fn decompress_segment(&mut self, encoded_data: &[u8], output: &mut Vec) -> Result { let mut bits = BitSlice::from_slice(encoded_data); // The value of the last byte indicates the number of unused bits in the final byte @@ -124,13 +110,8 @@ impl Decompressor { distance_value_size, distance_base, } => { - let written = handle_match( - &mut bits, - distance_value_size, - distance_base, - &mut self.history, - output, - )?; + let written = + handle_match(&mut bits, distance_value_size, distance_base, &mut self.history, output)?; bytes_written += written; } } @@ -249,153 +230,103 @@ lazy_static! { }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 0, 0], - ty: TokenType::Literal { - literal_value: 0x00 - }, + ty: TokenType::Literal { literal_value: 0x00 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 0, 1], - ty: TokenType::Literal { - literal_value: 0x01 - }, + ty: TokenType::Literal { literal_value: 0x01 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 0], - ty: TokenType::Literal { - literal_value: 0x02 - }, + ty: TokenType::Literal { literal_value: 0x02 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 1], - ty: TokenType::Literal { - literal_value: 0x03 - }, + ty: TokenType::Literal { literal_value: 0x03 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 0], - ty: TokenType::Literal { - literal_value: 0x0ff - }, + ty: TokenType::Literal { literal_value: 0x0ff }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 0], - ty: TokenType::Literal { - literal_value: 0x04 - }, + ty: TokenType::Literal { literal_value: 0x04 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 1], - ty: TokenType::Literal { - literal_value: 0x05 - }, + ty: TokenType::Literal { literal_value: 0x05 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 0], - ty: TokenType::Literal { - literal_value: 0x06 - }, + ty: TokenType::Literal { literal_value: 0x06 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 1], - ty: TokenType::Literal { - literal_value: 0x07 - }, + ty: TokenType::Literal { literal_value: 0x07 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 0], - ty: TokenType::Literal { - literal_value: 0x08 - }, + ty: TokenType::Literal { literal_value: 0x08 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 1], - ty: TokenType::Literal { - literal_value: 0x09 - }, + ty: TokenType::Literal { literal_value: 0x09 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 0], - ty: TokenType::Literal { - literal_value: 0x0a - }, + ty: TokenType::Literal { literal_value: 0x0a }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 1], - ty: TokenType::Literal { - literal_value: 0x0b - }, + ty: TokenType::Literal { literal_value: 0x0b }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 0], - ty: TokenType::Literal { - literal_value: 0x3a - }, + ty: TokenType::Literal { literal_value: 0x3a }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 1], - ty: TokenType::Literal { - literal_value: 0x3b - }, + ty: TokenType::Literal { literal_value: 0x3b }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 0], - ty: TokenType::Literal { - literal_value: 0x3c - }, + ty: TokenType::Literal { literal_value: 0x3c }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 1], - ty: TokenType::Literal { - literal_value: 0x3d - }, + ty: TokenType::Literal { literal_value: 0x3d }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 0], - ty: TokenType::Literal { - literal_value: 0x3e - }, + ty: TokenType::Literal { literal_value: 0x3e }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 1], - ty: TokenType::Literal { - literal_value: 0x3f - }, + ty: TokenType::Literal { literal_value: 0x3f }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 0], - ty: TokenType::Literal { - literal_value: 0x40 - }, + ty: TokenType::Literal { literal_value: 0x40 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 1], - ty: TokenType::Literal { - literal_value: 0x80 - }, + ty: TokenType::Literal { literal_value: 0x80 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 0], - ty: TokenType::Literal { - literal_value: 0x0c - }, + ty: TokenType::Literal { literal_value: 0x0c }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 1], - ty: TokenType::Literal { - literal_value: 0x38 - }, + ty: TokenType::Literal { literal_value: 0x38 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 0], - ty: TokenType::Literal { - literal_value: 0x39 - }, + ty: TokenType::Literal { literal_value: 0x39 }, }, Token { prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 1], - ty: TokenType::Literal { - literal_value: 0x66 - }, + ty: TokenType::Literal { literal_value: 0x66 }, }, Token { prefix: bits![static u8, Msb0; 1, 0, 0, 0, 1], diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs index 1be5dda4..a55e3bd4 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs @@ -1,4 +1,5 @@ -use std::{cmp::min, io}; +use std::cmp::min; +use std::io; pub struct FixedCircularBuffer { buffer: Vec, @@ -13,12 +14,7 @@ impl FixedCircularBuffer { } } - pub fn read_with_offset( - &self, - offset: usize, - length: usize, - mut output: impl io::Write, - ) -> io::Result<()> { + pub fn read_with_offset(&self, offset: usize, length: usize, mut output: impl io::Write) -> io::Result<()> { let position = (self.buffer.len() + self.position - offset) % self.buffer.len(); // will take the offset if the destination length is greater then the offset, @@ -142,8 +138,7 @@ mod tests { } #[test] - fn fixed_circular_buffer_correctly_writes_buffer_bigger_then_internal_buffer_size_with_position_at_end( - ) { + fn fixed_circular_buffer_correctly_writes_buffer_bigger_then_internal_buffer_size_with_position_at_end() { let size = 8; let mut circular_buffer = FixedCircularBuffer::new(size); circular_buffer.position = 6; @@ -208,8 +203,7 @@ mod tests { } #[test] - fn fixed_circular_buffer_correctly_reads_buffer_with_repeating_multiple_bytes_from_end_to_start( - ) { + fn fixed_circular_buffer_correctly_reads_buffer_with_repeating_multiple_bytes_from_end_to_start() { let circular_buffer = FixedCircularBuffer { buffer: vec![11, 12, 3, 4, 5, 6, 7, 8, 9, 10], position: 2, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs index a1053816..8b08b8ff 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs @@ -17,13 +17,11 @@ pub enum SegmentedDataPdu<'a> { impl<'a> SegmentedDataPdu<'a> { pub fn from_buffer(mut buffer: &'a [u8]) -> Result { - let descriptor = SegmentedDescriptor::from_u8(buffer.read_u8()?) - .ok_or(ZgfxError::InvalidSegmentedDescriptor)?; + let descriptor = + SegmentedDescriptor::from_u8(buffer.read_u8()?).ok_or(ZgfxError::InvalidSegmentedDescriptor)?; match descriptor { - SegmentedDescriptor::Single => Ok(SegmentedDataPdu::Single( - BulkEncodedData::from_buffer(buffer)?, - )), + SegmentedDescriptor::Single => Ok(SegmentedDataPdu::Single(BulkEncodedData::from_buffer(buffer)?)), SegmentedDescriptor::Multipart => { let segment_count = buffer.read_u16::()? as usize; let uncompressed_size = buffer.read_u32::()? as usize; @@ -57,8 +55,7 @@ impl<'a> BulkEncodedData<'a> { let compression_type_and_flags = buffer.read_u8()?; let _compression_type = CompressionType::from_u8(compression_type_and_flags.get_bits(..4)) .ok_or(ZgfxError::InvalidCompressionType)?; - let compression_flags = - CompressionFlags::from_bits_truncate(compression_type_and_flags.get_bits(4..)); + let compression_flags = CompressionFlags::from_bits_truncate(compression_type_and_flags.get_bits(4..)); Ok(Self { compression_flags, @@ -93,8 +90,7 @@ mod test { const SINGLE_SEGMENTED_DATA_PDU_BUFFER: [u8; 17] = [ 0xe0, // descriptor 0x24, // flags and compression type - 0x09, 0xe3, 0x18, 0x0a, 0x44, 0x8d, 0x37, 0xf4, 0xc6, 0xe8, 0xa0, 0x20, 0xc6, 0x30, - 0x01, // data + 0x09, 0xe3, 0x18, 0x0a, 0x44, 0x8d, 0x37, 0xf4, 0xc6, 0xe8, 0xa0, 0x20, 0xc6, 0x30, 0x01, // data ]; const MULTIPART_SEGMENTED_DATA_PDU_BUFFER: [u8; 66] = [ @@ -107,8 +103,7 @@ mod test { 0x20, // the first segment: data 0x0E, 0x00, 0x00, 0x00, // size of the second segment 0x04, // the second segment: flags and compression type - 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, - 0x65, // the second segment: data + 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, 0x65, // the second segment: data 0x10, 0x00, 0x00, 0x00, // size of the third segment 0x24, // the third segment: flags and compression type 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, 0x9C, @@ -116,29 +111,27 @@ mod test { ]; lazy_static! { - static ref SINGLE_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = - SegmentedDataPdu::Single(BulkEncodedData { - compression_flags: CompressionFlags::COMPRESSED, - data: &SINGLE_SEGMENTED_DATA_PDU_BUFFER[2..], - }); - static ref MULTIPART_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = - SegmentedDataPdu::Multipart { - uncompressed_size: 0x2B, - segments: vec![ - BulkEncodedData { - compression_flags: CompressionFlags::empty(), - data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[12..12 + 16] - }, - BulkEncodedData { - compression_flags: CompressionFlags::empty(), - data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[33..33 + 13] - }, - BulkEncodedData { - compression_flags: CompressionFlags::COMPRESSED, - data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[51..] - }, - ], - }; + static ref SINGLE_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = SegmentedDataPdu::Single(BulkEncodedData { + compression_flags: CompressionFlags::COMPRESSED, + data: &SINGLE_SEGMENTED_DATA_PDU_BUFFER[2..], + }); + static ref MULTIPART_SEGMENTED_DATA_PDU: SegmentedDataPdu<'static> = SegmentedDataPdu::Multipart { + uncompressed_size: 0x2B, + segments: vec![ + BulkEncodedData { + compression_flags: CompressionFlags::empty(), + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[12..12 + 16] + }, + BulkEncodedData { + compression_flags: CompressionFlags::empty(), + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[33..33 + 13] + }, + BulkEncodedData { + compression_flags: CompressionFlags::COMPRESSED, + data: &MULTIPART_SEGMENTED_DATA_PDU_BUFFER[51..] + }, + ], + }; } #[test] diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs index f28c0db9..0ea1cf7c 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs @@ -46,11 +46,7 @@ fn zgfx_decopresses_multiple_single_pdus() { for (i, (encode, decode)) in pairs.enumerate() { let bytes_written = zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); assert_eq!(decode.len(), bytes_written); - assert_eq!( - decompressed, *decode, - "Failed to decompress encoded PDU #{}", - i - ); + assert_eq!(decompressed, *decode, "Failed to decompress encoded PDU #{}", i); decompressed.clear(); } } @@ -62,8 +58,7 @@ fn zgfx_decopresses_only_one_literal() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -74,8 +69,7 @@ fn zgfx_decopresses_one_literal_with_null_prefix() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -86,8 +80,7 @@ fn zgfx_decopresses_only_multiple_literals() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -98,8 +91,7 @@ fn zgfx_decopresses_one_literal_with_one_match_distance_1() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -119,8 +111,7 @@ fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -133,8 +124,7 @@ fn zgfx_decopresses_one_match_with_match_unencoded_bytes() { let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } @@ -150,12 +140,10 @@ fn zgfx_decopresses_multiple_literals_with_match_in_center_with_not_compressed() 0x20, // "The quick brown " 0x0E, 0x00, 0x00, 0x00, // second segment is the next 14 bytes: 0x04, // type 4, not PACKET_COMPRESSED - 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, - 0x65, // "fox jumps ove" + 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, 0x65, // "fox jumps ove" 0x10, 0x00, 0x00, 0x00, // third segment is the next 16 bytes 0x24, // type 4 + PACKET_COMPRESSED - 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, - 0x9C, // encoded: + 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, 0x9C, // encoded: // 0 01110010 = literal 0x72 = "r" // 0 00100000 = literal 0x20 = " " // 0 01110100 = literal 0x74 = "t" @@ -178,22 +166,18 @@ fn zgfx_decopresses_multiple_literals_with_match_in_center_with_not_compressed() let mut decompressed = Vec::with_capacity(expected.len()); let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(expected.len(), bytes_written); - assert_eq!( - decompressed, expected, - "\n{:x?} != \n{:x?}", - decompressed, expected - ); + assert_eq!(decompressed, expected, "\n{:x?} != \n{:x?}", decompressed, expected); } #[test] fn zgfx_decopresses_single_match_unencoded_block() { let buffer = [ - 0xe0, 0x04, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xe0, 0x04, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, ]; let expected = vec![ - 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, ]; let mut zgfx = Decompressor::new(); @@ -205,19 +189,11 @@ fn zgfx_decopresses_single_match_unencoded_block() { #[test] fn zgfx_decopresses_unencoded_block_without_padding() { - let buffer = [ - 0b1110_0101, - 0b0001_0000, - 0b0000_0000, - 0b00000001, - 0b1111_0000, - 0x0, - ]; + let buffer = [0b1110_0101, 0b0001_0000, 0b0000_0000, 0b00000001, 0b1111_0000, 0x0]; let expected = vec![0x08, 0xf0]; let mut zgfx = Decompressor::new(); let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed) - .unwrap(); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(decompressed, expected); } diff --git a/ironrdp/src/rdp/vc/dvc/tests.rs b/ironrdp/src/rdp/vc/dvc/tests.rs index 70a362ed..faf03db0 100644 --- a/ironrdp/src/rdp/vc/dvc/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/tests.rs @@ -55,10 +55,7 @@ fn buffer_length_is_correct_for_dvc_header() { #[test] fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { - match ClientPdu::from_buffer( - DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), - HEADER_SIZE, - ) { + match ClientPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), HEADER_SIZE) { Err(ChannelError::InvalidDVChannelIdLength) => (), res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), }; @@ -66,10 +63,7 @@ fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { #[test] fn from_buffer_parsing_for_server_dvc_pdu_with_invalid_id_length_type_fails() { - match ServerPdu::from_buffer( - DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), - HEADER_SIZE, - ) { + match ServerPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), HEADER_SIZE) { Err(ChannelError::InvalidDVChannelIdLength) => (), res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), }; diff --git a/ironrdp/src/rdp/vc/tests.rs b/ironrdp/src/rdp/vc/tests.rs index 88b2967d..8db82e7a 100644 --- a/ironrdp/src/rdp/vc/tests.rs +++ b/ironrdp/src/rdp/vc/tests.rs @@ -3,8 +3,7 @@ use lazy_static::lazy_static; use super::*; const CHANNEL_CHUNK_LENGTH_DEFAULT: u32 = 1600; -const CHANNEL_PDU_HEADER_BUFFER: [u8; CHANNEL_PDU_HEADER_SIZE] = - [0x40, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; +const CHANNEL_PDU_HEADER_BUFFER: [u8; CHANNEL_PDU_HEADER_SIZE] = [0x40, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00]; lazy_static! { static ref CHANNEL_PDU_HEADER: ChannelPduHeader = ChannelPduHeader { diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index 8b53ffc1..f13d0688 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -1,10 +1,8 @@ pub mod rc4; pub mod rsa; -use std::{ - cmp::{max, min}, - io, ops, -}; +use std::cmp::{max, min}; +use std::{io, ops}; use bitvec::prelude::{BitSlice, Msb0}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -87,12 +85,8 @@ pub fn read_string( let result = match character_set { CharacterSet::Unicode => bytes_to_utf16_string(buffer.as_slice()), - CharacterSet::Ansi => String::from_utf8(buffer).map_err(|e| { - io::Error::new( - io::ErrorKind::InvalidData, - format!("the string is not utf8: {}", e), - ) - })?, + CharacterSet::Ansi => String::from_utf8(buffer) + .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("the string is not utf8: {}", e)))?, }; Ok(result.trim_end_matches('\0').into()) diff --git a/ironrdp/src/utils/rc4.rs b/ironrdp/src/utils/rc4.rs index 4afde063..70848f07 100644 --- a/ironrdp/src/utils/rc4.rs +++ b/ironrdp/src/utils/rc4.rs @@ -78,10 +78,7 @@ mod test { let key = "key".to_string(); let message = "message".to_string(); let expected = [0x66, 0x09, 0x47, 0x9E, 0x45, 0xE8, 0x1E]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] @@ -89,10 +86,7 @@ mod test { let key = "0".to_string(); let message = "message".to_string(); let expected = [0xE5, 0x1A, 0xD5, 0xF3, 0xA2, 0x1C, 0xB1]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] @@ -100,10 +94,7 @@ mod test { let key = "0".to_string(); let message = "0".to_string(); let expected = [0xb8]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] @@ -111,10 +102,7 @@ mod test { let key = "0".to_string(); let message = "a".to_string(); let expected = [0xe9]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] @@ -122,62 +110,43 @@ mod test { let key = "key".to_string(); let message = "".to_string(); let expected = []; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] fn long_key() { - let key = "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp" - .to_string(); + let key = "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp".to_string(); let message = "message".to_string(); let expected = [0xBE, 0x74, 0xEB, 0x88, 0x64, 0x8E, 0x6A]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected); } #[test] fn long_message() { let key = "key".to_string(); - let message = - "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp" - .to_string(); + let message = "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp".to_string(); let expected = [ - 0x64, 0x05, 0x53, 0x87, 0x53, 0xFD, 0x42, 0x72, 0x7C, 0x6B, 0x30, 0x4C, 0x22, 0x04, - 0x2A, 0xDD, 0xB8, 0x23, 0xDB, 0x5E, 0x8B, 0xD9, 0xC5, 0xDB, 0x4F, 0xD9, 0x8D, 0x9B, - 0x0E, 0xD4, 0x5B, 0xAA, 0x34, 0x1D, 0x8E, 0xB9, 0x9B, 0xBB, 0xF0, 0xF5, 0x7C, 0x90, - 0xAD, 0xFE, 0x64, 0x33, 0x06, 0xCA, 0xCE, 0x68, 0x71, 0x1E, 0x5E, 0xE1, 0x29, 0xBD, - 0xCB, 0x29, 0x6A, 0x6D, 0xD4, 0xC9, 0x99, 0x59, 0xE9, 0x3B, 0xCC, 0x97, 0xEE, 0x32, - 0xB5, 0x98, 0x57, 0x1C, 0x13, 0x6D, 0x35, 0x0C, 0xDE, + 0x64, 0x05, 0x53, 0x87, 0x53, 0xFD, 0x42, 0x72, 0x7C, 0x6B, 0x30, 0x4C, 0x22, 0x04, 0x2A, 0xDD, 0xB8, 0x23, + 0xDB, 0x5E, 0x8B, 0xD9, 0xC5, 0xDB, 0x4F, 0xD9, 0x8D, 0x9B, 0x0E, 0xD4, 0x5B, 0xAA, 0x34, 0x1D, 0x8E, 0xB9, + 0x9B, 0xBB, 0xF0, 0xF5, 0x7C, 0x90, 0xAD, 0xFE, 0x64, 0x33, 0x06, 0xCA, 0xCE, 0x68, 0x71, 0x1E, 0x5E, 0xE1, + 0x29, 0xBD, 0xCB, 0x29, 0x6A, 0x6D, 0xD4, 0xC9, 0x99, 0x59, 0xE9, 0x3B, 0xCC, 0x97, 0xEE, 0x32, 0xB5, 0x98, + 0x57, 0x1C, 0x13, 0x6D, 0x35, 0x0C, 0xDE, ]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected[..] - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected[..]); } #[test] fn long_key_message() { let key = "iogjerwo ghoreh trojtrj trjrohjigjw9iehgfwe 315 989&*$*%&* &*^*& q 4unkregeor 847847786 ^&**^*" .to_string(); - let message = - "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp" - .to_string(); + let message = "oigjwr984 874Y8 7W68 8&$y*%&78 4 8724JIOGROGN I4UI928 98FRUWNKRJB GRGg ergeowp".to_string(); let expected = [ - 0x6B, 0x92, 0x32, 0x1B, 0xAD, 0x5A, 0x3A, 0x62, 0xE4, 0xC9, 0xD4, 0x2A, 0xAF, 0x34, - 0xF1, 0xA3, 0xA0, 0x23, 0x5B, 0x8D, 0x12, 0x7B, 0x4C, 0xE6, 0x23, 0xE6, 0x13, 0x81, - 0xF0, 0xDA, 0xE0, 0x02, 0x65, 0x71, 0x2B, 0x1D, 0x39, 0x17, 0x2A, 0x7E, 0x60, 0x68, - 0x26, 0x2B, 0xF0, 0x46, 0x03, 0xA0, 0x40, 0xC4, 0xBA, 0x78, 0xF9, 0x82, 0x35, 0x42, - 0xE2, 0x8A, 0x69, 0xEE, 0xE0, 0x29, 0x31, 0x66, 0xBE, 0xAF, 0x9E, 0x81, 0xD8, 0x58, - 0xCC, 0xA6, 0x4D, 0xBD, 0xEE, 0x31, 0x32, 0x2A, 0x2F, + 0x6B, 0x92, 0x32, 0x1B, 0xAD, 0x5A, 0x3A, 0x62, 0xE4, 0xC9, 0xD4, 0x2A, 0xAF, 0x34, 0xF1, 0xA3, 0xA0, 0x23, + 0x5B, 0x8D, 0x12, 0x7B, 0x4C, 0xE6, 0x23, 0xE6, 0x13, 0x81, 0xF0, 0xDA, 0xE0, 0x02, 0x65, 0x71, 0x2B, 0x1D, + 0x39, 0x17, 0x2A, 0x7E, 0x60, 0x68, 0x26, 0x2B, 0xF0, 0x46, 0x03, 0xA0, 0x40, 0xC4, 0xBA, 0x78, 0xF9, 0x82, + 0x35, 0x42, 0xE2, 0x8A, 0x69, 0xEE, 0xE0, 0x29, 0x31, 0x66, 0xBE, 0xAF, 0x9E, 0x81, 0xD8, 0x58, 0xCC, 0xA6, + 0x4D, 0xBD, 0xEE, 0x31, 0x32, 0x2A, 0x2F, ]; - assert_eq!( - Rc4::new(key.as_bytes()).process(message.as_bytes())[..], - expected[..] - ); + assert_eq!(Rc4::new(key.as_bytes()).process(message.as_bytes())[..], expected[..]); } } diff --git a/ironrdp/src/utils/rsa.rs b/ironrdp/src/utils/rsa.rs index 77ace89f..971d5b81 100644 --- a/ironrdp/src/utils/rsa.rs +++ b/ironrdp/src/utils/rsa.rs @@ -14,10 +14,7 @@ pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Res let der_object_sequence = der_object.as_sequence().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!( - "Unable to extract a sequence from the der object. Error: {:?}", - err - ), + format!("Unable to extract a sequence from the der object. Error: {:?}", err), ) })?; @@ -31,20 +28,14 @@ pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Res let n = der_object_sequence[0].as_slice().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!( - "Unable to extract a slice from public key modulus sequence: {:?}", - err - ), + format!("Unable to extract a slice from public key modulus sequence: {:?}", err), ) })?; let e = der_object_sequence[1].as_slice().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!( - "Unable to extract a slice from public key exponent sequence: {:?}", - err - ), + format!("Unable to extract a slice from public key exponent sequence: {:?}", err), ) })?; diff --git a/ironrdp/src/x224.rs b/ironrdp/src/x224.rs index 8c7b65da..be3bd579 100644 --- a/ironrdp/src/x224.rs +++ b/ironrdp/src/x224.rs @@ -7,7 +7,8 @@ use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{nego::NegotiationError, PduParsing}; +use crate::nego::NegotiationError; +use crate::PduParsing; pub const TPKT_HEADER_LENGTH: usize = 4; pub const TPDU_DATA_HEADER_LENGTH: usize = 3; @@ -41,10 +42,7 @@ impl TpktHeader { } } impl TpktHeader { - pub fn from_buffer_with_version( - mut stream: impl io::Read, - version: u8, - ) -> Result { + pub fn from_buffer_with_version(mut stream: impl io::Read, version: u8) -> Result { if version != TPKT_VERSION { return Err(NegotiationError::TpktVersionError); } @@ -88,19 +86,13 @@ impl Data { Self { data_length } } - pub fn from_buffer_with_version( - mut stream: impl io::Read, - version: u8, - ) -> Result { + pub fn from_buffer_with_version(mut stream: impl io::Read, version: u8) -> Result { let tpkt = TpktHeader::from_buffer_with_version(&mut stream, version)?; Self::from_buffer_with_tpkt_header(&mut stream, tpkt) } - fn from_buffer_with_tpkt_header( - mut stream: impl io::Read, - tpkt: TpktHeader, - ) -> Result { + fn from_buffer_with_tpkt_header(mut stream: impl io::Read, tpkt: TpktHeader) -> Result { read_and_check_tpdu_header(&mut stream, X224TPDUType::Data)?; let _eof = stream.read_u8()?; @@ -141,12 +133,8 @@ pub fn read_and_check_tpdu_header( ) -> Result<(), NegotiationError> { let _tpdu_length = usize::from(stream.read_u8()?); - let code = X224TPDUType::from_u8(stream.read_u8()?).ok_or_else(|| { - NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid tpdu code", - )) - })?; + let code = X224TPDUType::from_u8(stream.read_u8()?) + .ok_or_else(|| NegotiationError::IOError(io::Error::new(io::ErrorKind::InvalidData, "invalid tpdu code")))?; if code != required_code { return Err(NegotiationError::IOError(io::Error::new( diff --git a/ironrdp/src/x224/tests.rs b/ironrdp/src/x224/tests.rs index 6c28c250..97a11801 100644 --- a/ironrdp/src/x224/tests.rs +++ b/ironrdp/src/x224/tests.rs @@ -26,10 +26,7 @@ fn tpkt_header_is_read_correctly() { let correct_tpkt_header = TpktHeader::new(0x542); - assert_eq!( - correct_tpkt_header, - TpktHeader::from_buffer(stream.as_ref()).unwrap() - ); + assert_eq!(correct_tpkt_header, TpktHeader::from_buffer(stream.as_ref()).unwrap()); } #[test] diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs index b7ba8ee3..6349f203 100644 --- a/ironrdp_client/src/active_session.rs +++ b/ironrdp_client/src/active_session.rs @@ -2,23 +2,18 @@ mod codecs; mod fast_path; mod x224; -use std::{ - io, - sync::{Arc, Mutex}, - thread, - time::Duration, -}; +use std::sync::{Arc, Mutex}; +use std::time::Duration; +use std::{io, thread}; -use ironrdp::{ - codecs::rfx::image_processing::PixelFormat, fast_path::FastPathError, PduParsing, RdpPdu, -}; +use ironrdp::codecs::rfx::image_processing::PixelFormat; +use ironrdp::fast_path::FastPathError; +use ironrdp::{PduParsing, RdpPdu}; use log::warn; -use crate::{ - connection_sequence::ConnectionSequenceResult, - transport::{Decoder, RdpTransport}, - utils, InputConfig, RdpError, -}; +use crate::connection_sequence::ConnectionSequenceResult; +use crate::transport::{Decoder, RdpTransport}; +use crate::{utils, InputConfig, RdpError}; const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; diff --git a/ironrdp_client/src/active_session/codecs/rfx.rs b/ironrdp_client/src/active_session/codecs/rfx.rs index d4db662b..73169cb2 100644 --- a/ironrdp_client/src/active_session/codecs/rfx.rs +++ b/ironrdp_client/src/active_session/codecs/rfx.rs @@ -1,27 +1,22 @@ #[cfg(test)] mod tests; -use std::{ - cmp::min, - sync::{Arc, Mutex}, -}; +use std::cmp::min; +use std::sync::{Arc, Mutex}; -use ironrdp::{ - codecs::rfx::{ - self, color_conversion, - color_conversion::YCbCrBuffer, - dwt, - image_processing::{ImageRegion, ImageRegionMut, PixelFormat}, - quantization, - rectangles_processing::Region, - rlgr, subband_reconstruction, EntropyAlgorithm, Headers, Quant, RfxRectangle, Tile, - }, - PduBufferParsing, Rectangle, +use ironrdp::codecs::rfx::color_conversion::YCbCrBuffer; +use ironrdp::codecs::rfx::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; +use ironrdp::codecs::rfx::rectangles_processing::Region; +use ironrdp::codecs::rfx::{ + self, color_conversion, dwt, quantization, rlgr, subband_reconstruction, EntropyAlgorithm, Headers, Quant, + RfxRectangle, Tile, }; +use ironrdp::{PduBufferParsing, Rectangle}; use lazy_static::lazy_static; use log::debug; -use crate::{active_session::DecodedImage, RdpError}; +use crate::active_session::DecodedImage; +use crate::RdpError; const TILE_SIZE: u16 = 64; const SOURCE_PIXEL_FORMAT: PixelFormat = PixelFormat::BgrX32; @@ -134,16 +129,12 @@ impl DecodingContext { debug!("Channels: {:?}", self.channels); debug!("Region: {:?}", region); - let clipping_rectangles = - clipping_rectangles(region.rectangles.as_slice(), destination, width, height); + let clipping_rectangles = clipping_rectangles(region.rectangles.as_slice(), destination, width, height); debug!("Clipping rectangles: {:?}", clipping_rectangles); let clipping_rectangles_ref = &clipping_rectangles; - for (update_rectangle, tile_data) in - tiles_to_rectangles(tile_set.tiles.as_slice(), destination).zip(map_tiles_data( - tile_set.tiles.as_slice(), - tile_set.quants.as_slice(), - )) + for (update_rectangle, tile_data) in tiles_to_rectangles(tile_set.tiles.as_slice(), destination) + .zip(map_tiles_data(tile_set.tiles.as_slice(), tile_set.quants.as_slice())) { decode_tile( &tile_data, @@ -205,10 +196,7 @@ fn process_decoded_tile( data: output.get_mut(), }; debug!("Source image region: {:?}", source_image_region.region); - debug!( - "Destination image region: {:?}", - destination_image_region.region - ); + debug!("Destination image region: {:?}", destination_image_region.region); source_image_region.copy_to(&mut destination_image_region)?; } @@ -240,19 +228,8 @@ fn decode_tile( ycbcr_temp: &mut [Vec], temp: &mut [i16], ) -> Result<(), RdpError> { - for ((quant, data), ycbcr_buffer) in tile - .quants - .iter() - .zip(tile.data.iter()) - .zip(ycbcr_temp.iter_mut()) - { - decode_component( - quant, - entropy_algorithm, - data, - ycbcr_buffer.as_mut_slice(), - temp, - )?; + for ((quant, data), ycbcr_buffer) in tile.quants.iter().zip(tile.data.iter()).zip(ycbcr_temp.iter_mut()) { + decode_component(quant, entropy_algorithm, data, ycbcr_buffer.as_mut_slice(), temp)?; } let ycbcr_buffer = YCbCrBuffer { @@ -281,12 +258,7 @@ fn decode_component( Ok(()) } -fn clipping_rectangles( - rectangles: &[RfxRectangle], - destination: &Rectangle, - width: u16, - height: u16, -) -> Region { +fn clipping_rectangles(rectangles: &[RfxRectangle], destination: &Rectangle, width: u16, height: u16) -> Region { let mut clipping_rectangles = Region::new(); rectangles @@ -302,10 +274,7 @@ fn clipping_rectangles( clipping_rectangles } -fn tiles_to_rectangles<'a>( - tiles: &'a [Tile<'_>], - destination: &'a Rectangle, -) -> impl Iterator + 'a { +fn tiles_to_rectangles<'a>(tiles: &'a [Tile<'_>], destination: &'a Rectangle) -> impl Iterator + 'a { tiles.iter().map(move |t| Rectangle { left: destination.left + t.x * TILE_SIZE, top: destination.top + t.y * TILE_SIZE, diff --git a/ironrdp_client/src/active_session/codecs/rfx/tests.rs b/ironrdp_client/src/active_session/codecs/rfx/tests.rs index 2f65a35f..19baa756 100644 --- a/ironrdp_client/src/active_session/codecs/rfx/tests.rs +++ b/ironrdp_client/src/active_session/codecs/rfx/tests.rs @@ -24,1230 +24,1037 @@ fn decode_decodes_valid_sequence_of_messages() { let mut handler = DecodingContext::new(PixelFormat::BgrX32); - handler - .decode(&destination, &mut data, image.clone()) - .unwrap(); + handler.decode(&destination, &mut data, image.clone()).unwrap(); assert_eq!(expected, image.lock().unwrap().data.as_slice()); } const ENCODED_MESSAGES: [u8; 2970] = [ /* HEADERS as in 4.2.2 */ - 0xc0, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0xca, 0xac, 0xcc, 0xca, 0x00, 0x01, 0xc3, 0xcc, 0x0d, 0x00, - 0x00, 0x00, 0x01, 0xff, 0x00, 0x40, 0x00, 0x28, 0xa8, 0xc1, 0xcc, 0x0a, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x01, 0xc2, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x40, 0x00, - /* FRAME_BEGIN as in 4.2.3 */ + 0xc0, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0xca, 0xac, 0xcc, 0xca, 0x00, 0x01, 0xc3, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x01, + 0xff, 0x00, 0x40, 0x00, 0x28, 0xa8, 0xc1, 0xcc, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0xc2, 0xcc, 0x0c, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x40, 0x00, /* FRAME_BEGIN as in 4.2.3 */ 0xc4, 0xcc, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, /* REGION as in 4.2.3 */ - 0xc6, 0xcc, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x40, 0x00, 0xc1, 0xca, 0x01, 0x00, /* TILESET as in 4.2.4.1 */ - 0xc7, 0xcc, 0x3e, 0x0b, 0x00, 0x00, 0x01, 0x00, 0xc2, 0xca, 0x00, 0x00, 0x51, 0x50, 0x01, 0x40, - 0x01, 0x00, 0x23, 0x0b, 0x00, 0x00, 0x66, 0x66, 0x77, 0x88, 0x98, 0xc3, 0xca, 0x23, 0x0b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x03, 0xcf, 0x03, 0x93, 0x03, 0xc0, 0x01, - 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, 0x11, 0xdc, 0x22, 0x29, 0x74, 0xef, 0xfd, - 0x20, 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, 0x53, 0x0c, 0x1f, 0xe2, - 0x54, 0x0c, 0x77, 0x7c, 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, 0x5d, 0xff, - 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, 0x24, 0xa0, - 0x8f, 0xab, 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, 0x80, 0xc3, 0x22, 0x50, 0xaf, 0x4c, - 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, 0x65, 0xa3, 0xaf, - 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, 0x42, 0x87, - 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, 0x6a, 0xff, 0xfb, 0x43, 0x8b, - 0xa3, 0x7a, 0x32, 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, 0x08, 0x04, - 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, 0x2d, 0x40, - 0xa1, 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, 0x2f, 0xcc, 0x01, 0xce, 0x03, 0x48, 0xc0, - 0x8d, 0x63, 0xf4, 0xfd, 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, 0xc0, 0x8a, 0x09, 0x52, - 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, 0x84, 0x34, - 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, 0xb4, 0x1d, 0xa7, 0xfa, 0x47, 0x82, - 0xec, 0x7a, 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, 0x80, 0xc0, 0x69, - 0x01, 0xc2, 0x3e, 0x90, 0x14, 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, 0x13, 0x68, - 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, 0x41, 0x46, - 0x5f, 0xf8, 0xf1, 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, 0x8f, 0xe5, 0x75, 0x61, 0x03, - 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, 0xc0, 0x60, - 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, 0x59, 0x90, 0x80, 0x30, 0x64, 0x53, 0xff, - 0xf5, 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, 0x00, 0xe8, 0x7b, 0x46, - 0xe6, 0xd8, 0x02, 0x03, 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, 0x81, 0xb4, - 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, 0xf1, 0x70, - 0x30, 0x24, 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, 0x83, 0x00, 0x36, 0x20, 0xd1, 0x50, - 0xe7, 0xd8, 0xad, 0x58, 0x20, 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, 0xf1, 0x60, 0x75, - 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, 0x42, 0x81, - 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, 0x18, 0xa1, 0xaa, 0x47, 0x0e, - 0x11, 0x1a, 0x40, 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, 0x83, 0xa2, - 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, 0x32, 0xf8, - 0x86, 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, 0x78, 0xe7, - 0xd2, 0x97, 0x0b, 0xbc, 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, 0x18, 0x18, 0x11, 0x1f, - 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, 0x17, 0xde, - 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, 0x9e, 0xf4, 0x01, 0x43, 0xea, 0x0c, - 0x46, 0x73, 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, 0xb0, 0x8c, 0x54, - 0x59, 0xfa, 0xac, 0x76, 0x36, 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, 0x71, 0xcc, - 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, 0x57, 0xd7, - 0xff, 0x10, 0xf2, 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, 0xb4, 0x12, 0xdb, 0x1a, 0x48, - 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, 0x5b, 0x2f, - 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, 0x5f, 0x24, 0xfe, 0x8b, 0xcb, 0x42, 0x43, - 0x7e, 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, 0x30, 0x44, 0x15, 0x8f, - 0xe9, 0x0c, 0xd3, 0xa6, 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, 0x02, 0x54, - 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, 0x3f, 0xfd, - 0x44, 0x91, 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, 0x31, 0x34, 0x06, 0x41, 0x79, 0x6f, - 0xf0, 0xcc, 0x03, 0x79, 0x00, 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, 0x44, 0xc8, 0xeb, - 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, 0xf9, 0xb6, - 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, 0xef, 0x25, 0xfa, 0x5a, 0x3e, - 0x92, 0x3e, 0x79, 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, 0xf0, 0x7d, - 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, 0x6e, 0x2b, - 0x18, 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, 0xeb, 0xbe, 0x1f, 0x04, 0x34, 0x75, 0x84, - 0x31, 0x42, 0x4c, 0x65, 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, 0x26, 0x3a, 0x1b, 0xf4, - 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, 0xf9, 0xe5, - 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, 0xb0, 0xda, 0xa9, 0xcb, 0x58, 0xe4, - 0x18, 0x77, 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, 0x9b, 0x8d, 0xbc, - 0xcb, 0x9d, 0xc4, 0x18, 0x05, 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, 0xe5, 0x3a, - 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, 0x2d, 0xd4, - 0x3f, 0xfe, 0x61, 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, 0x47, 0xf4, 0xdc, 0xad, 0xaa, - 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, 0x47, 0x5a, - 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, 0xab, 0x9e, 0xab, 0x2b, 0xdd, 0x3c, 0x66, - 0xa0, 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, 0x00, 0xb0, 0x33, 0x56, - 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, 0xc8, 0x10, 0x56, 0x84, - 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, 0x2f, 0x82, 0x04, 0x9f, - 0x91, 0xc2, 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, 0x30, 0xf0, 0x08, 0x18, - 0xf1, 0x81, 0x45, 0x9a, 0x60, 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, 0xea, 0x31, 0x5a, 0xff, - 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, 0x81, 0xcb, 0x00, 0xe1, 0x10, 0xd2, 0xb4, 0xbe, - 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, 0x04, 0xf6, 0x06, 0x0e, 0x28, - 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, 0x85, 0x4c, 0x16, 0x80, - 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, 0xa9, 0xd5, 0xff, 0xff, - 0xea, 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, 0x78, 0x4a, 0x17, 0x52, - 0x5d, 0xe4, 0x25, 0x1f, 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, 0x82, 0x80, 0x90, 0x41, - 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, 0x2f, 0x43, 0x7e, 0x50, 0x78, 0xf2, 0x67, 0x78, 0x41, - 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, 0x1f, 0x22, 0x60, 0x41, 0x6c, 0x00, - 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, 0xa0, 0x5d, 0x1f, 0xa3, - 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, 0x76, 0x81, 0x05, 0xef, - 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, 0xc4, 0x7f, 0xff, 0xfd, - 0x04, 0x80, 0x06, 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, 0x00, 0xe0, 0x91, 0x00, - 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, 0x04, 0xe9, 0x45, 0x40, - 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, 0xfc, 0xbf, 0xc3, 0xb4, 0x46, 0x6a, 0x01, - 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, 0x08, 0x61, 0xfd, 0xa8, - 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, 0xff, 0xf3, 0x01, 0x45, - 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, 0x30, 0x01, 0x51, 0x42, - 0xbc, 0x43, 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, 0xe0, 0x7e, 0x99, 0xf2, - 0x4a, 0xe9, 0x40, 0x02, 0x81, 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, 0x91, 0xc8, 0x68, 0x25, - 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, 0x91, 0xdd, 0xeb, 0x93, 0x00, 0x21, 0x49, 0x24, - 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, 0x32, 0x00, 0xe3, 0x19, 0xfc, - 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, 0x84, 0xe1, 0x34, 0xd4, - 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, 0xa1, 0x40, 0x2e, 0x2f, - 0x48, 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, 0xa4, 0x16, 0xa2, 0x1b, - 0x84, 0xa2, 0x89, 0x58, 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, 0x32, 0x09, 0x02, 0x80, - 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, 0x99, 0xf2, 0xff, 0xff, 0x3d, 0x5a, 0x1f, 0xa9, 0x02, - 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, 0x41, 0x0c, 0x40, 0x0a, 0x20, 0xc4, - 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, 0xf8, 0x31, 0x02, 0x49, - 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, 0x15, 0xa4, 0x59, 0xc8, - 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, 0x21, 0x0e, 0x7f, 0x2b, - 0xc5, 0x08, 0x59, 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, 0xbb, 0x21, 0xff, 0xfe, - 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, 0x68, 0x8e, 0x07, 0xa6, - 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, 0x21, 0xae, 0xf7, 0xfb, 0x80, 0x28, 0x86, - 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, 0x0c, 0x29, 0xff, 0x0e, - 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, 0x10, 0x70, 0x30, 0xd8, - 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, 0x30, 0xdd, 0x00, 0xdb, - 0xe4, 0x48, 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, 0x60, 0xff, 0xa4, 0xa6, - 0xff, 0xf6, 0x8c, 0x00, 0x40, 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, 0x84, 0x38, 0x81, 0x94, - 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, 0x28, 0xa2, 0x1c, 0x2a, 0x8b, 0x64, 0xd4, 0x86, - 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, 0x4c, 0xbf, 0xb4, 0x1c, 0xd8, - 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, 0xc9, 0x0a, 0x64, 0x20, - 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, 0x07, 0x23, 0xb4, 0xbb, - 0x57, 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, 0xdd, 0x8e, 0x22, 0xdc, - 0x14, 0x2c, 0x61, 0xa3, 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, 0xf4, 0x96, 0xff, 0xf5, - 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, 0x9e, 0x43, 0xa5, 0x7f, 0xf0, 0x4c, 0x4c, 0x2b, 0x3c, - 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, 0x5d, 0x7c, 0x93, 0xba, 0x18, 0xaf, - 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, 0x92, 0x22, 0x4b, 0xdb, - 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, 0x49, 0x34, 0x42, 0x8b, - 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, 0xa9, 0xd8, 0x82, 0x07, - 0xa6, 0x30, 0x0f, 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, 0xe0, 0xd7, 0x02, 0x60, - 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, 0x48, 0x0e, 0x82, 0xa4, - 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, 0x31, 0x0e, 0x11, 0x77, 0xfe, 0x02, 0x60, - 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, 0x2a, 0x41, 0xfd, 0x8a, - 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, 0x13, 0x3e, 0x20, 0x3a, - 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, 0xb2, 0xe9, 0x3f, 0x41, - 0x55, 0x1f, 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, 0xbc, 0x3f, 0xc4, 0xc7, - 0x36, 0xdc, 0x23, 0xc8, 0xb8, 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, 0x00, 0xb2, 0x46, 0xa2, 0x56, - 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, 0xfa, 0x34, 0x0c, 0x5f, 0xf8, 0x0c, 0x12, 0x50, - 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, 0x25, 0x9d, 0xc1, 0xff, 0x7e, - 0x60, 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, 0xfe, 0x2d, 0x40, 0x7c, 0x28, - 0x9e, 0x71, 0x01, 0xd2, 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, 0x08, 0x4c, 0x04, 0x52, 0x7e, - 0xf2, 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, 0x80, 0xae, 0xaf, 0xfe, 0xb0, 0x6d, 0x23, 0xf2, 0x41, - 0xe3, 0x2e, 0x20, 0x11, 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, 0x38, 0xa3, 0x95, 0x82, 0x15, 0xf0, - 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, 0x26, 0x81, 0xe9, 0x47, 0xff, 0xee, 0x0d, 0x20, 0x34, - 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, 0x27, 0xf1, 0x90, 0x85, 0x09, 0x86, - 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, 0x16, 0xbf, 0x04, 0xa7, 0xf8, - 0xa2, 0x46, 0x0b, 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, 0xf4, 0x0b, 0x14, 0x82, 0xfa, - 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, 0x11, 0x7f, 0x03, 0x68, 0x44, 0xc1, 0x1f, 0x81, 0x3a, 0x6c, - 0x77, 0x95, 0x02, 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, 0x90, 0xe8, 0xfd, 0x1f, 0xa6, 0x40, 0x0b, - 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, 0xe8, 0xaf, 0x9a, 0xc1, 0x80, 0x0f, 0x0a, 0x14, 0x02, 0x3c, - 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, 0xe4, 0x83, 0x8e, 0x03, 0x88, 0xd5, 0xaf, - 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, 0x02, 0x43, 0xc4, 0x14, 0x2a, - 0x3f, 0xc8, 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, 0x56, 0x80, 0xa6, 0x85, 0x00, - 0xea, 0x3e, 0x8f, 0xeb, 0x9f, 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, 0x78, 0xa0, 0x1e, 0x6f, 0x54, - 0x78, 0x51, 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, 0x4c, 0x21, 0x3b, 0xfb, 0x90, 0x0a, 0xcc, 0x1d, - 0xd2, 0x47, 0xff, 0xfc, 0x70, 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, 0x7f, 0x91, 0xd3, 0x66, 0x2f, - 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, 0x6b, 0x72, 0x00, 0xab, 0x33, 0x04, 0xcf, 0x43, - 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, 0x41, 0x44, 0x84, 0x8e, 0x08, - 0x19, 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, 0xd2, 0xd0, 0x1f, 0x13, 0x42, - 0xa0, 0x21, 0x41, 0xc4, 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, 0x7d, 0x35, 0x4f, 0x7f, 0xff, - 0xf9, 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, 0x00, 0x09, 0x50, 0x4b, 0x90, 0x8a, 0xc7, 0x94, 0x4d, - 0x47, 0xc1, 0x62, 0x32, 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, 0x1c, 0x96, 0x44, 0xa0, 0x09, 0xc8, - 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, 0x3e, 0x3e, 0x19, 0x93, 0xa0, 0x36, 0x26, 0x22, 0x08, - 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, 0x06, 0xd4, 0xa8, 0x22, 0x73, 0x7b, - 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, 0x77, 0xac, 0xe0, 0xc4, 0x06, - 0x1f, 0xb8, 0xa5, 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, 0x71, 0x2a, 0x3d, 0x14, 0x19, - 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, 0x5f, 0xc5, 0x90, 0x0a, 0x85, 0xc2, 0x3f, 0x87, 0x03, 0xa8, - 0x26, 0x17, 0xc4, 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, 0x48, 0x16, 0xed, 0x96, 0x93, 0xec, 0x1b, - 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, 0x4d, 0xce, 0x40, 0xf3, 0x0c, 0x51, 0x4b, 0x84, 0x9e, 0x67, - 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, 0x81, 0x35, 0x87, 0xff, 0x98, 0x0f, 0x40, - 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, 0x80, 0x6a, 0xa0, 0x43, 0xff, - 0x2d, 0xd6, 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, 0x1a, 0x2a, 0x06, 0xc0, 0x01, - 0x40, 0x0c, 0x30, 0xc1, 0xd0, 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, 0xd3, 0xb4, 0x0d, 0x88, 0x98, - 0xea, 0xda, 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, 0x40, 0x14, 0xff, 0xff, 0xff, 0xea, 0xdb, 0x9b, - 0x92, 0xd8, 0x68, 0x08, 0x0b, 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, 0xb0, 0x9a, 0x98, 0xc0, 0x80, - 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, 0x03, 0x29, 0x7f, 0xe1, 0x6d, 0x4c, 0x0f, 0x01, - 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, 0x33, 0xf1, 0x80, 0xe1, 0x49, - 0x08, 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, 0x5e, 0xca, 0xf8, 0x3a, 0x00, - 0x1e, 0xb0, 0x06, 0x84, 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, 0x21, 0x43, 0x8e, 0xa5, 0x55, - 0x77, 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, 0x0c, 0x42, 0x20, 0xd2, 0x48, 0x61, 0xc8, 0x1c, 0x65, - 0xf8, 0xfe, 0x4c, 0x88, 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, 0x54, 0x09, 0x13, 0x28, 0x52, 0xf5, - 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, 0xcf, 0xf8, 0xf4, 0x7f, 0xff, 0xfd, 0x01, 0x49, 0xa4, - 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, 0xb2, 0x50, 0x76, 0x30, 0x5b, 0x03, - 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, 0x7a, 0xc6, 0x1c, 0x87, 0xd7, - 0x48, 0x7b, 0x49, 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, 0x0d, 0x1e, 0x9e, 0x53, 0xb7, - 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, 0x11, 0x3f, 0xb1, 0xa9, 0xa6, 0xe8, 0x4d, 0x47, 0x77, 0xda, - 0x43, 0x76, 0x89, 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, 0x09, 0x6f, 0xe7, 0x2d, 0x82, 0x35, 0x07, - 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, 0x42, 0x54, 0x80, 0x43, 0x12, 0x6c, 0x9a, 0x55, 0xc9, 0x0a, - 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, 0xc9, 0x4e, 0xfe, 0x5b, 0x30, 0xa4, 0xe8, - 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, 0x1f, 0xff, 0xfa, 0xc3, 0xe3, - 0x55, 0xf1, 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, 0x01, 0x26, 0x15, 0xa9, 0xf9, - 0xd9, 0x32, 0x41, 0x90, 0x36, 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, 0x8c, 0x6e, 0x42, 0x5d, 0xd8, - 0x1e, 0xfe, 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, 0x14, 0xeb, 0x6e, 0x48, 0x7a, 0x91, 0x88, 0x7b, - 0x7d, 0x8f, 0x72, 0x42, 0x39, 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, 0x60, 0x30, 0x00, - /* FRAME_END as in 4.2.3 */ + 0xc6, 0xcc, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, + 0xc1, 0xca, 0x01, 0x00, /* TILESET as in 4.2.4.1 */ + 0xc7, 0xcc, 0x3e, 0x0b, 0x00, 0x00, 0x01, 0x00, 0xc2, 0xca, 0x00, 0x00, 0x51, 0x50, 0x01, 0x40, 0x01, 0x00, 0x23, + 0x0b, 0x00, 0x00, 0x66, 0x66, 0x77, 0x88, 0x98, 0xc3, 0xca, 0x23, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xae, 0x03, 0xcf, 0x03, 0x93, 0x03, 0xc0, 0x01, 0x01, 0x15, 0x48, 0x99, 0xc7, 0x41, 0xa1, 0x12, 0x68, + 0x11, 0xdc, 0x22, 0x29, 0x74, 0xef, 0xfd, 0x20, 0x92, 0xe0, 0x4e, 0xa8, 0x69, 0x3b, 0xfd, 0x41, 0x83, 0xbf, 0x28, + 0x53, 0x0c, 0x1f, 0xe2, 0x54, 0x0c, 0x77, 0x7c, 0xa3, 0x05, 0x7c, 0x30, 0xd0, 0x9c, 0xe8, 0x09, 0x39, 0x1a, 0x5d, + 0xff, 0xe2, 0x01, 0x22, 0x13, 0x80, 0x90, 0x87, 0xd2, 0x9f, 0xfd, 0xfd, 0x50, 0x09, 0x0d, 0x24, 0xa0, 0x8f, 0xab, + 0xfe, 0x3c, 0x04, 0x84, 0xc6, 0x9c, 0xde, 0xf8, 0x80, 0xc3, 0x22, 0x50, 0xaf, 0x4c, 0x2a, 0x7f, 0xfe, 0xe0, 0x5c, + 0xa9, 0x52, 0x8a, 0x06, 0x7d, 0x3d, 0x09, 0x03, 0x65, 0xa3, 0xaf, 0xd2, 0x61, 0x1f, 0x72, 0x04, 0x50, 0x8d, 0x3e, + 0x16, 0x4a, 0x3f, 0xff, 0xfd, 0x41, 0x42, 0x87, 0x24, 0x37, 0x06, 0x17, 0x2e, 0x56, 0x05, 0x9c, 0x1c, 0xb3, 0x84, + 0x6a, 0xff, 0xfb, 0x43, 0x8b, 0xa3, 0x7a, 0x32, 0x43, 0x28, 0xe1, 0x1f, 0x50, 0x54, 0xfc, 0xca, 0xa5, 0xdf, 0xff, + 0x08, 0x04, 0x48, 0x15, 0x61, 0xd9, 0x76, 0x43, 0xf8, 0x2a, 0x07, 0xe9, 0x65, 0xf7, 0xc6, 0x89, 0x2d, 0x40, 0xa1, + 0xc3, 0x35, 0x8d, 0xf5, 0xed, 0xf5, 0x91, 0xae, 0x2f, 0xcc, 0x01, 0xce, 0x03, 0x48, 0xc0, 0x8d, 0x63, 0xf4, 0xfd, + 0x50, 0x20, 0x2d, 0x0c, 0x9b, 0xb0, 0x8d, 0x13, 0xc0, 0x8a, 0x09, 0x52, 0x1b, 0x02, 0x6e, 0x42, 0x3b, 0xd0, 0x13, + 0x4e, 0x84, 0x01, 0x26, 0x88, 0x6a, 0x04, 0x84, 0x34, 0x2a, 0xa5, 0x00, 0xba, 0x54, 0x48, 0x58, 0xea, 0x54, 0x02, + 0xb4, 0x1d, 0xa7, 0xfa, 0x47, 0x82, 0xec, 0x7a, 0x77, 0xfd, 0x00, 0x92, 0x66, 0x62, 0x04, 0xa6, 0x9b, 0xff, 0xf6, + 0x80, 0xc0, 0x69, 0x01, 0xc2, 0x3e, 0x90, 0x14, 0x20, 0x2f, 0xfc, 0x40, 0x96, 0x59, 0x58, 0x0c, 0xb1, 0x13, 0x68, + 0x20, 0x2e, 0xb5, 0xf5, 0xdf, 0xff, 0xf8, 0xfc, 0x56, 0x88, 0x60, 0x24, 0x53, 0xb5, 0x41, 0x46, 0x5f, 0xf8, 0xf1, + 0x7e, 0xde, 0x4a, 0x08, 0x97, 0xe0, 0x55, 0x03, 0x8f, 0xe5, 0x75, 0x61, 0x03, 0xf2, 0xe1, 0x90, 0x01, 0xa2, 0x8e, + 0x88, 0x04, 0x98, 0x05, 0x93, 0x6b, 0xff, 0xea, 0xc0, 0x60, 0xa1, 0x88, 0x04, 0x49, 0xbf, 0xf7, 0xff, 0x8c, 0xb4, + 0x59, 0x90, 0x80, 0x30, 0x64, 0x53, 0xff, 0xf5, 0xc4, 0x48, 0xda, 0xda, 0xcb, 0x80, 0x38, 0x61, 0x57, 0xb2, 0xaf, + 0x00, 0xe8, 0x7b, 0x46, 0xe6, 0xd8, 0x02, 0x03, 0x8a, 0x06, 0x18, 0x14, 0x32, 0x83, 0xd0, 0x8a, 0xee, 0xbc, 0x81, + 0xb4, 0x28, 0xc4, 0x7f, 0xf9, 0xa1, 0x69, 0x00, 0x91, 0xc5, 0x51, 0xff, 0xfe, 0x3f, 0xe9, 0xf1, 0x70, 0x30, 0x24, + 0x10, 0xa7, 0xcb, 0x1f, 0x8a, 0x24, 0x93, 0xed, 0x83, 0x00, 0x36, 0x20, 0xd1, 0x50, 0xe7, 0xd8, 0xad, 0x58, 0x20, + 0x09, 0x22, 0x80, 0xd0, 0xca, 0x5d, 0x1a, 0xd7, 0xf1, 0x60, 0x75, 0x2a, 0xf2, 0xd7, 0xf8, 0xc0, 0x32, 0x45, 0x86, + 0x00, 0x43, 0x01, 0xfe, 0x80, 0xf7, 0x42, 0x81, 0x74, 0x84, 0x4c, 0xa1, 0x60, 0x4c, 0xcb, 0x14, 0x58, 0x01, 0x4d, + 0x18, 0xa1, 0xaa, 0x47, 0x0e, 0x11, 0x1a, 0x40, 0x7d, 0x41, 0x02, 0xe3, 0x30, 0xcd, 0x33, 0x81, 0x34, 0x06, 0x46, + 0x83, 0xa2, 0x47, 0x1c, 0x04, 0xaa, 0x20, 0x12, 0xa2, 0x8b, 0x81, 0xc4, 0x9c, 0xa0, 0x2e, 0x06, 0x32, 0xf8, 0x86, + 0x85, 0x01, 0xe8, 0x70, 0xf9, 0x46, 0x09, 0x6a, 0xbf, 0xe0, 0xf5, 0xa4, 0xc8, 0x78, 0xe7, 0xd2, 0x97, 0x0b, 0xbc, + 0x3c, 0x97, 0xff, 0xd5, 0x40, 0x94, 0xb2, 0xc1, 0x18, 0x18, 0x11, 0x1f, 0x43, 0xc1, 0x18, 0xc3, 0x83, 0x7f, 0x9a, + 0x31, 0xc4, 0x8e, 0x70, 0x56, 0xda, 0xf6, 0x17, 0xde, 0xd1, 0x02, 0x0d, 0x42, 0x21, 0x13, 0xdc, 0x3a, 0x3c, 0x40, + 0x9e, 0xf4, 0x01, 0x43, 0xea, 0x0c, 0x46, 0x73, 0xa2, 0x7b, 0x0c, 0x80, 0xff, 0xe4, 0xad, 0x2e, 0x09, 0xb4, 0x63, + 0xb0, 0x8c, 0x54, 0x59, 0xfa, 0xac, 0x76, 0x36, 0x10, 0x05, 0xf0, 0x98, 0x88, 0x83, 0x42, 0x00, 0x20, 0x71, 0xcc, + 0xc1, 0xa9, 0x97, 0x3e, 0x5a, 0x0d, 0x04, 0x50, 0x92, 0x23, 0x20, 0x0d, 0x0a, 0x1c, 0x57, 0xd7, 0xff, 0x10, 0xf2, + 0x03, 0x0f, 0x58, 0x1b, 0xa5, 0x11, 0xf8, 0xf1, 0xb4, 0x12, 0xdb, 0x1a, 0x48, 0x56, 0x1f, 0xe3, 0xc7, 0x50, 0xe9, + 0x16, 0xb4, 0xbc, 0xb0, 0x40, 0x93, 0xea, 0xb5, 0x5b, 0x2f, 0xfc, 0x50, 0x0a, 0x6f, 0xcc, 0x25, 0xe0, 0x06, 0xab, + 0x5f, 0x24, 0xfe, 0x8b, 0xcb, 0x42, 0x43, 0x7e, 0x69, 0x02, 0x25, 0xc7, 0x38, 0x00, 0x6e, 0xe5, 0x80, 0xa8, 0xa4, + 0x30, 0x44, 0x15, 0x8f, 0xe9, 0x0c, 0xd3, 0xa6, 0xc2, 0x14, 0x34, 0x4a, 0xfe, 0x03, 0x7f, 0x06, 0xa5, 0x91, 0x02, + 0x54, 0xf1, 0xa1, 0xa1, 0x53, 0xbf, 0x11, 0xf2, 0x8f, 0x83, 0x67, 0x80, 0x09, 0x08, 0x12, 0x3f, 0xfd, 0x44, 0x91, + 0xc2, 0x83, 0x30, 0x50, 0x07, 0x02, 0x82, 0x4d, 0x31, 0x34, 0x06, 0x41, 0x79, 0x6f, 0xf0, 0xcc, 0x03, 0x79, 0x00, + 0x2c, 0x05, 0x24, 0xec, 0x8d, 0x29, 0x15, 0xaf, 0x44, 0xc8, 0xeb, 0x4f, 0xe1, 0xfd, 0xf1, 0x41, 0x48, 0x81, 0x08, + 0xaf, 0xfe, 0x51, 0x48, 0xce, 0xe7, 0xf9, 0xb6, 0x0a, 0x30, 0x83, 0x11, 0xf0, 0x0c, 0x3b, 0xd2, 0xa6, 0x24, 0x24, + 0xef, 0x25, 0xfa, 0x5a, 0x3e, 0x92, 0x3e, 0x79, 0x0e, 0x35, 0x61, 0xc8, 0xaa, 0x1c, 0x2e, 0x9a, 0x27, 0x7f, 0xff, + 0xf0, 0x7d, 0x30, 0x5b, 0xbc, 0x91, 0xff, 0xfe, 0x43, 0x24, 0x28, 0x66, 0xa7, 0x70, 0x99, 0x28, 0x6e, 0x2b, 0x18, + 0x2b, 0xd4, 0xa1, 0x77, 0x3b, 0x96, 0x9f, 0xf7, 0xeb, 0xbe, 0x1f, 0x04, 0x34, 0x75, 0x84, 0x31, 0x42, 0x4c, 0x65, + 0xaa, 0x09, 0x50, 0xa0, 0xc4, 0x51, 0x31, 0xd3, 0x26, 0x3a, 0x1b, 0xf4, 0x6e, 0x4a, 0x4e, 0x17, 0x25, 0x84, 0x78, + 0x7d, 0x2c, 0x3f, 0x46, 0x18, 0xca, 0x5f, 0xf9, 0xe5, 0x38, 0x2f, 0xd8, 0x71, 0x94, 0x94, 0xe2, 0xcc, 0xa3, 0x15, + 0xb0, 0xda, 0xa9, 0xcb, 0x58, 0xe4, 0x18, 0x77, 0x93, 0x8a, 0x51, 0xc6, 0x23, 0xc4, 0x4e, 0x6d, 0xd9, 0x14, 0x1e, + 0x9b, 0x8d, 0xbc, 0xcb, 0x9d, 0xc4, 0x18, 0x05, 0xf5, 0xa9, 0x29, 0xf8, 0x6d, 0x29, 0x38, 0xc7, 0x44, 0xe5, 0x3a, + 0xcd, 0xba, 0x61, 0x98, 0x4a, 0x57, 0x02, 0x96, 0x42, 0x02, 0xd9, 0x37, 0x11, 0xde, 0x2d, 0xd4, 0x3f, 0xfe, 0x61, + 0xe7, 0x33, 0xd7, 0x89, 0x4a, 0xdd, 0xb0, 0x34, 0x47, 0xf4, 0xdc, 0xad, 0xaa, 0xc9, 0x9d, 0x7e, 0x6d, 0x4b, 0xcc, + 0xdc, 0x17, 0x89, 0x57, 0xfd, 0xbb, 0x37, 0x75, 0x47, 0x5a, 0xec, 0x2c, 0x6e, 0x3c, 0x15, 0x92, 0x54, 0x64, 0x2c, + 0xab, 0x9e, 0xab, 0x2b, 0xdd, 0x3c, 0x66, 0xa0, 0x8f, 0x47, 0x5e, 0x93, 0x1a, 0x37, 0x16, 0xf4, 0x89, 0x23, 0x00, + 0x00, 0xb0, 0x33, 0x56, 0xfa, 0x14, 0x1e, 0xff, 0x48, 0x7a, 0x7e, 0x0f, 0x10, 0x1f, 0xf4, 0x91, 0xc8, 0x10, 0x56, + 0x84, 0xff, 0x08, 0xec, 0xb4, 0xac, 0x0e, 0x0f, 0xff, 0xad, 0xc5, 0xe0, 0x1a, 0x2f, 0x82, 0x04, 0x9f, 0x91, 0xc2, + 0x0e, 0xfe, 0x48, 0x36, 0x79, 0x01, 0x42, 0x14, 0xff, 0xfe, 0x30, 0xf0, 0x08, 0x18, 0xf1, 0x81, 0x45, 0x9a, 0x60, + 0xc1, 0x79, 0xf0, 0x14, 0x12, 0x10, 0xce, 0xea, 0x31, 0x5a, 0xff, 0xfc, 0x20, 0x13, 0x82, 0x2f, 0xc9, 0x02, 0x1f, + 0x81, 0xcb, 0x00, 0xe1, 0x10, 0xd2, 0xb4, 0xbe, 0x87, 0xff, 0xb0, 0x1e, 0x27, 0x81, 0xb7, 0x04, 0x06, 0x3c, 0xc2, + 0x04, 0xf6, 0x06, 0x0e, 0x28, 0xbc, 0x40, 0xbf, 0x12, 0x1e, 0x86, 0xd4, 0x6a, 0x7f, 0x18, 0x1b, 0x96, 0x85, 0x4c, + 0x16, 0x80, 0xdf, 0x2c, 0xa5, 0x8d, 0x86, 0xa3, 0x4a, 0x8a, 0xb4, 0x1b, 0xa1, 0x38, 0xa9, 0xd5, 0xff, 0xff, 0xea, + 0x06, 0x20, 0xd2, 0x95, 0x1e, 0xf4, 0x2f, 0xb2, 0x12, 0x0e, 0x61, 0x78, 0x4a, 0x17, 0x52, 0x5d, 0xe4, 0x25, 0x1f, + 0xfe, 0xc0, 0xb3, 0x1f, 0xff, 0xff, 0xec, 0x02, 0x82, 0x80, 0x90, 0x41, 0x88, 0xde, 0x48, 0x2c, 0x42, 0x52, 0x0b, + 0x2f, 0x43, 0x7e, 0x50, 0x78, 0xf2, 0x67, 0x78, 0x41, 0x34, 0x3d, 0xc8, 0x0f, 0x67, 0xa1, 0xeb, 0x21, 0xfe, 0xc0, + 0x1f, 0x22, 0x60, 0x41, 0x6c, 0x00, 0x92, 0x4b, 0x60, 0x10, 0xd0, 0x0d, 0x01, 0x35, 0x05, 0x0e, 0x87, 0xa2, 0xa0, + 0x5d, 0x1f, 0xa3, 0xaf, 0x7f, 0xf1, 0xbe, 0x8f, 0xcd, 0xa5, 0x00, 0x1c, 0x10, 0x40, 0x15, 0x76, 0x81, 0x05, 0xef, + 0xee, 0x00, 0x60, 0x84, 0x00, 0x99, 0x40, 0x4a, 0x82, 0x17, 0xe9, 0xfc, 0xc4, 0x7f, 0xff, 0xfd, 0x04, 0x80, 0x06, + 0x06, 0xdc, 0xaf, 0xa7, 0x7e, 0x94, 0x75, 0x74, 0x01, 0x00, 0xe0, 0x91, 0x00, 0x85, 0x7f, 0x8e, 0xd6, 0x0b, 0x20, + 0x21, 0x30, 0xca, 0x62, 0x8e, 0x07, 0x04, 0xe9, 0x45, 0x40, 0x5f, 0x47, 0x4a, 0x30, 0x15, 0x41, 0xcb, 0xdf, 0xff, + 0xfc, 0xbf, 0xc3, 0xb4, 0x46, 0x6a, 0x01, 0x40, 0xd0, 0xa7, 0x34, 0x18, 0x24, 0x1c, 0x2a, 0x45, 0xfe, 0xa8, 0x05, + 0x08, 0x61, 0xfd, 0xa8, 0x80, 0x71, 0x01, 0x25, 0x9c, 0xc1, 0x47, 0x17, 0x37, 0x02, 0x7a, 0x15, 0xff, 0xf3, 0x01, + 0x45, 0x7f, 0xd6, 0x80, 0x60, 0x83, 0x67, 0xf8, 0x9d, 0x2f, 0xf4, 0xdd, 0x8c, 0x30, 0x01, 0x51, 0x42, 0xbc, 0x43, + 0x7a, 0x6b, 0x9f, 0x84, 0x1e, 0x00, 0x48, 0xc1, 0xe0, 0xb7, 0xe0, 0x7e, 0x99, 0xf2, 0x4a, 0xe9, 0x40, 0x02, 0x81, + 0xc3, 0x00, 0x24, 0x3a, 0xc5, 0x52, 0x0f, 0x91, 0xc8, 0x68, 0x25, 0x40, 0x99, 0xa4, 0x25, 0x1a, 0x04, 0xd0, 0xa2, + 0x91, 0xdd, 0xeb, 0x93, 0x00, 0x21, 0x49, 0x24, 0x8b, 0x40, 0x75, 0x38, 0x14, 0xa1, 0xfd, 0x3f, 0x88, 0x25, 0xbf, + 0x32, 0x00, 0xe3, 0x19, 0xfc, 0xb9, 0xf8, 0x6f, 0x81, 0xc0, 0x01, 0xb3, 0x93, 0x20, 0x09, 0x08, 0x25, 0x84, 0xe1, + 0x34, 0xd4, 0x1b, 0x48, 0x88, 0x11, 0xa0, 0x15, 0x59, 0xd7, 0x07, 0x81, 0x81, 0x3b, 0xa1, 0x40, 0x2e, 0x2f, 0x48, + 0x70, 0x09, 0xc4, 0x76, 0x49, 0x0f, 0x2e, 0x50, 0x2e, 0x46, 0x19, 0xa4, 0x16, 0xa2, 0x1b, 0x84, 0xa2, 0x89, 0x58, + 0xfc, 0x4f, 0x3f, 0x40, 0x90, 0x4c, 0xa3, 0x01, 0x32, 0x09, 0x02, 0x80, 0x9c, 0x91, 0x13, 0x2c, 0xba, 0xde, 0x5d, + 0x99, 0xf2, 0xff, 0xff, 0x3d, 0x5a, 0x1f, 0xa9, 0x02, 0x90, 0x8f, 0xf3, 0x08, 0xbd, 0x01, 0xf8, 0xd0, 0x2a, 0x95, + 0x41, 0x0c, 0x40, 0x0a, 0x20, 0xc4, 0xd4, 0xcc, 0x6b, 0x0f, 0xf0, 0x80, 0xb1, 0x5d, 0x28, 0x3d, 0x08, 0xc2, 0xf8, + 0x31, 0x02, 0x49, 0x88, 0x14, 0x28, 0xed, 0xe8, 0x86, 0x3b, 0x00, 0x9f, 0x95, 0x06, 0x37, 0x15, 0xa4, 0x59, 0xc8, + 0x80, 0xb6, 0x10, 0xf0, 0xe5, 0xb8, 0x18, 0x00, 0x56, 0x1c, 0xff, 0x95, 0x21, 0x0e, 0x7f, 0x2b, 0xc5, 0x08, 0x59, + 0x10, 0xe1, 0x46, 0x31, 0x8d, 0xec, 0xe0, 0xa1, 0x99, 0xbb, 0x21, 0xff, 0xfe, 0x30, 0x10, 0xd0, 0x05, 0xe3, 0x08, + 0x50, 0xfc, 0xf3, 0x0e, 0x00, 0x8d, 0x68, 0x8e, 0x07, 0xa6, 0x80, 0x34, 0x42, 0xed, 0x1f, 0x88, 0x00, 0xf0, 0x8a, + 0x21, 0xae, 0xf7, 0xfb, 0x80, 0x28, 0x86, 0x0f, 0xff, 0xff, 0x82, 0xea, 0x47, 0x95, 0x91, 0xe0, 0x04, 0x01, 0x44, + 0x0c, 0x29, 0xff, 0x0e, 0x33, 0xe8, 0xc0, 0x54, 0x04, 0x23, 0xfc, 0x81, 0x5b, 0xf0, 0x3c, 0x07, 0x10, 0x70, 0x30, + 0xd8, 0x21, 0x6f, 0xef, 0xde, 0x46, 0x09, 0x43, 0xfa, 0x5f, 0xff, 0x0d, 0x72, 0x30, 0xdd, 0x00, 0xdb, 0xe4, 0x48, + 0x24, 0x97, 0x08, 0x46, 0xb1, 0x49, 0xc4, 0x4d, 0x80, 0x12, 0x60, 0xff, 0xa4, 0xa6, 0xff, 0xf6, 0x8c, 0x00, 0x40, + 0x05, 0x02, 0xb4, 0x0f, 0xf0, 0x3e, 0xfc, 0x84, 0x38, 0x81, 0x94, 0x8b, 0xfe, 0x49, 0xef, 0xc0, 0x10, 0x49, 0x88, + 0x28, 0xa2, 0x1c, 0x2a, 0x8b, 0x64, 0xd4, 0x86, 0xd7, 0xff, 0xff, 0xff, 0xeb, 0x91, 0x6b, 0x11, 0x10, 0x00, 0x69, + 0x4c, 0xbf, 0xb4, 0x1c, 0xd8, 0x00, 0x07, 0x16, 0x80, 0x60, 0x0a, 0x1c, 0x82, 0x42, 0x27, 0x82, 0x43, 0xc9, 0x0a, + 0x64, 0x20, 0x5a, 0x5f, 0x4e, 0xbf, 0x8c, 0x38, 0x82, 0x36, 0x02, 0x07, 0x72, 0x79, 0x07, 0x23, 0xb4, 0xbb, 0x57, + 0x5f, 0xe8, 0x04, 0xdd, 0x39, 0xe9, 0x07, 0x95, 0xbe, 0x04, 0x2b, 0xdd, 0x8e, 0x22, 0xdc, 0x14, 0x2c, 0x61, 0xa3, + 0xa9, 0xcd, 0x4f, 0x82, 0x5d, 0xa0, 0x44, 0xdf, 0xf4, 0x96, 0xff, 0xf5, 0x2b, 0xff, 0xfe, 0x01, 0x19, 0xd2, 0xa2, + 0x9e, 0x43, 0xa5, 0x7f, 0xf0, 0x4c, 0x4c, 0x2b, 0x3c, 0x33, 0xe2, 0x55, 0xff, 0x04, 0x06, 0x29, 0x2c, 0x0d, 0x22, + 0x5d, 0x7c, 0x93, 0xba, 0x18, 0xaf, 0xf9, 0x32, 0xa6, 0xc3, 0x99, 0x46, 0x79, 0xe3, 0x06, 0xa6, 0x38, 0x8b, 0x92, + 0x22, 0x4b, 0xdb, 0x1b, 0x36, 0x20, 0xb0, 0x6c, 0x20, 0xce, 0x37, 0x42, 0xe1, 0x66, 0xd4, 0x49, 0x34, 0x42, 0x8b, + 0xfa, 0x9c, 0x12, 0x99, 0xdc, 0x06, 0x87, 0xfa, 0x46, 0xf8, 0x2f, 0x04, 0xa9, 0xd8, 0x82, 0x07, 0xa6, 0x30, 0x0f, + 0xc0, 0xdf, 0x35, 0xe8, 0x90, 0xf0, 0xff, 0xff, 0xa8, 0xe0, 0xd7, 0x02, 0x60, 0x1a, 0xc3, 0x20, 0x28, 0xa2, 0x31, + 0x29, 0x3c, 0xeb, 0x04, 0xa5, 0xdd, 0x48, 0x0e, 0x82, 0xa4, 0xb6, 0x56, 0x22, 0x06, 0x57, 0xe0, 0xda, 0x10, 0x27, + 0x31, 0x0e, 0x11, 0x77, 0xfe, 0x02, 0x60, 0x16, 0x48, 0x81, 0x8c, 0x0d, 0x05, 0x17, 0x7f, 0xcb, 0xbb, 0x7e, 0x25, + 0x2a, 0x41, 0xfd, 0x8a, 0x7f, 0xc9, 0x36, 0x7c, 0xe0, 0x98, 0x7e, 0x92, 0xef, 0x7e, 0x06, 0x03, 0x13, 0x3e, 0x20, + 0x3a, 0xbf, 0x4c, 0xc3, 0x0f, 0x2e, 0x80, 0x74, 0xbf, 0x39, 0x3c, 0xf0, 0xa6, 0xb2, 0xe9, 0x3f, 0x41, 0x55, 0x1f, + 0x2c, 0xf5, 0xd2, 0x7e, 0x8c, 0xae, 0x4e, 0xaa, 0x61, 0x3c, 0xbc, 0x3f, 0xc4, 0xc7, 0x36, 0xdc, 0x23, 0xc8, 0xb8, + 0x52, 0xe2, 0x8a, 0x80, 0x18, 0x00, 0x00, 0xb2, 0x46, 0xa2, 0x56, 0x0d, 0x12, 0x94, 0xaa, 0xbd, 0x01, 0x07, 0xff, + 0xfa, 0x34, 0x0c, 0x5f, 0xf8, 0x0c, 0x12, 0x50, 0xaf, 0xd6, 0xd1, 0x89, 0x40, 0xa4, 0xff, 0xe0, 0xce, 0xc4, 0x49, + 0x25, 0x9d, 0xc1, 0xff, 0x7e, 0x60, 0x24, 0x5d, 0xcc, 0x10, 0xc0, 0xbe, 0x5a, 0x12, 0xd3, 0xc3, 0xfe, 0x2d, 0x40, + 0x7c, 0x28, 0x9e, 0x71, 0x01, 0xd2, 0x6e, 0x86, 0x0b, 0xc8, 0xf2, 0x9b, 0x45, 0x08, 0x4c, 0x04, 0x52, 0x7e, 0xf2, + 0x7e, 0xd9, 0xcc, 0x0b, 0x1c, 0x20, 0x80, 0xae, 0xaf, 0xfe, 0xb0, 0x6d, 0x23, 0xf2, 0x41, 0xe3, 0x2e, 0x20, 0x11, + 0x4b, 0x74, 0x89, 0xdd, 0xff, 0xa8, 0x38, 0xa3, 0x95, 0x82, 0x15, 0xf0, 0xd0, 0xd5, 0xf1, 0x92, 0x8e, 0xee, 0xc0, + 0x26, 0x81, 0xe9, 0x47, 0xff, 0xee, 0x0d, 0x20, 0x34, 0x31, 0x3a, 0xef, 0x40, 0xb2, 0x29, 0x47, 0x19, 0x7f, 0x04, + 0x27, 0xf1, 0x90, 0x85, 0x09, 0x86, 0x7d, 0x42, 0xe2, 0x54, 0x5d, 0x5f, 0xe8, 0x0e, 0xd0, 0x2c, 0xaa, 0x16, 0xbf, + 0x04, 0xa7, 0xf8, 0xa2, 0x46, 0x0b, 0x08, 0x7a, 0x79, 0xe9, 0x28, 0x62, 0x7c, 0x33, 0xf4, 0x0b, 0x14, 0x82, 0xfa, + 0x61, 0xeb, 0xc1, 0xff, 0x4c, 0xa4, 0x11, 0x7f, 0x03, 0x68, 0x44, 0xc1, 0x1f, 0x81, 0x3a, 0x6c, 0x77, 0x95, 0x02, + 0x2b, 0x53, 0x80, 0xe5, 0x10, 0x1e, 0x90, 0xe8, 0xfd, 0x1f, 0xa6, 0x40, 0x0b, 0x13, 0xff, 0x4e, 0x4d, 0x7f, 0x52, + 0xe8, 0xaf, 0x9a, 0xc1, 0x80, 0x0f, 0x0a, 0x14, 0x02, 0x3c, 0xc0, 0x09, 0x13, 0xe7, 0xdc, 0xc0, 0x1a, 0x28, 0xa0, + 0xe4, 0x83, 0x8e, 0x03, 0x88, 0xd5, 0xaf, 0x1a, 0xbd, 0x91, 0x00, 0xb7, 0x4e, 0xba, 0xdf, 0xf8, 0xdb, 0xcc, 0x02, + 0x43, 0xc4, 0x14, 0x2a, 0x3f, 0xc8, 0x0d, 0x09, 0x1c, 0x44, 0xf4, 0x01, 0x3c, 0xca, 0x28, 0x56, 0x80, 0xa6, 0x85, + 0x00, 0xea, 0x3e, 0x8f, 0xeb, 0x9f, 0xfc, 0x6e, 0x07, 0xc4, 0xe0, 0x30, 0x78, 0xa0, 0x1e, 0x6f, 0x54, 0x78, 0x51, + 0xff, 0x56, 0x4a, 0x01, 0x47, 0x02, 0x4c, 0x21, 0x3b, 0xfb, 0x90, 0x0a, 0xcc, 0x1d, 0xd2, 0x47, 0xff, 0xfc, 0x70, + 0x18, 0x22, 0xc0, 0xb9, 0x2f, 0xe9, 0x7f, 0x91, 0xd3, 0x66, 0x2f, 0x80, 0x2c, 0x24, 0xa7, 0xfa, 0x84, 0x51, 0xab, + 0x6b, 0x72, 0x00, 0xab, 0x33, 0x04, 0xcf, 0x43, 0xff, 0x17, 0x51, 0x84, 0x0c, 0x01, 0x50, 0x10, 0x8f, 0x90, 0x34, + 0x41, 0x44, 0x84, 0x8e, 0x08, 0x19, 0x04, 0x48, 0x50, 0x84, 0x38, 0x3d, 0x02, 0x52, 0xf9, 0x7c, 0xd2, 0xd0, 0x1f, + 0x13, 0x42, 0xa0, 0x21, 0x41, 0xc4, 0x02, 0x02, 0x3d, 0x09, 0xc8, 0xfd, 0x60, 0x7d, 0x35, 0x4f, 0x7f, 0xff, 0xf9, + 0x97, 0x6a, 0xd8, 0x00, 0xc3, 0x83, 0x00, 0x09, 0x50, 0x4b, 0x90, 0x8a, 0xc7, 0x94, 0x4d, 0x47, 0xc1, 0x62, 0x32, + 0x28, 0x24, 0x09, 0x52, 0x2e, 0x2e, 0x1c, 0x96, 0x44, 0xa0, 0x09, 0xc8, 0xce, 0x64, 0xa9, 0x1c, 0x19, 0x0e, 0x52, + 0x3e, 0x3e, 0x19, 0x93, 0xa0, 0x36, 0x26, 0x22, 0x08, 0x9a, 0x00, 0xdd, 0x66, 0x3a, 0x93, 0xd5, 0x89, 0xd1, 0x40, + 0x06, 0xd4, 0xa8, 0x22, 0x73, 0x7b, 0x3d, 0x3f, 0xe3, 0x04, 0x94, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x56, 0x77, 0xac, + 0xe0, 0xc4, 0x06, 0x1f, 0xb8, 0xa5, 0x80, 0xfd, 0x68, 0x1c, 0x32, 0x16, 0x03, 0xde, 0x71, 0x2a, 0x3d, 0x14, 0x19, + 0xbe, 0xc2, 0x88, 0xd9, 0x24, 0x92, 0x5f, 0xc5, 0x90, 0x0a, 0x85, 0xc2, 0x3f, 0x87, 0x03, 0xa8, 0x26, 0x17, 0xc4, + 0x06, 0x86, 0x12, 0x87, 0x76, 0x0a, 0x48, 0x16, 0xed, 0x96, 0x93, 0xec, 0x1b, 0x30, 0x73, 0xe8, 0x1a, 0x3f, 0xff, + 0x4d, 0xce, 0x40, 0xf3, 0x0c, 0x51, 0x4b, 0x84, 0x9e, 0x67, 0x2b, 0x15, 0x40, 0x1a, 0xa0, 0xfc, 0x10, 0x0f, 0xd8, + 0x81, 0x35, 0x87, 0xff, 0x98, 0x0f, 0x40, 0x00, 0xba, 0xc0, 0x71, 0xe2, 0x00, 0x18, 0x28, 0xb3, 0x82, 0xcc, 0x80, + 0x6a, 0xa0, 0x43, 0xff, 0x2d, 0xd6, 0x04, 0x8a, 0x68, 0xff, 0xff, 0xff, 0xfc, 0x1a, 0xf3, 0x1a, 0x2a, 0x06, 0xc0, + 0x01, 0x40, 0x0c, 0x30, 0xc1, 0xd0, 0xd7, 0x4f, 0xcb, 0x74, 0x1f, 0x07, 0xd3, 0xb4, 0x0d, 0x88, 0x98, 0xea, 0xda, + 0x9f, 0xce, 0x2b, 0x3c, 0x55, 0xb3, 0x40, 0x14, 0xff, 0xff, 0xff, 0xea, 0xdb, 0x9b, 0x92, 0xd8, 0x68, 0x08, 0x0b, + 0x41, 0x09, 0x26, 0x40, 0x8c, 0xf1, 0xb0, 0x9a, 0x98, 0xc0, 0x80, 0x8b, 0xf0, 0x3d, 0xe7, 0xec, 0x19, 0x68, 0x21, + 0x03, 0x29, 0x7f, 0xe1, 0x6d, 0x4c, 0x0f, 0x01, 0xd1, 0x51, 0x01, 0x1a, 0x50, 0x2a, 0x59, 0x27, 0x80, 0xc1, 0x6e, + 0x33, 0xf1, 0x80, 0xe1, 0x49, 0x08, 0xe9, 0x17, 0xff, 0xff, 0xff, 0x80, 0x5a, 0x10, 0x10, 0x36, 0x5e, 0xca, 0xf8, + 0x3a, 0x00, 0x1e, 0xb0, 0x06, 0x84, 0x01, 0xf3, 0x07, 0x1b, 0x4a, 0xc0, 0x1e, 0x21, 0x43, 0x8e, 0xa5, 0x55, 0x77, + 0xc7, 0x65, 0x7c, 0xc2, 0xdf, 0x5e, 0x0c, 0x42, 0x20, 0xd2, 0x48, 0x61, 0xc8, 0x1c, 0x65, 0xf8, 0xfe, 0x4c, 0x88, + 0x71, 0x1f, 0x82, 0x50, 0x81, 0xa3, 0x54, 0x09, 0x13, 0x28, 0x52, 0xf5, 0xe0, 0x82, 0xc3, 0x06, 0x7f, 0xfa, 0x2c, + 0xcf, 0xf8, 0xf4, 0x7f, 0xff, 0xfd, 0x01, 0x49, 0xa4, 0xb8, 0xde, 0x62, 0x84, 0xfe, 0xed, 0x65, 0x1f, 0x3c, 0x3c, + 0xb2, 0x50, 0x76, 0x30, 0x5b, 0x03, 0xc0, 0x08, 0xa6, 0x64, 0x90, 0xc8, 0xcd, 0x14, 0x6e, 0x69, 0x46, 0x7a, 0xc6, + 0x1c, 0x87, 0xd7, 0x48, 0x7b, 0x49, 0x05, 0x2d, 0x5e, 0x7f, 0xcb, 0x67, 0xf0, 0xd9, 0x0d, 0x1e, 0x9e, 0x53, 0xb7, + 0x64, 0xa5, 0xa5, 0x10, 0x39, 0x06, 0x11, 0x3f, 0xb1, 0xa9, 0xa6, 0xe8, 0x4d, 0x47, 0x77, 0xda, 0x43, 0x76, 0x89, + 0x45, 0x09, 0x70, 0xc2, 0x38, 0x0f, 0x09, 0x6f, 0xe7, 0x2d, 0x82, 0x35, 0x07, 0xfe, 0x64, 0x18, 0x2e, 0xb8, 0x04, + 0x42, 0x54, 0x80, 0x43, 0x12, 0x6c, 0x9a, 0x55, 0xc9, 0x0a, 0xa0, 0x79, 0x47, 0x52, 0x65, 0x2a, 0xff, 0x50, 0x11, + 0xc9, 0x4e, 0xfe, 0x5b, 0x30, 0xa4, 0xe8, 0x30, 0x63, 0xff, 0x21, 0x12, 0x1b, 0xdc, 0x1c, 0x01, 0x41, 0x51, 0x1f, + 0xff, 0xfa, 0xc3, 0xe3, 0x55, 0xf1, 0x66, 0xe2, 0xd5, 0x78, 0x5e, 0xfa, 0x4d, 0xf2, 0x61, 0x01, 0x26, 0x15, 0xa9, + 0xf9, 0xd9, 0x32, 0x41, 0x90, 0x36, 0x4e, 0xae, 0xe3, 0x0b, 0x16, 0x56, 0x8c, 0x6e, 0x42, 0x5d, 0xd8, 0x1e, 0xfe, + 0x1d, 0x40, 0x3a, 0x50, 0x9f, 0x09, 0x14, 0xeb, 0x6e, 0x48, 0x7a, 0x91, 0x88, 0x7b, 0x7d, 0x8f, 0x72, 0x42, 0x39, + 0xb0, 0x1c, 0x65, 0x18, 0x23, 0x8b, 0x60, 0x30, 0x00, /* FRAME_END as in 4.2.3 */ 0xc5, 0xcc, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, ]; const DECODED_IMAGE: [u8; IMAGE_WIDTH * IMAGE_HEIGHT * FORMAT_SIZE] = [ - 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, - 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, - 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDF, 0x9A, 0x1F, 0xFF, - 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, 0xFF, - 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, - 0xE0, 0x93, 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, - 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, - 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, - 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, 0xFF, 0xDA, 0x8C, 0x12, 0xFF, - 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, 0x11, 0xFF, - 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, - 0xD9, 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, - 0xD8, 0x81, 0x0C, 0xFF, 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, - 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, - 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, - 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x23, 0xFF, - 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, - 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, - 0xDF, 0x9B, 0x22, 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, - 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, - 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, - 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1C, 0xFF, - 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8E, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, - 0xDB, 0x8D, 0x12, 0xFF, 0xDB, 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, - 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, - 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, 0x0D, 0xFF, - 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, - 0xE2, 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, - 0xE2, 0xA1, 0x26, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, - 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, - 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, - 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, - 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, - 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, - 0xDC, 0x96, 0x1C, 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, - 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, - 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, - 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, 0xDD, 0x8E, 0x15, 0xFF, - 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, - 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, - 0xDC, 0x86, 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, - 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, - 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, - 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, - 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, - 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, - 0xE5, 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, - 0xE3, 0x9E, 0x24, 0xFF, 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, - 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, - 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, - 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, 0x97, 0x1C, 0xFF, - 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, - 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, - 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, - 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, - 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, - 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, - 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, 0xFF, - 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, - 0xE7, 0xAA, 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, - 0xE4, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, - 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, - 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, 0xFF, 0xE7, 0xA0, 0x24, 0xFF, - 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, 0x18, 0xFF, - 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, - 0x7D, 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, - 0xAF, 0x87, 0x55, 0xFF, 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, - 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, - 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, - 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, 0x90, 0x18, 0xFF, - 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, - 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, - 0xE0, 0x87, 0x11, 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, - 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, - 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, - 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, 0xE5, 0xA9, 0x2F, 0xFF, - 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, 0xFF, - 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, - 0xE8, 0xA4, 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, - 0xF6, 0xAD, 0x12, 0xFF, 0xF8, 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, - 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, - 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, - 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, 0x8D, 0xFF, - 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, - 0xE3, 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, - 0xE2, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, - 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, - 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, - 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, 0x8A, 0x13, 0xFF, - 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, - 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, - 0xE2, 0xAB, 0x33, 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, - 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, - 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, - 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, 0xA7, 0x8A, 0x4D, 0xFF, - 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, 0xFF, - 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, - 0x28, 0x6F, 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, - 0x24, 0x64, 0xF1, 0xFF, 0x21, 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, - 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, 0xFF, 0xE5, 0x98, 0x17, 0xFF, - 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, 0x18, 0xFF, - 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, - 0xDE, 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, - 0xE0, 0x8A, 0x10, 0xFF, 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, - 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, - 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, 0xAD, 0x2C, 0xFF, - 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, - 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, - 0xE7, 0xA9, 0x2B, 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, - 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, - 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, - 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, 0x2B, 0x7B, 0xF5, 0xFF, - 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, 0xFF, - 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, - 0xF0, 0xA7, 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, - 0xE4, 0x95, 0x1D, 0xFF, 0xE2, 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, - 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, 0xFF, 0xE1, 0x8E, 0x12, 0xFF, - 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, 0x15, 0xFF, - 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, - 0xE6, 0xC0, 0x5F, 0xFF, 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, - 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, - 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, - 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, 0x4F, 0xF1, 0xFF, - 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, - 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, - 0x37, 0x8B, 0xF9, 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, - 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, - 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, - 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, 0xE3, 0x98, 0x1E, 0xFF, - 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, 0xFF, - 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, - 0xE0, 0x91, 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, - 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, - 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, - 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, - 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, 0x2F, 0xFF, - 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, - 0xE6, 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, - 0xEE, 0xAF, 0x28, 0xFF, 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, - 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, - 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, - 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, 0x98, 0xF8, 0xFF, - 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, - 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, - 0x62, 0x6C, 0xBE, 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, - 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, - 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, - 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, 0xE1, 0x91, 0x15, 0xFF, - 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, 0xFF, - 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, - 0xDC, 0x89, 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, - 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, - 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, - 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, 0xFF, 0xF1, 0xAE, 0x34, 0xFF, - 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, 0xEC, 0xFF, - 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, - 0x3E, 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, - 0x4C, 0xA1, 0xFA, 0xFF, 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, - 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, - 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, - 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, 0x97, 0x25, 0xFF, - 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, - 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, - 0xE4, 0x95, 0x1C, 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, - 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, - 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, - 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, 0xEC, 0x88, 0x03, 0xFF, - 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, 0xFF, - 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, - 0xEA, 0xB0, 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, - 0xF8, 0xB6, 0x22, 0xFF, 0x44, 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, - 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, - 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, 0xFF, 0x53, 0xAE, 0xF8, 0xFF, - 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, 0xFA, 0xFF, - 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, - 0x50, 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, - 0xEF, 0xA5, 0x1A, 0xFF, 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, - 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, - 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, - 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, 0x98, 0x1C, 0xFF, - 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, - 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, - 0xF0, 0x8C, 0x0C, 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, - 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, - 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, - 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, 0xEF, 0xB1, 0x34, 0xFF, - 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, 0xFF, - 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, - 0x4C, 0xB4, 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, - 0x60, 0xB7, 0xFA, 0xFF, 0x64, 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, - 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, - 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, 0xFF, 0x6E, 0x94, 0xDF, 0xFF, - 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, 0x4A, 0xFF, - 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, - 0xFE, 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, - 0xE4, 0x91, 0x18, 0xFF, 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, - 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, - 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, - 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, 0x8A, 0x0B, 0xFF, - 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, - 0xED, 0xB6, 0x39, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, - 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, - 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, - 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, 0x69, 0xC3, 0xF9, 0xFF, - 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, 0xFF, - 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, - 0x6C, 0xB4, 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, - 0xF3, 0xA1, 0x13, 0xFF, 0xEF, 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, - 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, - 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, 0xFF, 0xFF, 0x93, 0x18, 0xFF, - 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, 0x1B, 0xFF, - 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, - 0xA0, 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, - 0x00, 0x77, 0x33, 0xFF, 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, - 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, - 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, - 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, 0xB3, 0x32, 0xFF, - 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, - 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, - 0x5A, 0xBB, 0xF8, 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, - 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, - 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, - 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, 0xDB, 0xAB, 0x47, 0xFF, - 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, 0xFF, - 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, - 0x25, 0xAD, 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, - 0x53, 0x9E, 0x51, 0xFF, 0x6D, 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, - 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, - 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, 0xFF, 0x11, 0x7F, 0x35, 0xFF, - 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, 0x0F, 0xFF, - 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, - 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, - 0xEB, 0xB8, 0x3C, 0xFF, 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, - 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, - 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, - 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, 0xD5, 0xFA, 0xFF, - 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, - 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, - 0x8F, 0xCF, 0xFB, 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, - 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, - 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, - 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, 0x1B, 0xB8, 0x75, 0xFF, - 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, 0xFF, - 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, - 0x4C, 0xAC, 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, - 0x14, 0x86, 0x49, 0xFF, 0x8B, 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, - 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, - 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, - 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, 0x50, 0xFF, - 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, - 0x3C, 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, - 0x65, 0xBF, 0xF9, 0xFF, 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, - 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, - 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, - 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, 0x9F, 0x11, 0xFF, - 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, - 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, - 0x44, 0xD2, 0x99, 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, - 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, - 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, - 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, 0x65, 0xB9, 0x80, 0xFF, - 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, 0xFF, - 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, - 0xED, 0xBC, 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, - 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, - 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, - 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, 0xFF, 0x65, 0xBC, 0xF8, 0xFF, - 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, 0xF9, 0xFF, - 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, - 0x62, 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, - 0xAB, 0xE5, 0xF7, 0xFF, 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, - 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, - 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, - 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, 0xD0, 0x9B, 0xFF, - 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, - 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, - 0x2B, 0xA9, 0x64, 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, - 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, - 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, - 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, 0xFF, - 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, - 0x49, 0xA5, 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, - 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, - 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, - 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, - 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, 0x15, 0xFF, - 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, - 0x7B, 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, - 0x67, 0xE5, 0xC6, 0xFF, 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, - 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, - 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, - 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, 0xC4, 0x9F, 0xFF, - 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, - 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, - 0xF0, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, - 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, - 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, - 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, 0x78, 0xC9, 0xFA, 0xFF, - 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, 0xFF, - 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, - 0x6E, 0xCB, 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, - 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, - 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, - 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, - 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, 0xB8, 0xFF, - 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, - 0x48, 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, - 0x2C, 0xAC, 0x66, 0xFF, 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, - 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, - 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, - 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, - 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, - 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, - 0x57, 0xB6, 0xF7, 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, - 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, - 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, - 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, 0xD7, 0xF8, 0xFC, 0xFF, - 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, 0xFF, - 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, - 0xA6, 0xEF, 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, - 0x9E, 0xEF, 0xE0, 0xFF, 0x92, 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, - 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, - 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, 0xFF, 0x35, 0xBC, 0x77, 0xFF, - 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, 0x57, 0xFF, - 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, - 0xEF, 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, - 0xF1, 0xC1, 0x43, 0xFF, 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, - 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, - 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, - 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, 0xDB, 0xFB, 0xFF, - 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, - 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, - 0xCA, 0xFA, 0xFF, 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, - 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, - 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, - 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, 0xB5, 0xF3, 0xE8, 0xFF, - 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, 0xFF, - 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, - 0x50, 0xDC, 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, - 0x32, 0xB4, 0x6E, 0xFF, 0x2E, 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, - 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, - 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, 0xFF, 0xF1, 0xC3, 0x46, 0xFF, - 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, 0x3C, 0xFF, - 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, - 0x38, 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, - 0xAE, 0xD7, 0xF7, 0xFF, 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, - 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, - 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, - 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, 0xFC, 0xFC, 0xFF, - 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, - 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, - 0xCA, 0xF6, 0xEE, 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, - 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, - 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, - 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, 0x3B, 0xC2, 0x7F, 0xFF, - 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, 0xFF, - 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, - 0xF1, 0xC5, 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, - 0xF2, 0xC3, 0x45, 0xFF, 0xF1, 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, - 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, - 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, 0xFF, 0x72, 0xC2, 0xFF, 0xFF, - 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, 0xFF, 0xFF, - 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, - 0xCD, 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, - 0xDD, 0xF5, 0xFB, 0xFF, 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, - 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, - 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, - 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, 0xF9, 0xF1, 0xFF, - 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, - 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, - 0x50, 0xE1, 0xA4, 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, - 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, - 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, - 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, 0xF2, 0xC5, 0x48, 0xFF, - 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, 0xFF, - 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, - 0x32, 0x83, 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, - 0xB5, 0xDC, 0xF3, 0xFF, 0x97, 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, - 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, - 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, - 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, 0xFF, 0xFF, - 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, - 0xD6, 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, - 0xD9, 0xF8, 0xF2, 0xFF, 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, - 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, - 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, 0xCB, 0x87, 0xFF, - 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, - 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, - 0xF2, 0xC7, 0x4E, 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, - 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, - 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, - 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, 0xFF, 0xC0, 0x26, 0xFF, - 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, 0xFF, - 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, - 0xF4, 0xBA, 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, - 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, - 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, - 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, - 0x93, 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, - 0x4D, 0xE6, 0xA6, 0xFF, 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, - 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, - 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, - 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, 0xCA, 0x4D, 0xFF, - 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, - 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, - 0xFF, 0xC7, 0x28, 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, - 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, - 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, - 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, 0xF2, 0xC9, 0x6F, 0xFF, - 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, 0xFF, - 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, - 0xF8, 0xFF, 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, - 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, - 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xDB, 0xFE, 0xED, 0xFF, - 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, 0x83, 0xFF, - 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, - 0xEB, 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, - 0xF4, 0xCA, 0x52, 0xFF, 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, - 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, - 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, - 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, - 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, - 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, - 0xF2, 0xBA, 0x2F, 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, - 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, - 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, 0xEB, 0xFD, 0xFD, 0xFF, - 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, - 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, - 0xE9, 0xFD, 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, - 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, - 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, - 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xE9, 0x95, 0x10, 0xFF, - 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, 0x4B, 0xFF, - 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, - 0xFC, 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, - 0xF3, 0xC4, 0x45, 0xFF, 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, - 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, - 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, - 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, 0xB5, 0x3E, 0xFF, - 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, - 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, - 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, - 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, - 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, 0x8A, 0xF3, 0xD2, 0xFF, - 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, 0xFF, - 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, - 0xF2, 0x95, 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, - 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, - 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, 0xFF, 0xCD, 0x83, 0x17, 0xFF, - 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, 0x2E, 0xFF, - 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, - 0xF5, 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, - 0xFF, 0xFE, 0xE2, 0xFF, 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, - 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, - 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, 0xFF, 0xFD, 0xFF, - 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, - 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, - 0xAB, 0xF8, 0xE2, 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, - 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, - 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, - 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, - 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, 0xFF, - 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, - 0xC6, 0x74, 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, - 0xCC, 0x84, 0x0B, 0xFF, 0xCE, 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, - 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, - 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, - 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, 0xBB, 0xFF, - 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, - 0xEE, 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, - 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, - 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, - 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, 0xE5, 0xB7, 0xFF, - 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, - 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, - 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, - 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, - 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, 0xCE, 0x82, 0x08, 0xFF, - 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, 0xFF, - 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, - 0xF8, 0xEC, 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, - 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, - 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, 0xFC, 0xFF, - 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, - 0xEB, 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, - 0x9D, 0xED, 0xD2, 0xFF, 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, - 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, - 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, - 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, 0x95, 0x10, 0xFF, - 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, - 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, - 0xBB, 0x5C, 0x00, 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, - 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, - 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, - 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, 0xFB, 0xFC, 0xDF, 0xFF, - 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, 0xFF, - 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, - 0xF5, 0xB1, 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, - 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, - 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, - 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, - 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, 0x9E, 0xFF, - 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, - 0xFF, 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, - 0xF3, 0x98, 0x15, 0xFF, 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, - 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, - 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, - 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, 0x97, 0x04, 0xFF, - 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, - 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, - 0xF9, 0xF7, 0xBF, 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, - 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, - 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, - 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, 0xF2, 0xAD, 0x22, 0xFF, - 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, 0xFF, - 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, - 0xD3, 0xF8, 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, - 0x67, 0xE2, 0xCB, 0xFF, 0x52, 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, - 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, - 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, 0xFF, 0xEF, 0x9B, 0x14, 0xFF, - 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, 0x11, 0xFF, - 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, - 0xF7, 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, - 0xC8, 0x72, 0x05, 0xFF, 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, - 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, - 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, - 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, 0xFD, 0xDD, 0xFF, - 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, - 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, - 0xEB, 0xAB, 0x17, 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, - 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, - 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, - 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, 0xCB, 0xBC, 0x60, 0xFF, - 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, 0xFF, - 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF4, 0x9B, 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, - 0xF1, 0x99, 0x14, 0xFF, 0xEF, 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, - 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, 0xFF, 0xC6, 0x67, 0x03, 0xFF, - 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, 0x07, 0xFF, - 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, - 0xFA, 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, - 0xFA, 0xFA, 0xCD, 0xFF, 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, - 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, - 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, 0xD8, 0x8B, 0xFF, - 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, - 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, - 0xF3, 0xA2, 0x0D, 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, - 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, - 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, - 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, 0xEE, 0x9B, 0x16, 0xFF, - 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, - 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, - 0xF7, 0xCC, 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, - 0xD6, 0x84, 0x06, 0xFF, 0xDC, 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, - 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, - 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, - 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, 0xDB, 0xFF, - 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, - 0xF6, 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, - 0xF7, 0xDA, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, - 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, - 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, 0xA3, 0x16, 0xFF, - 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, - 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, - 0xF9, 0x97, 0x0B, 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, - 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, - 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, - 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, 0xCE, 0x75, 0x02, 0xFF, - 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, 0xFF, - 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, - 0xFB, 0xE5, 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, - 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, - 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, - 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, 0xFF, 0xEB, 0xAF, 0x27, 0xFF, - 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, - 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, - 0xE6, 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, - 0xF7, 0x9F, 0x06, 0xFF, 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, - 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, - 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, - 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, 0x9A, 0x13, 0xFF, - 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, - 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, - 0xFE, 0xD6, 0x59, 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, - 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, - 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, - 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, 0xFE, 0xF2, 0xB0, 0xFF, - 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, 0xFF, - 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, - 0xF3, 0xCC, 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, - 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, - 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, 0xFB, 0xFF, - 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, - 0x57, 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, - 0xEF, 0x9A, 0x17, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, - 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, - 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, 0x7B, 0x03, 0xFF, - 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, - 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, - 0xFB, 0xE3, 0x74, 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, - 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, - 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, - 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, 0xF3, 0xCE, 0x73, 0xFF, - 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, - 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, - 0xDE, 0xFF, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, - 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, - 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, - 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, 0xFF, 0xFB, 0x9A, 0x10, 0xFF, - 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, 0x13, 0xFF, - 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, - 0xFC, 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, - 0xF5, 0xCE, 0x53, 0xFF, 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, - 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, - 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, - 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, 0xE8, 0x99, 0xFF, - 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, - 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, - 0xF3, 0xB4, 0x27, 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, - 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, - 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, - 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, 0x9F, 0xFE, 0xF5, 0xFF, - 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, 0xFF, - 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, - 0x4F, 0xE8, 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, - 0xF4, 0x9D, 0x17, 0xFF, 0xF1, 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, - 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, - 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, 0xFF, 0xF9, 0xD7, 0x59, 0xFF, - 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, 0x0C, 0xFF, - 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, - 0xF5, 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, - 0xF7, 0xD6, 0x4B, 0xFF, 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, - 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, - 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, - 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, - 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, - 0xCE, 0xFD, 0xFD, 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, - 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, - 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, - 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, 0xF6, 0x99, 0x07, 0xFF, - 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, 0xFF, - 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, - 0xFA, 0xD9, 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, - 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, - 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, - 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, 0xFF, 0xEC, 0xC5, 0x13, 0xFF, - 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, 0x65, 0xFF, - 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, - 0xFD, 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, - 0xF6, 0xB9, 0x31, 0xFF, 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, - 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, - 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, - 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, 0xF9, 0xFE, 0xFF, - 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, - 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, - 0xC9, 0xF9, 0xFC, 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, - 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, - 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, - 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, 0xFF, 0xE2, 0x6D, 0xFF, - 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, 0xFF, - 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, - 0xE0, 0xAA, 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, - 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, - 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, - 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, 0xFF, 0xFB, 0xBA, 0x30, 0xFF, - 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, 0xF9, 0xFF, - 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, - 0xD9, 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, - 0xBB, 0xFD, 0xFD, 0xFF, 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, - 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, - 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, - 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, 0x9E, 0x1A, 0xFF, - 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, - 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, - 0xFD, 0xD3, 0x66, 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, - 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, - 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, - 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, 0xE0, 0xAD, 0x16, 0xFF, - 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, 0xFF, - 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, - 0xF7, 0xD1, 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, - 0xF4, 0xB8, 0x35, 0xFF, 0xFF, 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, - 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, - 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, - 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, 0xFC, 0xFF, - 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, - 0x47, 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, - 0x05, 0xDD, 0xFF, 0xFF, 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, - 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, - 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, - 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, 0x86, 0x3B, 0xFF, - 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, - 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, - 0xD5, 0x95, 0x21, 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, - 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, - 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, - 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, 0xF9, 0xBA, 0x31, 0xFF, - 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, 0xFF, - 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, - 0xC1, 0xFC, 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, - 0xA3, 0xFC, 0xFC, 0xFF, 0x95, 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, - 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, - 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, - 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, 0x17, 0xFF, - 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, - 0xF8, 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF9, 0xD7, 0x64, 0xFF, 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, - 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, - 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, - 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, 0x9C, 0x1E, 0xFF, - 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, - 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, - 0xEF, 0xB9, 0x23, 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, - 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, - 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, - 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, 0x9C, 0xFC, 0xFC, 0xFF, - 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, 0xFF, - 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, - 0x3A, 0xE6, 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, - 0x8F, 0xB0, 0x77, 0xFF, 0xFD, 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, - 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, - 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, - 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, 0x00, 0xFF, - 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, - 0xBB, 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, - 0xCC, 0x74, 0x21, 0xFF, 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, - 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, - 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, - 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, 0xBB, 0x38, 0xFF, - 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, - 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, - 0x9F, 0xFA, 0xF8, 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, - 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, - 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, - 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, 0x00, 0xD9, 0xEE, 0xFF, - 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, 0xFF, - 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, - 0xF2, 0x99, 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, - 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, - 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, - 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, - 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, 0x54, 0xFF, - 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, - 0xDE, 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, - 0xDC, 0x98, 0x00, 0xFF, 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, - 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, - 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, - 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, 0xFA, 0xF9, 0xFF, - 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, - 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, - 0x27, 0xE3, 0xF0, 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, - 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, - 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, - 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, 0xFF, - 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, - 0xF5, 0xD6, 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, - 0xF7, 0xD3, 0x61, 0xFF, 0xF8, 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, - 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, - 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, 0xFF, 0xD5, 0x84, 0x01, 0xFF, - 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, 0x34, 0xFF, - 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, - 0x83, 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, - 0x77, 0xFA, 0xF8, 0xFF, 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, - 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, - 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, - 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, 0xB9, 0x9D, 0xFF, - 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, - 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, - 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, - 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, - 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, - 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, 0xF7, 0xC9, 0x47, 0xFF, - 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, 0xFF, - 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, - 0xFA, 0xCB, 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, - 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, - 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, - 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, 0xFF, 0x62, 0xF6, 0xF5, 0xFF, - 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, 0xFE, 0xFF, - 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, - 0x35, 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, - 0x18, 0xD8, 0xEC, 0xFF, 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, - 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, - 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, - 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, - 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, - 0xFC, 0xD3, 0x58, 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, - 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, - 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, - 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, 0xE2, 0xA1, 0x24, 0xFF, - 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, 0xFF, - 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, - 0x5F, 0xF5, 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, - 0x50, 0xF4, 0xF2, 0xFF, 0x4E, 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, - 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, - 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, - 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, 0x0E, 0xFF, - 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, - 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, - 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, - 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, - 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, - 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, 0xC8, 0x49, 0xFF, - 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, - 0xFD, 0xC3, 0x40, 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, - 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, - 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, - 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, 0x3F, 0xEC, 0xED, 0xFF, - 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, 0xFF, - 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, - 0x20, 0xEC, 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, - 0x16, 0xC9, 0xEB, 0xFF, 0x0B, 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, - 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, 0xFF, 0xF9, 0x9A, 0x16, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, - 0xFA, 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xF9, 0xCC, 0x4D, 0xFF, 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, - 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, - 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, - 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, - 0x31, 0xD4, 0xD5, 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, - 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, - 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, - 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, 0x18, 0xCE, 0xE9, 0xFF, - 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, 0xFF, - 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, - 0xF9, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, - 0xF8, 0x99, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, - 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, - 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, - 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, 0x47, 0xFF, - 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, - 0xF9, 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, - 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, - 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, - 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, 0xD7, 0xCC, 0xFF, - 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, - 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, - 0x19, 0xD3, 0xDD, 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, - 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, - 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, - 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, 0xF7, 0x9B, 0x14, 0xFF, - 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, 0xFF, - 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, - 0xF8, 0xCF, 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, - 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, 0x38, 0xFF, - 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, - 0xFB, 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, - 0x36, 0xDD, 0xD3, 0xFF, 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, - 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, - 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, - 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, 0xC1, 0xE2, 0xFF, - 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, - 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, - 0xF8, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, - 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, - 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, - 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, - 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, 0xFF, - 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, - 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, - 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, 0xFF, 0x84, 0xCB, 0x93, 0xFF, - 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, 0xB4, 0xFF, - 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, - 0x18, 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, - 0x03, 0xBD, 0xC7, 0xFF, 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, - 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, - 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, - 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, - 0xF9, 0xCE, 0x4F, 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, - 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, - 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, - 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, - 0xFA, 0xB7, 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, - 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, - 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, - 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, 0xFF, 0x8A, 0xAC, 0x59, 0xFF, - 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, 0x20, 0xFF, - 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, - 0xF6, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, - 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, - 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, - 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, - 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, - 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, 0xFA, 0xB5, 0x25, 0xFF, - 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, 0xFF, - 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, - 0xFA, 0xBE, 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, - 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, - 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, - 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, - 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, - 0xF7, 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, - 0xF9, 0xCF, 0x4E, 0xFF, 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, - 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, - 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, - 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, - 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, - 0xFB, 0xB6, 0x33, 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, - 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, - 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, - 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, 0xF9, 0xAC, 0x1B, 0xFF, - 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, 0xFF, - 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, - 0xF8, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, - 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, - 0xE6, 0xBB, 0x58, 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, - 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, - 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, - 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, - 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, - 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, - 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, - 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, - 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, - 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, - 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, - 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, - 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, - 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, - 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, - 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, - 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, - 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, - 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xDE, 0x9B, 0x22, 0xFF, 0xE0, 0x9D, 0x23, 0xFF, 0xE1, 0x9E, 0x25, 0xFF, 0xE8, 0xA5, 0x2B, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x21, 0xFF, 0xDF, 0x9B, + 0x22, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9B, 0x23, 0xFF, 0xDF, 0x9C, 0x24, 0xFF, 0xE2, 0x9B, 0x21, 0xFF, 0xE5, + 0x9B, 0x1D, 0xFF, 0xE1, 0x9A, 0x1F, 0xFF, 0xDD, 0x98, 0x21, 0xFF, 0xDE, 0x99, 0x21, 0xFF, 0xDE, 0x99, 0x20, 0xFF, + 0xDF, 0x9A, 0x1F, 0xFF, 0xE0, 0x9A, 0x1F, 0xFF, 0xE0, 0x99, 0x1E, 0xFF, 0xDF, 0x99, 0x1D, 0xFF, 0xDF, 0x98, 0x1C, + 0xFF, 0xDF, 0x97, 0x1B, 0xFF, 0xDC, 0x95, 0x1E, 0xFF, 0xD8, 0x93, 0x21, 0xFF, 0xDC, 0x93, 0x1F, 0xFF, 0xE0, 0x93, + 0x1C, 0xFF, 0xDC, 0x94, 0x1A, 0xFF, 0xD8, 0x95, 0x18, 0xFF, 0xDB, 0x91, 0x1C, 0xFF, 0xDE, 0x8E, 0x1F, 0xFF, 0xDE, + 0x90, 0x1A, 0xFF, 0xDE, 0x93, 0x16, 0xFF, 0xDF, 0x92, 0x17, 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x17, 0xFF, + 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDE, 0x8C, 0x15, 0xFF, 0xDD, 0x8C, 0x14, 0xFF, 0xDB, 0x8C, 0x13, + 0xFF, 0xDA, 0x8C, 0x12, 0xFF, 0xD9, 0x8C, 0x11, 0xFF, 0xD9, 0x8B, 0x11, 0xFF, 0xD9, 0x89, 0x11, 0xFF, 0xDA, 0x88, + 0x11, 0xFF, 0xDA, 0x87, 0x12, 0xFF, 0xDA, 0x86, 0x11, 0xFF, 0xDA, 0x86, 0x10, 0xFF, 0xD9, 0x85, 0x10, 0xFF, 0xD9, + 0x84, 0x0F, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xD8, 0x83, 0x0E, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0C, 0xFF, + 0xD7, 0x80, 0x0C, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD6, 0x7F, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, + 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xD6, 0x7E, 0x0D, 0xFF, 0xE0, 0x9F, 0x24, 0xFF, 0xE1, 0xA0, 0x27, 0xFF, 0xE2, 0xA2, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE0, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, 0x9E, 0x24, 0xFF, 0xE1, + 0x9E, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, 0xE1, 0x9D, 0x24, 0xFF, + 0xE1, 0x9D, 0x25, 0xFF, 0xE1, 0x9D, 0x23, 0xFF, 0xE2, 0x9C, 0x22, 0xFF, 0xE0, 0x9C, 0x22, 0xFF, 0xDF, 0x9B, 0x22, + 0xFF, 0xE0, 0x9B, 0x21, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x20, 0xFF, 0xE1, 0x9B, 0x1F, 0xFF, 0xDF, 0x9A, + 0x20, 0xFF, 0xDE, 0x99, 0x20, 0xFF, 0xDE, 0x98, 0x1E, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, 0x97, 0x1D, 0xFF, 0xDF, + 0x96, 0x1E, 0xFF, 0xDF, 0x95, 0x1D, 0xFF, 0xDE, 0x94, 0x1C, 0xFF, 0xDF, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, + 0xE0, 0x93, 0x1C, 0xFF, 0xE0, 0x92, 0x1D, 0xFF, 0xDE, 0x93, 0x1B, 0xFF, 0xDC, 0x94, 0x19, 0xFF, 0xDE, 0x93, 0x19, + 0xFF, 0xE0, 0x92, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8E, + 0x17, 0xFF, 0xDE, 0x8E, 0x16, 0xFF, 0xDD, 0x8D, 0x15, 0xFF, 0xDC, 0x8D, 0x13, 0xFF, 0xDB, 0x8D, 0x12, 0xFF, 0xDB, + 0x8C, 0x12, 0xFF, 0xDB, 0x8B, 0x12, 0xFF, 0xDB, 0x89, 0x12, 0xFF, 0xDB, 0x88, 0x12, 0xFF, 0xDB, 0x87, 0x11, 0xFF, + 0xDB, 0x87, 0x11, 0xFF, 0xDB, 0x86, 0x10, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, + 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD8, 0x82, 0x0D, 0xFF, 0xD8, 0x81, 0x0D, 0xFF, 0xD7, 0x80, + 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xD7, 0x7F, 0x0D, 0xFF, 0xE2, + 0xA2, 0x27, 0xFF, 0xE3, 0xA4, 0x2A, 0xFF, 0xE3, 0xA5, 0x2D, 0xFF, 0xE3, 0xA3, 0x29, 0xFF, 0xE2, 0xA1, 0x26, 0xFF, + 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA1, 0x25, 0xFF, 0xE2, 0xA0, 0x25, 0xFF, 0xE2, 0xA0, 0x24, 0xFF, 0xE2, 0x9F, 0x25, + 0xFF, 0xE3, 0x9F, 0x25, 0xFF, 0xE3, 0x9E, 0x25, 0xFF, 0xE3, 0x9E, 0x26, 0xFF, 0xE1, 0x9E, 0x26, 0xFF, 0xDE, 0x9D, + 0x27, 0xFF, 0xDF, 0x9D, 0x24, 0xFF, 0xE1, 0x9E, 0x22, 0xFF, 0xE2, 0x9D, 0x21, 0xFF, 0xE3, 0x9D, 0x20, 0xFF, 0xE3, + 0x9D, 0x20, 0xFF, 0xE3, 0x9C, 0x20, 0xFF, 0xDF, 0x9B, 0x22, 0xFF, 0xDC, 0x99, 0x24, 0xFF, 0xDE, 0x98, 0x21, 0xFF, + 0xE0, 0x98, 0x1F, 0xFF, 0xE3, 0x99, 0x1D, 0xFF, 0xE7, 0x9A, 0x1B, 0xFF, 0xE1, 0x98, 0x1B, 0xFF, 0xDC, 0x96, 0x1C, + 0xFF, 0xE2, 0x94, 0x1D, 0xFF, 0xE9, 0x92, 0x1F, 0xFF, 0xE5, 0x94, 0x1D, 0xFF, 0xE2, 0x96, 0x1A, 0xFF, 0xDE, 0x95, + 0x1B, 0xFF, 0xDA, 0x95, 0x1D, 0xFF, 0xDD, 0x94, 0x1C, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, + 0x91, 0x19, 0xFF, 0xDF, 0x91, 0x19, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDE, 0x8F, 0x17, 0xFF, 0xDE, 0x8F, 0x16, 0xFF, + 0xDD, 0x8E, 0x15, 0xFF, 0xDD, 0x8E, 0x14, 0xFF, 0xDC, 0x8D, 0x14, 0xFF, 0xDC, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, + 0xFF, 0xDB, 0x8A, 0x12, 0xFF, 0xDC, 0x89, 0x11, 0xFF, 0xDC, 0x88, 0x11, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x86, + 0x10, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, 0xD9, 0x83, 0x0E, 0xFF, 0xDA, 0x84, 0x0E, 0xFF, 0xD9, + 0x83, 0x0E, 0xFF, 0xD9, 0x82, 0x0E, 0xFF, 0xD8, 0x80, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, + 0xD8, 0x7F, 0x0D, 0xFF, 0xD8, 0x7F, 0x0D, 0xFF, 0xE4, 0xA6, 0x29, 0xFF, 0xE3, 0xA7, 0x2D, 0xFF, 0xE3, 0xA8, 0x30, + 0xFF, 0xE3, 0xA6, 0x2C, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x27, 0xFF, 0xE3, 0xA3, 0x26, 0xFF, 0xE4, 0xA2, + 0x26, 0xFF, 0xE4, 0xA2, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE4, 0xA1, 0x26, 0xFF, 0xE5, 0xA0, 0x26, 0xFF, 0xE5, + 0x9F, 0x26, 0xFF, 0xE4, 0xA0, 0x25, 0xFF, 0xE4, 0xA0, 0x24, 0xFF, 0xE3, 0x9F, 0x24, 0xFF, 0xE3, 0x9E, 0x24, 0xFF, + 0xE4, 0x9E, 0x23, 0xFF, 0xE6, 0x9F, 0x21, 0xFF, 0xE5, 0x9F, 0x21, 0xFF, 0xE3, 0x9E, 0x22, 0xFF, 0xE5, 0xA4, 0x13, + 0xFF, 0xE7, 0x9F, 0x1A, 0xFF, 0xE7, 0x9F, 0x15, 0xFF, 0xE7, 0xA0, 0x10, 0xFF, 0xEF, 0x9F, 0x11, 0xFF, 0xF7, 0x9E, + 0x12, 0xFF, 0xEC, 0x99, 0x1A, 0xFF, 0xE1, 0x9A, 0x17, 0xFF, 0xE3, 0x9C, 0x14, 0xFF, 0xE5, 0x98, 0x1C, 0xFF, 0xE6, + 0x97, 0x1C, 0xFF, 0xE6, 0x96, 0x1B, 0xFF, 0xDB, 0x98, 0x1B, 0xFF, 0xDF, 0x96, 0x1C, 0xFF, 0xE0, 0x95, 0x1C, 0xFF, + 0xE1, 0x94, 0x1B, 0xFF, 0xE1, 0x93, 0x1B, 0xFF, 0xE0, 0x93, 0x1A, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x92, 0x19, + 0xFF, 0xDF, 0x91, 0x18, 0xFF, 0xDF, 0x90, 0x18, 0xFF, 0xDF, 0x8F, 0x17, 0xFF, 0xDF, 0x8F, 0x16, 0xFF, 0xDE, 0x8E, + 0x15, 0xFF, 0xDD, 0x8D, 0x14, 0xFF, 0xDD, 0x8C, 0x13, 0xFF, 0xDC, 0x8B, 0x12, 0xFF, 0xDC, 0x8A, 0x12, 0xFF, 0xDD, + 0x89, 0x11, 0xFF, 0xDD, 0x87, 0x11, 0xFF, 0xDE, 0x86, 0x10, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xD9, 0x83, 0x0D, 0xFF, + 0xDA, 0x84, 0x0E, 0xFF, 0xDB, 0x85, 0x0F, 0xFF, 0xDA, 0x84, 0x0F, 0xFF, 0xDA, 0x83, 0x0E, 0xFF, 0xDA, 0x81, 0x0E, + 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xD9, 0x80, 0x0D, 0xFF, 0xE7, 0xAA, + 0x2C, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE2, 0xAA, 0x33, 0xFF, 0xE3, 0xA8, 0x2E, 0xFF, 0xE4, 0xA5, 0x28, 0xFF, 0xE5, + 0xA5, 0x28, 0xFF, 0xE5, 0xA5, 0x28, 0xFF, 0xE5, 0xA4, 0x28, 0xFF, 0xE5, 0xA4, 0x27, 0xFF, 0xE6, 0xA3, 0x27, 0xFF, + 0xE6, 0xA2, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE7, 0xA1, 0x27, 0xFF, 0xE8, 0xA2, 0x25, 0xFF, 0xE9, 0xA3, 0x22, + 0xFF, 0xE7, 0xA0, 0x24, 0xFF, 0xE6, 0x9E, 0x27, 0xFF, 0xE7, 0x9F, 0x25, 0xFF, 0xE8, 0xA0, 0x22, 0xFF, 0xF4, 0xA3, + 0x18, 0xFF, 0xFF, 0xA7, 0x0D, 0xFF, 0xDD, 0xA5, 0x1A, 0xFF, 0xBA, 0x8D, 0x54, 0xFF, 0x9C, 0x83, 0x6E, 0xFF, 0x7D, + 0x79, 0x88, 0xFF, 0x7B, 0x79, 0x8C, 0xFF, 0x79, 0x79, 0x91, 0xFF, 0x94, 0x7A, 0x7E, 0xFF, 0xAF, 0x87, 0x55, 0xFF, + 0xD6, 0x9B, 0x21, 0xFF, 0xFD, 0xA3, 0x04, 0xFF, 0xF4, 0x9D, 0x0F, 0xFF, 0xEB, 0x96, 0x1B, 0xFF, 0xD9, 0x9A, 0x1B, + 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE3, 0x96, 0x1C, 0xFF, 0xE2, 0x95, 0x1C, 0xFF, 0xE2, 0x94, 0x1C, 0xFF, 0xE1, 0x94, + 0x1B, 0xFF, 0xE1, 0x94, 0x1B, 0xFF, 0xE0, 0x93, 0x1B, 0xFF, 0xE0, 0x92, 0x1A, 0xFF, 0xE0, 0x91, 0x19, 0xFF, 0xE1, + 0x90, 0x18, 0xFF, 0xE1, 0x8F, 0x18, 0xFF, 0xE0, 0x8F, 0x16, 0xFF, 0xDF, 0x8E, 0x15, 0xFF, 0xDE, 0x8D, 0x14, 0xFF, + 0xDC, 0x8C, 0x12, 0xFF, 0xDD, 0x8B, 0x12, 0xFF, 0xDE, 0x8A, 0x12, 0xFF, 0xDF, 0x88, 0x11, 0xFF, 0xE0, 0x87, 0x11, + 0xFF, 0xDD, 0x85, 0x0F, 0xFF, 0xDA, 0x83, 0x0D, 0xFF, 0xDB, 0x85, 0x0E, 0xFF, 0xDC, 0x87, 0x10, 0xFF, 0xDC, 0x85, + 0x0F, 0xFF, 0xDB, 0x84, 0x0F, 0xFF, 0xDB, 0x82, 0x0E, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xDA, + 0x81, 0x0D, 0xFF, 0xDA, 0x81, 0x0D, 0xFF, 0xE4, 0xAA, 0x30, 0xFF, 0xE8, 0xAF, 0x35, 0xFF, 0xE3, 0xAB, 0x33, 0xFF, + 0xE5, 0xA9, 0x2F, 0xFF, 0xE6, 0xA8, 0x2A, 0xFF, 0xE8, 0xAD, 0x35, 0xFF, 0xE7, 0xA6, 0x25, 0xFF, 0xE7, 0xA7, 0x28, + 0xFF, 0xE7, 0xA8, 0x2B, 0xFF, 0xE5, 0xA6, 0x2D, 0xFF, 0xE4, 0xA4, 0x2E, 0xFF, 0xE6, 0xA4, 0x2B, 0xFF, 0xE8, 0xA4, + 0x29, 0xFF, 0xE5, 0xA4, 0x2A, 0xFF, 0xE1, 0xA5, 0x2C, 0xFF, 0xEF, 0xA9, 0x10, 0xFF, 0xF6, 0xAD, 0x12, 0xFF, 0xF8, + 0xA2, 0x22, 0xFF, 0xA5, 0x91, 0x60, 0xFF, 0x5C, 0x75, 0xA5, 0xFF, 0x14, 0x59, 0xEB, 0xFF, 0x0C, 0x48, 0xFF, 0xFF, + 0x03, 0x55, 0xFA, 0xFF, 0x0F, 0x59, 0xFF, 0xFF, 0x1A, 0x5D, 0xFF, 0xFF, 0x16, 0x60, 0xFF, 0xFF, 0x11, 0x64, 0xF9, + 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x4A, 0xFF, 0xFF, 0x17, 0x49, 0xFA, 0xFF, 0x23, 0x47, 0xF5, 0xFF, 0x7E, 0x72, + 0x8D, 0xFF, 0xD9, 0x9D, 0x26, 0xFF, 0xFF, 0xA1, 0x05, 0xFF, 0xE1, 0x96, 0x1D, 0xFF, 0xE9, 0x98, 0x17, 0xFF, 0xE3, + 0x97, 0x1C, 0xFF, 0xE3, 0x97, 0x1A, 0xFF, 0xE4, 0x97, 0x18, 0xFF, 0xE3, 0x96, 0x19, 0xFF, 0xE2, 0x94, 0x1B, 0xFF, + 0xE1, 0x93, 0x1A, 0xFF, 0xE0, 0x93, 0x19, 0xFF, 0xE1, 0x92, 0x18, 0xFF, 0xE1, 0x91, 0x17, 0xFF, 0xE0, 0x90, 0x16, + 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, 0x8E, 0x14, 0xFF, 0xDD, 0x8D, 0x13, 0xFF, 0xDE, 0x8D, 0x13, 0xFF, 0xDF, 0x8C, + 0x13, 0xFF, 0xDF, 0x8A, 0x12, 0xFF, 0xE0, 0x89, 0x10, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, 0xDF, + 0x8A, 0x13, 0xFF, 0xDB, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0F, 0xFF, 0xDB, 0x84, 0x0E, 0xFF, + 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xDB, 0x82, 0x0D, 0xFF, 0xE2, 0xAB, 0x33, + 0xFF, 0xEB, 0xB3, 0x3B, 0xFF, 0xE5, 0xAC, 0x33, 0xFF, 0xE6, 0xAB, 0x30, 0xFF, 0xE7, 0xAA, 0x2D, 0xFF, 0xEA, 0xB6, + 0x43, 0xFF, 0xEA, 0xA7, 0x23, 0xFF, 0xE9, 0xA9, 0x29, 0xFF, 0xE9, 0xAB, 0x2F, 0xFF, 0xE5, 0xA9, 0x32, 0xFF, 0xE2, + 0xA7, 0x35, 0xFF, 0xE6, 0xA7, 0x30, 0xFF, 0xEA, 0xA8, 0x2A, 0xFF, 0xF0, 0xAA, 0x25, 0xFF, 0xF6, 0xAD, 0x1F, 0xFF, + 0xA7, 0x8A, 0x4D, 0xFF, 0x4C, 0x66, 0xB7, 0xFF, 0x0F, 0x54, 0xFF, 0xFF, 0x0C, 0x64, 0xF7, 0xFF, 0x13, 0x63, 0xF8, + 0xFF, 0x1A, 0x61, 0xF9, 0xFF, 0x1E, 0x67, 0xEF, 0xFF, 0x22, 0x61, 0xFC, 0xFF, 0x25, 0x68, 0xFA, 0xFF, 0x28, 0x6F, + 0xF9, 0xFF, 0x22, 0x70, 0xF5, 0xFF, 0x1B, 0x72, 0xF2, 0xFF, 0x1F, 0x6B, 0xF2, 0xFF, 0x24, 0x64, 0xF1, 0xFF, 0x21, + 0x55, 0xFF, 0xFF, 0x1E, 0x53, 0xFF, 0xFF, 0x16, 0x4B, 0xFF, 0xFF, 0x0E, 0x43, 0xFF, 0xFF, 0x5A, 0x61, 0xB1, 0xFF, + 0xDF, 0x95, 0x1E, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xE5, 0x9A, 0x1B, 0xFF, 0xE5, 0x9A, 0x18, 0xFF, 0xE6, 0x9A, 0x14, + 0xFF, 0xE5, 0x98, 0x17, 0xFF, 0xE4, 0x95, 0x1B, 0xFF, 0xE2, 0x95, 0x1A, 0xFF, 0xE0, 0x94, 0x19, 0xFF, 0xE1, 0x93, + 0x18, 0xFF, 0xE2, 0x92, 0x17, 0xFF, 0xE1, 0x91, 0x16, 0xFF, 0xE0, 0x90, 0x16, 0xFF, 0xDF, 0x8F, 0x15, 0xFF, 0xDE, + 0x8F, 0x14, 0xFF, 0xDF, 0x8E, 0x14, 0xFF, 0xE1, 0x8E, 0x14, 0xFF, 0xE0, 0x8C, 0x12, 0xFF, 0xE0, 0x8A, 0x10, 0xFF, + 0xDE, 0x88, 0x10, 0xFF, 0xDC, 0x86, 0x10, 0xFF, 0xE3, 0x8E, 0x17, 0xFF, 0xDB, 0x87, 0x0D, 0xFF, 0xDB, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0F, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xDB, 0x83, + 0x0E, 0xFF, 0xDB, 0x83, 0x0E, 0xFF, 0xEA, 0xB0, 0x36, 0xFF, 0xEF, 0xB3, 0x36, 0xFF, 0xED, 0xAE, 0x2E, 0xFF, 0xEC, + 0xAD, 0x2C, 0xFF, 0xEB, 0xAD, 0x2A, 0xFF, 0xEF, 0xB3, 0x40, 0xFF, 0xE9, 0xAA, 0x28, 0xFF, 0xE7, 0xAB, 0x2B, 0xFF, + 0xE6, 0xAB, 0x2F, 0xFF, 0xE6, 0xAA, 0x30, 0xFF, 0xE5, 0xAA, 0x31, 0xFF, 0xE6, 0xA9, 0x2E, 0xFF, 0xE7, 0xA9, 0x2B, + 0xFF, 0xEB, 0xA7, 0x24, 0xFF, 0x5F, 0x6A, 0x93, 0xFF, 0x05, 0x3D, 0xFF, 0xFF, 0x17, 0x56, 0xF9, 0xFF, 0x12, 0x72, + 0xE2, 0xFF, 0x29, 0x72, 0xF8, 0xFF, 0x27, 0x74, 0xF7, 0xFF, 0x25, 0x76, 0xF6, 0xFF, 0x28, 0x76, 0xF1, 0xFF, 0x2A, + 0x70, 0xF8, 0xFF, 0x2D, 0x77, 0xF8, 0xFF, 0x30, 0x7D, 0xF9, 0xFF, 0x2D, 0x7F, 0xF7, 0xFF, 0x2A, 0x81, 0xF5, 0xFF, + 0x2B, 0x7B, 0xF5, 0xFF, 0x2C, 0x75, 0xF5, 0xFF, 0x2B, 0x6A, 0xFD, 0xFF, 0x2A, 0x64, 0xFA, 0xFF, 0x2C, 0x5D, 0xF5, + 0xFF, 0x2E, 0x57, 0xF0, 0xFF, 0x10, 0x48, 0xFF, 0xFF, 0x0E, 0x45, 0xFF, 0xFF, 0x7F, 0x76, 0x80, 0xFF, 0xF0, 0xA7, + 0x02, 0xFF, 0xEA, 0x95, 0x24, 0xFF, 0xE3, 0x9A, 0x19, 0xFF, 0xE4, 0x98, 0x1B, 0xFF, 0xE4, 0x95, 0x1D, 0xFF, 0xE2, + 0x95, 0x1B, 0xFF, 0xDF, 0x96, 0x19, 0xFF, 0xE1, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x17, 0xFF, 0xE2, 0x92, 0x16, 0xFF, + 0xE1, 0x92, 0x16, 0xFF, 0xE0, 0x91, 0x15, 0xFF, 0xDF, 0x90, 0x15, 0xFF, 0xE0, 0x90, 0x15, 0xFF, 0xE2, 0x91, 0x15, + 0xFF, 0xE1, 0x8E, 0x12, 0xFF, 0xDF, 0x8C, 0x0F, 0xFF, 0xDF, 0x8B, 0x12, 0xFF, 0xDF, 0x8A, 0x14, 0xFF, 0xE2, 0x8D, + 0x15, 0xFF, 0xDC, 0x89, 0x0E, 0xFF, 0xDC, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0F, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, + 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xDC, 0x85, 0x0E, 0xFF, 0xE6, 0xC0, 0x5F, 0xFF, + 0xE8, 0xBE, 0x57, 0xFF, 0xE9, 0xBB, 0x4F, 0xFF, 0xE6, 0xBA, 0x4E, 0xFF, 0xE3, 0xB9, 0x4D, 0xFF, 0xED, 0xB6, 0x50, + 0xFF, 0xE7, 0xAE, 0x2D, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE4, 0xAB, 0x2E, 0xFF, 0xE6, 0xAC, 0x2E, 0xFF, 0xE8, 0xAD, + 0x2E, 0xFF, 0xE7, 0xAB, 0x2D, 0xFF, 0xE5, 0xAA, 0x2C, 0xFF, 0xFF, 0xB2, 0x15, 0xFF, 0x10, 0x42, 0xEB, 0xFF, 0x16, + 0x4F, 0xF1, 0xFF, 0x1C, 0x5C, 0xF7, 0xFF, 0x23, 0x71, 0xF8, 0xFF, 0x29, 0x85, 0xF9, 0xFF, 0x2D, 0x88, 0xF6, 0xFF, + 0x30, 0x8B, 0xF3, 0xFF, 0x31, 0x85, 0xF4, 0xFF, 0x33, 0x7F, 0xF4, 0xFF, 0x35, 0x85, 0xF6, 0xFF, 0x37, 0x8B, 0xF9, + 0xFF, 0x38, 0x8D, 0xF8, 0xFF, 0x3A, 0x90, 0xF7, 0xFF, 0x37, 0x8B, 0xF8, 0xFF, 0x35, 0x86, 0xF8, 0xFF, 0x35, 0x7E, + 0xF7, 0xFF, 0x35, 0x75, 0xF6, 0xFF, 0x33, 0x6D, 0xF7, 0xFF, 0x31, 0x64, 0xF7, 0xFF, 0x31, 0x5E, 0xF8, 0xFF, 0x30, + 0x57, 0xF8, 0xFF, 0x25, 0x51, 0xFF, 0xFF, 0x36, 0x51, 0xF5, 0xFF, 0xFD, 0xA4, 0x03, 0xFF, 0xE1, 0x9A, 0x1E, 0xFF, + 0xE3, 0x98, 0x1E, 0xFF, 0xE5, 0x96, 0x1E, 0xFF, 0xE2, 0x96, 0x1C, 0xFF, 0xDF, 0x97, 0x19, 0xFF, 0xE1, 0x96, 0x18, + 0xFF, 0xE3, 0x95, 0x17, 0xFF, 0xE2, 0x94, 0x16, 0xFF, 0xE1, 0x93, 0x16, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE0, 0x91, + 0x15, 0xFF, 0xE2, 0x92, 0x16, 0xFF, 0xE4, 0x93, 0x16, 0xFF, 0xE1, 0x90, 0x12, 0xFF, 0xDF, 0x8E, 0x0F, 0xFF, 0xE1, + 0x8D, 0x14, 0xFF, 0xE3, 0x8D, 0x18, 0xFF, 0xE0, 0x8C, 0x13, 0xFF, 0xDE, 0x8B, 0x0F, 0xFF, 0xDD, 0x89, 0x0F, 0xFF, + 0xDD, 0x88, 0x0E, 0xFF, 0xDD, 0x87, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xDC, 0x86, 0x0E, + 0xFF, 0xDC, 0x86, 0x0E, 0xFF, 0xED, 0xB6, 0x3C, 0xFF, 0xEE, 0xB3, 0x35, 0xFF, 0xEF, 0xB1, 0x2F, 0xFF, 0xED, 0xB1, + 0x2F, 0xFF, 0xEC, 0xB0, 0x2F, 0xFF, 0xEE, 0xB0, 0x38, 0xFF, 0xE9, 0xAE, 0x2D, 0xFF, 0xE7, 0xAD, 0x2F, 0xFF, 0xE6, + 0xAD, 0x30, 0xFF, 0xE8, 0xAE, 0x2F, 0xFF, 0xEA, 0xB0, 0x2D, 0xFF, 0xEC, 0xAD, 0x30, 0xFF, 0xEE, 0xAF, 0x28, 0xFF, + 0xC8, 0xA9, 0x2F, 0xFF, 0x04, 0x3D, 0xFF, 0xFF, 0x19, 0x50, 0xFA, 0xFF, 0x21, 0x5F, 0xF8, 0xFF, 0x28, 0x73, 0xF7, + 0xFF, 0x2F, 0x87, 0xF7, 0xFF, 0x37, 0x95, 0xFA, 0xFF, 0x37, 0x9B, 0xF5, 0xFF, 0x3A, 0x96, 0xF5, 0xFF, 0x3D, 0x92, + 0xF5, 0xFF, 0x3F, 0x94, 0xF7, 0xFF, 0x41, 0x96, 0xF9, 0xFF, 0x43, 0x99, 0xF9, 0xFF, 0x46, 0x9D, 0xF9, 0xFF, 0x44, + 0x98, 0xF8, 0xFF, 0x43, 0x94, 0xF7, 0xFF, 0x42, 0x8D, 0xF8, 0xFF, 0x41, 0x86, 0xF9, 0xFF, 0x3F, 0x7D, 0xF9, 0xFF, + 0x3C, 0x73, 0xF9, 0xFF, 0x38, 0x70, 0xF7, 0xFF, 0x35, 0x6C, 0xF4, 0xFF, 0x21, 0x60, 0xFF, 0xFF, 0x62, 0x6C, 0xBE, + 0xFF, 0xEF, 0x9D, 0x12, 0xFF, 0xE8, 0x9A, 0x21, 0xFF, 0xED, 0x99, 0x1C, 0xFF, 0xE3, 0x9B, 0x17, 0xFF, 0xF0, 0x98, + 0x13, 0xFF, 0xE0, 0x94, 0x1B, 0xFF, 0xE1, 0x96, 0x1A, 0xFF, 0xE3, 0x97, 0x19, 0xFF, 0xE4, 0x96, 0x18, 0xFF, 0xE5, + 0x95, 0x17, 0xFF, 0xE3, 0x94, 0x18, 0xFF, 0xE2, 0x93, 0x19, 0xFF, 0xE0, 0x91, 0x16, 0xFF, 0xDE, 0x90, 0x14, 0xFF, + 0xE1, 0x91, 0x15, 0xFF, 0xE5, 0x92, 0x16, 0xFF, 0xE3, 0x90, 0x14, 0xFF, 0xE2, 0x8D, 0x11, 0xFF, 0xE2, 0x8D, 0x10, + 0xFF, 0xE3, 0x8D, 0x0F, 0xFF, 0xDE, 0x8A, 0x10, 0xFF, 0xD8, 0x88, 0x11, 0xFF, 0xE1, 0x87, 0x0E, 0xFF, 0xDC, 0x89, + 0x0B, 0xFF, 0xE0, 0x85, 0x10, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE4, 0x87, 0x09, 0xFF, 0xE8, 0xB5, 0x3F, 0xFF, 0xE9, + 0xB3, 0x3B, 0xFF, 0xEA, 0xB2, 0x36, 0xFF, 0xE9, 0xB1, 0x37, 0xFF, 0xE8, 0xB1, 0x37, 0xFF, 0xE9, 0xAF, 0x32, 0xFF, + 0xEA, 0xAE, 0x2D, 0xFF, 0xE9, 0xAE, 0x30, 0xFF, 0xE8, 0xAF, 0x32, 0xFF, 0xEA, 0xB1, 0x30, 0xFF, 0xEC, 0xB4, 0x2D, + 0xFF, 0xF1, 0xAE, 0x34, 0xFF, 0xF6, 0xB4, 0x24, 0xFF, 0x86, 0x7E, 0x8D, 0xFF, 0x00, 0x4E, 0xF6, 0xFF, 0x1D, 0x5C, + 0xEC, 0xFF, 0x25, 0x63, 0xF9, 0xFF, 0x2D, 0x76, 0xF7, 0xFF, 0x35, 0x89, 0xF4, 0xFF, 0x41, 0xA2, 0xFD, 0xFF, 0x3E, + 0xAB, 0xF6, 0xFF, 0x43, 0xA8, 0xF6, 0xFF, 0x47, 0xA4, 0xF7, 0xFF, 0x4A, 0xA3, 0xF8, 0xFF, 0x4C, 0xA1, 0xFA, 0xFF, + 0x4E, 0xA5, 0xFA, 0xFF, 0x51, 0xAA, 0xFB, 0xFF, 0x52, 0xA6, 0xF9, 0xFF, 0x52, 0xA2, 0xF7, 0xFF, 0x4F, 0x9C, 0xFA, + 0xFF, 0x4D, 0x97, 0xFD, 0xFF, 0x4A, 0x8D, 0xFC, 0xFF, 0x47, 0x83, 0xFB, 0xFF, 0x40, 0x82, 0xF6, 0xFF, 0x39, 0x82, + 0xF1, 0xFF, 0x2B, 0x72, 0xF4, 0xFF, 0xAB, 0x8C, 0x71, 0xFF, 0xF0, 0x99, 0x16, 0xFF, 0xEF, 0x99, 0x25, 0xFF, 0xE8, + 0x97, 0x25, 0xFF, 0xC5, 0x9A, 0x26, 0xFF, 0xF0, 0x96, 0x16, 0xFF, 0xE2, 0x91, 0x1C, 0xFF, 0xE2, 0x96, 0x1B, 0xFF, + 0xE2, 0x9A, 0x1B, 0xFF, 0xE5, 0x99, 0x19, 0xFF, 0xE8, 0x98, 0x18, 0xFF, 0xE6, 0x96, 0x1A, 0xFF, 0xE4, 0x95, 0x1C, + 0xFF, 0xDF, 0x91, 0x17, 0xFF, 0xD9, 0x8D, 0x13, 0xFF, 0xE2, 0x92, 0x18, 0xFF, 0xEA, 0x97, 0x1E, 0xFF, 0xE5, 0x92, + 0x14, 0xFF, 0xE1, 0x8D, 0x0B, 0xFF, 0xE5, 0x8E, 0x0D, 0xFF, 0xE9, 0x8F, 0x10, 0xFF, 0xDE, 0x8B, 0x12, 0xFF, 0xD4, + 0x88, 0x14, 0xFF, 0xE6, 0x87, 0x0E, 0xFF, 0xDC, 0x8C, 0x08, 0xFF, 0xE4, 0x84, 0x11, 0xFF, 0xEC, 0x88, 0x03, 0xFF, + 0xEC, 0x88, 0x03, 0xFF, 0xEA, 0xB6, 0x3D, 0xFF, 0xEA, 0xB5, 0x3A, 0xFF, 0xEB, 0xB4, 0x38, 0xFF, 0xEB, 0xB3, 0x37, + 0xFF, 0xEA, 0xB3, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xEB, 0xB1, 0x32, 0xFF, 0xEB, 0xB1, 0x33, 0xFF, 0xEA, 0xB0, + 0x34, 0xFF, 0xE9, 0xB3, 0x32, 0xFF, 0xE8, 0xB5, 0x2F, 0xFF, 0xF0, 0xB0, 0x34, 0xFF, 0xF8, 0xB6, 0x22, 0xFF, 0x44, + 0x60, 0xC5, 0xFF, 0x0B, 0x53, 0xF9, 0xFF, 0x21, 0x63, 0xF2, 0xFF, 0x29, 0x6F, 0xF6, 0xFF, 0x2F, 0x7D, 0xF6, 0xFF, + 0x35, 0x8A, 0xF7, 0xFF, 0x41, 0xA1, 0xFA, 0xFF, 0x45, 0xAF, 0xF6, 0xFF, 0x4F, 0xB4, 0xFA, 0xFF, 0x50, 0xB0, 0xF6, + 0xFF, 0x53, 0xAE, 0xF8, 0xFF, 0x56, 0xAC, 0xFA, 0xFF, 0x59, 0xB2, 0xFC, 0xFF, 0x5D, 0xB7, 0xFD, 0xFF, 0x5F, 0xB3, + 0xFA, 0xFF, 0x61, 0xAF, 0xF6, 0xFF, 0x5D, 0xAC, 0xF9, 0xFF, 0x59, 0xA9, 0xFD, 0xFF, 0x55, 0x9F, 0xFB, 0xFF, 0x50, + 0x94, 0xF8, 0xFF, 0x4A, 0x91, 0xF7, 0xFF, 0x44, 0x8D, 0xF5, 0xFF, 0x22, 0x7D, 0xFF, 0xFF, 0xEF, 0xA5, 0x1A, 0xFF, + 0xF3, 0x9E, 0x12, 0xFF, 0xF1, 0x96, 0x28, 0xFF, 0xB0, 0x9F, 0x22, 0xFF, 0x00, 0x96, 0x6C, 0xFF, 0x82, 0x9B, 0x3B, + 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF4, 0x9B, 0x15, 0xFF, 0xE2, 0x9C, 0x14, 0xFF, 0xE4, 0x99, 0x15, 0xFF, 0xE6, 0x96, + 0x17, 0xFF, 0xE5, 0x95, 0x18, 0xFF, 0xE4, 0x93, 0x1A, 0xFF, 0xE2, 0x93, 0x18, 0xFF, 0xE0, 0x92, 0x16, 0xFF, 0xE6, + 0x98, 0x1C, 0xFF, 0xE4, 0x95, 0x19, 0xFF, 0xE4, 0x92, 0x16, 0xFF, 0xE5, 0x8F, 0x12, 0xFF, 0xEB, 0x8C, 0x12, 0xFF, + 0xE3, 0x8B, 0x12, 0xFF, 0xE3, 0x87, 0x00, 0xFF, 0xF4, 0x7B, 0x00, 0xFF, 0xD3, 0x86, 0x1A, 0xFF, 0xF0, 0x8C, 0x0C, + 0xFF, 0xE2, 0x8E, 0x00, 0xFF, 0xEA, 0x84, 0x0D, 0xFF, 0xF1, 0x86, 0x07, 0xFF, 0xEC, 0xB7, 0x3B, 0xFF, 0xEC, 0xB6, + 0x3A, 0xFF, 0xEC, 0xB6, 0x39, 0xFF, 0xEC, 0xB5, 0x38, 0xFF, 0xED, 0xB5, 0x37, 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEC, + 0xB4, 0x37, 0xFF, 0xEC, 0xB3, 0x36, 0xFF, 0xEC, 0xB2, 0x36, 0xFF, 0xE8, 0xB4, 0x33, 0xFF, 0xE4, 0xB5, 0x31, 0xFF, + 0xEF, 0xB1, 0x34, 0xFF, 0xF9, 0xB8, 0x21, 0xFF, 0x02, 0x41, 0xFD, 0xFF, 0x1E, 0x58, 0xFC, 0xFF, 0x25, 0x6A, 0xF8, + 0xFF, 0x2C, 0x7C, 0xF3, 0xFF, 0x31, 0x84, 0xF6, 0xFF, 0x35, 0x8B, 0xF9, 0xFF, 0x41, 0xA0, 0xF7, 0xFF, 0x4C, 0xB4, + 0xF6, 0xFF, 0x5B, 0xC0, 0xFE, 0xFF, 0x59, 0xBC, 0xF6, 0xFF, 0x5D, 0xBA, 0xF8, 0xFF, 0x60, 0xB7, 0xFA, 0xFF, 0x64, + 0xBE, 0xFD, 0xFF, 0x69, 0xC4, 0xFF, 0xFF, 0x6C, 0xC0, 0xFA, 0xFF, 0x6F, 0xBD, 0xF5, 0xFF, 0x6A, 0xBC, 0xF9, 0xFF, + 0x65, 0xBB, 0xFD, 0xFF, 0x60, 0xB1, 0xFA, 0xFF, 0x5A, 0xA6, 0xF6, 0xFF, 0x54, 0x9F, 0xF8, 0xFF, 0x4F, 0x98, 0xFA, + 0xFF, 0x6E, 0x94, 0xDF, 0xFF, 0xFB, 0xA6, 0x07, 0xFF, 0xDA, 0x9C, 0x24, 0xFF, 0xF2, 0x9F, 0x14, 0xFF, 0x71, 0xA1, + 0x4A, 0xFF, 0x0D, 0xA9, 0x68, 0xFF, 0x06, 0xA3, 0x61, 0xFF, 0x1B, 0x98, 0x5A, 0xFF, 0x9B, 0x96, 0x33, 0xFF, 0xFE, + 0x99, 0x0D, 0xFF, 0xF1, 0x96, 0x11, 0xFF, 0xE4, 0x94, 0x16, 0xFF, 0xE4, 0x93, 0x17, 0xFF, 0xE4, 0x91, 0x18, 0xFF, + 0xE5, 0x94, 0x19, 0xFF, 0xE6, 0x98, 0x1A, 0xFF, 0xEA, 0x9D, 0x1F, 0xFF, 0xDE, 0x93, 0x15, 0xFF, 0xE3, 0x92, 0x17, + 0xFF, 0xE8, 0x91, 0x1A, 0xFF, 0xEB, 0x94, 0x1F, 0xFF, 0xD1, 0x9D, 0x25, 0xFF, 0x72, 0xF7, 0xD0, 0xFF, 0x95, 0xF2, + 0xC1, 0xFF, 0xF0, 0x83, 0x00, 0xFF, 0xA0, 0x81, 0x17, 0xFF, 0x2E, 0x7E, 0x3B, 0xFF, 0xCB, 0x87, 0x16, 0xFF, 0xDA, + 0x8A, 0x0B, 0xFF, 0xEC, 0xB8, 0x3D, 0xFF, 0xED, 0xB8, 0x3C, 0xFF, 0xED, 0xB7, 0x3B, 0xFF, 0xED, 0xB7, 0x3A, 0xFF, + 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, 0xFF, 0xED, 0xB6, 0x39, + 0xFF, 0xEC, 0xB4, 0x37, 0xFF, 0xEB, 0xB2, 0x34, 0xFF, 0xF2, 0xAB, 0x34, 0xFF, 0xB3, 0x95, 0x6D, 0xFF, 0x00, 0x46, + 0xFF, 0xFF, 0x20, 0x64, 0xF7, 0xFF, 0x28, 0x73, 0xF6, 0xFF, 0x30, 0x81, 0xF5, 0xFF, 0x37, 0x8B, 0xF6, 0xFF, 0x3D, + 0x94, 0xF8, 0xFF, 0x48, 0xA6, 0xF8, 0xFF, 0x53, 0xB7, 0xF7, 0xFF, 0x60, 0xC2, 0xFB, 0xFF, 0x65, 0xC4, 0xF7, 0xFF, + 0x69, 0xC3, 0xF9, 0xFF, 0x6D, 0xC2, 0xFA, 0xFF, 0x72, 0xC6, 0xFA, 0xFF, 0x77, 0xCB, 0xFA, 0xFF, 0x7A, 0xCB, 0xFB, + 0xFF, 0x7D, 0xCB, 0xFC, 0xFF, 0x7A, 0xC8, 0xFA, 0xFF, 0x77, 0xC5, 0xF8, 0xFF, 0x72, 0xBC, 0xF9, 0xFF, 0x6C, 0xB4, + 0xFA, 0xFF, 0x68, 0xB0, 0xF6, 0xFF, 0x56, 0xAA, 0xFD, 0xFF, 0xA5, 0xA0, 0x93, 0xFF, 0xF3, 0xA1, 0x13, 0xFF, 0xEF, + 0x9C, 0x21, 0xFF, 0xFF, 0x9D, 0x19, 0xFF, 0x23, 0xC1, 0x71, 0xFF, 0x25, 0xB7, 0x79, 0xFF, 0x1D, 0xB2, 0x71, 0xFF, + 0x23, 0xAA, 0x6A, 0xFF, 0x25, 0xA0, 0x66, 0xFF, 0x18, 0x9A, 0x63, 0xFF, 0x72, 0x9C, 0x41, 0xFF, 0xCB, 0x9F, 0x1E, + 0xFF, 0xFF, 0x93, 0x18, 0xFF, 0xF1, 0x98, 0x13, 0xFF, 0xF4, 0x9C, 0x18, 0xFF, 0xF7, 0xA0, 0x1D, 0xFF, 0xFF, 0x9C, + 0x1B, 0xFF, 0xF6, 0x93, 0x10, 0xFF, 0xF1, 0x93, 0x11, 0xFF, 0xEC, 0x93, 0x13, 0xFF, 0xFF, 0x83, 0x00, 0xFF, 0xA0, + 0xCB, 0x72, 0xFF, 0x81, 0xF9, 0xCB, 0xFF, 0xAC, 0xFF, 0xD0, 0xFF, 0x45, 0xA0, 0x78, 0xFF, 0x00, 0x77, 0x33, 0xFF, + 0x02, 0x7C, 0x3A, 0xFF, 0xE2, 0x8C, 0x0D, 0xFF, 0xDB, 0x8E, 0x0D, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xB9, 0x3D, + 0xFF, 0xED, 0xB9, 0x3C, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, 0x3A, 0xFF, 0xED, 0xB8, 0x3B, 0xFF, 0xED, 0xB8, + 0x3B, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEE, 0xB9, 0x3C, 0xFF, 0xF0, 0xB4, 0x3A, 0xFF, 0xF2, 0xAE, 0x37, 0xFF, 0xFE, + 0xB3, 0x32, 0xFF, 0x7C, 0x8E, 0xB3, 0xFF, 0x06, 0x58, 0xFF, 0xFF, 0x22, 0x71, 0xF3, 0xFF, 0x2B, 0x7C, 0xF4, 0xFF, + 0x34, 0x86, 0xF6, 0xFF, 0x3D, 0x92, 0xF7, 0xFF, 0x45, 0x9D, 0xF8, 0xFF, 0x4F, 0xAC, 0xF8, 0xFF, 0x5A, 0xBB, 0xF8, + 0xFF, 0x65, 0xC4, 0xF9, 0xFF, 0x70, 0xCC, 0xF9, 0xFF, 0x75, 0xCC, 0xFA, 0xFF, 0x7A, 0xCC, 0xFA, 0xFF, 0x80, 0xCF, + 0xF7, 0xFF, 0x85, 0xD2, 0xF4, 0xFF, 0x89, 0xD5, 0xFB, 0xFF, 0x8C, 0xD9, 0xFF, 0xFF, 0x8B, 0xD3, 0xFA, 0xFF, 0x89, + 0xCE, 0xF2, 0xFF, 0x84, 0xC8, 0xF8, 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0x7C, 0xC1, 0xF4, 0xFF, 0x5E, 0xBC, 0xFF, 0xFF, + 0xDB, 0xAB, 0x47, 0xFF, 0xEA, 0x9C, 0x1E, 0xFF, 0xE8, 0xA2, 0x1D, 0xFF, 0xE5, 0xA7, 0x1D, 0xFF, 0x1B, 0xD3, 0x98, + 0xFF, 0x21, 0xCB, 0x8A, 0xFF, 0x26, 0xC3, 0x82, 0xFF, 0x2C, 0xBB, 0x7A, 0xFF, 0x28, 0xB4, 0x75, 0xFF, 0x25, 0xAD, + 0x70, 0xFF, 0x16, 0xAB, 0x6D, 0xFF, 0x08, 0xA9, 0x6A, 0xFF, 0x11, 0xA9, 0x5E, 0xFF, 0x53, 0x9E, 0x51, 0xFF, 0x6D, + 0x9B, 0x47, 0xFF, 0x87, 0x97, 0x3E, 0xFF, 0x91, 0x95, 0x3B, 0xFF, 0x80, 0x98, 0x38, 0xFF, 0x63, 0x96, 0x44, 0xFF, + 0x45, 0x94, 0x4F, 0xFF, 0x3C, 0xB4, 0x82, 0xFF, 0x1B, 0x84, 0x4F, 0xFF, 0x87, 0xE0, 0xAF, 0xFF, 0x82, 0xCC, 0x9E, + 0xFF, 0x11, 0x7F, 0x35, 0xFF, 0x1B, 0x82, 0x42, 0xFF, 0x3B, 0x84, 0x32, 0xFF, 0xF9, 0x92, 0x04, 0xFF, 0xDC, 0x92, + 0x0F, 0xFF, 0xEE, 0xBC, 0x40, 0xFF, 0xED, 0xBB, 0x3F, 0xFF, 0xED, 0xBA, 0x3E, 0xFF, 0xED, 0xBA, 0x3D, 0xFF, 0xEC, + 0xB9, 0x3C, 0xFF, 0xEC, 0xB9, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEC, 0xB8, 0x3C, 0xFF, 0xEB, 0xB8, 0x3C, 0xFF, + 0xF0, 0xB3, 0x3F, 0xFF, 0xF4, 0xAF, 0x42, 0xFF, 0xE8, 0xBA, 0x0D, 0xFF, 0x96, 0xB8, 0xFF, 0xFF, 0x4C, 0x81, 0xF6, + 0xFF, 0x22, 0x75, 0xF5, 0xFF, 0x2D, 0x80, 0xF6, 0xFF, 0x38, 0x8B, 0xF7, 0xFF, 0x42, 0x99, 0xF7, 0xFF, 0x4D, 0xA6, + 0xF7, 0xFF, 0x56, 0xB2, 0xF8, 0xFF, 0x5F, 0xBD, 0xF9, 0xFF, 0x6D, 0xC8, 0xF9, 0xFF, 0x7A, 0xD4, 0xFA, 0xFF, 0x81, + 0xD5, 0xFA, 0xFF, 0x88, 0xD7, 0xF9, 0xFF, 0x8D, 0xD8, 0xFA, 0xFF, 0x92, 0xDA, 0xFB, 0xFF, 0xA1, 0xE4, 0xF9, 0xFF, + 0x91, 0xD6, 0xFE, 0xFF, 0x9F, 0xDE, 0xFA, 0xFF, 0x97, 0xDB, 0xF8, 0xFF, 0x93, 0xD5, 0xF9, 0xFF, 0x8F, 0xCF, 0xFB, + 0xFF, 0x85, 0xD1, 0xFF, 0xFF, 0x78, 0xC6, 0xFF, 0xFF, 0xFC, 0x9A, 0x00, 0xFF, 0xF1, 0xA8, 0x26, 0xFF, 0xF8, 0xA4, + 0x1F, 0xFF, 0xA5, 0xBD, 0x53, 0xFF, 0x30, 0xDA, 0xA4, 0xFF, 0x37, 0xD5, 0x9D, 0xFF, 0x3A, 0xD0, 0x97, 0xFF, 0x3D, + 0xCA, 0x90, 0xFF, 0x39, 0xC5, 0x8A, 0xFF, 0x35, 0xBF, 0x84, 0xFF, 0x30, 0xBD, 0x7C, 0xFF, 0x2C, 0xBC, 0x74, 0xFF, + 0x1B, 0xB8, 0x75, 0xFF, 0x27, 0xAF, 0x77, 0xFF, 0x25, 0xAB, 0x72, 0xFF, 0x23, 0xA7, 0x6D, 0xFF, 0x28, 0xA3, 0x6A, + 0xFF, 0x1E, 0xA2, 0x68, 0xFF, 0x19, 0x95, 0x57, 0xFF, 0x45, 0xB7, 0x77, 0xFF, 0x81, 0xF0, 0xBA, 0xFF, 0x4C, 0xAC, + 0x72, 0xFF, 0x14, 0x7B, 0x41, 0xFF, 0x1D, 0x8A, 0x4F, 0xFF, 0x1C, 0x86, 0x42, 0xFF, 0x14, 0x86, 0x49, 0xFF, 0x8B, + 0x86, 0x16, 0xFF, 0xF5, 0x90, 0x0A, 0xFF, 0xE7, 0x8D, 0x15, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, + 0xED, 0xBC, 0x3F, 0xFF, 0xED, 0xBB, 0x3E, 0xFF, 0xEC, 0xBA, 0x3D, 0xFF, 0xEB, 0xBA, 0x3D, 0xFF, 0xEA, 0xB9, 0x3C, + 0xFF, 0xE9, 0xB8, 0x3C, 0xFF, 0xE8, 0xB7, 0x3B, 0xFF, 0xF0, 0xB9, 0x39, 0xFF, 0xF7, 0xBA, 0x37, 0xFF, 0xDC, 0xB5, + 0x50, 0xFF, 0x44, 0x96, 0xFF, 0xFF, 0x9C, 0xC4, 0xFE, 0xFF, 0x23, 0x79, 0xF7, 0xFF, 0x30, 0x85, 0xF8, 0xFF, 0x3C, + 0x91, 0xF8, 0xFF, 0x48, 0xA0, 0xF8, 0xFF, 0x55, 0xAF, 0xF7, 0xFF, 0x5D, 0xB7, 0xF8, 0xFF, 0x65, 0xBF, 0xF9, 0xFF, + 0x75, 0xCD, 0xFA, 0xFF, 0x85, 0xDB, 0xFB, 0xFF, 0x8D, 0xDE, 0xFA, 0xFF, 0x95, 0xE1, 0xF9, 0xFF, 0x9A, 0xE1, 0xFD, + 0xFF, 0xA0, 0xE2, 0xFF, 0xFF, 0xA3, 0xE8, 0xFA, 0xFF, 0x6B, 0xBD, 0xFF, 0xFF, 0x9E, 0xDE, 0xFC, 0xFF, 0xA6, 0xE8, + 0xFF, 0xFF, 0xA3, 0xE3, 0xFB, 0xFF, 0xA0, 0xDE, 0xF7, 0xFF, 0x99, 0xD7, 0xFD, 0xFF, 0xAB, 0xBD, 0xB5, 0xFF, 0xF0, + 0x9F, 0x11, 0xFF, 0xE8, 0xA3, 0x1D, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0x65, 0xD4, 0x89, 0xFF, 0x45, 0xE1, 0xB0, 0xFF, + 0x4D, 0xDF, 0xB0, 0xFF, 0x4D, 0xDC, 0xAB, 0xFF, 0x4D, 0xD8, 0xA7, 0xFF, 0x49, 0xD5, 0xA0, 0xFF, 0x44, 0xD2, 0x99, + 0xFF, 0x3C, 0xCD, 0x97, 0xFF, 0x34, 0xC9, 0x94, 0xFF, 0x34, 0xC4, 0x8D, 0xFF, 0x33, 0xC0, 0x86, 0xFF, 0x32, 0xBC, + 0x7A, 0xFF, 0x31, 0xB7, 0x6E, 0xFF, 0x2F, 0xB2, 0x6D, 0xFF, 0x2E, 0xAE, 0x6B, 0xFF, 0x3F, 0xB9, 0x7D, 0xFF, 0x30, + 0xA5, 0x6F, 0xFF, 0x4E, 0xB5, 0x7B, 0xFF, 0x20, 0x9A, 0x56, 0xFF, 0x2A, 0x9F, 0x5B, 0xFF, 0x24, 0x93, 0x50, 0xFF, + 0x65, 0xB9, 0x80, 0xFF, 0x1C, 0x99, 0x5F, 0xFF, 0xE2, 0x8F, 0x03, 0xFF, 0xF2, 0x8E, 0x10, 0xFF, 0xF2, 0x88, 0x1B, + 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xEE, 0xBE, 0x42, 0xFF, 0xEE, 0xBD, 0x41, 0xFF, 0xEE, 0xBD, 0x40, 0xFF, 0xED, 0xBC, + 0x3F, 0xFF, 0xEC, 0xBB, 0x3F, 0xFF, 0xEB, 0xB9, 0x3F, 0xFF, 0xEC, 0xB9, 0x3D, 0xFF, 0xEE, 0xB8, 0x3C, 0xFF, 0xEB, + 0xB8, 0x37, 0xFF, 0xF6, 0xBC, 0x26, 0xFF, 0x8F, 0x9B, 0x94, 0xFF, 0x37, 0x96, 0xFB, 0xFF, 0x7C, 0xBB, 0xF9, 0xFF, + 0x85, 0xB5, 0xF8, 0xFF, 0x49, 0x99, 0xF6, 0xFF, 0x42, 0x9B, 0xF5, 0xFF, 0x4E, 0xA6, 0xF6, 0xFF, 0x59, 0xB2, 0xF7, + 0xFF, 0x65, 0xBC, 0xF8, 0xFF, 0x72, 0xC6, 0xF9, 0xFF, 0x7F, 0xD3, 0xF9, 0xFF, 0x8D, 0xE0, 0xFA, 0xFF, 0x97, 0xE5, + 0xF9, 0xFF, 0xA1, 0xEB, 0xF8, 0xFF, 0xA6, 0xEA, 0xFE, 0xFF, 0xAA, 0xEA, 0xFF, 0xFF, 0xA8, 0xEE, 0xFC, 0xFF, 0x62, + 0xBA, 0xF9, 0xFF, 0x98, 0xDC, 0xFA, 0xFF, 0xB9, 0xF3, 0xFE, 0xFF, 0xB2, 0xEC, 0xFB, 0xFF, 0xAB, 0xE5, 0xF7, 0xFF, + 0xA2, 0xE4, 0xFE, 0xFF, 0xD1, 0xB0, 0x64, 0xFF, 0xF0, 0x9F, 0x19, 0xFF, 0xE8, 0x9E, 0x26, 0xFF, 0xF2, 0x98, 0x03, + 0xFF, 0x50, 0xEF, 0xE3, 0xFF, 0x57, 0xEE, 0xD5, 0xFF, 0x64, 0xE3, 0xBF, 0xFF, 0x64, 0xE1, 0xBC, 0xFF, 0x64, 0xDF, + 0xB9, 0xFF, 0x5D, 0xDD, 0xB4, 0xFF, 0x56, 0xDB, 0xB0, 0xFF, 0x4E, 0xD7, 0xA9, 0xFF, 0x46, 0xD3, 0xA2, 0xFF, 0x42, + 0xD0, 0x9B, 0xFF, 0x3F, 0xCD, 0x93, 0xFF, 0x3D, 0xC9, 0x8B, 0xFF, 0x3C, 0xC5, 0x84, 0xFF, 0x39, 0xC1, 0x80, 0xFF, + 0x36, 0xBC, 0x7D, 0xFF, 0x45, 0xC7, 0x8A, 0xFF, 0x44, 0xC1, 0x88, 0xFF, 0x2B, 0xA0, 0x62, 0xFF, 0x2B, 0xA9, 0x64, + 0xFF, 0x2D, 0xA3, 0x5E, 0xFF, 0x26, 0x95, 0x4F, 0xFF, 0x98, 0xCE, 0xA4, 0xFF, 0xDC, 0xEA, 0xD8, 0xFF, 0xFF, 0xDC, + 0xB9, 0xFF, 0xF3, 0x9D, 0x38, 0xFF, 0xD3, 0x8F, 0x00, 0xFF, 0xEF, 0xC1, 0x45, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, + 0xBF, 0x43, 0xFF, 0xEF, 0xBE, 0x41, 0xFF, 0xEF, 0xBD, 0x40, 0xFF, 0xED, 0xBC, 0x41, 0xFF, 0xEB, 0xBA, 0x42, 0xFF, + 0xEF, 0xBA, 0x3F, 0xFF, 0xF3, 0xB9, 0x3C, 0xFF, 0xE6, 0xB8, 0x34, 0xFF, 0xF6, 0xBD, 0x16, 0xFF, 0x4F, 0x7F, 0xD8, + 0xFF, 0x46, 0x90, 0xF7, 0xFF, 0x54, 0xA5, 0xF7, 0xFF, 0xBA, 0xDA, 0xFF, 0xFF, 0x4D, 0xA1, 0xF8, 0xFF, 0x49, 0xA5, + 0xF3, 0xFF, 0x53, 0xAD, 0xF4, 0xFF, 0x5D, 0xB5, 0xF6, 0xFF, 0x6E, 0xC0, 0xF8, 0xFF, 0x7F, 0xCC, 0xFA, 0xFF, 0x8A, + 0xD8, 0xF9, 0xFF, 0x95, 0xE4, 0xF8, 0xFF, 0xA1, 0xEC, 0xF8, 0xFF, 0xAE, 0xF4, 0xF7, 0xFF, 0xB2, 0xF3, 0xFE, 0xFF, + 0xB5, 0xF1, 0xFF, 0xFF, 0xAD, 0xF4, 0xFE, 0xFF, 0x59, 0xB6, 0xF3, 0xFF, 0x92, 0xDA, 0xF8, 0xFF, 0xCC, 0xFF, 0xFE, + 0xFF, 0xC1, 0xF6, 0xFA, 0xFF, 0xB6, 0xED, 0xF7, 0xFF, 0xAB, 0xF1, 0xFF, 0xFF, 0xF7, 0xA4, 0x13, 0xFF, 0xEF, 0xA4, + 0x15, 0xFF, 0xE8, 0xA5, 0x18, 0xFF, 0xCD, 0xB4, 0x56, 0xFF, 0x71, 0xF2, 0xF0, 0xFF, 0x84, 0xEF, 0xD4, 0xFF, 0x7B, + 0xE6, 0xCF, 0xFF, 0x7B, 0xE6, 0xCD, 0xFF, 0x7C, 0xE6, 0xCB, 0xFF, 0x71, 0xE5, 0xC9, 0xFF, 0x67, 0xE5, 0xC6, 0xFF, + 0x5F, 0xE1, 0xBC, 0xFF, 0x57, 0xDD, 0xB1, 0xFF, 0x51, 0xDB, 0xA8, 0xFF, 0x4B, 0xDA, 0xA0, 0xFF, 0x48, 0xD7, 0x9C, + 0xFF, 0x46, 0xD4, 0x99, 0xFF, 0x42, 0xCF, 0x94, 0xFF, 0x3E, 0xCA, 0x8F, 0xFF, 0x3B, 0xC4, 0x88, 0xFF, 0x39, 0xBE, + 0x81, 0xFF, 0x30, 0xB3, 0x72, 0xFF, 0x27, 0xA8, 0x62, 0xFF, 0x27, 0xA0, 0x58, 0xFF, 0x27, 0x97, 0x4E, 0xFF, 0x79, + 0xC4, 0x9F, 0xFF, 0xF7, 0xFB, 0xFF, 0xFF, 0xF4, 0xD2, 0x7F, 0xFF, 0xE1, 0x8E, 0x03, 0xFF, 0xE1, 0x89, 0x0E, 0xFF, + 0xEF, 0xC3, 0x47, 0xFF, 0xEF, 0xC2, 0x46, 0xFF, 0xEF, 0xC0, 0x44, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xF0, 0xBE, 0x41, + 0xFF, 0xEE, 0xBD, 0x42, 0xFF, 0xEC, 0xBC, 0x43, 0xFF, 0xEF, 0xBC, 0x40, 0xFF, 0xF1, 0xBB, 0x3E, 0xFF, 0xFD, 0xC0, + 0x2F, 0xFF, 0xFB, 0xBD, 0x35, 0xFF, 0x00, 0x4B, 0xF5, 0xFF, 0x52, 0x8A, 0xFF, 0xFF, 0x5D, 0xA5, 0xFA, 0xFF, 0x8D, + 0xC4, 0xFC, 0xFF, 0x85, 0xC1, 0xFB, 0xFF, 0x50, 0xAD, 0xF5, 0xFF, 0x5E, 0xB6, 0xF7, 0xFF, 0x6B, 0xBE, 0xF9, 0xFF, + 0x78, 0xC9, 0xFA, 0xFF, 0x85, 0xD4, 0xFB, 0xFF, 0x97, 0xDE, 0xFE, 0xFF, 0xAA, 0xE8, 0xFF, 0xFF, 0xAD, 0xEE, 0xFD, + 0xFF, 0xB1, 0xF4, 0xF9, 0xFF, 0xB9, 0xF5, 0xFC, 0xFF, 0xC2, 0xF6, 0xFE, 0xFF, 0xB2, 0xF0, 0xFB, 0xFF, 0x6E, 0xCB, + 0xF6, 0xFF, 0x91, 0xDE, 0xFB, 0xFF, 0xCA, 0xFC, 0xFC, 0xFF, 0xD0, 0xFB, 0xFF, 0xFF, 0xC8, 0xFC, 0xFF, 0xFF, 0xC7, + 0xE3, 0xCA, 0xFF, 0xF2, 0xA1, 0x15, 0xFF, 0xEE, 0xA3, 0x1D, 0xFF, 0xF1, 0xA1, 0x11, 0xFF, 0xB9, 0xD4, 0x9E, 0xFF, + 0x8B, 0xF1, 0xEA, 0xFF, 0x95, 0xEF, 0xDC, 0xFF, 0x90, 0xEB, 0xD9, 0xFF, 0x92, 0xEB, 0xD9, 0xFF, 0x94, 0xEC, 0xD8, + 0xFF, 0x8B, 0xEB, 0xD6, 0xFF, 0x82, 0xEA, 0xD3, 0xFF, 0x78, 0xE6, 0xC9, 0xFF, 0x6F, 0xE3, 0xBF, 0xFF, 0x68, 0xE2, + 0xB8, 0xFF, 0x61, 0xE2, 0xB1, 0xFF, 0x5D, 0xE0, 0xAE, 0xFF, 0x5A, 0xDE, 0xAC, 0xFF, 0x51, 0xD9, 0xA2, 0xFF, 0x48, + 0xD3, 0x98, 0xFF, 0x41, 0xCB, 0x8E, 0xFF, 0x39, 0xC3, 0x83, 0xFF, 0x32, 0xB7, 0x74, 0xFF, 0x2C, 0xAC, 0x66, 0xFF, + 0x29, 0xA2, 0x5D, 0xFF, 0x26, 0x99, 0x54, 0xFF, 0x21, 0x93, 0x4A, 0xFF, 0xB9, 0x99, 0x23, 0xFF, 0xFE, 0x93, 0x15, + 0xFF, 0xD8, 0x92, 0x09, 0xFF, 0xD8, 0x8F, 0x0F, 0xFF, 0xEF, 0xC4, 0x49, 0xFF, 0xEF, 0xC3, 0x47, 0xFF, 0xF0, 0xC2, + 0x46, 0xFF, 0xF0, 0xC1, 0x44, 0xFF, 0xF1, 0xC0, 0x42, 0xFF, 0xEF, 0xBF, 0x43, 0xFF, 0xED, 0xBE, 0x43, 0xFF, 0xEE, + 0xBE, 0x42, 0xFF, 0xF0, 0xBD, 0x41, 0xFF, 0xF0, 0xBA, 0x37, 0xFF, 0xB7, 0xA1, 0x71, 0xFF, 0x1D, 0x5D, 0xFE, 0xFF, + 0x31, 0x79, 0xF8, 0xFF, 0x51, 0xA1, 0xF5, 0xFF, 0x60, 0xAD, 0xF8, 0xFF, 0xBC, 0xE0, 0xFE, 0xFF, 0x57, 0xB6, 0xF7, + 0xFF, 0x68, 0xBF, 0xF9, 0xFF, 0x79, 0xC8, 0xFC, 0xFF, 0x82, 0xD2, 0xFC, 0xFF, 0x8B, 0xDB, 0xFC, 0xFF, 0x8F, 0xDE, + 0xFB, 0xFF, 0x92, 0xE0, 0xFB, 0xFF, 0xA3, 0xEA, 0xFA, 0xFF, 0xB4, 0xF4, 0xFA, 0xFF, 0xC1, 0xF8, 0xF9, 0xFF, 0xCE, + 0xFB, 0xF8, 0xFF, 0xB6, 0xEB, 0xF9, 0xFF, 0x83, 0xE1, 0xFA, 0xFF, 0x8F, 0xE2, 0xFD, 0xFF, 0xC7, 0xF9, 0xFB, 0xFF, + 0xD7, 0xF8, 0xFC, 0xFF, 0xCA, 0xFC, 0xFE, 0xFF, 0xDC, 0xCD, 0x8B, 0xFF, 0xED, 0x9F, 0x18, 0xFF, 0xED, 0xA3, 0x24, + 0xFF, 0xFA, 0x9D, 0x0A, 0xFF, 0xA5, 0xF5, 0xE7, 0xFF, 0xA5, 0xF1, 0xE4, 0xFF, 0xA5, 0xF0, 0xE4, 0xFF, 0xA6, 0xEF, + 0xE3, 0xFF, 0xA9, 0xF0, 0xE4, 0xFF, 0xAD, 0xF2, 0xE6, 0xFF, 0xA5, 0xF0, 0xE3, 0xFF, 0x9E, 0xEF, 0xE0, 0xFF, 0x92, + 0xEC, 0xD6, 0xFF, 0x87, 0xE9, 0xCD, 0xFF, 0x7F, 0xE9, 0xC7, 0xFF, 0x78, 0xEA, 0xC2, 0xFF, 0x72, 0xEA, 0xC1, 0xFF, + 0x6D, 0xE9, 0xC0, 0xFF, 0x60, 0xE3, 0xB1, 0xFF, 0x53, 0xDD, 0xA2, 0xFF, 0x46, 0xD2, 0x94, 0xFF, 0x3A, 0xC8, 0x86, + 0xFF, 0x35, 0xBC, 0x77, 0xFF, 0x30, 0xB0, 0x69, 0xFF, 0x2B, 0xA5, 0x62, 0xFF, 0x26, 0x9B, 0x5B, 0xFF, 0x09, 0x91, + 0x57, 0xFF, 0xFB, 0x94, 0x09, 0xFF, 0xE5, 0x95, 0x0C, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEB, 0x91, 0x0F, 0xFF, 0xEF, + 0xC5, 0x4A, 0xFF, 0xF0, 0xC4, 0x48, 0xFF, 0xF0, 0xC3, 0x47, 0xFF, 0xF1, 0xC2, 0x45, 0xFF, 0xF1, 0xC1, 0x43, 0xFF, + 0xF1, 0xC1, 0x41, 0xFF, 0xF1, 0xC1, 0x3F, 0xFF, 0xF0, 0xBE, 0x3F, 0xFF, 0xEF, 0xBC, 0x3F, 0xFF, 0xFD, 0xC2, 0x32, + 0xFF, 0x6E, 0x7F, 0xBD, 0xFF, 0x26, 0x65, 0xFE, 0xFF, 0x34, 0x7B, 0xF5, 0xFF, 0x4C, 0x9A, 0xF5, 0xFF, 0x5C, 0xAB, + 0xF8, 0xFF, 0x9F, 0xD0, 0xFA, 0xFF, 0x83, 0xC6, 0xF7, 0xFF, 0x6A, 0xC1, 0xFD, 0xFF, 0x7E, 0xD1, 0xFD, 0xFF, 0x87, + 0xDB, 0xFB, 0xFF, 0x8F, 0xE5, 0xF9, 0xFF, 0x9A, 0xEC, 0xF8, 0xFF, 0xA5, 0xF4, 0xF7, 0xFF, 0x99, 0xEA, 0xFB, 0xFF, + 0x8E, 0xDF, 0xFF, 0xFF, 0x9F, 0xE2, 0xFB, 0xFF, 0xB1, 0xE6, 0xF7, 0xFF, 0xCC, 0xED, 0xFB, 0xFF, 0xCA, 0xFA, 0xFF, + 0xFF, 0xC6, 0xF2, 0xFF, 0xFF, 0xC2, 0xF0, 0xFC, 0xFF, 0xD2, 0xF5, 0xFE, 0xFF, 0xD3, 0xFC, 0xFF, 0xFF, 0xE6, 0xB5, + 0x4B, 0xFF, 0xED, 0xA4, 0x20, 0xFF, 0xED, 0xA2, 0x1B, 0xFF, 0xE2, 0xAA, 0x3D, 0xFF, 0xAB, 0xF6, 0xEE, 0xFF, 0xB1, + 0xF1, 0xE5, 0xFF, 0xB4, 0xF2, 0xE7, 0xFF, 0xB8, 0xF3, 0xE9, 0xFF, 0xBA, 0xF3, 0xE9, 0xFF, 0xBC, 0xF4, 0xEA, 0xFF, + 0xB5, 0xF3, 0xE8, 0xFF, 0xAF, 0xF2, 0xE5, 0xFF, 0xA8, 0xF0, 0xE0, 0xFF, 0xA1, 0xED, 0xDA, 0xFF, 0x99, 0xEF, 0xD5, + 0xFF, 0x91, 0xF0, 0xD0, 0xFF, 0x82, 0xED, 0xC8, 0xFF, 0x72, 0xEA, 0xC0, 0xFF, 0x61, 0xE3, 0xB0, 0xFF, 0x50, 0xDC, + 0xA0, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x3E, 0xCA, 0x88, 0xFF, 0x38, 0xBF, 0x7B, 0xFF, 0x32, 0xB4, 0x6E, 0xFF, 0x2E, + 0xA8, 0x65, 0xFF, 0x1B, 0xA0, 0x5D, 0xFF, 0x48, 0x94, 0x3C, 0xFF, 0xF6, 0x93, 0x0A, 0xFF, 0xEC, 0x94, 0x0D, 0xFF, + 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0x92, 0x10, 0xFF, 0xF0, 0xC5, 0x4B, 0xFF, 0xF0, 0xC4, 0x49, 0xFF, 0xF1, 0xC4, 0x48, + 0xFF, 0xF1, 0xC3, 0x46, 0xFF, 0xF2, 0xC2, 0x44, 0xFF, 0xF4, 0xC3, 0x3F, 0xFF, 0xF6, 0xC4, 0x3A, 0xFF, 0xF3, 0xBF, + 0x3C, 0xFF, 0xEF, 0xBA, 0x3D, 0xFF, 0xFF, 0xCA, 0x2C, 0xFF, 0x24, 0x5D, 0xFF, 0xFF, 0x2E, 0x6D, 0xFE, 0xFF, 0x38, + 0x7D, 0xF2, 0xFF, 0x48, 0x93, 0xF5, 0xFF, 0x57, 0xA9, 0xF7, 0xFF, 0x82, 0xC0, 0xF7, 0xFF, 0xAE, 0xD7, 0xF7, 0xFF, + 0x6C, 0xC2, 0xFF, 0xFF, 0x84, 0xDA, 0xFE, 0xFF, 0x8B, 0xE4, 0xFA, 0xFF, 0x93, 0xEE, 0xF6, 0xFF, 0x9D, 0xED, 0xF8, + 0xFF, 0xA7, 0xEC, 0xF9, 0xFF, 0xB3, 0xF1, 0xF8, 0xFF, 0xC0, 0xF6, 0xF7, 0xFF, 0xC8, 0xF6, 0xFB, 0xFF, 0xD0, 0xF6, + 0xFF, 0xFF, 0xD3, 0xF2, 0xFE, 0xFF, 0xB9, 0xF3, 0xFB, 0xFF, 0xE7, 0xFD, 0xFF, 0xFF, 0xE9, 0xFD, 0xF6, 0xFF, 0xE2, + 0xFC, 0xFC, 0xFF, 0xDC, 0xFC, 0xFF, 0xFF, 0xF1, 0x9D, 0x0B, 0xFF, 0xEC, 0xAA, 0x29, 0xFF, 0xF5, 0xAA, 0x1B, 0xFF, + 0xD9, 0xC7, 0x7F, 0xFF, 0xBA, 0xFE, 0xFD, 0xFF, 0xBD, 0xF2, 0xE7, 0xFF, 0xC3, 0xF4, 0xEB, 0xFF, 0xCA, 0xF6, 0xEE, + 0xFF, 0xCA, 0xF6, 0xEF, 0xFF, 0xCB, 0xF7, 0xEF, 0xFF, 0xC5, 0xF6, 0xED, 0xFF, 0xBF, 0xF5, 0xEB, 0xFF, 0xBE, 0xF3, + 0xE9, 0xFF, 0xBC, 0xF2, 0xE8, 0xFF, 0xB3, 0xF4, 0xE3, 0xFF, 0xAB, 0xF6, 0xDF, 0xFF, 0x91, 0xF1, 0xD0, 0xFF, 0x77, + 0xEC, 0xC1, 0xFF, 0x62, 0xE3, 0xAF, 0xFF, 0x4E, 0xDB, 0x9E, 0xFF, 0x47, 0xD3, 0x94, 0xFF, 0x41, 0xCC, 0x8A, 0xFF, + 0x3B, 0xC2, 0x7F, 0xFF, 0x35, 0xB8, 0x73, 0xFF, 0x30, 0xAC, 0x69, 0xFF, 0x10, 0xA5, 0x60, 0xFF, 0x86, 0x96, 0x22, + 0xFF, 0xF0, 0x91, 0x0A, 0xFF, 0xF2, 0x92, 0x0E, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF4, 0x94, 0x11, 0xFF, 0xF1, 0xC5, + 0x4C, 0xFF, 0xF1, 0xC5, 0x4A, 0xFF, 0xF1, 0xC4, 0x49, 0xFF, 0xF2, 0xC4, 0x47, 0xFF, 0xF2, 0xC3, 0x45, 0xFF, 0xF1, + 0xC3, 0x43, 0xFF, 0xF0, 0xC4, 0x40, 0xFF, 0xF3, 0xBF, 0x42, 0xFF, 0xF5, 0xC0, 0x39, 0xFF, 0xCA, 0xAC, 0x5E, 0xFF, + 0x1E, 0x58, 0xFA, 0xFF, 0x30, 0x6E, 0xF3, 0xFF, 0x35, 0x80, 0xF7, 0xFF, 0x3E, 0x92, 0xFB, 0xFF, 0x5D, 0xAF, 0xFB, + 0xFF, 0x72, 0xC2, 0xFF, 0xFF, 0xBA, 0xE1, 0xFD, 0xFF, 0x74, 0xCD, 0xFF, 0xFF, 0x71, 0xD3, 0xFF, 0xFF, 0x83, 0xE5, + 0xFF, 0xFF, 0x95, 0xF7, 0xFF, 0xFF, 0xA1, 0xF4, 0xFE, 0xFF, 0xAD, 0xF0, 0xFD, 0xFF, 0xC1, 0xF8, 0xFF, 0xFF, 0xCD, + 0xF7, 0xFB, 0xFF, 0xD1, 0xF8, 0xFE, 0xFF, 0xD6, 0xF9, 0xFF, 0xFF, 0xE0, 0xF6, 0xFE, 0xFF, 0xDD, 0xF5, 0xFB, 0xFF, + 0xED, 0xFB, 0xFF, 0xFF, 0xE8, 0xFB, 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xFF, 0xE8, 0xE0, 0xB2, 0xFF, 0xEF, 0xA3, 0x18, + 0xFF, 0xEC, 0xAA, 0x25, 0xFF, 0xF5, 0xA8, 0x15, 0xFF, 0xD8, 0xE3, 0xC2, 0xFF, 0xC5, 0xF9, 0xF9, 0xFF, 0xCA, 0xF5, + 0xEE, 0xFF, 0xCE, 0xF6, 0xEF, 0xFF, 0xD2, 0xF7, 0xF0, 0xFF, 0xD1, 0xF8, 0xF1, 0xFF, 0xD0, 0xF9, 0xF1, 0xFF, 0xCD, + 0xF9, 0xF1, 0xFF, 0xC9, 0xF9, 0xF1, 0xFF, 0xC9, 0xFB, 0xF2, 0xFF, 0xCA, 0xFC, 0xF4, 0xFF, 0xB6, 0xF8, 0xE6, 0xFF, + 0xA2, 0xF3, 0xD9, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x71, 0xEB, 0xBC, 0xFF, 0x61, 0xE6, 0xB0, 0xFF, 0x50, 0xE1, 0xA4, + 0xFF, 0x48, 0xD9, 0x99, 0xFF, 0x40, 0xD2, 0x8F, 0xFF, 0x3A, 0xC7, 0x83, 0xFF, 0x34, 0xBC, 0x77, 0xFF, 0x1C, 0xB2, + 0x6A, 0xFF, 0x04, 0xA9, 0x5D, 0xFF, 0xEA, 0x8D, 0x13, 0xFF, 0xEF, 0x93, 0x11, 0xFF, 0xEF, 0x92, 0x0F, 0xFF, 0xF0, + 0x92, 0x0E, 0xFF, 0xF0, 0x92, 0x0E, 0xFF, 0xF2, 0xC6, 0x4D, 0xFF, 0xF2, 0xC5, 0x4B, 0xFF, 0xF2, 0xC5, 0x4A, 0xFF, + 0xF2, 0xC5, 0x48, 0xFF, 0xF2, 0xC4, 0x46, 0xFF, 0xEE, 0xC4, 0x46, 0xFF, 0xEA, 0xC4, 0x46, 0xFF, 0xF2, 0xBF, 0x48, + 0xFF, 0xFB, 0xC6, 0x34, 0xFF, 0x91, 0x95, 0x98, 0xFF, 0x27, 0x64, 0xFC, 0xFF, 0x3B, 0x76, 0xF1, 0xFF, 0x32, 0x83, + 0xFC, 0xFF, 0x34, 0x91, 0xFF, 0xFF, 0x63, 0xB4, 0xFF, 0xFF, 0x5A, 0xBD, 0xFF, 0xFF, 0xB5, 0xDC, 0xF3, 0xFF, 0x97, + 0xD0, 0xCB, 0xFF, 0xA4, 0xCE, 0xB4, 0xFF, 0xB0, 0xD2, 0xAF, 0xFF, 0xBC, 0xD6, 0xAB, 0xFF, 0xBE, 0xE1, 0xC2, 0xFF, + 0xC0, 0xEB, 0xDA, 0xFF, 0xC7, 0xFC, 0xF5, 0xFF, 0xBD, 0xFE, 0xFF, 0xFF, 0xCC, 0xFD, 0xFF, 0xFF, 0xDB, 0xFC, 0xFF, + 0xFF, 0xE0, 0xFC, 0xFE, 0xFF, 0xE4, 0xFC, 0xFB, 0xFF, 0xE6, 0xFB, 0xFD, 0xFF, 0xE7, 0xFA, 0xFF, 0xFF, 0xDD, 0xFB, + 0xFF, 0xFF, 0xF4, 0xC4, 0x61, 0xFF, 0xEE, 0xAA, 0x26, 0xFF, 0xEB, 0xAA, 0x22, 0xFF, 0xF6, 0xA7, 0x10, 0xFF, 0xD6, + 0xFF, 0xFF, 0xFF, 0xCF, 0xF4, 0xF5, 0xFF, 0xD8, 0xF9, 0xF5, 0xFF, 0xD9, 0xF9, 0xF4, 0xFF, 0xD9, 0xF8, 0xF2, 0xFF, + 0xD8, 0xF9, 0xF3, 0xFF, 0xD6, 0xFB, 0xF4, 0xFF, 0xD5, 0xFC, 0xF5, 0xFF, 0xD3, 0xFD, 0xF6, 0xFF, 0xCD, 0xFA, 0xF3, + 0xFF, 0xC7, 0xF6, 0xEF, 0xFF, 0xB0, 0xF3, 0xE1, 0xFF, 0x98, 0xF0, 0xD3, 0xFF, 0x82, 0xED, 0xC5, 0xFF, 0x6B, 0xEB, + 0xB7, 0xFF, 0x5F, 0xE9, 0xB0, 0xFF, 0x53, 0xE7, 0xAA, 0xFF, 0x49, 0xDF, 0x9F, 0xFF, 0x3E, 0xD7, 0x93, 0xFF, 0x39, + 0xCB, 0x87, 0xFF, 0x34, 0xBF, 0x7B, 0xFF, 0x25, 0xB4, 0x6B, 0xFF, 0x32, 0xA2, 0x5B, 0xFF, 0xF9, 0x94, 0x04, 0xFF, + 0xED, 0x94, 0x17, 0xFF, 0xEC, 0x92, 0x11, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xEB, 0x91, 0x0B, 0xFF, 0xF2, 0xC7, 0x4E, + 0xFF, 0xF3, 0xC7, 0x4D, 0xFF, 0xF3, 0xC7, 0x4C, 0xFF, 0xF3, 0xC7, 0x4A, 0xFF, 0xF4, 0xC7, 0x49, 0xFF, 0xF1, 0xC4, + 0x47, 0xFF, 0xEE, 0xC1, 0x45, 0xFF, 0xF7, 0xC2, 0x42, 0xFF, 0xFF, 0xC8, 0x33, 0xFF, 0x46, 0x67, 0xDE, 0xFF, 0x2A, + 0x63, 0xFF, 0xFF, 0x1B, 0x6F, 0xFF, 0xFF, 0x52, 0x8B, 0xE0, 0xFF, 0x84, 0xA0, 0xA3, 0xFF, 0xCC, 0xC1, 0x62, 0xFF, + 0xFF, 0xC0, 0x26, 0xFF, 0xFF, 0xB7, 0x29, 0xFF, 0xF1, 0xB5, 0x24, 0xFF, 0xF9, 0xB7, 0x27, 0xFF, 0xF6, 0xB5, 0x25, + 0xFF, 0xF2, 0xB2, 0x23, 0xFF, 0xFA, 0xB5, 0x24, 0xFF, 0xFF, 0xB7, 0x24, 0xFF, 0xDE, 0x9D, 0x17, 0xFF, 0xF4, 0xBA, + 0x42, 0xFF, 0xE7, 0xDA, 0x9E, 0xFF, 0xDC, 0xF9, 0xF9, 0xFF, 0xE6, 0xFB, 0xF3, 0xFF, 0xE9, 0xFF, 0xFF, 0xFF, 0xE6, + 0xFF, 0xFD, 0xFF, 0xE2, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xA7, 0x1D, 0xFF, 0xF0, 0xA7, 0x1C, 0xFF, + 0xF1, 0xA7, 0x1A, 0xFF, 0xF0, 0xC4, 0x5A, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xE1, 0xF9, 0xFA, 0xFF, 0xE2, 0xFB, 0xFA, + 0xFF, 0xDF, 0xFB, 0xF8, 0xFF, 0xDC, 0xFA, 0xF5, 0xFF, 0xDB, 0xFB, 0xF5, 0xFF, 0xD9, 0xFB, 0xF5, 0xFF, 0xD6, 0xFC, + 0xF5, 0xFF, 0xD3, 0xFD, 0xF5, 0xFF, 0xC8, 0xF8, 0xF0, 0xFF, 0xBD, 0xF4, 0xEA, 0xFF, 0xA8, 0xF1, 0xDF, 0xFF, 0x93, + 0xEF, 0xD4, 0xFF, 0x7A, 0xF3, 0xC6, 0xFF, 0x61, 0xF8, 0xB9, 0xFF, 0x57, 0xEF, 0xB0, 0xFF, 0x4D, 0xE6, 0xA6, 0xFF, + 0x48, 0xE2, 0xA3, 0xFF, 0x3A, 0xD6, 0x98, 0xFF, 0x37, 0xCD, 0x89, 0xFF, 0x35, 0xC3, 0x7B, 0xFF, 0x20, 0xB7, 0x6F, + 0xFF, 0x84, 0x9C, 0x3A, 0xFF, 0xF4, 0x93, 0x0C, 0xFF, 0xEC, 0x94, 0x13, 0xFF, 0xE9, 0x93, 0x11, 0xFF, 0xE6, 0x92, + 0x0F, 0xFF, 0xE6, 0x92, 0x0F, 0xFF, 0xF3, 0xC9, 0x50, 0xFF, 0xF4, 0xC9, 0x4F, 0xFF, 0xF4, 0xC9, 0x4E, 0xFF, 0xF5, + 0xCA, 0x4D, 0xFF, 0xF5, 0xCA, 0x4B, 0xFF, 0xF4, 0xC5, 0x48, 0xFF, 0xF3, 0xBF, 0x44, 0xFF, 0xEE, 0xC1, 0x47, 0xFF, + 0xEA, 0xC4, 0x4A, 0xFF, 0x1F, 0x52, 0xFF, 0xFF, 0x92, 0x9A, 0xA6, 0xFF, 0xE6, 0xB6, 0x51, 0xFF, 0xFF, 0xC7, 0x28, + 0xFF, 0xF8, 0xC4, 0x2C, 0xFF, 0xF0, 0xC0, 0x30, 0xFF, 0xEF, 0xBA, 0x3F, 0xFF, 0xEF, 0xBF, 0x37, 0xFF, 0xEF, 0xB9, + 0x38, 0xFF, 0xF0, 0xB2, 0x3A, 0xFF, 0xF3, 0xB5, 0x38, 0xFF, 0xF6, 0xB7, 0x35, 0xFF, 0xEF, 0xB9, 0x32, 0xFF, 0xE8, + 0xBB, 0x2F, 0xFF, 0xEA, 0xB8, 0x2F, 0xFF, 0xED, 0xB4, 0x2F, 0xFF, 0xF3, 0xAC, 0x1F, 0xFF, 0xF9, 0xA3, 0x10, 0xFF, + 0xF2, 0xC9, 0x6F, 0xFF, 0xDF, 0xF9, 0xF5, 0xFF, 0xDE, 0xFB, 0xF5, 0xFF, 0xDD, 0xFD, 0xF5, 0xFF, 0xE3, 0xEA, 0xD7, + 0xFF, 0xEE, 0xA5, 0x10, 0xFF, 0xF4, 0xB2, 0x2D, 0xFF, 0xF7, 0xA5, 0x13, 0xFF, 0xEB, 0xE1, 0xA5, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFF, 0xF2, 0xFE, 0xFF, 0xFF, 0xEC, 0xFD, 0xFF, 0xFF, 0xE6, 0xFC, 0xFC, 0xFF, 0xDF, 0xFC, 0xF7, 0xFF, 0xDE, + 0xFC, 0xF7, 0xFF, 0xDC, 0xFC, 0xF6, 0xFF, 0xD7, 0xFC, 0xF5, 0xFF, 0xD3, 0xFC, 0xF4, 0xFF, 0xC3, 0xF7, 0xED, 0xFF, + 0xB4, 0xF1, 0xE5, 0xFF, 0xB7, 0xF5, 0xE4, 0xFF, 0xBB, 0xF9, 0xE4, 0xFF, 0xD2, 0xFE, 0xEB, 0xFF, 0xE9, 0xFF, 0xF2, + 0xFF, 0xDB, 0xFE, 0xED, 0xFF, 0xCD, 0xF9, 0xE8, 0xFF, 0x89, 0xEF, 0xCA, 0xFF, 0x35, 0xD6, 0x9C, 0xFF, 0x2D, 0xC6, + 0x83, 0xFF, 0x25, 0xB7, 0x6B, 0xFF, 0x14, 0xB3, 0x6C, 0xFF, 0xD6, 0x95, 0x1A, 0xFF, 0xEE, 0x91, 0x15, 0xFF, 0xEB, + 0x93, 0x0F, 0xFF, 0xE6, 0x93, 0x10, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xE0, 0x93, 0x12, 0xFF, 0xF4, 0xCA, 0x52, 0xFF, + 0xF4, 0xCA, 0x50, 0xFF, 0xF3, 0xCA, 0x4E, 0xFF, 0xF3, 0xC9, 0x4C, 0xFF, 0xF3, 0xC9, 0x4A, 0xFF, 0xF4, 0xC8, 0x48, + 0xFF, 0xF6, 0xC6, 0x46, 0xFF, 0xEC, 0xBF, 0x3F, 0xFF, 0xEB, 0xBF, 0x41, 0xFF, 0xF8, 0xD4, 0x40, 0xFF, 0xFC, 0xC9, + 0x33, 0xFF, 0xFF, 0xC9, 0x2F, 0xFF, 0xEC, 0xC2, 0x42, 0xFF, 0xF4, 0xC3, 0x40, 0xFF, 0xFC, 0xC3, 0x3E, 0xFF, 0xF3, + 0xBB, 0x34, 0xFF, 0xF2, 0xBB, 0x33, 0xFF, 0xF6, 0xBD, 0x49, 0xFF, 0xF8, 0xB7, 0x38, 0xFF, 0xF5, 0xB7, 0x36, 0xFF, + 0xF2, 0xB7, 0x34, 0xFF, 0xF3, 0xB5, 0x2E, 0xFF, 0xF5, 0xB3, 0x27, 0xFF, 0xF7, 0xBA, 0x2F, 0xFF, 0xF2, 0xBA, 0x2F, + 0xFF, 0xF1, 0xB5, 0x30, 0xFF, 0xF0, 0xB0, 0x31, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xED, 0xAA, 0x0C, 0xFF, 0xEC, 0xD2, + 0x7E, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xD2, 0xD9, 0x80, 0xFF, 0xF8, 0xA9, 0x2E, 0xFF, 0xEB, 0xAF, 0x1C, 0xFF, 0xE5, + 0xAA, 0x02, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xFF, 0xFF, 0xF4, 0xFD, 0xFF, 0xFF, + 0xEB, 0xFD, 0xFD, 0xFF, 0xE2, 0xFE, 0xFA, 0xFF, 0xE1, 0xFD, 0xF9, 0xFF, 0xE0, 0xFC, 0xF7, 0xFF, 0xD7, 0xFC, 0xF5, + 0xFF, 0xCF, 0xFD, 0xF3, 0xFF, 0xE2, 0xFB, 0xF4, 0xFF, 0xE7, 0xFD, 0xF6, 0xFF, 0xE8, 0xFD, 0xF3, 0xFF, 0xE9, 0xFD, + 0xF0, 0xFF, 0xD3, 0xFD, 0xEB, 0xFF, 0xBD, 0xFC, 0xE5, 0xFF, 0xBA, 0xF7, 0xDF, 0xFF, 0xB6, 0xF2, 0xDA, 0xFF, 0xD2, + 0xFB, 0xE9, 0xFF, 0xE6, 0xFC, 0xF1, 0xFF, 0x8D, 0xDE, 0xB6, 0xFF, 0x3C, 0xC7, 0x84, 0xFF, 0x47, 0xB7, 0x99, 0xFF, + 0xF8, 0xA1, 0x13, 0xFF, 0xF2, 0x94, 0x04, 0xFF, 0xEE, 0x94, 0x10, 0xFF, 0xEC, 0x94, 0x10, 0xFF, 0xE9, 0x95, 0x10, + 0xFF, 0xE9, 0x95, 0x10, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF3, 0xCB, 0x50, 0xFF, 0xF2, 0xCA, 0x4E, 0xFF, 0xF1, 0xC9, + 0x4B, 0xFF, 0xF0, 0xC7, 0x48, 0xFF, 0xF4, 0xCB, 0x48, 0xFF, 0xF9, 0xCE, 0x47, 0xFF, 0xF2, 0xC4, 0x40, 0xFF, 0xFC, + 0xCA, 0x48, 0xFF, 0xF0, 0xC2, 0x3F, 0xFF, 0xF5, 0xC9, 0x46, 0xFF, 0xF4, 0xC7, 0x46, 0xFF, 0xF3, 0xC4, 0x45, 0xFF, + 0xED, 0xB4, 0x38, 0xFF, 0xE8, 0xA5, 0x2C, 0xFF, 0xE1, 0xB0, 0x2E, 0xFF, 0xEA, 0xC0, 0x56, 0xFF, 0xE9, 0xC8, 0x6C, + 0xFF, 0xE4, 0xC1, 0x36, 0xFF, 0xEB, 0xC9, 0x50, 0xFF, 0xF1, 0xD1, 0x6A, 0xFF, 0xF5, 0xD0, 0x73, 0xFF, 0xF9, 0xCF, + 0x7D, 0xFF, 0xF8, 0xC7, 0x56, 0xFF, 0xE7, 0xAF, 0x1F, 0xFF, 0xED, 0xB1, 0x25, 0xFF, 0xF4, 0xB2, 0x2B, 0xFF, 0xF9, + 0xB5, 0x3E, 0xFF, 0xEE, 0xB3, 0x2A, 0xFF, 0xF5, 0xAF, 0x1B, 0xFF, 0xF0, 0xB5, 0x32, 0xFF, 0xF9, 0xB1, 0x3F, 0xFF, + 0xF2, 0xA9, 0x26, 0xFF, 0xEA, 0xAE, 0x1F, 0xFF, 0xF3, 0xB8, 0x3F, 0xFF, 0xF3, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFD, 0xFE, 0xFF, 0xF0, 0xFE, 0xFE, 0xFF, 0xE5, 0xFF, 0xFD, 0xFF, 0xE4, 0xFE, + 0xFB, 0xFF, 0xE3, 0xFC, 0xF8, 0xFF, 0xD7, 0xFD, 0xF5, 0xFF, 0xCB, 0xFD, 0xF2, 0xFF, 0xEB, 0xFB, 0xF4, 0xFF, 0xEE, + 0xFE, 0xF6, 0xFF, 0xDE, 0xFD, 0xF1, 0xFF, 0xCE, 0xFB, 0xED, 0xFF, 0xB0, 0xF9, 0xE2, 0xFF, 0x91, 0xF6, 0xD8, 0xFF, + 0x8A, 0xF3, 0xD2, 0xFF, 0x83, 0xF1, 0xCC, 0xFF, 0x96, 0xEE, 0xCE, 0xFF, 0xA9, 0xEA, 0xD0, 0xFF, 0xC0, 0xEA, 0xDA, + 0xFF, 0xE8, 0xFA, 0xF4, 0xFF, 0x78, 0xC6, 0x7E, 0xFF, 0xFF, 0xC0, 0x59, 0xFF, 0xEA, 0xA0, 0x19, 0xFF, 0xF2, 0x95, + 0x10, 0xFF, 0xF2, 0x96, 0x0F, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF2, 0x96, 0x0D, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, + 0xCB, 0x51, 0xFF, 0xF3, 0xCA, 0x4F, 0xFF, 0xF2, 0xC9, 0x4C, 0xFF, 0xF2, 0xC8, 0x4A, 0xFF, 0xF1, 0xC6, 0x48, 0xFF, + 0xF1, 0xC4, 0x47, 0xFF, 0xF3, 0xD2, 0x48, 0xFF, 0xF3, 0xC7, 0x46, 0xFF, 0xFB, 0xC5, 0x4C, 0xFF, 0xDC, 0x9A, 0x2B, + 0xFF, 0xCD, 0x83, 0x17, 0xFF, 0xBE, 0x6B, 0x03, 0xFF, 0xC5, 0x7F, 0x00, 0xFF, 0xD4, 0x96, 0x0E, 0xFF, 0xDB, 0xAC, + 0x2E, 0xFF, 0xEA, 0xC5, 0x60, 0xFF, 0xEF, 0xCC, 0x75, 0xFF, 0xEA, 0xCA, 0x51, 0xFF, 0xEF, 0xD2, 0x69, 0xFF, 0xF5, + 0xDA, 0x81, 0xFF, 0xF7, 0xE4, 0x99, 0xFF, 0xF9, 0xEE, 0xB2, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, 0xFF, 0xFE, 0xE2, 0xFF, + 0xFF, 0xE1, 0x99, 0xFF, 0xF7, 0xBC, 0x48, 0xFF, 0xDC, 0xB4, 0x10, 0xFF, 0xF0, 0xAD, 0x31, 0xFF, 0xFB, 0xAC, 0x27, + 0xFF, 0xF3, 0xB2, 0x30, 0xFF, 0xF5, 0xB1, 0x34, 0xFF, 0xF0, 0xAD, 0x24, 0xFF, 0xF6, 0xAC, 0x26, 0xFF, 0xFC, 0xD1, + 0x97, 0xFF, 0xF7, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, 0xFE, 0xFF, 0xED, + 0xFF, 0xFD, 0xFF, 0xE7, 0xFD, 0xFC, 0xFF, 0xE3, 0xFE, 0xFB, 0xFF, 0xDF, 0xFE, 0xF9, 0xFF, 0xE7, 0xFD, 0xF8, 0xFF, + 0xEF, 0xFC, 0xF7, 0xFF, 0xEB, 0xFB, 0xF3, 0xFF, 0xD8, 0xFD, 0xEF, 0xFF, 0xC2, 0xFA, 0xE8, 0xFF, 0xAB, 0xF8, 0xE2, + 0xFF, 0x9B, 0xF4, 0xD8, 0xFF, 0x8A, 0xEF, 0xCE, 0xFF, 0x76, 0xEA, 0xC1, 0xFF, 0x61, 0xE5, 0xB4, 0xFF, 0x5A, 0xDD, + 0xAB, 0xFF, 0x61, 0xD2, 0xA2, 0xFF, 0x8D, 0xE9, 0xC1, 0xFF, 0xB8, 0xE7, 0xDA, 0xFF, 0xFF, 0xD4, 0x96, 0xFF, 0xFA, + 0xD0, 0x8E, 0xFF, 0xED, 0xAD, 0x41, 0xFF, 0xF1, 0x95, 0x10, 0xFF, 0xF1, 0x95, 0x0F, 0xFF, 0xF1, 0x96, 0x0E, 0xFF, + 0xF1, 0x96, 0x0E, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF4, 0xCC, 0x52, 0xFF, 0xF4, 0xCB, 0x50, 0xFF, 0xF3, 0xC9, 0x4E, + 0xFF, 0xF3, 0xC8, 0x4B, 0xFF, 0xF6, 0xC9, 0x51, 0xFF, 0xFA, 0xCA, 0x56, 0xFF, 0xEA, 0xC0, 0x44, 0xFF, 0xC6, 0x74, + 0x19, 0xFF, 0xAD, 0x58, 0x00, 0xFF, 0xB3, 0x5B, 0x01, 0xFF, 0xC0, 0x6F, 0x06, 0xFF, 0xCC, 0x84, 0x0B, 0xFF, 0xCE, + 0x93, 0x00, 0xFF, 0xDF, 0xA7, 0x11, 0xFF, 0xE5, 0xB9, 0x3E, 0xFF, 0xEB, 0xCA, 0x6A, 0xFF, 0xF5, 0xD1, 0x7E, 0xFF, + 0xF0, 0xD3, 0x6B, 0xFF, 0xF4, 0xDB, 0x81, 0xFF, 0xF8, 0xE3, 0x97, 0xFF, 0xF7, 0xEB, 0xA4, 0xFF, 0xF5, 0xF4, 0xB1, + 0xFF, 0xF9, 0xF7, 0xC7, 0xFF, 0xFC, 0xFA, 0xDC, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0xF5, 0xFF, 0xF8, 0xFF, 0xFD, 0xEB, + 0xBB, 0xFF, 0xF2, 0xB4, 0x22, 0xFF, 0xFF, 0xAF, 0x28, 0xFF, 0xF6, 0xB0, 0x2F, 0xFF, 0xF2, 0xB0, 0x29, 0xFF, 0xEE, + 0xB1, 0x22, 0xFF, 0xF9, 0xA7, 0x19, 0xFF, 0xF4, 0xE6, 0xC9, 0xFF, 0xF4, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xF6, 0xFF, 0xFE, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xEA, 0xFF, 0xFC, 0xFF, 0xE8, 0xFA, 0xFA, 0xFF, 0xE2, 0xFD, 0xFB, + 0xFF, 0xDC, 0xFF, 0xFB, 0xFF, 0xE9, 0xFF, 0xFB, 0xFF, 0xF6, 0xFF, 0xFB, 0xFF, 0xDC, 0xFD, 0xF1, 0xFF, 0xC3, 0xFB, + 0xE7, 0xFF, 0xB4, 0xF5, 0xDF, 0xFF, 0xA5, 0xF0, 0xD8, 0xFF, 0x94, 0xEC, 0xCE, 0xFF, 0x83, 0xE8, 0xC4, 0xFF, 0x77, + 0xE5, 0xB7, 0xFF, 0x6B, 0xE3, 0xAB, 0xFF, 0x52, 0xDE, 0xA0, 0xFF, 0x55, 0xD4, 0x94, 0xFF, 0x40, 0xBD, 0x7F, 0xFF, + 0x98, 0xE4, 0xD1, 0xFF, 0xF4, 0xA1, 0x2B, 0xFF, 0xF6, 0xA1, 0x2F, 0xFF, 0xF3, 0x9B, 0x1F, 0xFF, 0xF0, 0x95, 0x0F, + 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF0, 0x95, 0x0F, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCC, + 0x53, 0xFF, 0xF4, 0xCB, 0x51, 0xFF, 0xF5, 0xCA, 0x4F, 0xFF, 0xF6, 0xC9, 0x4E, 0xFF, 0xF4, 0xC9, 0x4D, 0xFF, 0xFA, + 0xD0, 0x53, 0xFF, 0xCD, 0x86, 0x2A, 0xFF, 0xB0, 0x52, 0x06, 0xFF, 0xB8, 0x5F, 0x04, 0xFF, 0xC8, 0x73, 0x0A, 0xFF, + 0xCE, 0x82, 0x08, 0xFF, 0xD3, 0x91, 0x06, 0xFF, 0xD5, 0xA0, 0x01, 0xFF, 0xE6, 0xB4, 0x24, 0xFF, 0xEA, 0xC4, 0x4C, + 0xFF, 0xED, 0xD3, 0x74, 0xFF, 0xF4, 0xD9, 0x83, 0xFF, 0xF3, 0xDC, 0x7E, 0xFF, 0xF6, 0xE4, 0x93, 0xFF, 0xF8, 0xEC, + 0xA8, 0xFF, 0xF9, 0xF2, 0xB5, 0xFF, 0xF9, 0xF8, 0xC3, 0xFF, 0xFA, 0xFA, 0xD3, 0xFF, 0xFB, 0xFB, 0xE2, 0xFF, 0xFB, + 0xFE, 0xED, 0xFF, 0xF3, 0xF9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEE, 0xDC, 0x7E, 0xFF, + 0xFD, 0xAD, 0x26, 0xFF, 0xF7, 0xAF, 0x29, 0xFF, 0xF1, 0xB1, 0x2D, 0xFF, 0xDF, 0xB1, 0x34, 0xFF, 0xF6, 0xA6, 0x09, + 0xFF, 0xF4, 0xD3, 0x8C, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFD, 0xFF, 0xE5, 0xFE, + 0xFC, 0xFF, 0xE0, 0xFB, 0xFB, 0xFF, 0xDE, 0xFC, 0xF9, 0xFF, 0xDC, 0xFC, 0xF7, 0xFF, 0xEF, 0xFF, 0xFC, 0xFF, 0xEB, + 0xFC, 0xF8, 0xFF, 0xD0, 0xF5, 0xE8, 0xFF, 0xBC, 0xF5, 0xDF, 0xFF, 0xAC, 0xF1, 0xD8, 0xFF, 0x9D, 0xED, 0xD2, 0xFF, + 0x7D, 0xE8, 0xC4, 0xFF, 0x6C, 0xE1, 0xB7, 0xFF, 0x5E, 0xDC, 0xAB, 0xFF, 0x4F, 0xD7, 0x9E, 0xFF, 0x5E, 0xC9, 0x98, + 0xFF, 0x35, 0xC6, 0x92, 0xFF, 0x42, 0xC9, 0x8B, 0xFF, 0x4D, 0xB2, 0x80, 0xFF, 0xF1, 0x9B, 0x00, 0xFF, 0xF8, 0x93, + 0x17, 0xFF, 0xF4, 0x95, 0x15, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF0, 0x96, 0x11, 0xFF, 0xEF, 0x95, 0x10, 0xFF, 0xEF, + 0x95, 0x10, 0xFF, 0xF4, 0xCE, 0x55, 0xFF, 0xF4, 0xCD, 0x54, 0xFF, 0xF5, 0xCC, 0x52, 0xFF, 0xF6, 0xCB, 0x51, 0xFF, + 0xF8, 0xCB, 0x50, 0xFF, 0xF1, 0xC8, 0x49, 0xFF, 0xF9, 0xD5, 0x51, 0xFF, 0xC0, 0x62, 0x15, 0xFF, 0xBB, 0x5C, 0x00, + 0xFF, 0xCC, 0x74, 0x07, 0xFF, 0xCD, 0x7C, 0x02, 0xFF, 0xD4, 0x8D, 0x02, 0xFF, 0xDB, 0x9E, 0x01, 0xFF, 0xDC, 0xAD, + 0x08, 0xFF, 0xED, 0xC1, 0x36, 0xFF, 0xEE, 0xCF, 0x5A, 0xFF, 0xF0, 0xDC, 0x7D, 0xFF, 0xF3, 0xE1, 0x87, 0xFF, 0xF7, + 0xE6, 0x91, 0xFF, 0xF8, 0xED, 0xA5, 0xFF, 0xF8, 0xF5, 0xB8, 0xFF, 0xFB, 0xF9, 0xC6, 0xFF, 0xFD, 0xFD, 0xD4, 0xFF, + 0xFB, 0xFC, 0xDF, 0xFF, 0xFA, 0xFC, 0xE9, 0xFF, 0xFD, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFA, + 0xFF, 0xFB, 0xFE, 0xFC, 0xFF, 0xFF, 0xFA, 0xFD, 0xFF, 0xE7, 0xAF, 0x1D, 0xFF, 0xEE, 0xB0, 0x2A, 0xFF, 0xF5, 0xB1, + 0x37, 0xFF, 0xF6, 0xB8, 0x24, 0xFF, 0xF7, 0xB4, 0x28, 0xFF, 0xF4, 0xAF, 0x21, 0xFF, 0xF2, 0xAA, 0x1A, 0xFF, 0xF5, + 0xD7, 0x9E, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE0, 0xFE, 0xFC, 0xFF, 0xD7, 0xFD, 0xFC, 0xFF, 0xDA, 0xFA, 0xF8, 0xFF, + 0xDD, 0xF7, 0xF3, 0xFF, 0xF4, 0xFD, 0xFD, 0xFF, 0xE0, 0xF9, 0xF6, 0xFF, 0xC3, 0xEC, 0xDF, 0xFF, 0xB5, 0xEF, 0xD7, + 0xFF, 0xA5, 0xEC, 0xD2, 0xFF, 0x95, 0xE9, 0xCC, 0xFF, 0x67, 0xE5, 0xBB, 0xFF, 0x55, 0xDB, 0xAB, 0xFF, 0x44, 0xD3, + 0x9E, 0xFF, 0x32, 0xCB, 0x91, 0xFF, 0x24, 0xC8, 0x85, 0xFF, 0x6A, 0xB4, 0x79, 0xFF, 0xAF, 0x9D, 0x3A, 0xFF, 0xFF, + 0x97, 0x0B, 0xFF, 0xF9, 0x93, 0x18, 0xFF, 0xED, 0x9B, 0x0F, 0xFF, 0xF0, 0x9A, 0x12, 0xFF, 0xF3, 0x98, 0x15, 0xFF, + 0xF1, 0x96, 0x13, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xEF, 0x94, 0x11, 0xFF, 0xF4, 0xCF, 0x58, 0xFF, 0xF4, 0xCE, 0x55, + 0xFF, 0xF4, 0xCD, 0x53, 0xFF, 0xF6, 0xCC, 0x52, 0xFF, 0xF8, 0xCB, 0x52, 0xFF, 0xFA, 0xD5, 0x52, 0xFF, 0xFB, 0xC7, + 0x4E, 0xFF, 0xAD, 0x4C, 0x00, 0xFF, 0xCA, 0x6F, 0x09, 0xFF, 0xD3, 0x7F, 0x0B, 0xFF, 0xD4, 0x88, 0x05, 0xFF, 0xDB, + 0x97, 0x04, 0xFF, 0xE1, 0xA7, 0x04, 0xFF, 0xE5, 0xB6, 0x18, 0xFF, 0xF1, 0xC7, 0x3F, 0xFF, 0xF3, 0xD3, 0x62, 0xFF, + 0xF4, 0xDF, 0x86, 0xFF, 0xF7, 0xE4, 0x91, 0xFF, 0xF9, 0xE9, 0x9B, 0xFF, 0xF9, 0xF0, 0xAD, 0xFF, 0xF9, 0xF7, 0xBF, + 0xFF, 0xFB, 0xFA, 0xCB, 0xFF, 0xFD, 0xFC, 0xD7, 0xFF, 0xFC, 0xFD, 0xDE, 0xFF, 0xFB, 0xFD, 0xE5, 0xFF, 0xFE, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFA, 0xFE, 0xF2, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFB, 0xE9, 0xC6, 0xFF, 0xEC, + 0xAF, 0x1D, 0xFF, 0xF6, 0xB4, 0x30, 0xFF, 0xF8, 0xB6, 0x2F, 0xFF, 0xF6, 0xA7, 0x19, 0xFF, 0xF0, 0xB0, 0x26, 0xFF, + 0xF2, 0xAD, 0x22, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF9, 0xA9, 0x26, 0xFF, 0xF6, 0xA6, 0x1C, 0xFF, 0xE9, 0xCD, 0x7D, + 0xFF, 0xDC, 0xF4, 0xDF, 0xFF, 0xAF, 0xFE, 0xEA, 0xFF, 0xED, 0xFD, 0xFD, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xD3, 0xF8, + 0xFB, 0xFF, 0xB4, 0xEE, 0xEC, 0xFF, 0xAB, 0xE9, 0xE6, 0xFF, 0x89, 0xE6, 0xD8, 0xFF, 0x67, 0xE2, 0xCB, 0xFF, 0x52, + 0xE1, 0xB8, 0xFF, 0x4C, 0xDD, 0xA6, 0xFF, 0x7E, 0xC5, 0x74, 0xFF, 0xB0, 0xAD, 0x42, 0xFF, 0xF3, 0x9B, 0x22, 0xFF, + 0xFF, 0x9C, 0x09, 0xFF, 0xF5, 0x98, 0x09, 0xFF, 0xEE, 0x9C, 0x10, 0xFF, 0xED, 0x99, 0x17, 0xFF, 0xED, 0x9D, 0x14, + 0xFF, 0xEF, 0x9B, 0x14, 0xFF, 0xF2, 0x99, 0x15, 0xFF, 0xF0, 0x97, 0x13, 0xFF, 0xEE, 0x95, 0x11, 0xFF, 0xEE, 0x95, + 0x11, 0xFF, 0xF5, 0xD0, 0x5A, 0xFF, 0xF4, 0xCF, 0x57, 0xFF, 0xF3, 0xCE, 0x54, 0xFF, 0xF5, 0xCC, 0x53, 0xFF, 0xF7, + 0xCB, 0x53, 0xFF, 0xF4, 0xD3, 0x4C, 0xFF, 0xDD, 0x9A, 0x2C, 0xFF, 0xC1, 0x5D, 0x03, 0xFF, 0xC8, 0x72, 0x05, 0xFF, + 0xD2, 0x83, 0x06, 0xFF, 0xDC, 0x93, 0x07, 0xFF, 0xE1, 0xA2, 0x07, 0xFF, 0xE7, 0xB0, 0x08, 0xFF, 0xEE, 0xBF, 0x27, + 0xFF, 0xF6, 0xCD, 0x47, 0xFF, 0xF7, 0xD8, 0x6B, 0xFF, 0xF9, 0xE2, 0x8E, 0xFF, 0xFA, 0xE7, 0x9A, 0xFF, 0xFB, 0xEC, + 0xA6, 0xFF, 0xFA, 0xF3, 0xB6, 0xFF, 0xFA, 0xF9, 0xC7, 0xFF, 0xFB, 0xFB, 0xD0, 0xFF, 0xFD, 0xFC, 0xD9, 0xFF, 0xFC, + 0xFD, 0xDD, 0xFF, 0xFC, 0xFE, 0xE2, 0xFF, 0xFE, 0xFF, 0xEE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xFD, 0xEA, 0xFF, + 0xFE, 0xFE, 0xFF, 0xFF, 0xF7, 0xD7, 0x8F, 0xFF, 0xF1, 0xAF, 0x1E, 0xFF, 0xF6, 0xB0, 0x2E, 0xFF, 0xEB, 0xAB, 0x17, + 0xFF, 0xFD, 0xF7, 0xDF, 0xFF, 0xE9, 0xAC, 0x24, 0xFF, 0xF0, 0xAC, 0x22, 0xFF, 0xF8, 0xAC, 0x21, 0xFF, 0xF6, 0xAE, + 0x26, 0xFF, 0xF5, 0xB0, 0x2B, 0xFF, 0xF4, 0xA9, 0x19, 0xFF, 0xF3, 0xA2, 0x08, 0xFF, 0xF9, 0xA7, 0x22, 0xFF, 0xF2, + 0xC1, 0x4C, 0xFF, 0xEE, 0xCD, 0x6D, 0xFF, 0xDB, 0xC9, 0x7D, 0xFF, 0xC2, 0xCA, 0x7F, 0xFF, 0xC6, 0xC5, 0x81, 0xFF, + 0xCB, 0xBC, 0x60, 0xFF, 0xCF, 0xB3, 0x40, 0xFF, 0xE9, 0xA7, 0x24, 0xFF, 0xFF, 0x9B, 0x07, 0xFF, 0xFF, 0x9D, 0x10, + 0xFF, 0xFF, 0x9F, 0x1A, 0xFF, 0xE9, 0x98, 0x0F, 0xFF, 0xF9, 0x9C, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF4, 0x9B, + 0x14, 0xFF, 0xF1, 0x9D, 0x17, 0xFF, 0xED, 0x9E, 0x19, 0xFF, 0xEF, 0x9C, 0x16, 0xFF, 0xF1, 0x99, 0x14, 0xFF, 0xEF, + 0x97, 0x12, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xED, 0x95, 0x10, 0xFF, 0xF6, 0xD1, 0x5C, 0xFF, 0xF4, 0xD0, 0x58, 0xFF, + 0xF3, 0xCF, 0x55, 0xFF, 0xF5, 0xCD, 0x54, 0xFF, 0xF7, 0xCC, 0x53, 0xFF, 0xF6, 0xD5, 0x51, 0xFF, 0xCE, 0x7B, 0x16, + 0xFF, 0xC6, 0x67, 0x03, 0xFF, 0xCF, 0x7B, 0x06, 0xFF, 0xD7, 0x8B, 0x05, 0xFF, 0xDF, 0x9B, 0x05, 0xFF, 0xE4, 0xA8, + 0x07, 0xFF, 0xEA, 0xB6, 0x09, 0xFF, 0xF1, 0xC3, 0x2A, 0xFF, 0xF7, 0xD1, 0x4C, 0xFF, 0xF8, 0xDB, 0x6C, 0xFF, 0xFA, + 0xE4, 0x8D, 0xFF, 0xFA, 0xEA, 0x9C, 0xFF, 0xFB, 0xEF, 0xAB, 0xFF, 0xFA, 0xF5, 0xBC, 0xFF, 0xFA, 0xFA, 0xCD, 0xFF, + 0xFB, 0xFB, 0xD4, 0xFF, 0xFD, 0xFC, 0xDB, 0xFF, 0xFC, 0xFD, 0xDC, 0xFF, 0xFC, 0xFE, 0xDD, 0xFF, 0xFC, 0xFE, 0xE3, + 0xFF, 0xFD, 0xFE, 0xEA, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xC0, 0x27, 0xFF, 0xF5, 0xB4, + 0x26, 0xFF, 0xF8, 0xB0, 0x1E, 0xFF, 0xFF, 0xC6, 0x4D, 0xFF, 0xEF, 0xF8, 0xFF, 0xFF, 0xFA, 0xFF, 0xFE, 0xFF, 0xF6, + 0xD8, 0x8B, 0xFF, 0xF3, 0xA7, 0x18, 0xFF, 0xF4, 0xA9, 0x1D, 0xFF, 0xF5, 0xAC, 0x22, 0xFF, 0xF2, 0xAB, 0x22, 0xFF, + 0xF0, 0xAB, 0x22, 0xFF, 0xF2, 0xA3, 0x1A, 0xFF, 0xEE, 0xA6, 0x1A, 0xFF, 0xF4, 0xA8, 0x17, 0xFF, 0xF3, 0xA2, 0x0D, + 0xFF, 0xF2, 0xA4, 0x10, 0xFF, 0xFF, 0xA3, 0x14, 0xFF, 0xFC, 0xA3, 0x15, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF2, 0xA2, + 0x17, 0xFF, 0xEC, 0xA1, 0x18, 0xFF, 0xFD, 0x99, 0x0D, 0xFF, 0xED, 0x9A, 0x16, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xE8, + 0x9C, 0x2B, 0xFF, 0xAF, 0xB5, 0x60, 0xFF, 0xF7, 0x99, 0x10, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xED, 0x9D, 0x18, 0xFF, + 0xEE, 0x9B, 0x16, 0xFF, 0xEF, 0x99, 0x13, 0xFF, 0xED, 0x97, 0x11, 0xFF, 0xEB, 0x95, 0x0F, 0xFF, 0xEB, 0x95, 0x0F, + 0xFF, 0xF7, 0xD2, 0x5E, 0xFF, 0xF4, 0xD1, 0x5A, 0xFF, 0xF2, 0xD0, 0x56, 0xFF, 0xF5, 0xCE, 0x54, 0xFF, 0xF7, 0xCC, + 0x53, 0xFF, 0xF7, 0xD7, 0x56, 0xFF, 0xC0, 0x5B, 0x00, 0xFF, 0xCB, 0x70, 0x03, 0xFF, 0xD6, 0x84, 0x06, 0xFF, 0xDC, + 0x94, 0x05, 0xFF, 0xE2, 0xA3, 0x03, 0xFF, 0xE8, 0xAF, 0x07, 0xFF, 0xEE, 0xBB, 0x0B, 0xFF, 0xF3, 0xC8, 0x2D, 0xFF, + 0xF8, 0xD5, 0x50, 0xFF, 0xF9, 0xDE, 0x6E, 0xFF, 0xFA, 0xE6, 0x8C, 0xFF, 0xFB, 0xEC, 0x9F, 0xFF, 0xFB, 0xF2, 0xB1, + 0xFF, 0xFA, 0xF7, 0xC2, 0xFF, 0xF9, 0xFB, 0xD3, 0xFF, 0xFB, 0xFC, 0xD8, 0xFF, 0xFD, 0xFC, 0xDD, 0xFF, 0xFC, 0xFD, + 0xDB, 0xFF, 0xFC, 0xFE, 0xD8, 0xFF, 0xFB, 0xFD, 0xD8, 0xFF, 0xFA, 0xFC, 0xD9, 0xFF, 0xFA, 0xFA, 0xE4, 0xFF, 0xF6, + 0xE9, 0xA3, 0xFF, 0xFB, 0xAC, 0x2A, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xED, 0xAD, 0x1A, 0xFF, 0xF7, 0xDA, 0x99, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFD, 0xFE, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF9, 0xD4, 0x8C, + 0xFF, 0xF5, 0xA8, 0x19, 0xFF, 0xF7, 0xA9, 0x17, 0xFF, 0xF8, 0xA9, 0x16, 0xFF, 0xF3, 0xA7, 0x1A, 0xFF, 0xED, 0xA5, + 0x1E, 0xFF, 0xF1, 0xA7, 0x1F, 0xFF, 0xF6, 0xA9, 0x20, 0xFF, 0xF6, 0xA7, 0x1D, 0xFF, 0xF6, 0xA5, 0x1A, 0xFF, 0xF8, + 0xA3, 0x16, 0xFF, 0xFA, 0xA1, 0x12, 0xFF, 0xFC, 0x9D, 0x0A, 0xFF, 0xFE, 0x98, 0x03, 0xFF, 0xF9, 0xA1, 0x25, 0xFF, + 0xB0, 0xC0, 0x6F, 0xFF, 0x5D, 0xC9, 0xCF, 0xFF, 0x27, 0xE5, 0xFF, 0xFF, 0xB3, 0xB4, 0x73, 0xFF, 0xF9, 0x97, 0x0B, + 0xFF, 0xF3, 0x9A, 0x11, 0xFF, 0xED, 0x9D, 0x17, 0xFF, 0xEE, 0x9B, 0x15, 0xFF, 0xEE, 0x9A, 0x13, 0xFF, 0xEC, 0x98, + 0x11, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xEA, 0x96, 0x0F, 0xFF, 0xF6, 0xD1, 0x5D, 0xFF, 0xF5, 0xD1, 0x5A, 0xFF, 0xF4, + 0xD2, 0x58, 0xFF, 0xF3, 0xCE, 0x53, 0xFF, 0xFA, 0xD1, 0x56, 0xFF, 0xE6, 0xB1, 0x3F, 0xFF, 0xC6, 0x64, 0x01, 0xFF, + 0xCE, 0x75, 0x02, 0xFF, 0xD7, 0x87, 0x04, 0xFF, 0xDD, 0x95, 0x02, 0xFF, 0xE4, 0xA4, 0x00, 0xFF, 0xEA, 0xB0, 0x03, + 0xFF, 0xF1, 0xBD, 0x06, 0xFF, 0xF2, 0xC8, 0x1B, 0xFF, 0xFB, 0xD5, 0x42, 0xFF, 0xFB, 0xDD, 0x63, 0xFF, 0xFB, 0xE5, + 0x84, 0xFF, 0xFC, 0xEB, 0x98, 0xFF, 0xFC, 0xF1, 0xAB, 0xFF, 0xFF, 0xF8, 0xBD, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFC, 0xCF, 0xFF, 0xFB, 0xF9, 0xCF, 0xFF, 0xFD, 0xFE, 0xD2, 0xFF, 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xF9, 0xC6, 0xFF, + 0xFF, 0xEE, 0xB7, 0xFF, 0xD9, 0xD7, 0x59, 0xFF, 0xE9, 0xB9, 0x40, 0xFF, 0xFF, 0xB9, 0x2E, 0xFF, 0xEF, 0xB1, 0x2B, + 0xFF, 0xEB, 0xAF, 0x27, 0xFF, 0xF1, 0xEF, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFE, + 0xFF, 0xFF, 0xF9, 0xFD, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF0, 0xE8, 0xC1, 0xFF, 0xE6, + 0xCD, 0x83, 0xFF, 0xE8, 0xBB, 0x52, 0xFF, 0xEB, 0xA9, 0x21, 0xFF, 0xFF, 0xA1, 0x13, 0xFF, 0xF7, 0x9F, 0x06, 0xFF, + 0xF8, 0x9F, 0x0F, 0xFF, 0xEA, 0xA3, 0x18, 0xFF, 0xE0, 0xB1, 0x43, 0xFF, 0xC9, 0xC2, 0x6D, 0xFF, 0x99, 0xD6, 0xAF, + 0xFF, 0x6A, 0xEB, 0xF1, 0xFF, 0x31, 0xEE, 0xEB, 0xFF, 0x47, 0xE6, 0xF8, 0xFF, 0x3A, 0xE1, 0xFF, 0xFF, 0x41, 0xE1, + 0xFC, 0xFF, 0xF4, 0x98, 0x00, 0xFF, 0xFC, 0xA1, 0x19, 0xFF, 0xF6, 0x9E, 0x15, 0xFF, 0xF1, 0x9A, 0x11, 0xFF, 0xF0, + 0x9A, 0x13, 0xFF, 0xF0, 0x99, 0x14, 0xFF, 0xEE, 0x97, 0x12, 0xFF, 0xEC, 0x95, 0x10, 0xFF, 0xEC, 0x95, 0x10, 0xFF, + 0xF5, 0xCF, 0x5C, 0xFF, 0xF6, 0xD1, 0x5A, 0xFF, 0xF6, 0xD4, 0x59, 0xFF, 0xF2, 0xCD, 0x51, 0xFF, 0xFE, 0xD6, 0x59, + 0xFF, 0xD5, 0x8B, 0x29, 0xFF, 0xCB, 0x6C, 0x02, 0xFF, 0xD1, 0x7A, 0x01, 0xFF, 0xD8, 0x89, 0x01, 0xFF, 0xDE, 0x97, + 0x00, 0xFF, 0xE5, 0xA5, 0x00, 0xFF, 0xEC, 0xB2, 0x00, 0xFF, 0xF3, 0xBE, 0x02, 0xFF, 0xF1, 0xC7, 0x08, 0xFF, 0xFE, + 0xD5, 0x35, 0xFF, 0xFD, 0xDD, 0x58, 0xFF, 0xFB, 0xE4, 0x7C, 0xFF, 0xFC, 0xEA, 0x91, 0xFF, 0xFE, 0xEF, 0xA6, 0xFF, + 0xFE, 0xF2, 0xB0, 0xFF, 0xFE, 0xF5, 0xBA, 0xFF, 0xFC, 0xF5, 0xBD, 0xFF, 0xF9, 0xF5, 0xC0, 0xFF, 0xF6, 0xF7, 0xC0, + 0xFF, 0xF4, 0xF9, 0xC1, 0xFF, 0xFC, 0xFC, 0xC6, 0xFF, 0xFF, 0xFF, 0xCC, 0xFF, 0xF7, 0xF8, 0xC1, 0xFF, 0xF3, 0xCC, + 0x59, 0xFF, 0xF2, 0xB0, 0x38, 0xFF, 0xF5, 0xBA, 0x37, 0xFF, 0xF7, 0xB4, 0x29, 0xFF, 0xF8, 0xFB, 0xFC, 0xFF, 0xFF, + 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF6, 0xFC, 0xFF, 0xFF, 0xF2, 0xFE, 0xFC, 0xFF, + 0xEE, 0xFF, 0xF6, 0xFF, 0xE9, 0xFF, 0xFC, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, + 0xFF, 0xF1, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFD, 0xFC, 0xFF, 0x88, 0xFF, 0xF6, 0xFF, 0x91, 0xFD, + 0xFB, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x6C, 0xFC, 0xFC, 0xFF, 0x59, 0xF6, 0xF9, 0xFF, 0x58, 0xEF, 0xF8, 0xFF, 0x57, + 0xE9, 0xF7, 0xFF, 0x59, 0xE3, 0xF6, 0xFF, 0x67, 0xD2, 0xD0, 0xFF, 0xFF, 0x98, 0x08, 0xFF, 0xEF, 0x9A, 0x17, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF4, 0x98, 0x0C, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xEF, 0x97, 0x13, + 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xED, 0x95, 0x11, 0xFF, 0xF9, 0xD1, 0x5E, 0xFF, 0xF7, 0xD3, 0x5B, 0xFF, 0xF6, 0xD4, + 0x59, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xFF, 0xDA, 0x5E, 0xFF, 0xCD, 0x70, 0x19, 0xFF, 0xCC, 0x6D, 0x02, 0xFF, 0xD2, + 0x7B, 0x03, 0xFF, 0xD9, 0x88, 0x04, 0xFF, 0xDF, 0x96, 0x04, 0xFF, 0xE6, 0xA5, 0x04, 0xFF, 0xE6, 0xAD, 0x01, 0xFF, + 0xE7, 0xB4, 0x00, 0xFF, 0xEA, 0xBE, 0x06, 0xFF, 0xF5, 0xCA, 0x23, 0xFF, 0xF8, 0xD7, 0x4B, 0xFF, 0xFB, 0xE3, 0x74, + 0xFF, 0xFC, 0xE8, 0x89, 0xFF, 0xFE, 0xEC, 0x9E, 0xFF, 0xFE, 0xED, 0xA5, 0xFF, 0xFE, 0xEE, 0xAB, 0xFF, 0xFB, 0xEF, + 0xAD, 0xFF, 0xF9, 0xEF, 0xB0, 0xFF, 0xF8, 0xF2, 0xB3, 0xFF, 0xF8, 0xF5, 0xB6, 0xFF, 0xFC, 0xF8, 0xB5, 0xFF, 0xFF, + 0xFB, 0xB5, 0xFF, 0xFF, 0xF3, 0xD9, 0xFF, 0xF1, 0xB9, 0x1A, 0xFF, 0xF3, 0xB3, 0x28, 0xFF, 0xF6, 0xB3, 0x2A, 0xFF, + 0xF3, 0xCE, 0x73, 0xFF, 0xF5, 0xFD, 0xFD, 0xFF, 0xF9, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0xFE, 0xFF, + 0xFF, 0xF3, 0xFD, 0xFF, 0xFF, 0xEE, 0xFE, 0xFD, 0xFF, 0xE9, 0xFE, 0xFA, 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xDE, 0xFF, + 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xD6, 0xFA, 0xFC, 0xFF, 0xF3, 0xFC, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFE, 0xFF, 0xC4, 0xFA, 0xFC, 0xFF, 0x84, 0xFF, 0xFC, 0xFF, 0x8A, 0xFA, 0xFB, 0xFF, 0x79, 0xF6, 0xFA, 0xFF, + 0x68, 0xF2, 0xF9, 0xFF, 0x5E, 0xED, 0xF6, 0xFF, 0x53, 0xE8, 0xF4, 0xFF, 0x48, 0xE8, 0xF7, 0xFF, 0xA8, 0xBC, 0x87, + 0xFF, 0xFB, 0x9A, 0x10, 0xFF, 0xF1, 0x9B, 0x17, 0xFF, 0xF1, 0x9A, 0x14, 0xFF, 0xF1, 0x9A, 0x10, 0xFF, 0xF2, 0x99, + 0x13, 0xFF, 0xF3, 0x98, 0x16, 0xFF, 0xF1, 0x96, 0x14, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xEF, 0x94, 0x12, 0xFF, 0xFC, + 0xD4, 0x61, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF6, 0xD4, 0x58, 0xFF, 0xF5, 0xD1, 0x55, 0xFF, 0xF5, 0xCE, 0x53, 0xFF, + 0xBD, 0x4D, 0x01, 0xFF, 0xCD, 0x6E, 0x02, 0xFF, 0xD3, 0x7B, 0x04, 0xFF, 0xDA, 0x87, 0x06, 0xFF, 0xE0, 0x96, 0x09, + 0xFF, 0xE6, 0xA5, 0x0C, 0xFF, 0xE9, 0xB0, 0x0A, 0xFF, 0xEB, 0xBA, 0x09, 0xFF, 0xF3, 0xC5, 0x15, 0xFF, 0xFB, 0xD0, + 0x21, 0xFF, 0xFB, 0xD9, 0x46, 0xFF, 0xFB, 0xE3, 0x6B, 0xFF, 0xFC, 0xE6, 0x81, 0xFF, 0xFD, 0xE9, 0x97, 0xFF, 0xFD, + 0xE8, 0x99, 0xFF, 0xFD, 0xE8, 0x9B, 0xFF, 0xFB, 0xE8, 0x9D, 0xFF, 0xF8, 0xE9, 0x9F, 0xFF, 0xFA, 0xEE, 0xA5, 0xFF, + 0xFC, 0xF2, 0xAB, 0xFF, 0xFB, 0xEF, 0xB0, 0xFF, 0xFB, 0xEB, 0xB4, 0xFF, 0xF8, 0xDD, 0x89, 0xFF, 0xF3, 0xB4, 0x27, + 0xFF, 0xF7, 0xBD, 0x3E, 0xFF, 0xF7, 0xAC, 0x1E, 0xFF, 0xF0, 0xE8, 0xBC, 0xFF, 0xF2, 0xFF, 0xFE, 0xFF, 0xF3, 0xFF, + 0xFD, 0xFF, 0xF4, 0xFE, 0xFD, 0xFF, 0xF2, 0xFE, 0xFD, 0xFF, 0xEF, 0xFE, 0xFE, 0xFF, 0xE9, 0xFE, 0xFE, 0xFF, 0xE3, + 0xFE, 0xFE, 0xFF, 0xDD, 0xFD, 0xFD, 0xFF, 0xD7, 0xFD, 0xFD, 0xFF, 0xC8, 0xFE, 0xFC, 0xFF, 0xB9, 0xFF, 0xFB, 0xFF, + 0x9F, 0xFE, 0xF5, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xF5, 0xF9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xFF, 0xBD, 0xF7, 0xFC, + 0xFF, 0x7A, 0xF8, 0xF8, 0xFF, 0x6B, 0xF5, 0xF8, 0xFF, 0x5C, 0xF3, 0xF9, 0xFF, 0x55, 0xED, 0xF5, 0xFF, 0x4F, 0xE8, + 0xF1, 0xFF, 0x37, 0xEE, 0xF8, 0xFF, 0xE9, 0xA6, 0x3E, 0xFF, 0xF5, 0x9C, 0x17, 0xFF, 0xF4, 0x9D, 0x17, 0xFF, 0xF1, + 0x9C, 0x15, 0xFF, 0xEE, 0x9B, 0x14, 0xFF, 0xF1, 0x99, 0x15, 0xFF, 0xF4, 0x97, 0x17, 0xFF, 0xF2, 0x95, 0x15, 0xFF, + 0xF0, 0x93, 0x13, 0xFF, 0xF0, 0x93, 0x13, 0xFF, 0xFB, 0xD6, 0x66, 0xFF, 0xF4, 0xD1, 0x5E, 0xFF, 0xF6, 0xD3, 0x5F, + 0xFF, 0xF9, 0xD7, 0x59, 0xFF, 0xDA, 0x9D, 0x39, 0xFF, 0xBE, 0x58, 0x08, 0xFF, 0xCD, 0x6C, 0x08, 0xFF, 0xD2, 0x79, + 0x0C, 0xFF, 0xD7, 0x87, 0x0F, 0xFF, 0xDF, 0x96, 0x11, 0xFF, 0xE7, 0xA5, 0x13, 0xFF, 0xEA, 0xB0, 0x13, 0xFF, 0xF5, + 0xC2, 0x1B, 0xFF, 0xF3, 0xC8, 0x0F, 0xFF, 0xF9, 0xD0, 0x16, 0xFF, 0xF4, 0xD2, 0x27, 0xFF, 0xF7, 0xD6, 0x4B, 0xFF, + 0xF8, 0xDA, 0x60, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xDF, 0x7F, 0xFF, 0xFA, 0xE0, 0x87, 0xFF, 0xFB, 0xE4, 0x8C, + 0xFF, 0xFB, 0xE7, 0x91, 0xFF, 0xFC, 0xEA, 0x95, 0xFF, 0xFC, 0xED, 0x9A, 0xFF, 0xFB, 0xEA, 0x9E, 0xFF, 0xFA, 0xE7, + 0xA3, 0xFF, 0xFA, 0xCC, 0x5E, 0xFF, 0xF5, 0xB6, 0x2C, 0xFF, 0xF9, 0xB8, 0x24, 0xFF, 0xF5, 0xB1, 0x14, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0xEC, 0xFF, 0xFD, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xEC, 0xFE, 0xFF, 0xFF, + 0xEA, 0xFD, 0xFD, 0xFF, 0xE3, 0xFD, 0xFD, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xD5, 0xFD, 0xFD, 0xFF, 0xCE, 0xFD, 0xFD, + 0xFF, 0xC1, 0xFC, 0xFC, 0xFF, 0xB4, 0xFB, 0xFB, 0xFF, 0x8D, 0xFA, 0xF5, 0xFF, 0x89, 0xFC, 0xF8, 0xFF, 0xCB, 0xFA, + 0xF8, 0xFF, 0xF1, 0xFE, 0xF7, 0xFF, 0xBD, 0xFF, 0xF9, 0xFF, 0xC2, 0xF9, 0xFA, 0xFF, 0xAC, 0xF8, 0xFB, 0xFF, 0x96, + 0xF7, 0xFC, 0xFF, 0x91, 0xF4, 0xF9, 0xFF, 0x8C, 0xF0, 0xF7, 0xFF, 0xA8, 0xE4, 0xFF, 0xFF, 0xF6, 0x95, 0x00, 0xFF, + 0xF6, 0x99, 0x07, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF0, 0x9C, 0x15, 0xFF, 0xF2, 0x9A, 0x15, + 0xFF, 0xF4, 0x98, 0x15, 0xFF, 0xF2, 0x97, 0x14, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xF1, 0x95, 0x12, 0xFF, 0xFA, 0xD9, + 0x6A, 0xFF, 0xF0, 0xCE, 0x60, 0xFF, 0xF6, 0xD2, 0x66, 0xFF, 0xFD, 0xDD, 0x5C, 0xFF, 0xC0, 0x6C, 0x1E, 0xFF, 0xBE, + 0x63, 0x0E, 0xFF, 0xCD, 0x69, 0x0E, 0xFF, 0xD0, 0x78, 0x13, 0xFF, 0xD4, 0x87, 0x18, 0xFF, 0xDE, 0x96, 0x19, 0xFF, + 0xE9, 0xA6, 0x1A, 0xFF, 0xE3, 0xA8, 0x13, 0xFF, 0xEE, 0xBA, 0x1D, 0xFF, 0xEA, 0xBD, 0x0C, 0xFF, 0xF6, 0xC5, 0x22, + 0xFF, 0xEC, 0xC5, 0x13, 0xFF, 0xF2, 0xCA, 0x2A, 0xFF, 0xF3, 0xCF, 0x40, 0xFF, 0xF4, 0xD3, 0x56, 0xFF, 0xF5, 0xD6, + 0x65, 0xFF, 0xF7, 0xD9, 0x74, 0xFF, 0xFA, 0xDF, 0x7B, 0xFF, 0xFE, 0xE4, 0x82, 0xFF, 0xFD, 0xE6, 0x86, 0xFF, 0xFD, + 0xE7, 0x89, 0xFF, 0xFB, 0xE4, 0x8D, 0xFF, 0xF9, 0xE2, 0x92, 0xFF, 0xFC, 0xBB, 0x33, 0xFF, 0xF6, 0xB9, 0x31, 0xFF, + 0xFD, 0xBA, 0x31, 0xFF, 0xF7, 0xC4, 0x57, 0xFF, 0xDE, 0xFF, 0xF3, 0xFF, 0xE6, 0xFF, 0xFD, 0xFF, 0xE6, 0xFF, 0xFF, + 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE6, 0xFE, 0xFF, 0xFF, 0xE5, 0xFC, 0xFD, 0xFF, 0xDD, 0xFC, 0xFD, 0xFF, 0xD5, 0xFC, + 0xFD, 0xFF, 0xCD, 0xFD, 0xFD, 0xFF, 0xC5, 0xFD, 0xFD, 0xFF, 0xBA, 0xFA, 0xFC, 0xFF, 0xAF, 0xF7, 0xFB, 0xFF, 0x9E, + 0xF9, 0xFE, 0xFF, 0x8D, 0xFB, 0xFF, 0xFF, 0x77, 0xFE, 0xFA, 0xFF, 0x7D, 0xFB, 0xF4, 0xFF, 0xD2, 0xF7, 0xF8, 0xFF, + 0xEE, 0xFF, 0xFD, 0xFF, 0xDF, 0xFD, 0xFE, 0xFF, 0xD0, 0xFB, 0xFE, 0xFF, 0xCD, 0xFA, 0xFD, 0xFF, 0xC9, 0xF9, 0xFC, + 0xFF, 0xCD, 0xD2, 0xA6, 0xFF, 0xEA, 0x98, 0x02, 0xFF, 0xEC, 0xA0, 0x1E, 0xFF, 0xF9, 0x9E, 0x13, 0xFF, 0xF6, 0x9E, + 0x15, 0xFF, 0xF2, 0x9D, 0x16, 0xFF, 0xF2, 0x9B, 0x15, 0xFF, 0xF3, 0x99, 0x14, 0xFF, 0xF2, 0x98, 0x13, 0xFF, 0xF1, + 0x97, 0x12, 0xFF, 0xF1, 0x97, 0x12, 0xFF, 0xF3, 0xD4, 0x55, 0xFF, 0xF0, 0xD1, 0x5B, 0xFF, 0xF6, 0xD6, 0x69, 0xFF, + 0xFF, 0xE2, 0x6D, 0xFF, 0xA7, 0x4F, 0x0B, 0xFF, 0xBE, 0x60, 0x11, 0xFF, 0xCD, 0x6A, 0x0F, 0xFF, 0xD5, 0x83, 0x1F, + 0xFF, 0xDC, 0x89, 0x1E, 0xFF, 0xDD, 0x8B, 0x0F, 0xFF, 0xE0, 0x9B, 0x1A, 0xFF, 0xF3, 0xB0, 0x22, 0xFF, 0xE0, 0xAA, + 0x1D, 0xFF, 0xDF, 0xAE, 0x13, 0xFF, 0xEE, 0xBC, 0x25, 0xFF, 0xE6, 0xB9, 0x14, 0xFF, 0xEF, 0xC1, 0x1F, 0xFF, 0xEF, + 0xC7, 0x25, 0xFF, 0xEE, 0xCD, 0x2B, 0xFF, 0xF0, 0xCD, 0x3C, 0xFF, 0xF3, 0xCE, 0x4E, 0xFF, 0xF8, 0xD6, 0x5B, 0xFF, + 0xFE, 0xDE, 0x68, 0xFF, 0xFC, 0xDD, 0x6D, 0xFF, 0xFA, 0xDC, 0x73, 0xFF, 0xF5, 0xDD, 0x75, 0xFF, 0xF6, 0xD3, 0x70, + 0xFF, 0xFB, 0xBA, 0x30, 0xFF, 0xF5, 0xB8, 0x33, 0xFF, 0xFE, 0xB5, 0x24, 0xFF, 0xE4, 0xDE, 0xA3, 0xFF, 0xDC, 0xFF, + 0xF9, 0xFF, 0xDC, 0xFD, 0xFD, 0xFF, 0xDC, 0xFE, 0xFE, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xFE, 0xFF, 0xD9, + 0xFD, 0xFC, 0xFF, 0xD2, 0xFD, 0xFC, 0xFF, 0xCA, 0xFD, 0xFC, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xBB, 0xFD, 0xFD, 0xFF, + 0xAF, 0xFB, 0xFC, 0xFF, 0xA2, 0xFA, 0xFC, 0xFF, 0x92, 0xFA, 0xFD, 0xFF, 0x83, 0xFB, 0xFE, 0xFF, 0x6A, 0xFD, 0xFB, + 0xFF, 0x60, 0xFC, 0xF8, 0xFF, 0x5D, 0xF8, 0xFA, 0xFF, 0x4C, 0xF7, 0xFC, 0xFF, 0x76, 0xF4, 0xFD, 0xFF, 0xA0, 0xF2, + 0xFE, 0xFF, 0x87, 0xEC, 0xF5, 0xFF, 0x5F, 0xE3, 0xF7, 0xFF, 0xB4, 0xBB, 0x50, 0xFF, 0xFE, 0x99, 0x0C, 0xFF, 0xF7, + 0x9E, 0x1A, 0xFF, 0xF6, 0x9D, 0x15, 0xFF, 0xF4, 0x9D, 0x15, 0xFF, 0xF2, 0x9C, 0x15, 0xFF, 0xF2, 0x9B, 0x14, 0xFF, + 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xF1, 0x99, 0x12, 0xFF, 0xFD, 0xD3, 0x66, + 0xFF, 0xF9, 0xD6, 0x69, 0xFF, 0xF5, 0xD9, 0x6B, 0xFF, 0xDC, 0xB6, 0x4E, 0xFF, 0xAE, 0x52, 0x18, 0xFF, 0xC6, 0x66, + 0x1C, 0xFF, 0xBD, 0x5A, 0x00, 0xFF, 0xCA, 0x7D, 0x1A, 0xFF, 0xD4, 0x7B, 0x15, 0xFF, 0xDC, 0x81, 0x04, 0xFF, 0xE7, + 0xA0, 0x2A, 0xFF, 0xD3, 0x88, 0x00, 0xFF, 0xE2, 0xAB, 0x2D, 0xFF, 0xDC, 0xA7, 0x23, 0xFF, 0xE6, 0xB3, 0x29, 0xFF, + 0xE0, 0xAD, 0x16, 0xFF, 0xEB, 0xB7, 0x14, 0xFF, 0xEA, 0xB9, 0x15, 0xFF, 0xE9, 0xBA, 0x16, 0xFF, 0xEC, 0xBE, 0x1F, + 0xFF, 0xEE, 0xC2, 0x28, 0xFF, 0xF6, 0xCD, 0x3B, 0xFF, 0xFE, 0xD8, 0x4E, 0xFF, 0xFB, 0xD5, 0x55, 0xFF, 0xF7, 0xD1, + 0x5D, 0xFF, 0xEF, 0xD6, 0x5D, 0xFF, 0xF3, 0xC4, 0x4E, 0xFF, 0xFA, 0xB9, 0x2E, 0xFF, 0xF4, 0xB8, 0x35, 0xFF, 0xFF, + 0xB1, 0x17, 0xFF, 0xD1, 0xF7, 0xF0, 0xFF, 0xDA, 0xFF, 0xFE, 0xFF, 0xD2, 0xFC, 0xFC, 0xFF, 0xD1, 0xFD, 0xFD, 0xFF, + 0xD0, 0xFE, 0xFD, 0xFF, 0xCF, 0xFD, 0xFC, 0xFF, 0xCD, 0xFD, 0xFB, 0xFF, 0xC6, 0xFD, 0xFC, 0xFF, 0xBF, 0xFD, 0xFC, + 0xFF, 0xB9, 0xFD, 0xFD, 0xFF, 0xB2, 0xFC, 0xFD, 0xFF, 0xA3, 0xFC, 0xFD, 0xFF, 0x95, 0xFC, 0xFD, 0xFF, 0x87, 0xFC, + 0xFC, 0xFF, 0x78, 0xFB, 0xFC, 0xFF, 0x6C, 0xFA, 0xFD, 0xFF, 0x5F, 0xF8, 0xFD, 0xFF, 0x45, 0xF6, 0xF9, 0xFF, 0x47, + 0xEF, 0xF5, 0xFF, 0x37, 0xE9, 0xF2, 0xFF, 0x28, 0xE4, 0xEE, 0xFF, 0x24, 0xE3, 0xED, 0xFF, 0x05, 0xDD, 0xFF, 0xFF, + 0xFF, 0x99, 0x03, 0xFF, 0xF5, 0xA0, 0x16, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9C, 0x16, 0xFF, 0xF2, 0x9C, 0x15, + 0xFF, 0xF2, 0x9B, 0x14, 0xFF, 0xF1, 0x9A, 0x12, 0xFF, 0xEF, 0x99, 0x10, 0xFF, 0xF0, 0x9A, 0x11, 0xFF, 0xF1, 0x9B, + 0x12, 0xFF, 0xF1, 0x9B, 0x12, 0xFF, 0xFB, 0xD5, 0x65, 0xFF, 0xFC, 0xD4, 0x70, 0xFF, 0xFF, 0xE2, 0x77, 0xFF, 0xC7, + 0x86, 0x3B, 0xFF, 0xBA, 0x5F, 0x23, 0xFF, 0xBA, 0x6A, 0x1E, 0xFF, 0xD0, 0x7A, 0x21, 0xFF, 0xD7, 0x87, 0x27, 0xFF, + 0xD6, 0x8C, 0x24, 0xFF, 0xD3, 0x8D, 0x1D, 0xFF, 0xD0, 0x88, 0x21, 0xFF, 0xEA, 0xA0, 0x2B, 0xFF, 0xD5, 0x95, 0x21, + 0xFF, 0xEE, 0xA9, 0x30, 0xFF, 0xDA, 0xA0, 0x20, 0xFF, 0xDD, 0xA1, 0x16, 0xFF, 0xDF, 0xA1, 0x0D, 0xFF, 0xE2, 0xAB, + 0x19, 0xFF, 0xEB, 0xB1, 0x12, 0xFF, 0xED, 0xB8, 0x0F, 0xFF, 0xEE, 0xBF, 0x0C, 0xFF, 0xEF, 0xC1, 0x1C, 0xFF, 0xF0, + 0xC3, 0x2C, 0xFF, 0xF1, 0xC4, 0x36, 0xFF, 0xF3, 0xC5, 0x40, 0xFF, 0xF1, 0xC9, 0x46, 0xFF, 0xF6, 0xC2, 0x45, 0xFF, + 0xF9, 0xBA, 0x31, 0xFF, 0xF6, 0xB7, 0x30, 0xFF, 0xF4, 0xC1, 0x4B, 0xFF, 0xC0, 0xFA, 0xF5, 0xFF, 0xC6, 0xFF, 0xFD, + 0xFF, 0xC4, 0xFC, 0xFC, 0xFF, 0xC4, 0xFC, 0xFD, 0xFF, 0xC3, 0xFD, 0xFD, 0xFF, 0xC2, 0xFD, 0xFC, 0xFF, 0xC1, 0xFC, + 0xFB, 0xFF, 0xB5, 0xF8, 0xF8, 0xFF, 0xB2, 0xFD, 0xFC, 0xFF, 0xAA, 0xFC, 0xFC, 0xFF, 0xA3, 0xFC, 0xFC, 0xFF, 0x95, + 0xFB, 0xFC, 0xFF, 0x88, 0xFB, 0xFB, 0xFF, 0x7A, 0xFB, 0xFB, 0xFF, 0x6D, 0xFA, 0xFB, 0xFF, 0x61, 0xF8, 0xFB, 0xFF, + 0x56, 0xF6, 0xFC, 0xFF, 0x44, 0xF2, 0xF8, 0xFF, 0x40, 0xEA, 0xF4, 0xFF, 0x31, 0xE5, 0xEF, 0xFF, 0x23, 0xDF, 0xEA, + 0xFF, 0x1C, 0xE0, 0xFA, 0xFF, 0x44, 0xD1, 0xC5, 0xFF, 0xFE, 0xA1, 0x0A, 0xFF, 0xF9, 0x9F, 0x15, 0xFF, 0xF5, 0x9F, + 0x17, 0xFF, 0xF2, 0x9F, 0x18, 0xFF, 0xF2, 0x9E, 0x16, 0xFF, 0xF2, 0x9D, 0x15, 0xFF, 0xF5, 0x9F, 0x16, 0xFF, 0xF8, + 0xA0, 0x18, 0xFF, 0xF5, 0x9D, 0x15, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF9, 0xD7, 0x64, 0xFF, + 0xF6, 0xD1, 0x64, 0xFF, 0xFF, 0xE6, 0x5D, 0xFF, 0x9A, 0x43, 0x03, 0xFF, 0xA5, 0x4B, 0x0D, 0xFF, 0xCC, 0x7B, 0x30, + 0xFF, 0xC0, 0x54, 0x04, 0xFF, 0xC9, 0x53, 0x00, 0xFF, 0xC5, 0x67, 0x03, 0xFF, 0xC9, 0x87, 0x25, 0xFF, 0xCA, 0x80, + 0x28, 0xFF, 0xD0, 0x88, 0x27, 0xFF, 0xD7, 0x90, 0x26, 0xFF, 0xC9, 0x74, 0x06, 0xFF, 0xCF, 0x8D, 0x17, 0xFF, 0xE1, + 0x9C, 0x1E, 0xFF, 0xE3, 0x9B, 0x16, 0xFF, 0xDA, 0x9E, 0x1E, 0xFF, 0xDD, 0x97, 0x00, 0xFF, 0xE6, 0xA4, 0x03, 0xFF, + 0xEE, 0xB1, 0x07, 0xFF, 0xE8, 0xB0, 0x08, 0xFF, 0xE2, 0xAE, 0x09, 0xFF, 0xE8, 0xB4, 0x16, 0xFF, 0xEF, 0xB9, 0x23, + 0xFF, 0xF4, 0xBD, 0x30, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xBB, 0x34, 0xFF, 0xF9, 0xB6, 0x2C, 0xFF, 0xE8, 0xD2, + 0x80, 0xFF, 0xAE, 0xFD, 0xFA, 0xFF, 0xB2, 0xFC, 0xFB, 0xFF, 0xB6, 0xFB, 0xFC, 0xFF, 0xB6, 0xFC, 0xFC, 0xFF, 0xB6, + 0xFC, 0xFD, 0xFF, 0xB5, 0xFC, 0xFC, 0xFF, 0xB4, 0xFC, 0xFB, 0xFF, 0xA4, 0xF4, 0xF3, 0xFF, 0xA5, 0xFC, 0xFC, 0xFF, + 0x9C, 0xFC, 0xFC, 0xFF, 0x93, 0xFB, 0xFC, 0xFF, 0x87, 0xFB, 0xFB, 0xFF, 0x7A, 0xFA, 0xFA, 0xFF, 0x6D, 0xFA, 0xFA, + 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x57, 0xF7, 0xFA, 0xFF, 0x4E, 0xF4, 0xFA, 0xFF, 0x44, 0xED, 0xF6, 0xFF, 0x3A, 0xE6, + 0xF3, 0xFF, 0x2C, 0xE1, 0xED, 0xFF, 0x1E, 0xDB, 0xE7, 0xFF, 0x19, 0xD1, 0xFF, 0xFF, 0x8F, 0xB0, 0x77, 0xFF, 0xFD, + 0xA0, 0x09, 0xFF, 0xFD, 0x9D, 0x14, 0xFF, 0xF7, 0x9F, 0x17, 0xFF, 0xF2, 0xA2, 0x1A, 0xFF, 0xF2, 0xA0, 0x18, 0xFF, + 0xF2, 0x9E, 0x16, 0xFF, 0xF1, 0x9B, 0x13, 0xFF, 0xF0, 0x98, 0x10, 0xFF, 0xF1, 0x99, 0x11, 0xFF, 0xF2, 0x9A, 0x12, + 0xFF, 0xF2, 0x9A, 0x12, 0xFF, 0xF7, 0xD4, 0x5F, 0xFF, 0xFC, 0xDC, 0x67, 0xFF, 0xF0, 0xC1, 0x4F, 0xFF, 0x8A, 0x2B, + 0x00, 0xFF, 0xBF, 0x6A, 0x2D, 0xFF, 0xAC, 0x47, 0x05, 0xFF, 0xB9, 0x43, 0x00, 0xFF, 0xC4, 0x85, 0x35, 0xFF, 0xBB, + 0x4D, 0x06, 0xFF, 0xC3, 0x61, 0x13, 0xFF, 0xCA, 0x70, 0x2C, 0xFF, 0xB3, 0x5A, 0x0F, 0xFF, 0xCC, 0x74, 0x21, 0xFF, + 0xC2, 0x69, 0x11, 0xFF, 0xC2, 0x78, 0x18, 0xFF, 0xD0, 0x80, 0x1C, 0xFF, 0xD6, 0x7F, 0x18, 0xFF, 0xD3, 0x86, 0x1A, + 0xFF, 0xDD, 0x8F, 0x10, 0xFF, 0xDA, 0x8C, 0x02, 0xFF, 0xE6, 0x99, 0x04, 0xFF, 0xE1, 0x9B, 0x04, 0xFF, 0xDC, 0x9D, + 0x04, 0xFF, 0xE1, 0xA6, 0x05, 0xFF, 0xDD, 0xA6, 0x00, 0xFF, 0xEE, 0xB6, 0x1F, 0xFF, 0xF6, 0xBD, 0x39, 0xFF, 0xF6, + 0xBB, 0x38, 0xFF, 0xFC, 0xB5, 0x24, 0xFF, 0xB8, 0xE8, 0xBF, 0xFF, 0xA2, 0xFE, 0xFA, 0xFF, 0xA5, 0xFC, 0xFB, 0xFF, + 0xA8, 0xFA, 0xFB, 0xFF, 0xA7, 0xFB, 0xFC, 0xFF, 0xA6, 0xFC, 0xFC, 0xFF, 0xA2, 0xFB, 0xFA, 0xFF, 0x9F, 0xFA, 0xF8, + 0xFF, 0x94, 0xF7, 0xF5, 0xFF, 0x92, 0xFB, 0xFA, 0xFF, 0x8B, 0xFB, 0xFA, 0xFF, 0x84, 0xFB, 0xFB, 0xFF, 0x78, 0xFA, + 0xFA, 0xFF, 0x6D, 0xF9, 0xF9, 0xFF, 0x61, 0xF9, 0xF9, 0xFF, 0x55, 0xF8, 0xF8, 0xFF, 0x4B, 0xF6, 0xF8, 0xFF, 0x41, + 0xF3, 0xF9, 0xFF, 0x39, 0xEC, 0xF5, 0xFF, 0x30, 0xE4, 0xF1, 0xFF, 0x28, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEB, 0xFF, + 0x00, 0xD9, 0xEE, 0xFF, 0xE4, 0xA6, 0x32, 0xFF, 0xFF, 0xA4, 0x18, 0xFF, 0xF3, 0xA4, 0x28, 0xFF, 0xF4, 0xA2, 0x20, + 0xFF, 0xF4, 0xA0, 0x18, 0xFF, 0xF4, 0x9E, 0x16, 0xFF, 0xF3, 0x9D, 0x15, 0xFF, 0xF2, 0x9B, 0x13, 0xFF, 0xF2, 0x99, + 0x11, 0xFF, 0xF2, 0x99, 0x11, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF3, 0x9A, 0x12, 0xFF, 0xF5, 0xD1, 0x5B, 0xFF, 0xFA, + 0xDF, 0x62, 0xFF, 0xCC, 0x8C, 0x30, 0xFF, 0x91, 0x2C, 0x05, 0xFF, 0x9A, 0x49, 0x0E, 0xFF, 0x9E, 0x36, 0x00, 0xFF, + 0x96, 0x38, 0x00, 0xFF, 0xB6, 0x5E, 0x14, 0xFF, 0xD9, 0xAA, 0x53, 0xFF, 0xE2, 0xA6, 0x30, 0xFF, 0xEE, 0xBB, 0x44, + 0xFF, 0xFF, 0xDD, 0x6D, 0xFF, 0xF9, 0xDE, 0x76, 0xFF, 0xF9, 0xD9, 0x6C, 0xFF, 0xF8, 0xD4, 0x63, 0xFF, 0xF3, 0xC4, + 0x54, 0xFF, 0xED, 0xB4, 0x44, 0xFF, 0xD5, 0x8E, 0x23, 0xFF, 0xCE, 0x77, 0x11, 0xFF, 0xC6, 0x6C, 0x00, 0xFF, 0xDE, + 0x81, 0x02, 0xFF, 0xDA, 0x87, 0x00, 0xFF, 0xD6, 0x8D, 0x00, 0xFF, 0xE1, 0x9B, 0x06, 0xFF, 0xDC, 0x98, 0x00, 0xFF, + 0xF0, 0xB1, 0x22, 0xFF, 0xF4, 0xB9, 0x35, 0xFF, 0xF3, 0xBC, 0x3C, 0xFF, 0xFF, 0xB4, 0x1B, 0xFF, 0x89, 0xFD, 0xFE, + 0xFF, 0x95, 0xFF, 0xFA, 0xFF, 0x97, 0xFC, 0xFA, 0xFF, 0x99, 0xF8, 0xFB, 0xFF, 0x97, 0xFB, 0xFB, 0xFF, 0x95, 0xFD, + 0xFC, 0xFF, 0x8F, 0xFB, 0xF9, 0xFF, 0x89, 0xF9, 0xF6, 0xFF, 0x84, 0xF9, 0xF7, 0xFF, 0x7F, 0xF9, 0xF8, 0xFF, 0x7A, + 0xFA, 0xF9, 0xFF, 0x75, 0xFA, 0xFA, 0xFF, 0x6A, 0xF9, 0xF9, 0xFF, 0x5F, 0xF9, 0xF8, 0xFF, 0x54, 0xF8, 0xF7, 0xFF, + 0x49, 0xF7, 0xF6, 0xFF, 0x3F, 0xF5, 0xF7, 0xFF, 0x35, 0xF2, 0xF7, 0xFF, 0x2E, 0xEB, 0xF3, 0xFF, 0x27, 0xE3, 0xF0, + 0xFF, 0x24, 0xDA, 0xF0, 0xFF, 0x21, 0xD1, 0xF0, 0xFF, 0x23, 0xC9, 0xE8, 0xFF, 0xFF, 0x9B, 0x03, 0xFF, 0xF6, 0xA3, + 0x20, 0xFF, 0xF6, 0xA1, 0x16, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9D, 0x16, 0xFF, 0xF6, 0x9C, 0x15, 0xFF, 0xF5, + 0x9B, 0x14, 0xFF, 0xF4, 0x9A, 0x13, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, 0xF3, 0x99, 0x12, 0xFF, + 0xF3, 0x99, 0x12, 0xFF, 0xFE, 0xE2, 0x5A, 0xFF, 0xFF, 0xD7, 0x64, 0xFF, 0x97, 0x46, 0x0C, 0xFF, 0x82, 0x25, 0x00, + 0xFF, 0xB7, 0x6A, 0x1D, 0xFF, 0xDE, 0xA2, 0x39, 0xFF, 0xFF, 0xE5, 0x5E, 0xFF, 0xFD, 0xD8, 0x51, 0xFF, 0xF5, 0xD6, + 0x4C, 0xFF, 0xF4, 0xCC, 0x48, 0xFF, 0xF6, 0xCF, 0x5E, 0xFF, 0xFE, 0xD9, 0x67, 0xFF, 0xF7, 0xD3, 0x61, 0xFF, 0xF8, + 0xD1, 0x5A, 0xFF, 0xFE, 0xCB, 0x41, 0xFF, 0xFE, 0xCE, 0x53, 0xFF, 0xF5, 0xCF, 0x51, 0xFF, 0xF6, 0xCA, 0x49, 0xFF, + 0xFF, 0xCD, 0x49, 0xFF, 0xFF, 0xB9, 0x3F, 0xFF, 0xDA, 0x7E, 0x0E, 0xFF, 0xC2, 0x69, 0x00, 0xFF, 0xDA, 0x84, 0x05, + 0xFF, 0xD5, 0x84, 0x01, 0xFF, 0xD8, 0x8C, 0x05, 0xFF, 0xF8, 0xBE, 0x37, 0xFF, 0xF6, 0xBE, 0x3A, 0xFF, 0xFF, 0xBD, + 0x34, 0xFF, 0xE1, 0xC6, 0x61, 0xFF, 0x79, 0xF3, 0xFB, 0xFF, 0x82, 0xFA, 0xF7, 0xFF, 0x83, 0xF9, 0xF9, 0xFF, 0x83, + 0xF7, 0xFA, 0xFF, 0x7F, 0xF7, 0xF8, 0xFF, 0x7B, 0xF6, 0xF6, 0xFF, 0x79, 0xF8, 0xF7, 0xFF, 0x77, 0xFA, 0xF8, 0xFF, + 0x71, 0xF9, 0xF7, 0xFF, 0x6C, 0xF8, 0xF7, 0xFF, 0x6B, 0xFC, 0xFB, 0xFF, 0x63, 0xF8, 0xF8, 0xFF, 0x5A, 0xF7, 0xF8, + 0xFF, 0x52, 0xF7, 0xF7, 0xFF, 0x48, 0xF5, 0xF7, 0xFF, 0x3F, 0xF4, 0xF6, 0xFF, 0x37, 0xF2, 0xF5, 0xFF, 0x2F, 0xEF, + 0xF4, 0xFF, 0x27, 0xE6, 0xF1, 0xFF, 0x20, 0xDD, 0xEE, 0xFF, 0x1F, 0xD6, 0xEA, 0xFF, 0x10, 0xCC, 0xF1, 0xFF, 0x6C, + 0xB9, 0x9D, 0xFF, 0xFE, 0x9F, 0x0B, 0xFF, 0xF8, 0xA3, 0x1A, 0xFF, 0xF9, 0xA2, 0x16, 0xFF, 0xF8, 0xA0, 0x16, 0xFF, + 0xF7, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF6, 0x9B, 0x14, 0xFF, 0xF5, 0x9A, 0x14, 0xFF, 0xF4, 0x99, 0x13, + 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF4, 0x99, 0x13, 0xFF, 0xF8, 0xD8, 0x60, 0xFF, 0xF7, 0xD8, + 0x5A, 0xFF, 0xD7, 0xAD, 0x4B, 0xFF, 0xFF, 0xDD, 0x68, 0xFF, 0xF7, 0xDC, 0x55, 0xFF, 0xFC, 0xD6, 0x55, 0xFF, 0xFF, + 0xCF, 0x54, 0xFF, 0xFF, 0xD5, 0x5C, 0xFF, 0xF1, 0xCA, 0x53, 0xFF, 0xF5, 0xCA, 0x4A, 0xFF, 0xF9, 0xC9, 0x42, 0xFF, + 0xF7, 0xC9, 0x47, 0xFF, 0xF5, 0xC8, 0x4B, 0xFF, 0xF0, 0xCF, 0x5C, 0xFF, 0xF8, 0xCC, 0x46, 0xFF, 0xFF, 0xCA, 0x55, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC2, 0x43, 0xFF, 0xFC, 0xC1, 0x48, 0xFF, 0xF3, 0xBE, 0x3E, 0xFF, 0xFA, 0xCB, + 0x43, 0xFF, 0xFC, 0xB3, 0x37, 0xFF, 0xDD, 0x7B, 0x0B, 0xFF, 0xC8, 0x6D, 0x00, 0xFF, 0xD4, 0x7F, 0x0D, 0xFF, 0xFF, + 0xCC, 0x4D, 0xFF, 0xF9, 0xC2, 0x3E, 0xFF, 0xFF, 0xC1, 0x2D, 0xFF, 0xA7, 0xDE, 0xA7, 0xFF, 0x5B, 0xEB, 0xF7, 0xFF, + 0x6F, 0xF5, 0xF4, 0xFF, 0x6E, 0xF5, 0xF7, 0xFF, 0x6D, 0xF6, 0xF9, 0xFF, 0x67, 0xF3, 0xF5, 0xFF, 0x60, 0xF0, 0xF1, + 0xFF, 0x62, 0xF6, 0xF5, 0xFF, 0x65, 0xFC, 0xFA, 0xFF, 0x5E, 0xF9, 0xF8, 0xFF, 0x58, 0xF6, 0xF5, 0xFF, 0x5D, 0xFE, + 0xFE, 0xFF, 0x52, 0xF6, 0xF6, 0xFF, 0x4B, 0xF5, 0xF6, 0xFF, 0x44, 0xF5, 0xF7, 0xFF, 0x3D, 0xF3, 0xF6, 0xFF, 0x35, + 0xF1, 0xF5, 0xFF, 0x2F, 0xEE, 0xF3, 0xFF, 0x28, 0xEB, 0xF0, 0xFF, 0x20, 0xE1, 0xEE, 0xFF, 0x18, 0xD8, 0xEC, 0xFF, + 0x1A, 0xD2, 0xE4, 0xFF, 0x00, 0xC6, 0xF3, 0xFF, 0xB4, 0xA8, 0x51, 0xFF, 0xFA, 0xA3, 0x13, 0xFF, 0xFB, 0xA3, 0x15, + 0xFF, 0xFB, 0xA3, 0x17, 0xFF, 0xFA, 0xA0, 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF7, 0x9D, 0x15, 0xFF, 0xF7, 0x9C, + 0x15, 0xFF, 0xF6, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, 0x99, 0x14, 0xFF, 0xF6, + 0x99, 0x14, 0xFF, 0xF1, 0xCE, 0x58, 0xFF, 0xFD, 0xDC, 0x59, 0xFF, 0xF8, 0xD5, 0x55, 0xFF, 0xFF, 0xDD, 0x5D, 0xFF, + 0xF3, 0xCE, 0x4D, 0xFF, 0xF3, 0xCB, 0x4C, 0xFF, 0xF3, 0xC8, 0x4C, 0xFF, 0xFB, 0xD1, 0x56, 0xFF, 0xFC, 0xD3, 0x58, + 0xFF, 0xFB, 0xCE, 0x4F, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xF9, 0xC8, 0x48, 0xFF, 0xF8, 0xC7, 0x49, 0xFF, 0xF5, 0xCA, + 0x50, 0xFF, 0xF9, 0xC9, 0x44, 0xFF, 0xFD, 0xC8, 0x4B, 0xFF, 0xF9, 0xC5, 0x3E, 0xFF, 0xFA, 0xC3, 0x40, 0xFF, 0xFA, + 0xC2, 0x43, 0xFF, 0xF3, 0xBD, 0x3A, 0xFF, 0xF3, 0xBF, 0x3A, 0xFF, 0xFC, 0xC7, 0x3E, 0xFF, 0xFC, 0xC6, 0x3A, 0xFF, + 0xE2, 0xA1, 0x24, 0xFF, 0xD9, 0x8C, 0x1F, 0xFF, 0xF6, 0xB9, 0x36, 0xFF, 0xFA, 0xBB, 0x26, 0xFF, 0xF3, 0xBA, 0x29, + 0xFF, 0x56, 0xD7, 0xCD, 0xFF, 0x5A, 0xFA, 0xF9, 0xFF, 0x48, 0xDA, 0xD9, 0xFF, 0x58, 0xEC, 0xED, 0xFF, 0x5F, 0xF5, + 0xF9, 0xFF, 0x4D, 0xEF, 0xF1, 0xFF, 0x3A, 0xE9, 0xE9, 0xFF, 0x45, 0xEE, 0xED, 0xFF, 0x50, 0xF4, 0xF2, 0xFF, 0x4E, + 0xF3, 0xF9, 0xFF, 0x44, 0xF0, 0xED, 0xFF, 0x4B, 0xF8, 0xFE, 0xFF, 0x41, 0xF5, 0xF4, 0xFF, 0x3C, 0xF4, 0xF5, 0xFF, + 0x37, 0xF2, 0xF6, 0xFF, 0x31, 0xF0, 0xF5, 0xFF, 0x2A, 0xEF, 0xF4, 0xFF, 0x26, 0xEA, 0xF2, 0xFF, 0x22, 0xE6, 0xF0, + 0xFF, 0x1C, 0xDB, 0xEE, 0xFF, 0x17, 0xD0, 0xEC, 0xFF, 0x08, 0xCC, 0xF0, 0xFF, 0x08, 0xC4, 0xF5, 0xFF, 0xFF, 0xAD, + 0x0E, 0xFF, 0xF9, 0xA1, 0x16, 0xFF, 0xF8, 0xA1, 0x17, 0xFF, 0xF8, 0xA1, 0x18, 0xFF, 0xF8, 0xA0, 0x17, 0xFF, 0xF8, + 0x9E, 0x16, 0xFF, 0xF8, 0x9D, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF7, 0x9A, 0x15, 0xFF, 0xF7, 0x99, 0x14, 0xFF, + 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xF7, 0x99, 0x14, 0xFF, 0xFB, 0xD5, 0x60, 0xFF, 0xFA, 0xD3, 0x5A, + 0xFF, 0xFA, 0xD1, 0x55, 0xFF, 0xFC, 0xD0, 0x55, 0xFF, 0xFE, 0xCF, 0x54, 0xFF, 0xFA, 0xD0, 0x54, 0xFF, 0xF6, 0xD1, + 0x53, 0xFF, 0xF6, 0xCE, 0x50, 0xFF, 0xF7, 0xCB, 0x4E, 0xFF, 0xF9, 0xCA, 0x4C, 0xFF, 0xFA, 0xCA, 0x4B, 0xFF, 0xFB, + 0xC8, 0x49, 0xFF, 0xFB, 0xC6, 0x47, 0xFF, 0xFB, 0xC6, 0x45, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF8, 0xC6, 0x3F, 0xFF, 0xF8, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xFB, 0xC3, 0x3F, 0xFF, 0xFD, 0xC3, 0x40, + 0xFF, 0xF2, 0xBA, 0x38, 0xFF, 0xF7, 0xC0, 0x3F, 0xFF, 0xFA, 0xC2, 0x3D, 0xFF, 0xFD, 0xC5, 0x3A, 0xFF, 0xF6, 0xC1, + 0x37, 0xFF, 0xEF, 0xBD, 0x34, 0xFF, 0xEF, 0xBB, 0x2D, 0xFF, 0x21, 0xD6, 0xDD, 0xFF, 0x37, 0xDC, 0xBF, 0xFF, 0x41, + 0xE0, 0xDD, 0xFF, 0x49, 0xEA, 0xEB, 0xFF, 0x41, 0xE3, 0xEA, 0xFF, 0x41, 0xE8, 0xED, 0xFF, 0x41, 0xED, 0xF1, 0xFF, + 0x3F, 0xEC, 0xED, 0xFF, 0x3C, 0xEB, 0xEA, 0xFF, 0x3E, 0xEE, 0xFA, 0xFF, 0x31, 0xEB, 0xE5, 0xFF, 0x39, 0xF2, 0xFE, + 0xFF, 0x31, 0xF4, 0xF1, 0xFF, 0x2D, 0xF2, 0xF3, 0xFF, 0x29, 0xF0, 0xF5, 0xFF, 0x25, 0xEE, 0xF4, 0xFF, 0x20, 0xEC, + 0xF4, 0xFF, 0x1E, 0xE6, 0xF1, 0xFF, 0x1C, 0xE1, 0xEF, 0xFF, 0x19, 0xD5, 0xED, 0xFF, 0x16, 0xC9, 0xEB, 0xFF, 0x0B, + 0xC3, 0xDE, 0xFF, 0x39, 0xBE, 0xBA, 0xFF, 0xF8, 0x98, 0x07, 0xFF, 0xF8, 0x9F, 0x19, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, + 0xF5, 0x9F, 0x19, 0xFF, 0xF7, 0x9F, 0x18, 0xFF, 0xF9, 0x9F, 0x16, 0xFF, 0xF9, 0x9D, 0x16, 0xFF, 0xF9, 0x9C, 0x16, + 0xFF, 0xF9, 0x9A, 0x16, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF8, 0x99, + 0x15, 0xFF, 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD4, 0x58, 0xFF, 0xF8, 0xD3, 0x54, 0xFF, 0xF9, 0xD1, 0x56, 0xFF, 0xFA, + 0xD0, 0x57, 0xFF, 0xF8, 0xD0, 0x55, 0xFF, 0xF5, 0xD0, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCC, 0x4D, 0xFF, + 0xF9, 0xCB, 0x4C, 0xFF, 0xFA, 0xCA, 0x4A, 0xFF, 0xFB, 0xC8, 0x48, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC6, 0x44, + 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC6, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC3, + 0x3D, 0xFF, 0xFA, 0xC2, 0x3E, 0xFF, 0xFB, 0xC1, 0x3E, 0xFF, 0xF5, 0xBD, 0x3A, 0xFF, 0xF7, 0xC1, 0x3D, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF9, 0xC0, 0x37, 0xFF, 0xFF, 0xBD, 0x36, 0xFF, 0xFF, 0xBB, 0x35, 0xFF, 0x84, 0xBA, 0x66, 0xFF, + 0x18, 0xD2, 0xAF, 0xFF, 0x19, 0xD2, 0xB3, 0xFF, 0x39, 0xDA, 0xD2, 0xFF, 0x3D, 0xDC, 0xE1, 0xFF, 0x31, 0xD4, 0xD5, + 0xFF, 0x37, 0xDF, 0xE1, 0xFF, 0x3E, 0xE9, 0xEC, 0xFF, 0x35, 0xE6, 0xE1, 0xFF, 0x35, 0xE5, 0xE9, 0xFF, 0x34, 0xE5, + 0xF0, 0xFF, 0x2A, 0xE3, 0xE4, 0xFF, 0x2D, 0xE5, 0xF5, 0xFF, 0x28, 0xEB, 0xE8, 0xFF, 0x2A, 0xEE, 0xF0, 0xFF, 0x24, + 0xE8, 0xEF, 0xFF, 0x20, 0xE4, 0xEC, 0xFF, 0x1C, 0xDF, 0xE9, 0xFF, 0x1C, 0xDB, 0xEB, 0xFF, 0x1B, 0xD7, 0xED, 0xFF, + 0x18, 0xCE, 0xE9, 0xFF, 0x15, 0xC5, 0xE5, 0xFF, 0x03, 0xBF, 0xE7, 0xFF, 0x92, 0xB1, 0x6C, 0xFF, 0xFB, 0x9C, 0x10, + 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF5, 0xA0, 0x19, 0xFF, 0xF3, 0xA0, 0x1B, 0xFF, 0xF6, 0x9F, 0x19, 0xFF, 0xF9, 0x9F, + 0x16, 0xFF, 0xF8, 0x9E, 0x16, 0xFF, 0xF8, 0x9C, 0x15, 0xFF, 0xF8, 0x9B, 0x15, 0xFF, 0xF8, 0x99, 0x15, 0xFF, 0xF7, + 0x99, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF7, 0x98, 0x14, 0xFF, 0xF6, 0xD3, 0x57, 0xFF, 0xF6, 0xD4, 0x55, 0xFF, + 0xF6, 0xD5, 0x53, 0xFF, 0xF7, 0xD2, 0x57, 0xFF, 0xF7, 0xD0, 0x5B, 0xFF, 0xF6, 0xD0, 0x57, 0xFF, 0xF5, 0xCF, 0x54, + 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xFA, 0xCC, 0x4C, 0xFF, 0xFA, 0xCB, 0x4B, 0xFF, 0xFA, 0xCA, 0x49, 0xFF, 0xFA, 0xC8, + 0x47, 0xFF, 0xFB, 0xC7, 0x46, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, 0xFA, 0xC6, 0x43, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, + 0xC5, 0x3F, 0xFF, 0xF9, 0xC4, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3B, 0xFF, + 0xF8, 0xC1, 0x3C, 0xFF, 0xF7, 0xC2, 0x3C, 0xFF, 0xF6, 0xBE, 0x38, 0xFF, 0xF5, 0xBB, 0x34, 0xFF, 0xFD, 0xBC, 0x35, + 0xFF, 0xFF, 0xBE, 0x36, 0xFF, 0xFB, 0xBB, 0x45, 0xFF, 0x2B, 0xC9, 0x82, 0xFF, 0x01, 0xBE, 0xA0, 0xFF, 0x20, 0xC4, + 0xB8, 0xFF, 0x31, 0xCF, 0xD8, 0xFF, 0x31, 0xD5, 0xD1, 0xFF, 0x2E, 0xD5, 0xD4, 0xFF, 0x2A, 0xD4, 0xD7, 0xFF, 0x24, + 0xD7, 0xCC, 0xFF, 0x2E, 0xDE, 0xE8, 0xFF, 0x29, 0xDD, 0xE6, 0xFF, 0x24, 0xDC, 0xE4, 0xFF, 0x22, 0xD9, 0xED, 0xFF, + 0x20, 0xE1, 0xDF, 0xFF, 0x27, 0xE9, 0xEC, 0xFF, 0x1E, 0xE0, 0xEA, 0xFF, 0x1B, 0xD9, 0xE3, 0xFF, 0x19, 0xD3, 0xDD, + 0xFF, 0x1A, 0xD0, 0xE4, 0xFF, 0x1B, 0xCD, 0xEB, 0xFF, 0x17, 0xC7, 0xE4, 0xFF, 0x14, 0xC2, 0xDE, 0xFF, 0x00, 0xBC, + 0xEF, 0xFF, 0xEB, 0xA4, 0x1D, 0xFF, 0xFF, 0xA0, 0x19, 0xFF, 0xF6, 0xA2, 0x15, 0xFF, 0xF3, 0xA2, 0x19, 0xFF, 0xF0, + 0xA1, 0x1D, 0xFF, 0xF4, 0xA0, 0x19, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF8, 0x9E, 0x15, 0xFF, 0xF8, 0x9D, 0x15, 0xFF, + 0xF7, 0x9B, 0x14, 0xFF, 0xF7, 0x9A, 0x14, 0xFF, 0xF6, 0x99, 0x13, 0xFF, 0xF5, 0x98, 0x12, 0xFF, 0xF5, 0x98, 0x12, + 0xFF, 0xF8, 0xD5, 0x5E, 0xFF, 0xFC, 0xD5, 0x63, 0xFF, 0xFF, 0xD6, 0x68, 0xFF, 0xFB, 0xD2, 0x5E, 0xFF, 0xF8, 0xCF, + 0x55, 0xFF, 0xF7, 0xCF, 0x53, 0xFF, 0xF7, 0xCE, 0x50, 0xFF, 0xF9, 0xCD, 0x4D, 0xFF, 0xFA, 0xCC, 0x4B, 0xFF, 0xFA, + 0xCB, 0x49, 0xFF, 0xFA, 0xCA, 0x48, 0xFF, 0xFA, 0xC9, 0x47, 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x44, 0xFF, + 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, + 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, 0xC1, 0x3A, 0xFF, 0xF7, 0xBF, + 0x38, 0xFF, 0xF6, 0xBD, 0x35, 0xFF, 0xFA, 0xBD, 0x34, 0xFF, 0xFE, 0xBD, 0x33, 0xFF, 0xF5, 0xC3, 0x22, 0xFF, 0xFB, + 0xBA, 0x26, 0xFF, 0xB1, 0xB0, 0x53, 0xFF, 0x06, 0xC5, 0x9A, 0xFF, 0x22, 0xD2, 0xC0, 0xFF, 0x36, 0xDD, 0xD3, 0xFF, + 0x12, 0xBA, 0xB3, 0xFF, 0x1E, 0xC7, 0xC3, 0xFF, 0x21, 0xCE, 0xC4, 0xFF, 0x2C, 0xD8, 0xD8, 0xFF, 0x2F, 0xDA, 0xDE, + 0xFF, 0x2A, 0xD5, 0xDC, 0xFF, 0x20, 0xD4, 0xE7, 0xFF, 0x1C, 0xD5, 0xD4, 0xFF, 0x28, 0xE4, 0xE8, 0xFF, 0x24, 0xE3, + 0xEB, 0xFF, 0x1F, 0xCD, 0xD1, 0xFF, 0x1C, 0xC5, 0xD2, 0xFF, 0x01, 0xC2, 0xDC, 0xFF, 0x11, 0xC3, 0xCF, 0xFF, 0x09, + 0xC1, 0xE2, 0xFF, 0x00, 0xBE, 0xE3, 0xFF, 0x6E, 0xBE, 0x83, 0xFF, 0xF6, 0x9F, 0x0C, 0xFF, 0xFD, 0x9F, 0x11, 0xFF, + 0xF6, 0xA1, 0x17, 0xFF, 0xF4, 0xA1, 0x19, 0xFF, 0xF3, 0xA1, 0x1A, 0xFF, 0xF5, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x15, + 0xFF, 0xF7, 0x9E, 0x15, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF7, 0x9C, 0x14, 0xFF, 0xF7, 0x9B, 0x13, 0xFF, 0xF5, 0x99, + 0x11, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xF4, 0x98, 0x10, 0xFF, 0xFB, 0xD6, 0x64, 0xFF, 0xF9, 0xD4, 0x5D, 0xFF, 0xF8, + 0xD2, 0x55, 0xFF, 0xF8, 0xD0, 0x53, 0xFF, 0xF8, 0xCE, 0x50, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xFA, 0xCD, 0x4D, 0xFF, + 0xFA, 0xCC, 0x4B, 0xFF, 0xFB, 0xCC, 0x49, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, 0x47, 0xFF, 0xFA, 0xC9, 0x46, + 0xFF, 0xFA, 0xC8, 0x45, 0xFF, 0xFA, 0xC7, 0x43, 0xFF, 0xF9, 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, + 0x40, 0xFF, 0xF9, 0xC3, 0x3F, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3C, 0xFF, 0xF8, 0xC0, 0x3B, 0xFF, 0xF8, + 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x36, 0xFF, 0xF7, 0xBD, 0x34, 0xFF, + 0xF7, 0xBC, 0x31, 0xFF, 0xF8, 0xBB, 0x33, 0xFF, 0xF9, 0xBA, 0x35, 0xFF, 0xFF, 0xBC, 0x2C, 0xFF, 0xDE, 0xC2, 0x60, + 0xFF, 0x84, 0xCB, 0x93, 0xFF, 0x2A, 0xD4, 0xC5, 0xFF, 0x2E, 0xD7, 0xCA, 0xFF, 0x12, 0xBA, 0xB0, 0xFF, 0x16, 0xBE, + 0xB4, 0xFF, 0x1A, 0xC2, 0xB8, 0xFF, 0x25, 0xC8, 0xC6, 0xFF, 0x20, 0xBE, 0xC4, 0xFF, 0x16, 0xC8, 0xDA, 0xFF, 0x18, + 0xC8, 0xC9, 0xFF, 0x21, 0xD7, 0xDB, 0xFF, 0x1A, 0xD6, 0xDD, 0xFF, 0x0D, 0xBC, 0xB7, 0xFF, 0x03, 0xBD, 0xC7, 0xFF, + 0x00, 0xBF, 0xD0, 0xFF, 0x50, 0xC9, 0xAC, 0xFF, 0xB0, 0xB8, 0x6B, 0xFF, 0xFF, 0xA3, 0x04, 0xFF, 0xFA, 0xA3, 0x12, + 0xFF, 0xF4, 0xA4, 0x21, 0xFF, 0xF5, 0xA2, 0x1D, 0xFF, 0xF5, 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF6, 0xA0, + 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF7, 0x9D, 0x14, 0xFF, 0xF6, + 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x99, 0x10, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, 0xF2, 0x97, 0x0E, 0xFF, + 0xF8, 0xD4, 0x5C, 0xFF, 0xF8, 0xD3, 0x57, 0xFF, 0xF8, 0xD1, 0x53, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCE, 0x4F, + 0xFF, 0xF9, 0xCE, 0x4D, 0xFF, 0xF9, 0xCD, 0x4B, 0xFF, 0xFA, 0xCC, 0x4A, 0xFF, 0xFA, 0xCB, 0x48, 0xFF, 0xFA, 0xCA, + 0x47, 0xFF, 0xFA, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, 0xF9, 0xC7, 0x43, 0xFF, 0xF9, + 0xC6, 0x42, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, + 0xF9, 0xC1, 0x3C, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF8, 0xBF, 0x39, 0xFF, 0xF8, 0xBF, 0x38, 0xFF, 0xF8, 0xBF, 0x37, + 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF5, 0xBD, 0x35, 0xFF, 0xF3, 0xBB, 0x34, 0xFF, 0xF7, 0xB9, 0x34, 0xFF, 0xFA, 0xB7, + 0x34, 0xFF, 0xFF, 0xB5, 0x22, 0xFF, 0xFE, 0xB4, 0x2E, 0xFF, 0xE6, 0xB9, 0x4D, 0xFF, 0xCD, 0xBF, 0x6B, 0xFF, 0xC5, + 0xB1, 0x27, 0xFF, 0x7C, 0xBB, 0x6C, 0xFF, 0x48, 0xBD, 0x89, 0xFF, 0x15, 0xBE, 0xA6, 0xFF, 0x08, 0xBF, 0xB9, 0xFF, + 0x00, 0xBF, 0xCB, 0xFF, 0x3D, 0xC4, 0xDA, 0xFF, 0x20, 0xCA, 0xBA, 0xFF, 0x3E, 0xC6, 0xAD, 0xFF, 0x53, 0xBB, 0x99, + 0xFF, 0x8A, 0xAC, 0x59, 0xFF, 0xC3, 0xAA, 0x35, 0xFF, 0xFF, 0xB3, 0x03, 0xFF, 0xFF, 0xA6, 0x15, 0xFF, 0xFF, 0xA4, + 0x20, 0xFF, 0xFA, 0xA0, 0x19, 0xFF, 0xF9, 0xA2, 0x1B, 0xFF, 0xF8, 0xA4, 0x1C, 0xFF, 0xF7, 0xA2, 0x1B, 0xFF, 0xF6, + 0xA1, 0x19, 0xFF, 0xF6, 0xA0, 0x18, 0xFF, 0xF7, 0xA0, 0x17, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, + 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x14, 0xFF, 0xF6, 0x9C, 0x13, 0xFF, 0xF6, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x10, + 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF3, 0x98, 0x0F, 0xFF, 0xF6, 0xD2, 0x53, 0xFF, 0xF7, 0xD1, 0x52, 0xFF, 0xF8, 0xD0, + 0x51, 0xFF, 0xF8, 0xCF, 0x4F, 0xFF, 0xF9, 0xCE, 0x4E, 0xFF, 0xF9, 0xCE, 0x4C, 0xFF, 0xF9, 0xCD, 0x4A, 0xFF, 0xF9, + 0xCC, 0x48, 0xFF, 0xF9, 0xCB, 0x46, 0xFF, 0xF9, 0xCA, 0x46, 0xFF, 0xF9, 0xC9, 0x45, 0xFF, 0xF9, 0xC8, 0x44, 0xFF, + 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x41, 0xFF, 0xF9, 0xC4, 0x40, + 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3D, 0xFF, 0xF9, 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x3A, 0xFF, 0xF9, 0xBF, + 0x38, 0xFF, 0xF8, 0xBF, 0x37, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, 0xF4, 0xBC, 0x36, 0xFF, 0xEF, + 0xBA, 0x37, 0xFF, 0xF5, 0xB7, 0x35, 0xFF, 0xFC, 0xB5, 0x34, 0xFF, 0xF8, 0xB5, 0x2B, 0xFF, 0xF5, 0xB6, 0x22, 0xFF, + 0xFA, 0xB5, 0x25, 0xFF, 0xFF, 0xB3, 0x28, 0xFF, 0xFF, 0xB5, 0x28, 0xFF, 0xFF, 0xB7, 0x28, 0xFF, 0xFF, 0xB4, 0x1E, + 0xFF, 0xFE, 0xB2, 0x14, 0xFF, 0xF6, 0xAD, 0x20, 0xFF, 0xFE, 0xB9, 0x3C, 0xFF, 0xF0, 0xCB, 0x5A, 0xFF, 0xFA, 0xBE, + 0x41, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xFE, 0xAD, 0x11, 0xFF, 0xFC, 0xAC, 0x17, 0xFF, 0xFA, 0xAB, 0x1D, 0xFF, 0xFD, + 0xA9, 0x1D, 0xFF, 0xFF, 0xA7, 0x1D, 0xFF, 0xFA, 0xA7, 0x1B, 0xFF, 0xF4, 0xA8, 0x18, 0xFF, 0xF8, 0xA6, 0x18, 0xFF, + 0xFC, 0xA4, 0x17, 0xFF, 0xFA, 0xA2, 0x19, 0xFF, 0xF7, 0xA1, 0x1A, 0xFF, 0xF7, 0xA0, 0x19, 0xFF, 0xF7, 0xA0, 0x17, + 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, + 0x13, 0xFF, 0xF5, 0x9B, 0x12, 0xFF, 0xF4, 0x9A, 0x11, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF3, 0x99, 0x10, 0xFF, 0xF7, + 0xD1, 0x54, 0xFF, 0xF8, 0xD0, 0x52, 0xFF, 0xF8, 0xD0, 0x51, 0xFF, 0xF9, 0xCF, 0x4F, 0xFF, 0xF9, 0xCF, 0x4E, 0xFF, + 0xF9, 0xCE, 0x4B, 0xFF, 0xF9, 0xCD, 0x49, 0xFF, 0xF9, 0xCC, 0x47, 0xFF, 0xF8, 0xCA, 0x45, 0xFF, 0xF8, 0xCA, 0x44, + 0xFF, 0xF8, 0xC9, 0x44, 0xFF, 0xF9, 0xC8, 0x43, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC7, 0x42, 0xFF, 0xF9, 0xC6, + 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, + 0xC1, 0x3B, 0xFF, 0xF9, 0xC0, 0x39, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF8, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x35, 0xFF, + 0xF8, 0xBD, 0x34, 0xFF, 0xF6, 0xBC, 0x34, 0xFF, 0xF4, 0xBA, 0x35, 0xFF, 0xF8, 0xB8, 0x34, 0xFF, 0xFB, 0xB6, 0x33, + 0xFF, 0xF9, 0xB6, 0x2D, 0xFF, 0xF6, 0xB6, 0x28, 0xFF, 0xF8, 0xB5, 0x29, 0xFF, 0xFA, 0xB4, 0x29, 0xFF, 0xFB, 0xB4, + 0x29, 0xFF, 0xFC, 0xB5, 0x29, 0xFF, 0xF5, 0xB2, 0x29, 0xFF, 0xEF, 0xAF, 0x29, 0xFF, 0xF5, 0xA9, 0x1A, 0xFF, 0xD9, + 0xCE, 0x9A, 0xFF, 0xE8, 0xCF, 0x6C, 0xFF, 0xE3, 0xC6, 0x73, 0xFF, 0xDD, 0xC9, 0x7F, 0xFF, 0xFB, 0xAD, 0x18, 0xFF, + 0xF9, 0xAC, 0x1B, 0xFF, 0xF7, 0xAB, 0x1F, 0xFF, 0xF9, 0xA9, 0x1E, 0xFF, 0xFB, 0xA7, 0x1D, 0xFF, 0xF8, 0xA7, 0x1C, + 0xFF, 0xF6, 0xA6, 0x1A, 0xFF, 0xF8, 0xA5, 0x19, 0xFF, 0xFA, 0xA3, 0x19, 0xFF, 0xF9, 0xA2, 0x1A, 0xFF, 0xF8, 0xA1, + 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF7, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, + 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9B, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, + 0xF4, 0x9A, 0x10, 0xFF, 0xF4, 0x9A, 0x10, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, + 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, + 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, + 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, + 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, + 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, + 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, + 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF9, 0xB2, 0x29, 0xFF, + 0xFB, 0xB2, 0x28, 0xFF, 0xF6, 0xB2, 0x30, 0xFF, 0xFD, 0xA8, 0x11, 0xFF, 0xE1, 0xD3, 0x7E, 0xFF, 0xE6, 0xBB, 0x58, + 0xFF, 0xFB, 0xAA, 0x15, 0xFF, 0xF7, 0xAD, 0x1F, 0xFF, 0xF6, 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, + 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, + 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, + 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, + 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, + 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, + 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, + 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, + 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, + 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, + 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, + 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, + 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF8, 0xB2, 0x2A, 0xFF, 0xFA, 0xB1, 0x29, 0xFF, 0xF4, 0xB5, 0x2D, 0xFF, 0xF5, 0xB4, + 0x1D, 0xFF, 0xFF, 0x9B, 0x23, 0xFF, 0xF2, 0xB5, 0x1F, 0xFF, 0xFB, 0xAB, 0x0B, 0xFF, 0xF6, 0xAC, 0x1E, 0xFF, 0xF6, + 0xAB, 0x1F, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, + 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, + 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, + 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, + 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, + 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, + 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, + 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, + 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, + 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, + 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, + 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, + 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, + 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, + 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, + 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, + 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, + 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF9, 0xD0, 0x54, + 0xFF, 0xF9, 0xCF, 0x52, 0xFF, 0xF9, 0xCF, 0x51, 0xFF, 0xFA, 0xCF, 0x4F, 0xFF, 0xFA, 0xCF, 0x4D, 0xFF, 0xF9, 0xCE, + 0x4A, 0xFF, 0xF9, 0xCC, 0x48, 0xFF, 0xF8, 0xCB, 0x46, 0xFF, 0xF8, 0xCA, 0x43, 0xFF, 0xF8, 0xC9, 0x43, 0xFF, 0xF8, + 0xC9, 0x43, 0xFF, 0xF8, 0xC8, 0x42, 0xFF, 0xF8, 0xC7, 0x42, 0xFF, 0xF8, 0xC7, 0x41, 0xFF, 0xF9, 0xC6, 0x41, 0xFF, + 0xF9, 0xC5, 0x40, 0xFF, 0xF9, 0xC4, 0x40, 0xFF, 0xF9, 0xC3, 0x3E, 0xFF, 0xF9, 0xC2, 0x3C, 0xFF, 0xF9, 0xC1, 0x3A, + 0xFF, 0xF9, 0xBF, 0x38, 0xFF, 0xF9, 0xBF, 0x37, 0xFF, 0xF9, 0xBE, 0x36, 0xFF, 0xF8, 0xBE, 0x34, 0xFF, 0xF8, 0xBD, + 0x33, 0xFF, 0xF9, 0xBC, 0x33, 0xFF, 0xF9, 0xBA, 0x32, 0xFF, 0xFA, 0xB9, 0x32, 0xFF, 0xFB, 0xB7, 0x31, 0xFF, 0xF9, + 0xB6, 0x30, 0xFF, 0xF8, 0xB6, 0x2E, 0xFF, 0xF6, 0xB5, 0x2C, 0xFF, 0xF4, 0xB4, 0x2A, 0xFF, 0xF5, 0xB3, 0x2A, 0xFF, + 0xF6, 0xB2, 0x2A, 0xFF, 0xF7, 0xB2, 0x2A, 0xFF, 0xF8, 0xB1, 0x2A, 0xFF, 0xF9, 0xAE, 0x21, 0xFF, 0xFA, 0xAC, 0x18, + 0xFF, 0xF6, 0xAD, 0x1E, 0xFF, 0xF3, 0xAE, 0x23, 0xFF, 0xF4, 0xAC, 0x20, 0xFF, 0xF5, 0xAB, 0x1D, 0xFF, 0xF5, 0xAA, + 0x1E, 0xFF, 0xF5, 0xAA, 0x20, 0xFF, 0xF6, 0xA9, 0x1F, 0xFF, 0xF6, 0xA7, 0x1E, 0xFF, 0xF7, 0xA6, 0x1D, 0xFF, 0xF8, + 0xA5, 0x1B, 0xFF, 0xF8, 0xA4, 0x1B, 0xFF, 0xF8, 0xA3, 0x1B, 0xFF, 0xF8, 0xA2, 0x1B, 0xFF, 0xF9, 0xA1, 0x1A, 0xFF, + 0xF8, 0xA1, 0x19, 0xFF, 0xF8, 0xA0, 0x18, 0xFF, 0xF8, 0x9F, 0x16, 0xFF, 0xF7, 0x9F, 0x15, 0xFF, 0xF7, 0x9E, 0x14, + 0xFF, 0xF6, 0x9D, 0x13, 0xFF, 0xF6, 0x9C, 0x12, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, 0xF5, 0x9A, + 0x11, 0xFF, 0xF5, 0x9A, 0x11, 0xFF, ]; diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index c15a73d3..85ee1eb9 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -1,31 +1,21 @@ -use std::{ - io, - sync::{Arc, Mutex}, -}; +use std::io; +use std::sync::{Arc, Mutex}; +use ironrdp::codecs::rfx::FrameAcknowledgePdu; +use ironrdp::fast_path::{FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode}; +use ironrdp::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; +use ironrdp::{PduBufferParsing, ShareDataPdu}; use log::{debug, info, warn}; use num_traits::FromPrimitive; -use ironrdp::{ - codecs::rfx::FrameAcknowledgePdu, - fast_path::{ - FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, - }, - PduBufferParsing, - ShareDataPdu, surface_commands::{FrameAction, SurfaceCommand}, +use super::codecs::rfx; +use super::{DecodedImage, DESTINATION_PIXEL_FORMAT}; +use crate::transport::{ + DataTransport, Encoder, McsTransport, SendDataContextTransport, ShareControlHeaderTransport, + ShareDataHeaderTransport, }; -use ironrdp::surface_commands::FrameMarkerPdu; - -use crate::{ - RdpError, - transport::{ - DataTransport, Encoder, McsTransport, SendDataContextTransport, - ShareControlHeaderTransport, ShareDataHeaderTransport, - }, - utils::CodecId, -}; - -use super::{codecs::rfx, DecodedImage, DESTINATION_PIXEL_FORMAT}; +use crate::utils::CodecId; +use crate::RdpError; pub struct Processor { complete_data: CompleteData, @@ -47,10 +37,7 @@ impl Processor { let update_pdu = FastPathUpdatePdu::from_buffer(input_buffer)?; let update_pdu_length = update_pdu.buffer_length(); - debug!( - "Fast-Path Update fragmentation: {:?}", - update_pdu.fragmentation - ); + debug!("Fast-Path Update fragmentation: {:?}", update_pdu.fragmentation); let processed_complete_data = self .complete_data @@ -63,10 +50,7 @@ impl Processor { match update { Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { - info!( - "Received Surface Commands: {} pieces", - surface_commands.len() - ); + info!("Received Surface Commands: {} pieces", surface_commands.len()); self.process_surface_commands(&mut stream, surface_commands)?; } @@ -102,20 +86,16 @@ impl Processor { match command { SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { info!("Surface bits"); - let codec_id = CodecId::from_u8(bits.extended_bitmap_data.codec_id).ok_or( - RdpError::UnexpectedCodecId(bits.extended_bitmap_data.codec_id), - )?; + let codec_id = CodecId::from_u8(bits.extended_bitmap_data.codec_id) + .ok_or(RdpError::UnexpectedCodecId(bits.extended_bitmap_data.codec_id))?; match codec_id { CodecId::RemoteFx => { let destination = bits.destination; let mut data = bits.extended_bitmap_data.data; while !data.is_empty() { - self.rfx_handler.decode( - &destination, - &mut data, - self.decoded_image.clone(), - )?; + self.rfx_handler + .decode(&destination, &mut data, self.decoded_image.clone())?; } } } @@ -159,9 +139,7 @@ struct CompleteData { impl CompleteData { fn new() -> Self { - Self { - fragmented_data: None, - } + Self { fragmented_data: None } } fn process_data(&mut self, data: &[u8], fragmentation: Fragmentation) -> Option> { @@ -205,10 +183,7 @@ impl CompleteData { warn!("Got unexpected Next fragmentation PDU without prior First fragmentation PDU"); self.fragmented_data = None; } else { - self.fragmented_data - .as_mut() - .unwrap() - .extend_from_slice(data); + self.fragmented_data.as_mut().unwrap().extend_from_slice(data); } } } @@ -232,11 +207,7 @@ impl Frame { } } - fn process_marker( - &mut self, - marker: &FrameMarkerPdu, - mut output: impl io::Write, - ) -> Result<(), RdpError> { + fn process_marker(&mut self, marker: &FrameMarkerPdu, mut output: impl io::Write) -> Result<(), RdpError> { match marker.frame_action { FrameAction::Begin => Ok(()), FrameAction::End => self.transport.encode( diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index 4069b173..b1d399ee 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -1,23 +1,18 @@ mod gfx; -use std::{cmp, collections::HashMap, io}; +use std::collections::HashMap; +use std::{cmp, io}; -use ironrdp::{ - rdp::{ - vc::{self, dvc}, - ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, - }, - Data, ShareDataPdu, -}; +use ironrdp::rdp::vc::{self, dvc}; +use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; +use ironrdp::{Data, ShareDataPdu}; use log::{debug, error}; -use crate::{ - transport::{ - Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, - ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, - }, - RdpError, +use crate::transport::{ + Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, ShareControlHeaderTransport, + ShareDataHeaderTransport, StaticVirtualChannelTransport, }; +use crate::RdpError; const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; @@ -36,25 +31,14 @@ impl<'a> Processor<'a> { } } - pub fn process( - &mut self, - mut stream: impl io::BufRead + io::Write, - data: Data, - ) -> Result<(), RdpError> { + pub fn process(&mut self, mut stream: impl io::BufRead + io::Write, data: Data) -> Result<(), RdpError> { let mut transport = SendDataContextTransport::default(); - transport - .mcs_transport - .0 - .set_decoded_context(data.data_length); + transport.mcs_transport.0.set_decoded_context(data.data_length); let channel_ids = transport.decode(&mut stream)?; transport.set_decoded_context(channel_ids); - match self - .static_channels - .get(&channel_ids.channel_id) - .map(String::as_str) - { + match self.static_channels.get(&channel_ids.channel_id).map(String::as_str) { Some(vc::DRDYNVC_CHANNEL_NAME) => { let transport = DynamicVirtualChannelTransport::new( StaticVirtualChannelTransport::new(transport), @@ -85,10 +69,9 @@ impl<'a> Processor<'a> { match transport.decode(&mut stream)? { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); - let caps_response = - dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { - version: dvc::CapsVersion::V1, - }); + let caps_response = dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { + version: dvc::CapsVersion::V1, + }); debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); transport.encode( @@ -99,9 +82,7 @@ impl<'a> Processor<'a> { dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {:?}", create_request); - let creation_status = if let Some(dyncamic_channel) = - create_dvc(create_request.channel_name.as_str()) - { + let creation_status = if let Some(dyncamic_channel) = create_dvc(create_request.channel_name.as_str()) { self.dynamic_channels .insert(create_request.channel_id, dyncamic_channel); @@ -159,10 +140,7 @@ impl<'a> Processor<'a> { }); transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode( - client_data, - Some(dvc_data), - )?, + DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, &mut stream, )?; } @@ -186,10 +164,7 @@ impl<'a> Processor<'a> { }); transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode( - client_data, - Some(dvc_data), - )?, + DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, &mut stream, )?; } @@ -212,16 +187,14 @@ fn process_global_channel_pdu( Ok(()) } - ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu( - ErrorInfo::ProtocolIndependentCode(ProtocolIndependentCode::None), - )) => { + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(ErrorInfo::ProtocolIndependentCode( + ProtocolIndependentCode::None, + ))) => { debug!("Received None server error"); Ok(()) } - ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e)) => { - Err(RdpError::ServerError(e.description())) - } + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e)) => Err(RdpError::ServerError(e.description())), _ => Err(RdpError::UnexpectedPdu(format!( "Expected Session Save Info PDU, got: {:?}", share_data_pdu.as_short_name() @@ -260,10 +233,7 @@ fn negotiate_dvc( } trait DynamicChannelDataHandler { - fn process_complete_data( - &mut self, - complete_data: Vec, - ) -> Result>, RdpError>; + fn process_complete_data(&mut self, complete_data: Vec) -> Result>, RdpError>; } pub struct DynamicChannel { @@ -279,11 +249,7 @@ impl DynamicChannel { } } - fn process_data_first_pdu( - &mut self, - total_data_size: usize, - data: Vec, - ) -> Result>, RdpError> { + fn process_data_first_pdu(&mut self, total_data_size: usize, data: Vec) -> Result>, RdpError> { if let Some(complete_data) = self.data.process_data_first_pdu(total_data_size, data) { self.handler.process_complete_data(complete_data) } else { @@ -352,9 +318,7 @@ impl CompleteData { Some(self.data.drain(..).collect()) } cmp::Ordering::Greater => { - error!( - "Actual DVC message size is grater than expected total DVC message size" - ); + error!("Actual DVC message size is grater than expected total DVC message size"); self.total_size = 0; self.data.clear(); diff --git a/ironrdp_client/src/active_session/x224/gfx.rs b/ironrdp_client/src/active_session/x224/gfx.rs index 8396b97b..5bd17e50 100644 --- a/ironrdp_client/src/active_session/x224/gfx.rs +++ b/ironrdp_client/src/active_session/x224/gfx.rs @@ -1,10 +1,8 @@ -use ironrdp::{ - dvc::gfx::{ - zgfx, CapabilitiesAdvertisePdu, CapabilitiesV8Flags, CapabilitySet, ClientPdu, - FrameAcknowledgePdu, QueueDepth, ServerPdu, - }, - PduParsing, +use ironrdp::dvc::gfx::{ + zgfx, CapabilitiesAdvertisePdu, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, QueueDepth, + ServerPdu, }; +use ironrdp::PduParsing; use log::debug; use super::DynamicChannelDataHandler; @@ -27,10 +25,7 @@ impl Handler { } impl DynamicChannelDataHandler for Handler { - fn process_complete_data( - &mut self, - complete_data: Vec, - ) -> Result>, RdpError> { + fn process_complete_data(&mut self, complete_data: Vec) -> Result>, RdpError> { self.decompressed_buffer.clear(); self.decompressor .decompress(complete_data.as_slice(), &mut self.decompressed_buffer)?; @@ -57,12 +52,10 @@ impl DynamicChannelDataHandler for Handler { } pub fn create_capabilities_advertise() -> Result, RdpError> { - let capabilities_advertise = - ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu(vec![CapabilitySet::V8 { - flags: CapabilitiesV8Flags::empty(), - }])); - let mut capabilities_advertise_buffer = - Vec::with_capacity(capabilities_advertise.buffer_length()); + let capabilities_advertise = ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu(vec![CapabilitySet::V8 { + flags: CapabilitiesV8Flags::empty(), + }])); + let mut capabilities_advertise_buffer = Vec::with_capacity(capabilities_advertise.buffer_length()); capabilities_advertise.to_buffer(&mut capabilities_advertise_buffer)?; Ok(capabilities_advertise_buffer) diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index db4bb131..2459ee85 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -2,9 +2,8 @@ use std::net::SocketAddr; use clap::{crate_name, crate_version, App, Arg}; use ironrdp::nego::SecurityProtocol; -use sspi::AuthIdentity; - use ironrdp_client::InputConfig; +use sspi::AuthIdentity; const DEFAULT_WIDTH: u16 = 1920; const DEFAULT_HEIGHT: u16 = 1080; @@ -44,9 +43,7 @@ impl Config { .index(1) .validator(|u| match u.parse::() { Ok(_) => Ok(()), - Err(_) => Err(String::from( - "The address does not match the format: :", - )), + Err(_) => Err(String::from("The address does not match the format: :")), }), ) .args(&input_args()); diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 69b1c89c..6cd47201 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -1,33 +1,25 @@ mod user_info; -use std::{ - collections::HashMap, - io::{self}, - iter, - net::SocketAddr, -}; +use std::collections::HashMap; +use std::io::{self}; +use std::iter; +use std::net::SocketAddr; use bufstream::BufStream; use bytes::BytesMut; -use ironrdp::{ - nego, rdp, - rdp::{ - capability_sets::CapabilitySet, - server_license::{ - ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, - InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, - PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, - }, - ErrorInfo, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID, - }, - PduParsing, +use ironrdp::rdp::capability_sets::CapabilitySet; +use ironrdp::rdp::server_license::{ + ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, + ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; +use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; +use ironrdp::{nego, rdp, PduParsing}; use log::{debug, info, trace, warn}; use ring::rand::SecureRandom; use sspi::internal::credssp; -use crate::{transport::*, InputConfig, RdpError, BUF_STREAM_SIZE}; -use ironrdp::rdp::ProtocolIndependentCode; +use crate::transport::*; +use crate::{InputConfig, RdpError, BUF_STREAM_SIZE}; pub type StaticChannels = HashMap; @@ -83,20 +75,16 @@ where process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key)?; if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - if let credssp::EarlyUserAuthResult::AccessDenied = - EarlyUserAuthResult::read(&mut stream)? - { + if let credssp::EarlyUserAuthResult::AccessDenied = EarlyUserAuthResult::read(&mut stream)? { return Err(RdpError::AccessDenied); } } } - let static_channels = - process_mcs_connect(&mut stream, &mut transport, config, selected_protocol)?; + let static_channels = process_mcs_connect(&mut stream, &mut transport, config, selected_protocol)?; let mut transport = McsTransport::new(transport); - let joined_static_channels = - process_mcs(&mut stream, &mut transport, static_channels, config)?; + let joined_static_channels = process_mcs(&mut stream, &mut transport, static_channels, config)?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels @@ -119,8 +107,7 @@ where Ok(_) => (), } - let mut transport = - ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); + let mut transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); let desktop_sizes = process_capability_sets(&mut stream, &mut transport, config)?; let mut transport = ShareDataHeaderTransport::new(transport); @@ -144,12 +131,9 @@ pub fn process_cred_ssp( ) -> Result<(), RdpError> { let mut transport = TsRequestTransport::default(); - let mut cred_ssp_client = credssp::CredSspClient::new( - server_public_key, - credentials, - credssp::CredSspMode::WithCredentials, - ) - .map_err(RdpError::CredSspError)?; + let mut cred_ssp_client = + credssp::CredSspClient::new(server_public_key, credentials, credssp::CredSspMode::WithCredentials) + .map_err(RdpError::CredSspError)?; let mut next_ts_request = credssp::TsRequest::default(); loop { @@ -181,10 +165,8 @@ pub fn process_mcs_connect( config: &InputConfig, selected_protocol: nego::SecurityProtocol, ) -> Result { - let connect_initial = ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks( - config, - selected_protocol, - )?); + let connect_initial = + ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); let mut connect_initial_buf = BytesMut::with_capacity(connect_initial.buffer_length()); connect_initial_buf.resize(connect_initial.buffer_length(), 0x00); @@ -196,16 +178,11 @@ pub fn process_mcs_connect( data.resize(data_length, 0x00); stream.read_exact(&mut data)?; - let connect_response = - ironrdp::ConnectResponse::from_buffer(data.as_ref()).map_err(RdpError::McsConnectError)?; + let connect_response = ironrdp::ConnectResponse::from_buffer(data.as_ref()).map_err(RdpError::McsConnectError)?; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; - if connect_initial - .conference_create_request - .gcc_blocks - .security - == ironrdp::gcc::ClientSecurityData::no_security() + if connect_initial.conference_create_request.gcc_blocks.security == ironrdp::gcc::ClientSecurityData::no_security() && gcc_blocks.security != ironrdp::gcc::ServerSecurityData::no_security() { return Err(RdpError::InvalidResponse(String::from( @@ -228,10 +205,7 @@ pub fn process_mcs_connect( .into_iter() .map(|channel| channel.name) .zip(static_channel_ids.into_iter()) - .chain(iter::once(( - config.global_channel_name.clone(), - global_channel_id, - ))) + .chain(iter::once((config.global_channel_name.clone(), global_channel_id))) .collect::(); Ok(static_channels) @@ -248,16 +222,10 @@ pub fn process_mcs( sub_interval: 0, }; - debug!( - "Send MCS Erect Domain Request PDU: {:?}", - erect_domain_request - ); + debug!("Send MCS Erect Domain Request PDU: {:?}", erect_domain_request); transport.encode( - McsTransport::prepare_data_to_encode( - ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), - None, - )?, + McsTransport::prepare_data_to_encode(ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), None)?, &mut stream, )?; @@ -271,10 +239,7 @@ pub fn process_mcs( let initiator_id = if let ironrdp::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); - static_channels.insert( - config.user_channel_name.clone(), - attach_user_confirm.initiator_id, - ); + static_channels.insert(config.user_channel_name.clone(), attach_user_confirm.initiator_id); attach_user_confirm.initiator_id } else { @@ -289,24 +254,15 @@ pub fn process_mcs( initiator_id, channel_id: *id, }; - debug!( - "Send MCS Channel Join Request PDU: {:?}", - channel_join_request - ); + debug!("Send MCS Channel Join Request PDU: {:?}", channel_join_request); transport.encode( - McsTransport::prepare_data_to_encode( - ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), - None, - )?, + McsTransport::prepare_data_to_encode(ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), None)?, &mut stream, )?; let mcs_pdu = transport.decode(&mut stream)?; if let ironrdp::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { - debug!( - "Got MCS Channel Join Confirm PDU: {:?}", - channel_join_confirm - ); + debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); if channel_join_confirm.initiator_id != initiator_id || channel_join_confirm.channel_id != channel_join_confirm.requested_channel_id @@ -364,20 +320,12 @@ pub fn process_server_license_exchange( let mut client_random = vec![0u8; RANDOM_NUMBER_SIZE]; let rand = ring::rand::SystemRandom::new(); - rand.fill(&mut client_random).map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("{}", err), - )) - })?; + rand.fill(&mut client_random) + .map_err(|err| RdpError::IOError(io::Error::new(io::ErrorKind::InvalidData, format!("{}", err))))?; let mut premaster_secret = vec![0u8; PREMASTER_SECRET_SIZE]; - rand.fill(&mut premaster_secret).map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("{}", err), - )) - })?; + rand.fill(&mut premaster_secret) + .map_err(|err| RdpError::IOError(io::Error::new(io::ErrorKind::InvalidData, format!("{}", err))))?; ClientNewLicenseRequest::from_server_license_request( &license_request, @@ -408,14 +356,12 @@ pub fn process_server_license_exchange( trace!("{:?}", encryption_data); let mut new_pdu_buffer = Vec::with_capacity(new_license_request.buffer_length()); - new_license_request - .to_buffer(&mut new_pdu_buffer) - .map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("Unable to write to buffer: {}", err), - )) - })?; + new_license_request.to_buffer(&mut new_pdu_buffer).map_err(|err| { + RdpError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + format!("Unable to write to buffer: {}", err), + )) + })?; transport.encode(new_pdu_buffer, &mut stream)?; let channel_ids = transport.decode(&mut stream)?; @@ -435,10 +381,7 @@ pub fn process_server_license_exchange( .map_err(|err| { RdpError::ServerLicenseError(rdp::RdpError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!( - "Unable to generate Client Platform Challenge Response {}", - err - ), + format!("Unable to generate Client Platform Challenge Response {}", err), ))) })?; @@ -446,14 +389,12 @@ pub fn process_server_license_exchange( trace!("{:?}", challenge_response); let mut new_pdu_buffer = Vec::with_capacity(challenge_response.buffer_length()); - challenge_response - .to_buffer(&mut new_pdu_buffer) - .map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("Unable to write to buffer: {}", err), - )) - })?; + challenge_response.to_buffer(&mut new_pdu_buffer).map_err(|err| { + RdpError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + format!("Unable to write to buffer: {}", err), + )) + })?; transport.encode(new_pdu_buffer, &mut stream)?; let channel_ids = transport.decode(&mut stream)?; @@ -465,14 +406,12 @@ pub fn process_server_license_exchange( debug!("Received Server Upgrade License PDU"); trace!("{:?}", upgrade_license); - upgrade_license - .verify_server_license(&encryption_data) - .map_err(|err| { - RdpError::ServerLicenseError(rdp::RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("License verification failed: {:?}", err), - ))) - })?; + upgrade_license.verify_server_license(&encryption_data).map_err(|err| { + RdpError::ServerLicenseError(rdp::RdpError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + format!("License verification failed: {:?}", err), + ))) + })?; debug!("Successfully verified the license"); @@ -485,22 +424,17 @@ pub fn process_capability_sets( config: &InputConfig, ) -> Result { let share_control_pdu = transport.decode(&mut stream)?; - let capability_sets = - if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = - share_control_pdu - { - debug!( - "Got Server Demand Active PDU: {:?}", - server_demand_active.pdu - ); + let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu + { + debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); - server_demand_active.pdu.capability_sets - } else { - return Err(RdpError::UnexpectedPdu(format!( - "Expected Server Demand Active PDU, got: {:?}", - share_control_pdu.as_short_name() - ))); - }; + server_demand_active.pdu.capability_sets + } else { + return Err(RdpError::UnexpectedPdu(format!( + "Expected Server Demand Active PDU, got: {:?}", + share_control_pdu.as_short_name() + ))); + }; let desktop_sizes = capability_sets .iter() .find(|c| matches!(c, CapabilitySet::Bitmap(_))) @@ -516,13 +450,11 @@ pub fn process_capability_sets( height: config.height, }); - let client_confirm_active = ironrdp::ShareControlPdu::ClientConfirmActive( - user_info::create_client_confirm_active(config, capability_sets)?, - ); - debug!( - "Send Client Confirm Active PDU: {:?}", - client_confirm_active - ); + let client_confirm_active = ironrdp::ShareControlPdu::ClientConfirmActive(user_info::create_client_confirm_active( + config, + capability_sets, + )?); + debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); transport.encode(client_confirm_active, &mut stream)?; Ok(desktop_sizes) @@ -533,9 +465,7 @@ pub fn process_finalization( transport: &mut ShareDataHeaderTransport, initiator_id: u16, ) -> Result<(), RdpError> { - use ironrdp::rdp::{ - ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu, - }; + use ironrdp::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; #[derive(Copy, Clone, PartialEq, Debug)] enum FinalizationOrder { @@ -577,9 +507,7 @@ pub fn process_finalization( debug!("Got Finalization PDU: {:?}", share_data_pdu); finalization_order = match (finalization_order, share_data_pdu) { - (FinalizationOrder::Synchronize, ShareDataPdu::Synchronize(_)) => { - FinalizationOrder::ControlCooperate - } + (FinalizationOrder::Synchronize, ShareDataPdu::Synchronize(_)) => FinalizationOrder::ControlCooperate, ( FinalizationOrder::ControlCooperate, ShareDataPdu::Control(ControlPdu { @@ -595,15 +523,13 @@ pub fn process_finalization( grant_id, control_id, }), - ) if grant_id == initiator_id && control_id == u32::from(SERVER_CHANNEL_ID) => { - FinalizationOrder::Font - } + ) if grant_id == initiator_id && control_id == u32::from(SERVER_CHANNEL_ID) => FinalizationOrder::Font, (FinalizationOrder::Font, ShareDataPdu::FontMap(_)) => FinalizationOrder::Finished, ( order, - ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu( - ErrorInfo::ProtocolIndependentCode(ProtocolIndependentCode::None), - )), + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(ErrorInfo::ProtocolIndependentCode( + ProtocolIndependentCode::None, + ))), ) => order, (_, ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e))) => { return Err(RdpError::ServerError(e.description())); diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 86cbbb9e..5045a881 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -1,33 +1,28 @@ use std::{env, net}; -use ironrdp::{ - gcc::{ - ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, - ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, - RdpVersion, SecureAccessSequence, SupportedColorDepths, - }, - nego::SecurityProtocol, - rdp::{ - capability_sets::{ - Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, - CacheEntry, CaptureFlags, CmdFlags, Codec, CodecProperty, EntropyBits, - FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, Input, - InputFlags, LargePointer, LargePointerSupportFlags, MajorPlatformType, - MinorPlatformType, MultifragmentUpdate, OffscreenBitmapCache, Order, OrderFlags, - OrderSupportExFlags, Pointer, RemoteFxContainer, RfxCaps, RfxCapset, - RfxClientCapsContainer, RfxICap, RfxICapFlags, Sound, SoundFlags, SupportLevel, - SurfaceCommands, VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, - GLYPH_CACHE_NUM, - }, - AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, - ClientInfoPdu, CompressionType, Credentials, ExtendedClientInfo, - ExtendedClientOptionalInfo, SERVER_CHANNEL_ID, - }, - CapabilitySet, ClientConfirmActive, +use ironrdp::gcc::{ + ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, ClientNetworkData, + ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, + SupportedColorDepths, }; +use ironrdp::nego::SecurityProtocol; +use ironrdp::rdp::capability_sets::{ + Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, CacheEntry, CaptureFlags, CmdFlags, + Codec, CodecProperty, EntropyBits, FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, + Input, InputFlags, LargePointer, LargePointerSupportFlags, MajorPlatformType, MinorPlatformType, + MultifragmentUpdate, OffscreenBitmapCache, Order, OrderFlags, OrderSupportExFlags, Pointer, RemoteFxContainer, + RfxCaps, RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, Sound, SoundFlags, SupportLevel, + SurfaceCommands, VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, GLYPH_CACHE_NUM, +}; +use ironrdp::rdp::{ + AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, ClientInfoPdu, + CompressionType, Credentials, ExtendedClientInfo, ExtendedClientOptionalInfo, SERVER_CHANNEL_ID, +}; +use ironrdp::{CapabilitySet, ClientConfirmActive}; use num_traits::ToPrimitive; -use crate::{utils::CodecId, InputConfig, RdpError}; +use crate::utils::CodecId; +use crate::{InputConfig, RdpError}; const SOURCE_DESCRIPTOR: &str = "IRONRDP"; @@ -47,10 +42,7 @@ pub fn create_gcc_blocks( }) } -pub fn create_client_info_pdu( - config: &InputConfig, - routing_addr: &net::SocketAddr, -) -> Result { +pub fn create_client_info_pdu(config: &InputConfig, routing_addr: &net::SocketAddr) -> Result { let security_header = BasicSecurityHeader { flags: BasicSecurityHeaderFlags::INFO_PKT, }; @@ -73,12 +65,7 @@ pub fn create_client_info_pdu( }, address: routing_addr.ip().to_string(), dir: env::current_dir() - .map_err(|e| { - RdpError::UserInfoError(format!( - "Failed to get current directory path: {:?}", - e - )) - })? + .map_err(|e| RdpError::UserInfoError(format!("Failed to get current directory path: {:?}", e)))? .to_string_lossy() .to_string(), optional_data: ExtendedClientOptionalInfo::default(), @@ -95,8 +82,7 @@ pub fn create_client_confirm_active( config: &InputConfig, mut server_capability_sets: Vec, ) -> Result { - server_capability_sets - .retain(|capability_set| matches!(capability_set, CapabilitySet::MultiFragmentUpdate(_))); + server_capability_sets.retain(|capability_set| matches!(capability_set, CapabilitySet::MultiFragmentUpdate(_))); server_capability_sets.extend_from_slice(&[ create_general_capability_set(), create_bitmap_capability_set(config), @@ -133,10 +119,7 @@ pub fn create_client_confirm_active( }) } -fn create_core_data( - config: &InputConfig, - selected_protocol: SecurityProtocol, -) -> Result { +fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) -> Result { Ok(ClientCoreData { version: RdpVersion::V5Plus, desktop_width: config.width, @@ -187,9 +170,7 @@ fn create_security_data() -> ClientSecurityData { } fn create_network_data() -> ClientNetworkData { - ClientNetworkData { - channels: Vec::new(), - } + ClientNetworkData { channels: Vec::new() } } fn create_general_capability_set() -> CapabilitySet { @@ -203,8 +184,7 @@ fn create_general_capability_set() -> CapabilitySet { _ => MajorPlatformType::Unspecified, }, minor_platform_type: MinorPlatformType::Unspecified, - extra_flags: GeneralExtraFlags::FASTPATH_OUTPUT_SUPPORTED - | GeneralExtraFlags::NO_BITMAP_COMPRESSION_HDR, + extra_flags: GeneralExtraFlags::FASTPATH_OUTPUT_SUPPORTED | GeneralExtraFlags::NO_BITMAP_COMPRESSION_HDR, refresh_rect_support: false, suppress_output_support: false, }) @@ -298,9 +278,7 @@ fn create_sound_capability_set() -> CapabilitySet { } fn create_multi_fragment_update_capability_set() -> CapabilitySet { - CapabilitySet::MultiFragmentUpdate(MultifragmentUpdate { - max_request_size: 1024, - }) + CapabilitySet::MultiFragmentUpdate(MultifragmentUpdate { max_request_size: 1024 }) } fn create_large_pointer_capability_set() -> CapabilitySet { @@ -318,15 +296,13 @@ fn create_surface_commands_capability_set() -> CapabilitySet { fn create_bitmap_codes_capability_set() -> CapabilitySet { CapabilitySet::BitmapCodecs(BitmapCodecs(vec![Codec { id: CodecId::RemoteFx.to_u8().unwrap(), - property: CodecProperty::RemoteFx(RemoteFxContainer::ClientContainer( - RfxClientCapsContainer { - capture_flags: CaptureFlags::empty(), - caps_data: RfxCaps(RfxCapset(vec![RfxICap { - flags: RfxICapFlags::empty(), - entropy_bits: EntropyBits::Rlgr3, - }])), - }, - )), + property: CodecProperty::RemoteFx(RemoteFxContainer::ClientContainer(RfxClientCapsContainer { + capture_flags: CaptureFlags::empty(), + caps_data: RfxCaps(RfxCapset(vec![RfxICap { + flags: RfxICapFlags::empty(), + entropy_bits: EntropyBits::Rlgr3, + }])), + })), }])) } diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs index 7365cb05..4d7841b4 100644 --- a/ironrdp_client/src/errors.rs +++ b/ironrdp_client/src/errors.rs @@ -1,7 +1,9 @@ use std::io; use failure::Fail; -use ironrdp::{codecs, dvc::gfx, fast_path::FastPathError, nego, rdp, McsError}; +use ironrdp::dvc::gfx; +use ironrdp::fast_path::FastPathError; +use ironrdp::{codecs, nego, rdp, McsError}; #[derive(Debug, Fail)] pub enum RdpError { @@ -89,8 +91,9 @@ impl From for RdpError { impl From for RdpError { fn from(e: rustls::TLSError) -> Self { match e { - rustls::TLSError::InappropriateHandshakeMessage { .. } - | rustls::TLSError::HandshakeNotComplete => RdpError::TlsHandshakeError(e), + rustls::TLSError::InappropriateHandshakeMessage { .. } | rustls::TLSError::HandshakeNotComplete => { + RdpError::TlsHandshakeError(e) + } _ => RdpError::TlsConnectorError(e), } } diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs index efc0ab1e..cd8d5bfd 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp_client/src/lib.rs @@ -5,14 +5,12 @@ pub mod transport; mod errors; mod utils; -pub use self::{ - active_session::process_active_stage, - connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}, - errors::RdpError, -}; - use ironrdp::{gcc, nego}; +pub use self::active_session::process_active_stage; +pub use self::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; +pub use self::errors::RdpError; + const BUF_STREAM_SIZE: usize = 32 * 1024; pub struct InputConfig { diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 3b82eebe..48cc5c72 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,16 +1,14 @@ mod config; -use std::{ - io::{self, Write}, - net::TcpStream, - sync::Arc, -}; +use std::io::{self, Write}; +use std::net::TcpStream; +use std::sync::Arc; +use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; use log::error; use rustls::Session; use self::config::Config; -use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; mod danger { pub struct NoCertificateVerification {} @@ -79,21 +77,15 @@ fn run(config: Config) -> Result<(), RdpError> { let addr = socket_addr_to_string(config.routing_addr); let mut stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; - let (connection_sequence_result, mut stream) = process_connection_sequence( - &mut stream, - &config.routing_addr, - &config.input, - establish_tls, - )?; + let (connection_sequence_result, mut stream) = + process_connection_sequence(&mut stream, &config.routing_addr, &config.input, establish_tls)?; process_active_stage(&mut stream, config.input, connection_sequence_result)?; Ok(()) } -fn establish_tls( - stream: impl io::Read + io::Write, -) -> Result, RdpError> { +fn establish_tls(stream: impl io::Read + io::Write) -> Result, RdpError> { let mut client_config = rustls::ClientConfig::default(); client_config @@ -109,9 +101,7 @@ fn establish_tls( let cert = tls_stream .sess .get_peer_certificates() - .ok_or(RdpError::TlsConnectorError( - rustls::TLSError::NoCertificatesPresented, - ))?; + .ok_or(RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented))?; let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; Ok(UpgradedStream { diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index 33eeef03..50478e0b 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -1,21 +1,15 @@ mod channels; mod connection; -use ironrdp::rdp::SERVER_CHANNEL_ID; - -pub use self::{ - channels::{ - ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport, - }, - connection::{connect, EarlyUserAuthResult, TsRequestTransport}, -}; - use std::io; use bytes::BytesMut; +use ironrdp::rdp::SERVER_CHANNEL_ID; use ironrdp::{PduParsing, RdpPdu}; use log::warn; +pub use self::channels::{ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport}; +pub use self::connection::{connect, EarlyUserAuthResult, TsRequestTransport}; use crate::RdpError; pub trait Encoder { @@ -95,15 +89,10 @@ impl McsTransport { Self(transport) } - pub fn prepare_data_to_encode( - mcs_pdu: ironrdp::McsPdu, - extra_data: Option>, - ) -> Result { + pub fn prepare_data_to_encode(mcs_pdu: ironrdp::McsPdu, extra_data: Option>) -> Result { let mut mcs_pdu_buff = BytesMut::with_capacity(mcs_pdu.buffer_length()); mcs_pdu_buff.resize(mcs_pdu.buffer_length(), 0x00); - mcs_pdu - .to_buffer(mcs_pdu_buff.as_mut()) - .map_err(RdpError::McsError)?; + mcs_pdu.to_buffer(mcs_pdu_buff.as_mut()).map_err(RdpError::McsError)?; if let Some(data) = extra_data { mcs_pdu_buff.extend_from_slice(&data); @@ -117,11 +106,7 @@ impl Encoder for McsTransport { type Item = BytesMut; type Error = RdpError; - fn encode( - &mut self, - mcs_pdu_buff: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, mcs_pdu_buff: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { self.0.encode(mcs_pdu_buff, &mut stream) } } @@ -184,11 +169,7 @@ impl Encoder for SendDataContextTransport { type Item = Vec; type Error = RdpError; - fn encode( - &mut self, - send_data_context_pdu: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { let send_data_context = ironrdp::mcs::SendDataContext { channel_id: self.channel_ids.channel_id, initiator_id: self.channel_ids.initiator_id, @@ -215,12 +196,10 @@ impl Decoder for SendDataContextTransport { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; match mcs_pdu { - ironrdp::McsPdu::SendDataIndication(send_data_context) => { - Ok(ChannelIdentificators { - initiator_id: send_data_context.initiator_id, - channel_id: send_data_context.channel_id, - }) - } + ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }), ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { Err(RdpError::UnexpectedDisconnection(format!( "Server disconnection reason - {:?}", @@ -246,11 +225,7 @@ pub struct ShareControlHeaderTransport { } impl ShareControlHeaderTransport { - pub fn new( - send_data_context_transport: SendDataContextTransport, - pdu_source: u16, - global_channel_id: u16, - ) -> Self { + pub fn new(send_data_context_transport: SendDataContextTransport, pdu_source: u16, global_channel_id: u16) -> Self { Self { global_channel_id, send_data_context_transport, @@ -264,11 +239,7 @@ impl Encoder for ShareControlHeaderTransport { type Item = ironrdp::ShareControlPdu; type Error = RdpError; - fn encode( - &mut self, - share_control_pdu: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, share_control_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { let share_control_header = ironrdp::ShareControlHeader { share_control_pdu, pdu_source: self.pdu_source, @@ -297,8 +268,8 @@ impl Decoder for ShareControlHeaderTransport { ))); } - let share_control_header = ironrdp::ShareControlHeader::from_buffer(&mut stream) - .map_err(RdpError::ShareControlHeaderError)?; + let share_control_header = + ironrdp::ShareControlHeader::from_buffer(&mut stream).map_err(RdpError::ShareControlHeaderError)?; self.share_id = share_control_header.share_id; if share_control_header.pdu_source != SERVER_CHANNEL_ID { @@ -324,11 +295,7 @@ impl Encoder for ShareDataHeaderTransport { type Item = ironrdp::ShareDataPdu; type Error = RdpError; - fn encode( - &mut self, - share_data_pdu: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { let share_data_header = ironrdp::ShareDataHeader { share_data_pdu, stream_priority: ironrdp::rdp::StreamPriority::Medium, @@ -336,10 +303,8 @@ impl Encoder for ShareDataHeaderTransport { compression_type: ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() }; - self.0.encode( - ironrdp::ShareControlPdu::Data(share_data_header), - &mut stream, - ) + self.0 + .encode(ironrdp::ShareControlPdu::Data(share_data_header), &mut stream) } } @@ -383,11 +348,7 @@ impl Encoder for RdpTransport { type Item = (RdpPdu, BytesMut); type Error = RdpError; - fn encode( - &mut self, - (item, data): Self::Item, - mut stream: impl io::Write, - ) -> Result<(), Self::Error> { + fn encode(&mut self, (item, data): Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { match item { RdpPdu::X224(data) => { data.to_buffer(&mut stream)?; diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp_client/src/transport/channels.rs index 24a5e628..6ed0b51b 100644 --- a/ironrdp_client/src/transport/channels.rs +++ b/ironrdp_client/src/transport/channels.rs @@ -1,6 +1,7 @@ use std::io; -use ironrdp::{rdp::vc, PduParsing}; +use ironrdp::rdp::vc; +use ironrdp::PduParsing; use super::{Decoder, Encoder, SendDataContextTransport}; use crate::RdpError; @@ -33,18 +34,13 @@ impl Encoder for StaticVirtualChannelTransport { type Item = Vec; type Error = RdpError; - fn encode( - &mut self, - mut channel_data_buffer: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, mut channel_data_buffer: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { let channel_header = vc::ChannelPduHeader { total_length: channel_data_buffer.len() as u32, flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, }; - let mut channel_buffer = - Vec::with_capacity(channel_header.buffer_length() + channel_data_buffer.len()); + let mut channel_buffer = Vec::with_capacity(channel_header.buffer_length() + channel_data_buffer.len()); channel_header.to_buffer(&mut channel_buffer)?; channel_buffer.append(&mut channel_data_buffer); @@ -73,10 +69,7 @@ pub struct DynamicVirtualChannelTransport { impl DynamicVirtualChannelTransport { pub fn new(transport: StaticVirtualChannelTransport, drdynvc_id: u16) -> Self { - Self { - transport, - drdynvc_id, - } + Self { transport, drdynvc_id } } pub fn prepare_data_to_encode( @@ -98,11 +91,7 @@ impl Encoder for DynamicVirtualChannelTransport { type Item = Vec; type Error = RdpError; - fn encode( - &mut self, - client_pdu_buff: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, client_pdu_buff: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { self.transport.encode(client_pdu_buff, &mut stream) } } diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index 99583a7b..37a2ddc7 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -17,11 +17,7 @@ impl Encoder for TsRequestTransport { type Item = credssp::TsRequest; type Error = RdpError; - fn encode( - &mut self, - ts_request: Self::Item, - mut stream: impl io::Write, - ) -> Result<(), RdpError> { + fn encode(&mut self, ts_request: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { let mut buf = BytesMut::with_capacity(ts_request.buffer_len() as usize); buf.resize(ts_request.buffer_len() as usize, 0x00); @@ -49,8 +45,7 @@ impl Decoder for TsRequestTransport { buf.resize(ts_request_buffer_length, 0x00); stream.read_exact(&mut buf[MAX_TS_REQUEST_LENGTH_BUFFER_SIZE..])?; - let ts_request = - credssp::TsRequest::from_buffer(buf.as_ref()).map_err(RdpError::TsRequestError)?; + let ts_request = credssp::TsRequest::from_buffer(buf.as_ref()).map_err(RdpError::TsRequestError)?; Ok(ts_request) } @@ -63,8 +58,8 @@ impl EarlyUserAuthResult { let mut buf = BytesMut::with_capacity(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE); buf.resize(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE, 0x00); stream.read_exact(&mut buf)?; - let early_user_auth_result = credssp::EarlyUserAuthResult::from_buffer(buf.as_ref()) - .map_err(RdpError::EarlyUserAuthResultError)?; + let early_user_auth_result = + credssp::EarlyUserAuthResult::from_buffer(buf.as_ref()).map_err(RdpError::EarlyUserAuthResultError)?; Ok(early_user_auth_result) } @@ -99,10 +94,7 @@ fn process_negotiation( protocol, src_ref, }; - debug!( - "Send X.224 Connection Request PDU: {:?}", - connection_request - ); + debug!("Send X.224 Connection Request PDU: {:?}", connection_request); connection_request.to_buffer(&mut stream)?; stream.flush()?; diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index ca05766f..577b8bfb 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -1,4 +1,5 @@ -use std::{collections::HashMap, hash::Hash}; +use std::collections::HashMap; +use std::hash::Hash; use num_derive::{FromPrimitive, ToPrimitive}; diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 00000000..2d87bb09 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,4 @@ +max_width = 120 +reorder_imports = true +imports_granularity = "Module" +group_imports = "StdExternalCrate" From 142cdc07aed91f4783b250d87b4daa032099938a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:00:07 -0400 Subject: [PATCH 0069/1273] ci: migrate to GitHub Actions --- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++ ci/build.sh | 13 --------- 2 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 ci/build.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..ef8e172b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + types: [ opened, synchronize, reopened ] + workflow_dispatch: + +jobs: + formatting: + name: Check formatting + runs-on: ubuntu-18.04 + + steps: + - uses: actions/checkout@v2 + + - name: Check formatting + shell: pwsh + run: | + Write-Host "Check formatting" + cargo fmt --all -- --check + + if ($LastExitCode -eq 1) { + throw "Bad formatting, please run 'cargo +stable fmt --all'" + } + + lints: + name: Lints + runs-on: ubuntu-18.04 + needs: formatting + + steps: + - uses: actions/checkout@v2 + + - run: rustup component add clippy + + - name: Check clippy + run: cargo clippy --workspace --all-features + + tests: + name: Tests [${{ matrix.os }}] + runs-on: ${{ matrix.runner }} + needs: formatting + strategy: + fail-fast: false + matrix: + os: [ windows, linux ] + include: + - os: windows + runner: windows-2019 + - os: linux + runner: ubuntu-18.04 + + steps: + - uses: actions/checkout@v2 + + - name: Test [${{ matrix.os }}] + run: cargo test --workspace --all-features diff --git a/ci/build.sh b/ci/build.sh deleted file mode 100644 index 314cc6ce..00000000 --- a/ci/build.sh +++ /dev/null @@ -1,13 +0,0 @@ -set -ex - -cargo fmt --all -- --check -cargo clippy --all-targets --all-features -- -D warnings - -cargo build -cargo build --release - -cargo build --all --exclude=ironrdp_client --target wasm32-unknown-unknown -cargo build --all --exclude=ironrdp_client --target wasm32-unknown-unknown --release - -cargo test -cargo test --release From 816a665e93a40e9cb5236f768ae47d1d6710a546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:00:26 -0400 Subject: [PATCH 0070/1273] ci: add dependabot config It is enabled only for security updates. --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..2aea547b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "cargo" + directory: "/" + schedule: + interval: "weekly" + assignees: + - "CBenoit" + # Disable version updates, we only want security updates. + open-pull-requests-limit: 0 From d8f3c5dfb2b931eaaac9b869856970797719ff13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:06:53 -0400 Subject: [PATCH 0071/1273] build: update to latest Rust edition (2021) --- ironrdp/Cargo.toml | 2 +- ironrdp/src/rdp/vc/dvc/gfx/test.rs | 4 ++-- ironrdp_client/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 985d83f4..589f787e 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ironrdp" version = "0.4.2" -edition = "2018" +edition = "2021" readme = "../README.md" license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" diff --git a/ironrdp/src/rdp/vc/dvc/gfx/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/test.rs index a1922623..6a5c0e78 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/test.rs @@ -11,9 +11,9 @@ const FRAME_ACKNOWLEDGE_HEADER_BUFFER: [u8; 8] = [0x0d, 0x00, 0x00, 0x00, 0x14, lazy_static! { static ref HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER: Vec = - { [&WIRE_TO_SURFACE_1_HEADER_BUFFER[..], &WIRE_TO_SURFACE_1_BUFFER[..],].concat() }; + [&WIRE_TO_SURFACE_1_HEADER_BUFFER[..], &WIRE_TO_SURFACE_1_BUFFER[..],].concat(); static ref HEADER_WITH_FRAME_ACKNOWLEDGE_BUFFER: Vec = - { [&FRAME_ACKNOWLEDGE_HEADER_BUFFER[..], &FRAME_ACKNOWLEDGE_BUFFER[..],].concat() }; + [&FRAME_ACKNOWLEDGE_HEADER_BUFFER[..], &FRAME_ACKNOWLEDGE_BUFFER[..],].concat(); static ref HEADER_WITH_WIRE_TO_SURFACE_1: ServerPdu = ServerPdu::WireToSurface1(WIRE_TO_SURFACE_1.clone()); static ref HEADER_WITH_FRAME_ACKNOWLEDGE: ClientPdu = ClientPdu::FrameAcknowledge(FRAME_ACKNOWLEDGE.clone()); } diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index c4d20e8c..24ee64de 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ironrdp_client" version = "0.4.2" -edition = "2018" +edition = "2021" readme = "README.md" license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" From 261630f03c9f3e72758d1f868325d66d1b01f732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:08:01 -0400 Subject: [PATCH 0072/1273] build: add rust-toolchain.toml --- rust-toolchain.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..948d27da --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.60.0" From 2837d104bfac07610e3c7852013202da0bc948e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:10:35 -0400 Subject: [PATCH 0073/1273] ci: add rustfmt component if necessary --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef8e172b..042c9eb3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,8 @@ jobs: steps: - uses: actions/checkout@v2 + - run: rustup component add rustfmt + - name: Check formatting shell: pwsh run: | From e19b0af5273cb01796d70ffc70cb526bf4ebf501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:13:20 -0400 Subject: [PATCH 0074/1273] style: fix typo --- ironrdp/src/codecs/rfx.rs | 19 +++++++-------- ironrdp/src/codecs/rfx/quantization.rs | 8 +++---- ironrdp/src/gcc.rs | 22 ++++++++++-------- ironrdp/src/gcc/network_data/test.rs | 32 +++++++++++++------------- ironrdp/src/gcc/test.rs | 4 ++-- ironrdp/src/input.rs | 22 ++++++++++-------- ironrdp/src/mcs.rs | 12 ++++++---- ironrdp/src/rdp.rs | 17 +++++++------- ironrdp/src/rdp/capability_sets.rs | 17 +++++++------- ironrdp/src/rdp/server_license.rs | 25 ++++++++++---------- ironrdp/src/rdp/session_info.rs | 15 ++++++------ ironrdp/src/rdp/vc/dvc.rs | 27 +++++++++++----------- ironrdp_client/src/lib.rs | 8 +++---- ironrdp_client/src/transport.rs | 9 ++++---- 14 files changed, 125 insertions(+), 112 deletions(-) diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index 5dc05f8d..aa276bce 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -1,11 +1,3 @@ -pub mod color_conversion; -pub mod dwt; -pub mod image_processing; -pub mod quantization; -pub mod rectangles_processing; -pub mod rlgr; -pub mod subband_reconstruction; - mod data_messages; mod header_messages; #[cfg(test)] @@ -18,13 +10,22 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use crate::{impl_from_error, PduBufferParsing, PduParsing}; + +pub mod color_conversion; +pub mod dwt; +pub mod image_processing; +pub mod quantization; +pub mod rectangles_processing; +pub mod rlgr; +pub mod subband_reconstruction; + pub use self::data_messages::{ ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, RfxRectangle, Tile, TileSetPdu, }; pub use self::header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}; pub use self::rlgr::RlgrError; -use crate::{impl_from_error, PduBufferParsing, PduParsing}; const BLOCK_HEADER_SIZE: usize = 6; const CODEC_CHANNEL_HEADER_SIZE: usize = 2; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp/src/codecs/rfx/quantization.rs index da66e8c0..17559e74 100644 --- a/ironrdp/src/codecs/rfx/quantization.rs +++ b/ironrdp/src/codecs/rfx/quantization.rs @@ -43,8 +43,8 @@ mod tests { #[test] fn decode_does_not_change_buffer_with_null_quant_values() { - let mut buffer = QUANTIZIED_BUFFER; - let expected = QUANTIZIED_BUFFER; + let mut buffer = QUANTIZED_BUFFER; + let expected = QUANTIZED_BUFFER; let quant = Quant { ll3: 0, lh3: 0, @@ -64,7 +64,7 @@ mod tests { #[test] fn decode_works_with_not_empty_quant_values() { - let mut buffer = QUANTIZIED_BUFFER; + let mut buffer = QUANTIZED_BUFFER; let expected = DEQUANTIZED_BUFFER.as_ref(); let quant = Quant { ll3: 6, @@ -83,7 +83,7 @@ mod tests { assert_eq!(expected, buffer.as_ref()); } - const QUANTIZIED_BUFFER: [i16; 4096] = [ + const QUANTIZED_BUFFER: [i16; 4096] = [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, diff --git a/ironrdp/src/gcc.rs b/ironrdp/src/gcc.rs index 8a61ee30..0eae2003 100644 --- a/ironrdp/src/gcc.rs +++ b/ironrdp/src/gcc.rs @@ -1,8 +1,18 @@ -pub mod conference_create; -pub(crate) mod monitor_data; +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; + #[cfg(test)] pub mod test; +pub mod conference_create; +pub(crate) mod monitor_data; + mod cluster_data; mod core_data; mod message_channel_data; @@ -11,13 +21,6 @@ mod multi_transport_channel_data; mod network_data; mod security_data; -use std::io; - -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; -use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; - pub use self::cluster_data::{ClientClusterData, ClusterDataError, RedirectionFlags, RedirectionVersion}; pub use self::conference_create::{ConferenceCreateRequest, ConferenceCreateResponse}; pub use self::core_data::client::{ @@ -40,7 +43,6 @@ pub use self::network_data::{Channel, ChannelOptions, ClientNetworkData, Network pub use self::security_data::{ ClientSecurityData, EncryptionLevel, EncryptionMethod, SecurityDataError, ServerSecurityData, }; -use crate::{impl_from_error, PduParsing}; macro_rules! user_header_try { ($e:expr) => { diff --git a/ironrdp/src/gcc/network_data/test.rs b/ironrdp/src/gcc/network_data/test.rs index 68c2bf47..8e9af28e 100644 --- a/ironrdp/src/gcc/network_data/test.rs +++ b/ironrdp/src/gcc/network_data/test.rs @@ -28,7 +28,7 @@ const SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID_BUFFER: [u8; 4] = [ ]; lazy_static! { - pub static ref CLIENT_NETOWORK_DATA_WITH_CHANNELS: ClientNetworkData = ClientNetworkData { + pub static ref CLIENT_NETWORK_DATA_WITH_CHANNELS: ClientNetworkData = ClientNetworkData { channels: vec![ Channel { name: String::from("rdpdr"), @@ -47,12 +47,12 @@ lazy_static! { }, ], }; - pub static ref SERVER_NETOWORK_DATA_WITH_CHANNELS_ID: ServerNetworkData = ServerNetworkData { + pub static ref SERVER_NETWORK_DATA_WITH_CHANNELS_ID: ServerNetworkData = ServerNetworkData { io_channel: 1003, channel_ids: vec![1004, 1005, 1006], }; - static ref CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS: ClientNetworkData = ClientNetworkData { channels: Vec::new() }; - static ref SERVER_NETOWORK_DATA_WITHOUT_CHANNELS_ID: ServerNetworkData = ServerNetworkData { + static ref CLIENT_NETWORK_DATA_WITHOUT_CHANNELS: ClientNetworkData = ClientNetworkData { channels: Vec::new() }; + static ref SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID: ServerNetworkData = ServerNetworkData { io_channel: 1003, channel_ids: Vec::new(), }; @@ -63,7 +63,7 @@ fn from_buffer_correctly_parses_client_network_data_without_channels() { let buffer = CLIENT_NETWORK_DATA_WITHOUT_CHANNELS_BUFFER.as_ref(); assert_eq!( - *CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS, + *CLIENT_NETWORK_DATA_WITHOUT_CHANNELS, ClientNetworkData::from_buffer(buffer).unwrap() ); } @@ -73,14 +73,14 @@ fn from_buffer_correctly_parses_client_network_data_with_channels() { let buffer = CLIENT_NETWORK_DATA_WITH_CHANNELS_BUFFER.as_ref(); assert_eq!( - *CLIENT_NETOWORK_DATA_WITH_CHANNELS, + *CLIENT_NETWORK_DATA_WITH_CHANNELS, ClientNetworkData::from_buffer(buffer).unwrap() ); } #[test] fn to_buffer_correctly_serializes_client_network_data_without_channels() { - let data = CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS.clone(); + let data = CLIENT_NETWORK_DATA_WITHOUT_CHANNELS.clone(); let expected_buffer = CLIENT_NETWORK_DATA_WITHOUT_CHANNELS_BUFFER; let mut buff = Vec::new(); @@ -91,7 +91,7 @@ fn to_buffer_correctly_serializes_client_network_data_without_channels() { #[test] fn to_buffer_correctly_serializes_client_network_data_with_channels() { - let data = CLIENT_NETOWORK_DATA_WITH_CHANNELS.clone(); + let data = CLIENT_NETWORK_DATA_WITH_CHANNELS.clone(); let expected_buffer = CLIENT_NETWORK_DATA_WITH_CHANNELS_BUFFER; let mut buff = Vec::new(); @@ -102,7 +102,7 @@ fn to_buffer_correctly_serializes_client_network_data_with_channels() { #[test] fn buffer_length_is_correct_for_client_network_data_without_channels() { - let data = CLIENT_NETOWORK_DATA_WITHOUT_CHANNELS.clone(); + let data = CLIENT_NETWORK_DATA_WITHOUT_CHANNELS.clone(); let expected_buffer_len = CLIENT_NETWORK_DATA_WITHOUT_CHANNELS_BUFFER.len(); let len = data.buffer_length(); @@ -112,7 +112,7 @@ fn buffer_length_is_correct_for_client_network_data_without_channels() { #[test] fn buffer_length_is_correct_for_client_network_data_with_channels() { - let data = CLIENT_NETOWORK_DATA_WITH_CHANNELS.clone(); + let data = CLIENT_NETWORK_DATA_WITH_CHANNELS.clone(); let expected_buffer_len = CLIENT_NETWORK_DATA_WITH_CHANNELS_BUFFER.len(); let len = data.buffer_length(); @@ -125,7 +125,7 @@ fn from_buffer_correctly_parses_server_network_data_without_channels_id() { let buffer = SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID_BUFFER.as_ref(); assert_eq!( - *SERVER_NETOWORK_DATA_WITHOUT_CHANNELS_ID, + *SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID, ServerNetworkData::from_buffer(buffer).unwrap() ); } @@ -135,14 +135,14 @@ fn from_buffer_correctly_parses_server_network_data_with_channels_id() { let buffer = SERVER_NETWORK_DATA_WITH_CHANNELS_ID_BUFFER.as_ref(); assert_eq!( - *SERVER_NETOWORK_DATA_WITH_CHANNELS_ID, + *SERVER_NETWORK_DATA_WITH_CHANNELS_ID, ServerNetworkData::from_buffer(buffer).unwrap() ); } #[test] fn to_buffer_correctly_serializes_server_network_data_without_channels_id() { - let data = SERVER_NETOWORK_DATA_WITHOUT_CHANNELS_ID.clone(); + let data = SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID.clone(); let expected_buffer = SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID_BUFFER; let mut buff = Vec::new(); @@ -153,7 +153,7 @@ fn to_buffer_correctly_serializes_server_network_data_without_channels_id() { #[test] fn to_buffer_correctly_serializes_server_network_data_with_channels_id() { - let data = SERVER_NETOWORK_DATA_WITH_CHANNELS_ID.clone(); + let data = SERVER_NETWORK_DATA_WITH_CHANNELS_ID.clone(); let expected_buffer = SERVER_NETWORK_DATA_WITH_CHANNELS_ID_BUFFER; let mut buff = Vec::new(); @@ -164,7 +164,7 @@ fn to_buffer_correctly_serializes_server_network_data_with_channels_id() { #[test] fn buffer_length_is_correct_for_server_network_data_without_channels_id() { - let data = SERVER_NETOWORK_DATA_WITHOUT_CHANNELS_ID.clone(); + let data = SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID.clone(); let expected_buffer_len = SERVER_NETWORK_DATA_WITHOUT_CHANNELS_ID_BUFFER.len(); let len = data.buffer_length(); @@ -174,7 +174,7 @@ fn buffer_length_is_correct_for_server_network_data_without_channels_id() { #[test] fn buffer_length_is_correct_for_server_network_data_with_channels_id() { - let data = SERVER_NETOWORK_DATA_WITH_CHANNELS_ID.clone(); + let data = SERVER_NETWORK_DATA_WITH_CHANNELS_ID.clone(); let expected_buffer_len = SERVER_NETWORK_DATA_WITH_CHANNELS_ID_BUFFER.len(); let len = data.buffer_length(); diff --git a/ironrdp/src/gcc/test.rs b/ironrdp/src/gcc/test.rs index bb47e5c6..99cc655e 100644 --- a/ironrdp/src/gcc/test.rs +++ b/ironrdp/src/gcc/test.rs @@ -66,7 +66,7 @@ lazy_static! { pub static ref CLIENT_GCC_WITHOUT_OPTIONAL_FIELDS: ClientGccBlocks = ClientGccBlocks { core: core_data::client::test::CLIENT_OPTIONAL_CORE_DATA_TO_SERVER_SELECTED_PROTOCOL.clone(), security: security_data::test::CLIENT_SECURITY_DATA.clone(), - network: Some(network_data::test::CLIENT_NETOWORK_DATA_WITH_CHANNELS.clone()), + network: Some(network_data::test::CLIENT_NETWORK_DATA_WITH_CHANNELS.clone()), cluster: None, monitor: None, message_channel: None, @@ -88,7 +88,7 @@ lazy_static! { }; pub static ref SERVER_GCC_WITHOUT_OPTIONAL_FIELDS: ServerGccBlocks = ServerGccBlocks { core: core_data::server::test::SERVER_CORE_DATA_TO_FLAGS.clone(), - network: network_data::test::SERVER_NETOWORK_DATA_WITH_CHANNELS_ID.clone(), + network: network_data::test::SERVER_NETWORK_DATA_WITH_CHANNELS_ID.clone(), security: security_data::test::SERVER_SECURITY_DATA_WITH_OPTIONAL_FIELDS.clone(), message_channel: None, multi_transport_channel: None, diff --git a/ironrdp/src/input.rs b/ironrdp/src/input.rs index 0d75a6ea..baf97952 100644 --- a/ironrdp/src/input.rs +++ b/ironrdp/src/input.rs @@ -1,12 +1,3 @@ -pub mod mouse; -pub mod mouse_x; -pub mod scan_code; -pub mod sync; -#[cfg(test)] -mod tests; -pub mod unicode; -pub mod unused; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -14,13 +5,24 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use crate::{impl_from_error, PduParsing}; + +#[cfg(test)] +mod tests; + +pub mod mouse; +pub mod mouse_x; +pub mod scan_code; +pub mod sync; +pub mod unicode; +pub mod unused; + pub use self::mouse::MousePdu; pub use self::mouse_x::MouseXPdu; pub use self::scan_code::ScanCodePdu; pub use self::sync::SyncPdu; pub use self::unicode::UnicodePdu; pub use self::unused::UnusedPdu; -use crate::{impl_from_error, PduParsing}; #[derive(Debug, Clone, PartialEq)] pub struct InputEventPdu(pub Vec); diff --git a/ironrdp/src/mcs.rs b/ironrdp/src/mcs.rs index a3b39e81..7c40f302 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp/src/mcs.rs @@ -1,7 +1,3 @@ -mod connect_initial; -#[cfg(test)] -mod test; - use std::io; use byteorder::{ReadBytesExt, WriteBytesExt}; @@ -9,10 +5,16 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -pub use self::connect_initial::{ConnectInitial, ConnectResponse, DomainParameters}; use crate::gcc::GccError; use crate::{impl_from_error, per, PduParsing}; +#[cfg(test)] +mod test; + +mod connect_initial; + +pub use self::connect_initial::{ConnectInitial, ConnectResponse, DomainParameters}; + pub const RESULT_ENUM_LENGTH: u8 = 16; const BASE_CHANNEL_ID: u16 = 1001; diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 141764ff..05b333b1 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -1,3 +1,12 @@ +use std::io; + +use failure::Fail; + +use self::client_info::ClientInfoError; +use self::finalization_messages::FinalizationMessagesError; +use self::server_license::ServerLicenseError; +use crate::{impl_from_error, PduParsing}; + #[cfg(test)] pub mod test; @@ -11,20 +20,14 @@ mod finalization_messages; mod headers; mod server_error_info; -use std::io; - -use failure::Fail; - pub use self::capability_sets::{ CapabilitySet, CapabilitySetsError, ClientConfirmActive, DemandActive, ServerDemandActive, VirtualChannel, SERVER_CHANNEL_ID, }; -use self::client_info::ClientInfoError; pub use self::client_info::{ AddressFamily, ClientInfo, ClientInfoFlags, CompressionType, Credentials, DayOfWeek, DayOfWeekOccurrence, ExtendedClientInfo, ExtendedClientOptionalInfo, Month, PerformanceFlags, SystemTime, TimezoneInfo, }; -use self::finalization_messages::FinalizationMessagesError; pub use self::finalization_messages::{ ControlAction, ControlPdu, FontPdu, MonitorLayoutPdu, SequenceFlags, SynchronizePdu, }; @@ -36,8 +39,6 @@ pub use self::server_error_info::{ ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, RdpSpecificCode, ServerSetErrorInfoError, ServerSetErrorInfoPdu, }; -use self::server_license::ServerLicenseError; -use crate::{impl_from_error, PduParsing}; #[derive(Debug, Clone, PartialEq)] pub struct ClientInfoPdu { diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index ec3f9680..1b23333c 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -1,3 +1,12 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; + #[cfg(test)] pub mod test; @@ -18,13 +27,6 @@ mod sound; mod surface_commands; mod virtual_channel; -use std::io; - -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; -use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; - pub use self::bitmap::{Bitmap, BitmapDrawingFlags}; pub use self::bitmap_cache::{ BitmapCache, BitmapCacheRev2, CacheEntry, CacheFlags, CellInfo, BITMAP_CACHE_ENTRIES_NUM, @@ -46,7 +48,6 @@ pub use self::pointer::Pointer; pub use self::sound::{Sound, SoundFlags}; pub use self::surface_commands::{CmdFlags, SurfaceCommands}; pub use self::virtual_channel::{VirtualChannel, VirtualChannelFlags}; -use crate::{impl_from_error, PduParsing}; pub const SERVER_CHANNEL_ID: u16 = 0x03ea; diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 0a8f0bc4..23296288 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -1,13 +1,3 @@ -#[cfg(test)] -pub mod test; - -mod client_new_license_request; -mod client_platform_challenge_response; -mod licensing_error_message; -mod server_license_request; -mod server_platform_challenge; -mod server_upgrade_license; - use std::io; use bitflags::bitflags; @@ -18,14 +8,25 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use ring::digest; +use crate::rdp::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; +use crate::{impl_from_error, PduParsing}; + +#[cfg(test)] +pub mod test; + +mod client_new_license_request; +mod client_platform_challenge_response; +mod licensing_error_message; +mod server_license_request; +mod server_platform_challenge; +mod server_upgrade_license; + pub use self::client_new_license_request::{ClientNewLicenseRequest, PLATFORM_ID}; pub use self::client_platform_challenge_response::ClientPlatformChallengeResponse; pub use self::licensing_error_message::{LicenseErrorCode, LicensingErrorMessage, LicensingStateTransition}; pub use self::server_license_request::{InitialMessageType, InitialServerLicenseMessage, ServerLicenseRequest}; pub use self::server_platform_challenge::ServerPlatformChallenge; pub use self::server_upgrade_license::ServerUpgradeLicense; -use crate::rdp::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; -use crate::{impl_from_error, PduParsing}; pub const PREAMBLE_SIZE: usize = 4; pub const PREMASTER_SECRET_SIZE: usize = 48; diff --git a/ironrdp/src/rdp/session_info.rs b/ironrdp/src/rdp/session_info.rs index 63949594..9f343190 100644 --- a/ironrdp/src/rdp/session_info.rs +++ b/ironrdp/src/rdp/session_info.rs @@ -1,9 +1,3 @@ -#[cfg(test)] -mod tests; - -mod logon_extended; -mod logon_info; - use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -11,12 +5,19 @@ use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use crate::{impl_from_error, PduParsing}; + +#[cfg(test)] +mod tests; + +mod logon_extended; +mod logon_info; + pub use self::logon_extended::{ LogonErrorNotificationData, LogonErrorNotificationType, LogonErrorsInfo, LogonExFlags, LogonInfoExtended, ServerAutoReconnect, }; pub use self::logon_info::{LogonInfo, LogonInfoVersion1, LogonInfoVersion2}; -use crate::{impl_from_error, PduParsing}; const INFO_TYPE_FIELD_SIZE: usize = 4; const PLAIN_NOTIFY_PADDING_SIZE: usize = 576; diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index fec477a1..f3be0dc9 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -1,14 +1,3 @@ -pub mod gfx; - -#[cfg(test)] -mod tests; - -mod capabilities; -mod close; -mod create; -mod data; -mod data_first; - use std::collections::HashMap; use std::{io, mem}; @@ -17,13 +6,25 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use super::ChannelError; +use crate::PduParsing; + +#[cfg(test)] +mod tests; + +pub mod gfx; + +mod capabilities; +mod close; +mod create; +mod data; +mod data_first; + pub use self::capabilities::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}; pub use self::close::ClosePdu; pub use self::create::{CreateRequestPdu, CreateResponsePdu, DVC_CREATION_STATUS_NO_LISTENER, DVC_CREATION_STATUS_OK}; pub use self::data::DataPdu; pub use self::data_first::DataFirstPdu; -use super::ChannelError; -use crate::PduParsing; const HEADER_SIZE: usize = 1; const PDU_WITH_DATA_MAX_SIZE: usize = 1600; diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs index cd8d5bfd..6efd4939 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp_client/src/lib.rs @@ -1,12 +1,12 @@ -pub mod active_session; -pub mod connection_sequence; -pub mod transport; - mod errors; mod utils; use ironrdp::{gcc, nego}; +pub mod active_session; +pub mod connection_sequence; +pub mod transport; + pub use self::active_session::process_active_stage; pub use self::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; pub use self::errors::RdpError; diff --git a/ironrdp_client/src/transport.rs b/ironrdp_client/src/transport.rs index 50478e0b..2690949a 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp_client/src/transport.rs @@ -1,6 +1,3 @@ -mod channels; -mod connection; - use std::io; use bytes::BytesMut; @@ -8,9 +5,13 @@ use ironrdp::rdp::SERVER_CHANNEL_ID; use ironrdp::{PduParsing, RdpPdu}; use log::warn; +use crate::RdpError; + +mod channels; +mod connection; + pub use self::channels::{ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport}; pub use self::connection::{connect, EarlyUserAuthResult, TsRequestTransport}; -use crate::RdpError; pub trait Encoder { type Item; From fd97d7eaf36680491829f741f5ed8fb27c3faf6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 13:32:17 -0400 Subject: [PATCH 0075/1273] ci: use checkout@v3 --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 042c9eb3..c3d3d1a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-18.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: rustup component add rustfmt @@ -34,7 +34,7 @@ jobs: needs: formatting steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: rustup component add clippy @@ -56,7 +56,7 @@ jobs: runner: ubuntu-18.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Test [${{ matrix.os }}] run: cargo test --workspace --all-features From 0ae846b6c3196496fb3ff049b7b896dec484c120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 15 Apr 2022 14:29:28 -0400 Subject: [PATCH 0076/1273] refactor: use new type for RDP version instead of enum We don't actually need strictness of enums for this. In fact, in this case, a new type pattern is more robust because we are trying to allow as much as we can. This prevents issues such as the one described in this PR: https://github.com/Devolutions/IronRDP/pull/30 --- ironrdp/Cargo.toml | 1 + ironrdp/src/gcc/core_data.rs | 51 +++++++++++-------- ironrdp/src/gcc/core_data/client.rs | 21 +++++--- ironrdp/src/gcc/core_data/client/test.rs | 2 +- ironrdp/src/gcc/core_data/server.rs | 6 +-- ironrdp/src/gcc/core_data/server/test.rs | 6 +-- .../src/connection_sequence/user_info.rs | 2 +- 7 files changed, 54 insertions(+), 35 deletions(-) diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 589f787e..979a8e56 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -28,3 +28,4 @@ num-integer = "0.1.44" num-traits = "0.2.14" ring = "0.16.20" x509-parser = "0.13.2" +tap = "1.0.1" diff --git a/ironrdp/src/gcc/core_data.rs b/ironrdp/src/gcc/core_data.rs index 6e63ad48..fb9d768b 100644 --- a/ironrdp/src/gcc/core_data.rs +++ b/ironrdp/src/gcc/core_data.rs @@ -4,32 +4,43 @@ pub mod server; use std::io; use failure::Fail; -use num_derive::{FromPrimitive, ToPrimitive}; use crate::impl_from_error; const VERSION_SIZE: usize = 4; -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] -pub enum RdpVersion { - V4 = 0x0008_0001, - V5Plus = 0x0008_0004, - V10 = 0x0008_0005, - V10_1 = 0x0008_0006, - V10_2 = 0x0008_0007, - V10_3 = 0x0008_0008, - V10_4 = 0x0008_0009, - V10_5 = 0x0008_000A, - V10_6 = 0x0008_000B, - V10_7 = 0x0008_000C, - V10_8 = 0x0008_000D, +#[repr(transparent)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct RdpVersion(pub u32); - // future proofing - V10_9 = 0x0008_000E, - V10_10 = 0x0008_000F, - V10_11 = 0x0008_0010, - V10_12 = 0x0008_0011, - VUnknown = 0x0000_0000, +impl From for RdpVersion { + fn from(value: u32) -> Self { + Self(value) + } +} + +impl From for u32 { + fn from(version: RdpVersion) -> Self { + version.0 + } +} + +impl RdpVersion { + pub const V4: Self = Self(0x0008_0001); + pub const V5_PLUS: Self = Self(0x0008_0004); + pub const V10: Self = Self(0x0008_0005); + pub const V10_1: Self = Self(0x0008_0006); + pub const V10_2: Self = Self(0x0008_0007); + pub const V10_3: Self = Self(0x0008_0008); + pub const V10_4: Self = Self(0x0008_0009); + pub const V10_5: Self = Self(0x0008_000A); + pub const V10_6: Self = Self(0x0008_000B); + pub const V10_7: Self = Self(0x0008_000C); + pub const V10_8: Self = Self(0x0008_000D); + pub const V10_9: Self = Self(0x0008_000E); + pub const V10_10: Self = Self(0x0008_000F); + pub const V10_11: Self = Self(0x0008_0010); + pub const V10_12: Self = Self(0x0008_0011); } #[derive(Debug, Fail)] diff --git a/ironrdp/src/gcc/core_data/client.rs b/ironrdp/src/gcc/core_data/client.rs index 35d2edb9..f501a4b2 100644 --- a/ironrdp/src/gcc/core_data/client.rs +++ b/ironrdp/src/gcc/core_data/client.rs @@ -7,6 +7,7 @@ use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use tap::Pipe as _; use super::{CoreDataError, RdpVersion, VERSION_SIZE}; use crate::{nego, try_read_optional, try_write_optional, utils, PduParsing}; @@ -81,12 +82,16 @@ impl PduParsing for ClientCoreData { type Error = CoreDataError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let version = RdpVersion::from_u32(buffer.read_u32::()?).unwrap_or(RdpVersion::VUnknown); + let version = buffer.read_u32::()?.pipe(RdpVersion); let desktop_width = buffer.read_u16::()?; let desktop_height = buffer.read_u16::()?; - let color_depth = - ColorDepth::from_u16(buffer.read_u16::()?).ok_or(CoreDataError::InvalidColorDepth)?; - let sec_access_sequence = SecureAccessSequence::from_u16(buffer.read_u16::()?) + let color_depth = buffer + .read_u16::()? + .pipe(ColorDepth::from_u16) + .ok_or(CoreDataError::InvalidColorDepth)?; + let sec_access_sequence = buffer + .read_u16::()? + .pipe(SecureAccessSequence::from_u16) .ok_or(CoreDataError::InvalidSecureAccessSequence)?; let keyboard_layout = buffer.read_u32::()?; let client_build = buffer.read_u32::()?; @@ -97,8 +102,10 @@ impl PduParsing for ClientCoreData { .trim_end_matches('\u{0}') .into(); - let keyboard_type = - KeyboardType::from_u32(buffer.read_u32::()?).ok_or(CoreDataError::InvalidKeyboardType)?; + let keyboard_type = buffer + .read_u32::()? + .pipe(KeyboardType::from_u32) + .ok_or(CoreDataError::InvalidKeyboardType)?; let keyboard_subtype = buffer.read_u32::()?; let keyboard_functional_keys_count = buffer.read_u32::()?; @@ -133,7 +140,7 @@ impl PduParsing for ClientCoreData { let mut ime_file_name_buffer = utils::string_to_utf16(self.ime_file_name.as_ref()); ime_file_name_buffer.resize(IME_FILE_NAME_SIZE - 2, 0); - buffer.write_u32::(self.version.to_u32().unwrap())?; + buffer.write_u32::(self.version.0)?; buffer.write_u16::(self.desktop_width)?; buffer.write_u16::(self.desktop_height)?; buffer.write_u16::(self.color_depth.to_u16().unwrap())?; diff --git a/ironrdp/src/gcc/core_data/client/test.rs b/ironrdp/src/gcc/core_data/client/test.rs index 615b0298..786b49ff 100644 --- a/ironrdp/src/gcc/core_data/client/test.rs +++ b/ironrdp/src/gcc/core_data/client/test.rs @@ -53,7 +53,7 @@ const CLIENT_OPTIONAL_CORE_DATA_FROM_DESKTOP_PHYSICAL_WIDTH_TO_DEVICE_SCALE_FACT lazy_static! { pub static ref CLIENT_CORE_DATA_WITHOUT_OPTIONAL_FIELDS: ClientCoreData = ClientCoreData { - version: RdpVersion::V5Plus, + version: RdpVersion::V5_PLUS, desktop_width: 1280, desktop_height: 1024, color_depth: ColorDepth::Bpp4, diff --git a/ironrdp/src/gcc/core_data/server.rs b/ironrdp/src/gcc/core_data/server.rs index 3c021e5d..360ce2c9 100644 --- a/ironrdp/src/gcc/core_data/server.rs +++ b/ironrdp/src/gcc/core_data/server.rs @@ -5,7 +5,7 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use num_traits::{FromPrimitive, ToPrimitive}; +use tap::Pipe as _; use super::{CoreDataError, RdpVersion, VERSION_SIZE}; use crate::{nego, try_read_optional, try_write_optional, PduParsing}; @@ -23,14 +23,14 @@ impl PduParsing for ServerCoreData { type Error = CoreDataError; fn from_buffer(mut buffer: impl io::Read) -> Result { - let version = RdpVersion::from_u32(buffer.read_u32::()?).unwrap_or(RdpVersion::VUnknown); + let version = buffer.read_u32::()?.pipe(RdpVersion); let optional_data = ServerCoreOptionalData::from_buffer(&mut buffer)?; Ok(Self { version, optional_data }) } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - buffer.write_u32::(self.version.to_u32().unwrap())?; + buffer.write_u32::(self.version.0)?; self.optional_data.to_buffer(&mut buffer) } diff --git a/ironrdp/src/gcc/core_data/server/test.rs b/ironrdp/src/gcc/core_data/server/test.rs index 38d37eee..134ade8a 100644 --- a/ironrdp/src/gcc/core_data/server/test.rs +++ b/ironrdp/src/gcc/core_data/server/test.rs @@ -16,21 +16,21 @@ const FLAGS_BUFFER: [u8; 4] = [ lazy_static! { pub static ref SERVER_CORE_DATA: ServerCoreData = ServerCoreData { - version: RdpVersion::V5Plus, + version: RdpVersion::V5_PLUS, optional_data: ServerCoreOptionalData { client_requested_protocols: None, early_capability_flags: None, }, }; pub static ref SERVER_CORE_DATA_TO_FLAGS: ServerCoreData = ServerCoreData { - version: RdpVersion::V5Plus, + version: RdpVersion::V5_PLUS, optional_data: ServerCoreOptionalData { client_requested_protocols: Some(nego::SecurityProtocol::RDP), early_capability_flags: None, }, }; pub static ref SERVER_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS: ServerCoreData = ServerCoreData { - version: RdpVersion::V5Plus, + version: RdpVersion::V5_PLUS, optional_data: ServerCoreOptionalData { client_requested_protocols: Some(nego::SecurityProtocol::RDP), early_capability_flags: Some(ServerEarlyCapabilityFlags::EDGE_ACTIONS_SUPPORTED_V1), diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index 5045a881..af2df88d 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -121,7 +121,7 @@ pub fn create_client_confirm_active( fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) -> Result { Ok(ClientCoreData { - version: RdpVersion::V5Plus, + version: RdpVersion::V5_PLUS, desktop_width: config.width, desktop_height: config.height, color_depth: ColorDepth::Bpp4, // ignored From 2f089c9a8f2c22560da067db21c675752d415636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Wed, 20 Apr 2022 15:47:54 -0400 Subject: [PATCH 0077/1273] ci: fix clippy job `-D warnings` was missing. --- .github/workflows/ci.yml | 6 +----- rust-toolchain.toml | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3d3d1a5..0e06de82 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,8 +16,6 @@ jobs: steps: - uses: actions/checkout@v3 - - run: rustup component add rustfmt - - name: Check formatting shell: pwsh run: | @@ -36,10 +34,8 @@ jobs: steps: - uses: actions/checkout@v3 - - run: rustup component add clippy - - name: Check clippy - run: cargo clippy --workspace --all-features + run: cargo clippy --workspace --all-features -- -D warnings tests: name: Tests [${{ matrix.os }}] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 948d27da..e1932277 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,3 @@ [toolchain] channel = "1.60.0" +components = [ "rustfmt", "clippy" ] From b333b022c0efbd85c3adf3d832959ece042ca479 Mon Sep 17 00:00:00 2001 From: Alex Yusuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Fri, 20 May 2022 21:29:31 +0300 Subject: [PATCH 0078/1273] feat(ironrdp_client): Kerberos support (#41) * Add support for Kerberos using `sspi-rs` * Change the `CredSspClient` creation according to changes in the sspi-rs * Add optional support for `native-tls` --- ironrdp_client/Cargo.toml | 11 ++- ironrdp_client/src/connection_sequence.rs | 15 ++-- ironrdp_client/src/errors.rs | 24 ++++-- ironrdp_client/src/main.rs | 98 +++++++++++++++++------ 4 files changed, 109 insertions(+), 39 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 24ee64de..c219ae34 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -18,16 +18,20 @@ path = "src/lib.rs" name = "ironrdp_client_app" path = "src/main.rs" +[features] +default = ["rustls"] +rustls = ["dep:rustls"] +native-tls = ["dep:native-tls"] + [dependencies] ironrdp = { path = "../ironrdp" } -sspi = "0.3.0" +sspi = { version = "0.3.3", features = ["network_client"] } clap = "2.33" bytes = "0.5" failure = "0.1" chrono = "0.4" fern = "0.6" log = "0.4" -rustls = { version = "0.16.0", features = ["dangerous_configuration"] } x509-parser = "0.6.0" whoami = "0.8" num-traits = "0.2" @@ -35,6 +39,7 @@ num-derive = "0.3" semver = "0.9" lazy_static = "1.4" exitcode = "1.1" -webpki = "0.21.0" bufstream = "0.1" ring = "0.16.0" +native-tls = { version = "0.2", optional = true } +rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 6cd47201..09639acd 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -17,6 +17,7 @@ use ironrdp::{nego, rdp, PduParsing}; use log::{debug, info, trace, warn}; use ring::rand::SecureRandom; use sspi::internal::credssp; +use sspi::KerberosConfig; use crate::transport::*; use crate::{InputConfig, RdpError, BUF_STREAM_SIZE}; @@ -131,9 +132,13 @@ pub fn process_cred_ssp( ) -> Result<(), RdpError> { let mut transport = TsRequestTransport::default(); - let mut cred_ssp_client = - credssp::CredSspClient::new(server_public_key, credentials, credssp::CredSspMode::WithCredentials) - .map_err(RdpError::CredSspError)?; + let mut cred_ssp_client = credssp::CredSspClient::new( + server_public_key, + credentials, + credssp::CredSspMode::WithCredentials, + credssp::ClientMode::Kerberos(KerberosConfig::from_env()), + ) + .map_err(RdpError::CredSspError)?; let mut next_ts_request = credssp::TsRequest::default(); loop { @@ -144,12 +149,12 @@ pub fn process_cred_ssp( match result { credssp::ClientState::ReplyNeeded(ts_request) => { - debug!("Send CredSSP TSRequest: {:x?}", ts_request); + debug!("Send CredSSP TSRequest (reply needed): {:x?}", ts_request); transport.encode(ts_request, &mut tls_stream)?; next_ts_request = transport.decode(&mut tls_stream)?; } credssp::ClientState::FinalMessage(ts_request) => { - debug!("Send CredSSP TSRequest: {:x?}", ts_request); + debug!("Send CredSSP TSRequest (final): {:x?}", ts_request); transport.encode(ts_request, &mut tls_stream)?; break; } diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs index 4d7841b4..cdfe1a76 100644 --- a/ironrdp_client/src/errors.rs +++ b/ironrdp_client/src/errors.rs @@ -21,10 +21,18 @@ pub enum RdpError { UnexpectedDisconnection(String), #[fail(display = "invalid response: {}", _0)] InvalidResponse(String), + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[fail(display = "TLS connector error: {}", _0)] - TlsConnectorError(rustls::TLSError), + TlsConnectorError(native_tls::Error), + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[fail(display = "TLS handshake error: {}", _0)] - TlsHandshakeError(rustls::TLSError), + TlsHandshakeError(native_tls::Error), + #[cfg(feature = "rustls")] + #[fail(display = "TLS connector error: {}", _0)] + TlsConnectorError(rustls::Error), + #[cfg(feature = "rustls")] + #[fail(display = "TLS handshake error: {}", _0)] + TlsHandshakeError(rustls::Error), #[fail(display = "CredSSP error: {}", _0)] CredSspError(#[fail(cause)] sspi::Error), #[fail(display = "CredSSP TSRequest error: {}", _0)] @@ -80,6 +88,11 @@ pub enum RdpError { UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), #[fail(display = "server error: {}", _0)] ServerError(String), + #[fail(display = "Missing peer certificate")] + MissingPeerCertificate, + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + #[fail(display = "Invalid DER structure: {}", _0)] + DerEncode(#[fail(cause)] native_tls::Error), } impl From for RdpError { @@ -88,10 +101,11 @@ impl From for RdpError { } } -impl From for RdpError { - fn from(e: rustls::TLSError) -> Self { +#[cfg(feature = "rustls")] +impl From for RdpError { + fn from(e: rustls::Error) -> Self { match e { - rustls::TLSError::InappropriateHandshakeMessage { .. } | rustls::TLSError::HandshakeNotComplete => { + rustls::Error::InappropriateHandshakeMessage { .. } | rustls::Error::HandshakeNotComplete => { RdpError::TlsHandshakeError(e) } _ => RdpError::TlsConnectorError(e), diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 48cc5c72..fa3489d3 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,27 +1,36 @@ mod config; -use std::io::{self, Write}; -use std::net::TcpStream; -use std::sync::Arc; +use std::{ + io::{self, Write}, + net::TcpStream, +}; use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; use log::error; -use rustls::Session; +#[cfg(all(feature = "native-tls", not(feature = "rustls")))] +use native_tls::{HandshakeError, TlsConnector}; use self::config::Config; +#[cfg(feature = "rustls")] mod danger { - pub struct NoCertificateVerification {} + use rustls::client::ServerCertVerified; + use rustls::{Certificate, Error, ServerName}; + use std::time::SystemTime; - impl rustls::ServerCertVerifier for NoCertificateVerification { + pub struct NoCertificateVerification; + + impl rustls::client::ServerCertVerifier for NoCertificateVerification { fn verify_server_cert( &self, - _roots: &rustls::RootCertStore, - _presented_certs: &[rustls::Certificate], - _dns_name: webpki::DNSNameRef<'_>, - _ocsp: &[u8], - ) -> Result { - Ok(rustls::ServerCertVerified::assertion()) + _end_entity: &Certificate, + _intermediates: &[Certificate], + _server_name: &ServerName, + _scts: &mut dyn Iterator, + _ocsp_response: &[u8], + _now: SystemTime, + ) -> Result { + Ok(rustls::client::ServerCertVerified::assertion()) } } } @@ -86,23 +95,60 @@ fn run(config: Config) -> Result<(), RdpError> { } fn establish_tls(stream: impl io::Read + io::Write) -> Result, RdpError> { - let mut client_config = rustls::ClientConfig::default(); + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let mut tls_stream = { + let mut builder = TlsConnector::builder(); + builder.danger_accept_invalid_certs(true); + builder.use_sni(false); + + let connector = builder.build().unwrap(); + + // domain is an empty string because client accepts IP address in the cli + match connector.connect("", stream) { + Ok(tls) => tls, + Err(HandshakeError::Failure(err)) => return Err(RdpError::TlsHandshakeError(err)), + Err(HandshakeError::WouldBlock(mut mid_stream)) => loop { + match mid_stream.handshake() { + Ok(tls) => break tls, + Err(HandshakeError::Failure(err)) => return Err(RdpError::TlsHandshakeError(err)), + Err(HandshakeError::WouldBlock(mid)) => mid_stream = mid, + }; + }, + } + }; + + #[cfg(feature = "rustls")] + let mut tls_stream = { + let client_config = rustls::client::ClientConfig::builder() + .with_safe_defaults() + .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) + .with_no_client_auth(); + let rc_config = std::sync::Arc::new(client_config); + let example_com = "stub_string".try_into().unwrap(); + let client = rustls::ClientConnection::new(rc_config, example_com)?; + rustls::StreamOwned::new(client, stream) + }; - client_config - .dangerous() - .set_certificate_verifier(Arc::new(danger::NoCertificateVerification {})); - let config_ref = Arc::new(client_config); - let dns_name = webpki::DNSNameRef::try_from_ascii_str("stub_string").unwrap(); - let tls_session = rustls::ClientSession::new(&config_ref, dns_name); - let mut tls_stream = rustls::StreamOwned::new(tls_session, stream); - // handshake tls_stream.flush()?; - let cert = tls_stream - .sess - .get_peer_certificates() - .ok_or(RdpError::TlsConnectorError(rustls::TLSError::NoCertificatesPresented))?; - let server_public_key = get_tls_peer_pubkey(cert[0].as_ref().to_vec())?; + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let server_public_key = { + let cert = tls_stream + .peer_certificate() + .map_err(RdpError::TlsConnectorError)? + .ok_or(RdpError::MissingPeerCertificate)?; + get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? + }; + + #[cfg(feature = "rustls")] + let server_public_key = { + let cert = tls_stream + .conn + .peer_certificates() + .ok_or(RdpError::MissingPeerCertificate)?[0] + .as_ref(); + get_tls_peer_pubkey(cert.to_vec())? + }; Ok(UpgradedStream { stream: tls_stream, From de839b4dfb884643f7c0b948a3e68acf2d37990b Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Tue, 31 May 2022 18:54:44 +0300 Subject: [PATCH 0079/1273] ironrdp_client: pass SPN to sspi (#42) --- ironrdp_client/Cargo.toml | 3 ++- ironrdp_client/src/connection_sequence.rs | 9 ++++++++- ironrdp_client/src/main.rs | 9 ++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index c219ae34..fc35dd1c 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -25,7 +25,7 @@ native-tls = ["dep:native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } -sspi = { version = "0.3.3", features = ["network_client"] } +sspi = { version = "0.3.5", features = ["network_client"] } clap = "2.33" bytes = "0.5" failure = "0.1" @@ -43,3 +43,4 @@ bufstream = "0.1" ring = "0.16.0" native-tls = { version = "0.2", optional = true } rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } +dns-lookup = "1.0.8" diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 09639acd..b78c6fcd 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -7,6 +7,7 @@ use std::net::SocketAddr; use bufstream::BufStream; use bytes::BytesMut; +use dns_lookup::lookup_addr; use ironrdp::rdp::capability_sets::CapabilitySet; use ironrdp::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, @@ -73,7 +74,7 @@ where if selected_protocol.contains(nego::SecurityProtocol::HYBRID) || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key)?; + process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key, routing_addr)?; if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { if let credssp::EarlyUserAuthResult::AccessDenied = EarlyUserAuthResult::read(&mut stream)? { @@ -129,14 +130,20 @@ pub fn process_cred_ssp( mut tls_stream: impl io::Read + io::Write, credentials: sspi::AuthIdentity, server_public_key: Vec, + routing_addr: &SocketAddr, ) -> Result<(), RdpError> { let mut transport = TsRequestTransport::default(); + let destination_host = lookup_addr(&routing_addr.ip()) + .map_err(|err| RdpError::UserInfoError(format!("unable to query destination host name: {:?}", err)))?; + let service_principal_name = format!("TERMSRV/{}", destination_host); + let mut cred_ssp_client = credssp::CredSspClient::new( server_public_key, credentials, credssp::CredSspMode::WithCredentials, credssp::ClientMode::Kerberos(KerberosConfig::from_env()), + service_principal_name, ) .map_err(RdpError::CredSspError)?; let mut next_ts_request = credssp::TsRequest::default(); diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index fa3489d3..8900aded 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,9 +1,7 @@ mod config; -use std::{ - io::{self, Write}, - net::TcpStream, -}; +use std::io::{self, Write}; +use std::net::TcpStream; use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; use log::error; @@ -14,9 +12,10 @@ use self::config::Config; #[cfg(feature = "rustls")] mod danger { + use std::time::SystemTime; + use rustls::client::ServerCertVerified; use rustls::{Certificate, Error, ServerName}; - use std::time::SystemTime; pub struct NoCertificateVerification; From 67c6d28ffb2f60aff8497401692cf53de94cef38 Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Fri, 17 Jun 2022 22:21:41 +0300 Subject: [PATCH 0080/1273] Replace Kerberos with the Negotiation module for CredSspClient (#43) --- ironrdp_client/Cargo.toml | 2 +- ironrdp_client/src/connection_sequence.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index fc35dd1c..5665cfee 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -25,7 +25,7 @@ native-tls = ["dep:native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } -sspi = { version = "0.3.5", features = ["network_client"] } +sspi = { version = "0.3.6", features = ["network_client"] } clap = "2.33" bytes = "0.5" failure = "0.1" diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index b78c6fcd..0c1ca791 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -18,7 +18,7 @@ use ironrdp::{nego, rdp, PduParsing}; use log::{debug, info, trace, warn}; use ring::rand::SecureRandom; use sspi::internal::credssp; -use sspi::KerberosConfig; +use sspi::NegotiateConfig; use crate::transport::*; use crate::{InputConfig, RdpError, BUF_STREAM_SIZE}; @@ -142,7 +142,7 @@ pub fn process_cred_ssp( server_public_key, credentials, credssp::CredSspMode::WithCredentials, - credssp::ClientMode::Kerberos(KerberosConfig::from_env()), + credssp::ClientMode::Negotiate(NegotiateConfig::default()), service_principal_name, ) .map_err(RdpError::CredSspError)?; From 91e353d32b11ddf08b6aaa165f9316e866002b43 Mon Sep 17 00:00:00 2001 From: Sandeep Bansal Date: Thu, 6 Oct 2022 06:06:01 -0700 Subject: [PATCH 0081/1273] build: update clap to 4.0 (#44) --- ironrdp_client/Cargo.toml | 4 +- ironrdp_client/src/config.rs | 317 +++++++++++++---------------------- 2 files changed, 117 insertions(+), 204 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 5665cfee..556c0be4 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -25,8 +25,8 @@ native-tls = ["dep:native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } -sspi = { version = "0.3.6", features = ["network_client"] } -clap = "2.33" +sspi = { version = "0.4.0", features = ["network_client"] } +clap = { version = "4.0", features = ["derive", "cargo"] } bytes = "0.5" failure = "0.1" chrono = "0.4" diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index 2459ee85..017de3b3 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -1,7 +1,6 @@ use std::net::SocketAddr; -use clap::{crate_name, crate_version, App, Arg}; -use ironrdp::nego::SecurityProtocol; +use clap::{clap_derive::ValueEnum, crate_name, Parser}; use ironrdp_client::InputConfig; use sspi::AuthIdentity; @@ -16,215 +15,129 @@ pub struct Config { pub input: InputConfig, } -impl Config { - pub fn parse_args() -> Self { - let log_file_name = format!("{}.log", crate_name!()); - let cli_app = App::new(crate_name!()) - .author("Devolutions") - .version(crate_version!()) - .version_short("v") - .about("Devolutions-IronRDP client") - .arg( - Arg::with_name("log-file") - .long("log-file") - .value_name("LOG_FILE") - .help("A file with IronRDP client logs") - .takes_value(true) - .empty_values(false) - .default_value(&log_file_name), - ) - .arg( - Arg::with_name("addr") - .value_name("ADDR") - .help("An address on which the client will connect. Format: :") - .takes_value(true) - .empty_values(false) - .required(true) - .index(1) - .validator(|u| match u.parse::() { - Ok(_) => Ok(()), - Err(_) => Err(String::from("The address does not match the format: :")), - }), - ) - .args(&input_args()); - let matches = cli_app.get_matches(); +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +enum SecurityProtocol { + Ssl, + Hybrid, + HybridEx, +} - let log_file = matches - .value_of("log-file") - .map(String::from) - .expect("log file must be at least the default"); - - let routing_addr = matches - .value_of("addr") - .map(|u| u.parse().unwrap()) - .expect("addr must be at least the default"); - - let input = from_input_matches(&matches); - - Self { - log_file, - routing_addr, - input, +impl SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::nego::SecurityProtocol { + match security_protocol { + SecurityProtocol::Ssl => ironrdp::nego::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::nego::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::nego::SecurityProtocol::HYBRID_EX, } } } -fn input_args<'a, 'b>() -> [Arg<'a, 'b>; 9] { - [ - Arg::with_name("username") - .short("u") - .long("username") - .value_name("USERNAME") - .help("A target RDP server user name") - .takes_value(true) - .empty_values(false) - .required(true), - Arg::with_name("domain") - .short("d") - .long("domain") - .value_name("DOMAIN") - .help("An optional target RDP server domain name") - .takes_value(true) - .required(false), - Arg::with_name("password") - .short("p") - .long("password") - .value_name("PASSWORD") - .help("A target RDP server user password") - .takes_value(true) - .required(true), - Arg::with_name("security-protocol") - .long("security-protocol") - .value_name("SECURITY_PROTOCOL") - .help("Specify the security protocols to use") - .takes_value(true) - .multiple(true) - .possible_values(&["ssl", "hybrid", "hybrid_ex"]) - .default_value("hybrid_ex") - .required(true), - Arg::with_name("keyboard-type") - .long("keyboard-type") - .value_name("KEYBOARD_TYPE") - .help("The keyboard type") - .takes_value(true) - .possible_values(&[ - "ibm_pc_xt", - "olivetti_ico", - "ibm_pc_at", - "ibm_enhanced", - "nokia1050", - "nokia9140", - "japanese", - ]) - .default_value("ibm_enhanced"), - Arg::with_name("keyboard-subtype") - .long("keyboard-subtype") - .value_name("KEYBOARD_SUBTYPE") - .help("The keyboard subtype (an original equipment manufacturer-dependent value)") - .takes_value(true) - .default_value("0") - .validator(is_uint), - Arg::with_name("keyboard-functional-keys-count") - .long("keyboard-functional-keys-count") - .value_name("KEYBOARD_FUNCTIONAL_KEYS_COUNT") - .help("The number of function keys on the keyboard") - .takes_value(true) - .default_value("12") - .validator(is_uint), - Arg::with_name("ime-file-name") - .long("ime-file-name") - .value_name("IME_FILENAME") - .help("The input method editor (IME) file name associated with the active input locale") - .takes_value(true) - .default_value(""), - Arg::with_name("dig-product-id") - .long("dig-product-id") - .value_name("DIG_PRODUCT_ID") - .help("Contains a value that uniquely identifies the client") - .takes_value(true) - .default_value(""), - ] +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +enum KeyboardType { + IbmPcXt, + OlivettiIco, + IbmPcAt, + IbmEnhanced, + Nokia1050, + Nokia9140, + Japanese, } -fn from_input_matches(matches: &clap::ArgMatches<'_>) -> InputConfig { - let username = matches - .value_of("username") - .map(String::from) - .expect("username must be specified"); - let domain = matches.value_of("domain").map(String::from); - let password = matches - .value_of("password") - .map(String::from) - .expect("password must be specified"); - let credentials = AuthIdentity { - username, - password, - domain, - }; - - let security_protocol = matches - .values_of("security-protocol") - .expect("security-protocol must be specified") - .map(|value| match value { - "ssl" => SecurityProtocol::SSL, - "hybrid" => SecurityProtocol::HYBRID, - "hybrid_ex" => SecurityProtocol::HYBRID_EX, - _ => unreachable!("clap must not allow other security protocols"), - }) - .collect(); - - let keyboard_type = matches - .value_of("keyboard-type") - .map(|value| match value { - "ibm_pc_xt" => ironrdp::gcc::KeyboardType::IbmPcXt, - "olivetti_ico" => ironrdp::gcc::KeyboardType::OlivettiIco, - "ibm_pc_at" => ironrdp::gcc::KeyboardType::IbmPcAt, - "ibm_enhanced" => ironrdp::gcc::KeyboardType::IbmEnhanced, - "nokia1050" => ironrdp::gcc::KeyboardType::Nokia1050, - "nokia9140" => ironrdp::gcc::KeyboardType::Nokia9140, - "japanese" => ironrdp::gcc::KeyboardType::Japanese, - _ => unreachable!("clap must not allow other keyboard types"), - }) - .expect("keyboard type must be at least the default"); - - let keyboard_subtype = matches - .value_of("keyboard-subtype") - .map(|value| value.parse::().unwrap()) - .expect("keyboard subtype must be at least the default"); - - let keyboard_functional_keys_count = matches - .value_of("keyboard-functional-keys-count") - .map(|value| value.parse::().unwrap()) - .expect("keyboard functional keys count must be at least the default"); - - let ime_file_name = matches - .value_of("ime-file-name") - .map(String::from) - .expect("IME file name must be at least the default"); - - let dig_product_id = matches - .value_of("dig-product-id") - .map(String::from) - .expect("DIG product ID must be at least the default"); - - InputConfig { - credentials, - security_protocol, - keyboard_type, - keyboard_subtype, - keyboard_functional_keys_count, - ime_file_name, - dig_product_id, - width: DEFAULT_WIDTH, - height: DEFAULT_HEIGHT, - global_channel_name: GLOBAL_CHANNEL_NAME.to_string(), - user_channel_name: USER_CHANNEL_NAME.to_string(), +impl KeyboardType { + fn parse(keyboard_type: KeyboardType) -> ironrdp::gcc::KeyboardType { + match keyboard_type { + KeyboardType::IbmEnhanced => ironrdp::gcc::KeyboardType::IbmEnhanced, + KeyboardType::IbmPcAt => ironrdp::gcc::KeyboardType::IbmPcAt, + KeyboardType::IbmPcXt => ironrdp::gcc::KeyboardType::IbmPcXt, + KeyboardType::OlivettiIco => ironrdp::gcc::KeyboardType::OlivettiIco, + KeyboardType::Nokia1050 => ironrdp::gcc::KeyboardType::Nokia1050, + KeyboardType::Nokia9140 => ironrdp::gcc::KeyboardType::Nokia9140, + KeyboardType::Japanese => ironrdp::gcc::KeyboardType::Japanese, + } } } -fn is_uint(s: String) -> Result<(), String> { - match s.parse::() { - Ok(_) => Ok(()), - Err(_) => Err(String::from("The value is not numeric")), +/// Devolutions IronRDP client +#[derive(Parser, Debug)] +#[clap(author = "Devolutions", about = "Devolutions-IronRDP client")] +#[clap(version, long_about = None)] +struct Args { + /// A file with IronRDP client logs + #[clap(short, long, value_parser, default_value_t = format!("{}.log", crate_name!()))] + log_file: String, + + /// An address on which the client will connect. Format: : + #[clap(value_parser = is_socket_address)] + addr: SocketAddr, + + /// A target RDP server user name + #[clap(short, long, value_parser)] + username: String, + + /// An optional target RDP server domain name + #[clap(short, long, value_parser)] + domain: Option, + + /// A target RDP server user password + #[clap(short, long, value_parser)] + password: String, + + /// Specify the security protocols to use + #[clap(long, value_enum, value_parser, default_value_t = SecurityProtocol::HybridEx)] + security_protocol: SecurityProtocol, + + /// The keyboard type + #[clap(long, value_enum, value_parser, default_value_t = KeyboardType::IbmEnhanced)] + keyboard_type: KeyboardType, + + /// The keyboard subtype (an original equipment manufacturer-dependent value) + #[clap(long, value_parser, default_value_t = 0)] + keyboard_subtype: u32, + + /// The number of function keys on the keyboard + #[clap(long, value_parser, default_value_t = 12)] + keyboard_functional_keys_count: u32, + + /// The input method editor (IME) file name associated with the active input locale + #[clap(long, value_parser, default_value_t = String::from(""))] + ime_file_name: String, + + /// Contains a value that uniquely identifies the client + #[clap(long, value_parser, default_value_t = String::from(""))] + dig_product_id: String, +} + +fn is_socket_address(s: &str) -> Result { + s.parse::() + .map_err(|_| String::from("The address does not match the format: :")) +} + +impl Config { + pub fn parse_args() -> Self { + let args = Args::parse(); + + let input = InputConfig { + credentials: AuthIdentity { + username: args.username, + password: args.password, + domain: args.domain, + }, + security_protocol: SecurityProtocol::parse(args.security_protocol), + keyboard_type: KeyboardType::parse(args.keyboard_type), + keyboard_subtype: args.keyboard_subtype, + keyboard_functional_keys_count: args.keyboard_functional_keys_count, + ime_file_name: args.ime_file_name, + dig_product_id: args.dig_product_id, + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_string(), + user_channel_name: USER_CHANNEL_NAME.to_string(), + }; + + Self { + log_file: args.log_file, + routing_addr: args.addr, + input, + } } } From 6fda0a0d520fb9f58760c9af2ab40fc5773c2085 Mon Sep 17 00:00:00 2001 From: Sandeep Bansal Date: Fri, 7 Oct 2022 23:48:28 -0400 Subject: [PATCH 0082/1273] Improvements for dynamic channel handling (#46) * Enable graphics pipeline * Cargo fmt Co-authored-by: Sandeep Bansal --- ironrdp/Cargo.toml | 6 +- ironrdp/src/basic_output/bitmap/tests.rs | 5 +- ironrdp/src/ber/tests.rs | 4 +- ironrdp/src/rdp.rs | 6 +- ironrdp/src/rdp/headers.rs | 28 +- ironrdp/src/rdp/vc/dvc.rs | 1 + ironrdp/src/rdp/vc/dvc/display.rs | 302 ++++++++++++++++++ ironrdp/src/rdp/vc/dvc/gfx.rs | 132 ++++---- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 37 ++- .../vc/dvc/gfx/graphics_messages/server.rs | 146 ++++++++- .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 20 +- ironrdp/src/rdp/vc/dvc/gfx/test.rs | 7 +- ironrdp_client/Cargo.toml | 9 +- ironrdp_client/src/active_session.rs | 1 + ironrdp_client/src/active_session/x224.rs | 148 +++++++-- .../src/active_session/x224/display.rs | 21 ++ ironrdp_client/src/active_session/x224/gfx.rs | 175 ++++++++-- ironrdp_client/src/config.rs | 45 ++- .../src/connection_sequence/user_info.rs | 37 ++- ironrdp_client/src/errors.rs | 25 +- ironrdp_client/src/lib.rs | 9 + ironrdp_client/src/main.rs | 3 +- 22 files changed, 965 insertions(+), 202 deletions(-) create mode 100644 ironrdp/src/rdp/vc/dvc/display.rs create mode 100644 ironrdp_client/src/active_session/x224/display.rs diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 979a8e56..9dd678d6 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -16,7 +16,7 @@ bit_field = "0.10.1" bitflags = "1.3.2" bitvec = "1.0.0" byteorder = "1.4.3" -bytes = "1.1.0" +bytes = "1" der-parser = "8.0.0" failure = "0.1.8" hex-literal = "0.3.4" @@ -27,5 +27,5 @@ num-derive = "0.3.3" num-integer = "0.1.44" num-traits = "0.2.14" ring = "0.16.20" -x509-parser = "0.13.2" -tap = "1.0.1" +x509-parser = "0.14" +tap = "1.0.1" \ No newline at end of file diff --git a/ironrdp/src/basic_output/bitmap/tests.rs b/ironrdp/src/basic_output/bitmap/tests.rs index be0c8d3e..f02082a9 100644 --- a/ironrdp/src/basic_output/bitmap/tests.rs +++ b/ironrdp/src/basic_output/bitmap/tests.rs @@ -34,8 +34,7 @@ lazy_static! { static ref BITMAP: Bitmap<'static> = Bitmap { rectangles_number: 1, rectangles: { - let mut vec = Vec::new(); - vec.push(BitmapData { + let vec = vec![BitmapData { rectangle: Rectangle { left: 1792, top: 1024, @@ -53,7 +52,7 @@ lazy_static! { uncompressed_size: 4, }), bitmap_data: &BITMAP_BUFFER[30..], - }); + }]; vec } }; diff --git a/ironrdp/src/ber/tests.rs b/ironrdp/src/ber/tests.rs index 96fc221f..cdb3229d 100644 --- a/ironrdp/src/ber/tests.rs +++ b/ironrdp/src/ber/tests.rs @@ -132,13 +132,13 @@ fn write_bool_false_is_correct() { #[test] fn read_bool_true_is_correct() { let buf = vec![0x01, 0x01, 0xFF]; - assert_eq!(read_bool(&mut buf.as_slice()).unwrap(), true); + assert!(read_bool(&mut buf.as_slice()).unwrap()); } #[test] fn read_bool_false_is_correct() { let buf = vec![0x01, 0x01, 0x00]; - assert_eq!(read_bool(&mut buf.as_slice()).unwrap(), false); + assert!(!read_bool(&mut buf.as_slice()).unwrap()); } #[test] diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index 05b333b1..e04e93ff 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -5,7 +5,7 @@ use failure::Fail; use self::client_info::ClientInfoError; use self::finalization_messages::FinalizationMessagesError; use self::server_license::ServerLicenseError; -use crate::{impl_from_error, PduParsing}; +use crate::{impl_from_error, input::InputEventError, PduParsing}; #[cfg(test)] pub mod test; @@ -39,7 +39,6 @@ pub use self::server_error_info::{ ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, RdpSpecificCode, ServerSetErrorInfoError, ServerSetErrorInfoPdu, }; - #[derive(Debug, Clone, PartialEq)] pub struct ClientInfoPdu { pub security_header: BasicSecurityHeader, @@ -105,6 +104,8 @@ pub enum RdpError { SaveSessionInfoError(session_info::SessionError), #[fail(display = "Server set error info PDU error: {}", _0)] ServerSetErrorInfoError(ServerSetErrorInfoError), + #[fail(display = "Input event PDU error: Err: {}", _0)] + InputEventError(InputEventError), } impl_from_error!(io::Error, RdpError, RdpError::IOError); @@ -114,6 +115,7 @@ impl_from_error!(CapabilitySetsError, RdpError, RdpError::CapabilitySetsError); impl_from_error!(FinalizationMessagesError, RdpError, RdpError::FinalizationMessagesError); impl_from_error!(session_info::SessionError, RdpError, RdpError::SaveSessionInfoError); impl_from_error!(ServerSetErrorInfoError, RdpError, RdpError::ServerSetErrorInfoError); +impl_from_error!(InputEventError, RdpError, RdpError::InputEventError); impl From for io::Error { fn from(e: RdpError) -> io::Error { diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index 9b6f0f2a..70fafa54 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -10,6 +10,7 @@ use super::{ ServerSetErrorInfoPdu, SynchronizePdu, }; use crate::codecs::rfx::FrameAcknowledgePdu; +use crate::input::InputEventPdu; use crate::rdp::finalization_messages::FontPdu; use crate::rdp::session_info::SaveSessionInfoPdu; use crate::PduParsing; @@ -68,7 +69,7 @@ impl PduParsing for ShareControlHeader { type Error = RdpError; fn from_buffer(mut stream: impl io::Read) -> Result { - let _total_length = stream.read_u16::()?; + let total_length = stream.read_u16::()? as usize; let pdu_type_with_version = stream.read_u16::()?; let pdu_source = stream.read_u16::()?; let share_id = stream.read_u32::()?; @@ -84,12 +85,24 @@ impl PduParsing for ShareControlHeader { } let share_pdu = ShareControlPdu::from_type(&mut stream, pdu_type)?; - - Ok(Self { + let header = Self { share_control_pdu: share_pdu, pdu_source, share_id, - }) + }; + if pdu_type == ShareControlPduType::DataPdu { + // Some windows version have an issue where PDU + // there is some padding not part of the inner unit. + // Consume that data + let header_length = header.buffer_length(); + if header_length != total_length { + let padding = total_length - header_length; + let mut data = vec![0u8; padding]; + stream.read_exact(data.as_mut())?; + } + } + + Ok(header) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { let pdu_type_with_version = PROTOCOL_VERSION | self.share_control_pdu.share_header_type().to_u16().unwrap(); @@ -242,6 +255,7 @@ pub enum ShareDataPdu { SaveSessionInfo(SaveSessionInfoPdu), FrameAcknowledge(FrameAcknowledgePdu), ServerSetErrorInfo(ServerSetErrorInfoPdu), + Input(InputEventPdu), } impl ShareDataPdu { @@ -255,6 +269,7 @@ impl ShareDataPdu { ShareDataPdu::SaveSessionInfo(_) => "Save session info PDU", ShareDataPdu::FrameAcknowledge(_) => "Frame Acknowledge PDU", ShareDataPdu::ServerSetErrorInfo(_) => "Server Set Error Info PDU", + ShareDataPdu::Input(_) => "Server Input PDU", } } } @@ -278,9 +293,9 @@ impl ShareDataPdu { ShareDataPduType::SetErrorInfoPdu => Ok(ShareDataPdu::ServerSetErrorInfo( ServerSetErrorInfoPdu::from_buffer(&mut stream)?, )), + ShareDataPduType::Input => Ok(ShareDataPdu::Input(InputEventPdu::from_buffer(&mut stream)?)), ShareDataPduType::Update | ShareDataPduType::Pointer - | ShareDataPduType::Input | ShareDataPduType::RefreshRectangle | ShareDataPduType::PlaySound | ShareDataPduType::SuppressOutput @@ -308,6 +323,7 @@ impl ShareDataPdu { ShareDataPdu::SaveSessionInfo(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), ShareDataPdu::FrameAcknowledge(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), ShareDataPdu::ServerSetErrorInfo(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), + ShareDataPdu::Input(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), } } pub fn buffer_length(&self) -> usize { @@ -319,6 +335,7 @@ impl ShareDataPdu { ShareDataPdu::SaveSessionInfo(pdu) => pdu.buffer_length(), ShareDataPdu::FrameAcknowledge(pdu) => pdu.buffer_length(), ShareDataPdu::ServerSetErrorInfo(pdu) => pdu.buffer_length(), + ShareDataPdu::Input(pdu) => pdu.buffer_length(), } } pub fn share_header_type(&self) -> ShareDataPduType { @@ -331,6 +348,7 @@ impl ShareDataPdu { ShareDataPdu::SaveSessionInfo(_) => ShareDataPduType::SaveSessionInfo, ShareDataPdu::FrameAcknowledge(_) => ShareDataPduType::FrameAcknowledgePdu, ShareDataPdu::ServerSetErrorInfo(_) => ShareDataPduType::SetErrorInfoPdu, + ShareDataPdu::Input(_) => ShareDataPduType::Input, } } } diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index f3be0dc9..d5840be2 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -12,6 +12,7 @@ use crate::PduParsing; #[cfg(test)] mod tests; +pub mod display; pub mod gfx; mod capabilities; diff --git a/ironrdp/src/rdp/vc/dvc/display.rs b/ironrdp/src/rdp/vc/dvc/display.rs new file mode 100644 index 00000000..b23143d5 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/display.rs @@ -0,0 +1,302 @@ +// #[cfg(test)] +// mod test; + +use std::io::{self, Read, Write}; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use failure::Fail; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::{impl_from_error, PduParsing}; +use bitflags::bitflags; +const RDP_DISPLAY_HEADER_SIZE: usize = 8; + +#[derive(Debug, Clone, PartialEq)] +pub struct DisplayControlCapsPdu { + pub max_num_monitors: u32, + pub max_monitor_area_factora: u32, + pub max_monitor_area_factorb: u32, +} + +impl PduParsing for DisplayControlCapsPdu { + type Error = io::Error; + + fn from_buffer(mut stream: impl Read) -> Result { + let max_num_monitors = stream.read_u32::()?; + let max_monitor_area_factora = stream.read_u32::()?; + let max_monitor_area_factorb = stream.read_u32::()?; + + Ok(Self { + max_num_monitors, + max_monitor_area_factora, + max_monitor_area_factorb, + }) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + stream.write_u32::(self.max_num_monitors)?; + stream.write_u32::(self.max_monitor_area_factora)?; + stream.write_u32::(self.max_monitor_area_factorb)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 12 + } +} + +bitflags! { + pub struct MonitorFlags: u32 { + const PRIMARY = 1; + } +} + +#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum Orientation { + Landscape = 0, + Portrait = 90, + LandscapeFlipped = 180, + PortraitFlipped = 270, +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Monitor { + pub flags: MonitorFlags, + pub left: u32, + pub top: u32, + pub width: u32, + pub height: u32, + pub physical_width: u32, + pub physical_height: u32, + pub orientation: Orientation, + pub desktop_scale_factor: u32, + pub device_scale_factor: u32, +} + +const MONITOR_SIZE: usize = 40; +const MONITOR_PDU_HEADER_SIZE: usize = 8; + +impl PduParsing for Monitor { + type Error = io::Error; + + fn from_buffer(mut stream: impl Read) -> Result { + let flags = MonitorFlags::from_bits(stream.read_u32::()?) + .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "Invalid monitor flags"))?; + let left = stream.read_u32::()?; + let top = stream.read_u32::()?; + let width = stream.read_u32::()?; + let height = stream.read_u32::()?; + let physical_width = stream.read_u32::()?; + let physical_height = stream.read_u32::()?; + let orientation = Orientation::from_u32(stream.read_u32::()?) + .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "Invalid monitor orientation"))?; + let desktop_scale_factor = stream.read_u32::()?; + let device_scale_factor = stream.read_u32::()?; + + Ok(Self { + flags, + left, + top, + width, + height, + physical_width, + physical_height, + orientation, + desktop_scale_factor, + device_scale_factor, + }) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + stream.write_u32::(self.flags.bits())?; + stream.write_u32::(self.left)?; + stream.write_u32::(self.top)?; + stream.write_u32::(self.width)?; + stream.write_u32::(self.height)?; + stream.write_u32::(self.physical_width)?; + stream.write_u32::(self.physical_height)?; + stream.write_u32::(self.orientation.to_u32().unwrap())?; + stream.write_u32::(self.desktop_scale_factor)?; + stream.write_u32::(self.device_scale_factor)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + MONITOR_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MonitorLayoutPdu { + pub monitors: Vec, +} + +impl PduParsing for MonitorLayoutPdu { + type Error = io::Error; + + fn from_buffer(mut stream: impl Read) -> Result { + let _size = stream.read_u32::()?; + let num_monitors = stream.read_u32::()?; + let mut monitors = Vec::new(); + for _ in 0..num_monitors { + monitors.push(Monitor::from_buffer(&mut stream)?); + } + Ok(Self { monitors }) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + stream.write_u32::(MONITOR_SIZE as u32)?; + stream.write_u32::(self.monitors.len() as u32)?; + + for monitor in &self.monitors { + monitor.to_buffer(stream.by_ref())?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + MONITOR_PDU_HEADER_SIZE + self.monitors.len() * MONITOR_SIZE + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum ServerPdu { + DisplayControlCaps(DisplayControlCapsPdu), +} + +impl PduParsing for ServerPdu { + type Error = DisplayPipelineError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let pdu_type = + ServerPduType::from_u32(stream.read_u32::()?).ok_or(DisplayPipelineError::InvalidCmdId)?; + let pdu_length = stream.read_u32::()? as usize; + + let server_pdu = match pdu_type { + ServerPduType::DisplayControlCaps => { + ServerPdu::DisplayControlCaps(DisplayControlCapsPdu::from_buffer(&mut stream)?) + } + }; + let buffer_length = server_pdu.buffer_length(); + + if buffer_length != pdu_length { + Err(DisplayPipelineError::InvalidPduLength { + expected: pdu_length, + actual: buffer_length, + }) + } else { + Ok(server_pdu) + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let buffer_length = self.buffer_length(); + + stream.write_u32::(ServerPduType::from(self).to_u32().unwrap())?; + stream.write_u32::(buffer_length as u32)?; + + match self { + ServerPdu::DisplayControlCaps(pdu) => pdu.to_buffer(&mut stream).map_err(DisplayPipelineError::from), + } + } + + fn buffer_length(&self) -> usize { + RDP_DISPLAY_HEADER_SIZE + + match self { + ServerPdu::DisplayControlCaps(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ServerPduType { + DisplayControlCaps = 0x05, +} + +impl<'a> From<&'a ServerPdu> for ServerPduType { + fn from(s: &'a ServerPdu) -> Self { + match s { + ServerPdu::DisplayControlCaps(_) => Self::DisplayControlCaps, + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum ClientPdu { + DisplayControlMonitorLayout(MonitorLayoutPdu), +} + +impl PduParsing for ClientPdu { + type Error = DisplayPipelineError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let pdu_type = + ClientPduType::from_u32(stream.read_u32::()?).ok_or(DisplayPipelineError::InvalidCmdId)?; + let pdu_length = stream.read_u32::()? as usize; + + let server_pdu = match pdu_type { + ClientPduType::DisplayControlMonitorLayout => { + ClientPdu::DisplayControlMonitorLayout(MonitorLayoutPdu::from_buffer(&mut stream)?) + } + }; + let buffer_length = server_pdu.buffer_length(); + + if buffer_length != pdu_length { + Err(DisplayPipelineError::InvalidPduLength { + expected: pdu_length, + actual: buffer_length, + }) + } else { + Ok(server_pdu) + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let buffer_length = self.buffer_length(); + + stream.write_u32::(ClientPduType::from(self).to_u32().unwrap())?; + stream.write_u32::(buffer_length as u32)?; + + match self { + ClientPdu::DisplayControlMonitorLayout(pdu) => { + pdu.to_buffer(&mut stream).map_err(DisplayPipelineError::from) + } + } + } + + fn buffer_length(&self) -> usize { + RDP_DISPLAY_HEADER_SIZE + + match self { + ClientPdu::DisplayControlMonitorLayout(pdu) => pdu.buffer_length(), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +pub enum ClientPduType { + DisplayControlMonitorLayout = 0x02, +} + +impl<'a> From<&'a ClientPdu> for ClientPduType { + fn from(s: &'a ClientPdu) -> Self { + match s { + ClientPdu::DisplayControlMonitorLayout(_) => Self::DisplayControlMonitorLayout, + } + } +} + +#[derive(Debug, Fail)] +pub enum DisplayPipelineError { + #[fail(display = "IO error: {}", _0)] + IOError(#[fail(cause)] io::Error), + #[fail(display = "Invalid Header cmd ID")] + InvalidCmdId, + #[fail(display = "Invalid PDU length: expected ({}) != actual ({})", expected, actual)] + InvalidPduLength { expected: usize, actual: usize }, +} + +impl_from_error!(io::Error, DisplayPipelineError, DisplayPipelineError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index 7da974b3..b9a47270 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -11,9 +11,10 @@ use failure::Fail; use graphics_messages::RESET_GRAPHICS_PDU_SIZE; pub use graphics_messages::{ CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, CapabilitiesConfirmPdu, CapabilitiesV103Flags, - CapabilitiesV104Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, Codec1Type, - Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, - FrameAcknowledgePdu, MapSurfaceToOutputPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, + CapabilitiesV104Flags, CapabilitiesV107Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, + CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, + EvictCacheEntryPdu, FrameAcknowledgePdu, MapSurfaceToOutputPdu, MapSurfaceToScaledOutputPdu, + MapSurfaceToScaledWindowPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, WireToSurface1Pdu, WireToSurface2Pdu, }; use num_derive::{FromPrimitive, ToPrimitive}; @@ -41,6 +42,8 @@ pub enum ServerPdu { MapSurfaceToOutput(MapSurfaceToOutputPdu), CapabilitiesConfirm(CapabilitiesConfirmPdu), CacheImportReply(CacheImportReplyPdu), + MapSurfaceToScaledOutput(MapSurfaceToScaledOutputPdu), + MapSurfaceToScaledWindow(MapSurfaceToScaledWindowPdu), } impl PduParsing for ServerPdu { @@ -61,70 +64,55 @@ impl PduParsing for ServerPdu { } } - let (server_pdu, buffer_length) = match pdu_type { - ServerPduType::WireToSurface1 => { - let pdu = WireToSurface1Pdu::from_buffer(&mut stream)?; - let bitmap_data_length = pdu.bitmap_data_length; + let (server_pdu, buffer_length) = { + let pdu = match pdu_type { + ServerPduType::DeleteEncodingContext => { + ServerPdu::DeleteEncodingContext(DeleteEncodingContextPdu::from_buffer(&mut stream)?) + } + ServerPduType::WireToSurface1 => { + ServerPdu::WireToSurface1(WireToSurface1Pdu::from_buffer(&mut stream)?) + } + ServerPduType::WireToSurface2 => { + ServerPdu::WireToSurface2(WireToSurface2Pdu::from_buffer(&mut stream)?) + } + ServerPduType::SolidFill => ServerPdu::SolidFill(SolidFillPdu::from_buffer(&mut stream)?), + ServerPduType::SurfaceToSurface => { + ServerPdu::SurfaceToSurface(SurfaceToSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::SurfaceToCache => { + ServerPdu::SurfaceToCache(SurfaceToCachePdu::from_buffer(&mut stream)?) + } + ServerPduType::CacheToSurface => { + ServerPdu::CacheToSurface(CacheToSurfacePdu::from_buffer(&mut stream)?) + } + ServerPduType::EvictCacheEntry => { + ServerPdu::EvictCacheEntry(EvictCacheEntryPdu::from_buffer(&mut stream)?) + } + ServerPduType::CreateSurface => ServerPdu::CreateSurface(CreateSurfacePdu::from_buffer(&mut stream)?), + ServerPduType::DeleteSurface => ServerPdu::DeleteSurface(DeleteSurfacePdu::from_buffer(&mut stream)?), + ServerPduType::StartFrame => ServerPdu::StartFrame(StartFramePdu::from_buffer(&mut stream)?), + ServerPduType::EndFrame => ServerPdu::EndFrame(EndFramePdu::from_buffer(&mut stream)?), + ServerPduType::ResetGraphics => ServerPdu::ResetGraphics(ResetGraphicsPdu::from_buffer(&mut stream)?), + ServerPduType::MapSurfaceToOutput => { + ServerPdu::MapSurfaceToOutput(MapSurfaceToOutputPdu::from_buffer(&mut stream)?) + } + ServerPduType::CapabilitiesConfirm => { + ServerPdu::CapabilitiesConfirm(CapabilitiesConfirmPdu::from_buffer(&mut stream)?) + } + ServerPduType::CacheImportReply => { + ServerPdu::CacheImportReply(CacheImportReplyPdu::from_buffer(&mut stream)?) + } + ServerPduType::MapSurfaceToScaledOutput => { + ServerPdu::MapSurfaceToScaledOutput(MapSurfaceToScaledOutputPdu::from_buffer(&mut stream)?) + } + ServerPduType::MapSurfaceToScaledWindow => { + ServerPdu::MapSurfaceToScaledWindow(MapSurfaceToScaledWindowPdu::from_buffer(&mut stream)?) + } + _ => return Err(GraphicsPipelineError::UnexpectedServerPduType(pdu_type)), + }; + let buffer_length = pdu.buffer_length(); - let pdu = ServerPdu::WireToSurface1(pdu); - let buffer_length = pdu.buffer_length() + bitmap_data_length; - - (pdu, buffer_length) - } - ServerPduType::WireToSurface2 => { - let pdu = WireToSurface2Pdu::from_buffer(&mut stream)?; - let bitmap_data_length = pdu.bitmap_data_length; - - let pdu = ServerPdu::WireToSurface2(pdu); - let buffer_length = pdu.buffer_length() + bitmap_data_length; - - (pdu, buffer_length) - } - _ => { - let pdu = match pdu_type { - ServerPduType::DeleteEncodingContext => { - ServerPdu::DeleteEncodingContext(DeleteEncodingContextPdu::from_buffer(&mut stream)?) - } - ServerPduType::SolidFill => ServerPdu::SolidFill(SolidFillPdu::from_buffer(&mut stream)?), - ServerPduType::SurfaceToSurface => { - ServerPdu::SurfaceToSurface(SurfaceToSurfacePdu::from_buffer(&mut stream)?) - } - ServerPduType::SurfaceToCache => { - ServerPdu::SurfaceToCache(SurfaceToCachePdu::from_buffer(&mut stream)?) - } - ServerPduType::CacheToSurface => { - ServerPdu::CacheToSurface(CacheToSurfacePdu::from_buffer(&mut stream)?) - } - ServerPduType::EvictCacheEntry => { - ServerPdu::EvictCacheEntry(EvictCacheEntryPdu::from_buffer(&mut stream)?) - } - ServerPduType::CreateSurface => { - ServerPdu::CreateSurface(CreateSurfacePdu::from_buffer(&mut stream)?) - } - ServerPduType::DeleteSurface => { - ServerPdu::DeleteSurface(DeleteSurfacePdu::from_buffer(&mut stream)?) - } - ServerPduType::StartFrame => ServerPdu::StartFrame(StartFramePdu::from_buffer(&mut stream)?), - ServerPduType::EndFrame => ServerPdu::EndFrame(EndFramePdu::from_buffer(&mut stream)?), - ServerPduType::ResetGraphics => { - ServerPdu::ResetGraphics(ResetGraphicsPdu::from_buffer(&mut stream)?) - } - ServerPduType::MapSurfaceToOutput => { - ServerPdu::MapSurfaceToOutput(MapSurfaceToOutputPdu::from_buffer(&mut stream)?) - } - ServerPduType::CapabilitiesConfirm => { - ServerPdu::CapabilitiesConfirm(CapabilitiesConfirmPdu::from_buffer(&mut stream)?) - } - ServerPduType::CacheImportReply => { - ServerPdu::CacheImportReply(CacheImportReplyPdu::from_buffer(&mut stream)?) - } - ServerPduType::WireToSurface1 | ServerPduType::WireToSurface2 => unreachable!(), - _ => return Err(GraphicsPipelineError::UnexpectedServerPduType(pdu_type)), - }; - let buffer_length = pdu.buffer_length(); - - (pdu, buffer_length) - } + (pdu, buffer_length) }; if buffer_length != pdu_length { @@ -138,11 +126,7 @@ impl PduParsing for ServerPdu { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - let buffer_length = match self { - ServerPdu::WireToSurface1(pdu) => self.buffer_length() + pdu.bitmap_data_length, - ServerPdu::WireToSurface2(pdu) => self.buffer_length() + pdu.bitmap_data_length, - _ => self.buffer_length(), - }; + let buffer_length = self.buffer_length(); stream.write_u16::(ServerPduType::from(self).to_u16().unwrap())?; stream.write_u16::(0)?; // flags @@ -160,6 +144,8 @@ impl PduParsing for ServerPdu { ServerPdu::DeleteSurface(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), ServerPdu::ResetGraphics(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), ServerPdu::MapSurfaceToOutput(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::MapSurfaceToScaledOutput(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), + ServerPdu::MapSurfaceToScaledWindow(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), ServerPdu::StartFrame(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), ServerPdu::EndFrame(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), ServerPdu::EvictCacheEntry(pdu) => pdu.to_buffer(&mut stream).map_err(GraphicsPipelineError::from), @@ -182,6 +168,8 @@ impl PduParsing for ServerPdu { ServerPdu::DeleteSurface(pdu) => pdu.buffer_length(), ServerPdu::ResetGraphics(pdu) => pdu.buffer_length(), ServerPdu::MapSurfaceToOutput(pdu) => pdu.buffer_length(), + ServerPdu::MapSurfaceToScaledOutput(pdu) => pdu.buffer_length(), + ServerPdu::MapSurfaceToScaledWindow(pdu) => pdu.buffer_length(), ServerPdu::StartFrame(pdu) => pdu.buffer_length(), ServerPdu::EndFrame(pdu) => pdu.buffer_length(), ServerPdu::EvictCacheEntry(pdu) => pdu.buffer_length(), @@ -303,6 +291,8 @@ impl<'a> From<&'a ServerPdu> for ServerPduType { ServerPdu::EndFrame(_) => Self::EndFrame, ServerPdu::ResetGraphics(_) => Self::ResetGraphics, ServerPdu::MapSurfaceToOutput(_) => Self::MapSurfaceToOutput, + ServerPdu::MapSurfaceToScaledOutput(_) => Self::MapSurfaceToScaledOutput, + ServerPdu::MapSurfaceToScaledWindow(_) => Self::MapSurfaceToScaledWindow, ServerPdu::CapabilitiesConfirm(_) => Self::CapabilitiesConfirm, ServerPdu::CacheImportReply(_) => Self::CacheImportReply, } diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs index e956090f..148c2ff1 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -13,9 +13,9 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; pub use server::{ CacheToSurfacePdu, CapabilitiesConfirmPdu, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, - DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, MapSurfaceToOutputPdu, PixelFormat, ResetGraphicsPdu, - SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, - WireToSurface2Pdu, RESET_GRAPHICS_PDU_SIZE, + DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, MapSurfaceToOutputPdu, MapSurfaceToScaledOutputPdu, + MapSurfaceToScaledWindowPdu, PixelFormat, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, + SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, WireToSurface2Pdu, RESET_GRAPHICS_PDU_SIZE, }; use super::RDP_GFX_HEADER_SIZE; @@ -38,6 +38,8 @@ pub enum CapabilitySet { V10_4 { flags: CapabilitiesV104Flags }, V10_5 { flags: CapabilitiesV104Flags }, V10_6 { flags: CapabilitiesV104Flags }, + V10_6Err { flags: CapabilitiesV104Flags }, + V10_7 { flags: CapabilitiesV107Flags }, Unknown(Vec), } @@ -53,6 +55,8 @@ impl CapabilitySet { CapabilitySet::V10_4 { .. } => CapabilityVersion::V10_4, CapabilitySet::V10_5 { .. } => CapabilityVersion::V10_5, CapabilitySet::V10_6 { .. } => CapabilityVersion::V10_6, + CapabilitySet::V10_6Err { .. } => CapabilityVersion::V10_6Err, + CapabilitySet::V10_7 { .. } => CapabilityVersion::V10_7, CapabilitySet::Unknown { .. } => CapabilityVersion::Unknown, } } @@ -99,6 +103,12 @@ impl PduParsing for CapabilitySet { CapabilityVersion::V10_6 => Ok(CapabilitySet::V10_6 { flags: CapabilitiesV104Flags::from_bits_truncate(data.as_slice().read_u32::()?), }), + CapabilityVersion::V10_6Err => Ok(CapabilitySet::V10_6Err { + flags: CapabilitiesV104Flags::from_bits_truncate(data.as_slice().read_u32::()?), + }), + CapabilityVersion::V10_7 => Ok(CapabilitySet::V10_7 { + flags: CapabilitiesV107Flags::from_bits_truncate(data.as_slice().read_u32::()?), + }), CapabilityVersion::Unknown => Ok(CapabilitySet::Unknown(data)), } } @@ -117,6 +127,8 @@ impl PduParsing for CapabilitySet { CapabilitySet::V10_4 { flags } => stream.write_u32::(flags.bits())?, CapabilitySet::V10_5 { flags } => stream.write_u32::(flags.bits())?, CapabilitySet::V10_6 { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_6Err { flags } => stream.write_u32::(flags.bits())?, + CapabilitySet::V10_7 { flags } => stream.write_u32::(flags.bits())?, CapabilitySet::Unknown(data) => stream.write_all(data)?, } @@ -132,7 +144,9 @@ impl PduParsing for CapabilitySet { | CapabilitySet::V10_3 { .. } | CapabilitySet::V10_4 { .. } | CapabilitySet::V10_5 { .. } - | CapabilitySet::V10_6 { .. } => 4, + | CapabilitySet::V10_6 { .. } + | CapabilitySet::V10_6Err { .. } + | CapabilitySet::V10_7 { .. } => 4, CapabilitySet::V10_1 { .. } => 16, CapabilitySet::Unknown(data) => data.len(), } @@ -212,8 +226,10 @@ pub enum CapabilityVersion { V10_3 = 0xa_0301, V10_4 = 0xa_0400, V10_5 = 0xa_0502, - V10_6 = 0xa_0601, - Unknown = 0xa_0600, + V10_6 = 0xa_0600, // [MS-RDPEGFX-errata] + V10_6Err = 0xa_0601, // defined similar to FreeRDP to maintain best compatibility + V10_7 = 0xa_0701, + Unknown = 0xa_0702, } bitflags! { @@ -253,6 +269,15 @@ bitflags! { } } +bitflags! { + pub struct CapabilitiesV107Flags: u32 { + const SMALL_CACHE = 0x02; + const AVC_DISABLED = 0x20; + const AVC_THIN_CLIENT = 0x40; + const SCALEDMAP_DISABLE = 0x80; + } +} + #[derive(Debug, Fail)] pub enum GraphicsMessagesError { #[fail(display = "IO error: {}", _0)] diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index 8ca198e6..aadf431c 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -1,4 +1,4 @@ -use std::io; +use std::{fmt, io}; use bit_field::BitField; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; @@ -14,13 +14,25 @@ pub const RESET_GRAPHICS_PDU_SIZE: usize = 340; const MAX_RESET_GRAPHICS_WIDTH_HEIGHT: u32 = 32_766; const MONITOR_COUNT_MAX: u32 = 16; -#[derive(Debug, Clone, PartialEq)] +#[derive(Clone, PartialEq)] pub struct WireToSurface1Pdu { pub surface_id: u16, pub codec_id: Codec1Type, pub pixel_format: PixelFormat, pub destination_rectangle: Rectangle, - pub bitmap_data_length: usize, + pub bitmap_data: Vec, +} + +impl fmt::Debug for WireToSurface1Pdu { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("WireToSurface1Pdu") + .field("surface_id", &self.surface_id) + .field("codec_id", &self.codec_id) + .field("pixel_format", &self.pixel_format) + .field("destination_rectangle", &self.destination_rectangle) + .field("bitmap_data_length", &self.bitmap_data.len()) + .finish() + } } impl PduParsing for WireToSurface1Pdu { @@ -33,13 +45,14 @@ impl PduParsing for WireToSurface1Pdu { let pixel_format = PixelFormat::from_u8(stream.read_u8()?).ok_or(GraphicsMessagesError::InvalidFixelFormat)?; let destination_rectangle = Rectangle::from_buffer(&mut stream)?; let bitmap_data_length = stream.read_u32::()? as usize; - + let mut bitmap_data = vec![0; bitmap_data_length]; + stream.read_exact(&mut bitmap_data)?; Ok(Self { surface_id, codec_id, pixel_format, destination_rectangle, - bitmap_data_length, + bitmap_data, }) } @@ -48,23 +61,35 @@ impl PduParsing for WireToSurface1Pdu { stream.write_u16::(self.codec_id.to_u16().unwrap())?; stream.write_u8(self.pixel_format.to_u8().unwrap())?; self.destination_rectangle.to_buffer(&mut stream)?; - stream.write_u32::(self.bitmap_data_length as u32)?; - + stream.write_u32::(self.bitmap_data.len() as u32)?; + stream.write_all(&self.bitmap_data)?; Ok(()) } fn buffer_length(&self) -> usize { - 17 + 17 + self.bitmap_data.len() } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Clone, PartialEq)] pub struct WireToSurface2Pdu { pub surface_id: u16, pub codec_id: Codec2Type, pub codec_context_id: u32, pub pixel_format: PixelFormat, - pub bitmap_data_length: usize, + pub bitmap_data: Vec, +} + +impl fmt::Debug for WireToSurface2Pdu { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("WireToSurface2Pdu") + .field("surface_id", &self.surface_id) + .field("codec_id", &self.codec_id) + .field("codec_context_id", &self.codec_context_id) + .field("pixel_format", &self.pixel_format) + .field("bitmap_data_length", &self.bitmap_data.len()) + .finish() + } } impl PduParsing for WireToSurface2Pdu { @@ -77,13 +102,15 @@ impl PduParsing for WireToSurface2Pdu { let codec_context_id = stream.read_u32::()?; let pixel_format = PixelFormat::from_u8(stream.read_u8()?).ok_or(GraphicsMessagesError::InvalidFixelFormat)?; let bitmap_data_length = stream.read_u32::()? as usize; + let mut bitmap_data = vec![0; bitmap_data_length]; + stream.read_exact(&mut bitmap_data)?; Ok(Self { surface_id, codec_id, codec_context_id, pixel_format, - bitmap_data_length, + bitmap_data, }) } @@ -92,13 +119,14 @@ impl PduParsing for WireToSurface2Pdu { stream.write_u16::(self.codec_id.to_u16().unwrap())?; stream.write_u32::(self.codec_context_id)?; stream.write_u8(self.pixel_format.to_u8().unwrap())?; - stream.write_u32::(self.bitmap_data_length as u32)?; + stream.write_u32::(self.bitmap_data.len() as u32)?; + stream.write_all(&self.bitmap_data)?; Ok(()) } fn buffer_length(&self) -> usize { - 13 + 13 + self.bitmap_data.len() } } @@ -485,6 +513,98 @@ impl PduParsing for MapSurfaceToOutputPdu { } } +#[derive(Debug, Clone, PartialEq)] +pub struct MapSurfaceToScaledOutputPdu { + pub surface_id: u16, + pub output_origin_x: u32, + pub output_origin_y: u32, + pub target_width: u32, + pub target_height: u32, +} + +impl PduParsing for MapSurfaceToScaledOutputPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let _reserved = stream.read_u16::()?; + let output_origin_x = stream.read_u32::()?; + let output_origin_y = stream.read_u32::()?; + let target_width = stream.read_u32::()?; + let target_height = stream.read_u32::()?; + + Ok(Self { + surface_id, + output_origin_x, + output_origin_y, + target_width, + target_height, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u16::(0)?; // reserved + stream.write_u32::(self.output_origin_x)?; + stream.write_u32::(self.output_origin_y)?; + stream.write_u32::(self.target_width)?; + stream.write_u32::(self.target_height)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 20 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MapSurfaceToScaledWindowPdu { + pub surface_id: u16, + pub window_id: u64, + pub mapped_width: u32, + pub mapped_height: u32, + pub target_width: u32, + pub target_height: u32, +} + +impl PduParsing for MapSurfaceToScaledWindowPdu { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let surface_id = stream.read_u16::()?; + let window_id = stream.read_u64::()?; + let mapped_width = stream.read_u32::()?; + let mapped_height = stream.read_u32::()?; + let target_width = stream.read_u32::()?; + let target_height = stream.read_u32::()?; + + Ok(Self { + surface_id, + window_id, + mapped_width, + mapped_height, + target_width, + target_height, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.surface_id)?; + stream.write_u64::(self.window_id)?; // reserved + stream.write_u32::(self.mapped_width)?; + stream.write_u32::(self.mapped_height)?; + stream.write_u32::(self.target_width)?; + stream.write_u32::(self.target_height)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 26 + } +} + #[derive(Debug, Clone, PartialEq)] pub struct EvictCacheEntryPdu { pub cache_slot: u16, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 0a47b332..0293793e 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -113,7 +113,7 @@ pub const CAPABILITIES_ADVERTISE_BUFFER: [u8; 122] = [ 0x0, 0x0, 0x0, 0x2, 0x0, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x1, 0xa, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x3, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x0, - 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x2, 0x5, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x1, 0x6, + 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x2, 0x5, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x6, 0xa, 0x0, 0x4, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, ]; @@ -221,7 +221,7 @@ lazy_static! { right: 939, bottom: 743, }, - bitmap_data_length: 201, + bitmap_data: (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(), }; pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(); pub static ref WIRE_TO_SURFACE_2: WireToSurface2Pdu = WireToSurface2Pdu { @@ -229,7 +229,7 @@ lazy_static! { codec_id: Codec2Type::RemoteFxProgressive, codec_context_id: 4, pixel_format: PixelFormat::XRgb, - bitmap_data_length: 616, + bitmap_data: (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(), }; pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(); pub static ref DELETE_ENCODING_CONTEXT: DeleteEncodingContextPdu = DeleteEncodingContextPdu { @@ -417,24 +417,19 @@ fn from_buffer_correctly_parses_wire_to_surface_1_pdu() { let mut buffer = WIRE_TO_SURFACE_1_BUFFER.as_ref(); assert_eq!(*WIRE_TO_SURFACE_1, WireToSurface1Pdu::from_buffer(&mut buffer).unwrap()); - assert_eq!(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice(), buffer); } #[test] fn to_buffer_correctly_serializes_wire_to_surface_1_pdu() { let mut buffer = Vec::with_capacity(1024); WIRE_TO_SURFACE_1.to_buffer(&mut buffer).unwrap(); - buffer.extend_from_slice(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice()); assert_eq!(buffer, WIRE_TO_SURFACE_1_BUFFER.as_ref()); } #[test] fn buffer_length_is_correct_for_wire_to_surface_1_pdu() { - assert_eq!( - WIRE_TO_SURFACE_1_BUFFER.len(), - WIRE_TO_SURFACE_1.buffer_length() + WIRE_TO_SURFACE_1_BITMAP_DATA.len() - ); + assert_eq!(WIRE_TO_SURFACE_1_BUFFER.len(), WIRE_TO_SURFACE_1.buffer_length()); } #[test] @@ -442,24 +437,19 @@ fn from_buffer_correctly_parses_wire_to_surface_2_pdu() { let mut buffer = WIRE_TO_SURFACE_2_BUFFER.as_ref(); assert_eq!(*WIRE_TO_SURFACE_2, WireToSurface2Pdu::from_buffer(&mut buffer).unwrap()); - assert_eq!(WIRE_TO_SURFACE_2_BITMAP_DATA.as_slice(), buffer); } #[test] fn to_buffer_correctly_serializes_wire_to_surface_2_pdu() { let mut buffer = Vec::with_capacity(WIRE_TO_SURFACE_2_BUFFER.len()); WIRE_TO_SURFACE_2.to_buffer(&mut buffer).unwrap(); - buffer.extend_from_slice(WIRE_TO_SURFACE_2_BITMAP_DATA.as_slice()); assert_eq!(buffer, WIRE_TO_SURFACE_2_BUFFER.as_ref()); } #[test] fn buffer_length_is_correct_for_wire_to_surface_2_pdu() { - assert_eq!( - WIRE_TO_SURFACE_2_BUFFER.len(), - WIRE_TO_SURFACE_2.buffer_length() + WIRE_TO_SURFACE_2_BITMAP_DATA.len() - ); + assert_eq!(WIRE_TO_SURFACE_2_BUFFER.len(), WIRE_TO_SURFACE_2.buffer_length()); } #[test] diff --git a/ironrdp/src/rdp/vc/dvc/gfx/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/test.rs index 6a5c0e78..38d68fb8 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/test.rs @@ -1,8 +1,7 @@ use lazy_static::lazy_static; use super::graphics_messages::test::{ - FRAME_ACKNOWLEDGE, FRAME_ACKNOWLEDGE_BUFFER, WIRE_TO_SURFACE_1, WIRE_TO_SURFACE_1_BITMAP_DATA, - WIRE_TO_SURFACE_1_BUFFER, + FRAME_ACKNOWLEDGE, FRAME_ACKNOWLEDGE_BUFFER, WIRE_TO_SURFACE_1, WIRE_TO_SURFACE_1_BUFFER, }; use super::*; @@ -26,14 +25,12 @@ fn from_buffer_correctly_parses_server_pdu() { *HEADER_WITH_WIRE_TO_SURFACE_1, ServerPdu::from_buffer(&mut buffer).unwrap() ); - assert_eq!(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice(), buffer); } #[test] fn to_buffer_correctly_serializes_server_pdu() { let mut buffer = Vec::with_capacity(HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.len()); HEADER_WITH_WIRE_TO_SURFACE_1.to_buffer(&mut buffer).unwrap(); - buffer.extend_from_slice(WIRE_TO_SURFACE_1_BITMAP_DATA.as_slice()); assert_eq!(buffer, HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.as_slice()); } @@ -42,7 +39,7 @@ fn to_buffer_correctly_serializes_server_pdu() { fn buffer_length_is_correct_for_server_pdu() { assert_eq!( HEADER_WITH_WIRE_TO_SURFACE_1_BUFFER.len(), - HEADER_WITH_WIRE_TO_SURFACE_1.buffer_length() + WIRE_TO_SURFACE_1_BITMAP_DATA.len() + HEADER_WITH_WIRE_TO_SURFACE_1.buffer_length() ); } diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 556c0be4..fac77f6f 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -27,16 +27,16 @@ native-tls = ["dep:native-tls"] ironrdp = { path = "../ironrdp" } sspi = { version = "0.4.0", features = ["network_client"] } clap = { version = "4.0", features = ["derive", "cargo"] } -bytes = "0.5" +bytes = "1" failure = "0.1" chrono = "0.4" fern = "0.6" log = "0.4" -x509-parser = "0.6.0" -whoami = "0.8" +x509-parser = "0.14" +whoami = "1" num-traits = "0.2" num-derive = "0.3" -semver = "0.9" +semver = "1" lazy_static = "1.4" exitcode = "1.1" bufstream = "0.1" @@ -44,3 +44,4 @@ ring = "0.16.0" native-tls = { version = "0.2", optional = true } rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } dns-lookup = "1.0.8" +bitflags = "1" \ No newline at end of file diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs index 6349f203..0de49c84 100644 --- a/ironrdp_client/src/active_session.rs +++ b/ironrdp_client/src/active_session.rs @@ -30,6 +30,7 @@ pub fn process_active_stage( let mut x224_processor = x224::Processor::new( utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), config.global_channel_name.as_str(), + config.graphics_config, ); let mut fast_path_processor = fast_path::ProcessorBuilder { decoded_image, diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index b1d399ee..4babd554 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -1,8 +1,10 @@ +mod display; mod gfx; use std::collections::HashMap; use std::{cmp, io}; +use ironrdp::dvc::FieldType; use ironrdp::rdp::vc::{self, dvc}; use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; use ironrdp::{Data, ShareDataPdu}; @@ -12,22 +14,35 @@ use crate::transport::{ Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, }; -use crate::RdpError; +use crate::{GraphicsConfig, RdpError}; const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; +const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; pub struct Processor<'a> { static_channels: HashMap, + channel_map: HashMap, dynamic_channels: HashMap, global_channel_name: &'a str, + drdynvc_transport: Option, + static_transport: Option, + graphics_config: Option, } impl<'a> Processor<'a> { - pub fn new(static_channels: HashMap, global_channel_name: &'a str) -> Self { + pub fn new( + static_channels: HashMap, + global_channel_name: &'a str, + graphics_config: Option, + ) -> Self { Self { static_channels, dynamic_channels: HashMap::new(), + channel_map: HashMap::new(), global_channel_name, + drdynvc_transport: None, + static_transport: None, + graphics_config, } } @@ -38,34 +53,88 @@ impl<'a> Processor<'a> { let channel_ids = transport.decode(&mut stream)?; transport.set_decoded_context(channel_ids); - match self.static_channels.get(&channel_ids.channel_id).map(String::as_str) { - Some(vc::DRDYNVC_CHANNEL_NAME) => { - let transport = DynamicVirtualChannelTransport::new( - StaticVirtualChannelTransport::new(transport), - channel_ids.channel_id, - ); - - self.process_dvc_message(&mut stream, transport) - } + let channel_id = channel_ids.channel_id; + let initiator_id = channel_ids.initiator_id; + match self.static_channels.get(&channel_id).map(String::as_str) { + Some(vc::DRDYNVC_CHANNEL_NAME) => self.process_dvc_message(&mut stream, transport, channel_id), Some(name) if name == self.global_channel_name => { - let transport = ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( - transport, - channel_ids.initiator_id, - channel_ids.channel_id, - )); + if self.static_transport.is_none() { + self.static_transport = Some(ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( + transport, + initiator_id, + channel_id, + ))); + } + let transport = self.static_transport.as_mut().unwrap(); process_global_channel_pdu(&mut stream, transport) } - Some(_) => Err(RdpError::UnexpectedChannel(channel_ids.channel_id)), - None => panic!("Channel with {} ID must be added", channel_ids.channel_id), + Some(_) => Err(RdpError::UnexpectedChannel(channel_id)), + None => panic!("Channel with {} ID must be added", channel_id), } } + /// Sends a PDU on the dynamic channel. The upper layers are responsible for encoding the PDU and converting them to message + #[allow(dead_code)] + pub fn send_dynamic( + &mut self, + mut stream: impl io::Write, + channel_name: &str, + message: Vec, + ) -> Result<(), RdpError> { + if let Some(transport) = self.drdynvc_transport.as_mut() { + let channel_id = self + .channel_map + .get(channel_name) + .ok_or_else(|| RdpError::AccessToNonExistingChannelName(channel_name.to_string()))?; + let channel = self + .dynamic_channels + .get_mut(channel_id) + .ok_or(RdpError::AccessToNonExistingChannel(*channel_id))?; + let client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type: channel.channel_id_type, + channel_id: channel.channel_id, + data_size: message.len(), + }); + + transport.encode( + DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(message))?, + &mut stream, + )?; + } else { + return Err(RdpError::DynamicVirtualChannelNotConnected); + }; + + Ok(()) + } + + /// Send a pdu on the static global channel. Typically used to send input events + #[allow(dead_code)] + pub fn send_static(&mut self, mut stream: impl io::Write, message: ShareDataPdu) -> Result<(), RdpError> { + if let Some(transport) = self.static_transport.as_mut() { + transport.encode(message, &mut stream)?; + } else { + return Err(RdpError::StaticChannelNotConnected); + }; + + Ok(()) + } + fn process_dvc_message( &mut self, mut stream: impl io::BufRead + io::Write, - mut transport: DynamicVirtualChannelTransport, + transport: SendDataContextTransport, + channel_id: u16, ) -> Result<(), RdpError> { + if self.drdynvc_transport.is_none() { + self.drdynvc_transport = Some(DynamicVirtualChannelTransport::new( + StaticVirtualChannelTransport::new(transport), + channel_id, + )); + } + + let transport = self.drdynvc_transport.as_mut().unwrap(); + match transport.decode(&mut stream)? { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); @@ -82,9 +151,15 @@ impl<'a> Processor<'a> { dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {:?}", create_request); - let creation_status = if let Some(dyncamic_channel) = create_dvc(create_request.channel_name.as_str()) { + let creation_status = if let Some(dyncamic_channel) = create_dvc( + create_request.channel_name.as_str(), + create_request.channel_id, + create_request.channel_id_type, + ) { self.dynamic_channels .insert(create_request.channel_id, dyncamic_channel); + self.channel_map + .insert(create_request.channel_name.clone(), create_request.channel_id); dvc::DVC_CREATION_STATUS_OK } else { @@ -103,7 +178,7 @@ impl<'a> Processor<'a> { &mut stream, )?; - negotiate_dvc(&create_request, transport, &mut stream)?; + negotiate_dvc(&create_request, transport, &mut stream, &self.graphics_config)?; } dvc::ServerPdu::CloseRequest(close_request) => { debug!("Got DVC Close Request PDU: {:?}", close_request); @@ -177,7 +252,7 @@ impl<'a> Processor<'a> { fn process_global_channel_pdu( mut stream: impl io::BufRead + io::Write, - mut transport: ShareDataHeaderTransport, + transport: &mut ShareDataHeaderTransport, ) -> Result<(), RdpError> { let share_data_pdu = transport.decode(&mut stream)?; @@ -202,20 +277,33 @@ fn process_global_channel_pdu( } } -fn create_dvc(channel_name: &str) -> Option { +fn create_dvc(channel_name: &str, channel_id: u32, channel_id_type: FieldType) -> Option { match channel_name { - RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new(Box::new(gfx::Handler::new()))), - _ => None, + RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new( + Box::new(gfx::Handler::new()), + channel_id, + channel_id_type, + )), + RDP8_DISPLAY_PIPELINE_NAME => Some(DynamicChannel::new( + Box::new(display::Handler::new()), + channel_id, + channel_id_type, + )), + _ => { + error!("Unknown channel name: {}", channel_name); + None + } } } fn negotiate_dvc( create_request: &dvc::CreateRequestPdu, - mut transport: DynamicVirtualChannelTransport, + transport: &mut DynamicVirtualChannelTransport, mut stream: impl io::Write, + graphics_config: &Option, ) -> Result<(), RdpError> { if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { - let dvc_data = gfx::create_capabilities_advertise()?; + let dvc_data = gfx::create_capabilities_advertise(graphics_config)?; let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type: create_request.channel_id_type, channel_id: create_request.channel_id, @@ -238,14 +326,18 @@ trait DynamicChannelDataHandler { pub struct DynamicChannel { data: CompleteData, + channel_id_type: FieldType, + channel_id: u32, handler: Box, } impl DynamicChannel { - fn new(handler: Box) -> Self { + fn new(handler: Box, channel_id: u32, channel_id_type: FieldType) -> Self { Self { data: CompleteData::new(), handler, + channel_id_type, + channel_id, } } diff --git a/ironrdp_client/src/active_session/x224/display.rs b/ironrdp_client/src/active_session/x224/display.rs new file mode 100644 index 00000000..5c12e4f3 --- /dev/null +++ b/ironrdp_client/src/active_session/x224/display.rs @@ -0,0 +1,21 @@ +use ironrdp::{dvc::display::ServerPdu, PduParsing}; +use log::debug; + +use super::DynamicChannelDataHandler; +use crate::RdpError; + +pub struct Handler {} + +impl Handler { + pub fn new() -> Self { + Self {} + } +} + +impl DynamicChannelDataHandler for Handler { + fn process_complete_data(&mut self, complete_data: Vec) -> Result>, RdpError> { + let gfx_pdu = ServerPdu::from_buffer(&mut complete_data.as_slice())?; + debug!("Got Display PDU: {:?}", gfx_pdu); + Ok(None) + } +} diff --git a/ironrdp_client/src/active_session/x224/gfx.rs b/ironrdp_client/src/active_session/x224/gfx.rs index 5bd17e50..78d5b742 100644 --- a/ironrdp_client/src/active_session/x224/gfx.rs +++ b/ironrdp_client/src/active_session/x224/gfx.rs @@ -1,12 +1,16 @@ -use ironrdp::dvc::gfx::{ - zgfx, CapabilitiesAdvertisePdu, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, QueueDepth, - ServerPdu, +use bitflags::bitflags; +use ironrdp::{ + dvc::gfx::{ + zgfx, CapabilitiesAdvertisePdu, CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV107Flags, + CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, + QueueDepth, ServerPdu, + }, + PduParsing, }; -use ironrdp::PduParsing; use log::debug; use super::DynamicChannelDataHandler; -use crate::RdpError; +use crate::{GraphicsConfig, RdpError}; pub struct Handler { decompressor: zgfx::Decompressor, @@ -26,35 +30,154 @@ impl Handler { impl DynamicChannelDataHandler for Handler { fn process_complete_data(&mut self, complete_data: Vec) -> Result>, RdpError> { + let mut client_pdu_buffer: Vec = vec![]; self.decompressed_buffer.clear(); self.decompressor .decompress(complete_data.as_slice(), &mut self.decompressed_buffer)?; - let gfx_pdu = ServerPdu::from_buffer(self.decompressed_buffer.as_slice())?; - debug!("Got GFX PDU: {:?}", gfx_pdu); + let mut slice = &mut self.decompressed_buffer.as_slice(); + while !slice.is_empty() { + let gfx_pdu = ServerPdu::from_buffer(&mut slice)?; + debug!("Got GFX PDU: {:?}", gfx_pdu); - if let ServerPdu::EndFrame(end_frame_pdu) = gfx_pdu { - self.frames_decoded += 1; - let client_pdu = ClientPdu::FrameAcknowledge(FrameAcknowledgePdu { - queue_depth: QueueDepth::Suspend, - frame_id: end_frame_pdu.frame_id, - total_frames_decoded: self.frames_decoded, - }); - debug!("Sending GFX PDU: {:?}", client_pdu); - - let mut client_pdu_buffer = Vec::with_capacity(client_pdu.buffer_length()); - client_pdu.to_buffer(&mut client_pdu_buffer)?; - - Ok(Some(client_pdu_buffer)) - } else { - Ok(None) + if let ServerPdu::EndFrame(end_frame_pdu) = gfx_pdu { + self.frames_decoded += 1; + // Enqueue an acknowledge for every end frame + let client_pdu = ClientPdu::FrameAcknowledge(FrameAcknowledgePdu { + queue_depth: QueueDepth::Suspend, + frame_id: end_frame_pdu.frame_id, + total_frames_decoded: self.frames_decoded, + }); + debug!("Sending GFX PDU: {:?}", client_pdu); + client_pdu_buffer.reserve(client_pdu_buffer.len() + client_pdu.buffer_length()); + client_pdu.to_buffer(&mut client_pdu_buffer)?; + } else { + // Handle the normal PDU + } } + + if !client_pdu_buffer.is_empty() { + return Ok(Some(client_pdu_buffer)); + } + + Ok(None) } } -pub fn create_capabilities_advertise() -> Result, RdpError> { - let capabilities_advertise = ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu(vec![CapabilitySet::V8 { - flags: CapabilitiesV8Flags::empty(), - }])); +bitflags! { + struct CapabilityVersion: u32 { + const V8 = 1 << 0; + const V8_1 = 1 << 1; + const V10 = 1 << 2; + const V10_1 = 1 << 3; + const V10_2 = 1 << 4; + const V10_3 = 1 << 5; + const V10_4 = 1 << 6; + const V10_5 = 1 << 7; + const V10_6 = 1 << 8; + const V10_6ERR = 1 << 9; + const V10_7 = 1 << 10; + } +} + +pub fn create_capabilities_advertise(graphics_config: &Option) -> Result, RdpError> { + let mut capabilities = vec![]; + + if let Some(config) = graphics_config { + let capability_version = CapabilityVersion::from_bits(config.capabilities) + .ok_or(RdpError::InvalidCapabilitiesMask(config.capabilities))?; + + if capability_version.contains(CapabilityVersion::V8) { + let flags = if config.thin_client { + CapabilitiesV8Flags::THIN_CLIENT + } else if config.small_cache { + CapabilitiesV8Flags::SMALL_CACHE + } else { + CapabilitiesV8Flags::empty() + }; + + capabilities.push(CapabilitySet::V8 { flags }); + } + + if capability_version.contains(CapabilityVersion::V8_1) { + let mut flags = CapabilitiesV81Flags::empty(); + if config.thin_client { + flags |= CapabilitiesV81Flags::THIN_CLIENT; + } + + if config.small_cache { + flags |= CapabilitiesV81Flags::SMALL_CACHE; + } + + if config.h264 { + flags |= CapabilitiesV81Flags::AVC420_ENABLED; + } + + capabilities.push(CapabilitySet::V8_1 { flags }); + } + + if config.avc444 { + let flags = if config.small_cache { + CapabilitiesV10Flags::SMALL_CACHE + } else { + CapabilitiesV10Flags::empty() + }; + + if capability_version.contains(CapabilityVersion::V10) { + capabilities.push(CapabilitySet::V10 { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_1) { + capabilities.push(CapabilitySet::V10_1 {}); + } + + if capability_version.contains(CapabilityVersion::V10_2) { + capabilities.push(CapabilitySet::V10_2 { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_3) { + let flags = if config.thin_client { + CapabilitiesV103Flags::AVC_THIN_CLIENT + } else { + CapabilitiesV103Flags::empty() + }; + capabilities.push(CapabilitySet::V10_3 { flags }); + } + + let mut flags = if config.small_cache { + CapabilitiesV104Flags::SMALL_CACHE + } else { + CapabilitiesV104Flags::empty() + }; + + if config.thin_client { + flags |= CapabilitiesV104Flags::AVC_THIN_CLIENT; + } + + if capability_version.contains(CapabilityVersion::V10_4) { + capabilities.push(CapabilitySet::V10_4 { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_5) { + capabilities.push(CapabilitySet::V10_5 { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_6) { + capabilities.push(CapabilitySet::V10_6 { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_6ERR) { + capabilities.push(CapabilitySet::V10_6Err { flags }); + } + + if capability_version.contains(CapabilityVersion::V10_7) { + capabilities.push(CapabilitySet::V10_7 { + flags: CapabilitiesV107Flags::from_bits(flags.bits()).unwrap(), + }); + } + } + } + log::info!("Capabilities: {:?}", capabilities); + let capabilities_advertise = ClientPdu::CapabilitiesAdvertise(CapabilitiesAdvertisePdu(capabilities)); let mut capabilities_advertise_buffer = Vec::with_capacity(capabilities_advertise.buffer_length()); capabilities_advertise.to_buffer(&mut capabilities_advertise_buffer)?; diff --git a/ironrdp_client/src/config.rs b/ironrdp_client/src/config.rs index 017de3b3..f62ab39d 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp_client/src/config.rs @@ -1,7 +1,7 @@ -use std::net::SocketAddr; +use std::{net::SocketAddr, num::ParseIntError}; use clap::{clap_derive::ValueEnum, crate_name, Parser}; -use ironrdp_client::InputConfig; +use ironrdp_client::{GraphicsConfig, InputConfig}; use sspi::AuthIdentity; const DEFAULT_WIDTH: u16 = 1920; @@ -57,6 +57,13 @@ impl KeyboardType { } } +fn parse_hex(input: &str) -> Result { + if input.starts_with("0x") { + u32::from_str_radix(input.get(2..).unwrap_or(""), 16) + } else { + input.parse::() + } +} /// Devolutions IronRDP client #[derive(Parser, Debug)] #[clap(author = "Devolutions", about = "Devolutions-IronRDP client")] @@ -105,6 +112,27 @@ struct Args { /// Contains a value that uniquely identifies the client #[clap(long, value_parser, default_value_t = String::from(""))] dig_product_id: String, + + /// Enable AVC444 + #[clap(long, group = "avc")] + avc444: bool, + + /// Enable H264 + #[clap(long, group = "avc")] + h264: bool, + + /// Enable thin client + #[clap(long)] + thin_client: bool, + + /// Enable small cache + #[clap(long)] + small_cache: bool, + + /// Enabled capability versions. Each bit represents enabling a capability version + /// starting from V8 to V10_7 + #[clap(long, value_parser = parse_hex, default_value_t = 0)] + capabilities: u32, } fn is_socket_address(s: &str) -> Result { @@ -116,6 +144,18 @@ impl Config { pub fn parse_args() -> Self { let args = Args::parse(); + let graphics_config = if args.avc444 || args.h264 { + Some(GraphicsConfig { + avc444: args.avc444, + h264: args.h264, + thin_client: args.thin_client, + small_cache: args.small_cache, + capabilities: args.capabilities, + }) + } else { + None + }; + let input = InputConfig { credentials: AuthIdentity { username: args.username, @@ -132,6 +172,7 @@ impl Config { height: DEFAULT_HEIGHT, global_channel_name: GLOBAL_CHANNEL_NAME.to_string(), user_channel_name: USER_CHANNEL_NAME.to_string(), + graphics_config, }; Self { diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp_client/src/connection_sequence/user_info.rs index af2df88d..867286f2 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp_client/src/connection_sequence/user_info.rs @@ -1,9 +1,9 @@ -use std::{env, net}; +use std::{env, net, str::FromStr}; use ironrdp::gcc::{ - ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, ClientNetworkData, - ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, - SupportedColorDepths, + Channel, ChannelOptions, ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, + ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, + SecureAccessSequence, SupportedColorDepths, }; use ironrdp::nego::SecurityProtocol; use ironrdp::rdp::capability_sets::{ @@ -33,7 +33,7 @@ pub fn create_gcc_blocks( Ok(ClientGccBlocks { core: create_core_data(config, selected_protocol)?, security: create_security_data(), - network: Some(create_network_data()), + network: Some(create_network_data(config)), cluster: None, monitor: None, message_channel: None, @@ -138,22 +138,24 @@ fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) - optional_data: create_optional_core_data(config, selected_protocol)?, }) } - fn create_optional_core_data( config: &InputConfig, selected_protocol: SecurityProtocol, ) -> Result { + let mut early_capability_flags = + ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE | ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU; + + if config.graphics_config.is_some() { + early_capability_flags |= ClientEarlyCapabilityFlags::SUPPORT_DYN_VC_GFX_PROTOCOL; + } + Ok(ClientCoreOptionalData { post_beta_color_depth: Some(ColorDepth::Bpp4), // ignored client_product_id: Some(1), serial_number: Some(0), high_color_depth: Some(HighColorDepth::Bpp24), supported_color_depths: Some(SupportedColorDepths::all()), - early_capability_flags: Some( - ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE - | ClientEarlyCapabilityFlags::WANT_32_BPP_SESSION - | ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU, - ), + early_capability_flags: Some(early_capability_flags), dig_product_id: Some(config.dig_product_id.clone()), connection_type: Some(ConnectionType::Lan), server_selected_protocol: Some(selected_protocol), @@ -169,8 +171,17 @@ fn create_security_data() -> ClientSecurityData { ClientSecurityData::no_security() } -fn create_network_data() -> ClientNetworkData { - ClientNetworkData { channels: Vec::new() } +fn create_network_data(config: &InputConfig) -> ClientNetworkData { + if config.graphics_config.is_some() { + ClientNetworkData { + channels: vec![Channel { + name: String::from_str("drdynvc").unwrap(), + options: ChannelOptions::COMPRESS_RDP, + }], + } + } else { + ClientNetworkData { channels: Vec::new() } + } } fn create_general_capability_set() -> CapabilitySet { diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs index cdfe1a76..d629534e 100644 --- a/ironrdp_client/src/errors.rs +++ b/ironrdp_client/src/errors.rs @@ -1,9 +1,12 @@ use std::io; use failure::Fail; -use ironrdp::dvc::gfx; -use ironrdp::fast_path::FastPathError; -use ironrdp::{codecs, nego, rdp, McsError}; +use ironrdp::{ + codecs, + dvc::{display, gfx}, + fast_path::FastPathError, + nego, rdp, McsError, +}; #[derive(Debug, Fail)] pub enum RdpError { @@ -61,6 +64,8 @@ pub enum RdpError { InvalidChannelIdError(String), #[fail(display = "Graphics pipeline protocol error: {}", _0)] GraphicsPipelineError(gfx::GraphicsPipelineError), + #[fail(display = "Display pipeline protocol error: {}", _0)] + DisplayPipelineError(display::DisplayPipelineError), #[fail(display = "ZGFX error: {}", _0)] ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), #[fail(display = "Fast-Path error: {}", _0)] @@ -69,6 +74,8 @@ pub enum RdpError { RdpError(#[fail(cause)] ironrdp::RdpError), #[fail(display = "access to the non-existing channel: {}", _0)] AccessToNonExistingChannel(u32), + #[fail(display = "access to the non-existing channel name: {}", _0)] + AccessToNonExistingChannelName(String), #[fail(display = "data in unexpected channel: {}", _0)] UnexpectedChannel(u16), #[fail(display = "unexpected Surface Command codec ID: {}", _0)] @@ -90,6 +97,12 @@ pub enum RdpError { ServerError(String), #[fail(display = "Missing peer certificate")] MissingPeerCertificate, + #[fail(display = "Dynamic virtual channel not connected")] + DynamicVirtualChannelNotConnected, + #[fail(display = "Static global channel not connected")] + StaticChannelNotConnected, + #[fail(display = "Invalid Capabilities mask provided. Mask: {:X}", _0)] + InvalidCapabilitiesMask(u32), #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[fail(display = "Invalid DER structure: {}", _0)] DerEncode(#[fail(cause)] native_tls::Error), @@ -137,6 +150,12 @@ impl From for RdpError { } } +impl From for RdpError { + fn from(e: display::DisplayPipelineError) -> Self { + RdpError::DisplayPipelineError(e) + } +} + impl From for RdpError { fn from(e: gfx::zgfx::ZgfxError) -> Self { RdpError::ZgfxError(e) diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs index 6efd4939..7a38f5d5 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp_client/src/lib.rs @@ -13,6 +13,14 @@ pub use self::errors::RdpError; const BUF_STREAM_SIZE: usize = 32 * 1024; +pub struct GraphicsConfig { + pub avc444: bool, + pub h264: bool, + pub thin_client: bool, + pub small_cache: bool, + pub capabilities: u32, +} + pub struct InputConfig { pub credentials: sspi::AuthIdentity, pub security_protocol: nego::SecurityProtocol, @@ -25,4 +33,5 @@ pub struct InputConfig { pub height: u16, pub global_channel_name: String, pub user_channel_name: String, + pub graphics_config: Option, } diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index 8900aded..cb426f6e 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -7,6 +7,7 @@ use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError use log::error; #[cfg(all(feature = "native-tls", not(feature = "rustls")))] use native_tls::{HandshakeError, TlsConnector}; +use x509_parser::prelude::{FromDer, X509Certificate}; use self::config::Config; @@ -160,7 +161,7 @@ pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { } pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { - let res = x509_parser::parse_x509_der(&cert[..]) + let res = X509Certificate::from_der(&cert[..]) .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; From 659b3425bdd6544f6a2d48cfa9c4aed9b0309dd0 Mon Sep 17 00:00:00 2001 From: Sandeep Bansal Date: Wed, 26 Oct 2022 08:49:55 -0700 Subject: [PATCH 0083/1273] Adding some missing message parser --- .gitignore | 2 +- ironrdp/src/codecs/rfx.rs | 1 - ironrdp/src/input.rs | 9 + ironrdp/src/input/fast_path.rs | 239 ++++++++++++++++++ ironrdp/src/input/tests.rs | 83 ++++++ ironrdp/src/nego.rs | 7 +- ironrdp/src/rdp/vc/dvc/gfx.rs | 13 +- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 5 +- .../dvc/gfx/graphics_messages/avc_messages.rs | 177 +++++++++++++ .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 65 ++++- 10 files changed, 587 insertions(+), 14 deletions(-) create mode 100644 ironrdp/src/input/fast_path.rs create mode 100644 ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs diff --git a/.gitignore b/.gitignore index 64706cbd..49bac416 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ ironrdp_client.log # Editor/IDE files *~ tags -.idea/ +.idea/ \ No newline at end of file diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index aa276bce..ffe843a4 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -11,7 +11,6 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use crate::{impl_from_error, PduBufferParsing, PduParsing}; - pub mod color_conversion; pub mod dwt; pub mod image_processing; diff --git a/ironrdp/src/input.rs b/ironrdp/src/input.rs index baf97952..00802dbd 100644 --- a/ironrdp/src/input.rs +++ b/ironrdp/src/input.rs @@ -10,6 +10,7 @@ use crate::{impl_from_error, PduParsing}; #[cfg(test)] mod tests; +pub mod fast_path; pub mod mouse; pub mod mouse_x; pub mod scan_code; @@ -142,6 +143,14 @@ pub enum InputEventError { IOError(#[fail(cause)] io::Error), #[fail(display = "Invalid Input Event type: {}", _0)] InvalidInputEventType(u16), + #[fail(display = "Encryption not supported")] + EncryptionNotSupported, + #[fail(display = "Event code not supported {}", _0)] + EventCodeUnsupported(u8), + #[fail(display = "Keyboard flags not supported {}", _0)] + KeyboardFlagsUnsupported(u8), + #[fail(display = "Synchronize flags not supported {}", _0)] + SynchronizeFlagsUnsupported(u8), } impl_from_error!(io::Error, InputEventError, InputEventError::IOError); diff --git a/ironrdp/src/input/fast_path.rs b/ironrdp/src/input/fast_path.rs new file mode 100644 index 00000000..f2080a80 --- /dev/null +++ b/ironrdp/src/input/fast_path.rs @@ -0,0 +1,239 @@ +use std::io::{self}; + +use bit_field::BitField; +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; + +use crate::fast_path::EncryptionFlags; +use crate::input::{InputEventError, MousePdu, MouseXPdu}; + +use crate::{per, PduParsing}; + +/// Implements the Fast-Path RDP message header PDU. +#[derive(Debug, Clone, PartialEq)] +pub struct FastPathInputHeader { + pub flags: EncryptionFlags, + pub data_length: usize, + pub num_events: u8, +} + +impl PduParsing for FastPathInputHeader { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let header = stream.read_u8()?; + let flags = EncryptionFlags::from_bits_truncate(header.get_bits(6..8)); + let mut num_events = header.get_bits(2..6); + let (length, sizeof_length) = per::read_length(&mut stream)?; + + if !flags.is_empty() { + return Err(InputEventError::EncryptionNotSupported); + } + + let num_events_length = if num_events == 0 { + num_events = stream.read_u8()?; + 1 + } else { + 0 + }; + + let data_length = length as usize - sizeof_length - 1 - num_events_length; + + Ok(FastPathInputHeader { + flags, + data_length, + num_events, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut header = 0u8; + header.set_bits(0..2, 0); // fast-path action + if self.num_events < 16 { + header.set_bits(2..7, self.num_events); + } + header.set_bits(6..8, self.flags.bits()); + stream.write_u8(header)?; + + per::write_length(&mut stream, (self.data_length + self.buffer_length()) as u16)?; + if self.num_events > 15 { + stream.write_u8(self.num_events)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + let num_events_length = if self.num_events < 16 { 0 } else { 1 }; + 1 + per::sizeof_length(self.data_length as u16 + num_events_length as u16 + 1) + num_events_length + } +} + +#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[repr(u8)] +pub enum FastpathInputEventType { + ScanCode = 0x0000, + Mouse = 0x0001, + MouseX = 0x0002, + Sync = 0x0003, + Unicode = 0x0004, + QoeTimestamp = 0x0006, +} + +#[derive(Debug, Clone, PartialEq)] +pub enum FastPathInputEvent { + KeyboardEvent(KeyboardFlags, u8), + UnicodeKeyboardEvent(KeyboardFlags, u16), + MouseEvent(MousePdu), + MouseEventEx(MouseXPdu), + QoeEvent(u32), + SyncEvent(SynchronizeFlags), +} + +impl PduParsing for FastPathInputEvent { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let header = stream.read_u8()?; + let flags = header.get_bits(0..5); + let code = header.get_bits(5..8); + let code: FastpathInputEventType = + FastpathInputEventType::from_u8(code).ok_or(InputEventError::EventCodeUnsupported(code))?; + let event = match code { + FastpathInputEventType::ScanCode => { + let code = stream.read_u8()?; + let flags = KeyboardFlags::from_bits(flags).ok_or(InputEventError::KeyboardFlagsUnsupported(flags))?; + FastPathInputEvent::KeyboardEvent(flags, code) + } + FastpathInputEventType::Mouse => { + let mouse_event = MousePdu::from_buffer(stream)?; + FastPathInputEvent::MouseEvent(mouse_event) + } + FastpathInputEventType::MouseX => { + let mouse_event = MouseXPdu::from_buffer(stream)?; + FastPathInputEvent::MouseEventEx(mouse_event) + } + FastpathInputEventType::Sync => { + let flags = + SynchronizeFlags::from_bits(flags).ok_or(InputEventError::SynchronizeFlagsUnsupported(flags))?; + FastPathInputEvent::SyncEvent(flags) + } + FastpathInputEventType::Unicode => { + let code = stream.read_u16::()?; + let flags = KeyboardFlags::from_bits(flags).ok_or(InputEventError::KeyboardFlagsUnsupported(flags))?; + FastPathInputEvent::UnicodeKeyboardEvent(flags, code) + } + FastpathInputEventType::QoeTimestamp => { + let code = stream.read_u32::()?; + FastPathInputEvent::QoeEvent(code) + } + }; + Ok(event) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let mut header = 0u8; + let (flags, code) = match self { + FastPathInputEvent::KeyboardEvent(flags, _) => (flags.bits(), FastpathInputEventType::ScanCode), + FastPathInputEvent::UnicodeKeyboardEvent(flags, _) => (flags.bits(), FastpathInputEventType::Unicode), + FastPathInputEvent::MouseEvent(_) => (0, FastpathInputEventType::Mouse), + FastPathInputEvent::MouseEventEx(_) => (0, FastpathInputEventType::MouseX), + FastPathInputEvent::QoeEvent(_) => (0, FastpathInputEventType::QoeTimestamp), + FastPathInputEvent::SyncEvent(flags) => (flags.bits(), FastpathInputEventType::Sync), + }; + header.set_bits(0..5, flags); + header.set_bits(5..8, code.to_u8().unwrap()); + stream.write_u8(header)?; + match self { + FastPathInputEvent::KeyboardEvent(_, code) => { + stream.write_u8(*code)?; + } + FastPathInputEvent::UnicodeKeyboardEvent(_, code) => { + stream.write_u16::(*code)?; + } + FastPathInputEvent::MouseEvent(pdu) => { + pdu.to_buffer(stream)?; + } + FastPathInputEvent::MouseEventEx(pdu) => { + pdu.to_buffer(stream)?; + } + FastPathInputEvent::QoeEvent(stamp) => { + stream.write_u32::(*stamp)?; + } + _ => {} + }; + Ok(()) + } + + fn buffer_length(&self) -> usize { + 1 + match self { + FastPathInputEvent::KeyboardEvent(_, _) => 1, + FastPathInputEvent::UnicodeKeyboardEvent(_, _) => 2, + FastPathInputEvent::MouseEvent(pdu) => pdu.buffer_length(), + FastPathInputEvent::MouseEventEx(pdu) => pdu.buffer_length(), + FastPathInputEvent::QoeEvent(_) => 4, + FastPathInputEvent::SyncEvent(_) => 0, + } + } +} + +bitflags! { + pub struct KeyboardFlags: u8 { + const FASTPATH_INPUT_KBDFLAGS_RELEASE = 0x01; + const FASTPATH_INPUT_KBDFLAGS_EXTENDED = 0x02; + const FASTPATH_INPUT_KBDFLAGS_EXTENDED1 = 0x04; + } +} + +bitflags! { + pub struct SynchronizeFlags: u8 { + const FASTPATH_INPUT_SYNC_SCROLL_LOCK = 0x01; + const FASTPATH_INPUT_SYNC_NUM_LOCK = 0x02; + const FASTPATH_INPUT_SYNC_CAPS_LOCK = 0x04; + const FASTPATH_INPUT_SYNC_KANA_LOCK = 0x08; + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct FastPathInput(pub Vec); + +impl PduParsing for FastPathInput { + type Error = InputEventError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let header = FastPathInputHeader::from_buffer(&mut stream)?; + let events = (0..header.num_events) + .map(|_| FastPathInputEvent::from_buffer(&mut stream)) + .collect::, _>>()?; + + Ok(Self(events)) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + let data_length = self.0.iter().map(PduParsing::buffer_length).sum::(); + let header = FastPathInputHeader { + num_events: self.0.len() as u8, + flags: EncryptionFlags::empty(), + data_length, + }; + header.to_buffer(&mut stream)?; + + for event in self.0.iter() { + event.to_buffer(&mut stream)?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + let data_length = self.0.iter().map(PduParsing::buffer_length).sum::(); + let header = FastPathInputHeader { + num_events: self.0.len() as u8, + flags: EncryptionFlags::empty(), + data_length, + }; + header.buffer_length() + data_length + } +} diff --git a/ironrdp/src/input/tests.rs b/ironrdp/src/input/tests.rs index 8b137891..44700801 100644 --- a/ironrdp/src/input/tests.rs +++ b/ironrdp/src/input/tests.rs @@ -1 +1,84 @@ +use lazy_static::lazy_static; +use crate::input::{ + mouse::{ButtonEvents, MovementEvents, WheelEvents}, + MousePdu, +}; + +use super::fast_path::{FastPathInput, FastPathInputEvent}; +use crate::PduParsing; + +const FASTPATH_INPUT_MESSAGE: [u8; 44] = [ + 0x18, 0x2c, 0x20, 0x0, 0x90, 0x1a, 0x0, 0x26, 0x4, 0x20, 0x0, 0x8, 0x1b, 0x0, 0x26, 0x4, 0x20, 0x0, 0x10, 0x1b, + 0x0, 0x26, 0x4, 0x20, 0x0, 0x8, 0x1a, 0x0, 0x27, 0x4, 0x20, 0x0, 0x8, 0x19, 0x0, 0x27, 0x4, 0x20, 0x0, 0x8, 0x19, + 0x0, 0x28, 0x4, +]; + +lazy_static! { + pub static ref FASTPATH_INPUT: FastPathInput = FastPathInput(vec![ + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: 26, + y_position: 1062 + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: 27, + y_position: 1062 + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: 27, + y_position: 1062 + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: 26, + y_position: 1063 + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: 25, + y_position: 1063 + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: 25, + y_position: 1064 + }) + ]); +} + +#[test] +fn from_buffer_correctly_parses_fastpath_input_message() { + let mut buffer = FASTPATH_INPUT_MESSAGE.as_ref(); + + assert_eq!(*FASTPATH_INPUT, FastPathInput::from_buffer(&mut buffer).unwrap()); + assert!(buffer.is_empty()); +} + +#[test] +fn to_buffer_correctly_serializes_fastpath_input_message() { + let mut buffer = Vec::with_capacity(1024); + FASTPATH_INPUT.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, FASTPATH_INPUT_MESSAGE.as_ref()); +} diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index dae51d59..4296b472 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -131,7 +131,7 @@ impl PduParsing for Request { type Error = NegotiationError; fn from_buffer(mut stream: impl io::Read) -> Result { - let _tpkt = TpktHeader::from_buffer(&mut stream)?; + let tpkt = TpktHeader::from_buffer(&mut stream)?; crate::x224::read_and_check_tpdu_header(&mut stream, X224TPDUType::ConnectionRequest)?; @@ -140,10 +140,9 @@ impl PduParsing for Request { read_and_check_class(&mut stream, 0)?; - let mut stream = io::BufReader::new(stream); - let mut buffer = Vec::new(); + let mut buffer = vec![0u8; tpkt.length - TPDU_REQUEST_LENGTH]; - stream.read_to_end(&mut buffer)?; + stream.read_exact(buffer.as_mut_slice())?; let mut stream = buffer.as_slice(); let nego_data = if let Some((nego_data, read_len)) = read_nego_data(stream) { diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index b9a47270..32b6d3e7 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -10,12 +10,13 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use failure::Fail; use graphics_messages::RESET_GRAPHICS_PDU_SIZE; pub use graphics_messages::{ - CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, CapabilitiesConfirmPdu, CapabilitiesV103Flags, - CapabilitiesV104Flags, CapabilitiesV107Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, - CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, - EvictCacheEntryPdu, FrameAcknowledgePdu, MapSurfaceToOutputPdu, MapSurfaceToScaledOutputPdu, - MapSurfaceToScaledWindowPdu, PixelFormat, QueueDepth, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, - SurfaceToCachePdu, SurfaceToSurfacePdu, WireToSurface1Pdu, WireToSurface2Pdu, + Avc420BitmapStream, Avc444BitmapStream, CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, + CapabilitiesConfirmPdu, CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV107Flags, CapabilitiesV10Flags, + CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, Codec1Type, Codec2Type, CreateSurfacePdu, + DeleteEncodingContextPdu, DeleteSurfacePdu, Encoding, EndFramePdu, EvictCacheEntryPdu, FrameAcknowledgePdu, + MapSurfaceToOutputPdu, MapSurfaceToScaledOutputPdu, MapSurfaceToScaledWindowPdu, PixelFormat, QuantQuality, + QueueDepth, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, + WireToSurface1Pdu, WireToSurface2Pdu, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs index 148c2ff1..450932b2 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -4,7 +4,7 @@ mod server; pub mod test; use std::io; - +mod avc_messages; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; pub use client::{CacheImportReplyPdu, CapabilitiesAdvertisePdu, FrameAcknowledgePdu, QueueDepth}; @@ -22,6 +22,7 @@ use super::RDP_GFX_HEADER_SIZE; use crate::gcc::MonitorDataError; use crate::utils::Rectangle; use crate::{impl_from_error, PduParsing}; +pub use avc_messages::{Avc420BitmapStream, Avc444BitmapStream, Encoding, QuantQuality}; const CAPABILITY_SET_HEADER_SIZE: usize = 8; @@ -298,6 +299,8 @@ pub enum GraphicsMessagesError { InvalidResetGraphicsPduMonitorsCount { actual: u32, max: u32 }, #[fail(display = "Invalid capabilities version")] InvalidCapabilitiesVersion, + #[fail(display = "Both luma and chroma packets specified but length is missing")] + InvalidAvcEncoding, } impl_from_error!(io::Error, GraphicsMessagesError, GraphicsMessagesError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs new file mode 100644 index 00000000..1e158a65 --- /dev/null +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs @@ -0,0 +1,177 @@ +use std::{fmt::Debug, io::Write}; + +use super::GraphicsMessagesError; +use crate::{PduBufferParsing, PduParsing, Rectangle}; +use bit_field::BitField; +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +#[derive(Debug, Clone, PartialEq)] +pub struct QuantQuality { + pub quantization_parameter: u8, + pub progressive: bool, + pub quality: u8, +} + +impl PduParsing for QuantQuality { + type Error = GraphicsMessagesError; + + fn from_buffer(mut stream: impl std::io::Read) -> Result + where + Self: Sized, + { + let data = stream.read_u8()?; + let qp = data.get_bits(0..6); + let progressive = data.get_bit(7); + let quality = stream.read_u8()?; + Ok(QuantQuality { + quantization_parameter: qp, + progressive, + quality, + }) + } + + fn to_buffer(&self, mut stream: impl std::io::Write) -> Result<(), Self::Error> { + let mut data = 0u8; + data.set_bits(0..6, self.quantization_parameter); + data.set_bit(7, self.progressive); + stream.write_u8(data)?; + stream.write_u8(self.quality)?; + Ok(()) + } + + fn buffer_length(&self) -> usize { + 2 + } +} + +#[derive(Clone, PartialEq)] +pub struct Avc420BitmapStream<'a> { + pub rectangles: Vec, + pub quant_qual_vals: Vec, + pub data: &'a [u8], +} + +impl<'a> Debug for Avc420BitmapStream<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Avc420BitmapStream") + .field("rectangles", &self.rectangles) + .field("quant_qual_vals", &self.quant_qual_vals) + .field("data_len", &self.data.len()) + .finish() + } +} + +impl<'a> PduBufferParsing<'a> for Avc420BitmapStream<'a> { + type Error = GraphicsMessagesError; + + fn from_buffer_consume(mut buffer: &mut &'a [u8]) -> Result { + let num_regions = buffer.read_u32::()?; + let mut rectangles = Vec::with_capacity(num_regions as usize); + let mut quant_qual_vals = Vec::with_capacity(num_regions as usize); + for _ in 0..num_regions { + rectangles.push(Rectangle::from_buffer(&mut buffer)?); + } + for _ in 0..num_regions { + quant_qual_vals.push(QuantQuality::from_buffer(&mut buffer)?); + } + let data = buffer; + Ok(Avc420BitmapStream { + rectangles, + quant_qual_vals, + data, + }) + } + + fn to_buffer_consume(&self, mut buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + buffer.write_u32::(self.rectangles.len() as u32)?; + for rectangle in &self.rectangles { + rectangle.to_buffer(&mut buffer)?; + } + for quant_qual_val in &self.quant_qual_vals { + quant_qual_val.to_buffer(&mut buffer)?; + } + buffer.write_all(self.data)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + // Each rectangle is 8 bytes and 2 bytes for each quant val + 4 + self.rectangles.len() * 10 + self.data.len() + } +} + +bitflags! { + #[derive(Default)] + pub struct Encoding: u8 { + const LUMA_AND_CHROMA = 0x00; + const LUMA = 0x01; + const CHROMA = 0x02; + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Avc444BitmapStream<'a> { + pub encoding: Encoding, + pub stream1: Avc420BitmapStream<'a>, + pub stream2: Option>, +} + +impl<'a> PduBufferParsing<'a> for Avc444BitmapStream<'a> { + type Error = GraphicsMessagesError; + + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { + let stream_info = buffer.read_u32::()?; + let stream_len = stream_info.get_bits(0..30); + let encoding = Encoding::from_bits_truncate(stream_info.get_bits(30..32) as u8); + + if stream_len == 0 { + if encoding == Encoding::LUMA_AND_CHROMA { + return Err(GraphicsMessagesError::InvalidAvcEncoding); + } + + let stream1 = Avc420BitmapStream::from_buffer_consume(buffer)?; + Ok(Avc444BitmapStream { + encoding, + stream1, + stream2: None, + }) + } else { + let (mut stream1, mut stream2) = buffer.split_at(stream_len as usize); + let stream1 = Avc420BitmapStream::from_buffer_consume(&mut stream1)?; + let stream2 = if encoding == Encoding::LUMA_AND_CHROMA { + Some(Avc420BitmapStream::from_buffer_consume(&mut stream2)?) + } else { + None + }; + Ok(Avc444BitmapStream { + encoding, + stream1, + stream2, + }) + } + } + + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { + let mut stream_info = 0u32; + stream_info.set_bits(0..30, self.stream1.buffer_length() as u32); + stream_info.set_bits(30..32, self.encoding.bits() as u32); + buffer.write_u32::(stream_info)?; + self.stream1.to_buffer_consume(buffer)?; + if let Some(stream) = self.stream2.as_ref() { + stream.to_buffer_consume(buffer)?; + } + Ok(()) + } + + fn buffer_length(&self) -> usize { + let stream2_len = if let Some(stream) = self.stream2.as_ref() { + stream.buffer_length() + } else { + 0 + }; + + 4 + self.stream1.buffer_length() + stream2_len + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 0293793e..183315b7 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -1,7 +1,10 @@ use lazy_static::lazy_static; use super::*; -use crate::gcc::{Monitor, MonitorFlags}; +use crate::{ + gcc::{Monitor, MonitorFlags}, + PduBufferParsing, +}; pub const WIRE_TO_SURFACE_1_BUFFER: [u8; 218] = [ 0x00, 0x00, 0x08, 0x00, 0x20, 0xa5, 0x03, 0xde, 0x02, 0xab, 0x03, 0xe7, 0x02, 0xc9, 0x00, 0x00, 0x00, 0x01, 0x0e, @@ -210,6 +213,22 @@ pub const CACHE_IMPORT_REPLY_BUFFER: [u8; 1840] = [ 0x3, 0x97, 0x3, 0x98, 0x3, ]; +pub const AVC_444_MESSAGE_INCORRECT_LEN: [u8; 88] = [ + 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0x20, 0x4, 0x10, 0x7, 0x30, 0x4, 0x16, 0x64, 0x0, 0x0, 0x0, 0x1, + 0x61, 0x9a, 0x11, 0xda, 0x24, 0xea, 0x25, 0x0, 0x1f, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0x3f, 0xc9, 0xa1, 0x1d, + 0xa2, 0x4e, 0xa2, 0x50, 0x1, 0xfe, 0x60, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0x1f, 0xe2, 0x68, 0x47, 0x68, 0x93, 0xa8, + 0x94, 0x0, 0x7f, 0x98, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0xb, 0xf4, 0x9a, 0x11, 0xda, 0x24, 0xea, 0x25, 0x0, 0x1d, + 0xe7, 0x97, 0xab, 0x80, 0x80, 0x80, +]; + +pub const AVC_444_MESSAGE_CORRECT_LEN: [u8; 88] = [ + 0x54, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0x20, 0x4, 0x10, 0x7, 0x30, 0x4, 0x16, 0x64, 0x0, 0x0, 0x0, + 0x1, 0x61, 0x9a, 0x11, 0xda, 0x24, 0xea, 0x25, 0x0, 0x1f, 0xe6, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0x3f, 0xc9, 0xa1, + 0x1d, 0xa2, 0x4e, 0xa2, 0x50, 0x1, 0xfe, 0x60, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0x1f, 0xe2, 0x68, 0x47, 0x68, 0x93, + 0xa8, 0x94, 0x0, 0x7f, 0x98, 0x0, 0x0, 0x0, 0x1, 0x61, 0x0, 0xb, 0xf4, 0x9a, 0x11, 0xda, 0x24, 0xea, 0x25, 0x0, + 0x1d, 0xe7, 0x97, 0xab, 0x80, 0x80, 0x80, +]; + lazy_static! { pub static ref WIRE_TO_SURFACE_1: WireToSurface1Pdu = WireToSurface1Pdu { surface_id: 0, @@ -410,6 +429,24 @@ lazy_static! { 0x394, 0x395, 0x396, 0x397, 0x398 ] }; + pub static ref AVC_444_BITMAP: Avc444BitmapStream<'static> = Avc444BitmapStream { + encoding: Encoding::CHROMA, + stream1: Avc420BitmapStream { + rectangles: vec![Rectangle { + left: 1792, + top: 1056, + right: 1808, + bottom: 1072 + }], + quant_qual_vals: vec![QuantQuality { + quantization_parameter: 22, + progressive: false, + quality: 100 + }], + data: &AVC_444_MESSAGE_CORRECT_LEN[18..] + }, + stream2: None + }; } #[test] @@ -820,3 +857,29 @@ fn to_buffer_correctly_serializes_cache_import_reply() { fn buffer_length_is_correct_for_cache_import_reply() { assert_eq!(CACHE_IMPORT_REPLY_BUFFER.len(), CACHE_IMPORT_REPLY.buffer_length()); } + +#[test] +fn from_buffer_consume_correctly_parses_incorrect_len_avc_444_message() { + let mut buffer = AVC_444_MESSAGE_INCORRECT_LEN.as_ref(); + assert_eq!( + *AVC_444_BITMAP, + Avc444BitmapStream::from_buffer_consume(&mut buffer).unwrap() + ); +} +#[test] +fn from_buffer_consume_correctly_parses_avc_444_message() { + let mut buffer = AVC_444_MESSAGE_CORRECT_LEN.as_ref(); + assert_eq!( + *AVC_444_BITMAP, + Avc444BitmapStream::from_buffer_consume(&mut buffer).unwrap() + ); +} + +#[test] +fn to_buffer_consume_correctly_serializes_avc_444_message() { + let expected = AVC_444_MESSAGE_CORRECT_LEN.as_ref(); + let mut buffer = vec![0; expected.len()]; + + AVC_444_BITMAP.to_buffer_consume(&mut buffer.as_mut_slice()).unwrap(); + assert_eq!(expected, buffer.as_slice()); +} From 5dcde3745c53b6d43c6f4fb9337369d82eba4012 Mon Sep 17 00:00:00 2001 From: devolutionsinfra <83407390+devolutionsinfra@users.noreply.github.com> Date: Fri, 28 Oct 2022 08:52:23 -0400 Subject: [PATCH 0084/1273] chore: [skip ci] updating .github/CODEOWNERS (managed by devops) --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 013f2e03..8b8e4f7c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ # File auto-generated and managed by Devops -/.github/ @devolutions/devops +/.github/ @devolutions/devops @devolutions/architecture-maintainers /.github/dependabot.yml @devolutions/security-managers From ad9ae95480aae0004de1aae827f269483170abbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 8 Nov 2022 19:53:28 -0500 Subject: [PATCH 0085/1273] build: update rust-toolchain to 1.65 (#50) --- ironrdp/src/basic_output/bitmap.rs | 6 +-- ironrdp/src/basic_output/fast_path.rs | 10 ++--- ironrdp/src/basic_output/surface_commands.rs | 12 +++--- ironrdp/src/codecs/rfx.rs | 10 ++--- ironrdp/src/codecs/rfx/color_conversion.rs | 4 +- ironrdp/src/codecs/rfx/data_messages.rs | 18 ++++---- ironrdp/src/codecs/rfx/header_messages.rs | 8 ++-- ironrdp/src/codecs/rfx/image_processing.rs | 2 +- .../src/codecs/rfx/rectangles_processing.rs | 2 +- ironrdp/src/gcc.rs | 4 +- ironrdp/src/gcc/cluster_data.rs | 4 +- ironrdp/src/gcc/conference_create.rs | 4 +- ironrdp/src/gcc/core_data/client.rs | 14 +++---- ironrdp/src/gcc/core_data/server.rs | 4 +- ironrdp/src/gcc/message_channel_data.rs | 4 +- ironrdp/src/gcc/monitor_data.rs | 4 +- ironrdp/src/gcc/monitor_extended_data.rs | 6 +-- .../src/gcc/multi_transport_channel_data.rs | 2 +- ironrdp/src/gcc/network_data.rs | 6 +-- ironrdp/src/gcc/security_data.rs | 6 +-- ironrdp/src/input.rs | 4 +- ironrdp/src/input/fast_path.rs | 8 ++-- ironrdp/src/input/mouse.rs | 2 +- ironrdp/src/input/mouse_x.rs | 2 +- ironrdp/src/input/scan_code.rs | 2 +- ironrdp/src/input/sync.rs | 2 +- ironrdp/src/input/unicode.rs | 2 +- ironrdp/src/input/unused.rs | 2 +- ironrdp/src/mcs.rs | 14 +++---- ironrdp/src/mcs/connect_initial.rs | 6 +-- ironrdp/src/nego.rs | 10 ++--- ironrdp/src/preconnection.rs | 2 +- ironrdp/src/rdp.rs | 2 +- ironrdp/src/rdp/capability_sets.rs | 8 ++-- ironrdp/src/rdp/capability_sets/bitmap.rs | 2 +- .../src/rdp/capability_sets/bitmap_cache.rs | 8 ++-- .../src/rdp/capability_sets/bitmap_codecs.rs | 20 ++++----- ironrdp/src/rdp/capability_sets/brush.rs | 4 +- .../rdp/capability_sets/frame_acknowledge.rs | 2 +- ironrdp/src/rdp/capability_sets/general.rs | 6 +-- .../src/rdp/capability_sets/glyph_cache.rs | 6 +-- ironrdp/src/rdp/capability_sets/input.rs | 2 +- .../src/rdp/capability_sets/large_pointer.rs | 2 +- .../capability_sets/multifragment_update.rs | 2 +- .../capability_sets/offscreen_bitmap_cache.rs | 2 +- ironrdp/src/rdp/capability_sets/order.rs | 2 +- ironrdp/src/rdp/capability_sets/pointer.rs | 2 +- ironrdp/src/rdp/capability_sets/sound.rs | 2 +- .../rdp/capability_sets/surface_commands.rs | 2 +- .../rdp/capability_sets/virtual_channel.rs | 2 +- ironrdp/src/rdp/client_info.rs | 22 +++++----- ironrdp/src/rdp/finalization_messages.rs | 10 ++--- ironrdp/src/rdp/headers.rs | 16 +++---- ironrdp/src/rdp/server_error_info.rs | 12 +++--- ironrdp/src/rdp/server_license.rs | 10 ++--- .../client_new_license_request.rs | 2 +- .../client_platform_challenge_response.rs | 4 +- .../server_license/licensing_error_message.rs | 6 +-- .../server_license/server_license_request.rs | 12 +++--- .../server_license_request/cert.rs | 8 ++-- .../server_platform_challenge.rs | 2 +- .../server_license/server_upgrade_license.rs | 4 +- ironrdp/src/rdp/session_info.rs | 6 +-- .../src/rdp/session_info/logon_extended.rs | 10 ++--- ironrdp/src/rdp/session_info/logon_info.rs | 6 +-- ironrdp/src/rdp/vc.rs | 2 +- ironrdp/src/rdp/vc/dvc.rs | 8 ++-- ironrdp/src/rdp/vc/dvc/capabilities.rs | 6 +-- ironrdp/src/rdp/vc/dvc/close.rs | 2 +- ironrdp/src/rdp/vc/dvc/create.rs | 4 +- ironrdp/src/rdp/vc/dvc/data.rs | 2 +- ironrdp/src/rdp/vc/dvc/data/tests.rs | 2 +- ironrdp/src/rdp/vc/dvc/data_first.rs | 2 +- ironrdp/src/rdp/vc/dvc/data_first/tests.rs | 2 +- ironrdp/src/rdp/vc/dvc/display.rs | 16 +++---- ironrdp/src/rdp/vc/dvc/gfx.rs | 8 ++-- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 8 ++-- .../dvc/gfx/graphics_messages/avc_messages.rs | 6 +-- .../vc/dvc/gfx/graphics_messages/client.rs | 8 ++-- .../vc/dvc/gfx/graphics_messages/server.rs | 42 +++++++++---------- .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 8 ++-- .../rdp/vc/dvc/gfx/zgfx/control_messages.rs | 4 +- ironrdp/src/utils.rs | 4 +- ironrdp/src/x224.rs | 6 +-- ironrdp_client/src/utils.rs | 2 +- rust-toolchain.toml | 2 +- 86 files changed, 268 insertions(+), 268 deletions(-) diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index e9e97219..15848c7c 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -15,7 +15,7 @@ pub const COMPRESSED_DATA_HEADER_SIZE: usize = 8; pub const BITMAP_DATA_MAIN_DATA_SIZE: usize = 12; pub const FIRST_ROW_SIZE_VALUE: u16 = 0; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Bitmap<'a> { pub rectangles_number: usize, pub rectangles: Vec>, @@ -58,7 +58,7 @@ impl<'a> PduBufferParsing<'a> for Bitmap<'a> { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Eq)] pub struct BitmapData<'a> { pub rectangle: Rectangle, pub width: u16, @@ -155,7 +155,7 @@ impl<'a> Debug for BitmapData<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CompressedDataHeader { pub main_body_size: u16, pub scan_width: u16, diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp/src/basic_output/fast_path.rs index 4af21759..976803a9 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp/src/basic_output/fast_path.rs @@ -16,7 +16,7 @@ use crate::utils::SplitTo; use crate::{impl_from_error, per, PduBufferParsing, PduParsing}; /// Implements the Fast-Path RDP message header PDU. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FastPathHeader { pub flags: EncryptionFlags, pub data_length: usize, @@ -83,7 +83,7 @@ impl PduParsing for FastPathHeader { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FastPathUpdatePdu<'a> { pub fragmentation: Fragmentation, pub update_code: UpdateCode, @@ -140,7 +140,7 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum FastPathUpdate<'a> { SurfaceCommands(Vec>), Bitmap(Bitmap<'a>), @@ -199,7 +199,7 @@ impl<'a> FastPathUpdate<'a> { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum UpdateCode { Orders = 0x0, Bitmap = 0x1, @@ -224,7 +224,7 @@ impl<'a> From<&FastPathUpdate<'a>> for UpdateCode { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum Fragmentation { Single = 0x0, Last = 0x1, diff --git a/ironrdp/src/basic_output/surface_commands.rs b/ironrdp/src/basic_output/surface_commands.rs index b707c295..ac1855a1 100644 --- a/ironrdp/src/basic_output/surface_commands.rs +++ b/ironrdp/src/basic_output/surface_commands.rs @@ -14,7 +14,7 @@ use crate::{impl_from_error, PduBufferParsing, PduParsing}; pub const SURFACE_COMMAND_HEADER_SIZE: usize = 2; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum SurfaceCommand<'a> { SetSurfaceBits(SurfaceBitsPdu<'a>), FrameMarker(FrameMarkerPdu), @@ -59,7 +59,7 @@ impl<'a> PduBufferParsing<'a> for SurfaceCommand<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SurfaceBitsPdu<'a> { pub destination: Rectangle, pub extended_bitmap_data: ExtendedBitmapDataPdu<'a>, @@ -90,7 +90,7 @@ impl<'a> PduBufferParsing<'a> for SurfaceBitsPdu<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameMarkerPdu { pub frame_action: FrameAction, pub frame_id: Option, @@ -128,7 +128,7 @@ impl<'a> PduBufferParsing<'a> for FrameMarkerPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ExtendedBitmapDataPdu<'a> { pub bpp: u8, pub codec_id: u8, @@ -200,7 +200,7 @@ impl<'a> PduBufferParsing<'a> for ExtendedBitmapDataPdu<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct BitmapDataHeader { pub high_unique_id: u32, pub low_unique_id: u32, @@ -257,7 +257,7 @@ impl<'a> From<&SurfaceCommand<'a>> for SurfaceCommandType { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] #[repr(u16)] pub enum FrameAction { Begin = 0x00, diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index ffe843a4..39c064cc 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -33,7 +33,7 @@ const CODEC_ID: u8 = 1; const CHANNEL_ID_FOR_CONTEXT: u8 = 0xFF; const CHANNEL_ID_FOR_OTHER_VALUES: u8 = 0x00; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum Headers { CodecVersions(CodecVersionsPdu), Channels(ChannelsPdu), @@ -73,7 +73,7 @@ impl<'a> PduBufferParsing<'a> for Headers { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct BlockHeader { pub ty: BlockType, pub data_length: usize, @@ -122,7 +122,7 @@ impl BlockHeader { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CodecChannelHeader; impl CodecChannelHeader { @@ -169,7 +169,7 @@ fn headers_length(ty: BlockType) -> usize { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameAcknowledgePdu { pub frame_id: u32, } @@ -194,7 +194,7 @@ impl PduParsing for FrameAcknowledgePdu { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] #[repr(u16)] pub enum BlockType { Tile = 0xCAC3, diff --git a/ironrdp/src/codecs/rfx/color_conversion.rs b/ironrdp/src/codecs/rfx/color_conversion.rs index 9c71bf0c..60feffcb 100644 --- a/ironrdp/src/codecs/rfx/color_conversion.rs +++ b/ironrdp/src/codecs/rfx/color_conversion.rs @@ -48,14 +48,14 @@ impl Iterator for YCbCrBuffer<'_> { } } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct YCbCr { pub y: i16, pub cb: i16, pub cr: i16, } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Rgb { pub r: u8, pub g: u8, diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index 36ae6dd6..c897d0c8 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -24,7 +24,7 @@ const IS_LAST_TILESET_FLAG: bool = true; const QUANT_SIZE: usize = 5; const RECTANGLE_SIZE: usize = 8; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ContextPdu { pub flags: OperatingMode, pub entropy_algorithm: EntropyAlgorithm, @@ -114,7 +114,7 @@ impl<'a> PduBufferParsing<'a> for ContextPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameBeginPdu { pub index: u32, pub number_of_regions: i16, @@ -158,7 +158,7 @@ impl<'a> PduBufferParsing<'a> for FrameBeginPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameEndPdu; impl<'a> PduBufferParsing<'a> for FrameEndPdu { @@ -189,7 +189,7 @@ impl<'a> PduBufferParsing<'a> for FrameEndPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct RegionPdu { pub rectangles: Vec, } @@ -270,7 +270,7 @@ impl<'a> PduBufferParsing<'a> for RegionPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct TileSetPdu<'a> { pub entropy_algorithm: EntropyAlgorithm, pub quants: Vec, @@ -407,7 +407,7 @@ impl<'a> PduBufferParsing<'a> for TileSetPdu<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct RfxRectangle { pub x: u16, pub y: u16, @@ -441,7 +441,7 @@ impl<'a> PduBufferParsing<'a> for RfxRectangle { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Quant { pub ll3: u8, pub lh3: u8, @@ -518,7 +518,7 @@ impl<'a> PduBufferParsing<'a> for Quant { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Tile<'a> { pub y_quant_index: u8, pub cb_quant_index: u8, @@ -609,7 +609,7 @@ impl<'a> PduBufferParsing<'a> for Tile<'a> { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] #[repr(u16)] pub enum EntropyAlgorithm { Rlgr1 = 0x01, diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp/src/codecs/rfx/header_messages.rs index 863332e2..43009568 100644 --- a/ironrdp/src/codecs/rfx/header_messages.rs +++ b/ironrdp/src/codecs/rfx/header_messages.rs @@ -13,7 +13,7 @@ const CHANNEL_ID: u8 = 0; const CHANNEL_SIZE: usize = 5; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SyncPdu; impl<'a> PduBufferParsing<'a> for SyncPdu { @@ -53,7 +53,7 @@ impl<'a> PduBufferParsing<'a> for SyncPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CodecVersionsPdu; impl CodecVersionsPdu { @@ -97,7 +97,7 @@ impl<'a> PduBufferParsing<'a> for CodecVersionsPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ChannelsPdu(pub Vec); impl ChannelsPdu { @@ -151,7 +151,7 @@ impl<'a> PduBufferParsing<'a> for ChannelsPdu { } } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Channel { pub width: i16, pub height: i16, diff --git a/ironrdp/src/codecs/rfx/image_processing.rs b/ironrdp/src/codecs/rfx/image_processing.rs index 3c5769d8..64576e43 100644 --- a/ironrdp/src/codecs/rfx/image_processing.rs +++ b/ironrdp/src/codecs/rfx/image_processing.rs @@ -80,7 +80,7 @@ impl<'a> ImageRegion<'a> { } } -#[derive(Debug, Copy, Clone, PartialEq, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, ToPrimitive)] pub enum PixelFormat { ARgb32 = 536_971_400, XRgb32 = 536_938_632, diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs index 7d0cc6e3..0987f34b 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -5,7 +5,7 @@ use std::cmp::{max, min}; use crate::utils::Rectangle; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Region { extents: Rectangle, rectangles: Vec, diff --git a/ironrdp/src/gcc.rs b/ironrdp/src/gcc.rs index 0eae2003..2cd0771b 100644 --- a/ironrdp/src/gcc.rs +++ b/ironrdp/src/gcc.rs @@ -57,7 +57,7 @@ macro_rules! user_header_try { const GCC_TYPE_SIZE: usize = 2; const USER_DATA_HEADER_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientGccBlocks { pub core: ClientCoreData, pub security: ClientSecurityData, @@ -195,7 +195,7 @@ impl PduParsing for ClientGccBlocks { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerGccBlocks { pub core: ServerCoreData, pub network: ServerNetworkData, diff --git a/ironrdp/src/gcc/cluster_data.rs b/ironrdp/src/gcc/cluster_data.rs index ef44e9cc..e7d679f4 100644 --- a/ironrdp/src/gcc/cluster_data.rs +++ b/ironrdp/src/gcc/cluster_data.rs @@ -16,7 +16,7 @@ const REDIRECTION_VERSION_MASK: u32 = 0x0000_003C; const FLAGS_SIZE: usize = 4; const REDIRECTED_SESSION_ID_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientClusterData { pub flags: RedirectionFlags, pub redirection_version: RedirectionVersion, @@ -65,7 +65,7 @@ bitflags! { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum RedirectionVersion { V1 = 0, V2 = 1, diff --git a/ironrdp/src/gcc/conference_create.rs b/ironrdp/src/gcc/conference_create.rs index 76008763..dca9eea3 100644 --- a/ironrdp/src/gcc/conference_create.rs +++ b/ironrdp/src/gcc/conference_create.rs @@ -24,7 +24,7 @@ const CONFERENCE_RESPONSE_RESULT: u8 = 0; const H221_NON_STANDARD_MIN_LENGTH: usize = 4; const CONFERENCE_NAME: &[u8] = b"1"; -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct ConferenceCreateRequest { pub gcc_blocks: ClientGccBlocks, } @@ -144,7 +144,7 @@ impl PduParsing for ConferenceCreateRequest { } } -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct ConferenceCreateResponse { pub user_id: u16, pub gcc_blocks: ServerGccBlocks, diff --git a/ironrdp/src/gcc/core_data/client.rs b/ironrdp/src/gcc/core_data/client.rs index f501a4b2..8d476b04 100644 --- a/ironrdp/src/gcc/core_data/client.rs +++ b/ironrdp/src/gcc/core_data/client.rs @@ -41,7 +41,7 @@ const DESKTOP_ORIENTATION_SIZE: usize = 2; const DESKTOP_SCALE_FACTOR_SIZE: usize = 4; const DEVICE_SCALE_FACTOR_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientCoreData { pub version: RdpVersion, pub desktop_width: u16, @@ -175,7 +175,7 @@ impl PduParsing for ClientCoreData { } } -#[derive(Debug, Clone, Default, PartialEq)] +#[derive(Debug, Clone, Default, PartialEq, Eq)] pub struct ClientCoreOptionalData { pub post_beta_color_depth: Option, pub client_product_id: Option, @@ -362,7 +362,7 @@ impl PduParsing for ClientCoreOptionalData { } } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub enum ClientColorDepth { Bpp4, Bpp8, @@ -397,7 +397,7 @@ impl From for ClientColorDepth { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ColorDepth { Bpp4 = 0xCA00, Bpp8 = 0xCA01, @@ -417,12 +417,12 @@ pub enum HighColorDepth { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum SecureAccessSequence { Del = 0xAA03, } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum KeyboardType { IbmPcXt = 1, OlivettiIco = 2, @@ -434,7 +434,7 @@ pub enum KeyboardType { } #[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ConnectionType { NotUsed = 0, // not used as ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE not set Modem = 1, diff --git a/ironrdp/src/gcc/core_data/server.rs b/ironrdp/src/gcc/core_data/server.rs index 360ce2c9..a1969859 100644 --- a/ironrdp/src/gcc/core_data/server.rs +++ b/ironrdp/src/gcc/core_data/server.rs @@ -13,7 +13,7 @@ use crate::{nego, try_read_optional, try_write_optional, PduParsing}; const CLIENT_REQUESTED_PROTOCOL_SIZE: usize = 4; const EARLY_CAPABILITY_FLAGS_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerCoreData { pub version: RdpVersion, pub optional_data: ServerCoreOptionalData, @@ -39,7 +39,7 @@ impl PduParsing for ServerCoreData { } } -#[derive(Debug, Clone, PartialEq, Default)] +#[derive(Debug, Clone, PartialEq, Eq, Default)] pub struct ServerCoreOptionalData { pub client_requested_protocols: Option, pub early_capability_flags: Option, diff --git a/ironrdp/src/gcc/message_channel_data.rs b/ironrdp/src/gcc/message_channel_data.rs index 9d414aaf..2d059403 100644 --- a/ironrdp/src/gcc/message_channel_data.rs +++ b/ironrdp/src/gcc/message_channel_data.rs @@ -10,7 +10,7 @@ use crate::PduParsing; const CLIENT_FLAGS_SIZE: usize = 4; const SERVER_MCS_MESSAGE_CHANNEL_ID_SIZE: usize = 2; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientMessageChannelData; impl PduParsing for ClientMessageChannelData { @@ -32,7 +32,7 @@ impl PduParsing for ClientMessageChannelData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerMessageChannelData { pub mcs_message_channel_id: u16, } diff --git a/ironrdp/src/gcc/monitor_data.rs b/ironrdp/src/gcc/monitor_data.rs index 3218c319..4d650c97 100644 --- a/ironrdp/src/gcc/monitor_data.rs +++ b/ironrdp/src/gcc/monitor_data.rs @@ -15,7 +15,7 @@ pub const MONITOR_FLAGS_SIZE: usize = 4; const MONITOR_COUNT_MAX: usize = 16; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientMonitorData { pub monitors: Vec, } @@ -54,7 +54,7 @@ impl PduParsing for ClientMonitorData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Monitor { pub left: i32, pub top: i32, diff --git a/ironrdp/src/gcc/monitor_extended_data.rs b/ironrdp/src/gcc/monitor_extended_data.rs index b50b064a..a592aeed 100644 --- a/ironrdp/src/gcc/monitor_extended_data.rs +++ b/ironrdp/src/gcc/monitor_extended_data.rs @@ -18,7 +18,7 @@ const MONITOR_ATTRIBUTE_SIZE_FIELD_SIZE: usize = 4; const MONITOR_COUNT: usize = 4; const MONITOR_SIZE: usize = 20; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientMonitorExtendedData { pub extended_monitors_info: Vec, } @@ -67,7 +67,7 @@ impl PduParsing for ClientMonitorExtendedData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ExtendedMonitorInfo { pub physical_width: u32, pub physical_height: u32, @@ -109,7 +109,7 @@ impl PduParsing for ExtendedMonitorInfo { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum MonitorOrientation { Landscape = 0, Portrait = 90, diff --git a/ironrdp/src/gcc/multi_transport_channel_data.rs b/ironrdp/src/gcc/multi_transport_channel_data.rs index 2c2e58b5..4fc6285f 100644 --- a/ironrdp/src/gcc/multi_transport_channel_data.rs +++ b/ironrdp/src/gcc/multi_transport_channel_data.rs @@ -11,7 +11,7 @@ use crate::{impl_from_error, PduParsing}; const FLAGS_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MultiTransportChannelData { pub flags: MultiTransportFlags, } diff --git a/ironrdp/src/gcc/network_data.rs b/ironrdp/src/gcc/network_data.rs index 40462c05..93322781 100644 --- a/ironrdp/src/gcc/network_data.rs +++ b/ironrdp/src/gcc/network_data.rs @@ -23,7 +23,7 @@ const SERVER_IO_CHANNEL_SIZE: usize = 2; const SERVER_CHANNEL_COUNT_SIZE: usize = 2; const SERVER_CHANNEL_SIZE: usize = 2; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientNetworkData { pub channels: Vec, } @@ -61,7 +61,7 @@ impl PduParsing for ClientNetworkData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerNetworkData { pub channel_ids: Vec, pub io_channel: u16, @@ -122,7 +122,7 @@ impl PduParsing for ServerNetworkData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Channel { pub name: String, pub options: ChannelOptions, diff --git a/ironrdp/src/gcc/security_data.rs b/ironrdp/src/gcc/security_data.rs index 22d158ae..0f6d53fa 100644 --- a/ironrdp/src/gcc/security_data.rs +++ b/ironrdp/src/gcc/security_data.rs @@ -21,7 +21,7 @@ const SERVER_CERT_LEN_SIZE: usize = 4; const SERVER_RANDOM_LEN: usize = 0x20; const MAX_SERVER_CERT_LEN: u32 = 1024; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientSecurityData { pub encryption_methods: EncryptionMethod, pub ext_encryption_methods: u32, @@ -62,7 +62,7 @@ impl PduParsing for ClientSecurityData { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerSecurityData { pub encryption_method: EncryptionMethod, pub encryption_level: EncryptionLevel, @@ -174,7 +174,7 @@ bitflags! { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum EncryptionLevel { None = 0, Low = 1, diff --git a/ironrdp/src/input.rs b/ironrdp/src/input.rs index 00802dbd..13c2f2e0 100644 --- a/ironrdp/src/input.rs +++ b/ironrdp/src/input.rs @@ -25,7 +25,7 @@ pub use self::sync::SyncPdu; pub use self::unicode::UnicodePdu; pub use self::unused::UnusedPdu; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct InputEventPdu(pub Vec); impl PduParsing for InputEventPdu { @@ -58,7 +58,7 @@ impl PduParsing for InputEventPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum InputEvent { Sync(SyncPdu), Unused(UnusedPdu), diff --git a/ironrdp/src/input/fast_path.rs b/ironrdp/src/input/fast_path.rs index f2080a80..221738bc 100644 --- a/ironrdp/src/input/fast_path.rs +++ b/ironrdp/src/input/fast_path.rs @@ -12,7 +12,7 @@ use crate::input::{InputEventError, MousePdu, MouseXPdu}; use crate::{per, PduParsing}; /// Implements the Fast-Path RDP message header PDU. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FastPathInputHeader { pub flags: EncryptionFlags, pub data_length: usize, @@ -71,7 +71,7 @@ impl PduParsing for FastPathInputHeader { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] #[repr(u8)] pub enum FastpathInputEventType { ScanCode = 0x0000, @@ -82,7 +82,7 @@ pub enum FastpathInputEventType { QoeTimestamp = 0x0006, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum FastPathInputEvent { KeyboardEvent(KeyboardFlags, u8), UnicodeKeyboardEvent(KeyboardFlags, u16), @@ -196,7 +196,7 @@ bitflags! { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FastPathInput(pub Vec); impl PduParsing for FastPathInput { diff --git a/ironrdp/src/input/mouse.rs b/ironrdp/src/input/mouse.rs index b3a89779..ac8282a2 100644 --- a/ironrdp/src/input/mouse.rs +++ b/ironrdp/src/input/mouse.rs @@ -8,7 +8,7 @@ use crate::PduParsing; const WHEEL_ROTATION_MASK: u16 = 0x00FF; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MousePdu { pub wheel_events: WheelEvents, pub movement_events: MovementEvents, diff --git a/ironrdp/src/input/mouse_x.rs b/ironrdp/src/input/mouse_x.rs index c10767e0..3e85dc52 100644 --- a/ironrdp/src/input/mouse_x.rs +++ b/ironrdp/src/input/mouse_x.rs @@ -6,7 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MouseXPdu { pub flags: PointerFlags, pub x_position: u16, diff --git a/ironrdp/src/input/scan_code.rs b/ironrdp/src/input/scan_code.rs index 847b8433..f2e370ba 100644 --- a/ironrdp/src/input/scan_code.rs +++ b/ironrdp/src/input/scan_code.rs @@ -6,7 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ScanCodePdu { pub flags: KeyboardFlags, pub key_code: u16, diff --git a/ironrdp/src/input/sync.rs b/ironrdp/src/input/sync.rs index 0f20777d..3476078a 100644 --- a/ironrdp/src/input/sync.rs +++ b/ironrdp/src/input/sync.rs @@ -6,7 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SyncPdu { pub flags: SyncToggleFlags, } diff --git a/ironrdp/src/input/unicode.rs b/ironrdp/src/input/unicode.rs index f3b1a576..4bb0d1dc 100644 --- a/ironrdp/src/input/unicode.rs +++ b/ironrdp/src/input/unicode.rs @@ -6,7 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct UnicodePdu { pub flags: KeyboardFlags, pub unicode_code: u16, diff --git a/ironrdp/src/input/unused.rs b/ironrdp/src/input/unused.rs index ed1e004b..4f9fac28 100644 --- a/ironrdp/src/input/unused.rs +++ b/ironrdp/src/input/unused.rs @@ -5,7 +5,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct UnusedPdu; impl PduParsing for UnusedPdu { diff --git a/ironrdp/src/mcs.rs b/ironrdp/src/mcs.rs index 7c40f302..d80696da 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp/src/mcs.rs @@ -21,7 +21,7 @@ const BASE_CHANNEL_ID: u16 = 1001; const SEND_DATA_PDU_DATA_PRIORITY_AND_SEGMENTATION: u8 = 0x70; /// The kind of the RDP header message that may carry additional data. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum McsPdu { ErectDomainRequest(ErectDomainPdu), AttachUserRequest, @@ -137,7 +137,7 @@ enum DomainMcsPdu { SendDataIndication = 26, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ErectDomainPdu { pub sub_height: u32, pub sub_interval: u32, @@ -167,7 +167,7 @@ impl PduParsing for ErectDomainPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct AttachUserConfirmPdu { pub initiator_id: u16, pub result: u8, @@ -196,7 +196,7 @@ impl PduParsing for AttachUserConfirmPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ChannelJoinRequestPdu { pub initiator_id: u16, pub channel_id: u16, @@ -225,7 +225,7 @@ impl PduParsing for ChannelJoinRequestPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ChannelJoinConfirmPdu { pub channel_id: u16, pub result: u8, @@ -264,7 +264,7 @@ impl PduParsing for ChannelJoinConfirmPdu { /// Contains the channel ID and the length of the data. This structure is a part of the /// [`RdpHeaderMessage`](enum.RdpHeaderMessage.html). -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SendDataContext { pub initiator_id: u16, pub channel_id: u16, @@ -303,7 +303,7 @@ impl PduParsing for SendDataContext { /// The reason of [`DisconnectProviderUltimatum`](enum.RdpHeaderMessage.html). #[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum DisconnectUltimatumReason { DomainDisconnected = 0, ProviderInitiated = 1, diff --git a/ironrdp/src/mcs/connect_initial.rs b/ironrdp/src/mcs/connect_initial.rs index 7091d044..953880af 100644 --- a/ironrdp/src/mcs/connect_initial.rs +++ b/ironrdp/src/mcs/connect_initial.rs @@ -11,7 +11,7 @@ use crate::{ber, PduParsing}; const MCS_TYPE_CONNECT_INITIAL: u8 = 0x65; const MCS_TYPE_CONNECT_RESPONSE: u8 = 0x66; -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct ConnectInitial { pub conference_create_request: ConferenceCreateRequest, pub calling_domain_selector: Vec, @@ -97,7 +97,7 @@ impl PduParsing for ConnectInitial { } } -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct ConnectResponse { pub conference_create_response: ConferenceCreateResponse, pub called_connect_id: u32, @@ -157,7 +157,7 @@ impl PduParsing for ConnectResponse { } } -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub struct DomainParameters { pub max_channel_ids: u32, pub max_user_ids: u32, diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index 4296b472..40d5c302 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -67,7 +67,7 @@ bitflags! { /// The type of the negotiation error. May be contained in /// [`ResponseData`](enum.ResponseData.html). -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum FailureCode { SSLRequiredByServer = 1, SSLNotAllowedByServer = 2, @@ -84,7 +84,7 @@ pub enum FailureCode { /// # MSDN /// /// * [Client X.224 Connection Request PDU](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/18a27ef9-6f9a-4501-b000-94b1fe3c2c10) -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum NegoData { RoutingToken(String), Cookie(String), @@ -119,7 +119,7 @@ enum Message { Failure = 3, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Request { pub nego_data: Option, pub flags: RequestFlags, @@ -229,7 +229,7 @@ impl PduParsing for Request { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ResponseData { Response { flags: ResponseFlags, @@ -240,7 +240,7 @@ pub enum ResponseData { }, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Response { pub response: Option, pub dst_ref: u16, diff --git a/ironrdp/src/preconnection.rs b/ironrdp/src/preconnection.rs index 98bed42f..8a4ee1c1 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp/src/preconnection.rs @@ -10,7 +10,7 @@ use crate::{impl_from_error, PduBufferParsing}; const PRECONNECTION_PDU_V1_SIZE: usize = 16; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct PreconnectionPdu { pub id: u32, pub cch_pcb: u16, diff --git a/ironrdp/src/rdp.rs b/ironrdp/src/rdp.rs index e04e93ff..f68f5a31 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp/src/rdp.rs @@ -39,7 +39,7 @@ pub use self::server_error_info::{ ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, RdpSpecificCode, ServerSetErrorInfoError, ServerSetErrorInfoPdu, }; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientInfoPdu { pub security_header: BasicSecurityHeader, pub client_info: ClientInfo, diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp/src/rdp/capability_sets.rs index 1b23333c..a43b2650 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp/src/rdp/capability_sets.rs @@ -62,7 +62,7 @@ const ORIGINATOR_ID_FIELD_SIZE: usize = 2; const NULL_TERMINATOR: &str = "\0"; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerDemandActive { pub pdu: DemandActive, } @@ -89,7 +89,7 @@ impl PduParsing for ServerDemandActive { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientConfirmActive { /// According to [MSDN](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/4e9722c3-ad83-43f5-af5a-529f73d88b48), /// this field MUST be set to [SERVER_CHANNEL_ID](constant.SERVER_CHANNEL_ID.html). @@ -122,7 +122,7 @@ impl PduParsing for ClientConfirmActive { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DemandActive { pub source_descriptor: String, pub capability_sets: Vec, @@ -194,7 +194,7 @@ impl PduParsing for DemandActive { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum CapabilitySet { // mandatory General(General), diff --git a/ironrdp/src/rdp/capability_sets/bitmap.rs b/ironrdp/src/rdp/capability_sets/bitmap.rs index b2017348..3d3599a9 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap.rs @@ -20,7 +20,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Bitmap { pub pref_bits_per_pix: u16, pub desktop_width: u16, diff --git a/ironrdp/src/rdp/capability_sets/bitmap_cache.rs b/ironrdp/src/rdp/capability_sets/bitmap_cache.rs index c13647d9..dbfb7d36 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_cache.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_cache.rs @@ -17,7 +17,7 @@ const CELL_INFO_LENGTH: usize = 4; const BITMAP_CACHE_REV2_CELL_INFO_NUM: usize = 5; const CACHE_ENTRY_LENGTH: usize = 4; -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct BitmapCache { pub caches: [CacheEntry; BITMAP_CACHE_ENTRIES_NUM], } @@ -62,7 +62,7 @@ impl PduParsing for BitmapCache { } } -#[derive(Debug, PartialEq, Copy, Clone, Default)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, Default)] pub struct CacheEntry { pub entries: u16, pub max_cell_size: u16, @@ -97,7 +97,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct BitmapCacheRev2 { pub cache_flags: CacheFlags, pub num_cell_caches: u8, @@ -150,7 +150,7 @@ impl PduParsing for BitmapCacheRev2 { } } -#[derive(Debug, PartialEq, Copy, Clone, Default)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, Default)] pub struct CellInfo { pub num_entries: u32, pub is_cache_persistent: bool, diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs index c92b0951..97c208d7 100644 --- a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs +++ b/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs @@ -87,7 +87,7 @@ impl PduParsing for Guid { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct BitmapCodecs(pub Vec); impl PduParsing for BitmapCodecs { @@ -119,7 +119,7 @@ impl PduParsing for BitmapCodecs { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Codec { pub id: u8, pub property: CodecProperty, @@ -239,13 +239,13 @@ impl PduParsing for Codec { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum RemoteFxContainer { ClientContainer(RfxClientCapsContainer), ServerContainer(usize), } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum CodecProperty { NsCodec(NsCodec), RemoteFx(RemoteFxContainer), @@ -267,7 +267,7 @@ pub enum CodecProperty { /// # MSDN /// /// * [NSCodec Capability Set](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpnsc/0eac0ba8-7bdd-4300-ab8d-9bc784c0a669) -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct NsCodec { pub is_dynamic_fidelity_allowed: bool, pub is_subsampling_allowed: bool, @@ -303,7 +303,7 @@ impl PduParsing for NsCodec { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct RfxClientCapsContainer { pub capture_flags: CaptureFlags, pub caps_data: RfxCaps, @@ -338,7 +338,7 @@ impl PduParsing for RfxClientCapsContainer { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct RfxCaps(pub RfxCapset); impl PduParsing for RfxCaps { @@ -379,7 +379,7 @@ impl PduParsing for RfxCaps { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct RfxCapset(pub Vec); impl PduParsing for RfxCapset { @@ -434,7 +434,7 @@ impl PduParsing for RfxCapset { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct RfxICap { pub flags: RfxICapFlags, pub entropy_bits: EntropyBits, @@ -488,7 +488,7 @@ impl PduParsing for RfxICap { } } -#[derive(PartialEq, Debug, FromPrimitive, ToPrimitive, Copy, Clone)] +#[derive(PartialEq, Eq, Debug, FromPrimitive, ToPrimitive, Copy, Clone)] pub enum EntropyBits { Rlgr1 = 1, Rlgr3 = 4, diff --git a/ironrdp/src/rdp/capability_sets/brush.rs b/ironrdp/src/rdp/capability_sets/brush.rs index 97077769..6569be45 100644 --- a/ironrdp/src/rdp/capability_sets/brush.rs +++ b/ironrdp/src/rdp/capability_sets/brush.rs @@ -12,14 +12,14 @@ use crate::PduParsing; const BRUSH_LENGTH: usize = 4; -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum SupportLevel { Default = 0, Color8x8 = 1, ColorFull = 2, } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Brush { pub support_level: SupportLevel, } diff --git a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs index 8e435f8e..14fdd21c 100644 --- a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs +++ b/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs @@ -5,7 +5,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use crate::rdp::CapabilitySetsError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameAcknowledge { pub max_unacknowledged_frame_count: u32, } diff --git a/ironrdp/src/rdp/capability_sets/general.rs b/ironrdp/src/rdp/capability_sets/general.rs index ca734368..09a9b56d 100644 --- a/ironrdp/src/rdp/capability_sets/general.rs +++ b/ironrdp/src/rdp/capability_sets/general.rs @@ -14,7 +14,7 @@ use crate::PduParsing; const GENERAL_LENGTH: usize = 20; const PROTOCOL_VER: u16 = 0x0200; -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum MajorPlatformType { Unspecified = 0, Windows = 1, @@ -27,7 +27,7 @@ pub enum MajorPlatformType { ChromeOs = 8, } -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum MinorPlatformType { Unspecified = 0, Windows31X = 1, @@ -51,7 +51,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct General { pub major_platform_type: MajorPlatformType, pub minor_platform_type: MinorPlatformType, diff --git a/ironrdp/src/rdp/capability_sets/glyph_cache.rs b/ironrdp/src/rdp/capability_sets/glyph_cache.rs index 94a8d9ae..e0b467e9 100644 --- a/ironrdp/src/rdp/capability_sets/glyph_cache.rs +++ b/ironrdp/src/rdp/capability_sets/glyph_cache.rs @@ -15,7 +15,7 @@ pub const GLYPH_CACHE_NUM: usize = 10; const GLYPH_CACHE_LENGTH: usize = 48; const CACHE_DEFINITION_LENGTH: usize = 4; -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum GlyphSupportLevel { None = 0, Partial = 1, @@ -23,7 +23,7 @@ pub enum GlyphSupportLevel { Encode = 3, } -#[derive(Debug, PartialEq, Copy, Clone, Default)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, Default)] pub struct CacheDefinition { pub entries: u16, pub max_cell_size: u16, @@ -51,7 +51,7 @@ impl PduParsing for CacheDefinition { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct GlyphCache { pub glyph_cache: [CacheDefinition; GLYPH_CACHE_NUM], pub frag_cache: CacheDefinition, diff --git a/ironrdp/src/rdp/capability_sets/input.rs b/ironrdp/src/rdp/capability_sets/input.rs index 7249ca5c..87a93593 100644 --- a/ironrdp/src/rdp/capability_sets/input.rs +++ b/ironrdp/src/rdp/capability_sets/input.rs @@ -27,7 +27,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Input { pub input_flags: InputFlags, pub keyboard_layout: u32, diff --git a/ironrdp/src/rdp/capability_sets/large_pointer.rs b/ironrdp/src/rdp/capability_sets/large_pointer.rs index a4ba8a4b..89c3044e 100644 --- a/ironrdp/src/rdp/capability_sets/large_pointer.rs +++ b/ironrdp/src/rdp/capability_sets/large_pointer.rs @@ -6,7 +6,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use crate::rdp::CapabilitySetsError; use crate::PduParsing; -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct LargePointer { pub flags: LargePointerSupportFlags, } diff --git a/ironrdp/src/rdp/capability_sets/multifragment_update.rs b/ironrdp/src/rdp/capability_sets/multifragment_update.rs index 11b8da93..71b8feb8 100644 --- a/ironrdp/src/rdp/capability_sets/multifragment_update.rs +++ b/ironrdp/src/rdp/capability_sets/multifragment_update.rs @@ -5,7 +5,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use crate::rdp::CapabilitySetsError; use crate::PduParsing; -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct MultifragmentUpdate { pub max_request_size: u32, } diff --git a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs b/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs index 728cee12..0bcb356b 100644 --- a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs +++ b/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs @@ -10,7 +10,7 @@ use crate::PduParsing; const OFFSCREEN_BITMAP_CACHE_LENGTH: usize = 8; -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct OffscreenBitmapCache { pub is_supported: bool, pub cache_size: u16, diff --git a/ironrdp/src/rdp/capability_sets/order.rs b/ironrdp/src/rdp/capability_sets/order.rs index fd0e6557..b1da352c 100644 --- a/ironrdp/src/rdp/capability_sets/order.rs +++ b/ironrdp/src/rdp/capability_sets/order.rs @@ -56,7 +56,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Order { pub order_flags: OrderFlags, order_support: [u8; SUPPORT_ARRAY_LEN], diff --git a/ironrdp/src/rdp/capability_sets/pointer.rs b/ironrdp/src/rdp/capability_sets/pointer.rs index cea28ca6..01d5e4d8 100644 --- a/ironrdp/src/rdp/capability_sets/pointer.rs +++ b/ironrdp/src/rdp/capability_sets/pointer.rs @@ -10,7 +10,7 @@ use crate::PduParsing; const POINTER_LENGTH: usize = 6; -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Pointer { pub color_pointer_cache_size: u16, pub pointer_cache_size: u16, diff --git a/ironrdp/src/rdp/capability_sets/sound.rs b/ironrdp/src/rdp/capability_sets/sound.rs index 885d0482..c51d55ec 100644 --- a/ironrdp/src/rdp/capability_sets/sound.rs +++ b/ironrdp/src/rdp/capability_sets/sound.rs @@ -17,7 +17,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Sound { pub flags: SoundFlags, } diff --git a/ironrdp/src/rdp/capability_sets/surface_commands.rs b/ironrdp/src/rdp/capability_sets/surface_commands.rs index a5d658df..d75418ed 100644 --- a/ironrdp/src/rdp/capability_sets/surface_commands.rs +++ b/ironrdp/src/rdp/capability_sets/surface_commands.rs @@ -19,7 +19,7 @@ bitflags! { } } -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct SurfaceCommands { pub flags: CmdFlags, } diff --git a/ironrdp/src/rdp/capability_sets/virtual_channel.rs b/ironrdp/src/rdp/capability_sets/virtual_channel.rs index a08b85b6..ce98dd0f 100644 --- a/ironrdp/src/rdp/capability_sets/virtual_channel.rs +++ b/ironrdp/src/rdp/capability_sets/virtual_channel.rs @@ -31,7 +31,7 @@ bitflags! { /// # MSDN /// /// * [Virtual Channel Capability Set](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/a8593178-80c0-4b80-876c-cb77e62cecfc) -#[derive(Debug, PartialEq, Clone)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct VirtualChannel { pub flags: VirtualChannelFlags, pub chunk_size: Option, diff --git a/ironrdp/src/rdp/client_info.rs b/ironrdp/src/rdp/client_info.rs index a6332172..299404b4 100644 --- a/ironrdp/src/rdp/client_info.rs +++ b/ironrdp/src/rdp/client_info.rs @@ -33,7 +33,7 @@ const RECONNECT_COOKIE_LENGTH_SIZE: usize = 2; const BIAS_SIZE: usize = 4; const SYSTEM_TIME_SIZE: usize = 16; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientInfo { pub credentials: Credentials, pub code_page: u32, @@ -151,14 +151,14 @@ impl PduParsing for ClientInfo { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Credentials { pub username: String, pub password: String, pub domain: Option, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ExtendedClientInfo { pub address_family: AddressFamily, pub address: String, @@ -220,7 +220,7 @@ impl ExtendedClientInfo { } } -#[derive(Debug, Clone, PartialEq, Default)] +#[derive(Debug, Clone, PartialEq, Eq, Default)] pub struct ExtendedClientOptionalInfo { pub timezone: Option, pub session_id: Option, @@ -300,7 +300,7 @@ impl PduParsing for ExtendedClientOptionalInfo { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct TimezoneInfo { pub bias: u32, pub standard_name: String, @@ -367,7 +367,7 @@ impl PduParsing for TimezoneInfo { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SystemTime { pub month: Month, pub day_of_week: DayOfWeek, @@ -449,7 +449,7 @@ impl PduParsing for Option { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum Month { January = 1, February = 2, @@ -466,7 +466,7 @@ pub enum Month { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum DayOfWeek { Sunday = 0, Monday = 1, @@ -478,7 +478,7 @@ pub enum DayOfWeek { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum DayOfWeekOccurrence { First = 1, Second = 2, @@ -503,7 +503,7 @@ bitflags! { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum AddressFamily { INet = 0x0002, INet6 = 0x0017, @@ -535,7 +535,7 @@ bitflags! { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum CompressionType { K8 = 0, K64 = 1, diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp/src/rdp/finalization_messages.rs index ca636d2e..ac2201c3 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp/src/rdp/finalization_messages.rs @@ -14,7 +14,7 @@ const FONT_PDU_SIZE: usize = 2 * 4; const SYNCHRONIZE_MESSAGE_TYPE: u16 = 1; const MAX_MONITOR_COUNT: u32 = 64; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SynchronizePdu { pub target_user_id: u16, } @@ -45,7 +45,7 @@ impl PduParsing for SynchronizePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ControlPdu { pub action: ControlAction, pub grant_id: u16, @@ -81,7 +81,7 @@ impl PduParsing for ControlPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FontPdu { pub number: u16, pub total_number: u16, @@ -121,7 +121,7 @@ impl PduParsing for FontPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MonitorLayoutPdu { pub monitors: Vec, } @@ -159,7 +159,7 @@ impl PduParsing for MonitorLayoutPdu { } #[repr(u16)] -#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ControlAction { RequestControl = 1, GrantedControl = 2, diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp/src/rdp/headers.rs index 70fafa54..7d373916 100644 --- a/ironrdp/src/rdp/headers.rs +++ b/ironrdp/src/rdp/headers.rs @@ -30,7 +30,7 @@ const PDU_TYPE_FIELD_SIZE: usize = 1; const COMPRESSION_TYPE_FIELD_SIZE: usize = 1; const COMPRESSED_LENGTH_FIELD_SIZE: usize = 2; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct BasicSecurityHeader { pub flags: BasicSecurityHeaderFlags, } @@ -58,7 +58,7 @@ impl PduParsing for BasicSecurityHeader { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ShareControlHeader { pub share_control_pdu: ShareControlPdu, pub pdu_source: u16, @@ -120,7 +120,7 @@ impl PduParsing for ShareControlHeader { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ShareControlPdu { ServerDemandActive(ServerDemandActive), ClientConfirmActive(ClientConfirmActive), @@ -173,7 +173,7 @@ impl ShareControlPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ShareDataHeader { pub share_data_pdu: ShareDataPdu, pub stream_priority: StreamPriority, @@ -245,7 +245,7 @@ impl PduParsing for ShareDataHeader { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ShareDataPdu { Synchronize(SynchronizePdu), Control(ControlPdu), @@ -374,7 +374,7 @@ bitflags! { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum StreamPriority { Undefined = 0, Low = 1, @@ -382,7 +382,7 @@ pub enum StreamPriority { High = 4, } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ShareControlPduType { DemandActivePdu = 0x1, ConfirmActivePdu = 0x3, @@ -391,7 +391,7 @@ pub enum ShareControlPduType { ServerRedirect = 0xa, } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] #[repr(u8)] pub enum ShareDataPduType { Update = 0x02, diff --git a/ironrdp/src/rdp/server_error_info.rs b/ironrdp/src/rdp/server_error_info.rs index 74346a6e..a3707341 100644 --- a/ironrdp/src/rdp/server_error_info.rs +++ b/ironrdp/src/rdp/server_error_info.rs @@ -7,7 +7,7 @@ use num_traits::{FromPrimitive, ToPrimitive}; use crate::{impl_from_error, PduParsing}; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerSetErrorInfoPdu(pub ErrorInfo); impl PduParsing for ServerSetErrorInfoPdu { @@ -32,7 +32,7 @@ impl PduParsing for ServerSetErrorInfoPdu { } } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub enum ErrorInfo { ProtocolIndependentCode(ProtocolIndependentCode), ProtocolIndependentLicensingCode(ProtocolIndependentLicensingCode), @@ -103,7 +103,7 @@ impl ToPrimitive for ErrorInfo { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ProtocolIndependentCode { None = 0x0000_0000, RpcInitiatedDisconnect = 0x0000_0001, @@ -150,7 +150,7 @@ impl ProtocolIndependentCode { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ProtocolIndependentLicensingCode { Internal = 0x0000_0100, NoLicenseServer = 0x0000_0101, @@ -185,7 +185,7 @@ impl ProtocolIndependentLicensingCode { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ProtocolIndependentConnectionBrokerCode { DestinationNotFound = 0x0000_0400, LoadingDestination = 0x0000_0402, @@ -218,7 +218,7 @@ impl ProtocolIndependentConnectionBrokerCode { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum RdpSpecificCode { UnknownPduType2 = 0x0000_10C9, UnknownPduType = 0x0000_10CA, diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp/src/rdp/server_license.rs index 23296288..955b75a0 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp/src/rdp/server_license.rs @@ -44,14 +44,14 @@ const KEY_EXCHANGE_ALGORITHM_RSA: u32 = 1; const MAC_SIZE: usize = 16; -#[derive(Debug, PartialEq, Clone, Default)] +#[derive(Debug, PartialEq, Eq, Clone, Default)] pub struct LicenseEncryptionData { pub premaster_secret: Vec, pub mac_salt_key: Vec, pub license_key: Vec, } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct LicenseHeader { pub security_header: BasicSecurityHeader, pub preamble_message_type: PreambleType, @@ -121,7 +121,7 @@ impl PduParsing for LicenseHeader { } #[repr(u8)] -#[derive(Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum PreambleType { LicenseRequest = 0x01, PlatformChallenge = 0x02, @@ -139,13 +139,13 @@ bitflags! { } } -#[derive(Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum PreambleVersion { V2 = 2, // RDP 4.0 V3 = 3, // RDP 5.0, 5.1, 5.2, 6.0, 6.1, 7.0, 7.1, 8.0, 8.1, 10.0, 10.1, 10.2, 10.3, 10.4, and 10.5 } -#[derive(Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum BlobType { Any = 0x00, Data = 0x01, diff --git a/ironrdp/src/rdp/server_license/client_new_license_request.rs b/ironrdp/src/rdp/server_license/client_new_license_request.rs index fd15e6ec..08d1ccaa 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp/src/rdp/server_license/client_new_license_request.rs @@ -37,7 +37,7 @@ bitflags! { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ClientNewLicenseRequest { pub license_header: LicenseHeader, pub client_random: Vec, diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs index 116de939..17f628a7 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs +++ b/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs @@ -22,7 +22,7 @@ const RESPONSE_DATA_STATIC_FIELDS_SIZE: usize = 8; const CLIENT_HARDWARE_IDENTIFICATION_SIZE: usize = 20; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ClientPlatformChallengeResponse { pub license_header: LicenseHeader, pub encrypted_challenge_response_data: Vec, @@ -213,7 +213,7 @@ impl PduParsing for PlatformChallengeResponseData { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ClientHardwareIdentification { pub platform_id: u32, pub data: Vec, diff --git a/ironrdp/src/rdp/server_license/licensing_error_message.rs b/ironrdp/src/rdp/server_license/licensing_error_message.rs index 7f628d54..a737e192 100644 --- a/ironrdp/src/rdp/server_license/licensing_error_message.rs +++ b/ironrdp/src/rdp/server_license/licensing_error_message.rs @@ -13,7 +13,7 @@ use crate::PduParsing; const ERROR_CODE_SIZE: usize = 4; const STATE_TRANSITION_SIZE: usize = 4; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct LicensingErrorMessage { pub error_code: LicenseErrorCode, pub state_transition: LicensingStateTransition, @@ -54,7 +54,7 @@ impl PduParsing for LicensingErrorMessage { } } -#[derive(Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum LicenseErrorCode { InvalidServerCertificate = 0x01, NoLicense = 0x02, @@ -67,7 +67,7 @@ pub enum LicenseErrorCode { InvalidMessageLen = 0x0c, } -#[derive(Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum LicensingStateTransition { TotalAbort = 1, NoTransition = 2, diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp/src/rdp/server_license/server_license_request.rs index a4881ebc..5dacb588 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp/src/rdp/server_license/server_license_request.rs @@ -28,13 +28,13 @@ const MAX_PRODUCT_ID_LEN: u32 = 1024; const RSA_EXCHANGE_ALGORITHM: u32 = 1; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub enum InitialMessageType { LicenseRequest(ServerLicenseRequest), StatusValidClient(LicensingErrorMessage), } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct InitialServerLicenseMessage { pub license_header: LicenseHeader, pub message_type: InitialMessageType, @@ -130,7 +130,7 @@ impl PduParsing for InitialServerLicenseMessage { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ServerLicenseRequest { pub server_random: Vec, pub product_info: ProductInfo, @@ -223,7 +223,7 @@ impl PduParsing for ServerLicenseRequest { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct Scope(pub String); impl PduParsing for Scope { @@ -259,7 +259,7 @@ impl PduParsing for Scope { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ServerCertificate { pub issued_permanently: bool, pub certificate: CertificateType, @@ -337,7 +337,7 @@ impl PduParsing for ServerCertificate { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ProductInfo { pub version: u32, pub company_name: String, diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp/src/rdp/server_license/server_license_request/cert.rs index d37dafa5..e25a4b6f 100644 --- a/ironrdp/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp/src/rdp/server_license/server_license_request/cert.rs @@ -18,13 +18,13 @@ const MIN_CERTIFICATE_AMOUNT: u32 = 2; const MAX_CERTIFICATE_AMOUNT: u32 = 200; const MAX_CERTIFICATE_LEN: u32 = 4096; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub enum CertificateType { Proprietary(ProprietaryCertificate), X509(X509CertificateChain), } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct X509CertificateChain { pub certificate_array: Vec>, } @@ -84,7 +84,7 @@ impl PduParsing for X509CertificateChain { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ProprietaryCertificate { pub public_key: RsaPublicKey, pub signature: Vec, @@ -132,7 +132,7 @@ impl PduParsing for ProprietaryCertificate { } } -#[derive(PartialEq, Debug, Clone)] +#[derive(PartialEq, Eq, Debug, Clone)] pub struct RsaPublicKey { pub public_exponent: u32, pub modulus: Vec, diff --git a/ironrdp/src/rdp/server_license/server_platform_challenge.rs b/ironrdp/src/rdp/server_license/server_platform_challenge.rs index 7872907b..073e9d12 100644 --- a/ironrdp/src/rdp/server_license/server_platform_challenge.rs +++ b/ironrdp/src/rdp/server_license/server_platform_challenge.rs @@ -13,7 +13,7 @@ use crate::PduParsing; const CONNECT_FLAGS_FIELD_SIZE: usize = 4; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ServerPlatformChallenge { pub license_header: LicenseHeader, pub encrypted_platform_challenge: Vec, diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license.rs b/ironrdp/src/rdp/server_license/server_upgrade_license.rs index bbe314fa..e31c3984 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license.rs +++ b/ironrdp/src/rdp/server_license/server_upgrade_license.rs @@ -15,7 +15,7 @@ use crate::{utils, PduParsing}; const NEW_LICENSE_INFO_STATIC_FIELDS_SIZE: usize = 20; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct ServerUpgradeLicense { pub license_header: LicenseHeader, pub encrypted_license_info: Vec, @@ -89,7 +89,7 @@ impl PduParsing for ServerUpgradeLicense { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct NewLicenseInformation { pub version: u32, pub scope: String, diff --git a/ironrdp/src/rdp/session_info.rs b/ironrdp/src/rdp/session_info.rs index 9f343190..dcd4240f 100644 --- a/ironrdp/src/rdp/session_info.rs +++ b/ironrdp/src/rdp/session_info.rs @@ -23,7 +23,7 @@ const INFO_TYPE_FIELD_SIZE: usize = 4; const PLAIN_NOTIFY_PADDING_SIZE: usize = 576; const PLAIN_NOTIFY_PADDING_BUFFER: [u8; PLAIN_NOTIFY_PADDING_SIZE] = [0; PLAIN_NOTIFY_PADDING_SIZE]; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SaveSessionInfoPdu { pub info_type: InfoType, pub info_data: InfoData, @@ -84,7 +84,7 @@ impl PduParsing for SaveSessionInfoPdu { } #[repr(u32)] -#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum InfoType { Logon = 0x0000_0000, LogonLong = 0x0000_0001, @@ -92,7 +92,7 @@ pub enum InfoType { LogonExtended = 0x0000_0003, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum InfoData { LogonInfoV1(LogonInfoVersion1), LogonInfoV2(LogonInfoVersion2), diff --git a/ironrdp/src/rdp/session_info/logon_extended.rs b/ironrdp/src/rdp/session_info/logon_extended.rs index 4540929b..d22fae61 100644 --- a/ironrdp/src/rdp/session_info/logon_extended.rs +++ b/ironrdp/src/rdp/session_info/logon_extended.rs @@ -19,7 +19,7 @@ const AUTO_RECONNECT_PACKET_SIZE: usize = 28; const AUTO_RECONNECT_RANDOM_BITS_SIZE: usize = 16; const LOGON_ERRORS_INFO_SIZE: usize = 8; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonInfoExtended { pub present_fields_flags: LogonExFlags, pub auto_reconnect: Option, @@ -86,7 +86,7 @@ impl PduParsing for LogonInfoExtended { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerAutoReconnect { pub logon_id: u32, pub random_bits: [u8; AUTO_RECONNECT_RANDOM_BITS_SIZE], @@ -129,7 +129,7 @@ impl PduParsing for ServerAutoReconnect { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonErrorsInfo { pub error_type: LogonErrorNotificationType, pub error_data: LogonErrorNotificationData, @@ -169,7 +169,7 @@ bitflags! { } #[repr(u32)] -#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum LogonErrorNotificationType { DisconnectRefuse = 0xFFFF_FFF9, NoPermission = 0xFFFF_FFFA, @@ -180,7 +180,7 @@ pub enum LogonErrorNotificationType { } #[repr(u32)] -#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum LogonErrorNotificationData { FailedBadPassword = 0x0000_0000, FailedUpdatePassword = 0x0000_0001, diff --git a/ironrdp/src/rdp/session_info/logon_info.rs b/ironrdp/src/rdp/session_info/logon_info.rs index 4afe79cf..ef1ccb32 100644 --- a/ironrdp/src/rdp/session_info/logon_info.rs +++ b/ironrdp/src/rdp/session_info/logon_info.rs @@ -18,7 +18,7 @@ const LOGON_INFO_V2_PADDING_BUFFER: [u8; LOGON_INFO_V2_PADDING_SIZE] = [0; LOGON const DOMAIN_NAME_SIZE_V2: usize = 52; const USER_NAME_SIZE_V2: usize = 512; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonInfoVersion1 { pub logon_info: LogonInfo, } @@ -78,7 +78,7 @@ impl PduParsing for LogonInfoVersion1 { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonInfoVersion2 { pub logon_info: LogonInfo, } @@ -163,7 +163,7 @@ impl PduParsing for LogonInfoVersion2 { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonInfo { pub session_id: u32, pub user_name: String, diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp/src/rdp/vc.rs index f8476ef9..543fd75e 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp/src/rdp/vc.rs @@ -15,7 +15,7 @@ pub const DRDYNVC_CHANNEL_NAME: &str = "drdynvc"; const CHANNEL_PDU_HEADER_SIZE: usize = 8; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ChannelPduHeader { /// The total length in bytes of the uncompressed channel data, excluding this header pub total_length: u32, diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp/src/rdp/vc/dvc.rs index d5840be2..6d0ecb93 100644 --- a/ironrdp/src/rdp/vc/dvc.rs +++ b/ironrdp/src/rdp/vc/dvc.rs @@ -35,7 +35,7 @@ const UNUSED_U8: u8 = 0; pub type DynamicChannels = HashMap; #[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum PduType { Create = 0x01, DataFirst = 0x02, @@ -44,7 +44,7 @@ pub enum PduType { Capabilities = 0x05, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ServerPdu { CapabilitiesRequest(CapabilitiesRequestPdu), CreateRequest(CreateRequestPdu), @@ -126,7 +126,7 @@ impl ServerPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ClientPdu { CapabilitiesResponse(CapabilitiesResponsePdu), CreateResponse(CreateResponsePdu), @@ -208,7 +208,7 @@ impl ClientPdu { } #[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum FieldType { U8 = 0x00, U16 = 0x01, diff --git a/ironrdp/src/rdp/vc/dvc/capabilities.rs b/ironrdp/src/rdp/vc/dvc/capabilities.rs index d76787a8..5e51f81c 100644 --- a/ironrdp/src/rdp/vc/dvc/capabilities.rs +++ b/ironrdp/src/rdp/vc/dvc/capabilities.rs @@ -17,14 +17,14 @@ const DVC_CAPABILITIES_CHARGE_SIZE: usize = 2; const DVC_CAPABILITIES_CHARGE_COUNT: usize = 4; #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum CapsVersion { V1 = 0x0001, V2 = 0x0002, V3 = 0x0003, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum CapabilitiesRequestPdu { V1, V2 { @@ -98,7 +98,7 @@ impl PduParsing for CapabilitiesRequestPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CapabilitiesResponsePdu { pub version: CapsVersion, } diff --git a/ironrdp/src/rdp/vc/dvc/close.rs b/ironrdp/src/rdp/vc/dvc/close.rs index 4932babc..14e5bcf8 100644 --- a/ironrdp/src/rdp/vc/dvc/close.rs +++ b/ironrdp/src/rdp/vc/dvc/close.rs @@ -7,7 +7,7 @@ use super::{FieldType, Header, PduType, HEADER_SIZE, UNUSED_U8}; use crate::rdp::vc::ChannelError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ClosePdu { pub channel_id_type: FieldType, pub channel_id: u32, diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp/src/rdp/vc/dvc/create.rs index 707eb866..c65fda65 100644 --- a/ironrdp/src/rdp/vc/dvc/create.rs +++ b/ironrdp/src/rdp/vc/dvc/create.rs @@ -14,7 +14,7 @@ pub const DVC_CREATION_STATUS_NO_LISTENER: u32 = 0xC000_0001; const DVC_CREATION_STATUS_SIZE: usize = 4; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CreateRequestPdu { pub channel_id_type: FieldType, pub channel_id: u32, @@ -59,7 +59,7 @@ impl CreateRequestPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CreateResponsePdu { pub channel_id_type: FieldType, pub channel_id: u32, diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp/src/rdp/vc/dvc/data.rs index 9eb92fcf..e891c503 100644 --- a/ironrdp/src/rdp/vc/dvc/data.rs +++ b/ironrdp/src/rdp/vc/dvc/data.rs @@ -7,7 +7,7 @@ use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE, UNU use crate::rdp::vc::ChannelError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DataPdu { pub channel_id_type: FieldType, pub channel_id: u32, diff --git a/ironrdp/src/rdp/vc/dvc/data/tests.rs b/ironrdp/src/rdp/vc/dvc/data/tests.rs index d4181b4f..73fdd08b 100644 --- a/ironrdp/src/rdp/vc/dvc/data/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data/tests.rs @@ -15,7 +15,7 @@ const DVC_TEST_HEADER_SIZE: usize = 0x01; lazy_static! { static ref DVC_FULL_DATA_BUFFER: Vec = { let mut result = DVC_DATA_PREFIX.to_vec(); - result.extend(&DVC_DATA_BUFFER); + result.extend(DVC_DATA_BUFFER); result }; diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp/src/rdp/vc/dvc/data_first.rs index a8f54737..70505dc0 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first.rs @@ -7,7 +7,7 @@ use super::{FieldType, Header, PduType, HEADER_SIZE, PDU_WITH_DATA_MAX_SIZE}; use crate::rdp::vc::ChannelError; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DataFirstPdu { pub channel_id_type: FieldType, pub channel_id: u32, diff --git a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs index c346e06d..1079d0cf 100644 --- a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs +++ b/ironrdp/src/rdp/vc/dvc/data_first/tests.rs @@ -110,7 +110,7 @@ const DVC_TEST_HEADER_SIZE: usize = 0x01; lazy_static! { static ref DVC_FULL_DATA_FIRST_BUFFER: Vec = { let mut result = DVC_DATA_FIRST_PREFIX.to_vec(); - result.extend(&DVC_DATA_FIRST_BUFFER); + result.extend(DVC_DATA_FIRST_BUFFER); result }; diff --git a/ironrdp/src/rdp/vc/dvc/display.rs b/ironrdp/src/rdp/vc/dvc/display.rs index b23143d5..1e6fc0c6 100644 --- a/ironrdp/src/rdp/vc/dvc/display.rs +++ b/ironrdp/src/rdp/vc/dvc/display.rs @@ -12,7 +12,7 @@ use crate::{impl_from_error, PduParsing}; use bitflags::bitflags; const RDP_DISPLAY_HEADER_SIZE: usize = 8; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DisplayControlCapsPdu { pub max_num_monitors: u32, pub max_monitor_area_factora: u32, @@ -53,7 +53,7 @@ bitflags! { } } -#[derive(Debug, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum Orientation { Landscape = 0, Portrait = 90, @@ -61,7 +61,7 @@ pub enum Orientation { PortraitFlipped = 270, } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Monitor { pub flags: MonitorFlags, pub left: u32, @@ -129,7 +129,7 @@ impl PduParsing for Monitor { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MonitorLayoutPdu { pub monitors: Vec, } @@ -163,7 +163,7 @@ impl PduParsing for MonitorLayoutPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ServerPdu { DisplayControlCaps(DisplayControlCapsPdu), } @@ -212,7 +212,7 @@ impl PduParsing for ServerPdu { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ServerPduType { DisplayControlCaps = 0x05, } @@ -225,7 +225,7 @@ impl<'a> From<&'a ServerPdu> for ServerPduType { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ClientPdu { DisplayControlMonitorLayout(MonitorLayoutPdu), } @@ -276,7 +276,7 @@ impl PduParsing for ClientPdu { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ClientPduType { DisplayControlMonitorLayout = 0x02, } diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp/src/rdp/vc/dvc/gfx.rs index 32b6d3e7..88b4d85f 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx.rs @@ -25,7 +25,7 @@ use crate::{impl_from_error, PduParsing}; const RDP_GFX_HEADER_SIZE: usize = 8; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ServerPdu { WireToSurface1(WireToSurface1Pdu), WireToSurface2(WireToSurface2Pdu), @@ -180,7 +180,7 @@ impl PduParsing for ServerPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ClientPdu { FrameAcknowledge(FrameAcknowledgePdu), CapabilitiesAdvertise(CapabilitiesAdvertisePdu), @@ -235,7 +235,7 @@ impl PduParsing for ClientPdu { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ClientPduType { FrameAcknowledge = 0x0d, CacheImportOffer = 0x10, @@ -252,7 +252,7 @@ impl<'a> From<&'a ClientPdu> for ClientPduType { } } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum ServerPduType { WireToSurface1 = 0x01, WireToSurface2 = 0x02, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs index 450932b2..b731e0fa 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -28,7 +28,7 @@ const CAPABILITY_SET_HEADER_SIZE: usize = 8; const V10_1_RESERVED: u128 = 0; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum CapabilitySet { V8 { flags: CapabilitiesV8Flags }, V8_1 { flags: CapabilitiesV81Flags }, @@ -154,7 +154,7 @@ impl PduParsing for CapabilitySet { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Color { b: u8, g: u8, @@ -188,7 +188,7 @@ impl PduParsing for Color { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Point { x: u16, y: u16, @@ -217,7 +217,7 @@ impl PduParsing for Point { } #[repr(u32)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum CapabilityVersion { V8 = 0x8_0004, V8_1 = 0x8_0105, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs index 1e158a65..3573667b 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs @@ -6,7 +6,7 @@ use bit_field::BitField; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct QuantQuality { pub quantization_parameter: u8, pub progressive: bool, @@ -45,7 +45,7 @@ impl PduParsing for QuantQuality { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Eq)] pub struct Avc420BitmapStream<'a> { pub rectangles: Vec, pub quant_qual_vals: Vec, @@ -111,7 +111,7 @@ bitflags! { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Avc444BitmapStream<'a> { pub encoding: Encoding, pub stream1: Avc420BitmapStream<'a>, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs index 3463107c..cb1230fc 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs @@ -5,7 +5,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::{CapabilitySet, GraphicsMessagesError}; use crate::PduParsing; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CapabilitiesAdvertisePdu(pub Vec); impl PduParsing for CapabilitiesAdvertisePdu { @@ -36,7 +36,7 @@ impl PduParsing for CapabilitiesAdvertisePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameAcknowledgePdu { pub queue_depth: QueueDepth, pub frame_id: u32, @@ -71,7 +71,7 @@ impl PduParsing for FrameAcknowledgePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CacheImportReplyPdu { pub cache_slots: Vec, } @@ -105,7 +105,7 @@ impl PduParsing for CacheImportReplyPdu { } #[repr(u32)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub enum QueueDepth { Unavailable, AvailableBytes(u32), diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index aadf431c..b206f089 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -14,7 +14,7 @@ pub const RESET_GRAPHICS_PDU_SIZE: usize = 340; const MAX_RESET_GRAPHICS_WIDTH_HEIGHT: u32 = 32_766; const MONITOR_COUNT_MAX: u32 = 16; -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Eq)] pub struct WireToSurface1Pdu { pub surface_id: u16, pub codec_id: Codec1Type, @@ -71,7 +71,7 @@ impl PduParsing for WireToSurface1Pdu { } } -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Eq)] pub struct WireToSurface2Pdu { pub surface_id: u16, pub codec_id: Codec2Type, @@ -130,7 +130,7 @@ impl PduParsing for WireToSurface2Pdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DeleteEncodingContextPdu { pub surface_id: u16, pub codec_context_id: u32, @@ -161,7 +161,7 @@ impl PduParsing for DeleteEncodingContextPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SolidFillPdu { pub surface_id: u16, pub fill_pixel: Color, @@ -203,7 +203,7 @@ impl PduParsing for SolidFillPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SurfaceToSurfacePdu { pub source_surface_id: u16, pub destination_surface_id: u16, @@ -251,7 +251,7 @@ impl PduParsing for SurfaceToSurfacePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct SurfaceToCachePdu { pub surface_id: u16, pub cache_key: u64, @@ -290,7 +290,7 @@ impl PduParsing for SurfaceToCachePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CacheToSurfacePdu { pub cache_slot: u16, pub surface_id: u16, @@ -332,7 +332,7 @@ impl PduParsing for CacheToSurfacePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CreateSurfacePdu { pub surface_id: u16, pub width: u16, @@ -371,7 +371,7 @@ impl PduParsing for CreateSurfacePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct DeleteSurfacePdu { pub surface_id: u16, } @@ -396,7 +396,7 @@ impl PduParsing for DeleteSurfacePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct ResetGraphicsPdu { pub width: u32, pub height: u32, @@ -476,7 +476,7 @@ impl PduParsing for ResetGraphicsPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MapSurfaceToOutputPdu { pub surface_id: u16, pub output_origin_x: u32, @@ -513,7 +513,7 @@ impl PduParsing for MapSurfaceToOutputPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MapSurfaceToScaledOutputPdu { pub surface_id: u16, pub output_origin_x: u32, @@ -558,7 +558,7 @@ impl PduParsing for MapSurfaceToScaledOutputPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MapSurfaceToScaledWindowPdu { pub surface_id: u16, pub window_id: u64, @@ -605,7 +605,7 @@ impl PduParsing for MapSurfaceToScaledWindowPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct EvictCacheEntryPdu { pub cache_slot: u16, } @@ -630,7 +630,7 @@ impl PduParsing for EvictCacheEntryPdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct StartFramePdu { pub timestamp: Timestamp, pub frame_id: u32, @@ -658,7 +658,7 @@ impl PduParsing for StartFramePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct EndFramePdu { pub frame_id: u32, } @@ -683,7 +683,7 @@ impl PduParsing for EndFramePdu { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CapabilitiesConfirmPdu(pub CapabilitySet); impl PduParsing for CapabilitiesConfirmPdu { @@ -705,7 +705,7 @@ impl PduParsing for CapabilitiesConfirmPdu { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum Codec1Type { Uncompressed = 0x0, RemoteFx = 0x3, @@ -718,19 +718,19 @@ pub enum Codec1Type { } #[repr(u16)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum Codec2Type { RemoteFxProgressive = 0x9, } #[repr(u8)] -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum PixelFormat { XRgb = 0x20, ARgb = 0x21, } -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Timestamp { pub milliseconds: u16, pub seconds: u8, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 183315b7..143a46d5 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -240,17 +240,17 @@ lazy_static! { right: 939, bottom: 743, }, - bitmap_data: (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(), + bitmap_data: WIRE_TO_SURFACE_1_BUFFER[17..].to_vec(), }; - pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_1_BUFFER[17..]).to_vec(); + pub static ref WIRE_TO_SURFACE_1_BITMAP_DATA: Vec = WIRE_TO_SURFACE_1_BUFFER[17..].to_vec(); pub static ref WIRE_TO_SURFACE_2: WireToSurface2Pdu = WireToSurface2Pdu { surface_id: 0, codec_id: Codec2Type::RemoteFxProgressive, codec_context_id: 4, pixel_format: PixelFormat::XRgb, - bitmap_data: (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(), + bitmap_data: WIRE_TO_SURFACE_2_BUFFER[13..].to_vec(), }; - pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = (&WIRE_TO_SURFACE_2_BUFFER[13..]).to_vec(); + pub static ref WIRE_TO_SURFACE_2_BITMAP_DATA: Vec = WIRE_TO_SURFACE_2_BUFFER[13..].to_vec(); pub static ref DELETE_ENCODING_CONTEXT: DeleteEncodingContextPdu = DeleteEncodingContextPdu { surface_id: 0, codec_context_id: 1, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs index 8b08b8ff..c04d1ffa 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs +++ b/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs @@ -6,7 +6,7 @@ use num_traits::FromPrimitive; use super::ZgfxError; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum SegmentedDataPdu<'a> { Single(BulkEncodedData<'a>), Multipart { @@ -44,7 +44,7 @@ impl<'a> SegmentedDataPdu<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct BulkEncodedData<'a> { pub compression_flags: CompressionFlags, pub data: &'a [u8], diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs index f13d0688..c7e5d191 100644 --- a/ironrdp/src/utils.rs +++ b/ironrdp/src/utils.rs @@ -62,7 +62,7 @@ pub fn bytes_to_utf16_string(mut value: &[u8]) -> String { String::from_utf16_lossy(value_u16.as_ref()) } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum CharacterSet { Ansi = 1, Unicode = 2, @@ -142,7 +142,7 @@ impl<'a> ops::Deref for Bits<'a> { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct Rectangle { pub left: u16, pub top: u16, diff --git a/ironrdp/src/x224.rs b/ironrdp/src/x224.rs index be3bd579..6533896e 100644 --- a/ironrdp/src/x224.rs +++ b/ironrdp/src/x224.rs @@ -22,7 +22,7 @@ const TPKT_VERSION: u8 = 3; const EOF: u8 = 0x80; /// The PDU type of the X.224 negotiation phase. -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum X224TPDUType { ConnectionRequest = 0xE0, ConnectionConfirm = 0xD0, @@ -31,7 +31,7 @@ pub enum X224TPDUType { Error = 0x70, } -#[derive(PartialEq, Debug)] +#[derive(PartialEq, Eq, Debug)] pub struct TpktHeader { pub length: usize, } @@ -76,7 +76,7 @@ impl PduParsing for TpktHeader { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq)] pub struct Data { pub data_length: usize, } diff --git a/ironrdp_client/src/utils.rs b/ironrdp_client/src/utils.rs index 577b8bfb..ab88bf53 100644 --- a/ironrdp_client/src/utils.rs +++ b/ironrdp_client/src/utils.rs @@ -38,7 +38,7 @@ where result } -#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive, ToPrimitive)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum CodecId { RemoteFx = 0x3, } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e1932277..e44d5bfe 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.60.0" +channel = "1.65.0" components = [ "rustfmt", "clippy" ] From 3bd8ca28ec993664fbae2619d057ddb291342d8f Mon Sep 17 00:00:00 2001 From: Sandeep Bansal Date: Wed, 9 Nov 2022 10:51:12 -0800 Subject: [PATCH 0086/1273] Adding support for async RDP client (#48) Co-authored-by: Sandeep Bansal --- ironrdp/src/lib.rs | 4 +- ironrdp/src/mcs.rs | 3 + ironrdp/src/x224.rs | 2 +- ironrdp_client/Cargo.toml | 13 +- ironrdp_client/src/active_session.rs | 45 ++- .../src/active_session/fast_path.rs | 12 +- ironrdp_client/src/active_session/x224.rs | 26 +- ironrdp_client/src/codecs.rs | 115 +++++++ ironrdp_client/src/connection_sequence.rs | 283 +++++++++--------- ironrdp_client/src/errors.rs | 12 +- ironrdp_client/src/lib.rs | 12 +- ironrdp_client/src/main.rs | 56 ++-- ironrdp_client/src/transport.rs | 167 ++++++++++- ironrdp_client/src/transport/connection.rs | 64 ++-- 14 files changed, 555 insertions(+), 259 deletions(-) create mode 100644 ironrdp_client/src/codecs.rs diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 7246cf7d..efaf88f6 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -102,8 +102,8 @@ impl_from_error!(std::io::Error, RdpError, RdpError::IOError); impl_from_error!(nego::NegotiationError, RdpError, RdpError::X224Error); impl_from_error!(fast_path::FastPathError, RdpError, RdpError::FastPathError); -#[derive(Debug, Copy, Clone, PartialEq, num_derive::FromPrimitive, num_derive::ToPrimitive)] -enum Action { +#[derive(Debug, Copy, Clone, PartialEq, Eq, num_derive::FromPrimitive, num_derive::ToPrimitive)] +pub enum Action { FastPath = 0x0, X224 = 0x3, } diff --git a/ironrdp/src/mcs.rs b/ironrdp/src/mcs.rs index d80696da..cbc15423 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp/src/mcs.rs @@ -344,6 +344,8 @@ impl DisconnectUltimatumReason { pub enum McsError { #[fail(display = "IO error: {}", _0)] IOError(#[fail(cause)] io::Error), + #[fail(display = "RDP error: {}", _0)] + RdpError(#[fail(cause)] crate::RdpError), #[fail(display = "GCC block error: {}", _0)] GccError(#[fail(cause)] GccError), #[fail(display = "Invalid disconnect provider ultimatum")] @@ -357,6 +359,7 @@ pub enum McsError { } impl_from_error!(io::Error, McsError, McsError::IOError); +impl_from_error!(crate::RdpError, McsError, McsError::RdpError); impl_from_error!(GccError, McsError, McsError::GccError); impl From for io::Error { diff --git a/ironrdp/src/x224.rs b/ironrdp/src/x224.rs index 6533896e..55bd5cc8 100644 --- a/ironrdp/src/x224.rs +++ b/ironrdp/src/x224.rs @@ -17,7 +17,7 @@ pub const TPDU_REQUEST_LENGTH: usize = TPKT_HEADER_LENGTH + TPDU_REQUEST_HEADER_ pub const TPDU_REQUEST_HEADER_LENGTH: usize = 7; pub const TPDU_ERROR_HEADER_LENGTH: usize = 5; -const TPKT_VERSION: u8 = 3; +pub const TPKT_VERSION: u8 = 3; const EOF: u8 = 0x80; diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index fac77f6f..cec612dc 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -20,8 +20,8 @@ path = "src/main.rs" [features] default = ["rustls"] -rustls = ["dep:rustls"] -native-tls = ["dep:native-tls"] +rustls = ["dep:rustls", "dep:tokio-rustls"] +native-tls = ["dep:native-tls", "dep:async-native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } @@ -42,6 +42,13 @@ exitcode = "1.1" bufstream = "0.1" ring = "0.16.0" native-tls = { version = "0.2", optional = true } +async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } dns-lookup = "1.0.8" -bitflags = "1" \ No newline at end of file +bitflags = "1" +tokio = { version = "1", features = ["full"]} +tokio-rustls = { version = "0.23", optional = true } +bit_field = "0.10.1" +tokio-util = { version = "0.7", features = ["full"] } +byteorder = "1.4.3" +futures = "0.3" \ No newline at end of file diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs index 0de49c84..0d0b2aa2 100644 --- a/ironrdp_client/src/active_session.rs +++ b/ironrdp_client/src/active_session.rs @@ -3,22 +3,23 @@ mod fast_path; mod x224; use std::sync::{Arc, Mutex}; -use std::time::Duration; -use std::{io, thread}; +use futures::{SinkExt, StreamExt}; use ironrdp::codecs::rfx::image_processing::PixelFormat; use ironrdp::fast_path::FastPathError; -use ironrdp::{PduParsing, RdpPdu}; +use ironrdp::RdpPdu; use log::warn; +use tokio_util::codec::Framed; +use crate::codecs::RdpFrameCodec; use crate::connection_sequence::ConnectionSequenceResult; use crate::transport::{Decoder, RdpTransport}; -use crate::{utils, InputConfig, RdpError}; +use crate::{utils, InputConfig, RdpError, TlsStreamType}; const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; -pub fn process_active_stage( - mut stream: impl io::BufRead + io::Write, +pub async fn process_active_stage( + mut stream: Framed, config: InputConfig, connection_sequence_result: ConnectionSequenceResult, ) -> Result<(), RdpError> { @@ -39,15 +40,14 @@ pub fn process_active_stage( } .build(); let mut rdp_transport = RdpTransport::default(); - + let mut output_buffer = Vec::new(); loop { - let mut input_buffer = stream.fill_buf()?; - let input_buffer_length = input_buffer.len(); - match rdp_transport.decode(&mut input_buffer) { - Ok(RdpPdu::X224(data)) if input_buffer.len() >= data.data_length => { - stream.consume(data.buffer_length()); - - if let Err(error) = x224_processor.process(&mut stream, data) { + output_buffer.clear(); + let frame = stream.next().await.ok_or(RdpError::AccessDenied)??; + let mut frame = frame.as_ref(); + match rdp_transport.decode(&mut frame) { + Ok(RdpPdu::X224(data)) => { + if let Err(error) = x224_processor.process(&mut frame, &mut output_buffer, data) { match error { RdpError::UnexpectedDisconnection(message) => { warn!("User-Initiated disconnection on Server: {}", message); @@ -63,25 +63,22 @@ pub fn process_active_stage( } } } - Ok(RdpPdu::FastPath(header)) if input_buffer.len() >= header.data_length => { + Ok(RdpPdu::FastPath(header)) => { // skip header bytes in such way because here is possible // that data length was written in the not right way, // so we should skip only what has been actually read - let bytes_read = input_buffer_length - input_buffer.len(); - stream.consume(bytes_read); - fast_path_processor.process(&header, &mut stream)?; + fast_path_processor.process(&header, frame, &mut output_buffer)?; } - Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read })) => { + Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read: _ })) => { warn!("Received null-length Fast-Path packet, dropping it"); - stream.consume(bytes_read); - } - Ok(_) => { - warn!("Received not complete packet, waiting for remaining data"); - thread::sleep(Duration::from_millis(10)); } Err(e) => return Err(e), } + + if !output_buffer.is_empty() { + stream.send(output_buffer.as_slice()).await?; + } } Ok(()) diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp_client/src/active_session/fast_path.rs index 85ee1eb9..9ecd2c64 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp_client/src/active_session/fast_path.rs @@ -28,22 +28,18 @@ impl Processor { pub fn process( &mut self, header: &FastPathHeader, - mut stream: impl io::BufRead + io::Write, + stream: &[u8], + mut output: impl io::Write, ) -> Result<(), RdpError> { debug!("Got Fast-Path Header: {:?}", header); - let input_buffer = &stream.fill_buf()?[..header.data_length]; - - let update_pdu = FastPathUpdatePdu::from_buffer(input_buffer)?; - let update_pdu_length = update_pdu.buffer_length(); - + let update_pdu = FastPathUpdatePdu::from_buffer(stream)?; debug!("Fast-Path Update fragmentation: {:?}", update_pdu.fragmentation); let processed_complete_data = self .complete_data .process_data(update_pdu.data, update_pdu.fragmentation); let update_code = update_pdu.update_code; - stream.consume(update_pdu_length); if let Some(data) = processed_complete_data { let update = FastPathUpdate::from_buffer_with_code(data.as_slice(), update_code); @@ -52,7 +48,7 @@ impl Processor { Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { info!("Received Surface Commands: {} pieces", surface_commands.len()); - self.process_surface_commands(&mut stream, surface_commands)?; + self.process_surface_commands(&mut output, surface_commands)?; } Ok(FastPathUpdate::Bitmap(bitmap)) => { info!("Received Bitmap: {:?}", bitmap); diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp_client/src/active_session/x224.rs index 4babd554..35498009 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp_client/src/active_session/x224.rs @@ -46,7 +46,12 @@ impl<'a> Processor<'a> { } } - pub fn process(&mut self, mut stream: impl io::BufRead + io::Write, data: Data) -> Result<(), RdpError> { + pub fn process( + &mut self, + mut stream: impl io::Read, + mut output: impl io::Write, + data: Data, + ) -> Result<(), RdpError> { let mut transport = SendDataContextTransport::default(); transport.mcs_transport.0.set_decoded_context(data.data_length); @@ -56,7 +61,7 @@ impl<'a> Processor<'a> { let channel_id = channel_ids.channel_id; let initiator_id = channel_ids.initiator_id; match self.static_channels.get(&channel_id).map(String::as_str) { - Some(vc::DRDYNVC_CHANNEL_NAME) => self.process_dvc_message(&mut stream, transport, channel_id), + Some(vc::DRDYNVC_CHANNEL_NAME) => self.process_dvc_message(&mut stream, &mut output, transport, channel_id), Some(name) if name == self.global_channel_name => { if self.static_transport.is_none() { self.static_transport = Some(ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( @@ -122,7 +127,8 @@ impl<'a> Processor<'a> { fn process_dvc_message( &mut self, - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read, + mut output: impl io::Write, transport: SendDataContextTransport, channel_id: u16, ) -> Result<(), RdpError> { @@ -145,7 +151,7 @@ impl<'a> Processor<'a> { debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); transport.encode( DynamicVirtualChannelTransport::prepare_data_to_encode(caps_response, None)?, - &mut stream, + &mut output, )?; } dvc::ServerPdu::CreateRequest(create_request) => { @@ -175,10 +181,10 @@ impl<'a> Processor<'a> { debug!("Send DVC Create Response PDU: {:?}", create_response); transport.encode( DynamicVirtualChannelTransport::prepare_data_to_encode(create_response, None)?, - &mut stream, + &mut output, )?; - negotiate_dvc(&create_request, transport, &mut stream, &self.graphics_config)?; + negotiate_dvc(&create_request, transport, &mut output, &self.graphics_config)?; } dvc::ServerPdu::CloseRequest(close_request) => { debug!("Got DVC Close Request PDU: {:?}", close_request); @@ -191,7 +197,7 @@ impl<'a> Processor<'a> { debug!("Send DVC Close Response PDU: {:?}", close_response); transport.encode( DynamicVirtualChannelTransport::prepare_data_to_encode(close_response, None)?, - &mut stream, + &mut output, )?; self.dynamic_channels.remove(&close_request.channel_id); @@ -216,7 +222,7 @@ impl<'a> Processor<'a> { transport.encode( DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut stream, + &mut output, )?; } } @@ -240,7 +246,7 @@ impl<'a> Processor<'a> { transport.encode( DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut stream, + &mut output, )?; } } @@ -251,7 +257,7 @@ impl<'a> Processor<'a> { } fn process_global_channel_pdu( - mut stream: impl io::BufRead + io::Write, + mut stream: impl io::Read, transport: &mut ShareDataHeaderTransport, ) -> Result<(), RdpError> { let share_data_pdu = transport.decode(&mut stream)?; diff --git a/ironrdp_client/src/codecs.rs b/ironrdp_client/src/codecs.rs new file mode 100644 index 00000000..7673d165 --- /dev/null +++ b/ironrdp_client/src/codecs.rs @@ -0,0 +1,115 @@ +use bit_field::BitField; +use bytes::{BufMut, BytesMut}; +use ironrdp::{Action, RdpError}; +use tokio_util::codec::{Decoder, Encoder}; + +use byteorder::{BigEndian, ReadBytesExt}; + +use num_traits::FromPrimitive; + +use crate::transport::{Decoder as TransportDecoder, Encoder as TransportEncoder}; +#[derive(Default)] +pub struct RdpFrameCodec {} + +impl Encoder for RdpFrameCodec +where + T: AsRef<[u8]>, +{ + type Error = RdpError; + + fn encode(&mut self, item: T, buf: &mut bytes::BytesMut) -> Result<(), Self::Error> { + buf.extend_from_slice(item.as_ref()); + Ok(()) + } +} + +impl Decoder for RdpFrameCodec { + type Item = BytesMut; + type Error = ironrdp::RdpError; + + fn decode(&mut self, src: &mut bytes::BytesMut) -> Result, Self::Error> { + let mut stream = src.as_ref(); + if stream.is_empty() { + return Ok(None); + } + let header = stream.read_u8()?; + let action = header.get_bits(0..2); + let action = Action::from_u8(action).ok_or(ironrdp::RdpError::InvalidActionCode(action))?; + + let length = match action { + Action::X224 if stream.len() >= 3 => { + let _reserved = stream.read_u8()?; + + stream.read_u16::()? + } + Action::FastPath if !stream.is_empty() => { + let a = stream.read_u8()?; + if a & 0x80 != 0 { + if stream.is_empty() { + return Ok(None); + } + let b = stream.read_u8()?; + ((u16::from(a) & !0x80) << 8) + u16::from(b) + } else { + u16::from(a) + } + } + _ => { + return Ok(None); + } + }; + + if src.len() >= length as usize { + Ok(Some(src.split_to(length as usize))) + } else { + Ok(None) + } + } +} + +pub struct TrasnportCodec { + inner: RdpFrameCodec, + transport: T, +} + +impl TrasnportCodec { + pub fn new(transport: T) -> Self { + TrasnportCodec { + inner: RdpFrameCodec::default(), + transport, + } + } +} + +impl Encoder for TrasnportCodec +where + T: TransportEncoder, + ::Error: From, + ::Error: From, +{ + type Error = ::Error; + + fn encode(&mut self, item: E, buf: &mut bytes::BytesMut) -> Result<(), Self::Error> { + self.transport.encode(item, buf.writer())?; + Ok(()) + } +} + +impl Decoder for TrasnportCodec +where + T: TransportDecoder, + ::Error: From, + ::Error: From, +{ + type Item = ::Item; + type Error = ::Error; + + fn decode(&mut self, src: &mut bytes::BytesMut) -> Result, Self::Error> { + let buf = self.inner.decode(src)?; + if let Some(data) = buf { + Ok(Some(self.transport.decode(data.as_ref())?)) + } else { + Ok(None) + } + } +} diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp_client/src/connection_sequence.rs index 0c1ca791..05da36a6 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp_client/src/connection_sequence.rs @@ -1,27 +1,30 @@ mod user_info; use std::collections::HashMap; +use std::future::Future; use std::io::{self}; use std::iter; use std::net::SocketAddr; -use bufstream::BufStream; -use bytes::BytesMut; use dns_lookup::lookup_addr; +use futures::{SinkExt, StreamExt}; use ironrdp::rdp::capability_sets::CapabilitySet; use ironrdp::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; -use ironrdp::{nego, rdp, PduParsing}; +use ironrdp::{nego, rdp, ConnectInitial, ConnectResponse, McsPdu, PduParsing}; use log::{debug, info, trace, warn}; use ring::rand::SecureRandom; use sspi::internal::credssp; use sspi::NegotiateConfig; +use tokio::net::TcpStream; +use tokio_util::codec::Framed; -use crate::transport::*; -use crate::{InputConfig, RdpError, BUF_STREAM_SIZE}; +use crate::codecs::{RdpFrameCodec, TrasnportCodec}; +use crate::{transport::*, TlsStreamType}; +use crate::{InputConfig, RdpError}; pub type StaticChannels = HashMap; @@ -37,56 +40,51 @@ pub struct ConnectionSequenceResult { pub initiator_id: u16, } -pub struct UpgradedStream -where - S: io::Read + io::Write, -{ - pub stream: S, +pub struct UpgradedStream { + pub stream: TlsStreamType, pub server_public_key: Vec, } -pub fn process_connection_sequence( - stream: S, +pub async fn process_connection_sequence<'a, F, FnRes>( + mut stream: TcpStream, routing_addr: &SocketAddr, config: &InputConfig, upgrade_stream: F, -) -> Result<(ConnectionSequenceResult, BufStream), RdpError> +) -> Result<(ConnectionSequenceResult, Framed), RdpError> where - S: io::Read + io::Write, - US: io::Read + io::Write, - F: FnOnce(S) -> Result, RdpError>, + F: FnOnce(TcpStream) -> FnRes, + FnRes: Future>, { - let mut stream = BufStream::new(stream); - - let (mut transport, selected_protocol) = connect( + let selected_protocol = connect( &mut stream, config.security_protocol, config.credentials.username.clone(), - )?; + ) + .await?; - let stream = stream.into_inner().map_err(io::Error::from)?; let UpgradedStream { - stream, + mut stream, server_public_key, - } = upgrade_stream(stream)?; - let mut stream = BufStream::with_capacities(BUF_STREAM_SIZE, BUF_STREAM_SIZE, stream); + } = upgrade_stream(stream).await?; if selected_protocol.contains(nego::SecurityProtocol::HYBRID) || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key, routing_addr)?; + process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key, routing_addr).await?; if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - if let credssp::EarlyUserAuthResult::AccessDenied = EarlyUserAuthResult::read(&mut stream)? { + let data = EarlyUserAuthResult::read(&mut stream).await?; + if let credssp::EarlyUserAuthResult::AccessDenied = data { return Err(RdpError::AccessDenied); } } } - let static_channels = process_mcs_connect(&mut stream, &mut transport, config, selected_protocol)?; + let stream = Framed::new(stream, RdpFrameCodec::default()); - let mut transport = McsTransport::new(transport); - let joined_static_channels = process_mcs(&mut stream, &mut transport, static_channels, config)?; + let (static_channels, stream) = process_mcs_connect(stream, config, selected_protocol).await?; + + let (joined_static_channels, stream) = process_mcs(stream, static_channels, config).await?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels @@ -96,24 +94,22 @@ where .get(config.user_channel_name.as_str()) .expect("user channel must be added"); - let mut transport = SendDataContextTransport::new(transport, initiator_id, global_channel_id); - send_client_info(&mut stream, &mut transport, config, routing_addr)?; + let transport = + SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); + let stream = send_client_info(stream, transport, config, routing_addr).await?; - match process_server_license_exchange(&mut stream, &mut transport, config, global_channel_id) { - Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( - rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), - ))) => { - warn!("The server has returned STATUS_VALID_CLIENT unexpectedly"); - } - Err(error) => return Err(error), - Ok(_) => (), - } + let stream = process_server_license_exchange(stream, config, global_channel_id).await?; - let mut transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let desktop_sizes = process_capability_sets(&mut stream, &mut transport, config)?; + let transport = + SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); + let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); + let (desktop_sizes, stream) = process_capability_sets(stream, transport, config).await?; - let mut transport = ShareDataHeaderTransport::new(transport); - process_finalization(&mut stream, &mut transport, initiator_id)?; + let transport = + SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); + let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); + let transport = ShareDataHeaderTransport::new(transport); + let stream = process_finalization(stream, transport, initiator_id).await?; Ok(( ConnectionSequenceResult { @@ -126,8 +122,8 @@ where )) } -pub fn process_cred_ssp( - mut tls_stream: impl io::Read + io::Write, +pub async fn process_cred_ssp( + mut tls_stream: &mut TlsStreamType, credentials: sspi::AuthIdentity, server_public_key: Vec, routing_addr: &SocketAddr, @@ -157,12 +153,12 @@ pub fn process_cred_ssp( match result { credssp::ClientState::ReplyNeeded(ts_request) => { debug!("Send CredSSP TSRequest (reply needed): {:x?}", ts_request); - transport.encode(ts_request, &mut tls_stream)?; - next_ts_request = transport.decode(&mut tls_stream)?; + transport.encode(ts_request, &mut tls_stream).await?; + next_ts_request = transport.decode(&mut tls_stream).await?; } credssp::ClientState::FinalMessage(ts_request) => { debug!("Send CredSSP TSRequest (final): {:x?}", ts_request); - transport.encode(ts_request, &mut tls_stream)?; + transport.encode(ts_request, &mut tls_stream).await?; break; } } @@ -171,26 +167,24 @@ pub fn process_cred_ssp( Ok(()) } -pub fn process_mcs_connect( - mut stream: impl io::Read + io::Write, - transport: &mut DataTransport, +pub async fn process_mcs_connect( + stream: Framed, config: &InputConfig, selected_protocol: nego::SecurityProtocol, -) -> Result { +) -> Result< + ( + StaticChannels, + Framed>>, + ), + RdpError, +> { let connect_initial = ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); - let mut connect_initial_buf = BytesMut::with_capacity(connect_initial.buffer_length()); - connect_initial_buf.resize(connect_initial.buffer_length(), 0x00); - connect_initial.to_buffer(connect_initial_buf.as_mut())?; - transport.encode(connect_initial_buf, &mut stream)?; - - let data_length = transport.decode(&mut stream)?; - let mut data = BytesMut::with_capacity(data_length); - data.resize(data_length, 0x00); - stream.read_exact(&mut data)?; - - let connect_response = ironrdp::ConnectResponse::from_buffer(data.as_ref()).map_err(RdpError::McsConnectError)?; + let mut stream = stream.map_codec(|_| TrasnportCodec::new(X224DataTransport::default())); + stream.send(connect_initial.clone()).await?; + let connect_response: ironrdp::ConnectResponse = + stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; @@ -220,34 +214,36 @@ pub fn process_mcs_connect( .chain(iter::once((config.global_channel_name.clone(), global_channel_id))) .collect::(); - Ok(static_channels) + Ok((static_channels, stream)) } -pub fn process_mcs( - mut stream: impl io::Read + io::Write, - transport: &mut McsTransport, +pub async fn process_mcs( + stream: Framed, mut static_channels: StaticChannels, config: &InputConfig, -) -> Result { +) -> Result< + ( + StaticChannels, + Framed>>, + ), + RdpError, +> { let erect_domain_request = ironrdp::mcs::ErectDomainPdu { sub_height: 0, sub_interval: 0, }; + let mut stream = stream.map_codec(|_| TrasnportCodec::new(X224DataTransport::default())); debug!("Send MCS Erect Domain Request PDU: {:?}", erect_domain_request); - - transport.encode( - McsTransport::prepare_data_to_encode(ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), None)?, - &mut stream, - )?; + stream + .send(ironrdp::McsPdu::ErectDomainRequest(erect_domain_request)) + .await?; debug!("Send MCS Attach User Request PDU"); - transport.encode( - McsTransport::prepare_data_to_encode(ironrdp::McsPdu::AttachUserRequest, None)?, - &mut stream, - )?; - let mcs_pdu = transport.decode(&mut stream)?; + stream.send(ironrdp::McsPdu::AttachUserRequest).await?; + + let mcs_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; let initiator_id = if let ironrdp::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); @@ -267,12 +263,12 @@ pub fn process_mcs( channel_id: *id, }; debug!("Send MCS Channel Join Request PDU: {:?}", channel_join_request); - transport.encode( - McsTransport::prepare_data_to_encode(ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), None)?, - &mut stream, - )?; - let mcs_pdu = transport.decode(&mut stream)?; + stream + .send(ironrdp::McsPdu::ChannelJoinRequest(channel_join_request)) + .await?; + + let mcs_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; if let ironrdp::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); @@ -292,37 +288,38 @@ pub fn process_mcs( } } - Ok(static_channels) + Ok((static_channels, stream)) } -pub fn send_client_info( - stream: impl io::Read + io::Write, - transport: &mut SendDataContextTransport, +pub async fn send_client_info( + stream: Framed, + transport: SendDataContextTransport, config: &InputConfig, routing_addr: &SocketAddr, -) -> Result<(), RdpError> { +) -> Result>, RdpError> { + let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); + let client_info_pdu = user_info::create_client_info_pdu(config, routing_addr)?; debug!("Send Client Info PDU: {:?}", client_info_pdu); let mut pdu = Vec::with_capacity(client_info_pdu.buffer_length()); client_info_pdu .to_buffer(&mut pdu) .map_err(RdpError::ServerLicenseError)?; - transport.encode(pdu, stream)?; - - Ok(()) + stream.send(pdu).await?; + Ok(stream) } -pub fn process_server_license_exchange( - mut stream: impl io::Read + io::Write, - transport: &mut SendDataContextTransport, +pub async fn process_server_license_exchange( + stream: Framed, config: &InputConfig, global_channel_id: u16, -) -> Result<(), RdpError> { - let channel_ids = transport.decode(&mut stream)?; - check_global_id(channel_ids, global_channel_id)?; +) -> Result, RdpError> { + let transp = SendPduDataContextTransport::::default(); + let codec = TrasnportCodec::new(transp); + let mut stream = stream.map_codec(|_| codec); + let (channel_ids, initial_license_message) = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; - let initial_license_message = InitialServerLicenseMessage::from_buffer(&mut stream) - .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; + check_global_id(channel_ids, global_channel_id)?; debug!("Received Initial License Message PDU"); trace!("{:?}", initial_license_message); @@ -359,7 +356,7 @@ pub fn process_server_license_exchange( InitialMessageType::StatusValidClient(_) => { info!("The server has not initiated license exchange"); - return Ok(()); + return Ok(stream.map_codec(|_| RdpFrameCodec::default())); } }; @@ -367,24 +364,14 @@ pub fn process_server_license_exchange( trace!("{:?}", new_license_request); trace!("{:?}", encryption_data); - let mut new_pdu_buffer = Vec::with_capacity(new_license_request.buffer_length()); - new_license_request.to_buffer(&mut new_pdu_buffer).map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("Unable to write to buffer: {}", err), - )) - })?; - transport.encode(new_pdu_buffer, &mut stream)?; + stream.send(new_license_request).await?; - let channel_ids = transport.decode(&mut stream)?; + let transp = SendPduDataContextTransport::::default(); + let codec = TrasnportCodec::new(transp); + let mut stream = stream.map_codec(|_| codec); + let (channel_ids, challenge) = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; check_global_id(channel_ids, global_channel_id)?; - let challenge = ServerPlatformChallenge::from_buffer(&mut stream) - .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; - - debug!("Received Server Platform Challenge PDU"); - trace!("{:?}", challenge); - let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( &challenge, config.credentials.domain.as_deref().unwrap_or(""), @@ -399,22 +386,25 @@ pub fn process_server_license_exchange( debug!("Successfully generated Client Platform Challenge Response"); trace!("{:?}", challenge_response); + stream.send(challenge_response).await?; - let mut new_pdu_buffer = Vec::with_capacity(challenge_response.buffer_length()); - challenge_response.to_buffer(&mut new_pdu_buffer).map_err(|err| { - RdpError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - format!("Unable to write to buffer: {}", err), - )) - })?; - transport.encode(new_pdu_buffer, &mut stream)?; - - let channel_ids = transport.decode(&mut stream)?; + let transp = SendPduDataContextTransport::::default(); + let codec = TrasnportCodec::new(transp); + let mut stream = stream.map_codec(|_| codec); + let (channel_ids, upgrade_license) = match stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)? { + Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( + rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), + ))) => { + warn!("The server has returned STATUS_VALID_CLIENT unexpectedly"); + return Ok(stream.map_codec(|_| RdpFrameCodec::default())); + } + Ok(data) => data, + Err(err) => { + return Err(err); + } + }; check_global_id(channel_ids, global_channel_id)?; - let upgrade_license = ServerUpgradeLicense::from_buffer(&mut stream) - .map_err(|err| RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(err)))?; - debug!("Received Server Upgrade License PDU"); trace!("{:?}", upgrade_license); @@ -427,15 +417,16 @@ pub fn process_server_license_exchange( debug!("Successfully verified the license"); - Ok(()) + Ok(stream.map_codec(|_| RdpFrameCodec::default())) } -pub fn process_capability_sets( - mut stream: impl io::Read + io::Write, - transport: &mut ShareControlHeaderTransport, +pub async fn process_capability_sets( + stream: Framed, + transport: ShareControlHeaderTransport, config: &InputConfig, -) -> Result { - let share_control_pdu = transport.decode(&mut stream)?; +) -> Result<(DesktopSizes, Framed), RdpError> { + let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); + let share_control_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu { debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); @@ -467,16 +458,15 @@ pub fn process_capability_sets( capability_sets, )?); debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); - transport.encode(client_confirm_active, &mut stream)?; - - Ok(desktop_sizes) + stream.send(client_confirm_active).await?; + Ok((desktop_sizes, stream.map_codec(|_| RdpFrameCodec::default()))) } -pub fn process_finalization( - mut stream: impl io::Read + io::Write, - transport: &mut ShareDataHeaderTransport, +pub async fn process_finalization( + stream: Framed, + transport: ShareDataHeaderTransport, initiator_id: u16, -) -> Result<(), RdpError> { +) -> Result, RdpError> { use ironrdp::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; #[derive(Copy, Clone, PartialEq, Debug)] @@ -488,6 +478,7 @@ pub fn process_finalization( Finished, } + let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); let mut finalization_order = FinalizationOrder::Synchronize; while finalization_order != FinalizationOrder::Finished { let share_data_pdu = match finalization_order { @@ -513,9 +504,8 @@ pub fn process_finalization( FinalizationOrder::Finished => unreachable!(), }; debug!("Send Finalization PDU: {:?}", share_data_pdu); - transport.encode(share_data_pdu, &mut stream)?; - - let share_data_pdu = transport.decode(&mut stream)?; + stream.send(share_data_pdu).await?; + let share_data_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; debug!("Got Finalization PDU: {:?}", share_data_pdu); finalization_order = match (finalization_order, share_data_pdu) { @@ -556,7 +546,8 @@ pub fn process_finalization( }; } - Ok(()) + let mapped = stream.map_codec(|_| RdpFrameCodec::default()); + Ok(mapped) } fn check_global_id(channel_ids: ChannelIdentificators, id: u16) -> Result<(), RdpError> { diff --git a/ironrdp_client/src/errors.rs b/ironrdp_client/src/errors.rs index d629534e..fdfad82b 100644 --- a/ironrdp_client/src/errors.rs +++ b/ironrdp_client/src/errors.rs @@ -5,7 +5,9 @@ use ironrdp::{ codecs, dvc::{display, gfx}, fast_path::FastPathError, - nego, rdp, McsError, + nego, + rdp::{self, server_license::ServerLicenseError}, + McsError, }; #[derive(Debug, Fail)] @@ -103,6 +105,8 @@ pub enum RdpError { StaticChannelNotConnected, #[fail(display = "Invalid Capabilities mask provided. Mask: {:X}", _0)] InvalidCapabilitiesMask(u32), + #[fail(display = "Stream terminated while waiting for some data")] + UnexpectedStreamTermination, #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[fail(display = "Invalid DER structure: {}", _0)] DerEncode(#[fail(cause)] native_tls::Error), @@ -185,3 +189,9 @@ impl From for RdpError { RdpError::RlgrError(e) } } + +impl From for RdpError { + fn from(e: ServerLicenseError) -> Self { + RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(e)) + } +} diff --git a/ironrdp_client/src/lib.rs b/ironrdp_client/src/lib.rs index 7a38f5d5..521ef82c 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp_client/src/lib.rs @@ -2,6 +2,7 @@ mod errors; mod utils; use ironrdp::{gcc, nego}; +use tokio::net::TcpStream; pub mod active_session; pub mod connection_sequence; @@ -11,7 +12,7 @@ pub use self::active_session::process_active_stage; pub use self::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; pub use self::errors::RdpError; -const BUF_STREAM_SIZE: usize = 32 * 1024; +mod codecs; pub struct GraphicsConfig { pub avc444: bool, @@ -30,8 +31,17 @@ pub struct InputConfig { pub ime_file_name: String, pub dig_product_id: String, pub width: u16, + pub height: u16, pub global_channel_name: String, pub user_channel_name: String, pub graphics_config: Option, } + +#[cfg(all(feature = "native-tls", not(feature = "rustls")))] +use async_native_tls::TlsStream; + +#[cfg(feature = "rustls")] +use tokio_rustls::client::TlsStream; + +pub type TlsStreamType = TlsStream; diff --git a/ironrdp_client/src/main.rs b/ironrdp_client/src/main.rs index cb426f6e..d52763ca 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp_client/src/main.rs @@ -1,12 +1,10 @@ mod config; -use std::io::{self, Write}; -use std::net::TcpStream; +use std::io::{self}; use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; use log::error; -#[cfg(all(feature = "native-tls", not(feature = "rustls")))] -use native_tls::{HandshakeError, TlsConnector}; +use tokio::{io::AsyncWriteExt, net::TcpStream}; use x509_parser::prelude::{FromDer, X509Certificate}; use self::config::Config; @@ -35,11 +33,12 @@ mod danger { } } -fn main() { +#[tokio::main] +async fn main() { let config = Config::parse_args(); setup_logging(config.log_file.as_str()).expect("failed to initialize logging"); - let exit_code = match run(config) { + let exit_code = match run(config).await { Ok(_) => { println!("RDP successfully finished"); @@ -82,54 +81,48 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { Ok(()) } -fn run(config: Config) -> Result<(), RdpError> { +async fn run(config: Config) -> Result<(), RdpError> { let addr = socket_addr_to_string(config.routing_addr); - let mut stream = TcpStream::connect(addr.as_str()).map_err(RdpError::ConnectionError)?; + let stream = TcpStream::connect(addr.as_str()) + .await + .map_err(RdpError::ConnectionError)?; - let (connection_sequence_result, mut stream) = - process_connection_sequence(&mut stream, &config.routing_addr, &config.input, establish_tls)?; + let (connection_sequence_result, stream) = + process_connection_sequence(stream, &config.routing_addr, &config.input, establish_tls).await?; - process_active_stage(&mut stream, config.input, connection_sequence_result)?; + process_active_stage(stream, config.input, connection_sequence_result).await?; Ok(()) } -fn establish_tls(stream: impl io::Read + io::Write) -> Result, RdpError> { +async fn establish_tls(stream: TcpStream) -> Result { #[cfg(all(feature = "native-tls", not(feature = "rustls")))] let mut tls_stream = { - let mut builder = TlsConnector::builder(); - builder.danger_accept_invalid_certs(true); - builder.use_sni(false); - - let connector = builder.build().unwrap(); + let connector = async_native_tls::TlsConnector::new() + .danger_accept_invalid_certs(true) + .use_sni(false); // domain is an empty string because client accepts IP address in the cli - match connector.connect("", stream) { + match connector.connect("", stream).await { Ok(tls) => tls, - Err(HandshakeError::Failure(err)) => return Err(RdpError::TlsHandshakeError(err)), - Err(HandshakeError::WouldBlock(mut mid_stream)) => loop { - match mid_stream.handshake() { - Ok(tls) => break tls, - Err(HandshakeError::Failure(err)) => return Err(RdpError::TlsHandshakeError(err)), - Err(HandshakeError::WouldBlock(mid)) => mid_stream = mid, - }; - }, + Err(err) => return Err(RdpError::TlsHandshakeError(err)), } }; #[cfg(feature = "rustls")] let mut tls_stream = { - let client_config = rustls::client::ClientConfig::builder() + let mut client_config = rustls::client::ClientConfig::builder() .with_safe_defaults() .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) .with_no_client_auth(); + client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); let rc_config = std::sync::Arc::new(client_config); let example_com = "stub_string".try_into().unwrap(); - let client = rustls::ClientConnection::new(rc_config, example_com)?; - rustls::StreamOwned::new(client, stream) + let connector = tokio_rustls::TlsConnector::from(rc_config); + connector.connect(example_com, stream).await? }; - tls_stream.flush()?; + tls_stream.flush().await?; #[cfg(all(feature = "native-tls", not(feature = "rustls")))] let server_public_key = { @@ -143,7 +136,8 @@ fn establish_tls(stream: impl io::Read + io::Write) -> Result { + _marker1: PhantomData, + _marker2: PhantomData, +} + +impl Default for X224DataTransport { + fn default() -> Self { + Self { + _marker1: PhantomData::default(), + _marker2: PhantomData::default(), + } + } +} + +impl Encoder for X224DataTransport +where + E: PduParsing, + ::Error: From, + ::Error: From, +{ + type Item = E; + type Error = ::Error; + + fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { + ironrdp::Data::new(data.buffer_length()) + .to_buffer(&mut stream) + .map_err(ironrdp::RdpError::X224Error)?; + data.to_buffer(&mut stream)?; + Ok(()) + } +} + +impl Decoder for X224DataTransport +where + D: PduParsing, + ::Error: From, + ::Error: From, +{ + type Item = D; + type Error = ::Error; + + fn decode(&mut self, mut stream: impl io::Read) -> Result { + let data = ironrdp::Data::from_buffer(&mut stream).map_err(ironrdp::RdpError::X224Error)?; + let length = data.data_length; + let item = D::from_buffer(&mut stream)?; + let remaining = length - item.buffer_length(); + if remaining > 0 { + let mut remaining = vec![0u8; remaining]; + stream.read_exact(&mut remaining)?; + } + Ok(item) + } +} + #[derive(Copy, Clone, Debug)] pub struct McsTransport(pub DataTransport); @@ -365,3 +420,113 @@ impl Encoder for RdpTransport { Ok(()) } } + +#[derive(Clone, Debug)] +pub struct SendPduDataContextTransport { + pub mcs_transport: McsTransport, + channel_ids: Option, + _marker1: PhantomData, + _marker2: PhantomData, +} + +impl SendPduDataContextTransport { + pub fn new(mcs_transport: McsTransport, channel_ids: Option) -> Self { + Self { + mcs_transport, + channel_ids, + _marker1: PhantomData::default(), + _marker2: PhantomData::default(), + } + } + + pub fn set_channel_ids(&mut self, channel_ids: ChannelIdentificators) { + self.channel_ids = Some(channel_ids); + } + + pub fn set_decoded_context(&mut self, channel_ids: ChannelIdentificators) { + self.set_channel_ids(channel_ids); + } + + pub fn map_context(self) -> SendPduDataContextTransport + where + U: PduParsing, + V: PduParsing, + { + SendPduDataContextTransport::new(self.mcs_transport, self.channel_ids) + } +} + +impl Default for SendPduDataContextTransport { + fn default() -> Self { + Self { + mcs_transport: McsTransport::new(DataTransport::default()), + channel_ids: None, + _marker1: PhantomData::default(), + _marker2: PhantomData::default(), + } + } +} + +impl Encoder for SendPduDataContextTransport +where + E: PduParsing, + RdpError: From<::Error>, +{ + type Item = E; + type Error = RdpError; + + fn encode(&mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { + if let Some(channel_ids) = self.channel_ids.as_ref() { + let mut pdu_data = Vec::new(); + send_data_context_pdu.to_buffer(&mut pdu_data)?; + + let send_data_context = ironrdp::mcs::SendDataContext { + channel_id: channel_ids.channel_id, + initiator_id: channel_ids.initiator_id, + pdu_length: pdu_data.len(), + }; + + self.mcs_transport.encode( + McsTransport::prepare_data_to_encode( + ironrdp::McsPdu::SendDataRequest(send_data_context), + Some(pdu_data), + )?, + &mut stream, + ) + } else { + Err(RdpError::AccessToNonExistingChannelName( + "Channel not connected".to_string(), + )) + } + } +} + +impl Decoder for SendPduDataContextTransport +where + D: PduParsing, + RdpError: From<::Error>, +{ + type Item = (ChannelIdentificators, D); + type Error = RdpError; + + fn decode(&mut self, mut stream: impl io::Read) -> Result { + let mcs_pdu = self.mcs_transport.decode(&mut stream)?; + + let channel_ids = match mcs_pdu { + ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }), + ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err(RdpError::UnexpectedDisconnection( + format!("Server disconnection reason - {:?}", disconnect_reason), + )), + _ => Err(RdpError::UnexpectedPdu(format!( + "Expected Send Data Context PDU, got {:?}", + mcs_pdu.as_short_name() + ))), + }?; + + let data = D::from_buffer(&mut stream)?; + Ok((channel_ids, data)) + } +} diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp_client/src/transport/connection.rs index 37a2ddc7..b4030930 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp_client/src/transport/connection.rs @@ -1,23 +1,24 @@ -use std::io; - use bytes::BytesMut; +use futures::StreamExt; use ironrdp::{nego, PduParsing}; use log::debug; use sspi::internal::credssp; +use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; +use tokio_util::codec::Framed; -use super::{DataTransport, Decoder, Encoder}; -use crate::RdpError; +use crate::{codecs::RdpFrameCodec, RdpError}; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; #[derive(Default)] pub struct TsRequestTransport; -impl Encoder for TsRequestTransport { - type Item = credssp::TsRequest; - type Error = RdpError; - - fn encode(&mut self, ts_request: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { +impl TsRequestTransport { + pub async fn encode( + &mut self, + ts_request: credssp::TsRequest, + mut stream: impl AsyncWrite + Unpin, + ) -> Result<(), RdpError> { let mut buf = BytesMut::with_capacity(ts_request.buffer_len() as usize); buf.resize(ts_request.buffer_len() as usize, 0x00); @@ -25,25 +26,20 @@ impl Encoder for TsRequestTransport { .encode_ts_request(buf.as_mut()) .map_err(RdpError::TsRequestError)?; - stream.write_all(buf.as_ref())?; - stream.flush()?; + stream.write_all(buf.as_ref()).await?; + stream.flush().await?; Ok(()) } -} -impl Decoder for TsRequestTransport { - type Item = credssp::TsRequest; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { + pub async fn decode(&mut self, mut stream: impl AsyncRead + Unpin) -> Result { let mut buf = BytesMut::with_capacity(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE); buf.resize(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE, 0x00); - stream.read_exact(&mut buf)?; + stream.read_exact(&mut buf).await?; let ts_request_buffer_length = credssp::TsRequest::read_length(buf.as_ref())?; buf.resize(ts_request_buffer_length, 0x00); - stream.read_exact(&mut buf[MAX_TS_REQUEST_LENGTH_BUFFER_SIZE..])?; + stream.read_exact(&mut buf[MAX_TS_REQUEST_LENGTH_BUFFER_SIZE..]).await?; let ts_request = credssp::TsRequest::from_buffer(buf.as_ref()).map_err(RdpError::TsRequestError)?; @@ -54,10 +50,10 @@ impl Decoder for TsRequestTransport { pub struct EarlyUserAuthResult; impl EarlyUserAuthResult { - pub fn read(mut stream: impl io::Read) -> Result { + pub async fn read(mut stream: impl AsyncRead + Unpin) -> Result { let mut buf = BytesMut::with_capacity(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE); buf.resize(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE, 0x00); - stream.read_exact(&mut buf)?; + stream.read_exact(&mut buf).await?; let early_user_auth_result = credssp::EarlyUserAuthResult::from_buffer(buf.as_ref()).map_err(RdpError::EarlyUserAuthResultError)?; @@ -65,24 +61,25 @@ impl EarlyUserAuthResult { } } -pub fn connect( - mut stream: impl io::Read + io::Write, +pub async fn connect( + mut stream: impl AsyncRead + AsyncWrite + Unpin, security_protocol: nego::SecurityProtocol, username: String, -) -> Result<(DataTransport, nego::SecurityProtocol), RdpError> { +) -> Result { let selected_protocol = process_negotiation( &mut stream, Some(nego::NegoData::Cookie(username)), security_protocol, nego::RequestFlags::empty(), 0, - )?; + ) + .await?; - Ok((DataTransport::default(), selected_protocol)) + Ok(selected_protocol) } -fn process_negotiation( - mut stream: impl io::Read + io::Write, +async fn process_negotiation( + mut stream: impl AsyncRead + AsyncWrite + Unpin, nego_data: Option, protocol: nego::SecurityProtocol, flags: nego::RequestFlags, @@ -95,10 +92,15 @@ fn process_negotiation( src_ref, }; debug!("Send X.224 Connection Request PDU: {:?}", connection_request); - connection_request.to_buffer(&mut stream)?; - stream.flush()?; + let mut buffer = Vec::new(); + connection_request.to_buffer(&mut buffer)?; + stream.write_all(buffer.as_slice()).await?; + stream.flush().await?; - let connection_response = nego::Response::from_buffer(&mut stream)?; + let mut framed = Framed::new(&mut stream, RdpFrameCodec::default()); + + let data = framed.next().await.ok_or(RdpError::AccessDenied)??; + let connection_response = nego::Response::from_buffer(data.as_ref())?; if let Some(nego::ResponseData::Response { flags, protocol: selected_protocol, From f991685ffb73cd47ec2228c06a1057487cb3f968 Mon Sep 17 00:00:00 2001 From: Alexandr Yusuk Date: Fri, 11 Nov 2022 18:31:13 +0200 Subject: [PATCH 0087/1273] chore(ironrdp_client): update sspi-rs version --- ironrdp_client/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index cec612dc..7033cab1 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -25,7 +25,7 @@ native-tls = ["dep:native-tls", "dep:async-native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } -sspi = { version = "0.4.0", features = ["network_client"] } +sspi = { version = "0.5.0", features = ["network_client"] } clap = { version = "4.0", features = ["derive", "cargo"] } bytes = "1" failure = "0.1" @@ -51,4 +51,4 @@ tokio-rustls = { version = "0.23", optional = true } bit_field = "0.10.1" tokio-util = { version = "0.7", features = ["full"] } byteorder = "1.4.3" -futures = "0.3" \ No newline at end of file +futures = "0.3" From 5110d9bfae5247f0ec432ec5f2b21fcbde6cc7d2 Mon Sep 17 00:00:00 2001 From: Alexandr Yusuk Date: Mon, 14 Nov 2022 18:42:49 +0200 Subject: [PATCH 0088/1273] chore(ironrdp_client): update sspi-rs to 0.5.1 --- ironrdp_client/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ironrdp_client/Cargo.toml b/ironrdp_client/Cargo.toml index 7033cab1..e553c7fa 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp_client/Cargo.toml @@ -25,7 +25,7 @@ native-tls = ["dep:native-tls", "dep:async-native-tls"] [dependencies] ironrdp = { path = "../ironrdp" } -sspi = { version = "0.5.0", features = ["network_client"] } +sspi = { version = "0.5.1", features = ["network_client"] } clap = { version = "4.0", features = ["derive", "cargo"] } bytes = "1" failure = "0.1" From bc869fc3dc4075039bfe5b9b76c13cf446a63b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 15 Nov 2022 18:33:05 -0500 Subject: [PATCH 0089/1273] Refactor and break down `ironrdp_client` crate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ironrdp_client` is broken down into two smaller crates: - `ironrdp-cli` - `ironrdp-session` `ironrdp-session` is meant to be reused by the actual client implementations. It’s purpose is to be a portable component providing higher-level abstraction to the RDP protocol (async state machine, etc). --- Cargo.toml | 4 +- {ironrdp_client => ironrdp-cli}/Cargo.toml | 54 ++-- {ironrdp_client => ironrdp-cli}/README.md | 16 +- {ironrdp_client => ironrdp-cli}/src/config.rs | 2 +- {ironrdp_client => ironrdp-cli}/src/main.rs | 80 ++++-- ironrdp-session/Cargo.toml | 27 ++ ironrdp-session/src/active_session.rs | 101 +++++++ .../src/active_session/codecs.rs | 0 .../src/active_session/codecs/rfx.rs | 88 ++----- .../src/active_session/codecs/rfx/tests.rs | 12 +- .../src/active_session/fast_path.rs | 89 +++---- .../src/active_session/x224.rs | 12 +- .../src/active_session/x224/display.rs | 0 .../src/active_session/x224/gfx.rs | 0 ironrdp-session/src/codecs.rs | 152 +++++++++++ .../src/connection_sequence.rs | 246 +++++++++--------- .../src/connection_sequence/user_info.rs | 3 +- .../src/errors.rs | 0 ironrdp-session/src/image.rs | 87 +++++++ .../src/lib.rs | 26 +- .../src/transport.rs | 17 +- .../src/transport/channels.rs | 0 .../src/transport/connection.rs | 33 ++- .../src/utils.rs | 0 ironrdp/Cargo.toml | 8 +- ironrdp/src/basic_output/bitmap.rs | 11 +- ironrdp/src/codecs/rfx.rs | 1 + ironrdp/src/codecs/rfx/color_conversion.rs | 4 +- .../src/codecs/rfx/color_conversion/tests.rs | 4 +- ironrdp/src/codecs/rfx/data_messages.rs | 12 +- ironrdp/src/codecs/rfx/image_processing.rs | 4 +- .../src/codecs/rfx/image_processing/tests.rs | 52 ++++ .../src/codecs/rfx/rectangles_processing.rs | 12 +- ironrdp/src/lib.rs | 4 +- ironrdp/src/nego.rs | 2 +- ironrdp_client/src/active_session.rs | 101 ------- ironrdp_client/src/codecs.rs | 115 -------- 37 files changed, 788 insertions(+), 591 deletions(-) rename {ironrdp_client => ironrdp-cli}/Cargo.toml (59%) rename {ironrdp_client => ironrdp-cli}/README.md (80%) rename {ironrdp_client => ironrdp-cli}/src/config.rs (99%) rename {ironrdp_client => ironrdp-cli}/src/main.rs (61%) create mode 100644 ironrdp-session/Cargo.toml create mode 100644 ironrdp-session/src/active_session.rs rename {ironrdp_client => ironrdp-session}/src/active_session/codecs.rs (100%) rename {ironrdp_client => ironrdp-session}/src/active_session/codecs/rfx.rs (74%) rename {ironrdp_client => ironrdp-session}/src/active_session/codecs/rfx/tests.rs (99%) rename {ironrdp_client => ironrdp-session}/src/active_session/fast_path.rs (70%) rename {ironrdp_client => ironrdp-session}/src/active_session/x224.rs (98%) rename {ironrdp_client => ironrdp-session}/src/active_session/x224/display.rs (100%) rename {ironrdp_client => ironrdp-session}/src/active_session/x224/gfx.rs (100%) create mode 100644 ironrdp-session/src/codecs.rs rename {ironrdp_client => ironrdp-session}/src/connection_sequence.rs (73%) rename {ironrdp_client => ironrdp-session}/src/connection_sequence/user_info.rs (99%) rename {ironrdp_client => ironrdp-session}/src/errors.rs (100%) create mode 100644 ironrdp-session/src/image.rs rename {ironrdp_client => ironrdp-session}/src/lib.rs (63%) rename {ironrdp_client => ironrdp-session}/src/transport.rs (98%) rename {ironrdp_client => ironrdp-session}/src/transport/channels.rs (100%) rename {ironrdp_client => ironrdp-session}/src/transport/connection.rs (84%) rename {ironrdp_client => ironrdp-session}/src/utils.rs (100%) delete mode 100644 ironrdp_client/src/active_session.rs delete mode 100644 ironrdp_client/src/codecs.rs diff --git a/Cargo.toml b/Cargo.toml index 7acb0839..06efe42e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] members = [ "ironrdp", - "ironrdp_client" + "ironrdp-session", + "ironrdp-cli" ] - diff --git a/ironrdp_client/Cargo.toml b/ironrdp-cli/Cargo.toml similarity index 59% rename from ironrdp_client/Cargo.toml rename to ironrdp-cli/Cargo.toml index e553c7fa..484b1643 100644 --- a/ironrdp_client/Cargo.toml +++ b/ironrdp-cli/Cargo.toml @@ -1,54 +1,46 @@ [package] -name = "ironrdp_client" +name = "ironrdp-cli" version = "0.4.2" edition = "2021" readme = "README.md" license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" -authors = ["Marc-André Moreau ", - "Vladyslav Hordiienko "] keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] -[lib] -name = "ironrdp_client" -path = "src/lib.rs" - -[[bin]] -name = "ironrdp_client_app" -path = "src/main.rs" - [features] default = ["rustls"] rustls = ["dep:rustls", "dep:tokio-rustls"] native-tls = ["dep:native-tls", "dep:async-native-tls"] [dependencies] + +# Protocol ironrdp = { path = "../ironrdp" } -sspi = { version = "0.5.1", features = ["network_client"] } +ironrdp-session = { path = "../ironrdp-session" } +sspi = "0.4.0" + +# CLI clap = { version = "4.0", features = ["derive", "cargo"] } -bytes = "1" -failure = "0.1" -chrono = "0.4" -fern = "0.6" +exitcode = "1.1.2" + +# logging log = "0.4" +fern = "0.6" + +# SSL x509-parser = "0.14" -whoami = "1" -num-traits = "0.2" -num-derive = "0.3" -semver = "1" -lazy_static = "1.4" -exitcode = "1.1" -bufstream = "0.1" -ring = "0.16.0" native-tls = { version = "0.2", optional = true } -async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } -dns-lookup = "1.0.8" -bitflags = "1" + +# async, futures tokio = { version = "1", features = ["full"]} +async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } tokio-rustls = { version = "0.23", optional = true } -bit_field = "0.10.1" -tokio-util = { version = "0.7", features = ["full"] } -byteorder = "1.4.3" -futures = "0.3" +tokio-util = { version = "0.7.4", features = ["compat"] } +futures-util = "0.3" + +# Utils +chrono = "0.4.22" +image = "0.24.4" diff --git a/ironrdp_client/README.md b/ironrdp-cli/README.md similarity index 80% rename from ironrdp_client/README.md rename to ironrdp-cli/README.md index d55ee893..16aa96dd 100644 --- a/ironrdp_client/README.md +++ b/ironrdp-cli/README.md @@ -5,12 +5,18 @@ If IronRDP client encounters an error, then will return `error` exit code and pr an error. ## Prerequisites + Before connection to a Windows 10 RDP server please enable RFX feature: -1. run `gpedit.msc`; -2. go to `Administrative Templates` → `Windows Components` → `Remote Desktop Services` → -`Remote Desktop Session Host` → `Remote Session Environment` → -`RemoteFX for Windows Server 2008 R2`→ `Configure RemoteFX`; -3. tap Enabled. + +1. Run `gpedit.msc`. + +2. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/RemoteFX for Windows Server 2008 R2/Configure RemoteFX` + +3. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008 R2 SP1` + +4. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Limit maximum color depth` + +5. Reboot. ## Command-line Interface diff --git a/ironrdp_client/src/config.rs b/ironrdp-cli/src/config.rs similarity index 99% rename from ironrdp_client/src/config.rs rename to ironrdp-cli/src/config.rs index f62ab39d..b2b94380 100644 --- a/ironrdp_client/src/config.rs +++ b/ironrdp-cli/src/config.rs @@ -1,7 +1,7 @@ use std::{net::SocketAddr, num::ParseIntError}; use clap::{clap_derive::ValueEnum, crate_name, Parser}; -use ironrdp_client::{GraphicsConfig, InputConfig}; +use ironrdp_session::{GraphicsConfig, InputConfig}; use sspi::AuthIdentity; const DEFAULT_WIDTH: u16 = 1920; diff --git a/ironrdp_client/src/main.rs b/ironrdp-cli/src/main.rs similarity index 61% rename from ironrdp_client/src/main.rs rename to ironrdp-cli/src/main.rs index d52763ca..fface121 100644 --- a/ironrdp_client/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -1,13 +1,25 @@ +#[macro_use] +extern crate log; + mod config; -use std::io::{self}; +use std::io; -use ironrdp_client::{process_active_stage, process_connection_sequence, RdpError, UpgradedStream}; -use log::error; -use tokio::{io::AsyncWriteExt, net::TcpStream}; -use x509_parser::prelude::{FromDer, X509Certificate}; +use crate::config::Config; +use futures_util::io::AsyncWriteExt as _; +use ironrdp::codecs::rfx::image_processing::PixelFormat; +use ironrdp_session::image::DecodedImage; +use ironrdp_session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; +use tokio::io::AsyncWriteExt as _; +use tokio::net::TcpStream; +use tokio_util::compat::TokioAsyncReadCompatExt as _; +use x509_parser::prelude::{FromDer as _, X509Certificate}; -use self::config::Config; +#[cfg(feature = "rustls")] +type TlsStream = tokio_util::compat::Compat>; + +#[cfg(all(feature = "native-tls", not(feature = "rustls")))] +type TlsStream = tokio_util::compat::Compat>; #[cfg(feature = "rustls")] mod danger { @@ -41,13 +53,11 @@ async fn main() { let exit_code = match run(config).await { Ok(_) => { println!("RDP successfully finished"); - exitcode::OK } Err(RdpError::IOError(e)) if e.kind() == io::ErrorKind::UnexpectedEof => { error!("{}", e); println!("The server has terminated the RDP session"); - exitcode::NOHOST } Err(ref e) => { @@ -82,20 +92,46 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { } async fn run(config: Config) -> Result<(), RdpError> { - let addr = socket_addr_to_string(config.routing_addr); - let stream = TcpStream::connect(addr.as_str()) + let stream = TcpStream::connect(config.routing_addr) .await .map_err(RdpError::ConnectionError)?; - let (connection_sequence_result, stream) = - process_connection_sequence(stream, &config.routing_addr, &config.input, establish_tls).await?; + let (connection_sequence_result, mut reader, mut writer) = + process_connection_sequence(stream.compat(), &config.routing_addr, &config.input, establish_tls).await?; - process_active_stage(stream, config.input, connection_sequence_result).await?; + let mut image = DecodedImage::new( + PixelFormat::RgbA32, + u32::from(connection_sequence_result.desktop_size.width), + u32::from(connection_sequence_result.desktop_size.height), + ); + + let mut active_stage = ActiveStageProcessor::new(config.input, connection_sequence_result); + let mut frame_id = 0; + + 'outer: loop { + let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; + let outputs = active_stage.process(&mut image, frame).await?; + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => writer.write_all(&frame).await?, + ActiveStageOutput::GraphicsUpdate(_region) => { + // TODO: control this with CLI argument + dump_image(&image, frame_id); + + frame_id += 1; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } Ok(()) } -async fn establish_tls(stream: TcpStream) -> Result { +// TODO: this can be refactored into a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) +async fn establish_tls(stream: tokio_util::compat::Compat) -> Result, RdpError> { + let stream = stream.into_inner(); + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] let mut tls_stream = { let connector = async_native_tls::TlsConnector::new() @@ -115,6 +151,7 @@ async fn establish_tls(stream: TcpStream) -> Result { .with_safe_defaults() .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) .with_no_client_auth(); + // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); let rc_config = std::sync::Arc::new(client_config); let example_com = "stub_string".try_into().unwrap(); @@ -145,15 +182,11 @@ async fn establish_tls(stream: TcpStream) -> Result { }; Ok(UpgradedStream { - stream: tls_stream, + stream: tls_stream.compat(), server_public_key, }) } -pub fn socket_addr_to_string(socket_addr: std::net::SocketAddr) -> String { - format!("{}:{}", socket_addr.ip(), socket_addr.port()) -} - pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { let res = X509Certificate::from_der(&cert[..]) .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; @@ -161,3 +194,12 @@ pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { Ok(public_key.data.to_vec()) } + +pub fn dump_image(image: &DecodedImage, frame_id: usize) { + debug_assert_eq!(image.pixel_format(), PixelFormat::RgbA32); + + image::RgbaImage::from_raw(image.width(), image.height(), image.data().to_vec()) + .unwrap() + .save(format!("frame.{frame_id}.jpg")) + .unwrap(); +} diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml new file mode 100644 index 00000000..5ade0813 --- /dev/null +++ b/ironrdp-session/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "ironrdp-session" +version = "0.1.0" +edition = "2021" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[dependencies] +ironrdp = { path = "../ironrdp" } +sspi = { version = "0.4.0", features = ["network_client"] } +bytes = "1" +chrono = "0.4" +failure = "0.1.8" +log = "0.4" +whoami = "1" +semver = "1" +num-derive = "0.3.3" +num-traits = "0.2.14" +lazy_static = "1.4" +dns-lookup = "1.0.8" +bitflags = "1" +bit_field = "0.10.1" +byteorder = "1.4.3" +futures-util = "0.3" +ring = "0.16.20" # for ring::rand::SystemRandom, we might consider using another crate at some point for portability diff --git a/ironrdp-session/src/active_session.rs b/ironrdp-session/src/active_session.rs new file mode 100644 index 00000000..6f960fd0 --- /dev/null +++ b/ironrdp-session/src/active_session.rs @@ -0,0 +1,101 @@ +mod codecs; +mod fast_path; +mod x224; + +use bytes::{BufMut as _, BytesMut}; +use ironrdp::fast_path::FastPathError; +use ironrdp::{RdpPdu, Rectangle}; +use log::warn; + +use crate::connection_sequence::ConnectionSequenceResult; +use crate::image::DecodedImage; +use crate::transport::{Decoder, RdpTransport}; +use crate::{utils, InputConfig, RdpError}; + +pub struct ActiveStageProcessor { + x224_processor: x224::Processor, + fast_path_processor: fast_path::Processor, +} + +impl ActiveStageProcessor { + pub fn new(config: InputConfig, connection_sequence_result: ConnectionSequenceResult) -> Self { + let x224_processor = x224::Processor::new( + utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), + config.global_channel_name, + config.graphics_config, + ); + + let fast_path_processor = fast_path::ProcessorBuilder { + global_channel_id: connection_sequence_result.global_channel_id, + initiator_id: connection_sequence_result.initiator_id, + } + .build(); + + Self { + x224_processor, + fast_path_processor, + } + } + + pub async fn process( + &mut self, + image: &mut DecodedImage, + frame: BytesMut, + ) -> Result, RdpError> { + let mut output_writer = BytesMut::new().writer(); + let mut frame_reader = frame.as_ref(); + let mut graphics_update_region = None; + + match RdpTransport.decode(&mut frame_reader) { + Ok(RdpPdu::X224(data)) => { + if let Err(error) = self.x224_processor.process(frame_reader, &mut output_writer, data) { + match error { + RdpError::UnexpectedDisconnection(message) => { + warn!("User-Initiated disconnection on Server: {}", message); + return Ok(vec![ActiveStageOutput::Terminate]); + } + RdpError::UnexpectedChannel(channel_id) => { + warn!("Got message on a channel with {} ID", channel_id); + return Ok(vec![ActiveStageOutput::Terminate]); + } + err => { + return Err(err); + } + } + } + } + Ok(RdpPdu::FastPath(header)) => { + // skip header bytes in such way because here is possible + // that data length was written in the not right way, + // so we should skip only what has been actually read + + graphics_update_region = + self.fast_path_processor + .process(image, &header, frame_reader, &mut output_writer)?; + } + Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read: _ })) => { + warn!("Received null-length Fast-Path packet, dropping it"); + } + Err(e) => return Err(e), + } + + let mut stage_outputs = Vec::new(); + + let output_buffer = output_writer.into_inner(); + if !output_buffer.is_empty() { + stage_outputs.push(ActiveStageOutput::ResponseFrame(output_buffer)); + } + + if let Some(update_region) = graphics_update_region { + stage_outputs.push(ActiveStageOutput::GraphicsUpdate(update_region)); + } + + Ok(stage_outputs) + } +} + +pub enum ActiveStageOutput { + ResponseFrame(BytesMut), + GraphicsUpdate(Rectangle), + Terminate, +} diff --git a/ironrdp_client/src/active_session/codecs.rs b/ironrdp-session/src/active_session/codecs.rs similarity index 100% rename from ironrdp_client/src/active_session/codecs.rs rename to ironrdp-session/src/active_session/codecs.rs diff --git a/ironrdp_client/src/active_session/codecs/rfx.rs b/ironrdp-session/src/active_session/codecs/rfx.rs similarity index 74% rename from ironrdp_client/src/active_session/codecs/rfx.rs rename to ironrdp-session/src/active_session/codecs/rfx.rs index 73169cb2..b2048fcb 100644 --- a/ironrdp_client/src/active_session/codecs/rfx.rs +++ b/ironrdp-session/src/active_session/codecs/rfx.rs @@ -2,10 +2,9 @@ mod tests; use std::cmp::min; -use std::sync::{Arc, Mutex}; use ironrdp::codecs::rfx::color_conversion::YCbCrBuffer; -use ironrdp::codecs::rfx::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; +use ironrdp::codecs::rfx::image_processing::PixelFormat; use ironrdp::codecs::rfx::rectangles_processing::Region; use ironrdp::codecs::rfx::{ self, color_conversion, dwt, quantization, rlgr, subband_reconstruction, EntropyAlgorithm, Headers, Quant, @@ -15,7 +14,7 @@ use ironrdp::{PduBufferParsing, Rectangle}; use lazy_static::lazy_static; use log::debug; -use crate::active_session::DecodedImage; +use crate::image::DecodedImage; use crate::RdpError; const TILE_SIZE: u16 = 64; @@ -31,12 +30,11 @@ pub struct DecodingContext { state: SequenceState, context: rfx::ContextPdu, channels: rfx::ChannelsPdu, - destination_pixel_format: PixelFormat, decoding_tiles: DecodingTileContext, } -impl DecodingContext { - pub fn new(destination_pixel_format: PixelFormat) -> Self { +impl Default for DecodingContext { + fn default() -> Self { Self { state: SequenceState::HeaderMessages, context: rfx::ContextPdu { @@ -44,26 +42,29 @@ impl DecodingContext { entropy_algorithm: rfx::EntropyAlgorithm::Rlgr1, }, channels: rfx::ChannelsPdu(vec![]), - destination_pixel_format, decoding_tiles: DecodingTileContext::new(), } } +} + +impl DecodingContext { + pub fn new() -> Self { + Self::default() + } pub fn decode( &mut self, + image: &mut DecodedImage, destination: &Rectangle, input: &mut &[u8], - image: Arc>, - ) -> Result { + ) -> Result<(FrameId, Rectangle), RdpError> { loop { match self.state { SequenceState::HeaderMessages => { self.process_headers(input)?; } SequenceState::DataMessages => { - let frame_id = self.process_data_messages(destination, input, image)?; - - return Ok(frame_id); + return self.process_data_messages(image, destination, input); } } } @@ -99,10 +100,10 @@ impl DecodingContext { fn process_data_messages( &mut self, + image: &mut DecodedImage, destination: &Rectangle, input: &mut &[u8], - image: Arc>, - ) -> Result { + ) -> Result<(FrameId, Rectangle), RdpError> { let width = self.channels.0.first().unwrap().width as u16; let height = self.channels.0.first().unwrap().height as u16; let entropy_algorithm = self.context.entropy_algorithm; @@ -131,7 +132,6 @@ impl DecodingContext { let clipping_rectangles = clipping_rectangles(region.rectangles.as_slice(), destination, width, height); debug!("Clipping rectangles: {:?}", clipping_rectangles); - let clipping_rectangles_ref = &clipping_rectangles; for (update_rectangle, tile_data) in tiles_to_rectangles(tile_set.tiles.as_slice(), destination) .zip(map_tiles_data(tile_set.tiles.as_slice(), tile_set.quants.as_slice())) @@ -144,13 +144,11 @@ impl DecodingContext { self.decoding_tiles.ycbcr_temp_buffer.as_mut(), )?; - process_decoded_tile( - self.decoding_tiles.tile_output.as_slice(), - clipping_rectangles_ref, + image.apply_tile( + &self.decoding_tiles.tile_output, + &clipping_rectangles, &update_rectangle, width, - self.destination_pixel_format, - &image, )?; } @@ -158,52 +156,10 @@ impl DecodingContext { self.state = SequenceState::HeaderMessages; } - Ok(frame_begin.index) + Ok((frame_begin.index, clipping_rectangles.extents)) } } -fn process_decoded_tile( - tile_output: &[u8], - clipping_rectangles: &Region, - update_rectangle: &Rectangle, - width: u16, - destination_pixel_format: PixelFormat, - image: &Arc>, -) -> Result<(), RdpError> { - debug!("Tile: {:?}", update_rectangle); - - let update_region = clipping_rectangles.intersect_rectangle(update_rectangle); - for region_rectangle in update_region.rectangles() { - let source_x = region_rectangle.left - update_rectangle.left; - let source_y = region_rectangle.top - update_rectangle.top; - let source_image_region = ImageRegion { - region: Rectangle { - left: source_x, - top: source_y, - right: source_x + region_rectangle.width(), - bottom: source_y + region_rectangle.height(), - }, - step: *SOURCE_STRIDE, - pixel_format: SOURCE_PIXEL_FORMAT, - data: tile_output, - }; - - let mut output = image.lock().unwrap(); - let mut destination_image_region = ImageRegionMut { - region: region_rectangle.clone(), - step: width * u16::from(SOURCE_PIXEL_FORMAT.bytes_per_pixel()), - pixel_format: destination_pixel_format, - data: output.get_mut(), - }; - debug!("Source image region: {:?}", source_image_region.region); - debug!("Destination image region: {:?}", destination_image_region.region); - - source_image_region.copy_to(&mut destination_image_region)?; - } - - Ok(()) -} - #[derive(Debug, Clone)] struct DecodingTileContext { pub tile_output: Vec, @@ -238,7 +194,7 @@ fn decode_tile( cr: ycbcr_temp[2].as_slice(), }; - color_conversion::ycbcr_to_rgb(ycbcr_buffer, output)?; + color_conversion::ycbcr_to_bgra(ycbcr_buffer, output)?; Ok(()) } @@ -275,7 +231,7 @@ fn clipping_rectangles(rectangles: &[RfxRectangle], destination: &Rectangle, wid } fn tiles_to_rectangles<'a>(tiles: &'a [Tile<'_>], destination: &'a Rectangle) -> impl Iterator + 'a { - tiles.iter().map(move |t| Rectangle { + tiles.iter().map(|t| Rectangle { left: destination.left + t.x * TILE_SIZE, top: destination.top + t.y * TILE_SIZE, right: destination.left + t.x * TILE_SIZE + TILE_SIZE, @@ -286,7 +242,7 @@ fn tiles_to_rectangles<'a>(tiles: &'a [Tile<'_>], destination: &'a Rectangle) -> fn map_tiles_data<'a>(tiles: &'_ [Tile<'a>], quants: &'_ [Quant]) -> Vec> { tiles .iter() - .map(move |t| TileData { + .map(|t| TileData { quants: [ quants[usize::from(t.y_quant_index)].clone(), quants[usize::from(t.cb_quant_index)].clone(), diff --git a/ironrdp_client/src/active_session/codecs/rfx/tests.rs b/ironrdp-session/src/active_session/codecs/rfx/tests.rs similarity index 99% rename from ironrdp_client/src/active_session/codecs/rfx/tests.rs rename to ironrdp-session/src/active_session/codecs/rfx/tests.rs index 19baa756..4c5447f4 100644 --- a/ironrdp_client/src/active_session/codecs/rfx/tests.rs +++ b/ironrdp-session/src/active_session/codecs/rfx/tests.rs @@ -16,17 +16,13 @@ fn decode_decodes_valid_sequence_of_messages() { let mut data = ENCODED_MESSAGES.as_ref(); let expected = DECODED_IMAGE.as_ref(); - let image = Arc::new(Mutex::new(DecodedImage::new( - IMAGE_WIDTH as u32, - IMAGE_HEIGHT as u32, - PixelFormat::BgrX32, - ))); + let mut image = DecodedImage::new(PixelFormat::BgrX32, IMAGE_WIDTH as u32, IMAGE_HEIGHT as u32); - let mut handler = DecodingContext::new(PixelFormat::BgrX32); + let mut handler = DecodingContext::default(); - handler.decode(&destination, &mut data, image.clone()).unwrap(); + handler.decode(&mut image, &destination, &mut data).unwrap(); - assert_eq!(expected, image.lock().unwrap().data.as_slice()); + assert_eq!(expected, image.data()); } const ENCODED_MESSAGES: [u8; 2970] = [ diff --git a/ironrdp_client/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs similarity index 70% rename from ironrdp_client/src/active_session/fast_path.rs rename to ironrdp-session/src/active_session/fast_path.rs index 9ecd2c64..7836de92 100644 --- a/ironrdp_client/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -1,15 +1,14 @@ use std::io; -use std::sync::{Arc, Mutex}; use ironrdp::codecs::rfx::FrameAcknowledgePdu; use ironrdp::fast_path::{FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode}; use ironrdp::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; -use ironrdp::{PduBufferParsing, ShareDataPdu}; +use ironrdp::{PduBufferParsing, Rectangle, ShareDataPdu}; use log::{debug, info, warn}; use num_traits::FromPrimitive; use super::codecs::rfx; -use super::{DecodedImage, DESTINATION_PIXEL_FORMAT}; +use crate::image::DecodedImage; use crate::transport::{ DataTransport, Encoder, McsTransport, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, @@ -20,20 +19,21 @@ use crate::RdpError; pub struct Processor { complete_data: CompleteData, rfx_handler: rfx::DecodingContext, - decoded_image: Arc>, frame: Frame, } impl Processor { + // Returns true if image buffer was updated, false otherwise pub fn process( &mut self, + image: &mut DecodedImage, header: &FastPathHeader, - stream: &[u8], + input: &[u8], mut output: impl io::Write, - ) -> Result<(), RdpError> { + ) -> Result, RdpError> { debug!("Got Fast-Path Header: {:?}", header); - let update_pdu = FastPathUpdatePdu::from_buffer(stream)?; + let update_pdu = FastPathUpdatePdu::from_buffer(input)?; debug!("Fast-Path Update fragmentation: {:?}", update_pdu.fragmentation); let processed_complete_data = self @@ -41,43 +41,47 @@ impl Processor { .process_data(update_pdu.data, update_pdu.fragmentation); let update_code = update_pdu.update_code; - if let Some(data) = processed_complete_data { - let update = FastPathUpdate::from_buffer_with_code(data.as_slice(), update_code); + let Some(data) = processed_complete_data else { + return Ok(None); + }; - match update { - Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { - info!("Received Surface Commands: {} pieces", surface_commands.len()); + let update = FastPathUpdate::from_buffer_with_code(data.as_slice(), update_code); - self.process_surface_commands(&mut output, surface_commands)?; - } - Ok(FastPathUpdate::Bitmap(bitmap)) => { - info!("Received Bitmap: {:?}", bitmap); - } - Err(FastPathError::UnsupportedFastPathUpdate(code)) - if code == UpdateCode::Orders || code == UpdateCode::Palette => - { - return Err(RdpError::UnexpectedFastPathUpdate(code)); - } - Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { - warn!("Received unsupported Fast-Path update: {:?}", update_code) - } - Err(FastPathError::BitmapError(error)) => { - warn!("Received invalid bitmap: {:?}", error) - } - Err(e) => { - return Err(RdpError::from(e)); - } + match update { + Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { + info!("Received Surface Commands: {} pieces", surface_commands.len()); + let update_region = self.process_surface_commands(image, &mut output, surface_commands)?; + Ok(Some(update_region)) } + Ok(FastPathUpdate::Bitmap(bitmap)) => { + info!("Received Bitmap: {:?}", bitmap); + Ok(None) + } + Err(FastPathError::UnsupportedFastPathUpdate(code)) + if code == UpdateCode::Orders || code == UpdateCode::Palette => + { + Err(RdpError::UnexpectedFastPathUpdate(code)) + } + Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { + warn!("Received unsupported Fast-Path update: {:?}", update_code); + Ok(None) + } + Err(FastPathError::BitmapError(error)) => { + warn!("Received invalid bitmap: {:?}", error); + Ok(None) + } + Err(e) => Err(RdpError::from(e)), } - - Ok(()) } fn process_surface_commands( &mut self, + image: &mut DecodedImage, mut output: impl io::Write, surface_commands: Vec>, - ) -> Result<(), RdpError> { + ) -> Result { + let mut update_rectangle = Rectangle::empty(); + for command in surface_commands { match command { SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { @@ -90,8 +94,8 @@ impl Processor { let mut data = bits.extended_bitmap_data.data; while !data.is_empty() { - self.rfx_handler - .decode(&destination, &mut data, self.decoded_image.clone())?; + let (_frame_id, rectangle) = self.rfx_handler.decode(image, &destination, &mut data)?; + update_rectangle = update_rectangle.union(&rectangle); } } } @@ -107,12 +111,11 @@ impl Processor { } } - Ok(()) + Ok(update_rectangle) } } pub struct ProcessorBuilder { - pub decoded_image: Arc>, pub global_channel_id: u16, pub initiator_id: u16, } @@ -121,8 +124,7 @@ impl ProcessorBuilder { pub fn build(self) -> Processor { Processor { complete_data: CompleteData::new(), - rfx_handler: rfx::DecodingContext::new(DESTINATION_PIXEL_FORMAT), - decoded_image: self.decoded_image.clone(), + rfx_handler: rfx::DecodingContext::new(), frame: Frame::new(self.initiator_id, self.global_channel_id), } } @@ -175,11 +177,10 @@ impl CompleteData { } fn append_data(&mut self, data: &[u8]) { - if self.fragmented_data.is_none() { - warn!("Got unexpected Next fragmentation PDU without prior First fragmentation PDU"); - self.fragmented_data = None; + if let Some(fragmented_data) = self.fragmented_data.as_mut() { + fragmented_data.extend_from_slice(data); } else { - self.fragmented_data.as_mut().unwrap().extend_from_slice(data); + warn!("Got unexpected Next fragmentation PDU without prior First fragmentation PDU"); } } } diff --git a/ironrdp_client/src/active_session/x224.rs b/ironrdp-session/src/active_session/x224.rs similarity index 98% rename from ironrdp_client/src/active_session/x224.rs rename to ironrdp-session/src/active_session/x224.rs index 35498009..3d0dcf68 100644 --- a/ironrdp_client/src/active_session/x224.rs +++ b/ironrdp-session/src/active_session/x224.rs @@ -19,20 +19,20 @@ use crate::{GraphicsConfig, RdpError}; const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; -pub struct Processor<'a> { +pub struct Processor { static_channels: HashMap, channel_map: HashMap, dynamic_channels: HashMap, - global_channel_name: &'a str, + global_channel_name: String, drdynvc_transport: Option, static_transport: Option, graphics_config: Option, } -impl<'a> Processor<'a> { +impl Processor { pub fn new( static_channels: HashMap, - global_channel_name: &'a str, + global_channel_name: String, graphics_config: Option, ) -> Self { Self { @@ -334,11 +334,11 @@ pub struct DynamicChannel { data: CompleteData, channel_id_type: FieldType, channel_id: u32, - handler: Box, + handler: Box, } impl DynamicChannel { - fn new(handler: Box, channel_id: u32, channel_id_type: FieldType) -> Self { + fn new(handler: Box, channel_id: u32, channel_id_type: FieldType) -> Self { Self { data: CompleteData::new(), handler, diff --git a/ironrdp_client/src/active_session/x224/display.rs b/ironrdp-session/src/active_session/x224/display.rs similarity index 100% rename from ironrdp_client/src/active_session/x224/display.rs rename to ironrdp-session/src/active_session/x224/display.rs diff --git a/ironrdp_client/src/active_session/x224/gfx.rs b/ironrdp-session/src/active_session/x224/gfx.rs similarity index 100% rename from ironrdp_client/src/active_session/x224/gfx.rs rename to ironrdp-session/src/active_session/x224/gfx.rs diff --git a/ironrdp-session/src/codecs.rs b/ironrdp-session/src/codecs.rs new file mode 100644 index 00000000..ceabf188 --- /dev/null +++ b/ironrdp-session/src/codecs.rs @@ -0,0 +1,152 @@ +use std::io; +use std::pin::Pin; + +use bit_field::BitField; +use byteorder::{BigEndian, ReadBytesExt}; +use bytes::{BufMut, BytesMut}; +use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; +use ironrdp::Action; +use num_traits::FromPrimitive; + +use crate::transport::{Decoder as TransportDecoder, Encoder as TransportEncoder}; + +pub type ErasedWriter = Pin>; + +pub type ErasedReader = Pin>; + +pub struct FramedReader { + reader: R, + buf: BytesMut, +} + +impl FramedReader +where + R: AsyncRead, +{ + pub fn new(reader: R) -> Self { + Self { + reader, + buf: BytesMut::new(), + } + } + + pub fn into_erased(self) -> FramedReader + where + R: Send + 'static, + { + FramedReader { + reader: Box::pin(self.reader), + buf: self.buf, + } + } + + pub fn into_inner(self) -> (R, BytesMut) { + (self.reader, self.buf) + } + + pub async fn read_frame(&mut self) -> Result, ironrdp::RdpError> + where + R: Unpin, + { + loop { + // Try decoding and see if a frame has been received already + if let Some(frame) = decode_frame(&mut self.buf)? { + return Ok(Some(frame)); + } + + // NOTE: tokio ecosystem has a nice API for this with `AsyncReadExt::read_buf` + let mut read_bytes = [0u8; 1024]; + let len = self.reader.read(&mut read_bytes[..]).await?; + self.buf.extend_from_slice(&read_bytes[..len]); + + // Handle EOF + if len == 0 { + let frame = decode_frame_eof(&mut self.buf)?; + return Ok(frame); + } + } + } + + pub async fn decode_next_frame(&mut self, decoder: &mut D) -> Result + where + D: TransportDecoder, + D::Error: Into, + R: Unpin, + { + let frame = self + .read_frame() + .await? + .ok_or(crate::RdpError::UnexpectedStreamTermination)?; + + let item = decoder.decode(&frame[..]).map_err(Into::into)?; + + Ok(item) + } +} + +pub async fn encode_next_frame(writer: &mut W, encoder: &mut E, item: E::Item) -> Result<(), crate::RdpError> +where + W: AsyncWrite + Unpin, + E: TransportEncoder, + E::Error: Into, +{ + let mut buf = BytesMut::new(); + let buf_writer = (&mut buf).writer(); + encoder.encode(item, buf_writer).map_err(Into::into)?; + writer.write_all(&buf).await?; + Ok(()) +} + +/// Function to call when there are no more bytes available to be read from the underlying I/O. +fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp::RdpError> { + match decode_frame(buf)? { + Some(frame) => Ok(Some(frame)), + None => { + if buf.is_empty() { + Ok(None) + } else { + Err(io::Error::new(io::ErrorKind::Other, "expected more bytes (remaining on stream?)").into()) + } + } + } +} + +/// Attempts to decode a frame from the provided buffer of bytes. +fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp::RdpError> { + let mut stream = buf.as_ref(); + if stream.is_empty() { + return Ok(None); + } + let header = stream.read_u8()?; + let action = header.get_bits(0..2); + let action = Action::from_u8(action).ok_or(ironrdp::RdpError::InvalidActionCode(action))?; + + let length = match action { + Action::X224 if stream.len() >= 3 => { + let _reserved = stream.read_u8()?; + + stream.read_u16::()? + } + Action::FastPath if !stream.is_empty() => { + let a = stream.read_u8()?; + if a & 0x80 != 0 { + if stream.is_empty() { + return Ok(None); + } + let b = stream.read_u8()?; + ((u16::from(a) & !0x80) << 8) + u16::from(b) + } else { + u16::from(a) + } + } + _ => { + return Ok(None); + } + }; + + if buf.len() >= length as usize { + Ok(Some(buf.split_to(length as usize))) + } else { + Ok(None) + } +} diff --git a/ironrdp_client/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs similarity index 73% rename from ironrdp_client/src/connection_sequence.rs rename to ironrdp-session/src/connection_sequence.rs index 05da36a6..58bd6041 100644 --- a/ironrdp_client/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -2,66 +2,87 @@ mod user_info; use std::collections::HashMap; use std::future::Future; -use std::io::{self}; +use std::io; use std::iter; use std::net::SocketAddr; use dns_lookup::lookup_addr; -use futures::{SinkExt, StreamExt}; +use futures_util::AsyncRead; +use futures_util::AsyncReadExt as _; +use futures_util::AsyncWrite; use ironrdp::rdp::capability_sets::CapabilitySet; use ironrdp::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; -use ironrdp::{nego, rdp, ConnectInitial, ConnectResponse, McsPdu, PduParsing}; -use log::{debug, info, trace, warn}; -use ring::rand::SecureRandom; +use ironrdp::{nego, rdp, PduParsing}; +use ring::rand::SecureRandom as _; use sspi::internal::credssp; use sspi::NegotiateConfig; -use tokio::net::TcpStream; -use tokio_util::codec::Framed; -use crate::codecs::{RdpFrameCodec, TrasnportCodec}; -use crate::{transport::*, TlsStreamType}; +use crate::codecs::encode_next_frame; +use crate::codecs::ErasedWriter; +use crate::codecs::FramedReader; +use crate::transport::ChannelIdentificators; +use crate::transport::SendPduDataContextTransport; +use crate::transport::ShareControlHeaderTransport; +use crate::transport::TsRequestTransport; +use crate::transport::{ + connect, DataTransport, EarlyUserAuthResult, McsTransport, SendDataContextTransport, ShareDataHeaderTransport, + X224DataTransport, +}; use crate::{InputConfig, RdpError}; pub type StaticChannels = HashMap; -pub struct DesktopSizes { +pub struct DesktopSize { pub width: u16, pub height: u16, } pub struct ConnectionSequenceResult { - pub desktop_sizes: DesktopSizes, + pub desktop_size: DesktopSize, pub joined_static_channels: StaticChannels, pub global_channel_id: u16, pub initiator_id: u16, } -pub struct UpgradedStream { - pub stream: TlsStreamType, +pub struct UpgradedStream { + pub stream: S, pub server_public_key: Vec, } -pub async fn process_connection_sequence<'a, F, FnRes>( - mut stream: TcpStream, +pub async fn process_connection_sequence( + stream: S, routing_addr: &SocketAddr, config: &InputConfig, - upgrade_stream: F, -) -> Result<(ConnectionSequenceResult, Framed), RdpError> + upgrade_stream: UpgradeFn, +) -> Result<(ConnectionSequenceResult, FramedReader, ErasedWriter), RdpError> where - F: FnOnce(TcpStream) -> FnRes, - FnRes: Future>, + S: AsyncRead + AsyncWrite + Unpin + 'static, + UpgradeFn: FnOnce(S) -> FnRes, + FnRes: Future, RdpError>>, + UpgradedS: AsyncRead + AsyncWrite + Unpin + Send + 'static, { + let (reader, mut writer) = stream.split(); + + let mut reader = FramedReader::new(reader); + let selected_protocol = connect( - &mut stream, + &mut reader, + &mut writer, config.security_protocol, config.credentials.username.clone(), ) .await?; + let (reader, leftover) = reader.into_inner(); + + let stream = reader.reunite(writer).unwrap(); + + debug_assert_eq!(leftover.len(), 0, "no leftover is expected after initial negotiation"); + let UpgradedStream { mut stream, server_public_key, @@ -80,11 +101,12 @@ where } } - let stream = Framed::new(stream, RdpFrameCodec::default()); + let (reader, writer) = stream.split(); + let mut reader = FramedReader::new(reader).into_erased(); + let mut writer = Box::pin(writer) as ErasedWriter; - let (static_channels, stream) = process_mcs_connect(stream, config, selected_protocol).await?; - - let (joined_static_channels, stream) = process_mcs(stream, static_channels, config).await?; + let static_channels = process_mcs_connect(&mut reader, &mut writer, config, selected_protocol).await?; + let joined_static_channels = process_mcs(&mut reader, &mut writer, static_channels, config).await?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels @@ -96,34 +118,35 @@ where let transport = SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); - let stream = send_client_info(stream, transport, config, routing_addr).await?; + send_client_info(&mut writer, transport, config, routing_addr).await?; - let stream = process_server_license_exchange(stream, config, global_channel_id).await?; + process_server_license_exchange(&mut reader, &mut writer, config, global_channel_id).await?; let transport = SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let (desktop_sizes, stream) = process_capability_sets(stream, transport, config).await?; + let desktop_size = process_capability_sets(&mut reader, &mut writer, transport, config).await?; let transport = SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); let transport = ShareDataHeaderTransport::new(transport); - let stream = process_finalization(stream, transport, initiator_id).await?; + process_finalization(&mut reader, &mut writer, transport, initiator_id).await?; Ok(( ConnectionSequenceResult { - desktop_sizes, + desktop_size, joined_static_channels, global_channel_id, initiator_id, }, - stream, + reader, + writer, )) } pub async fn process_cred_ssp( - mut tls_stream: &mut TlsStreamType, + mut stream: impl AsyncRead + AsyncWrite + Unpin, credentials: sspi::AuthIdentity, server_public_key: Vec, routing_addr: &SocketAddr, @@ -153,12 +176,12 @@ pub async fn process_cred_ssp( match result { credssp::ClientState::ReplyNeeded(ts_request) => { debug!("Send CredSSP TSRequest (reply needed): {:x?}", ts_request); - transport.encode(ts_request, &mut tls_stream).await?; - next_ts_request = transport.decode(&mut tls_stream).await?; + transport.encode(ts_request, &mut stream).await?; + next_ts_request = transport.decode(&mut stream).await?; } credssp::ClientState::FinalMessage(ts_request) => { debug!("Send CredSSP TSRequest (final): {:x?}", ts_request); - transport.encode(ts_request, &mut tls_stream).await?; + transport.encode(ts_request, &mut stream).await?; break; } } @@ -167,24 +190,18 @@ pub async fn process_cred_ssp( Ok(()) } -pub async fn process_mcs_connect( - stream: Framed, +pub async fn process_mcs_connect( + reader: &mut FramedReader, + writer: &mut ErasedWriter, config: &InputConfig, selected_protocol: nego::SecurityProtocol, -) -> Result< - ( - StaticChannels, - Framed>>, - ), - RdpError, -> { +) -> Result { let connect_initial = ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); - let mut stream = stream.map_codec(|_| TrasnportCodec::new(X224DataTransport::default())); - stream.send(connect_initial.clone()).await?; - let connect_response: ironrdp::ConnectResponse = - stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; + let mut codec = X224DataTransport::default(); + encode_next_frame(writer, &mut codec, connect_initial.clone()).await?; + let connect_response: ironrdp::ConnectResponse = reader.decode_next_frame(&mut codec).await?; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; @@ -214,36 +231,34 @@ pub async fn process_mcs_connect( .chain(iter::once((config.global_channel_name.clone(), global_channel_id))) .collect::(); - Ok((static_channels, stream)) + Ok(static_channels) } -pub async fn process_mcs( - stream: Framed, +pub async fn process_mcs( + stream: &mut FramedReader, + writer: &mut ErasedWriter, mut static_channels: StaticChannels, config: &InputConfig, -) -> Result< - ( - StaticChannels, - Framed>>, - ), - RdpError, -> { +) -> Result { let erect_domain_request = ironrdp::mcs::ErectDomainPdu { sub_height: 0, sub_interval: 0, }; - let mut stream = stream.map_codec(|_| TrasnportCodec::new(X224DataTransport::default())); + let mut codec = X224DataTransport::default(); + debug!("Send MCS Erect Domain Request PDU: {:?}", erect_domain_request); - stream - .send(ironrdp::McsPdu::ErectDomainRequest(erect_domain_request)) - .await?; + encode_next_frame( + writer, + &mut codec, + ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), + ) + .await?; debug!("Send MCS Attach User Request PDU"); + encode_next_frame(writer, &mut codec, ironrdp::McsPdu::AttachUserRequest).await?; - stream.send(ironrdp::McsPdu::AttachUserRequest).await?; - - let mcs_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; + let mcs_pdu = stream.decode_next_frame(&mut codec).await?; let initiator_id = if let ironrdp::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); @@ -263,12 +278,14 @@ pub async fn process_mcs( channel_id: *id, }; debug!("Send MCS Channel Join Request PDU: {:?}", channel_join_request); + encode_next_frame( + writer, + &mut codec, + ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), + ) + .await?; - stream - .send(ironrdp::McsPdu::ChannelJoinRequest(channel_join_request)) - .await?; - - let mcs_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; + let mcs_pdu = stream.decode_next_frame(&mut codec).await?; if let ironrdp::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); @@ -288,36 +305,33 @@ pub async fn process_mcs( } } - Ok((static_channels, stream)) + Ok(static_channels) } -pub async fn send_client_info( - stream: Framed, - transport: SendDataContextTransport, +pub async fn send_client_info( + writer: &mut ErasedWriter, + mut codec: SendDataContextTransport, config: &InputConfig, routing_addr: &SocketAddr, -) -> Result>, RdpError> { - let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); - +) -> Result<(), RdpError> { let client_info_pdu = user_info::create_client_info_pdu(config, routing_addr)?; debug!("Send Client Info PDU: {:?}", client_info_pdu); let mut pdu = Vec::with_capacity(client_info_pdu.buffer_length()); client_info_pdu .to_buffer(&mut pdu) .map_err(RdpError::ServerLicenseError)?; - stream.send(pdu).await?; - Ok(stream) + encode_next_frame(writer, &mut codec, pdu).await?; + Ok(()) } -pub async fn process_server_license_exchange( - stream: Framed, +pub async fn process_server_license_exchange( + reader: &mut FramedReader, + writer: &mut ErasedWriter, config: &InputConfig, global_channel_id: u16, -) -> Result, RdpError> { - let transp = SendPduDataContextTransport::::default(); - let codec = TrasnportCodec::new(transp); - let mut stream = stream.map_codec(|_| codec); - let (channel_ids, initial_license_message) = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; +) -> Result<(), RdpError> { + let mut codec = SendPduDataContextTransport::::default(); + let (channel_ids, initial_license_message) = reader.decode_next_frame(&mut codec).await?; check_global_id(channel_ids, global_channel_id)?; @@ -356,7 +370,7 @@ pub async fn process_server_license_exchange( InitialMessageType::StatusValidClient(_) => { info!("The server has not initiated license exchange"); - return Ok(stream.map_codec(|_| RdpFrameCodec::default())); + return Ok(()); } }; @@ -364,12 +378,10 @@ pub async fn process_server_license_exchange( trace!("{:?}", new_license_request); trace!("{:?}", encryption_data); - stream.send(new_license_request).await?; + encode_next_frame(writer, &mut codec, new_license_request).await?; - let transp = SendPduDataContextTransport::::default(); - let codec = TrasnportCodec::new(transp); - let mut stream = stream.map_codec(|_| codec); - let (channel_ids, challenge) = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; + let mut codec = SendPduDataContextTransport::::default(); + let (channel_ids, challenge) = reader.decode_next_frame(&mut codec).await?; check_global_id(channel_ids, global_channel_id)?; let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( @@ -386,17 +398,15 @@ pub async fn process_server_license_exchange( debug!("Successfully generated Client Platform Challenge Response"); trace!("{:?}", challenge_response); - stream.send(challenge_response).await?; + encode_next_frame(writer, &mut codec, challenge_response).await?; - let transp = SendPduDataContextTransport::::default(); - let codec = TrasnportCodec::new(transp); - let mut stream = stream.map_codec(|_| codec); - let (channel_ids, upgrade_license) = match stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)? { + let mut codec = SendPduDataContextTransport::::default(); + let (channel_ids, upgrade_license) = match reader.decode_next_frame(&mut codec).await { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), ))) => { warn!("The server has returned STATUS_VALID_CLIENT unexpectedly"); - return Ok(stream.map_codec(|_| RdpFrameCodec::default())); + return Ok(()); } Ok(data) => data, Err(err) => { @@ -417,20 +427,19 @@ pub async fn process_server_license_exchange( debug!("Successfully verified the license"); - Ok(stream.map_codec(|_| RdpFrameCodec::default())) + Ok(()) } -pub async fn process_capability_sets( - stream: Framed, - transport: ShareControlHeaderTransport, +pub async fn process_capability_sets( + reader: &mut FramedReader, + writer: &mut ErasedWriter, + mut codec: ShareControlHeaderTransport, config: &InputConfig, -) -> Result<(DesktopSizes, Framed), RdpError> { - let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); - let share_control_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; +) -> Result { + let share_control_pdu = reader.decode_next_frame(&mut codec).await?; let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu { debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); - server_demand_active.pdu.capability_sets } else { return Err(RdpError::UnexpectedPdu(format!( @@ -438,17 +447,17 @@ pub async fn process_capability_sets( share_control_pdu.as_short_name() ))); }; - let desktop_sizes = capability_sets + let desktop_size = capability_sets .iter() .find(|c| matches!(c, CapabilitySet::Bitmap(_))) .map(|c| match c { - CapabilitySet::Bitmap(b) => DesktopSizes { + CapabilitySet::Bitmap(b) => DesktopSize { width: b.desktop_width, height: b.desktop_height, }, _ => unreachable!(), }) - .unwrap_or(DesktopSizes { + .unwrap_or(DesktopSize { width: config.width, height: config.height, }); @@ -458,15 +467,16 @@ pub async fn process_capability_sets( capability_sets, )?); debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); - stream.send(client_confirm_active).await?; - Ok((desktop_sizes, stream.map_codec(|_| RdpFrameCodec::default()))) + encode_next_frame(writer, &mut codec, client_confirm_active).await?; + Ok(desktop_size) } -pub async fn process_finalization( - stream: Framed, - transport: ShareDataHeaderTransport, +pub async fn process_finalization( + reader: &mut FramedReader, + writer: &mut ErasedWriter, + mut codec: ShareDataHeaderTransport, initiator_id: u16, -) -> Result, RdpError> { +) -> Result<(), RdpError> { use ironrdp::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; #[derive(Copy, Clone, PartialEq, Debug)] @@ -478,7 +488,6 @@ pub async fn process_finalization( Finished, } - let mut stream = stream.map_codec(|_| TrasnportCodec::new(transport)); let mut finalization_order = FinalizationOrder::Synchronize; while finalization_order != FinalizationOrder::Finished { let share_data_pdu = match finalization_order { @@ -504,8 +513,8 @@ pub async fn process_finalization( FinalizationOrder::Finished => unreachable!(), }; debug!("Send Finalization PDU: {:?}", share_data_pdu); - stream.send(share_data_pdu).await?; - let share_data_pdu = stream.next().await.ok_or(RdpError::UnexpectedStreamTermination)??; + encode_next_frame(writer, &mut codec, share_data_pdu).await?; + let share_data_pdu = reader.decode_next_frame(&mut codec).await?; debug!("Got Finalization PDU: {:?}", share_data_pdu); finalization_order = match (finalization_order, share_data_pdu) { @@ -546,8 +555,7 @@ pub async fn process_finalization( }; } - let mapped = stream.map_codec(|_| RdpFrameCodec::default()); - Ok(mapped) + Ok(()) } fn check_global_id(channel_ids: ChannelIdentificators, id: u16) -> Result<(), RdpError> { diff --git a/ironrdp_client/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs similarity index 99% rename from ironrdp_client/src/connection_sequence/user_info.rs rename to ironrdp-session/src/connection_sequence/user_info.rs index 867286f2..7674b12a 100644 --- a/ironrdp_client/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -127,7 +127,7 @@ fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) - color_depth: ColorDepth::Bpp4, // ignored sec_access_sequence: SecureAccessSequence::Del, keyboard_layout: 0, // the server SHOULD use the default active input locale identifier - client_build: semver::Version::parse(clap::crate_version!()) + client_build: semver::Version::parse(env!("CARGO_PKG_VERSION")) .map(|version| version.major * 100 + version.minor * 10 + version.patch) .unwrap_or(0) as u32, client_name: whoami::hostname(), @@ -138,6 +138,7 @@ fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) - optional_data: create_optional_core_data(config, selected_protocol)?, }) } + fn create_optional_core_data( config: &InputConfig, selected_protocol: SecurityProtocol, diff --git a/ironrdp_client/src/errors.rs b/ironrdp-session/src/errors.rs similarity index 100% rename from ironrdp_client/src/errors.rs rename to ironrdp-session/src/errors.rs diff --git a/ironrdp-session/src/image.rs b/ironrdp-session/src/image.rs new file mode 100644 index 00000000..8f2e8720 --- /dev/null +++ b/ironrdp-session/src/image.rs @@ -0,0 +1,87 @@ +use crate::RdpError; +use ironrdp::codecs::rfx::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; +use ironrdp::codecs::rfx::rectangles_processing::Region; +use ironrdp::Rectangle; + +const TILE_SIZE: u16 = 64; +const SOURCE_PIXEL_FORMAT: PixelFormat = PixelFormat::BgrX32; +const SOURCE_STRIDE: u16 = TILE_SIZE * SOURCE_PIXEL_FORMAT.bytes_per_pixel() as u16; + +pub struct DecodedImage { + pixel_format: PixelFormat, + data: Vec, + width: u32, + height: u32, +} + +impl DecodedImage { + pub fn new(pixel_format: PixelFormat, width: u32, height: u32) -> Self { + let len = usize::try_from(width).unwrap() + * usize::try_from(height).unwrap() + * usize::from(pixel_format.bytes_per_pixel()); + + Self { + pixel_format, + data: vec![0; len], + width, + height, + } + } + + pub fn pixel_format(&self) -> PixelFormat { + self.pixel_format + } + + pub fn data(&self) -> &[u8] { + &self.data + } + + pub fn width(&self) -> u32 { + self.width + } + + pub fn height(&self) -> u32 { + self.height + } + + pub(crate) fn apply_tile( + &mut self, + tile_output: &[u8], + clipping_rectangles: &Region, + update_rectangle: &Rectangle, + width: u16, + ) -> Result<(), RdpError> { + debug!("Tile: {:?}", update_rectangle); + + let update_region = clipping_rectangles.intersect_rectangle(update_rectangle); + for region_rectangle in &update_region.rectangles { + let source_x = region_rectangle.left - update_rectangle.left; + let source_y = region_rectangle.top - update_rectangle.top; + let source_image_region = ImageRegion { + region: Rectangle { + left: source_x, + top: source_y, + right: source_x + region_rectangle.width(), + bottom: source_y + region_rectangle.height(), + }, + step: SOURCE_STRIDE, + pixel_format: SOURCE_PIXEL_FORMAT, + data: tile_output, + }; + + let mut destination_image_region = ImageRegionMut { + region: region_rectangle.clone(), + step: width * u16::from(self.pixel_format.bytes_per_pixel()), + pixel_format: self.pixel_format, + data: &mut self.data, + }; + + debug!("Source image region: {:?}", source_image_region.region); + debug!("Destination image region: {:?}", destination_image_region.region); + + source_image_region.copy_to(&mut destination_image_region)?; + } + + Ok(()) + } +} diff --git a/ironrdp_client/src/lib.rs b/ironrdp-session/src/lib.rs similarity index 63% rename from ironrdp_client/src/lib.rs rename to ironrdp-session/src/lib.rs index 521ef82c..732a0b7c 100644 --- a/ironrdp_client/src/lib.rs +++ b/ironrdp-session/src/lib.rs @@ -1,18 +1,21 @@ +#[macro_use] +extern crate log; + +mod codecs; mod errors; mod utils; -use ironrdp::{gcc, nego}; -use tokio::net::TcpStream; - pub mod active_session; pub mod connection_sequence; +pub mod image; pub mod transport; -pub use self::active_session::process_active_stage; -pub use self::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; -pub use self::errors::RdpError; +use ironrdp::{gcc, nego}; -mod codecs; +pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor}; +pub use crate::codecs::{ErasedWriter, FramedReader}; +pub use crate::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; +pub use crate::errors::RdpError; pub struct GraphicsConfig { pub avc444: bool, @@ -31,17 +34,8 @@ pub struct InputConfig { pub ime_file_name: String, pub dig_product_id: String, pub width: u16, - pub height: u16, pub global_channel_name: String, pub user_channel_name: String, pub graphics_config: Option, } - -#[cfg(all(feature = "native-tls", not(feature = "rustls")))] -use async_native_tls::TlsStream; - -#[cfg(feature = "rustls")] -use tokio_rustls::client::TlsStream; - -pub type TlsStreamType = TlsStream; diff --git a/ironrdp_client/src/transport.rs b/ironrdp-session/src/transport.rs similarity index 98% rename from ironrdp_client/src/transport.rs rename to ironrdp-session/src/transport.rs index 231c9579..a4c91209 100644 --- a/ironrdp_client/src/transport.rs +++ b/ironrdp-session/src/transport.rs @@ -1,33 +1,34 @@ -use std::io::{self}; +mod channels; +mod connection; + +use std::io; use std::marker::PhantomData; use bytes::BytesMut; use ironrdp::rdp::SERVER_CHANNEL_ID; use ironrdp::{PduParsing, RdpPdu}; -use log::warn; use crate::RdpError; -mod channels; -mod connection; - pub use self::channels::{ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport}; pub use self::connection::{connect, EarlyUserAuthResult, TsRequestTransport}; pub trait Encoder { type Item; - type Error; + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity fn encode(&mut self, item: Self::Item, stream: impl io::Write) -> Result<(), Self::Error>; } pub trait Decoder { type Item; - type Error; + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity fn decode(&mut self, stream: impl io::Read) -> Result; } +// FIXME: is "transport" a good naming for these structs? + #[derive(Copy, Clone, Debug)] pub struct DataTransport { data_length: usize, @@ -388,7 +389,7 @@ pub enum TransportState { Decoded, } -#[derive(Debug, Copy, Clone, Default)] +#[derive(Debug, Copy, Clone)] pub struct RdpTransport; impl Decoder for RdpTransport { diff --git a/ironrdp_client/src/transport/channels.rs b/ironrdp-session/src/transport/channels.rs similarity index 100% rename from ironrdp_client/src/transport/channels.rs rename to ironrdp-session/src/transport/channels.rs diff --git a/ironrdp_client/src/transport/connection.rs b/ironrdp-session/src/transport/connection.rs similarity index 84% rename from ironrdp_client/src/transport/connection.rs rename to ironrdp-session/src/transport/connection.rs index b4030930..eeb21db5 100644 --- a/ironrdp_client/src/transport/connection.rs +++ b/ironrdp-session/src/transport/connection.rs @@ -1,12 +1,10 @@ use bytes::BytesMut; -use futures::StreamExt; +use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; use ironrdp::{nego, PduParsing}; use log::debug; use sspi::internal::credssp; -use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; -use tokio_util::codec::Framed; -use crate::{codecs::RdpFrameCodec, RdpError}; +use crate::{codecs::FramedReader, RdpError}; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; @@ -61,25 +59,26 @@ impl EarlyUserAuthResult { } } -pub async fn connect( - mut stream: impl AsyncRead + AsyncWrite + Unpin, +pub async fn connect( + reader: &mut FramedReader, + writer: W, security_protocol: nego::SecurityProtocol, username: String, ) -> Result { - let selected_protocol = process_negotiation( - &mut stream, + process_negotiation( + reader, + writer, Some(nego::NegoData::Cookie(username)), security_protocol, nego::RequestFlags::empty(), 0, ) - .await?; - - Ok(selected_protocol) + .await } -async fn process_negotiation( - mut stream: impl AsyncRead + AsyncWrite + Unpin, +async fn process_negotiation( + reader: &mut FramedReader, + mut writer: W, nego_data: Option, protocol: nego::SecurityProtocol, flags: nego::RequestFlags, @@ -94,12 +93,10 @@ async fn process_negotiation( debug!("Send X.224 Connection Request PDU: {:?}", connection_request); let mut buffer = Vec::new(); connection_request.to_buffer(&mut buffer)?; - stream.write_all(buffer.as_slice()).await?; - stream.flush().await?; + writer.write_all(&buffer).await?; + writer.flush().await?; - let mut framed = Framed::new(&mut stream, RdpFrameCodec::default()); - - let data = framed.next().await.ok_or(RdpError::AccessDenied)??; + let data = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; let connection_response = nego::Response::from_buffer(data.as_ref())?; if let Some(nego::ResponseData::Response { flags, diff --git a/ironrdp_client/src/utils.rs b/ironrdp-session/src/utils.rs similarity index 100% rename from ironrdp_client/src/utils.rs rename to ironrdp-session/src/utils.rs diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 9dd678d6..79a7a7b4 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -6,8 +6,7 @@ readme = "../README.md" license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" -authors = ["Marc-André Moreau ", - "Vlad Aleksashyn "] description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] @@ -28,4 +27,7 @@ num-integer = "0.1.44" num-traits = "0.2.14" ring = "0.16.20" x509-parser = "0.14" -tap = "1.0.1" \ No newline at end of file +tap = "1.0.1" + +[dev-dependencies] +proptest = "1.0.0" diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp/src/basic_output/bitmap.rs index 15848c7c..cbd11e1a 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp/src/basic_output/bitmap.rs @@ -133,14 +133,15 @@ impl<'a> PduBufferParsing<'a> for BitmapData<'a> { BITMAP_DATA_MAIN_DATA_SIZE + self.bitmap_data_length } } -impl<'a> Debug for BitmapData<'a> { + +impl Debug for BitmapData<'_> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!( f, - "BitmapData:[{:?}, - width - {}, - height - {}, - bits_per_pixel - {}, + "BitmapData:[{:?}, + width - {}, + height - {}, + bits_per_pixel - {}, compression_flags - ({:?}), compressed_data_header - {:?} \nReceived Bitmap data buffer with length - {}\n]", diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp/src/codecs/rfx.rs index 39c064cc..02b0347d 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp/src/codecs/rfx.rs @@ -1,5 +1,6 @@ mod data_messages; mod header_messages; + #[cfg(test)] mod tests; diff --git a/ironrdp/src/codecs/rfx/color_conversion.rs b/ironrdp/src/codecs/rfx/color_conversion.rs index 60feffcb..37f01424 100644 --- a/ironrdp/src/codecs/rfx/color_conversion.rs +++ b/ironrdp/src/codecs/rfx/color_conversion.rs @@ -4,10 +4,12 @@ mod tests; use std::cmp::{max, min}; use std::io::{self, Write}; +// TODO: extract in an auxiliary crate? ironrdp-utils? Try to keep core small + const DIVISOR: f32 = (1 << 16) as f32; const ALPHA: u8 = 255; -pub fn ycbcr_to_rgb(input: YCbCrBuffer<'_>, mut output: &mut [u8]) -> io::Result<()> { +pub fn ycbcr_to_bgra(input: YCbCrBuffer<'_>, mut output: &mut [u8]) -> io::Result<()> { for ycbcr in input { let pixel = Rgb::from(ycbcr); diff --git a/ironrdp/src/codecs/rfx/color_conversion/tests.rs b/ironrdp/src/codecs/rfx/color_conversion/tests.rs index 7ec593c4..5adcccda 100644 --- a/ironrdp/src/codecs/rfx/color_conversion/tests.rs +++ b/ironrdp/src/codecs/rfx/color_conversion/tests.rs @@ -60,7 +60,7 @@ fn ycbcr_to_rgb_converts_one_element_buffer() { let expected = [128, 127, 128, 255]; let mut actual = vec![0; 4]; - ycbcr_to_rgb(ycbcr, actual.as_mut()).unwrap(); + ycbcr_to_bgra(ycbcr, actual.as_mut()).unwrap(); assert_eq!(expected.as_ref(), actual.as_slice()); } @@ -74,7 +74,7 @@ fn ycbcr_to_rgb_converts_large_buffer() { let expected = RGB_BUFFER.as_ref(); let mut output = vec![0; 4 * 64 * 64]; - ycbcr_to_rgb(ycbcr, output.as_mut()).unwrap(); + ycbcr_to_bgra(ycbcr, output.as_mut()).unwrap(); assert_eq!(expected, output.as_slice()); } diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp/src/codecs/rfx/data_messages.rs index c897d0c8..b9b04326 100644 --- a/ironrdp/src/codecs/rfx/data_messages.rs +++ b/ironrdp/src/codecs/rfx/data_messages.rs @@ -274,6 +274,7 @@ impl<'a> PduBufferParsing<'a> for RegionPdu { pub struct TileSetPdu<'a> { pub entropy_algorithm: EntropyAlgorithm, pub quants: Vec, + // TODO: improve ergonomic and performance (no copy). Hint: use the `bytes` crate. pub tiles: Vec>, } @@ -558,12 +559,13 @@ impl<'a> PduBufferParsing<'a> for Tile<'a> { } let y_start = 0; - let cb_start = y_component_length; - let cr_start = y_component_length + cb_component_length; + let cb_start = y_start + y_component_length; + let cr_start = cb_start + cb_component_length; + let cr_end = cr_start + cr_component_length; - let y_data = &buffer[y_start..y_component_length]; - let cb_data = &buffer[cb_start..cb_start + cb_component_length]; - let cr_data = &buffer[cr_start..cr_start + cr_component_length]; + let y_data = &buffer[y_start..cb_start]; + let cb_data = &buffer[cb_start..cr_start]; + let cr_data = &buffer[cr_start..cr_end]; Ok(Self { y_quant_index, diff --git a/ironrdp/src/codecs/rfx/image_processing.rs b/ironrdp/src/codecs/rfx/image_processing.rs index 64576e43..f67d2781 100644 --- a/ironrdp/src/codecs/rfx/image_processing.rs +++ b/ironrdp/src/codecs/rfx/image_processing.rs @@ -1,7 +1,7 @@ #[cfg(test)] mod tests; -use std::io::{self}; +use std::io; use byteorder::WriteBytesExt; use num_derive::ToPrimitive; @@ -93,7 +93,7 @@ pub enum PixelFormat { } impl PixelFormat { - pub fn bytes_per_pixel(self) -> u8 { + pub const fn bytes_per_pixel(self) -> u8 { match self { Self::ARgb32 | Self::XRgb32 diff --git a/ironrdp/src/codecs/rfx/image_processing/tests.rs b/ironrdp/src/codecs/rfx/image_processing/tests.rs index b4d034cc..81452340 100644 --- a/ironrdp/src/codecs/rfx/image_processing/tests.rs +++ b/ironrdp/src/codecs/rfx/image_processing/tests.rs @@ -1,5 +1,57 @@ +use proptest::prelude::*; + use super::*; +fn bgra_to_rgba(input: &[u8], mut output: &mut [u8]) -> io::Result<()> { + use std::io::Write as _; + + for chunk in input.chunks(4) { + let b = chunk[0]; + let g = chunk[1]; + let r = chunk[2]; + let a = chunk[3]; + output.write_all(&[r, g, b, a])?; + } + + Ok(()) +} + +#[test] +fn image_region_copy_bgra32_to_rgba32() { + proptest!(|(source_buffer in proptest::collection::vec(any::(), 8 * 8 * 4))| { + let source_region = ImageRegion { + region: Rectangle { + left: 0, + top: 0, + right: 8, + bottom: 8, + }, + step: 32, + pixel_format: PixelFormat::BgrA32, + data: &source_buffer, + }; + + let mut destination_buffer = vec![0; 8 * 8 * 4]; + let mut destination_region = ImageRegionMut { + region: Rectangle { + left: 0, + top: 0, + right: 8, + bottom: 8, + }, + step: 32, + pixel_format: PixelFormat::RgbA32, + data: &mut destination_buffer, + }; + source_region.copy_to(&mut destination_region).unwrap(); + + let mut expected = vec![0; 8 * 8 * 4]; + bgra_to_rgba(&source_buffer, &mut expected).unwrap(); + + prop_assert_eq!(destination_buffer, expected); + }) +} + #[test] fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() { let mut destination_data = vec![0; CONVERTED_TO_XRGB_BUFFER.len()]; diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs index 0987f34b..c02417e8 100644 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ b/ironrdp/src/codecs/rfx/rectangles_processing.rs @@ -7,8 +7,8 @@ use crate::utils::Rectangle; #[derive(Debug, Clone, PartialEq, Eq)] pub struct Region { - extents: Rectangle, - rectangles: Vec, + pub extents: Rectangle, + pub rectangles: Vec, } impl Region { @@ -19,14 +19,6 @@ impl Region { } } - pub fn rectangles(&self) -> &[Rectangle] { - self.rectangles.as_slice() - } - - pub fn extents(&self) -> &Rectangle { - &self.extents - } - pub fn union_rectangle(&mut self, rectangle: Rectangle) { if self.rectangles.is_empty() { *self = Self::from(rectangle); diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index efaf88f6..98ef0100 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -25,7 +25,7 @@ pub use crate::utils::Rectangle; pub use crate::x224::*; pub trait PduParsing { - type Error; + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity fn from_buffer(stream: impl std::io::Read) -> Result where @@ -35,7 +35,7 @@ pub trait PduParsing { } pub trait PduBufferParsing<'a>: Sized { - type Error; + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity fn from_buffer(mut buffer: &'a [u8]) -> Result { Self::from_buffer_consume(&mut buffer) diff --git a/ironrdp/src/nego.rs b/ironrdp/src/nego.rs index 40d5c302..72d8842a 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp/src/nego.rs @@ -1,8 +1,8 @@ #[cfg(test)] mod tests; +use std::io; use std::io::prelude::*; -use std::io::{self}; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; diff --git a/ironrdp_client/src/active_session.rs b/ironrdp_client/src/active_session.rs deleted file mode 100644 index 0d0b2aa2..00000000 --- a/ironrdp_client/src/active_session.rs +++ /dev/null @@ -1,101 +0,0 @@ -mod codecs; -mod fast_path; -mod x224; - -use std::sync::{Arc, Mutex}; - -use futures::{SinkExt, StreamExt}; -use ironrdp::codecs::rfx::image_processing::PixelFormat; -use ironrdp::fast_path::FastPathError; -use ironrdp::RdpPdu; -use log::warn; -use tokio_util::codec::Framed; - -use crate::codecs::RdpFrameCodec; -use crate::connection_sequence::ConnectionSequenceResult; -use crate::transport::{Decoder, RdpTransport}; -use crate::{utils, InputConfig, RdpError, TlsStreamType}; - -const DESTINATION_PIXEL_FORMAT: PixelFormat = PixelFormat::RgbA32; - -pub async fn process_active_stage( - mut stream: Framed, - config: InputConfig, - connection_sequence_result: ConnectionSequenceResult, -) -> Result<(), RdpError> { - let decoded_image = Arc::new(Mutex::new(DecodedImage::new( - u32::from(connection_sequence_result.desktop_sizes.width), - u32::from(connection_sequence_result.desktop_sizes.height), - DESTINATION_PIXEL_FORMAT, - ))); - let mut x224_processor = x224::Processor::new( - utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), - config.global_channel_name.as_str(), - config.graphics_config, - ); - let mut fast_path_processor = fast_path::ProcessorBuilder { - decoded_image, - global_channel_id: connection_sequence_result.global_channel_id, - initiator_id: connection_sequence_result.initiator_id, - } - .build(); - let mut rdp_transport = RdpTransport::default(); - let mut output_buffer = Vec::new(); - loop { - output_buffer.clear(); - let frame = stream.next().await.ok_or(RdpError::AccessDenied)??; - let mut frame = frame.as_ref(); - match rdp_transport.decode(&mut frame) { - Ok(RdpPdu::X224(data)) => { - if let Err(error) = x224_processor.process(&mut frame, &mut output_buffer, data) { - match error { - RdpError::UnexpectedDisconnection(message) => { - warn!("User-Initiated disconnection on Server: {}", message); - break; - } - RdpError::UnexpectedChannel(channel_id) => { - warn!("Got message on a channel with {} ID", channel_id); - break; - } - err => { - return Err(err); - } - } - } - } - Ok(RdpPdu::FastPath(header)) => { - // skip header bytes in such way because here is possible - // that data length was written in the not right way, - // so we should skip only what has been actually read - - fast_path_processor.process(&header, frame, &mut output_buffer)?; - } - Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read: _ })) => { - warn!("Received null-length Fast-Path packet, dropping it"); - } - Err(e) => return Err(e), - } - - if !output_buffer.is_empty() { - stream.send(output_buffer.as_slice()).await?; - } - } - - Ok(()) -} - -pub struct DecodedImage { - data: Vec, -} - -impl DecodedImage { - fn new(width: u32, height: u32, pixel_format: PixelFormat) -> Self { - Self { - data: vec![0; (width * height * u32::from(pixel_format.bytes_per_pixel())) as usize], - } - } - - fn get_mut(&mut self) -> &mut [u8] { - self.data.as_mut_slice() - } -} diff --git a/ironrdp_client/src/codecs.rs b/ironrdp_client/src/codecs.rs deleted file mode 100644 index 7673d165..00000000 --- a/ironrdp_client/src/codecs.rs +++ /dev/null @@ -1,115 +0,0 @@ -use bit_field::BitField; -use bytes::{BufMut, BytesMut}; -use ironrdp::{Action, RdpError}; -use tokio_util::codec::{Decoder, Encoder}; - -use byteorder::{BigEndian, ReadBytesExt}; - -use num_traits::FromPrimitive; - -use crate::transport::{Decoder as TransportDecoder, Encoder as TransportEncoder}; -#[derive(Default)] -pub struct RdpFrameCodec {} - -impl Encoder for RdpFrameCodec -where - T: AsRef<[u8]>, -{ - type Error = RdpError; - - fn encode(&mut self, item: T, buf: &mut bytes::BytesMut) -> Result<(), Self::Error> { - buf.extend_from_slice(item.as_ref()); - Ok(()) - } -} - -impl Decoder for RdpFrameCodec { - type Item = BytesMut; - type Error = ironrdp::RdpError; - - fn decode(&mut self, src: &mut bytes::BytesMut) -> Result, Self::Error> { - let mut stream = src.as_ref(); - if stream.is_empty() { - return Ok(None); - } - let header = stream.read_u8()?; - let action = header.get_bits(0..2); - let action = Action::from_u8(action).ok_or(ironrdp::RdpError::InvalidActionCode(action))?; - - let length = match action { - Action::X224 if stream.len() >= 3 => { - let _reserved = stream.read_u8()?; - - stream.read_u16::()? - } - Action::FastPath if !stream.is_empty() => { - let a = stream.read_u8()?; - if a & 0x80 != 0 { - if stream.is_empty() { - return Ok(None); - } - let b = stream.read_u8()?; - ((u16::from(a) & !0x80) << 8) + u16::from(b) - } else { - u16::from(a) - } - } - _ => { - return Ok(None); - } - }; - - if src.len() >= length as usize { - Ok(Some(src.split_to(length as usize))) - } else { - Ok(None) - } - } -} - -pub struct TrasnportCodec { - inner: RdpFrameCodec, - transport: T, -} - -impl TrasnportCodec { - pub fn new(transport: T) -> Self { - TrasnportCodec { - inner: RdpFrameCodec::default(), - transport, - } - } -} - -impl Encoder for TrasnportCodec -where - T: TransportEncoder, - ::Error: From, - ::Error: From, -{ - type Error = ::Error; - - fn encode(&mut self, item: E, buf: &mut bytes::BytesMut) -> Result<(), Self::Error> { - self.transport.encode(item, buf.writer())?; - Ok(()) - } -} - -impl Decoder for TrasnportCodec -where - T: TransportDecoder, - ::Error: From, - ::Error: From, -{ - type Item = ::Item; - type Error = ::Error; - - fn decode(&mut self, src: &mut bytes::BytesMut) -> Result, Self::Error> { - let buf = self.inner.decode(src)?; - if let Some(data) = buf { - Ok(Some(self.transport.decode(data.as_ref())?)) - } else { - Ok(None) - } - } -} From 9ce61b4d47cc42c3caed0ba5c98ab7ad246ccf61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 15 Nov 2022 18:40:10 -0500 Subject: [PATCH 0090/1273] Initial tauri backend for native GUI client Co-authored-by: Nicolas Girot --- iron-tauri-client/.gitignore | 1 + iron-tauri-client/app-icon.png | Bin 0 -> 1029456 bytes iron-tauri-client/package-lock.json | 265 +++++++++ iron-tauri-client/package.json | 9 + iron-tauri-client/src-tauri/.gitignore | 3 + iron-tauri-client/src-tauri/Cargo.toml | 51 ++ iron-tauri-client/src-tauri/build.rs | 3 + iron-tauri-client/src-tauri/icons/128x128.png | Bin 0 -> 22050 bytes .../src-tauri/icons/128x128@2x.png | Bin 0 -> 67519 bytes iron-tauri-client/src-tauri/icons/32x32.png | Bin 0 -> 2428 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 0 -> 16530 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 0 -> 26124 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 0 -> 28604 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 0 -> 79501 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 0 -> 2202 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 0 -> 91918 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 0 -> 3945 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 0 -> 8581 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 0 -> 12273 bytes .../src-tauri/icons/StoreLogo.png | Bin 0 -> 4859 bytes iron-tauri-client/src-tauri/icons/icon.icns | Bin 0 -> 1143248 bytes iron-tauri-client/src-tauri/icons/icon.ico | Bin 0 -> 85160 bytes iron-tauri-client/src-tauri/icons/icon.png | Bin 0 -> 200846 bytes iron-tauri-client/src-tauri/src/main.rs | 556 ++++++++++++++++++ iron-tauri-client/src-tauri/tauri.conf.json | 68 +++ 25 files changed, 956 insertions(+) create mode 100644 iron-tauri-client/.gitignore create mode 100644 iron-tauri-client/app-icon.png create mode 100644 iron-tauri-client/package-lock.json create mode 100644 iron-tauri-client/package.json create mode 100644 iron-tauri-client/src-tauri/.gitignore create mode 100644 iron-tauri-client/src-tauri/Cargo.toml create mode 100644 iron-tauri-client/src-tauri/build.rs create mode 100644 iron-tauri-client/src-tauri/icons/128x128.png create mode 100644 iron-tauri-client/src-tauri/icons/128x128@2x.png create mode 100644 iron-tauri-client/src-tauri/icons/32x32.png create mode 100644 iron-tauri-client/src-tauri/icons/Square107x107Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square142x142Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square150x150Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square284x284Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square30x30Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square310x310Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square44x44Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square71x71Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/Square89x89Logo.png create mode 100644 iron-tauri-client/src-tauri/icons/StoreLogo.png create mode 100644 iron-tauri-client/src-tauri/icons/icon.icns create mode 100644 iron-tauri-client/src-tauri/icons/icon.ico create mode 100644 iron-tauri-client/src-tauri/icons/icon.png create mode 100644 iron-tauri-client/src-tauri/src/main.rs create mode 100644 iron-tauri-client/src-tauri/tauri.conf.json diff --git a/iron-tauri-client/.gitignore b/iron-tauri-client/.gitignore new file mode 100644 index 00000000..7094b042 --- /dev/null +++ b/iron-tauri-client/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/iron-tauri-client/app-icon.png b/iron-tauri-client/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a2503888f1242e2825147ff9a2569ca3a42e361c GIT binary patch literal 1029456 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

?s)z2=W^~eXbb{V?} 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

v*v|5EEdf6JJp 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�)PzXYYc2|=_`uY?!<6y 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%0DG5c6InMd=S_aIiw}lzwrSU{Qn`p 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

Q#0}C7NpRYq}Il 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%0DbV2{z@4 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 L0|7N^HsSvR1i+=B literal 0 HcmV?d00001 diff --git a/iron-tauri-client/package-lock.json b/iron-tauri-client/package-lock.json new file mode 100644 index 00000000..39fe4f01 --- /dev/null +++ b/iron-tauri-client/package-lock.json @@ -0,0 +1,265 @@ +{ + "name": "iron-tauri-client", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@tauri-apps/cli": "^1.2.0" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.0.tgz", + "integrity": "sha512-DgUnk4p/atWHq2HUx9Vt+/LuRsx4iFlkzdZIUxtFWvpcZih2k0TzmHJbrhM1evh1/7a+SqiwDawmyf3Hz1HxXA==", + "dev": true, + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "1.2.0", + "@tauri-apps/cli-darwin-x64": "1.2.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.0", + "@tauri-apps/cli-linux-arm64-gnu": "1.2.0", + "@tauri-apps/cli-linux-arm64-musl": "1.2.0", + "@tauri-apps/cli-linux-x64-gnu": "1.2.0", + "@tauri-apps/cli-linux-x64-musl": "1.2.0", + "@tauri-apps/cli-win32-ia32-msvc": "1.2.0", + "@tauri-apps/cli-win32-x64-msvc": "1.2.0" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-f3LR2RvTU2ulxYdK9Nc3vKaSpDChu52pz0BMWNrSs3dxs4WTVioie98Ufz+GorifkUp3sYXcJte3HzX6wH/QxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.0.tgz", + "integrity": "sha512-m07QZaAZCtyobrjddfz/Rxf9GGutnBOpRMbNqVqCk0qKRJzHG1fIsLqkgZh6+qPv0zHpu7xi/FPcqTec72Cp8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.0.tgz", + "integrity": "sha512-Id9eF1JtthZRFVtXAAVtSlI3uMT8cJ7LYmCSIl3mAXEUeaPBxnUs1i9X6/J+2Ho3yLEuuOxJ7PaJd+4v8wnEeg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.0.tgz", + "integrity": "sha512-NtfPkkpeMPl+i/tB/Fc8ST2rKO2vV8int/RkOvNGLCkhWcl4sbzKBol7tc4q8c8h0X7FXDcF1l/EOuGsZUAA5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.0.tgz", + "integrity": "sha512-tz+mOOVsy/TMdq2WJVIJl/iwW3OCWCyD5Fls3fhyJ4XpLfjn4G+C+oU0awXD/0se0ko81aq4D+r8eDx6oBRi0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.0.tgz", + "integrity": "sha512-FH/wU+OWZjRQvrq/oequScr72I84XgOuRuMEpt/GqGD341cBJ8ithpoyzuiKsvjS6K0qMyRFzy3eyhQ7gwX+4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.0.tgz", + "integrity": "sha512-nLg30aBT9fI83sjIqaGPN7twbtE5LJy2DbKzxIlw59F+GT8HBdiM/2mZdTLB3AQb52yVHuGB1TVtWDsl0JHqCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.0.tgz", + "integrity": "sha512-eXtgIgY0fawgcOuUjH8Y6PxwPxbK87Zl9XmA7Q0m58T7pIz+gcbgvtH8Bb+liYHoRYItIhQxVm+ui7Y59rI7Cg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.0.tgz", + "integrity": "sha512-egyM66R05AIbkaUDptpHurFTIYp3VM4H5OrRd3O2b0oXf8SoiXiyrHbQsHVHHDYyytKmwkdNqjdy+Vev/Vq25Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + } + }, + "dependencies": { + "@tauri-apps/cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.0.tgz", + "integrity": "sha512-DgUnk4p/atWHq2HUx9Vt+/LuRsx4iFlkzdZIUxtFWvpcZih2k0TzmHJbrhM1evh1/7a+SqiwDawmyf3Hz1HxXA==", + "dev": true, + "requires": { + "@tauri-apps/cli-darwin-arm64": "1.2.0", + "@tauri-apps/cli-darwin-x64": "1.2.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.0", + "@tauri-apps/cli-linux-arm64-gnu": "1.2.0", + "@tauri-apps/cli-linux-arm64-musl": "1.2.0", + "@tauri-apps/cli-linux-x64-gnu": "1.2.0", + "@tauri-apps/cli-linux-x64-musl": "1.2.0", + "@tauri-apps/cli-win32-ia32-msvc": "1.2.0", + "@tauri-apps/cli-win32-x64-msvc": "1.2.0" + } + }, + "@tauri-apps/cli-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-f3LR2RvTU2ulxYdK9Nc3vKaSpDChu52pz0BMWNrSs3dxs4WTVioie98Ufz+GorifkUp3sYXcJte3HzX6wH/QxQ==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.0.tgz", + "integrity": "sha512-m07QZaAZCtyobrjddfz/Rxf9GGutnBOpRMbNqVqCk0qKRJzHG1fIsLqkgZh6+qPv0zHpu7xi/FPcqTec72Cp8w==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.0.tgz", + "integrity": "sha512-Id9eF1JtthZRFVtXAAVtSlI3uMT8cJ7LYmCSIl3mAXEUeaPBxnUs1i9X6/J+2Ho3yLEuuOxJ7PaJd+4v8wnEeg==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-linux-arm64-gnu": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.0.tgz", + "integrity": "sha512-NtfPkkpeMPl+i/tB/Fc8ST2rKO2vV8int/RkOvNGLCkhWcl4sbzKBol7tc4q8c8h0X7FXDcF1l/EOuGsZUAA5Q==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-linux-arm64-musl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.0.tgz", + "integrity": "sha512-tz+mOOVsy/TMdq2WJVIJl/iwW3OCWCyD5Fls3fhyJ4XpLfjn4G+C+oU0awXD/0se0ko81aq4D+r8eDx6oBRi0A==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-linux-x64-gnu": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.0.tgz", + "integrity": "sha512-FH/wU+OWZjRQvrq/oequScr72I84XgOuRuMEpt/GqGD341cBJ8ithpoyzuiKsvjS6K0qMyRFzy3eyhQ7gwX+4Q==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-linux-x64-musl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.0.tgz", + "integrity": "sha512-nLg30aBT9fI83sjIqaGPN7twbtE5LJy2DbKzxIlw59F+GT8HBdiM/2mZdTLB3AQb52yVHuGB1TVtWDsl0JHqCA==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-win32-ia32-msvc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.0.tgz", + "integrity": "sha512-eXtgIgY0fawgcOuUjH8Y6PxwPxbK87Zl9XmA7Q0m58T7pIz+gcbgvtH8Bb+liYHoRYItIhQxVm+ui7Y59rI7Cg==", + "dev": true, + "optional": true + }, + "@tauri-apps/cli-win32-x64-msvc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.0.tgz", + "integrity": "sha512-egyM66R05AIbkaUDptpHurFTIYp3VM4H5OrRd3O2b0oXf8SoiXiyrHbQsHVHHDYyytKmwkdNqjdy+Vev/Vq25Q==", + "dev": true, + "optional": true + } + } +} diff --git a/iron-tauri-client/package.json b/iron-tauri-client/package.json new file mode 100644 index 00000000..b316c98c --- /dev/null +++ b/iron-tauri-client/package.json @@ -0,0 +1,9 @@ +{ + "scripts": { + "tauri": "tauri" + }, + + "devDependencies": { + "@tauri-apps/cli": "^1.2.0" + } +} diff --git a/iron-tauri-client/src-tauri/.gitignore b/iron-tauri-client/src-tauri/.gitignore new file mode 100644 index 00000000..aba21e24 --- /dev/null +++ b/iron-tauri-client/src-tauri/.gitignore @@ -0,0 +1,3 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml new file mode 100644 index 00000000..9d6a61ea --- /dev/null +++ b/iron-tauri-client/src-tauri/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = "app" +version = "0.1.0" +description = "A Tauri App" +authors = ["you"] +license = "" +repository = "" +default-run = "app" +edition = "2021" +rust-version = "1.59" + +[features] +# by default Tauri runs in production mode +# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL +default = [ "custom-protocol" ] +# this feature is used for production builds where `devPath` points to the filesystem +# DO NOT remove this +custom-protocol = [ "tauri/custom-protocol" ] + +[dependencies] + +# Protocol +ironrdp = { path = "../../ironrdp" } +ironrdp-session = { path = "../../ironrdp-session" } +sspi = "0.4.0" +serde = { version = "1.0", features = ["derive"] } + +# SSL +x509-parser = "0.14" +rustls = { version = "0.20", features = ["dangerous_configuration"] } + +# async, futures +tokio = { version = "1", features = ["full"] } +tokio-rustls = "0.23" +tokio-util = { version = "0.7.4", features = ["compat"] } +tokio-tungstenite = "0.17.2" +futures-util = "0.3.25" + +# utils +anyhow = "1" +bytes = "1" + +# tauri stuff +tauri = { version = "1.2.0", features = [] } + +[workspace] +members = ["."] + +[build-dependencies] +tauri-build = { version = "1.2.0", features = [] } + diff --git a/iron-tauri-client/src-tauri/build.rs b/iron-tauri-client/src-tauri/build.rs new file mode 100644 index 00000000..d860e1e6 --- /dev/null +++ b/iron-tauri-client/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/iron-tauri-client/src-tauri/icons/128x128.png b/iron-tauri-client/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..272302a9be411e9c51889a5fefda1c61f1ccaa73 GIT binary patch literal 22050 zcmV(?K-a&CP)e5b7p??n>lk}Kfg)zk0^?eNW{MG z_xqSEE8q3|{Sb@BZw&@RcY?s*C+@3r^C`;3^>y`+sd!GIQ0Q`>&(9*^=r`z`tKawG zZ8vX%;0~Oss&XU}z73x5Lh&ld={-$#T1Aiignj+qAPr#6bc0w z@WB)W9S;W&KG1Xo0-+vF)uI)Hv9Hb(XMS@)RrC1J@y?ZbkMW#kat8~@ihZaAyJ-38 zA4QfSnTS6rxWYCnLZ^X6i_f3e)YRSK`PqGGUPT$twI-RE&(F_2H>c`+@wq_f`k*2! zA1c7Em{o}eG!ef+Rwzl>ZG?_GT_D-{j4pTsYRg~OSKfJ-cTxbZ(6a1f z2wdk@yN?fVRl-Cx{U>23GwRKJN5W96rl#gkc)#DxAi*Oe!r^cznMl0jp1WXFtX9R9 zkpiFsf6x1vvOk>rKG#BT@EnSlYwPL`3x&f1&ZIUPFvoEi-bDPHfPBCY^7;H1P1CG= zhV5rcAnAA$1>wF}Byx;l=&gAE0)j)kzOGJ8Boa&2fc6(exq1BCi?(fB_!)73yN-P} z`(v@_wKU5y{x=W^vQeW(*<;3xVa<(=o8r;fVLRgm?{oW$C7_8U;feX_iKeN3{Qv9` z!-v0g#Oyh2=D~-sriR8YWG{PAPl&<%gQ6&vYZ3l03tyqhj4}Vkp6{*(VnvODq_QoSDlNPI7F6APnOcLG&3Gur`Jl;YV`ALU(49_ytk6 zEW;@k;CqR9&BlRL-`$=PnEOn7_rZ_SRB$lti{kxT<#Krh3e!e^j}uA6se=DG+%>XD zz$c7t2tiX!1uYx^$C9Btm4#(nGElN5L-k9Cr_!l6$Oq%+?Y(LCahBVdpSZ4&D}L($ zI>(wQU{Vltox!$&9IWl?hn&tY1m*5p2E+w~7ZBWtqNWB6BnYSEa=BIe;QaTU0?_ZG zuV(>Go1e~RkH^t5QQ``P$hPfbqS+JL;1lzv!BMjgWWz_c*;=wmq}ae|Ukds3Ht5S3 z<|RLS*#Fv=!b00D9#txp_a-pp7AF!44$GGGwO{?n!OHi~orUmJ71VGLg!;))v}M@3 zZn^m4i?4})dFm}#@XkgwQ4Sy|1jk0(Acz)ffsBmiQnUyM;Uusb!;b~Mb_UpD5NC@Igwg<5s~>@gnSuvj z-E4mB`}Zpw`brQEs22~U29|r*vbS&m_w#rS1H)Py{jV(Fe8h80Hw$wP9N{#?RG}n= zK#I4ZLaSi;>p@C3!MN4{oH?}-?6L!kR&U~N4%s8gMyDWxcz8G(daG0_t@I}4KEX44 z#dH#H9tsAZ@CMPWLVfc*KeO=mLL8uE3JB#S&q$Y)4*%7 zS=lHuef3k!e)f9y`zt@jR9WFsflo#qK=6y9VP`NHig^>|zcMuB?j{lnUqqQR;>Sgg z?!EHN!&u>oZ?n?Udzn$rFw3%-p&QIbB`9otlNrxm%hud-zCCwh8xIqcH4S$M@wTrl zS(P6c6cpwHX2cUUDLTLF&NHM$D81jJ%1_FtorghOE`4rTAy!b26oWu0_SF`*(4>Qv;S=lz2 zj`uo-O}RBsv(o%;u&2KN5pz^M1`HTK4{L4tn&0o^Um6Gm4hscC2k!$bz^{kSBN30E zhE|L#V?$kSOG9158+3hV&7Nd*{prh&x%5G1nmQN0Vc|V0b+KzDV{iP9J@ozaSzHS+ z5rvPg5Tl|X0^`7xDtGzcH2VcW-~UrZbjc9U1+dHi=NOiI<4+g?Ijm$b94I{WJS)6? zFH1jq6}##3lZ>b$G1(W+Ha9h#Sh0@v_4V_#fJS9lESao1&wE|kTf)cRg=8}MXP=_5 zSSHX1Ye0^PA-Necl;(*s7w?0r&A`GQWv<7W^$r5n$TvuCn zCE^+S{UY7t`F*QW2}~8jt<8-;qH`P9kYo#gbfL{&{Ucsm7m1#g@;&UFvrc8LbqRLm zMW?Z!eePs-(m~_65-6%h38PayEAU_83iw5Yf*MhuY*I_oT=SZ1HAVsu1l!D1P~lHL;~!uU;Bu~p8E;wed`}=`sB&% zlp_ye1KZY;DPU~LeJua*x7bfUeWE4NHP<%1gbMxNgd}cQ^Hb0n%#{%AL@Ogf}6$d*H+taLW zp-3pQ6v?F>es>6N+{Ivi;?$jrKX~2(UC|#rD?m!f^Bf~uS}#x(&7soqYtB5}p4J#+ za}S@2#;%tkEMU2^!wLi2SkL3vG2`KHvX9T2;DG37=t^e%H(&wL^_Tu}cqz{D(?+xO z17CJ}9{36?rPpJagvc0uVxfSuAh(2_J$Dv!XO-WstF8F~CVrr55F~H*T`IX{*rq%9 zZpl?35GrX}VE7Qb0bcmg+|=|_ukgb=2UiILfnWz>fuMKJ!l1iI*37`<&!&pfKJ(C> z+!bWAMZEqZBTBGu`O_?S|CiYPU;T(lg`|;aVagjCyuJO{Y)2> zrU~E+w}E3g7!GI<@LTYm@7x4`dv1}989!)jYP_R=ApK3lFeS>FS2%Jq|EK^*VlJH) zj_feY4PBQp9Y6Fw6Gd1q>v6`|&f|zP+HOK_XFPu!V}fTPeB1i_UPF|B0;ai1S%uGB zaV=Z_&Qb`6HB5G)*~7~VHH`w>AA-^K5g~@rg=w+FJ!`@~@CslW2A`R&4Pi#Vs5DFh zi^(9#68MBXTzbjHaNW;;53yiC)D085dwb7E)Bky@sHq-kdW>vYj3yV`X;}P7$e?== zhSmc>CHj9)t_JxFJins6lN&OL{K98H=+Fzj_s>x&2`37D!qR z2!S|60usb9pHM2~eGVIXR(r368knfzsm`chAr235Q7wo(Swf^>oI(f@biU3*1UhRguqSED7`@?Hu+e`9RB z_EjpEB9X9QS;8S>+v?%o>pv;HdH+}8_^CB8Z|-rhW!+kGk@z_jh3w}NacdpO>J7aD z?3FMh7L6(WsT8CN1{3Wvn8h?YQ-CjCdMP~q@O*gXPhW+JQzxJaY=9d_H%bx?$nPFr zb$mD$y*8W96g@Wpo*UTYS^)0_#(gmj+A}!&N*-1ilC-L;dkoXP`fC)cQw7)#RtQZu z&UO>iyWpK8o~~$>4ExG4O~KYXesC^3VA6r2uVE_OGIa&ck zycLn~CRR3)|L=a4>5G41eroP?riNIz%fU0I|D|ozFeXZ3B@DEQ42s9&7ki&^`HF_tizbX}VXr;(UFK|j)X@ulJh^4z zMHVnOU@d=;E&I&{%t!fyPan^2yyRq;`>1PLj-l?(SYqfv+Fk&HRO|_%P-4-*K=;h3 z7P2#?ymajJv2fqj^DrVvf_l_f@J&HVk<&1Pn0=GABWZHp)pv<&I&d3my%Vx6=V(tKG*LoI+hHXg{Wxu4{xAg6IK90IXgn&^wfnX>oAPqe#7!FOs`PA4p ztZizkTn-q9?r^`2|KfX;%s^&kFQ$4?x0uI!WVEaPWO z*^;=eXPblQUmQ7dWT6m-}RytN_oUN5c^@-J71fdi9zG$(m#>n(7lIO*s-{>Y1wQAB&f((3wzK z7R^u*EqcYpGJK74^n|}`+oAVl@vWOu{i&xrw|4%0TlcmXNs-1*JYZ8cn`yIo5hErw zbX^Dqf~Eex^oWl3jvo5nNHl(MU07N8hhKg!aQK|Lwi!4O1xrONl>ZVyU-dKux6Fs< z-|2y~uYCl1@+oT}2}Q%_Xd&$&jHl}u)$oa;jfaB(&XFa_!7+Cv z?-1!ZX5_$KhEC_K+KyeXYTB&&hT4l-TAI#iYH9i;Uc+Qm8hjtsH8Md_B+HLC%e4Da z11X|#TShh}UcLGHOG2}cIu3;?XG@eDp~n0J%I?i6cMP~d2B9CAPWP<&{HeImYBR4Vt1%B(^y7Pz4J^lpC&?d;T8s{@#K+8~E_Y4Hv z=flhIY=U#HdjdMLMXD+`QRS3mP5m>aa^YGW9|87aS=io2m;$Z#K_NVi+I|80%MdC) zjjyoat<5lfOe2icI>6A9phTKMKvOJ=K7{)bal)i#Q?>dU-dwSD#PaLS`3Ac#zK_A-0%zpI-Y=6 z(Cl;JrwveivTd8D9F9cSS+;p1hL454z3ORiD*#=XjDpX`W3i<;faelNgz|%u?g+20 zYKLQ{HbI@Z5v%LPPo+-IHGE zrU}O!d(7CD8ueRepLE#4=bry@N0*uCs+%6T%$5_mC6ipTTGX}i1dH_zG z)(9ci0d{l*2xvk@bO$y9dpVd8Q+*qqm)>}1g5*=1k^f_&BD%A`N{AJKR)kJn#VRwO zYWN0S!n-ViJZJ$($etzeWWVF#^1+NUov`HXrGa8D>;Kl*zwBtS;iBVD;#H#AM@2H) zUxr}klkn=w4mj_7k0Gioq40goHZ75gO7M41LE*pbg}K(=7REjy89YW!L`$$R9!rie zisfm7Xql=eOI!Q0u&OfyCm+%Xn$d~Sel*UaFyMrSMK8^VZ~piuw5S0J`+&RZDzjZJ z%!+_%wpWyZAN0ES*yrC-5lD&10#p>BGSe%C9)hr)WUf3$p9YBD8CkNW%T|boA9XY) ztdc-6g5A3m)UKys>FN$R|A$YY@Qbtpno-P$7a@it;VV)2ci~vb`$G8pOaVM40Ltna zrv6|eS$mYO8>1uv-G3-3t?9}`dq)mVnc0M?w=JO5w!qtOEQBks{yLOQ6ebQH=LSje zviL3q7@XmL_wf5wUZq2`-;d##N(a710Mf?~h4&>=$dX8Il1k(_PxNMdC1Mud6-3iI zCI|U{1fIgi&Td$?~D5girnOG1%O1Kv4C8quZwBlaxe5-Ax@^ zwtk!F;=K{>?RN^`DS?Daz|dDe5(HEGG#KFl3t;iNguuzAHR@P%uB z3j=wPn_S{j(D1t^T6XWrZ#D^tZ>$ZQH*ST`{PhFPkYCEL)# z3317WZlREo;Nd6Vfz=&l@CP-HsznmK=z%rQWWQ_nlfOs72hh*@QQ&0WMTtzj&jp5l z8B_#`ey&6cXCG~}#I`rHT{qx9#wZUQE@^koVnqR+qsq@G{YTGOk{eeFi zatvEQhD?AE&R7>dqKQ^qQ_W4k4`(icJ;n3$s^2sBBy=BtUn~@W=K2`4HYK3GCJs@| zw+Hck6o6WPh4o&^K_yn*k-EFeED!=PFR zUI#!2GYv5CyKHm}dL|8d0s@xkuyR2}tplrQT)tt$hF^2*;R=7BuK?O#GEEd;OGpkC zipA2cjZH0R!R5nn93?FvBWs8G7^IAt=$d881897f%04%KM?w2=CX?_1!$#th8=^iq zd}=Kme`G5hHmL>L8tTEPxm7p?Q-*>eLD>)yi_mQMLr@c-vBnQ$+Y&IoH3adn3i-Sa z>5R@T09k92DOmwz3GuPbO}}dl$T|=*bWj0M1r$G?r|i%vM&gOJscorKHg4GP0FC($ z>Fj+y`G#mllXh2fv;(qS*~1 zmq6wh`Cw>H24LRIMmT(0Gg=4@Hg_}FIv}CY{TQ05+$AU|AZ|ef_cTc!mScczp&5rV zgn~K@!)Pvo3BM(4`e6QRTcNYR2sSA}F$Z}==hmRw0@#LoPfB4^ipX{l@A)2Gxpc*; zeSLlOGrNWMtH;q@QoiRc#!wW5RMxpWJ1N?~)p)wViW2no^{!4fBn&>YJP5Y4<`Pd! z^&o!C3R{#TGRttxlsY(X-WZTI1zuX2fwetpoRl%pLJB?xIg4?L1pmZ-{;e;*}) zm`%Q3fxIq4PmcpDHx-~+E5p<=A-JMxEIj(`23WYVAIcI%3_2h*#Q6cF4KJ@+dHFeO^(1f_45fFDkGLeK>B*G&D9sPKzlp}(l>XV@(Bfwi5d(piZ zaNNvVi2H0ibdcacxwm&KWKj~yLaWb00moTeE)w?q-)B0#4p7iGn`DeWM{JWE9 zWSZ;hlRq(Svkj>p>byNj!MgsR!ZmyqT|m)tU^;SwSD(=eQ_#;p{7MS`wkQp{9E6A> z^01D~J$-)Iu;DOm(llsmY(-!gcEKV=3wThpkch@mIchK*l%Tg4XSzY{{t7_(nH8II z(A}Sc6A!9`adi@`+}aO4S>*F6G$a>*UXFUexR}7RTKFdi(|{NrhPyht?)D}D+m&&Q z#bR@j+I}7*q?wj&9UBgYE=TU-WyDGAcX1r|o&tF7&K%70HQ+Tb%w)1EU-E;d98X@t z)cIkUCcOudbKk$x;7Z%H5hF*;(87W5QOa22y;WSZN``geu zDAOhTMPMh=Fl=LW-%Hwwdc)IHdRsV^2kwnW3SSby>3yNeDSC8!8(HRt6$tKM0wq7H`hbB*{XhGb{!`Dt32^SsFit1&<@^&5W zM$?a&8%S|X$K*M99W4Y}B{=NR!w18VUFp3*Gn$m36>-9tF=IK}r|UBDyHzO&&#%kE z^DFv6#Sru}M>oNxvoU>*Q9;pgTnd@8h*Zajzg04skSQP&7!IF7*kxC;eKb~hI91!u zkh)5|aTXI!@*t73KPdp`_49?Iz4HK58GR@ifJwrz2fuA>r78aJ7f zNMxRQY8R?4%0E#=?!N^-!V}SY5Or)>obw0KL{32P!^3a)LVvo5Zpel+5f^+5G01^+ zsDPz16iTRkMZ^cpghPgD;;|Fs5Z2_w5Y$a_gBL;kCu6|xk*O@;j4#=4M=>^dPUzAK zg`7hC!=AzbdnybRs8pNcYvgiv&Lv5mC^@5@gd3r~wK6at>Z!+mC!e0Kpo~KopdXdSlv{ zdDGy4(e8p>QK$%?z1!>l6JZeToJ3$)i|(MOua{p<8PCIq-?24i!=iO*IC)YSGI-6? z+Ef_#krsG;a{)S1$Rpqtw$z58DQpXxB3U;*W6GU9ku#v9V;K)GwqLv8g}y??I$&Zf z8_$4^SS)cO zBG}i^xAkL`;8YF2!eGt)4SfE%5y^`Z2FB zpx})aKSiRlF#@Vbmp4{7^d`?DRICO6OfVRHIqy~~i?9c>hsACYg9Iabc19lsH@HtH|+P)BfKnLFI2$ zQ$XKO3Sgm?ag_mJ{eS^m21+n8LCb{k`f+0CO9saaR1HLmh%pP;sF_Vc35M6GQ&+0K zF{l7*D?-N~9De*b9G6KrE)n7*9LuRJg>(36sQ%^s{r%tZ#>?4nEP!`{ zQZ}3IP9|&SC6mcJQ>oMe9`GX&Xd|VIv$BLk1*cFI3~IWK7ymXY#R9y>hYR`qi;7_*kMnb23=5!D(d~9Jl7x{jp zZ18Yw2YXvJwf~jyh3#Gj*)8x5-3p0L{9HNS!Jc7ebX&XkzC60jz~3%AipQOitb4&m`+H-+5eiRY2#6_tI!OO;i(hX9aKi1yamGxk@1+0$}k<@ z|JA0Z#>M%vWdwah@-TrST}5*HD+_!bk>KX$d891xy6k}hCTa?0WR6rcxdIrpP{-0i zGLa#a{hZ86VRo-Rnc(3ct8xSXPWaXEU>o{>9XWqgEyNkR%l)H8(9z5f!cMnCy_*vpERcnL8JFDCF>1zli46LQ_fRo@S+GQgVh;wgv}DJ==O<#p;z_Y{hoz zVyklw6o!>i@R-HpGZVoXDgY^g=_Y;XHRJ$nk8_||&)j|$Kt_>qTV=bCG0_mz6l4bV zmQXl2Emz1hZ_fay(oBLPCJqL7Qct{=IF3bY<>{W3*&bDZim(Jueh8Jv|BCezJ!KG( z^l)lwY8;uZfd9z~`j>y}}lF#M&dJ+f;hMQ`Gn`?ve^(dIvy5n%6Q@Bs7l3WVe8KjbT99HgP%P<7DJ>4IGw@}R&3MtIdFYwOZ_7JS|uYi_r znj#8J)FkQ|Y`J-N+g--RyuopEF4T1!ffx=xwHweR(X|5Tn{9&*v;sP%YRf!d@Wvaj z!xK+G#W?^HoKSV5?4M{Q&1}jN=5cmEGXF9BKBR-oB_3Ijve9oii10=H&9EN`zG4%y`C07xC+jjSaMpUUALaV10n)9Zt0jBxKdfILOp8oX8vsw|I({W(Qe; z!Au*ahTM+@@SBsW$SZXyvZUDGGTa4qH(fN0i0#F`86>Vrjt_q_(4pCfX_0E$t*x6o2#uY$v zT?!SmvcYR|>q~g2Ec|i&kFtogmA%4u{{B(rrGtJb6Tb?bX*`h1&W$7}+*_u-ccvHmf9V zfG_pp7_6(m2X4OQW?1~@VvYmwT0GNlaGXKHEnx)E61L%_u`wzq1Vt5j>{k&!DJ^*j z3$KIt2@>`|(SawHbb}fSTG>>Jp~4FIUOI^N7yYzcO_sOOnAw*7E8DXEAEuG7&*gF% z7^0QJL)9UKa{!2P@m^nugS`-u{?!Ab@0tTlww`A@f2s|8Rz?G@DzfZ<65HbT;BItbTB)djwV20}39iB~sjrGl5dZ?cVVc2{sT) z*nL_1M>^kNM-XWS*=YJPSn`OK?OeWyfC`Bt2$%A3!sH~Zd2%Bd$OlL`O9f{q1)v%| z%Gcu{`&2h$xMuAdSiN>F&OnJP6|XKr-%Q_cA_>83{46)J@W>fT2lAT3JkDaGfSbY? z?F+;}BHL%1ZfyYv{O;_hNo;dVKvoQ#Y}uyO(XVaY(D8N4wsyv1VrA#?3dyrK>PGiw zFIwg$f~rY5!AtkkE+Tp%pIh2F;0Mf}iW1En+2-sB1_!{~@Q{yYyuBEwNqwrqD{v3S z1kv=i2)wW<1+ftF@Q&-JE8!IhpC7~*;K0kWyCPVU6wk5H=zb)|dB>GrJ3OipiF+J>*-9CrB2Y~I( zaK{ro?CsmWY)0&s&Os&f#vl@lWKww((%G^Qr}Ay`yCUPDjTaV(9u#0M^CpOxbqizO zpr-(znB5F(yVB5K(n0en?#zQq1mRf#8hCU2QZfmdy9yxWK8x9dt9&@$&I?7o$M`)& z2Fqp^&Yjf=afOz5YZzG|TWgj$HnExO?`=;3(9rNSGPw{`Hr9teziinX3D7!jPS=Kg zeA_R&QCDJH$2Qh&E64-w8J36zbY`2fV4&?3Bs|axaL+9BnjIiEKtO~YRsE30*J=1u760!Fp2ArJF^oxM5Hn$O79)w0vC`W)OxPcm z2JBBQ$Y?b7F?5tHSRoNDlkaLJq+m_0lM`Ai;aYomxYB(5-=@2Sju zZu(u&XChWWssN(|-td!c%$UMcE7GYW6L zQv5~a*e{$hA_M`R6>@#QIEWalYkJ)1z(Mm$)xNUmhwi>C)FD4Rb4(2{(%95nLf~a` z22u1rEqF{I_xa2oByK2fBSB&mf!Og1$_VZ%!uRqO zj!RF|>?i($!p9<7l@j6@QSdv9HuZ~(+x2I&>497Dy-HQ6yz^L8#)|znDFCl^C$v@RwJ+gg!&a z2UXvFNG=tr2^C#C9#io16MR1Zh!Ca;@%3$98Q5OgSzO**!mmlzd<19O*Ykz^L2eIS zw}=Amo*4;;-@>r$GD((-ID!j|azS}@V}>2v8W1c8`FC05**sotyMrgGSOIYR`=S3% zgauHBY0$o{1gTU8hQ|aLGp82%iZ!sNSBEYAMd-_w04FnoGmHeN%?mP!5wsdjF%3r7 z`e9@u0C5%b0muhr2htD>sL+axV-Q^d&1@IDdDy~nQ@<7S@A`h=nL^v3{4T(%zO=Zk zBkkl(Hm#+hesx1b!=Xqm&qGE27P5ZL^liLZhGDWuB)T#jj$GS6(0{+>b_^R*B^YX- zL%U{}(MaTcWCCxeG;NjX+W{A}G&TRZP%KPOrPE{ashtS=r0<UD&^u7%Sv*?pL*JpGGPyxFt>Pu+kuU)z z@oFCY7G&-a^cjq=E6{vY52!&5XFY|BZsf+c?``bBp!wgf01o&4xudsW+)Vz zfZF|38HM0B02Qj-IcL7ahWh%a&;%B`d%BMnkyuCSS1#%n#4whd)DT3IYJ1$M*Q{$W zeB92KQ7Fb^cnYnFLMFNvKOYTKD;R}ahhmA!%Nf5n4D{26n?a=B07Y7dpmXK`G)(N& zCN-$52|y@-kklg3Xbo}%%&Fq~2ZisrH3H~j2>9uS!?}pgOd0Naz8eY_?=nZ7=j=kh zkeEDqve>(=7ZZzy2ZXsDBan-yN_7X;k%@Tn^+GYf+8ayzgQNg_58Oy3Qjaw1!-Zn8 zo`lc5?c)T`Y)gXM;;pf{ZPS*m?Z+_3_VZO>w2KD5r#EB5^kE4I5D!3g0FpaNIFaII z@G6kdTZ-jrhA@cAsWdC7NeJ9R+ixR+l%qIsCH-thyWb}eilkh=J%n$L1 zA7{VF6^SGL%JMNUm0S_J}Wp{gk?Hhv# zRc%`;l|#;;Y4$=rE-c_h8$KU`MNLMfK*5s&ps&}^w^MP6%n2c3(40F?CAs4aB7S?2 z=5-Z-*C1H#L6*uQAgS}U-LS5&#D2GM3o%$+X(=M4+J!NV3Djj>Si5dLF9fCEqym(x z9YRF11c(W00)fEi@OTMxCmV-C3HB%ksI2XeMx#xr{ps2e_Nb$-L8r@+VNj>q#gVMA96?s{@H-16um zC{mhP6kKH<{C%o&wdGJKlER2%0uoT&u!rjchN3@!6A6VcO{Y^QqefH4kH@^UOuJ%2 z51Y^ow_SA#TzS@XIABBrMCx0FSUf4rnA!?c8shN4bIU9Y)uj5m+UN3?uznzu8+B+~ z46Upo@;Dy6neRnP-g^A)Y@e5dbOwENMOZ`z2^=X5rj{$kBaX}BSzc(!YkHeD)Kw1u@eu8qKn(}%&~6Gp(Qbsf+?kmHH2s%cJ^z(8yf!jyRrMh-8-9^NH=kB5OYV@%7O z=(t6dZupK#7fQs`g@SO^CuYONi0(1*1Lee2M1a#l4Az0swGzy&Pe5yfYK2u%mi*z~ ze4%iHBFXXP{jl-rwJG(u12k4NY&7IDkL^hT$b3rlTcS%DQ$kl1Q8;d&3BEL(iRkkc z20l#OAkM(qCSYcc{I#0{pp`v@_yg22ghvSuX8jP%*&L9#)xNYc!E4x2VG#$bejHb6 zsQQPhf;-X%qh;zoRr@j`{f_$jhMy~f{J(8+)q$cdT2qe)FGud!|hY6mwaR#jl6|NWraq+!O z_M3Mu>Ql;6=%Hdh^%s(5YM}quYB+lG7k>5N3G>5YV^qs(Uny3H3K9Wn_z_^lhJ#Og z4!(a`2o4_G0$2Y2324vcPzhwzS4*Lu1@U-%b1$t=+|NNE^GJ=?kjyBcNDej3vj5Ac z9>Q+=+>t_ET>=U%vq7DB8VJ!QkZ6lUTK3hx5V~J~&OY~=yQPI|Q;5?2v$N^++u-j1 zg9>E4p=jahYug9LPi>1@0aiv2D!KNXH+k@40W#ONgaQ#DC>XrhJB6WPN4fy-bf)3ymA&xnsy74=QkDGZD!3Yk^;NUFdd{a9!weXDNnqyqG?vbG+P>K zB`49wQ_fN#1VVBglyKHhsWah($!)M|QxDs)EiD8BVKWvDUX{*fulLHt_Uj%&UK7^u;>pv?LdsI9X=lKs4D#<2<@Z&?7#pPFx<{q4J?#oc)r z)7E%iS9kY(4?CCyEb;4DP*tDETH+_W2XgT#!|QCpEb_Qes4#KN4FMEZi7OZF zYU7rO**xW}CVOdC{XpJTspNDs3#C(d{L)qn0hiAet281blSr&zf*gl zRyN19#v~)z!i&IVMFll69K@O$sFVBPK|^gjn+VW5?Eg^?zpCPc7ai{%v_07A)Qf>(_4LO`8zwf!zKAJom_h*7@JRS6<$m z%hV*I^R{kne*{I!d4!5pq2*A;QmGh^g%@;Z?a$_lhB&1uU?bZmI%p&WURN#fq)-s; z`J3%!`1Ye4U^SZh3Qf$LR4^~sKe*z4`wE;2ko5NcbC)n7b}68cU)$IR=?sHOElChC z#?v_vGQzvX;vn5>y-2Q5hV9CC73Ymc?V8`y?{2Gwy%mg+6y?Mhq{=rw4H#O-U z=JfiQB)3k$L{m4svFIguVbM}pwmt=VJ}aC(Ym&WkU5B&e;v;J94{-k z-FkrcJvgp4V5kTr@Y%y^;d4hdqavk1FlBBDe2UE0rfl}Bh3%rDhQ3=aWUkc>^F13t zSJw4~0-A=i`uS2WfAG1p$J1=2Od-E2=+y zYrc@Zm@(LAoyGqh`saW$sA;1#zn`Z$>*G=O<4fkU^^g6CF};&>-puG^Z$5MrJ7jb- zC)TxK==o?g*5G}OvMZo99-`qYP1Wzw6`ETiN~Rj$^l;F`V6d&PeCm^M+fE0gd?rv1>iUvsK;#M} zaYf<;1S&&aB*cDu`e=6N*<-BF9M;C-s*h=*__dO|x1sp1P89DwUi=zj(d5zLV2C~Y z>kDjF-ssK`1TnT%Vyx>`#$LFdExY*=_R*Q+`Tm6U_02B@gCW_oPJ1MR6Ze4dX+^6O z&{V3i|4llbx#+xOr`o^$(y>zG@Om)E91jfRe1>UVNyWrY?@AbW{ZS~D3Y^tNUi?hS zZHBa~wwm07l1dLeR#Ou{>CIkN_~n8P@@6Ao=1rfsI2(8sG5ZhklH;w%*v<^PJpX_g zwEnt$00CbgXz`l=XOyzn+P356@7b<2!(yUagnk?Oq7&o5fE#5Z5Hh7n$F5rs+y+xYHDg9r)&G zd%w*3=l_`LeXCiS=s-kDCjOV-xQJyR`UYG4>r2^;(T$EEs4S7F`Plmer2OI&$(mu2 zWW&o1VU3+IZ47H|X)*_Au`sx`>+YL>>dGL9UME5Kh(^Qa5mU$6lUr)hb;Y*U)Yc#C zwT6>+6HmEY>LwCXWZCCTXiBhGes;c-dg>RfnC{{Y7Ok?*D3&T^x3SzScd+7LuV!C6 za~8k0+C=S^WFj$k7v1KNMFAY>sFZMaFFuL;%$OIXl&e; zJ3OHIeKobUOjdl9Oc9W>ecwQrEQlhBESZQo!`hmKa9EQzcJvB4OS+Fa=Dc)zV6_Lz z?A`uq96wC(bj70Kt}VT}Q=ebf$qsDv3HAC$G!io*?fEGRn>EQ>P6R+={;Pva@*_u^0o?vLv7^brAy4qT&Hd!Ol zo`UGwgwC$MM=`5^pRC}26lD>7%QIvWnc^ZZvG0m?50O~ZQjK3 zf}ZDyad?A3u0c4J?%`2Su^LMNF@ABxm+>|`COCbI8jVQ ziJ?#kl_4fj*RW(V>7eArH{b27<*nM`WQ!k4fWizTs8ESY89c%oF&FSKmy2F%TG zb^W~nyE*G5*q+Jb=_*vT18@wUEEMzVgt6nGqpw$ZWYKzv2LdoD&;v%X6W@&CZF(In zczFq&^z}c$@YWjm>7~a>V`~%U3rjYHB%gK+1}L|f?&89|QdR7RV$tZQ=t7R3I?P=C z$4go6sT&x3=11(=AD_oCv&+tza}dk@`SWb^?=D~$A3eeI$qK)3Ya7mH%{ttaWj}3` zz6b}R24~(##5PfysXP7FE(29B8X4>?jzW)x!{M`0pf}-fyonYfg9mL~$!B@xv8t*8 z`V|H0{GN6I$0Lo;SK(*wLf+yMR0=9wtrp_@!YW*|(E{OjsrXxMfk1FrES6Y725H{B z6Rd-#&v3_xM=-!HJ$@$J@S6)5`|DL~_3c-&m|tacrVM9W{(KqBFT8e#K|Ka>c0^V1rOQ-xbEL;GYO@kw&q)Of>-{} z;pVmnzRGeP%Q1dMoNwu@@1;MnZNL8vJ7h$&hn_{7cKi?pH>RdFa`gIy36ofJbF25B z9Z4GzBg=pmEaEJ=QPTp=|3Szqc#80T!X?SO-uLsnp5VFCeG~=07y;XRMH+kpOqw*A zVF>MAJ8zH75O(keT9``b@45WU8EoKhSFqgXw^$i-&*h)lE{ zYMV~WdznR@u@uGcVDtdp-QC{T4l?xK9!|DZEEP1w2A7MXysECQ{zATY@9z6J2HRWG zR0A-{W8|ujijS_833)AicDpAJ_wzW@(Mv`jH%;??1dIpi)KqxK);NQ;Z9P5Rh)WV2 zQ&4dc@KQvFC%E}GCP+XXHlYoqP#q}Ak(iGt@k(j2X%bAE*domtKMXRd^l7MQ!@cts zhe84Pdo|TR1GR75A!C}^h&oLaYY?f@w)`kx0r_$v&;ZP@!mv6&zd$V*?)3ZBJS_we zX+u6#ZZyAQM@OecYwCp^cV(<ciei zIPW_;;@j6L^25Eoy(b#9>4Dcnu?o`&)zJvP&nB0H)`CjvWEv|Rvtl9h?BX#&6wg4eWGv43Px$@5pDK#)hiCFMe5La2Y%@sc-Brga52 zHD@$U>w3RWO?rd5Uu<{x&&D$p3SN}WW@m%DZ-VkKl$MBbQV{C0`YKwDFQOvch&bg8 zyzT>Y`P|_c;{AG^yqbK8muLxiJtR__x8<~{&@oXemtMz@--EB*Lx#SytHak=Uw>OB zo%&=^=k4!oZ`Qq=QFBWGS*e&0VTc#R$NjL2n^5h88(-gv{(f@WT>}1IO&?g5rICqa z2n9n=<@5OqQP>^ydD>KxZmQoeAX7MvFM#1yFYW}Re&saCG6oD5x`mdwDvYR&!t&0{ za9Luzr2xBQ0c^gLwkS>X;p|R^(7Ve4)Iy&pC9gvlEwgqg4eMUHWjc>z;^y<k-_Kkg~B{f_zHf8C&lpdbA5_$qh%R$a1!D7+LD7`;S3sM zxAmV-xn*}`yITmCN|H*YvO+cWn#{mKno^SF!8U7L$hOx))#4Pa zQ!M7hOeS*^D#33M6%(kU4Rb{VN8+}=-iM0i@+8%-o{1^)`%uXJs0@6AK)lJcz#ymv zdSmg}4|9e51y!B1_SYNlj+V)0mLR}62uY_Gh(n<3pzEP)L!g#JmhnO4JkGWZYg}Jn z|INtZRQ3#@h6qM|ZO!F|UVb{8&kds~MZ^;|q;PCkhnS}ZRGg{=<46|=gm{38&g}?- z$H;Dlb-UsJ8KF3w*@`C1d_g5s0=(|dP0+b@)@~^^t&QivTSU0+m}t8T`NHQS(dhcV z{@$N?eeyXlLWE5B58_upsHs{V4$?>*q>1=EiGO<&73K9(rkwFwr0=h$eowNuSu*fq{Xy@Y+}7b@iCr*GbA=w88uThXa9m#eCsLgD)#5zwbzH?*fZ= z9_QUhh01Cu2LX2o`86L4`gvB0Z#6Sy3ZQE07}JIc)WA`u@>tp3j!mpuS3woN=&q8iHp&9 zZ-{ow1)#~H8gaR^`1A@_z5=--k8$cjL;(0?~iM z*8Rrh)Fk^5{qu_NZr?rjZUQqzr$l12}+BiG~ z%NX2$Pxz-+VY|B_iWJS&6T4~}{}0{xSRiOzjHY}!?8J50gRZyA;d+@;-sB2HM9bTk zlMRsq@bAU&Wvx*zte_t==&YvyW-k$1wtU8-}R$`3LyMSwV^# zP|!d3=v=${udYiK1{bdk{t1Q8%ra$ThtvX8?OrKcW!>NI;*OOh#6kuO9GLj7*`==%2m zCM!U7eY7zJ&Y*Kbs+Peqq^2mefilnzgjOL1f}TYV#nkj&)-O15Ql%r57_v?)BH<=7ZeI%P1^TfxNF%Z94}5+a#MIQ&yI{kMDD$9-r5 z{<)dut#tB*;wHuK`)DW-ps6p>)&0|p6N`u+)HVmv-2s-jUooUX3iIH&Vj%+UX zRebEL%Kd+M``50(pU!5V_WS%7`V@^QU}0lV27Q7E{ckS-GrNWNN)ieD4YWfhUt-;v zA}Fd>tXS)zumIi?e1}rIu(mUgdCNSMy4PZOSAufKTd?u@2f$z41~051U@xuMEJh>Y zZ3q}IqfT3RGrWxuDrw(pX6*m!t-3_KIvc9fWWxm5?XgJYPxQw7o?q#ttS~sKZ7}fG zL*Nr>_p&nRJ?ml1K$-RCOsX(>*>?GtT`roDcJpKz&UVCq>@$|(_)eMD$`r{F1TzaA zFFgiIz8_X^)8Vq4pA#~)E2eI0HWSYb_(M|_MGVs(yohkKR0Q!JTcK1}0DsVE-`y2> zH6_gJ0|c*<$nR5{HB~(dLG#5J>ir;F$R0&)P;iEex-P=pgNDJt=2f6*ao&YIx8zBf z|8^&Pe&uFSRsA<2hFAu>5oPTT70gXKW~nxZgW=cK^z1E}Y#4?Jqt6K}`j_SY$7(?2;(=gy8Xw-SPjss{q_(P*Z12@ltWdk@vo` zmK{324jjDzav%u5`0H!1rh6Ow{L*=F#?&TA7j4MuqSIe0Ilbw;u(n5+{`lk@BQeiC zQey1PyesgW&#!L4{P>fq-?zlF%-8WZ)|Se;wUeb1;DeJ9+*#;0v7j1GZ4~@?pU-!g zW!bYc+1y0K$c@9lD-q`03!0kf%JyZt5j_Pq;X zc;o-Tj5Z&zTra%UWjn8}-Yf-!p_j|$;yTz(j%9ZhfIIU-xo~?p9R9|mZ>|}6#Q1va z;$z0i^WW))yI)uiSA1j!d~`+=q;eK$$ZEzyk~l(%iVd}+VUtw{Prts>x$%x)VMd_9 z7QOzKxaf@);dfT7n$q4gFeO#u7{*d$b(v4`KdGw9ONM1FG7Y2G-rne;vJP&43?(bs zOkQM4>0Q6-t4GT=gE_*!mKkFiK z(x_(X%vqyhTW>q2(H*{FWeC%~H(huHoL@BI%0JA9$G&+w#C;+7--n)YOeRPHS-jKZ zSawSR-VXrdpZ@qDI zPJ}Q1suwi&#hKC9Mmx4Jwjr_#g^zCSIp(28ji&QquXH0 z#Bnh5po!K&2Tg?oCQcUPjjc%XhrJyzd~nAfZ-bwG|2kNB*Uurd<^`~dDb5fe=Hk1T zBM5`DZiab&*mrk=?HgLC!X5KFXr@DGO8H;`?mCpT=s=ZA| zxBh3=Wbr#6oi0XI8FG4=r!8qauux+?*yE0YV^2H}{&N3)Fy*jgpinaT&Y-}zYoj*s zG)6Ukd-srsX>T==w-`*~5>FRP%RgyMGf{{B=|8C9YvYS23Q0ch6FBGAA z#)GP^zw8k%0EW+o`J>CAw7tUj~ZEa$trbz@JZLIF+#>}8?>AbD+ zB~12UwghG!dD_Ge2Rz`LiYCAr;Hcv!i`k26cqxoHlbzof#UQ-XNh;+c^A9kJD+jp z&6)1>wRa>ocXS_F*6mBwV5lw>3Uu4H)y1<@|G^UJ_j%*LM+;UWk?;tNaIP*CioetK z(nrS*YmQ!i(OLHIe)}WV+0iBV12OTu%dQaxwO+8rAjZQI@0?Ao&8RIUHNB*UL$oKc zqWM6>=fAo2PjK$(M?!JaGKlzmlzV~u-`Hw@@sEq(jScM*!U-W53jd;9E_}k$EqHP*G}S-zaC zJkY_6OgA&~X};7+*UQW_iVRIXZW_s}WqzMF3_(_7xMnc2^;;eoqv zXA?(_V5L%?nN}IEEys*g$Y8UjrFXlhJRk(eIDBh47ndF*9C*MOumVv~q6yFvalB8051-4l;>E3R18M@P1(I;> z*S-!tTi3vE|NH<(6AS_}@Gaq?h;i?ekJ&%D@n-4K=iU?~!JiL>gO_Hq1NRK^OyK^N z;`LA{bV)js`+?|KwZ|Vb8@~McPg_SFKM##xqezJw+JZ*&Nw8_%IymNt!{PCNJPP9` zOa#4{qrFMpE$Gob*!gW>WqQC&b%2=b10mZD3X1u%+ZQ`)yLz0Kcu@ZPVwc^GN23c3 z)BL7x7%zES&Hl%=l6#Vc8*G+XfEL%%q)~8G5;%)D<dGPD&E{DUX902{@TTp@fF@DbgodfG7Nf>S0Lt+59QXxav zQZDOT#tmtn8S_@nhvxMeEl0z#VRU+s;Io<=ay8S@21ff zQ~CY^8k&DuGWkG@e8Xpnw`uLln6SF9Ks84X74rErhR6a`%s(=&{#PBNeBj8M5XAY$ z6UgX!n;TNcQYx6CJ%@^>2((4^n(hpQ@qHqmzm5u0)=lmr+$x^I#waD9EUv=T`HPYu z{av?=ml4?Ol}N{XlRXrI8tU5)Cr@kG{eFKNUf5*jIMZ>wn*FMFa3-7OnI=I}#^Rua zQS+II(s%xC0ST{;TOW>upU3aJ2Gh=6Fmww@xMBrVwFwpBhnakFHij@G!K;jX@1Yf# z&nF8uV|m*&S5d`AFo^0c2<_!kafKqw-AHDvLTkAREz5GgY4uK##!#aB{||GIztdN? Rj4l8G002ovPDHLkV1l_Z&|m-n literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/128x128@2x.png b/iron-tauri-client/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9dff94fb7a87b1c4637fe72f20a07a1cfb56ac20 GIT binary patch literal 67519 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�t;305pg3{s2`m7W2)`+XuW<`!d?5D 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 B`nLc8 literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/32x32.png b/iron-tauri-client/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c517344d9a5ec98c33455b2df994d9391ee1e2f9 GIT binary patch literal 2428 zcmV-?34`{DP)b(R5$-p$bL_2^1rkC?NCAYz4LWc@0Yq#AE`)3af&nWeA>bqxS4c>OD~00}KVpY) zp9-WXY!r}VlZs3n>=1BJaR`gU28@KP19YNeSF1f{W@lget#*kbB!s7Gc4ywv-LL!W z?r&g_iwpg5oFt0k1z9$pA%qOLn9a$ObXpXpbGS#23=gW{Nf#5!bKE<6ATWal^)gB+ z8#eT_)WGH_4c^oP+AKo2BTuVipev*VPc&7MjZEv&K@9Khn-ZhROeIO0*jv`u@c@$* z5Jf@sE6Py`G+3UO>sXMTb^@p3aW2@$waih>H^%8>6Lzl1n?p<-1w~Qb!_b+StieLj z_u}zl|A*#I9Yvir<$hXsffjyy(hVFlg^&7w0=Y0a=1fTZprfLcdK+&mi*hD2&%J|q z2+4eE`-^iZz?3w5DUZ}?VtC@3i%F-vKZ=IAeQFTN|ZGUyi{B4x# z^m57D)I^{TrP=z!&6A3RfD;<<;tVsVUbuL=2*%HO31&aPphn}Qqn9-1w5JzohIq3FkL0#90tJ`a@y>$h)9Vpi7 z+mx3{Q2941=fX0{USx) z(1d7zJzPLQ5QTIFJ(xC3gjcd1@I{>$B>QMc8#@J(lTslmWg4{lBzSSM15$@z3lNN8 zv6!a!0FP?2EU&a!t&M0%Y#53h3|Jxwap;I>gFzT27z}nTpu5)09a)e$Dhj5Iv~q8q zZ-*|k9cE@`gxsg;0Z53A1*3HsT)1=j;KsVjNeBPsJ>PjsTXthU0U70h=JmSUiR`7UK?s|0_c)QxL%xaOk5&HLg zoN%+Y9XviimzyfX%oJO~_=#y(hsMV~G#aJV*vR%GM(%_U9UQ0*1X)K52KC*7Ae=&X zvGvsycBc<`gajxasJwd@_8r^{-Ci#cgzC8q=i#3pp8;O=VM|oO?e;-H(>S9^ zoZ?s12Z~=UMj5+%9TWx%0h{Ck0lkut;7dG5c&E#q)6(WS>ltPw4yzHe;{`Zc(GDf= z6+?N&6>vm3psv0a8XmggJ83cul__{V0qX8jNOfgRen&^w-+EObZZHELg#tYhARHhK z(9Yeu-(8iNWErDV5-iM);cA=Q@Sg|m(9+h01&aq+6kuke49lm)fZL-|f44@eo88V1 zm#35`Jp$3Od^i;ctplNj$OC??YJp?;Jl3n|lfIQ=wd!b<#VC;JDK<#JIvHmqFfmq! zys;Konh^~~i33-c7nlJ>=j%yjgEN%^*2uCT|T9y)eCz*ZG5ZK>CP)yn2$0(QS!6LfU2s) znd~PuKoTJp--xxHC_8nCo;Z#I5D^Bj9XwadM4${W}90+BD zMHbh5xNjppvf+E$v!i0EAepJjWZsQ+d>-kw3pqiu$z*yRyWu{w+05>>Xwc}$(Lzj` z=X0} zi>wd8sFabcAq|bdzz}J{Od*zEBOCO1ee8WTerEhJpzH7A^Siy;b+EsZ+S?ImKpFm* zg}fmc7>)m>&)37s1W|sB6Gn2H1 z>BG*7A`~{ht^D(QD%75Z=9U&GzIR5>LLym!@e7QIvHx!E{0W=QCJ}VW>b>H!H9e@W zt*E$m*N0000Z z2Y_5v)&F^A-t@Y&o89zA3Lz$hB!r^$4x$uAM3ka5ML-lk5&UeZ2#Sam0TqxcU7EBY zHH7p=dfjCE?DTo<{(tAbH_5_ZNFbYlpQDeNoy@$s@1A?k`JLZ6_dNOtJT&&lh6pzJcs;a8_pHp`A7$V`w?^DU-Rk3JnSST14kx1+Y9#`Mb{5L=3 z1Q>>)Lr@RkrATMeiv|rEd>8&n#A1nm`je&Z>TxKFLg8TW?jPtm z|J^Wx`hT^+6khs zM5ECTJlhzih{sYd1OkD&pw$0DS+Pb1C=ri6Pu>L8u(*Z)8m2H>i$o&BcGCpO^Fu%r zBcTxgzEd9ukBgs^$@DX@0JIxS@<-47L8Gve6Ms;ZZ4<%=G|b{>n84e86S%ufkIG|; zM`KU-9fyCItm&~>@~68=(?2o~d7+t1=5&}Ao`}Aa;_`DO6m{X`_w<&qvb)TVTolnr zj8FQmNE^ z{@Bbu8gDb;2!$dq!KeOLm_j-E@Cz6Ej@*2wZ-~d^bKo1)55qUqK@WUoLn4vr^~R;t z82r?=Uejb~arB3wUAr6Ec$yWBmb2OHI!s6ae!`UlQB?ym&Ks`l9&4JWiwV+vA?~(^ z@C2fj%jGT-;>bA0i2)lz2!d%;FupFB@8_|gq94X$+MO$dwaN~M!=oXPJ8audB$LS? zE?$X*!lY~J_w&W#=WDfEaogO<@9a*2)fcZ;GtCV~(6}4paz>3DHDUPh;X#<_TxVC8 zQmxj`2!(<#T9&omAEWz!$^5Cl^G-%1;T3&MpY&IWSZqr;93luZ3KQ6Z*Nym`@3wZ^ z3YKFG=o;7*m3+TM$wZun4j#N*-8N=6jm&QJghHW#|JT3l(9B)DnuaXvM=W!ak z?kI{16Rk=Fi(q+SFu0Z7Pe?sD_TNGcYK{h&}PU4?735L*RY$Fpupn81T452XVq z4WSW38Ua3HRO;@er5n2FftOd(s?N#}OU2yPt}8TO6L-ZNh)~c-!|W|RW#8cg4*J+| zfQ%4XdYsm7?xxq~E~S?jtQTFCss~ZA@Gu@rK#H+=^tMu|a5hZ)t{UHN^-~1Le00z- z*nGHPmn5nRsG7L+!~?|AyS^#JnkR)QuXco}xnkoSxAxTcT=B{eYyWe~z9Jk=Zj8mE zyK-?!6NVuCFvNG_jbDDTEME9u+kWn+wy3n)LKJPW`89Xt13wj4edZG)Qh`*|T2{6UD^N>Q;aQNgt2iv>}B z?Pk$=|F^75PCh`u1d7IN&gFhd)LhsWmkv_ zmXWY}gjo5Ym~+#G;uB+sOM$_+NuL`D$BM8VBmC3-M{(^RlNXn|MA1b zn!jEs#F9HjrPM7<3-$z)QSM$V#B0A63vW8hJaF6)Oom=bq*AB(g4!+IU?Lt*CK8$Z z49yTf{?g%Y`OzOb_J%pagupD@!J?`Pv391&J@$R^#lxq08m8(Nz75hj{S4Dp^dCs{ z`uU;ozD(T!{z}ug|Cna6?#@evv*IyPt(D{im=IKT%M#(d_#^kB?;c|{C!!)4PAtT{ zjoOX=b?dox@R2P8TE2%@;7L^bX!RO_Pc;c3z5e)8Xp9PgV3cmF|_@Wet41-z*ein4Iv(JcT zvGk_%EwS=hj28lPEIEGByGDrFzY#M=5B5V4!1-`w9keUB8x~jpUVJzbK1tOiG`A-W z%ZP)fjDiUqE}nk$UcrxYr69~DkBIKSUuvIqjP!ogVU?c{-iB zYgd>xfCn2b^9DhgKI&tbT z`-v%|2a3b?9xYPgkc9K;Ov4ZUle9}=QxXgrFCqOZe(=Qu?2ZS{6{35-c=VpXh>;CR zapU(d6=KoNV)d=(SjRz#08t{FZ9J=Wc9HoPi#DY{fBJRHIlctz|hgkONGh))%QR14bFBiq!YGKX#vv}ji z^W5np2a13Z%O#Vk=K6B@C<{vUE-~UW0R;o_ha$;&(AjFp@@j5G8g|R zXqOyZFdVud2-yA7b!S+Ge_SETxpe|O8cbh>4T$*G*(XVp6OE-_NhD(RY%oubOaLNd zJJVn3oR*Li2zuvH-)i-XX8A-hWgD``KrsGqc@!9HGT4lR{Le}Mi4cS`4Gj|6Hf2&` z%c{jvSfxTiAnFjEa~=@AfBUL^*n|;?m4kmb0(yU2f&Pb?8hi^#>b;v9;?$hdNNF5P zdTgMSV>qPH*T3=&y7txw1jNFAZEmqxUPnI5foBBGdIDNC_MPK%94Fv&y8S}zVt%EG z0&yI{x%>VTbj2kQ&13w}aRxxIRI6l~wZDRWw%faNbl~A9ip?7~QY025%d#olJO+z2 ztc-3>VzA~I;f>PyC<_Z?6l7Mb;Y=({Q9~ysIg%7jCta`78J|0a9=`ux`o;OjYEyTG3P5Wj#$Zr5j@$ptQ-2E!9#sM2HFS$t ztBvcmENL6R@})Cr^_#ELoO`aOOTYPLdhEvY=s<9Ay=9uLsosRh0jX*Q+LiAkCZBu8SbEsr!>PJ5|mWDc+N?#bz4e`j8pRS1| zH;e23_X;sA9TA;R{Qz;+tD;arh}kpOUGvygV$#UrA{b3i^Jg{4J`3>qA(E_zYI?pc z0Z84jXJ23A%SH7kQ`^qMm$8*6@B%MvA zmp*vIdBR!uh+QdniW)nr!d&sSqbCXoOo;ini}}}|U2BTPna{kH(=7B6Po32HKqU~2 zzdn9oR@{2oXDkIV)V1dyBgBi}7lqyqNiS8I!|9!8&jyh@Zp4U9p=dNyKS?^BJ_xCG z8Dqgr*#n0S7L%q-ej(_^#w?(~ztJj6Boo01BGX_fD353?8m-4n@3biRyhNVk_8j}2 zF%!nHfY=mUj6xe48vamM%5W%R3~nB{_;0_uK#0xHShY%C*p`O^%j;heo%dcWnqoom z^-mvQABX^1HDX-|I|lh!`_~QvXTvFj#cp<8dZAp-GgxpBowA2|@8yS5Z2V!Q zPCk_st459*pkQsj{meao)-U?;BXc%v?wnRB7hSKEI&qP!h?_DEX*Uou1Xv8Mk}sXT za>c6K_;;}KjYvE)u4zEi{*cMOilGflrBfpS3=B97iPX3-vr;T?v}$HMvb#&*hvsy5 zbiLNm-nkYj4Qg&_9y4gzz_;>+0=cH+bhLM9nRMo*o}S#Hy}iAbj$B$S7Qbo~hR+sXJbJ3~n+p#neeaV=8$1Ix-U71FC}c0P9{A&L1D9R@#3Nfe zx=yTBN;G)bu+JwOQ+L=_6*QE_g@$S@5?kNd)^$!i5kD^7nEs>^P)D*qV=YiQs|h#6 zg03%U7KoRv5`cKFS7c#Y)qHQ^<=*bxpX15+X;rg&oLMs+{&#SgnxO@snKx&_5y+O( zz{bY=fBempPX5B#XIf@>LO|1_#GcjM@G3=CJWRJfG@H)*^-NrYEs*7gZ`D3lEEX5~ z?!fMMq`iyGAtR}PW!rg}vpuk?0U}g;?utzsri2a~YLXRirT`8F6Kd*NZQ|Y|tVp?i z&sXQJOIWt`^q`@GzwMAc5i{hlRv|G6xUZ%%0~*f^$D%Xfq0+ic!D}`&h#|i~fJ>ZK zf$6LtKyaGtm18TOy1^yEoQ_PU5+^~zWAG0y1fxk|yRKq^t8~-ZjmcGT9wh)lU}6PcJM6#seHR)GeY2Xt&e)CPmiXPk(-7 zK7HkenGl|CYv8D3@x-DUG_+Q&TE4Fn|7pUK=Fl|F3jE8fSeoZnYgHAfUd&w3s!SLh zril$5REr~M4kx583L~o=vhQ$Z?b^3Kxg}ql8Zm;yVE+^q8l;2Z)iL=7gn>gfJfVOt zVxbuVVpBR?4CufsS0yDYW8tDz;E zL%mX|Yyd>wY+LpTq#|5YG z#-YbS6iK|Pklp#zMMW``3~VI&5r$nqx&$QlqI_?4Yk*c8M~3(MExs7N$c1!eU`< z6BHkwfFLkmP#|KZu)-mJ#(Q}EPR*(diI2AlNXEvB1R)^GC>BqN*XArxi-lh0;|Cl@ zPH8O#w>&`)J~^AddgF_%Q9=hCF%X_;fxsC(-QACp$7@=2$*c zvuaNa1r4jGBDB|*wbHTEla$a~>1*G;fnIuJ8CdQ#qXAWgklv|TzOV9x1c9-jqLCC07jk5nK#dv`Av$te6CHo>aGEf>2^yB7q8VUPn7Ydvo>eMU6sqDqOg+WJ290Wo z(!^15YK-aB*;S_QVoeH_9Hc{BOA3dBXx3^d9LHSpwa$JI>Ij7SSnGz($8XuZ`3*nl zb+)%K>pW(ELHYg=7Oyzf2NJG7Fm*cu<3PvA<#LO`Zod_YMbB_72NsK~tR<9|Fgw7& zKqm3tH3dP!U;`8d6@Ct6|brG987=HJ5tIHnryj zt?Q^#SD{KH8+AHhVuEz!pw?_CQWYjo5fBzK1P%*G3Q5Q`3CUcCqp&4dziRC=pdl?k1el*FH-LK)&^Gjj zBY>4{+A0l3xbw|V4WW-uZlR~=6zQpjCUuqoIzkcnFr7f%QZ}8TmZkyJ)R3ig3ZMmv zLBzqFo1&U&QK6*J;&mpq!7LuUSBl2B81&Yf9JI`ZO>;SyCIuz^7yC1;D~99X8r7g~ zXj?XKdBRUxy4w>JxXl(MS5MTqbk`M|CH3_o`z&S_xWMG5QmJ$igd~xf9teE8r>FZN zdKWTNhM;&P67lAddkkMywaf@#6IQK)XStKZFd#7aCKF`bVdJ87`AMUxsK)6}&vj9c zlcc6pl;Vj58G!49hYY336DLz+I!l3f5Z%05dJ8#PvTP}B*tC&qR)xB9Ox*U+r=~=y zNq6WM4=ttHYYG&^P^%Vv7qreXZ7DnkMIeWjpdRd+_vXAkdUL%!_3^)(pg^&WOr}$> zmMi5Z*a?{F(66?%ZMno{mEVc&K|7;aa$gcw@EN`N{7)b#S!9f7$S*Jn)ASp@(0{ie z{2Y`!YLC(9Ko%zu2a~YxG6sUL(gRHX0L57@ojxN)-}>}uYA@P!&BLu!u)^>`L4Xid z3S#7tQFQo0M^Gvn$KML3TSy5B|KLX$P=3(B!336pHgDMsv*%C&nX=cHb<*$#g-+fl zL%GfZE#6eZMKR)$LXx6pD9_pj6CHyKTiV^(J-Vc-g&*gHd5d%!U+ZTCNO5da@N86YfOoYP8 zI*m=Bj_+FtP#v2tJ-U%DI(#5?^pxn@e{@n$NoNQK-(*8WY@|_AbnwB4N=>wUhP}>8 zY-J}D52o|$>C>jufTk8IS4~7rfF79hTV}RWYnMqE9W#W!xNm|iAVMe=Gw>3B_F32jM{-v=o~_P1P^+%d0=IW_?g$Nnd4IcBE7)5A;W=)(0Dj zM441|-vuS{cb#}5*$nWvzlF4asbZ_e3P3_lP@!0*QE`WUddd(wX>t>pWkL7OD$t7d z8Ya-CnvFb|>%b3Lw9n+J$Tx)u*kmh(^lm{pBReEdX!4}Jx$po01V|5lsZiDE_E%e} z2F*Qf-zNH>qgtpjg!juB7sgYp0RCH+8V@R5;B!bam1^Pfze~x0e4AN*U!MG5js0+~ zRvQ6r4f|T9d{9%i6LAw#530_dx$YjA73U4qzv<{Gx7^-dTPr(^ccP-9r73gV!)vO~`s zIz-k;wXbDS{=L9h!v;6EP`06wdRFJyDo_xkTezu4bJzCJv>`#-Z%mX%4;W5QF6gAy zomEO23XK^QQT7~Q*!RuuinnfT_+)P`_lNp*_(Ics>2Tb|J5uhjh5K3(5g^< zU$;|!=Yu>X9EEkLfK6CxS+yZtN``?LTrdOlrGROlfYtOCR;Ar%fEv~sESYMDLfUbs zP0iBe7L6t~$H0oFaYn>annN)3R4nK)b1J>MI!_(>Dk!KR0#-}}G@^v!G^&(wZWx6x?3a;iP{DsnFw0mV%8}!e z^vD~blh>~a{6RRD>I;e2i_Mx1YZArjhjJA)B;)#lv&msfJQ`btxhS&_{GdKd-xV`JcUB>yM__`ZXgg`1}&S3&;0`?;3W*U2e0Alf}!D!p#z2{ zH0mx`8bfr=smYkC%Ek&pQ#1kpVbT1xW%wi59hg5CtOc7*febUV8h#RZYmu_ztCV<` zxv0O--{o3A4t!ZldDfS-SE)T8f}jLd06r>UJ|yD~VX~REOi~-bH;rwH&6urgDc7-b zyhsqLG-WdBqrgobV>$MLNa+u;8BN;KG&@{ofH|lF+?>y2ue*@lEG)UAR6z89rPJwy zF`(a<%jI#Nz#LJnme@@2-{atH&%>(gipS%xK)AQrLaPmoQA^B#1qC+Ynw9{V3EsxQ zRnv}&3&rbv$we?*!s^DPL2xy#ieOfksIOQo(>t$RyvH0UlDhSTS*}(9P#_F|3=>ii z7({o~qRn|h=`8=Y=L0z~RwT;-)e$bI0Nml3NPO_nVV_s5%6cPYd>Pi|6Ih5z2nm7( zXmL0($6O5mn5!W>u+Xeory)(Wgm$tnV`pozS=Ei6o}QU7d-vk?)lAg%Ij@Z3xo{JL zY`}3sQ)BjoXf$SrG$ALCS1ob)(YMZ$2~}8&e7S}|wu09|8T+`J3GJ%_{RL^wnzhth zEKxERB}=N;j@Sb4LmM_C-ZHt)4_qLG#TJ4A3;z~nG*&1Mhh-q3vY8dW-w}?Q2nVQn zz<`@HrAF=T?c~5jLP!$lbL%3NcZkcYk-04u+3H!H?VT(rwmjy}Om=^iN;wQup*f@c z2@&r&zg~|&*tUZXa2gvM^(Zb$hp&Lg*vfnhKRDtEVn0%Y{gY%Y%m*K=1&CiHCA1y^ z?!1Ky{1LeCsZsnt{tnYvt(#kE`SKOg1oF8MV#sr|RG1 zq~RdDUcn~LA3SMXd%-TC4^tsA2QGJ@k5qR$gWMm&QaFG_F#H%7sBi@sdHEf?Z%pCS zG&=0L#>t4VE+t1?Wz43-l_?63MCB5q`lJOB=P(;?vj%_-x2l+6m>f1;ci(ppm8w-4 zXF0yW{+%IY>Zq<&k3RW0<+{5h8xH`4XFjh5pJ@|VE0|^3q6zX_|-UAKb@_rc?J`2MN@C-cW3sCte2utEq2Y`;W~9{@#$z!XuOl!4X+Mu8j{!{slw7``Ol~p6#|Fm~%i)Pu zWKz&8VPQeJvi8q~AX~dCG<#hh6qG8dq&khnlLu5uYu2r$Wy{~9(WCdE4B))S+V?r| zcV}-G{pGGZ=!vJEl&S~c2|+>d02wYMP^#4EV*@lgcw~eWgBgEM+nLa1jkOrMTQXNk zZ8?h`U)YAsbWkbwO!9By_@P7EW@mPu@vGPZBb#x83oM@c6L(Aq607f5^ruaKi8MpDq z4(9O24~kLL=#b30?&=c0xOG+>6A?nf^36Bjpl_^PNeAw?KTX|x3PHnVhPjZ>)6!*2 z=(X9eQ(Idbac|^unf;V0eW7Dp5)nEufl~%Dw`hV0X8WxA8pXmAQv2D5dJBbv^^%4B z+bR&WtB|~$hx5Hwt<)AEiMgK7{SIYtsh{#${kb!*-it{_^ehM*uz2QN{5_X_1_P1m zmR6)aqUUy%-J2~yK^s{t+eT*C_Fy|}mUj}wKd`1l(*c?>JWfw6?gH{tktj4hXD{gj zP8>Qi&0i|!=5Tmc(J!A|iDesw+6oR*WulM;C0T!< zMFtGK`CQ|Ij(WX2g9RVFAXrEAU!*TW#t-d$xFyLE%|Rw~*tH*U(CD_eW52?;D_)6|e6VbtbPM@+XN zr%8&bP$C$hUH}d@g{Ms&M1Os4BgK*t$#zs(qhRhF&E^&XNElkOf=Oe6*ELJ{LAD34 zVagyhEQ%5k=8=2E=$LUSN$@5j-uLT5WnaZE&4O@EO967_0ve&N%K`3J%_V&n<8FKG zYGKvuGen<@)8P~Bf@v>UvAHr~Y}Vimom$TyDO)27SF-7BH5;>WTC<^>PMn;@>K1hS ztc{$arVs?_s18Tv@IR`2R#Z<=s_N&nWDgiG&SL0Nf)4|xpcD6s)5#Ol5Rget*|ZNP zT**{;8s&PzGNDy$@c>)9LFR7ks`SGAuIO_;Y9F*GcBKG!W%H`ONT}~c=v=5QR3jKQ zw3DX~i*lr*%2-I1REMu#K0U-d9n50L2vc`wk;V;*)2M8eR7g`E5+Gr z`aF}z;GhD+wg@vhC?e?W8Cg1fbOiC6O#=qRDQ@PSt4TnNVE2zK1HQWt>Jy$4{TCO-^v^Z#VNU;$E#Q-KkkemTeACNWfs$Zk7 zNoC_or78rmzO4+XZW4ERLV}sr^w_i(!87N*dg14wUtk*G?_vQOln&GAh9C_|hGed+ z47w^334@G{<8R@cKH6H*RC{3R38b2pXx2-kL(*T`!R=>&17an zV4;q#&b|1(X~VPHw+|o490*pqK@o6F2G|NiZt?L1Ro_&=9a}ju&55t>yiILg$SwmY z1mN!sS-R%^9G6Tpx|Dx{KC)Z}2MQK~LQR=4#UVtm;>@W7A2!Te!G-6qpr!CvWvm89 zmd~xs({=w`#UNw14c^rCXPIJI0U*XmWsA0;zb?}N+R zHLog_OXqT@9GEjrCjY%SL~UruY|dmFXSHtLbOfj%Opl_q^;T)G<^(mxHJMb9l#`F- zMBo2Pa@$+|9KA*mgJlvSibVnvnAE^JR85Yl$U|}r5@ad1f{d~TA%&hU`k2Z2VvRKN?^G{xI%~0LbDvJdL%`z)s*|CP6S=y~UJg-#= z2UP(-rr1D*u2mC&|7t#;+txQ%$dtWoZw|6|dM2Go+P3v%f3fcUAuLI+WE-;AcXxMv z)AdFsE5W#oiy3u9QFQ9Z_o6FL-&eoj#J!chMhz14mTgiBRpgBE?M=C|I;-r1_vlg}tf*G=N zZ)wH)?TZ@&FK?vF#)Lu95CaW{^Ok3m z6~AP??zjAWl?j2FaC`x*w^vu^1G6@{Z<&?i^*K{b1dZ6&YlVC>Sz)I<{BTVUGCqb5 zjy2P>Bhz%%A77vwpPc1QEF87%a-ofxh5!fPtq)yT@`oXu6|q?2VaLgxXd>*NI--Ss zbJ1ZmeeV%e9XOq8!wx1b9D{kXDO#K_UVLGWbLLN<)T@eqRV|nMwS`#<2F(jz+Nd5n zJX38tXk^eS)ohKcPJ+DS9~o$F)Z?m1!3zW0V2>g(5LnpI^yx~o!|_cJW-{oXOrGM1)5=yS}T#U z;W_cpEw?#e_}N3c8cp3^DdjJPuV5GzfL$*~qtW?qZ7F_XL^h-}MwpLtCBBlVO-?8@ zM&;6Km+qL|ML&6J9X+$GlQ#C0sm#2d2T7$_RHY?^Her&wz``%yoTsN2w$rLD6&lnS zr))$A;IZJZ6zRj53^q;AkCh$8{`J4ww6#U?%}Sx?9^q%bEwi>Vl1Q$3;MGN+PUSZ$ zGxi+jIt@b>lTlbu}`NrQWU;gD|suPX=+^&``1Pf4)&p6=G zO|!Z(7)z9vZ!R6VXLH1f>aJ2lrd(xn;*u;@$yWva=*f-r(84VckS(41)(zc6TfvA= z8G9vYibrL!@YZz~>BS{o2o<6}4;?zpt_IG|b zesHVXR&{PL6k7G@tmP*;8y71Fjmo;lkO@kza|_LxzntbTZ=9S!k~$MXL8*)6oF z4QYO;k5{|#elAv#!nNg;xpe74d(Z)+K<<`#Yd3=v!@6@$XW*%|)n|0oKB8Q%$S{%K z9@GNDkR6Z5Pb`(qhmM^vkP^ejxQkb>RFeis0lP*UyJ{2*$GH4SS+u#G{rH~HuBE&a za#!}r*xtin^pl81xcQZsGJ2?a-}g=xrDgvR^+$fiO!spKPnKEaWGa1fy|vrFE9|fL z3Jfr#9!}mcDjgF)J$97!m(PrL@A~W*aq7eY(jghDRuA3Y*WopURE6KZTqHt`0wyXu8Mnx@zn1)dO)?JrsY1ad$G_1|!ZsYO-j(`)jUP@hFIHQy_X5 zRZ!RNrq|t#_gyK5H#OJ+BQ)L@iuPW#75N>k)9LIl`F0bRA2?Lpb=m}LL_FXXs;L1v z=^s>BoaIC~Am97)jG@l&P8w}b8Jy;xy-x?W-c{&5$0&su4n>B>qVeLa-=8T&&l0yL z8}+-wuH}SScAx0J=Th;tBd72NB9YEyukKUk{eh~=v=1mKrk0$BOyjmYx`J0f8Rqp_?yK#FE*57jsTE~7;3B@~S zZ_FQSs{ysFgzPQ30$U{sANqEP+3uk0sTW^%yxk+4O4$vmg#OUNPIY}*`xQCW&sQb# z^UVA9e&5Dw2LOLZ#c5(y|aDGR#*s9xWchk?h*Mn?-U((epQ@z)MQy& z9FM22)ZWJpV0;aeUr1%L`y}G2S;L167DI;)5iqBg%J}{N&nIp7fE{vDiMTa##1JuN z)DQt;c{4QXSnjaaS8H~3p(o<;Ggx!Jc-Y>~hC442uyJ(O2YagR%(a_NrPNG1&Aab;r%T)Bj@*yIO`cgP z7Z>yWx%^Hz+gt4_ZR;j#hoe#cG=I)QI`f8q()06I(U>t~M6py-N~Oxlu~_8K2rzr-?X`52Y!nAairTL;q*!NpYMGkIT_l1wJ$GvYRWmM!l1!CQ!Mp2e83 zU*-$NGeNRGi@#0UvE3bgds@f}F8prBteP|76O!Y`?BTw&V43>z(oUM3DAE9}m2||G zg>_5l$jg3@SX0oQSA0?%)0niLnX~3&p-9BRHN1#x*kMS&qf(VNIu?m!iWO_=!4n2F z-TvKE-0b*6)KI0B?z;am`ob@sqI)kr4(am>U3|+->MqwL4`&2Jbl`ypI*S%9(!jVs z4qx;f;xZeT`zHL?8?{=s)<@<=aU>k$czu#-TKk`P;)%}8 z7hcfXJKE$2vxzia``M}Vxr4^h>A!iNmTYXJnb)62nY|7M>C`5^d+nd;+DGOq@tCns zp;(wh{oJCJTPspBk^Ff$7#2_c=oGU&?*V}nx+tt)DC|eRBhENrPoOPL1XV)@kbvm& zp1wR0lP6CRBSwsplfri+P*q(Rfslwr6Ki9!_*IzK;#O0jS$fm@!VY zKlB|p-?Lu890^X$RbIPA+;!1W{vgSR)w~fwwUFtx$B&;-7o6>u8qCR`*SaA!K* z@CEh#_d>64DbnBLg0()MQQwC(k%NI59h^#~p3yX|FHn)!QNMe6OG}H}kj=XO`;Oe+ zW&T?nsP9x?xrIr4|2lU zp-Ldy2ys*;6Yj)_aWpYZL698Admj2-}COQ7YScl$QSrtj#Xbc+B+7C z4EfI>tW#lvPXseLzE~>4L5W$(Fnp^3T2=h@$!VWZ6AfxLemp!(*@>G@@DlW8(n^-1N%AU5*NuEA;@n=ce@^|g-Q z42;3uIF_?_kZ>F=AAzC z$UfPPN5Z%F_V%96Z)y}x zCn$ZlzHhV3n*SNykKpTZ&qwWc=k@JMTgTfcOi=nDOd0)QQJ?I1#a*IaFDQ3R!lyGY ztn{&UdLT%Cx@dta=(4WNgEB*(Ln$IaKuMYC_CiCwlhZr z4UE1MA-FD+H8y!U$8GhHUTfL+2Y7c#v;0_-%zyQ z9(2A(+pT~2_EO$=CGeW+=gjI$)N;H+Rdwr}d9{14+>cECDlEBB01`HmQ(IAEVR7jz z00nI=Qc?O0ZEK*QF^>v|{9DKQPqTO*+)S3rr8|(aS?9SIkL_^l{o;LrdUu<|dsYSW zQ=_*@wjYG0$UY+A`M6Ocml+GQ>hGiSTas-Rh#Zv3cYBG&|7#$FfwNYw)vid!6aQeVk^@6vRUPV?_ar&x4jKA5wF=d8ZK5q# z;BU1eYn-DUD6QTh$IsQUhORB{E}GQVRVEk0!FnOPZ6R%b@o!Wubc&~!Y=$=Lwh;&% zS*cXpe5YHFt3F7I;y*$@v@Hdr)f<&?@LaA|k59(abC#`Z)8=iexmtHSbr&`gL@kWe)uny&8+ z8tt>D?R*Pl_GDamc;T8H9l!4w#c6+w^yDC_ZC*~xX20tG>4lZ5P3|9Ig=W#V4fF5$ z<2xj*P|(n;ma=Td$c9mOTzrIE1e2UW%IY8Ux6lQDc!mz0Fr1j_-_TW}o>GOn3nj*c z1;=%kxQt3nO%Hxo_EInXkz zQ}EGg;b3Smcezd{BQzu(p}`Gt@z|Tom1&~})2-)yf{M8AY(%A7pI;%ax@VRW2^&*^ z1Ky+^*nhmECP|hIM`MYripA0oet+&^=84l=jI~hXW4`|&9l7sFy8g@qWKUbuHJk!6 z$gUn!e{%0Eb?JsJ)Z7rK`Ab((t}LPIYFzu=P{?=<5&ZL(ZO!8raD5iQCGi2Q_5qz!{Ti?WQ)GkPe7TKQ+VQZvF{_)QD~= z^VW6KN!L71ryMkiesJO#$`wuLb2mM&EosXy08E=?T03^1v>n~@<9Ka2Yc~Xq!1-6* z^}@i3BR*^1F>{46bWnu)VWA`Teo>#>q_y5%$Gk&yqYtaH_ z!JK*O>ui!Jtuz59W;83vU1r9y>95M5|`rC%5P_Uz>>r#6`Ef;oSfFa$WYASM?uSwer<|9?W?^t7u0aGVrUK z=GsUocyHOP?pZReQEx2Wpswkt+M@?H!9GX1n2~Dz}un zvO!iz5y6z288Av6`>_M)&|^R4ZfR|GMh%LIFPwB_bnWt$`)=;+xxf|Lp0Px%9ga3nA1;>6`Il?~mtQy6y6dLzi32B& z^mdFGp(kUp#JC+TD)|6{l7Jx|i|&VOdV#Ba4x2Ga+OpWJ@mVax}OdA1cka_hHX;Ix`e-?nR&NyD=Z)SOCCG)(p{&N@O(HZ-Yv zGD?9&oU}xijA(|`P?D5TjDpD&tzFkf7oU3`-Fe^LWHgTSZf=GXTg5i#{=fZ&uKC5E zv_)^Np-?zHEDHKTQZ6~GFMsA^vYQ4Q8*OPO8_w*X&{#na3rkyr) z=L-Wcfy#0prMO%{m8E;;EdX9M{r72aF#|dyh&x zW3n-7NCXwW2Yo0Q7NKZV&1T~?cT`Ej)nKhQUPPG>J%p6aztHN2`79 z&wr<1{rmg5a`a%BrfQ2TBI2np7R#kW@YZCmiOs~qaJ)fkz;h;QP%Ipv zB=SFnnniD}@1i3ov``e65|M3y6xpYVEqVYM)zxhkx_#zC?)360+p-?+Ct-1}jc>K_ zmv~S=^RxSpqO@UoH>=hIvQ@kZ0=8V^p6?31xTHh&DID1tpdu$R z+u$uWYFgk05CRY2`u~Zs7W-(@PKP7?N&P5&?69wG+?+o&6>-#zY5{Zri~p@QQPK4= zAbbY_*dgFjhT$V|+S=RcUHvRy;KoEUd1tj!xr%S9M*Y*x*$?)E8C}(WS*(<~*HrVn z8-7W`nqaI~$v=${Gv`YHR5#%|mj?s-63|RBHNeyUFxlI2<15_xl#2STMz-w#X50W4Vph)t4k|?rp zFti|*O3w}iLW==J=JN$!2?j&s>aXp?+aA(1p-^aMC=@K=LqZ2${|$8H@c&aL?E8_pfbfX}MLBB>p@YjFiHm=*$l_&mPn?!GM3J&*v@D zfa8Q1Xp)$!s>~50L045Ti$r3_)|-i;V5;KL$k~b`C{;RFJZBrv-NwfTX`VnJQltg( zq2}2GgCC7XX8Qf!LQQCD8V3&>pPTeJ8jWv4?Bj7ix3BTdz&W6nNrpqgKKI>dp>9C$kj}MgD^LXQ-Ik59Ez&4FtYlc7devHiNFqqQV**nyw$h7(pUUn25&y z{&rdiH7VVjilU;)jh#_%ra!#x;wlY?LM>j8C+7~Vy_3P_cp(;zuS0Dk4MA<=8XbXO z51OmVfk2@0&etQ5o4&-=Iz#e$hVqT`AL&HmcOtDsLC|+H$QC#r3QNS3$9(`+DA$Cs zSnLW}Q3i0$POeLrWfj44@M9lpo!wZZ^qJ1$eSuMyWiit< z1$V$DoB$&ljb78&*Y_*N7?}cV$gc)8S%zUS(=h&#OvLACnm)<0ZEnW!qU=a0EFvqu zG!l*8@9}t-=(@H9->3a-?Ms=BD!99l50Pmo2XkEy-0Bp-<{~HMSy6{@Xi4!I@PM$o;J8al6s8lNL zJ-xld`}_MZ#h6xuZCel9w*4W_`FA*gypL!ke5veG@^y!eK|vOaL=B(U8-IuI5ZzNM4qCssM7(aGg8Lx}ET9aIJIxLF4C6no&4MkHtWF(nZB5Dsa5sw|EYuXEiQkiRT zfzHtxXndIoC^RNwo6~G&moY$iU@n)_6%3IFgMm!BR9aA~RMw+Mo$22#%d-Ta3Kk(aX*>Q=Wa*ML&9Tz zs9y$!hObDB7DSOHZikv{Dv;oa2poYS`^p4Sa#v%G{1e&W3g!1!Jl=3$C>ToAP1?Q| z8i>bZNB9DxBv$?+l?k%5lqD6oJ(!ouO`oS_6S_PNHPl|`xq z%@E-6Tt1&aMwBEIZ97-ZBH}_^Y5cv4puo)WX*h6F156tkVToka@_7PKEmoktFDJaT zx<`EC<<){3iann1&z!0o#=g`#9B+mEz9f^xwG9C|cJVP&SW7xC1pG3XcrBTJ16FR@ z25+osgB6>*p<>xw)+9V@x@HHtNeG8P3Wr0R4MUrX7^pN9wCPYVRT#^Wt!O0j(@Zw| zRU9OAPtl&Ex~2g%Ed~ME0~a1U6+U+AOqg@P{ty~I3ZtG)X!Q~5^lbri;{q_tS@8N) zcKvO0%^U7|RcUNY9?{<3K995+%H_WBxVTwKCE{22^kskh_iNA5EtHGnH@cNog`=-0*$wgB{A@csQP{_CMJ6G1B6@0#MqN>@KWHVV| z=9m#e%qIzX%>be05P-yZFnkSy+B6PEPZ|xU&Kd?M?AHLftOm=rwgU|YnrB=?Tu>}@ z#-;}RfsMMMEpf-r{(mPpF8H&Nr|}{He7sOB#&C{p8G(z%BpeY2*PMG8{OK#F!bB7v zefSYzH5`VlUlfOspaCkS&Sk(hJP85(raPWnZC-KH{qpACG9(kR?{;-}{V#Jkl6^I} zB&-6Om-S=E3?Ki-nyoXQetkWgF@6LaKP)Dcs~RZD7F4%>JV6iGz6P*DNf;JFo?&Ja zG>60R%F@kHHg!-q5y%7!F*Pob(|tbgJ=JQp$Hj*1|CQj-ia|HS_IkYE$rlP|k%B=_ zTqZcgq=!)02m<{^@DshQB|r zFxj7t$3hqO^!D6}>U=10Is#!8B>L`eOsDO(-r}+MJiAyxvuw^uOQM9@L+{a2~5Z^&M7Pdz2 z>%dVBocl;5n_dh@q9ccp8Lnwn?pYB()sRXbACDz9I^Qc!JV@`p<636S`vcPo?aUx9 z!qAw8zPMqUthoLeR-ONIw&;)7vdP0!e2f(Iy71c!MW#&0=w)^0{{PL5R4zn9q338o zkSaEi`C~pDm|tFT468hT9V;w-nCWJjRc({$dWBVSVD(}T%fI{=R(|LjcJDXOFq>n3 z98igk8$Ie4GrlSB=I+inQ;jQfTTfTt8ljPSbOCnz=p-{Bj@AJp^^>yx56Gi{U zW3f*VZ-M-lA<8meQ8On`V*OA3jIj;(qOfR8H*6e8oe!dsS;um7Z(^PIeSzKh$)imC z5+*AFd+eB&t7|C;!C+90#iEa)CexCM#1(EfptP@q1_c;WspKu;V35jTF03)e>0~O} zGP>mjy5HznH_>SjWqu~5t z2qot4*)gU66jc#@e&2Ew8cwqZP=IE%Bw1rT$i}6k?7=&JPt*?6kipPV*->WK$0xc~q|DXW{9wZIWdrsX)W{W5W7}h-OW;a2L zp-@vK|B%`nko|_SEhBG5w}~YKKKt*VKhr8a@Z&KdyMVmNAZ+*213n(P^yxi7&FYHFMc@ zS6#|Tn|$+2SL3L?$to-U$tq8LlWn@~)9mbnCh;5=oPf>oL~@k-ojgYu1B4eTPM!;` zM*hA)AoMCt&|bdr2}BJu6*U5%WYmbdBkYOg7}c+xkU-~_O2+?NQoKw?y6HFnb*ia7 z{9RUE@hFN+g)Mty9vd?(&5k~3I-B?G-K_8R+u7ECe4YLIix;v{i4b2v4GqnIBOx6M zm~M}1992~y911)`7k$pb__i-lwlyW*o~AZpI?aWSg}R(Sb#rXvQN z`_oU`jp$hTLkTP0&^Y}+S?lnN3I+X>RFB6>1pMrkTd%V7_g%qypZgip^en5O=hUx} ziY~AxZv8$BVTAnfspIX&ppOq~y0Pg_#4z641l3|(7z8}ot*^46uJVBj^iY+5N2n9B zyVQ)KBj@d}50gLo8+5Qsjy=xqt%)R+r4A=~eev5}q8E#FE z`-O_(0pG+U5fns`tFXX>6uVU}!4XFu2s8Jaz~(JqC-j?=o=&B%?a%gIlFjC-uE3ZS zEq4L%X>LT^uA4uBA`SSKnSxl$mD)R?I2MnMNAGSNp5MU9xXETvEEdKpiaOo>8@+~c zIVNx3w)KHPzfSip6A`*O_r%0s14zVXnv7i!~gPD_x@RsW-l}fA@B;C_DS5Tl_Dk*rba=jL+ zov%wM&)#ADDSgz_)zh;Ah5WK~Dv6jGgm3)l*X)*G{v0u(!hM7b!zP!$sw{E#oiUJw24IZ;wa?g-?I!tML1qe~k+Y1qUO*=wyN%LR!cZ zfRImwcq9aRwFHKt?^WEfSN(sQ$O;8%@D@cg&nyL$U?Wf@!Q=D7*0l@a$YV|ip<00l zesC$Yq(X4x9nahUoVQ%^1)3&e(2_$J*gn5lc$)=4xPsi?74;@#uMDar_2F;Q$%b7M zIq=&!_iqvKT53r&5)PKD)_%!w5N`a!DZ()ajDY)}SPoyh<_i>`fh#}zc`&L5NNBbg zb>t8oEzXB_F9X)SDmat^7Yqix{rLiv4HKi823RO09vp+-wpDQ4NoPUQr@%wM{~R=r zY{Hcrfd3iSC@44H3->SR932RTQWYn-C%T%47PpP=Xcs=7Si>;_Wq=`1rh2@9MB)ps z8Dne@4{uEyV!(DAvc;S5;fx&x2az!NgF&%B-#?(G2>&2Pv8$H-$&jl1ZoACD7}k`AD?fh?MB^d2;Nr`mlqrE^RG_GV(2sE}90e7}7K6ikFMDKfnkw#M z_ya+5n_=OyZOlSD%{mu?nb`^#oc9UPvPF347oUdaF-=e%ek@ccoCTgyQ^en1f4+I_ zlt@ce7yp68A+W*JN{K)*;-clQnQ#P0;I>{21cDpO<%zWW{tk}KW3HIqG1~-e$+V}|D_V{;=gC>k&>EE#s%9dV#7v z#`6grbjX3LRi8r<@VY6C$I&%LB9Rwd!j9gn5V&t@9P!Dq5xTMb{88&{Y;0_tme1$+L-1+h>XRCWHQ9<+mC=nqTi5izluP9z zPM!pVRS>ljTpLXrO)P}MA+>pU^Jol-M7=(5%;)#Uygpwn5)CKtH4lDAfhOH{+%!rV zay6Vlq#vmd47>IuLa=LAN)@_hu33`FB;ph4oMN%qiJu`aNKeL7$9pCF z{$G6WVmS50!)!A;P4pxuQ<4c%&N9k>35x5U18;sUrd(M{ zB~!mF7IVKd&ApoyxG$orGBY512*)Jej#{{&Vw$PhWpGlyv#zEn7A|2~HO)16^_jC;L$hik^^8Cv61V zBF?O#NU|b<`19pUSA3=Bmeb_pd%cl(bW&4OzRSSi}B2Cv9X_e~ow$`>ciiP69giV+<{&ql~5m;XoFBbv<#@l*R03ydrbQL5AQ3LK{>d+bu-}` z9|d`NHaLEmi!J@6*cn+c^;Qz>$f3H}~UyqtbZ~^vS#WwpyaBA)+ zUc46{Zoz?0<7C;CgsmtZ_{(+Y!9@q9p*r>$@J%|6r;6G{vf_l=dN+7VORc}%a=Y}y zzr51bm+haN>FdrmG&W9b7}30>tQ9@7NO>!gKmtIf11*&3_4rnimcgGNZQ|sJvdCRo zJWSF+WNPS!pV=u6rg@=Ynoa*uk|@K_Gz<}+642quAAhDZUnn->LSQtZ^gE2S9Kto! zYD%S~{bJS1)n5(-e8EIGu=s{AUoh?yA3w*a$YT^wd?bIb1u8Bf)HEyp1Beqw^V=&-b_Pt7QCr8BvvVU8nkQ@{Ep0BF~g1QNjU-7nf{? z*;B{ED76=KBt*UO(VPIGEDWXu!H`1Y?5QKoO8chp@(taG36l6fmTj@7;mwy;wMqzy zLZ--yK&cie6oRBEh=#;8PI(Nc(LzK@by~#nP=uOr2|w`t^cjIZg8-c0^Uq5%7bpxP zINV5Q-n7mGkJST)znN0unrDAbIG8%mNE1x}c&Xu3~ zh@p8BuYLl&?Q>ycdmnu4`;Wtt);_dMG8$gP@+y8Y5{rGKzd!pZ z3NSbO`(*O=wXcO2KOco>4u%FM5mr%ARTL@~ELgq;j-D|ZQfw3GY6O(n2uFAbcE~{l zj;eU*0WC(`<~5@?bQDH)b@trV)YKrTKIKGQ{}u^^qj4mli9|uNDeXd4R75=_Br+GQ z`hz^2!RIo^Li8Pjhx42Z1m2ToB27ga4Fw2&8j*3biu*Sb6~U8Ar>+_TM$126?C<|y zrj>tw%~c<{(71}<9#6P!)|Z;RB&qD8*rkYh=ju*FP6$toCXW&b+I>Ff#qn^PdRWD z1oSmvA;YW$n*ki&4}~WLvf`Bvnb}~iUA6px0`sN9Vc$&27A7EdOA{xEw9aYrWiCLD z20^G?6AD)&@#llWGbl*4_tYNmC^TF!1P2?rjygSaOrZNW{8^!DnC#+@T{NRP?zwL2 znAGv#`_7k8lSV{ubP{*)NN7Y1@Rrv-1)kPtVQXg*F8Tf=@cPC+sud%UgmF$=PB%6# z?(gqEMXOf9B|+K$OThsrEFf2_)lw`Pdjo~$(sH#dQan%f2ZgO2{jj;c45!Z?4pMP5 z#wk$i_>#O(joyUR9|Tef(XRB^^Il(ekm~hKuxtr^Vn+i=vLhg}D?Hn47e~X?4v&Wp z@4)l=_saF(<7yvAfXEyOhUl-(YYel|i zp_tzkk0-Vv?{y|v1~MWR_I(MAS35Mx;P6X!?A< z(=wUNT5yXP_w}R=k#s{|8Y7j;URboD2Xv$_PMX;SX0a7m zpczzu3^uNM5x#is*P*)~g-lime>$L4mbRPZdcheK5XIFrp6!m>-*zTA;sDkWc}=@8 zV5&q{Shjam*}xz(0={@Pvan*^TG-aQ6^=UmaKJDFXnl*p*ZBgp_Y~n%H$Dolug@a8 zjx-M?9$TiUV!#uB^W^UC?z!M_RzsqgYRKfNI$VS;n6~v&Q*+bwQn9=rx-AB}M3UDR zgoP_wLGg%i#LPIlV_TrLdmDV_E8m88RPBCm$cbN(20*^YF;miZ8fSaqaSlg7Jk%uv zRDA43Q-y9jcoB?JfK>6Q4*tRKQBaCiu3=>UJHUlT1P990;+Qop!v-SYVvSyAoNED( zKLkrxtb|N=2OKpc3UcrB(A!gjtAG42n7_6Uf_^VA8MjOuyaAt(ZcJahZENct_}L-V z;$%oAI1}JQlg_kiG8h!Ln8pBh4YO zY!d{RmvMwf9MBH+LQ~T;9uyWI2@HnieO|f`a=}qiP$UI;6j`amGbD&A2iYhy+_Q4r zY?0#{Ca~?aOTEx=J7v3q0}hEO*vQlbe6ZxrWgzCZz?g;x_}b6!g}JLU5cY?G2p|fj z_yd0AYa-XJTeJ43HUc*{^>paW)lfQ_n(z?tqXhI3!-hYUFXqlby=^MKh-fKD#`qPO z(42;~t=%96aiE#*YMDVn5fy0%VW|hfBq%C+D?U&$4#ovb6~UwU5L0;|h+d4(i=UH4 zK0Fp`3Jtj>O|zg<)uDqAn5#idoN&`H0U2TF$!4LoJrAvIdFbmepa9_O zs6{Gz9x#{+re=etYj}_lX$azV1i=Ou8cMf75|6)MqoFq}C{;@69U>!MuAuV5@PVvu zE@t{K+PZb?E8s-o%^@Z;LsxL>H4nP77&x4CA%>lPf~dI#O_D8BU4X4{!i<`t5MMJO zIH+Yrg|G{*Th7m*1|i|``*0dia8MvdqFsVkk+wLSP;N~PC$leZ1l8HYoRR`1y%Omvu^q7D|>pn`l);duiqH5^Rt%(Ky-dg zu-GnSIl3_|UeS`ZX17fdH|Om+i_jYAa%iU2cX}JmDzKtfGr-q8cbd zG;G6|1V9j_Yw5aPc=FX&*ovN!g>cx?$|yW#D3W>79J6I|jf2k(=bnP8HVG2~7`znG z)~%}-y|(E0Waeu95O;m3ajZEC2Pf@g58mWGER=#vRM{>(tO4?O1@v6IP6OyccT{U0 z+0-vz!#Jt z6hhGKRUKZ2J59`WwH;BX6Txr@niU!H8bBw81XgY=!{~4oW{eLa?wSZsy|@`(Sl$CU zMhvC^ib)BquFLM88!^hZ%Qo|}9g1ucgKnD5uF$AdKEA6GO(jF8V z3MH^uEOrpCuH!KhJ_Yf{He^35br0OG2n;;(vS)=*xH(dT#@s} zsHqI69h>b+pA%&t@WALg5I+e4pMR=W(f(E}7W2E1raB-rw98I1l{_6a<-r)l)lr-E z@IHcjD4-?pDWM@ynoK7Dg0YoP(FK$c6T~9%t!mP9T5oU9^16ice|O`VZRqiwgP{rf zc60ml9&m(7y>SgeEzl~6F^--f!WE~CgT~=Wc>d*XczkIY0Exr6pMi|#LZHb<0 zF{WWSj2kr$0do}D+?}nb2EgbybRz$j)2I8m^l&T(h{Pi3LCUbE50ZAAc z7U9;%*TWmFx+B=k(KzI~vmKQHS3DvW<;9zun?KUo+4(znLBAVQ#f6522N&h} zlzoChTo~0d`nJ|>TQA4Iu|d5#v^5STWV42b^sn05+W#BvJ7rp0_|HJ$Nnku^5bg3AAPm%U03RXJR z0J%&Svbh`wx|GF89go&^R-v;a2eT)}VD?xQ^8Hm<-$tAIA9YUetlybRzJ4L>0)d;SZKp-fNkrnk`UDvw#EWN`8)q32G88iBL*{gh+noEjK z#??Snns5RQ3kiZ|i4YblaLuVB;3EeQ0}=U{$6w39eQ)HDT@Iq4s01>2NJ2%=i((W< z9)1)|9yb9&D&qp;M7o86j6kUSEm9jKR9_V4vN;ZXDelAs88-Lip{u74 zW{rr#K_mU3*gCwq74Z}jzbYkak(RUV0iuvO>8t`}8Oo~Cj6Bdo{ki_mchU5c_fRBl zgX4V*Vx&~9R}QT=N;E^GeFP5HorY;-b_E{1o7?+Z9>XmKmHB!+S6~#E<5agkdH}Cf z(A=OIm$x@F@9gy<;dZ!&6N7HJ?an3CG8qV861LGwHZ=QnxcBZ3{NcSrOlJzoP!$ROUE^!Ko=ozfQ!j$!Z`RGU4D}W&>sq%u`6?f zi&H9zL=&534msWH%VsTPWGaI+0RzGyPc9uWhr-+(^N19vURK*^#8 z+r-wQsX%81%_L`g0~mdtHFGux617Qu*Mo+?OC(+tzhl4srgCzS)&P-u%%BDVet2|w zC#-2JgN=mX5tE|u?K8*1l!yt1vc}nHM}vvn-K^>s6sx94uSH|=vxumCx9&Kd3uQ0v z1j2A&g(hq!yvtR(PX&k6uVLE8PByaT8Cd9Lbzr<`qq}<9zwxFZ9E;B^Xxgk}#)aU# z>BGgbQ4AHJ5a>v(*$9A#1#Gzbm`3>4$EU)mkO{f|3ivz{%w3*=Rb9A(8Io`~1vWBB zM7EL8X-Lpb9ybZ1{vbCSTmt~x{t#+=anv0HGvK)DgwiIA83(~Yh_0E(_!(7gpjVtn z!F^?O3Pb@$(Va2O1OI(YllY0lo0wNL4jA4t z;_y0C{f^EJ#jp@JZgBU1uoW`>+KnxP|Kf!@51U{->$!y?camBFawp=tz> z02D|w!SgG+skIWCCl7C*!iB~HPWuySIBx8?dTY4LOlYklBIFN18UvMWot<2^oH&#P zUKGZq$n~sm_rb(Q2?}^l5ghIRIwArmObwwMU*T?j8UvmL;JsEJDFLsQ%l6CnWXh-G z`OK>~^L74$SZj~MtvH%rqzb<07sZot%;lQQfKy#TO&2^l0`c#2$By@1aOeb4bv}xd zei0%3nie9NvMf_a(0pt<-C!09g$0J8=Vg5wonKm4JtSa;u zst`fGKb4k27!d;AMjHc-l{~`_@=g{=(lJ=kuEW}18<}7?SZt-{=zuV*~6x2<^cHOXoDZuFtN%jbjj7 z(n<}wr80afh}**VJ+UX+yu9Cn!_N>ozI#%s)VDi3+b0TjybBJTS|}8+!O6P@V@SQI zV&^N0^b9_K9tCOzPORx(B&R(v$T=<^6laWY2!dWU5CD1sAp=f61$jz1a0n^|nGOv8v$Wr&5sM~yR`P0^?cJ5gz#CwqE&{#ZXZLsf9-Dn%3m zs;oR4<4X_s_4SRjEN5F3XLZ{q0yeQ)tx)ptS-2|BLYLCUmGO$t=bMK@^f12vHPlEN zy6uyO2ZTUlkQTIow6M)Vu}qG%;MVfuz}n=H(BBYGnusmdwG|O>5Wj-&ML=v)@)d$) z9%Lli4zUF}SM{8HEfuR)ocFHGm3vQK7P`ayTujs8zhfX^mhsm*3OaNZ8K8pX@1qt; zjhX{g-{cTzFhj+(Czse+LKViGN05AHOuwYWi4$eEyORhRijy(6YW$P+aVySgEj zYG$^69ul7uDYvIwDS=amPRoE3O}vVbDjIMgCK3t#Pj_d}r^qb3X6}8rReP$< z37x1~DwSyUt$!PLu$~yKHCZ%KTQQ{F$D;s!zg#MPG!pPKB!xvDP3Bc=b;`}1aKVj2 z5*bZNRXmsJ070|{J)qjj9$ zH!wU=a@b;U(@Y1vG`H`8VDo^s!zi0#BphUwN^x>B5&uTHQl5yM69Qdk(k3Y`|M~VE zHaN#6dfa^;_Sg}NhPJn{GKlgn=CnaWhNjI&O)Jp>7-qtpUrF; z-{UMGV!7=>2D;7x;p2ekkZ@V#J(gOrCk02KiNYY~T=)5|W*#N7FMjh)czwwdo^xaE#x5+iiJJT3i;zVP zR?|2{F4FHt+)LdviUr( zWFUTLK%2Z180G-jLh=$>Xs2f~i~Hcr;P1 zlq$bwI}m~&G{F(k{ccCM`@~c#xsdXHQN7D^hD?ub z4{{`K=ZJxO-nmVnRVs4;IxLDrBgUeLF*Xg$HC4K!5j2fxc;2#PbL(dK(M>;wegvKL zS(}_cw?6$X(&K6a5>a#GeW%Pj7(%mca zPT-bJZvaJkvRBcP%|X-YDJ1iW6+A8ijL+4|Hi00RxPocRv&p!qBP(_P{}?A zo`hFOD~ycGkdB9-HCqA2NBBZ=+>08ZB-DSxlu2W!@>g6qEXEjaF&}pN!{e zdR)8Wm?|zTZVZjgux-_9ulPB#wvKi=6$wK=(@z@MK%l(}anGu9vHW7WR9=X}vIITX zdVnUnIZS)J25YahtF5~b&e>He6$_76d`yjj{^jNUjxg992#m!yBoTAW%w;lZk0*Fh zrldELLLytKuym@s>E7&ahlD`D)4{514t2Uyyg z>5*NJhKljZr93?N(0%ay^H0O*QKNYLDG&^CrGsQ7Y(wvIju)83nw1MLLnm?lSXoO{z{ok>%bP|!WHB;hYOQke>dxNZjU}h~?M+XWKjYJOb-=Nou>21cY@Yyx>v^T+^72#v$RcT+M^)!S1h^v@Et}x_UpJ zcl#mN-6SXXoePSS%+Fw#VrxSk9RE8lWY>XXSC)7x1=$D>O;D*+T-23C#uWW9+pz#V z{nD~)F(HeCN#aOsOW=Q#NyB*1RQWA9>44#2APGr%1x{%Sc~%aWqt_kC%yOK92PReYb00NkwVyn>UuXV_%ANbrjl*ngM`(;G25Z|c0v zn9&8;bwc9;eoi6S&U0R{hcKpGHK9<^`cc!-(r{YiI%C5f3UadC@!MyWdP8YTzPd73 zBD@&*JZfuCe+3Ff4MK{Cdq{?8IZIA(qf27#6C#g8fuKP!tU%i~4UV21gEu#XVZr7+ zgn|erQDcd=G{Avyt>Y4O0^UpHW>aCG==8mz9z24Z6=>JUI@cSb&xzLH=Q(b|bE)EY zj8w~T&dl+kBV!zmhpD*|7hI8vZXnbZ8eVG!T=O_3#hmkDnOq)cM$Mxa%21Fk7=opo zLvk<2T4q2v6zI#AD;RsS#6XgWJajB13Jh9&LMc&6pk1PQ#L^|!aDx138iGDA0@_~q z#4!_L+ug6h){+JRpVu)d6k>F9f5}8PdW_CM2gcg^bA{!a zv+c#Zt$5h0w;{b9A9^W$nk9UELPIz*HYHL)fxxr%$TgM(x8l#WxU~#Df{A#jXs$Ap z?4>XmKdb@XT+ZMq3=VGH}8cy!z6`GepYKy^Vq_ zAg-~gcOMFZY82tJ!$!aX&0Z)~G-yagK$R>vMBp;LHM7J`lN%;6L=2MJprcoY*K0q% zrcdn3S${7T^RMg;*ZMzAaHuDv4zlOWn8HTQ8kxYk(x~v4gH_S3j&u^&g}M;8gCnRN ziRw|Hr!Nm_G+q0RNWtpOz0gzColX?ipxGgzvFc+$-26CzcOceeJ52+u8W1K^g}6mW z;9bVZeNr;vzm9Bz1Bd&e(4U8RB8uiw;kh{+*VKf^t_cm}thPzD>IU$~^qt*h3!Yxt zC-n7Kep0QJH@k^kL(Wv~YrzqBatxjuwL1xfMxx3-=8$noTM-R1AWk&9Rwdw?lUnAR zQ~f|j%LG-G`Rjc>MQDi1FndA@y1PrTv8RAINg@Q}2%23B1=s`0IW_GtC```5T=tlL zr9$SXTtv6q3s)Y~0F&Y(nwT=g;sNB5d_-IG;=sYcq$@ZsrXiuy(N0y!#ilTYAhQ)c zW$~pog+AnIzJn}xxvmg%yKxfsWy{fhC^*u9dU)%>Ul({pnAu3V=PSB()r=;em<|b! zwHKYNumNo|h>aXm<)$joB>BD0M)uvAGWZd{95N{dVbnyMyDN}K{A4hP(RG`e@aj(B zSj2RKk1mh~H+rq3*Q23|s3JL;QY<)cMhY%GFaaUNUB#RMu|x<`Ngo1d^t5bodt5}C z&2$gTF;kSET%klT9dVoFv!7ehF0Rjs&*w9Je?~1Q*InP+j@7=pVSy<8lp&BcKTirI3`f642q8H zfJmI%;cN%s1SfpF_`j>OfWb!%PR7YTaC8!0Ue^t;Y{|h^1fvK^I4A~6w34L(jph{3 zI<7P_G2rotFd?eI!K34F;HVfx5d2n3MU*uW8qxts#XZ~<=@gEuMZRm?4FzZ|$Ez|- zYS@HkiWUN59CFw5T2-Ju8w9~Wp|QDf)YdIqH`8Z{AXOA)1U}vm$4a0SQe=|1AfL1h zDGLksaD#!JIxzddG}(;}4HqI__(Gvrm`&Mh1O4)76ELqY=k@s>%H?uj@cF!BP$9gS z%NG1o8w2cHr;ZmqVhMQ~A9xjsw=q#v5do;^_A;)ukgXNHi31%cC}TZa(4nKZ0>zR6 zevb_SG-XtGwK=21+HMWHvIXcX8&J@x6PL*Q@2H5Wf&mGV5kHJccwt=12gAcYPAZm> z|Iv`UB%UVS5JC@1cESxX80D|UrZ|pr-EefAxWH%_3a30Fy^80kGMKj|3%`793o$-o zQ$vG+i|FW{?w+1lEOtjWo81p_P>?6Zi@co+4u+-N9;0|Add?6mTb7**A zVE5+d*1+5~dGM){SuL04#&qL`Xf$fBSg~TFi{b1#;o#<;N{*VFn*M|#k*hGky4O6g zy@hco+-*c7kz-B6xVxfhOcVwLrpAamiEenGPNwch%QdXKw`UFtjVXwhY`O02oRMMP zIz)8rklTBP)q@<~J%_QurN^Cb=A=weUt!`_f+3a1wFq03kS{5fsf7upUsz5!gEoob z-j9h|1z#^w&acgR7ZTQZ%nJ?4AVh+Gj(wQv>`QOE98Znwskz@Z!q4%fEM9@C>n0Z< z8-HwlR~7#GN;eQKgg8q?uh7cp^NI1}#wT$BnP`^yJ`zru3@>~pjY@?ftXL|~NvF~s zg<}47cdV`d1i>L3WgvbD;-EcVs+406?sY9LI@KiB3L`MOy}u2~r>)@jxsf zgU9D_yf9*lspLj<+qj|mQ_&QKLS9HjB}m0Qkc{GUpTtcd0bQ?RRJ$6w^T>(G95bTpO40Bf%l|xQaq!>4a}6 z%5TG>Hl5x0=xS#2OmyHTvPuPH7H5tj)i4tJa@}AXRgif#2is06D2bgyYvFKsgWvDF zth2M@CD_Bnp|q!kW>|CciG_Urxk9m+*imSBy1uONL8XCij>qA&gCjD6|%B z!7EXVa9JSJI5HZ9&zyA#eDvf4U|7h8QlSjp$PtlXQ)h}D!dJXSw5C;YjD^d5KHro0 zxE0>#)+T$y9p_P8s&GVN>*rNXBac~k?XRO{i0q}V4~PxYVLuMi!SJ!;_Jh&GeB5h7 z+aYXf%fJ_Yct1S!#s<^~DiVOU$WWu)_hu`4H)EIwbW~3kIISriQ>9S774799)r4fw zt>$}l*YCB!*mnCcaKS>n!3Ovs7dWGy1zu&zSrcR7I^DgcWeZ3~!`NT5#@!y|@ z&V11czS^w5F}Fmm1dGLj5{<=gL8@cA!AoBE%$AFLMB~(&0wEZlU8$76MGcVz4ji0$ zQ&G#9PPqb{cf>^a>$PXV`Nxcda5M&bXf&ee(Fjy+XhiPr;0cZJ!1K$@T%{^SVzJl4 z!Qg*w=_{QZ6qzy^U3A^l_~wXieGT8jr`E~bW`jxX6xihLMJy-pmzxb2^Ee>{x7iuG zV3hnv_=X0DTykC$P9--KTe3wy@j@+k*m6S(WI}jWp*6rV^UwkhG1Odei|0>k_&q9$ z{JN}W{cV1`=!wLy(aVLKWN+X)yHu3!`Tpf>_KapB;~56x*b_nbq``|(|HJlcgcA-J z51re3VRc7_V==0Tum=q%2VRz8G$2p*D7xtFdrIr}Y6dRG_4$K^k)cNW-R5-3*!<3G8A!$QvGm zb<0=U7k=|^;*!>WJ&}wapXu#;2}eK)_ydOOi_DL*?4e&devBCq%d#Y*S45rEWs`Rg zb@tqJyKErQO|9 z1U%3b3BZ&lKkSc`!1(4cgaarPRUHVtGs&r62Nzfm)IGV_$PpZTt{LD_W&8dWMe+Wn zeMTT0n%&vawv;B=>+#rLe`LN?%^&*cwHF!(oqUo~nQ=Ng0RgA?4w>W3YS6d51fFa+ zy!h${_~IWPfn{wyoD`%JwwWbHqcH_0h|&AtF`e>>gKSup5(Iaji-=*w5t=_7)+WK;wMmd>UethOc`4@BfViVU=0 zlozVp16$Uq!=GO2gg?w}g~yk7!J3YK#12(tjVT_*3v#(rLaMTgpX;w0C}c%=b6XCc zTG0&)He`Uh)umGrWV=m{S*U$2X&k4V2L{q7$V`!TBhHAtzQrAeedo(tL^Tq-vb(eW z32^gbwJ@RqEnjWx=(w|P+Z_@MrCcs` zH8(eHUDMio4r&@}d{YGDid7Db!R;w*LCrNrT!M=(AXz8?3jF@14*2!6n_(5kuFB{V zOYT;PP8Tk|IidrA1y(Dha8o%%-fM^ckSS^K`j!kVTGI=mKp2K&VAD2AJgt?|SZ!X8 zY`dM*3D+=A6Ku{~#&4e8BI|+pUyIq^>+3dT<+}yynqEpLVo#Jbt z`{dSQMH@c6`IDPAZT=H&E4{<#)n z_nAyM`@vUM$Aem*IV)<4zJ@U%`6ECEztq=_8WPQF6`g@X4$hi2PR#V=*~@FT9iL35 zmzT@M<$IC{+(QJQz2qo>+;KmDe-ti2zp_7eAi2y>*Hn&H&b zj)L>2rC{-EE39k(_LKzPu;ug0$Mp8}yaaEvgG#NVcr+4%fIobHuBYpqE01U~W;TdQ z6<2ydkew<8(Snf2giU!5{P@XD&|b0-1KCb#@O$9Q z*FX&Jd-y(By<#m?vKUF16p(!(m@}>cj+r>t{?ik4#dVoNzeiE_FO^E0_Y}t2Q_L|B zXa;<~zgMc-#kAbelTuEeGZxN1`CyoH>=_UuHnd|iJbV8GaMP{-gse{a{Rj{Pkxk)n z@WQT+w%1(VNB?&qoc6Zz2ci!cx!$usb@&KlR$5Z1PTZ!wsnE^P1qpuk>{eKbk#X{( zjQUm=?`iM^w~?f?RtVpmGkrK*G&2m7eY^w>! zzv0--a4--J1mp8NI@_n9?y|_KyWrHL;rQc^fF`7QN;rngm#&9<=dXpOTly$V054Ba zLc#EDg+lgnM9ajX4cT32>L-(viot+CjVp$l4X~M`hui=9;U`$(sqZn?yNGRfv)kCJ zdwyh%PKB8_7~Y7{^O*Zp$}Vt5yq#JkoOr;GvUK^uBedH-x*xmstdZ=l3n#EkXE$*J zqlywGOE6)uI{ZByPTZZ>7&C|a6PQnt*$+>f#O^$I4EyUx#n;BbkJF7l&9lP^uXR)cn8+h4FIFhg$ z8=Gdh-=hw7jKfz6--XWWyRScAn0(&hlkMMq@f2~|*fb~;PX?Brg=PX{Fh-fH_~NEj z&}4T&u}~47dwruWtMXrv`zdbMANJpXa8mhHDvTcg-SJezj0NjDrs|epO-Y3a#|RHE z>xK5B?zEU?(oQkVdv_vH(j}3TdkLQmGlu!t;vU=l^Za(T%kXSP&;QVJsqk(z&0D@0 zHJQ?1C|!Bp(c@BII%^E8NMi*dl;SmEAjCimjp15vdcuUW4jd=+_EqfH)@~NP-oV+4 zqWr5`t@gMJ(H@F|!v`cDjm9NKeKMEJ9(&Qz)2yFeb%GQPDIn~3JosA<0cs=7BgJWn~LgTnq~-=WeV>k6!pj3&nn~D zfvIG|9zANL9SH}dP21YVY{g#V5BSgP?QZ`Y#_5E2@SfhyjbbN4wOV;DnNA+DdP~RH zg=>4P{fCFeL}4`uKGZT8j^JJ=hH?adg15=7_O-(CQyRo|+p^Z8jjbr->iHNuTvaN+ zKf)uu4}xb!!_jfbyDiA}_os2FjgCw~+1yitBle#RjZp=R@JK*n3ari*kbm9nY?q2KRk(P)%4H#S=7REltv*w@!5ZfoyeiNTGp+Ln1` zu0Oj4T&DXyy2Cs>QdU(K2!zkj%9SbYeOWelNryP4ApoQ8^-wKkkxd>4lFtuT-&!y> zz6N3R=Kgo?O1S0Gg<=J%Y)!8Srohfmq2?);%I{ftc3W51c$7dO7(gCnMR!ko%Td!t z8JC?rLs{3FfuG&=5{zz2!M!(J3KI^P!4trxZHqA$1#su{E8!crJq;P8@%NiD71pd> zYni4Yp%-vZCewQ%fqu@z!VyR&6PIQ)*^i=d9;JHu&D|lG3s9~5 zgWIvq5u{o&7}Qd_@J4<4s5wEY$h)f2dsd*9`&m`1-l03G3B#@OjY5=%Z|dJXET_IF%Xz_CJ4Q);Okxmf4c8w`0wA|3;T~B z23MRs3)XJzw*K(wLWDyRrb_m-Tz`JW?w;d&5**;sZqY&$^~YR)|EG_cG19pC>Jya_ zjVTByDlA;l24`G4qUF=NKSf&~jK zRaK=(BzzJ^z@L)b#zu7;qSf+~cV{vNOa*C-Kp-#?C;LL2{3G!DXX25lZPV!X&V$W_Nf7b+A)Fot|5~sb&i>B-z)1&9fZu-h1V|;K zNN5{y+x?5pul?g`IT}r`H1yK`rEGeo*xhNs?G4<~*5Za96$1i1Q)S@6^QUWDgYwc+(rzZl8}mv|HDS+nNA zlqpl#-FM$D;KXjjiQI_yew@EG80lVOn8uT6h?r{+Gk0KaN<+=a6I16 zMgj1}N{PP-CSoaD;FOV74BI|qcHdgxIYuKlcoyiHZ2!c}LW@Jf3v%m|T@LuMB z3kJgMlv7S~s_Up_04fN+6Ed|U5>@8&23b6ooEHp+&X5LMtnD^FbKP7ScG4e+_7bJT z=~^KUY)Sn#6HXXL+TC*88hPmoaYHm3`C&X3%Tmo$t(m5C&z(Vg`0$Zz|NRf(e@AMb zzea>Ls(${rL@3B+jBMtQfA*PESnl4>vi$n_tcp>0y_9F!mu_S8e)w@a=~tNI^>riJ zn%rFlBJRe;a()HF3CCs&`NKvvC9TtDjg}1bp5&2JFnWu8iQ)rw;$dJY5}dlf(~z-1 zJKSLy!sIpl0;}JIHQkVg4I4Jl*ibhL#2VCho-ZZKvURgkEkY*Sdl*LAAM*PG3*zzQ zfjFtw?h20!R!tW-)pvN8QHxN&LaIBVX4H7XrbxTc)m{guJh|re@!ee5ZuGCI50|7; zsc)cwu0;&3T11_)^=!4 z#nGcmgB~0SzNYCIw5fva^?@>cHjEpW63#k!vT0N+DMeK-+TBGc?#7_=1%`yuxzzUK z#M$FmW7LZ$I1vOj;2>GVB}!xj*r5g()~Glh8x~Ad1b`=}g4!}LEIxt>4wtM}32paNDYW;qn z2Wg0BksSOXnxrr|J)l|Lb=SsVK&iF2x3hFQ?e=JQHuxh9kJ2Nnys8kOr6~!CNDw3( zf9CNcB0vDI8=$1ef*MQ1>2pRCSO85oK0(gG?wG1w9dv%O9;Xe&3H0=^i78Q3y`Ur~ zpd+sHYDbYa-4H#XOF@YG7=(SO`enb4_~AD6!d9uO$5a%RimRoTmKLF_tBX~uWxGyu z?@VANCm|cmQYjCaOy(Epg`MY4?2zvBv$Jt0K|pi=E4=n&P1;7-CHr==x!C|nCyEN+ zPqpJEbV_(E3(aZ;$83xJ>F{WExsz~f~ci>=gr00GxXeCrp(Udk3E zf${S66{>@`DP>KVe-x*2Ji-*yY0O43qTxQTzd6^Rqs;sD?g1Sg?a-KR*lb(=Klk?a z#_hpD5_h%=+|lJ3xLUO=48itz|6X*6aaNUR8HL|9Ptx05N6l1Hv5$hs=I#iN z$LpCz_l+?x2{On?dsAyQM__DsaxK1@JHkA^7n!M5Mk712Boc`pTXSICpr6#)-SvQO z8j~6u8vhgw1noMHht**VelTa72bH?7;~?Jb4!H0^5gV6J5)cT#idyHXI`d@ia4>fa zWS`$FAVd8S3df90CQCvixK0XBmk9WMBZGebykekE3%f{f>=v*@Ddn0f8j$&kiM~i(5`^1qk#c?c&Mh_<9y+o9{%jK2 z)@S3f#5L$e=yfe?Wh4=My8C*sLenz|x#%DHy}o5$kB18Fc1acGoQVz}opcPB!p_pdO5FXEr7t~WY0_q)bF?N%kH zZ985?#N+l2@C3I1-CER`OqFf&q;23eZis>`Q_`y1ucDDyYj0oA{VuTORr7ekLcWk+ zhtI!>tLvL6K!@QVPDCM@h66hi2YVHIA9K-Nez9DkR!Bp$vEsW?JTyw^9U|>ze*uN# zwW_ z{r_PCu-9(={W+@+7;Gg8HmdeXc1ZL_xQG3GMY8j%=DO~|g)tz-V{=?h5g9&`B3dJJ1 z?8{(q`|~2H&V{ zZ)qIoLn0@ephyJ?v~8hQfgOQbZBHivfckD}bkUUSix+;48)x|t{OtOT4=m!x+x?-Q8|!uL({h6yg{sQv$wUfu;5HfHoCL@;wnS zLQZ$8;ij~@$ez*y1f;o9aK3;M*_GgM6(4Gw-P1ZE-{R4>E(!+%MWj8bC7HX|yTChj zuyTfP?I=>mliC&qNXptMG+AANDw1rzKtK?7LwI%z93$ONjhLZ3R}yJ6482;Uj-a%C z7#Jut91vGCU{&+Z&i~wd7Yxb)N1FV1xm@nob$wwzyzSo2EdeTT#)&_RZ{lWJJTOeH z;w)4`h4%Gebgu%1(qJj*iL9}K+Qu&BAXhBe)Y1-3*7G}rH1?dvK@rV}vI59ujU!dAitSxpzwr6|pOGamZ0yXi*EZ)M;EzCV^&-%=y$X_qbAyDS-n|*B z7!O<5UFJ?a#va$!Ta!I%st}F$cok)R1#RVq&Z;d`GN=|epr+Xdy-S{fEeoFlzihyZ ztGeN@Pru=8kO5Lo6x98^9&ZTUNCVzVtJh*Q;)lZYj)GEa#=yfAl=SBDsDjVy8Hene z7X#0B5sQ5Wqq7$) zihM{Q=%3*CdOaB0%@b^LQ%vexN&J5nBB4$r*Cv$<3zZg$7+ntd{S#4OPV;!ZpF?N+ z2by7huUsmgq8mC_1|9t+G+9+RVb&O^_I5xyUjP*?LSgAMu)edzZhdO0pm@ET@hg8^ z%j4N4A=r(JattDq9u!6I7w4~S6+4TwAl0)0dU{j{;5T+x7+ib%0_ZN4;oLcsD5xfG z%@pn4TuJCFlv?uTN=u~z7f7-PkT}oEl4pG|=vj$i?L}r9i|{%&;8G~?9~-2dC3p|z zz#jln5uJXw1HoO3_%PL}=?Zwfp2?D|9EPOnA%#L=O0iU$EX$}~%o5@h6%rvoG({6u zOEM~@LSA@n(>A#Km6b56F#(@BVFF|~y$RLUv)Bbz#i&eHc3+$%5o)g=9GqI3QoYR}l%)zhyBz?EXzOw5?6~P659!DN54*sF@GNw;Yx0FHFei3&U$4YH3VC(C@{C znzg?7v6I=@#*i3|MTCe~ko=N?n#F*vxyf+NA6|f;JoplfYEHm$lOhO=v(RCL;K5hc z(1sAy-Shss{H9$#@!h%cB2etFp; z=vf({<4O7i1ZS!TwT}SlWEy(Cqu_*3UJJjt=>|4&{78GzqBq!Ui&qP;E?yz6UB3ys z`pW}0%j@xP!-e>)$0N@}-r{9VGgcUb8>P7$G_VhnYhT|~fD))d^?4>T(>h2L#_b#3AeF?GIS zi4HzRf;{qUAG`S}XhXv7zH85b2}v*9aPMOCkIyfaL!ro8U9TeC(CRmu+v9@6KZ|OV zg#*3^dUN@+8>3$Rw$FV``Qzg+3#2CR`{ub2k#wLQNjw>vpqMQ2p_+K)sqnR%AAn`6 z*TNGoEpVz~1Z1D9sF^Ztuyyk~d-a+%_R{6c;gvLfo!uKRqQmW)RQ=b=5gPAnGkPs8qZ)!1#RaZ6Z(fk51+$}jX} z`=`Z1QOH;F)=4ubOTWDIFz_-R@;YtkPWvFpyksUYd?cv*9S;W`b{72V=3l^>7hMj; zvd+^Od1F@`IuCERR^^(|AC?*?63Z8HZ zuf*>Ni@VpAP0a@I(j??%WMu7UAFw}sz}^_)<5(+P;HHGMNQq|Lkfl+a6rF& z=MwhMSC*Sd%_^4UqYZLDS}qsvhWF5L;Js8pI&Jq2qimSgE%8vOsZ=h`GHfPpXzQ_F zTi3xtp@i6itA_v?wWOylhDJ;r4}X1h5v*9Y8gBgY50TAOK~ZR{Adz=pkZJot+R4IF zXwO|7vnGf)O%%pWJ3u_@lyk-2?q1fub&Y-9XFqCZx;n%y+j^!{s@liAfzauy$CE{` zW4&pbM&0%8GvRSdSU4{9s49elfg=S`xS>?4{;^alOds2r_I&yi=UAV=`ZD&+GjoM6 zed$Z$3FluW`lBNS(U$;S@PL7F9LlyO>@3x`xhD5h(?LO;6GB0}>E=Jcr#^8ZupVTJ z3;ifC7}ik*n7_FMU%CAi^T{RasU?l%3j}*GCVGCkTznATW0#8e!`0=L24s#9`A_r6 zo?n-$)njyOkB@&paoSjR*$D?ob0#%|0wuELaKX3lg;UNs7rye{FGFvp2mHPWs?G#2 z>JzEiG-?vQWg=A`^0xXC-y1>l%5da?2f;<>9Rr`e_6GD6ma|vqK55^6*8}jcXI_;` zD4d~abZf-#|7CY?@2}jpDElh3!6$}HQZyDj6@~fh*-VDom%!1pr@_ZBI@>()q~oOF z<0hgyPQa9Mt57xKr8CKl%2GhG& zFuiXbGjgp=D|9iflx13_pXumO*|y0xZrH%a4;#joz49D0a73%Ta-_;wxs|>4*lp&2 zopY?|SDcm~(P-+8cqD$9n zh?Tc1zUlklV>2d=Wwu^mM!BD9#XhE&d+~7(GfTZpFLp95w~19cRUE_`J-P`mhj;6aQeN7CR6q6R`O zB;sqLHvpETfsK%Yj3394@^vhZ|yz<;*_DwhckA2@0 zFUkU{dVj$8U!`L1&wF!~QD$B|7Qe2ir}swm0^!V)j<&A8>IyjV#1ka&r=0#Ot}jFB z544B+GmrcWF8RdAVbSX^LMoXAt&GlqRs@aq?dmUJJg^&S-%hYAeIQkHyv=u6w=m{Z zWp}=~#s2g2OCX4@RHledhM?rb0T1$Q;_v$lg@rDS@xJ1|J;lln2oPx?Sy2y1#`rQ# ztDa+;I`5nw_xkK3rjM}?p41{v8W9#oMr9#LJJZQj?~FEG@_>LQ%M%EI;*lWHoQA(W zwF>@v&m-{AZ@z?JIsrm_I7snEkUc@rK+v(V$zk#Z>KA)s}@ z!q?ZsN566tJo&q?K!cY-vA++5Y92$~CEB2zn`<3`Zbma;V^7I`V{;#Sb$usWvY}JX zma7=n!NsSj8K3O=8**&FFihSnx+XC1JKwdZ_T;Qh4mGW|@tB7uV;&08b@4>}8vMhj zGlf#}U$3qZ@qh^8p0SNFHl`tNx1>TsGUA7XPr<({5DciIS5hFhZVPm-Z%3X2VC}Ny z;M0&X_4v_#dyyYfLGb!;;6%uR!7~tNhy2ooN9{85WNLM0sNh-m_-)`pE$a1#Ik>g>_R+|185O8duSv5CYd04`M)14frFkr_Sgd4H zqMQN6st#RwgLU@nu%$OIZEo*{_DosSU0f?ks_qMT7vRFY+tSRti=}+l9@H>4?4dSo zdn*n!P+Ufn8t{5!hHcH1CFv{#`^Q(R##qzTJa3U|Bo2u%RAd#r=snP$Q+dsVsERF&?AQz+yCg8V+~J zFKVjd+s^k`A&lU{2|kSqLIk#Xe_c?k|ZXI z;xt83ARbSAClm}li~m;L_X@-0oF)2?-{<>QYjexJbglt^V5Cp=v0xy$CKwFOs=c-k zAA9#fLL#CdK_n7BLsh*Q{5K1RLK{Yn8hunS7=A*M6o$`>Wn8%7xEW+ox>piK77m7% zBooQ$;c)cNcv;Nr^`%3h@ELS%bdAGkL;Obwl_UrPBoguKRj-$kP>GVr#*Q6(Un*7C z$^R|NERm?Yh2A&JcE3#Ll#IuIic-VR-Ro8RaYKA95D1ptf3rk9bv5yNjsLdLq}V>6k1rIyMfZ4oEFMc7S8INTlPOHZqGu|yMCV(fb5>Qg z;`Mqf&iRAoQT!|xOI+`64DrKd-^06|Ohhai{j%&V3JH}>i-FI~eKzSCP0MCntl@^Q z2G1oB2-JsyfpqOTR}bf!1Y4FpESXGQFU#_9+Z_L=9vm#C67frYDmQ-?30CcbxQBro zoHaBw{nRxj!x02aBrFZ}bq@%1&VpdP!?n=AQ40rIJf1wQy0JbKgFRqAQpv=@e$~ry z2--tyN1;M2!WT#N`ij9|aAehV4%h1mheGqbiif?+1|iMGuQA{cXZ(JD%P_v4{qG^T zAR`iqsHs$Hy?eurcU%Y%bXinbU9$cc!w|IZ_~2e`G!%YhNYlRkno#TV*CUbW!-&B? z6s+C&;KG5p>PF(J@JIcf7Qi))=)OlfqmgK;Rw#$*hT&SPE}1+$7zn(V*5X2^C|-s% z#04Lk#NBiA`R+_6;uC{@pALh-_FZnitgwdq#!v4@H(&C2JV=`)e)L|N7!Q*;E>-m} zQWVeN?fFnbc2Qe}1O6XNj_~LtL{$$EhCptGUW>=$f83uusH#Rq{3O-Y)opQwOW$$R zIEQGEmx$Q$lB!S+=WE+9?6oM#8Lz4mXqOmcKnGtKQMCE*MbV4+>-kEha=B@m;DY#J z|6tCANTpKAvMuZMNGO!SmlQmILv%DVRIe8g8F{*VI24xm2aPpsrQS7z7Vc(WBAL8Y z@p#s?wzf_}{)e;fc%yA*+aku?git8-!*aR&30xqP{*IPmKhnx{u5zhd?hFNkPXq$~ z<8gze@cINrmhHM^O2CMMt*X9Xcs$-0b;B5em;N$tpt5_9hUK*mSE;A-5+q5q(Hs0_ zIz4bL2@~#Eh(@Cj4u@$si=}*FbGcHvv@hMi02hK7c^RKAE|A0+Ol<98ilWpLxXVm5yQ~V#LdKpF7?C5`_iNo^-siO zUlAQVMa*<9Z)FhfKyT_-u684H$Zs+Iyn{11T+RJ^T8pN}#-I6}5LFGJC(|!fD8Qab zr0#Stb68rP;pjQhIho;5;54mL`JwIL5Yf>>0#yG`FQW#VW?9y8;Yj2t%VsV4Y)%UV z10J8MZmpC{&lk&O!dUgynMcZp#bPGXWI zFd1nDXZJcgS)$iPV2Vg2sW|9S#p4aHApbRbm}xFIijX|j=Z|*7+o%PhhL;m5D9oG#14gu2ex*0!yBvHq(y7C!P>5jbALn$xNN!C4}y$J z+Ln+s?XzuTYOz@C8BUsc*ho2fK|~fJc>Q&MIz1bqyGbrKKS|uKrsZtpBPWl6%g&eq z#~(Hun#YV2ghZ1BfqJ~1DnR=Z(At-RUCG1cryKy^h^fZ+?_YRGYfHn)+qP|cf;6HF z?)Rx+sea%2J-z+G?_YYV{<(8!c(eio#jAo?hst&Iktj3>Df>1+$LhCW{)>y?p2ru$ zQ%l!!iBTjE*cQSrW}=X zWd3Awc07^*1`1U}*bhJW^r>*uXHSBIkC+4gNk@R$cnCmn3=};n4622ouw@Yx`r1MD zdf>HHUG`7@`l3)U1QD^!|I21G8~43?&ebmS`J#0t&Au>`PO}-KT7_iDD-=s5u<9m) z)N%;uN))W<2#B?ggy~aS;G8*)Fts@W>o)a5XEuk|syN!4*>pXoX;|a@zQBNC>aV$* zai43geJ)s4z6xFFB$~O$^2K6+ULv?8NiqtR4Tnu00r%c`0i1cvSP&W}g4J?7Sn-MY z9vLlzfV&u7r!5OWY<~q*Nrii!U1?o;%ipCfeMPapK6zVDPtPw9;0nXwhI5T#nA)1L zV_Ih|UEen4iG}N|$)g&CDWmFyQdt8r)(nb249t?j@ef|C4K{GLI0@8FIDCC3{AH)E3xGP;a?7`=j3SNKEI&?%>GU|t{F`gQM0ds`pf@AgmZoW<*W;Tj%hH{Ay%y|a{JgIP zi@V9lIDbUfwO^qip;reI0ac7~z~v_#1V8=!i4ac4fQ>&D)YgM=LD26*jKLHyuu4Ca zm;VDi9k0RS)!po}A3bD0wrGPKPc*DmB;mNezTU@i5h=%<=!xM(H^}Hrn8i~0$+~2G zr3KPQAAfbZytTJz9yzW-jFh*66^MZtZXhh>(4WB+NZ}^XOWRO`r(jH?0iJ$iIaDmv z+jvXRD551~P5yvSL*jIS3oq>dM8V>wN%eYhSBn2Y&Z(Z_V-o5w5~}kK83RB2+zH@G zjsSW3nIP0pK@l|YPKjV+gkQ{ThQgBj!JA$M552nC{>06X3G2GE;`p&+9z#5JbS{_a zaMYoMj-}1qYaI>@HOaY+;ToX0X1-8Z+0xuN-|JORcxA=<=!t%~&vamF6qLj`FtidJG%5g1i7-6z>T=ZV5?-8*_l+W2@}U?8yI<2PeZx8AvqyI= z{iiOGxIyC4doUCaFOFbyrc7eF$N!fZul$Hr`ZhB3tC?n0SOrnM$t+gxT*UgG`VQ;4 z|8wkrEvr+93{t7_~)C^Nc7ogBr&v zewxGOAsa7CvO(2J__=r0-sAtI2e<#YOCx@tzgyx2jW`&x@yas${JF=nuEme?n~EM3 z(@dKgmd=W6pJBPjzRuSF@mhBAM`k8EgO|evX(@GJ^k3<@g`b0ah*y@Qr4ad)O79xPbZ4Dg4CwC$m5P=rioz zub$5?IN|{26?j~g)zvl3CteW#gAxMyg(AjK{C;&4-Gmt}aqH<@E@I`!E@$>zzvDNr z(7l#@{KUfu%(HuM`ZBX$yor?``7ieT&6luQBT`&brBd~4lF8Iqck%dL3InMAHdF^uy)aFhAm^U_h+Su7U6yyhCX5H{8~d{Xs?`R4fS$#cwY zcYmI-mw&}Ft6yP9A94t5O@!E+FZ_eVjIrW6X1wrgR($l^?AFhJlto0*@_Iw8sk!y! zVFCg6j!AGZMf4onm2tmnKJ(L0u*$=qW_^!-jcMsEEU%eN<2G;``}~Ec@|*j!t50RW zz4jzK?v;6raP+7#FV&?|Nq0e%>VhDyI@UEcJ7hyhq_uvy53mQ{NEoJ)qT$FIsL9XA zUs;YejlC5NhSVDErjXejGh*ar@kpFs!|_u`8c%%lLUzR129^wZ*{0?5`3B6CbXG>$ z%5Qp;bw2n7W;}Ky``VfF_{M8$8TrV6QcWVq8qsLzcDne>j-PF0AHAM+{^?UJxB3wj zD2GKSoOlqLoAwj zac`T4p}hUX3<@5B}jNC{h~B zyNQXocsD*fY- z$&G>s1H@9K8GNk=f^2$tw*nDqC%YYmoV%kF{-d-ERSxsA7-5X_F`B|~ZeP_rE47TEHXAbf*G z99(yQ-y5c7PL0P?kBN#0=~A#?et9K8!GZv85(|*eLpc@DaS63f2ITHxWFjC=X-qP_ zMSUYK|M znb6zW35QP`BY4rg<+FWWw3E*_)TIuhonO^T)#3_dvze2wJM@|>c>EbbGP&Y=_k!Io z4+a8?+nVTYvPb{NbJyA1GmPmE%!c~i^YwD<^bo!wa;n#Qk9=Ocw5f#pu<;C5mqHHjxV*D>gvRjW047AY?AVoC*Y z7i@2(&v313nC4p76O?u^#R7ZxP0r6V5DZ4Ty8Gb5ljg9mUwJgN)`j4y7uLZQ-@FUG zYYBdS>+N7^Hm?N-4BX>BMJ;B#*S>F}I{QSh(C%ZL1(cFuKwdLIwku#22EdmZ4a;Bu zC!Bod#c<4l-IKM6dfv9R#>e&>B_PL(eQb(ie*@E*J8vaS0Sx`=CsTWn{C@DHIAL+=^+@(GpAy zN1{d3Fs?$NTz1XVzr|XD^ALr1dBFRR!x4{FPSvGO$P8r0RnM)e(U55uakKrRSS-Hj zzRp2D(h$)?w)C$HPMA6A=C6LtQWLGBf85a+jGhFBoPcqyUTF1baNYNR2Q$Vu!E|2+ z#E#XlXhV+u@Gs9xOb%FnpXYzj%yzqS{C_uYST$8hZeA!!J~k#1HWvQuD#qsjh<)t1 zx!eVR*=~LdTn&&mwo)Lfl>HSj53!Cr!csLYWe)b8oS^Bl#7^RgDFs;aA5XybXCDY2GmDY@Ng%~X;$NVHgH~GzHDC-MgoCC8tU`J~ zdF`z&M~5S!Kcj{!p+?|dB0euprBWZw<#J7g<4_rh4UG+;2B@$#c)VX#=cm)@P53@e zJGcv9%@ya1PCOVrlBuLGRiA2AJWANBdLur+FXHp5kzgnojm2ZZa;cnii)U-ODR2c% ztQOYd_d-)k)8F#N{5aH1R;5@L(LQ@gywrea3K{5~wjL|Ac za-i$#l)CeNr=mwujQ*~^6{=UYQLvZmhOq=q*^+!Fx2mhNtJb+-v**tGf(_PBO69Ui zJH)`JzP>(g4o8m~{oS=|*M1Al6+a)*|}4a75ON`ejR(EWJCCOtg#`G2*09 zB77E#%?yv%(@LLC9+gBcJe~{*6A7MB)4-Tsqnt5W7NN>bG5Qkx8~o$;f&PJ~`nvo6 z-rd>tbSNBFMvWV}E|bYL(DfpfCZaB*A0QMA!9ag@=Ee=1C|yRuSf+s{@%EYH5?B82 zm)BW|`mvG_odt@DR?^bJL=RA~i%?nqBzW5vK>I)iKJmRL;e|DAR5p&603wElo--}| z^ir`@bnk_^FBW%S#*oMi$%q+jbf>o&x_%|P-|f!8NUN6bi>uPj`0Kt+s&^O^pqsF<^{sd;uF68bIPV3bk(5=jJg`xwD@E8%b^h`wL;GsxBDLVM! zw%c2tn?b~Zf?=3sHfJSL@rznonlG$xZn(T$E{&!$=hEqv-BQ;z6Q4y{QldRQy$|Bc zb~GIR`s@h}*WdZG>x@L>1X+ko1)1{Sk<&FK1vi$4LiGs99WO(BA8M-aJq8Qbb^y{Z zD5!=(@kmuwzlJbiF$J_KLcOmRcV7o5Io{HBy&b)|V-OCEMrD8-QxrAbgqN0YhQnq~ zfEGE8p$Z~VC-AyD9{Irk7@inJV*%mdadq&|C!aq|3M95KST3M85= zjCLqo>);_sL|;o{98KkP6l57!7IBzllfaUgdGq39Tj;{UkQ394Ji&j zBuSvpLX||}7{E=FKoglFCj!kUy%R`V@z4!Q3u6gNc@ zX)eTIh7=a+8bWMhb3j<|%Hp#`HT3kBO`8^sn=p2QVHwjENwGW>V?)6rbBGHsP$jjj z$Tos<f2P++NSxOs;DUpaLl_KAslYXvByvqf zzrz=KXbQ#3#_yCY!@6Vbnhn=@WpU!z5%Gub`qj79v12DQGdN!K_+ySx0e&|Ia>{ET z1yAP!=uVq(+5bKP^H+9(;_;z;>J}2tax9)ekO`;s_xJU>^^^bEg5`QrG6LWJL?W>s zH{bbaPAH=kRIe;__T^#CwjMb7u(6<)R)QIbff5?QNkzm@z+^Apc2yWNI%y?*Me*f@ zD^K%=;!lJ_{(~`wasU(2t(W;qlTcL;GLIq=^<>f<6DM=?Ry|PoP_UF5p^~dwZ}2tA z6_l#55w*`XQnfJ&Sv{A2;LS=%xQHA_$*LHp@QF`c+H=fdvya}oX2}nK`}1!n4wyaN zGL=!1C)mh!ITJ_-H7Koq0=(_dLT?U*>VF=E=T>xLgaU)lh)7YWB-HkV3y(;r`&ZX= z+=2ge!K#`>xm+r(XlZGQ74pSH@kW`pU`eVk3>(|i(A8IlQx6&ikXZ|2xD~`e9S6)r zeSBtVD4r&#-DjbB9Twx)+cmfO0Hbe$B@gD zsJRX)-(TkvEYO`&7kKtfEdN7jfyk`YJ3v|u*l>?d&g$s-oHL% zXYwY`{iFFz}g^)P05OWEH z4W(o<`Gd~R&Yun^p&C|#RmEG>XbgXNC=>{vp%p6)h_z8lOi}fD;LUaDRx4gOetI3~ znav)Y*S-mh*LDcJ3o))InH=Q8xu&WWE_&Wxs1ySEh*>;?0=1nm z;qQqSsnuN7v|T7h~eVXFRI&F&M4#z1F5l04!|ufB%%8es0+Ly-%XsC5w-U9W@E z`4S8iD{%Eq|Ac3jwt+w72Zk|p%AP@WE=Qt~JCVk?j#C)I@M@1a+)`FK6OQpb4KdM! zkx1gxNGkdj#bc5irUb(9>XNMx_66Y3nJK7bHh?FbfI_h!zVxNf!NO(hAreSX;uU_1 zOw1<=l{g5pchpvcrp{9pDlZBUK6_DXc~n<(;cJR_P{7E;9P~0>d?oV3@%Si{XZz-F z!j8MgZR5ucIsd)n^TTVey@`uqz??aUf|gkXO3(99%4u-Tj~|047qvq;=m*QNDTfvj zsG&5C8L_ahr}qpZ)~kf`hl2G!z&vWMd^8?;1sCt*hHl`K$5P1JsD5~P#ad`-2*Cl9 z!(gIW{QCEQ1JAs+4x*trm`Gd-L?q%OSMd)A?vgmDWooe!*G`DFyj*~)!lj~cDd;?? zj(~Ycuv9L59Ncs5=k$yqB9)>-&cS=6IU?gWaO8BZyXO3vvRjG1ceW8vYvG;0JQBS6 z`Ww)w^uyFtFO&xIaKq1^geTu@179%6H5FdIVOo~b)ZDTnpUoXNkRB)x2M=(65v)Nl zk3`=l^myj`RNu#Sy(oFmEXs;kw7fxhb?F+I*fI*9d}cX3@YGx2k2N40ZaAKodsKx= ztf2>Xq!Z{_MZxirAgLY{CLg};N7B&))RcrikFx0qZ%f?CLro|uC=*Dwl9rMj?@$t) zR+Y@ngsu%7zD=1BqwiiOPeVp0j%1Rkg+&YBfTnmo{PCgJ;Qp7^fIpZ783WJE@d1^_ z#>V9s4mzs4t9xJ=v}JmCSTjrotNNf+1Y<<&h@+65|5smshve~k4aFCfiNg*neiRxV zko2KpS&kVZ;iBAP;p1gXaS)gDwi?LmR^Di|^n$pnhv4=4~0gdh?MpcYgipgPPu z-7WMJpn~LWxvWF6WJ0!(gF?9invTDto)Q+a0c8u%TQjYSQNSpuDj;CLyQ{nF%6u+w3}>OD$8ayf zrjUfZb=%hYW56)2XA(2ZQ%)~y-X zxUC<0vZyujTs*P|6;lOSafydy$m4Ybp*)aY^&*|bKGKK;=uyznzE)Te&lNpg6fT=t zQY72}#a!VF?QL6rR&p@auokNQL1Wc!0JFZn-j}Mc`w9xvH%f*kdlcf|k<z=aQ|B7as_0yU zl}!z7`dqH1Ec`tlh@U7ZZIWOShh@=W^WO#hfyKR@eb=sjYsJgpri~3pOtnu0%PrFq z-JjXc>^6$TQGl6#o;+pJk!r~QJbI4;%~j@Uo+MP&MX$wDl30 zi>L)l&=_SfAt`by;nlag;9m>3p$5~DToS?3@}Q%6ETLy-=^8hSJf4UGWt*;m@xECo zRLJO|;E5q$Xyw|s)=X<_YvT?Lwbt4h@6Rnd5goY4YT@60Z3?Su+pYn!)%H5?`vOU* zs`*yMQqlH>eN}g>n#?JQ$j7pbZStBc2xmMFTp(2P!}CP0h0A9tlm70n5eKNkZQshY= zJ5{>2-Tkk=275S1YfpQHoVbg{V$H}2orgakjI4SLf$RpiXy5~BOp+tN-_IsY82h_? zsW3()IP10ssvbk}J01|`o*l*oL1P|B`82qEUIH#WX*5uaw}+nVg=g1TP_U3*z<{pe zr3?qsbRJ&mLR3RM8iR&pJv7wSLp&D8BLl&Ig zU3-+wzz0<4b|f4c6N&_WtQk5*mIXIieNeDOu^L(tIM;;e9(2Sjvl=Y;+-aj=?yMGA zzfFhVKivUqG76eIq#B5%bTJwA!9nl_V@8dE$rC2Sh^7{ZqaXz^WaL+!Bk1=-EE0vf zL=r+6x2u#(kjv*$!w@#g1EoP_3IHoM^q~pW;fNVY7#oq$)TW`kU~uI}VHvXQ7Fi~H zd%<$GuYl%J2>1eHi-qD{1$=zKc9;DAr|MFt<8{riXxeF(ZJieig|AK}QXK=CfhDj9 zo6$*oP^hft=B5)dCGfe(a}p%QzAB zkx5Y-?)5=6tH23|NFsWPXnGiG9!e5CZJHm2Y7DeC`{0eW6}avBE-2|JP-?(ooJg2Z zs3ZjF(LfB2ICvh68##tE?wpevBs85h=R7BKfPBy&gr`}e*Q6{~VRm=OV6iYtb&}aF5fk$y2+V_-j?Fqr+Eg;EMpl9|_HkYe& zr?e|o(}>tY3P+fjh9bEpAu}Cz^ux3jcZv9sWf^IMJSAKq~6iXzKPqh_6e*jK6?nE?wDKKnj zhM3?2_Q4Dop$5nC!cfLdZbN-N*Ea1P9h_D`jf|WZd6iyRwY3u@ONSXPL73YT0wD*j`ps0)^D zsi2m$;L>B7;qpV{py*jB*d*K%2!oD6jae6na^q(Gut3m1&QW9UzawEboAuY8r27>L zO;yu0?XX}Ve1v=drTsy$`1zNL#RE-8aNf2hXfL80FS*@S-VbQ!Z%ic<$CnL5EMq{> z;O&#EVBNu0^foPDf{B4Lukty0dIJV@kx!C>@W9J`ur`e*Pq08oZplKOMj;@QsZyx| zNWjAQkth_DvLb!3`&<<+TA`WKXQG1BW4Y#PeMuwTw4j8<{ z?{vJ^Su%Il5A~&w1w$|%g;e9^{}RVqXna6H!C8lb{p|8iga{N0GGX4>5Pb98(Qwqb zAmXqRUIT`S@UE4M$bD&L7!hG`(u|aVtObO^q4Urp!Uy315sq{^xNrxfATWN;2r2fM zSGdP`EClBsjRI)f(Q&D}ZVkSwT+dEuamjc~w76=8i55U-+%K`#yA-P22ZAYT$7jyQ`UNn|6g zvMs^Ua1{+&8=9fDsnxC19}3;Pvo3y*UF!brn31F4<=0Igfw~t3c>dZP z96izt5hVX}^xbh8zIN&ecyn_Y54;wPK}M0#9n~0xF)119eU`LvYY=|&`1*ON#^xEt z_3M^Z@5#GhQBH<3PU5n^Mxvo_A?!%G#Pr~3F={4=L3hud8eX+01j}tk;ay}H6lCQw z|LX5}U<}>t=aFgHN&p{iy|$w>!L{1ZHsc8}R1VA}*?m*h#`?Isu2}CXGdlkD(&)p!w5z1<=kb zalw_mSUgUA8x+w4w5@8K(9z%BMFU>nT!d4n`G6{sOpRR392`7Cg@Z;nat$hSMjj~( z3}6pr%P_SuVoh!KOKaM4r{Xs(BLUe#n0V@pD{QnsEHdYKZCSJm&)_v(Xjg-hgJx1j zPAf};h1-!+Sr81u3y30~ z#D!j7E|)bP)^OQ*cV}WiSH>M*nm2P)0|c2SRCJ^g81hqykx)uFCMn}y$ zjs2lJj9#Jw3%8ZvxJh287zD3R6L5o7&|$#XBA+*GI>JaEB?x|y(Ui_?3c<6XfpdBS z!5@^01?Cn_RKsH?Wom>%K`Q@093|{XBw?rH?+zLm7)VwDx*Pb`@tQrz$5HytJ+*7L zKWHoog~UoElAn)8qfa20<$;>kJ+#a6`J7rPh{xlF9xuz%cM(5qLbv}J6s*7DYm1P3 z=`jfq;UgT0BvK*un6b$q(bgh2XK3OSqOnBMGA7?^1BYs4u+oyuO?}kVuazZo`Ioo8`VI{4S zGBGA;*p5bay-cpyNNeH!_27o@FXRiS@5$-2dkSOm=4Nee+nz)-b5t^!yanz294FSr z1fDhNPIaW3Ld!B_3@B4e!z)p^uEg*|1_g4ys;d7e77Gt5UbRUwim8!t#4DyoeOeq) zO(kHqTXscjiNvVQEw98wEaYr$>96qilgv}; zy&p{_41%v}EXIUVr3?mXUn-5aG@h$P8WJOffIbD9L=jR*J&+dTx$;ixDd7Zn;HBtj zZu~$U;Y8FgS`9%@sHt`2sa{37H<658h&SL&4AC5g8zh>^rBQHghtH)6nbea6#nX0% z)6!M(5GC?=kD#0RCG^_2z#fbl?#UoDov_^9-TeXz$_Z%e+Yqe#9nD3;<+T6V&Rax@ zLk%M05yhK*CaU){k-h&Bu1CKlXb|*ynT~f^a(W~TuD-A%s%CU|F^-4MLndD&oQDgH zW{<=KJu;xFT4+8^UFIfg^Oh|Rn4|83yW)Ghglaxtfd2G=V{Q#6lYuApx!DYat+ItO zu$bh;386a4&@W916T2sfcD5 zx0hAJzzw!E6)2Zq0`Z$Y>7I2pPSYNF?9m>i?pC3u{xk7sKfFh`VwbCuU2Mf?L8Gd+ zf`MQi^2L)q7~%C}@Q;IGuxc3U9r}&(fUaYHXaULdqy=*@m6NqeT8b7#<6bGisx_;j zJDuhs8o_4o`=+?GZ0$Ah=WW}z!2s{hhn$&SlPyXI=Z`F&LgQuux#XzL(;A#~W!u%2 z&d-DwCA=kmRbjeTiiN|WRH9@1t+qO#`ZX0&3aK#ixFRlVW0f!pe>Vq7rjvS@&&X;bP6a4bbb zTX`JMbUZGeChY8X=Hx?~&zMB_2?ArA%d}ARss|E6k`FEK^8q0E@!R5V%w90nl za2&DXeZicKLMBv^Y%W|LO8$2y*Gs&;l3l$Yu7hGbKi6))Y8$T_EhX%?f>q^O&@*`z zcUF(9jm-BGq#x{rjPV)Mwnde~IJ7X<4k;$K6SO7PwQ4+Q6I+(^FIAB^Xr?*JCePM1 zxW+QMVCg&uoy^Tc4?hIyY?kM?Q(DVln%Dc>4TP15IbXhV1uR{*l>asLqURb*cfQkd zJy8iYkXJ!bF-%uex!>f*2)TJAXOCw-RIiQlzbq<2qsAiw{VmsTq>9|$pPYnljS9j7JC@NEt*=mS`^#sRf>OYIFa0@VP2X9KZuJon%xZ{!Q7h29Z{Y z-kk1FZ-AN}`FrZI$1_M>P)=a>M)VGQa=F}RD`jmml6P_q4&c2w-2kgQnL*%qfrc)n zGg%lJmbn%h>1T>DfrJV{iU@OI;2Gm9%3`mWBtZn*uh!Votuz zp!#Oyb=yp)WLw&jic_hS3x`5W@TBfUN9rDa&F-4)*Mi042>2)#iwuunqo?<4)vF$a z1nF6_B%O#0FsY(zegfIs0ZyBOE&}*em34Nk5f6yPM9bxbWXbV+I7>~#4tW6D>6BPC zv%CTaV{Q}be7JayrVwPCXMIZI_U2XrCpbV}(-TiU0r^56uKdIm(3q-o1c+l7R+F0S z=6|_WL2s^D0)P7RpP;j=i)*e5H-V0Zq(C>)CuR|Gc3a z-PM-dd#h@Cuatke!bQZ_BQlGa{F8sh7?+eaZ^H5+-Wqwx1fpxGRSJ3WqOL<)zZ z(Am)m4dB5d|ayYkLZyV(5pu zj8KBGZL`5vkX+rF7U#RXXs%y;X#uQVw;oRT$Z>Gg;qzcbbIaRq6x9uG+_C|lUoamQ zzWD}XL7mH8si+Nsb;5Scc@`{3IQ=M#QyW4UUedsi%2dYlAt%FT_Mpb%At2MO*0J3Z zF}JkZ!1L_v?vjx-h6+*^xKZ)rt(D03ufdJGpj@oHQYx2M#ybhiZ^ z7ec1=7L$LHo4@3GK*+F@(=B1B$0I9<%?y}3HUg{Lav1kO+(jWB*&H-CFo>I->Os;N zlu429?}b0z_eXg0smEaSsL_zBtAk)L#J{UhEJ8ya^!4?xv^mAHU8=V{$czq!e)ig9UlgqJa`Bq2#D$F9W>?S#&^*3QzblqX zPmmUf#_O)eSnO{K70U`pOy)IrBK44>fxpyAn7J^UfjeCXb(e`|)C-wR2@V?@h6PI{ z*j%vrxB&w9gBhEyn?NalGP4H@OJ$GDOTWl0E?KsOCkod#{Gb92g*;XK48l{@Qm$%s zv-3F?aUEPpG}Kh8k%Obhw;-%WXT&e_RBG}-1#pGR0vAIvZvObsT+qmbgPpAy62?tm z-nO;<3cOc4-dD-hOtxzz%zfD>WS>_;@8F#XH8{YD+G9kcQYoz-$a^4LW|GfOiE}6# z5_x(Euql^~PXpsI9qtBEFoT*b%IMNd9tGk^-JEn_EBxlk)u72iP&kklIhY;<%gB`3 zlI;|cQUKWHyaszjWiKy61>gDLJ2-H!VA;tJ&3<5 z5c7pN?gAI2b4|tb!|XwPW!po=t8}YMh!gt;vNSe@&Vv&2O;?Dj!!=>JG@Ti4CHB?H zU99%sxU1LaN`lriQ1aHRL1v%}C80T!1w>1x?P@E*&B_xvMd8F(GzdgI(Ai#wLnp*x z(b@>i--ujQ(8sla$RyXHvIntE^$;wH3&>#aE4Q1B;~Y3$Vyet|wLLdsJ#e!pY?q{@ zELR=P-Y9PgPB~x_XoVbvq9LyBETlk0H~eI|SrAp>qA-+G4ebaRxuyM?JcJ@KYoMo} zgw}+8(7%0u6|C(ZRqYUsMl4&iD_gq@-l>g2m*`~N!xO5_&d6;iLR)k|ywfVkfPh!x z)i{-W7hH7oMA+Q@25c))?z!q{0+*DOd1<@F+Y(WqQf4@_00;YD2_iq1;Al@MjWVr!g%f($) zKwk4)?YB_FAF~b1$r+VE3xQa5Om4Gm8gx{k{NDn}u|y0Ev(Ub0#!^h30Hy zM-DWL@h}c2;oaC>wdC0W=nf6R28FTI21r zn;Os?Ma<{?8Qa10vs`@TglU|U4@pkM#Rj>v-&WOCZ)ll9D&8Mkpx5L{~;T_8hzQ8eFLmNAHOcd9ZcM5i^l3~yz ztcHzi6DS1NB+>^30$wC1QF9I0ya40Ci3u28p8{m8p)X&6e8uL~JA$x%0wIqJ@^ltQ zc$w`a50=nuQK^>?$}qb@h6@jBfn%m7d7)}PCqOjhfyRa~3azV=m=h7O?HW(iVov%p zr@hdO;?Jb5G)key6YnYs>~F7c6$8=apL)ByUxT5tcoMF`F?jS$hdor@yvKSo{CoVe z?*!V4MxvDbcLJ`{IT*@mpcycVqDUBcE}?h!3TmUj_w@Fzr5hNJMbGZZl@DCip+nbz zAvOlcTmbL6&C9N629jVo47Ot=T~5czBXs4jEckRf%y-+F@?@yx(3417~{oh)neI(3g zFc>@};PXF_$z+--EvDK!vAT;X977=<#pAgYHCVb(%s*NwlecHsSI-+So;ukN6Y z8!Oa)2oGw#EeX7@mE?9d9_qg?4&pJ&)WmHLnSudby=5qsbX0ANQ_?`k1p%g|U0j9jLP{0F;h##86_#8w!gNkQSYn9MbBtY*+JeNv_AsF&HoB`Bi zy6(`j$N~RsNL!&maqkj;HZ&Ac55SKeS_Lb*EG8ib5(8QqH>x z4#`Rnn$#Z-hqobJa&2E<@57Yty|;yHuL@RmeqJmZJJ8Uz7Yn75Nujvoa+sl;dAkYIUv2nIp8=nS@WgiCOHWJ%kF zV@PWtS_cu|hb#f~WhyX`DMPtpI&%kQ0sPc~hO_PhZ$n8HG{o%l?#P6bxJQV=XlhDp zIX&L}UIuaW`oc)cDpV9peHjGX&9?$K8`N3iL1NX_SY!%Gt7)!aX@=8mo$Y_$(>d<@3}aOr zvZ98eXFe3n;Oh=omm*lb!PY5^Ain z4aKtK?NOz29yzeGL0XK`bLj6yNF`L%Qa%WxHlyqc>VJj*8S?(BTFOnqv8*b-vfXrP zS4)vcXgJRm6ut*v?trzuC{{9eAOu+wStgV7Oc+02z_=vKX0w#O?Y80+1`kn0a;8!e z71?`AFcA17n#O?-&<1J05iG8XX(kSuw_DNtorwRYoI3>u{Wp>0B+=1ULOdBSjTt+B z)!H>{KSot{jMqbnlo-P`0CJWvXC%$@Lo>z{2OLuyBR6Jf55e{t0UOF@pwHqNr*7H} zDkuo}WHfO;1l(Q-Am|PRWMt@N-v8Z)489+KAMkrn2vvwi0+5PHkcfIA7FNOU5xJLW zSuPu2)f>!B@u_{@E)MAA@sn4on+}MlpFODY7H=)WU*6c}cBv$%!F2mTVcf7>f-_D( zTUfJtCFpKZNX^BO5Yk_nh+TaikEan|dywihT~Bh41A1X^2^9)dI1&y&+}GcKl;uQK z#T`#XaMg|L)NEJYCx{BUVh;GF$rHE$*B&z#j&4;zLoMT@7LOhYs$=5Fgh@2nOMsf; zN!7O8I}T48x)oxz@0D!uX%mctf6-w*xcRC%=W6ZW_WtJqq%T|04*wpCC)Q?#T4pui z>=2_GX)c{ud)#ptz9}Q4@WaQ~+e&o>uB^|>Ts(r==(P^2#tdlKmFN(ZQ00X0zC<|t(2**ty2N$1wAVksIT(`L$o_J*)zIQWE zbD-#gK-sF>0|61g&+O{zJR%Z_K89Z7;l*OH@D96RzcPi~rlS}06?A>iMl(PSK$Pu- ziZVUPbRh_yfS~+;E;}B6_^G4doTFOc&}ps0QHM+rK6dhK2;qI0zi1P={*>D-1cQE| zCsPr;UXe|!3kkYGwRd*49h>Xgvq51PI#@MVd{Bc_GZCtt^&C^h6(lDBU@qB#t!Jo769BR1l!&y(cEASO<^+%mQ^m7 zpR2CT{wP>N6;~;;{F6el*uagD(|(U@DVm~1wRKd1^O@6U!5v>Z6+Uuc6Da;5Xn`?c z#>b)ykETt_!%@?l;jOjp?5%A*%%iG8JQlmu667r#yV8eFYY3ZBAEVkPw~E*)tU#zc zSn=seewOc`kk%J!rhL>ijpnx<-<0(}@CPbWB^DOE9y?Peh0XYdXaPC}KN z+Xb9EvN=)Kl+-VR}O>wCTmXi}NGK0TP?PUcwlYnluf`X*d7!}dUnkXQo>CZ9f$=S$h z*}P$zW;ko&Lv8~xJrDw-ECk*C48}t@HWyYl7*8A;doq|BL)?`M;B~_!OvqkZmlYme zi9rUR_oID%eOpo0ELCLBS%PWRpL6IqD;9{0;&h)ro7-jIve$<8tZe`2OY^VZv#~qNk9Y9Pc zi(JTL1UIVJahBS%7A)(kz>3Ziv~_3Eyi_1tqI@Wad!l!#9swdj6&k|<7~c?pnJobr z*ARkmP(+hf0W$akPn|{wfWmrA7{XV~9!xnVO-HFe)T>lM)V^8sn?HPXl`O{^@9ODp zzXH8I$`aL5iR8TgZ25)bC&c0Y8$NEUvyT+5sULCr5irRqT2`j!{KlkI_(t9s!2 z+a88z-r7Q;33nug#rIT0L*tUnz`(4ER)IZ@pxbG`GZr?qZ@-PyD%yq zhC9A+3S4#Sbi@=Alv@sg!1OafOpfL0#vV!?W)(0uJq`AzrGN zm$}gG1jyqx$knV**43xpTGw$6~?iYjXl-@Nl*YvmpmTv0CP zPc4^9%*|hyPzW~1lHrc!o71N+-P{I8H%SmcI3U!G;i=CYO9tbhq$U6rc{TVl@X>>( z0MjjaWA#>Kpk-PEp*|UZyi}>2TPl`{`#X5&4Z<+&&@ai-J&1WO9+U7T?)&N)_Pj}P zp(tR;=76)oKmJ&}_y9MJ3JHXf2V>pSkXiO7T=(-w%{!i5q)Z$?el2S8)6k*Os>2`M zo=?;Z>+wjU?u;dCx3)|kS!ae76lmMzrC=QQxEjN0)=wFmL?LJpK{{ehKZBn<*A92S zum#rjmiVk29v5`0f1D{QqLY3hu)%=0GpNbUfyX0_VWDLxj4!Y3LxGWCM12BHq{fp7 zIbUWv_^O)6#f8dpUza5N-d8)N*L#@l^-4!)2L^g;23#^;Hdn5^F=o^#@%7akj(%g^ zHg-rH1t_8lW?}@I0g?BNH$*>p;v;~0ykHKjhhrxvARY{|7Z$GD@!#wRUSBP@j2bmxFPBc~?&(hN$ia|9fcTB6KF{MC$RA(ZmJUrH(_jYe zqNtMqp}~---#T9*k&iMVc;Q2#dU|yMzW3;QSlyF%dRV%1bL<+A(FJOQ)jTyMf|E7l zmc~0Yh71K1q&K(p!=|nxOl*up#AoxaHa2Q6ktTtG6JTbj^>o}wlE=#)TG}r@vZ44!r{#f7>+(0=Ikw}QSvdmgl7?hz03KeIhu^)l z4K*bJeZ%qWcKK$Cyjt0IHR)(%=&wCt3XF^EC~y@gJAzWG(QzSj?Lms_>2+o6zBfDN zU|qvEJKMMYZ}nQcQjsl+7Xo$J>t`=*sn~bD(k6-F=*>nscLPm~ zc(28Fg^O1-H`b*-)t{@}0hI#G8sEs)b!7z&q0`JMV_|GFsxhQ!Hnt)Cu(_XW(Mc^$ zY*TL+ioBOdp9$r1Y2CYZUmorc58;q_IP@!I)k*alqZ<#xhIT(4)YL zYo26ZyW}Kih>XW;#G(0BFb_3&b9%@u=SGMn`l6d3*I z|GmI&o^`Tld7F?EQ^ArOG33#N6o?;=9<9JB2Ty=(S`(LT=_IUqV5+WeO)i&R=C0L# zF{Ful2ACMenSiVOJjSI`pFQJX`@2^hC5FNXq{klx{!xb_4q-g>Akl=aN*DAmegedD zT3E8a$6l~(ZM`ge=3~%wGkoy5dR(~hrmq^&(zvK!6E1jVh*-+&;A@%!6nR(BF|gGHuxJZUa}JwXICVA>s!U|hE?p}i$$M@j z6j)uZR7ki)VK-y>-7Q!g=hUTA$Ll70wvf*yK7Z!H);BJhhaeugmubg=GVW+Z2u?p= zkx2RejgWcuFCYwbzpZGNx>h-YuAgfc&0M*`%oK&4Mve{0?W9FY;+MsMHd&==x@Zz4{ z-k%$WS*_yQDd|QNIuMSA&R@BHTQcg8ShE^H)CyVfH%`FNkcuQTQ7&GPk&>{2DKInb zaLo9y5b^u%C*NErXqtI$Yg3beJlS)m(+h034abyrw@@Whsq>4a^24P<&U4+_bFJ&o znFESCgk4{4X$;{#}q+G$;bv;@a`@rXTf z!bl54SkkM@H%Yo2`lqajC-(Gozk-4-xvi>pb|I-Hlo9aySK|i!`14D)h~Yq#O;1(? zb6_iY>nDTg^MgR+?P#oeq#g;>F;E!jgSo8%A*z7=;)<=1*UY0)5u_@b_PB+SaA7y8 zuH7YA+?z?ny>+|OxDNP>{1L|(>pD+(he;x0mDOyD+t$7;C%bwwt z#y3B_1io|6vlg{vNF<_v&*ldH%W|5x?kf1f<6@*>QeUTkt3{7Fd((HcZ=;k+0IBT@!e86e|0XK$->a! z@Ll~n51RaS&8@BRe7=0}zm}}A4AUddPGIC>U==8#29UxHJPc6WK@@cdQ&8Ut>qf{|tH#RiT{A=oyC3g4ph&{di9TnaD9(rJx4Gi=@NA-g4 zHSOw#5!}x)gP{;c-Nmnzi-nOMMP{$AZWp`y%P?<*52W6u=%66pN{vOcS%J#B7r>v} z3hn7KTz2z)@Y?!zAs+CF#foMYwBo@{_4SETx%|XV&Y#|Wf>pgq;c#RMh9{oO7qf8g zyvf#0pE*`K@8~Iz9w@_aA9)2zng~ZvZiGtTTToo}A_NQDV8yl^T>Z<(;n9U_F#zm= zi4!LZ7)-YE`D_BYuj6nH|A4Aq+riWd!Y;M<2dX@vmX*u!JAM}k`Zp8{1u0+1kIUtA z5{6$y6e&9XGo<|9^Ty02Fo_*Vb+)= z#48)2kZ(s4L5h;M}j@1+Q;thZ`HOdK9i@ zu#5RxyP^p=>ZD;rs@L~oHkUp8%)=*`H(zHV>cYpk|?YHDa}>bVuA(tp_FTMa7}0xpJt*mUM8QZO{JTPyq~}VN(v#(Kx!0ZQAoIa{JK$BtFkT z%_cN8HIcAIbGaP#PNiZH2?a6J-rl}|-j9zZcz%5-jNLm3zf6sl7_eOyC`wQE`vb>N zk5-i9qwyH8p-YEU#z^Gs#KRAt$0kjhB>e7ocR0l+Gi5K)8YPw z>)@MzoDWxj^f36rMYBMUkAv7jAA{nC*FanIGTeCQ)8?&DFP0PW#DfC^>2oPQ346H* z7Z=D#C=`u^qBQW1{rIYrte*Qm$MUNeFwM}JVd^Zm@>!Pq>lfKmU%!BPkcC!6C%2Oh zMHHMS=eV|#D09^wk0;sj$DinGBIkX?k8-t7wK$TOg+sASJeK&G>Q!57l*q1{^y;{k zw|$ON_$qCOvEF60ui%1mX*Ymh{sn~Pd_LdF$wd4GG`ZDjOI0)I-b=6(i6lGt;6og? zAMcmQC$1y%qINtq4HRD=+n8c8ugX%YZJeK-FFc7Tns+|@tS8G)}#@9R&`L+wdTYOCky4!yLw=I!tA1A?RBaF|kq+=iySpD7BN zWr>o<+|b#}2DAzsd*C=27xRKue*k!c&A_PFm>K|Y%Yo3+8iBJ9pJpL8p*H7Ny0fJB zs$kiaUYsu$&!T^vc+dnP8T4>sPE^B#t$+ki2tAVVpavLBXpMpMGE%>c7KYz@zM!~J zCNk|d4GY-1bt^wDR_(7nba0L0?phPgj&C57`Kmt*aqZ~7p<}@}C7z7oo)_f-O30_k3YB-` zc}^bF0+NilINky#4H%$ANAy-b4dXzLB;lk3M@j+Il!apHqy9jk4t6qyS=>osv{74) zzzuO2jetFDLW+EF@T4a4bP$P{D`xOFn%)E-RM{Bw@e2({^bx&vQR=-#3uQ3{8`3mY2if8terYv}$rMO2%5#|yqV z53BLyMas$d1u?eR4CCv(!hvI(sFXj6+IjZQ%E`_MmQy4l2!~WE6@N=2Y>iHM1ry^^ za=67I;s}gWN(yhtAW?jZ68Wlw^ZpxM@S|i|oT;kba}`DYK7!ycqXznGS63G|YqjmV z-%G&Asl!7W`AfV_s-ss%!_SrES2~a3B%n${|+CLV@euIK&oQ_YW?$2 zsBT7Vb}q`+B#Z?f+SS$hrE;ZJi9(x3m-K6t~|e zaV2y-NUyiGZxfmt8`9ZK=Bffu$p*vC!4lu|M93{fOpwcE;`^&WxtBuK;wW3vRA(@z zApIMtX7gc8D10;k6Ydgv z#EX_DoCFJFi!)op{MO>S$Ar-aaCaVRlgRLY{O)H^5P(z@0VZKnPcDmai z1q)n<0do1mH!v!2C-P`juTyf(ezkq3Or);g?^~3J#lK-$_JrQP{@aji0&fK^pQ8AsVZsjdzUAnB87 zzz`m{qte1do{3uQqq=F#!|$v^mU{wzUI7Wh73e@bi+}YyWc}N!;CDYZhui|9)~eu! zxe~)h_o1+S0!`XTj7Lr)FBPwU1z!IW6s|`Q+%G7V`l^3hrChk?!w01Tr>6zD(;t^Al-s6jd<|CC<8iS5aGuzAzPKu%K5G`btGzq&A6r0b`NWS{~X?vfOH# zB?ziA`4u2~{7~DPYH+T*<;<<23#_U#Qr9-Kbu@h^Va)B?p5E?Xx#wcCA@^3o8%Z~F zDPn`AzoFmN!;(9SKv)3}Uj|(u6l5;cmTU4xtLc>2qO=X#P-Zk)K7AX<-*4 zGdm+#3^hqBy0X)#O(A+7+;XFWcFvJi^C6it;|9UJftp-1g+UW(^P%g4OhY1dL%RVz zncv|~EyEDe$ZD|!VJ*TOcw-Gbw$z+U)%5*e5Gq%5I9Q6nyBm{a2pxKB1V?-ayfwH! zPGms-a=uJ`Pz6dwlBw>s8oW0w4@fjnoezg{oUCepWrhcfoIVYk)R)}~oISlgLePhb)S3N@cO>pjk=3Sw<==kC=s&o}pD zO!aRBj8!#}lOW|>b8UoRdx>&>Zy{TslqLB@S4iJRy;zphn%uU{?J)76ros59Gv4K$ ze!GVS%W0@@yOX*GFKqjhU^P=^VJIVj?QrvG3>%ueN$(RN@;2RUxQw{kdqVbaGfiE9 z59LxhTr3sCZ?`qhtu@h07pUaTu0k?#yW384g!uGWNqk=mvb#*-kZ=rMr||AbbV$QF zJ*nQowC*sn|HH>FK6Hax?SfUi3fpaF>Rln)@a`p=0tm3{1*bcuv7EmBj%60ynR~F^ zB)Hnc=|^S1^M>QeYUssyJ`{=F^YE!Y>h~@U35nAfrTU-_OuWaJZPtjAs{nXALRu@) zO%T|5owbvKC6Y_alaZV;v%IOM`)M`|<=_n^OumaA7b(3LJ;Qd_oc>3dxZQ0r`3;rC zHYAI;xH7?DhgOz`W4A|^;hRJ$4OO^sC@RGCB5#z_=|IgQQ0)VB*B z4}y5NW6L`{NEeIfVJ<^X=1KQ+|Ic`L`$({4bcS?fY5rJMLOZ_68C>p4o!i=(4cSRP zR+wgNnygB6?;Wp@qdm&tL^k(LdZAFE%qr^kTXEjNhU}#v2=C=qP&A&hHh+U;C;fZB z4IU4p2j7^Qq5snF^ACW-Uu`E`Rfnp&Sj_E|Qxz=Bpy?Vqe#WlB-kmgsNLDHigH|Xz zX)b1^1cT#qVW_s3hYxJFeJYGII6y|%_~mRidz<_A54F{9(pu2eOz`-9f~lx0hh-Lx3ZO*`*OC{kXQsDO#59)roE>Hi`!+4 z6=q1$^yKm=G!_^cj5^qwGe#FBU(nM~Zd(TBzRgg<2w+j;wd|r#RcK<@rKKVl%y(=u z_Tgi(G=;nUQC(NHFP&bmo5q0wUyzCkq}Nt&v-@-zyl4i~ z%NBs0ThEn|LT%4`w<1<9!iL@oUt_Q0*;F0gvDX9(LEt){*Hh@tl!dl_gNday6uLK| zoyvM9rnEq&~P1slL0X@X+!7U+B9F_7&NP_ynFYOzYW z0xLUm{N7{0{~6n6J0(~<6VlkQr_N`Yy%5H_uMGHVI z7C=&c@Wa0@g2$I^<%t;s*=zv8;A^Tkv{DkSS1o2eFNwk$j2FIzYP&cTs2+SsH8*Pa zHnZA~1xWz6oM0%+VX!KkifCn7YDTa9K#chvfl%vkB(`Sv^mnT+DJA{8i6zuvBZu21O4BgJ-Xif z!__CsvTA^d8cNhF;P-gp&ga&{_wHW+Q8ftEh_$a&fo!qF8-dlzPAKHxqR7&6H0Mk3 zVwP8QZK1B~o2u=rcMvpyT`RBOUrk$Wx{NDf0(iY1B$+)EB}tr9Dp#iAeVm84ZCa&V z4%P0%uBeyke<59XHk(sH)q9yPjJCxBTNx_{u#m!EdfU4)InV zNpR3p6BA;8(!e%HR{s!N#+I(uW$ za$)(JtR#WQC#3*Wi)I2g$H zqoZYjhI}IRd_`&$d}vjE{m5JJ!$)3+Pkdw!eD$;`prS|r%$h7*b^AYU3ALcl>pdi! z%U0_MJ}`ML@4_8m&iFL*`{6*~f+gE}_XP{cU%{+ykeH-}><_NV1f{EcQazwl20|DL| z`i;_tt=;3g`^w|+t1qA_Ac25?wa*{;7m|H{H%#Nza;akOU@rG3Cci3BytCkj+mkSF`}VQI$lPJfaS!Po8MbIbbr(nLAgUICYv(-_$ILiXUCMFnp^d z!!?&*4(FY77SxF)sN^%qnj%kXd-yy<4LAAKr%ZkT+&dJ~LI1>r{zyokh+ z?Fst)59RY*sCK%JU{^ga2Wv$mSLm8{Cuya#4x4Lk>+O}(g#tYMt&f3MOCyg(gDx4b zq@WTpdL%|qhH}FUIP}PK;I`lY7EU|&G9DgMJ=7?hrdQJNJ|tapJ&^6|V(ZtfVT+e8 zvtM1fQdqcngS2jQ2k_)tnsy%uulA|(KZ=F?uPc>un=`q=y>CwfPcw@%pRYI3*v(dHo?!HSZTEl3~(*)_lMrZ z0Q4!Ejzr`x7O3o&i~{OgQPK2;0l)gV>Xn-;L7JE=RmA63Y%yP5-3vZnNSM$Rg@9Lr zGTsTA$Zm=O`096VgUdg85ga`4Fvu6OK$Ucq<|WWv9XH>d(~5b9Dw)v`CIp_$GBj2x>pcJaCqMfYJ8(iPW91&k@O4(~VC{<^vw!ui<1D z)H&ZP%B-or@s&s(ft|x-bgq+y1t>|PLEgRv!fbgA$Hwm=NWJQ^FGVy zTZ7lrPubdR>)I78;aAxMf4-Mrb6G1g9S@^YU`9F1j6y%FXcs?kni^GJnAT53j0DspEmZfPcGUdEZedL{&2&2VEPi^ zO{5?Ys|Pg_1vQKmjK`0GYE<4->xKbRnw&}-NkWuc(=X{}Gdm6x1rUU<2IKt?RCns zM3*b3S%+o`<9k^!@&kYy5;Q!dzAfn9q@kw}fRny^KU{p|B-)hL@19*DXLS?T#Y_Dh zo-!=s`-Wk@K%EF-*IQcdQNh{{)bk${S@3y%7o$*oxlk(2q+SlH#Jdukjd8#9&2tVH zrj4kF5ZZlH#^5z-7710h6iOhZh=4Z`1IZUcr;-joFpmd(Y6#{XbvB%J{A{@XJKu+j z9i<#+uv~HR$kgMegzA3@+9mEBXV`=W)lMVwy%7_V6Ic9fc|qi8kYA z`+Ij!_uN=C2A{j~V&l?}Um}ksfkFUYVO2Vv@w_NHMHK_~=bv#7RJ1%i{P#aXy1NU5 z`vnXZ_d}(S0V|UMmP>MQk8c%c zj!6jPlRhD#VvtmEXJHeLz{s}ZQNe>6$>Wp33MS$7>u!as&N&D!IsQ;6nO=~SBS4O% zP$(mydqbSo@C#+2bj0>GtKl2p{i$}(Q!jh{!O%U$V&PJ@_xfv+cS@b5@5yE}mz;Re zWbM1xoaLD_XO_VHNzj!9Dr72NF!BE;nCP5Xl`@Fgb_nA6f9CrSKu=#E{PkNGL2pMp zz6XWJK!=T57a)CO+6v@N8M+D@TiuyuuW#sPi#MVd-QF+j)O8Jkz2a2|(0V+gY5L6- zt+Jw~l6sG|C6M>v4XqZGase})$9(*GK9YUkPDMi3>t*eNT&a|NWz7~D4?ZrbDIQ`i z$%x&W2nnfZ5RySJ#Qh!!1wDda^$9-m6uq6Gp-Nx5sSg&uz6dN$Ll@i6Gb?BYG!d{O z_3I%oiP6kwnav(qCp>_32Wri+!qEBc4X{o?T|k_87`-rYM7>zrvJzh0yadB2LG<7P zYBL9>x>Cl=_Vpx-qCIJhE30`lOebC_HQ#_MdaPe7EgXNYwIt`{lgCcf(-xohGHwV4yT?F?*I* z@qAR2#A7NIV;nAk|J~pZ74s_yG8Ei}70ykQ#&fkH3XMm?9V+p@u3T(*yKE+~T*(mn zH50X+3ZX#Y8~uI#--o@|?}2|$EE@eHdVaT*5zhpW01c=zL-`jJ-lJAJ5J(_NKD4Za?l^+O|#uTf$W_NXc?hhQ53pV zMP7}770qDrF1L7NZ(%HFRnhB0p*{n@_L_XTGzrgpB$__9{RsF$9x4tNYs}qVjivs7dQ*Vi T`bd?u00000NkvXXu0mjfr8{9j literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/Square284x284Logo.png b/iron-tauri-client/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..60d77071baa8b883323101d359c8638470573033 GIT binary patch literal 79501 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 literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/Square310x310Logo.png b/iron-tauri-client/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e9850603617d51ec008c12acaea76e1b4d6b61e0 GIT binary patch literal 91918 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

cAks6o;9~o`BXJ9d5^DWv8@MU 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 DKvl3w literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/Square71x71Logo.png b/iron-tauri-client/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdc261210ff26639f7e48168acff8736f372d51 GIT binary patch literal 8581 zcmV;0A$s14P)Yp`I5#+C$=h#E_L8uKhqjWNoLn%IdYYJy!9 zMFpt}(qt$@8K(DJPu=g|=iY&}T87sg7gsd7pm3578SX z9=fhC6h)B*gTXpQ(U`9Jj?0*2Z;ej6rcIP_UBBPINfaff>;4aAz7iSt{~`_}Fq|G`~fQ54yy>s$GCaTxr!-yeJr>+!YoerOLF#-LCr^xwkX zfg2K5*Y68l)_u;w-h=<}>%QOMUfuUF1wmv!pZ~@~bdT>RoHSKEN=yyf-MgxRPt#s= zC|1u%&*%Fp(|ZtNjx5Q24yE@Tsu=ZrT2<9S@EihQI=~whxUj`>tn+Q#Cam1OOYw#YLYSzZuH)$|SU z)=`#anFn#NLt-3cRngWp{b9p2u5~afzM#{_4sy>u<9KoKu)|4;G*a8HYMS%Z(&(C+ zhJMVkTDm8C!1odaTUPZa@400B%*jVqQD=BCZQEH(^XI?ozP4n8hzpvsD66unK5rO_ zix^}7Z`>!9IsE=JG*#gfwaaq??5(>mW~}~GjEgypxfWaXSmK#qPh;gp`EYqH=O7kE z;^CzG!~c2l9|)4qXy{HLF@VWs(e92SToPXw3#f8kGx)5x+G@aZ+& z3r1ArIh*IrVJxijJ9*>)?kOx33`CI_N)B=2>ABYg{r~-nU6TQpy&5bhdhpb1bxqY3Juoph6iEL4`m-5pUTa2J%2^Yu zo?|5eh2sq;pHB%X^p^fzh7nVlLN3SC#ED0guzP=fp8L}a&SuM(e8gD$GW*@T&Sw>Q zSxiv;7b;lka5#JmCdP>xFDZHxR;k4Z2Cw4R2?PR*_;poXAEZdiw*R_l5<+>o)zVzg zW?wy%-SNvA?3!s~UB9L?-RB>BsIpfNL72}?ym9K7DwcTnHzs3UZ1aXS?8-Bbb#9nG zn&pK9~! zN3frsF~MH+{#%|8v5o(*?wK)xFVORHic0)jut!YAz5LE|zdo6{oBnAhywN1w(*2Z%l1%s}`mQFJEL*@uVBymZJ=!0+RyEeeIQS;MZ~ zHXlu_VWYGD&$C!=Fu0XOQRz)0=uPaqj^iT!g`(oTFbSnc3Cv8=`DacQLdgcVe`!Ik zVYyY^qi|ifxO-rzfw(6nGT1KdeQ(c0#1y_Y3C!1JDb6BtqnM_djn}+zNt(8pofRsZ zKE8ymnK@n9x^*Y{iv|h7+*}GOLJ))Si^72?$le%7lzeW7HP69YGY6E@S_Ws3Iu^ zIobuM9yyp@ede+5kB=Y3*sj-EC(l%Fll|^vzhXIA*|&J%;L{6HB<|vKDy=AErDdhl zzYZt@X<(7z>~M)M;42A+f~ELOI1Su;9{Krs!}<^E?_rm!s3;c#C#J&9f6e26_$lIO zqZ_s1U95#Yd;L^)*0`beSz|yWB;TAAMjkjI_m&}J?1HPP{u_*B?Cz?vJm;<7UnmXw zk2w?%RxrQN$X@>Q@5Na+J#%R!+VxCsUhb?=Zq^e%zfQWU)$Z7`W2ElW56dmeJ3Tum z`xwoqSHVEJF2WU#A~=>6NhXu^M$%Z{RM+@Udu!YLK2?4GWjpqySTu%NiZ5=j*>wRt z=bS&?G4tgsufK(oawSt^bwXmvBQ)cdzuW&>ULy;#cDLYKHzBlp!^nGW93i!W3IJDM z-_aR4Z1jK<``w4Hl=DvbIT=chtBZ}|+~40uSKs=?(8{Vl$7L5}JubM+0+1@2?r+h3 zTE3zw9(VB$cnbf`qsj%kU_!*JdB?KJGK_dM9{0y$F`4#V%mlS<5>)eU|Is2wtb4P`Nh>g%_*oj+I5rd5?l8-ntAiz+?PMuDP)BLI9Z$yFZ(o27kXWI9xQ9* zD;rI_wg>F zI5#9RQT}CTN5`|AH&XAq9EZ#}-5w;EmboAt$|?;7)GihS7Zi7{Ct$g{dGfmx>E=s4yqw8H|S&{DVx#V>JYcm>9sC0f#tfgYk-O zoe^Q(ijQgOvbF4mk9UeiIU$U}ozvRV@?cu3un%@(2MWky1~+mtKu$=N2QrnHm)`6P z>bJ!mQgebn28B=n)*xN$@C+ZXk4R7h)VCy?#vM^Y1Nu}@AXq@6>Vpv!;sJzMp+u~m zcJFSX&%bJ*E%nXBiDop?MX_jckS6*)TEWm>c3McY*jgHKO)Jg)LPaju8XB=0C zf<2oWI(^g_6{s_zP|Q#;VS!pBHbo49vO)@t?yFHqa%t19F0vdmmBkzfnJk6Xp`b3* z?bto7uD0$yj7{B-$8?MStebQmO5=Ej0agqF4$K8-;|;ox9M@|#3K@RromWtpcO7W- zNI-=PJQb16C<#w52uk$Zvn#0}Ka1X6ZPE4?iEKfkK7ISpkg7pcSyD=c`2}e2gsD9e zqfOh}X=_u029*gkwo;=tTRW&DZUSXp&p0p?PnaUJS+c3I>CJT6;eLaVQBH2oZSdS{ z@O%vtNJ~!*B=s=#0IF&LnPX`@o)`x*HWuI-MJsl3IwNq8!a|Z84u^`0N{jvn1(=F- z46IRvsL5zpsZI}E+>f?*5dC#gj6imv2Prgh-0^heu#pt-`AJh$UKUUYX}z+noD%Ua z+PQldt=Jl&yr4zrj||e6TiU6vElCQmW#O1uA3^u)16rHf97}UeuR%w%GLWdo9RD0wt0$s_H+OMhqE77DyjTX>vTgL0sSmcY>pjK8A9# z^GO5Ud38lQJk6l{&#j=b6&iH`)FMe&h$L;tVnTK(JNv}UadfwWP$UoGwHW@6+Lk>4 z{jF1aI(NB;ob%fTvjSkrz8Vx!^{ocTPG(6c=TkJ^PeOYQ}pF5sQu)7@{+d z$c3`Y=*dL@R!1eQBB`#AMvfSnz5%0D)y%xR@v_`@9SBDf4H-0q)^FTEIy9MiOPguL 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

qFpao)r!=fej)c4#z7eLc>kHd%$>2(B(W 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/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 z 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

&X7QTl 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

lu|0?8pj|4C6hC{S68n?p_ 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%0DWL(}hiS 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

HME|<$`iA|gjN`QN3ZEdZAf&RV^Rmzo@ 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

Tw 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

AmP|!s@pY!tzu&^+PDL^s!QxJC$qppdHt1Q4d z#4Q|DUa3+Qe!X`RrZ63O!C)A|J{vCC-Uh8PKiq!rad>2S0bdsalSVD`;iUEwnTG~1 zDjXuinF%;nIaoym$_3=dFU$eQ~)s)Kg`+SPW z=e;eFNZzKa`WHqzq=q9T|kklHt->Ew^Gyv6j$LbvV z=%$0==QcK>EW$Ng6Y!EN)`O zq7zVd1nPVc5w8O5@9T%5fgxybZpGALh-U(*Qb%#cj@5TkYJ%!qv;~I|Pe?{lkb}f@ ztYFSR$1DEmH=DSutGt&Im4IF3VF9Wfs3IsiHIs+A`82d377+1Nq1lh#Kx-0mr3y^U zFY>88oYTJ%;B&>Et?U6bh6AGCz^z}BllvUjg!_-Drl!W=_ZJd!fo^MSTaV}X=Oe?z zmn<$W($r=H&y8LxmxnM#`ONOF?w9)gzF*+loP$45c)A)D06*CS1N|E;%e-Y|WVDwM zcvrRw9p*2>u%K$1b}pCQ?)CYn@%Em_{iI984nZf@-qrs1qTpV790`tyxI)k-jjwqA0B}UL@<>X z68HfVBpSR+kKBGLAfnj@x@h$!{(9umCNw1jGYA@OvsS zfFXg7-pRzwJQPgQLn>$C)2VgWrrLkR78Kf@(_jFuLSPNeM9k&*Q=6Kbf-}=I-zG5d z_h19~DhNly(MU9U`|RxOfY;}%)<&O+EDy@RZBLAkH=!r+Z1fENqe8vq4O61m6u@IR z;b`?)JQn*r3jf7;ze;VL6o<oq*d8&w=4Zw_o$}-Wy%^=JR?UZut$t{jZ7kU@ETJzGWL+xbs33TtC!W^cqTV zT`Q`bg^SIJPC;Z4BEc{!f+Xa#2tH;Oxl-d*c_jRV7dWzL$FaafaC0GBf!WC!jFS@( z3v1xTaHbEz!LY{;5lt0eN;&XW$Kkr&t?;MM zyAb-L=m+N~@qo)wAuH6hfyS!i&QvzWn?}#@knUBeMbA}m#}?kOQ$BmB8s(a#h(AKm=PlH3wA-kkB*m z$In~`FMC=yMD!|DN*Gh4+w3t6c;G|^zH`qEl#M1X6x6&!4oViuyzNDeFw_b;^e0 z7)hCM^L;0vsKt23!?Fs{-=xB;uigUB*bsqGHH8_ADpc`zRV4vQpWZ0BU!#6xP@>8DX7Pykwh8jMu6{?*X)AlUA7(~ z2>v-$O5J(*l%bQeCj96($6(ry@x~pf6nSecZ`_%?3b%)9$UE?@BdGv3UHAR$_G>ZP(R3`dMGJUBcH_Z%Dp z1u+fN3Ib+8p+zskA3c2to_9$HL|Ga%lP3HJPkT;RdR&#f;v5XDl*7?P{Mo;k^-ajH z<0z*NL8(1oCr0J`DheJ?CD7W^c73BUSyKRycA9Y;8yhz*9!Q?u!gPylf`Q=U8v9Y9 zNpo`(70X;hF*b&G%r&X?q|`EZp<$y`orhIHD^0rWSj7;!dj+GIb@DIgY&#e4BMo@wzaI8!Z`Nt&M$yzNZLIH&$g&Edl3QKX9k18Zg`x+0CzoMEYJLYza>)8%2~g+ zSSVCi)L>75?Fm~6NZgH_j1t5+=QEuY)b!WqVR}V2Pzh{ z_qIWIN4F^Tb*uZ_CL3U9UZ#&xS-2H?F8HN$Mj-|rEo~5w#$hHk3rrpxT{gn=h`7Td za16Zw57iB5LHNzdD(vWHu(OTA96En~-oR8bGtl1}fVVtn2kbmtfM4Bz06n4#Wbw>d zice6jQHwDuRb8>5IpDxLeErs*1avmXVLW3h-@g5@Gn<|b4s7VVetK&9!+iMb?`i=A zfTtFU#nFJ@_X|VUUyNG7k!(Xti#@=F1S

?JKuXoE&lW|a1tz3C~yVd^G^z`%?89XE} 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 XBa@{W4;9neib#h9&S!UK#=-kfKD)K?%V&zMf_o z5Q#=%>z1u>&uuruNIn6Q-35#SqJc!EAkhd>H@iThu7s3XY;(nBC(|jo>DF7GM?L(p z0|yT6X*OH5?kwByz;fB&l}rC8lgaRsB}@K0o^B1Dl01#Yt$r`X*k7QQ`C-!_CASX| z}EX?gcp*Ly-Vs z>h3|Ol4Q%YyRj3e4%}X^m&J46VITnj2;|}_#-G=3TQu_aMrz`Px6!aaMngYnt~fOT z8OTPFmPh&x}LN+5zihIXRhP4IINF&Jpv z$*bT4e(*k%V*He;FVLhgiyP8VJPy%R3iq_kM+j4iAfE%kllG}&pvjYlNKtw3-w}DD zQ0#g1$lsx;>Ici^$_t*|wy(~2<$hV{)hYO0-HJwE^?-#R7Pu7C0T*X*&-EbkUWYXs z4X9Qsdaz2bUmW0d?puXdhiHM*TA<&LJb(L&0f4(M2&5wb0QCObH2ePCI=W&Z582WT zT{t^8`%EUA{pfAC-+o|laFAy%@^FSl^u3$UKrd|Ag!oNf5hU^193p}p3?CXcXX7-} z;;pu+1d=EBQU^>*%yGQZKakwAKf!Bq>9_;Fc&MME0+NcTDhX03ihDogjsPa0!1IL} zX9y&okCf)agQ)a|BO;ghW5|xc-28N_R&Q9r@(ch#AeX8MP;oUHjkaZ4u67|~%?P7g zpdfG8*Pn-I3=uqTX!3CAA9({5zcZQ0n}dYoX$Zvrc(q;lZc&!b8vPgVQuT2)DaN3dHXR&Kw?kFi}&9 zio%A+#`ne($zLxPir>BeyWcxdtyTrso?aaHL~wH% z{5I+hK<$BfQxDv@l1i;TlelSPymsFm+TmvUdim`O2W9?Kbpd%7q$7D}K#c#JT8HNp z$Vvnz&d$QOzWV@t_3Qrxk3ai7%vI|=R%kQ#oV-}ht%`PfdV1ImH|*G(h{t}VSS~yZ zZf3Rsmp01xl8rwpGK}}aiWMs&^?F@i+``o#{Bv~_zN;Edq+iMN3*6ZvUfnI>Wo+Uak1H2LhZ@sU$r9_~Qqrr>Fl}kmO&BB{IiF zN#P_P*9%m#$G{tKCGarE3wsa3-+%p^aR2=e!}OUMWc*MUAlMg7$DMZRy+!`Luyde@ zmmM<4v)g_WtiU~fV)Dq5phJ`u9w^|=io6^dVkMLD81&}y$WAhD^j$pU2y|UhVmEHy zyyO3k$K&GF{GI{{0KgkkF#ZqOOeWcGcNMo~F5hLGlBW$EjmnVACP0-LFVB$#o2PR+ z2)`|)>>Tv|A({aeP9w~Z;B%?$M{tcjxV6PLKWP5G3|(7-hDB8a6#S>Sx!VK;Y?{#@ zgOd|Q_~!Q>hp+t8_u#30$DrEkaO#ohe^nMaE+OQP@4^m;BW&4sA0Ww zh0_Mr5!tOI-5)-8HU_&iy3aMJ{oSm z_Z1Q9x&{YNo`8S4|J(4*@BBR++_wwN?hG*1AEC<5_YM6kF|EE;`rKt-_^kq6zh`K*5-B=aU;hmReDum1ht!q>n4cX0CL z5xk#9_!@jC^4?a98zT9D+55*^b@9?eSO^O^N(iJ-3>0J*sh0qFNr-%_;aj9?f^;g5 zKtSeNg+I&TaDw^Yli`6fCx`=FHzEaJ!SyFyO=Gocbrn!2U|FC9K#_X{w$0o1CKDk@ z#1xA5^8_G)C-T@7dj}iigfe>na=aHeZIUtuxPovuy1OwQKH|%5*kLo*d#8O&6gM>! zlJN#ZGvN8Xhv4u3_8;Lp5BvZoXJ&z_-$jZWN{lBG+B&_w$=mzVFc9>;1{1g81Nq4z0C3CJ zs5kv0<9{`cjz2;g*B(@>HGwX#C7_|LmdT_?<_i;FL}R|ZR&7#?9hd3y%6|ES(4)st z0SKxdbIrq72uegOSso9SU1}GE|0w88l zjiS{Exk-bL$(<154XB}5Di(&YDuS@^zIlkk@$xbR(=vng832GlF2ShLhUrq)vPd(w zsRY3DK1GDusU%Wus=||PylyvqkSK2!L<|6x?u6Zh9m)rAy;pCed!c{dsdd}jAdP5J zzc7n85^0pn@cgq+!{2@FpW(ar{}5&hC45~4>3)X~2r)F1a}uNkZOipQc%wprat{=z z)9tdU)2H5=$Yws9&h`G=h%A)rjb^3My!x5Iq+E!C^<)12jQ^{p=)FEb{BMed3PJet z`bPlXez@?rym}zuT)qK$|JM){vPdN2#A2~!2x>kxH8p=Lg*JEtKI#cz15fO8_ce1{ z^%58%qm0+-z7waXkiGi{4B090tLXvg9~^`*h7frIF!*}Ib_0YSU~(KU7XUmx!Se;s zu+xkHS;eaoXARvn0+&Z5$Aof|!XXv+NZV61ZnXfNkKT9S`Coq$gaEE5)#YuFPNxI& zg#!01$k>vCAgAlmri$?fNPP{=7$3j0Lb}# z{(rUF?Ys4^;ZW}^hSuNYjkes`9ejn-UZyF41_F5D#jMY(sp@#8NNw9Epi%=~U;Rg>r0AKpb z*Wr=J_Cl>r;Q$2>8FW+{wrO!i!@Ym6(;rtNGSwJ+iA9tpPt!DvKmu<1#3xCIRzvbos zgnk*IzutVR`)UiFmy&_Q;qb`WvuDQ*+E;?$@HYJ9^;71*><;v?s5>9Nhd4R~Pam z+zc8oPPsk=_Sr%zkq5gR9$t`Xc*p{ja277@g=FSH0ss)mD{ubulos=vcDVVu5^hRW z61hR=ZG3Gv<;J33=eUtYIRZ?H;${uwCY8CzLUDSk@^t|Ko!fNt0WgTKh!kdUpjMbe zG+P$0G9bVpAbppTMaWXEZzh6%2iPZt~YjmZ1HNveSPoIp9g>p081s4 z($z2|fm|CQW0goGoU)sMy5O<9ESh*F(*PG(rgLk;@%l|%Wf0@-k4z>LS-pDoA3yoz z6D!f1wk07dxNF^TLxMaU;6Mgr{)4>{*s>xAxonna^iNFA!@=Vvm??FjV^q-4GdOvo zhGD(0fT?TTSg%45Ky7@fE!Tp9_9%bHZS286r$EkzEpo%ps{$5sh?ti^?9TdPi_(4F z>R>PDh`xWvf&c*o03eV{L;wpNzi^*)SGc?&;~7U36O@*NOORTtsl3&1Pi`p`Ca8h1aj})fV>Ul>mxY69g9`hPRgT zGCjlu+(`S``iSIJ(T02`1l!jwfz9hzz=q{CwKE5btia4%1)hE31nheHML2ML7P|O& zf(xfkO~CiQ_g!KZxRGA9b{%CJbCyt|*uH15xlRFhrk4Bq?&l^-pX(6D{CEL)g#UTp zj-O}b=Hx)o04M+efn2V#;TzC#EBPhC>)-`c`cEB61dPRFyj!M0K2BYtxX5N8lM$HZzqrPgKVF5myA;PAnC;zxwt^6(UvFT1w4siVm&tXT9HhE^^Ock%D z_#~in6Cd!%xy@;kfiU57>vMk(m!#cQa+Zc=v z_d;0gf-F&|Py>21DH!Nk1tWbnf&dBj9G-{c^IcBuA3t^i!vSCCAw5NsVSM!}e4gyS zs35o<{J=Tqgz!=!Sg%Dt&OP5=+ z?|S`|_{TxI?PvA72;Hq$a~AsU34)u=PVqpCD1E_A+$qjY!wA4z)*)RE{+5d|Zv97jPM(2vh<8-yL z|G-|j79b{&EB}pXC*T@m-@X5PUqq^WjU-9GO~dpS1Awb)`n_a1-eT9js%3_RTZryA zkZJoHWYKQJbv{Ntx|ry&7{>ZnFB^il|I}u@qst)q!#z-VU@x>gIcA?+9kYP&xv4-f{!H zTVlU$rcuuFkJu=uJrt5M556s^!E0KCnio`adkl; z*HqZl)RdD-rCJ0GsVNZOLtb;JD**w1lc~jP${iJb^;iIJz41bwTCL_xO-=qM^!~?a zs*&iJLNYGEwzUKBmfLTHn>Vb09PU-YYVds+sa`$MJlm*zo*ltoySu zxcin(@cwt+1?$FpKx-Cw36F@%M7MCcpn?&p{jU;*sHxz4G(l_CVa2jOcz5h}^!iQc z{^&(GJ4dqw452bxu#elvH}&NEe;0M{yWt#XdQ}hrdPgji$)I7Lpy4bIb!fXVDew|i z??sd`|39Avtg7mCGMPLU#4=w82mpV$bUMw@fbx=Bo}1$Jr@MOMaAu7%^=;ead*o`o zZ!)y~g9GC7l`B^7+p}lM?%lhGcv&9mgqZBW`td$^$KAKUEjzYDF2bPGtnu{QXe)^Ih zsbu3G5;%CKs*bDRi89w9BiIy$-kzRQ$TEBhsc(y2VM2gFMg9Z;h6e4`o7VsJ>60h^ zYpc;pNFoAI5!j7ua`4`_-UN4STZ17v-0cP$e_I2l$e_kEAf`q@P7eV~i~-;trLLf~ zuWeBS$?CvJsD*kX4++JAshN40ucBjsdwZ^ifMEItmX3P`(-Sqs}2T>LY_aux2EOMwfw#N`PW_ju-|h z6aj`FiKs*XA{ok#M5*;CyHx7` zl?(!N^A((2F30-%`hRfd%&Et(26zeNnr|a#$BrF6l}hEtxw*NdC`mjQ(6;O=J@KMO zT0ATytXjEhzEY`v4%eY|r3;$k{*ov<7`oVY_|Tyb)yvhq;MhVUDzX)0{qS@5-3&Xn ztbd|jD zoIG*_zWSxF!ascdewalHFiZ_VaF-4w75M4fH^I-p?Iu`1+5@tnqhZGvqWRtE`HRsW z5aT@{AcZI+2oMNdsBzwS$i`SB6A%C(+ShHJ_Xz0k%|bFBf?BN&b8`jg=o-&jY-`3~ zwkN-B`O0N4%uY|wP#^y*nG;0cm)G-ML3;jI(G%;pC>7bw(!Ux2fare#WB(_|$H%{T z_UyzFUFX0h007so@RH4HwYm>~t30v*w;(v=?X(un!oDI9Kt|fMEdiOK=9Vp6zJ~ks z2N-U!uMhyx;6Hn4cu6?FjDz5{>v_cXS)~@J-cfIX4xO?Yn$fu*+vnEDRLZ**A zeVa@FhoHQN4*&xhjXzV6wQ`LwdH>WGfq*(^E|8_O4IL?d8^UT7fxZpRRvQg}2im#; zt!@|U^(yZ$IMUMtxojFgBm_jX4v46SBxD%`1RPD>fd_Z(hsU4W z3v+D)Usndxok2pSNP?oMmDQ_OeQ9QP<}qYSoWTAE03eW8&Ju+Ru?z1iJP@Q6@{h4BfLD1oL*UVfVy-FNZsR}=e^2l?za?AL8CYi|NM<_ z!I!@Bw{Yb2B!pCj)B7|haQnJ7@Qd%b5pGzX;c-I8Y+~pS>3yW~O^hS5crQp8TV&xL z3o(}v)xu>##@7zrILLsKQJ&5LJ#BDCnqO!_}2- z4Gs-Ha`MFSM+k&LK>uIgo5#!CMDN_WVaJZQwA$@k3WWk^1q8Nu64vDl4Y-d)BEtCc z@wv&#v!8SK=VebOnWi+OjT6XK`y_fM^7W5_* z)DiQ<}y%k@xgo)-v6#U;kK-oFJ-;ehS&hYROh9Q6l zjvYJtIPDiw*1;;h?g4-p3We-7YggZb9_JmEYQ;gDE!d88HCobfFcFW%D=Sv4_`>w; z%%d1;xLg2>B!Xyf+_-56@=AX-b@t2#UF%vA$r8s$d*Nr_^;2;79XCQx8jU})Z6*aW z(C|u;EQDfN5Mu}ekdYJB1nyncHTuY0QDUy(&Hd-QmARe$1bQx|LmDkAAA*EJ03iy^ zdIRPvMX0nXl;>~|V6>}{OD3Qv5r%HP3|4&-Y^{zVL!0LXIS4AcCWFJ11^D5vXW>VC zjzXntp>rVevE=xAoOOwW)KXu6{};NQ_LE($6L|jt00`t#bOUZBy{zcEE#}oHV0weoQF)b;TkpE^pR)`PE5_g7r*+q@Ze*+p`lSm zKT-8GRgl4LH;lo1-?jsWvS{3K!;92n7{NprV~BvBzmi*q-bD}h`WKA9r|R6Ugbt?} z9WlZc0?iK>(AYC%5m1q#qG=-4D8oR1A7G>bPM(~DTBFHKN48OE4rcoMwl7<;a`)-u zN2lO21_gQso}q_FiGWXMGMQgMz?7prfYToIRMwM@ux&OylVZ*hd#IhJ@Zc>@Eq%QJG3A8SZ%n1hCN;qpiS+qQ_0kkW5i$-Snv=2fR4(H6FM?!0A(rfZ*?m^iaZZ?|lWw~H%BvhXwSyc6Dj=QbGZNubBw zM&BL7Y;v3%d?}9mDW2mYIT0y%8{_b%N#GwTf8OWAGyEP@&s_hx>$x|6LS*We>_%(oGhh!Ab+nNT}Ept|Z`iry;2`Vie9)0l` zeEUbw!zm0SnA8&iodCCGF}|EE3YkP=|LolKM_TQs34!+?0DwR)Nzu6FfZ>Rc%jQ$n zYGt!&nPi0>K4gbtY=#N#b`v5Y2@qjJE*1qrM)OZ|x6vSzf+*si`^JO2;2Yn57^W+2 zo)k#2K?mc2Th=ax_rGl?tRKywg3)=6FT)rD#qaEJ4nmnhP*Ou+;kkH|A#mfT-s}(V zVTfKE5Lj4$_wVLR~m_NqnWd!QX z_52Cj&`f?m%;ER#qxNAYSS}WzTmTFa%H%9`(aWc-e*8|dnK*Rt0Ta{HP;GX2j}asy zpj@p%SYfbaWCX%ahxZcEfszU%Q0WNp)C&jU{wMds!HF`od8QE+6^XntsUV6%G#V*q z63Ne0>(wVwe+Be^0007cEjkT77gJT0X9fobey&z;^qRcKuE>*_EDQzE$j@q}#EtV{ zCW9Vp9BFtN2;?gTJY9)9x=!Hb*=US}ec5|8i@1)4(;;$Aeh0j6pKhZ>|9 zb%=x&7#is1S;%K53eeR|LANE-F|DEg{(*X>Qhc!0YD$+$u?vP_5Ts9!Q}Kd<+_Th$j+!Ubhlh7f zPfwS~gL8s$fY%iO0P>L&aeK?Q&A)Wy$Px7ZPg!a>BuZYZXg)cT##-CX!f(FN+x~(M zlC(w^x2>kXDFGDMjeu+5WVKfN7qxn=3$MK`w3tezt(`k=+JO;(PaipaWMjKkvlM2F z%h2Y9z4Q|56%GT4LZFx-997TCTDk-c7V|yi!8PA!F>$5V2|a7t=u%8c5|Ap;MTK zZt)BVof6-pw$(zuJ_gOM0mskGL$RiV;qc5J=yX~zH(!L|o-7OwjlxXDgh!u#5x)1x zv#|ffEL4%{qoAXS44|xrNr%`7qQ&7Q!>u)I*8H#8*_o$nwd(b^Q3447!1XMCe7jby zT66PrPbA_=9XHl(T}_vnDB0AupJ;Z?bfDHUV5V3{WZp%ZQ-tYq2OfR)AUycQ9yn8K zAo8d9y~?M0(OiMSR1|LAv<5bfA(hygMaqv_4x_?A#VFDkPzB?Rp#+E#1Ojq|C-k`u zJuT1O5xqXSA`dBW9Yo58j6G!@OVmPC;w40aOr?u0&y0ovpHZ zvqmO=D49%c@9pi`gCJm%;_UF+y#)akvW^t+zR}UqUzwkuPa!K{d!G7&5?(wL{+t)+ z8vk%4jPEVRFL{}yEV;ALDeQs7OQTUI7i%2f-=32vPwm0;Uyq>x=2-=H4Ug*$^zdbQ z&%O6-Or{clIypIcC$4E5!#IKul3f5GbE3=f7=R1s0xV_){PjWe1nArpoGo$>vsQq&+~gW6-u*~;8^0)p%lFH?YF_(?zs_0mgGPY zY1RjtRb`{ENsO;@83Rl=8iOt>M9;|8(lqiBIBT1=TYF00`tVg%nS_-J*W} zyAp|1r>pC?V%$!l7`JP?+|XLJ-GRAM5zbD}z`moW;Q0f`;LJ<`bUq?j=2Rf#*}xV= zB?rbw24ML}4{z~lc#1^C`($JmsIwRK2oTg5piAs3M(3Pu;alRnez`DQOaK zqw`cNRTc_`l=1Q9`;HwwK6|YV;>&p67d7%EeFJ??B9U;^uuSh5RMk;b z<<$>G;g6?tgd!n_S}aGR-VupFx6>6a1t9!5SOYw_6pzR4zW$!~8oK`L?QX}y(3waz z@Z`mtd<-_@Ym)|INrF4~elZiY7y$Tyk$!tG3}EB=g^e3GPNCud1cKD=Wpsp;kfyi$ zd-{Iu*s&w;pPD>thVZQn4J6?m_wI!E{`5UCik?4J@lYy^h@rGlyaz(a=25Ai5KW<% z9>u*WxoVqlH?M)U;O69Tf)Dt(Q2d-W9th|i4Qc;2i0wHr=MO<^ehTbX4J5mXA%iwL z5IQtbchrptOchPoeP|L+&DVJUe@3maQNK{$M6Fzg(-YIM=kQ55F;##zCHII3LP)pR zd{{6Ve@jTGQ{7}b^?#f=apaGurzasW{@1qz!+@@T;WT!&T5+1K&i|0r7&-^We|C_K z6lmfG%?ZE_Z=qtCZW>TMIfIIfMwDV)4(UUS^b{#TY6~hco(NT|x8U%xGjL+f0BjzP zprWAq{SJ_?BcsCTcFLev@SKr6$dMEX;WRb!;hw+a(Ti^Q-*&Hg+uQb(DAfToky-_l zjznV`Zi0gE!`4k`H`?gon6P=nQjmD}Kn=e4>ppest+#&spZ@7v zPooj%-O(;(f*ZB$rLf7tg9qE_{r~sPn>Pc7Onz^6c2=hQd=NlNe*w@?k8@RVjej(T z*Hv%$k_)XU&w>m9F#%*06d9wkx?$t{dMiHS@A246JqH}exoYD9FEo@FNo1tjG5f;& z1Nv(1iOd6mXC3;4dwcmDL-*Pc9i^1THF z!SQ55pfXqLg+bLEG9PgZyjvw*7b9*CjsG3ccXS~u0%niA@&^|T5EvJ1jQ8tJfNmA6$|P8Y;~;e? z6hIR_yU;b7)CC+jK^P`Z7vcFA&%jIp_dec8b3`m&a!luwV7_TWrG*ZK;|=wpL}X$d zOaf8(DBBQ_*=u8nUOW#4nzVE~tcxqo9dNUg!pGe?C zPzh2;KVks%78p%be$_c((JX|dC~x`e#Q|JTpQ|FBUkaeO3Y1=#_egWS6q_25pz;zT zgGm2}ff-~}i=a13prCQtwtguTTDQVf{p@;q6 z`R9s0xm{(h(1?fx$Qt)d4{UM(Xd=*~2Ect3=Mm+VJIj`#j2UFI1m z4i?Cp65YNDmYX2Rr_AN^`JY3u^4z|?`}b0oxno~mhrq>Nr=Q6Vi@fMmD#g!B?O$o~ zB6_yYzxl0yeOIwoe$VkUC%g1`oeVtkvuNC{XP$fZz4$qoQi#PM1Bkyh{kFtnkV5Ci z&IW*2O0)1V9f3uf@80R6huCbmU(M->>n@aAaEMLYTp!iEhST1%HM{Xd_1=9xb}di1E@g4(&1 z-9{SR&#vAf-A955vT;~pTe#B3K~kki2d6h;a#UY1Q~ zTY?<=Kc}Y7{IQ|)5zK+{4*)*?QKNUsd8~W621)kY^1lF(Whj=WFemchR%oaYLItX^Sx30G<7+5cX znjGS>eA{~mj2e9q2%yI<002@&raP~gx`FXnq^mf@i0XO_b`_Ke#vLs*PR$m^ARV~% z#w}2m2H;Cy`ZCm-N5z?$8B>zgP3V#D?CI%yoM_YOnW;;r5j~~DFb-@X1Mml^z|r+E+$sx@iby}?^zwOt5?c>`;CVce7i4z6_B%#yp7)OsBxy_c@M&8{X z0UwiS9JHISFmZN*&STM-WWkF8Q{D$Re4YV+wJwQ^ljG=7Ispl!ioM$iC$8w}$^ZLv zne`?#5OC<44*33%VXEDL;OJ@mZj_#$9%p=fT)^+>Pd@*JFC3uO(NSa*kWz=~$!Wmb z*`n{pxd0%%+Kvz~oMh>`wt04b_Lf?`ZbhR}kqp0I{lS5pZF4ZgTLD|{?JnpGbCv*q zOK3Km7#Ft}UYjy)5hSp6>(*(5gM+{Go$q|-Pmo!BU|!m4CSpQ zBo>KD;;pxChWEYiZLoIDh})wd51EB|`)nbS##nzGn3~|@w@txK_#=SrhS>yn3O{%I zZN3ILrjy;MgkaHLM?lf3fmxe_&fE!bS|x}Rh{VSmS_fnMT_We8)i&Yz{m0;`J%`}r zTodZ_Dg=OdBCpNEdDMQ`pgtf}Zs-;2dc%kaeF&l~YKkiUPOVb-QytF@ue~xNke`qQ zIRLLCA&R@vs3R{fKHt|jaHvu)9KlfM_O8}d$RiO242DV~_ZB%lPbi+ddyX3*^i34* zVhp=OTeqRhq8N|QLQgt|k2M!4a+N3gBebwOAR!Hm5dgA?yjOtjg?dE-9NgHu%ZMwb zh3gJ~52$g`({T7CLSC+f9uAe-QB|;s=Z?msFqDfzSkR%{s6x3|MGwBp5a7h_yzA{d zmMt4^y}0-JQ{cwDFIlM&8tQa94jQMYdI$P+Ii%d$Xf-7T5`-y+(3Azsd7^cZ>| z!$_3$oo~B)%}saQ{CnYe;{_1)EGZM$X}+id3SC|1jT%}&d5~yq_)9AG9j^14&tMU#6joU28+K%7*w)skNRVts^-Z#|$?ptoX zW-cJ&c`G90Au+m?5Zo#%Lf~i^BGC}O58X*76YQp2ZfcB$atH^r{2$aOcOBg9Ef!>0p zK}I#9H=E(lE|u!6RMF6=uwf=CTf5!%bI1TZgT~>tmIqQ!fT-!3y<~KBethN1U#-@v zVKV%QbP_*??3PGToYR{U$Fr$D0sJp>({N{xN6m^=l1N` zGwT_p^Wxmh6W`z?r4Ivx1AHVad8Y6E!23t;y!Wo(Poxv?Pxoftjx_WySF6?cp;x*U zb?go8PJ2nc)j(F;a%}3fBnpnKDhv%UeLV8=xxx00w%htZSj04(pV)RT?#^7c=4JBu z7XR~qUpRLzYB=rYpGhK<=>4b&4!rjzsWQ>Rd;#f};b8c{>2$lx@ToW80^M4#)wWJe zPVQ(l8!OjsTzB`qZ@cI2OfK{M#F>dEUh-F@sf(~Ex$#0kK*=GQOxnr!=I_Gq@!z!C zZ64xr7B%^C&b{;V8a+9Jw?27*+u`7j5{4q3QZ{NQ4W_-@4&rVFP?{;)F{&DfHJJ!H^-gzf%+qeoMDj(XxC+dkR0f2tI zn!|8gl6U>1iW&~W5kylkPc+;e##b3N_@TW;AfI>UvfXyz2mqW;3G~ug&}WWg6krxY zRud!#d498m06v5$A`a!Y1iKH-!~Ku#gIx#apx80MSyY98Xy)%(7KOU;U_Zf+$Q0b<){+ORDve~(!-9knn98m|7 z>HOZgxtR%Y2dBIi7Jz$fL&Hn@ld05)8_j0O&E_n91zTHP+iU{CU5Yytx8lWJiWYZw zhZdLM(Bj2Q@nXf@U5gZVx8lVu1ak7c-}wc(vi8oJJ2P|75N||CYIpb3S@~If%FGY} zx&5N>_g16JC2?pnf;%jIkCJ+odDkys{rh76CjOJ~YzLp$y}ZXJ^?R&)up%nj#jp8a zJ=*2kn`UnFg1ZCFyYEi;-xZedrgkdc%$M7V=9s#}E?&DcAh|)T>ph>ltafzr8UTTu zLeU+;M4=QR7(wFx;LYbDFrCDs-L3`NpvmYT02N!u#y{A|W*$J%lkzasy>p`S`RF+_ z_c^yui2?*n0WXe8>bkD3N^?5o5X#e#(m8e4dWJdQzWKnOZDUs~O{>EvYBu*(;9&AB?vNzEmCgEJ_f+NRZ1JST8btP#zzLJ*=NWkw6ZG+(al~%7t$f2?Ru`1r z*3SizoRq|aT%1vQ0ZQIQT{g?7m9~Z}N!^tSweEtUn4aKmO4aAB!K=q!_Xs?eI zT;}I6^vbkT=Zn+O7#c>>+_8Lp!rTuZ(vU~WX`JpJ-aW#&VwGci;%z8um>y4oA)EIC zdjLagrzT;Wm#KvKc%3WgGdE{hLS0|{eNPKp^(37lq9*GQS?X7t2}KYl4vrMI)4gfK zpW=wmtUxb(rW8H+&fr=BkK_jfWFvvO$f#T5bAV)-E5A2m2ICPk>jns4>Fz_zS5glm z$c>*O!<=!7+=q{qRmAz)RTo*yJ^-h&3qKoIS8uY@uKfsRAF>na&@di>3FyebHkcUf zwmv4E!A2e5hA+1c2O}3tA;|PS-CC}RrJW!VLSOs z=)-Pez(df()-z(>V{W3v*N%UrqC{lA#^|8V`NSy+1I~;zIFm$eYGm}xfNds%M{N=T~~Vh(uRb%x>zYq1gp`g~aqk1mDPN;nl6?**92EioH{lv$N};~_ z23JB>#5J#))~_M1aN0YR{JL#-bu{EL~B090FmCrf)$VBOdooUfm$lZVgejXRp1y=}Fq!u8W?Rc8^{9AcQvdZ$^2p54Yr#@O@f{ zQeaI7E^4=6j*{5rW;8VfgZi}^XCrasNlPCic`xApk^1FPfvRr_60QH7mro>z{%3x7 z`8AkB>bs9U2=Mvw4CJr$Q&AeGSsr06=}c|g*;7|v-@d4NXu$(!zZg{y-knPfh##)W z@jD(0_>k?ixml3R%8V@?QTH zE5EQ)WRVti{;B=p66kt0kl3wCY8%w>vL(FjP;Ltf)(m=p|sD#?jHkf-W? zInjAsUososmcUYeOYQXfHS!X(s5c8tLxc_paT#gtjFI?A`S7siCP1dXd$D&s*h35r z0OYrH$&hQoe*-^+M7g;yGq^kADhL)gzg5W+x7({`8efk7`Q%cCndV4&O^Px+ET1ot z5+dI=`tlo%{dl%aV{0HTlqAF#A&{xUIm8R)$MWtMD~C<(qsR#mjS<_qGnJI{3YNPQ zKjtvjsI3+^Pt2W$HQD0Ql6jGFv#wz5>xsOBGpt}Qk#^ee3eq&ro6mcmAR;R=kkfiv zom?<81LhYK3leOr6?&&&9`Z476rW=?WCOu__?uwl;e73ZA{{9` zczfy<-Yhx(x(;`uNi?*!`l7Q0quVMdr7E7O2&XjT|Bi^%2^!Z}BCIVUYFzJMBpMV! zzUDOWX_@G}^FNH85pG2B{}d#sGU(khWaaTsp1T{fojUIrh)+Ij^$rJ-c>ehUJQXBy-FE@mPBiC!9p~lc#o0D%e&%oPLKgCZ7uvUkB6OPo0ABus zIuFskTlh&9v0WEI7vyGUM$acFCx%S~80IWvli)4-L@`l5At<=(w*SUw>d&9Yr$!g> z63V~mp36gVL>$Y@M3Hat!Kl#Lx1r`D$)vJsVk5kK_G&131nZl$+DocGiPVFsX8}H@ zogO{>zi3#UrkUAgJpSSHePv7fW)nezb$J2;7=O1%W3vHH{m2RD5`Ur#JY68w@7u<~ zeicxoaO^%w)hKl%fztb$HjP@Agp4@4SOvWhv!=~r+8da=p}~zaoA+vR;4b$A&$cwn zy4LQ-##=l?1+=Ub9fyuOv|im+EzjZ51?h?WMRc3WNnM%^LDV9dmoa=jfq5ZKcqv2+ zGAF0nyF#L5q+T9=@hxWT0wh$_hRo5$%Gsq4&JI!<4R^Pd-2TR_u60)vl2pW{{*>t% zi-Tj=?Pi=r@`>=H+$FH8DI zHnPD)>zOFQd`Yt+DY^(t!62f^uFM08@4s!k!6%SAYGeIO3FC?-=fc)I9>F@7D}R0}xSDyl^eK_>!;n?%xbjFHJGUYGo1nMQlrsH$#~4tMuJ~|zt%M}xY!5U+gw2sx&Ej>BOYh^Lc5p- zae`qA+gA$IAu7@cy4*?cWqwJBhpb2}KBo*QhTqnyws2Xor|Qrs`%Hs!`1W;FWm>c^ zdcrGz#Aiv|J&n)u^sc_KuT%}~@xW?$MKFRwe5?Hlm#Y{SAAz~zyhuHFX?i;c7)ut( z_F#l;5~zu#HG^#Tw^fS|_Ou9Z!WJdIiV+aF@?9F1n|02r9 z`E7`X{M>L^fYXUHHYsGg%wLw<#c5k@a_7PpEVyWpc*t{19IIb%PfVQ!rWOsfK6|_( zfL*WdFHp?=$#r6}lSuoGk2Q(Vi%q)c8sXJABR;G`wel4cZ8e4`I1$Y{MyQN9kNsKO ztR2}rPy#6sTRT{&SZ!_LdoT6fuM63_7R28BwdSH7k(Ung+BhCLz|Q5*9R01Mn<5B7 zdFeuO1=cAhA1dPcC^6+M$dNU#nCS{H|IR_e#o77tB93ONus~Hm8k-NJy5fO_4O7~} zY&<~uwE8{V%p%_YxDF9FO>k zO&u2^$Z+@wMiz(mp^&l@bfkT-s%`nCe?twxNF)s%5lgC(0NRTT=e*M-5m1fFmy<1I z53(RI@T%A>3wSB0H?3P0e7WKWlW4nB+=>l zx54=JLb<(Bif(9r6(mJGy#fmYEugsj@a>6x z6V5~x5K}@W)dhWjb?wwpD;lIT{BZFcpny%86=daklAY%HQC2FXEqBsZbAVpv!8E6H z*Z!_e?%YKFt|lyWU0~X0+&ld6C<`SYq?y_b0Wl{@mo$rFL&uCH!|9b5+=@#Ii{7T# zr@IIYpnpbSs2YfqRluD)_Yg$o4sRux?k~K1^-h|8UF!7NuH#B2H@hTp5hA2q9PCX+ zpnLeCJf~|u665u)z&AzMVB*NMn}gF(G8*{iJWtEnAy%6lh^h6>L0|!w7KHH5=ozCi z{KA@*K9Y~~*UWKJxhCcM5BqD_fr!V{n2{GCQZ*Fp0hkj9w)Q`uS3ky`aZK;*rZf{ZOq6L~SSIXSJ)r(7a9J&Il5BCZew|dvnnW zdwq^2ARv%dTJk?O{Xa`P?W@Vh*xZLjB|&w?@DhJQZ{N^}QM*OgubtdBiANb;Q1W zp8dnR691W^OgpVS0S*mU0-kbqYb_-Zk1DgPYs{pj!F=}X(O{odBBg`})5}G zldj32i)%N#Tm>RsZ1}=}kk7Y8N%G^@15=Jv0J*s!StmViZKG2X_BLOzE(*G46N*$- zP6AGuJw|)C9wA{P3hXFoZQ;e|1i!To!+AW)8J?;P@mV4ZdM;oYByv&We&NLL>^Nr% z*Oy(hs^rXzhl9A~G%v2`xHc;XmG5Qf>CLAbSg?y%m35Tbj5@ct03CG@9L237cN^xk z=9pY|AUNwSTadZDC)dYIf{XA#PAsZ0RL!Z8J>Osk6yP_R%oipd32`K_mN>!ifP}lW zW{N;ljINE-{7LjY*o$(k;zq-yJE{rxHilm>`D3|cLw(;!V@$C{({uej4IExim-5TUBPyYqU_ zBVZ`(4}HX`uCB&hI?-A9Y8$C7+QvwRXD(Q<%@kikjci2Ok;*M+>eYx;YPD@~D+ zDp=$I<_&i>o2j4q;vvv2$&KHsN%a^xSYl|{V~p;cTL7FbM5KTG8d*C*Iq9j7EltLo zAf*g}wYa6mK@w2F*Bx=4-8<_H~G{RA;SD#2SrwOvy9@Y*95x z+lHz;K`C{&9}SRwZ17oq>pnDuOp`dhDn8Lq+xzw&G%on#hrjYc`PnM0cdKeY;sWTTL6h6p4A?oP<_a`N&nu%3?LLz%aTt8B6* znk1bLF*!9gEVQldy$bI#ovtiDFb5k!A(5ciTNKxEzb1MSt8m@&3f z1}CRL6RTp&7_zht+kh08Yel5$vJ!{ACMhgk1xFfU6vjiK`5j>No&gjAZZwKCSQ&WCtNJMG;U9;1wY>|Cy&6rdu9eECS3_$j~am?TyslHdTMq&8Ofwi zx5E(lx8#g(f0N9f05>Ynzivc$w9|@f{Hdr9DON^YNMKr74TySo z9M39lf(G&5=l){(7UX>4boGuH-L4oj2O~(LvVuH4%mx@tPzj;aUi!=ZIAz}4gN@b` zVZ%c_H9|J`bft}*F6eX#Jzd&iQ||()cL`(MoO1F_D!LbihKz2-teOpYi85)kOx=iO zjX!*O{@3M3pZyy;dzV#C>ZqMI3om>44@X@G;t|c*iHw$8+_nfgS*eG6GfT>CYbV$J z#h*9|kr(!b?vLpUzFT>u*MF?+lW&u16u!lZACMFuO8J}ru`iz@yhNRMMA;FV*o(xH zZn;qJ*p#x)O49xn%^L~xJJ3S+~?=3k~&fXwYpWL4gVFpxo2^;YzqxWK)9*XCp0VfPDEkmxV5 z%9k(UU^7mRhj^SIy#`a5-l;=Ao}knV^msEXFT!q(WqqXz=}l9P5R^rUm7NP z_vxDcp@`o@c~jjNF$ur(F>7>l8`kcQ`2CMl;0CO{dWbL<%9f} z=aPUUk3!pmcw}M~P`(Dcba5^Eu{JuRe0`GAu%8C*C8nffq*ML%a$(H5b(@@qeW@5r z;d_aQgwR!?^=MR~>5$M~&=3n#^#|;DM^YYrElNqo5UP$a(v|gf^vVpj!s7tHmg8Xf zhncdZ&>43CW--#o)1<}oxh{ne$>-Z2RivQP>ldCT^m?xy&~$(5oQmI+r*cOwH@D6bwFw-$7u==BLdLUzeQfw zEKJ&G3o-Y^e|M88b~E3Sx4zD$sIBAtXj3^k5nSLsq{m_9x!Q=nEd>F3`35X| z2EKTiMgKJS&Bi!BGWU^4GQ_INvZ@yp99Nov`xLvWZV36!&8OGqQw6vG_*m}%XF|Yl zswUH#yyJ_Dnw?#EeJq8I&$DO&BXnjP55FOqWJ(1w!|@X94xLzFOr!ssBzP<;Ihl5J z#DPYQvK+=A^M&Vu^10QVU+xD#5Lf*&>>Ldb@AZlaq_tA~_IF92jB$7)AIC4JCI;4d zC;F>=s@eQ^#-u2aPf1@bjtgpO7M*AWKX{4Ysf!Bm@c4V%*gTPS+<0`E#gNUmJ!Ah< zrjYR1tx;7~eXEqA?%n$%=yYP8y`Awif^!pQgt+)G;G`uic7ycLIm5=MXrqcUbo^ha z!oyOX_rdEDn)c{DU_&=NadE$;I|_9$jpLDj*MH@e)X-Fhddc$C?(YqK#w5{Y=hKc| zZt(r@5>NJ2K9A&+oqas_hu<>P!xJy?Y8o>M9)a&^TMx%Lu@}$tOxyc)GQU)b)Kjg$ zty($cg0br^xrd?bd{TZc%kvj*fH=PM;O2k0Gv>>v*PRHGE^pQ+PZeLxP@HafmM5`d zLRou~r^Q6wf&i=F9 zd*oxCjZ{=V6$>ASD^f)b4Vfz3s;~KvFuN-fW`iK9V_Tf;^t{{T?K}1IG6H?avNYuhWK2x#-qA}y7-sKx zJCg}6&M#>P2Yp=u51rtPP?;JXr>5VUb&AEfD7@6L<*T9?tSA^{exIR5fzi^MYLC2@ z5EN+tTej#k&*w)$ZgYGoVo4(n!jdR*w8xoBgP3&A5N6d4&gR&!_x(zd8xdia(e1E! z2S7UzftF5dSGXQ|+B+^whzlV*m;1gM0YETO6owts$UDXf>|S%>ctE+Zcibv?Oj?J* zo8C?m!P|&E4_$ds>zfy9-_N^KfqzrNw_fUS;;mD>tGTQsC>jQ9)Kpcem4_)|9pcc; zy8($?QuxgKeD!eaSF6jIVwcv#wYP1qDxQ8k@JZTTInS!RKwru(e1%Dx<)7F_H8bv! zW?s*NemJ8obfL+ijEIQ#poW%SMVgJp3X+}oI>%cHXn3DH%_iY%g!~OIL&>0{F zctc#3VHW(v_OKB!m6#{&2i4;;@wb|m5l<3b{(|oe;pF`Ap;Dn((U3WUlv5o8)D@vE zrDjPgIp|!rdy^|Hh%-4)T4o!y9Xh9AUMYJw$~x#C+TTghNmhJ-F&&qp&@1&*;$asd zb$_*+Pqwgl4Y=ZOyfn^nAHBmqxDnx-(gU`h;TBnlOH8ZsmC9DX^y@!-i;$yRq8VN>@t@{rK>weFE*`3q*Z5}7>@Pg>*AOQ1_u zad&pHR1I=6ejn$+0sg2zaH>GbUC*}HATPAjNZz+Afu<8#C(F*;V&ODAqsBOL3p!@= zINT7cA$u?NZHVXGOt|2xg_cRZiMK6H5(WGT(-7Fp^cM#hlQ((D4g$cO{Tz-3%O>?$ zUIY4I8|`-_AwE~~v0`Zmwf8};Q@K~9&gOD;syBnPV^PKiTsSIcYtMZz(f4M5{_^ft z2dImQiwZz$4omHZm8g$|-r))LA9o*Bxj0VK(S>7w7VT6z=`o>c$r%ARYUKyGn63Br z=94#w{wv{#p)%{h!)m5VnI6Vo&y=wsq;d9HZ|U*DsGu>A)xf=dpi}>1Se35wcJKJL zyZd%`{WAmywv97u_6R-X9i-uBee<;Wu*ng8ITa`&dI=zX(btc5qnj?)GzepQdjGBv z1{Zsorq{;k41lc`4Q4E1Qp(M_qg*H18b)RzkXimRH_q?{cK5$q%r#b$iQ#EvVNI4f z3$JFdMP;}$Vtd!~^Crvag?-X(wAWDo95Ih;)gW06C+^02&MU}MxAQPJKo>3?NQk`W z_sfE27N7aOJOCu!I;;d25$7HE@h(?$uf!6pM5x&aG5DNvOKRUi9!AkK=li8?&~`-K z3nri01xPHuCV2rl31f9SQ#02kxMxuuFbCiLdeFLPFgs8g9yu*s(dPZb5|i}eu#J{~ zi)8yA=LkG=LXc18aN2Q}&qo`?LsxH+&xLZVjme5dovx=lc(zMMI8GkE_k14+xfLsg zITjl}7G#w>1&nU66ZwEZT2qov7?m7S6&pzk7bD~Xvn#3<>)BPOJ_N-7nkg?QL9mS& zkPkkA{9F6AtcMtv)K?KC*irKWvtlzaX>n23@=aO5V4+f`?^>3gSyWBXxs&_(*xQm# zoPX5#5|@a1VTs^ttEAI$>EfuY9+|%e4x);hXEzr@+Q_4Or|)qwd$}#O*zloJb*k&A z%36YN7w^cCE(J>JZY3~GEuuP{b_>HYJFvZQfXLmi@*D~LFr~*LCbKX%aWJW^F6+9N zjMmG~m{fgshgRe+E}Bdci;2D?pJE=;FR$=j*r-16nOhI!q@u^DT$}v}2}T7ta`Cw@ zA(rfzu^&qe-Y-JTQu*7Vr>k4vf zo26;Q;TT6k7=OAKV8hFzco0<(5@Ky(gT>3EE?~md*4mm{tuv0c^F(YCUub)WxhD*Xic# z&NPg&EEjst-}wHbUYzGPa+9VL!FGy7?z~*Jd0d^F>YL+I?>j@kdosdR7M{lZfL_oo zUxN_(^v0{3L>)IM=Qe)v_2pR)85ubk-Zph2`1=gSUnbc9KXop^9Y70hx@(Gkd3jm- z_GO>o^z^jNu!ytnekAnc!ZVE~0-!4d%?5oC167qh_MLeQ(<~o7h3=AaZQV+UZwd8q zGzuxIb$(P97?HwwzAU5dnBVs&Hx@2_YQ!fq9``0*cZP*eqlh{@5#m5hLPchq_l9z= zr#uK=w1hMn14u%-kxx%Z`uc|SeJP4R@n`2H+h}{~?0EY)K7u4iN#st_+O*tbk#llX zLfc7S8d0|I%YA0@gL#Q>Oh4x12C0AAas|qYAkOBNUkqBGY5!X;=crxl5eZ6H>+7D| zqxS(Bw7u#3A+4mHg-35&sarmSOJi>ybpfXkx0Z0WUN)%1;qn(4Fsu+=U^r|ZKjO=t z)xU>d9xQ@#wNI1LVc%FYUmY$UQMY_pn1#6?-8|h+K5<=MYL@;tzc~ zK%ZOcB`-g&>{>0$L+_`Wsb1>fb0put3#YZU$DxTMEh^?TEoE9G32Hbcz<#Os7|XV6 zI}>?PVGcx+bb#8ZsHk-AcaO)vfB)VxHZ>*Moy3ek`XBx6Y6S`*Upd$<^mYx5y8|Sq zDi@2h-k|-<&Pb*elkc=8d{!Z-cfeNd**jZ1d|xg}B~wvhQ~mN#jD)-=y00}xMVvv* zNy-<9ME5ghr!acyH%3l7daHQ57oE`{1%Id5ql9{klAlT`V}myT-OlPfey8VOQI*Lm z9{m`mxv2WKOD8)!rAm_LN1pYQ|r)=Gz z2?gJx=AmE(QiP6LGnU3x{9tF8_2Zu(@@cB&dxN-&a@NtlM`o51me|a1nwX7Bp%_eVYrCQ zGYmPF*4HvE8kd64VZD;VIk`jIFdui5NAPbYEez&>6)+Cqw%KP*-XCBLU|;f@qLT3L z#32s7SY>xce>>Pbzl=A-IB7?Q+By8Zwi=BP8b@U{vn3A7)qKA4RAzsL zs!mzyh@~gfMBlzn_cAlg?Vk|u?fqbUPTtF-ROcnRM53I_MedCsy`;Ut{*0ZhTY_9~ z3Syp=Bxnf!m>H!Xg!E0L@2m&G%d_{VIIINGj%%t9426dciSWiO`?T=6}b2!T7zJ zP2w>W2XpE4Zhc~cFMa3$6Wc%!D{ed|pCUN}&Y92sF`FDx?b%9<)(}K`l%`Ao?PH*w7dcx|ngVO4sb) zbSc9aCsDzT-2!nc6i%;Uyx?*ZsAL6{_S=(;^&dcxoIgdbmZ>O}58Q!K$IZiY?FM&B z1yaQkwY1#9$D{x~H_-J^u^^{OrdcKoM;}`#1{MhJ+Pt)Ew#rJ*AI2P=wS0Rl=qF`; z|Dz=OO701%l?S^{C>^;HnY|jGF-xrcovPI?Frrn#cz$dGz;GG7RVCB#F`DEZ`j?+n zqN$4*X;nHay3-*w>?$meGjyxgAyQw&Z1l!sV=tr4p!k8WPFoR?Z!D=HR}N^4MAL^J zV(MrVGQTAd&?tSI$bL}j`;=WM0Q=QQ{Yr%cO8q;5a5L^keaHG1>v}+gf9UxwK=2ys z>O7<-leijRD%@ooV2%^!J`Yfg6=?Q;%7uNESGBB1T0T);Aq4Dwz+BP=g0ME`+r zTbg0+)dgq^M3x_6qRIW>;h?PVf!tB8z3X>UMr-8kS^YU%T>T;Ty{IJWR!83_zRnXm zok`gna!6{8{yP8L zQcd50Wa_HF+)D|I*lcxtJl(3SbrbPBHy@GM)tNftejrIP3$_A^!|o2Zv-GNa{a5S?sL3DY zLoh*kYN3E=MzZ>xmYBF-&5sn-3l&tVm}2hRz0jkhqb+gpD->*MU~p{n`X4dgJttr? z)uOAr^al$k-gE%+_j&xlvuAK#m@3x5){v5mH{Cf02PafbgR6iFUIPh5;Tm$J%nDI0 zIYU8-wrG^VdS{qwY>mL}D?&2*VvE&~_KQckpxXf%U|4n-+xsSARJrBj(1_l<(K)+s zwLB6i>SA|!p22GA?-{>eaTvm1L*}GC_PYI6$*t|H~ z$^`?QJq(6uR5`(?+i!@ai0t~RYori<=@U9}`+8k^jqzaAnEr^A@V(}LJZZ=<_lz6^ zk|w2F2Zg%X`bd6`t1-V&$u`1CRV4oWJGNUIu}_T3?H=B&MWk6iubwC3lMvRkfboAv z{z=fFO1E;T_~{1ap8C7A;p-R8^2~>11%@IT!%K>_1T`CntZ~j;=}N;m=eLgoy;dWZ z8Z`?RRxWSI;u+5<$)n)0qq{`!a5U$V1u5%q$D8uk~~Q zxP)16jJUk@xI*ly!AuaC{0D@bTf~l++>H;^9W$h7w~!eCH4n8y!o}-S zZ3YF95=Ms|p5~W#0{gE+ib*kW66L;wXL^NSPRPZ2LHB+)wk)b(TG|l}&z&mq9#y@2=@=U#A9Art+dA?~r+{4Mb~p zL6Lp8)nD^H@KTrIT_(Cr{B`D{f7WKIqWMUso8jO}1kZs3|Lu>&fR!6o&1xi3oo^um zy3R%X=(%Vt5ysMH+X{9Hl#IDI&8oE_wVTH&3IMjlJ1Y(#$Glg*^YAL;$D5yCg+K;1 zo_HD>v;$89;@=45DcCrPean)$#BWEg=UcVNoOjESz6m2;V!KQe3_NILiQ>q4l!0~z zAhQ&rH<+`pnNN9sFQVFHiftu4){b$Qp;P=*BuyeutO_3ncUPZHko>g{-~8}<{uS)F zvi9p<)qGiX3+6g<7v&Xn8g&G@H-*_Nn+tN+ZX9;v;nCpm)VKS*mwlLXl?ycr53m!U zHKen*IUZ^@FPIDJ>kN?uEMpTzG{+=Zze1?KrvLocf(H=tj$?t{HDNKoQBL~JfCs|- z^ktl>prU4(C%Z4al!VC*X}zD{-gUzK(o8|V5>>aMGC?)4>swx^9@k_ad~nzCJvkWX z?g#}+B+Kd2C{vK1x<58JWjhyHZ_5*jUf{N(gqKo)c5eMD;@fW{8tdE67K|Bhd~EIP zU|MzhXA95(qyOd_^OSh`4c4>|hdfzl{Fu);?UR3Nb7$y&{z;#d{Gm}%!^^0-`pK+E zgB7e4Rw~r8kv9HjS>M!Rscz?0bpJX?bSRM{CPBg-X7)Inu|2W!pZ`{hHG40)Puv#9x6Y(yK7{D5WY!yQ8At!Mcol&k17MESeb!&! z0{U@|>FmvWu_@YPg1gMo(Vg78rR3~e)Zb0+cadNNAUKPBgZK5H=nV}z8JzbG`FHbD zB;B2JiW!gJ-|;$)W+lu!J@XO zoCpSil-V74fiGF}6j-zi9xD4;!kcj`NmIpN+m~)33dlLnThG(bP#KihrJI`W;6-}3 zQ16GT|9d5%8Id(DNF{b+c_r@on%kmp=$*Wj z`ZaEdxhN-xF?lfpTj_ZOqRc>05;a9W8Q?*6?iAkiYdrtGbyy&oYGcr=a`@|U|1fLk z=|RD+x{;A zt-`A$NGQ7J#k*p1phs*w>aTdz<^}t8tjblx!n0O%B>G@;JqvbNJ*6=6?CA<57#n&b z3_FO0JjkmF8F_<t?!t6TG#(tcDFUS8f#S4%evL6pqgAz{9|x(OrP-VPx4~A zeNPXPemS0$dSBY2!}tA>5pyA}I!L8;5j88@QW7;k{IG&ypUlGSawQOlq9j+r07PSa z2lZ^@P@TvvP2zGCv|0jkaBXe6QyADcRIxU?y2#V0oqBck(K|Pv$#4}aZJys3S~NyQ z(Hjn^L1Js zI4$;l)#oL@VGu^Q)IVZzFX z2Yq*~X+&<2pXMYt+izMLgGY zqw!~Pu!t?w{6pQHN8cf-AENnfjUX8n0`R#z;37}N|8i6v`UecH+S)MQI{FCfs`_tv z*yAZCl@s)ACnopWiNST)?TLW#V#9;?^+eTAXlRfhh zzC1WzWWOSk+gWrsqir7GW>xXNSd2J?bYwMbnH<^q{M>)DUHh3^V8ze3uBmr+k*}vM z9-(t=+v_2uY6a89fc#abokzI=12gHU1`AlWed=4?(7J|^47ql4_Z;`2xBbQ-56yZnEXI8exZqrfBNO;UF z?vL#!jSB68+HUlImtJ#5G>6U}1J3I@vl_fT8>xCQg42yar?&@s_x(J^K=7T>FDdc7@Es{Ks)$$y&dlOTuY2*t;s$pwN7C-g;?iv+u1@TV zQ!m^)%)z;!PVQM$-9m|DuI0t*=uzkLD~!1{td8b~jp{>iM|xZSC%V-Nx5&ONW1r8{ zdO)*KfIynHQWbR!`D0$VBvYXQ$Uh$eko>VpI_edgy!l$DU-K5QwVy8x+)xek<|9VX z5{O|%yz}}VE0s@3TB`~I*odYRJd$Jm#RdILIkWsyin9nMXeFQJe&2wq9{jBH__t-M zx9N$00xLfGmI}g9WKq#U$VT5F_0)WQe+EKFaWQSfVXk)rTIu^wM zorBNi+`QIJnlx0B6wy~8EldnC$a#lN7M&(NI<1K{aPPR`@}Q;*fZ>E?4NAIKxAwIK zz>R4uy^EokmFGZ7!8xk#Np!@oc)REFcRl2Cux5ENVQ!Ih0@N#MBlEt{JTIVHJ_pM9QA9)IAjVhRqkW{2}?}VFpEqSVapWFRIAux@LWtjsR$m`Gc;}6#Vv)z>vT^nk=-} zcr+n!WE!Ak4={iCZ2keO|3KWhnj z{-<&o*z007kQ51k_pn)o7-X@Qzxj%9g7e7P$8*^~y(QyFG=PE{fd11HJ8tjdFKv+y zCsCivd`K^k?LI0p!~zfTHD${mDcAoWrg5%O_^&u1gQp@)>k^)c^H%$!3jH-18)+7J z>47u$D|-m+*xi$-!dTVuuiYuw*Y}Yr*Z-t^Yh!)A(Lb!`etDdDT?u+);cTO$+nj`AIHrSg-*vBPqZS%+Gb-M5Gg7fRqaSyRH4T6Xch;k zT`DfXp%cdp4j}Fho^KjngC|~}^I2R>i1}q=QjgJW3~4q4(P(fBrA7(QZhutSir*(- zO44{x zzGy~q0RlH{@tlzec1rPQ+U2a1aI@9+ynanJxVRU9-dJ~NW>IL96Lkju#SgrJ-+K=J zXkV$QmOQMRYuPmvJ}X;QJP9WK68m`cVhu=nPgV9;J#-5M1`#iQAz=EOl=YlFB>{t8 zaBy;>V+H!p^!$(9>}ZQ8DlR!iwK+q;&ABXGc95n@JaH4^O9= zB322#rXlb=p8MtH==F=xQDehintcX^_Y>P?8dF}lVD+TuU#=gRwy*C>A=!#v z96_#qnuvyHlyV^(;XQAf1H9Z@P8YYf#A^@bfgxkRX!D^Q8$-Cl?D9u}1W9Q2D~#sh z-CWf$mq6Hg`u0>Y5D)n!KSjzuT6hkX*h01v)d^PQ<|e(4tUG;a1PW_=VfbZEl$_|TjqIJ1V-<)Vl3b(a8G zF7LP1^$<)({L3us$B%Vo(wL!!aM0A5AOVzJU^iKGJ3>Bt^#>jcWXap!9vw-{8bl^; z4Hd$SzumiGsC27Np~XW8!;D3BxGlH#YV_n6G{DpPiI*cK_`Kp;A|{2_>xcziYkO|W z02azi2<|sC^-pYBC~xUcS4`1LK96S4N>0>;c~m>5z7rGta|f&a;CgblW2K^dL82>f zw?$~}e15b<=B(qs@D-c8PWJmrRy&4z2d)W{@+T)Q~fHhwlW~iM_!-MLJ-7>R;ip`XNPID zz<<&Y9k%mDIT@Y-M+PZSG0`djP3`I2mGb$wStNrRT!s+i@9j308ol*;1)H+wv59g3 zy@#?qvlssarj_BQ5jJ~h>QNo8rF-wJw|z3p z$;m0+lYQ*o!g&3^@y-Yl&L=enLhD8(z6idoW-Xa!+qbGp5G8)e97x=TFjZynrR1%G zOg1n%8+}zX7x_SdguIZ6 zCRHBciZ+K?X= zSBn^f<^KTyLI1w?@kvdO`t~igqiCv^Os#5CAp$%^hK7b# zasU5~OP4PF4*d?G$cbL7UvImi&FSre-nQF~Xhq5}%9V<^HaYpZ_dfja-@wbSyng=T zzEZgajiv|jxH6)lwmw?ODZp9M7`$*10JNW)s`uhz=h~j`QO7`Gslh3%bl2Ic(8edq zE5^P5bOyAxIWbC)Y6INn`#xRb)W5-Nu{m;gU>OI2Gm;I(&lJED1II;9n|^vWG#oL z|An@Vq~k-yVjs+0NNzRsRlQQ`l7g?P@OD$6Zk+*J#DGRvrvrbd=Y{*mJW21n;8;{r z1`$Nx@OJu~Jhz{%Fde1TM~16OHod-PV$5i5ZAnb}4(5Ik>`=+TCA(}Aydsdp5*(DP zC6UWy1!nw9Nd5n<=bn3xfe)rMM2+XehHF(=uplOIt8q0?bp#R0|-_=XX_E!1gq~EqKrgg9RB{ z$SOxRHQdL;=Ya(`#Q@yMJpbt9ZnOl@Iv&_!cEk$Ien8pk66H^hi=3G@F^Jo^{~QeT zaY&`&kV#RXk3nB91%3GxB#~uF(QOC-m`!l>`v3$&GWAuB*S+46j@AA2mui@d{@58udB?fI5^bRVbD!2ng!1S*$>@T*dn&_rANn)+tcg0*`@4V-ufSXON%< z-B_Ic6C*%>JyTlnJ)RNaOU*J6rA~ElS8SW*NB?$W0Az>kzmt}r(?xi?1i&Q^2-p*f zzKRKe&|aAIE|N!N^79%9;_9Sf@zp>fUpZzg%AZ*r?v@LEk7gY+Jf!Jk+5eL(cxh>5dBGHH2y1#X5;^_ZTXa) zKeaD_gbcdm_C^9Z zMjznm_v3%i;lR2N49o-urQ(e&{>`nxyvYRb_Wf;ci~csz-^|$kwp$3di~l;!6i|UZ zm<$wjB}k*%hj4a))EW!|H|&f*W7}qW7s(Ujr2p z(JyErCD-e9k)DBurUv-^=zCGQiy3~spZt(nVUfSrU~wUNL*RG7;NRdEI&|phO1<9r zsh6LB_BU(QiawlsZGOG22LO88Z2$srvvDo*_w1RFk3II-_wC)c?|*;c#TSO>7w3~6 zDWV;l5diD$A^-riI^8na6#L5?H#&zI08`=@EVJ@i6sQbXYz70CC3o!g?+O4cWu{{S z-fl|(QKO$|86fHjz*fIefMDC&^-qHW{H}2fqL>VG;Lqg}Ffx*ciLoIV9mzpoHVx^d z!{R{h5Fmn>Y!7^`fuODm?yRs_ct+h8RGU|3G8We4vEJ-TR;9ZfRCR#X;z_cpGN8(BP?d%GZE`X9JHJqWrPQfPYu?H< z89H#S2n;XOcDy4fVm^y~8j*J_JL9 zMEN8A>ok=nfW{*e)bVX~suCTpt#@4#iMf(5q^_^j8d!^OK%=RGz3Z!%G|%|S8CzdH zX;97bkzwyYXy-mDBhG!{aG+o!A{h%o4cUt_w{ynh4${>Q#AA;7S%n|E_<42ynH+r2 zzHA&XgBaijp?_}{RtgPRSzLw1#U)tZC_oj<2TcslDsxuiKN+#uHG_$yW{j*z&^G&B zw1U#Do&ZKb*al#wImmW%NChgt@TxfoLStZPn}QfU=5#xzC4zE=HawCH3g{O?mZyJU zU?XA2f4WwwetThI_9_K`P5Jl4e!cCMZ9N8{x81VMhy!UoJ9_+>lT4+K#vS{;nN;eR zR#sO>sGTg6%StC67u8x7gOrEtfD@Xli1uJCB8#SRj?;!R#=r(zYq_25e52P}82}r6 zI}rpI?Ubv1@*$XFXH0|aXdgehy^*q>f-9-FX-Z>bTgPqce)dxC76K>q8hbqN~i{|dbGdD z{x(5?0QW^EMWRLOJiza4OZ>~ZFSo;ykk3azLlk(U>9cTfX{7}73o9_URECXW4QhUp zy&pXM-ZU1siO-`lfRqjOx%5YI*$L0(&I46VVb>{@;rq%kidqNxLT!hnu|QUx6 zv2aIQbDM7J)|PvN%B~%D;v|d3C)6GYe%{T-k)V)jAX_O(@s32Lu5t{GRoCi6-6! zLDuLRq~g!P#rvqnZ=2xldph{zKEqE;Ai!?Y`wL|(e|%gAhoVJ7%&@1TU!y%SwQDr`t~4y zD*yn~?97D|6X0+Snm~ckC=hvW3uU}x>l(PNEq8@()@LgM%JgG#&g>XSV8%~QhqhP7 zdO5&Ip92#}@gF@f2>bSoz~DfJ4UdGZsF)$*+#*N9MylOcYXVAD7dDF?lri8JD;@?( zYLm0|co@vC;|Z_{K!Ks@mA$fUo3X=D4}UA*@(n%DEJoY!75&@ES~m!c6im4uuWIk0 z+v^C7(5I7rgB9(LXtGR!f`2BHDN*_uS;ITh~dOm?j4*`IW_gQ|#NQg3T0te(kNZ-#@8i4IY zfL#HAW&i-Xhy>gAQ@f~;jw@y^noR}(rgI~o%hSJqCY?(CR;f^2ee&zysOjILm-Y9y zw{+{x0_bgT*~Vpm+^$VddRMMoEx2y;)qMx{7m)V+RHaf;RE zLvYXO!*F2l0HjkGsQo%-eRWp0lR1vSGDH*W^@U;`7MCysUc}4%IxH-gV6%joKW50T zq}d5cuwp3;{3#Vof>t(Vy==M;gqb%0n%38X%dq=FSJt}-COhrBmfM8Xz{gUy#YSHM z+GtNGAtKS;bqwsJO(2az884-39YnLrg#<3C5Mbd}1&={fIu(a}UmkMVG{h1KzMWbN zn@!66EiM_+Xk^Z_O&cM16nKH3f?<@H1pqan&)1p~W91tS)?Ft6Zn<4-J4ax9B{2HzE2u_CxaKPhx7Yds+G(P*t5+jU^7K9tn-J!rc-<4&ikm_ z{mKMKEB8U8Aa?x2eM7W9f*Oe>49vx$;agBg=AwesdkHE1VnsrsP-Kc--$)DobLLB$BrP=^%ujOiA4WrX#^9 z^#fI&jEouT5MVoH^3nJov`u#M3256_?aqT{ZUXOn)y635_po3M;^?^2m)bIf?H1iosFbpSEEP6LsAo&u+8)iyc(QG1uywICA9hFOH0i zyzwW0^e3N(p09sz>j8k?_HNnq0_Z>d-iP8ymmghRTx9E7x~JKsUU+9q0D2q3Kj)mT zl?t+aZnl#R_N!)al!7n`uWQHIG4$#w5WomBoQa2%w)sVhOmIk0+|F=HZ)&-J*y z&e#RV$%&61LqH+O^wq^QqeZ(Vwq)_Jy#r!*AfR5C?U^iN-lKf~15aE611xfr+U?O% zR?h5vhai9^+r`GPG=OD+N(ojgF02=tFpQ;+(E%U&b4kdhQW($?5H(5=$LH?Dec8Xi z5B6jEWOg|P=Vpqqx>3T?2xa<7WE)7#=|EGeUVCOCps8H;=r*DH>@5lHje5a%+~pzD zb*4b{bviio1Bc}Urvarjf=9lP7CU8$^p^aZ&U+7f!(*&WPBYzfn|1Pe6FR0foe%s z0zg}L2q1KTq^v?7am@bFKDg(^A-Mna0XVpK2r_Y(gBSADT(6c0G8#yOFK@UoHMW8SMQFWEvC8w=sjuLpJRuui5zHsHT&Puvjl9_JrLa=kvenG zwx}YD2n>F>73<5nw7X!YGj7f%I)FHd= zN%J+^Ivu(N?6zS*+u2X-1gd=1?XQk^9*gX9>ny!Rxm1EgBL3X)(9p~C^9$bF3x<1J z4*>MGw<`E4-xoE-rscxscI$y7S^eN)$`K1D5nwyit^99;(3Dfo96 zsO{{>-&H%n_52h&?KwhfAAV0O=VKh0J)-2vq1Yya9$@u)+$}*0s&J@Z!UKng;Jx?k zg?o>U!bqQlxF}*&FXMM=V*JiR6KVbBVjQl_l;O_6^O?Cn{+OV(bhUBU+u?1%W2Ze*+?yVG z4UV{sqFe8jJ+Nx;wDc563fMI0hOKxdft?sWmcUgU19t)%G67{w=-0{~ENv8_=2_Gl z$AhG7pIQ!U_`U0pN?I_~pTd#>0tjS6YLx5{)(H&$A4E{_)b#b~YZ^4atAzmcowc)JbS-?> zuZcYX@Ex!Tbp&(f3lNM*?{?vqxp(71kJ%|NWcS>A_j?Z<+W*ipcZ#`fcXxVxS0_Ty!>nXD#!Al&;N_xPsm3QJCeEc&>6hka=Nj+UAQ)X6rIb6Z ziJ}Jv-ny-)0eEYUZ;Q-3D8}7$&ppHSdj0gu%8FO5R)ZrM7gk9N*x=wG&GLTj;>C-b z!CJmMQ_?$PU-+0VzUMvn#nYM8`z~I*kW+Q(u*bS3*uTxCPihH^VPzyO-WY&srSL7o08QmT6koTq#4>C$XAG0@hr zUfqOBvyR|K3H@C1)|b9=FLaaxA@#Yl8=rnH&({Whpj-nT-k&~q2@r^JNjOM7{#KgV z0Rjvgr82SsC0MCRs5G)LHq;OKI1M!NOp=497`09mP&MPFavKgeV=&)}_3Q2>;x-Qr!fIO?G9 zJ@oLy{fGhXSzTT8OQj;QRf0N$a@m}X$J~XhR}eXe&xUdBG5snt%d_FJ7$H!v`4F1KjqsRXQ7wFf{o;$lCNI9hje%#Rq zyV)O)KlZ-&`_liP-ne{8U|{0x-_;Y_-f_7TuPK7n_G~O1`1boesE5RNF|Py}N5X-j zESx?th{1mh4owVTaBYBxwf;s8l=W}AAL@P#rsvn;^0j$*W4Z)&7pd;V0K_q4CCZPQIMx#Z!-K$68|Pr zD)8I7XMd-|D#FAV8(;$nNX1`8AW*DUp;oIxxmsN|?*0;N;Q0{9Ut| z1(=*$gXPTz)ZD6?7>U_`gMmy_>nkjt+4oN4Z1wJXBBf>nNH22!{Q1Php1qHM^rIhr z@ylQSa`oM02!LRfk{$o9yY3py<#Tt9jE;T^kISFMGM20CDpXg*$jC^dR;&H$+S=-G z_VxE?kr{bmX>oC-4M6m^TXY=uwp$bIDC_qhee}^`%&_iTTU+~H%=~|Pa&nUTdhHeq zT8P+#@?swIjvPKJhX;rM$>jCPe|&vvQlHTJ28(g95*U0nG7hSkrI7XwHH|V_CTC&@h}h zI0$3?X-L=}X5}7_<@M|=Qu=AwY-TtBoxQvY(+eBW5IL~p8IZ9Q+XG9ZMkl90e7}TD zDrZ4z?X#67Fgp;^za5+F`)YQQV5?!9#ek}&A9vy`kW*g#Hq!Sg1eAR+I4}UYOb(J5 z@QDR*tXMEi#{_41Rl6X z@6~xOfJ?)Q5HK`+<&odiRZQ z4jerAKNbpwpL_lF*F~ezu#INL)vOZj4Lo-J{{DU!lO#t-@yq)r_Wm&*Z)cu*`kN~T zNc5u4&2K#oz%2~^!^6YL0|yTLy;7<4e_pwA<*~)ZMJ~URHNK&0qvK;Ei-Wbev}7Ub z{SakthYlUG#>e+m78d5qcPdEJNZmhr^l)Zmc<6_gmzO>w@Kh&S8iPOQw4qA;#>9WO zN&}#V{Ag!CR{SeBz!=Tuw|%7O%P^Sq;q<{_c+bgwaPsgN2B9+Q0wWIX|2UMwk4(qE)YVRUp9#>e)+=lOJ=mBA-V3x*oJL*t-0~4t<&jV9Q=tQ}l`jV8y&uK)I8r%17ILc z7^t`1cA){->Au!kli}vz?@P{r1eE6H<~}<$H8m}^tJBBJ?dP%N z$wxhvLTOE;vXr@KfNl{uK%gL+jpk!RgClsXgdX*&tWmTT9yxze8GtTy9k{DY@?(*{m6S~(Rr#UQr%wO5R4V!V zSFT=}(JI+H?m#yu=v}8zKAz8Ie{F7lKAuP>IQyr}kxq1`wxzO^?G)^99spR~+W>iq zv6KQIFP@!XAV4+j1ZMRKw+IIZ9eDKQ7(8%v7*6d;K_A6>%pkd!-KOw_0p3l);+hW^ zuP(!x%WE*bQiBp?0g_k_zzn@<2}3LZsR|tY!U-REV2y_?0uTdX>+i{rwb^?>u@VXy zn19=P!XE|2OeOv!%Mvufk7oJv^NmOlFAW4vO?C~$k^(jFVL+GoIGUJ9 z<8rthLK*_9nE7fNB6SQjU7JC`#>NJ_4rWtv1UoTEiYl@SH7wPXc^FZi<__d?fRP1D z6&0uu+eC(w_&FtO79v@EWYCcW`IZ9!(`gx$05l+ATPbB{EE@Hu+_!JvbT*rPb!KL! zdMB&k^k(8yOu5$8=0geN|8r7;Z zFHJpnQXpg9mb2nYwIWtlS46d1o5O7R)pEI1xf2%vrahPgmZP|o|Fv49fsA#WC|^3^ zna<{YC_x80*b?ZYz1iIWfSDE_0s+u%XzIl&>*XY$1FJ?1ETmH{VLsNH>9fQz5IcSa zv;IvOir3*lzXk8TYd<`4?;#i&Ok$u>Ds>uZOsQlH>-kk@7$#Sn@Y>Z`xHz>4v+Gz7 zr@nqH2e4fZWj6S}G13=MkfCEistIreK732)GK3u&*=sK9K6<{xpIr(390UUWNcA5& zcnJ3I-4A`aK1e50JPgRRyGdcFdy8)uR>&won;YPc>`A*GfT!A#VM1i-&{GVR1_41x zJjU1Qy-7TX3pjsv{$Ro6JpvLg?-M;hfSGV#3gz9;I796($(?+PGNJhirD_@Q{NORV z@r3GRa9H%Gx;7GV8*=#!0wRkw9F0a5YL$u#wIn#yo&>C2)Zv&I8EUm;dR|lV!TB*IqWm-GlKRhy;z=P}M&CQKF za&7DZfOkp!r-S>EM;;y=85#L|^YaTox3;!!&T^pyQz88strvFMc(L=@|3hNE)Ji0h zk0BfI2i0n2_D*8~sJ#~{YX9)zLwzUjKJ}NES64q|$6~e)=z@bWgac`0B*1q8THOHv zyY^|PxghvckW&8gBtPeRK9^o3XWX>f`?h4qxTc_yx-P{1BIfOzFrHY4d-o>cqxVf9 z?LP`b8B8=V!}LgfuIKAJ9tLI4g0rOzeD!hx&SCK1a2;^593U-H+NYGV-&2`B1sC=f z)Pa*IX-@}u5g9(DGVX{e5$h3b?q8?xnTjV7j10qxV<%wWo_!eL$T=_$x{n|TX2AqN zEidbI5%NY3^YFR>FG0l9?-RX{HX(~td?uA)!F{z{<@Q0L+w%Ziwg#3M!2PBR3Lo37 z32;5Bg@C>;75GLn$le1U?wC53S7=&dsX*dG0T~B_eJZN~b`!sS2^oPR^u^0CI+VlG zfW*>41JImC0rv!nN?kXSgH2(mmIrUT?_#`wy%l`hBTbEZkv8m-~0+;UkAnjE#@|`tr&$%il$7 zI=>~z?Bw{@nE|kM@HF?!pm&~vtK-C#l`k2?um+9l=+^BDY_nBm5$_uq31H*3tF(JjeOWznP5bn zyaK9hF-+!Cq(h)qL^5HbFiQ@KWayMml7nC#8ps+HHj6w+C}yd}&m2c2LTr$$pzs4r zW!<%}mfJg%3d3ZYnyDN`3PHfF*U@!Y5nke?@UqpE+jc9&mO^bz|E~a!sAD zQ{a#V$k}x`JQRlqP9A`VPalGV6C*ss9()Y`uooSp3z3;Z1_W5P9q1J(INDkS$crChO3J2>9618Vjvm7r zd!BU)J4NAl5&&4icM(BLB7Gm4e1};e)A>@5^95bL;bBLSz#6FRqbhs~1T-@ce?t<= zQ3-(bB&A{rYK=P9{V~udDK9wfas}(LiIB}XK zU_rxEVnJevBp9ZG{#qRL1(kMu3nch&3IOb8XHsBvkrAQ&hTm0`%H`VSOP7D8u(7#x z2Lb?<{ioCSVy5)jwe<~B`}6eA_EKoKb3eEqmIUY`YqdHhTaTSQaVkADH1g8I;(WPR z3g`iVw=MY7iFoSd$)SS>_W$Da^z_dZiY4n-9e!aAOo(#1>>WFLygW2C{NmEm;vK;P zn1$;2@niR=(y7m0xNsqXHTEF;ztsT1$moS`v15uqDz9goU5iC@Jhz_+0}T9R`RlkP z$cS|~Hqi&~yXyeF=fpucIFf}#Od@4nQIE6Kym`vTX_(J6X8td|u>h}4t-@x5TK3Yo zaK||C6T@KJs{Ree)sM4#(ZZ4|7QhNr{n6lWgnG(^$Af|X0nYl59z6=#Y?f=+9#6g7 z-p==(1OP@eV6yla(%RIg&jAjz>{>%H0jvuU=9mY?0D#o(d6LUwEp2$d8azau6=W+M zcNAk%C~Uw6bq8RnCzDCDC{dCbQN0SPzuv;fIxv6$p)ZR7%4MNnnzTXSxP)4(LIVa)_my+4Ds;A6LH-F~Y#`uybI zzP`R*oSdAj!CRcPP)*p=qCOe9u#g;o7*8mrzlA}WXm%F^PqT&@BK{prS#aN>96Wx{ z1Uz4P5^*?k^avb3b{vC$P7Sh=ZEbnC<1wJW zD}fm`0@!1V;XQlyz_DY;pufMLgB{NlV3Dj6({X?&4*>~Vd+>GmRa1xwEXBdK5R}Rb^-fwN@jDz( zC6hlv#%5&jV}gG-?}YaK)be#BngDz)5sNw0D(N?y-d`9V8XeQlt34Lr2Dcsq@a901 z#M;x)=H|vXHT^F?`q7UJ-hIzq zKXvBp*$I zK}eADT&ht$pjie=M3|oDDKGl7TF~0I7-#_OfC&)#bDK6jqRo#SJ_aXGoP_>dpPr;A zm6rso`FA>wc741jJO4pi~9rqmIg%+D?S>cZUo((Qi!N6uZ< zj3UHDqtW<_v_?9y7~d705wR`pAGt35Rxn8IutYR^u1jaqgSZy|R-;j$)A6jw0`vgD zTX$^Jd3x&PiP3B}^WS3j|2|H16y?JUwQenjj$fQ>+3X~1aLwJ>YzPQ^ZyDESix`~Qz|fEz-@XkIyw&TefSaR%jNk8 z=hsz!Dk_)=>$U{|QMXH@1)wm>Lxk|7r_(8ZeyLRAHZXpyruP+V;OT%5Exq|_$d3;( zVpNd9agoYr@IU~Z75g+=xDMrF3DQ`y8OHKS48f;IMnM?79hwW^mJvV{A(_Pc2eOb% zWuR6mL$O#@UIk_bgc)zl_RAEQn|$iMSpcxbO;K+3eCFwxc-~Wxq*^(Fy>+ae-*wO3 z5*d`|=VoThcStt?uT%K5?8UGBqd-Ouct!i41Z!P%KXe-J-M+7^hgtAlpWBcJXOYWQ^B+4L{Las=)Uti ztIK6+W!XY%mmvm(-YC9!R76{sBUxBE8r%aG|W2X5{ZbupjO^ zb(*PiwWE|k%mj(ROy)LS>ey%~61X|2gCF=|ke*`C_yh)jatpiyYinzKJAFsm2SL}D zhP(7{E)AF-eXptX8O+cKp7KY%{SKA{z)8c>W(i)obe#=}P8}G5L}n10q9aAjr*N>m0Aaj4*_-EdV4BC|Vu6!~2-c(i|gyZhP$o6$c+ z&wZnn!15pYi8#$>-|{F}qW&9@jy2)X zct5=Vt`WHJOb%(rF{)3klA`xfAIB#+P%;jW_X8zcqH^Yar^`vK5~SErjV+e zAqcM4ogv!^#9a{*-PC}o%GP?}>%&+rcq5(snxf@pG@CaA|J ztEs|*0alYe_9@v+!NNuzE=(;!KAVR9g9r?4auckwpp1I$EwUqDWE(F;Xly*|Kw+H_)@XL-sf!>Rl5u&=Og>rswzFH)T zB65!15$k~-!W7rw)v%k<@1a{Cx9q#teWPM}SUS+JBh@}zU0uc69#rZ0ih8f~ww+WnBEqt%?2L!{|?{!wk`pfy5ETt z$A=z${Lx>Sx<2)YDsG!F4=O7T9v?lu#hV8JWF!J=m>ek$9I6J;On%Jl$u5F3iKVr3S3j6IgCY z;w8@6BfY**o#dgDnRf6ob$-+TAFb;KihsRZbg754+rE5196o#)4(>k)nM}6D+^6$C zzlq=LrhoA5?%Mv<4ToXr(a_WyxUsp(ph_e*vr}sSF+U;{)U!H2$?GI z^;AL^Gx#PFIZfz85YUH!&Tmvm4uHQ)ij9>>;Yr6z9NC^+CJCd1IcVa)Yvm36Om)^7 zI8H(hDwO0C=qNvkTXYJx0{{~Y!(*Rlb5CFv9lQ7b`_i>a^_lgx^*f;(K$if-UOc}4 zibHKNCXMg#-8-=(tvjmQ!Dn%|CV~v-;fEg1A!GLK#l?kUPYieiai+HmZfv8u{xj3F zl_vG;3N_x;_ixRDU@}HJekm}RZ1GMwn$1a9sa8kI<6=Y%WxjE|Aoyal>7uwm7|Q1N8WmM_6LYAV!ml()2(cZGB(b3 zTEymu^=z~7QMN~n&*0z?Tl@}U?fTC6)!*czqvyC#b~`pU2IJ#nunFCE^ z1+YAn5fzx|6Y#+Yj=~2YJPrrPa$vh-anMNkS9AX>dosjvlR@6Ii%Kw>$xr9Uuq$h(DDCf&r~1j zSrUdN9f37`to6GX)ZH4SMGXeiNqFGY1l)i3VK{kk0FpLlhV`;ikjoSs1kq=S(U@I) zjT+t%!|&ianEfwoz@^zTESFonLowptXaDy9pnp3?}Eo5P9 z*R3ecMq8h#c1C~u2l^qO&)wb!k>YawkACzcW8eS%pZSLfk_IiN=9T{sJE?|lDlK*4 zn?Hah2k^K6}-EWGdDgYcn;j=`z@dC12a;J8H)%{q^ewUEwtEE*@P z1cXAH&iHl=Hme?7yuJprYc&J|d0ffTx_;@gH8B51!VWy^rE#op>0S3*tZu{auCsp~ z+KmWsXlMw=N5?rJnwGeCZz7}ikEz%8_w~cxiM?C`@jSPcQHyvV1OXC24-V2GQi}tH z2ICaU2>{4g8fv}`*B92{^0hfARy-c!u#f@hW&Ss~^%#H~+$dWMgTBSoty-9F9RT2|X1;1A zo7giUYPBk?tS;?JG5b!P^Rx?=78eKl`tzUhJufCK3;%dD$c+2y%{~eia!|EkmE*qo z^VYEi5B;I~u2Oab96vM$kKHv6ClBp`i9Dr*%itC3`hDVR=!{6JzI$@|!K_o*bp!-) zXd(+h0pr3<0oJNEG~-#e1h)N}ZVscNFmWyiIMi3p0Y0qRG6TR@E#?V8s*V5|VFZN! z)~4Q@&E#O;-hD7UJgklb>E9_V@0(q=*)ze%Iz4??VvfipXlZo?R@YWRkLe4*qB(X9 zyCQUH#by9N*=44>8T!2f{D=^g82dBqlkaJ4N_NdtqO-uc% zf>8x#-1OSWAmwcfPVdbiGlM0WjD#02OvB9T1~g@c#h;+S(m%qR7vZ*6yQ`0uz~42S%Zfs&^p?IG0VHBYJiplsP(1+f)@~*{ zv9#C=#H|Vbt=5;SMw&<@;lP0dUa3@+7cRbj8}Abz;`mwXxPV=`e5KrU-Ha1+gxhRF zJV^s>S|@y&7B&g372g{PA;B{^bH^+iSMZUcK6voxAUtr_5jZt&LpF}Vp|OhjpvUyC zFNyq*FuBdtd+mxs~OF&_BCu7R{ai8_VOt&(^CIpiyW zq;><0A?woLHvj|u{k%V1w-K2CK(NoEtbnh)`c>NigD{XfV+J$a2YB+IZBseLfyMO_ zcXS-gCm9OeQuuxL#XVIAca@KO zT_$+ZZAyLkG5_i)RXt^fOs`wYbVc{l+tkC&S)a>3{wAl+SC(Nc=flw>!*KHWI2=DP z2qS|wq-_i$jXE^FxV8j#RN$rGj{`-4I|#_7kVJS1M|u5Uz?$zXS2khQ&0^i3+5)RQ z5QtpkgzYehurX*kvK~zHV;+NF*JdFaeGkP1*!ukle%NLJGHCNc7A+E^G&(o}d&ee_ znsyifaJj)_Gs7TYK!<>GQ-{M_NH9p)-s05=Xkuh~M8Ze}LL{^s861Mad><^WtpvtE zYCn>zpz?K~Nq#)!NlIOM!F@;pn@dg989+V$2%hn;0*hk3KWsRmf%(?u4r6pt;9KQ-FJOu_b2!JvP*fZP*L*!6M zU>Y-j>O#4Abp{s7$RXi-G<|pYfk*EB#|^jkiXo@uUx)N^T2K2_iwu*Xrl0ZAO&i)EIpp541yjD%OXCPN6i`)b8=*U-F!c|H1F3Wx zMn~{-=lZlLQrp1pLLhmk772uapcLW+!dHNNHpg0smGyOQ$CE8?M`)3)xjk@rv>z_yQ*d>53FZnels{jLhI|Sq30CP?9dJt*zIfFaPxT*qE#!$Tlsnw7!{6CqB2eJ@BrPMQ|QR zw_fn?0f4t-hv7j>q9N*CHg!7F?sBtQmv}rzCxax*Ok4=va=HBXn~la5eNx?i!C$G^ z<(}~|7$5GBFU?%8#{CM|#e&F)2E1o~KRkZl0eJMpI3!3BjL&I$0yZihtZ(+gX0eJ? z`vzQJS%XTo4jY9s6v{QI);(~WlIdAB)187YW>B~wXE9|O9LOQvpM}A`JUouCy>}=F zsg&Rmz82u`(yViL07U}_%&73dKTn4fo3m`9jV%NkHOvs_S2kg0c@3%!4Ek~Mj~Cow zpa;W(FT>{(J?xtSF z)TBk@d`EkW<^)hF1{6<|gQ2abeT{K1!-$7Aj4 zLITnUbC7XT_&J*V8>`V9E*}pH)fxu|Q&ON>y$gfs2ILOs@OVE0N9S{_EtpwYf#q@; zY7Gy|18Yp*b4w$arX*?@NM{|$<98ew#9%+t4`cXuun(_i=nUYom z%OVmE52pZ*?}293gEJSeS({jrT3K4mfBG{&_)kupxb$QH@4x@`wcC{iFx=e(4?K|Q z>+7pM`OGs3Wp1Qeoe2c+F|PqZ)FkLeH#$C|gNAxr4*};WRP; zajK_cDn_C$2eYI^CJE#Dehj=LP-yOh#Yzpzl{$igBCKr`@h<{_QkerW`=cXxNGD^E z&!u6gKZ6aRiv3-d>pZ>a22ZTh^B z&n~V&y-CGbse%-XwERH5&%vLw$}sSQlr6LDP0iYbrY)20qKd*A3C!3rkmvWq#NKgOK;XE5Y!(67 zjZ&2XfX6xqYU8y4Awk~0A%ivhB!c^41gxX|{g6avERD2(!j{~5V7vGn1Uv))$e75( zf0k@qd$*{ z)Bi>)eFS+DFQQVZw2T8b3B{WM0mL9sdnEm(b-B0o0Ki)j?D*is#YrR*Nqcj1vjuJ5 ztUBM)GvMj1jvYHz$Y!(u?aIp1S^e6#tG^|$m2X_1i`7K@Jxz?9xPbWsS!vyUcoa?_ z9EPzxQu)Oa3$+}nY+fxdG&$2vFY65P&@nB9$}ld_d-d#vW&LIS`ABS~MvGP}P3EZGVA?Cj$f^VxuA9`ep-` zOD+s#a^O%Y2SI>kBOt?Ij7J;;MV>E3VOXl(LMhZV!8DhbN_c1#83?5FNti$?zp^(2 zO?L?E^nz>t1ONoHIRY5~N3j6pR7qgMruU#>Mhz|tc(ocP{tY#Pnsy79E)dw-Wk{ql zaC|%sixWARscgVXsR)ykS1NOJ3k|g{@xyP&G60=(_SMPB=8+S}pMUVd2aC@>`)r;9 zKiOTI?B6gzZ#Hu`z6r=ONa_S20B{?3OZ5Q2oxb(;^*3>m+L)i8&l)j{@}|DI7>$8L z()dq2IdJXp|L&PHuYPtOQNKlZ$lGrkkfHyF#>OE%IMR3R`gDV`T4XxK=s*@u9Nq^* zeQ8`s>pYOhR^8bq`i2XCgXsD)3-ZWoJ?SJMACH5`r6@Y{pdMP^980(0d1`#CtT&-a zL4&MXxkR8BZZmmL50D`Np2_F}_n}B2qBg~9(}UUN4Vc4BjvV8xctY9LYC#xC<2a|Y z))rTT&cO&G!7Cd4qb**UbOyoC06XHTW5ARb_$}Yn8w)6d_%DM=e>5_fd;wSs*MR!hZt^@;9vACk z9pK7h8Rj+`&~%28VMwu49cPB%a_gWklmL+X`U8hQomoZ};OMOL?MeXjIWyS|Xj_DC z5M5{|IvW0g|2%+;%)sE_;Jy;*$ytk%p5mCK|9ceeffe1$rLLMSX?bYq1wa`kl@eAWd+}l z1e35fFSSQ~`+Ituk~kKWyCj(maW_z$8383`bs>|C z!9YF(*;GQ(Ys^kh-!(cqwx3EStpkMKzFAiOr?K=`t{gN3rAU*O8I^sl~;`vw8vUDFJu6^%#H~T)XK1jvqfk2l4!w zGiQ#{zdg_2GVeOt-@3~Mo#Xk^(jqc|^8b&4;UA2Sjyw0=cVBsCX69!qmFn5?@$nd< z+?j=idD-?nooK%OS-{HjeBH^!s|kU%`dR_T_Kv{a`v)K=OCXT0jM=6=f z@s_W$pr%e7q#1oH)Oc5^>*C7ZMfK2w9tG-B4zHC)mi}d!2XIZ1U$F<0y&6I*;$R06 zsK89FA(Ak^x(w5+SckQ=btMMNT+D$Zdq!Y-X5Ly@ ztI3Vk<*|={^3VLsrG@1`d-44Fw}l1JObs8dRQ{8)#RLVj@Cm@AWnyV*DYm(}Ss57_ zz8~ZNFCm+enw^`?E-WsLn{z<5I?F9 znwp~9e`DXieN9CC>-Bo$zlq1!t|E1uL^`dyxVW%@kCkm;0N!dqK(C!nrC|TwiM^$I zH9?DK!tr6SKf~F-LlnE$)EU1BE&`(S?G;#;!U`5l1GA)7?8_)0DNH=5gU-gsIP#{wNTe3|tpkGJ74>uV^2Ayo7`P<3@(chY0 zje;BpI1@Uwe&IWNm>Dke+-hsL?6a^HP^jA>b&=5#L59o$wHMOg3bYrKtcczeuCh*3%m^?FKCWaUDhyVBV!mvpNo7n$RsG6 zj6)omHV={R(!#tjPU8%+_9#TvK< z{~YdzHy|uK^tK)VcuRsFM_9_hv8HtisrjpC&z?Q0kf{~;0CYmGHzL#_5KAW;)dT5* zb?h-hx092T`|#lZ?U9ku8nOXNtb1K~=_T)Hip9b@qVM|Et5>IMwOaH|tnhrhbt{BH z*?acv8Gihc_x|!1zx}O!P2ZKdT*4X~9^gevP22-e(}1nWWP25oh0bow*&1d@5CnU+ zaSK}S72@}T_$Y#mYl~G_=(QL4#+yOCLIVrx^Y)Q$U9Vd(vr>X`6EiWI!bcvmL_K58 zm)r`8L6EwunHFNp*DQo)00JFA7vWhn>yHLAx{UyU8I3D-T)2%5-ruJ1uNHjMFCOeu zX!To&4$k6>l6Q~UNC;>{O~hfYSc3%w0YiQLkR^7?gTU}f>OMf#?&$}< z00EdZI5dbi`u7*Dup@Y#sOCYt))A3FoiXGtNsN~&`ui+4Pf%*IC951bt9hzR@7@@-aF(3dfEg-9Ixko7}r^B6s@q>3=mh zH+N!rdASi!%mZfl@#U4}aTDB~c#NND`DW$hb)##b-(k%O{t{@$jGtYy4<0-?g+Sxd z!oor?`|kmOw*>?+>%6kEd=BecKR-Uc=Xa2{7g*<(>JS%OsQ>NIZus^5LE4hkjZ+<;ZpdZQVrXyx;z(Cgozl?qU_!pm>}4b`*Dn~Zn!#?8(eU0DB02@h z_Wc{F6$iP$44$Zrn*?l75LjM^I@Td#35V;mtTWKrzpsOV&_XUCVI%0kBDkwDFav4_ z06zDZw{`%8006jmxf4|{zoS8b2!emqE|&EGzS^hVx&S~zoA|GTCWGfW#96SnS}4KN zdJ>LJ^g+(C!|Xc}yrnjRf(UpG09)I!*70AF7vxR?89lcBfD==X(fSl49Mt*()*0aO zm`^2<1;{`;xe0}81?K1H(vLj$@X_nnre3^s;f2GDC)OVFqG)K7fk<9kY_;^39Z zYt4LLU+Tok6Tg&9ryiJ^oNQdbK0QX~3+q<&R7)g6rENLpvk+|{d|@VJwXSu$`K(dR z00%5&hni|;v^6$1HiftUH&_-u2fggS2LRr-B?=Ep>Sx6a{4$;-SDt;ga&&WZUFw67 z7q94IzdK;jx^$S6#CQXk@t;~>Bk9C*-KJ&l46a|F{166|FAWR~c=(yHjGF!i zf`R{zo`-)|5j4z_>ehgP$a~xnATU(m{{8!4-`>3^ma*O^kXDW3_wCE3@si<1maJT3 zR*XeW%(~KoV3`a_x%^SqPXa$%FNB=rbH=2Z6D^h#k=4|ahDWd>tE&vk2w`gGw}jK6 z=-?~gehSRUNW$ED9ac&W@I)HoBp&oU9rjgb#xWmMkSG3u<^V|U)o1=6Kci~vGns4q zNMP_=g-d2ZQ%Zj;LitB>M2%D4#RCC%JjPmrzjpP5NN`s`K(q#W0}dbrUFO2zft?#w zFFx7!ZXk8NNM!u&vWCE=)QCXsr!fI1e{>&LWlkr%YF$`;hx>Bo{SsFr(AEcHDU zB=+=CY{p0F5yhYe8yVJ0YO!Dv!RKf$3HhXBtqNDxJooUyLkIqsQla=Me3^|K&45ik zUzZ&{tuTg%9(oXierbdjn$gkW|0$7(eRRFJSzcXRv%m87uMJ`V7TjVhSOD$E5b*Qt z244!-b1_M2@E4}zn*ui5J!|boJ4o3rXfcneVQJL!d~0BE;3_f}q z0B_r7Sb#U)xOC?3yYKm{2M!$g?3F8x6SZ2Ez_ZmJ^mn7sjWP%3dRR&b)zDgbD-5`x zquwRoTntMH7KTVWKnwvs?&JA<{$VT?WRWua{My>uKSX9Aj?BR9`Sa%)3`9;CTj;TM zJDo*lkvVzdME^q%J@Bvo%YXUZ!rxwaz-ygj#N@07^Qg6kl__K>Ck5$gCaC^%BOL073g?qB+dLV7QbX-MWCO8zQ-L8K9A|8 zcc6)n-GcviAi&(N&4O5ZnNFwPz^gwoeSP}t$UX}F{9g3$0f4u4^A{Hv00Zkc@4x>& z|1|=E&tAB2?pV28_VoD98)~uCWw)(nGN6>hq%r7JUQj2r;Ep%u1_Gx!&%)0(LL~sa z?K61N{;6Cpm&LmCf5MaZUmy^O-+lMp7M@sFzWUX#E=TkVcDVj-J*mu1h`hyx3l|66 zW*su3Cj0OUjHE0WP6$Z(Ra{-_kf7;olqt{@0MVK!@hm@~Is+`Jrz%FO( zeN~GM835mE2FoSCZZNIUDDd@PUo!`qV2DWv8Wj(g){5YgS&;2;>mREXNSi?Y-Q*+) zj>`OX8=@sB$i!NG0Ca>17c=NUNy{yrAzq+_mfz8`zmCV4rv3d8=(dP0qmOMhUjnYn zNa$Pw;HDI}&Rrx;Jm)rRRj#M|UJ8Wkt4;(nyGdx~fo|g|kE#nqSwCCa9$M=Zg4y7< z{unZZvARXoBLg5ymjQ@L@WPL*ItYEArANtS}BgiBkyL|a_d0?Rbr*Vz=i&)REeEsWR&tg!gZlnwa^Heg$9*I=^ zQt1a3Bw$M*H$mUrW?0az%^s~KfNrgxk;n4VMwaM@4jrP~e(~aki(e*Wr1Ozp@b3YD zw|^rPOd`FjSFb#|ckjf1g(ZQ1v$?r>98V&uS$URD*LU+;it2AyftwS=<6e3*QagIM ztC6%q_ZGLt5#5i=4@26n@6x49w3z-d2L12T8GjNH`oF=_!LRSzw=av2IeY#3_0`Br z1Yn^3G%l6P*7EX-%e8G=LNabce-<+nI-;Z+^y29(Dj-4I6z&22Y3Alf3af#{Pln34 z=$C7s1}0msMWIGSyd{ku!Qzp_WnB1Ii!~k}z8o z5vaJen9q!*wff@X198eRYB754jdV&X0 zsMg9)MYRJFFe+s*ipsPJ29YyrU?f91tEwaF-``A*)XWpzPIlP2R00yn*~Ks;FI5|T z2alY1xY@k)^ybF87s;xH_UdQ}`bUo*8A>GM_aJ~T#S^i=ict8!PNh<{bLU=9IZlkw zZXZ+kF-K~p4p#U)s&r|KV$H@x20BkLq7!XxZPi*|U;FxFk3II|h*1B# z7hinw5HbNLsAa|Tys%Y$+ha9sG23oyzkdgbfoQ`6oZ;i&EV2Xe^wUq%=ldJkZ1zX- z635&BHU9f|jvqgsU0Pat?%cU^n-O}>CRbwfLRcfLtgdbF(&&2)%t+EOI+(x=tAf;O zogNJ}^3}mb)iT9@a_qAezs*zgeKls6vLUmea*dx_v8;$uj1;ZQtdNmCX37e!!P4@b zuxx_#VZ*C3MM+eNM}Zls%2g6lRRq*TlKtDsi=K-Hp0eU|@Nb-E%Io$+55H60%pMm_ z9n2+782_ck&>Jx+9w8R6_V~7vohKOIb8xH-`J%(~N+}WfKhEenaa3Jay5aK%GAxkKr{S ztDPb6^>8O*amb;v+^oS;(Si!3AREWmXcTxr4>zDh%?0T9HdTAk`2=I@Xz4}T_oD59 zN`Ih73xLwcS$e>f`unkY&^U)hWM@X*5#_Kl8?JaXZ}h0^|mdw&4;@lUy4vvK*#8wm`ij_p{n zR3=41R|cdTUX6k)@T~yAgqTEz!?rxdj5xvyeoN`gmfw0STn|A2eMjXA=rDNj*g(wn zk(IFAhI@HraAY!(O#IT*-+bx|4j~^1O0m7I2LRr=O$%o@xW4eh3tz)}`&Un$I`s+6 ztpCp9;vxZoqtu%BPP+E#&nY6*n=}g~-sa$EbY6SyHEK)y+0oI_zfG|Pvx0wg;>3wB z96fq8y|S|Mt>>SAzHG`12M!#F9XodH@z>9t>nD$X>Ww2?-vnkST#9hbqAPR@9fUz! zwk`rK9THnoLeV9dY|Vi?g*(HRNNAnfNEdPDcs=^76E$7V+N7?Sat87DbyIBmvQO2R3g@9r@feZjm zCG{+}!CqNfocQFYKK=M_|K@Le6_XK`%YV=Jeoto4p7F=do;_O`8XEX`A`$eZ`XLiGB1q^mx;v9a;X*REYVuJtSLGzbX%x}$*? zO9HI^#gj`+O-(tIlan-|?thq=nE3fZq2S{}@sIGkd>g?)Vs&-(i})Bnlga#ZJRuK| zG>2yJP+gJ$fHKFy1)XQ@+kq1r7@8kKlY0sBt+g6vRBos#IOyYq|%qjQ96H_KEK~v%a?S(ER)?Df8cl=k70H zP`9pJxgy9k$HrWr#B}&rsrQE|6Wp{P|IKcuV?gVi*y0!0o67?O13!J?+*iM-N@jIG z;(FQ(JUsw#dw~G6O02K169;J_<@Py5vBz_{+%F>#xGhSz(ZFx6lbYA`T@x6f+e!I5 zJv~igKT`ev;+{Qw1hNA4{rmU-k9aapz468yBUQ{`W-8Z@i2o?nqDgTQ3Y!I3-`F5Wwb1AU#O{0}?&NbN(()MTZlPKY z2I2;gaJ7zEAoC?b8=vYm=Su_#w6yxQ*)ewp3K6Y`R6wj=t25y6op8jn6s<0gDoEZs ze+IG5`6*@es5W~{-9!N#&qKgEK3H`Onzkd#ZMooeq^7$(_oVYvD!yKPs`+KftZN=%NL$|@sF$3s;ymEdxF0n z0J#0vH)DcZQs?{wyT;dQUCaXk@EGRii;Qw#2n;X3jDZg!DM;HKLH6i`GfSK;x+#DP_c#x+f znhHp03ET>1%y+%hc>xxViqPnXgTK}Skf@f9tttV4NPC~;AmMj(TI}?<)8owX&d04j zOepZw8x3ZHKsupmbeDlbx8U1%`4zXe!bQtR1{~6EiX+n&k2|cR!Fssx>mGv1&AXSE z7VfSh7{Hq#lSx}Los>$jDuvs0MRXl9Zi~ib$Efz-iTG-KQzBqQP#IuwaPWOcjvo2L z*U!E_YnY1Oc8m9YZx_5Z0T$GxDx@=u79GsD>1S*?3C-ec5IHUkg|OA8M5COZ}xez;ovBUz zgeE?wM>}fS+a-`hjc1~nRC_kMH7G^y$JZwfz}0J4VRLgcQl4m)K?vC`T-@>JN94OG zK7hr44elS8Ehaun^ylwlKW}&OgF!N;dj>P*z-cZ32rU|qb|}{6B6hgHUCt@C zJ}0Uvfeyzpf$MlI#^)ZWwmd*$Us;CZYmJSK$^!=u$o~F*qSP79yRMpANX&tmv0!GF z80!6<3jR9a2j5S#kmN7mBmMuQ2mrqSU2w?v0Kj+P#)zBL^3)A*J1@j$L1?E0O<8~z zM=AlFJb6;!!Xlyz22r)t6`zhfy2sjO%3V$MvqJA2)mI0tx$K+#+}rJR8Ewvr`mCtg z@ybC?wUeo-VoH=p-2t*~0S=tyWSbaEwmQyr69G!tN956JIUyXqdR=j5uuV^hJp|d#FcV|K>)P@2EfsH0z^h7ciP|W;G)xgf!Gql{&m;W z{p+HQa_`{Gxi#oVF5DeruI~Tl1Q>LZPtxPHjdnYCY zf^|WGzKkHfj%6+b?#YzLjNpv|rl|AcJF%IB!+;XA<`6(G779JVUk?D>dBGnq-h&T5 zcob{qA2ofsw=)Qce!TW zQd-+IzrdHjgLnRRpRaZ2ik5{j?5&D|1f4ZXKkzE|BW{E=Zq@Zv&$r1eA;Mbt{?@E9 zxGj=thSLE%Fa?pv8GsedT&eu9zOhb2R8%R#5?!&;yCLvLgQ)>mBIuPsK!mk;nsI@w zSs?lg_FH7me|ycp)4un&{6=z%=~5IJw096l{hl|AP}^q}wEUm}%#baSUqrxB^cYj( zKrC|MagxShPsUVD1d)!dmT?j^X0sXS>+53x>XA zPh#wTKDV3wm@YW^k}42M+xeZNpcH|v55+?05Mi`d*NtQ;Ro~hO!gyNGM=p&Tr|kHE*9aU zA(VTMy0nkw)d7Yb{XD(M=`4>P$y4F9=Zouk!Qvit>uk(?f~!p->v`vY&C`{m5Oi;_XRNk#1ce< zllpyh3ulM@*i9E;ey1o41ID>dXTyxv{g44O#|}hVGffDL+H~&-q}xG2%l%==DR{rY z0$O*vN%hz4AIn&4TN1LF6ko5`D_DB7*q4w#e=KI>aU{4zM^$s%aiY{ZzjO3hjJi{9 ze}P?hTI{sObOH}CG4;$bh&4Xkxk12zH1B?u}%hU0uz7|&7HPPit8Lu!hZBl zpQk(h4^22yTh2v79+yLtSL>IqEtZ^X#7xlNY_p7jDr4*=Y88y~^x zbUIEWU*Qh#TcyuVSsArT<#IWu80my%aS@4^5e7PVVamqnF? zZ+d8g-07R$!5~0J1}l+EBQ5x(gP6hnKsMSuBO#K#t9{nF-ESxHUu!7<0v1O`#F&(^`{CrZg~jx1LjN=UFEp z&@Geibh^ndWxN|*>!Lb@Xopg?EYsV10N_sAI0xR`+XxSXt8vySS>1{5RpHg zRA7MB&$iuSYuZAM`mLVxodUV+7?fmd?|O%e)QWc6C}SfX!1?nRV18kN7xkbN&=o4( z;hPL8Uz^3GJ}fUS!R+iTP*1zp0+w2Vfb63D@8$=vRU6PMDCBWedXk-N(`^Kk9@{^> z*h%TXod8gSTM=QjB7Xl-kh|5`A_N4~ePi|=`x@ZiWHLdM@)!V^*1oL(Xlt-Z<{OaW7_-`!Qt0EDon>bK|vx>3)pdZtAi!4%mMU%7e(u3WjI#-~PBfAKB_ z0qXcs`($&o0N1ZyNBVzN_4>DHDZG}yUYEAZoq~UhpcA5Qje^W{6c{wD4YZEwZ9!t9 zP5r-Z!1uS@CfnL!WndTW2j@h$5`fhD8TuIXd2L(e6_oAMeFOk9nRHN^Q<@3CV?f_7 zaCg34?ik#=0fQR>0on+N*Gp<;93B~ty<2f`4*!8Ik&%%k_0iwa2Z?1FUx1FZ zA&LGRH+*_#5E(<}2>?B$O=rE9Y`vt4RqN3UX{gyhv8nNuC$$M?8YlTY;z3Ok< zQyvwWwFaS9h9G1GG+@wzCsTu_`ZvvEAQ2pat*Gz}-lZ!b{RYG;O-^2eYuB!^2oM0; zgq1QPyzH#B&{GmrcVHw@uL+qJDmKMKG`x&cI_%@IPetol5@ zZd-+b0WfR|J%HFba{Y5XHxRXMC(heRFVS|Ic0BL8y~d3M|0rNHPJlE?761M*0>ZE8 zhxOV4djQ}LTi@^m92^|9v)SyO{3Tju*te*kbwE`kJk1DG-&pU3i&}K;Yio&;9TtPu z#Z&G;O>QUD5-k}%Kv3wQssR%$q`}4USF!C8%#ApCph5?!HvsF0_TZ549uBbQa zTn8sVg$oxhz`1khFc6lzX8!L65THbWs_lzJkQDr9=jKBH|H$vu;-vsPi~D3pK-ocv zsVo;&)``c0(jq_$&2BgtQ^wj&ACKJOx@?=G7Y(jm4TGZQS(;Udb|RSLlDq*D@mMe= zk)x*cTR!;KZX4(xtlN(5mdD+YfNb%Igr0CGTxL0C2}_ zMhpKrq%Z$~X6YJjm#XtxTEw$8*uK-o9PMj>r^Ql&9LIb`U6XK1YEe=;h6||IP+2dT zc;Hb*q@-(1TYN>UD_;OL7FU{bfs`#lvo+}NoJr7Je_uH4%kN1M_KR~SrNmGqlH#$& zK6w-fJ=C=ZeVG{aQ42%8N+!QN2G}(|>}~@YUK$JA&?9D5P-3qh%&siDKM*`>U_f_j z3R_)VP`!q(7HW}^i>q#zO1R~-kkaGhVQpg#o`3Oqcr^J#(h8_cPtxpv(x>=JlR|&hb=9e2`55$FEVa~&ka1iX%+Nr~8a~Da{S^L9Nz-EE zZ)f9i89uC_=W55EdQxnI8${242V(FCnE?l|k9c*Lc~tFt|$_9KQ}Z z$A^@S4|Z$N#K*Y=Xk&4Fi~=*jnKZBswQyD0z>8db5fX) z=%`-<3?gS)_}AYG9Q+XR1zHqe32A)-w+Kb(7`O4WQ}9pNl8;e3W(lTvfAaI)?uWs`oyw5lH2TmRlM~@Z|AR|FP68ufpBL(Y)96QDU zfWMpmEtr83Hn;tiOJzTqOj-SX{l6EB#r{CAg*^c97Hz#@KyU5FFds_*e_XHEKIGWe zpT?l5OI#u_HZiqLv!L8QdcnX6MbV{{xqHe(pXh5+=@NJ`RC=%=M#lZB<=2F1x=g&c3e?RF*V9)4S zAfKfEuNY>5CQ~NLw`+iYyAF{qZ{+K_`)25muQeDvfCm4YpPz$QUwsuOuT8QAFda*s zYWpq1zBYrV))qI}QeJA+k%Z@#t3fJf_vEM-Pv9l4%&Ulv@uaq~2E|ly&<&e-I?7nu z@8~9$>oi~}5W>o+RIu}Ts0;+ORzQJ4OPEd?pMg06u2?L=_tCUV8gwNzdu2{0p>;Vz zhEhb~o35SkT#}LV=th>L_A-s~EHGoRn}JA?2NL0btXsg_Ha9nYJSQzY?tgcAdHJWF zfByLywRrUE|8LdSV*uXz2x^}@f8p}}{rkUl?C23{YYBo^JWc`B+P2^Ioh=6lvzp`Q zjInB-#^;h!U2;FNE?4OKzY(}a3;eAf_|Ot8WrxKwx}fhykhD|3JY_-*04xyMQWg zr@jeGE6c%51H%v#;IeFMSHE7j%UiiM@cWRpab&zJe@A2bv#>CaWsb9~d7!~R=J+=I zA?loH9Q&e_{}#*Nj)K6gKmv>x1gQ2na;?m!l8{Lx5Lj7?kud;*CpuaI3T-)N+XLN} z{{1dux%OjN!q%yS9ftt50s#h%f=2;s=1SdOudAtsDf~`x{7yuzn*bcVZd<2e%lpah zK;{Ob|Caru1h?ASSIUjl^S4i6gAM{Y=)`_R#sx=%eTS|9rgb|_&e0*zvQ=vl%_k6A2cRfqm!}vG zWRj4uFxX(Wr0Vlh`xw~#{GdwVcW&qNcj!rPw_Wujz3st#de%#L{MVsLZ@8aVR#)L` zPd*7xefwLmu)3^jM_Ml~EKBe67MQj*@XPL(TY?QmXT+;K794&6Wu(z77Wa!;17j%M?slUlh8 z9V%tJQW`q^+jyvllMTZFciQ}C^4pM}-+wSXv&e#5R^0`EW-$-Je>{F@y7 zU1nj3Jz8B`gXdp(9$tRs6=VSx0vee1gPJYj1vBcS6XMz#fKKCpx3~iOUAzE{6)%Fl zRNRLCTn6wD>kc5&fkHu_13&vn=x-P40%<))cQ&kw#CLtYg9#S2O|LW!g0i)%M*3|& z78+pFc}b(C>GoVU$76yGP?I3ulp)X-je|Mo+pa^jvmsy`G@GIrAW7M|m%j9+t2F;#h&$c%`u5*?8i2QYQB)Khp;^~={4~S z^bhnyJQj!PmFwKPrRwUcA6aPjLPnkc^r9o$#^@^DgBgS(f}kcqMEuKvYyGBF(g_>{ zKIegepbZEJ-+Tz2W!hX9Wl*!b+RSETS5yBT@6qi{=Ul5O$Lvlx0{)rhNqr-5cf8$v9v-fP30$1TjS}V-XW_*cUxXK4cmc~AD-3+h*w=}bpTF?IX{Sdr}?g9Qr z%z<`V?;?No$Cd&?i(p<20aYrIl$cP|4;?y`%;occG)SyU4 zD;2VJ*vj?;Y1DV41e2Hu(Y7!%n9x4}fr87IFEc$(>h4D$d6Yz@N(bbH9x&2I(4BS5_G?(tXjIFx7(z4Cnw5?2nGanZ(xGzJ#qF4$wh-$wESx zqt$zr`n@g(8Ud+lz>3zyM}Y z=UwEDY2Q(H?Trny#WVo`ZmaCzthwdfZy6la%5Jo`Gr@{K_O=rwa@Z z56|Ik{{ksH_ksH!_=hXYD<7JfovGFv^^A!0bkYBm1t_=C2v-mMFel*Fg{CzNF*JCm zOo?jcLet#*@4!MA>;I`V?BBZ&HZk~LpPC95AvF)c3j#ka=1E-Gv9hNGSD*%$F!Hg~ z^s-=Kjx2Jfr7Z*iG7{*+mC+hqY=ML?X{EXH*6taN|eCew4#ll6?eJHW3>r^74%`gC+ z0f66C;KwWgL;|PWI)>Ip;8(3-og5mlw=WI(1cDLV_nuS?50@c$bgska1Rb~x#-#|d z?JdE*t(4Uc0=Bl*$`)}fXj(s{>BHk*LKMjOA&W-)(Dk%lMV%{j{!wXV0s#OG?20Fo zP_Ne@f#Aw(s&UwsW}~`2lFQ&4V+98aO}m-m-6EEjS1T-GA?3tumj z%~Zz5$C8d$G=H}|YMNdE~x zvMAXaD40x(vV)Fu_syavp#zvuj%}l(qbvekT3qC@wW@{4^m=RR8jMq*t@?X|-eA$v zn#HYQGD34kqF77jtQVm6fGQ({e$=&)>Q}w;A=|*BKN$iVMXQUDR>4d)jsan)F9Z2> z5>`u_7{pv&2!qAAZAc4K*Fm$k&-+1t_zvw)k-!LQBh>4iG9(om`+x{0Xr70>qmg4 zjMSjpk9j&i$nYnZj>B+Y7VH0lOFw}v3)b=A>ZdFn-EzF{X$*c?@Xm2-+0t6nxs&D57 zUN5#ZU}WFky-Y#R%*=2X0DHDrdU4?QQW=sFByq5imge^(1A%1Ndn_Y8^`esyP}c{d zIsk|Scyqfd^=~0zbvq)f6e7Vhk6F(>euA` z%H`7Y+71dHaXY?c7lUZJ?mNr7bvqnsrFw{vPW~ z!JfV(Bn0kfyp8s;%fF4UyDVI=%nqfN*Z+^bKLM95yUqf^wa+;*N8EWH-aO>Xd^svJ zC8d+# zgEu5)ev`&Ode3UboH*!OiK&<#lPrKpT}P0H1wdkcKb>?K)2CODp$Tae*K$lQb(4CSg1*Xzj>mGWDVHar?sg3(HsD zeDnXhh7sO#y?pJUez3W*bsdWrSh{;pEh{3)^N~Rq4kr8t3BX{BmKlA)@ik7f_E6ylni>%Ta_x~ z83oUqg(iaK@lNVDSB8dQcXt=CEy2&vT28c3sn_sh=e$4{x6sqR6f)7vNHU%i4fccr zno<8w_y6N%FL{5|7d^xgNIzd_&jL%sx&a2TjBt4pU}|C%a!VUfrSF$hS`7g!^jY!e z0tMrSS|Wz$#zCa~%ac;hhpK*vAyjRh#0d=v0ZB`>5-fh@7@eWd9EKvct);o?c8B}v zYisLp`H{=;6D_8K`eG3k12mD%uY|(i`H%2r1AOH{M_aV2S5E=1P;J!!R~PB2XSCzaCf_hjR$pP58ADla@+6O5-Jw5n!JL4<3M27eoHy zkkOU;{E7BL(k9#d9mHdHY2Ha(LeTM|ClE?UBbJjB)4X;x5B8OIM<`M#Tk?FRW0cKi zr7`_7h!H84apL1CU59KYTbrGk=}t^cW=@<~+`W4B+Miuox_1ZHrl8a6T&?a`fo}0> z7a>{Uv7?iNZIA#Awg?$8$p9mdcrnY*e*SYe%yTl?%$3!(wcn3$U!mS;V4rQ~(z$cz z{sum87z4G33qTPsxEYoU8iqUH- zJ_4(!G5HR-1z^c06mapMnizsH>H2yoH5}H~>qY7NE~!@dBLT??uSZ2DW6H?G`L8--9z}PQ%6X z7vSQBi!eGgqM=(0L{BOdRq)4o2?!vyrYUxm9%ci}4b z`N_?YnCKkr$u9!Wg|6Gt;!%=W_QbCUkMQ-se*%zn$cvu~VGoNv(E^D2-NZuoJ1|np zG6GP^QbOP%=)R-r}!=)2p|NT@hsmj0*~z@Z@BBZQTDT&70@(^?q`1WYFd zLdFSoWKB&T7nF>79YCZI(Yq3iPfl_hpiysNvX)DY!)nr=G{^z28BvvP&_R6u0iuyj zM46n0h57c@*7l!!?X}lm?sVN^2eZD_)wOGsh|*2hFHxbPYLG#dKS%%u+c%pGgo#Bt ziZ075D-v(l&A+SF>W!N>Z@z|sI#aLLTTeap)b~tGO#F?zckkK=83%|Ol<~DHvdH%13+l6k2}ZU_3Zxbck{T8e zGCk^KS{F%@V!s5SpA~U$Yd{kLQumvRN*EI+CJ0g$tooo}c`$|*;mq_T+^z4ac8Cy> zpSny8E2NoPde(2~OfH5wij!N5^AS6wPsbBQ@Uw8Gn9Z{B51n(2COFD(pWF{sq8ZBrClgh(ACGnV6aDWOy)62$r!9bY zX7Tus4_Ej`BEJD^KbU^FjGZkt0$^mUMKr1xruyblyzkQj=+&w){r=tnANTpiVZpwH zdt_QtIDSiWbm>?LMU-5t^mBHbm@-Me&4mvl*q(jZ88NJ)1~cS*kd?!E87@clgJIdkTm znR#c+UME+KwRQ5{moy3Xitc}FI=Ep*K}yO?4t=_y7-;G?eLDg`ui%zUl{A~|;^QD3 z>~FPD@x`qY#CM~zaccWBQ0WsH8dv@CX@RAIdWbx=97EQtjp{=nbzVkjWjIL7EaxI(7-HYWda#a1c8Q8SWLPAiz*n=Wq1f(Z*zsi;9#*B14r?PP3g zA!%2lc}D1nk4 zTQU#3k0_}wIC=@A=XI;6AC*W2`{f~{^I;Ym!=WiHC{dz|qx&?fchIJHAmhwsQTep9 z#JlicOZGoY0q(c&CnI+^eww!vKTrQBplkbzj1#P`4Jnfhj;#+*)4$rLc)c%UP8*q6 zYjw`B)-?H`aP=5o?+Z4Fzo2;Z2A7fcDSI-ds1B@+yL&GPfck$%>-e!^?Hoj z+dhiAoeJzrt@X^<)8+K1qjvY5rZws~@PAr?7d^ySt3@Cgwr{Mc4u;VaaAQvs+anS} z{9)%V7#NUg#8vnYmp9V@)aZVJU^&icYRz1Im#E0~s(VC$Sq;K>$)7cil+*XMGlvtC z-_VNJI<`s_OW_MbE19S&o}~l5g~ts^NY14TVQe{?dYRdw+GT2Qc~d(VoZrTkOOy9- z^{@^hfi@MDib{J?>r#r82q~p)%Ezmn_08zjPN++VMq6i6MZEO)EWe@eBthsLIM|XT zDVl*e=kXpM3p{(apWW-$Db^|Izsg%o=O^XIo!D9v`qNB@5v|I_=x36!$#5x)y*4>v z5{V(kzROA-tBV6wJ%l+W$`idZs3)1oD`$zz`%lF0j1HR|4Jf?FOyG%csJr&M^q~?C zo2Sc_^&p=La^feZguDGoxnTWMj}heyF);}Vs(Ox~X5ZhZrOtl>ueZ+I7bAc8;uY3x zJbx?=kX#!YqCu?Z^8T-S9~qbws6dH~if{UO<6mqyFX&AeFZA@F*Np<*6vwe!tSthv zV>b1;1SE<3=luIo|HoO1UX+61(bjjt;rOI1Da9J%M~^1KzXpua^8CrdiUNT&zS)m$ z9$E-H8P2voI&tu139ne$OExHE6YrIkQNNTkXPf3*P)dC541Qa8e@p(_VXDQdN$at) zT_PoR7@DSWI+_$}!j5So5~fQ64;#9$Gn!kD#GxVbv7o~AXYo|=gD6$U!H{H;J-Co9 zlVLwnsTLN}jz<`Vr9QLxXuu>>YZ*y&VsFkY^+c2m;uw?CT%>tb+{N$;aS!+mHmbNd zLdnn1!loAtqBUZMC?p$2;r1;^daJz))`Vd<)$e_FM_80XS2f#LYonPM@lnSx7_JB} zDLECf8a)g$k+odPD)XI=fx)g}*l;fn(kVv{EL-}7TY6T&oWwJ}A7pmBof?Mk?#8e0 zWPoGPV+UnL@PS|=M@RlBAwTt7^HzGzW*7OJT^ZS?@1obi1E}UMn znzs9&4rvV!nT%F!N-h^OE^ayZ|9A^<2Kpo(nx~sE{Wk)S64yGDu#Wk9k_Qwz8KOCD zy&!E$N4H;sy7oyxB{__RC%A>7`L%eHN%)Dqfs>AH8{X|0^j@Fz8Cc{aO@AX*_5xV}OZCZVk%gB$7-0*c4IL6wW3Z;opjTJiJ-tzz9!XF6+ZDVZKB z97M&8d}iOPyKLlTchmeK6Dy)mrT_50S|{zqaSG6KDS458JZlku3DkeNtdY{u;*mbk z2-94ba4VnBK}V2WNJ8hWc+y{BC#u>pk1K(aX;`RVi{X;s+AW0gVaL^5YdP|4Dkq6o zKeSQx9|ukSX@!VEms3Eb-0;avj-hs!a?`Ykja$-Ja^~#WjeC3eZ%K&@_rvjN@w&wZ z&E5jdyKWt3=x-Xp#(s7Xqs1q|j2*fp{g@s`V20W^IfJov=mv3pJ)%?Njfujb87 z7_(|*b%eaqu^lO;3->cA1TpU>4q*nU!B{YpPt^*s1-2B~XQVMYU#FF+c?XN{-hfMX zr7)K+A%li%=Ud(%G8134r1@r*I~kVB?$uTbv(+C&)I&M%IFN( zR2h@Fff1vk)Ix6@X?@N6dV?x*A0LrZw}j7pQ`bnrLI3mlPxlo}1ls%7vnG9U*G((8 zYcza`a=YDcfbfqI4DmCS>hYUD#MzLtBLleZ{C2QO7Z#$UD#267qSb+aY*)ip zuCc=Wp3%j5#2^2VY4|lgW4aTwyv4(JU z2>^)XmtUEZKxubl#l1}r-=}mOOX4LkK0f|hz^5HHVIi?6as2+AWEVZ{}jO0LnM4a z9Cl{sL7L8_IlkPjn9bi@I z_jN+HJ)m@_w=RhCnceCMKee7Jhj_Giv6fY*?p_axI@{Lf>F7e^T}32SqXg*!13nV#rB9U7MDk6Cy$y~!tUZf3 zJT;B$Ap=V22JG)MDcb?SE~Q716m72KnUM=XOokUQFisIR=GT^fk+{_D@CIRtfnRE58`t6z}20*s% z7d>}`xu|myB2Rd_!<<-(!zUarDl>^ju@E>*o-po{Vi zs1*VmCJo+U+l|h@x5qyc~?9HU^DvQ{L8fz%TzwJOX7cl zEGB<4jEsVUgO!aLX*nNdvAHN&}%z_Hu_OG0|r9bYR zxBW(==y~~>gLTbWrAhX}H9qP0juiW_2pr0yk_{KYfhu`&!p$LaNfay^M482y$)?|Z zw~MC-uBDzTMx}fpymXnRU~rK}-4YcH$j3j9PL`^6Ow7qpzFCf!#HM{bjOJ1yyZ^0f zZ&@1Gw-z)Rt~C&vlCtgMP+No>U5gm&Gd&Q|?EI?>o$wz523SO&^c!0)d6wPpE_$@-z(9$S~&NdLiHL zl5xlFE&Q%~7p%Rnau+^(T)oS-=x{&-H+|;){A9o=x18>z0MSwWwyW7`pbF{Szq6?h zg;EH2?s4Y*k87;tRxIip=XHko2$*StLNf;a?jYC>v#Fc^KY~MKi8ofk!O4l&+uQp! zp!rDruio4)CECu?-gi6C0dtRU$WoRP*i4#=Fsi-^|CZ40RL;m@(`O zw(^^`k!oFPH-Il9sy1=4DoKi#d3oefmiBQTwDJcnF8n=`!Eu$|bFT!EZ>UZ(2$!LY z5g{Zkh&4-a#koi_f;$axO%FMcm8S2@LaVuQvcRVKp`8+=! zaA|vrib+h;_+?H`IY@vRd{ha^#(QPTY&Unt7#D(2d(?0ee03)lwrgqkB*;h6SlHl1 zIN|z=vnrSXt4_%82oaz+T>cD%8&Ny-6;A|TX<_I^=J)Z1SPCfbWa+q~16f^ab2H-)iOl8jnR@3hG3Urn4Ua2 zEH+{!n2NnPQJ$;sClx2|vR$0M1<(zNKcD#IFnhsa2Q~tzr-Nf)DqF<~0|;X8*FY81 z@-}#)n3qDqid}*^#yJrN?g*9NCwh2RzYkjQ%&aMVudl#|>4zoEfMFfNz-LJO+6HMt zZ@*n|*7BJn()Bj5xtY^PLU?hozh-EqtfS<3p(E(@UWuHQVl& z{rZ~39jlnQfDkp*F2`;ip;*TpaArO!@OYo{`YZ&e5{x64$BK7Pwin#jiaPn}o(AWy z&NWPsw-SjG<0R5!Lp|Y6Dh9;prw|+&#&P{xHB4MOzOc(LS%62Nyz9oB%e{cOObH}( zI6Kf~O_ycQk2LV4@PDP^6%n5yc64E2-avMn#=&A8o&8$T#}~{>96cQ(6$u}W#}<@? zH=&sp|6L*c%?JP2cuduYsQD?or1@Fek3c~p3z)5*H5>B2)R>(E0Z2EAratpk$ zS}pDFOJcgzeM7N~2o5dYcRv8+e0dQ7>K%bf((h!uPM=@eqt&>(V#8*&gfl7lsShJ5 z0VQ+}epN5qp`A;eOvyB)s)>b5Wv_8ww=>`C`&?o*d#9feL-!eu^#}*J-mTM%fa59P) z{r@W1zb;Esixq$8e4mham;u0&q`Mp*YCuL%=E@i?=rbB7`Po&5C#?e?{F!g9SL4nC z(=*pn9cD$Bj;kyHX-UIHPIjGjE;wWqtzsATUA5u@p4StdRv~s+83P`M^44LZ;+tbV zw4woC7)`gBW^Lh+PjmZ#Fs#DS>(k$nVk&6$*9-YNd0%Aq{!Nlb<;gfMD z3452Xs0}KP^$=JVxu#SGD4vKCUkFoAlh7x&T_7eA6xxuTjoEHdIXssc6X49JL$ekZ z5Cq-HP;Am{k1!_qh?8XYlS{x`2sY9!&>Jf(eSR$c9w+Gz@Uvi) zY;BE@U6!nzS0zU7hgO*`$Ki6H7=!PZdn{9EriZ=Tutl5RpG@oEnUInr%knGHA+hJ@ zg*=A}|MGDp@~X*juvLN}b6ZEB#QDR!&cJDKDy+OV$59&*0~Kyh{0kq~K$0;&-@5JK zN%`a!GAt7>-@|0UlFWs^U7(Hf{Pxb+yp4NGM(ImlN*1eIa%9nhLQq&yGFfywS zJt6-~*cA^R;lyUvVt+b-T-{5m!A(VsZcd{2Rq-;P+&F%a1SkHE{P)YXEk0A8tl#ku z0bi`hj%Gy^Y1j<112;HIo^p0Q1%10&wnURCBe8{w%O$h2yM@>OKzfNMo`bM`5y%DqFyG`8}Ni@XJDm$0wY` zyjO{tSM@0Lp;Whm@8?oN0b zA?Z(FH+qJJ2-$49Fo>h}J^m4frge9YT2wJ?Y~=s85@gZ<3TnW~P```~PvjpDm+?MY zcY^)~p+vXFC;2%Y12T7HWTPad1ENZ*4v0TBEu|tWjEok+(<%ci1r}76`~`h^z0R|V%K%qg3n^=bfo-U zSYR@9a5VHt=!g*uMm}tAiSSLj%&GHBr*a*t;tW!ij7TJqDi)Yu)L3R|-1P!zqRrO1 zxlZ9hJzwZ0F!OCgyz?Ty|Jz6Ip+iGMoPj!P3x6erEyYo~!C-0Gl4q82n z>xo?K4?dQR!9G3)3@`6o6SW~TlK*|ms%(A3ng=_6k{eS@nO6chsz~Fwnq^fgFAdcYIzf?({Z0g@X zj0$WxRih`exy?@OvG!Ob(OQ%vEtEC-%&7O-@HK_7#34aQmaabnY2kfS6`~f56tAO* zvs$`yKs1LkXd4}WTDaeCDzbC{7(vZT#8Yc`n&(PAdBVRUclk&`|NJZ_Jw z^wk&eB#sXT@FVr-2(KBfvV4+(IlI9WLV#v+-tunC5uF})bHg!rVMh9tMQ5)}q(oI8O9BbJFx}>>{ zGvFYIK}p*aj^_Q0tN5urRAcD2l=Icyhd~6yPONUYi5~!WWo#y6j>(w(`3dCBI_GCg zB{K4Fmb_MiFq(&bZmtBU5W7q}_iJ5$MZR_geKnayxkLtw{7A6G%XOg9$4?xu_r8Vr zlZu4%gOqAkL4ElNB+GkO5f|ZXYGz#5+e>%wP{7n5!@&O_gvBQ1=I2>{l+eRZgL!zK`!*b zThTcgaFpBwbw94F&Q`J=n=ESko|pW?J^tvEjXTja{~m(ADi7#e3t|iMUsQya>+_E- zM@}+-2iT7VND^JS6Nhaf_NUTF`5E0xJPo|_-S;obbZI$YOR*p(tDd_8`6J zGsyfiTjx^q@yF)5It!|VPTHbSMziYW>_>5C(Uv>|lSu(rL83w-e@*IFgXQW!CL%?j zON{;gy*oem0Vx<-gZ>|ZS-l+7Pn{#`$_;h4h7af)Q?v>6egzOzV3qHnk{URgS7EWh zXB$-3ZSHnpT1uc8fe%cG_-_5-^P~C#_3`Ip@bD3m5isu`m`-eGIh$vgZ*;7K+lNI-%nLJ}d%0rG{c_ zNINs$+g=Ib2PTJg4i)3%Z)0aJRDMViD?O&!`y;ZOCbdNaCf9cv@97HRygGvmg=5~+feZShg8*(TPZUsLrA<#Asi{r zs5IY;-I41Mz)#jj#Rb7v0pUkJd3)H)&d*}re|uRmP9y3ta?-a5^O}HGMHDU1{eGRYPYod?{3dCKo$E9d`K642K6##ubXFK=z{f38vPeCpq9L*CBYT;Y}XBO6@q$k@- z%Nxe~SPY`vu!_F(wL?zeZ`LK{7f1Q|I~7&LrFE-!oA8N3q8Wfw%Btr?Cfyvmsd0i} zbEAFUta?6SsT{fY!bT2GB~J27-06RcLlpG0`M3SIA}|>jDMmGL>j3GUjgBL%1YG3z zeakp=+i47hmn$u)ykl)578M1(b~h6GP1*?7`DV1hpWlaQ20-)Jn*C^Hm!l_C;W z6*U8Vig~rXe)0?Z-g=TZ9Boj-U2aWZVQp^^O>iB>u!eMk^zY~925<4JMc4fM9N8Ks zTneW&K}}=nZr)y0ouT*8jmE-#WI>^%(1aYrFdl|I^ItjeKaAn?!?MEE=8$u#QfTKM zCi>hub7b$8g8qr`LX)A%*S7-pX|7tucVFZ9m@uw@)7o%}f}NPn$X52Ra?!xapYW4i zAh!@o@pvIZsa;>uU&Tqu+m@Whu;uf>?`56h9fUn-oymiM>X1Kl6KZYgb30f;?paa z;FY3EYOlgU@4H)0=w5O+L`$%9qRts1YDbxsXJp7C}iXjL3sIGReS$B#r$Mt^; zGL#n12#3gZZB?qSZvJZ1wo5Af4k+7=y2t-aeUaqJamuslSrAq>U$N-wbJ)Ww+QFD9 zOW1HL)k^;1!1eEP}!68+@32sR%r7!H8KnY``Qx-P27Ec@*Men@CxnS@pLf6Lu@ z^DE8p^)*_K|9)~~V{1&i3m*1cDBiJvu^^w81@?z@`JY>d+V*n-6W*v%HuvGyMdk&+ z?&3r8zW1>zmxuyYAnG{JTj4W|ZEg+?DlWLuVUk}RJ$|xb?OSzO&~+7sBTE)2Snt3o zTs_+_ki(~0vN(FV74)Y01qFaE)$^o=gy4Uew1e+%F(G>sl9_Dv>5}vEIxt+sdVFO} zWsXT&!D=Psk+eiO0zw&z2cuw>X0_yQ{hp-0PLu47pw8aH12{p_UylP&-{XoYiSo+d zyB8wERhTC-;^|8->2Tf=Rle93b}(xsPVFQYzaSKHArbU4n+Pff;>mY?OtgG*zn3?X z-oY!G)l67!>9X%$l!flYwutqps~e#!wkm7$ootD6X;u@Y_F6QQGmZoimohjrr7vS# zL=dfLP$6McUW{ZaXd;&Xw5jwaa7+NTZqbWPHiN(F@e%rS)oB)6-lhh<326{wA@qN%Lc(MDh;827#Ap??UAGWO%ev*hTb!GJFU8!<4(@vQccXw<=dOySx3?GiYt|udnmTN@gRo*p2w0%R ziu(O~%^N6;#R9OP+)sTnpa({UwkUA@!-<@+V(Y09zImSypKkMSNNT3X`xc zN4ES{>s;~gV)BD58{Mc9oB6s0*jgQq{VlPF2194L{Mm z8*BaE5oSC*3tMPNOO^2P(_r8#{%)$)so~!ahVx6qz-+r;O~9m2P@p7dWa8{Tj8bfU zY;WG(8H!NE+LE@$R51YfqPZ_ZCem)nyUKYLO;XTKC|o=37>I$M1;pU*l8ds5bMxQWYHFZ#9lu`)p=g5OP-MARRLia;wU%k zVYT$hU!chT-qmK}@q^v@1`7NiUVl{2ZLIB)HyFj<@Vy!FwVVDRdzz@$t>W5vMQ?Jp zA!+!Jz+d$FDB`*$TVX_w(%j5nAx-a&t+%`u-X5w+$fj;Ki94la*LPH+k5%1Ztus>W+COkH&G+-1pL%$wEF}+A@rNVRXW)ml0{P)O zRA&OhGvp_Hmoz5f7Q1F(4MFbk&c;d);STcN0Djj^Tei!OJ?ctTr)Y#BOGrcc1X&;l z0+RNv6dMe;xKn^r`Gj+(SZ4i*DiLk}pjKYt<3;BxEhVvo;1<)JvgDUcw5g!qiSZnZ z7u0^(oJL#RG2BAQkty{!=R?t0dO73~(E$WGHPLLq!+(Fg$7IiNl=zafh8I+BS*S0y z7_ENp_H7NyU2vfBIh6MKXyt^Fb8iQpMENfPB42aofXKai%Myym+uehyaW%SXw2Nj> zB>BsF6jilZ*!Vk-8dE&7s&hb$t5>dqfw zzGFauQF6^8x?)qJEiw}=#!;ImPBu1Y)=S16Nwb%Uvx@66DCDOdiJl%UA9I=ROvw$G z8WN!Nv*+YiNOI*zW|@<^C5G$X6fxR(Wxbh8FG;XMMqmRIw5+N+&f z&yEWMdwzCk_*;-9$!}>YW!kRqTK89^*f}<2!HGEZY`5FUY5=8o4p=)wI}94)*ul)* zG(#o^Oj-w_4SiMH=(1dG4M{Y;kfyYRVPtr-j;|b1Guo%eFu>*XBYw1f@P+$3`<1gAGY{R%6fZvkQ2K0H4vD4 zix=Q(3gYox+UI2TniH5Qu5S;{Fb8ATRG2iE2DITnq8j_g5o%m^bOcAw6R z2aQhmK57lRi~WQ_VjWj&0!*uO-M=)hOk4lu}7v+FHPG}bSlP^sU=d%-|L9<*@7vFfIafPO$I1B7ZoHmFY< zA?W*(i0jUAppR;3-BusT=}`b5GMY9BzTHDtC3 z*~Cl50Bf=o?G>b+v%gZ;umkGX1e=H9G6@b5PGKY1RSJ!ZpA$B_3V}H`PB5#+q<1ab zq&0yYzh#|EC*nIfOSitmX57t$0p6>3E6u)0IH*fVz=_8}bRUB)hlpqRZE7YA7Pg+i zm9!fDVEcBG0!n6=w%XyOerDk5fA{Kyv!Xx z5qNof75q7I>oGUSJ?U`##<6(LmPlwF%;M(ohC0aqJ7$mjmXm0 z;iQ|K+_zqP6__d4N+&2$6VAMCHTCm-R)3JzF)px2yY}~eJgamtuo<4rn26t)+l@AU zv?IK`6Ut!fyt0&a(XevbYvRVk%ge**2^p#@5~*d1^v^WS26-)QQ?Pm*_bvmQASAbc zadpe3L1o1urTx>@_{|7mUPuixeAI&hfOb1W10oGOK5?fEd*hcDF*CoduS){!d@79) zYB#fFRf?}R7@mKnl<|{&;x+Ps1vlW4QWV4|(IG$70D=^tz2}eyPp?c95(bVaJjtdL z(&mBIc!Ybs5Fra@_ns4?(;Dh|6Jph)stWzNKS51uf8ZamBmX#6Ar)If*Jd0x^+%jk z(h{0D$kK>_Rc3B3AvNPJT8lJY1iUgh`5P9)Y1NhGGJfJIzh@ zb9|{zSECMhZ|lpwUm?=x*$6m#vt2iGtT!|Ka|I(VsY~rgmPLTZG&*;o%#_4XJ;)=U zU*RzPq5M8v4Aj*X_ZY4lg2qTSsR*0ytGmy^XecVC-JzxxkJcHEGX`O@yofyVudFrK zyym~VU&q^33L>F+?eDsq`^STt^zeOsXUWx+BA8sqZqoB!tOi{Wu)Zmk{{TH7r|gQd zVAwi2p~v#7Uqt?rt6R@4d|RPgt%)t0gBqaOGje=9#<)|DOZa9aZOm43oQtV+f?mWW zR#;-hhs*qJ$HxTiN`_jkOak-Tvq$9V7Y$mdRyD%a_?`gK>rNbPaY+4IywZ_a)Ugep z5}J9Kz~h(#Lxz-+nA{~DVHK{KTLA7?dO2VldS2>8 z;A^%IxM`cSI4_8SrkHaxia=_Hx+6TAoS#8yDu~n4O*nWu0Eq{yTPb?R6jO9{Z~z|> ziN9O7?OKSimTFH-`k5;0&dh>WcetnGCs&J)J%)II7cqN&W=K{o)zET_MAQaDAi~5S ze}vW>YMt{B?k`kGPDr7aKWQPZBlQCkgZKFi?EQ(nAgiUVWG3Sgi_{Zv6@N!iYHrTMi7_-yAma~&n z#DpoMqoMBCud~+gr7cXCj@2a6w57`U}0gvBn zk`R=^iOg@u5&UkA+`g9uNZj(acn*jdl!H~}phN4#C7p}{Rb z(|(6^@dt-bww%}!Vu5c~TB;PIOGxE|Grxj$w5Ps&rbqZ+`OiXna7Wrn+ltO10h?;{x zX{A$VA_8%>r(5bZ z@}hlXwSWn98;JsXT-ynK*$P*0_uU98 z_ahkg?4|wFq)Hka*Z0isQVo7P=4n3k+?6WGAB~o@TS@%CON%u*%`fciIM>6mP&W&= zAb0ma6vV`>9&akePALMewSZsIx>e!bO{0pEZpEm1FZiz!PHuKSjAve}ueBys&wk?h z9BQhniW64?&Z`}>V(eIx-KLX8=jWxd3F*vfuNUF-Yof;MizL(p0xE!oqaSlc;&&MA zFWVY@W`AkWz8`zw@hWYb74o~(CQnwX!J%!hO&f{wjb!MR%P8FRr3jxKOc1ZXMZN}- zUR1AV=J;YxXL^%Xj=Lx6Cl=7ctU_h7Ca>o&Un5R_v)I6@L+O3Ur8gEub-3RNiU@#t z{%E^^@0LeQ$mYB%UA+A%nlKJEPOyL0#XE-3?;KI`E?YDaNT0Gzsn} zIzGevTbR?^mtp`%)%`^HbWxvFN$tz5fg+8AhnvBeSWAiBz0|>drfJnlnmY0}TB9=M zYcfYmkJ8;8Qj&65vYwILQ?LR7CwmN--LLK2F!RhNEkqu1!ox*qE@ftPvZQ)agBYgn zynvadKT-k@eIn2oU=@Dm>*niAwCvQFkShUwITL%n=7G{9KmGn->g!1`1wiSmW5^QF z2fn58+K%I14DRGzLhK|ihiIV0@DCKGhK8Ru{mjj&A@L=`#P6ALV>BwzhA%E$ZOzR$ zH*V%lA307}+r05!jl06S`r#}b-Q9ax-(MReBEDM(BkYZu4(z+Fht;+Dyvpn#-O#Vo7suDVT9zTw&LR+v*8N#h}ON zj6)rB-m=j4zdFp$?fXfck{=BTd((M~PJ4=U*0#3Z>a>wCKf9r@m-te6v@H3%xgv{S z6h>|yBj3igp{Kj!`Q5G$gwamsYX*|v{Fw`c5?^VRu=j%t-i*LOlWEb3ObZen{XdA# zlm)+m76$M4T72(u6C~}FP55gxze9DN=d&H{HmaA=1r-vLNvhh2;0gJGJwYwo9~1Ou z2Yk9bqv`Z=9g=XKlR8p27|lF9Zm%b*U~f5q7?Wu{jX>%Llx6q8kQ(; zikP}B1Z=WtTHXy4RbYfvJjsyFj0qLfy7N2-1 zciYinYWLC+zOxGoazmq+k0=On%y(Pswn8u+9Na-jkx2MTKa_*SqQqnIQT8Eq#G(sm zx`|GO^NfNJY35A-ge8%?EyoP8^3mj zGs6E_-3R{ZreJXw65`_G5fW;wX{kA1H+|FL&RmYvp*@+ge-W^$@_ujN2G}*J@q8m; zAD0JXX{+(&Qu1Et^G82$nEaBAdogWw-5%)dfAsS5@@|WcH8AU;w6(Qmr}=XJ$@^?I zuxZvo+1#3r{a6>GkZ$G)LG(HoQ-AMv-mab>hMAkyNBLK3&bfRe;n~QdT^n!{MCIV=G0$i~nsJkW5uV*|^Z$_#b9ZVx`W^sDacTPpztkOGBcoh68y!$9swQ4?U5fbweiXt*vjfb6LK1_}BD@ZRx#V4pkVLOs{qL86%rt06-I-%06y$A zAn6oLqFp4heyW*r(tfgskF@!L(zxdZd$nv`UtSh03SA}WUP*v7WXs%QD`Ee;!&1B~lVc7cf zgJX+7Oi{D82U)9Xb+0mqR4{Np?YB+JlOTxx?ED@_J;2XBa9cg_);s9$_n+UHPz(Nw zzgbefGQF%qJ^zlAd0Sgsqa}sJ1V4O)Zq}lM$wZmWcnomDgx?I3;Djj{i3*k%78b_) zV+nrH#GK~~5Z~-JHqOR-wW->L5f%XdyQ>Lw?_Oudi{0#b>e>DI^JizM{w-bDlRS9q zuD0i^LXIo<^gu+#ksmd3=)QBp2e%X^S<1*XQQewko23JT#{Ig+ie_Ws%&feM&A`{+ ztEHvuE@Bz;cmY8^4>Jd&dW}y@mm?$ftCQM9QDyd?!+2aTHjgd$NSq<>ACbmYyD-IE z@##nOhy33M;J@#5Q~|h+(MyB@G#Y_Q>&8iNvpOs0AWC{O!sN>tve5U z7!Hv3B5lFZ8gRA;ci!7U0A!#BO25{XAg5*t2!Qhq zqbY*U{<^62?i8kyaKwF-!A@0~{*nRxTiUZxiq(Jf+`Y4USiT$F8|?_TqA_1r|@ zi+g@&d_s61rh$>slm1h-Y4=U>vAJQeQy+ZP53Ev_TwEdHU*!7jmI>TKK_SENG$B`4 zSC4PLO)Y+BYts{JKiwZaRS?l$&0vUV|84g9`A^#?)FzDjV($g!=H~NCQ8Ro2K3t1F zQ`69|&Y8IJ(Z$hy+C~bTXj!!vPfH06Gp*W@!O?kDBLo9vYvq;aR?)#)rE|RILOJPjAu|tXtY7 zOROV?OxYXmr>B@^E0xzAM8^z>6!kNhTDl^KLU3wB4SlyX?Qc^;7k(S<~)K3>j zO6cp`fkEGq$?4Unazp@Ez$j#e@leMTlC!NdvZr<#)J_Un3=cAOy4Zj*R|@MW58H|o zmK0C379$%GEAAO83Q(&xmft`V1o!-EFO(m8%Gu|RoxlMp{If5tsZku(dp_>dL8b|j z7VCkX6w4dE8qbKif z_#}F!!H^3$yTGm^9nqJC?bqebdxF<32Cj2kmy>&@u;*8LYJ^3}v~!)4*qwzMC%hGg z=sFBM#^E_?a)FA3vI6}6o}R4_f$NVvDJeKdKRO;pn45?Y*@FKQuAKTydh8}h^hRG? zj5^If^My_4-2_Z9_8MMvEAM}~^UYm*_kBHZj}}sU`aNVmm`b@g$6oC5xZYG=c0;=* z(??JLsrM~M-4=_B5(Kw0NzkzWwk~kCIg$xU_~_adW9>8)oFL&wOfJ$4NYOe@;2@PiawVcB-m;(=z5`}gt1YlfuCTw(U`X!wMHOdchFpnWY7oJH6g!Y3UWO4y z^oNHWPWpq!!8EQ}2_%7vw6QaGP z|LrV;ZDkRUQxuTsR7$8Yzg##++kIXKJlP~B(IJGTxJfpoHWsbrhgAJ8>8qKnruQ^0 z4|N%mYn-(FTAWLyN`BqxOE2~upe0Pp5o#~xPnx7 zq-M%+!?v)9Ibq^`uOOedAJR zz(qfSGGT!X^?lY=KPWJ-p=;fLxaUq8@L)`G=&A3V)QZ`Ce(n<40-im5QE$JQYy2du z667DE9eVQS2QLgb>)l9jF%ab8dqy^CfKqU5VD^|drh9wxbceFpu^AqvBiY}sG#y-Z zjjx^N_diO+R!6=5d&AA^p#=3sb>=vK#u5$1^uy!6z0#uIqWvY!BqR&j6z%u`bMfBi zwg6BshN`m+fmxbf@T5zQVezj}XHE&ynLqqp2Y(p~gQf;`^=^HggfnT~$}(>_8Zuy| zq0NrJK&;=skf%7zTpL}GzP=S)CNd1AOpc>x8hyRx!$^Abe5^VW21=MUbe z+1mD$v+*ClNP~BlSU<>G`ckbAMNV!3C^&P}(fx#V4EC6a`+Fw<(&WEr_b2B4la{|m4mi%Ggnn-Pm~jORoGiHb_`RJbymfaC)~j7i zu5F@1a$Bu8@kvf@=yP2V?2k$LEJE=YPo6wU(>p(meShW>ndec^=L9_rQ`P@FtrhjP zX21mttNtt^4<}EYIPt`#iw}QeV{>Dt)9J{8b@BUW8;k+Izk)yg4DpJ&gq8n4Sl?KG z7GX8IpoQ#JAbFSH8^=TuKH4J=RDnh_=Je*PesgTqaPz<9%8Dcb0;56j+S{VgOOSpVB%?BS9jO`fcgsJP!f@o=6(K=$TO(u&{3(WWB*48G${vZ9&GavrT zc;Am7b0H44Z^Je~0NzI%5osQO^sy(ghxV(>E6X3$*}R4Qc=2AsW(oqjhWxeuEJM#mc2>p^baEsuIhqzJ)X7*4Fig&@Cz$K%wNxb^ zDFX6y)WKCrNf;RynV@KA35$1Dwj>_-# z6pe&*RZD@$3w&8B6|IGZh1W($NB=hV6o2vNt()K9ZnbG#$f8A``-hQUyXt{U5v$6` zXyI^_G9Z(L0+<{wusv=8Jgor`CW5sJa#m{TiA{U^O8@H4usCMjiWj)Js!vyZ#|Mu7 zi9`?uW|=mcO{(sy&#x^7M5xB>_;crNaJc%l*v6J-+?nfO%wT-QmRC@GsOxQAyVH0d z`{LWoI5&v^v(M>1P<#MFO6aD3xA`YOU#gCh1WP9c<~6K1p#T-^RRh8NRL?g`cF~cR zG3p?r)G{XWnC{d>gxgSxSU-RgJv@KtKVKiSmMp^EwS9Qw?k?;$ zeDExqkjW}{!_YshP}%cc=|&{VP*?KUK9my^6Fefgy1ELurlh{!c{s~c?x!JkL@Iw6)jb>vOgDcJT69gYs z=kM8PFbhZ=Mr9#iu<-M|F*!N;(-i0tQv9iEwK|3UYtkPOh9jU_0Q&Pqf!w^P@%2}l z1hg;-{653DrcDeNVc5~r0+37q68(KhA^`HxEPmwrCJq_-rIMMql?=%TM-&W%YanTn z2>#57=Sc=D&5npjb?So?tedeY_>(-dLIa2pM~DEq#j7z!sct$@TH2;qMzaygZy#r0 zGVwDCJYcMB<9{pbS(zZXB?|AzomRxZ>qJ2&cD|X;ur1RH3LuMtKcBOqR3yy+s`~MU zNdU%ut>2(YtQs~qd0hA|k1g!B9kx z2U-}2wHolTwfzoUzq1OrH|x;!@F?3EevAy2ggL&w?vCa&5|PhLN8o#sWi^cplj`Ti zix+un;NHD^4D`VDV{!g!Otbb*A zc=+$Fudjc!)oKO!S!`NFINLW^r)GT&^*Vry``5>_f(Vrvygt|{sP|k=t_gbLgGl&f3S~Yo$$?K#Ps2kGJp{YEJFvgM zr>`Gz$Qt|IN&tF)S5qY!(d~4xBM_W8b?QucdF9?eC$EqJ3NT0jzH2uT#a|&y#nP{= ztgie}tJ4lJW45IkyR!5gG(5-!8drd#&+X9jwA&i>qj^*txMGo~PoE)j-+y^`Y3bjb zJbCsbw{G72k8Ab%Bs~wWV6Ml=93(W0v59CA=x^Nol8d!uKVJd~EL^0D7$hb~$4JEt zEFN!4mhUi=O09j zc%%r8;;=t_a?#d-HsZT$D3um*p1;pzuwu?IX)f#7+$PA_>br-Wv?-WfF$e=j4OpB= zGYTbyQ4iao4^kS%zc7l3yk`{vCMt!TgTdc{ zGWPaql&_G_aV6^5u_gs6$_Xt;3<){il+k{#IbG6EA-R76QbsH2R5 z68`^?>~_TFKcO@YAl)j75CDjH6-hn@rp;KTTN?dP`+~lYXBDA}m%t0x*Wkul1L~p8 z#Mw}LK-+YT!60oh<)amKcRJxKKd9eE}nw*wGC_y)D^0j zG&YbD1bp*z;jtBWe2cjgT679OPpj1w)r0-c{KEXJ+uJ*9Qe}IC?c1~srU1T;n^XxH z&C7n^-txVR#NGu~gpJv_$={C+{zB(+45N^`HKK;IuS?5NZAGn8} z936~*R}0?#nk)U7RrN^pvVr7AT$p~&;RRohWWR-Q5xlw2PE#lA|+2DvHbBK z+;43tz+0O;aCNH*o3vjtf>8o;jC4RHV>~55dKrBE8SaT29Z#jcsnh{Ib_NtI{6vb1 zcbD$KtFONfzyHVn5Vi$6@H?ORG_0;Jn>j_TCK5(uMu60yMDLD1_BuIgrK9TtlN8JM z-JsoRKZ}LL&tUNXhQ0&?7;N8`ZGZrL8#e8*XJdaZIDh{9)3~tzU4+*^pq0A5xrV<; zU!9 z5(}}F>P-VgqW)3~&2VtTsxgy=VGL{|*-%5wQdgY7YIhu7^$a%-GB?$Yd4ikYs*ItWjRHjlOgr;5^CW}y- z5K-zFJ55R{BFzX|LL#YSLYFXU?7AJc;y!)y41Dl|&%*fFC@kH(3%mQfcn&!HJUMDzaV&Yh!v|F3Rt zZa#&*x^F)Cr!L(XDm7|xrUe}@tt#-V1twtO6*Vsp0$ULT8`cpf{M5B;SD##2xffu? zX&Vw+zne^bHNlHbqNC6K&Da}XFR~;U<4Q~b9GD)>DW^KBY623Zk&zT|tkDxjUi^ZS z1=Z)aQVYB|yoLzbKY&Nffp@az$fFXxcYKoc_MQ)M6R7X*Xx;z^ahsL&3S`Dp%;;nw z%R!q+ctsP?^{rB-$8vllvz<~|{Vd|ol70?(@8`+Qk2nc5t&kO*Adm~71xW^Z+Vb|@ z4IO``Db`^{~wI*l4`WXu73#x01|S*N%A0X#OcwZO+?rWoDwt;9J{i# z1+U%Qf!#JH!ghS^7>FOtxvsAXO__{%9NdD^gwv3xMJzpwFEsZcgj)3g5uyMtJ#-N& zh`L?Bab2MRma6^(8BteMaxA}@Vc8=Kp2+^2sQ*;x_`bhTDwUp@oSb@bZ*O-+YXlF* z0|yDf@6AmwmUcd$51)Vj`43|6`wv#D)nC}!+Ij}FU?$hS>qI~CKzC{Xc=BHl5F%_r zwOV^}X=!PGXJ<#U9e`nLCxSXe0D2+?&_O<4ICPIPQEChA>_^{~JoAT&Hq1_x*~->o zmpV*H!XRb2o1C*Z^g3x0ghaX4Yv6O=Kn-ak)gf~Ap}w+6RE9^t?gN?9JYWKl{5={c z3$=hu)bH1m6q+kSk5NTVBX-n(cWA`W(Fg!f8DLP)YkmK$!&M;P^zWoM?=aF}%#=8K zDIp@3?+w%#Tf$G`-AsNSEYW=@4FC8TCaZf>rT5?eF&98a!Cyw&3yQpGjD`e=5PC?0 zpyvX8CiaojqiYvoWv31=-B^aZJ8f_&NLo?aoZP7z1u$&M#9lDONi&)WN^05WYg%bE zkm|FCiNWsnKI;K2-CKgYhyWZM9H;^TO(<@4x^F_?B%04#2l2@Y7;|=e-@AJbCiTMx*gR)a&)9G5AwoS0eOo zzk9R(^5{qpF-DNA)2M&Uy>mN@@LT|{+mwRsZ8L(6Mgl)2dLv{~p-o2PfAN@-dZ(l? zknSwAXi#W5;07-Ct3z0+HsJ1F15Qp1aZqxoQ;L0Kg8XT!AY^M?z4C@4CjFUUXhH03 zuXzc|S0L7I7m6ToXkUcpbLvIVkPOZ55>n!LinPv2ibg)Hv@StEp1^VE#r+k!S@8NYDYBenf+ik5@ z2fp-`uOO0>;pqeI9jl3`^6v;c<;9X0`M)!0qAUZY$rIeu=qHh+<)ihty|CT@9#6O$8j8CBX zHx%NiZmQ5hQV{^DYG>s?OWjm^AQV{y{T(jIeO??)tuLa$uX~mByA|j+i3661{N)q6 z07-(r@pKP7ZbOWeOV|!5kl`&jm>eiyp^yV^C=!A?04b9g(UWK$*7EO3etLz3j^GKT zUn`A$^bgqjSv^w+M;F9NW1*uG06YCj4GO`*HsJoQjFbj#JdU>ZZ_v`rQV0AWjc856ooM0RvRHXp&=NH9?ni5 z2GKiTovg@%AWj&8?E&lcgK&3uZvhLThaY?F@$pNSE{PjAuHS=!S=}H3_>PYJxFOU} zUi)D-lX(jJUVj$@{|E7$53<;_HTwSV=3?2Kxr;tQ2ebnpkns;0)KG;0ic!u907I9) zG6YJDkws2)!qF^(jD9UQP5?9+Q6v%uW#ejC?^2J%hx`+}4u}K@m>em>)bKE5q)Gtz zZ){~L8%72@7Eiwm?GAKU74Wc|pGe6Oi!>)7p*VQlF*xcm0kL=yBs2$(`uE|Ktp8)Z zj&nv)&U_Z3+aD_G#1(!thA5RJtk8*`LhwaAw-%b95vvp?#rEQ0ZzV*GjZcB>+w<>r zT70i_>ew2i_jl;om(cTjIte(e^)FMzK!dzQZ3m5Og*^#@NGK=8uNkMos=-Zv=s{cL zpxTx2>g`Q3E8lA}b0v_B-9JmCj$Km~Q;&}8u7 zl8`8=F!Jev7n)Dg0W#FXKg1!iqV_^U@hP1!r@s9=2>*JDq&GpNF+j)3lIBT>$ml7& z{|B*1x{c`Q7eXEdf)EDVd$tW)0Po={g&D2S`a-r4$=twu3A7E_&Y7>MB!V)Qqg(}>e9JH47D{uTjTH_hzo|TN_VVDYF=KYeRekLIF z#x{PbAUtAv0N{T9O}Yv?CddVc3#f zGD+?;=S#F76B+_$+%mxxk=nH}&=UjHs`5!z0pb6S%);vKKHOg4g@X=O?b$qD2ZY`b zML?gy(?` z9$qKyW*hc*tFVo?m5puK-1DGAz63(G40wc*-j`e|4Jx9Oc5Z#W!#JE=?^I$Hrp{~f z4<;h?ty{M&ESi2epD+B|M#Fm<^r-Y8oD33x@3hTAct1EeIQT%b)%>qX(ic?xva!FF zdg42U|J4QLC^s+NV>9kv0lRZKJWi*2gt~^o3ZFz~$_Tw*TAYE0<|bi$tN^pK<1jW{ zfda|VIx3zY)atOizYnY12XJ>~AMPP^xv{ecJJqJ1Bj^dNO5RT`qJs5*;zcwXU(yQ< z-s)Hl-CnQ4;?OQkRTiL(2|yS&ndBDg9wk@9LW!+VUckgRCJ5RIXkWR>8MiZ)SP7kE zsYS@rCaY+>sL&aLC`GUw}Vqza`oJ z$^D$1UQmA<#>o>WG$NM$g#;nc5;mw;HaO2)CEUj(9ZoLiNFkx9mNr6tFrO+}A zp`R9S_$Cs7{>hr)V#Fi?cz=kW^&^v$lYe`5cIKy-mX=<1-L7(q8f=3E;5%evLG zVn`%eGFi1JAJc(1IpzgD3EYtr*@>JWypQmUJoZ!-ef{}kkmfjTe~8*l$5sEyq`H^r zc(}J8j|Cd#x|CKx*sBj#J3E`=j>0 z?|O24a#{p_7Y?dzY2|W4>W&S8{0^xC()Ekiu9G2~Xi0y=sqgG)4nFee8F>CfPs2x^ zx&TAv0u(a=`v(MmGu~f0LoeM#*J0Des>er_d84+ zq-)vdz;E%ijeL)(c*$f}CjmjVTK(YE)by`D_0&`U*;l{%m9IhH8Q;P7PPYLE;62)} zG|yTtmw$Y3Z}(?5x3;3-|DK(}QgEeD&>>X^OcbI%u+1eglaI zc{F`XFKt_@4bCk!C!^Xnp3CR|sqr#=bA3VWJQ~39r?>Y=Us>Uo;yJ z3Kjf>1o__4T7@S2Q0T{sJL}*LFJK!Rk0s&5;;;ixUz~y8_xxq}q3?MDKJ@5WI5Rg2 z6D13u*Tui-s;)jYltUe`F`=N*K<*C)%JnXr%dwEi|1Wc(Zh@!#zd?-z&*^+sX>kx9=j#;CpRsOXP8ZDl@!kg%Z?Yut?eeaRNXK zut@9u$4Y#rs+Wnrxl9LdeLRlq9VbzQ-rr?Hn?Uxm>=Ox#JT8v)xyi)O<8Sil1VTIb zK~k7Uq!ks8mUc1|Y%)b+OQZnrIKcP+{KtQ%-pbtUcVmqk_2olI{aeU>+WtK={ymcg zy>`E`7DL>oV5&2$`arMO|(F9?a1e;(iX^kf-+_(KoDkADA0 z;e&_(j8(GWcMte^j2>X(ATxOo*&>8?o|6p=+j<^;PS;o5gbcoZrBuX(djw9On8)jR z6dYVDf=&avZ5N9MweM_@eH0$wy#&BG67uR5nk2vy?RHxX4-bz_OiaA7ySuxh*VaK2 zFh~I2_X&W+6Zc2lZujSQ_x2yb^Oev>mDetIG&*w%AOV%4Zh{FT+Ii*3xV6kZ|7ms z5JEX`!^FrijE|py2KEN5RHS~@lnl!Q38 zm_D}ne#a+8@8?dE`P3dv+5Yz4lD+Oe3BZE{>Z1d=JSHQ05cCB4RPvD0EJ)4uNB>S} z-6t%1)Bo1r(Af4Gi``U`0x=>W<55Z?=h6HAX? zmi->J*X@iL8Xo=!t!Difwl-FG$H&L_8jbpst+qRZ4~F;}q?(6F820*wRD@If_u^;) zujQxU5C72f@IgcX2)S$5ck!AHh<~eyeH279Ilx4Mc?X2D;W9+p9^^jCW>d_bLC9Z( zE{qJ7VG)tNnVA_F8yR8_NTbn2WY1GXNOOq33@WBi!3q8BeO9_6^6DJp}$DX+S>A(}8 z@x9;!?QRQ5W0uy^E+!enSs&)dMj%hhfnHZx)mkDV@Hv{$NcW|+^ZO?QN6n^NM`-tp ze&n~rYxV}Rq;^1xsV|aV{omxe*>}lHa6Nj*2(<*X(I$}nS{spbVgE2JW&e+msU?5ZBp<)LIv2t6foyei;fML>wzIDh`!fA_}guY4V=U1xcD<<`j)3qR0mcQ3W6 zOeel82K)?Nd6bxAMLtos;QO9D2Y=v`-v`e;at11x$onl!yz%<6@_7iH9CV!$g!y4y z1g62ROoJ>=LXatei)fzAl=1q;Yuw62Qy@aph@guJ1iw3ByGTo_%B%e&UnQ!T;&|KMaqaUx1N}3web1GO~jizsG@3 z$-`zj0l-opE0rQv3|MvND!77N{ob5#t;$U*<#;@5?1Sb z%`V)&vkX=2&dq&!WMt^)>ec4I@Z4b5^S#IM@(w9k>UMm{ zWB-4$m|@;RmPBt%@K@vRm~bdL6e-dcypaoV!mOuPPhTX)*ZN71-_Ho>aJW1!Ry{bh zeVqP({{{7M0uc7t5vQDhA<_8g6|0GEA~79soQA>uo^$-)CpmygwY{X=)6uu1{rh|O zeZR-z;4fp%eu$MLk33$`8~h<*v1|^BQd}e+fJ;+2`0rYy4zFI_g4dUQXky?cNA0nR zX>t1W>A#=LI={Yj_imjOK}*G=_0$uO{s&vt`o%`8C8f^+k9jc}vS7v+e(2;B{Qgfo z2jBal55RCHfcE|t2JkjyN(D^VGk8(s&(a9wh9)38wgC3XG+3ocg#Yu53Q+Q4XgPFA zk`w@G2JqA^E5tG!uJ?LSpKmSMfmZLUxq*O!ykZ;K5+p~j1@5OV-GP#u20w!pLUsWwhB>fC7Qh-^z#hgl1Xx9Q*%J0KC07hts{E2wRCQP|jFm{Kf{~N z4pZVWruQB&D64FmRDcN+iHgPSY#t{I^caG$52Yd`@fzsq4MRJX`ou9RjAm4lN8Lc( zSWG~wpWH$s7+V;Uq#|6}3^b|l68b{#H=Av0fna6|E+ic#EheE#EiA-o3F%NoL!0`% zFt@~1f&iJ?S8#}vDAja|#@|!&yCxWiGW~esc``B1DHFmyk;|`c2?UYZj-~aJEPl+= zNS?1ms}ah#c`8K>`T2nLH;ZU_cz%YMNLOVUUcR#nU%6F>s_#&S8y1QMYhq&jAFQpd z{`|`?y|5iuwo(@Ig*$kmeyCZi&xkMx@i++56Oec67qX^_pU}8Uli9!hzlRT?`1X7)I z7PSN%#o)={I#S9B7%SN@KT(25PEA0Wl>D&GNB$km4YaW}NNW;n6WCG0YU??qXnl*7 zwv7445&1!{`k-R{5EU|G+p~y}e7SmX@bVx5cz3tK7~p%b?e6b;%|=5J;==F{eA+iV z?zuRGjQQ^LJHq6=SY_=TkI%WjucTLT^(tfpJUlxJ7f#Q>b00VbPd|1ZPEHmWI<(w| zk_5#gP1mU;hcK#Au=2Ms0kAV8_;Uh-=>$Ll?<*ESVAjtSHwIkk5^EU$7$HW{+{KvR z#snbXS!CiH01=e@1IXcJIWsW~^HXC`xOD)YtAm%V6#W7(4D*GeHGg99tC>vhPi=2) zzsdEIW!dd+bMKKSKlqhKv-8K7ZoY-FPC_%Z;pSEiW=3-`Qd)pfLMZUPLtI$Ny^sh} zz7Fb&tZWQjLOl){n*;HFCoux;Rj-1yCLKkKjZiuXq<&|qU=jJ{LsADWK8Q*&Pechp z7!mE_fUlI=pyyS3DpEtVGoL%5`p1GYYWOi0@6o|7>?0Ip6cUvS9K_bg!XyK#>b0$O z@?god$&T;4@n_J%Q_C{pcg|wvm}6+0ZDa$jDlHV}Lw%%BwHcx+Jmk--f`YC0p4nFk z-eh7wnXT7RLP+_*m1L@#)LsrUF~AY&4u~`=5hfk|67330YEfTdaq8sr^%-!2L*uR% zCdBkBkzHL(h}N(rb_ElF^`=q26ynm^v#_|h@b!QFul{9KufaZ%ggnoex0jZ``tgr{ z;%>cKy}Z4>jYyZp2^MJr&^0_dRD|)N0_144)@yTHAn>z7L&=C>DZ%Z=4STG37hsE&%%wi%joSTHR zlQZy{*Kfd;yUVcL3fVUVXl=-00_e8+`my3FMSb5xhe{q^2z!t&nZOU}*Zt}~O&58C zs6R*mz9Tl8;xU2W5V0j3Kgb%h$MtI%0~bB;M)YDDhs)YZ#D`t;FtQ9+95{Dk0)Fh- zi}2)Q*ylep$=9QF57b;f!g&EMAU>J!U=J|J^ps>Dh;&<2Y8S zQhCAcwm-Fe_x2V1dv2F#8&GgN&3`#LKK{(X&hV$Idpn`X2&;jugzL-OFjgtS!;52( z&r9gE51@eigdFWWw}am+tHvKS_#N_u0RAWG^IQB`BBeU6Gy^Sv>nl{k5)rH4j3TMz z%YvRs`p8HpUbBdCMU{D=1EX2sd|d$riF(GwI>{m{%&wODajL?E5iQbY&HP+jX(;G1 zG_FHQQWcY*41RthM^bgjLubNP0xo(iGStWdB}$;lh=Eq8BZ5~5fgTKq7h54?{|0sf zagMZN`G=^;IREAiE01Mez0c9O{7T$c)Ce%=1jp&`F~-X_=)1 zcu%WC-XDmTDNO`%I3b8s6B7wYLLUJ7=>MxE$kGWxppIdvT^LzO&xV$CphL$kQ-M8f zoL|4Y1#4R^PI^Mb*QciDtl{C|{|STp|4wZ8fJj1#tOw6O3yX(eUYK8)B@wYsrxTWP zC98{1>*BSxwtfIx`whTr1%z9L=3W(?LJ9K2leoL_XK@^07;jje`?mUSS#A8|6S)qN zKZi02O!A##8N&7m$Zj3H=03R11H2INvxXgTgo~HCg~!bJ=g{< zfOmIO697X)kGrn>6U|nWY&mJ7Alh6B;Xw?fLo<*aUIcq|9>fsd z3X}j~5JGeTBQIWf1dnG`AY~98FYYc@-)@~J004WA0e+4^`vqW@0o!{Gc=`G!yzuH( zxVzKhF{4lg21$WqYGztI_Sh3&y7KC4|C8%>MUN1U*xT7^xZTe0W(&o6&-b73-7c*s zme)~L#rRML%9yCIHUOdyw6@Vy0?DHaE9oGrf{vvf(_-bg9^o0O0=y7OXSuX)zbNjK=YCx^oRpmR>k|73-n%=f8--;g^M`#iti(#_yej>i)rx{Mg4|ee=qd z|LFQ#Z`in6Vk;nk8#@gc!^$UH8G-S_Fm@yML3FV-;Rx1H548L(C0dqdPWTMHYjdCw zqVYx!(#*;5R6LZitgnc?1B}$LNXQH;N!OIhpqcd-VIufzq`(jsO=}>ovm?$y7qqRb zv=V`eo~=ll{Ai#m^FX&Zq)t5AWaLC7P1b*K7$&AFn;_{RR4oplXTFI^9q>=`p%3(H zb$pdbM6^Nk+3`4&6m1EsL;AOkJCBg33}#$ZIXXE+AMitEWLJ%cVW8kSb^1Gu6gfw! zwo+jmYM}=yq>;7bAfws=GE%A(q3q+zC?F0eA*2X^$Bfg;-v5{B-($jIqPho2cqV90 zKyuVEOjsjFM0C{#v$V($jo!JqzkQy$AA;L!Re1Tv7Od>H`FbGB?Gq6w%_Jko47g@gO8gU9{aN)>+l>uZ&yi;vKBuF)^dWkXjJbr^kJk1v}z61k#+-8EpoHg#jiGR&EsR!W4wL zEkp@-K{mHB>90ZH);JjmyehZeriVwM^6&yol!|Z?6Oqq+{VH5t+J{|Ce7ba1Y4 zUW7$V+Al4R!!ro=fA0s*!NccI!*~gUEwO;{MnRg0Ji;O14i_Y{AHbepsXU6;_$*|w z`WHi!e6fRF!9YP=0wMs}s*0v+S~$!ORwO!YNP-J|;B~p`^Z94M#zOSmR=WvTZry_~ zzxXD+^5$Krwu$*{)56F>zE~=XbLY-|vDs*T>gAVSd5h+x56j^4@7xEyclXvm%w=SI920CV`(HKx z`FUn-3FC1&CU{x>7n@kuzqfZU8Sdus%czYIFK8S@gh*9I(Q)SFskhWIHE$3lheY_} zii}8~j>FX(RbQS%J!ZjuSgJZZZkH9@TG%$};J>%`YEY}Upw;oAf&J$OwrD$D$%Zu4 z3TXK=38(!X0$B}!x(g{K7+auOMk&V1bNprot_2Q3e--`j&bYi(!{{N~s}F<-F}HTdUf=|D44G_cQGdGA#r$oe~c+l0a-!pMNrIBM< zLqv734HAI&^Ty}z)YMc5`+Kgvy6WH}BBV@M#2z8iN|v8mbBq5?6gQsf2Q~A)fZ6sV z=NI7nK5!nMdh8)MH&?+6k;=$D3<3y?7cva{h1~DYVYN_3$R8oW@sm&*odzf&G?*)5 zhF|0WO%<|Fn&OTRIU*MZd9Gp%Q=EgIhme2RK*WCyD}q%J9jpSpHuD2A_#Sm!9IoHk zg@69(SKzC!+=kVIE>-}7763^s=zO6dPM$pZCG2zli8tPO<0b}w)A#SY^RP7lFTM2j zo!QwFzc4W|J&eKoKWH@e0<3=QdwZDD+}gs{#}u5L7-DbpE|Hb2cz8Q9n2|!m%7QB% z5%bGcG9{HzlIjAODxMXSnJ}3=UM2yPNg{{7Kd`AE?jw{R&)=&Mt}A*WBDh$!4763R zZa)MfNa^p{8afwj*{VlNJ8AlOcX%UD-Fr9D$xiP=p6}E_i>`6d;h$132`E>1GdnrZU)|5 zT7x$*0oeBl zSbhY~E{s8`lEK8}CcLp)gE}TXt~UP;qL~0IIu0_mT*^KI+Xfx7ICC5y8@DUvl702Y z^#@KS2HPM3_;zf(uCA`F{U%mBf2CY5|Am8kJ>a^OuXuojA#2a2pe_3D zdi^7%Jbdg!kHB+JKMGG>oQDZqcx`tN+O;l}G9eU;IaLW0(GM?nCpQG;@*HG_ra)9? z!72{pDm2PHKq4wp1?X#ierD7wPND8P7$r1Zti1*<0{h@MG0A8jfYog)hOjT7+GxSG z8>{e{&wm4c_iMLd3qOm;3TPHjQ5(y9ZFjWMDXN!}N#+6GK@zvoHm7lL!^#lZG%cC1*+E z7+B0M#~Xvip_#pazU00nYc`TF4i!>!O!}P^_embR-eW1HI3z6`9aFt0B1gca=0E7R zMi?gA3(8j4!`IwEmtB@fV|Hn1FaWb zw<~?mee3L*Gk31Nb^ZK72UG7{Ui#g(SjD#37hk*ub5k=g^~6P}lnR)jHz7R0zb_OZ zi&eA8k17%|CXZwwWLqL~i&RN+oVXIwM2V_nXStOF1PovskK73DEG7{(Pm%heIk(gghEC!c{Ief}~$v^WA|d7q6v=s6U;$sW|l z3vo}B!N+RA9$JL#*eP(v&S1ZPR*eH?%iNn(!CzIM%+b>e_W(@q`bUy;Bl^vCn#aa$>U5Xf{63#(qC_97vF;fhYq>6OWBi8zaZs<=Cj? z&rX$d;B{D`Fh>%oL{QUFBup{-MO+2<>f9#$b7ev-2LKYXv8IpgbLFLEW0e!3nSrOu zoklfjWRrXj1p6B3S$HCT`?xR3oJD$3Knn!5ZnDr8MQB11w*4I3-t*z*r5b$k+6H{? z$~t`c`WC#nREJyJUD&Mou#ad!1Iv5tynrih#R1?RteVMZSekDco$o88DZ;u_-(OeZ zMvFj?yFv2C*%qNpd44|xfuQDjxZrnTz1oF4+by`dypMh1ZCKi_!gf0aLXRxWBH7KQ(!v6P7?5^9Vh6ZfuLA34}1|>X%LgdMkcDClb$3 zaQSq87U~v&NF)}5`4AYuv8V5;$p*{eS(%Pigq>CZU%}&aYLudiLbQpeWd+hMZ{vI)*+voFuj&po+Y+d1L+Ej9?k^GobwUuR{jiq*OUV{>yr z!#o1flCZXmFi{hceGL3Lg7$NKG^s!kJv)PE_nBy_C72j_(#IOFFM-F)DdW15EkS6P z!Ns;xW}`FpB8U;`A6MfA~3U5B3q2aF=0*!x z^(s{`%I3MZM;8(H<_I44OOverl^-F7{}fmV`4j73;G#=JIbSjZi!X4x#%!IO+e~0{ zNalkV4+?6+uYreEzrVKv-GeP~_qH(lVqnE2qJfLfOBnn=^M!A~7hky!Yx`Ic&;mju zO_CCJM+}XRe+j?epRDcg-Owzc@IgIAH9tV??d^21_xC$)5M1;;?{eU}0h9ZQ$cDkQ zf{PyRV{n2tCjeZj*p`-n4HerxqPT%#0`~eb>p6de0K^J{;?U?=x@s|7z(bnMYUfv0 zKTWX6VxmG3B_PryjWUI*F3;d<%gBp#Rj{#1lc9hCvIO;Rh=H^XZ{6E~Z(O+rZ`@wv zfO2cK4$HW&X|$|C`Gd5zmVv3_tV9b!B(w#3C8*Tz@iWu9ds0|O71xmL)N{fEaYtS& z74XDK8xxX)rUzSl9a!Bsfc5n)*xBDlq@sh51x((gsTPY=@o;BR|C;9933+kY)52qJ zg_(rVk}%4ginuCa|NegeY%>1*(8qYlhyt0mK=c#RLP19VpV}DOu})XG8FJ-^ou&(K z;<0-9`Zl*|+F=-Eas|6GGWJj0Zs*TzZLD_Qu9*$Jhl_A~yVcq%kB@yhC}cnAbz1XY zM-8`P0wZemCe*7t98*usi~t5rnyJMKy@Lr8ruB%tgt>y6>>&2P)~=v&Qej3$bs}UL zwasXcS$dJk@bhh3Ap(T3IhJbAI5dvRi2(6MvM@R}3FBiUh(MGu8E?Tsy#XCWjws+0 zFM&r@6B!p9gzcaukL^8?$X_^I9?iauniJ`_fHZ@m?;Me;&{8ECw^o>U|~#WE_jDRk|SZln{s5Tf?R2mCVaSXw;%x!!$|S;n!%XZ6 zY&C~XDs_}>WGDe37!?Z<3xlZ@sDKbM!@Yx-dI(czhPdOt@I0MI}$zb1vzLDR~4)M)X#jI!h$#i;i&d0`KR zj18V$#LBpUcuNU(x*52>C*g%V`|!Khw&BZfZNQ87T8sdYh)gZ8pi4ntsHD%BEF}y0 z_=Br(9C!UgHBJEWEvwUqM6Dm)MB-=v?@zDkCf-Bs)6le`@ErB(5;Qm-XpyaTI$f6CoVj0HBN*iOT+o)r|zKw_(o{RY+me<4j`)a`^yM!LL1LR$~%IHUt?=^OP@W|OT~hj z00s%bcT5I=+y4H(TdN&3Fth#YxpNo7T)uGLbGvlrBf?L%I#L*>F*R>V-Rq&nA^6yb zpM+0-g}(Up`eqYca~!+SlYQ@bh>O@C#I8Tp5Z3V6=qk21{_w%h<~6Bi+un(P2!~*-xL!PY z@^rb`XnYXc0U~25QhXCDE*~q!nPCU}kOi(9yIq$P0CGB08apDYXcPJ(=~?6i#4kiT z&?V;q(!F90W=b`AAhiH$ti!JeVu9P?d$Spp=#f4=jpFeNNaQSpRI6Cg-`=dkt2dV5 zt5@#9%WrMM_4Ov~VbE;R7++{bvb0iI+WuIiKX|Hlam2`!NdIa>KUwNSXE7X>Zh=E7 zM?z{)p%7Au6Dep*5zV?7HyhZe*u(Rtim1T$<`$k)4LtWUm^5ZFSH%_qCcrMX6R17L zL5cVnRP}?>ulId55n+j5W`F;<(Ce+h_w~;8hdrZ!`mrzp`zJX7^h_4N3N6;nX!thV zS=)k_ZfqiQ6JSzq%eF7A(TOQJH#h&+uU~ufuVDc5gCGds!CFER+@g8V*m3OKmvh^ z^M((<5|Xln!-x$jKk+!IsvNML)#caBFp|?{q>CmV@E;@q-+4&@oxlkH zOT1`aYPA~w;IT&^YZMBF57w&HJRt$IC(VWDc{ZPBz|}Gw@WrjnK5%&s6y06< zmPlpNW8sC{-G#8af|dU=bT*g3-`~O_kAj$howfsC!^;1E{p`!|J1^gcl{&)y7CZOg z1@B2(oaSfe#7Cb0p070<2Y+vOXWM0X@tt3@;-Fe}3;Dw5hD+t4R;%?y8!IXNYJz%- z^^OY_>@QY^hOv^&@|Y7>v9wT8)kcduAuJI4_?xDHC3^!$QiMdLtbQZXU@GWnodJg8 z4g9W{>J}wawCG}Xkfrz6^Y|WC`=U@`X7#R@g*WyPQCY6Tm#%HW*KTaV)vYedIT_n2f1#4AoYvB3R!E-i?)n%SWRV}4q5crCi#;vQU zPb{_aUVlTNex^#P`$7`{)5$<+o~z0I5o(aQUuiB77ZQV=Q^w_GMo}0W1mFFu?^QHUIZgt*v<*NP$}5lmYACw<`HGTUB?!p&*&VZ2DakL z$j}c*N5;hX#N^+vH)?;h(QJNcX?fX$j@Y<7LnOd&H5;w5v9X)ATKzIs zv=0#@kjO4sgzi52&;$=qv^mtoreyB!U-q(DZbYAyz3UJaRkhtP zz#&C9JUwWZ{C8h`6aL-jzY1S^;|^@otS_m@WwQjkORC1k$Hv7+Kl=Pnae^_?twS~-4aXUhwN;PX=xQ_o-v=|J$REjYth~ z88u6Ge-ufNMwx(H*fEQfCK4mstF;jgsKUX)J}0_aY+KRwz>0(b?5`iNriM-~WO&Fz zIDNdJ54%5c+`=@gUnYJ1qx;~H^PhPxCDp{K>0n!8bH5I+VC8@PUKQINM1mz&ZN?rR z8T&V_X8mV&wl_@Q`dtZP3I-45W0x<>r=EKHnOjTupxbVi@f;yq5qIyam{jd-?c(*{ zf#G5n%EcmNF(7yRfD`sC@htEs{{LUU z@z%fF+TIC7KjDqRHb?-zLpPrLb+W}Ftor|Q?cm@)Y`0sHeEfwA7vVqom7^)1hZn+F&dYtL^v;MwF(BvZB`+kUNQ2Weg$!Mj(%Mu7lnrAU<9x=0C)NK02JKBtb+dPwH_4{fBY#7qUrGmy@}*0}o!iu?nxP9zfMa zL?Dw7ec{-X({u8qZS z72@pt82q6h`2_sn2Ts9wJ|IXPZ(YdY1zN<521{+|k{TTL`!nScu*YU0KQ;}{@EntI zBwmE<{>l}injPmUo(Q=WQSXvNA;YQo2Yws8<}S1kHo)6kg#dpdM8P`mq#(GywGW?r z;SKoLzw;uzbY}|=JnUbSUO2*t2qy-#P%O^PSm)0yer{{8`X^t#^5$)X=*ivhy=m8} z(daLajgJ?bE#d>z>5W1MvjCcf2VB^S&hwGKEi6)<=?xxAWGVXIl~#0OTw-7wz!fo}TCa~W>iq|0q7}w&pJh0i{4Ln?230-3jK&TePFreSn7!}Qk zhaH6L8XF+1OOV;S1=-pf6k1z|ru)#qHEXqL!M}U)2K+Cdc>!KosX~KfL^+m{I8Zmt zWODZO+`M@D!{7T^ypVtT3t#!_Ee!s|){)_R!qrj4veorfAJ>Y{&d<*jJMGQ~yX}sR zOPOp*TU0T4wD3C)BixuTRxkl@)yTT1#EaO_gh`P!dSjEnw-ysE>>6`w;?F_xON#@SovSAO8DHHtMKV-+i<<=!7lkH z@Mj4VBUgsKZ(QnnWpHKW6%aq~0U|ae|He!K=)afW?D8t%FmvGWyY=!4(l0@VMGD$i z!>6p82Mzp#Rjdy0RU3RRIyC8#FEFx|^_11FOG4KU1uCD(t7^W}0XNLBR=(y&5!Iwb^PlmzLN5X{+1)jFWLLW8u62jJhbY z!d};d8`}+d3z4VN&?ubF<66>fAri2KAH0rhN1gLvJ4a?!uo=+X2=39=lyCaVF(GK}wb22!5`U)00rd_uby! zgguv=D&Xg+Ea9}_naRnyv9a>V7pe!l9k@?}Yp@LxfcNXhmH*_4)7S#5{MBx^^Ru0< zi%4b{1B5G1jau;WXD`7go_z#nhqK%_W>0pWDR&gCPc!_5ArMskkCT@F2uRKH7x*~M zL|g2JM{MyfGp9-DhezNf8T^IJz_o44)M??v{(ZLrVPhM-+9vq*E%5R8R;>ylmi=v+ zgWIcH@aZqV1i$^e-+=3@`v}nzc}r-wF9eb^8Eb4}@{RBP*vG%xY}Ws?&wTo~Zh-Rj ze~*HHdePh4-wPUz=4WSTrz-V&{c+Ftvj~kd5wU}<3kt&IR#qnQ5o}{*S#Lx{Gw)`= zjb|{lA&t;@V-o$3dfU3nHx*;lf2ZdKTCQ1-auUUv9o0yLh-6_s8?G;{!xyhC!?mS- z*lZxWB1I&*{M}1z)?zS;F~bO1&_}9E$!M*Hm24ey80g8Is7SgBtY#Uq6}8ZkwltgX z`I2p{sTIy7GXkVJnNu=QG`2@c8~=@Nmqnw4G7_Lw6ATnY9c8;rBkV*q5q6eG?p|El zgIBKJfxU*ys+TS{)-$7Vfa$(XE~FN=_*~e*zB{P|lCT)D`13`Z&wn5L^gPvw`^^!macG-iP@l73 z9v`(VsV81SPLvfw6|$fcwX0a;!jf7a0N8-YChi8JhC$mUiUR8gba9QLgezYtB3d_u ztpXR;b`PM@^jL2i+mq63c4+AE=@W~mho+{dzrL}t+8QJQg9P9^ZQ~W?%*BU>OG6`n zZFOb+=Nbq5l7wG!fiLEUvhcAd=9%>O$l@s2tzEFN#LiQnUlcJ3C#LuW-bSIFAA@#g z2o5kfSGytXw_NO(wxHH%L8sHki>ix|eFr;o0MI~?D-bp}5jEcj&#MDoqp**q*R|yx`0Q6+hkyTtSK!8K4J$2+=hdm#OJhvg zY}Oi|njnS0|9JJ@y}z}*bhp}SHsx`;=I=ogV094lM|kmzvoq5_(rPs3eXkp25Ywa} z&}zCIT!za9>^J6dKLpC3-gmj5%xQoYap9`k(zd~%L~v9nNV+lV;4fnmA$IdJi^2PuidM`*RO8C%l8`0?q{_`WB4oOee8yRFK-TjhL{!D947XA zET!DW^L?+{f_9_JDw#P%cCrQHd0>^^A&rHALlzj*B<=DPNF`ZJm8Ft2mTHue61~uj z^VwRl(b6P1?Y1aAR>{Q963yQ;ssNb+kNe$N+h?V}or4Y`Ly~e1FBFYjKL7u8TlHUb z+x0*)?Dnn6?6@srQ}!$6<%b_GTsVJjc4v3D>$>io?+22s$Vs$_65*Zw16aY&?c#T< z4CSGKt*LysgFSjI5D=nA{2dDusic7M`!c7HxhJ@OK!@lTh#UyjO5>xaEQ13Vd;IwN z%8oi@P=^qhY*>VxH3UTm+m+cebmbnuURF?HLekNBe9VFRULAIK>-ahWX_1N$p`Avv zL9D4~M@B|(U;^+GqA(7;vytM#cFdJH*xucXlB3~6Pdqa-HZk=VZd`f&XIcjb(qRL8 z4DYyJT|6-f*t>(7sYx~FM37l_7<^0sYPhh~_FAynJb+yc^1EHEgb>QxYBbs9&DSIx z8`}b9To6l$3XBX5!`a1I7@wSk$=P`r$JZ?lQN@G^K^_+{OcL-)!xgm#{=pWafBQU= z<02gBw%br^3#?SP;CH_Gb@=Lww_%AaOsS8K{eB|qxNbMh74j7PzkrM6r?xjXu50K# zJnZcE-fi52B%}csn?j+`{r>O&#AiP9??3(2?K`)fFz`c!_^thR0I%O%fs*CIrL!m4 zInd^?@6jwZGm*(!m7VJ(8y5kXu{P5(*8DjoNS+vkV@yZO3R_ZFJHQNUcJ|8_NuU`v zs$ICdx`{CHHmqz1(4etQTaU&C8kYX9Z*3;I12GFxS=K7sV2U&?3@UG})v=F!ohn{< z7?0`v5FsqSM!X~|V_NKt=z_29XqDTAf~Q3^{wEmH7t%QWK|<=+BxP#zFd!25#?O#N zb_VWj?!pV$#@XB>qCbW|kAyrj&fMbSwd&sXFSQyq7rw<~Yn<2wJQE6UT)lep&9~nA zLpjHOWPEJwSE~oL=jgi4=W-Sy0SC=4ym);Hy6s&&*BjtHbOFwfk0KP0*ZS5v6fp2- zurdeY6(M@X2mwu)+T^;4`wP*703rQOtBK1<4QfQ>+ugy$Vh0+H2D^nSJ%E74#>)7f zMdC3bN?FKa%dkr3I5lc(YPo*`|BCVcVM7Ps5-S!yH(;l}!kXtiq3 zjf{`}vz^VYeUez`-sxZ)BmnR0Wlb`M@4JEg#PZ7e&up)6koGH)(nJ;)pOZ6Lc>c+= z@XVu^V5A`M!mP3y-<{nCtnBT<#(o3tt!=~2EoJ($*Jv?`h8919Izw$jLePIUn}ci) z;k0}XCP#`eIyM5c3v+Ph>=`(R7x*I=&%uesNhmu36x-V@^po%ILDp?Tw^f7IK@$!R z8t}^M0sQ+H--55da0k|R+7ObgE-ABNG1GPZuuv>pv-5Lb!p7#O)>rOP@Hb??Z@E5) zenYXfwHy%)(?!qfeRe0^@ z9$eoEpiSTdO-@iiBL=%rvO#L3?7K8cj#S~pv=xSjOme;EA(yc1o*b7bN3pot}Vm*+AiF^y9~?swgBTYt{+6&L?jZ|DB9;V z7DzJB`FxhAIH+wiHdKN$vm-DwT7)xLq>Ph|Fpuu$;6o2R%m`1b^L2Q0b01Mom-~rs z;D#O7`V*D>aF8z+f1%TARlyLd2iqV4c%N=G_T$elo*LcX-umACy?rLnU`8vb`mB_5 zaQX5>@c7dog3{zHEZw^aZ@zgQHrLnT%1Rqn_c~B-cVWNY1gd07SDglFE!NH?yIA1t zT57vnA0a$~_Zl?`yPL`~HG@_A(8v%>&(6U4b0^@;=|y_}puE*h)5_Mc2td7t?MdJwl}NI%WOM5~WX_U-Ei3}B-`jxKZmhuF-GF<> z1SL!D`@qCG?WYq4@Ldc7$RnD%s!AtL3!PscSCbZN$agWY-ot*eOAe5&33&MY2{=7H zgu4@yD^D`q?_ib6KwA*R97m~jlBmL0nSmYw)Fj4GJL5@}(qUDPu)hZ`CT&9GU}dKc zuUuQggq+}WI-XYO`JpvEH|L!>efqC{?TerLi(6Y8{K2JRlzzJsD`M*hfwjE0er0ZY z>Q7EhP5!-VwfbDM*~01r_as8^tqvk8OFQ6J_n}iifbDu0&d*IlZp4ET-1ifsb9k*_ zP_NhF*4-tza^*$1bLSSkdGiWvY;C~7KCVr>RjA{+?s-y=91G<%$cI+TkLigK+ZN0T z$l+(38qL7jg;_YixB#ao$6#h05zC=bIQ!UB@G(R`tDpTm?5*x_L&(NVtlem0zAitt zu&^Kz$@q&`uDr1(4Pj%j4HAI&)25;S@R<*OWEOF=zjXD=8=t}mjnF@ll|6=+#}JmE zL5Q9#Ltl9P7F>DjCM>P2;f1vin;opSfrL4<0G3e6uJW!AxVI+s0W)^3Mjizq7K630 zZ@IU#2V2{_aQ&@okS~>CacTlCpTdi7q6jp3Fj5(Vb`>lCH}Ak3*H_?$wM|&7yLxoZ z;zbcJys$VlWSzZm@ptj!{!_1fK;reg<{MODM z);kUs+@ZBr58%Z+`|O)gDU3sj#7}Vl(*C58sE}=!g$@wf7Ds9yf87J%wgdN-CASS! zHL1yKQq4_!ki*suz?;}3ei1AG8yNhlQuIl-+3*RZ32>63)$isNOhiiX{U4QVbfq#d zPb%RZWy2i8S}TN??(Ty}kToWBGouCWS%)<35d?Z{&sXXLMy-(o3aem-DzRhYXOI}Y zFq0R8C5uC=fL-qb>|iVG^*g(8W6Omdy4Y+24=ihVY%G{Nar&>l{>GKRWP<ESC0zv>sU)9OUQ2uzGeWC% z17seyaVK8cUWK8nTQF71V(=e=vzQ26c<4N2%OylFXW>p2+Y2o(GUoEy9ocF${}jID zXYlL&Q*|-HpcU}0U5kV5-AVv>F8!fPm;YF|+x!hp$9Cq>_*c7;?6Nw0|Z_63$Fh0x*KlbFtNcEr){+)M%k~9PYb% z9y58u;n7Lw#HrI?aNW*N-MR7BHS8z8FM@y1K4<4ZY=y|N(J{MH8Tr50YW1Jr+TOBr z*mH3ZI>})2wJ?^2r_M~mnT2T>&-xH_notm3Y@g%^O-ksM7P(UPsO3^%ZH`O=LYxVGMgnveS&VbHGj=8qWfQqNAy@VhzzILgmI!jxDP zNn8GMHLvBH@mwYXAac0GzPJh#6_)n`sY1c<9Cue@Kr7 zYHBdyH^9^k8e^kD4yV98j+L4Zuiv-_uVQ=bz_p+$ZF;&@ELXhw`MLkD*=+oU)s-cm zEwIG<%cn+P7gnK=59g<+FXJBg)vcY~4<9s|VYX1T=sFKO9Y(K8xYx(>AuP;~V6Q$8 z>$o25A_95Pp)o#)lp9qJtAvs0_+dv4+a-AZ<1eIDma~-SzlVS0`M`hc=}1k&NdosP zp)79D)#7AiMixLBkLk?R7>rGfVSA?ycQ>~YiR>^i!=h!<#;Ya}<#OfMa=GkZ+}+(- zdA}rFg9Ko(B{v$p3GnLr@lb}p={Od~bs@a2nn5=U4hd@T?-mizLM=*TL55lc7?38% zM__7f7-lC5usA;or%%np-0Un&&n-fEWCXIM5%$9magpn^8qln7!`^lk?p)i2dw1@_ z?HhgwyBFect!n zpL_9ZUw$)upH%+GB>}V`%uLVbPM$pT7nhdq{<+<~JqvrEVd%Ck^5I{sWZ{|1r{T$y zBZ!i;A?xmAe=?^@d6IqlEhYyFCX%^~9aA83m^n@kiZ+YUD5p9GjD>^MXBMtwck-)m zEWwK_HQ4inw(2$QO4?_B|Eul0bO}3Bp6CHqBigGZFPp=CcWSHvAHIA7o;ooJd92wp zUKI}+Rr0RZVpM1r%U^4x$EP`VB5#ruwj_5(3@@QlCnSygrd>gVt`0BW-h=B1m9M)2 zK4xQ6AZKOs1;1P_{gqaI@0Z%GM(`aFh$xE+&YnK?aHUxM)q8htf8?NzDX&$qS%-m= zTl{8@aCuyoPE#V{2}cQv`F_Zg7SwjkTMm>9MVP?#X%++a>|_PT$I37^Y(Xi9*Fo5Z zz;m%B=|iLL!*12biobUL}_>xyQT|k1x zcgPGTvZg8YT(&IA`HJ z@Sfp{hkB-zkc4WK2s8IC35r|!V(|-)KKbM~nze&p|HfCo_$IM$@fN&aXV&9(0Emsv z^=_e1{KYe;&k`Z)7dAH5u?1;y4YSkq;Z>~YY`+2L7H422I}8mTpOjjEL96(&|GCX` z;GjnZl`0>oKoOdzGVa4%5w>xGdvj?U?rgOH0UbSFsEuo67^&q)+VaALv2R+1=l4ho zkc^%3f&Y%vDec3sS?j_Zx0a!7hj4y=0*`VQd_1OEGPlt!9Tu`N(*?BW8R=5hETw0p z4?yXei+@Yn8e~rN($!_Sy3v4^&m)3}hY71ZTn;mZ(qFAtcm9&w{*DO#ps!o|)}6a= zK5^;d&s?~8;qTtMyY}4nev_6Y+e#Q)xjykHGLSE3IZ5iY+FY?u4&~tF{0uyN_B5P2 zaRSbsKLh74oP(K}aVTQ>Pxj$5bg?DS;?4)I3Bhk8l{{QJ zGYcPn>Jt3H=P$u0pFRzbUz~?CbHgw?TtN6g2c^+TD2$8)U=Lejl@eet%@4>Moz@?` zco1r~@P=Ih7{}za6AgVYDCLXx z*x2ZoaH;&cr8~F((fZoTmgjlm{aX1SwdU39wV>;Ee|KtXI)~NWbFGe##UIUV2jT#G zi}iY&`FJChGPY9k%Fa~Rq{I%VV;3fDY?Zl><_2hQ9@83V*a-b^*5HMk+pt_i$W&yQ zJ+3ikytsTY%Kh9vHNj8V@ZC&k7NEX=ECVDT=&y{Gp|n-v+9llwJf>MpvI#~m(|8_M z^cl{yEQbCg|3Xa)qzMoX{ur#tdN{=EfIRLSp(6afbaNN3tzz)@UiEgg2$h{1gFj}!0^Nf?eJY>L{^u(j8<(+q zWE*St`XilfUrW(q*S%>{G(b#3({_lW=N&8X-CXn;VV zE~NIA2l~4pm&w{wlha?q*2Pb6ZEe2ccDoJ+fBBu5WK%l;`?G=XdtV$Kop3zg`)Ie@ zVVPpGOzV)&LcPJ?-N_dqm$f5jG=hwIww!zP;USY96R?P&hIk~9M%n92TX1Wm4lQy= za54-%b0s9C9&?Lja>JNDXg=+C=>;QF%72F)iF$uaCIBiqGrkr93ouwPF;al>N|9SQ zR^V~s%kN=KFts0sN0zmOM_1wf2`9)$gp}pS&zQ-?#5AFK>*EPJZq5sdJCFTg{UPjeQbMW?4#dU*y>$w~1v% z7Ymb7_#;2@1Mq+T$v+4m{^*Bce0C1BtKgE{O9NF1~#C?(IDx#Gr*eNC4g!`%n&7N}upO@0Sm%HCmY@E=+=8 z_t$HSdVs;m&}z4QVcVY{85twr;^$iJ zF1x7`EwY8n_+GrHt1ZWZ>i z3ibGLTX6%(4p_$FKGw*$zUzZOfYAVqmH!SW0BMQfLkWPkwgNpJ;N!l|VH;p-xB^9l z!Yr?&cX6naIvM*Cn7lW@9<<1pp@!GbO@yUiy0r_pwh)@e%AY3MsWV=#j0EFTQ-7s? zu=~r+dew*TU~?J`X4xB?Ynu;WxcrT&$;l^Ljrxgtvw=A;t|Yc{SR^0+Gjn6`hko>V z_@h7ZNx1aT1t1Z#023wbgWx(tQsfxqtx=-p;jN^8+M^(|lL+an=UC(|K!_u@2SU$< zY-^wKl;IqrHMky~oE?YLb6B7(&O#xZg?g>UW6fBP@cN`=nWYxuQZnR-&WW+Hu}2XN z`0e%eRgxfg2%#K=pg{ugZQX|$S;9`Mb)r_Q{V_jKbFg6;sBSN*W8q#Naza=b&clZ; zpM)QJ{z-WL>C12dA+~asMqTRc=btT(fsFybGou3NCMKtT zduV9rXP4KOuVDY}_X@d2auPs9EdgJgou0)yLOzek06{XO^e&oiz*5S#>~dhpl42kx z0LJZ%h-Nmk$Td@3>Jdpxs2(XMTHm<44_DWk;OX&iHBlC7fAnK;>D(OYT!Gtc^SWeX8qQb(&r1 zcD(3JU?V2>j!-B-v)PoTa@iRj9sA1e?#=<|_Uj-F4HAHF*ZvFUXQme%+y2FaTH_(D z@Xi|C?97EX2X7ZJtNx*nJ`Lah+>`Kuhfcy6arrtm_&?bD4*<#1t2`J!H&jkt)j9X{ z58D`H`?r5=1D3%bI0z8f7y||*FgCV78)NWqi~)f_f|XXg z%WCt?PL7>(cja*F#{Zo2zPIXj@9fU*&TQzO`%1OlQ{5H1?)#qeoadbL91Rh7Hi3>O znuSQR7vlZ>Zgj{U|Og2$EH7-#~LC(0RdGnr&?0|`e&Z0To zHSiEvc-3{V%@(Ao9smvImBk`#mKr?29@7&_rl)5$lka(Qd2wlBkJZ#LH;hi+#(4e7 z{z9LEj^fdJyN#(~rgs&}A-9^CgQO0OcobqW1W>N1AJ-L+2c&4ej4XXNRFs5vh@5|` z-GmpHn=n%mj0(u%K6E`|y6F42LFS*yXexTgTne4LJ9`p9cl?gm8HWsV$WrI)P7t8T z7Bo4N*#S||N3DG{;krMUfT4UE;?#g9#eZnD=ID<0}8>u9sl0XhV$^ z@2M_VS28(tNIkiq*xFk8$x5ZTC!BxqT$pA%GB-cF()6?(enOwHZNtNar4q*=<)Nbk z@RvURFr2*W0N4hmLy##;^bLWR-G??Kg=a!%ri)wjK&CZ?Z)SljnjNCbDt}eS-$&=K zXmJcW6b^Doe?vniR5!LTHQMAN!fZAJW8;%BGB|?oE()b$85)?bv?bzW2!QsK3Ip4w zNh)L~_8&O7Z)|Mh%S(&%bt-fWK|lxq-tI+;mF~#c$S~&oKU=BPzs+<+Btxx8)HT2VkqJO& z(6YJj*+S+dhSwsNNOSuW0fVR_s{eG=Z0U7Ka`jFLbf2!H2j*utUkY1k{%ELFj{~$bi-#!Gy7Bq{C_}fuP^$&oK^uFpw zh5expBCg{U6BjIEAr(;=tMa5vjn9CqVL(E|#Hg+*n&6>Iq>Rav8R<G`iaerwJPl5^h^i< zcA@hpDe^4N(;CN9X@7AAJxWI=&Bj6Aq+w zMAV7_5gN-GLy9bkxwU8t)cymY7cl3a%yX-sgY+3WcSTa8s*28E#YjhS9~sL%^xy-R zE?vGj1A9*!fIifmRU1QRGCq)jfi!|*y9KIQ6$5RM_O~$#ZQ2T4ZzSOPr8bu|4(`H3Y z#TC;y>8#c2HP5o0!5V!gu< z?-|DwKmox(l##ShFm(mBtjYt%MNibWqw?H;G0U8Gyh&MY&@m6{R@R}hJ`YxL0S|E% zfk*>P4D(4&)kR8fW~B`0uFk_ogYF|Z0d6uCA2nLW#kKX-r(ka)X$Aq6YSl`o(oa%9 zv*WstZfq4}CVb&aT4s#WiS9eT+y#AnordV-rY0kBt7r#@gCXZLF{D#mK*7yWVs1;g7V< z_7859)`t|T@WVegf&gG*bOcTworGR=zQ_pjV5CSi4GtCO=_EjwVrB!kSK&D&71a8%!T!GKo?Pb3Tg4(BN56(JTp<8>YYx!Rz~D$U8u{GD z#>ThMJbXGr8fKxm{~w)yFXr3dd*3vCU5LzpkSJw(pAVDhWhNmlzZYHjEstqA8u4kA)}XdB2aT;2@S2-= zpM}(($x#sHOG}u~J9A|L&R(8@V$=4e(7i^zu51-I|Il&mufg7x*<=u~zPV{Tj{DS! zV@Gv85`F(>sUmwFg+z~OdC+Q@(5N?gq--jYz-t!eYeu7(x&IuE*8E}#u2&3bDnb{? z>om7@0pra9z@56@JOEJTa3I03sG>82oC{vU6h@@Og*fzQ<9vSv!L*5t%~rDwml3d? zn=8ZYdL3Gp5SwwR$XwHvg9i^eqvPX0xmDcysl|nP)0g$$qaVE2Ul{n#R=f3A%asyl zwKVPoBw5~ECJP5gdSI|84N+nnoi^B{#Aln(QgY}m;yh4G)pUP=cE?<(EY9R|As?qK z6@Rj$&bCXF;yyG=Sz#L}ptoOMLj{{OP{<`kKr~nhe4Sh-4THTsU?5euQ9@vjpoHh4 z#9};`i>ITay*1m-qw#ore=Hh(qTXoKKn!IIy;TSRZo`QY8%Zhj^r*Q^#*N0}W4QNz zwOXxxi(#}qjfa+?Z$bYN$BjIYQaSSf#t+>O4;~qZTns6zRta>B=HsN{k4V=;=MR|y zi1vC zs%>b3-4YEwTGR5XVXnh zOg-2#njbHgi=LuN1BafND)bYWMjRX%M8}&WfiP$zQxc04xzz2blLQ;dF!G4Hi z>Y=o`39XjHqqSYu>Yzfa2r_pqnu>a?CzY6v>iXlz{?r^vPlP}q1OT_>{5?4q?*4o3 z9y)RO;4f@$Z2X<|V(Fu%iL|?>i?ibi1l*sB!z1?}f={CJzw5vRZcpbR1hTD~hX#mB&;XIe(R_Z>g`=L7LyH zZ9#M8A~ZJ9`M0WgTAN@uE8tM>pA_rRVV%3a1YdpTG(2~15sHmA=i|7B0NsBonI@I3 zFB(Sk={vwPF%z)4wPh6w{V!!w>91I>vx3*~5u?>oTrnq3p?c0{+d~jw@f13mJf~55 zhGm=qYPAY1)M@aK((&zdy*inG??(Pkc~ed=1OVHv9#i||OlWMd!kPR*S8i#1rOInWfN0zH!HPUmuvOs9W(-~Q>(VC4V5E?&IYq^jOM z?EE`xXlQ7$VK#;ut;XGs!?P*bO`Eva%~}<5sT7P4^{|eJi&1w>quCfy9)IomtP7?F zv{+mSow2}zm;>0=cl4dVP<`MWK3Op?fuRCUoq+%WY^372Ho&#o!tvwl#gNq`O@fHi zf}Y-f1ObDr)3H@7!)CRK??((7BGgXof@LAoX_`lK=@c;mU$$JYfq$Fg+wpLP0N~9y zf2vYN=a}+pwZ_EiM)4Omw#o`BV%rJQ9{B4rpq+vZE`pgBpNd`_A88ycfeYH%e zSxoJNRpJ)E_T~(<)@MN3ngzFBp&lPZ?QLk0EJ1JI{j1H*jh{Gs_UxtQrR6pYINllB^4jLsX64ASqhm;)f3i}lNO4eM?^-RJ zi|(RG)u%E&kW8k;SY@iSa9boE#>2G8iR;{e5fQDJ)R?S@8+FSlQtiR74PdYa(3NJ! z-|@64gMdgPjVaI!&)J}k0wqAD5z9kNL_VQGe}6ATlr|JA6{t0AmNW-3r$Zrdfag|e zw#}pQMEbq&d(V5{iz&WmtF>3Pqz(@p-v@u;!}r7FP#@C%80aH{O-3*+fH`CY3+Uu=v&S=#%nw7f z4ChDxdzp>1<)HC zc)!UCKP(BX#+mLseR&rCaiLOcvv#?TfG$a`g0U2o@bj&- z@iRrx<;t$GI{G?v@V-+4;>9Xd+zVSggcH|HY^cG-as|aV#U4pCg8?ahN z@aB*_27$IX0z1t)bm$-gg?;~Oc5e13Ha0g%GEnyfUvtMe2(mB9L~_1SZw$2B#=V}) ze7T~EoFkN~NU1l=(1)Mr$Ur}*2gvT|o(X9GcLCpF8>dfrS zcN&&ChG-XeImwDROpEE5GwVTT|DpTF;aflQFx)kshg8I2%AaURWDf9PM4^FEIHU(5 zHFyw`B=plWh6o{xhaiTp6%m6=$e?MgAjGs9-N(5#R;9ye$7y23gU;Wrf>*&D{?d6c zHs&y)y#{)#0x=h9F^pDQBn^zfqUa{!g-i4BzaM)Mo;rOEiWmiP5gWe<$)hSR(%Nbw zk^Haaa`6Xe=dN$Totc<+DJ4)WZdr+R`Xx=*{~(o4RU(@HzDB*ulaOfSyNRHxhP28? zu?{r@uYab1OwIt)pcbZD+U+(2uTBi9yteZfJ=02O&joLL9{_mU&KutXAC%e^ev`i= z?(=^p>S7UiXA*Gu&^|bVPCXWn!~EhhoVj=n=2kWt{I)&Cvs{{Hr6@gkt+GA6Kbwqc zKcZ>M@0~k$mMg~L4je0s{$9gWX7!%CPEN%mv5yyvo4%eORaAnB4!>Aw!bYiyfHw&P zqX!@r#fTjvahJO;Oz^A**B;T#3(9O#hX7IW+@0i!!c5h#+IJk08t^AFDM|+@kcNZf z3SEatA_I|B9@A|J)(B{`>{%335gJ6P4Hv;g907Q5ArE=X`Lvr2s8<@Cnh>(j?9vp= zwVisisWxlnV@T0XN29T?)DZ1JSQ8KefY;&tIn{~u`n?Srr^PHq*t4qoKhwx#{cuo?B&NX z{i)vx`OjBbG!{+WSX*swt}ZWRv)QMn4;)M&1N7cXrJ{%~4B?Ji=vgXgOUl(6Mj|Q5 z^z=X)zs50op%Ks2a!EBIl==}fO}x(DBK)ZFyn(JU46@Ej01)hHqob;DqgfLQPhu9; z;{HeEJAXPGq9z8NYge%_Ft;Es+6`+EE4GRbtl*=U?J+AT5jN)8IM(WjQmbue2k zwqwIRaY)95cnUT->%6M}#c0KBU6SE8{PM*gFH7zO_Oxw*M-uh(lLC&k(oj*y7O-9|b7 z51iv#AX9_aOin|FxBs#b2mYO3gccwzmBHIVDgj z72CKUo;Z2${h2~f;r?p1Vz-QzP6&`j3%Bt<#d-_V0(I^rFBE!VaBvVK(hTn-Lk>0Z zTLC-D04$Os^vxkqGZ5T^cLEEbDssFsyb=KTkw3S$Qjxc&$hKD`%@9D5!#{rXAWUPv zpMb#9@-ke!d<_N*I)gu2n7c-bak`vxd8gCC z%Iexm4e9d7ldXY?ZI5dSxI-WkXT1~B32+dN z@L)Ack>UZ0E6A`S%SuIxNeqm(N>yky9abfz4iAzdCX-49y=})+YPH(&>3s(dWHPzO zHa6GD)`jVS5CFW=`ICtr9vL1=rc%GQxUl$bh#1*1Aey8!7DS`yk}>knBKmya{fFQa zkK6@^CWoO%Gcf1xaiw?^5054VFkIZUN}>l6{o_dekK^|RR`;`sCUa%yI2FmDvv<%j zJG5n8AuUTlgDaeEd=D+$;H%f6jFG>Il)u|1`psbAKv13SV=@hk>t*=zv*+N8PrLx9 zkkN11R0yca>2|`s;bC$Uh@c1h`~O4RY<=qLwJRmKvwPBZE-s3yluKrBq3}HB{eNq4 zXuyrf<0mTBnuqL(j&{n`FsDq89#aRl^yT^$bnR4g32>f@0oTVT>8)~g}U0DQ%Mn9cS!tn4g96o#q4jh<9#wE_5 z`{m15;rh%X0dl6s zEBfPTOr{;rJ>gRSoUSPpiBsFLiT0&ZZ$h=a#nC&p2U34N0RW?3#cV*E#YyTdTlDhB zGR$=G{1Q#%SIE|BtPcPk2Eg-&Karhd;WN=)LxB?wY~uO?3~n5Hewyy+iUDXm1kJU8 z25(0&{gzH8p=JS8Dm4stL}8#O+eB%LQI`{S_f)IZqxpP(AF_I1X(Hu8We*_}5CVX0 zv_Be|p=>7mIdcAuMiU}>M9dxaN4wHS#;@bU1^BuTJPh|A*$>Hx3TY(zReP2qB-ay;_}D&5yW$6o{}FMz$Z0LI#N zuqzv&nN3iTW;QJcEJWxnM~9jhh1pgV9((Z${Na=5;rv_)npDD$G&D=5qGhB*MY9X2 z6E~hn{C2a|`u@eG1s2T+o&PIc6w!$D^K*^mm8G?4H1Yz1!QU7h7(oU<@{nPeOw?#x zcx)+Td^R>V(Fj%1aAA(Jw;x7EN1>-D4>2@SR2x8y0CXsA@sax(7Yard#izda{-w|* z_)(QWiG;Vk+MkNSve`6@;pcb+9smC6eUQs$`7^$F=@ML@U4XTXGFUu{k!#Jl(kz+I zwC=s<-sbf5G%|RzKf1U)-^7cgiw?g#KI(tPJ|`d0LY{yB!Tm>ZbAOmYD-}+7vd15z zZK@F5sy1Px*5=NnXcB`O+}A1%_Ynh^dFF_Q!3wdJI<(OC&`=<9{3>@4fGqrTx&2t$ zULLvag5q_00~ipJc$s42b70`3QA;zXIH>?vr6Fh%7`V2{9S3?e2Fd&o+Cv+bwyMx- zI~;h4j!*6=P%!1>HCs&uZ^uVR#wWAc+?Pw`VlxB*cQ^nDM*d@?BL$3%|HInq8an?5 za4HO~l#UKlH+pf8tVr9X1~E~}KOVjL_10gM9GI3nUqA85%O z>&SEODjp(Y34{u#jP$7}jBYdoi*js@60}R}&|05^8j1TfD_s2#NcU5JziG3K8JOtO z7ts*@!BeN;%TJ$z%kvdzQzrmvoV#wIZA#(Da-gqYIdI^>|GGMJ^^5ZQhY``Mg8*7u zsZ^@tp4cSK@kbu{KtF=L!=+LgoqAh$L<^wn*p5Q`W^-!`YJxdpAV5{i7B|QX9h|Z( z=R~bir_WWuGnzd@1AOqe%2nLotIN!G>PUe_G@6Ko2Oyfj+*t-x8i+v^_?!b3l$auW!WHg1!#m6xSoI=U#aU=>&4W|I ze1CHbA{hDWcnDmKBq>+c){;<1tZ;r|4gTbrbMQM)U54592DE7;uqtNH^N3Cmy|jpi z9Zl8MSS<0Ico6<+rBbm%+xPl`0G*XqtJzMaQcokD{9le8I-E9))?~F_(~v2O&{Q*u zGA-Lu>c}2#Zf?Qa+8TEU2&nVQ8QqMn^~BAUgg&1WvTpH#XqPl`C-d+I864Dq+M=`CyfCxvE5vWYdj-;oHWXitk?f~tJ(OI#l?k{YPAv;`n^s&2s}2s-MZ)g_q@MesXbiYEV^75%Y6YZGgT~r zh5NJKFk!t|gI0rpK@yUf_S7R$%>Ordw69`U!D*Jj#bhlJq!R?h=+PxX?6f1Y!Il{MXJlLZ$PuW4n}DS3_J)l+Lwy` zRH1am(Y=k2ub`v9wz!I$|3&!HpI?EMs-VOu?cliL5U5;jEvwBD%|xRy1it!27$n9?c3c@BzUv;h=2(a@iv3(aBpz9qd{W?O>55%@rGMBHBJy31mv2=o}3irVB4$nTJ38(&O-_&s{?LzX67j zG!l}+3@BWwN1!oy!M_xl4%I^-ub5{0`1ttP6#nze7|h+VIstba00>0>?!@S1e^ihD zdyM?Qoiy`3K^7_Gv^_1tRjjn9gdU&Rq-@*}eNvQNwLDm=wBht(5f+OL=%q++cmh)K z6yPRf)v9=!D*h=l#~l_+p|MZmGp0esXr7)|Q;>1+%7}JXz*)Zn?Ulbsc$V4K_PLGP)$O#sh9Y`=3&@@ff2|x!Jyb%X0-)HBh+(2*O z^*V9CHsMC!->85w_;~+)(BBk|Mp+kw(joiy?ZewNj89C$(C`Q(Fg?<2BA{Mg!AO4= zu3)skwzdJpq#z|tIN9Z0j4sJ>Tq_=nZHx>L{~iLb??goV`BHIXwN|aRWOaAw_}>t$ z6$$vs$*F(5I6wCf*49=<8=a8h<1`I1h&1quoCQ_sd&q9qk%^o~MrNy210AFLk$gYI z^)#fYI1g!3-KrvENx{noD8>djNasf!WHI$PSLy@AxE87%p+XvR?lm50=2npLEH6RS zs$c})MgU?%6u;_?A}bVX$qW>g3_N~z2L9Whd=38e^c<`iHW-wm#Z(ccK5Z(D_DJiL zzz6B3Mp*jX)hH#3h(vKb>Vz_ywd2WTY=1hHd#qBe-jO;1cN75Vh+W`@KQMi8xW6#) ztE;Q4-&SkXJYm>C=t?30AgiOf)M}zaAr*mKGDg~YK+?aYhQ;TGbb;_em1-TL1PckH*s&Cnk7vD-KdyRvEm;7PQyqp}DaH?Rps; zS>;c~GjyZP+%hquL^^F5BmHMjpNG#saSC2KKM$oA^~cf_EgO0;s>B>9Mo<+tyop4d zRq8}bl`z~G@ki0=$E(%qGJgG&dcAHc9qr9(gOHds>M>tXtr9F@$rerAAb1Z z(ReJLMUa(35TIM8MN=JIF)T<`NU)^YY(lZLg>?27e@}G-^qkZ|(2vZ(z`y{1rE5tJ zlkO*AAkqdJ-(ewSYF%YTvs3Fe6y(x0|1RJlZKDM%}Ij; z6w>mq;6^WkTVBCUzYNW_83Y2G5W(nOF`TIdQnUR)s%%;R<~5YiHop z)pex796pG?WE$m~_wV1&29yk`Z|HYanR~d=U3C6;4-E}xlF8H)n9~kHz?;Ma#0XF! zX|+;muB@$oQP;KK{=oY`FpfqviN+*@o{0pO6w9&2%wb|%@N&>KD&yWO7K;o9=z38* zq2mZ)x@0oR%mC5iqezjH<0NqB-$ztA0R(cg^t+TwpeUQbK@cqXY{JgS-QN#4y7?f( ze>^=O-N>=ijb4i!d^(+GphAF!-WNH0Vl@sNIKcam-Z%Y>evh7)D!FS&8!s*_zyjWo zd4pAqIO%Vv!ZKPEu~FkKIUsZtYBUmYdvZOqM~@zTtXix6U!`*CcM#NWAb2vo?%3CG z-@XakPc3X*Ks;c7Oz zW>hS=zP`=|&3CeNBj-*m0Nv={e$%$DFh4ucx7c}v)ODkDf$GNuVsafknMj{b`Wn4?$hK`Pd#-UuS?3mhCTrGoj>gt z(qbU+nMA<3hV(rB4vF(v(qJ_4A!laSq1GS=UxD}De-|7W#Qm##=#*97FAfQoVH%)? z>}dZ=Dg>l)!xYJ5n9e!>G^Q7pmP+vX$Df2h{_4|kc4iYA zme`vvk2M3xq$6-_|1g|Ddwq0j6w|ReOgRw9uEXi8%kc8WEBLq-sG%+883i<-gQ5f#)fh_(Y9@Pcfq)Zjs@Y$tJc>3iTc>2W)aB&fh9Qtkpb7M5f zf+R9eOb)_d{JKZr!w=mB`}>gcj}W3p%AX`-kp=Lmj~@-Cg2taF_@z|LRN?z*;r)c1 z-Dnyqe--Ao+Hi4Z8Giq%v$%<8V5Mg9Bs%6RTv>=+QtO< z2b&BzItPy?9g-uNoSgjmR;&5rr%#_MhaljV(4`_pd^~cH7*%A8TSbbJ`wt&F^s`s5 zUL8luTgOzuJw!E{mgVBL@X$aqC?kjM8{ojE<(nUs`%yjt0%8DyId;1F(LcRDef6Is z$N=1I(O#kV5d;-M;6U%4Knwj2IeT*Ibff#}Z=j!%^QV6Y{~rJGRQXSNW&9j4cq60> zYAg~}Vl)gULWPor^T>FdJ$L^6r|@?+ku_-2>&P=4=J;>T2(ojF#}jG1eFmA7zmL~W zk$aan2VDc1F62E#?9TfhdH|j90=#(YG_>hjh$blzQsxRzD<$R9@t!z5aQpy#2GYA5rDkPEhq=Z}ZSD9hO#2KtK zbMU86orB-_{V%{7w1rL5QUNicFp2=<$XFWgKD-a!ch5dJx_<)tGjR^)fcB*A!A9MI zi`N$5i5IWJi|1!xu4eFD6cb;Q{5-O)ZY-*+Lw!BJYq{?KcX@Sf`A)HecM1c*&VO=Z zY9EFU|E^kH`!LPH#si?)h(v+uEHtV}I~|=KfRDWQ7~Fg8AdF-co=;6ex@e$yqm$r7 z57M9a9XkL6!&5MTd9mmdr{V1NWiTmcAJMo?>N+4)-s0j4%FMbpm<;zO$ve z0a}zg2s(2gB>1Fv0K$GsN?Tz7&*mb#BTLqW)zuG68^CbRyd`hK($&0 z{`j#c;dj3DEL@t$bSdd+X~OO$qX7HH2H=yA-VOI0*$4ZFGmyhOU9_`pJSU37bAlnC zj=_mT6A;1IAtu*&c^1|&Z9&Sb^xhGss`Pgi%hhkk0LmE}p7_Cwm(DHvXKgR9JEaDI z)9{&W?q8IvmA@|1ha&M$74sbZYc8Ce&ca6?J__$Wj+-_c!KmDTR0Q);=+tQ}Wr89s zo(0gx9F+?_m~ZOKC7_T=@@U|>^&*YfMRcjNaK>8QU^g!zkEm*C1-)jmB#_ zO^8q(0lo(U7Bs}fQln6A*>L*$8hi<({x3Xx1k?IkHlO zf#=8)9Yt?%FVlAPJ+-0nhaeq8z+jUHa15iZuCA_rq1`r~g-{vrmREpn;Z9N-K!Oo5 z1{cV2gIC1V({B}e3y6`@89S?`W>Ifr^nOt_zcBPK;YMy1mBx{&m^_Rqo)WQ z;nL{uNT*UtZ=rx+)2A@fzl@*58NC1dE?vI#Z%gIM?=CGZZeohcl}c?PAiYh_pFYRY z(XqaCI`e5vN&N%b9|$--xku&jrEVI4?8kfG`(Cc?c=n|;aCK&$(>G)~Jt>ezIa8G- z#vPC))aax=ST7l{RYOOQiOoo&2Xe^nFx3Ml7gI-F19S{{^riu7vj!0wYG#y?L2aF^ z?~u9^002ory7_EoqFkx|Ep-0-IR{Hkp@evmmP*Au81B!(H-F%6c=(<}FqliQh(rX9 zSSp#q+@nf**rZb0D3_pKt}sX# zDrA{W00a=OXca>wtMafDTaAOM#9*!3hEo@=!XH0*3Z8s%9#a4YjWxxzfi4DOxI*ND zY6bX#vNx7`U45#b3^f_;iHQj=%A#5TAI%0+0lt$m%@(Et`WL6Brk+_}Uu%&1odg2g zZnD2xl?r*GNqwC_KsrWVbX}UQriYGpb7N!UcNZ5Ie;u#WGe?ge9l@V1pu@e0&ajQS z{vrQ!m!KdB2)GMDs#tC-^4!__7knQ#%l*IRA-ciy2VR4o&=oHsqIBW&T{56l!LR0W zIhEAr@Ubr(*neOS8LG4KMB@8TpLzM;AZzuz%d0DEn_F8hes5DfMd2PMlQ_lSehc!E1N9)9>?IDGgpGK!1v(o3hHRd2A( zBBnsJ9FzO>m<{j|2Ja6_?;s#3Rcfq^*=}1<$Ynsmyn8H8^(4r0*~Eh4o}x*Z*+3-Gvt@k3rclInRdV9ohmQ_)d@uzc`{0A{_4kdzaN1+E z7>{6X74z^4ZW>4pf}ZLFPfw%uO)xMZl|PzTO}f=F%!%qpZ|p=`lZXRgENpEwIoU08$FmJ2P6`WdIX zARWFVY^|>&PX|yQKcC*GVnvMVIpW9sK39-aR7W?zFw8gLBJbyU$Bv!2KcDZpFf()g zC24qXb^{3%6yL~%2K)6JYl^-Q1lSa9AtSJgK;X9#sQo5_fZurJkw?y8)HRMjzlPWA zVj_|7Fiq313e-l0gKB^!2s&V<*?l1BqqJA+<$o<_AM79qOwZf)8ZzbK3cD{Bwd~>h zRSJayz1NHQuxADb2WKC6;DO5sYCbhPJNq-368Rt3u3!JHrKP1c1Uz27QMXy^on08S zCLz`T`j#3vf9`9YS0b0*|NakT@DhE`%F4=v)CnZPrFbG)OG3_{oc>2X@)0<8>=+D+D)BQ;84)9eZ;RTNSCIvnUEYFH6`ec=Qu%x@GN~zuAmy&M zF||r|%EHLqYx4{g$8CWZ&A>XQ27dps7vT?{xCl#i8*Du$W(Oc`e_${H-}K>=@Qn{2 zfsu>?36~hv7NYX9rgST%AbN9ImUCZ6c6NQUgjU?+ zB5LqribF`-b`A~?4NdQ#o_cm^dC4D^76O1>xQHuv`+NI-xKyhA4W$2F8tBg)HzH0Q zooFGg!viO#;L(TggUOr)#2MK59HtwA2Bt*M&TqmKFP?+1 zK7S6*UoSz)#B=~n$da?OmCgjU;BNE+=f7*X=~w9>lCviOM1_IV)6?9#MOEeWI~0j_ z>jAjci)iXqe2ke&rSFc#;)mn$_z^S+M|3@MB#}rRDHM8-Afs^f$dRM_&~VJvYE@fO zWd4n{^TX)v^#cJ(`x9NyAv4{NY|Z@I+S+d-MgKqWn*7Ft4?cM1$dMy?{PB6DDKFu* zJBJZdHZ2#K$?16v1r1O5&8?g-X_c)RVAsVOpT_p5x zdR@%jtGG{Q@OK`=uUGNDi%1<`#0dWy?z?|^_3G81q=|}1IsYa)lLgu8=+fVdHzly% zG&^yJ>=lq_%a8COc)jp5kK-BtI0D7vsZ{DPUI#q4`VlpLi{Qn-N z`{h`2cUskJT=vV z!9o%~bpJFw`oIa;*PnqX%LF^(T_M0op`A_-?uU2*K|p#CqVW{64K*ZADNmsYv`Wf= z_=rlY38m5ol$y4PsT7@gPRBOgR4RTn5sQ{rR#(3w{p6n9n0vVhkPeAGIXX5yKfiQe zv0UQ2X!djjqiENrnf?l#m>z=n-Zce>N3zfZMbN0HREw}~zmgq>Snmi#`wxPKw31Fv zvtFWEuwd6VL1~eKm4S?a%~HLim`eE2@d>CIm@Rxwya`s~YRX3+sB zARfC1hWdN(Jv3lrvj&UHEAXdh7T|>|%g7egIEUsS0I_|9%`6lT*5o!t0O&;hUI)X8 zABeUcmA_Jd`GpG?xEK5GyYJ?nZE`kfl;PQDpJfpi838CH#)4Gs-$sD&x4TAI+3}Se z2X&>$j(^7r^}j{pEh;2%Q=koWWS zelee40}=#)0S6-v4(=bypZc8#__z}8r7zL@C7>wT1!5(2bkg61pK}(^F-dwK!|VCa@OR_D zbCwtY`a*yFm`j%~@n?@9U)>3~sG|fyCLq{kJ3)Kx+_`gb@xn!}9btKM#FKW%5J>W` zV;byj?q7Cz^1@6%EMSViba53nN=;Z;X+Z7R1RNS4guX}&G{piFov|5-g4K5667HSH zzIFl5%oU;R#vp;glIpgR`uE_j17q;9hwp-Wr}`k{AzRRH^6(!LS0j5J>E8$1z+nvD zvdHeHAezAF->D!QyAHOufheN^3B`bsz8E}$fnT#$ft9B&LzSi)(>QiHpmHOId%v`^eIzlIwz4bfCDI{#5f_m6^_>jjTCs!qMFgc2>J=BW^-$$5Si(*PcI#bOSN zDE|8nO~aMhWmqiFz*d!NOckoYgH=Sqe}4KL^kfro{K!GDj2c|LHUp>6U4$2AE3nZP z2$hwEsJGwsn06ypl=S5MsaZRmvcTDz(uw>7t$y4UfX0~(F0lZlG)MROAb|`t8F~6S zMh6O0v4P0IH`cV!z$-`}l6@fx<7bFnpj@AUK&Vow7Iii9V}k?3TlgBKnb~V!LWkr8 zz*rZzgzIKtfWP>6p>y{F#>b;5`iUo=_-(v?zbzlzc^)S$O zuKI<5v?s{8lS8KOZ`2}4ErcXCgb}@qU?YK!{;9_vd+gtkQ}+P`8+Lq7DlnzTOCag` z#er?nufNUVLzjsNBmLJO#BeM9l0aH`m=kdH(=J`5L>(BW0I>Ka~Bd-X3egh-; zt4pg;FKE;mN#uoOu}f)O{8{ff?$Ic;EEf!m?0+3n z$r$V(ABN3x9bUe=4wn{6h^}NIq^_x!V>wO3_{LbmcoFk-|6E=RCjFdR zzlj_9la+eS(bR}W*>W+8)rE8-0!Q}^!^tC)FxeYLBv}G2mgT&^m+FUjehi|0Q=nij z$&O@L_R_~;gDds6Uq_a1}AwH7?}@+{P--vC*I z21Mb~W($&M=3$}gK)qCk%Zn?pxLHTaUjdt*gq%L7`K^u#5aMy(4iCCL5kR#ns`^SA zm5e+^WE9bn^Cx3X(LNn^YJnvB-;WUa5gULh z8@3UCy^!a2(~n}lveJ38qP*X49um_{L1vf~PyUKdc8xj&qR0l=P`R=O*DEHxJiiXp zlY?;g(E~7;&cf--^YGP|=3uR2u=BP^-^6S}HmSqCM<(DtyycN;CCvaE?@y%CV4=g; z^P>%`yg%d*L@(;t za34nD`(bz>4+-4>kN9?E0JLZhqIt|C^$mlTEnwsyXV_QyI?Nmp`qO5e z^Z5~U@(xm1DRiL6_U(iB9xKA^+yY#xh>2IUeVX_>7w4B@X?+7)^(K@}YD0-|6~92! zju>SLLLrSLH%aHe>kU*t+b*|am-;9FO3vGl?ES-U7^0<%Kmg4Nph&L4lMip$PNoD4 zgMtqKhJ|AaCsz3LtvBjktx*M7gwbp|_t{7^hO9y3`as{{FAW^K`~3L}XTDgg*XU7x zPAvoiZvqh9Y*B=d#`~5EmxwLc`8M9fdk)tdv|9q`fs;-r;of`h{sv@Nj^J7Sfz8dW zu`5@vd9qd{aQZ;;0eVn3A_xS;eG2#Z@90eFd{1_RY=Una{P`0dy8xUXXL}^xs0(u1 z7~8cDrVnNfJ(0cS)z+O$hc8?cOE^&+wiOQkyW_pQSDbLU}ptt=7> zsy{B+g{iSYc$o73qXTFUtKgaq)=SaiNr<7HCVL&p_k$ZtVPJ#6RYy?7LTQwy$RI<2 zR;tio$!Vj3-~qo9b30hb!^8I;g|nA0!^)K{E(o-dsbI6F5P7S8(lo6n@H03Edyoa# zi$#EZkwyjvj+kxh|I=u;rhzGKMR4SJf%B;dJaEr(_|OA~p+Ae!d}|fbx`k-77oy32 zNDc1?y>ASZWG~f@;{CLtbRIZChe)FXNB<_bNAvj`Byoz=x!2~lKCW(!CAjG1`r<0g zVxFHXV>NC9gobHD-4Mfl40Qgc5|v7Rey-mI(uULJ;PmaVQ|pW+7Jx>yBP!BS2deu! zsQ_x*>Feufg+Pi9NgH_yvUm0PvuM0G-%<47L1pD+ZWQrkmF`+fXVO zX)b;NfA15>M7)>CwTX!-nxlV>dT#gV{(D!fox1-!Z*TPR;d;w$7FY5o5^-;0eC!h~ z!}wOJv%yIGJLcyXvuIyD*Wu2OZH1HmS@)T`8#(yyHB?@8a%1qZlx`rUNlNz-6TrYh zm1tc)y)LGk@EvNW6A8B01NtO^N?A>p?FjJ*4vj=d+tbF^ts!vOXjt4ib$MAcX+nU1{*dmsB$0J^H?f@Ae$$m$%BLuQO>91Yt>xrg_66zkc^* zFMPuX?t`P_dE6vz(O!a)z7ZS7JkkUtMkI49Vkobr#+U^wR6%;F##_X#B5Y zSA>H^FhB}aaRdSD#WKvS6rqVupZZ%B*|?`FV!pPZQAtFD`~1M~=HcPP9uFYqiGy7N z&fkB5DjVsnePaND_b32>$BJGwq=gE5D8EPd`4le!1o1d;+viF5J2GV=-e*wpO_88L zAbdYXA?JH5@+mkrXc`T#TqzciJ^2LQ`JnCC=|Z89Xf~VIB=87oD3{AjIO`>u`6%^bB!QfiN6yGblE*uuNh(Z3q&vK`EMUHcJObhcGFN|&aH zlK2m?hU@EV&~5z_HbU{wzdtX)|Baw)47`k@NaE6yY=9?q*my{}U@|FyYP1@Hxx`ef zsz;e^prKF`Jpdnh@CZDN`TwMApnYvY1XHngq92?@A7n=FhG@?yw`jXuEA4TRMrMdo z6*ft&Y93p1jovK2R;z(&0K1M9KU!E7Z^(|WVxYFRULx3lfJFt)dLZgbr&EVgsr0pK zt@<IPhx*?`Sj1AkBE$QVr{)kGpbo}joq2s&Wl@PoHkIR72X zj{tV&?djjt`bW_}q52nIc!6_!ubel(^Eq!u;d&iV5bPlH{}*gQ2HEjuS*Ba5mIv@X zeH8Dz7vEQYaBv`o`OIqpgXo13XSnw23OMgh@BZ=Q$3Kqu{S{2R{1bG5-%%=63O0Is zE?Sm?Pwf16ocA}fwu?aB=&XxkW6}^ICpKMeJlh^DB7XzxuFp$KsXKs=b0@~mP#L-69>K3PLYldtg z>lWeCoC@{Gkt1g?MY6n?#DVrq4S>HnDYBiJnXOkVoNHEGrjuj^D>}o8(SA5MJpnO9 ze3+O*sz~R06&)RU5`jQ0p27`;xqRvgWzIlSXAA~Cne$RPpT&tHjjC6(U}busxfx}L zNO}M+Z)g{KdwW;~OI=>)Isj$>L`lGHQ2)K27v3(7 z3;BMyO^ouG==ASK0B|>crZ0_;P5s``(9l;;zx>jdF%qEhxekOn0^!<&OF9oyM|2)~ z=%KGin*Cu+%l&0!!%k3PrYMm0=n$)K=K%<^hg4vQevZ3Is3nm89ZVC5DUKcoL4MND zy$v-Veh4AH5kV12`W`uYfHevn8ZAr^fm&1121nxw$m9zgh;=wefIvfncuy3J5%8d3 zPK(BnHAq4nZN1ry^VoF~g^TJMj1L#^mWSoW78s0JRGt(|y{z~*f2>xkeFJ`b3igob znYxG078S!dhYlTk$S~c%RIS%&Os;G}5`QN3vL2Y4fJ6KDp_AsGCHx(YEBqATX z(aHBC4Qi*;Y0uxAAsY~`J+xHX+jw)v$H%`89qTVutJO~<060NsfjTB=2-G_fVFu3` z$%a!gATa@CJ7_d?u+!s4H3YY7xzhi;7z0qcAeT-;3=0 z#;+TaA+-mc^dT1vA^;ia?S-Cf8XVI3cU_@$%ECWUh$S;zyG8b!>Z@Gv(-ESeVgX1mgzN}`0KX-$<2V9#<3>6VukQSJ z+!4eA!MXrW0C+GwI0$*PU#??96pg8lRK00hY@-)JD_9_7=E?i!zR+a+uUym>L;?>Crw&QU=)T%vWJ$1Jg7gZ8RDW6AKWKV-5kp zyX5b1h6e{8NyK7*)k3P7DmZP+5kgdWArp8(5APd+$pNJ5ttLcN%r8YF4CVAh22#Bv zpvBU>nHQW%_4S;o1N9SFT(+zP7f; zGa9HSh6H?eI@g`&`t6>P;0F@aGE6K0jTR>s;AY(huWg_dNuk0kJ$|5@$@5zkJz--< z2m7HnpW$hN6yOmnYm!;Vpo;=FjRH0b)D*$gQkR1w#nU=z08a=K(R14_+B^-@0I3|r za{Zvj)0_t2xrSB^hI`X+eBU7SrF8}m8hHMoB!yViSS``5MDcHFZj>BVpMr& z)$8^5*tYc``U-NnmQcEQ2Lp}eRj!`bsN(z|JlZitnm3T!he=rSjyN2cc6h>ir0Xi}~-WjzERR!ajKY`t`qe z?b_87^6_CRAY8l4C@DNY$vv=t-=no!{d0>;OGhx$cQAs~{V}{Gnd}$u-t6qW9Zp}0 zf$>)ogCZ$lsvja-A|u~dRe!v>iQWMKL|#?Y{dwDMBIgJ3)|by>`ZNZn(cqLO*)@e` zwP56~M-!|A;4%FVLTs(0M(72coWgbB9PrSMgx8SuRS*Oy(IonRboMmnxLt*OCJOt< zhM*^%kXi>F7KT{>OijEG*^vi4FYsnV0Pv0 zA4vg|IvfCO(+POHqKX^U0CWL?m_bgm#I7rb*OB2w1|tthP`=PoQN{V#>)lma&H#X_4)41hy}(p)M8 zOmY67?5*F9c!P=M%sTLMGeaO$3mxj1!h0jh9!T}{gQv%sK~PA3-D<)3U=9vX3_~s| z(zgCUE&4M{r6MdWEVM=7vIjQlUiceub2$&)fAZ1Mk&(Y^cV}L3&R!M5+Auye0R8zi zsI~!7T_8dlZUR7I&ec^S^I% zbL&{6*`m?e8g(A|4u9vlc&AtJJ@|Hp0tW=*Y)dGhz^@$zLK+%%gY?C=07gX495;o)Hh0ZONeUqFC30)Ti#;R0@o>2xV`ZadV{ z7nPk_s&xJxxgv23j3bnNT;R)0)r}duXHEv1!Kz9|0^piCycgnHwY;Jxg(Iua%{-P07m-akc{G1a172lvuoGl zpu{rZ(EuO>0K83n_K5TTuGG8^I)C4Fdp@BgTToQqkP55)i9JZgCzO7O@a9!z^Qb5F z1Gu2jOQw>LPG>%c&h6XqF#VN7hYmeIIyy#&%azWOwE5|8?0^C~U<3&8_xVQO`#YcL ze=7W=!%CIBVuIUl60X{Y;0X*l7=he{fB&!DbMJi*@%atw0mAhzx2p)|oym!@kF;9G z_fQQE3z5FdTgQWud~l33u>f>KR?+S2>*GK~w8nSlIkOFt1Bql1<0;Z{dT8I=g9i@7 ziQ{)akHO4$Mk4xmBooQMmd$2)31R^;bJcpxbRlv6-v*>0B}KkMsU$^C6N3TS_ONsS6=a^BT6?Qo7E&;WmsEXvrTY!cXusTq*#IC?rz1cxCbf4wOC7WcXxLy?gTIH z?vR`JyZN8<mc zmHFx+@MRUFY1$I-6k7O}14WQf>UJJ0r|c#ynkVBBPkXW?=Ag|m!445&Y0GlK3(x7LK0WFkQR$0zaWv@ zT~SDlXE6F{h7EPG-cxOa9uoPwwk~V6D9)Si&K9Ch{lm;+BoRv+pWF%vl?|Ok6^fMl z5I_GuMMIU|1A93A8puMEL~F3F$dIq1to$ij3_@G*210Z8RgJLrVh1L><7l~la`f?8 z$@sJU5E>p|z$yB2Iya>rkaBR=CdOju=l?WVHlj~Hz~ePiM~Gpsjy|E+88Yh&%!B^KW1i-Z!w)DYIfni__511q=SAv0I}5qC5lo?#O!eBnhW_ zYatPS$oNBx@Sb#C_#Z(1>0!Xl#V3X2D*#LGUb4I+Y>LvNy~3B_*6JVEMn({xsPyQD z_CSSZIo~l=J=2>+wi1-nvvu$c#282MWYcQ+G`z&MlcM!?OQkDn=bZR-;+yD~!sCE% z`0(H2eF|hn(0xV1f~aQ6GmvZ00p7q=#*ckY)_mPeBzR8@^wak=3=f{bpc3DMTtLIG zKn#=Zhdtbtqz!GZrQJ^tYxSIP5M4Wi0a|X2p|~fsp~iz51`5kR$7*Z0Z?GrFdr2 zp)r;+_TFShrujX|(pqQQN>0jy=y2jQLnL0ewad3`&dX38N?tp}UQNJf*r~Ia2|Ofq zAt&juEh-8Y`71`a$32ACu{c(Nj6SX6GB{w?pFfO7-D1~2^1&086NIU02l6;NA2&SX zxE}kwOGq|a-K-(6GL+xH3aXZ-d$XFMm^#p;o!C-6$5DUA`sNeSdtRYW-7lAj)Mx-j zv$bW}8_XtsuVOH~5E7HedwgTOcsabj9>dJ;cEP4;D?%DR?mU6t^>PQOiubOd7QBJI z5kSzuQs`y^-K}i>iwG-_w9s?tSl4~l_-pV2gQ19x86Z0>L6)(4k-Pq99#IHXfedYC%4?$M0PW;}%PPsJ(T1<@CJd26|44RfneeU! z;b3Hm%~<3UKhw6j;&FEMwLwVY6O(_@c<-s&({sVip}q=S`enfZs+!sLwpit_1L3b& z*N*%AGE11~ce=;W<0AY*Ve`9&%xEnB+5CQn34CFib)g(;2Sud=U;Pcezw(?{wG2o# z&hYZauxN(ad-vm4c@<+8LbgQ7zl1lLU}IO)$T*Mh2tBML1O4|@SA0)x%Z8e0GA4*V zefpFwDf6$s>&=HRoC7#;68F8ZGf&4W8N&_SsQMb{A8X33*Fj71_qO{Q1;aCA;+|aU zfIDh{uu7J<#kDFLN1=u@XA%(mr7L>KX_ji_01Lo`f4Q0cNctxs@zUpP=jlw~^1d07MK~zA*-g21 z({=QSbP6nN@v*N_C#}pbZW;qyc=^Hcq9x<72(|g)+|PWmd#rI#Q}5plTF2tL7rArk z@B4qyTipvA3}C;v4Ob22--T=fvX+_8W(76J9yr8kQXhBx#1?h}QYqCN-3-t`L2 zM-lrl?qC`seJfk;aL%ZDdgO|aug;mL%?bp@{O09JjyZ7v-%%-)26v2OdiW%7lc=$} zN`_lTymS^is`&0rcfQ=mvO}`Jd@Q`w-yVvoz5ImnO#sn-29)HUC^sVKb5nHx5(?!+ z8iL6ZU$EW(jPU@HWhHm_C6FE>=zi9nHMt2vSkqXY)Jc2pk})3W84P@C>J4KjbHW@v zyNVx%<0v{`gi)T1dz+axIsM09qH4Y`I+0Gk_Pus1G5i#Bz3zG$3kciL){J){r^$55 zn~^dAu1!C6lk4xkBTb*}iGew5zW!#zOO_qLx8&<1=z&%QgwCdG#g0mIO5c8HF4BH8 zx`4_R;xoq$@hC~@_nm#fv7snkAeuMi04o~OKgYYXu?=x(eup?*qAh1XbB(p26wTj44qH6K2@&nTm_N+eoO94!T@DOGlTGo614;=mO&uiU(+AJV;mC|o{LV_fRgp^{2EzU zyG?F~LWcOiqlWc}zU&5eOt#30c-dF!peQ!gN2DLMo!90 zIjO9yKtGW`B}7CF&rF?pB~R+T`_%HV&yGL{o;J%cF{CoRvhNJ*I~X1sdY9yY3JLD* z?a7YYP%CV=kzgwAeBVSzpBG-25WnqaL`w!;$7-~&`L(`oVy&jnyO=DIXHSV(+`pIgWl<9(|`Z5p~r~?1w4%{n6Ra2 zcLcGwX&qdEc?i$G;prvms;F#d5E4Me3)MGRO4MUqG6ciU2I1DTM@@U%OC|Op%wW!` zNdW|sqTqa9^K^!0y&^o1&!$1|)W62WaWvoxwL`bzL1;L#x>7IauA~k2z#tWBB^4D= z=vO_l5WHs4Ct-Q@WW$S5st^T+$G%!X!igLJE7*o^mDs+NsX2@6!4Se{IQ^;*E4doi z!rAf*UrVvLWWnzI?w5TiY(Qr=IR%-T!?16~jKgAc6aRz(95AL%&duMb*b znBVCo_TkCN3-Glg35owhTtWlgH>kLQ1vt67*+O@EB8Gsx-J7?l34AsM~{Z0aC%c@{feIcfxnqCN;;rtsl?Yt&Y9Y!&cr<*mCHo_p44kxo}sQ zU^S(u!vQ3jm7a5Y>9L4l@AWHYTw7byetPQN_^9_z_eQ|O`lbO(%KP@;Q$?5yg%ul& zf|dlDMp41cD`lwDa|G21!`%-t43k7mPgNPUN&Wo+#df-Mvc@J2oW49<2yi)mO&;HC zv0bS`c{h#snpC>X;Zn*+@f2DptFo78_*tc*a$yf`>t>5Vu?HZ9ILZR*&IO)*jdz>S zHGfgemwTl^gZhofqm|Yt!|^&l>1}Fw%C_T=izhC7$qx^60MVb@qc6rM_3K%Dns2<^ zOE+_`K+90>F`YZ6WpBm+p*Teb)ys6n0ZX@B)?}o?R~kP{o5KVBqEcGGqYnqhrLh_t z^anTFJ;foHf(&G;0_BVkNX^}oOt`VyCXba&R;=MEN4acTS&D{zW!~Vm)D3 z28yy2pm?_V1aE#-L)D^jb^kWd&zCW=k*3_aEIci6*}5TFZB10U$%93an(Pt`rnr{g7S!pae3hReztEm|)M0f+Nq>Qs#q!foF1t(wmk&R>brrN~ly7 zN0kOqmT9u$y|L!rU@ou}N?z+0`6QZ}Jji{1M6>_?tSKTeGjdvHRgsDH+8o1+%xrF6T zikOF#8#oP^nA3@=tSK3QD;izGK)w^|{qFP(uL55cd0izQJR} zM>~7td>!Tcv3=GUltLA8aq|!%l91>9{rv*l-^}1W6#eiR_&Sm?``CY-MwjA8aU02v zKeK*_mxKt8QvS}!hTK_|x7uUsx17i9)!Wq9yLomRLk2%1Vz#6kzu5luCL*b+G?KQMpK^kdS`LW~RzpHEkxecb{A@;S)BXTYW1<c2?f1k1O`z@Z(>K+lAn(ZGF}p`S*%Ezbr^Z4-L9Y zSi*{YNs+Ha5r(+4t+KQ3p0nqQFFQ2$xI47lPeU7oP1ReLm6OZHt=u-pCL(z}e4PBM z&HBkDAamfWJ5cS~`L{z_XIWsTgqL%aAx^FwOBc2vN;Y!xXXXNazPj)3@+sbIRq3fm zd9)Nm7a%^8SZZ}`V`wR~;L&PwuYCgZn%I9jPnb#|H-25LUb<_2Rqud~j{Zh8o4UDR z!~cAFfILjVqD$dUa;Zhng}imw9Jueo8^Rw#8}P}eE%C(Cv*8EjRQ1tK*(Heq>2rtNJRh*H}f0>m*D&*yJiH7 znPul)KNQjxhkMG&$tiydVoVh@*tW*s=A1p*>>TVQj|(}!;Eyz)=N|8@Dg3v3K}`(} zx1(W$VF*?uaXYPXwQ)h->85mtnB5Y5fi9Zg5YyqiFgXfdY*nKUmJP`Zr7hIZAq}yS zk&zyj5`jm*th1jmn}|N(2ti!Vgs^I~*nA!9-zZ&FAcU56?+ik_*#kUTeQs!y4GPJq za}86Z!NFTASE#98t73;gI&SMo8po36h7US|f>5u-WO!c_ z!PmO$sr-~;*Hf0WF5ZxL=W5zjqDMs9X?@9g^x@dXF(9x)`=u>v?d;d}kNp=3G;!%lnl{`G;g4^OBKJK6L-d zIg>s9z%DBM)>1^qh?q1qG_;)P4YGQ=wg%dOQjpGif1eaHY$t%5KS7UbFgSb#Z3iP# zOmp*Hu0sdM`DdQ(OO~;yR*3;zJs8Sa_=PWpZgFcpc&eU{zlUHETPlgWogZ#*4JnC; zykCzO%Eg+Rn)ac=+GN&1+O!_z3I%7|sSvzxC?BW@-r#S_A<`U-`$zFBjabiMXN`A$4g`>kP!cw?Or6Iv?0SBu}cCx9;ujNRD4$!ham zv4|ONeB5$@0OqeR%nu>_DPao*pR}O(?e^>aN7_YWAcgVSSD~C7+LI!AM*?cp>I9R^ z2IU)ki8?7wd^h+`rvzEWuqi2Mhb8lqDUfm5qw3Zq&p8jfvmC9G$<+pKXes?hZC5-J zoa;VZWg;~|PPKJmJD!U8!jLfsf}1mycWL)6AUT|zn84U@oBAY{HnA`I9bmdwnJ&3! zfUv2bez?{gW$@#bmbB{RwbQi_#v(s|1=^~9&v0$^H-%QpvB^bIKSreUf6A2I1iIdK zVc%3^3i^+o9t zsqey^r6-`=^w1bl~*bwqnPZlpJ7SA2G>%hfDZCrIk1OeJwsQR#M}qH0{NX&fN=Fh?Oj ze2(aF&+qj<#&{vp-u};A)-PIYsT7xrVIYVNQ2NX$`GJKle%i!V0d@k0BTvS(x!Q;m z?t4ZhKAGJNv9|<>Ob8NDYfIATMW|lw(2z4 z2ocr+jPqBRc3oSipj#<33a@6RnhhIvdWO})Kgw~{Rk3lUIfX%lwiEUTQ`wMlqCHko z>3tOv+A*A)7Y-7Rcdn7G-uvRP>637KD5T~W3M$$NqWgZ6J7;FtR!hMB=?Y~JPr)+~ zBa2eyonzw28T)c*6YLrI%5&>UPHRrZ?M29q{%;1lMzYt+A$xz7w2oUUitaEMpplJ_ zTHb1GomXb!ek#YFk}>2^ZM*s=SDn|WBJomS=gXLGNsyKftg1xP{c6I$c;^|Qaa{!m z_;B3F$iTpGl}-6OJNsdnS3aD6jbUM4%3T`m=?E`gwpsp+;@t&NIxgA!r?m{S!}7T} z&DOCxh3KvzIq#99-@yIEWa#Htbc_xD?XRlVt596+DlD=*JwOz#FQio}Oo|>0C~Ryx<()af zWNmb1bsyqvdVnfR?%ce!c3u7i?}_{vlV#FpG16Xr@`>6vqGXBN;Cc)abyuM#Ff z>j-vhIP=;t+dVDPI3n7g6sy%@A(U!&Y9@y6Bt=&Xa=7O^dJooaT3y3LyTC>=SrCPL z3iat3Y7y+0&MuBU1?Jhb-8cwmb@M2QuPh!FqMWSB;WGJ>IjeQ({AB;Z(VQ^Mhpo6e ztBw0c`D*WZv%0_s_@0z#cixnKML$y#j6rjFYjO249SOiT{)4F5v4)MZ#SX7SRx)O| zU`+kX(Fm~HNnq9X!L7A1VPDJsFdcuX&(XpSvusZ-OBQh{QUZMI4Qne&rW;p+_r%zo z@444eCS0&tEb4Ct6lvZlx%1(Av@3Ke>e2Pi50K2@tIp&oI5w$uM@N z%HDdRKu(pTR1#BFmPLJv24B(L?y_9WBbVmGYG0X-T*w+)4!~LBmd= z@6P)I_NRJv#_0k^!q19;2wXg1T7KlBf&97kk~ z6fLG5^g<90P1ww;wVu4rtt^_s*5xmqUj?qy!L*)-f%O4HonEAxXHBS^kER2|$lz$L zjWzo-ro8Rf=hb8Vi^z6m|MA<~hIi#!z&46b%XtO8o=9_XF=L&x-EoHfoqqfu&*via zX{F+4c;qBUHvquNCqbdPEAjy5@^l|?)0Va{>?I6XPQ(PiceXf&0>}@lM@*3Ht~aA# z(FuSEn|j5?5Bx|n?$;XW4SD)OGWFaMoDUX{7pJkJ@h)Mk(7{W2>Ootl>t6vCl}fwzn;h-CB4EkN|`CHP?z}8V-l%f=6a{62TG4uRki0= zJgAmN@QZGbb|TXSzm1FE`~IasIb$@6R#CGqw|tb}+APIa_cG5_laj9BtOscM#*Z%5 z#tu?wf%>b<`r7#i#JHoSq1jn=gORk&IK~a9zR>^++{>MbC`DA{x z>I24<>>%@QIDgX566&lb>SS8xD0m8uYr@X!(ISxY>E$=D$}K_RgJ~%Bg>qu+)1Q zQDSZWqTFaP-kxXE>))-ae3K7xWL}!Y?T{0GVF3UNG+$%i+d8NF8cu-XTk?+8z(WVR zUnk*JHKBDprEa8Ed8ebmZWF%c`<;5&W?nm4(QpPlW?7`~S#d+K5C6^(FJIhkQvb7a zCwckTh7Q-(wNu$Yn{l`KuAlptW^~kqlwQrh3w4Bed;jC`Ilu!BPC*nT(&8{z^6hn& z04+{BX4OA2R6U*OtVV9e2Eb`Gz8)kyh|9i(|L5NZ+W9lzn`VB1wE;wz zU{QPfIV?Uj7dYCBnmm>i=cjd5He9yBpr+z)q2Jz=HZoz1Jkx~%^OHP}??LBtuMIsE zKRLjknS;E%9bq%G98i;+I~%S4vuGHr>9Z3$j62eb&eN}p(pOWIf;mvYj|D#q=Uthf zu$?-!H-4tj4Fh(A-axI3``wZMed%P~bUlQ9**Q!@)8FJ`3W&vzFJ#`=Tiu#G%LG*IuIhOGO*3-LkVGM;{UmAr}-J)3J-*! zs;X(slLuUS1v27aXn%9I!>lx#0J!-5z#F;}px5}!8F{h>#zV-)~^JaTYj#|UUI6}&Nh z>DcP2@q8Lwa=l_KPeN}N^v-YB`bE%Vihfoq!@uUy1|K49GVaWF>)EBRT1^j-o5q|T z=v5vI-V7bnfRMw$Vs!1t9c-dfnJ$ILR%2aUaeg!skLn5_-s;g5UqU6=XI|e=0@GUG zrB-fPN>Dzk-im$vSTgYMiWEfgKX>xT&=Jb~v9VzsoqR(!6=2Vh*d>$QO)0y+w)(`@ zqa?LqiM5nTJcqvWS{j-vIWSWHmR*80P*nh`3)ZImU0&gIE@yGGainMb_UTpuknlDqpA%0h!LdmCj@$0t`% zVZXMT@^zd`W~T&+jhUlPaO`;%2Mk^Kqg|^r0w78B+OkWo<~2f_Im%P2>dRG!(KqZj z!|tzoug-AX9J9_W>JU_DA3S{Z%#+?*96G0kR(YPB%)g-YIhCy`@_Q>?8(j#i6g6aE zjSV);WBC1NCiyR-T1de4wv0}n(G-=J_Ds?zWUV54vL$f69c+6h@KR`Xf*kL_qYLTw ze#{}3@#f1kb~;jo;%QcBiRwH05v1_fuV2>C+n5Lm#%|a;!hg2hFu(Z>ktsdA)De)|O-5#g<6V})EdTPuTpYc0T9Y|gGR5D5|pYr2G4^uN#-CIAx;e_Mp^-C`d7?y6#T_`VK) zqk*0RRb8D;i=4YRZA!4f?wk>WFMlhAH_*k=>TP{tZu3E}np5-)~&;YL3IULH`AN^XlUm zuXwAW=R}haL&hW-3G&Lev`K;C2nql^HB@-}TTb!2w4x1eDTs8x}$*$eN@V?)J zmHpT^K~&=If-(){gfZIDd`9j{*uMdfSmRB(j`~Kz9KAipC8*0O0CAZ%5}Ik>Qq4AB zT9oX-U=A{)`8caa#$tK3_sye4z@u3Epw|MkCGupcy3@}W%mN|9sCSLhd6HRYG1K4s z2;Xo2-;O?NE%Eom(NeSrFE1|#%adjalD%?X$^iG(L*uu|CgKNWR7k9&wSdrr=j&}O zNl&J6XjDJ>FoA9GNSdqGV&^B)|?A-l00rl+b(^_olbbMtDG z5~w_Fd@t+s0mO?XMLzQ3+u_@PA=?QXtqZM2z6#$33a=@ew&+g} zbt%ssbpC)RFa=~|!pfkay&YyJqSXx|xma@V+#@pk0f48z^x}CLho1Qg>rG^T*OzHj z3ZjtJ$)su9>L>UGH52{Rn^@tyTF;Qz`IEK+YC2`Ml*GhDx%b{JYISSZogi;e|E&LE z_PrJIpK&ghQEC9?MUHQ#qS@6776)V5q4x}6xb~x!9P#*vD1XRADygd9ov~SS`{HUN zI~+jyKpJ1$c<{CRE5hn%`-P*mQLmGs9~Qvf3q$%z6qd?fgdUJ%qi=i)-WPqNn4OGU z?-Fzl$adM@gsv6|`fvCgy)JM)VnVaYXc+w&4jvd3Ejq9-;VSUh-meF^c%-CS05ofPk7dMSZ0zTX z^N4n&taF<1)DUilz+iK{o?Kj13uH`CmMz%XUkA0ezdb`=etUI& z+!~k){d^0U8o9hg^`)E5{X{<8I*RMiT%6TB(cnZ`d45KQTLG8V=NHSkVOA3=`u(_k zc`V9IysQF8|jA{8iFSYeFfq!<7B0ux#`ka{#3d+bD`HHJ2Bl8+urnpvbdvn=cJg6jYR zVJRAUTzr)(_2fgPE7@j)v3m#>OJpW^x>PBcS^_euT+iH$@ zgihnNb4Wl3FVjY?gcl(H1EDDiZd@TRevxSJC@Qk10VQr>mqK+xTY`tr^R?>usw+1G z^LBax3U1t2w&%XQd?NQ3C3J4sb9o4zbrMID5MM)x@VV75TXro|P0RZckP^n=fMuZX zpxWJ>LdVBvglmhUX4wZHH)EqoOi2kcx3@oWuBxbD`>gv&_+KtGYIw~P12<_kXcXht z9%3HU6Y~aC;ize;JlNjHz2NOVpb%@KpD`{VGtpcxUa`_+M+k6rBCVP?j~o zuw70EYBX#P4eQyFIU_@PYIMJBnr`*Gr=q#6SSQ@YGJL>_9fS_-lsWzi`?Lkp;uX1U z6s1Zr)P44tWE>C{p#+)CMWoI7qFG4Vy{XXOv7>3;bN}90B z9sofm!otGF4_~#oVW@5)|4WJ~R6#Mngm}7LDs`(~V{>zRi)j;)rjT=}6hDvoe_;<; zf!>D=W-&gT7e+*;MlQ3w5?IYIEzHW{5sPu900f` z#@DjzEBnK;&j1e|fMnnRs5Gdu`+3oAh|iRFdQc;V=&;rXJO$xvGJrwpvMGwj!x2w^ zmJ;Jt+fbCfzcg;Z%oMXw^tDpB?$Y5{8suRmWWG*nf12&Z?Exj;iN*{B@u1cXn^*R~YWVO26NE|_9={Bw!dq;e_(I;xPG*MlPUKSxpsrRR*<6h3F1~HZ@ zssIpB-x16vPEINLw{)p=^k#3lbJC*SDu5Ks3M*!Z>P)KS1g{xz6BD2BRL%ec;Jk#( z^1iW?ivJ6(qBW+&xS%r2;EwKi-UI00aQJxOA+7j!lgu$A1<28LmaLq?dSbwO@^XD{ z2zDq)(0!9L^B!yUUf={=CM#1T?MPU{lvIh+R&}{`YFX_>3fYBxoxc)PD#|S>`5qkh znRFU{oJLTt7cru;u-7wJp;V7O`CY_UF*iXc>1sfQmo!#^_nGqJPb}z6=f9-&PCu7? zJfwZaCUkkB0F?)!&OdU^AaAztI?JB@R@r5vnubipEnsfH0%$9ksvhG2Sh^U{+c>d@ z=o$5^X5y*MsN2sD`9dr9$WrK%h@%=7Q$9#9RJv;5gFX^~_V_UTu<6&nNB~KP?%qG`$8Ly53NfZ_|^&>Z&$?_3t@6~B5R2dX5R)JhlJl;AD+h|ydG>7S?zEP)<*IQZV_ zJL;Ge8({(>j%VCEHCX#5$=amJ*jaYC*j->VDWh^+#HAUlsCNEUbo#?AhTYo(gc>2{ zpM_4BnK$Dz1|?O^7J)G&%dt4R6DUl{FgeKTa4d%mdo0|rJ@Anm{4O(Es92d?D9E_2 z*hV_T!^2%6?Qa)xG$vU#Tmbo54^O9a^H%-$b_)v&mHXRW&A--3RTziA z7nKl8?7X7N{`L!y$o5)LWZ||Ln_6;l1Mw_>*=({JOtUx!fh+0)isso0P06ib#BCbj zUf~J9DU_OI1Gy5FT&4r<%aX~9ejz+=v2+DyM8V<%0eE^!8#CF+z#if5>nD-fed3iS zMh+}zs*c}<`lxdN$E4YRsIsjfyKyft|GYwmsl{#;%Xgy6s_L`91*w8`a7Zj0cm?Sq z^~hCf@C!~m0goMLEJTC&Hncd>nt(F*^W=--JPC6uJEfn*K{?vg)_InN%#KI8Y*kQ! z7SUAM0m%9D^FIFCBNW^8pA(!A;&TcZDBbn#u^!yX?!L%;k?H!aRFtq%P|-C@JTUaZ zk*#?tvsj%CKUcjpSB{|7udEjbtqK+!t;w9IMR4K+Z&PY+5 znV>Rw-cCt6EK8Ao`VC|COuG@SDiR=m^>`3f78>mExz_NX`L}CUCqViDE;pKp1@tT| zejs>bOp%wCW5x_&6K>w1jtza7H(+Q;3}+M?`5C2*9W~3H^q}uS%?9+ecH#>bIlo~{ zq>6jxZjM(BUM~w;VG9mP1i?wbnx1zzw!-lJmC%b2y+caUBbpVsytBDss^#TXBxH%@ z???UOiO8fLn9jsLenqsr@A`|A2Kmy<+G?Kz_!D0K@b$l2#o06c9ncU5*>`*XC|U+= z$v{OATY6|HJUFp-e&B)A;_!Dog~dUObXq%4(tiS%rMk_5aThK$?7mYi%*vL0Z49BV z&Vx4xV^gGVz3zPcMi`yR@f7R@gOxtSHa_EX^%-xL;<2+PL+pbNW{ z+Zf^i)6o(W_a9jJ1#Y#JPE_ideM);xV>!a?5#Fq}LF~NtqKTT(%8S-wCdYy{i9OTW;i?CGTy@4L)if>&K8q z;?#j_Yj(uoKb>^nJmb{=vL}?#A$lxRagGklg(7x+^L&DkBL2(2f{gR0NI)7m4<3tZ z@pk7F$54M2PCs z(oNs%8PJ{q_4<+_&CGMnROMZ~%S-~(&b;D>m;jyk=r}e-65&ZguExub*LqKOgYt_o zC25~GcOhIpZXJtebV0N}&c-=xz`QA}M9_LhPzjCit6Z;%o1zW1<9vmKxiVv<&PN*H zcXnwyG!C5IV|B3j>LwIkj(k^%zO1jm^#|8heHfdGDiIC=KNIUy%HN>UAycQqkPI() zek}iGwm|A|O&3v=j;^i_s3$-U6pAO`1>}B)eE|JeMc$t#4NXX7R2p>#-tEXjE;q*u zc)A_5SSUTo78SIZV44k^aWf|?c%cFz=pVWGkVB6?4ymcRa8J+jk|P5%`Cv*CrubN< zIZmcI2&j^xW?$X4Dd4E{XNec8yvvx5J=wTQr@GZ~$N`3aIoE4|*>@98;t`6U$}t=_ z5SpHtp}d;f)~C%_?KhEAb98{dUmj9I-jl!R1;a?BUodm5`&HstsV4d|i+L7eaL6CB zUeHIrZw+?%B?JO3SWchfQ;(ivD z`>F(>d4jLqEmhMs)C;#Z5rWmRBFwd2$t1(kO2cVRkR3`fpvYx`|T?2$*K=|#fSs@)Q9+A1G6+_&=Y=FLab-v|*G!MmWP zaRk$SY9vGN#C=5(sHie42oEO6%aSKoCodMvv7 zC)F+12r=s7hn?zhM^0^8-I`_tY83(SW{y96ZZ#xTEzfXI_FM};l&wP>X3|OaGs)JXG&Vl7W^L3hlfbbJoHr%<^SOjnY%8o7-##!@B zQ;zxa^gd!)mzots@(fgKqZz){+3tRJZZ_mPL)V$xo2%bxoZ&EU{{?SGDKF@>eQ7%Q z;qJDlHueT`H5)WG`Rf4BkeDI=jmPK=sAh)9p ziGxOFup~I76lg@c( z8a;`^9`5KZYOIW7%Ckb`Y*HuWeF#PEe^U~p3ka-$)*LUUv*k$#?U%TY;f9F|T_XdE z;SvZHym?mg(Upb0x=ACO`{D#a0W`}UUxa@w(i>H){~IJzsuTYO1-G(C353MP3x`lk z7ZN6$g#TU=E#A9S*v4hI(o|-zYS@BuwlI!GpCg`WoZjY-@LH8kRhfZka|+?)u?MqpIm2v|p>lfRpm>$l-|kJh@^uw6;2L4SEGRxX9~An=6W>bIkfBbLYSSOe_~x6^}i%GRWIds z*2cBIdz7TH8oqw1!^Fr_MHfg^hVtv|VVcko$k9$@e~%`*0&SNUZ_f|X+X$27E9Fuj zjY&vrK2_JA7XA~Iuh;vQl6u_>Re9}Q_?lPIkzXr&FDaTG9UqU;99=k(-TJ}ptM=D# zw56(hK3#D&oBFh>!Q!xH#1j8&>~HkDskto?I6@M4MziZBR-2veKp%d+YC_ey92^{o zGBQpWSyGnsE3I(d&JaEg&0vw|bZR^Cwr}P#p{&gCFT42okW+xp@hm^sdT&i5(IsGC zlKtJz|GZ>L+I$wFU+vooJYTS%&VP__x(2Ln5P`4Y;O#xh$M!sG?C2vjj0n^r{2sX8 zB+2%Uy5I`Q^_qgD9L7R8k(`;E#0Uy!{u93)p>updkMLJh8!VFaDe5N~?PZPmNryN6 z@sOt!KAYc&)P&J4X4z2Lc+Jc3r`L&Cd|9U|B>IvehIxU6dlS7NnZf~$H=ETQc^}#i zX>9QX6ZY1_Zj(#&wx%AyrvJgCHr#WjNfOFF~@OEX#&TH7>k z+xTGV*UXV{52YuUR&@m2&1_quxl$Wf{uKE^#s{Sot9@&botv8lZHOQf0ZZQJ87JJb z)Sus-(mxX}Pv}dc~K-X)@O5FGQ!;F*#RV3QLuP<|7w%TpYh- zpM=!QxI0Wd-ZXdf_ou?vyAS?HziuwW(yVgUq{d`p>u+nAPBh-OXV;F#+CbNvAFOor zXo9qA$l&s1tr91L)QTxVhQl4HV27T+YiPVN`@M?%27kZSlhnZ_2EV_z)>}^o`j+cf zSbrdvD#EV*@mIS1YsYbKN;r!p3bfnjvc5cyN}79GgPnQwRSF7SmGj)M)Se?HI~+&H zxCgcAm&PT_H)`iElKsgrdj1$Y>zILYa6zhsdsE9o_*kl+%yVx^MebDdrM<+Syr|*C zZO?(=ImDrSLgUe0SHRHw`qiUH5is!K6W6aVe&tkRrcGFIrqf?6LQBh8%W8`h>@Bca z)OhQxNRwbgkuYec4cpN6hhU^C8BW?%{}dg5s}UjBmPgku=k2|eI+oB%o_wJa27|%n z6_u5J#;SIkJj?*9u+rA2R!PwNkrd69QLKLX=L}(2TJ~xkQ%@hN=L44l@~jIZ#>3R;AyV`W&dcsM5bB2484Jn)S&8z3cgvjZMH& zCZU3HD=IH=@!iafhFh`@x8w%EW>OJk9Dbon4sxo=nKtyjNI$sNH^`Xpc#fS9k^IMf z(#TR#Sz*3f=3`k?txB2kM|S__iN|`%=<#-Er%swJ*hDUxP2zwK5u*_YCgi^YL6|&{ zs_lYJ*$4)cJ=B5!ClvDBQ@o_DgGo)jVrXPEK2Lh*+)%1I)i5Kvx}_O0rPI2M>6o$e z==i3txXC&4aB!QsSW#M`@};-5vxDGia{HqDa@=-w{=!xtmlwSqlHl-o|`W%-0p}f1Vp^AUdco} zJqh;9TAmsTyxD)thLNfj|LL9>11P?=yXN7kz+Qe|P07CfKLD3NXundVWTnDzMGUS` z1UDdngwEi>wQ=`S>q@KDlIJq=O@`HgX8RgF*T)Q_dDlRH!OrD+yx!ivL{y7>`RQk$ z`B}$t^=LHW(aZ!@Q{7^**Y$~!rAj5!xU)LK<7#9IY#~-_fgBZ0)rrxQm~?_$rDpjWkAL~ z*q%R?-{XPnLMz?tRt|QFQ_k~d|AbjM$~UTnb^U%U)GnK-=vzT?oJ=oNx( z8dC<`9>~u{w!MKib5nzw+vMP`y}1f8M=%C#iz%(E#$c^jhRd_7P^#f;;=h4L#>=8a z3@kClTz~rX>7`{51%SI=wRKMc0J=z(a^*LWLq8tTB7ehTWhqcRIatEL|17L;!d9gY zBk2KXx9UjmYY>SkqA1W46Z(jq;sO>|Zcx&Q22sH0pra;bC=)l#mBlsq^0Q~);&KTr zN)ad#-gxB5b=8Fg52FA`M%bBi1uD^4)M{wb_l{_I;lfpZjldrxW(9Ny6N+eF4jLxF zs`Gu0tGbS9d+jy@f&}K`zQu8B&}&g+iGSAgm(@SGabkmzU9f@LWTH&L^gDWMo*WR%>dl zRwKsKx$nMvf1p~ceAD9MLUU`Yq#%W_Y;A45AAdbf?RCTgnAI9{r!Kn?nq5ZYbrh{z z{1=#?FW-mP@#vlmc08WBqKYsrFsO$cv{YvB91g0}aI zPrM9+eS=Uq*pIJ?KR22juu=G=Gkbs_hSCdW9m?yNmY@PY4AOLD5=cuxwD=)Rz&E(Q zRYs<`1Z~PtPysnN0gBI#KC4(P8mm?-d&Va2H2|P3%`dJ_j!vB-QJ`|Q>M7_EnFfkz zEY`PFtiZ*Ebr>HUfm}2LhTX!8>dBe^8dLYSEnD~ek&&eIN3I<=gc8HNzup703v2M$ z3zy*3^-ZW*It%@%NH4_{F+O;*CkY>Y;4n;$k3vip0uybd$EdKRRBgaUxh`fD;6Z8{ zZD_Py*0{E0%EIx)bS&3Dt=tyVam-v}VDq^^evQC_=5p4+L6m`jfL{xsNewRrUDLmT zR1jAY{FL#K+qQdD)%0)AWOGWsuMpQ%_19{Z%5UQ1HD#>ly1^jm=8HcE@ao%7HbNd%(ufo^P%)|U<8;G1I>qg+Cg%ITB#S;Af z)8`-_yBCg34ny23L%UHy2X7*n5Hnh6k(w)kkO<9vQ9agXAsgzb_(o!B*ubd&@;phm z*Tm#jz`sXh7TBfW3mK4KM|bi+10X5{0PnU%G|lMfsA|vKP^^|IQx7Dv!^45_=bPmg zoWC*$$ET*CcRUZSVPTHE0r9xXmGur)54!&D6;q^mh=eBuCP-g;3)2gyFI<7M_&n7% z0t1a6i@7e^GP0m%575H>NHsA{!-iH{3=k?e z8c;`CztU*JR;dE(#S&~5i%_c6pk>(HLqNZ02^I{W#|1?eBoZ@0g@a63a5Bx~zeN-p zFp=SsCN`;NmCIH7dxj9Pf1-@fUvJ=Mx9oj*=lA4$a(Z81pEo%?o@@qsGZ}RD8R*L-AdAjE6N?}ih~U>4BoJV* zvMNUSE~XgDstIF52}q=J@FWIZm)5E@2oQsy7(owcxCT6b{u=bhsX#FfhX>-I$J3x% z)lQ88v#dPh1vuCPRs!_IoPT5!9AtHu*4Ne)sh|xJw@8>bcb9!b4CPw;k(`CSJA@zlu zj{5c~izQsBm^H1iu(03K=i2bA)ppP8ZMDfdGP*|Bk-~J zAA^a$C@A(OXpSKcjH5sl(Pk#1gA&L5QcnaoT1w~=cxikMJZ3cM%CZq4IGEQr5g?fO zniecAufp2K78GkHY@rih*lcjWYTaxjEk=n4l~Fhq9a4<|y<7|rppHnuv2D$EOy15a zPfS#KAR()3aUQ~*z|_Y?g}_F$4IB76_zUB`h2E8PI<1PSbQk(Ds?VUqPbT6pIMl~qlj!VY5z$o@)2S^_;aVw5vjW|m z3fEBa&9>R{rqD?r9mzmGa}=Mq4eHk}!PPYr>S%Atc0wcp>kSkB?4@fE$>Qrgd>Dp$ zaxB_Lvs_5{kL88YM!R^kTrup8W(n9@4D4tQHkuxsnLz-sQs#~^MN>rW79tJOJD}?S zLZP4%{qK41p0RCv4FHg~w6?UeSUfm&=w+hPH;Ws1!6HmkshSW4TCdsg@|6WRG1(7? z#`+MgMw#M@MBUEBCn4DjLIi>jfX0%N%gY<^{L5G1%2J&vdqr0n`4R%|NviPPlhg2Z z?>`9>!v$6obmgdEk}K|vqx5KlC~wa zRnhiQ?>!atxvrGYr4c2HP)SiK~PeIxd9HhImNn$0nrQRufTYZ z3Xv0sVK^Q|`)dJ6E9l#E?$9EQ7-DTPrEB8jXP0J?(OrVgx{LsQHA2cOYdVP(eYVwV z{wE)6g#h5)yLe+)>y`iNs&Jnkjs7*;YP$$-RfmiF6fkf@oJXqX>2sGMgEZ7WM2l{# z%-YgA<$R=~6x08-9X+Z@NkG+&!%J6J;Q7l7P_@vhN22W1b==J9hyxEE8icQZo$Jccj1h^jM6jas_rVXm8A~it+F#3AZ zFp$r|^jIF$+!)jh%(un<3@%+hi>U|?0fG(bL=1)p5!4`+(QG#GMjZn#4>5nq z!uc&Nq9F^QD3&ee4=J)ohdK@r>3gJAg!di9Jla8u_-pkVV7`z(o&Qnj$yZYd>Gw}h ztu8Ds{v)&9UM%GEF=P$eODn5Yq8)wv1>4xlkR1qDxL&8z7Y9b3nJh-s80GiW>-9*b zQZa^yhYk%64*uNc=4Nhnb;Vp*SSTzkEbVv5VY?2Cl@Ye57B-^vF;YPjh=J=O^Jqg268C9YfcXU& z$t7SvGOIBRez^F~uCv`kDwK+-M3)pfV2;8auI^V<(JoE4)YFCPo+G$={258Pt6;UM zkk5vxLI&dZ?T19W3aV)!6JS6cQ@GsjjPLmT;u>UM0Eisq>d%VyG8}PK-g4`u9DMQ9Afe5IpI! zEj$=kS61*bS7Ei>;F-}>TVP{U9>a}#WO@)j{-Kj_Xkr+hf19TTrZ8_rsN1G#RpiK# zX;8V{&lb}PB_lw22W|u8u7AnyNdTbgDi_bRYAqnXz|oO2h^8PO(_ww92#fOzfOdeN zi>SAI?>Y=0`^bl&FQ0{KtpZz{8?d;zjLgL{V1xi=r1@)g1Jetx?3HzSH%kstwCM^@ ztGdLe|BkUWfB7e z108;9etuz}%f-t!NB4yBDQF;SJ{pa%(jKwa6eW9ptDS5y@(YW_&qVMW$DkmIfkZyv z1B3kofUFMx8%*?SU5ZR)IxdM#$rXd%>lxZ97 z9NHJs;}=tVU9Pd>9)EJ96oq42fpi1fwk665q~qth0uc2EE&>VGV?iL`qOJ z?}CCFeuhv^| z{^~lMzcLR+w2KOYB!%mxY-VKX{iM?=cYJ)@Dwm637{;F3b9)j1kozQU>1w(BIb?5+ z#NzS4VYUqyb3UvL$T@f16f>($_}VE10Vx-bO$@S>BunoozMJyIbScc+S6dD|dFle3 zo85vIrW7>HV_8VC6TN=~Qwbk`_#Sxw(`CrqN=^!YN8Z)DPHHxldC8sojv2 z1O)!3jjJdTd<~Zwc~9|)I0)+hLoyacN-PNurXk|#0#fxFoIZUSPMx{Rg@iPpU}zu> zAAj^g_>OP=IOMYlXw<7b>zbUjVYFa)m~ z!>SyO?5G_dEypRl#1K$-1<`qqMeln5X0gOw4VSN6na02W;80(01V8)dkq!6}+w%-$ z2J}=aRWFuGWdsHCwDa?-fkMI%420`Wbo$J?fjkhpreiKY+lxRtl1`3$lllSk@) zY-9kYrzT)>VhpAx$MNd~3=H-|IvIl)73v`{h#|G_c`Ig9+YSfbZ)717r039S`{f-(#*VhAWysR`ssnx0b?cr(y8 zI+zwsQ2QaWnl#CEGLwQwkMG0i-T>=`YjAC?3MM`$6=_$HEqD%70mHdCBp$vO#-oay z|L=;F2Jx>v6i9`|)iON&{CSvPt+2j};?aO1LMJvA4Z5*toNV8(E-fwox?!-*+Wqo> zcK`rj1h>4nP@C8{b=FCxY|}7QQR5=}QW51DxS=jwUxHHw4f+dt80<}u#1C&wkuw*r z*hQ*ntF{HFFI`8v$YRMzs*bggf-2+_@ZJYbzytRjg}7Q`8Z1U5hHj(;paA9@@F3l~$ z#`-#}uCDSt1w!QnaBP_pqk%+jN4`sxB@nBk3K0V`LWC5MRbaz{grj}d9UByO`aJ92V+YsO^APZW0KTSE zoe?qvi3AjKIT#xofkAZe2hnC6n4W@>p?(;}NI%E51rdzAF;7nQOGv+q^r!=^N)=)l zgd90>0zUfnABBsTufo-f7od)5fU{S(-~puJPaGHnbe>?;>#U^8`36sj0tt526;4@d z@M}cL`^ViC#n-AQoVA93fJp_*Xpac6kXDOlwxB zR*MaI{=!xK`-Wk7Uz!1x82ICMMgmvS9$sHu!QB5MR1B8`F%XjMoO-23t4K6vYMORt zd3mu3f}02dz%E(rzgx}bujJCHd+b*0yX(!S6VX(S+gNblAtZo>rUU=K^JQ2_mEk)d ziokS#0uuE$P=g7zzN)b#l$K;yLSYJl9=yr zS9m6MOB34Go~w!67l__h%@Ze81<~KCumWLQXi-xOBKOE*E)EZe=8A*jC}OH04I++Z z2O!$N56n~!UVP~}cme@H10(kY9@O5x9{84T|0a0gJ&&Lzh=UhTKr%VV1vZXjqCsdv zB!!0<(-R3iOu2pwMiHr#tni1?;kT+)D3?mGjA@S9`9-*PeFm=1EWqlP0WC~(P<=s@ z+Ymjly603*TqHn6=tc-?aMuJE&%ZPG z8V#dqXjiXaA0_`z!*EQhIOZNDN0`~VBagu1wHf&A%q+AK09?a#lkzy`2Gzg22ZbhU_3vEseozNH`v2}Rs)%eSOnQoFA9&JpMyVs_5v&#HZ!lp z&I+SLZ$q)wXdDx+>VHA@^w&uT!0Y6PLjbUA&fM0gq_i5oh`tu-#DC`c&C zCCc9x(Snjn0p!wPj|{@W{ZnwV(E`jja=T%r-h>NRuEE06Dy-wb*Efq$tkyAih6k-p zGN2x}E{eI`!r+MFM&Pu8LsXt4Py*=?P)Za3Gf~0kpy^-{Yy68YxQiSbl27Wq%L zO67AsJv}KrZ;J>1bZrE4%#l{T-Ot+htYc5Uh@b;!$W=w!6|QBXv&GX!MQ)p<%cB_GC*v`U z;Io*!&%@B*AoOD%e|mfXj!X?eI+KP%Z!hHX1^hmXw0?ryhbb-Uvg6l8?GZ-I+!js8 z4)2fX39ezH!e*5R?ug>Ok?{%m(1$(*U;5L>;KdhC@%x!UTk+(xFT&wNM`2)e0;+3s z$O1%2O-J&Xs+g`ybqbow)BYS^yQm|L?$1y4g@i;WmMF~j9l$j{L+gMwJ zFMO>Cww{5nzi$AB=zt`Wu&}WSUp;*hX11C_^uqO6@Mokq3lE++2uG(zA*(eJ6c7!b zlaiKFLfB86cUU9O-^qL!Jc$MveS(z4R7H^@69Dvjh`iN!8hVDuc=8}1#dYoM6?p!I z7cs}*W@aIU2l;(?2!|2byVRM$uM_9Tdn^isDGN2p#fPM;?OHrpgMk7KDKeWyXzQX< zHj009A!|d=Krf6_3cxnu!3U0UM*)F?4g5S-@v~Z5UWR2nL~9#GxVqeeYLik1Hvc|F z{`419go6|&v>mQ!WTV2z7I{ki9i`UbKRux+=G5i$7wL2Q2Z==dyYu-Tyifgim1_CF zOioRvF`YAW`O?*9z^F167vg|$y~~|`hvFw8uAWS99)Hj~Q0V`MM#}hWc#i64U%b?B z*jB`H+&*?b=+(I=PgOmPn9){=vm?AB<@;?uw?vCaNyc1{a?xH-CI*wEebC=m;5`1= z=rD{74j{ch0DXlV#M3>XCb(q~qOlmKFe%!nT7L>%G!Ay~rbam6P^lPBzAl$eyE=md zn=1PWfZ$oCG;16I#Ibu%Vk+R17%0ud*474WR+{kDXI_H$f9NAH@}7qvLcRDcWFp%w zu#C0<5u}^K^$JwwPx9z)$8L(?NZ~>~f;Ot0k-}qvJD&yF7y&1u7~mY68bW3=0_|E6 zs^?aq+IIL6?Yad|o?C+K@H7<0hM?-!;kj#P;HekR!^{8w_TDpEvg|q!+c#CNdO4@= zey?+!>6t+wG6Vsl2%44%NwoiP*|JFahb^0?Ns%H!QlMxC(-thzH07nmMUnENmW?Ia zqG-bq!pr~@yQjNnI=z0~FXwu%a=yXe-sjw^>YfHb(U#emuDhnD`c=MF=j`z9y}$24 zma6dU+~dV#+|rCKpo4FwGMQE^n)s#7wUyu2b=&t`_Wv{l0OECb_xD*D=;!2wE$cr+ zeLK!ejO%G!4p3-XKwF0{eeKn^iBJ~!==(oNC+0_Kd3RB!1!_#K>nO>}!E}<&pFWAG zdWsT!8_%?8r1-e*Og-8X1!Y8&5`E^su4kqGF-w-q<;8<+wyq7W#UoBVm(x3*6yHw@`Dzc=OiWH@8jZ#=K+h$hazF05-j7|q zcFpmFRtynrhV75XTzisrBm74i?!fUOlSh)>lIbIM`pS0saJVL=5^)+D8l>@&VX4s_pb6|$Ej86dI^#El z2VYw<{DXUYI9nHP5<{VV9)ba$g6iw*r%!$Q)AaQhU!<2_K9D;5+D?vMd;Lwic;X~Y z96L^}tVz{!k$jXITV)?6vnKrnPRK++9reGk0a{4d1eMTz14f&hk4WnWu)*^h71&{$ zj!uoy3ztsQPSv36OWRbJUI>$JujXk1Hfn5igf=$T>8szmMsF`=>5z>hz5^Kv6lOq@ zaq)C2)9Onmf4Pv){z|D>@Q5CgY3T(3-*XWFBDkHseHTUM&m+4$RV_utiutr-ImnwmpUyUNGy|6GtAA9a19T~z#sukdbOL(CO zqUlK2;^adsVHq7Lt8-u2?Qf`&Kph~2kMg+Lg(LFJ07VB!ktSv~$_CX^4v~9}c@|NSY*928$NQ#fbYw(2doNz7QMp=1FrW~E?X9fz5v;E7 z(Du#&ZSIs&dvmGYV%lQ_6@fZ)?mp(2yXo=1W3eS+DCDt8ZrF{NO7-})w{9~O`T4=2 zf&Y4Ra@>d)iockM$G_rv-s;xYmPQ3wghWMLJyf7~{QvItRmLAWe((IbGie0Mr}wi5 z<^F;GA3>o0pO>3k_5J)FDu-4qkXkcm4C7T8i{8pnHbiOQOQ83 z5m`CfKuV&4A`8+gWzr7K_Jrs0rNkFe61yCvMB)GyeR<5u(`V@WKKx;N`{p~8J3OQs z5{H*we~ZqZyFh>C{jC=5;hbJs+>$22O`w){AM8^JPivXX zoQkrBjP~17n}|hY%~Ue^5AucFFT+oGS`h6$YgC?!006%sI|fcan@5ixy$Z+igZumY zcB9c`|7iMrpN8CdDehx2eFItc&f&gn7-8bqBYC{J#z%$#vrSSeR-tFZ)AYd)et`P=2P8T-JhhpHT*D8QwhZaI?W(3}bwNv_Y@W?+dP>BDXJ)x0*Aya5 z6-dMeq7=i6nSl2R=z!m>11vyx-(ZBGL5}ATGIZ)67@}E}AsUFSim34yidEV}iD2>G z3T{a~$f)J=gh7W~Wc*4>rxjX(&A^`d1$3H=DzWzGB^x`+99Jusggl)6*!QSwFSCz2nsJLt9$Y#`mz~5EVAD-m~=<%h zG-^|wqjHTz`B+fdy?yB!n4C&VS1J=qIM^f+=KL4`ZZaLAa1DgDtgth{3^diIA5b_D zCxUOZ1{&z!-gkEqd^ zu=v0U24~r(Dj^2GhSPKy61EyDB*0N60#X!LZSQHs@HsqT?UFNz;PqpMA}{8C0gva2 z>*Q6p0R>iNqJS@vq)SO;CFA%ECr%K(aQRuv0Ug*w5U{niOKS)O9-xG=y1YT_2nKc; z>cscWMuR`0O6N_(LombV1rroBTU8kuDwQkITX$|pW3kwO+n34ITaDIFCll!_Gc(h6 zu~>M0YkMn%>`ZzOF?RKiC+-kNIClO(!cqtXPGDbu5`X{vt($iv)oMA?Xg1@@{t#<+ z%8CSFtsC|O%{JF54e}i$gK7G}rQ`Iz=PuF7Ba?vjME2p} z@=T46pvN;k>9;D?T&n4btgs1NUJunsre%-Cqvk+=`u{%2<-ZU*e|ici%%6$?AUv3j z?*7V3D_<=9;@I$T5Rb<`>ALQDB#ddko7?XUskbTSz7`fntJWYvhz!-X&+K{k9<0-g zue?EYZki^B`^Z4F&I{XU)g)T=iP{cdhad{(*IIohg?V^)-OC8oyo9KOBX-^}Q9$ix zG>(j!=*_Fw>F(k^#iflm86F;_XP>!*>tX3rQN8wtmfQCACO5<0`L@Fk-?1H62dec| zo~H%AM5mh(1qm7~J^$~k=$X+3<|N>tgR>3Tnh2tA)=}oVCD-$LZrBhq50d%Y;jw92 zI35VqXdz#rt<5dk-`S&=ufIe8+rN34IUAJzw|re{;|m=}D=hc>g0jd2F)UBLT8-9l z!H@Ib4Gs*WB#|k@(EZHJY~*^Y)p%oPdz zP$CljxsA=u*zSJT5nhbIQ;Z*~r^jH9dv@Lym)w|@4);ZDRcmKwDvfnME9k}O#PO5# zmp=2CY5vF*oNWghCl(Mh!%lr$)$k<%h%oa8UMr$9d*Wt2HC-fx9cGu}zNYd}phL*~ zsZY$((@REMO;}~%f8rAzdcuYOhDZ*TvAUO@ox zk&k_ZW{=F09k(bBo7PCCsg`GPAxqf^U#SR&fe;Cak*690y{0tiaf4!LuN0RM_gpzZ zRif0ud9Usl>B>9z>E-+T^k6efjixV_)-a7Wejx0Af^vun^i6#6KtOYmNaXh5z`*O- z?7siBIR9`lKW&Fmt=0Toq40Gqq~Fb?k{R6eftKrHY51;f2CSc_2zWFzU!d#dAu&Y* z+3M>0Hmz-JQw_@{(m#ZSoe>nkm(6HP4b4}(M;5lJqgkHww@6a~1)-X@A(X!Yxf#Ba z){G`-WO9n)lgFfiXLWUt{^{@jb9(d2b*aH|H2;zBdx8GOU;kkm85@^6KL4Di?zUGV z9!8tqSj+!tqd>X}pkO`D=%aYw2$vo7-=;*{M%aHt?eRvA%?*A8pCd!`tf-a5`={|a z`|tt-NJ#qeeGHP5;OjoJqA8K* zFNxrX$0)ppaEdGK1fNMjq<4^~s#L?Ip?r->WLEdjz8NG#_WpS?tr6XQU~3Nl*EnROkJ{`}k={e@5dMH-noBG90Py<^2P zR0lXVcCA7u~z{tRW5Ds0vaurESUC_l`z975nmCM-(S8(U%7IR?x6NxYWX7Z8zwH|{&g8wiKTI`VqiIz)rv(UzYfIaM-Ov{ued@? z^z_(?rwRek2X9aVKXl+R$E|7p{OHIqceVdysaUp=^~;K}Ei7rf6D zu((~MQsX+U?eEd~`6G03W`YL$xdRt)oef9c0Bj8h#+$@cX@HP*a0QJ8CrptNR&%$W z)(2n%VZ#Y}OvTGJJ~(p^_3~RcZqnN78VrReYq}q(!>N>hj)gq*asc7Lq*yawb=|fAmRQ91XWQdxH_&W?<6a?_NA zDw09eYgJ=qd3mI-FY~*WZEcd}{M^L!?A>BM_pM5~B!)Z`A?Tq3z2m!P3aY*zx|TKP^&1>LWqHUB$y#CYT-wUz)A{CJ)~_dr!?0nYv$%91aB z^P5zuR>{g4bp6^}^!^V#Pje`1FghtBXUu@gB|}G*D*}`lSf1Eom>=IMQ~&TpQ#2YQ zwz@4(3H2D!q$FAg6_>WNhjiu6ZMt!1nQpJ-C|mJaOHhgij8wAimB z@p{YUt&f$;J5G1YdnyUwDjwJLT-2a)*(Tj9tkcc4GTole(frIfonDwlgg-!i4(st( z5%CuBeALV>-5SWwm>b`i1jAIE0Nh((1`38_t|IQZhXs)hUoY3_^;ce}^_2}x@?+Ae zg&BJ8@%UKhfH9;9s}x_7Na`^ zFnkRwM%uFtI!V$MJiq;!c+$y^II_Wg$C7#E!@~o5=gvJk*x4r@ed2oLg;PiAKlmG; zrP=98+FX4=OG_)Xwzf(4aqbV6cW7t7N@WBC+-NATW%!KiNkbG6nt+?C3Z=49D3m87 ziTFQFBvR{kB=+~`jtt+;=W;I=3i-A@)Fqc*AkaG=b^NBD;r9Rw(}@!cpIKgBiNaCL zBHR6?d_LDNESIX;HZY|$1yo8a&bg=|^QwWB{r|9yvZbkvotU?L@Yq36zHScjd#4Xa?ZZqbzx6| zZk;o_n&$#T!lA|oSKmcBO?KS%7M?Xk&QzHuL)a3_eDfPJ-(hWo+*bw2gFk>+klGa?i!HJdFs)j)OZ^6T4{KysF5@>0xUN(xzZ0Q_HR`yJi@T;E}=EAY}0}M1(}DhWKo2>l?JVco)cFP2j)bp$vWS1253?-}fO(ClfS@ z(#F|~FHrt4PY)if3g`I!rB%9*f3GZW0$MCmu?alE#ka}Y;XFHSaNmHEG-}qWw6$KI zaia0xNyK6sc+}4fkB!yF$HwG2UdK7W+XpE*V6&mr4CdXxr+GpK(% zK(B0ZoIFJ{i~!@}#S8T1uYQvXg_3A+?(XgY`C6oWu}J+06nsx1T$b5!=nrqNple?~ ziUerCCLRA?*!%YIUe?Z7Ok9{G1iC3Gd^N2csE7v@U%nC>awQmG`f_d(3;@v$W)k%5 z#k2JC(OKHc?g^{v;?go*edA5~;0w=ECXQ^s)s*I9TXkP6_}|hT1ROpEoXOkLNNq$j z9OzTA1$kg?I{n}{D&Bxa}6X)m2h zf3Z|5{Js14m;7R}Ku@dl?*#zi(#B%R7m5rix5~BJ-!&{VJ~A@&v$bGN!7@gYOfX&W@PuhavE*u<@e zLxVPJrlvwBO(5bcy>Xs^;*S42_wK=wKS1{H$)=s3o2SdqU#5N-#U`@+czTdhLs1yw zF&Z12qLU|2(cbnhJ-C0L?%cdfD-V|G&gvFz?&T?8sw0qS@O%~1j2bO5B*=Trh}2iN zx3;G3Xyo@&nH0W@$l}cG%x}b^(YtGF>n|Q;v%T@br})snJuhC5GxO=`$xj~~9G=2{ z`e~p>|{55&)qSpmWdAY1F*OM@Iz~H(5vrB`{#m zGOouh^o$&&QYkuh_7u%bk76&Z$#ekM%$Kmn_YV$ecK*1q_3`#}By{%Q<@$rJ_(gpt z#V*?YNa5M&4j{r>K+q}ewVQ{93|H;RKs!>Obc3*~Is;`^iGu(+f8DU>aRAVwm>r>0 z^Rx8q`BU`H?c0dNiK=Kc}Xq z-#p0f{VLGM?yUc*?G1Vwn*hI^5s<~s&a~xvUZGI@Y9f*RqoJXpLEE%mz@j%1;rgbU z@-y0{LEqC|>nfY(+v`}+`C^&&k-hI9WO03na)CjyL`s@scuv<41VGURGo>eQJkj3w zThblOql26^?-X46%GX|`8-TfdcJk8;G$z;Ju{@Xm zU6;Q-YzPieIC5c4Y#BY$?Y&0$xqWr%q6N`NpwZPQ@bHYTsv~M>k-}z4Ln$6=%FZBc zF%J72eDzi=rCcnP>0kfrKcN@D`ZeMVDv`436CeKo{iV--7UwlgjjAWjO|2FSp_qit zO9KN#G(Is#QG5Mq@qA*}zkHgw1{a=;&zh?6c2)x>l`z7AxS_^ZESe zwzjsDumw!ZYv=$$21_h>bG3JfQmF6G0@l8K;W&NzFMO0f_g8;_KK!8%(1r77u~wDy z=h9aU*YWfKMN`8RiKWTn+CGciM3M;5leE3LL$_|C2V4tKC3AzN7@7ThE>Z39A z7@^U1p`asO9y~lpAD$Q^5>iudV|uDKE{@+<5WYBco=o5j9#B4y+sdSZ*b7(o4a?(l z`fqT9ve-QRHz|2@@@lgGOtv>}OEd`@HRj@9rro^*Y6|sugO1=knH%Y&*5M{q3t5VI z6)9haZAg-YSdQ4g3SO4S`QEy}L0`Xmn_j$nm)^X+PAmHrD)U>4X)&c?ndyR=#LVJy zh~Y~krh%fr6>(hD`v2wh)YO+M<k+Q9tOS$DNEp3^aIXJ{Gbo5IHuO<4Enwz$R-T!{1ujA-}G8uai!ME}S_F z$2UqaRwDSrsDgCL7OFH^HP)0>% z5n-P3ut#jS9q9*nrqN|jjZR$IMeQjz1CO_ym;_1LY@XKFw}8A9$b!>Gphc(8pP^yY zMP1bREI52Wh#)w?$wb+FRq=UH*K=GN97@wbVuI#p({$qaBz@@eDU=6R>E@k9x_bKo z-M+U;*3#Fxe;Wud*{Z7M*c_N^KQ*ePyIN8fS2lxMi?0T zy+GhS@BICEJWj`tAODMh`A_cc?ft~T;o)3qwIqU595tGulQ31+Jn{hH*hnFZXPE!l zvkUY-pjH>p9jDpZX&UHH3&Iu1=#NC9`kFx* z;C(dE_s5h+Et?zUa{Gsr-_McHFGv`JF_Dx`PQl=EuP`qX<5Ak{y0c(^bI$5)OxZA+Sdaxg7qTpyP8BbPR#| z4WM-me2;tC9KHU=8}!V=IF0%h%`VzdBgNeC$4!X5RbiVdwFcc=-KE?2_vq_OS-QDb zphBfVbtXDvofG+(4KcuuCJi!0D}e_t83Z+(6pj2Jb}aUGty=rF)wR`Hv(++K8;06F zj=k;O3jiJs1iE}4HoCEw-LD+v4u5WJaA=^fzyAjCq%*OAK37D2uIaiQgc>X{7{b~r zOVIQ8yhORH7g20+d4o20_vrq{D6Q=sr*jLlG=)ew6H5Z(;_)}1qAaxG0S-g05gt&S z_q~;U+Q}mjz-u+}W~1YAn!?3t9SZ$$EIP~#ALN=%m0^2^XdI{@UsGtBo+tv6I73(Z z16a%hWii=sK0ANb%O+i`mlrux9Ab?El>ALNG(ox2^*Rm zX=QDl?xB{?`;j@yriX{=^zq}Ah{jnf46sNX8G}iYq#7|YSZvAV^8<>4Ai}WwD3bPQ zV$`LP+2b^QB2OnSuG6Wzi*)VUb!1cbXnk{!w)ZMj_cfoop+-RXv$=t3H0y4#xv}K~ z?md%AWxm+oKl*#|bn?pj>irk_bGv{adS!w4))B(}eVL56uyFh{aQYYP_4?n$8d%8Z zbAeWb;c}oF7jYFiji~Lx(+>7IG&wN|c>e@lJbxZF{?jx!H$(k>Y2nxx>Rm3uMWV>` zV{qP4ndFg9AC%v0>3~;z#&N{$$wrx*ouTQeNm^N1mSE$sn5V`2i&Uu;sXrbQr_FTU zMqsv^c|&Jy8eKCus(Dd6w~*X}I*wjA3bYn~JD^u{{(4TX%?lFlaK5?8XaFfBQNEc# z6NE9D4`dEStpa>q~d<(c-P!G<392cn`Rl zH$XJhWHwSGMitk_o-NX?rFFV`^FG~O$<+(XeYUeWgUUQ?(Ge_vt6L`Ydgpuj?>AxSsDYBKNHgX_jH*LP7?;`6VLCE7DWBapB8-hF zc~XnBjFzT0#b=>Gd0)>^IgRb@lZBvR2#7&?sE>{>Ow$K1pQgLF-liMZZqTc*-Jy-$ z9PJkBD3|!6eCEsZBiwjoSYFF&)ZCz4JGhiiXD-34y>ayTsedswJ^sqeU;WxQUDxfQ z0q+stPnxfvdt~6mzrRv0{}%S|-1^44@}3Osb2n*-gat}+mb>}6zCVtD{X@^p(S-}= z=-h>8Xkv0o;C$(^!5Va;39@4eY!OH89o^IxGXHTV9@8v)jLJo9rT)n}`ZLp0G(Ufg zzV+&>Soba!f$rU0yiEs%0~#C~MOl&?<`NxdK2lAGD$;kwv9nN@Dod)rJM4MBFx}gp zv>q$IfB7~P>sQFfAB2s5y1daDS>oP#UE<>s8cc@&*QKM25 z+f%CHT;mx!JDQ;rV*_*(B|qj4*xA~ro7b+-5&*9&H|$VV7(nB?~m?ziM4-wF4Jl^(C52nwG|Igm3f@W@l$_ZSU;-qe8J%*Su?f zSmNy+y#V0P6bR_W!y@(B^^MJ67#$uS@9)dpK=yyW(QN)TM4NoSG_4}KHUr(rB2L%P zHF8D?uwr*}C92)HgA8?>P9B+}lk;g0eLnQRBocOse=)K+#F7yjnVdjI-v>0p);$E4z^8$!S-%Zm*DigHIC#>r>>6(W2q`|nvv(5K+weBQU6h&MAk_Zgsf&+TWk|6!?AoWtIAZ5Ey2 zm^e@kt^)e_o@i|hBd9zvf0UlRaF$M=K0&9?%+v75FlG7%P~T5VNs9vj(~hWMnFDyH z{$~AqGgPSZ1r0N`&th zca2)LIyDiTc;!5tJw9jo5C8z`_>DX@0qHaAXDpVY7?bcc$|%*@v@kbG&e{@rNW%}S z4U|K-=U^Hjcwa__xqc9_n+OF&(7Sv*ylXD=k(wr_WTOkxjd*@ z_m&-q5aF$agl5EhDm5?&ca#5`@uS2szphhs73Crs;aBpP1d|Nq%wN2;@+y;?Q{4zj zC2Rv)x)^%gcH+*cM=nqecx(*h3RE^x0w?j|u`f20WkFK-Eb|odQ+b8S=`F`kLzErY ze^=ekb5`AcIH!6j8&((nMg_j&H6rqqUvNc&dohhTPq7|drzr~S13WDb_CB!`sd{|v zkIx+oC`jKfyX~*|U8OK{A=UzJo}v^jQIG{x7*jv^&t@A-RD_=>Owm>?kP)##Dl}fQ zgr9?hk#2W+yzbe#-EPW|fnyog@aQbdmMztuPYkkO)*?M3pvMYRW^+@GQ^qm84TkEL z)0Xz%jmsRdp{DL3D&W`eFeULED-Om zlOY9@4M;vwLib05>gc=W7YsD0*U-cNCA_B`UWFazsqqg#7pSmGgg==-B#O{%O|U=ZMD6UzGDsW$q(V(re#`8L6zyIZ0? zP4qR3*X{j*mBF5H#-l(CF7Qxk{L*Fj371OW?qu!to&6_tPbH4j|I5X=CJ z27oqu3M4T$J73 z7xxxp20lYWS-TuLMX8pbZ(1V{dXzayB}~U65ny<>b)bl_6yYVQv+#99oCP2?|JCWH znm(SOu=Y0jwL||s6scA$+0JFK92SLxy;(4X*tDssxc(2GWrWN* zLxHH9{;)>s<917jIdGqzgl0`w82TWiJ=wz6u&jg@{TG823HUi7b)ALBODvbm%O8`M zf-O!bBgAW+w`r#j!GV`VhmL@3*6xA=@YMxEvtF&yeZ@U^af1bcPQTopW;gCECg-ia zq9UmB5ygM|vgt=R`x9<9#s-l-u>a&n2#PF1XPe8*FYq#x^VoB0WZHPe`0YC`^XDp< z+S?h?V9De;e{_oxW(spV8Ig+8t*-8LH%vk_vg<;_sQ_VA5S=dHz5xg#JjobCM|K_3CNZp|F$X1ii*s|(E+ zyV>yr0j#X(x(L~T@sDz<0j0D)loSWDv#RAy5K80z+n=ket7e<(mseh&&dCdNuR;q7 zrvOFlE*!vHCvOL~CYP)Y@deQp?sBbyyaK~h%V(1H5=k)IdsVwgP?5?s<^hpx+imE! zOm{+N^^oj*;{5@NZBxWe-;P1pFsDr6eXs6s;CY)eLY8Ukv0{hT4Q2JK=|7Vy1oDv$htk3SxLcEev%}o z5GOYvTp^cBx-2eFNZvp91@?uK8LCW#T zEZvz$u}`QRzs%u;K$cJfPbjMpSCm?4k(qk8cZnQ}9bsv2DxTTYn`QV^p#2MytZKSX z^l!=G#HPLP4IYhp%0+#nN8LO|Z{9FC^Vf-DZ9+IYPr4uLgML70-`oluI1(e2g<`wm zajVjlCp&ov;?XCUcD)iQcG^nc;BYPHO0xE`)QKfsN-{7Nh=}hZdQT&PEu5L%K?U?+ zN)U%NEAm9Czhvo8KkkS-VBpW7AmNYP0Kp8o9)ns?uiN`@tUMaC%J(IopMDqr`FWdu ze0?#~k80o>JO>BpHJ`6wzSDrPmw8PISXjYzo9_YTY845!o@}W?hO04Q-T)i5vcJV5 zL+JbU+8BYCvVm)SUKW8#LSbnw$kt};imKLG=!uvOzPRMLaB%UBVe&Hv2Yv@L=>7oy zx1t(-v8z-b<7rj>UVcYxx?G9jp9q8kw+^mM5QgNV9$Z3^+XBgBvWWNE?Nu2~aY4U$ z=HXV~c7n;vx5-9kntc}hnKHfyEb^U1z=aWR`9~yqM$HD%+*8s+Uc@mI4>N}w1^#+T zh6zWk2x#fGn_}C-8@B?I6@`mao^Ht<{fk?eZSHk3j!*d;H+$MYEinVFeI zVRPxngHgJ7!>Ltwi_N-C%~>U^kn|QPw@8#!qxhk*It#p3-}7Wk*m{$X3EsdBzaey^ zYu>_r$#~gWXKy&zaRHdkA4~@>?W*F?+k8`K&4^j+4DqY1Ww3Bjq9J%(A9&s$H!vMe zAA}6_*$McceE`%7w{SiWt2HfKIu{1)b!8rGavZ8o*%bq~M#HTiJl6vX9ZFx+ip9;C zI-^^IbE?WMXbJ7D>f&MHA~3meqFRu#Vw@&Z`Lw^0dX=t!8%j(&L15=bg{wVl>P|yF zb&~8^EmuyiT|Nc{Q8XZ#G$FKJ19M}}Hchz=NFnsB8dEpgu^Dd7)#|5Em)ONn#0z}V z+K@L)s{_CIK-vJbe}6^0o}>YH4vrt3G_`kAV{XXOxTm@3umPs+NRKKTyIO@i97k2g zLMtdI{4}&R;si}bmQ>!!9v*sy1JP>L=sr(}yN4LwU5hG@eCBOu&S3zGGNk!M$`~0V z=!FXw3ev1C75)ZP=awwFL@ zCk!u(v2deWw{FG`DGE8i%C@fsaKFXC%FFwWnaZ+u45~r|{d@f$B~op#4hneMX(Xc| z1nz3Z*2ClijKqb_2>FmuWc`kEEO7Z@B^#q#r;Mx1qd3bf(mGc>;w$(qaiZqJ2M zT1$@wE@MDdLTUU4SnLr8S^ca~g?P+jRKMvI!OAxJhYAg_AgnbN8-x!-k{e&E00i3R zpjA9nP|-az!tgV%RvIQ*JF^u`nIniAt%|`5BO9&tu%C48f^F8{e+zSeY9Yj5(HpKXJW<0U(6LW=&piD$363o;+o2G!S5ypx`M7kRutK13rTB6`D& z-qfl!-0c@n!CovS;y@j5jDvh!{LE`!r&!+8lH}1&nCoEI=b8`!91phQ{TMJ$*myU) z1n-bg+qQ< ze4L?R5l-MEWFR$ImOM@4V)IX7FB=QXGdcDX2~-0uB^;~Zid~a{aYq*|ly5?7O#mavvNv0`98?}Vmb2%9Y z%jRkz>l^Uo0ue4#&ZyrU23I|q8cwe-Y;=&Igx(ID6;Okw6U|HX?Mo^$EsbVhi$%ACT|M(2Ls85<{~I#e!SfPx#ZLsXxY~ zHfQ2-DoZ#CrX-kvo~+2Z>yL+r@c~^*G#^DdIp=K6Izz62sQO{p9}SJSt%>V#k3-74 zg5o3}Jt*Y2y;2AxajciUDx2(HYbj9LTp|<6?u93>@CvPVnw@uyiA2X_SCpl#a#htO z1d+FH?)m32P~Q`RvK+)CU6t~Z5z=??5@|TUrZniKRMFF_=`J;T8Z=Y<_Hr+xFE*lQ zpSNMI*Obq^({i3kKqq4Lxfnh)>PHBHhn^+$yz0TBc8t8mo+ZY^YcaR`MZ^{XNvPN4 zD@zvcFGX!OMM$Tg;eK( z^dSd-{Tz{6YIcUXd3{^bM07zV%)*&NQG=i%(B&oVfprsM7O+Fn|f*c>@(B zgj9P|DQ<1FOZDNGY?&}J67INnTXK7Rw-lgO%PC+0+jM!nte^fZNYo3tU{O6*AlGD} z0Q-AN%#=36cdPC;1&~Io_3wZ%hd89!r7M8^Po%jkCBf{l@DFea+2cp9uom&g859x~p!l1)Jxaqsg_)I~3%%rJWET z$2&LZ+@F9xNoC@UPq@m3lMI*kGkm_yZ>rdP6zkv*24DqAk)nPH)Bu0t)o%$4DhikRS5rCqIu(WYFb;cA#`N%Dr zWN?a7b;+=Ln~;B(_>3~mx>^U`fzGUjKTT~DgwkH3Fu-JFXv7a*&fMzYrS4_3oP z2z-YME}i9bC%oi_2aqBdN~@|X{RyEV)AYV3xT8s#;*DgWA|hukvwY2_gu=7kdni|d z^#0@4nK?>r@}i%lmqrfhB06L!O6K6{wxmQ89s=d>*9&h&zx|NR`V|9byB}#}QeCCm zTa8}xn;|2{BNKmM(I(_zub&g?*QR!vSeqpbcSAf*|6bDUWe}CvyX-le*!O4y;a0J$ zY(si%6xi2Sue47^9f#XTyAf|6Q`6f6<8Rcl+4CXKJ`jCAOsEMf1z*0Jul4rcVLSLt zsNG&XCbTpDj8%L~Pqn!ZBS+APL@qxdg`a2tP4a!-I-HT}WgD^NEK|+KGo?D+n%}T! z=$^jBBx` zN;LdTs(Gt)EPDRpGU6g_)b`vjBicXOUvX!(|&z61C=>!14DSX#W4MluYs3J`o(0BMp z0`F2^60o=ZW+x!%TWjZb-dCDfEKTD5K*$j&^EScME0=m+NIL<%{AG-->^L;R?lbWc z#Z`>x3g)>{g!uT(qA!a9=-z{#DmQwa?9v3@D->sMZ;@jqqk&3~iPer!vz4-`g6N6~ z=~6Vr@HM-qfIz#UGwQn~u(FWP0J%`-wxXkxVCcIaZfoU8Cp+yH}! zS!fgUA$;(hPW2;3ti{tM!AVdEF<4bdJTxg*ICviyA7tl6afapW)+LjBd<@1EcF)nu zs!D>o-MNPmn;{1{iKQ0S;5wU_<_**b+ZD!GaYkfGuR(Q607kszpm|q!W2?_Zy1zh$ zmN);%CIVn%LNbypx_2*Dxn`j@KhEEr9a}eaj&B8gYvp#xWZUFh-tI8hfKujbP{PJ9 zbR1mrgKZed(=l8mP$l>CusxF5JWS}3kLMx}`NNO2A2bkF^@4c9-&2Y|)Pi4LS?42O z-kCp%;-z4*V#Lk%Xim29!;@hI=%;!Ponn)3kwkgDR2RO`rA6O#9)}GHdCQz9NCswd zjdTED&WaNYMwTD&SXcF&8K9Y%Jw}7=G;VC!VYY#i8Fs4DlvTzgXwayMn6Rkb8VdKi z)@l8HtgCjRto8*}&C!C{pQB3@Iu>`O%T}HU<3Uwj#m&M0-XMEjBJ>WYj z02@8lE2)#N@rPFlloVfbWaoznFkKGxVwn>1PKD|mDAp6P0tE$W=4_H8c%2Um!5q(3 z{q|H|xCK|kaj_C!c*kzBQYt=%D?rp$e$)aM^UCZ6>1YJOWjSJXS&)4 z{Ceu(3Avv9bK{0EfJi9-FUTF^aLmjC%NLdS51smn=QQ?t-|{8VUj0QDtG`z8T%{_ChF3B{nS`VO*xXDXAiMZ? zYjCdj&502246zd!8a+vrZ;%lMR&GZi5qwl`)u_N|^DwSH^AOrdQ$&7c4z?qV*t&Xk zCW6vQ5bMrKglLcB2144A!dXXuW!{Q=rD?dJad36oehzT>byH*#@T*NV6Oy6gPZrPf z!{F%6p-I0`@Aj8p+gr_Ed%dt~`C8UeyGsA;l=OJYbt~!cYG?Q8D~7cRf1p9_pxEWS zHx1S;mC`Cc>3rpwnMAZ7u{)`4m)F2eih=$I%t#oPfC5qmLqKEQdt-!mga^{+ci#|K z(_fM++X7|KSm+sC%tqTvn(V##QMaVIx0W()H=1ZHt)7Q$O6J)`L^(s#y1TFh?3f8b~PdEaBrM*t984^mnJ;7=3uHKq%)^|0|ulTw_7aM z#o$*57+>KEp>ZXiU#V0gA>(V^moJrvfgsKY=`V>#2Nz^A=JKQf_lr>52}kKhI#)F4 z@GCq_IzCmDvURf&q%ss}`BI?L&Pr{QRrgHF$U;3FU0aHCg|i?;PosC^x9MBAW+9u~ ze%#8h^wrKgaG9vTV`4-VHr0TUJ$`Y6w<^^^G2K#PV!-_m$<178GTcZfAygbmBJt`CVWQkT+p#Uo2BQ2g;G6X|$z?vg zUOY}j#|Wc;j`R#ATipF(3x%UtJ}kh=_^G!0Bh9KXUj-jo+{= z2N7&1527%e6+G?3%99yPohv`Zd8B_;sEA&WV=mUXp9ZeZ5qh}fQ6rT>e#&-T$XNQv zs$ZG8o^?EfR%a`}a` z=WPnrFWK0;)wR>@u~TRZ^QlBlR65G!nCe!nl0sDMCPc+2 z{|ByW zn;R*T*Qj?OLbYdN2(aY z*Adeu;RvfygcTowy8->r3y&$89cnvlJI8~WYum$hYYX6tOkl?_7FUO>Py&|2>nyaS ziZ$C*rm2LT*(=?G%z1C$S9oC8L>)3nriAu74AZM(R)g+@NO5rX)WH8=04ayb;&&I{ z;(y=z?q?5gp1U$+iVu>b_8bX`i7jkmd8S3ER|&L*-Gw>*YSCZWI4IlF5GloLR}B#L zbGjN_If5i-%zc9|>pXv6x{&x-A5eS|3ze^k3v1A~0J(O;bRnG_B}c@wbP})S+!KJw zX_v6p?>B}A^5j{`>?fC%BGx6(g_(%XoUEaibpr7l^W><0yHUMY0cU!Y#&IU%edjl> z4_$$5yLWqg@e8NTn~d1e5T6E4Vrz7!%bI};==C#!<hWTT< z`89(z!ekl2@)ypqn9Q*r-I`wcxTk7IH#Y`tas|c?1LK-ktXR zrQfTqnRE398yPCh<>HKvJj1gLQ|NOZi>#=@3#Pn7n{2z_VC=niv26b3Kpa z>ix3eE<{rBS8gaGw3iVDl!D+)BQDh~0U^J43VPI_VXw#eN-vN|(a}o)@4?Q^lZK6- z<+_o#(?_tqH!qdoU5G`4E6x;5gSb80DKYM@eY9GeE;!X$6_xF1X%v!Ql#F(f#5{w_ z{^yYdUT(#wZarkH^|*5tdEK)ME#U60L-rwl)kf>EzpYvTsu?Dt4Kq^Ec2opEN^1?A zPN~3*F3DTsOxph>z<;2=`WR65-8bZDJ>f_+jhj#( ze!e|3JX-qh+2!_EnN;|GXPg-M0$5I->gSf@7Vo>Mw^(TLkGE$MpXCq{^4zDlt*rzo zz?L8^Yxs#W>aI}oECI0$f_34*QGIoUqK@&U{>I&^&)9(Lu2RI@dgiLTcV(W=W>Sq>}*Z2BDNXo207nozP0{P|T zBi+LI^l!%69%wPjWxMuCNZ%NcAJ%?tC2bJ@$(@hSj?dl^8Q?OEL^<`##{SRnh;Wlp zHJs=nbTTDo{pspSx#_oNG4cKoik{=7ZKsS2z3+u z*YTsxeYIQT(>~*nxYfUBJ=b&19tCD4{uy!IO88evghdx!uJz~oyJMHf#N!*3wfXk& zhE!R0A!!e6a1WG#uQWmm+IPn@i9%Bimz#} z6FZ({x+5b&1c##$AA4p0@tx1-KY-Z0_TP1ml^0GweQ(wKg93xFF0ZumwA-kb@a+H> z5~2%FPF{Wp4e+*`nwlCAe2KJ>DpGN}%zyZ4b^%pQE1Dul@oG9NwK==op7$F>AlOjf zt^O?~x|H^MNz~Kow|@VLPU9v+-}@ZTli;~&N65|yf12sO#>D!ehcA{TE(#1G-*JeM zp|`r37-zpK53=EFn}Uga!13SnPD3L%C19)^ozb|1Kk*{}>d$j{mG?_@E#>L$|E&SP z8E{~e3%F7Q5g&HAq%}D`jq+zZzVF(n;MP({{o{vL*`>>o9eXAXi`>-I)H@RpwRD+z zYX$QLO|c^K`WD`W7Z@BhTgWfjcZ;nNdYuRmuf)SU}Bc%$NrVW&AHuXKf8-jrD_8LZmvm| zVxqxa=iR|5j9&e!1p#EWkr8|jukP3QI{;tDMUQFSc+=v;ZdE0D=M)A*{2efK8bQ{f zMPp%aWSP9q98NE3;C}n$t{_$;Vias`%FGRbLQRWOQjkP~$Ak*=O%?`TCab)X}w$pt;v}{YL}+q zvGw{`c@}8M;)Kx90_dbMxzabwq{jn6wy~_ojp9k>40b6}q4IAD00=u%s2Z1K^QuP| z_t)e1vya7>hYd~52D=Gb(p8_a)x$N_2kXt&MaOrI5FyC+zhTds5|R-<4n1Cn10f;r zaiq*KEOp|-P9}*~4ES+&55!dTd}u=f{yeF{J-Hj#3HbPvmaZf#4c51U5h7&!{UG4p z6m=3!gB3*wMY2Mz9uH54$!Qvcsi>%^uRM?@hIqVomuDqZQXN}dQXNy*XmZ@V;cs~J zDapm<>1q4Y3KB)asmnQ>p)e_^KH;O;$H#~D+=Dml;jI@8FK>TsnopKmLcDPZF`4Bs zNKUdJ#e9DUJ}xIpg%0gr3#coD*o*?uRXS&Fs?&yV`72I4Fnos`ZOFiOQAOEIy1%(# zBQuhk=UJ~OY~o~BRaI56NqKF55FC9etE>0vs=Z9K*y)6d6wNwWgf8=5^9A6>4*P4W zr`nXLe4F#TtJ|tVrbqxUliT)&24nivhVw|ZA=o*oB*&eZx&85L)K1t8xzdqf=5K^Z zq74n^26Rm+HvdrEk#J~YV#$wn&s~Oyo9B&6n(10VFV%J_li5cIlR;TyWHrB+*W#9dwprn`(;Mnb;dfREf&+^ut zQX0ORC998e9Xoc|THl|TB>kZfSlHSE^<}Rk5s(4vqF*f;Z`n+q=!BnoK~0x>Qaf+s z&de}}O_5&DfrxOWc+r72wFv_KFtW0ePFBdLsmvKOa}@vjIbCY)U$kt;cw6odcg}xo zL={a=fgXj*0v!b1KO;1^g6hmqiqYrW)4NeV5=Y42fDW1|QyH7*=YP)K$Gny7$Xg0z z%aF6^B?-T=<87pmsadVoK#(cnw;W_UjfjL)Eeddg3b+4s zbGbRIbZDh3D3m~vze|Q78kh-lqWR54Lh`9l!2ClnD5Q_gXAb^zefCNg2oSLPHC%VT z6h|QgNsMbM;%2@2d+x$)VEbzNz_r~cQQf;#t!lOiFn4H`h2kk^H6@snC6mdP-!zwY?5Xyl%H z$iy0oR{eq@F=WWT$FhvyHg-Ji&xv}~BjO#(n>al-0YVtLAsyyHfT_Q~K*aRE%rDHg ztdXH0C`w;6s4IGbi-9K|qK zeJbxpCd#5dsi5)~fDkEY0Kchd)`~S%?qfD%4ud2&C(F`oQ~I$GSv-Ux@D$t=M^|B` z(&YK*u-f8Z(pxJSlKZBKOw3o;pi<#96Zpu6NJj7ZAokj67dYtB{`Sob@neM@iSFuS zbG|>|HK9@_!|f$~CFd`&hMHK1{A-*U;7L7j5cb#6J}3UYFBf4ujH6fmvK?Opi2919 zS1v`6L4MU^W@}YIb|}5deA%RGL5S4GK5itby~cts8c_tK`w9UB?on6zf)6`2&25Ne~!ZE+vpWgt!jaZh~L{x zymP%?-_M3EkD7Eqar_r1_rLn@4bc7nW=l#m8n2%fT1{aATT^r&j(Ktvd*-G^BuwcO z@0m5Ld!x6n-5h%jfH#y}SCuMt*R~pmexF=?0)nhav3}09i4rnIruy4+ZbklUN7t2e z#-`4LMPJ6e*pc0M5JB^I=CwR!`FJB(tW+Tfm#h*p*@&%$JF2A$%9%Q<) z52-{Amz}yv<1N3xzuPU0tN#E7KOHYGFQ-b)x(vlmoAvyoV)|QT`e%xGD`V+gjrLwt zTzzVb8W}a>Qz1fh>{B4-|0E zk6r3cQ z!MpqWVo8a#H+6b!cWxiGa?GMK?*N`i==>0eTPEc(6$!yZbw{PBd z!(x0S9QLLbG??y-zc<==v!<%_>f!D_vkcxiQ2U4Gv!?iHWqtk7Sl!-40WEbkZ_TBZ zw7tb&6Q#JoR<1yEXo94zX9$((=w8-?J;^C8j`6dqpn%f)(jFRFn^aKaiwGd-tqqiw zsz5n*`}uBCf0t;{xbL~af7|Vs8@SH`;QNS%^D=N#lFLKB>lux?N#*J-ew|)0V=8s< z0%{JXTNVGSxC|dKrhEDZsZIZ^7Z>~Ur;73m$d` z12XZK9=t%p-_<~w#!*_n@a_NKy#g_}R69j)yW>&IauAPFr+VTxS+?XolRzMfP5YC* z|F6DJg1<#N%aHGia0Z+eL|2&{rw@|kvwJ2(BvPbJgrkj`Sd@e+`}&o^#x%lQOo&^x z)iKqQf^OpJSMX#2ofyna7f=arvPcr9fFdb+6!%10Y=DK6lk|#iUXUyHC`Wpr1N`1d z{cw4+BYIBmCKIL%i358U@?)r7#Bf6nrlZ;a{8&j{zq(6auB>>gc(RV{KU2oO7 z?h-w;6Ojn>^sYuLo(dz(MVesC2r-VhrvqPmYuN2=PMfUoKKtgoT{NXJfwo5b4%!Pc z1fu(HUBTO|YpxZKYEvb1tIqsx<`%ATD~RH{(x5T3h>q#x@_ zrbvZ?$9xS4yMGwBz3!6CZM`eE8LB2U%D2{s$FL(J&`p~-yp6|#4~yee;L@rJ(!=;4 zBFI$SJoHGtmL*+3k*HTL#H-PA{PWlf7hL98v_W9eCfKd&uT-zfoU+(;^>l-L5lo0- z_@z*0x^Qxj!+Lz@qkHa=XN-$X!sGYl`h7ybD29<6n4gP-E3?GI&OVP3C01_k9BS=MwMpBT$oO=HP%SQ^6DcHqi)9OfKdz|oVD(m^8e2*koVEVPeb^(&^?Mpf+Y5wJVF^s*oGl@LB+v0B?lNgZIts(wo(%yNq$(CsJtf_ z>!?MvDyg3HD#w(*8X&0uH55t1YH>SWnxCAUchsQW$A%8kg!C#=-(`>*#~U+m^zPQ! zw9b^6-)0NWv32lW*8p8S*&?QJr&&Yve3X8Cd%(gh!??lh-bQ+67}M$4%Najo(_&^KfU9Q0_#qLnbBL}npCr{tX{9j~4+8*R=#)AIf=1y%P2sJ6!fE^L z_f&x(EfE4KQl_fTkXq6NI+b4+kp?vhE9V{_HZ~`ga(s(>az zUNFxf52ojLXg&0aZP`T+`Vlo$(*UQ_#q)p`yX6~Vr%n`DQt-^8#2^5`z43d?D=cW2 z=gcvp&Q_a+%DttfrB6moc#D8pyh?ItskpD%?ETb%g2?c21ri)|W7tYTxt{w zKf!F|sHuCG1tu~Hpux`40_qE&PY^zUnbR@r$9t?8`IHpJ+o|fDs$o`cMgwWS6jXas z^S;HqC_Vn1N&QlB&FN!P=X$~}qm2iW!6nuu26WUVgZ$ilZtezJ*K>hGE5>9CaIb;V z2s|piK34olcELwaPh{mASXE@w&-M56K8tU~YZ zumWx^fHa-KpRsR#vT0+XX=EflK7A+;6+!57h(Oy;HNHxuz$vDNpq&J66nQU}?!Pm^ z5ta9p{&VDO2ozMn%7vT%ut)hJ3RjHe-9PtQu%KA?h4}3k3gw;o0NRW~fzRGpioxO^ z=~!<%L3%LTV;GV+np1x{8! znl(5=2785S4!q0UJ&s0=T_0nZd@(>D)Tq#tGdD$*fh1+?C0$|@JKG#txQvL>c3|h+ zZ`+B&2m-u%{{dh+eb3`&@-$^yY^+~{N>yxO`la54`(T&$S?Q?zO@UEsa@TKa5YD2#0E&$8R z3Pul`paHeOhfwstLui|3Qh!9q?ebqpQqWLtyOL;DZ@G)-d)1KV#i+rKpCh4owhPt@ zc+sd=WAAL0QNyIM@L70f?#e(o*4hiHw-g}hU9Dh%Ffn{uWyCW zP784d`$s`~x=6+Og~wBe8lmRLfuYVy>gd(B+!RBCoJ_YE;u~~CUB-e^@4QiBH#n5i z2bT<2fsoJ6XAp=Gb+faxkGmxY)rtf)&vm3apR9RELJ{;;zI)AuS*^o?5i^864pX~-Q?%dP*0fmFQBaS6=Pz-3@11amKWb|@ z{h!?{iL6~=m&ag6UQzra9Zk-glH$gIwJF|EaIQo{0S;{JSkou`+GeeK01l8Q`2eW) zhu6My)KS{habakPJgs(@eKQJlGJYGwUC@1Ok6>WTxE)?9>|&*QxQ}sEA&oHDF9BmO zRe#r~xcRV0(XeYFnR>c7B7~mkOTcwdtM;f67dSAp92pt8j2YRzAV9F17V^&~_@nEP zAqTryYxtQ4E_KY|;_sd&mn!$LWA=6JVlBSx+Ot`&g8pxL1hKI3uW<7Lq=E|9{Yt;}7#rW=kbMR5 zV*TxwM@NgJPgTVZ^{~YRN;5TBYn)IsMlIE5y5RNppIUv6H!g|Y^5|tqz2bF!^L(!S zj88ipe0*YG9DoH%xI1He+QLb;3Nz2F2_PC_x-B7tsvEX{$9IpMj>~*v-c`$X*h)AL z`OcR9U-J==+8xiBJaUABI5*t3+YMSd@*XJA`nQ>9KQN>^{q0Olb~@J`(w`Rqe`?W3 z6-D^2#t;X%SY|*!Xo@Ra7x3>>#E~F9qw+0#@Eo;dI#yngk(6@&Ep2B{V$#%ODVS zwNA4Q$1pw|%f&M}{^utF(zRwn5=nlC75hKDc|UYK*IvGHrioju)i71ach}eWvI`pn zX$&u}7MdvXTpyG54)+L^iur(*M$75e)pHM{H>h?8AtB8Nr0M%o5s*?y1o@bA}1VW*r7<07Q^pwABBO{t>s6Y07u+&w!uvulisBRke!z zM8ZGaJ&JvU*%0_S@>vNwEs!bMQL9py*bS;6Vy2{het+@PR&pWM(t6_zh9|f$Mg0;n zB*w}e()wNnu97(>eTHmcLk|lkoQl6u37;!OOikesuQfRjP^(njl_}=%ajXsA$J>I? zpLSaCJPG-OAsw!s(Jkr#kdZ{p-Fg~mdFaStr1()H-?K{Iub(oaq72K`#*?9--i@_2 zzV9?j@a8BOB<;Cp$UQK9O+0FR(zwv+vJ5e#Nzhb11E&~n5C%C~%ziE>ZEq9UG_M?j zvxPD$27CA5v^PS96ah;3hBQTn9P7=_m{O4oBs78&4d#MZ3jZ|F1?`3Q$8KO-40QY;oFx6X9N9F7}5Ag<# zF&UbokfY)>Vr6xJyZ6qdASoB>Y-hvU_raiZls)fsPkJiyU(IQ8ac@6sZ1ccKMAFDW z5ELjZ1c073?=+Jx^@sdvVLP+&2bJLN?(XUYaz(IdBvW(MB_c$8XMir z)oEK9CONj1qZb)RG!qbrXdnjoNE{oBIt)}iweYC3g!~T@Ywe9a>tEGazr``=c0BKm zCCg?`EnaT(p9Vh36(4;AMG?yq_e$Qg3ARXY$g$(^2L@siKtOcF_CfNe;X=-_3SZjH z{9b4;6lG=(x}Gw9_Wf{GTCp!0*p|>vj$|O|A{92M1-82n))+;hY7Bc3RTUOQV8YJY{jm6yzOZ- z1%yMHogf90Zo&KnE45~H9LmqN9q_~dZzhg>;=|vj?7r{**6u#hg+n3swye-&nT?b! z-iur;2FpKRCDRi}?rcf`f-niaINYR-0v(EO#RiPWQO%B)v)%0uTTzGw-mqles?@5m z0|@4Ksqf?K!c5)9%rQi|w$kEjxpj}uB@_SO{s5}bCpJeYS7Ij*z|6rxXzIZ!1M;YPp6GB5^ z5*yunOmuRO-k|K=Gi{)Iyot+mvyEnRzdl};Z9w>vBt-N&NmG67`!&eAEb;}){|t_m z>!&hX73ek|C=KvBTS_dW`NG);5k#Msk6}d0q>V9aHK@bVb0(pkCJ@{7>AlWuy?3d8 zjJN&B{)m!Hqd@D`KhswTD-;wCzlTKmky(lygnQdcldULSXLdLC)cL62&hs$f3=L`1 z9L>$m-464(;0PZqRm%i>4gtxnxcpxoEGCo?%V%L6i&r_(w^XIVUTDEQDhBFRQ}f%6 z?9XRW8ba@OWQ$4NvUFGa52HV|1f#Z_sG5$Z*RnP)&EP1=i6`eEKXBZzd#$I6N??Er zi0*z8IuLS!11-nVG8{;zoJDiBmiL zj6=fIp7#P6WxWLiwLRtAS<*V+pg__b5;=Wre(YMQRci8#PGivY2r)_$YDz|HdT+fH z$p&@2k}-S&YGwzHs$?9AN%(Fpzdiw5{6q6 z;``zPfV_rD4YPOGsm{yG$XH%Fc9X|j$1v!WJNKy-i(*uuq;+~2mC99 zUBCDN*Y)1A>X?r8eBjYpt&CtKlSY0r??_W@%TuOap$GvEF1t^_m-fGouLiyGR>JAy`)nG}H;#|N4qt5t2UiM{?rY7_i$adSJ{O-{DVvun;2 zHvc~W3qkb0Kp+7C2!tD93K?38B;2xZ|A8AiXjDZ3MBDb7jKI}1mKUA}Uzc^e9Wv@S zj*X4|*4*5jf`;CqY5>zT^)nM^ekl|RZ6%{miBr0+;ibuY3Gh4uuS|+!sdPV`tI=#g zrCjc6o$gXqRtlrTBayXh*G@kB+_Qgkc5;$hw+i0-2ozu-7qOpi^PJ%&L*n?@*oRJ? zI+>fBn>RJxV2&ueadwYp=gsyO;Q_XA5~8n=@)v2Mr2?`fIpJsw#>ZEy*GtNJ+i8j>Ubo8S^7>db`sr0GR(2`Wao{4E%jYWhNfG)^6U{MuwNL<>Sjg`r`hh1KoBf zl1at?B?8KD6W5DvAuGjP0N}D>3sbNc3iQsE=nK5XH6L{?x}h&omLQkUp{H+tSC!RB zv);I4W^RtGFn_k_4GFf-?H>MrcYdI^rxxwI#aqJ7{%4#O6a1b4{&h+&Wc0Ufg~K6n zc**dKsZ{D;@7wpnBkfL`cBm6n1_S^gkT>D)j|#zAw|4bi=z0I~%*@!Bbq$IRM}=n*65#jX`l7-SO{acuo=jNg}E* z)M6GtD*^(?1rj`@iZ7rt4G5`p=^Ui!1b3FY=yZ4-!GC8uo>Gz&7LTXqdvm!juUk2` z=lhR7^2J)c5zH3|go~ocFf`czTaqOIzccf-P@`6N7b~^dWjepAIFbv9y>dDyyAUtxi4$fY7hy+FIL1uYw2;lK*`AKR3a&1UcyS&9SfmG5EG&*7BU$Zu=9MvcA9VEMl}B}fK&a|>>Mbhb_F z*Q?dqyStihqCS#*kDojWI5)iHCC2}p_}=$Rd-ib#09+4*G0{_Mc;MfTAkmC8d@U1r zE}!Ty^qRxM$$LlF00Z*X7EXxB$oE%mBv%0%Zr{2N7gu zVPLe|(P9`bxDi7NcgRX)4n3w9G_4x|;Wwf9c__VoeadaO-ue*?J$E##JgFG4Zin}!w7cK-F3m=i*jwwE1qEs&;UaN%rJD;Y&L14;2~t&PSY3; z2q=I600i=;5*Wi) z%#YLgj`ui5u8+h40L?^WfJQvyj=NFzJ#R?{k#%h6CMbldpK@e+Ra=P9``kT)L&p#R0fVWz0+ zpJSZ=-R*W)K@XmAFwLPti*C{;0NHEOqj`}rcTF+wgxk!e=_#1R87lBSe;20udxt!D zGVzX=8t8DCD)Q%8w!3O+opNixV9*_Jgz&{0VqdT!+2XzG7r?mhg+l`7=G;(afMFPe ziDYU=PfzbYUGJVjCqMuQXn;4H1WABzQsa+@ozLg*=yW=N2CTCZU2U5u1yO91xv@(( z3D9*8UYR2FLiFsM+B)xE3k@+k8RXM*R)J9yAd?$w!RJFM?tphi(WuA60I9G5aaDwL zB8Gp55Ul{nssu_1!vc~33Z4fU0_d0_FfekU8yZglY_&U3Z?>V{F`=#LP;A)H(i|{= zLIsvP#Yk`@(-G`Ksh9~zLw~qt&03*SDgPBEWd+p%Zz^%Zssdq={l>n%dq+E(2BDCG z2GVAtrGaR4A&ToWit90?ApMWPGoOz0T7HENg)YIX8wKz)ul8Bsh(c67qjBj|4?Vub1 zNt6VOnO3DzT9ZyE{^EukcK+rQPdxTR1j0d5U;qFDd7~TuSTt%c9bI}yrCR-qMx(LP zrZIjZX&ldv3$8csmgouKrpdjMQFLDRepiQ4Qj&y9NOI|ZJQ#utWJe*23OEr~A(f0l zUr!oF`w}pe$LpyOWWo{xfG`388NGJ_R8;OJx(rsrxfF<*w+`4ZIHI``bDNs3{Z=FH4Y8qaqhG9iCOUxWSXA2yKJ zx%eP&sJ{ zL{Y`Cs){jLnV(TKZBETbj1DR^6XXc-0a1KQQ84W+v}^@|fdjR!4YP$396dD!`wkt4 zJx6EZ%nT}JlS&;0kw&kUN~LX^Hf{dIzI}WDqE@R0O7Km90ce%B+HE#pEWWGJ?!+-^3js>M^3ufnvFfla^XQ$_3YNiC!g$k5wZD{ExXr=&NGSW7M zuSA|Hhye(29dq5=bZo(_FW!FaBAas|Ylc5f;P06L4#PbvVr-5k5TfV*bBRQ1SEEt? zfv#%-3-Bh}2!XsAerVUI@gYAw`JVrX9?5_2YF!hRfTSVy?VSHOw|*EEp2h3!&5N&; zivj=&c1nv72eJs@D$S%Sz+gTF>z5C~#`Vi!#j;@-!@rkAB~I~EY@Z4ET1eOnj1u}x zaMUPr{~^Q_5w2Ll!Uv*HU@S%G)!ks%eLtg~fzuv(mjq4a$ET%D@ry>$tmUwuI|d zr1cuZnDi|*4m=v~> z`8jy*3^(9y*EW0E|9)zp@G8oDfuF;35qm}q0D*jP`+HCm5SGnmk6>uyWApQ~kCIQ| zxDN>A4K4u#@Fo%3=g~;i3aRQ{wQBX3G()FYrbspSys62e&V0U*;dj98$mh=?XN%(e z3#m$e4l$MPk;m@UNTd1#nK_V)Nw9o04O`ZY!ur+Yux!Zy^kj38jK)Be$a~VrH{X5tTYlsI`@j2V7#0aC z1K+ropBuecEW*~T9Q%(44rAOHY?ya7b$@9(ph zEnRl^)b!M+F(x@CiK1g8&*)~?vx@Qh zu_4&Hb_uLp)(dM_5S`isAyQffp4-se+WiQ|_|d}`ygKp?Mo z%TJSWP*$y6d3(Fn{?zpJ^cWdDBriqoH88){9~N2jMM-@QfZz7S|C_NzO?{YKwL}1c zJSAFC{ZSd#EE|M7wylJ%n^wWtND`tE^y)*THVuq(qGyEO3kzesG@eG~*MlK|2pWC_ z07?`UDH?o=eKL{P2w42UfPjcGf2w5`P>JahsCavar%qd(_P3cEexU4XX1Vj$O;nJS z3t(gTz($Zknb@^1dUUqH-5dY&6WHmX1YZ9eU3~jb$*my_w};#w{kXPlGei`?Y8;Bx^-ZkI*2X2)Y>2*E7uc>LpBqKRb#zy!-fLvJ8&4De{mli#W2C{DGk~t z0d2R{mdRUVFs{aJUWp)`m+Z&R=jq`5$d+?%1M|-yiltJCn6OWzQt88$O6j4XDj)y= zfxMno9d-HPLvAIz$OT#^U9{@18cp|^|H;;FM??Jfufb#Mj<|ZeT zH$s{s9ui@EWC`51ZUyYzyau+S$Dhq0jc-@+v8Y5b{%KJ%A5#3`2vVt$EZ9hw+VMUN z1)#@8@l!$J+0fK{(6oqlb%{-ivGNQCYW#zAD)lS0kwWFAguD)$%C9W09O*uRj6W)F zDh-Ur;uubd!*2#eC zxTcOBI}Lk!B#_sygt2^#Kemf(0OgVhvW^d>1VFdOo_R}#3@^3*6%`e=DwPJvyoUzm zp@`mNi6!9OsT72<7QSXE#6d7q@i`dAvg#$Ux-ERX4cV9s@v(mBO@?6ANFGj}ordVM zlW^$N6wJ<-c^-j8p1(xNuE0xneL&))^w$!`_xb}k^?H3xKA-=KNF@9#r%s)Gk~hw9 zY%5qXZ%hdk-Wywlo_yXO80fpZR4V_sa=Ah!Z`5e-9KFvLdH?5H>BHii1n_i=*Jp$$ z<@@b@@j$X3MpF{pwrLpNefJKy@257y#??cR2x08gZ1VztijUfA23V{IAUy(7dJtH8 z2xJ5SvV`&y;R8a3TMCyrQvi_f`^_v0$=~Zi?I9fG%^7+?SQHti21dgOeQO= zUAuPokt2t{MT3YgHnupBH90?dTP4$FdP)vLWnb648vZ4 zfB+Dn3gH-7k_wcR+eJ1&#C0FV@K`<*fua5^3=a)KZycF3y#rdUO}+hbtrH-&cq?KH zF4)Ly@eX!B^DBKH)Ul8dcB|RW8oKcq?u!>OHp2WIpg;lu5XkF9nA^d}zG2(eThTN5 z{HfDt#=Pu)<|hFy%nrBhi>45tS6<|tYxwJR<>i+VRE*nK^ugUXZ-IB-b2Hq4o_}uw zJs_(Mw%OtjaxgA0qH>hb+gFl3ASQd!`%i(bpwdH+AGvw2of>oL1oG#puG-76CTq?o z1CYmKYhZR-px5T0(n$!7s`mkOT+vxqjZepeLUL zRir)xZD_VTG)05I7yDxM0PN*L0525uOzFk=6B?boQ90caPC`6-WR80(qTD zG9CwA>)ty(GxN)xE)j(wEM)To^BVqmng8ca8FS@aCvk7FESl^`O0BOq58F4bfe+oW z8s4&P1*{p%Ln?%dRWE>LchI{JV@x!O7B&ZBq94S}GBo~!;KX{tQBxSkkD}sKz#s)m zgGv~wJc>%8GQ|i#P<)nQq~DQ2qOb$iFL&p`s88Z?1Tn@0IMi|tV*`{^z&$Q->!%Go zPeXIy`I80s<`15Me|-EP9G)yg%Rps|6fKQuwb1jYutr~BFWbC%%L7k6wd;#Wfd+j5 z-uMuJ{|^lwQ)KaAEGq2mbeaQ(sZ$mpqwrJ55~0-8V7^#|QoV}?SAcjd0a0Y2M8N@J zVXBqG6Im@P`9l@})FjBED4sm-VOPPOSK$~S;)zuRxqK}|u)mz927;eWvx8;uuqWz}C;==8( zBrbU1t-mRpW*FIYI(^HMCBujDdpgl*)Ps2e0RRZ(b)nwS`;SJW&d8FXx8p|s{n`0K zN|FRO+V8N1@x8W}1HcU)IB?-ua<=FnA0#5UYJx8NPyyX>>y7Z<`|gF?S7adO`<=HfPer11ach0q#50|22yFX4|(cc3`bFxKZdVl z438njzzs0(>_@&hmFrOsj_6j;P}E&UyDb~;XikE&7BK;0gogwyHHy!XJ$AqbgFpqt zJtJ9=R4^<+JvRDtFxHcTR+-9OH3Yi0o1-AOM%|%7Tg;7DkaCdVTvmXO=pE)V1pH6Z z3DgbLHlU-oQssK_k#@Va4+%3T2#o~*Adu@^r(rzX(KY?f`9k4C?RJ~j@HviiZs%TP zW-tH8H@>rw1IP`(K$*reZ{eGiOxV1341VUWZE)v}n_y`^f{L#Tl7hs$B=Ax@K?ws3 zXF-kUK}sz_>OYU#ErI7zP{}C1idoFZ z3!TClu-i32)yqMH+3E0(g+e%mRBaoc+J6%6|IsdZ_?ZK6_)Hm^=*Gz*1(Xo74yNT$ zQWM5{t-*o8>Y6oc9&9$7A3t;Y^t8jt2Id3~&YQ{jyUDQAGjpZk;o(O{M@Bc4ils5F z+hvw%B2cu^2CIDi({QO`xdN@yEMPbdL9YVHvO!q(ChhUEQ-|l37(BngrQii>Uo9)# z7`tqn=o0kIRlYpT=6J&_1urZ>Oc;9kf{btg*#?QX@D&k&>uzqJWAS=^3YgJ6f=n_E zJ-IxDqZu#_9g5W!vS0=eg%Oir^ALnGTey^8Tt)DaVOcr-nbT{7i=r=AnIUd-jiv zDxa^9)TL@`&>ID~V|^dI_boTTPhq^jFO5_vMcOHk0BK8#U7F~93(-Chvdclqi~uBt zkWxqhO;hJBQ5TYv{rKs*$!BEvEk5+b;nC=AIUnc2RR63iq3)$<$DYWwMzE(L?$< zK@h$+arW$d2NizM`R~msl;KV-fTyOWD*b)^kB^RwtV2+cY&2UTS}z!fcO(fZaogf; zu}jqsOwN~}*~K*)i9sR}b4&jWjVGao(MzYf7eLK^crzUaii~SemC^W0c%K^*0KV4U zIRYF)a3tWB+j?a;l=Lcy7!r_UJgJbZH8BAuZfA{VYLTap0D(Y2A`ykbfnJEmkOf14 zQm<5@?Ul*8R-Q_CME`~O`x3w}<8{})AiBwl1i)#}(77oLXJ}?>>FBasagY44R4UEl zcP0j#B>(_{Txa&5bO)8n8M^V7MzitDRNG4)1WmbnwI{oo^McnmK;T{VsHUF$mA-@s zH*HxB@4NSA*tu~Pq{0-F@9^Xzs);txvzOEusOcdH=LV7X9|jgpBlSqbR3$GC%6q4I zzK7SWga8K_e$&tVceswC*#SiB+ub@?81HY*Pk>gM0#R?G*KdPK4O_YfkN3Bn5F9u@ z3Ez46ad_ylJ+S{|2^u<5r5t9U5|w4g(0OZMAr_CZ@fFLzi{Hn`CMM3DoSmIT2PZK8 zZ)Tz29oM^~>pGj9oT}K4^SySf^$)pher;Flj%sL34bz~^87Ao2DCd}PXE&!1Ill3yb2xx z&gBC6$v;dKTo%H6oUqU&Okj;hJ%;<{F;pr0HBEB@8Xy1wfm~+*V0dsyNX8TI>2x~( zLpO{#88-4_UJW(y@F358cTF_+4A7gQxaLSc4)4BgHQaaG2Do8G9(p5ab}fvBN;I1X zy?!+QMx-BPr27?&^@|7sAl!$yM=)|PawF{y?sbsDw78)MkKVVLYor~X9EAY~(v6^@ z_f!R^HVH=Y6gZ`mAUCHWV$?u2>Zo6J-jGE@!{4!0c=X^5eEYE%;lW*p;P_k{nxt?s z?n<@RhDB^9=_=7qrcyJTHf?^iFhBqCsk3J%krffV`sTp$2Oxmc^CpIeilt(!-e}BY z812cC;n7W6gXMpBpIfe_ksi<_;HflN$M# z!kGXBEKFpwqZ=ASpmXE$<>SX>Sw2y%R)Tzh000DXU08mP`tR-OS%;M6*NWv*zlbay z#W3BHy^A;USlGUTR|15}gtCn#o}6UE(%uBzed~63*Ihec#Yiti1-GX;Jzi4Kqrtel z8q1)^KLSds7sPlDse~9B|ByG%lyPrG@Nx?Tzf}qI3Y2(574&MTR+^^&QH--&1-&{4 zt>PrK(d#!G1(3`(f({+bZU>bw8Fv-VmRj)io&)fA4?GFa>^lvWw!s^%&?^`gC2vt- zfWSiG2uo+P4`FQd{TKxJ;?&e+LD#jw>ks6jLa31PWe`M{Mn^`U7#kZ~gK=*OnWB_V zadn3|Na^E_W5_~bNT6JYa(Nz%P7_p&_4lL_+}ox^I%40bl+PemK<{E$jhg>NfS$`F z$&I;FF97D2$wXEfUbfeK`^ImqVw zxrwh~ zBf%yL06-u=N&8P)AdWO72D$Go77M?C@pRrg2kA`S#p_~q?TfLygb`HJXgTLc%&UlV2pndq|6c!^DB|^&%0gCL^s~gbqLiv zQxL$mI2XXY&SZQ}ARnPB@dYT6@wXaawF_WZ(DN^y2CF&&tThiZdN(#w|E;zTx-CKj z;&5WN3E$my7{2j?=V8z3B2+Z=gs6-V6)^AdkD5%9RUwtmvazM34|colj~C}>PL|6h zjTn)@_y_WGLJPxV&Y)JSm8!MsKjOmuUN)26*y*&FQ0|F@MjICxBaga^pt)4ctW6z03t+*I$%@(0mtCpy@&vv5BD-P3{8lTOQs+j$M=KJ>9lGvUvF@GZSgcj zfinx>R|NS9z=CHL2mlZ;_g>rU0LGflRv1G8PvLP8flaW90ss)mPgbqTbHKC)0*5Z*5rdkN;H#_9HW(Z{Q-u2;c@`dcd>@=d%D?L|3G~_q200y` zxgA2UKX-g&>DaDjv-XKIr;eQl*SQNQ|3EHDX#G-tNWEUy8qLOBE}MHCLBMvS+g(C) z0Sw$z0%gGRBtjb+4IO4?=Ac?CLO2|TOgxTYK;~_!DV#*1&G*a}N~qIes6FA5rUH2%661&CyTWtU>Se-xb5FgTGMm~w(QL21VuDN>V7^57B6h_4M}r(6aOoRLiBmtdxr-r2HZ9`UANf z5a12T5!#(jF_nlvF+4P|1^3l(qt!sWZX(PU8E*tc4X6-jPnH^R>g*iv?w3RwKBP!I z=S8ro!4$3cI@nr=g8~|gMXi7xUKt>A5X;#(+s%t%UU@9f5pe866Efw^|L$i}weueFM2H@c^_#O`?jWQgP|X$WvouW1HID?ntN8WtL?klP)pe zSQ6-NwOUY^pGQ`p0U^({&&$W$Rfy#km&-gkkQ_w2C4 zO)%%r7RC_!ESmQ>_3IGbxIVABp%OyJ?WsY4T!};=k;?G6T(MSxN~OW~m$*nOLgG(%0sT#gy&F zFL~VGS6+)18907xUGQ@AT~I(o8txkn{ZoiuttoeJ31DKHBs z!7QBwsapossNwB(J}aGi2bg#qn`y#>PaTGDKJp^$Iyeu-F4CLSbVv&GS7cV#4k~`9a|a zhuF9d$cRz$$r$9aDGUjAVIBcWtzm)N9o+Vse~BI|_|h*zU;-=}Cg!x;?P!1hz)kIT z>+fo{YBfj*3;;kNKR)Bndv!;`A&S$zYi4%#Js3xn-5ereVSJ}g|I^gJ3l!Oc<3NTw z9~NNCib43P8`r~@waX!gV8AikpdmG>L=&K(#~(`d@;ZMJ832J207bZq{LE2?P%>^n9I z-}=GR@ZjTz;MimxI@HbpjX!laR(3|brZ2=@% z;D%T0S}-?Pgi?7P)NmB?nK*<53z-0k7vI@5^TIF|YWYP~<&y!)*fMsmCAWQU#J`)b zu!pdc0IHCuT1v#YYdN49D004pf7>qyPh`l{|b?vH^zk-|af3`c_ zxa0AIf_J~)-OC36lsv?no_Ii=dB!n}is_bhLvY{DRj_rL<;5WYxMhBxBI0pGw?z>6s#(PrW z$-L36z6+3rf&PB`w%cymibirL#=Tc$v)M7cdlJ`>`EnjD?Wabg;n38`MzcA$Yj@DVyY*7~qo4GajZvXv`;qVX^b*7~D!Fdb^NEkK~Onju)f-vqi5rMJYt#NS6 z_$&@;8!Wp`dAv{>#rK&9ta(lVoTDrpK9iVoeyCxP0yM~os&S~tKV|xxj9P5tzR=64 z7feV;qmWG`!O}WVDiopBvAr;Z$KWjr=Pg7eoW(!`;XDc&{!mXox24%`eF?v_R=@%T z03eWS4*>Wk3x~q_bTawXQ>V}L&}MX912@iop7C4MVa%WU%Oi!n97%u`D^|gK@7f8s zZ(Ig_y%|s?2Mn8SGzp#J8R#~OX#5*!$93M>&*a03RhX-5uxrm@_|A`>gO5uZRevC6K9XM+HHn$TIUtw{oLD2r&D4!oB6FyxBD3c0KXVg zLq8|U(t24|s%Q}8YOOZwaE%%$vNx*zr{7nWWqbLuv2BtheGaMof7NbvenAw3_eCSo zGOnSgyIS{U!JwZUNZlpN)$06`B}<;^?;qUO)wH2jr)@dj7)xGCkB>J91e7XJE6j0E zJC#U7G#p02+r=xdcyETiq)q$B!?u9tI&Ibw2 zlv?opClA6u{qO)hd%Oe%WCARKdaJ42o5E0nEu)qm9OxCcY+CAEhw zQWBB}nrt-u(!fCff2dZf|Mz@hUR3Y{Yh4Yg%<@n)68ZUjF24yW-DirW;#^SP^oHF- ze7mHQ@tsJSf9A-MBkN10vTY(2-|2KD1O|8X_VzaMG0(O;ZTscC+J)pm(-3Co=jT?h z-uQIyz~H84w>eB;)Io-dKme8H+uoS!a=i;@=exMx4aml0e1x`YQFqH4NKO;Fh=NU1 zLneSm3Ws>DKV$CbVIl)`uT!V!4iN^?G5J2@Avoqv8>BtYLvMT#kVO3oz@VBN1mLnU zk1QNMxJ`++0GUvf_Z^&=F2G!+2|9Nn7N6gOj_4j}n&jX9((LjgX(jym9xb?_xMIWapy_fO00Gr1f z1&a5RmtUELZgC2Y|5-5G81FaQsE}xwj|Mu6Lc>YH;j?Alp8+QYd06 zNQqG_)6#4uqzds^=!x~~RzFa0w0`$Tk34bMd4+ht|DBPd>hB*AkmCIh#bWVy=jRJZ zB8ZNvhBy$yc&JcsG;E}Ghr{8>M)V4wX|-B&-u?)b+3SDb@XJUf0(ahd=Pei`zpGNN z{O3ZUv{}=1>IuzgFA#f%MqkFi?!-OTYOdaDKVbJNh)bciM6kVt2_w{N2Hw{$e&mdVEg%NQ1581kYO zXnXxNY)%0;){${5f!3)&hoC7hIDvW^8O&P)yL*38g#e@80*V|yZJFlt)G|3J3k(22 zAXi_B@xXR6nGWOe3#TW}yxp>Gm2XdU_az?JTx6~Id~eU+_Z5g`FHHNRCcy?$gC|d) zfW3!~!&KeG_7)c=j=mm>f`^rgoqMz5Ij9U7W*C7%cV7pnw;1wzfe9WoA zlL+m05zN{w7;{IE{+|M&F$1jIM9*J$hXA4WDjNxSW?F>rJn}qz_p$wOqR;_@JRXs8 z>XKI>I3~vXLjuMdpFm~%k*TTa&&|%w7m)pU#jbw-oy(Rj6Y==}ojrT@_vYpbvUf8> zuaBYEvd}JB({-m-uMOw(J)80I&&^O8w7|n zFT$M{!Xf$iR;3fzQJRC2%8TXz}Lv1JXj$ss2B&R^;J^5`{iFot* zsD>VQE;KO?c=F_FICcCepj|~4AOYFor4UK?fvG#(_=}R_&h7W&gQmrs?bC@}8sVgHOSW`wv42X-Gb~ zOmfQziLEp&(~2ij;?ku{AIBH^_~hioA?ilvO(c6+kc z$w?V0OUJwKycWrxp{Ls|^!|p2hetM|vDh~~Jv9ZdP#zY@>tN@g;J&djR=;z4diq0i zb94O&KpnxamxXilGQ2WcBG%++GR-ex2^Uvk7 z+0FG@ZAr7!wQ#QqyelWQ#in7JrU9*b4Jzd_&jUy#QxL|G92swFe%0ydeDrTfqRNJplM2=B8xovmooerf^gf!@S4>HIV2*WN3Xw7fggPT3Hb6? zzX{*_{*!R@)I2m1ga}^c0B<}*pqo;PNKZJP+Tk-j+{Rw+X7O7O(CY!Scm;$I8X6i} zg`e^><#I_6LID8)2;?g2FxpJ9cub8a;vbrvns_U2^e~O@bopS;>Pkq?OV{A-j4^KCBd!=<`8axFzqWthiw7xz zi$3xtH22~3eJYh2KuZ6wckkXE({)bw3X4l57oW$k^=`L27@;sm@b6-wPXV}U6t7MG-EQ!^}y8)?q=A!6py1~mE(?nPN~c@YHMd3d1 zLVir-VLGJ$SsgzIf~*pL{{4+c-3USf0RRZ(>IhdnYDkTs2l06{WCLD#ut1Z?Y@T%t z3pK=ivtle!#yEUZv|%tU!kUpJtRBn2x)nJXAM1mG{xrnnVT}DNw0VKbctu`fXTr?v zEF3w05-Rl$DB&2yV{wRtXqLGNHX3-;4LsJ!C$(&!FPVN2VOif2TjA~F-BRII04x;Y@3Gp3=9nm>o;zA z485gKJiq&ygXn4SsfU*cm~8aI(DqB8K=1#KPN$>ztxPX$kG!~F0#By0E!JqXxc)*K z_)w`-JR5`pUcY;Xl0DIo|MtYh#5>WDn}V0o<}9k1xo~2pzgB9s8iw7HWg37(tP@-U z8{{P#imi5MdfnPJ&-M29Y({2aNu^e29K7PLA+Mf?oe&n(YAu+rRCta~IG#c_AOYcU zgb(JjyKNA>(-61 zY0G8^s}ZPI+R&wOy9g%G-+)rJ4HHvyaO}iso^_l_#vq*vgQ8O0-=L&CUTGkcBBBz% z7JB)WY3P=x!Ks`Er!fz5w}dW46RCe4pBDjJio)sHD%}6%Vfg;z`{BUZDzprnmmg7L z5rq_xiLgak5n}PgBLhQA{sxus|9*Pc<1eB|Mr+l2Rc-H4|LfPUPi)z;<+qO>J^G)} z^9z$wru+OxCOlSZ+b=N!t|1@>)V9!0jN+|xsQ7m1Dazg%umN z!Rk#n!upjfVIY$NOYcCvT0$V8^PSypx1lgM3#DQKw5|rJhzjvY2$)s}8@+vov3?N` zXrNbt9=}nU1RW`VXcocNFcg5aB8}%o^A8H2>=4@grY5J8^o(OU}9!&ma66epJ>u1Pz}-?>|m`5*SbRvbnOC zh$kg9alw>CmkIExO@V1zhhA4685uoPD9lelkPGm-+dBmO!lCfLsnx1KjYi2r!!G#j z&*H;&Q|$TLSX4I4Ljh>WDHJe{Y`|v`Om^VXn?>8S#@IG8Fmp-Fu-2eat03eXd6|ZeS(w9+npfCR~r)TEwMkDFg{ZrnJZ>^~02Q8?A zw-4oFaLd*e@SeLj!5ufQf|Wxu#{D}G7VDt$m>?eLjmxP#gi<{qhcgHYaUX8GB{RUXQdhK5wII#Ec zkyDiYy6sE-%E)UQ92}G|_WE!4@85qL4KDE%JoA(~SNLT7FKm^(Fm288nHOdukQm0t zPINl$M;v!-TfhRmPPPyIR_oWUyBm%6hYQ7GzbwmsqUU)J^o>8Q1D_f2*&&I0wid&4 z(3syYuCHC_<=XJtz#zS*)M~XS`+Iu!sG;!oX1giy@tlSP^bY- zu9><*}wW6eCyi} zz|_<{kK3!F1Iq@}@b$ddVGU%^AqY{mp@WPbf(rpdc4ia7J%%1s zTZcG?`qCj0@(2V*mJC1&*@ zjB;vf2D%*$`ZIAzp@(4COQ2T~1XQO%LB%9F26`VY&@^i7qkt1iL&cEb@qMS@TR(UT zez5xlOjo-6KGW@8%&Q8J&ajYX6;r9yBN%V}U(smf@#DvjPI@W+mt=7LP|4=ao1+^y zZv3yuk01Y!2xLOuIoM*l*H`ZT-xvGZJ!*>ETMHa+>B01R&t`q1zI1 z>W~c|t=DVs*L0otnp_FF)@$@`saFMc z4xCJ;Qo9Fwd$%FOHmGYI%k3HHPS2n{(MGDiSgAp+S^*^*he#@m-oMC=xTAG=8LdKI zztKhTT>=BGuN;Y>SI*$!2OomJ_|#v)gAe@x%B8B`v6-y1y$sacI0%sujJ?Oe6e7ID zhgn?=mLL?T0>Q0Qc- zRC?5L0s!!O*f$6$?YG|h)_bOBrhk3DSnTuG2ZL9r9J$!q@Yn%*E>*k9i9~V`!$Dub zwbgyChRv%G5WAhu)Y$OIo_Hd$tliRKQ-zsg1tc{D$y^>% z#Jp+f`D1v^)~Jgn_0;HspvIs8K0(30gCV*H9(n@)`m>*h@BiRYXm>gs_^Tlmc5L4S z|Ke9a06+cCdtq?tG7v&B&MtK_72=ws$+}XKb5F1*LGw6D~FTt{{3wjX#8V+s2NgdjA@jpz)Sf|Q3Bg^cv(+45rcvLUPxfPUvJf6X1>I$ z1E|WN-fF|t^el8xXC)I!5ETq3p!bjTCe%A<;8B^Nnt+3+=inO;KM&t}csCrFs6fjU zcwMsv%quG*T%+6RbXr`ycHJ&n7Ju#d@nbKd!j-6bAHZuK;Lp6|KBZhP|5CHr%=zB` zWqkXvhy~yjFvfzvElDC}f(HQL`WJzk{v_gwPgHBw_teP%(QRJthvQuK&&SYfKaJ1- z46X?S!Qg9NTVCftacXvUa$sQK`Aj0d9S!6F;t7kl>hQu))W(;>0y7v6I6XTDI)di3 zEP6#^ZI%N0?82m*kJ zEb_dC`BEJ;+bt8csDl?Wda|lSW64C1u66&qRwVx`$l!cQg&TZP!f3k?;T1_!w}HT$YR}YQJ-8F6kHJipx+%?fCPqva3RAZ?RM+6<^n8$ z0172ltCgwcBg4;O=xckUQ6E6cobq6JZZE|vs9UFwXP>Kf;1uq+NUH`RNr6;646#@o z!GHqAat-&|v+(!-^gVcb{|WT$O`canO@X#ZD(1r&4)va4L{{N33KlPT5W`r0Q zkx8h?sAqT>P25eJ2I0Q9+zg|+5Xj8rF+!R~M)SZOAq0jP0UN!2F*^j&z9qmCIi%;Q z*(Yg4w{xGH%p>4)1l~578V6Crv8u?>*PDl)d$x_4wOwJXcp*fK6 z$%7Q{fnrxi<9{5!^`qVJ%z!TRtY-xMTY>-A?z{9(&^P zedHA}#;nWz%E(Y7O`q&^I{y=oyjL|KTt4<%005l+4Tr;hsI-q3i-pI6X@S@G_MzWq z#|<~!hjIFUTdr1e5_+W^v|SM6znt^pg^EnjO*h|si(IKx9!I9>a_McyM8Jzoz!ZkR zo*(KP*j_DH`>EG}D9X%ne4v7~02F_B1QZrjEAt5S>%4@~5_m^aykc6Yry>Xv z;**mTf8&i<4gf#^00Oy00DuNfjU-}`Kb)N}4(kR5;%VGJ4*?)nx6u2K!CP(#AnZR` zhFaI*g-YamS$u*ZC;e?%mV{&`y(=76e>)zJety?8&%Ds?v|n+c&!vE+Y&IL-zJ2@e z9zA;WR$bQ>@{WkQzfu6;hXD|v5dHhzZnv}RoG}RGIuu^|hs@LmTkY0+@HewWL3ES< z;EL#ff3^h8-l2rm#MIQ}-yq1)ufVW5mTil(bF-66hevl04G!I)b+!IxyN%mR2Ownk#j)XR&RoaOds$2!GL!VCGUU| z7Wiy2JRjxr>^nIHjgH%0aDg8~&}G}!u~Mn{CH(#a01yCxKwg6d!dPBcZZxaE&}w&w zY`->*xfFT=DZZUs$Kjq^)fvdlZPliC&`N2xPu-WNkTZ^4^qz%uy6`=r2Z-E zmpMrDVN6~$CEh(uL32&Rg2=h0SigzSrw)Ep%P%2IkWV1(h={*hn1;!jBE|>NQ$SCo zh1B1~Y#H{Qm_a2l4HM`IbS!~;8N9}yCsENrR0m_SQDMpO;BHBhKXLN-vF{%{etgy& zE_XD`Ctw{C=A z{@@2-e8npC{B_jw=mbR5(87Ib3&j4}Ji!l;)~CHK3#K>aQ*c`YgWx&`BIN>Dyj{3y zXuNb*bckU<9f1s_Z6cQ_hd@$g*n8?MIs*;VB3`s#kR2KfsCBw$@iTtWc5Krx#SJ6? z0D-)Ut|6KoDeXwJ)&5mMat3Uk7{>zuyhUhlLV3OuxN$*lc5OoQo&x7Fv*4N+jEM9(WW@>T| z8h+91+Gk(scSW_@XqcmgLg52wocpQ!8&SS~UH9bz0KY37U7|8(YuBt_x?#gc#4SgU z1#M2R-@Sw0xnmmUo#_4F!Q94>Os3JgUjK(H!4`h2Xk?hOH{EnoWM*dOVZ+cbdjzhx zJ{@Edgo8&8P1ox6{rOaSZ#){g0hzHrN*3^HVHu(Uu#w%Pj5?Ym*fywpCVJp#s7=DW z$mXqDIRZcbGxxwvH{J-5aFmz#2~q;^;k@sLATdrTh=PSQzD1+~p8-Ib|L*=5xEC++ zal#Z1G>QEJTW^5g?I0td^I=9*ifB-1Kna0@dg0LIJe-*>K$DyZ&LAih<6t5Do^HA6 zmWZZnKdRMhK_0+$CPMHPTxZ(LYyN}AUtYOl{P$!vwBFzvKtVrQ0R`1T7(?YtGZL&F zOhaC>`54itiGaaGXCL!2zk?P9X@ zkquim?^D7dYWv9t2npzM3p9)i+y+)Wr-3|m^yI#I;?N&dLFbP*5hR%57|0ktl)?$lDiRYx zGeMZ>@I$aQNGJmAST+K~5g9{~0AcFxL8p>r%e1?(6Q>T`UayzMbKhYg0RRZ(;wr|U z*Kb=i^7ck*;)S=-us=paKWMHvH31pOMv<0B`VHgsD&8q0f){OpC-!jLg!FtUkpVT; z4?-x7+b&8VfH;Ao5;^H5(16Rw{b1O0QoW;C1d>g;$4Yfzw)`-;X?h`-%a8 zyDkW%BLD#O{@XPB{@gmcVj&ON(hOZVJ2(4GCY$}}ZMWZkU~q7dXD;$^hDG$fo6kTm zY}kbOOLwA!E%5qg$XLZ`aqKhiD8DJZ@<6aOfX-0~EhAnaG=igyU%l z#S(a3g~iC50|ef%mW2*wO+>u0hY%u1grD<75d$A-)J=0>cZduYOv3Koj$z|%?KD67>tI| z^S)Z1t=FE~#t*=rdFGj?@w5CK-uA9UJh7jK|JaU8RRY6F66anMF-S)wQ6b7I}i69dY ziKE(}E}q1$Q5R3aOSG{enTSG9KFPxa6ryy&gsTrM(@_Tc2O_E(0w*8<0ss)mtBa=T zCK^n3Ud&Q-!_Lug2nGiF5CBAQa~b?L>J32cfq7F8+_;iTtv!>tX=A*0-yPcFX8L;h z?F$EG{!?`Uc^9N3d1pY3|C?He=M>0F1SZbT!neNr0DSf9{{)Xe`#j85>pWIyGxwal zSkA4Ac6xex*bO)A*qeyQex+D0JPU4Swg8tl%J-6uKPfVd_ri)5Dr{5jdf`G<(;rF}R;x_EDKvmTpTeoiiqjWmMyWw7~__hZE zoKmSIJpTCO2d1Z||5=daUyCI&$3;ouBp=rcRIUcImxE{=Kkspoo_pGRL#qeiE#}J$_>H$dRB!locK*;LVD>92sII zlkphz=JLo+GH&!;Jmd&;T~T5;Zr;4(|Bc7v;??|~0to=X8&WX-57|s6*=~0gw`DHh zWt@_y4IGWikjo}Ol^HM3kp!Ekb21O#lF(I1186Giyu_a29@{L}Z~seQ+w+UjuXk?4O_7C9~< zOb*@{)i9ozcQ)Y(%nn8reuzkQXzCLaG!Bog5rJ9hjLD&uvY(LZn6+tn0` zA)8jfWL}r{A7B9hAR~l8&A6yxy>jF4mxqcJYLX@=&u(b9+gDwW`b>b}T3Mk|uI%dV z>-(i0J8wFhOeGnH+;EE-Zmm8VZoc;w5$d`I2Tz`Wf4cwM@Xhc1JsjM(3(W2eFxBMV zJ^=-)7UEvN?JQI_Fy5O}0B0eT;pQ07*l|iK7Q*P=$Fg{y7+8Yh&gJF_OL#5}1B5Ux zna{)_toUDr&6xr4S}0FVO|GXz$6%!f03eW;S1#`C|6Equv}wbC4~0Y9X&*5jadXui zse^bt3dv-QMsM)V#}kAIdDA1%+jr@@B!CijseX^OcBkU_+LEUdabVzZ!_RnZ&osKc zR7gq0k@{zF`0#P~@>l->zVdhf2#1bNK-Z+wUx~;6$P2P9llLX?+pLm-Y_?k6W2a8f z7AuuSn&jFDDqj&}v1`5NJbdz)@0naF0AP!~C2%J%I<_4w)aw}t;BQ1T=_zxaD>$l( zxk}6L9H?|hN)sD2H#gVOwC+^{7#DsP7dX=vG9Z;yXZrekwRkK_j)3cCGaiu#-L(0v ze<39ECSQk-9fPm_{olgZzy5b{^5hY`pGNo^d?)hWR*M@V`GDE`$6Iyr(nDAX3ph#$ zq)-eLWEQEH0C-7=e5>JGq-uh6Dvm%v=30e6%i(Z>`QMY_fifqE16(&E1z*ASCtXcr zwQ6-0P$ytnpaejXdjz)4+w~?BAxOj&iuUsaAb}_H*c5vQ8{>pBdjE2~7dLH^G6uMU za5uWUF&#eQ%Wc?UGuL~keM}TLH4~EY217I8`MrnW@Bj86;X4of048T=3Gd@0~PF26AJ_R$squ6%hsqj{UYOkHI0rxLK@c|RI4?CF0Un^p{GH~c`Ge4-$4~(Xsz5pf_8}8se*e3`ka>R_K4#_0&91W`5`bSc zXwy0Oxooevg)XVtj|&DU6c7R+W>Jlz)d;ysgO16a5aJD}p;#&whOjDvu<*Wlh{Eym zG6d5ygY_8zfIu$6sL_V$Qr5CaGq$M&!1F#ugxaYjQf;cjlWn|iH++yNZx%!h0F~~9 z-Gm*=2XMVtZ=-vmf8VKf+uR_HXi~p0i#HN!l*{n^vrog{eeIv&yZ8SPW(p;IT?OfW zhYtubG?Q}@qy%lt^+0%|LVRj-kQi}KAX<<{@aKwlrtEK3@K0y3$iiHY6`11Nk0N#GM@VC5rAmCiS0eSz|5EQaVB;v$kv1JHq zJ~cHpe=CJHcmqD_319~r@ub6fQi7$KvK*Xh0!r>Bs;`v(l!De$Z50q7qbgfNB> zc>*x_dc$@DgdSjW94{9DJUzkl1<mnh|5()YAb>P7F<^8l?YjMuv!q?O<{fMRW(}D%>a}kIT7U}_I zbo}E;03?7R2yiQiz)c*c3IYrVMj~Ozq*89DKwd5>@N>9HxmExGu0shJfa_4m^QZb* zqV#y}udv{%^UWC!tGtAVn(lCq)Zybd++-b@P|JTdR}F8Yy9*_sP~$8*2s<^P0!8KA%3e5(6u3!Rsefy3eO$l0@J#|_$7g5dBr z{N(jh=D+L?^s%TrAHIh;ItAo`lg?;%bkL~7A0h=&j=}8o9Q@-qzQIfS?z`_@uzKxU z2qU1SeJhZz@Jbt9x1RC*J>Oa2Ab{Kq8ZS<{J_PpJLMo95yBr=~kZE|x0+etTF71V6 z=0E}f5XdWU{_~U;^O|viMLFa9JZ8zn{qF(2?kwrNIOo`%V4dW)2xyM3r zdaCku0RWxbbn^i)h_8qgW^kZZm_y_LL-^bm{}!HjY9BOP7OyfOz#t%fmy$)uQmt<$ zf`(A#)5)gi+E8t2P%|}7B`#Fqo1`oRM%4kx8d#DT-+If9JOB8BAN=6wXXoZjZ>Y*u zQ3tL!c7AN}YQ=qh@6n$JfD8ajC6m(CFeHIo8zEzrNF<0Y6Wb)aKZ(9knDd7_44y{~|&Yus3`LJ&Z0e5ozhf`RrZf5&a?!9S-! z&W0^=!_TV%7IKJ~mq6^!`eKXHeckF{FXxE9f5(CV0R#XbkV`}W3mw3Hi0#GXsM{B1 z+R{j1!L1PBh@X;m$m@}m5U1!E_kaX9QFvhtD(zo^cki-L2@nvVvY<+#2oK-?AR7O# z!jn%Qgl?B|0q{AxLj}(;m{VcZ*a&Q1I}R(BFNJtKM#)cb=;$fff8-cEdEgAx+a~wE zh<@dbNr-7+BK2TLrDf4@mijgOx~{z;<}=wa7F+J=>6u-0TOiko_-kB5aGcF%WelO6 zcl(9cukh6t_T`lTidPc^7b1qYmhv(^#01<(``P-4sP>rqrXRx_W z0e7aB`}*$ZCQ6^{5XSs?0eFP}dEbtoXXNJOK+pgv004npuCn19&~YpICBf_91yuS^ z9Z3X?#bdl%ra?gH@k=W2>&@?_Ze8}dQYcFFqmlc3gpcI51+C3Z!gn9|K78S;--KtL zI|eoM{6i8xLUSOA%5-cr0q?wRBWzr~97cMx(34If%_l-vLyu!bg)?i@kcvm(8B{hi zl{QaQ)bUMf?obdr6pjd*36H;c;NZV+wOS@zgHgKV*KAR!Jrlu$VxLU3J zE%34FPEZbT{Rz)uN02soX5vg0ucr7UpmP%=uYs|?c1fWKIL+bV;inHBIyByHw7%QOXW1?yqrgQ00i<{_1J|FV4+KwTe9zZ{gn8}LAvc{^}7h&tygmv`tAvWo6Sz~K#M4S z!A;yL&P~G)zxOTp!WaJ@o_g^R=pBQ1@}ji9cvOKKH;lsD?z$1St{R3+Gz2j;>@uCl z>Vk;MC>fPu<=7B>;Jr&BoqQbbfAl$+E4PvMx7|c6R4Vag3YLwIclPbwU2Zg+;1B7! z8iv^~`J>tYixaV~wpT{yipS%0wXy%eUbq$@CXg%tjc6y}8e`wR|9f9Vs(g(kNxx0Q z^cDkvt7`haWI5hq*S@M{hJ;&)?l+KW`x|7@Zo_pxMm@Ti=&%^Z`d2R-g17(FX1ICB zCS>R&KGv7=0JLrg^sWZcXaYu-3_>!QhNYv+Ao;^RPn4Z$UU3 zf%`D7KRi4NvZ7)LQQ~~QAOAnMk32fxyGoa~&ngP;UZgxBIvih7*^3?=NB{r=xjY!) zX5!ilNjH3m4;pgv;2CB4TV6&mRRPe!hXUBVmX{`W`LR7p0HPQkmHX9-^YFwEzYkyk z>X%{9?n9vI04nbYX2VcA0(ahW1H9v>Ho%(Y{g6^D5X=rpj>J6%Li?KF@X2H}mtg(K zAcXGR$%hF&_{ei`WWEIsc?ALuBeBt65%YJw?cEz6efT^3iiJ7*YI^E!8&t^_7MCzx z01~eB{A5I;(J1ux_J$`WPG50#K_J&u*woaNlS-vp1PrMu5Z^;ybEqo;0e+LI#cRqP z6@B$s0B^nVLY-Qz=1fgZ{wMVQ$7rgN=$Jw>F2J_61MrsHZ-kpStbiQuRl#cTeH)5I zL6sxCESJInsw_iKCJpIG7#ukbEqNGrJ^2KjI628d%dz9f;p_kK4?KtFJwNk)7#Us4 z9Sey7wg1m?6OVmwpLyXAYA!}^(*`#LK&6DHWq?M>%W#eXIF}9>l+OkLAdpKEQYu8r zQEff*`v3ct&BSqb(Ze>q$$zHPOMOK25@d`JwCW9b z92LRW{{HLm)bq#je5Ba${AjHEvoW~)mQC>fcisi-#(O|(7I+Ddh{{B_aJis@5vl#J z5{0O#;CnPdYt>=JvOais>~{3}P3ZpUML0W0vjhyGGFz~Z+s8Nc|39A|n} z5CD2dER)HgVV@X-lrjH5p9QR{>U1)hJQl<G;`Ay$crVhc&Cl;1?6a5QQel zRtqL)E6~skID|}q{mp-dbS?+?CBl%+_3&wdyn85R`{Q$|&5=m@#MHpT^MOUW#NthW zytWHqq2tlgENFM#l3Z#u#4KNHc`bv3rFq?n7<>iSm+qqfg+pO6l}P@w*6l8pWXZ8? z6Zev2xeMJ2hj(66&s2t3Hd) zjBup@z^8Sy*{raB{rc5Mj~?BK06?b3DF^^Axg#K3@M+FnTRbF*^j0_=rZKbs&*bF9 zU$$D!t2)#ukZZDsoUL28-h=Dlwo<8N;~o+?c&4h3tKf+;*B~R<6ouZNo>Ry&dLr)C>^!mIc{EC)&$!G;_L z5p1tnh{1;gS@`xtNR>z8X+BVBcD@PCP6xpYLlRxi?At0(0{foLnx)`uh5RaOTXZ$FBx>3FMk@BWK5s z9X*vw<;J?=L-qDERgEF`R2xoW;rseTUEp>?GTn&SSFC^{Ir*mn5P zp%2x|)x6-?LLw@%6=VJIbNAg0JGQKYOftr2fDi?U)D+0EG{n-q5Y7za{zM=UN+T1e zcul(`-nv`Hu$^S;oU#vvL%8J`?#~*Os|}t++-lXJt92loNI_q|7oy2DX9BvN7P657 zsCEd8{2wH=89keI}DJW34!tm_gL-54j6VRb#KuQYqE0;uxC1Q!=hGl-$ zc4IIB00;m;ATI|1a{0VCwtU&gW@cxXAccwXZS-Kg#5MtmfK*I{RfAc`r4kUfyFC7{ zQ+=*1flj4;7{e2jSv1lz2#)H}Z#JAfasDxEK z&%f;^SU=hWvY?}3#}}gc-RSv?(H;=vJs=>3C?g0E2wbRf-gwBySR)e<03h1eZJqZB z=$fNs+0D|w8UTRke*t6vC&$Ofzj*fS#1UQRz$E|x*RSxB&1$u}4}YsXvH-UrIOOfL z7R|!GA`n1E+O#bJnW5&EEnB{Z`}7AGZm_Qq0MOt+duVv+4Ti3Lrdlem1H-gJ5);<0 z=!18??KZf3=W58OqujG5Mo>bgk34@R-H&*G2;{^dGJr|+z7yyW;J&9xpa|5dcRw}z zVHh5?5d@@DAwEp3QLez;d}#)iAOMAviqUfFJGJ1N+YwfEtv$9YT5epdF3Igw?B8&s1xbzoFkE z7zZ2xfIwae0HDV?I5;?T=FG&VZdZ%=9t^L+B^ncHzvbw$k1QF2m_+^gEuOtgu};I# z+-%-(+@-)t5#W}bI&%h%{}11UPZT@2i&e zz&qc13*2?v4(LzgUPgdVfL{qC)0XOia59IWyoV0}0~w7!Q;@ZCjW2os)E9w(I%h7B zrLzqkDSjKmY7~LK4b4^?4SxsPx&f_j7wYvY?=U#h(*wC|8b2iJ8)OHdbQ;>FDbVXB zaP$s{sD~tE83Y6zP2GV9ckPGApW6#_Z3ACd2GgBELZwK8qNtVCt5$t!W_IQ=WJ;XC z{s#ackXO(NXvpk|iL+0n(wTRmS387W45DUHkf>G{H?fJEwLcYwrNbku1zVf$lYMZ^DU>ZZ-5OB4L)-6#PLT6gh4?6U*DU@%iKio+__=Lj<>Yh z?OO_k0%rvTws;cOybNA757JP1k(VSa=gf6G#MT%KC@ zQg={`;T~l)rk7fF>*&3g@mv=4CKS{aA())3K(SJ%Y8|LIn^0*qAfW>9Es#LAu`_iN z?7~s7>$qJz4Umat#Ce|TsY96VEmwj=SGBs8NGodH{xWCSzW=x6z|qE(@+gW--=CCUJ`mT2~g0Wi?+@i z1BuM$9zsVaP!PqiKn!+0u?s%^*I$HvhmYdlGJ57RP;c?Ud=%dQt~=qjtt)wqk3f4U zggZZ)Mq`h0M)dflWFN8#X!xZtxR60uuz)gU0t;RraGDqH^(J?WF7HejjYN^n$m4Yh zPMtbQ)eB5Qno~2a!E7$SZFKqg^Nm_{3g3%(IZS|`G&M9d1k0B%?>%$o%!X#O8TOmM zTp9rIExPOZyT;#-_X^JN@Dhe0fCr8pJNh{77gE;2D!uLjfEWse>@{mw-+~_J9hGXu zL7Oeuj&n6y(s3{mkHsr1R;>8K^z6)|7;3m&0E;AoXm8xOX$SI3e>HXX%m!WSS`o<- z$47hNXW#WxaQ7WILQfivKeBBm1v1d^N|7vtVp$Ml2m+9i6V(LnUDY-E$XrokuHeo6 z=ew1;o&5xQE~P^nEh-;^ghBuz3e9>0<|;*~v?-M5a1da$tB^}3peGTAZoLdveG+V~ zjv+&v=LIx}EluU9A&% z{{a99FU- zfS$jSTZZ065BK^PjK8Pq+^&QUrx_hF!W9C|4;RqbGh`7^k)fh#BGo9vKz|=#qybKz zoP%1U$xKJKQE3il`unyoTd{KY>ElPI;4%gUdIp}MhewHkPiHcjUqHZ=qdb7u?vc6a z2+SM2L`*+{Az2bxBpNYL**|&a^yxB{V+T0^*RS!XL^`}`{mO?vxB@-%PayCd>vlV| zANW{pxPpc~UJ{^9?X6SE)RAMykADOKCsoP4rnTl(ry$W5ws-ElWrwC~pPHCBvq^8a zY>c;yD@U^MGw-|;-hSsc80<-)$K6KX9m8yLoEv;8j{7N|;~_Z_DR>*>@TN)NA1Qy{ z=fgAn9#rL1GAW`jr+C*s(b0i*IslC_FZb)qXJNWnhGP?R6exiXh7{}N3UBx|fMJJZ z6wlk52G%WeR)PA9v<(R=Egc?x@fdvjN6*743?rD-69Jt7w`DQDoGc2NL}LH!-1J9U z?WPHV_a6X&KrTtqxaEN1h>*+XQ`Kr^vuT-Rg&jU*hhl7o3GH?hA|VM7VM8t!1wlsh zPjk1?Ad`Y9;-34)gS+4x-+maTD{Y<>NU=c&~Ic3nL$ueLtx>#c#|P;nS}nn ze$X&HKRY)I^;VZ52(b*)9>`~NTSkXR_DxSuPFmJ$ucY!lePRQ8dU|pgKG}rl2~jnG zN7=u0(W3`L{Q~@^FpCEM@Rz6iQ8`n;bY>vEYg^Wecp|<+4TYX8%ooaV1!0RouBq{7 zu~^J`*H6E5t*WYjf}rs3x%qjUQS{#fzP9C#!Cm~jUkoeKdf{03ER+2em~6N_wA$hVJ28E7NA@J3=zuYEOgP! zr>uVbPO_OebnpQa)6-CGc6g5wBqE?(twC5}uw-Ne!cK?x648N@3L{YI2=LSk2jTuF z_rk%6GPHT75fv4QyfLXDib6CRDQ6PN&s6KxCsBU|^nU;V0(mVu4LuiARh4H32L^tw zR&Vs0yvMG{lbI|G1<=UPYNf=D^I#@}9%~$Fcp2mvB?Lv`$=&LlEL#G_?VyY66EEq!@LGgcTSX=;c|+XC?~J)l5ORCDSpjq5l4XdZki) zu+?fxmr1b;hG7tvK^KV=RslA;*(nZN}y0kF5Zu} zHwPld{mJm#)sZNwF#o@l+;S=-oibJF@6JSeQ1}#Hrlv9s}PAN zq0wx^(Nj~<(p)yI($t{Uu0uE;gTZ77^63;bO$EwL3-+Cwhky9aWAN1BDUAE$DX1kf zMJOqbh{`D(QiZi^*B+ZI%zXsEC%@)5*e?M92;`D1nit<586IKd%U49_3q^`&Dtxjj zdOD8djwMAZ9cJbW?w}ux`KR;!JT`a)jqJA{dJ-PndmQSTjhj>EaX>QIgXu8bebW}$ zz6z1OUUB1t0`T^rH2qHqrSTk8Pn_hjMLrqS@1@4wCvV;WbBBO9g0L_Ol#d5xwx@&) z?sWh%3=|g(heMFf=b(!$#p%;0q0!Qqp|x4LRup@CbNh&8UE_nav!ot+yFcb{~dM+Syqv4(#L4ZK<7yOQwkBu!| zdE-qxpMUYiz4Ml7U3V2ti@n-wd0dZMhJM=R~1T7OKi4lPFjXTY%Cx(pJ zGk;B7Y;J__`7Z{Dw3f*DBb(J(wrtrSBgou^48SEXfJMoP_OE>4mv_`_^-t~J_u{5j zvtdUSTkNHLocG)gZ+**6Fg(-?Aw}e)yUD;y7~>D2=g-jdm#7Da5_e<%;7$C5#mTJ9 z%hMra?9LFeY4{h@K@}QE`(LEPi~uR;^ld^K(xm;z=Dh)@@x)mzgNp)V7~!cFlC4)-qtG zSVv^uMVeED>2e1iefA(c_{1JKQ)(dcr}(|fr+U#`fx%Q1Zr!v7HjN>b*qTMkk6I3+ z!a&6+(il($kahqWqHrN_iRk25`Q{5Ie90pX&b{hf)A2i03dUs%kdb1 z3+DnXW(EB9LGuLY+!UTdP+m!=)4zN6?Abpmm&?{`EdAq;efzy{y;bXW|9sE$do~qH zvzFjk;?kiMyz}k1!Q1Y+5k{8eKoM!y2bxu6)Z|bURGy663oMoghD?A!IX4*72gm)H z-Lh4-VEk>qCtYC9=Yk1%i&aOD|1=u^NoW=3!R{0x#HeBj0Z|uOL@5UJH61=N4`&Na z&>c6lM?C@xl_u}{X&4NiKXeuzckb8Hf7hJ_(Qg=hSW$QePu(;$a2VGXVeyiBzYn>$hUuPN5jLYrEXgTD9GQxl$3%PS3!; zqo?5c1IOUZOaXL0B3R~BAmiD<7DOcn#zzKV`A83M@o9L9M8x}KWEQBi7xf4b)EJ;k z>?%g*oNeJ=zsKm2havdWh8X1lc-hC)A&|O|Q5lkH@c6$$GYaqlDWno}nIxYfP^uJJ zLo+SI(E4+^%(hjlmcP(yx6d}4t=D8+eR@Ba%MnE@p>e(iy+DPstdYLu4TBad`~^=I z|C3djd;JI=cvC4@KdRr*niNA%|KlN21;li9om06)puJ{5V(x zJhv2&$L+rUp7$EM{_E{-$HLH=NHy@}#hZK#HsfoP24YEqJNJGu6SNor_<)gqdoK)N z{bmVyNMx#HaZYGG*NfdjR;H?P1t>C5>Cz6c>jM!t*}wQP~JqX zT!zyV)3E38NjNc8fHo!fhzLSRx7d7GFdBbLNT*ZXWIFYKoH%jhkEf?6Au#^ew*03{u5$D~}E@grnwd|#^$-#pM+vxrO_syF(1BOg~ zZ+3Q8ru%#lKuUiB&`^(aRdJ1fG=|qzZ}^f6ttiie3;;0!WE2z`qq4eTI#0TDx(WlZn1P~$9v>y4~r~mq!?N)mszv3dlhv2^b^J44H z;?H@N#x@K1zRY+2^xM~-JbCiH1q8wIWI~`aSL%g9)f_S(aSOa#C0!RIZVrwA9ng1l zAuHqq0sPKvJioYQ%a%6AwEr9dfQD;|KDYB4CJTy^AezZY?4}oAc;OzZkil0Kdvh^( z*V}J}pMB3=81qMZpU3iD8@ublZ7i^68>rH@e6|Bl6ScT&tbtn`-6Fs}oHJa1~95+E2CQcXO`4`W?Oab>k-biyq zEM9U<=aXQ*X+oui4u#_l^`S&$VjN5YQTQm^5RlnxV~FJcD9ld%akEkL6LbUP9{_+r zt_T6Rb?t&_bnRR=`=!+@xBjcchYlw-^mHiQj_3VQd>a*mZn>#H)bxW-^CGiMna_gD z6%b3`LBziA#2I*MUmSWf8z7%Z;6qReQb#{x0Q43ZO;mo>IbhK&grq2M`Rm02Tu+~? zBAs6fptuT@UYGYsbG;Os8jzs!5+Z|0|A&DYWK@fwH%g$OaoM(hDHK|_!gN=q`Q&1` zQnpT+^uJx zd-lEfIhRt1#UKNSzcu}~#A1*_=f=(kfLBVh@Gu>LMVjy4>7s|&Y`9TINES$o0QGX7OXwuT4$Z*J6^e^IU0*GqzB5A`R7x7@V} z?t8~AFt&66Df%uStV8=m!gxFaeGoAeC#Z3R3K34VTke2<@FAh&k^X*r1IEXOQz@>+ zjX!Q+U^LCMHU&oIEU-o$cPdpk(9Sh^h`@4WsJ8*0+kX@udh#HgDI@(4ZW*z=-Dw;! zB?03eAh5)27h#ao!2uLT3NT)lO=nwz9Qr?}rq2Aaq4N>Uf$-VX$}t! zeNqzTKiIeTMMdutfiF_o9bp8|0~dHH4>$g#U&;8BcELXtMdBO!)NBQw*?R=muj+?* zERB9T#_-G*KAt)VcDT2$w<{P}FM*mI;<0?&dk2gfeGmws$1VT>Qbndaub8@l@mQp* zIK+tRdJJ|IlnBNhEi_Ke7RDeQxb?;@P?iSZOJDjj)S5@dnVA_=lGRP3f`L z)9IP1OQsP$rNb}|Y#{^i2dKc&_F4Z8jgsQH!pO5Fsy`ZwqS1cE!sy8%%^r1HttP+i*MIHf+eIdP z^u&o11_C6Z)9x5Yj~uzpmf1$$-5voSlV}{Yo3Ai&c7o1h(U@exivd&K2RD440e`hF ziHnot=utWW38ad>+XyGF=;_J-`*WG~CNvOm=$a1r{*Ym+-GJceY5Z=Ko}M0Oe0*HM z@90lH|Aj9cpw`h*WD}55hv~^_z}wlP@5Z?RAiUa+5HOr%>AJRgc7FDjTD@*XqfwCz zzhC{qft+n~FvD8`Tkh>H=nHd}0DntpHk%k1w-;WUGHnqguyyO!X@i4os<2NH)@@Wj^ttBKDiAmzEw{C{_z3*+XcFl;}qaP2Mg?amIA(F;e ze;k;a;N!PV!AhvlEfOsOW&BJ-re%PQsAXIMX73zA!hzNZM zqAY5PD*jHbQutFH&ke7=G9r+lkOVmZuOlIfyV0m4FD^dc*EeveQZ5|9Q0Mlp)>X(O z5d{o}N+S0bIXzD(p1XUF8zA&e6z*aSyF**Iq06EekIzC+I);xm7btR-C;B6_usR?i z4U7>0vWUD_fbE5PMFJe$*t^S!E2V|&4u21*anaLo_#{GJu7n;AmD*8Nu!-l6#-lKl zi$Yk?q1&iJxmZOHzRD2b#O}Q7?K_q&8*jb1_xV%c#=I|CsSq0KbUF?ir>A-c`gA#@ z+}db0B?aTzu~eMJQwfN~BitJV=GIF)?nibH?g?#|_N`=5XI`8p+D(sx5+oW1YmRdWV7 z+Qk)p!;Raw;P3JuCMG6EX@5xM-ughxdn|X>$unjyAmRWbLEXN2DC@pMa9+;vmHbK#cVv>(&Pl&T!-JPzzt0`iI6}Mw=_y z?hFr}#7HZX)-L~`xNoVxpXtZ|G=Q~>V3kgSUYI~DKMyLjaW9vk)j_t1W(6o2D0ic< zYwtAt!}s^X?xRI$A~-UbTRq^#6g-lJ&p+V%f*XDceQ+v?3AtRZjf>{Di>1<^5C8-g z82~j5Y)0+~lvl<;@r#=-{2#q4+Db(d?YJ*rtkg0 z`$z7)_paYhq!aH?_h#OXH1sc5tJU|RSGpB-><#Tsdr7_3KvvswZ0fWm3XZHQ3=J@S zJo56n!S;=|+xkFQ#5A0r*mf@N&Rn+UW%BqI|MP!eICm~;IPK=2Ng|Wz{ip~Iy!R!k zGSR|(0qK_EVEDl4bi2#&sW;#P-CD2JwoXk>?r1a{E7xsYclW(-yXWpqF7y1vnTaM| z@>is(i?ArU@j^gA$sw6c+R69k@51l#-?Z9o9^!EpHTiMQz4P-LJvoB6K6!xK;oy!E zK|>J)PYA{+6cA6u+0LCiiqq56|K_Quo^E)_D3@&fF*IUt-@f%`e9ouOPE4-vc62oU zaq+G@*1&t-c_(b!xC$aFAKJku>WL}=fPTE1!*E-Ycm1P^8VQpLgc6-FDyz0Gv(<^wL?-XO3eOU=~7F6C?+DezSxCK7=SD4&}B4yARF7{g3T~ zT?gi%*fGH5Fk@lapT8cw{o%Omij&FagyrMoU1ZRHyEI??-!z|u`7~M}0RRZ(ngRh{ zjIU|BjfUZ=R4UyJM?HL0G7lUr-pX59W;n6?hU6BQ0gS?zO87~;n4c@M*}0|H9-wdR=4g{^OtcwNLg9_J2qS3Gb@Zs=rjJRNh~2)HmY8w&F4BH8G;5GnBkY^VF$lJe^)} z|L^|3m-?Q4D%`(xy<_23pR)jbE;xs~einfofD3&-dVk*g#eX6{_-Eo_3B+B<&Hx@O zyWQ^p$KIa+NOB$LfpEOcto!Kun4bHd!ATqh0gwbKlN2e66lF`YET6KiU2APgmbBKt zUajS|?De(&Eo;4pv=+VcuC0}AN!CsACP4xqaRYhOJhu-_phw=GO&rHwOs7|lSFCnI~ z6f)zfjDO|F{_?{ZX#c^~)YM*jL)upyq_#`aBQyQ2=y%pX7yUmQMOkFlCrV4p%m4S> z?ED7og4T{$5&I84^x$K7g8kanOK;rmH*4NdK52jAWA}5f|EUwlA&;yFX>{lulXi+n z_d2NoaN<;wO0fdp(w18aWIO7dqLPNNn1%DT{LiMEKZb8d)|KFIWeTcG*TF9>;f{|c;?>um4qfrua`8J^0ZSQMU0N|gr3sUU0h z_c8eYFN;fyzl~)auP6BH0f652Hsb(VWNWoLW&O{Njg3|D{QEF2sE)D0jrPB{E3VBV zNCQ$T#Tt}~Wz0wf3=a=M4r}&av(BZ2bSeRL5+{>a00IEpp)x>9Sq57+(}jlg7wrH* zsBSfOCYL7YC@S3q5=r$+w~85Y7W(sfNF>u-lSN8VtgRQIRITrs*mnSH%I|q)Zf%HWJD0dp_LV)= zXjG%62P#lUgP5Yl^+2B0y?xQ(m3l(mUNv^C=`tEaDvytk|0q(HaZ@UYD9c;C&4YF)z3>tG zUoY37P_95M(+`6P0usp-+XIuLSYX{Rj+un=25aIXg$q<1DRi>_<)z7kATbxwKM{ix zPbj4_1qnNj3r?K<1}F#<#Yw%yRASFy9X6Y`pk6P+!u*C<+bkjf>5cC>aP-lmr|y4c zZhG=MvKBiUi!lwG$;jc+(L+cP|I_*TxfHdrQS`yGfTDe4F|KEJ%6vNpzP2DqJ@U<_ zOEmaF{P!0y6S_z#`kuWL^2Di=xxe(If9andKY9G8_8;8;r?D*a=QlPte`K?;c?5%r zUu!n}R5mT?Gth9EAj4-W-)gZh?i5hB&F;05eY?kT_G@*%1R1_iJWl&{7!PokSSo@!#7DWoq)Z*Cwel0BW0Wn`_?Qp_KjM_umD7?$3M--gDn^NF@Xd z`kFMnC!U8?ANBf=f}I}1)i}j=+^UO4)#0OIm4@y3+Jl4MGe*TYiD1?(f<>AC@?|J5 zUIVMN0FGA%+by%rH-Y)4ormQ{9=`qRRruW3U&i1+4ND~-YyOIb@C>8CnSUS_3IKp@ z$GE(RKT#d`_up?e8c*Wy^hg0d)`|p3xeLwQS@A}}6U@-p6Gcz*} z;9s`;HMYG5ICU}~Qn!HuzFhzSb$Y~A_lLmW5|Ckwz3+YR8(&{r`|9fITD21kU@6MY zf8QgIJv=lx{C~al!t-~}&d&Jxv~7Ra2kwWz@aH}Q4`T3-JCcol2>j9|fnYn48AMJ! z$1^l&P6wY8+}I48> znrI0tWdYBeor5nv`67Jl)frg9;13S|HclLBzUq`vr*9biBY0l5$YQ2|$7*e3ef<|I zmC_7oSzvDo?g4<__D)5Ay>R7nxs_tExW2Ts^buM|37L~sX}hrrz*gE*a>jwxLd>An z3T3R#Rv_Is2%|&&$`V&L)HqUP0xY)%E-p?nq85<_z%n&H-zW~D1qcYUn8?%p5VwT?V|9 zTOaff4j!o2tN#eIx=c2krfLO=*I4LfM1B_BmiYE`Tv(VtT&ve?qPVF9Ktq}m$)rUfgqK;(!Wd@8^q!mF$K2i?xOYjncMZ_nft@$Y zghU4}ZC8>o|E9q2vNNMnjJ1AVq32!MmZOxcq;sM1(J|L^j}%J9V~fj6$FVFhS}YZP zCH#}@abU+BKF0jOutK(J9U}|{bY?K9MO3n7HvJ|J{Y)gl7?_-#`oED8C_-B|ipl=5 zv?Oh4d}w9y`j0QpPx}Mun0WlXC&Uka|3~2QM<0MpLIPGWkU2xDKR$rjKi2z`!$^bl zu}!xxV=R6=bi>1Aw05{|?`JJ^*+4W(0xf&Yi2_V)zW!oXPwKbgh&(rn+$>inLSG%p+2G$r26C0>BO#<8Fj?w9!7s zOdi>a3<=tZGJcN?Z_7$(gbQMpQR`95uo*HKW%Jm z@b8Qu&!VACSceWY3$Cm8DJu*@VPDI8Oa1veFl5w{Nw0^zI+mj{fb0V-EG(4qobo$- zM;3c#(s6HMV&sWtz4kxME-m;HkF~q+I|hI5&wd6z{J{qqEEBtxN@K9Mb6E2q01J;9 zfyX_NuRj53JI0+cQW!Q(hM+}6qAY!8o)Uyi7LD{Rt%0{bhksWfZPoGYtns-@t%bft z1AaVs@%1b4`LDeMFTB19#VWD}w&1z{HCKT!b_b*LAgZB|hPw-GDw3&`IC}JGy;vwT zmlhYG!!GP?Jpj<#-U%E)|99%tsW=At+Jy@jl4j<86by8&jT#XVBYl9)S`(grMkQ$C*Muc_xxK)EE9(#zU9znhQIq~vqv#>mURmS)4`+G+Y9hrS& za_XCva#2JUi=L-$^tyy9r}xkc?=M)j|Pf!sFGcguEz=jfRSpafEsw)zAp zkV2-mJP!QITR?*&OVw|srlO-IlW3N0Hp2>Z0wk@&j6_Ee)9rCL2rz@V6VSq<_5OB{ z(EiuFci^!vlpA007;QKd9oEFalma66oJ-SIV8@7clA(B$I$6x zY-x*B8vzVcl4&;85FrEtFl=5KmNmy975XvlkkD} zzXy*6fI61doD`NlF!1~F5rBA>RsS?sALzI@T{%3dNLy?RHCtcp9^GAs^?Zlg7Ja1s ztDE4hU4z>4b+C)qAtCWTiGaYXL4*9b@U_<(X?W?}W%!*hU4Um^TZWAWsB@f6t$YZ& z8Z|0suM1N2kT92hK5P~vvZxjBxc~n9ixU$QKl{?c{27xw^p@T`d+U_|-bDZavzJ9= z0OoNq{2-PC()#wD)zN}S{HVZWJ8XR4OeVc<_Pi^KM!#{9BQj<2dh*o85)ar-Se{~(otMgD@zJ|5`C5Saw zkx{8Yv$Da*w1}l)wa|bUFU-N$zx4_{_xe06v*1r~V()1X(2C@IE&SJ}Nf0PH$t94w0!RVvQ)$4oKjG`-vnd$H_m<5v%r7j!>dK~H zYq%q^xc#Bir%t|7u9T`1BeVueJ)UhFrM=Lah;AUGTTOpE<^Oh_0b5^B?069ZBG*OB^-e**TWMko zP-qLt;q74nY+*Y>oT|s$>Idq-vWusY5zHAKfcl*xuhsrp4LATEAuLIUaPs7-tA&li z-+c9zS6??{g^lR%k%u0*7jf`!zV_8d7^^2v8Zh#jd;rld<$sSq67y5-NDHO0$5_7;FAW z`6JM1c);bf)p`KmV(pP%my`RM_G-gY}~M3G_%Kq6Ha8y_G4fw{RkOf%RbRzx)coely= zj}xVKJP>N+uZProxl)6|+A>d3n;0E}Tn=lOE-p5;DoD4=20~>k!$B`@tA$P2NiAqn z8UL0{4?_A|f-)0QngCll7*c>Dp%dln_+GKN1H(hZkjDD#MyUo%%gbWDQ1t7rH+1ya zk;jLJhhJG;UA>NV_)vU+FVol8S59X#mysFy^v3#n5`!*{x)qTuju*O})c)Osak?Qs zP|mBefTc?V)-KF-y1(!4RQ%SiRQa866K|3U2!YFufQ}Y0W%g62*Vg5dE#-_rtZC^% z$YCT8yA&c9EBc(Mfs<~51nBtt5dBZx8bn?lIdb?4g6Y5ZjVHhPBxe7n%)nsUCh*}k zA75Bl{F}9E0q(hLKYai9eO!F@p&&L|m`SDZ^mN#qg{Oi}@D^I-y zPrW(|^Xo1&%}8*gfq=;0h}vJnbv!3jDbMpgnalTy`|iDOBb&+m()F3C8ERCO((h6K zJpj<#Zo`cOUn~||*tc)r6fPHO&wo&}4xeKwp0rQt335i|eqmyeNtroBry?=E$*ACm!9mcj61LzkYsAXJ-U@ zti^=|neWTh-v7k=KRr7;JxXRq7O&h|n?N;Z%h`4C-%7vRft#Gw;i7_#6}d$3x3&cU zH`3B~W37Ky&;hZVU~e9`_3_rWARzkqmd8cQ91$;y(4kOgsAeCwF$X5I@80Go+5kiJ z^M$RS-8umzO-=MXF+Mi-M!nwnvFE=1{5KZn7fgwXgMVKxE%%KNeOI$y|5xj4t3xM_ zj=~Rp|96W|eb0Bpo{<3r$4#E;FGU&&tv*QRN3qhm7Vx(_1R#{gkC9Bjb6>~ z66}v5Xy~q21go(Q{@QtHtXx4BU=iYe8APK1E;3t9k4%0tu;Jz4=~pM=_r87(o;h$264;8@}t?Sm!%=_o=n9i9J7g?aCWp+SuG+ zjM7_XdjO!f-M*VZ`rBJxUVbf;$;{!x^`TO!#5M5kKmh1*qGq9u1{X{OpinGArLYR= zR0<|WvXDu}c~B7W3_xmyYqIj#qKNHexkXTDr#&g6IX{Gsf!a9ShX^>(fPugS#VIGQ zN)C-`88TQ?9Y7|49=n1W+1%U;td}dI>3ey%>3*S7sa`3QB3!!w(hHW$l|nwBy*xZJ z`2Cw3n~A39a(kpP0@~IQZ-;E!?60V$thEheuq9yIH^uW-V#BJX3OJEX$86)54D4W762h5B?j11qLAb(fM9YGG4qc-^VGMW+}tc! z@pz2mB?ZQbu_1Zt=>88@E4BX%!S(U|`})PlKl+6D%%{Hxjvqe)m12Q|Xd;Q{fRzL% znTJ#!83AO)5SDWPe{l3`ku2BxK{FemgFjql?v0f63idu$W{$sV;{ub=7f@2}zF_B|LJWq12L zp(gy%;1LqDkr>ZR1D9&>4fP5aHp)=Kl0bjThLMpW$j50QP93TLHHe8a_Z|DVU^PXY zH31M$@Ph3L5fT3JCj?X3r6tLx!9!ewv@|WMYqcaQ)N3R0pdQkoFi`^OLY?ozsqus3?fy?fJNB7sUcIE!p2~^1T0NqxDkJjY3 zzJ>_Il`Z%+;(FQs8CqULAJ<~*XXf)Gm(3RNy!qj0o__YprgAKlG;xvY;p7o;_sK&a z#?1ZKuTNh;GB%o(-}mVci|_l?C*b6qz}y2W#^(*v$=yfhxa|jkfJ1pipz*<#SW;+g~^X zFP@);=?#SBB9>QsWM(^d729K#IKw_iYT04FB!xSFZkt zwbj*KPeSZ%Jpj<#-r-FzhBhu_@_`2)$ma9;Pc1Agq^WktQL$w~hM*oPG%aogtFJO9 zAw@gYEoIY(&5aGPknSe{Fiu86nCV-x07Nj5VK5oIG(}8}|Ba_{5v1|Kw$3^%ZUqdp zHyLWVj6~4XZ_V^EPpPOASZb)1OUwog3=Y7^@Bo4gz?x@W%r7p9mF4BZy?gh(fA4`q zuT^Wc$x^XMr4R=*AOG0#qlgWL|N7MAB)3N?WRrHTFJnI(v&64XO-&z5#vT8=KKz*V!$0&Hc<_Py@%Qw3uvR9M zXO+J%TEe(`+>O+~m0zdYHc|1+)rs z%@0J(Su&Yg!t>;(mzS6R!^ZkL9W!*k^n(ApaO?R1yn8_a6&J0SUw-*3_uYHXkDoeu z{8uksdSlQ-K9D@vi4tu3E-p$+tVg9tS}24WE>8;ty@XUjPGT8A#B8YI^PW0456#pW zsAh)XfzwA|tVH$5D#UPs!n_>38l~k6(2SEuz(J%x_u>MSBl=Wv0Fui^q&f_%RNAN%+t&>(8FIuEa2T9VhVoIQ5%^uxb? z&wC#D%intP$!}Jxm1Z)Prq-^57hXGS$3SKLSl&d&f=U#Y@rnsS0E9JWbv+V5tVrG3 z1Um~_f}CZAfz1-(B5zdn(YDAI&6?GjCO1KLYw+!SzX1&0TJUbf3m}^Cb-J!P#{A&6 zPCfvgF1ojz9~1WIM@?nIK(BlP)Xq}<`!t5y3Z82OozeGizpdpGnWM)&_r7isz+FZn zxnixBd*AyX|Bs*i@JE|#8%r?Q-;brQWpdqym9*&nd~KPfzMG{%uLhA4!7jt)63BW1 z&!I_hS7yLjpMktvMtHrBAiM@unP+xk)$4Z(<_`ggpUvki1OWeRd1>i4sLfX?{(Hgy-MaM{fOqjmi#?SB zu=ag!&z|ua{P$yWyUQ7oE z`(b|;AW64dqy_N!s3L21drv(+JU05T=ci}JNgwDq zF%dYz>AvW#ZEDaWB7+WeJiJNjzg-}=oyUK)Q=ofoU);dJpc}J1?xrn>9$&i=4YnSW z(8dnjm_uO{AZ&Nsx4(A_s~}*DP!RO@B2S50t(HtB-fP+MPs`qDM1Z!Uw?EO6%ED6eBckAsyOg0*6u)&5`q)=OCXpJw&Hr1P0u z{VdII$iP}y?E{}L+F6l34~+9<({+7vR=nq)dsfEAMn5|_HF=r*n5FD_{r3PsZ@XhR z)&taP=%!6bm$Ko~E!d`uE5RnAE~TWeMRtaG}lnEH)TnijZ{yE)eZT*;F&mDTt8$Y2XQ<^aW-)59oi<>Jy+IY3sY} zpfn+UG9t2Jpf3mMR17K&AC^~E#O&f46w4cfvt0u?zSE9%>@75hy-^M6GkOy+nM)>ZIu2y z1^?)_)hI}|0g%?#L}C@Fd&Htin0VWnS6_y&eeG*-?aC#l-Vg2{5?g{zfg1HUCNYqbFa2Z$5t+W>zZPbwgAAq==MQENQp~y)Ph` zJ7LVh=y#f9!9+`s%B{Td7nm=mq~C0O)OZ_NEs=yU}RMkACE%1DQH*Q|O?f_81Uq(z>G(}0iVB|1{R~s16$$pho^v!w$)>c;_9|y?i`=CFU zQuM1^0W3A}fFGh*eOwshWEG5yBw4^(w$>Jy;2JFmn?JIxWs8|oTP~N?1EYYS@04wM$ zpx37%Qh1DuwUuRY?)BHji!VGUu3Ww%$c1uzd_?@n4}Bjz@!=1_$mkeS|1}_?pcBWM zJI%CkQV>h@ApoG`JjK~K=WVGBO)UoVPTbW|jzwH%xsvp+W zFk5dzB0COig$BIv+GY6K)6c=vFHgbj3ibJ05KB7H3`z>2zDBPCf%z46z8FsseVz1; z*8ctbR|WNm;k2YN$(dH|rey?bx~A^f%VwTu1z{nwI-$zH^F0uB< zfl<}_AW{MVy?_a23d9QtO)QHsV2CHuG$R~V*GsUm*?@SaAI66V83<&chM9i@99-0> zm$~URc%(255E7Jxb6+xWwKH%e)pN)LRWgJ=0SpvKC}lZXMQ-ad0(Bu2AeX}hIG%<1 z`2|>5S|h=eNTd?d)Ihl*z#?Ze!7Wh)K*$(H>Xo@uaEk_=olJqc8U3^e;P$C^(V%`a z7xP|Gpb&jebKhB-5--&|f^7UInejp%JX0MOfRV+4R3+2!J*c5Zx(^#G5QOQk+4^9k;omysbo zM!aSe`%DwEX%0=linejUE%$5KN#m#KxE4Gd$A)|^%USyV{rljP-}4DLe)I^R2Mv52fyiVg zr;MwdEF{u-HPp&7z*XwHd#EijGa@Y39eQ{kH9%C?z$+tjwRRmEn+urv7un&@cN+}M z$vU{w6!7fpi}3YlUWR90ya;n^E{KE!@pJ+(oFf=MGciTpK09*hp*LBYxKX$wi7lH5EENluT#J1Gf z5z#8tQhmc1K4amCTGOgUOn@CHH*yUc0eTNg*0Ax>4RYQa|rBu%}ZHw(afx{&#Z!+pPi6n<;1P z^f|T*(wzcur+~c;SiRxrblcj80)dPkW6|F}1fEj+@p4Nn{`^hPV^uwtksyck{?NcE zB-7;T7vtlcCi{`&pB+y#81Mxh)1C&vjmYpJ^A2f)SbYVO zP{HiK0(El0q(1+q17|PK!GHYx8Ds#aU~#hwE~)zyDQMvF-S8}JCZyE{Lh)mk)ZI1u zT|HgWClO$y(QuLSw}*#^|Mk++(!Z|NYL-b9dMjlQ0Q9zZ?_|zaRRC2e4F-N{t9(PWhII%D?GV*UPU%q@Ej25@I^#DL` zdslA+^2Mb$E?t;knEwx04mgPae1E;(@M5-OnUSEz49L=ACFwVLL1gxvribxG`31N# z4zW0v2CN1wuC7A~7fYHRxMzHXxJO*n%FF;H@P6N|L$gtb7%>Woq#it!)(e%bRoPb1 zfUhh}DfrPM+GK!1i9Kak%ZrQfhhO{>eEw_SgoPDiANuiW3Dy?S=W#tx2^>SoKLQCI zc(odw9awj$??(Z`P8oTpI(w&jya50_gWa;b+}|qPd$W3h?eqXQ^89XW#ZE(y+Ks0= zy=Hr04}x&i07#2Awt6K%$BvCofI{jvRBKD2Dbxl8cG&C`siL9^oDycImtb|h0J(ey zM#m>0o=S0POIUFRyRKB?dFrSkTWoT!beld;_lr3^KnUNv!E-dc>LLdI8SvL9u?(;T zj)wpMK|vEAPoSb1AA$2zEAZQ2dI`S#%vIQE;A@k?51s%`&giX>$Bl zhEZzX1qpDG0i;pB_Nh~+77rad^wZz`<~M(vSV8D{{PzGrZ~Klx09*^CzfU~zL>?E2 z53H`P^|>yB0LS6jPuV&J396s7Te%%Bq;^EX%&#X@K(#Fzq~b!kRDf!&3WEbV*t2I3 z*iyZhgO7=`Juoh&l)2zy6{87)@thV!sW2V12Xe-u7Sv{~!rtgK8IYKVnaQj0%+pW9 z=fC)))fa5uuc-L&a#H7*h@w!Q7GdeP%F`gf=I>2!am=eDv5GWw*g*Ja2U zFmS^E3Z+dbRSFPG#9&}(0J41pc%DdTP)C3h=VOkJS(>J4W3Y}>QB%KR;=!8bVb zZ>(O2+QvLUZ5t>5QN_nsG04+rlCUyA2Twiq z6nx=}Uxag$)8ON4#1lETT%|fE=?;7!DOAd~bmy3*{nv!)Hn6-F8`j-W(cPxq-H7O} zRRp*@%6&IOg4*w+jCD7|gSuTh0h{go1lspUHx+*;4MBTA-}&}dtKl0w@FUj)1M1)| zKDr}9I%Cws|F+b4>r$l%E9*;8ESDgiO~J^>D3$}#YQN+0Pb`yzi~wc*Y-UA%0Bmtt z#UM>Cf9v2C7eN+h!LF}C0;*UPYcP0q@O8>E3$I?Bg+F-mHTdeYmtb;*$^jXWmSlZ_ zZ)SHubd0ZH?@XIp50pq3bjgdpLIc4)9&h%(eft(tsnk!OJ9mzPzts!=Jpj<#zH>KO ztyZkXrTOy*_8*!;TKSHmCvusrVh$Ca6VmssN!WdcV#4?{puQ)yUJxqr?U(KGU*(btR!3Os`(eb>v6ay z;3}*#2LEO7*Ji;juW;+1?N!)vn@e5EKB)R}c=hrkX8zB^lh2=rh4lt9WLZ3~;sk}k z^sb7aaS@c*PtDa61qQE9doNEdedmb)am<+9px+q;;YJBu+Ao zARr0lauXNH0vnSK50AmvK%N&R$MV#;QyOgIsRfcc1@I1S&=bS=P?FtFX{yb%!~4>Gd4cR57&({4q9TZ4ONHX&Lf zXl3cewqT*teZjndKmgbd7KFBlj%5D&9*UNv?za&DIChLF|Mj&EC>2YP$s`d340DOg zC!wpa*fN{JgQplLZw1`KHE3?kVDMi@Myv={v#gFye7%yNfmbih!5@C@Re0*<%P_lv z0Y8yNRv=3p8|!fRvum4dqh#Pl7Ci3|xCeu$90cL?d8>`O^n|psx$Mez6d+#0U{S6TVIEcNfHB+DOLOpbA_gLkp;IIr>(wBgaOcBi;e-VqTzFD$WkCv;f?GWvko3U^e1mzxb%-o zD){$k|K8RE0KKhsadX|K)o3)%-+kA84_E8;`^#k#4XIKorukiuGLaNM&Vf>)0*ec4kc$ zG$Ada* zCb4B4@wR}#)*!-so^3P$9Rq87(2d-_Z5tqjO?MrSK{EwVwwCI*pj8Pw`Upfj2%-#v zuY-JOl%w1A0?{9YK~`!FjCm_+ebpvXzNkPJc(6Z z?)UfH64c#I@JiF*S7sn4Yhe2oMBP~X$Cs%zEVy)K8h-z)FT&F=zX5XvA6y%=emrLD zE&^G69hIp(r|pCTL&JTL9~__>0QXJP>ojY1T-2Jl#x{{2-NbdQ#)|2} z#wxt<(u?rNU-&Y-c;-B2{!NG_b4azO!9%p*)2spA+wbdXhE@y%Urc>AJwza=`wQK^ zXyyP3t97P*IETOecB{?9zdhiF=01kr?=13*O!2eT`%{O73dFXuDGq|N9XbZm>)HB# z4*cpm|K*Fr|F-$Bqy92TP#y@XrOjqlx+NSQV54R$sOQ^3E27f^D(vWY)cZ{NDGGg2 z@=9*6)U|R06a#^XFkPLIVNb#e>g+oDM>_Fzox5X)f!HzI-`2}UM)Q0PIV1!|Ix_Up z)gP!zC|zA$gL@$$6t8?o;h<3R*FsV>?D^2XlkeD8?mb3(t`S}$kJDGmw^GV zzEnfJl5D_*prTUshK7dh`|rDdHrLnplTUs5>%Xj8k?*0#~&i8XnF zf&bh?4?cJqm%|Sb2*9ktOT^3@-k z!8+2U8>J%Ta&Z{KMKY7Jcp;v zK-zx*16&emPn%qURfXSD7pVscuoD}9u&|bEf`52{NU(>lqjFoiAKKdZcAlUoTH5?V zV4%T)qskr}z=Hs<0=3niotyhi=1#%ij_K#xI_TR>P1D5|+5kx?W`r`*007WVVkbrw z{1p(;jD)H8Yu3SvSTh^*BsvOWQU!ez_-zxIP1{9arUMa1U4*3!sNM>ualc z9Q!an5QA*83RZOrVB-qJidVp{t$>AWfRy-K*=cAx18{k^2%rDPS@`O+7h$<1+5E@F z-^gQNZ9blI-L#~oemiC-)c3LValz*qc>`eduQwVV0s;HJd+(n+dhp0k{LX*;t>4{T z-{?{Qy{!iTdfU!hyTOXxVU_K5Rb=$#gYf7 z=q$wq4K;@xRA~T|aEdct%*$&?f0i~kF>;# zpgIBFO@ekb7Xni@h$;j1b()JopcEOfO#}dCJeCvq8x7_V1f-MfVu_~@*8CH=8`3a2 zvj|Uq`&Ibnx6i<}`8CY?1MQFKPzBn;4ad~`v`~zeZgh0SY03c{& zYCys2;UhtP-O#f_iw9W>Ei`TIV6bmO8G%3<19&!-f;|I$Y~d?J3Lut;m9;8-t?!9y9dfCbb6^AdSox*5WZkkKrYYPl>}D2yUN# z;VeA!@+G)BzX3Ig$9^)$LRC+yk_vnIg96o-E=e?-D${4Bf7^Gax&8#s@4N55`H_*4 zpZNUeKObcNz2M*5dH|rey_rom5CjxUrHjXp9lwH<;|JE)*NF+B#YWi1BuEeEv7%X` z2|N^-Vo61ol6Vl=1IrOm!^Ld9ScXQW3o5g=>zQ3PLCat^fx@&%Tc=#utdg`g)-Q3)? zdV;^+)&l^&?WREhF#&V)a~HMhJDQ#UBHA9G$ z=?P_8Al`flAP}NK$Q11KoULX)_KpldXEs2O1Linu1)Ts^i!$G7aSar4gRa#xyBHqVsupQ{V|twg+ti0o`U1Yy}hHrxMY+MP!f=n@;0(s?W1+ zaG?YhWV=$C98?k4EU zFC92=;1VuwPgJYbKB66Id9o}B>dMiUIJ$$DAkP;}f$|^|a_Q5mb!v606lzf2XhJN} z2Qzak@RcW@gEy|ta^^3b3}*f@rbgM)l=_=UbuE2v!BPWS>>Wjb-GjdswtIDOx9is5 z-#)PCMgf4zsv)5KE#1WsIxI%$d=rofXxS!UgT61W|80E#?Uvxrr2!EJ{h*UUXoot} z2p3^QtO#omQu;c}H(CImcxMG7zxKRZMA`tu>$>D(MI(4*)NjOmhyERA{!x*hViwG# zNb_8C=>!6z_XYQF6BoBmA8b1pf={kqM+Wx73ZxORZ8nr8H36al+e(KE7gn)8L&$T!eu(0Cfa{taB%Q% zefi5@{yk*qgvIAwFZlPioj1|j1-)%o2a4ho0jWlL-@W&K8W*ZxnVg*5OBsm8vx5ZB z>^BqqEH>hiJm7>zo7$WaDf-uTXlM!rJ!AwLK4knj42|^T^CYZqu9G1V0)h;S2x;`G zWOcN1H8)uiQ=}1{K{xx^Zl*m!3BYO%{M)(vwU+^+Mn5;?wkN{O-(gGNSkSA_Awc`c zo6AMrYp?WNhu|*BWe9aMg+qFtJuj6G%;v zv^ZP!dH%f7=&S2=8($Etkt-zWHB8W!`u$wD#_SDI+SF3VUJ}&TuCrRcnAh^XFyp1> zPI{83K9qT^@!yyFw&-+9>A#n1RpjvYI8;oP}%U!9$urQ<~SzTXS}y{!iTdfQtA0y62e zeEhM;KZ!T}+L_m0n`pRAKNgRPn8T0Y`X{ZIG?Sm&1YO+>F0^<}nAS7|0FIx4n4iXF zu7Uq{kvdfq|3KHJse^z+mXSo8a)Y)(^@ZpP06H-N+W~-1lknbLhA+0A#c$rj^_xr; z$6`rt@nRDm5J6p^1z$|vOPz>I-ZwT+JEV)nV9U`IzoUHy$b%u7jN|LtJdZvei}7vk z=0r@#>%gvpv-+JV@HJeQgEs|n5^cK8CSP|w$s$4OWhX%7Yix&@kvdO`t~igqiCv^Os#5CAp$%^hK7b#asU5~OP4PF4*d?G$cbL7UvImi&FSre z-nQF~Xhq5}%9V<^HaYpZ_dfja-@wbSyng=TzEZgajiv|jxH6)lwmw?ODZp9M7`$*1 z0JNW)s`uhz=h~j`QO7`Gslh3%bl2Ic(8edqE5^P5bOyAxIWbC)Y6INn`#xRb)W5- zNu{m;gU>OI2Gm;I(&lJED1II;9n|^vWG#oL|An@Vq~k-yVjs+0NNzRsRlQQ`l7g?P z@OD$6Zk+*J#DGRvrvrbd=Y{*mJW21n;8;{r1`$Nx@OJu~Jhz{%Fde1TM~16OHod-P zV$5i5ZAnb}4(5Ik>`=+TCA(}Aydsdp5*(DPC6UWy1!nw9Nd5n<=bn3xfe)rMM2+XehHF(=upl zOIt8q0?bp#R0|-_=XX_E!1gq~EqKrgg9RB{$SOxRHQdL;=Ya(`#Q@yMJpbt9ZnOl@ zIv&_!cEk$Ien8pk66H^hi=3G@F^Jo^{~QeTaY&`&kV#RXk3nB91%3GxB#~uF(QOC- zm`!l>`v3$&GWAuB*S+46j@AA2mui@d{@58udB?fI5^bRVbD!2ng!1 zS*$>@T*dn&_rANn)+tcg0*`@4V-ufSXON%<-B_Ic6C*%>JyTlnJ)RNaOU*J6rA~El zS8SW*NB?$W0Az>kzmt}r(?xi?1i&Q^2-p*fzKRKe&|aAIE|N!N^79%9;_9Sf@zp>f zUpZzg%AZ*r?v@LEk7gY+ zJf!Jk+5eL(cxh>5dBGHH2y1#X5;^_ZTXa)KeaD_gbcdm_C^9ZMjznm_v3%i;lR2N49o-urQ(e&{>`nx zyvYRb_Wf;ci~csz-^|$kwp$3di~l;!6i|UZm<$wjB}k*%hj4a))EW!|H|&f*W7}qW7s(Ujr2p(JyErCD-e9k)DBurUv-^=zCGQiy3~s zpZt(nVUfSrU~wUNL*RG7;NRdEI&|phO1<9rsh6LB_BU(QiawlsZGOG22LO88Z2$sr zvvDo*_w1RFk3II-_wC)c?|*;c#TSO>7w3~6DWV;l5diD$A^-riI^8na6#L5?H#&zI z08`=@EVJ@i6sQbXYz70CC3o!g?+O4cWu{{S-fl|(QKO$|86fHjz*fIefMDC&^-qHW z{H}2fqL>VG;Lqg}Ffx*ciLoIV9mzpoHVx^d!{R{h5Fmn>Y!7^`fuODm?yRs_ct+h8 zRGU|3G8We4vEJ-TR;9ZfRCR#X;z_cpGN8(BP?d%GZE`X9JHJ zqWrPQfPYu?H<89H#S2n;XOcDy4fVm^y~8j*J_JL9MEN8A>ok=nfW{*e)bVX~suCTpt#@4# ziMf(5q^_^j8d!^OK%=RGz3Z!%G|%|S8CzdHX;97bkzwyYXy-mDBhG!{aG+o!A{h%o z4cUt_w{ynh4${>Q#AA;7S%n|E_<42ynH+r2zHA&XgBaijp?_}{RtgPRSzLw1#U)tZ zC_oj<2TcslDsxuiKN+#uHG_$yW{j*z&^G&Bw1U#Do&ZKb*al#wImmW%NChgt@Txfo zLStZPn}QfU=5#xzC4zE=HawCH3g{O?mZyJUU?XA2f4WwwetThI_9_K`P5Jl4e!cCM zZ9N8{x81VMhy!UoJ9_+>lT4+K#vS{;nN;eRR#sO>sGTg6%StC67u8x7gOrEtfD@Xl zi1uJCB8#SRj?;!R#=r(zYq_25e52P}82}r6I}rpI?Ubv1@*$XFXH0|aXdgehy^*q> zf-9-FX-Z>bTgPqce)dxC76K>q8hbqN~i{|dbGdD{x(5?0QW^EMWRLOJiza4OZ>~ZFSo;y zkk3azLlk(U>9cTfX{7}73o9_URECXW4QhUpy&pXM-ZU1siO-`lfRqjOx%5YI*$L0( z&I46VVb>{@;rq%kidqNxLT!hnu|QUx6v2aIQbDM7J)|PvN%B~%D;v|d3C)6 zGYe%{T-k)V)jAX_O(@s32Lu5t{GRoCi6-6!LDuLRq~g!P#rvqnZ=2xldph{zKEqE; zAi!?Y`wL|(e|%gAhoVJ7%&@1TU!y%SwQDr`t~4yD*yn~?97D|6X0+Snm~ckC=hvW3uU}x z>l(PNEq8@()@LgM%JgG#&g>XSV8%~QhqhP7dO5&Ip92#}@gF@f2>bSoz~DfJ4UdGZ zsF)$*+#*N9MylOcYXVAD7dDF?lri8JD;@?(YLm0|co@vC;|Z_{K!Ks@mA$fUo3X=D z4}UA*@(n%DEJoY!75&@ES~m!c6im4uuWIk0+v^C7(5I7rgB9(LXtGR!f`2BHDN*_uS;ITh~ zdOm?j4*`IW_gQ|#NQg3T0te(kNZ-#@8i4IYfL#HAW&i-Xhy>gAQ@f~;jw@y^noR}( zrgI~o%hSJqCY?(CR;f^2ee&zysOjILm-Y9yw{+{x0_bgT*~Vpm+^$VddRMMoEx2y; z)qMx{7m)V+RHaf;RELvYXO!*F2l0HjkGsQo%-eRWp0lR1vS zGDH*W^@U;`7MCysUc}4%IxH-gV6%joKW50Tq}d5cuwp3;{3#Vof>t(Vy==M;gqb%0 zn%38X%dq=FSJt}-COhrBmfM8Xz{gUy#YSHM+GtNGAtKS;bqwsJO(2az884-39YnLr zg#<3C5Mbd}1&={fIu(a}UmkMVG{h1KzMWbNn@!66EiM_+Xk^Z_O&cM16nKH3f?<@H z1pqan&)1p~W91tS)?Ft6Zn<4-J4ax9B{2HzE2u_CxaKP zhx7Yds+G(P*t5+jU^7K9tn-J!rc-<4&ikm_{mKMKEB8U8Aa?x2eM7W9f*Oe>49vx$ z;agBg=AwesdkHE1VnsrsP-Kc--$)DobLLB$BrP=^%ujOiA4WrX#^9^#fI&jEouT5MVoH^3nJov`u#M3256_ z?aqT{ZUXOn)y635_po3M;^?^2m)bIf?H1iosFbpSEE zP6LsAo&u+8)iyc(QG1uywICA9hFOH0iyzwW0^e3N(p09sz>j8k?_HNnq0_Z>d z-iP8ymmghRTx9E7x~JKsUU+9q0D2q3Kj)mTl?t+aZnl#R_N!)al!7n`uWQHIG4 z$#w5WomBoQa2%w)sVhOmIk0+|F=HZ)&-J*y&e#RV$%&61LqH+O^wq^QqeZ(Vwq)_J zy#r!*AfR5C?U^iN-lKf~15aE611xfr+U?O%R?h5vhai9^+r`GPG=OD+N(ojgF02=t zFpQ;+(E%U&b4kdhQW($?5H(5=$LH?Dec8Xi5B6jEWOg|P=Vpqqx>3T?2xa<7WE)7# z=|EGeUVCOCps8H;=r*DH>@5lHje5a%+~pzDb*4b{bviio1Bc}Urvarjf=9lP7CU8 z$^p^aZ&U+7f!(*&WPBYzfn|1Pe6FR0foe%s0zg}L2q1KTq^v?7am@bFKDg(^A-Mna z0XVpK2r_Y(gBSADT(6c0G8#yOFK@UoHMW8SMQFWEvC8w z=sjuLpJRuui5zHsHT&Puvjl9_JrLa=kvenGwx}YD2n>F>73<5nw7X!YGj7f%I)FHd=N%J+^Ivu(N?6zS*+u2X-1gd=1?XQk^ z9*gX9>ny!Rxm1EgBL3X)(9p~C^9$bF3x<1J4*>MGw<`E4-xoE-rscxscI$y7S^eN)$`K1D5nwyit^99;(3Dfo96sO{{>-&H%n_52h&?KwhfAAV0O=VKh0 zJ)-2vq1Yya9$@u)+$}*0s&J@Z!UKng;Jx?kg?o>U!bqQlxF}*&FXMM=V*JiR6KVbB zVjQl_l;O_6^O?Cn{+OV(bhUBU+u?1%W2Ze*+?yVG4UV{sqFe8jJ+Nx;wDc563fMI0hOKxd zft?sWmcUgU19t)%G67{w=-0{~ENv8_=2_Gl$AhG7pIQ!U_`U0pN?I_~pTd#>0tjS6 zYLx5{ z)(H&$A4E{_)b#b~YZ^4atAzmcowc)JbS-?>uZcYX@Ex!Tbp&(f3lNM*?{?vqxp(71 zkJ%|NWcS>A_j?Z<+W*ipcZ#`fcXxVxS0_Ty!>nXD#!Al& z;N_xPsm3QJCeEc&>6hka=Nj+UAQ)X6rIb6ZiJ}Jv-ny-)0eEYUZ;Q-3D8}7$&ppHS zdj0gu%8FO5R)ZrM7gk9N*x=wG&GLTj;>C-b!CJmMQ_?$PU-+0VzUMvn#nYM8`z~I* zkW+Q(u*bS3*uTxCPihH^VP zzyO-WY&srSL7o08QmT6koTq#4>C$XAG0@hrUfqOBvyR|K3H@C1)|b9=FLaaxA@#Yl z8=rnH&({Whpj-nT-k&~q2@r^JNjOM7{#KgV0Rjvgr82SsC0MCRs5G)LHq;OKI1M!NOp=497` z09mP&MPFavKgeV=&)}_3Q2>;x-Qr!fIO?G9J@oLy{fGhXSzTT8OQj;QRf0N$a@m}X z$J~XhR}eXe&xUdBG5snt%d_FJ7 z$H!v`4F1KjqsRXQ7wFf{o;$lCNI9hje%#RqyV)O)KlZ-&`_liP-ne{8U|{0x-_;Y_ z-f_7TuPK7n_G~O1`1boesE5RNF|Py}N5X-jESx?th{1mh4owVTaBYBxwf;s8l=W}A zAL@P#rsvn;^0j$*W4Z)&7pd;V0K_q4CCZPQIMx#Z!-K$68|PrD)8I7XMd-|D#FAV8(;$nNX1`8AW*DU zp;oIxxmsN|?*0;N;Q0{9Ut|1(=*$gXPTz)ZD6?7>U_`gMmy_>nkjt z+4oN4Z1wJXBBf>nNH22!{Q1Php1qHM^rIhr@ylQSa`oM02!LRfk{$o9yY3py<#Tt9 zjE;T^kISFMGM20CDpXg*$jC^dR;&H$+S=-G_VxE?kr{bmX>oC-4M6m^TXY=uwp$bI zDC_qhee}^`%&_iTTU+~H%=~|Pa&nUTdhHeqT8P+#@?swIjvPKJhX;rM$>jCPe|&v< zs_`z_C!E1N{@5drB~yuSOwC+(vbh}bexlKAsxiB!b`84|0N!W`AnF9TvQlH zTJ28(g95*U0nG7hSkrI7XwHH|V_CTC&@h}hI0$3?X-L=}X5}7_<@M|=Qu=AwY-TtB zoxQvY(+eBW5IL~p8IZ9Q+XG9ZMkl90e7}TDDrZ4z?X#67Fgp;^za5+F`)YQQV5?!9 z#ek}&A9vy`kW*g#Hq!Sg1eAR+I4}UYOb(J5@QDR*tXMEi#{_41Rl6X@6~xOfJ?)Q5HK`+<&odiRZQ4jerAKNbpwpL_lF*F~ezu#INL)vOZj z4Lo-J{{DU!lO#t-@yq)r_Wm&*Z)cu*`kN~TNc5u4&2K#oz%2~^!^6YL0|yTLy;7<4 ze_pwA<*~)ZMJ~URHNK&0qvK;Ei-Wbev}7Ub{SakthYlUG#>e+m78d5qcPdEJNZmhr z^l)Zmc<6_gmzO>w@Kh&S8iPOQw4qA;#>9WON&}#V{Ag!CR{SeBz!=Tuw|%7O%P^Sq z;q<{_c+bgwaPsgN2B9+Q0wWIX|2UMwk4(qE)YVRUp9#>e)+=lOJ=mBA-V3x*oJL z*t-0~4t<&jV9Q=tQ}l`jV8y&uK)I8r%17ILc7^t`1cA){->Au!kli}vz?@P{r1eE6H z<~}<$H8m}^tJBBJ?dP%N$wxhvLTOE;vXr@KfNl{uK%gL+jpk!R zgClsXgdX*&tWmTT9yxze z8GtTy9k{DY@?(*{m6S~(Rr#UQr%wO5R4V!VSFT=}(JI+H?m#yu=v}8zKAz8Ie{F7l zKAuP>IQyr}kxq1`wxzO^?G)^99spR~+W>iqv6KQIFP@!XAV4+j1ZMRKw+IIZ9eDKQ z7(8%v7*6d;K_A6>%pkd!-KOw_0p3l);+hW^uP(!x%WE*bQiBp?0g_k_zzn@<2}3LZ zsR|tY!U-REV2y_?0uTdX>+i{rwb^?>u@VXyn19=P!XE|2OeOv!%Mvuf zk7oJv^NmOlFAW4vO?C~$k^(jFVL+GoIGUJ9<8rthLK*_9nE7fNB6SQjU7JC`#>NJ_ z4rWtv1UoTEiYl@SH7wPXc^FZi<__d?fRP1D6&0uu+eC(w_&FtO79v@EWYCcW`IZ9! z(`gx$05l+ATPbB{EE@Hu+_!JvbT*rPb!KL!dMB&k^k(8yOu5$8=0geN|8r7;ZFHJpnQXpg9mb2nYwIWtlS46d1o5O7R z)pEI1xf2%vrahPgmZP|o|Fv49fsA#WC|^3^na<{YC_x80*b?ZYz1iIWfSDE_0s+u% zXzIl&>*XY$1FJ?1ETmH{VLsNH>9fQz5IcSav;IvOir3*lzXk8TYd<`4?;#i&Ok$u> zDs>uZOsQlH>-kk@7$#Sn@Y>Z`xHz>4v+Gz7r@nqH2e4fZWj6S}G13=MkfCEistIre zK732)GK3u&*=sK9K6<{xpIr(390UUWNcA5&cnJ3I-4A`aK1e50JPgRRyGdcFdy8)u zR>&won;YPc>`A*GfT!A#VM1i-&{GVR1_41xJjU1Qy-7TX3pjsv{$Ro6JpvLg?-M;h zfSGV#3gz9;I796($(?+PGNJhirD_@Q{NORV@r3GRa9H%Gx;7GV8*=#!0wRkw9F0a5 zYL$u#wIn#yo&>C2)Zv&I8EUm;dR|lV!TB*IqWm-GlKRhy;z=P}M&CQKFa&7DZfOkp!r-S>EM;;y=85#L|^YaTo zx3;!!&T^pyQz88strvFMc(L=@|3hNE)Ji0hk0BfI2i0n2_D*8~sJ#~{YX9)zLwzUj zKJ}NES64q|$6~e)=z@bWgac`0B*1q8THOHvyY^|PxghvckW&8gBtPeRK9^o3XWX>f z`?h4qxTc_yx-P{1BIfOzFrHY4d-o>cqxVf9?LP`b8B8=V!}LgfuIKAJ9tLI4g0rOz zeD!hx&SCK1a2;^593U-H+NYGV-&2`B1sC=f)Pa*IX-@}u5g9(DGVX{e5$h3b?q8?x znTjV7j10qxV<%wWo_!eL$T=_$x{n|TX2AqNEidbI5%NY3^YFR>FG0l9?-RX{HX(~t zd?uA)!F{z{<@Q0L+w%Ziwg#3M!2PBR3Lo3732;5Bg@C>;75GLn$le1U?wC53S7=&d zsX*dG0T~B_eJZN~b`!sS2^oPR^u^0CI+VlGfW*>41JImC0rv!nN?kXSgH2(mmIrUT?_#`wy%l z`hBTbEZkv8m-~0+;UkAnjE#@|`tr&$%il$7I=>~z?Bw{@nE|kM@HF?!pm&~vtK-C# zl`k2?um+9l=+^BDY_nBm5$_uq31H*3tF(JjeOWznP5bnyaK9hF-+!Cq(h)qL^5HbFiQ@KWayMm zl7nC#8ps+HHj6w+C}yd}&m2c2LTr$$pzs4rW!<%}mfJg%3d3ZYnyDN`3PH zfF*U@!Y5nke?@UqpE+jc9&mO^bz|E~a!sADQ{a#V$k}x`JQRlqP9A`VPalGV6C*ss z9()Y`uooSp3z3;Z z1_W5P9q1J(INDkS$crChO3J2>9618Vjvm7rd!BU)J4NAl5&&4icM(BLB7Gm4e1};e z)A>@5^95bL;bBLSz#6FRqbhs~1T-@ce?t<=Q3-(bB&A{rYK=P9{V~udDK9wfas}(LiIB}XKU_rxEVnJevBp9ZG{#qRL1(kMu3nch& z3IOb8XHsBvkrAQ&hTm0`%H`VSOP7D8u(7#x2Lb?<{ioCSVy5)jwe<~B`}6eA_EKoK zb3eEqmIUY`YqdHhTaTSQaVkADH1g8I;(WPR3g`iVw=MY7iFoSd$)SS>_W$Da^z_dZ ziY4n-9e!aAOo(#1>>WFLygW2C{NmEm;vK;Pn1$;2@niR=(y7m0xNsqXHTEF;ztsT1 z$moS`v15uqDz9goU5iC@Jhz_+0}T9R`RlkP$cS|~Hqi&~yXyeF=fpucIFf}#Od@4n zQIE6Kym`vTX_(J6X8td|u>h}4t-@x5TK3YoaK||C6T@KJs{Ree)sM4#(ZZ4|7QhNr z{n6lWgnG(^$Af|X0nYl59z6=#Y?f=+9#6g7-p==(1OP@eV6yla(%RIg&jAjz>{>%H z0jvuU=9mY?0D#o(d6LUwEp2$d8azau6=W+McNAk%C~Uw6bq8RnCzDCDC{dCbQN0SP zzuv;fIxv6$p)ZR7%4MNnnz zTXSxP)4(LIVa)_my+4Ds;A6LH-F~Y#`uybIzP`R*oSdAj!CRcPP)*p=qCOe9u#g;o z7*8mrzlA}WXm%F^PqT&@BK{prS#aN>96Wx{1Uz4P5^*?k^avb3b{vC$P7Sh=ZEbnC<1wJWD}fm`0@!1V;XQlyz_DY;pufMLgB{Nl zV3Dj6({X?&4*>~Vd+>GmRa1xwEXBdK5R}Rb^-fwN@jDz(C6hlv#%5&jV}gG-?}YaK)be#BngDz) z5sNw0D(N?y-d`9V8XeQlt34Lr2Dcsq@a901#M;x)=H|vXHT^F?`q7UJ-hIzqKXvBp*$IK}eADT&ht$pjie=M3|oDDKGl7TF~0I z7-#_OfC&)#bDK6jqRo#SJ_aXGoP_>dpPr;Am6rso`FA>wc7 z41jJO4pi~9rqmIg%+D?S>cZUo((Qi!N6uZ?JUwQenjj$fQ>+3X~1aLwJ>YzPQ z^ZyDESix`~Qz|fEz-@XkIyw&TefSaR%jNk8=hsz!Dk_)=>$U{|QMXH@1)wm>Lxk|7 zr_(8ZeyLRAHZXpyruP+V;OT%5Exq|_$d3;(VpNd9agoYr@IU~Z75g+=xDMrF3DQ`y z8OHKS48f;IMnM?79hwW^mJvV{A(_Pc2eOb%WuR6mL$O#@UIk_bgc)zl_RAEQn|$iM zSpcxbO;K+3eCFwxc-~Wxq*^(Fy>+ae-*wO35*d`|=VoThcStt?uT%K5?8UGBqd-Ou zct!i41Z!P%KXe-J-M+7^hgtAlpWBcJXOYWQ^B+4L{Las=)UtitIK6+W!XY%mmv zm(-YC9!R76{sBUxBE8r%aG|W2X5{ZbupjO^b(*PiwWE|k%mj(ROy)LS>ey%~61X|2 zgCF=|ke*`C_yh)jatpiyYinzKJAFsm2SL}DhP(7{E)AF-eXptX8O+cKp7KY%{SKA{ zz)8c>W(i)obe#=}P8}G5L}n10q9aAjr*N>m0A zaj4*_-EdV4BC|Vu6!~2-c(i|gyZhP$o6$c+&wZnn!15pYi8#$>-|{F}qW&9@jy2)Xct5=Vt`WHJOb%(rF{)3klA`x zfAIB#+P%;jW_X8zcqH^Yar^`vK5~SErjV+eAqcM4ogv!^#9a{*-PC}o%GP?}>%&+rcq5(snxf@pG@CaA|JtEs|*0alYe_9@v+!NNuzE=(;!KAVR9 zg9r?4auckwpp1I$EwUqDWE(F;X zly*|Kw+H_)@XL-sf!>Rl5u&=Og>rswzFH)TB65!15$k~-!W7rw)v%k<@1a{Cx9q#t zeWPM}SUS+JBh@}zU0uc69#rZ0ih8f~ww+WnBEqt%?2L!{|?{!wk`pfy5ETt$A=z${Lx>Sx<2)YDsG!F4=O7T9v?lu z#hV8JWF!J=m>ek$9I6J;On%Jl$u5F3iKVr3S3j6IgCY;w8@6BfY**o#dgDnRf6ob$-+TAFb;K zihsRZbg754+rE5196o#)4(>k)nM}6D+^6$Czlq=LrhoA5?%Mv<4ToXr(a_WyxUsp( zph_e*vr}sSF+U;{)U!H2$?GI^;AL^Gx#PFIZfz85YUH!&Tmvm4uHQ) zij9>>;Yr6z9NC^+CJCd1IcVa)Yvm36Om)^7I8H(hDwO0C=qNvkTXYJx0{{~Y!(*Rl zb5CFv9lQ7b`_i>a^_lgx^*f;(K$if-UOc}4ibHKNCXMg#-8-=(tvjmQ!Dn%|CV~v- z;fEg1A!GLK#l?kUPYieiai+HmZfv8u{xj3Fl_vG;3N_x;_ixRDU@}HJekm}RZ1GMw zn$1a9sa8kI<6=Y%WxjE|Aoya zl>7uwm7|Q1N8WmM_6LYAV!ml()2(cZGB(b3TEymu^=z~7QMN~n&*0z?Tl@}U?fTC6 z)!*czqvyC#b~`pU2IJ#nunFCE^1+YAn5fzx|6Y#+Yj=~2YJPrrPa$vh< zaH|za;JFy*t^#;V*|;dXqf0)d1Mu-anMNkS9AX z>dosjvlR@6Ii%Kw>$xr9Uuq$h(DDCf&r~1jSrUdN9f37`to6GX)ZH4SMGXeiNqFGY z1l)i3VK{kk0FpLlhV`;ikjoSs1kq=S(U@I)jT+t%!|&ianEfwoz@^zTESFonLowptXaDy9pnp3?}Eo5P9*R3ecMq8h#c1C~u2l^qO&)wb!k>Yaw zkACzcW8eS%pZSLfk_IiN=9T{sJE?|lDlK*4n?Hah2k^K6}-EWGdD zgYcn;j=`z@dC12a;J8H)%{q^ewUEwtEE*@P1cXAH&iHl=Hme?7yuJprYc&J|d0ffT zx_;@gH8B51!VWy^rE#op>0S3*tZu{auCsp~+KmWsXlMw=N5?rJnwGeCZz7}ikEz%8 z_w~cxiM?C`@jSPcQHyvV1OXC24-V2GQi}tH2ICaU2>{4g8fv}`*B92{^0hfARy-c! zu#f@h zW&Ss~^%#H~+$dWMgTBSoty-9F9RT2|X1;1Ao7giUYPBk?tS;?JG5b!P^Rx?=78eKl z`tzUhJufCK3;%dD$c+2y%{~eia!|EkmE*qo^VYEi5B;I~u2Oab96vM$kKHv6ClBp` zi9Dr*%itC3`hDVR=!{6JzI$@|!K_o*bp!-)Xd(+h0pr3<0oJNEG~-#e1h)N}ZVscN zFmWyiIMi3p0Y0qRG6TR@E#?V8s*V5|VFZN!)~4Q@&E#O;-hD7UJgklb>E9_V@0(q= z*)ze%Iz4??VvfipXlZo?R@YWRkLe4*qB(X9yCQUH#by9N* z=44>8T!2f{D=^g82dBqlkaJ4N_NdtqO-uc%f>8x#-1OSWAmwcfPVdbiGlM0WjD#02 zOvB9T1~g@c#h;+S(m%qR7vZ*6yQ`0u zz~42S%Zfs&^p?IG0VHBYJiplsP(1+f)@~*{v9#C=#H|Vbt=5;SMw&<@;lP0dUa3@+ z7cRbj8}Abz;`mwXxPV=`e5KrU-Ha1+gxhRFJV^s>S|@y&7B&g372g{PA;B{^bH^+i zSMZUcK6voxAUtr_5jZt&LpF}Vp|OhjpvUyCFNyq*Fu zBdtd+mxs~OF&_BCu7R{ai8_VOt&(^CIpiyWq;><0A?woLHvj|u{k%V1w-K2CK(NoE ztbnh)`c>NigD{XfV+J$a2YB+IZBseLfyMO_cXS-gCm9OeQuuxL#XVIAca@KOT_$+ZZAyLkG5_i)RXt^fOs`wYbVc{l z+tkC&S)a>3{wAl+SC(Nc=flw>!*KHWI2=DP2qS|wq-_i$jXE^FxV8j#RN$rGj{`-4 zI|#_7kVJS1M|u5Uz?$zXS2khQ&0^i3+5)RQ5QtpkgzYehurX*kvK~zHV;+NF*JdFa zeGkP1*!ukle%NLJGHCNc7A+E^G&(o}d&ee_nsyifaJj)_Gs7TYK!<>GQ-{M_NH9p) z-s05=Xkuh~M8Ze}LL{^s861Mad><^WtpvtEYCn>zpz?K~Nq#)!NlIOM!F@;pn@dg9 z89+V$2%hn;0*hk3KWsRmf z%(?u4r6pt;9KQ-FJOu_b2!JvP*fZP*L*!6MU>Y-j>O#4Abp{s7$RXi-G<|pYfk*EB z#|^jkiXo@uUx)N^T2K2_iwu*Xrl0ZAO&i)EIpp541yjD z%OXCPN6i`)b8=*U-F!c|H1F3WxMn~{-=lZlLQrp1pLLhmk772uapcLW+ z!dHNNHpg0smGyOQ$CE8?MojtbC#|42uItH?igzQiXQn@{Fc(flbDd-Ez77_nVEz6@60Oe!*X<*yWz_F&H22k1x$!uEzZe*u{d# zhz7i8e?L5a-vM~^#5g2K5sc4idIB~o9;|Qn!Dg|FRQm>8Us;1nwGJDFG8D=+sMbAj zo092SHPfAfE@n`;AZIaU8XU+W-JgZQzC1jRuf2CD2dR|c5xy4S@6xPucK}5L2h6DO zz&}ri6PvSaqKz#C8a2!i=T|miW_b;&4Gj8m@{bqXVW0=Yf-l486Fuyk0Wn)t>w3&B z$Sp%{IKxK};c~s&;x@RE(GdogMpQ`IOun22Xl~dQusNV{2Qy$8!jIY z3e_4122)a?TD=Q{=?3Hu=kRzx0!Qa_tSy*XSb^no8EOp=%L8jn-*ZbNm!>4d@feOJ zEJ$Y^$m4e$7{p*d(hp34iBdQj_-kH)q^t^uUVT| zl3H0>%zyebKlo2hoVfI3|L?#5^|jlT1u)#*0}niq=qJxHdTMq!dWg7|e$fA?ynzxu)-27|1s@})fPn|kdL4^P9>({T}zS+MX zjr{ndj}GtKH}Olq|HaSm6+SLrR#Qw2=itH9hv76b0CB3PVk$%9T2Tf+DPK6!9+tfl`?RG5ezkk6%Is6T@l^B{~4^<&nIi)RAq zUgCM7rdfhAW?xOtuDRb_M(VFZ2MhB@mv5--Qf>OYkk2lzK)p%DSgC>(i?sYez0bj) zv&t~=gOn|^>`l$ugr+T%?WB5b5~)$fOCx{P;w4)&0(Xe%-f0k@qd$*{)Bi>)eFS+DFQQVZw2T8b3B{WM0mL9s zdnEm(b-B0o0Ki)j?D*is#YrR*Nqcj1vjuJ5tUBM)GvMj1jvYHz$Y!(u?aIp1S^e6# ztG^|$m2X_1i`7K@Jxz?9xPbWsS!vyUcoa?_9EPzxQu)Oa3$+}nY+fxdG&$2vFY65P&@nB9$}ld_d-d#vW&L zIS`ABS~MvGP}P3EZGVA?Cj$f^VxuA9`ep-`OD+s#a^O%Y2SI>kBOt?Ij7J;;MV>E3 zVOXl(LMhZV!8DhbN_c1#83?5FNti$?zp^(2O?L?E^nz>t1ONoHIRY5~N3j6pR7qgM zruU#>Mhz|tc(ocP{tY#Pnsy79E)dw-Wk{qlaC|%sixWARscgVXsR)ykS1NOJ3k|g{ z@xyP&G60=(_SMPB=8+S}pMUVd2aC@>`)r;9KiOTI?B6gzZ#Hu`z6r=ONa_S20B{?3 zOZ5Q2oxb(;^*3>m+L)i8&l)j{@}|DI7>$8L()dq2IdJXp|L&PHuYPtOQNKlZ$lGrk zkfHyF#>OE%IMR3R`gDV`T4XxK=s*@u9Nq^*eQ8`s>pYOhR^8bq`i2XCgXsD)3-ZWo zJ?SJMACH5`r6@Y{pdMP^980(0d1`#CtT&-aL4&MXxkR8BZZmmL50D`Np2_F}_n}B2 zqBg~9(}UUN4Vc4BjvV8xctY9LYC#xC<2a|Y))rTT&cO&G!7Cd4qb**UbOyoC06XHT zW5ARb_$}Yn8w)6d_%DM=e>5_fd;wSs*MR!hZt^@;9vACk9pK7h8Rj+`&~%28VMwu49cPB%a_gWk zlmL+X`U8hQomoZ};OMOL?MeXjIWyS|Xj_DC5M5{|IvW0g|2%+;%)sE_;Jy;*$ytk%p5mC zK|9ceeffe1$rLLMSX?bYq1wa`kl@eAWd+}l1e35fFSSQ~`+Ituk~kKWyCj(maW_z$8383`bs>|C!9YF(*;GQ(Ys^kh-!(cqwx3EStpkMK zzFAiOr?K=`t{gN3rAU*O8I^ zsl~;`vw8vUDFJu6^%#H~T)XK1jvqfk2l4!wGiQ#{zdg_2GVeOt-@3~Mo#Xk^(jqc| z^8b&4;UA2Sjyw0=cVBsCX69!qmFn5?@$nd<+?j=idD-?nooK%OS-{HjeBH^!s|kU% z`dR_T_Kv{a`v)K=OCXT0jM=6=f@s_W$pr%e7q#1oH)Oc5^>*C7ZMfK2w z9tG-B4zHC)mi}d!2XIZ1U$F<0y&6I*;$R06sK89FA(Ak^x(w5+SckQ=btMMNT+D$Zdq!Y-X5Ly@tI3Vk<*|={^3VLsrG@1`d-44Fw}l1J zObs8dRQ{8)#RLVj@Cm@AWnyV*DYm(}Ss57_z8~ZNFCm+enw^`?E-WsLn{z<5I?F9< zWwe}Ou1Eh($yV@O{W`~v9h=7b|JiHTuEFiXhV%fyyKuu}i;j9RH#d7WpYQuS$O8Q5 zLZJ}zJXaD3_Inwp~9e`DXieN9CC>-Bo$zlq1!t|E1u zL^`dyxVW%@kCkm;0N!dqK(C!nrC|TwiM^$IH9?DK!tr6SKf~F-LlnE$)EU1BE&`(S z?G;#;!U`5l1GA)7?8_)0DNH=5gU-gsI zP#{wNTe3|tpkGJ74>uV^2Ayo7`P<3@(chY0je;BpI1@Uwe&IWNm>Dke+-hsL?6a^H zP^jA>b&=5#L59o$wHMOg3bYrKtccz zeuCh*3%m^?FKCWaUDhyVBV!mvpNo7n$RsG6j6)omHV={R(!#tjPU8%+_9#TvK<{~YdzHy|uK^tK)VcuRsFM_9_hv8Hti zsrjpC&z?Q0kf{~;0CYmGHzL#_5KAW;)dT5*b?h-hx092T`|#lZ?U9ku8nOXNtb1K~ z=_T)Hip9b@qVM|Et5>IMwOaH|tnhrhbt{BH*?acv8Gihc_x|!1zx}O!P2ZKdT*4X~ z9^gevP22-e(}1nWWP25oh0bow*&1d@5CnU+aSK}S72@}T_$Y#mYl~G_=(QL4#+yOC zLIVrx^Y)Q$U9Vd(vr>X`6EiWI!bcvmL_K58m)r`8L6EwunHFNp*DQo)00JFA7vWhn z>yHLAx{UyU8I3D-T)2%5-ruJ1uNHjMFCOeuX!To&4$k6>l6Q~UNC;>{ zO~hfYSc3%w0YiQLkR^7?gTU}f>OMf#?&$}<00EdZI5dbi`u7*Dup@Y#sOCYt))A3F zoiXGtNsN~&`ui+4Pf%*IC951bt9h zzR@7@@-aF(3dfEg-9Ixko7}r^B6s@q>3=mhH+N!rdASi!%mZfl@#U4}aTDB~c#NND z`DW$hb)##b-(k%O{t{@$jGtYy4<0-?g+Sxd!oor?`|kmOw*>?+>%6kEd=BecKR-Uc z=Xa2{7g*<(>JS%OsQ>NIZus^5LE4hkjZ+<;ZpdZQVrXyx;z(Cg zozl?qU_!pm>}4b`*Dn~Zn!#?8(eU0DB02@h_Wc{F6$iP$44$Zrn*?l75LjM^I@Td# z35V;mtTWKrzpsOV&_XUCVI%0kBDkwDFav4_06zDZw{`%8006jmxf4|{zoS8b2!emq zE|&EGzS^hVx&S~zoA|GTCWGfW#96SnS}4KNdJ>LJ^g+(C!|Xc}yrnjRf(UpG09)I! z*70AF7vxR?89lcBfD==X(fSl49Mt*()*0aOm`^2<1;{`;xe0}81?K1H(vLj$@X_nn zre3^s;f2GDC)OVFqG)K7fk<9kY_;^39ZYt4LLU+Tok6Tg&9ryiJ^oNQdbK0QX~ z3+q<&R7)g6rENLpvk+|{d|@VJwXSu$`K(dR00%5&hni|;v^6$1HiftUH&_-u2fggS z2LRr-B?=Ep>Sx6a{4$;-SDt;ga&&WZUFw677q94IzdK;jx^$S6#CQXk@t;~>Bk9C* z-KJ&l46a|F{166|FAWR~c=(yHjGF!if`R{zo`-)|5j4z_>ehgP$a~xnATU(m z{{8!4-`>3^ma*O^kXDW3_wCE3@si<1maJT3R*XeW%(~KoV3`a_x%^SqPXa$%FNB=r zbH=2Z6D^h#k=4|ahDWd>tE&vk2w`gGw}jK6=-?~gehSRUNW$ED9ac&W@I)HoBp&oU z9rjgb#xWmMkSG3u<^V|U)o1=6Kci~vGns4qNMP_=g-d2ZQ%Zj;LitB>M2%D4#RCC% zJjPmrzjpP5NN`s`K(q#W0}dbrUFO2zft?#wFFx7!ZXk8NNM!u&vWCE=)QCXsr! zfI1e{>&LWlkr%YF$`;hx>Bo{SsFr(AEcHDUB=+=CY{p0F5yhYe8yVJ0YO!Dv!RKf$ z3HhXBtqNDxJooUyLkIqsQla=Me3^|K&45ikUzZ&{tuTg%9(oXierbdjn$gkW|0$7( zeRRFJSzcXRv%m87uMJ`V7TjVhSOD$E5b*Qt244!-b1_M2@E4}zn*ui5J!|boJ4o3r zXfcneVQJL!d~0BE;3_f}q0B_r7Sb#U)xOC?3yYKm{2M!$g?3F8x z6SZ2Ez_ZmJ^mn7sjWP%3dRR&b)zDgbD-5`xquwRoTntMH7KTVWKnwvs?&JA<{$VT? zWRWua{My>uKSX9Aj?BR9`Sa%)3`9;CTj;TMJDo*lkvVzdME^q%J@Bvo%YXUZ!rxwaz-ygj#N@07^Qg6kl__K>Ck5$gCaC^%BOL073g?qB+dLV7QbX-MWCO8zQ-L8K9A|8cc6)n-GcviAi&(N&4O5ZnNFwPz^gwo zeSP}t$UX}F{9g3$0f4u4^A{Hv00Zkc@4x>&|1|=E&tAB2?pV28_VoD98)~uCWw)(n zGN6>hq%r7JUQj2r;Ep%u1_Gx!&%)0(LL~sa?K61N{;6Cpm&LmCf5MaZUmy^O-+lMp z7M@sFzWUX#E=TkVcDVj-J*mu1h`hyx3l|66W*su3Cj0OUjHE0WP6$Z(Ra{-_kf7;o zlqt{@0MVK!@hm@~Is+`Jrz%FO(eN~GM835mE2FoSCZZNIUDDd@PUo!`q zV2DWv8Wj(g){5YgS&;2;>mREXNSi?Y-Q*+)j>`OX8=@sB$i!NG0Ca>17c=NUNy{yr zAzq+_mfz8`zmCV4rv3d8=(dP0qmOMhUjnYnNa$Pw;HDI}&Rrx;Jm)rRRj#M|UJ8Wk zt4;(nyGdx~fo|g|kE#nqSwCCa9$M=Zg4y7<{unZZvARXoBLg5ymjQ@L@WPL*ItYEArANtS}BgiBkyL|a_d0?Rb zr*Vz=i&)REeEsWR&tg!gZlnwa^Heg$9*I=^Qt1a3Bw$M*H$mUrW?0az%^s~KfNrgx zk;n4VMwaM@4jrP~e(~aki(e*Wr1Ozp@b3YDw|^rPOd`FjSFb#|ckjf1g(ZQ1v$?r> z98V&uS$URD*LU+;it2AyftwS=<6e3*QagIMtC6%q_ZGLt5#5i=4@26n@6x49w3z-d z2L12T8GjNH`oF=_!LRSzw=av2IeY#3_0`Br1Yn^3G%l6P*7EX-%e8G=LNabce-<+n zI-;Z+^y29(Dj-4I6z&22Y3Alf3af#{Pln34=$C7s1}0msMWIGSyd{ku!Qzp_WnB1I zi!~k}z8o5vaJen9q!*wff@X198eRYB754jdV&X0sMg9)MYRJFFe+s*ipsPJ29YyrU?f91 ztEwaF-``A*)XWpzPIlP2R00yn*~Ks;FI5|T2alY1xY@k)^ybF87s;xH_UdQ}`bUo* z8A>GM_aJ~T#S^i=ict8!PNh<{bLU=9IZlkwZXZ+kF-K~p4p#U)s&r|KV$H@x20BkLq7!XxZPi*|U;FxFk3II|h*1B#7hinw5HbNLsAa|Tys%Y$+ha9sG23oy zzkdgbfoQ`6oZ;i&EV2Xe^wUq%=ldJkZ1zX-635&BHU9f|jvqgsU0Pat?%cU^n-O}> zCRbwfLRcfLtgdbF(&&2)%t+EOI+(x=tAf;OogNJ}^3}mb)iT9@a_qAezs*zgeKls6 zvLUmea*dx_v8;$uj1;ZQtdNmCX37e!!P4@buxx_#VZ*C3MM+eNM}Zls%2g6lRRq*T zlKtDsi=K-Hp0eU|@Nb-E%Io$+55H60%pMm_9n2+782_ck&>Jx+9w8R6_V~7vohKOIb8x zH-`J%(~N+}WfKhEenaa3Jay5aK%GAxkKr{StDPb6^>8O*amb;v+^oS;(Si!3AREWm zXcTxr4>zDh%?0T9HdTAk`2=I@Xz4}T_oD59N`Ih73xLwcS$e>f`unkY&^U)hWM@X*5#_Kl8? zJaXZ}h0^|mdw&4;@lUy4vvK*#8wm`ij_p{nR3=41R|cdTUX6k)@T~yAgqTEz!?rxd zj5xvyeoN`gmfw0STn|A2eMjXA=rDNj*g(wnk(IFAhI@HraAY!(O#IT*-+bx|4j~^1 zO0m7I2LRr=O$%o@xW4eh3tz)}`&Un$I`s+6tpCp9;vxZoqtu%BPP+E#&nY6*n=}g~ z-sa$EbY6SyHEK)y+0oI_zfG|Pvx0wg;>3wB96fq8y|S|Mt>>SAzHG`12M!#F9XodH z@z>9t>nD$X>Ww2?-vnkST#9hbqAPR@9fUz!wk`rK9THnoLeV9dY|Vi?g*(HRNNAnf zNEdPDcs=^76 zE$7V+N7?Sat87DbyIBmvQO2R3g@9r@feZjmCG{+}!CqNfocQFYKK=M_|K@Le6_XK` z%YV=Jeoto4p7F=do;_O`8XEX`A`$eZ`X zLiGB1q^mx;v9a;X*REYVuJtSLGzbX%x}$*?O9HI^#gj`+O-(tIlan-|?thq=nE3fZ zq2S{}@sIGkd>g?)Vs&-(i})Bnlga#ZJRuK|G>2yJP+gJ$fHKFy1)XQ@+kq1r7@8kK zlY0sBt+g6vRBos#IOy zYq|%qjQ96H_KEK~v%a?S(ER)?Df8cl=k70HP`9pJxgy9k$HrWr#B}&rsrQE|6Wp{P z|IKcuV?gVi*y0!0o67?O13!J?+*iM-N@jIG;(FQ(JUsw#dw~G6O02K169;J_<@Py5 zvBz_{+%F>#xGhSz(ZFx6lbYA`T@x6f+e!I5Jv~igKT`ev;+{Qw1hNA4{rmU-k9aap zz468yBUQ{`W-8Z@i2o?nqDgTQ z3Y!I3-`F5Wwb1AU#O{0}?&NbN(()MTZlPKY2I2;gaJ7zEAoC?b8=vYm=Su_#w6yxQ z*)ewp3K6Y`R6wj=t25y6op8jn6s<0gDoEZse+IG5`6*@es5W~{-9!N#&qKgEK3H`O znzkd#ZMooeq^7$(_oVY zvD!yKPs`+KftZN=%NL$|@sF$3s;ymEdxF0n0J#0vH)DcZQs?{wyT;dQUCaXk@EGRii;Qw#2 zn;X3jDZg!DM;HKLH6i`GfSK;x+#DP_c#x+fnhHp03ET>1%y+%hc>xxViqPnXgTK}S zkf@f9tttV4NPC~;AmMj(TI}?<)8owX&d04jOepZw8x3ZHKsupmbeDlbx8U1%`4zXe z!bQtR1{~6EiX+n&k2|cR!Fssx>mGv1&AXSE7VfSh7{Hq#lSx}Los>$jDuvs0MRXl9 zZi~ib$Efz-iTG-KQzBqQP#IuwaPWOcjvo2L*U!E_YnY1Oc8m9YZx_5Z0T$GxDx@=u z79GsD>1S*?3C-ec5IHUkg|OA8M5COZ}xez;ov zBUzgeE?wM>}fS+a-`hjc1~nRC_kMH7G^y z$JZwfz}0J4VRLgcQl4m)K?vC`T-@>JN94OGK7hr44elS8Ehaun^ylwlKW}&O zgF!N;dj>P*z-cZ32rU|qb|}{6B6hgHUCt@CJ}0Uvfeyzpf$MlI#^)ZWwmd*$Us;CZ zYmJSK$^!=u$o~F*qSP79yRMpANX&tmv0!GF80!6<3jR9a2j5S#kmN7mBmMuQ2mrqS zU2w?v0Kj+P#)zBL^3)A*J1@j$L1?E0O<8~zM=AlFJb6;!!Xlyz22r)t6`zhfy2sjO z%3V$MvqJA2)mI0tx$K+#+}rJR8Ewvr`mCtg@ybC?wUeo-VoH=p-2t*~0S=tyWSbaE zwmQyr69G!tN956JIUyXqdR=j5uuV^hJp|d#FcV| zK>)P@2EfsH0z^h7ciP|W;G)xgf!Gql{&m;W{p+HQa_`{Gxi#oVF5DeruI~Tl1Q>LZPtxPHjdnYCYf^|WGzKkHfj%6+b?#YzLjNpv|rl|Ac zJF%IB!+;XA<`6(G779JVUk?D>dBGnq-h&T5cob{qA2ofsw=)Qce!TWQd-+IzrdHjgLnRRpRaZ2ik5{j?5&D| z1f4ZXKkzE|BW{E=Zq@Zv&$r1eA;Mbt{?@E9xGj=thSLE%Fa?pv8GsedT&eu9zOhb2 zR8%R#5?!&;yCLvLgQ)>mBIuPsK!mk;nsI@wSs?lg_FH7me|ycp)4un&{6=z%=~5IJ zw096l{hl|AP}^q}wEUm}%#baSUqrxB^cYj(KrC|MagxShPsUVD1d)!dmT?j^X0sXS z>+53x>XAPh#wTKDV3wm@YW^k}42M+xeZNpcH|v55+? z05Mi`d*NtQ;Ro~hO!gyNGM=p&Tr|kHE*9aUA(VTMy0nkw)d7Yb{XD(M=`4>P$y4F9 z=Zouk!Qvi zt>uk(?f~!p->v`vY&C`{m5Oi;_XRNk#1cedXTyxv z{g44O#|}hVGffDL+H~&-q}xG2%l%==DR{rY0$O*vN%hz4AIn&4TN1LF6ko5`D_DB7 z*q4w#e=KI>aU{4zM^$s%aiY{ZzjO3hjJi{9e}P?hTI{sObOH}CG4;$bh&4X zkxk12zH1B?u}%hU0uz7|&7HPPit8Lu!hZBlpQk(h4^22yTh2v79+ zyLtSL>IqEtZ^X#7xlNY_p7jDr4*=Y88y~^xbUIEWU*Qh#TcyuVSsArT<#IWu80my% zaS@4^5e7PVVamqnF?Z+d8g-07R$!5~0J1}l+EBQ5x(gP6hn zKsMSuBO#K#t9{nF-ESxHUu!7<0v1O`#F&(^`{CrZg~jx1LjN=UFEp&@Geibh^ndWxN|*>!Lb@Xopg?EYsV1 z0N_sAI0xR`+XxSXt8vySS>1{5RpHgRA7MB&$iuSYuZAM`mLVxodUV+7?fmd z?|O%e)QWc6C}SfX!1?nRV18kN7xkbN&=o4(;hPL8Uz^3GJ}fUS!R+iTP*1zp0+w2V zfb63D@8$=vRU6PMDCBWedXk-N(`^Kk9@{^>*h%TXod8gSTM=QjB7Xl-kh|5`A_N4~ zePi|=`x@ZiWHLdM@)!V^*1oL(Xlt-Z<{OaW7_-`!Qt0EDon>bK|v zx>3)pdZtAi!4%mMU%7e(u3WjI#-~PBfAKB_0qXcs`($&o0N1ZyNBVzN_4>DHDZG}y zUYEAZoq~UhpcA5Qje^W{6c{wD4YZEwZ9!t9P5r-Z!1uS@CfnL!WndTW2j@h$5`fhD z8TuIXd2L(e6_oAMeFOk9nRHN^Q<@3CV?f_7aCg34?ik#=0fQR>0on+N*Gp<;93B~t zy<2f`4*!8Ik&%%k_0iwa2Z?1FUx1FZA&LGRH+*_#5E(<}2>?B$O=rE9Y z`vt4RqN3UX{gyhv8nNuC$$M?8YlTY;z3OkB&{ zGmrcVHw@uL+qJDmKMKG`x&cI_%@IPetol5@Zd-+b0WfR|J%HFba{Y5XHxRXMC(heR zFVS|Ic0BL8y~d3M|0rNHPJlE?761M*0>ZE8hxOV4djQ}LTi@^m92^|9v)SyO{3Tju z*te*kbwE`kJk1DG-&pU3i&}K;Yio&;9TtPu#Z&G;O>QUD5-k}%Kv3wQssR%$q z`}4USF!C8%#ApCph5?!HvsF0_TZ549uBbQaTn8sVg$oxhz`1khFc6lzX8!L65THbW zs_lzJkQDr9=jKBH|H$vu;-vsPi~D3pK-ocvsVo;&)``c0(jq_$&2BgtQ^wj&ACKJO zx@?=G7Y(jm4TGZQS(;Udb|RSLlDq*D@mMe=k)x*cTR!;KZX4(xtlN(5mdD+YfNb%Igr0CGTxL0C2}_MhpKrq%Z$~X6YJjm#XtxTEw$8*uK-o z9PMj>r^Ql&9LIb`U6XK1YEe=;h6||IP+2dTc;Hb*q@-(1TYN>UD_;OL7FU{bfs`#l zvo+}NoJr7Je_uH4%kN1M_KR~SrNmGqlH#$&K6w-fJ=C=ZeVG{aQ42%8N+!QN2G}(| z>}~@YUK$JA&?9D5P-3qh%&siDKM*`>U_f_j3R_)VP`!q(7HW}^i>q#zO1R~-kkaGh zVQpg#o`3Oqcr^J#(h8_cPtxpv(x>=JlR|&hb=9e2 z`55$FEVa~&ka1iX%+Nr~8a~Da{S^L9Nz-EEZ)f9i89uC_=W55EdQx znI8${242V(FCnE?l|k9c*Lc~tFt|$_9KQ}Z$A^@S4|Z$N#K*Y=Xk&4Fi~=*jnKZBs zwQyD0z>8db5fX)=%`-<3?gS)_}AYG9Q+XR1zHqe32A)- zw+Kb(7`O4WQ}9pNl8;e3W(lTvfAaI)?uWs`o zyw5lH2TmRlM~@Z|AR|FP68ufpBL(Y)96QDUfWMpmEtr83Hn;tiOJzTqOj-SX{l6EB z#r{CAg*^c97Hz#@KyU5FFds_*e_XHEKIGWepT?l5OI#u_HZiqLv!L8QdcnX6MbV{{ zxqHe(pXh5+=@NJ`RC=%=M#lZB<=2F1x=g&c3e?RF*V9)4SAfKfEuNY>5CQ~NLw`+iYyAF{qZ{+K_ z`)25muQeDvfCm4YpPz$QUwsuOuT8QAFda*sYWpq1zBYrV))qI}QeJA+k%Z@#t3fJf z_vEM-Pv9l4%&Ulv@uaq~2E|ly&<&e-I?7nu@8~9$>oi~}5W>o+RIu}Ts0;+ORzQJ4 zOPEd?pMg06u2?L=_tCUV8gwNzdu2{0p>;VzhEhb~o35SkT#}LV=th>L_A-s~EHGoR zn}JA?2NL0btXsg_Ha9nYJSQzY?tgcAdHJWFfByLywRrUE|8LdSV*uXz2x^}@f8p}} z{rkUl?C23{YYBo^JWc`B+P2^Ioh=6lvzp`QjInB-#^;h!U2;FNE?4OKzY(}a3;eAf z_|Ot8WrxKwx}fhykhD|3JY_-*04xyMQWgr@jeGE6c%51H%v#;IeFMSHE7j%UiiM z@cWRpab&zJe@A2bv#>CaWsb9~d7!~R=J+=IA?loH9Q&e_{}#*Nj)K6gKmv>x1gQ2n za;?m!l8{Lx5Lj7?kud;*CpuaI3T-)N+XLN}{{1dux%OjN!q%yS9ftt50s#h%f=2;s z=1SdOudAtsDf~`x{7yuzn*bcVZd<2e%lpahK;{Ob|Caru1h?ASSIUjl^S4i6gAM{Y=)`_R#sx=% zeTS|9rgb|_&e0*zvQ=vl%_k6A2cRfqm!}vGWRj4uFxX(Wr0Vlh`xw~#{GdwVcW&qN zcj!rPw_Wujz3st#de%#L{MVsLZ@8aVR#)L`Pd*7xefwLmu)3^jM_Ml~EKBe67MQj* z@XPL(TY?QmXT+;K794&6Wu(z77Wa!;17j%M?slUlh89V%tJQW`q^+jyvllMTZFci zQ}C^4pM}-+wSXv&e#5R^0`EW-$-Je>{F@y7U1nj3Jz8B`gXdp(9$tRs6=VSx0vee1 zgPJYj1vBcS6XMz#fKKCpx3~iOUAzE{6)%FlRNRLCTn6wD>kc5&fkHu_13&vn=x-P4 z0%<))cQ&kw#CLtYg9#S2O|LW!g0i)%M*3|&78+pFc}b(C>GoVU$76yGP?I3ulp)X- zje|Mo+pa^jvmsy`G@GIrAW7M| zm%j9+t2F;#h&$c%`u5*?8i2QYQB)Khp;^~={4~S^bhnyJQj!PmFwKPrRwUcA6aPjLPnkc z^r9o$#^@^DgBgS(f}kcqMEuKvYyGBF(g_>{KIegepbZEJ-+Tz2W!hX9Wl*!b+RSETS5yB zT@6qi{=Ul5O$Lvlx0{)rhNqr-5cf8$v9v-fP30$1T zjS}V-XW_*cUxXK4cmc~AD-3+h*w=}bpTF?IX{Sdr}?g9Qr%z<`V?;?No$Cd&?i(p<20aYrIl$cP| z4;?y`%;occG)SyU4D;2VJ*vj?;Y1DV41e2Hu(Y7!%n9x4} zfr87IFEc$(>h4D$d6Yz@N(bbH9x&2I(4BS5_G?(tXjI zFx7(z4Cnw5?2nGanZ(xGzJ#qF4$wh-$wESxqt$zr`n@g(8Ud+lz>3zyM}Y=UwEDY2Q(H?Trny#WVo`ZmaCzthwdf zZy6la%5Jo`Gr@{K_O=rwa@Z56|Ik{{ksH_ksH!_=hXYD<7JfovGFv z^^A!0bkYBm1t_=C2v-mMFel*Fg{CzNF*JCmOo?jcLet#*@4!MA>;I`V?BBZ&HZk~L zpPC95AvF)c3j#ka=1E-Gv9hNGSD*%$F!Hg~^s-=Kjx2Jfr7Z*iG7{*+mC+hqY=ML?X{EXH*6taN|eC zew4#ll6?eJHW3>r^74%`gC+0f66C;KwWgL;|PWI)>Ip;8(3-og5ml zw=WI(1cDLV_nuS?50@c$bgska1Rb~x#-#|d?JdE*t(4Uc0=Bl*$`)}fXj(s{>BHk* zLKMjOA&W-)(Dk%lMV%{j{!wXV0s#OG?20FoP_Ne@f#Aw(s&UwsW}~`2lFQ&4V+98aO}m-m-6EEjS1T-GA?3tumj%~Zz5$C8d$G=H}|YMNdE~xvMAXaD40x(vV)Fu_syavp#zvuj%}l( zqbvekT3qC@wW@{4^m=RR8jMq*t@?X|-eA$vn#HYQGD34kqF77jtQVm6fGQ({e$=&) z>Q}w;A=|*BKN$iVMXQUDR>4d)jsan)F9Z2>5>`u_7{pv&2!qAAZAc4K*Fm$k&-+1t z_zvw)k-!LQBh>4iG9(om`+x{0Xr70>qmg4jMSjpk9j&i$nYnZj>B+Y7VH0lOFw}< zF!cxs-MSVLUWQNywg7Fh^~RQStdp=_eMW8cv3 z)b=A>ZdFn-EzF{X$*c?@Xm2-+0t6nxs&D57UN5#ZU}WFky-Y#R%*=2X0DHDrdU4?Q zQW=sFByq5imge^(1A%1Ndn_Y8^`esyP}c{dIsk|Scyqfd^=~0zbvq)f6e7Vhk6F(>euA`%H` z7Y+71dHaXY?c7lUZJ?mNr7bvqnsrFw{vPW~!JfV(Bn0kfyp8s;%fF4UyDVI=%nqfN z*Z+^bKLM95yUqf^wa+;*N8EWH-aO>Xd^svJC8d+#gEu5)ev`&Ode3UboH*!OiK&<#lPrKp zT}P0H1wdkcKb>?K)2CODp$T zae*K$lQb(4CSg1*Xzj>mGWDVHar?sg3(HsDeDnXhh7sO#y?pJUez3W*bsdWrSh{;p zEh{3)^N~Rq4kr8t3BX{BmKlA)@ik7f_E6ylni>%Ta_x~83oUqg(iaK@lNVDSB8dQcXt=CEy2&v zT28c3sn_sh=e$4{x6sqR6f)7vNHU%i4fccrno<8w_y6N%FL{5|7d^xgNIzd_&jL%s zx&a2TjBt4pU}|C%a!VUfrSF$hS`7g!^jY!e0tMrSS|Wz$#zCa~%ac;hhpK*vAyjRh z#0d=v0ZB`>5-fh@7@eWd9EKvct);o?c8B}vYisLp`H{=;6D_8K`eG3k1 z2mD%uY|(i`H%2r1AOH{M_aV2S5E=1P;J!!R~PB2XSCzaCf_ zhjR$pP58ADla@+6O5-Jw5n!JL4<3M27eoHykkOU;{E7BL(k9#d9mHdHY2Ha(LeTM| zClE?UBbJjieFa0C;nHjpG-z;lch}-j+^x7V2{?9L3%>`!lA%-eKtIYv!J!^^-j%d~NuGOlOtXe_1-x9uG!<0waZ!<@YA zLseyE8`WIB-yQxpD+R^|Z9YhgUkYcBjB5UV2ywpnNI<2(RacT4=9C0LYepvG90t%N z`f`m<2ETX+jCpV`kEPEyHEkrinij3wnH4zg&%ANGFNk6;gm6t!s1jHlyUF<%6;tpa z9Yv@l>0QEie5v!t!hvFKm2TJ`ZQjI%_Wv~b}nJ|>= z1nhFgOyNYD@ z1BhB~&{7+B+-G}}BJ0e|VTK~H(*0Lg+|=dBCCVeg<`2YUz30XA2G_Ez@%jtQJdb#K z!4a2&-cmIBw_jHB_SQ%&v1}k}Z9_oSR=lXjTFY2HFb^Y%*4ah({e{aiPFI$4OefrIhG#U1a9&l?qxM@Z~O3F(P zeY&6+Xznq6I|4wjO&B9er8zKFAAj0G>CdBCZ!e-b4IjJh8iGe4<|FprEH(9O1X{l8`8_k zA*k5@zRx3qGE3lC?MSJJo6R{VT!% zoSmKJFZ;ab_#9vg<(l)O4EKv!n>BXgg ztI=V5_(PHatSm*A7^hLlY(-U`LV z5R}#-)g{6Wjh%8Ke}7&8ePdz#!C5f|bQKX=8zfXpDS!F{;AnE{~2{1OO}<&2@$$kTU? zj@qccM+BJFB7BqhQQJg0b6+=iG&%JZtz^A(yHueJt}v{MiK_BhD#%B8!jOdIT&f7h zmaCzcl@q2_uKJcYwR^$&bwa5uWgk}$>j)BLQ(2{;xF5YCsX&R4TGp;~vewnmf?nf{ zx^iT+eI{AVOMlNY4t*~HkIsREEkTm15rlJ|;OV)mPcID4&UmNk~xD zas@T||2(a9{S$b-b=kQXndM86U$^o4zA`{^ZD@!Fv0ljkU-dpRFv(NFCow9#>En%m zvfaF(H)Fie)5E`R7V4%tjoo5x6Of&-sl_KEiQhjL+>Zu4&QtWE6o!npy$^}NCuK=3 zQ5QRYGzs}RV2qX@Ko(vc1f=oHd2IL8MA*%AvGvuCha*dT#mZT+K_Q#eQBp$vT)~`U zT3|sb{-rDAZQcDfQvs{V(;y33)3v;+!1)9i;uek#dU2FWJ$7W- z)+gN7vjXNOo$-Aqv)k)ZH++9LaeXHZ9D|-XDk*>u1(P^B3%2rhlG;iNNt#K{O;c)I zou0lDF|qy_j=#&%OW0TZl8zFaFRn z(~KFg8FZYq-j$4X!q=NJAm7Ch!)facX;(bH{T$qVKmuQy%UE=ZTNGAMhc}gspVSvL z<y`Su3|vkv-|a#YPY_{h{K;CN*(EX?2lX6t2yL@^jaS1n`Gs#x@XH03j( z++-2A<;zj*VDUDLoo|^rCM#B2xw%xz?4ex0!har=nsJSYP}{iBPR!7+o>+Tut%qPU zAXnIt5R#9JnTH*$nf=v$mF$?xn&(RLCq~_Pe^vL0x>pq_!rH)S-H~#)i0i#bPcxg2YlXI&bBZ{t`P;^{#n*DU?jz zLhV`zmNZxl(=+1oRFTNTVl}SBha$v-f4#ZrU7h9Par;&J2^eQ3$|dH7ET?O zvQXc`#D?|U2GCF?)lbf|&U^@N9Ma0!-1}f!qrpD)D6quwyWRJqXwiAC?WUIE9zSM3 zDb~I{j89Xtt}IBDoIp1J+2#VD$=GAL&r0A~>DyrmgqUX`q#kXI_MGqr5#elC?D_Wk4$%m6h63ufX_ zBOh02OObO%8ms+fMv0ntu;lIyxa3p`bLkQ?sJnH&<^3Tu@x@3C4r2O#E@63hNc+A8 zPPw~9=68P4pJUBt7j=P+t42)g}_Fqsyy41=t}a}QI2L8*it@1N22 zCEoSxFkynCI05zs9_7d99DhtDbOvmy%qiTU$Wak$p*N1Sp;o8Cpqkv*_uXIj#7}(F z*GM73|M&Nw=`WlNviECXP5$hmn_gkpWcU)t(Q*E#_WL6tJzQo(GjhA0S<{L!awLM_ z7x(Ft*V5ol`PNDWd7h%wXJ`f_!)=Od1S&#hTjr=aqvIuo+AZ>>&;zR-?`TqnQ*f>A zt2w0N&J%@GNHda$!DegW5;$k@sCODL60la^1o;$tyYtHc;U6Oy;%_S1>%Vw}vngpu z25{RQceKe67NVmn#Z$wg)rNcQP{mf@T%%g8(~ODmqe!K_r*A#*phULl&4=-Ryy|Ez zgR{6a;(8goHY==x64?X&c%;88(8Jl#7HvhQx9^}bs6WdVjVs2kizrJA_LmU8?j z!$T&Dx}mL!6gYPecegi<#xhHBhM@XH07T;R&nyX`l!vjx{+6fTQwEMD@d_9pAAdd2 zVV6x-u+pu<=ad~tB9)r zQUi*{7&&g#{ZRWkG9q{VxU`rH!717nniBHzsbBbJ*W{1 zE|X;PU4d-ln0irUBY` zP$RQMK~T_(*uR$P!_>wtx^M6v0IMqhFOxDIfn~dW^}&?S>{d_sX$@4l#G`%7b*$R; z_j*XwIkq-W#~14FW7DP>QW)-Jj(*0aTDif;nimEq*P=&iV*{f8CZ-FP7%^~TVgEd4 zy4Si?OhIYh(Hqy@Nrygjyv{@GnwwQ!KXIl%Qx0J^OM*C;*5{q^fOh;wK(w#*&*NJnYtr2ZMo~ zX*X5c4SQ2^j0dgol=|6svEY#WzylRX3e+c!DH-AxKuOn~mh@XkHTa{QcyOn(!r847 z;FBU~?gdPfi1@O~x%NlxcHI&KAXER7o;%W9#HARKCnCdfK{Qw-Ux+3AN1eH#s5rRf zz0qH(M50$-uA-mp+SCWG)qUIW7ZsaOD+D%78oZB%El(S>0ckm)wo0bm#_+9sYRPg z6*Z%FHpm%LYG$02;pu_vsHaO%DIW+gUFRtnT%}OAMFay2@K0h= zBx{_Kax;}~Rud$!X&;YbxRlB6$5ret%i{ajgQp@i2f|WQcU+zQk(rU7AJ<^}VjnZY z=%DD>R$q(XONBF6Uit_YerC8S0IBzgorqRU3sIl~J~l(8LfZ$m-f^RA5@UU$2O|1E zWrUa7t@IQ83!M1t*%r3>zh^t+H)1vZnjv=fZ=EUJ!-Jfs;P(twe+riy8xijqD9gm~J+6!j-HIuryaegRd#Oq`at13Nn)rw8uVJW_ zHF|rv*R>pumbDb@c$>RVysS=hML+7tRUI^W`m^DZkZ(J-Ioxm~O9@i2t+6h~f{?MW zSX9oBgYsk~5>mG z&zwSmrCSG7!b~|Dh8koT^KgTZUr*_T)6O=2_q{9D{ukK`-+ivWRa;C&SR!SQd^^MC0Lqa6XG*P|E~3HUqH40l`$f1lBeSbDu!^L@) zg-iFlqYcOi?op~gc|UgNa|)2p>*FDpmY0aA_!NzQ*3`74IGDj#g^+BbPrBT8Yj=!s zDHyd^6(`Y8cXDZ`j&@(1d=!m^4fKu^)L)Wa$plz)Mt)C-0KMS~U?AL#-lea6BKSfJ zLoYVJPbk8YM|m$p#}y+7sW>~ec~C`^x;H%t?5iDOy1?VI)4qM8xngy_047W z24M#^0jOs}VqwbLC5ZzFqB`sFl{0cScp{jWLLmy>g1N@Ikp>d}o@1ATwq`wVy%Hf^{=a2R^OpvzwE;m4SH^*?k5F zi*Rc8&z_y2(6!biS9{;H9-1DGxsq)0LhZid95#SjmCMAt3kjivUpX7``;) zPNw_s^GipJDtC8W_`IfY76m``Q4}Shl+Mw=`ei4qYo&`Rg@#lm={O3YSELG}bXrOc zeA&92a~~9TE4@W0(o3#HZ>P1e&c|CKIGdwlSatPx#~?Q$4O>nYv7$vBbtYM=UeUE0 zQ)WjM`f1$|4kENHmd_OuRxMt<{1A&fLGHl@Pm55938h#r!C=JRRR}}tw+x$U1W*e( z@P{Mr!7KEyVzhQ{1CeF8M$(I>qIuE(SHS`G*%F$p_`Bx^guKHH0G4Fk)rc?yGJ_llIxcdG+q_HR5u->oyNKVK z6&LWlf#`2FVyBfc;9)3#112K2HP%Zj66lT5e2Zz;9szM!H~@rW6^&m19gh-KMr*iU zD$vdcQ)=M_xt ztcp1*)hj56E#p}4Ex8USFINeljI&7CyZuCLP;sn>z%t0SWzs;gB$R|Am|D8HKC$f* zF^Qnirp$coPOI|Kx%8L-X8|3WwXlF7{GBw#7R}BGW1_DZDK|uM8{p}zH5&F4FL35n z?!K>wA>Qn4+>P{Nt&JW1|DZ@`1c~G)oSmK8=AUE2ho|2#ADa+8!Ss{WhSW(&YW7)TO2@in31*1e;TcpgYMAf1SG4d~Hwdra+F88T1_d# z*ry#^q*>>5MjOwBlpI-xUy%-py&ymIIZXJcuM?4XZKk8GA_SS+I_5M!0M2a=q|Pb- z`?V#W+K3n^e|s8G^tcW$5$pT4#}1B^Pj)HOGU-wWCJmNgF7oS!->fL;=!(nVyr*Q8 zy5yx~vAQKk7AZ_(fHWmXFTf0=vg^?k3qFTm@!%0oZe=h3$^ek7c}q6BD~r-Ci1)oJ zTo#ZUCk&F{B;1jYzg*kmGv&+ppL`ea!;0!`Q9zM`%^^E-gQMjr=QmPOD4PIJNp7g^ z$9`TS1yCGAz*^79|Jb$37HXmKgin!Gi;i{wlurx6d7n_tRV#mGgC#1R=A~5*aEM2m zQe-)bQiN340%t1j>EwZ*mohyaaFX(0#phntqS1%a+zV6E$CEy4WNeznq~qP{^sx^C zZ~zu*=I5?CI$6X-Aq?!MF#C7mVaIocVVqwn_nQuv!$OXmWE`n2EzxO*$?s^*=oG0ZA1v}3u)(A$zubqCc z5(Md8-YJ3NWxF5>dgM63?_oV%a5O?v4qrBVhlL2)Y`QUsqYpg)5r(Drbd6e6Gi+`a zj9UpZsRISoLDJMOW5bgLC&T5ukJerAe}YkB+7goeolgK+yV5ez5>kQDrPYVT4$UiR z$nv8jW}k?EKYZx=H~A`S37y<&2Y;KA0RjS;%>vNY~SpWIWMhK4v3b>0^4 zN)lU=qimDG(y}$*Eb}&5JeM-drKS|&p#{=RkjPM3o@69Fl`Qoqj?G zD_0x@excN(zxF>EHz{b4h*=~w`Y{*ws;SS3(plJ1Aj zS9UBiWUgWGPe8pn68Yz9iPJ6p`-f41P3Ic)BsTZ?$$i#di)31h3Z$j-Cf_-=ejC2# zP?mTk2+7LzM<6YnUz&XMl99r7G;wxoPcA&ok#zbO1;w<6#FW2SHpSG+9cpK1&)7KG zcHjGZ*m~^M!ux5B$lpW|&Z0#tTp4~T3dp6?G*hYc{l99pSFn$MXlinL*QIcnkx;Uv z&$(zcn+MZkCbD7lZ0nJeJ_$VTj4Jmx6!IiZ3>oYRB=l{M7g2e?;(e|}RyeJM1S$uhyo_7-t5rMZ1@AAbJD644L zxOfCm8+Q6g;kk<=Pz9uFRSUUH<%Gr#4d$+k=n_4Dg`hNQ8sq-fL{K3m)S0K~(%jzC zE~6M7q;x^6%K@fwJcP5?8e=)A%r}0pYq1#d}*7O_&6A(MI zy5lB&0Nji3ld3I_pc%^JT5xfd(Xe&!497) zE|80UW9cxLn)#ii*Q$!6;#P)JN%WUle`xL4ZABk4e|#K+bR$hnxPsJ+JjNXk^Sj1r zLK_9#m(C__Su4yOC<_|Wl9M7|5NL0cc@?S}TeExXsm@IfS~yw|c(HxV>e`8pLmg{ez4ZD2kKwAZra-^c5E`J9sAyL5BK<^Pc|Mz zGyMAq`YJr|Ut1Adk^i6~v|gWoY&~|C{xiUSB0!Sl#+@{53$gzzg;bE)qsY_9yV!I8 zqC}UT3$_#uX0qzNE0mk&{5Kph@QhJOd+TUE8EtOi@tg*@~df7r6NALFb~`x)dH9% zc_P6DP>OF@axi{9xj(qVdULm4gquP7pV@VtE5jSqAi#1$e z|CoYJkk2cCpc1QM7nRh&$-Eki1un;+s(x#)6Vp;0#Rz<8Ld16)09O#*AEb}J7%MkQ zom|*oVJNQjK|Tc{=?8Dcskb?3d)@0{TuZ7Gq6ymcemC|e<>jhM9 zB!<3FRKS#Xc3gPC08YXrIzGk1nm}rI7`{qzw_0<{^_}BV7#KLr`v(;Ma4M-_?CqdKGG06r`O9MZzD)umh*?`^My@PksqyM{_|3U;uwma0Caik6+w?9aa2 zOOl00+Y`4Zx?ZuAPNaeyV9AK|91}ia9-%vpN)QluueIfMMX;qx!o9V=Q>Q5qp`%Lx z59iL(L9{rR5Yg|}hHG=9VHBeHpG$HC<>gUkt(u4ob}XlXmDh_A=I12P;3D(;aM>W- zR_wc*I0@?K5Py)KJv^oVeTBr}n7b2qsVuxslS0q|J3ZjZ#c*$=RHQrw7gjXw7M|vj zh1*!D^Ifv~*u9LIlp!=hx(GyyGb+XRVt4E|1n`%!QFcY}lSlYoK;9AlviqZi_g`u; z?_k0q9rO%}+NB^4B^!xG?VX1X2>?!y)dcpD7$@W_%3OylIpn~AQ$xqT-IaHo@2vV# z{}61(pfZ?OrG*sE0=9g9EKa6(WdzgnM!`c-B1m5w{ov^YL3C|U>Lk*=xKGmcnr8t@ zjVNdgl-ey;40L<(cG$3~a}@YiRq%q3!}-dZik&Cu&^&c~*vjQUD+y>@N7FnW;^()v z_kY(YcfJj8wjpolZEkQ%`{MM0&^Z*iY`h{pLXO`4B~INoGLxj5(zt@?fJY4w1i_l6 z>NmQd$`E;Z+j?W+_gLe$w$#f51kuw4xRD)GJB}cAD_*vs+?nqJFQD{dxVK#~spoB# ziXH#zrUrl}0kC!@z~LM1q)xt2-@ggnR#UOO>{A8Z!62x)HPNrf&Y(DotHdmC*hSSh&J|J$~4){gTSJYJrZgwn3LwFkkv-UVi8*vqR~K>O-{hV;(Lgjn>WL|dnJJt88kc~vAhI*F#!o&gi|i64ZdJo-js zK}K0&$RnQyiyFxRL-N-jbTTqJL#l$qPk{C~-o2tg?s*0z9-j5b#_Ovcw`&^k?CR_^VbU_VcsUF@wRP7-h=w?&V0kWV_a#&)nVK@)N zzWL8wxbMbr1>xD@std?@RH?KJ50m}wUAZ#%ioyTH_Mj=ylId9ZH@RWc9@R|v>jQ?9{Mx z&qGL`IlWL;c-IOg++lWI5^06~P3x@OueazZ&UQ~@DVd*7nT&#~QE|#QUPnzsG<|h9 z>>a9~lvov)lBmFwD2oFWL8r_T$>=+q@=8~(btl(Gd+oj}gq8g~Kl+N`YF`D~9*(+T zc@q=l9M@`{N!VEn5h6%^NXV#Kfm4hwt-FeV*Xe0JrF+TS6e-2djXr0jX#>#mrcxt- zc=#D{6haU6QQhobv+opMP8$9cW-2b75e|{-+A3FH-Tcv_?U0Zk4=mq{zQ_MWeUa?N z@t0@It1!HLv2xkX_o$auq?0jAhOqHgvW@)1%XP-LGq(tpg;w4jwKqNP6IGcUwMAse z_j0xVXPor3A8KDUvmFci0|5s(Pu7@~Is;n3Cuh-eE&Bz5Ngvc`oBIgsV)MeEcL|~S-}+gVN=1Om5H+0V?T9(Xc6Y}{WmnvoaEUKY zoI4y?K@=(>v|kR=M`t#?84SI_oK2|g zn2`NRi7d8;42eZKZ5S?M1HKZb62}y+V2vX3NO}^8fKZy^!6-zzMKz^Izc;zR%Oqzr zxT~+|5F|+Y^Kk&`cTzbmUQso^ckynx8uL_IEMw&*1LPA~?T2k)2eU@v)Jk^s4@Myu zdWT+a6G_EDJoUbxiIz`xe04MVJ)ELh?WE}8CL2%;GSUqslPA1jdtKN-jWx4G;lXiNaLe%YH%CX>JV z@e%rC&3PVM&ZZW<8EGAn^sUE_|AKZb;i5!f=o*n2=B#cU`>kQK1;{jg&LNKcH;rB0 zxW_8qJbIQ~fX52K&D;hv0iH?aUEyW6>+ZoHvCU^L*s-F+MbcQWV~oIxFz$PeqkvEr zCG5wGXNl2AgH1nnj;T3rGcV!(q9_)Gw@`6OJO0FU;@f`;&3NWm+^#+Gpzu@IvjX@O zZcQ)(5uRiTxKPH`O7S1Z=VK&4dAIKZb~jZIH;=|*@`bPTIIzdcM{7<&t>T>q$;8hn z8bYd(<+7#6p%SgZ$XFTKb=XE?d>EONlYJkwyVV~gYo>}&ah0nM>BO_uR?bMOviM8n_vuTUr zMPENb)p%a4OP`SBQ~==@VkkEo;dS&WpP|SBJ~d`y34=Wa2J-wLUcc8YY_9K)T%MQ?VoA!+;%fxqng@txbYOr;SyN=plWr4+pfw%+P`L`Rqg zA)A`n6z;U5UH@^ZK2}YmjsFU^j!ZA(RQtKCYFCu#bwJQ^y5FY-f3=7%8A=|g!gnX8 zPrwi9g>u97$a@4R_r?bu?Rw8NX)XkWXUI?ZuIWs|t#&QIT7tac-Ob;K^m54~V*&|sYh&1e zNB?Gh#$?WL6!}uJhnJLZS*R~H8LfWo^=}W#UT~oCIhOVNYUYNMbMFM5MhC0_qF(bB zfXID%tKteLJ3WJG@wK|Dw995sBn7LqM4^0zv(9}3x8%)gwAI=+mvn+Yx4A8C?i@?Y z%j94G|5sNH^d?(b$W{K^g{!)MhO$9%hM50b%q}|5A5Jxz$!G{(TE+hFYIL_@GEMHx zKsf;2UQC#1h*Be6AF_-Prn`8I`JMp*M#;5+=!Q*+w#-bl98YbYG}Y9S)gTdnEX7_f z#ww=AAYYJvEb{kw^@PiGcUpG1%#Z-(7kh4Ar36<&RJJ*ZNk^luLjQlOY~bckjY-$5sQ%M?WK{JONWBWWIBJq8V9( z#=k7VOSPzT6W$}xYkId#q`%s!_U^hOuovWnMZ5(`l8j4HDbaR+)4abT#m==M3rWJE zXS>}&Rs|@&cf{Hq+GS7|!wzBYp&2qUVA4DcYXm&>ynf_>1q%Z%;3WtLK7)(2YbYK( zfmvIFdZ%)TMcxy*ZEP0iDcO7BjqBd#zi_Y`WlhKM*&+vC0(c+}jfIbO0BYcHsE#^BG29jbOQH z9K#CH#D{G@lk&b^9^}OC19b%EzLF(SZD9hQYsZ3&UP~e~#r5ss8RlTzx-yf-%77N! zM^t0KctZ8d&Q5`(X$J}cIp~~hqyp|%s4Cf2DL?MTQx*|hUzt|w(y@4mc=;Q)iimgI z+CfKNYjy{2iwQ^EI;QPtsyV_40B-L}ZCBihjHUgTkHjz01skyXG zgz?L26*yw)Xs`_S3@#8QE8j!ZR9D1fRf57yN0W;0-nv+0kR!KOSyqnW?^f^A5sq&) z-x?90U*GzbGu(ezMHa(KBPNwM&*4>v<5rBeG2e}4C&`ZK@M+DHX9}SgqQqcSYQbh7 zeuFg^;!Dv9hhzj3Tz(a?q);n1)Cb?=!LQJRCP%*d4uCVx^^&-3*zvSCW`m%tVum zWHsjgeVd1n)bKl6DAmL;!ZdXuKF;$tKn7{68tuvKiYN_VYm_H!a)`XM&HfG+cGvat zA8rItTTyF%o;0V&l={1D_?7VkGyZvl7bnDT%8kttE?h6chD&mYYv=c=e^P_fHz9=z z`flb0CV9Oq!q90&gna@6ptHBRlLLXbk9Xnhse7-vIW7;Ho3x=?{X~gzu<{g0bbvAC zG)#;rB(Qt8XoE}q8$#0WLFx+|&BxzJS%g^cp!j#cBDCVp?}y#8$k-%>1Odx$+BKcQ zK{o7c5Xn|Bhbt!}#e@9R5L3$W`;tBhTqoQ=sZTM`W!55TF$ViOY4?*8g3D6aWgH~v zb~UUKxE)J@UD{>x5-ZZLrO<>dWgS7f#mRl^y_KdLCxp9c`s zru_<<1v~LiP!&`Nh2+#iHEF=2v}w1ajV#6q&QsWkWb_dOvG zLGNQ32NQ_+cQ1OtT;@F+3WrHnL4n`u5A~L(qfI7?3!NDuvMbgvaLk;kr1^n_y5f2sj5u)(j-SLkRx}j){R8tDDng06wT#Uxz z653sATCo`I;dot3`LT@bLbC0XzQJ)fZLj<#UfK0T$!@@`m0{+y@Vz%6`RsavCgEt88HsL?xe zax%ua+ki{>W+ZLQR(g_$sd$QB%q3b>YQ%@j{B_sY1no+iTD4pp^V+NT-P2DRv@p#Y zgsX{t0ixI4c-oTChV=x+W6|gn8$Lxe^KgO3F?oheNkviFOFF`8Tr>AT+%NR9z;?!; z=Zl8Mb~|iSbfso5AvLtIUcB_Y)JeeC9A9wr4rfVzFau2q=T^iEU)mHK7O@<(Z$=Lvewi{~g^A8>`R7lQ9VU|B=A#NiL1L8$ofJ;|8 zj6=ht9-2_7n&-P2w2HgEUh=^%b)J`b5vU^(De*`1RGDyUO(fbT@tk=S(Tqu(y#5o; zIb-nmwe^tI>S%1RVWTl-S3n(S7w0<@rp(U9`kz0~+P;;wGF>{=kVw(8@^{7X_5YOB z{BBVjWa|V6zxj^yAZ%j63xypu0>q9|#x!}wx^YLh9?n&Fh?h{;I72#GYSW-s@y<81 zsjH)74UChXtja3oNAXL*KhVlbuzQko?mTq1#vo7M9YjD&5YTG)$hY)Wm#bBUJGFE5 zrfz#y(WmrwfUXO@?rW8|VuJ-7exFHVa3+^C^ex>m^abuHiq8HQ)l=8xkWrO21PDi5 zb<>Jz%xukduSt1ZIDf>cJ=z)_EspwJLs2!1M5Hdykh9A6^vJ5bb&(@11hoA!Xyz15 z_}BTQ?{c4=^=yF?(5imS+g%nG()uHPJhYoXBx0)d)RqtneDk}tS|O&CR4ydz3s_sz z`WJV1+Y#o+ZA$H#f#hwe6c~6q*P2(zEEk*3`!MKan5V0k+M@*ELarAbx-{2tMk&K# zOvr+qMaa_qbig>KmeAXKLYO0ici}R$uy|D$H1n5JId$A-E*N9Z$Ia1tAE&;vYw%2M z<)yS1B0ZRBvM$fw;!YJ?$EK*}kbpzy!L3L;*di>w>;)N2qo9?Tt8XCm-w; zxmf2T-(C|@dx2KU8yXsZ$(C^aKJ+~BCm8nXqn&M5A&rage`a^B0lyvdv>bWuNfs82 z#z@%xPWs=a#k#D)|-4yM=qOhsP`hF>#ycn@X`ul7MSH@Mnx}bwp3|sDgxh z32Oce{%fSOyPYrNnfKajok{hxzgPi>s)~xj=~VIgd0AXy26OuB zMa1H|i1EfU2{nO$GGOWW`$DnU9R~Z$j(We@9~!i8C!Tn`iaTaS{H}E=Q&p-Uw4L=C zBN4ulOuY(e`J4V!;nTxO;*Gb+*C5i1nvJYnKg^jdAJVD`k7WI%LRy$rm~{5k_2T7g zOX=M7;!@N=)zymRVe-hOFE63pz1FxgA@C)vF6Mr(b=F9{` zD+P{F+}Ot++bpOfFY0UwPOYFx$S0EkpAtvtm*t)RG%TF?AOO%q#X=cdFwap=pL z=<_uXlpgtM{DY~V7r`_DrN5pbTRH{;swA;Jq4mhj;%1SvYxk^s(w(8zUmV z-vA@*nGyV)#7x3y^t{kz#`8UymizN|rmceHywx9r1AY9P*RItb(B8ba)WEcroZr2W zGkwgG?$TN~=dt{oT^F?78-a>JkI@y6I_9!%p%rj-l#|#0gF3Y!1`__J^A?%$de>Fg z)^@AiPQv``j>2B*N8#DJ65#HJEOt>8wRM7g8{dwe;eqFWyD<<>J5`_&M1C{75CkQ@ z(kx~F1ulFu0*9YUk4a)$67T%=o#;$S@GJb%;QfB9-#u=kgq@NJf33zhsP^+>j+5PH z%__Q}d{PQYbvqFpAwRG;xOL}aqTc-AIIMEz;)atdDO*I_klk@{wbt07SGFkx+(Yj8 zSD(iQ>nGI9hjdIM88-> zJ*t67#mSj8L&UP-!yh(^nqPHh0a9w-@X2JZ5XKDgNqC4{-B8))g0GxP2oQGs%%{vE>S~{>Ic~0(l6Hc^&BQmkIFq z7Zwl_`qBC3SYOWN*6Ou0VEFFFzk}h7@c&l#L9;y+EFMBaTwFXtLQS=;wdWhAZ#vw$ z%aMAtCo}fX0yfn?ItK25J(F6mHxl-7buf;$246Nc|AoF_^aF>AxAfv#VV z-rn9m?J;o%X1$cQwzljvpU)k9&enpO=N*;It?AfLbRqH?W?m3P?{iT#9ryDNwSsWW zyzG9;KavYB6`P6AMiw1fn9H;@^x#6V`m)vTjD2`lkQq3r;K5lt#1JzHK>GvWh7Cd8 zD}{bJ8gVn5^W>_vH$|lTqq5x7uMfSS`W3N`N&CTVBzH(NM2CObEotem zh(94?h6vOK?Of1WQb-C%V|w00k4pSu0c zvrP&L_Flb8fV5r_0Wwxm40s#h%T5C?m5NEUha~!oYOaFx7umx{+JYb{-1EZyI=1f5 zFH06hZsK&Wr1hZ|+&@(4-7r4`t`XaI)L}0Qu;}1O(TvXDDO?AzeKo)a0V8iDJ+Tzl z+JRWxr=XA+uD>3O6OyPJDK5W-VH?j6POSkj1&z91WXE&L<)W=ZwR^s)x^`ZGc1V{L7XmK+)z^6(M5Rfi5H z6Ja*vF~A8Ielth{2~#i<6|OEVElvE2Blu1edtM+we6!coG@szzu3{HXSP1;jT}_Zj z&jvGI+*a>X@7|9eKf1#7Z|TCHs#tQ;CN9n?2fwipX%W#?CJ1-*{1m6dI{ie@h21qS;*%pH#EH9f6dj*K*{O=%HD zm)m;{<8i&%Jht8=afa$VB2B1tV~V=r(~sy61?U9g>vTCO1Kh{x#lr#WO+dvB<7Cjh z_HT1|N_u2wkhw4sr!b)7kuD~b_RjC}&J&cR3_o@iD$l2Wv#5WTq`%hK+KdG}pe|Jz zk}uz>7fL!pVVnq4>laWOo#iw-yEyyArLrACQz0!N4DwAP3ymkc_-}(nxhwZaser>}`v~(m1N4sqN`D>f4Jrx|4Rx z)e575X6a4<4q=ili+&($RN@|`8nEDt$kLC257IdI%c8%Lf*}L>4+FLuqgS#(5iUeI zE4kup+u`x=dN3(2B-MeLeht12mtjxC0n$FCZ4j*iXGcia9p3{Ibebk`P8^7=Kan|w zo~;Q&D^mm@1JzM}XO0zvsFd6jXQP7o;7}1YuU}W^9|CD3eb5n9+ZW!X+4;TF% ztBfTNS4j9LxqgRbBDYX*=r9~j=+)KLh%;fqHk4G)~sCyn~!?gbVW7W2zcGyMR*T+6=GGte(CS-1%?#wV0V$@F0sn#H^*-hiL?nwyw) zehJ`6tI+ReL*Ijs<|@Sv9p<2L)ktT*vl|jOXJ5BQjz*AN&67j0Yp|LQAdf!@zM!6$Op3sl+sYR0ez+L@K^caK1Vt@!HlX&$0Tkf?IuBFlX#x9>8t3(% z>YuRTSib#Dh;S9J{vA9#vqf9DVQG^h$wG3Z|0pr(+JFzzl@mh*UOKxpiORwYXCdGJ zKLF@J7r#u@OY*>2KTr|Dm^DE`IkJaicRV8e@#{(r-{XCLt_U6`Ptlw^0P_Ke2uRL@ zZS5QH;_n^&y+aGXA4Cpx9Zw~Te9UnlWr%cVsiZ5Dbzrz$W;qwF4L)r-=uhq=>|HL-H6sP@#Dr1mON00Fk=S@Boa~fFZI5QrtfQ(1;LCbI{9n zh*XN-xnULH=E?^A*4OXA_2mwPrEwmcB{^hjiO~1;H9x}A2@vrDXnnxzR6PFJg z_!s};Co%A6aP9ahg#G^}A_dt%mGD&Ui{#j_ZWY`oiLwqAD9P3$9yh6vr=S+a!ouQL zec$^tlamwcufF=qDz+I0ErCG-Fxc*UKy>AgKf{Uf@yl-4{WXNrp7ngsD8pOv!At0x z_j#S(MXuj{<|GiY?yiE@fgwwyoN7J$?6Y4-MBr1nn0Q!O{KNJ2^=A<=AOr&3&=<7m zJDP!SX6r+Ok7;qhie+xdfsa3O8Xh~h0Fzb=gBZ<)H`o=9#_5z7K-`9~jbosr1HOQ0 zu~RqQ9!TilCtDtRnoSeR)E-JELB|Dq%MyJrjYBAa8PhW!0zy|%`tM1@oer9hy?WP0 zB%p)0b{AS$q2u91m^`nKolfHDC$a7=HS$J*kBN6e`Q+OPXG8|#IVqg`)#s77*W@W z-;K^=J{F13uHgI-EB+##bgy7*?)N?P&_kDMwc5XY@x>QQ7@$KU_?h#?1bv>gz~6hx z!uLx6`du69by;tbx(~td@NkE?3DxTUPrdclwQEF7etUvbgYCWE208%m!{Co_S~xQ` z{Rm#Pe;+U455i%!mUneC!GkSmEnDlB2Ws}*w(0Z0&fe~y#rr>tt%(2m?%liJgBP=+ zvSAa`%#d3>S%r+O|0E0c4Cfq}7#)J)Jib?eaChi3VgMr9gHJ2S2`je#6+)!!fQ|ou zZ!kX`)YCS=>E|b*e$mHPSoV2tI+!GKr=!M1sh$ zhYV^T^^FTMaHJlzs!Z;zf4uJU%9wQxEJ3uFIhJWFAJs$7Nu*+hW z-TPFpKaUAOmXi-lB>4%6{SUDo!-IH0918S3Mv&>>WuNW1q_@lxcKcMaC7T}-ZRqC#?8tvB&WPHyOPT@dV#N%<^7@fS~? zJW10#Ka72U<`S9bQPAfEJq%OT|2wS}^|fZe1q-YGEFuplPn{TFnm){$bI`a%Oa5XIud5}Xx zLvLa-^5*XD?uE70)l;o@OU;%ej;UG?j$R;?LtgwrEv{0r?tljNq3`arV1B;=la(RJ zVFhaY76-zl)NQ1x4#}}Dh!@SM_iCxYW67fzES3uFmC}`c7B8YH96R+Yy{lkwRY~a2OF_`(W}AASYZ(1_C|SNGgc7!_U{AgW6msP`~4S zS^RgFf^-yEjRIl-QN5qiI!Yr!B9Z%>77!#79iw$Gv>IaM!yjTXpfF7MT7)wF_o0Zzf;2Ls2!JZIi)+UGI;DV z2;R{;Vy;ali&6{B_vO~sCc*w6{m?TX{>ymZj~{a(4z_Q@Hb4O0M;j4o9)I+)C$We2 ztII3PAJo~rh5dN(UczPy0@j=X$s|DT>Ct*}>sB_AmQ@^jR|RY^%085fzLXr@q40T3pFwF+`p zYUznhd;3cN>dvq@X5ESxxVWlMSA53@j{b>65CvwLHkwVU?yAqPEd@lV#_afW=WTGf z`nA}`mS)_U>tM`ae8rYmP<*KCZC$(5cpv-X+srsOi2$?D={`_=076RWrhd2iCqG}R zj*?n73@_5!TeOuH%fNVk(M#)Afwhmz{l1>^dpDRJ~8@>u0mlTsFhVjOByjZ&@QE0DR1(o|{7?2U{iANVTfD%1Cf9OA7AG4M$!rirfc;oIa>^6MxESiwXDtE)sKdeyM^IhpiB+5`%^4LC< z6B83WBDlJ`3b>}EybgLtgx^U5V7NPd_Maeb0{%WbGCKCexwGfLTCMJFA+jh2t$;xS zFbMt$QJuNjxySHA{S%F5V-|xe&Gi!mA64h?*=H~dNE}9GAz!fY^Sm)RIr-BR=n+!< zscN-4h5c*N9}tEkpjrU>^F@K&yr}W@SDFO0FbVuV!?>nR3>RV8(bEEuOaK!7eMlkz z^3W`PnYWb;$p=Ri41{YSX^{y2%!ubn1}n{uh)8wngA=Tqu_*YHJhMUr zh!97J0J+7hF-ECwI#62LrdUR^5y@{KXJ0b$GYULltZd_dE9+UAAh;z8@5r52#J}rA zK_+&-na;2+(+Ub8i-A9%v!PTZ%>b(U@rFqN#(k~dph>J6HaC0;*{e)1KnR@UgZ14qU&p3b!}w(Dd*q+Zle0 z43&gAzP;{_<}(tJ&rC<)dy-`}jSG|N=f#T`d1~O^y?YGv_Znh7n2&&X;PtFGu-kNU z;2Yptwm3U8_tdGAr(Rs&SlcvegM)350DM<(1hZefaN$|Uw*SuF-rm#L!=o8pOV8xL z=ge747@-|ChDVFj?9A*-`9l6ruWzh>Wq5e_@2#(|f3($V1^8KPT0}V8H&~};eG_{< zS^ARBIalY{?`OD^z1jit_}J7)7A6Z>Rqd1WnTSnhh1LKNJr1}r0nk!CZz;9CtAu_Q zwE{#>Qt@C5*inmF@9*?|_@--fcY*>$A`YH9leHufA90ZiqQR~7s;!IfWfr` zXc6dd-29S@wPZhE0tqZ!q>30MCP&9e#SAPSZ%UT)>hIaVT?$P|)Cho9`BRZ!Eo2ed zKp4b9#4v)6~T$k^(;hn%!2m|Zal14a#4oJcbYC4^BA+n^6p8pXdbiio^t5<>SfjAqn0 ztuUP(`bohkV+DN6Iui03fC45eg`9)I-+?mr_Gy%_kk4@?>e#U+1u4o2Ek_IqIo*`e zey=%Q(oZ3|e*scRM|5Woi$D4MVe_b?jDZsV|B&o<#O6PtGz}o#Dv1yPh@Wp^BHl3)k1+###gFq0PkEPw0`1k*+_Xb&o#!7%VQHg7vixYz@>Es+cr3kP-xZ^K;>`6?c4#xf5D+3O`S))fCl( z{m%Tt{HxpBJ8M#9dxP!Uv<;>JzKxqy2^h`Ge&F8ny^F-&1y+QO*|^Eyj}87p=W-0G z3x?~G_LlwyTH3*Eqz3%mfA)cDPN=^jB zpq^UrSf8GRRx;{48znydzLHtzMw=hFhn^fAjDJ@P-u;>@{g~w`A{E#=3DLViid3s2 zK{e<-_OVT{If^oFAMnLV$pE~p|mZ)?V5S4H|$Y;BJADPyWU=Rfz>OWhS6>IH-vbQyp z6YO@tiiUdHp*Iy1GL`5?$y#FiHL2kb$-oTafnomSzmt9a)Z?M(jgRVG!kD1Q4v!!- z4@S@b>vo3ux4BUo<&y^_?!O`>Pa(1V@gCf7Z79H7n>%oIs|lO5UowJG0&CMpZPSbt}dH7 zMXe?hMr1~S)SyJ~jz0D}IclY&>jIM$%lF-&-Dy9Ig~ZQb@c)Ls1Opgs-W0z*FT_@y1u!Fzer!CqR($B8eAmWD_P8if(Fg|V=F>TjF0`< zsp*;BVzKm(uUvWKk)7S`P<`ew#t#IfrDYNev6bpg14N?!QVY#+aKoxGlZ9anY$MrF zL(EcFoWN>#9A5PdIfx(<+)+369>xm*A~iYDWAl4x->b(HfCIqMaQ{*0K>V}UB@z1m z-BC%!5s6_cASZniSWkfb1IQW{tL$Pi$8+=~pi?Mnq8;_wvxpebqy+|m9R1AL%rD4f z73q*!$mUmQX$^D{ybC4z5(DQXqt;UK%EgP?``?>KHpsN+}}E2wFlSsbfNyFlp?%9k${= zeew)^@Pp67_}C~c-Mb6B`@47!IQ%?62%~c^nY6xJ<+*7)&`&IM1m66yvGJE(*If+) z-!a03gXl0w0DiA;JnuyF{^!n}qkjLdZfc00(iKmGlZ^##7AbWFX5yn@D&?6VUaoQl`gpd?T}+Qd#{h;?I(P z4tekA$<2>A2{f&c6`UZD3!nu_26@`@_T3E~eKXy6ApsDFX8ieQcy#|CjP8Y(ceJdva-MX?|yCN3tD&VQVLXIz#|^A_dSv zK3+I zX(H7ja`mCUvPe{hN5Ad^nbJI90+9SY8Yc_2fK1fy*OL^QD?*P^MNT7j)PHwq#L&?Q z08bfUP|s_9|E$ARAm8-wq&M#{(qPP#IC?1|B9`wB)EHaBPvYH7ejY5*eJ2e6_!uUu zdsC(N-~TZeKt{n|M%oLCyl9Mu1c(rNNP?i}0(~a-k<+7V7hz?m4lmtUhPyj$a4ASy zQQDl`sTu_^Y{|r4FvLkSnh8p3+2(6nX*7`PvxkYn?)E};=j3CdR>)@~PyAaH13gywVVMbMB8&F>OY z;&_U*&Pj?!KCHAZK|h|rap%ST9*><0wWTa1h-tbH90e@B4}vfz6UGw|itH&xjC}NU zev|1lCFbVIo_mS+;2imV-i-w4=#19T`1Pl`kG1dN$8>n@GvWuygaDG2JoG#_mOa*O z^jPxOMEejR(gW5>u*KRA9X!Lc7?caJ*Y@GY>OL%OwV+KUxMPTei6BlPd#bsK6mEeG3etyTxV^p&q5l9S=-1MMBIcWaP34|)>-`HrHp z)TUR-^V+dGowmf{=fk$`e0XT6`NEkqXMcKW>CQ{Ug~I#AAQ5=)w*dn1Eyw}rYxlNiyHXdTw_?@4}og@lga38Y^ujeYbF*!o#LQwK*E#7SeJqY?l+{Yec9 z!NE4*{;rIa25mf!w)St((#%o^{76wRF`B3;>@tiLe{=;KDhE62B}cfhO0sxNlr$Z{ zO7+Oi`5Pusf%gsxkbN}#@Bi<9?0^0lrbqnZ#3&(4-8=s;WyAr92$x|ZH<4)>VRJXv zgdxP9Fx*J71lw$b%qG7=i5p>-B?hcXw|A3!#S} zd+hP?OP4N*8#k`sgMnGyAOZM}j{LYG)K6afVK$R_3j1Dv7X$wX@thB`*t9kJ{_o~u z*_*kGK0ybx10Rs_4;j=@g#e0C&ItfRm%cItN{o?3PISW2EP{-FEjLa8G#ODO5(Z`C zYFO`5kHm-k6T1$G1PGWMDZM;Saco8Ht2afvp;gqcZW4(@ZMp4du7NOf8D(b`)el&(Cl_adtiJn66 zMLf3_nxGM@6eh*?;$UwjM2wA3f$ZD!?{!*yuXF0y8l(4j=-HRh^Lsi8IIQ(AQ^Y`n zyhLpWjcbKH34ur`C&jNBr@^YhO@HV?TjZeHmGJ8AO?YFu26Ynp!wTJ;jVjOwQFh%u@Zge=D5)^=>46uTPtyT1)Wbi-A+e(NLPGH= zoiL}q{W}Q%dWxhsL8LK2$H|iBNr=ekDZKv&u}Hd&=;#+h9tDCB2HShK4O#&2;VOk0 zt^AQ6{(T?0bLY+vzyA8`AM12G&jxsf>fj$;3^COEPD6iuu|@`}@rA}CTh!yFMNRpM zt3`|!96Aw(F`kc&l3H7ld&U+M%xq}3+E8z{px$z!)&S^8H<}+{Z2)Q$gbBhDDT{?F z+?yVCyg&B1GN=zRpyIeaSG1L_s zeLp2HtSnmN8RedpjN@UL3Sj2_lB0emAoRvIeyJclVtN4Je*R6m3OXjp1&8E_lZ&U2 zdZaFh1DL5;>DYlWQ_?%f_|`|S1u?h7?7)b@4r#+9nP>?_@(L;E#sujTWXweG|HY3# zm1Td`iv;~I6~z1fp8R*;`z0jy3#0y{10%qJY!4;9(wK32W1JtVW zNmc>j|BlSU>h3<=Uf+d-4p!~iJYENc-VjAVspC-#j^EhQZ8kor8HGNOcod%V89c{B z4C)pK{QySu5~gQ|;nds&%*;+eX{dzffejvBC+%h%_IInWjklGJZP?uNphLa{LbVKd zgpuBtTq+GJqLX%ReZ9jtoLuizVil&&Yw`~!BJ{0Ww=680emI{m{M$yudl~eo^dOuJ z5`gct%|duTI5;@?K(p2SuSwDuRQ$5Bzm`6$A#}O1 zvj;oXrk*3{39L%qPc5Q?^?%|;G#X#h3k=@sSPk7?ufpQcE=*Mxpo|GX7&e*Y7U~`) zSHnVytx#UT#5X1g+6ic1xyc!~GnH5gon)y+$kHeUf3BXn^ZP7e(QBE6#uWJd^a139 z7#ZDXR4|=@^mr4PKrNDEgL=10VFtxgHpL>*hY9=4d&Ty$$;!8n6|ziQAja&F_-~H= z>O#ia2_m(7W8&PA6BcmD-=SZCKWe`v+5XA>oSa@ze;dZh6DKqxmi>hUA<*Q#`ecuc ze*ziFL>VG0f$ya4zfp_4KTOP9UA$WF={pLe4{wBi)KW!k zZc=Xxx&eE-mocZFoyx)a(~EHS)FM3d=xKQP>MXjR2m4JI zHnw-*+O2hX>D4Rn!YkKdc_V;Eppb?@7|5D@@RcY`NEMAfIazg5k4T1a)sRGjV zi`TA`A)9DPf5WNo>}U=?^5_|O{zFg0N1nO>L*)V#GXeVt1b#E#UpYhvrm}E$Y5|^k zXc2a6UATE?4Zi-$Tkyt>Rk(h46V~@TOdOHIqCT+AB{7qa$~ha(&riU!mrubbKl~_s@}p0|$DV!!&drx#DA$2X#)rIYf#ub( ztzYGzwqJ*w?LjFU!e}KA^V1`+Fgp#?;}sYw=U4)Er-~JX8>kG2-apj+XG`dXSVnWq zY&@d-_?A&4q~~G9)afEBVTUj|J_Myg7U9sY@)wWfeq)%~h@^lO4=Sa5?rLxM!tBPa zjzxB4>?4rKqTuKWXwmb#JW?S|KA>`1uY1}9Gw9{9|2&$tt(aH3Vm;;tN8hBB@99c> z|L_0cR=`Im0KNOZe^8+X&4t3%3wGd*RI$ zSUd1QA_9jwIgC$Ein+yw|Bvr>+)lf-K<;@oeM>KGTdEDtEj1^j+BTlc=l`kkGJNF8 zOYjpv@DX_anMYxw5I_m9)x2ziaO+?PO~}eF1PAq|Ap%}ZY&BF{DcJg-qBixCi_t6$BH}a;0-Te8yk-$ z;ltvv15aO^f#3K1W%!}*c>+H4=vg>3HwqIa3!m4;zv-&3J~fm>9k4N>pwU3?4+hHh zE}P4-kjUiN5G-IausBnJcEg4GeihoTQVQhIY!(b1XgPSZbgaWYMg`w1$$8t#3eval zBFf-Aae*o`ylI6J)L^hk+5d3@Knt))>;1<{e5R_GiN3i^2XB2mj_VyKQH0*# zWkQ=k_Ok2~35z@~j`g|8#Lwez^5_IYJNQ9Tm`9`)6^@p6G81evMPf^&0Pi@!_y7FI zf2ZEc-0XK_jT`mlLrDEw$bQ=XJv072lLftYzp)lW+@@fw1Td2nDlwog9Pb}IpJ~js zOVZ7B9B`$*x7UTQUPb7A?Eu<%e)#yr;jwWsH#h$qg?#4cXQ#%Wuh(mj)auR9&g3k? zcH3rBCS)%NiIsmI-}v-o8GiUf55bRq|3~42hyaXLvfy_Q_<4*TVB#P%c@Wtmgm#{j z4GY_P9)3>OSKNdQzJ8@t#DseUPM?^^>v<5v9^btLz&H}} z>J^$Kz!L3tTMQ2mk4#KVys^8xyQ0_DK@u=X0N(crfW#B`N8E1r=XUq@BnCZUpzinN zJxN6`qkO=nX7aO|9$ri%c>zydIsw1`;~#{NfB12%7%sxa6H_o=z`!rtV0(4^%%tlc zD6cr4p%==Y78eb^<+5DO2fhn|+r@9^VbTynId8+n$S{nLpMVDT7gslTu~mTZq;18a zQCQJ9TFk5tAd|_;QmMf9_&%0MBsUad;^KBxdtd?=v~gUVc#O&SH0cnco;Ne4O#;wo zK}kp1{tHo33b=Q4?fB|4{YzRpHW8GBIJTHRw)lR>Cq?h)PLlc59!%N(_TG}c?mh{? zg9PfM1GqdUBYF_@1o~9+kkTwj&GkqBPH5dHEPB)b*5AMA{zYKFVfO%$`BWUxY4<43%LKk-eFj85kQGVh%{7(L`j=Q$$F3 z?-Bq*gr*y{IrQ%&7mQ!SIpMn97n;q+ix3Hq47Nc6@c!Mfg_k3Ni_5ixgCEx?w0JO6 zpKm(rVCKD$N@~=>OQeiCj&>#rdvm7_lthyx5R7q2C}4fK#Hj^l3xAarof3rkVO#{J!LCe$EKWj@DS?Yo?tlKX#dyy??{+()+jak$ZCkJ6 zz8E9`g9PCH9sEh-{}24gk3NUL{H441mS%I9ZCf^Gv&3|LFW*_1*=`BLMGKyNWEOtn zlh48b>H9wnkDgzEk&Fv@g!eMCgBicafltZ9W;p@CQXeaoB32Aob>}L$m{hQWDB=Bi zgbZwC>E+`h96RqW*_0Cq+wn2VsKYQsVyZ_Uol zeR*VL=;!Ly=D+aVVAk`!$MNzGDOu`ve8^+}f3lci-a?i{Z%pu46|Z_Sg}poPZ(G_~;d@iEbh> z9dMk6!Tp|d{NE=zfJwEzq}4vA7+ zBp!fEQ#knVTB8oHUfqJ%mwjkr;3Y@xv59GM`t<3)pUXPGzI69)ofJV!#iI4p6OaA} zTh;o-Myn;I&jF8lF&VO8#ut9*bV-sF0BHvB)F`eC)auJ&CNMcQ4fC_JP(<|4 zYqwyt-hxi>PFk4a0j`t2$(lHO`qatuXV1RAvbuT?1}MNF0eGJ$0CIR}_y=nB`cLod z?(zyF!Wcm7rJKbPd5}=0iIwjxcEq!xkT1p~M_^d?4ny-aK2*Z@7(!V7u@go3@sD4I zKk~yLfR8?L0Zxn+Fz{m!F;I+pk-^}Nuzr9GLYS?9mmLN_gB3z{0V{?%utpZZ8ePC1 z#xw+2MR?f~_Aw<_3|XqUa8VN&_ys8h(hV04+uOrleG{5k`me36z{*}n`J-#vqw?}6 zWw}rmie+o@(ndkbHdnhBs4+UD zKM(=u>Ho|zRZfQLr_$NcuOn@((QZUmOfU{p;xVT89xy1YY?@Sn2@{Em#q4YzCkyl# zg0K&zA|&w|=;;kZJC*vxF)EB^RFX&CK;2kOK&qeILLwMj7?PwST-ppYsqYf{Lhm=5 zZEAsFW(qDO9VIO$p-L?*#AylXP((wU`n)i=#8iR+nc7!yh?6MQbc)8`Q}Vke7>6?b zc;b07G0rIy!ab48uWkthk=c%=^^+`q%+g4nuSBa6%C~tcMGg7+fb}8FbMHD z2+|Xfcr8>gfPeq2It$_W@N*)Ts*f=5nGK$(>M zu+2yQ9n1~1u{B6*5^EFKQNn8LIizTPi(1_dT{Xa zAOU!Hx4{_Td$8^9?|aQgLlNS_@DP03H#_dRIE0M(?({pt(0&%kpZI0a8Xb{w=e;)Gb8wO0)y!U zKmqS77C>Ou&lNWYTP82=a{M$z2GnBT?(AmCYK;u`=Fl>7t8;bl29F%0ulV^Fwt z0G_LZm#q~20xt~ng`zcoV)3h)Ozux@Z*9NH^^#@T?QV1LktaX+l}5Ak$Cqxtg|SXT zGqmC6Rt;uGb1+g`fKfsy@V!G^SjoMR2vWWd>WZvv3|&G!4jG#R@qQ;U0_|0=g0vjljmKqrH11imn? z6L`=O5yWpxGQn6d2+N1X@dC_ZA~BqsgtL<~@R`?dz?Hkpu-ppSHw0*H$YBELw)y(8 z;wnXb-$RE=9$pB0kS>|P59!za>OM^ud4s4wNC3VgHk#rwf!`3ZB^*D<8negsYZwC; zJ@7{KVj73b+DgQSUGp%q3|AaDcVYs5?AeR(jiPyGOVPihAc;V;YD@-&N|!JDYy0wnez?9_4L$nr%`e&(Sc zascpf0rF)Ay7(Th!1sb!x=ZQVhoR#*R;f~X!R@v`wS4#X75sZ{muMSMa68R^IXOQ5 z%)!p^r>c89p~wiUfvtq=%iAzkDZ#^wW022F=(G=@fcu0T?L4=G-z%%eA2s+L@`M2X zC+YKB{8=KUI<7PWEr07PRKgMwtKWSwK0R@SA z#>6_wA}h?Umilq3!h{hm(q_&4Tw7@<=rJ^|LrGECC7mF< z3dKe6_4yp?fa=JM#AgQ=15)(2I zCaU|i{!=O;ma#BZD2-VeU8}*s7vMeE1}%VhcT*DpLqm_duKN?sR+DTwX`v<5Z2tm2bpGTdeD8Blz$d@&L-2i1oQKo%li0KK!KbPpp~!qb z%K?B==a3-UTnXVp45ULdkR4tGdvqSe5Z(%u0ALV8bO9qTUU&qLXH_6&5FIb>E>_=e zohJYQdyWBqjzIebV3q;fdkuK``X;>a>Q%VA)8a9sPz44_fn#cBT0HjH6JNUW>TCa# z>vlzt5RTZ}*=o4m&hKUm#d**7pYYu-ttXb(QB}qGPzK7FsIWEwq7JmS(NqG-qY5kO zAgY3nr5)2^<+vW<8L0xi5J_jbv~IwCMA(YlMW%oeQ8TushW9g9zUZA58MY9nI_TxH}<@w7RQ?JK{SRKN-Ih#lwW|&$pQre z;&V8f*WoxBW{5io?NWk~9w0DdZ|X*3Qnc^Qdov#-pb<`w6GPA~8JVc%I5Dx5PKAP^ zL?QsBn=B?Ni7auXl|leg&UJ4G0f;L5#0X$0Q+B`cYiQNK@UShjLI^}EF`y)Xl3^G3 zJ(291J|bAF+wl7BUD!PEz{UIr_pz19<$rB^YxC!CTz_j{_GBh>?qR@}%lGcB;y=HJ zh`{q0{HEDlSkhboCjHWd>ER5_%}gOoPar^>Cl)ffGPd%DAwPmJ|Hv#R@;OZ1ZMClG zVkFdh{1zT#ks-c7hM|9+79fPpQr-e|E)fbq*By}$i6=lUp)$VV=)@$9jtq1AvD0cm zt=U$x;zB2h$-pj^FGup4I*Li64sGI*UQVu*|2w|Kt1xH*ysO&)0eF`;Z4i^Rsng*- zJmUFkv9oj^H0)LL(}943o`nlv0iQHJ#^JeVABPVV2y-*%Zf z?-a^-VHcp~VO5Sn(k@RxwmgP?!D;**tNy|y9{mC?3I)9GTn;`2C9)uCsH$keB0QE} zIB}uJ#V0^$(C=c89~XPBdhq#es{&V6R^SUSz6ICr9WdJ9APnJqT}iHTLqiqoq4Vdz zh{55Pg{H-)7iq@torCKB!H@jd$6tN(%9a1<`de?Ab=Y?4H(19CtDeT@xm~6 zBlbabu{Gfc)=&?${4FI~mS#@)483b}pb(<*Mh?=<$?#M>l(DR@h`a-g)UZg%3@b_3 zl**u)^%r3x_-mxV5Ee~qAg;3`&OsNnt*f*Wfr_53NSgd;pepk~w>P9tJlbUBL?lht ze{dKkrYf5t=^#`s4xeYfiAf#sPx7G;^lNo|l}JRiLG#)1IFl4@39Cc;w~afGkf#i0 zTvRzaIYb}uLuF)FjfY{N;5l{rJB$=LN2#__VH;|p2PveHwc{Y8+5s|BsuZE@Y&M01`>lh={n|8x8A0QN1*cX z0!);Oa1s-d&wTwVTwU6ST}*tsbX95hFXm8$GNH`rA5r?mDwZ*?MqfNh>FHGVKG+5c z!231>5LkKVEnk~@sQ%)Ep14VBU{abEgBMa-dB(fjCo?odvir4roWU%@dLz8^5gI&QuL0keN0NJXFrfOO^%nnv0 zI&DaT3w+>px$5)zXTZin^xRgv30H32gD=1MCcN_IU8uH+`E1j|$U(kXDvERG&V8}j zXnyMDmtJ{`=A;kH;PUU>2fcUq)<4W;b7zN!#(t*RY|t`bRogx;sJmEsRG>Ir!XSf4 z1uk?Hkf_ZOYGENN=7lAq#hvMGq0swZHUIf}W^D=MaXBV^@5=h&(XBXP)4%Q`r?R^kC+r_d?RF} zp&##W3jkza3+H|ne<}e;>H~z3VExA?Ns+g|Id=}t{zJs=P()58m(9+6-0q;HtOy4! z53b+agF9<&Xb}A7*g-L0u@N=+^}XHQe@y3jZ}3li_UPN!8}ru}Am-!bSt3{JP?JU^2oy7OMJnKR%GLM+B$J zBFAk%gb=_X4gn?6be<7exP`Dq6BGYVz`7uK(IEoYgmOL)m(QKR^PmJHV>9seSKoq9 zzj6%_!{akIh)kzM#G`o7)vw<(aXqDxV_8E)b+8Q*fcNvp=kL_iR0sQeuD!bI;36WV zOjyJoA<{~gpIUQ^|4kG(p6LfQ^S*%D_9N#P;QKys9-eyaAviZz!3&Yf$UO`K2#Xgo z4Eu%L@6TbiP)5ifA;IyJP#T>EC?PbMD`JLU~-IL+35cS>V1AN|{n% zpkz@SihH(75G=EwrLi)$Vjhgp$pTMU1W`gj=!XoQVlZ2~_uSqNIEOymJY0BCZ3r(5h|*-dtLPH!uO%_Xy+45Bc(ii>_d;hb5B1CPhFgc30!z>cMsaN zE|fAM6pJ}k2@}x|FLoz41m*G^WQL|dRA#{{4&y2`$~{0LDp3XKYkhuZ)GJP*?m8GH zG+eB`1}*~o;5RYJXdi&pZ7YVbFQD3J!L=K!@R`ql1Ag~ww_yuEi^mFR7Ek42buLCm zM!wwcbUyXgTi0)f_X+-b;iE;--rinoe)5w)afR+{H1_QfqjC!~mOHq(OcyMe97a?l zlZSQ(D;-B_JAk;_RNCV4BCisxxY9LBb`c>tvVk>!-%A?PN2tf;kAnhPvVs+jXL2Aj z<9ea#EhMJ`z%-&k*fOU4Cuh-(k3WmZ2xwzJx$XLht{lL|ZWT864&e578&(b^7JUIU z@kWxfKEm#Ppzwn*N=OnXrbsTpRv$N@STZO8ND1Qz8VYcU;uUamzyv`24EehUP{d?l zIB&!Bhy@cvSva#W1#^=K72}hJFfk=(N#Yn-%r3_pgTg{#dsN%Jf&5&WU zC=U-wL`wc&t1C;tmci>Hz-C}U>lFz2<^gzVTUaK_GHzkgPZ17*wH zn^eJHRiESzNH~Cvy<9usnx4siG}kYnj=kq9Kz#|^-P>Tbw!p$ffFQ;!RtXKS0IyzM zhX3Dhy$JvAYd2uErYnCzH7w5*i+s8AMO-BR#OCVSbzSj<5174E5`eMKdVO+YveIZa zKG4Q~KXn{Pkf?zu14$E)jZqsT$J*uCsN~O1m2=>ASfMaS5~xH_(@`W$G5SSZ1^4RQ zCj4_{LM#UW60)(TkL+{hrDS836QP-br^=m1HECp%d=3Qr8t7SgB7Xb0FUg!mdQm_N z1hsCm&=y5#LJ_w89NgaX;pL?oeDT@_eD2CReEIqoytq_{TiadOtog8yXg~wYd+fY` zD{aLA;2x}+$!A!aZyBBME2JsHx>Mg@SK&sBK##jY^2XT~p-g#xKLmlG=6Sf_cVWHS zg*)3VxVpTLec^3b+OEQOQ$hn1#;%p)F*S)jYsH`!+=u4(3Jn2MwGp_#u8Kc3d7u-P zKpXQ2J$G(wi=zpIFzM=-P6T=@em*A>&rfjqbbc1<7Jx`37J~T@7{IZo@2SZK%i&p> zj#Y%6RsdhY<8-}tYuUA|-P6Onxk{5gX5b9^+ZKoC7U zgJ<`dXsRWc7x{@tHXqUmowqQHt<`e+lKq0@7bhm};hhup#is;Yc z^cW_8_&ID3_7RnGv0XvOGoK}XgiIu!7Au!VaeUVNqBW(wQS$YU%3uz`&bds0zxBAk`i`D42_R}3BTW;tnKgJ&@7iqmX?4G727?c zxPf8<_WCjFIe&uy#0rAq(CApYYB5{DLz>KL=T}xgO|ZyfqCycRAkrj_GKH!x&){my z$cuDUu(3&#p@0Fh1odu+fwT>8-P?d~T)72r++O2=a%;5?%eb#;w5&n-gS54lfvMuG zL<>SBv;}%4sMPQAGt;_zQdmb7*O2VgbHW30M_wxx@We?Q6Ox0b2U~j`Slu{)_4O^- z+22Q`qJxhGOx~oa7K>EzaA#5fn&#XId2!g&!eefQnS{`iFv^^YxGG`){(k>#GXDI~ z$9Twy0-3fz^b^uTK}P?d+8ElgPFJ`Ya^;7erVDT4v3mLXHn(ZoVHjj`1-mjb_D|ey z=g(|ytaje6nGL;%i*S3p)!HhLk9|2PWIyP2TJv5<4Yy(fBWm>~)T=ujQ%}r{00vE( zsl^Jtg9#I+^@zNLxq_PPAojo3uAp&JVMa!EB4io0&1jEVdXdQR^KDxp0)((RmTJ#9 zG>*!N0P#h#Fgi8~<6|R;K$I{UZ^1#m0Ubn+DBu$>fk#yn85bLb@q`omF7U-`V-_$p zTycknD!*vk&Y#(@?tkg-(%r5&UK(?-4HAI&Pad$lyMr;S`#NT=zm6yIUM`n^9?$PA z1~bg+eI^EE9E+<}x*+nD5Qo@X!=>lsL;=44sgv*{-}5AV@S!=Ft=Lcy2)AOtnJRwD zoL#KIeC*YQ2=hT@24L!8$c!%HZ2|1cB*K5gOza74HHS?qb(CymC;=cC6$=pygQ*p$ zfDkgny@Qv02Ujl)`n&f)?yiDW-^2cY7b{f}xV|Uhg**H3yVthi z%WrMKi}zZL0Fa1GEwG?VL0_n(&zLMF3;6hht8g55{X;cQ0P!uW(}zT@AKgUaXaDa{ zujwYgesJdjH00j-1#iWm5>Z~3i4CBfj5~xhCtD#IJEkh$= zW2xJyW52$Qh#8)X`68Cr!}|Mb!6v<56iGAbl@XIy1Az!5A~hDSH#VsZ;_DD9AgqvQ z{w+*m>1$;WIV4o8gvs5^SOr@XV=#*E>oyyhpmaD1ps_+5&qK;Pf{0&ZYjsPXJ=9CZ zg0;A?&>kNj|HaL%t-ratwp!cY-}4wf9S{Hp3BY$u27ufC{=QqQ9W*er{pz`M7s6b= zaNcvfbmk+%PqsQz7^X2bZ%N(jp~WHi*oU8lPk!VHc=Y@U7)4kw>^9UqE+z~l>O&W$ z=M=%g-hOUq67r*1^-rFH96@!3VXXQI3(Rm|QZdn$lq{nS%q+uuJ*DJF(x$?pd2y^z z-3G{R4J-dOsBf);yT1cLyNOjr85*rFeB+JV@LQk%8hrMp8?aWx#hQqV*dN5MKh+S{ z@Yv`owm1Ip!OrG2sb<^WiGK)(V63=aJbChTx!GuZ5ZeJFV<}R66DuwsE5(^%2m6o( zt{S^tmlFVTI#U`uBC2Q;`XcFBO*HS9F}f@Ln%i>YEYpNQi&5OXiE{zx)?Vb*r(XT^QMZZ z!1m@Ao>L7x_cE9?W-(XA76B%}F18b>J;p(a_!w06gVL|}eKiqbiC$)Z|G3cWt-$y7 z&h>{qqk#IcFai4~IRNxb7QYHD*3D@6Hr!d;f|qV=B61U8Qf|w(FRjsuDLFSc|JScy zd-Jbh0P}+&2;ae4LK57fdC=H#?A(`g+457a>n`A##ne|HgK({e=L{k(87F{+@ewE? zI_9}F71B{w!ek4a8wR5%&ZtLV)H;>S^r7>H55E$UvV_Bk4JkkIIH;-|u$|TA*UT`I z(`BTKCP+%<3XBd9AsR3QSv$a1#U3VjA#(vZsmo;b)P>?3(RZv=N;{7}d}-&z$&-Kc z^($9@rFu{!9)P6_ffBmm!eNdTR|2>(mGXkKcy8vo$2M;~hx3WX2Ws?|Ip0qR)* zlNj6|pD)6Xee_}YAq@T(=Z2w(6}jyrRZ_?Ks~+Mfq|@+@S=7qRCs zjTa})h39!TpJu?-G92*5t;{}fc@7laUHO(sWzu8eh1=bQu)2bk|1xwom%!iO!Xl4? zn1G$O17E|+|9}1L%kVod--eYs!u}RJ_uvKZNm`udXXnI6p8uY&H5&(iZ+Brhp}T14mMXM5L^KBhp|h=xCh*hT;wUu9)f;B~!HMVs?zIrC|{GikQZ&tEf*bwentnL!f@9N~!xo69Ci6Kxm$;$^8*( zkhouIE)W+IgPl{xyU-4@XDF#Q4PI->)}nf3(qTeraiW*@NT7 zQwQ510r-yCxI9B7z;87ht+BDOo3&c~GFG$?5hIYuE?I=`KKjrE{K!WigO5D>IGmoJ z;=oVRoHRyN#tJu}3lJBVFpvGU@+joS7N9sb1J39y1{JLO@uDPx7k1F}bdn)fDJVR0 zJPB2=k7Pc1@{lg}?g4c6*Pyk7x4lhp5B9(zMK?S>XqNnUUwjk(-RHjwUwY#XY}2eS zsmEor1iMSB#>U6S#YaE-{Aag!Hh=czm%gz9Ni6l9EP7fwerIRP3xnYEQxj9qU<>6! z$L;#W5@g3z>~-c4!5ATZbgUw6W}1g-*joE62xCkHkkXSsq^I9ABYrs0Xb*G!P+

=HGWw^)%y&814#bM)MH#}*e3Exk>>oh=wdh2~$p!paz7!th)H z_8p(b-`IjeZgN^JUgXDHWI>|rP>Zi=r&JU@F*G;?UQ{|&ME;5T`*)D<$7~gu#2aFf z2+*L-v8f5}CW|Uu2?&CiQG7a$(DNE`YL<=6opK1Ja#=a0gYuMjh?FP-r|t-XH4osd3=M8g zO-<#=$*D)p=h9p^$FcR6mX^JXi|N0TRbV>4&unPX{2y=OrnatJq5QOjQH2*gb&J{+ zMWM``gs^U))$_n$vmczT{TP1_Ldg_GF+raW0k2@>vWX_Em`8{jT~qWDc&!UB8IglA zFfI1L@llx0p>l{gyicB7f5qWLvUsDA%a)@uL4n0tbW8?8R34Zuk@NMGQz!?2|6ZCP z6{YW{lpx*K=)D^I_iMXg@FCCSz*HJeF0{e=IQ~|vj2@Ag-mCLer^!cscVl?dvAYeP zd0_{Xi3$t_kaV0My&w6dy}bkX$CJ zG$QUAq8pREn_MwvexDEG@%TNBYkSQDIP(SI=N!SdL+AxOFg`wZ z390}`RtLfg+E%AUx3IAA@>neP;$$+pCl-tUB%NOPK7Pi0p-{+JoMO5bztV+u9*szZ zo}Xyd?$I zNhA}BSv8xyUQaNYOk9s^tSuA@y<~iRyi>9mDUI#Q%RbY>uuS*){r8THjC{rQR-b4b zg--ObI-3*m6&M=0+< zLXYAh)ZlZov$K}_9{KxEQ3h`M4+YE{i$-2ha#GOW)q?BG8 zBaYAK=ft5l1Nh%0q2L!xG8c<$R1X6LiKnpq?k>Cp1I9817)=*pd#izpts)hYjFISb zC`@vs29?T`D-}hunv>hlu@a#;fIEiN$bo~HKE7j zcl!JL5>?ZTwzRf9AAiR+7*alIW_H%e6>G5vX>oCp zdz4Sap(Ia85YW|><#Ope>({Tp`N0SGT!Sanq;LQikGhh(1)MO%;4(=#0KPvuGIAoS zX~vrkLwh5-VMTP??!=4yb5sUD#LqdN%jI}?p#*3el>zT9*uH(+m1DCrLp_No0(n8j zHp%*v#o;7bymnpZ4L`zMD|}Xfu(c}Vlj-?_W*o(&PCG$v&4<_EE2||3j*OxEPg8Fw z*H3XR9*PewnNSrpZ$RPvc$D9##v7v4(s(-37K25g9^U?MmYTVfj@(d%cL&x4-&ryQ zgq{GkKuW*!U>LQ4XyEXC26nW?1!tfp6etZ8&?OOgy{cQO{X)tZaC$KmdLk?(@5+|- z5!6@YH&ms+IbuIDIo;IJ+5Y_DV<$dI9;BoQUt;M==o9gHq^-T}67;67^ZC5bol4EN z&Mz(miD!n77em1}IqdJC(?O#mIq)R$0a&60=sT!g9ThiIz1}}UgY!cfPCg+g5 z8xDv61z+>Cp`oD@c(HywGc$7^DvfMIs9?|qE0xPTbgQTg#KKmS$HJvTm3g{wI8PFKFDM(m|7@_JU1fTw$3#W@U_Wn;|(51 z^C275Eyvqt6&?KmBweAWAgD=3xpM}Rbl)^M-u~gy=%=qDyS>mHenBY+3-QRTX6=)o0 zA}}4QMno0in5LygFe}p2)AQjy_doD;8a4Ms75*oz0+1KX5lUdTWZUNRdwP1`IzK=E z7wArP(7@NmwY}W4l3W2w!*68rf;sdYeg?wv@O)yDK@0Ggh#ee858>8owfZeo1bZ;X z%To7WCYukI&g_QmtH7E|)hH5!5Y}%C&+*kJq5=E4iQ=(U~i? z^4>c3RA(G_3Wh+R2h3hD}Y8Nu&|IWq|=M<$5hkj z5{bkuXtB4;HGZ~P4A*0DfkbXxh`$Y$i9S6&y#c+A4S4b1h@XGxqKhuNB^U_&WO`=y zm6UIfMMFI3C%2o7gCNd?TA%%6*+eQ#xW+|XcvN0Yb^n~JA7q+L5uOBa*V&eFzifIT zch?gA@(bw&C=~LLh(-ziI>qGwzOBE?NkMGROOVNAD03r(yI~gKa@z0ZJH3a>nSHEI z_Hp_nuX6(^jlYmJ@N!C^F&qpi(Qw!q$t-qk-M-^J@mM&kY03)`Pg=j2S>(qg!#~R~ zbh7f~*6Si1bPKAKC47Y|vJlvx}xzdu@Y)t|D&Psp;*g!Xa4qdjx z`0)1M<>X56M{DTnBFw=_rBXWL0vk~YY{bmNn~KFUM7)^qM^K4TQIaFTC^72}mT^;^ z-a%FyY_Ax)K^;yE3dIs{=3$1$<9u>y9SJ6?wo=nCZqGdp10@AusbY?QDm4$om|sqA z-!4JO2I2fYUl&If^(eAc6O}T0BzgWAWhg955QsJ^faU!EyiB%O;JgCN5G~HCq)=lk z3O>M6GUx{1rXj;X*nr>X#mt0XwKFC=eCXgC0)7Ju**ugnOF)Djip`rQc)G8#wqKF; z6iYASsg-EU>B@z2X9;|$8UH-_d*&s4{FL|;{Qw)ZZ53m8s=R1_JU>?=)noy5S<~-q z-MZEC7#?)_E8sO02>WzC-A3Uv@WkAD4(=_hI98UenMUiRNJGMB-`R2+FD-n>skxU< z&EhXDpy5Kq<7ii)1Xe-)=KBvEfX2#n5kJ>qv)|XIxIAe@a)N?8F)_g{xj5ds@So1| zyTU`t!j>sMF@vBcPGYBXtu&tV#VuMC@-cGEeyJoKOIg-icw>ppO*rs5}M-r#}DQU384Cyl83*#t{WB{5eOs$J9i`n|W-g z4acOMFxNi7k<})LkA&?ihwc#wS~&yF)`|#Nyr=jooWF^7%)Gd zg5$@J^T(^4BT)Pn7x7r0(J?uylq&?R-0|rev9{nk0HL zx^7;)ZZ=wcnvR4ST@7P?l{HxI#!AH{vk}Aub?ng%0A`uh03`gQ|FWda8*89 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

hId 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 z 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

C;e5mBZn}Asz7%&Ez3^efV_*{1grVm!Q*a# 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 Y4=^OX3|AcE0RR9107*qoM6N<$f)=)-jQ{`u literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/icons/icon.png b/iron-tauri-client/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6263b98c2c7ece697b0454c8aa00759464bec5c9 GIT binary patch literal 200846 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

VecrB92E z)dV?L+9Z7t=KXW?RxRgnbh2rxpm|25DQ&rqXJ&VLus~v`;WYORgQG@M4p&Ao{x_fA zjrVKY)Ir&?8>taic>?qMLvDr1ANddI(inEMfd}8UB29_^{H7qu|MVmUS`=pgu zTr@}_^_n-4KVTwkdjG_|5==|?*!7Se z_hmV4!7$ybNl}y_E;6+@ZsU=@B84k4YZ=a96^-q;mtyKX7aSlqD%_BiT z1NTjAp`au+`ItS}6EF-KcF0 z`We#4f2!lL&rztbQKbe6eS$rMG@akxV*bNZVZ2~u4@DZ589BD*j31r`tu?H~SV@g= zjQsf4#KZs4d?)gJzTP!j)#m@Y)uGx97gLCM(ZrdX(;%Wd#Mq@XP1NRu4fvh)v-EDu zWPdsHpUR+^aY;90x!b~0>Erd?W2k7*_@xGJQe& zP3ZK;_(+^Ol&(N3I-&ZBrt8fsEq58Ah!n4$0YCJ3g+6WT*fF%IaU5q59){VBEXFe$ z8kt~rzSQg=_Gbg?^R~nhxnzXZRF+JT0@evKT$9M`(d=~OZn_PAse9IGnruNOAb8?K z48pAL-|0OoaRz@1HuBkrJ2Tes!ne?dnEY+YeiO*C3AS8R%x}mMEih%uT{oLd6mr!F?1qXS-?B}pDS)TR|3zIP`dwW@h zM~ppxtP|zoF4|T*oHm;HUL3NdGTMYuGkA+-5nd>&x;RRiC}_f1vSO&Cn&GsvmDl4i0F9{) zs-sd(?0ahHblq~bvwBS;2g4KV4l#Y^;r=_=yB`S8+Yk6VB=mN$?eH6JQh;L7#G?;o z%wKHj2xnI*HtJUz&xeSWrZ+OQYiF5)t$10L>^N~FHh8}Wy!Q#_vQzd*fK)}N>n8x5 z1m}%L%tHHGLhRhjb&5@D^lLr1be#%L%kmm8iR4BA6d;hqtih1XgoJcdtpj7~>-Rss zzw2o2m}gX80>uSNo8o5aS;l80tZM&y!F?wN6;{(d7tX}qlpp8BD){2=q-B@B`}xho z1Yj0^(wUf?JtO7S0@p>0iL{9Ot>YVVz@%a7HQV>kW|vnaNLxqw#usy9)JFUk%p+O4 zdWYN*_T8vi>=#6oSsIP99c1xAe1E@Av`5{0Loe$W44+PI7b?XkRvH^u$L398uSIl6 zb<_7))iuq?MlZ_?uLtia9~SR0FmAKHypMewg&7lscU@MM3cu43#Gx8ZU|8Mw#i2}C z!P{L<;$it))iD1!EyaOGb#)pXH86;B*tYZIt+2LsChVVBg3;14+s8jjlO$d0)X^B4PP{VLI`v5%ITnwma0uWKGNdU3!5 zdtQ8@0`+$@Ft6-pB&PqpQfuZ@ndP5MVpdaGDvCyP&_^w%SOipVTR?eN0tT02sa=To zjh5eeN3Z`Iof7^}j~_iObo=^a>YAU?>l17sNw*z&Q_I{ z&Q=ban?u*`mCsQQlE7`E_-C6y1@G}1tr|$A#6-}we@BfCNi14Pz!2Lcg_l|W==*Az ziGyyF-J*dc^B6=50p#A5s2hRtv8ULrsA(6D-4ikc!wM1ZUk<*iG)EEp!<@wNI>rf| z3lL{&Z^;eMu8s8#LIJmf13B0lM@b3{r^RbK_f6#2S9|~etB&>nkW-yA>*d`^T6~=F z?c&|(YU3Fcy4g<{woka9NWqv(o{kMTKBWNwehaK}F5x|mlJW|K69d$?2wCbbb?}PO zwCxbU$+Vs)H)kjS7V|<=(3*ohKqW8BikRvMwu;`V5&&6QzEKJWJy$xT<))&!ZcOar zaBzMPgY6>_kq?U-@t_~(_il;(!=egGwZrtS2+XcT`Bz@8?IpcRpq{Q}!AUT`Q?qs= zr&-WSrtTgvza`rtj_HcB2RLB!m4|x3HpnJ35L<$&1DBvoYdg-3Owfh2DrMt%H;`Kl zOVnXq%RT>yHVy;9w;?q3jiYafwh^FGFH(!9$&C_^k%fRDOK==G)ZAV%LPbj_C361yiV`AzUxbGjR3wQ=Ti!9_4_j`FxBkjIP<*vQx~V?!*l zAxG=Ech2lsZKJ#ICNg@an09S$qjDM6KdqecB*apGyCxL5``p>w(xx!@eZ13<{r0Xw zulhy~raBe!v|~+013rj~BC^9^Je25Y7zRWX6y6Mp6ED+0c-IaFr8tKVQJ8;?ll|p@ ztzTQQ7JVPElZK-`c0!3E7I3{n&9-VKP<_g^m#eV)>ihJ?D(eU3O*t>sV04Z~KdP#a z<#!%5^qcOr_FfJV5je@^2j=6r&1q{5yoxQMkFU29Rtnf6ziERGPo?lrtOQId+ zD3(_e)P7u+%r$X8Osr=lY^^+gnP7Y-YPB!I`0kJ2rc*YAhK3kb9DON@v(a^68)JG7 zqt7(-%qQ(&LDU{M%2H?S&CwJC?QM5nyX! zL7(T;M1_Lb0rIEzH1(qtO--%O#ThJ#qjK~Vgmb$1!AapK0k}WQB5olpG*N}lu`^+u z16>HZw#^wQzIh9J!~jxXL2Nj})1)%LOX^e;ONHPQD@xJk_JrEZAm)-rYdMoK&3V@4 zgg6l8T#K6e!Vk7SGve>st!JYHkYZ8v&zQHy4WdZFz2JC-B98Nthci5Gdy-@MS46H` zqEYf$kA3PJMcmyZcg$pYigGQDVimtj-FUhrWmO%7bZg&{*}>^`$+=rWw~wi^o-Mf9 zw5fq;xg_;=a>WRhKEFGMUU|d=0C!S!Qn^w`LS1Ke^3S8q?2Ww%@e`lLB=NlR4(ptp ztP9|-P?3C(HxhbBBvfMEoZ{_IK}`4W?Ro>E(yDi+S}~Lf2pn z+0$RSxj+eKh=HNAf;FhT>)%3ck8=ZowjMA5Nz$KdR)*X;xD&+aUF-@KnR=Nml!=xm zGx`n?8@uH@A2elyp1pq^i{yL2W*`WZ-mT>mXBg=W6Zdv+hx>?XuC2cm(mW@C$E?V( zP>%=)WPZ-P@rk5cgBPDafLT^1y8EAs2OQHkPQMD=Z;SLQDNuDeOh2KTv+T+%ww3`f z>;(d1mjMfB|8TK3^0CA|iNn9Jm1CdJ_9K}I3rWMAs(bC8>uRhia-B{WfBUO8{9M`F zpH<1@M475?82(QdJjD=zS*+?KYo9AIp$rsCeV@07`?5;sZQhQSXLqRTEBT2yNM-c& zu>a_Y?HfMcQbCykfSHrAP+Z&%C-k3Ufl~}v-VUhdZKlU0O%<%3p$_ww%%G8LQ|CV? zL^6;8r7z(PS_3}(T{2lVGg9H+vu(hu`u+wkn-YG>aD*tpL?WBSG8u$V=#wxdwtC7V5a}IyB*V?Do^r~P&nKv%cg(p~~SI+QXR)%$X zk)rVwnklMm&azjIk)kJy68(emPh+iW6#|2xbcs8$VQ{&D9opn%ojIAkNwMe@7MJ+X zfBIGNE7=K*9h}h%33w8)i^U}0pSSjF-{r_r%HeL*hz9wH1j=9n1LE#<{QG1gI2}QV zJ7O~H6B;A|r=J20fB_Z&KuZMN%B@;!aeOSZ1=~+W1VEwdyR6ZfPAFZ5+>2(3vcBKt z@p|#$dTz?iT|=YW@i^$f-f?Nb9QwCX@r#dEr9Nwu!_}N0;w@qP?X!A;s)}Y+Q+6Zf zR`Uk{K=0r2JVHZ(qEfZtDqa&mIHjBD@4+u$V!i{N7PoAQvOn2;tq%#qF%!fLJtUd% zqDhUL=dajJZ~r8nCJuX@AZLJlHKO7d0SiBO&4xt&*e=dbxW_l4CgiY0SFmB<=(7L| zOA4eeBu&&}s4{;ES+?4Q5$%}~Um-}7$GqLH1tTPl7w~g_A!xMvNnC5b6^Typv^9Ap zWVUNiwV_|y2(WCW#6V3mwd#&`lCMY=BSFkwU_<_?ZX^_rtpp3QsRg#jr6hiW3j#itCxIcldE}9lYI7!wjK4vpY%eg%$rRrvDk|&%P(sZ;2VQm+3M2toV{N|X*_O7efcYZp zWauwWXT6M14!DQAO!H5|i;0MQoS9+aXB6R2ad9SlS%KaDX2|7CLl(rQy1_bd3lx0; zR=qf?Yai>RnqpI$3rJWhWEtkkoGMs4lt_H(g9*#Suby;Ee~h6m){QejK1y+vUxjxS zs(s!5^HjX@G6MIR`A$5K%Hz4$Px7}&5J@C0+E{IPr{NG)DC~TM0*3hg>qE%^1c1ZtNKkaFfr!cp$)PaW; z-KA2<=Fid3L!`%?Yib1FNQbklz^#9|c{U1(f!ZN`At&pygAxsdo9e$cz^l&O)RtQ6 z*s-4_5l&kg&o$z${2pCK*p5E+h+U;lcLX=FJ1P&rBY6H|C|LO z#_fOy1(5XB2cnZvF#*#3KcM0tC3<+5OL(=+y;w@u;yh^qCC6n*v2xXc3PI<^Lb#?C z;7Al%s>81~+DUi>aJtal*}NzDgFB4G`!BcMtxFzHZMTCZjDDp%Vq!tB@mKq#elVqp znYd|c|FZ}`I2;*AAt^>ZbUoM4l_%9o+hBH4-3~VKq{=o-IZb0RUCZ-*11sr+z$`9_ z%coN+ntx7w!>I!3R{963xdO}s<&ZU**~$rjazq!zP5~(&U1f&~REZ|BvAE^12KWE< z`Ym;KV&0lQn0fHS?^}GUZc*u(MlyetH6xW7I}}qZHT-Hpon4}Td%%R4kN&+6-RZjSm0{ooS84VXrQ@=g>Pj+ zNT7|ZCP+-r6N$<#AirFK!g=gis#!hg6V2=2^U2B4t1HyC z71Xf*69XHW?itq!x%&%ud-lAJE-PPN2WqeThPQ{+1#bM*7K%iqSOXd=gurA52#bvO zo`l7xCxh!6f?YSyc!H<=5;m0nO3eGFWU0crJHt7Pu*56Kjn7|JagYYjI}n6qCSmgf6a|+yWlT*2EFiL6pdhBV-v9J5mp7G~ zx)nO;&@~+pSvdpB5qt*$gjl17K(1?B(&mxTUMW8*pU+<39NLm_b(Vz!t~2WEjNMp$ z7pfwK0q5k^$nJ2id#G5^GG`u}$<3bI;&Dri>}Gecn6s~#WXo?$Wm;8q@vr;;029$B zq5tdy1T7z&BsIHOqxf52`Q96BN0s8r|5KuO?~g+w z*nZw+5Dt0kFqWZycQ%hI#J)Dr^<^VxS)uFM1>3N*7A=L25MrDc$i=O?HB6@ZgshmL z7q~*Mw%a1&$l?_v#UA%9h6r25+n|Ae>`>|lWf2`+SO{-B#W=Q%v9cm{f98PQ&sQAy zRhP)WlyUuFLDO$i>IejF8^pG`)n|;)5>+mm+PCZS9x(*^DS`a@zkRD}PzHYO5 z*eX}fXKS*$pc>IwIIrZ9xa~;N;P+0X>`cf=3)~>Mqp05?nZOo2d=aKm;*D|dR?61C zMoix8{RMe`Yqt0F^zqfAmzeA=H{%>?GRL(7Bn%sPi5=a7ryJCNt=CQGi-}jb3d#eY@uE394}C^L5?!EutosOCg1dH zHw~D6^OlL}zp<*_Rg}b*{xB+9FN*0&NgOEomwYoY-kr@Qk( zWB#6g3c+Z*%oRH-zMt0^R(5YX3Pzaq-7cv`Z1_!8m z8O5Z{WP*JT;w=Ea_ME+Wf!oe#naE>5)#AGVKl|(iD73^gUYS%&zoPys`ugv1+K%VL zkzePwh#o+DM^wtGFlfMGW$5OQK6&)NGe_3GN|V} z%03gmKJR^r0RDqPX|Ci8XlgWq1cF_be#H#_4K35c;t!vQqEq|tLFlj^oc?9`<>@YN zgXXIb1hRp6zAma#qJHG1jEEgeu;DAh4)gAsBB8zZ*W?Yp!4V!T{K*t-rIz6@K=A)N zh1j}887F$%arZR+mbKR8D+_^aovhE{uBS&E49uklo)t2^EL;d48yZBmUeI zn8Wf*gd?IGiiV+x263_v2(N#YMo+qNY@s~zM=RW4*u1Rw_A+gOb0;kM*9YkPU`jiZ zRq-_)-9UaG?pHzha|lztRi82>fN6+}M(ZO{4N*``DpQs+A*dZ84O=C?2;#{3tbp@I zr^SgNbBO-->k!1Rfq^Ok3HFGq}B%1XD1uWL_uDvZp8UG>+s6abID%iX` zj;iA~5cdRp5YHXE*VR2S;~h+_>){*_kOBh3CS{YezL1Pu;UP&;O3$y~bovTb+s&xfYK0xZMs^7{PH*O%EI2ffat z^t*t`mo7J}W=H{$AK%H}DqH`NjP1I5#ze>Zqr{D7^>ZedoiM3u^}#~ray83dj+U2? z9B*&#EE9;mjjf%X3(&=`8}!`BZX5J)PZ*BxDE+RdjK`|~>A`@%hGWlA9~YPJk3Oda zsJao0!Ivf!SFvOwOyP*(Z^Jt`!%$y8pVAAqCHi08La&SO;%L<(9Tmp)J!_lEF8p(+ z>`Fhh7J8t!;sVyJkg1N~ns#|8u8v*L33N}DfWe^7VBpw=t@ey#m(`yjNmHGs<4KNR ze0)fzFV-@P6c)P_al1DsEUJ&zi*^=#fQAZQ}SE7=~9qPny0+%(pW{ zfyq+b=CtkyEr%f1bSHWG@so|mcSxCWdVfG^A*JUQOT3!lGtcxLBV3Xn2OkHZSpnla z(Rn1iQ@J*W!XTW#H#o2=(J)~3~9;TAq6R%W@^Ypq$j~I+x&bDpCh?xY1lCX z0pn&)2B*lSi8w5G;Xgz{$!!Em(Dii>5~`CP zwcNVi1&X4Hz5 zXfeoy?nMbuLbJZU+$>1tO;yKO^v{*!oT3YPyubo_2ov9bmbn;xqPuGPP* zj39HJ`)Axy7`=-X?X|bJcNmO_@!Sscb3qN8U3P2w`=!`AzjJrw*yL@SzKaU3Z~ARU zee{B5?f^^usT~-+QzszU8}($8nUPr)^|^MkF!MSHPfke@p*dHl*Ch!S-T$2<_dL)C zZIlCNhdog~GL#_Bb4t)VO#JR@3TCHk z)aZ!lg-$~jM&)Uve0gIxH@tzt+pdFi2DIxNNs?{=rVfq(DkAMrqR;s6Ymu|ZEIan8 zPlE8#m10cp{t|T<$a9I5uD@xrq#s)-eseCiJojSw{X~R}8fvLse}jkgcT^@`os*ZZ z@{;b5EAM^*%JZDRsFqs-NJ2t7;dgJWSt`t?b>;=sZQSABxl_>X=#2zvS<}r5tt*2e zREk8!jjJ9xz{SIkd7Z?~y^S;ZKLKz_dwY8#g52EPtPN!|e~r5-Kfdl9+%K~0w|boJ z*X#^`7XBe&t(ae%)NB>tfXyeCP4zQo&r~w_9Ta{+tEQ&rb=;(6(KqEJg#zHk3kMZw z!mcQErhb(Ya(?>*LrI2E+?157{Klu?hpG?pmC0Y4CUpErQl!>+_zxZT)~wF- z@T65~m^Q_Ht7`a#E}A^y}APM zj;u)nQL<-dK&ZsHPv9(WkQqv9hXB_UySIK~ z!g})Fv{74*cGX}UGvIe^j4rfxYh+0lKnV)ja}P457bGT}1%w4QK0X_ct6%ymR)d2= zoC;m>>7j)0SD*u%zRM$e{>*V7*Q>lvrS|^-8$sm0{SFT*lA+ivabqq9Jn?bawlJ26O#DzXYSEY*~G7*U?) z4&-uxkp)W?6{rx~M23_2IVEcrB3XQ7(2)fBmIDCOX&ICNG$3GGDP?CY8ug~!w{PEc zHk*BQW@e^(C#&G}XP0B+cuJRsSw`zJ4qRuw4#iHu%0V(ic#Wp<_X+32+2Hd`svugdG{#YcA?OdcMP-T?zag z1Ooj?^&dKT2=?#Y4}G~lNGDP}49K**Nnxmai*FZJ$S6RY8{m%YNxL3^r`nNWLS*UC zQw)^`0YOMS#@Fe+Nj!)PIDdBjV8P@)0unCo6FoqHnQ&hU<=xLXL+vlgoqUQiq4^1= zY8mkS;4!-Kgz98)SoEj5HWG0ga`_AbB8xQ~jYbt}m5K_rBskQb1gu@u;g}d1YPDo~ zUQ_bI00a?&1JS}5w0a4IhpOE1Z|fPYIum@)6HeTbc#K&Cg9DEj3Y)(_Gd(kR2e$zc1h>nB~}ahiwzh80a-jrMA^jPx7k1isvGdvg zLt?$uN+gnxAsg@q)oNw-PGbS6y%#BJ|M1~MeJAfe^_Q1dS3hLOVzv(Gf`c)H18HO= zz;^*!-2ni*_GzcNAox>|QvUKJKj(TrmtG`i+_c*Jwq(b+rl66!F2wyJ=Ixs>o>+%_ z_a@<^_e~(}KMF$`Of)dV^hkZK=j%Hj24&BJv!x7t^>P8uVesE@9dNN6AT3hbrk(}3U#IVxiYF0_48w_ICt%;6eHh@#IWP{o zk01zU!301pFY9y>@aK;lCI83%)XDyso@6Tf{48G$17 z#mg`{l*7`1#L__p%H=w;55NorR~qQk`W9atd~f=#$YR(E<_F*>u{{0+o~1;XmLD=t zom&9g!GQU<5kf}ol4KD4K|41Rcxt!}vAntrCr_VRz`I{uTv)6r!=O731Ms?)$z~qH zwea6ot5v4_&H5;`9e5|>rC@eKsIOo-$=doFxdc3hRO06m08D}sviI}=Jpk~wZ@4zw z{=tI>?kknbzjpolv_&WtZjzSLJ=daMZ^-@o53C~keW_S1++j$U`*-ExBZp6njgS5M z^2##H-$iRWza_}*CbA;vX&scZU{aq|i0^N3(Rf8f+-*^!z*x&OrwNF=z9j+8KDGg&x({5TvvauoXd z`uP6s4z-<*mYY79c6b5$4kSWMVp)JX5NN@#)oRe74hWs?nUTFxmj*oPcOJzHTCk^$ zeArr=y<@B>R_-LO}>%PWtO)`^{eY$SS% zp%XnlKo0=C%?J016UQ>R0R62C7cM^5Y`WI1SXZeghKm3)qrN>b(Ena60sQAmrLuUZ zumCz!@&CeK{PX?CjvxE4UU=b!4?x&%Dmsr!ee(c-C3W1wCtK)$MR8M~IcDY_aCS*` zW7|q{O`We(;E)B#*>yNP6o&^+9)O2WAA*AuBRs<%d<_2NDNm|&tQ}ji3})^rm|ktb zOBnpmPOrg6)l+u0u>?}MLU$Fax%Eb{7agMuk(ojU1X#8m=oKh9+FAt2iyvZ2%BGJT zIReLy9>W@Yo^=X4Md5c609e6y5kX5LeIJ^9hgl%g`BIPb1zo=3VMmd`8mR1}DtrnA zG&2x?LlVkS34rt@rD6$cjXKu-G0-RD$SPFHBoRTG#aVp$oMzh;=wN(FgCl>j1px#6dVXl7&P}B4u4skF(UgdCJCVn9nq3{x7|;0IyB0 z!e)b7_R_d;$2jm4!(iL0{td>}kF$Hx!jdZ%zzS6T(co`{ddh^ygMt15&iaoYJqp=u zmTT7@PrcjT&i9=J07f%lviKO%+SI4d0S>e5T0=1btP2q4mmaeZw=JpA7GRwgDUUcCIq z+`tKZCX4W4CJE zeycb7{N&%hzP?_ZoSdw|Tb#5|P1w_-J{h^NkQ{#)Pbj6og+ZBUb{7LrvxXTW{vAwN zaNnUEJbupvJa%di93GBA!YyD)U;`Wk60}xPQ7493Vl1A4^`Z-B&QHVh7Z+frp2C`c zhN)o^mN%O|U$^wQUkdJ08{wFGwlTg5>zbmq4K1>(D99%gaX51H2pm6l9D{#O4YHAK zZF#rjF`&OIff+Rd*kg;~J$v@Rv17-ezrUY@9nTbCk*pHaaeyZe0SQ}s@OAiAQ-}#H z#lf`@l-Wse6Im$w4xGI<53jv34aFJ>DDd~8-=tZGgyTWlszSe2hGQcR{??=L$f>=s zx6c8;R$w4N)PIw#h*=nFYqv!!?4XcJ8*nqgen*I)gCGSt43xM#yg1g+e{w zw;luV=0KCg+SAbH=Eh$}Ix0aKp6|{5Z50JQ8kSm-{3W4+&rTU^5@%Gtv}zfqPLVAhcO zpM&X5jQHt6NRaYes!=_lSq4f(n4ab-FZ#1u(Au^bXaMYh2@v{on>Ib7&5s;D1}9IP zg#KKgo}?$0mjtW%cRG%Cg<@|S26qF2^!u8b1Ox);-^9Ss_aadpTMJ`JfT#IM8890i z4SB$bXw|vlDl?-d`vdVPky_lK4J@gM*MpAWF8#_-6Q6wHcWl#ndg|nf(QG#J-(vRvK2CHL<#j6pXfSw%004;ro5%?^8nu7ty3N}j z02umz|GvGahK7fK<^09-$wVqih15`V9+63lTL1ujPSpIMzHVt{x(qIYGx@kpF8>Wk zVa-!k^Wut^a9qYnL2SES^C>IwTCk4g21Lv+T!wcsZ zV15(hNpc7pb{1@3dHJ)AupYhZ>olDNa6$*_pgmFZ{|XRT!Ehf_DllNcZF(>|Iu7rB z_z~#K<@pEa*HwNhDwqiCwgmuDw@af1pfJiqgz%%M(3|O{ zz4>a$j}I|oRFJ`Ok;-TAKmeQ-`!rg(4&`DA(pa(?#_~xF!KX(?K^VLpnhW5T5kM3n znZ)}CvXD$=pjIhEu~=1J1!e|>8E?$?%M_TKeCoYf0ILDMf;xwYh83dbQ`qMVl_Mjg&toZ|1U+wn8`^ra0B$fw)nDgapR6hPH<%HOZ(6f z9vkq)nng&61{~Xyg7=(04EG-$gOLHuru`;oi8TyFNfHR)szm{qdiRp)JZyS#%=}m2 z<%=tDeXR*KD~Gk>I5=!4D|w&|)r-ll*U4weMKNyE}+30}E$oehaj9TDaN%k|BA12+X7;m7oACOz zCAhlkL*2@Q>tq4&e%n!FgE?!3aK4VEeGMp(*?Lxg@b!b*z0etEc!z;_B=kFR`~)06 za)g7XkgA&@2(H$hA=?SWT@e!9)PSkwE}hQ6-aY$ZbCU-B6u3oDnqx@M@DC3X2y_C1 zXmXk+sK+O(sltK*R+ByUDcMZH!bTk~Of5k^n}+>^2n=j;6RfhJjC$=YvMO%WVK9+_ z`;UyUopE0h;LKD3)+$AO(+szDdZ2=_0hTN-1lbjoc2c&t2mdhe%Z@;S-iw$KqPnSt za(-^US|o}ha*o{*>wzA^6xZO@u$$5Ep<5rf?7P-|qhfkkI?%5p)jnHYUB%iSRO$GN zdav}howr^IVD}3euk)iL!zWXz#Q!!kGZV*}rKIw$QY_!v_aiEp-WI9N1|IhR4&VB= zE&-Uj--#2)haP?W(O;OlKJ|zyZksRxtI%gALz$=|7m#O_&D^Zu*MD*_T?u(f5|~s(fFji_mK9t5;?fKScMlZ%)_;% z2CUQ*SZ+w-CC=F+y}nSLbPBcu022(uW1nbqPhb`uyZ8S4(zQzUnf0~xJE0pu zmjJ|GJih;mLv1l8jqmW?JFz3JJF45kXK}YCf(+;3haS!$WA^RE#f4%|40r=^rnd`j zY@@mUGt;w`CiUwIHQvWGDbRnDKMC9@lH6J%}H0OR!7R^(hnoO8?$VS3;~6< zTW@KiY9GRKGiwb|z%-|x=DaxM)Q5pJj#O?6SMH&-1NR=;3y(-{hjB=eSUIJ2o~3R15IQFusoCz6`1G~@WBU;!UrEb4hP3_V7p~-s})G#xftiJ0(eW=xG1}$OFpCn z@bT1&mCNNHMrLhf`$&1)tqENn6K~zdM}On`4)-~NS0AMUK%`qJ3o^lC|X7#q-Ka{zUCp#|c&FeF>6%2+sq}GM&xh>#dY9W=- z@&9JeR3GVC5{4xmfi--r^}86<-5R7t4F=Omc;M6o+<*6BIC*dYk~U_B^|Dfs%M=>~ z(PxR#m|c908r~4Y@8CL^{V#05rP(qpmt#P=AbIal*pWyhvn?$+M!Oxf_p#ltG(pP> z>2E1pTH6Q+7}Y=RH=>w{5+55MgOQO@b}yu!cp+|yx72MI7%*@XOM?sm4KNxR8G)hU zAt=`>+)mkM0jq&PIFGe}ivxuQ;}psX0LWMxYQ7EE7uMkNwK*tOJRaiY2qh|H!yn7$Kt;}hG>uSJ*CFpT z;Qk|H@TVTW3m!hTA4XF6c`NJSS2y31@Na%)PXn2-4U)?N+zsHl?%*ds`Mv+}gCBfi zj6Q^A>L<4)z*B$8$0CzX%ePLqAobd7L!nTxkOAmr{x`Vw7=RnxC|e7IzQxq7T9|Gf z0N|-+zG@|#*fSw&wJNNvF6~M&`%aznvsfvX>|ow*H%G~ z=?lQ3Id%-YB6MlRW&l9rgI#qVl4Y}Qk7)YD0^suIWMHvefJ@UWFx1xvr^jQEb4tke zsM!!rOZ}>XQ3Yn)^xDWE$1ECG@R6ZDc<|^TJaE?$I5loVHjcre zv5NVi$Mmi*iTsZ-UDJ>;J*AI&!<%He1Wp_?iFy;R&n?5;dKK%)38ax7q?oA)Q0MwR zm1fC-&gbE=3dX1aC4)>~8jZh{dJ3EjLzyv{kt*XOtw%1Ghtbh79{9tqfwVt~I)%=y zl6U?&(bvh00aH~ygyvG5t#o#u+O5bfUmszRoeiAFpxT91~c3Tc=DfZ zQ#r+f#q|<*bR5hlAR8;;(~$bNV%iE=uu&A9(=pj#5aD@co&hj1&zfkUt?OHr9d7B-{yhNjc5HzGi<;mDG8)F-{6T2eH}aCVZSvD` zMJ}7E&o9jV{Km%mxto52w`_M14V&52*{<7M0g2DdHr9&n(r%DHeuDx zV%?wG0;@a_h+N}@?J$V2F=#om9!&FN9)n-kW+57V55)x7`uzxg*k%ASX!AlAEfS+N zIyeG*$0m@Pb{GI~xxr&I!ysTlhk$ZZhr?S)Fi61o zA1tk{1jayWKa#7U@^zp|emvw!N?m%veMkYDOHI@nKt28lp7F2ayQ(Z;rC|+={!dSq zFq@A<{?LBh*9Za{CEUlVCxI9NLBF?D3J=e6@w3r!R>9}k@c5B_I6jnw{Z}h6IkyDU z^DD4fu49QP10tT{5ycGzzzu0}TPa`IN66J>jix%xx%_~oC1e>KzX~Zl1qL$+fHDc# zGu#J5n&8eRueQNACT{4Y&5=m(E{a*8U^6W8~w{R4kRw zB9Qq92v+_Xo;z`5G^L()xMNFX`>`rJ9$(S!0Uvr(fqMYpE#GWCxh?29Z&^)m?p!1r zS(O2~9IQ^?bysET`sCNIT)s^6z-{06Z@VT}ouJC~_4UkVVe^T)PkwBq&2z26v;(IO zjl=s-?Zd?$gBvd1<+_BWf(MI8r!KEopoHa(x^%fW+#`246583A1;uCDS%w^=Dpo=uu?RTQ$~ zd=<#BR8N1Q;=321!}Y`J)Wlwf*uRYB0iT#%^Dg=%GQg}e-*zQp*y57 z^$&&vsdO4fNAPp!`m`ug+raKZAbF=2350;46ygNJSAcvr$6AP$^>uE?lPzvXBBBQf z>qtrz2t3e7=_`~bz}7&6XnvXqS;up$SoY!iav4sH48TyvVKFEWZOpG1<70(Bl}DXD zw$H}}fj>G1vW|r8PzqAHJ#cumA1>rmaCLSG<_a#9>J?;)kg7*Ufo4YVN28bK@&xHd zT=p+$;4w-6PNxJ6^rc`pn}yN-G#nbq!1zE0Msf+r#L2cY1=Xet`8)y)ENzvq6=1zw z^+n9GilyR*^7+1@Y&N%y%;0TV1|T<3k}j;Rt=FJ0|Md9Sn5-bkHZ8BTzL`!ZKDV_! z@UD?Xa2`juUhwY$fVX3Z;XzBHA?jT=bvo1Ta7)7u;c>2g8Cd!{-w{?3)2GTU6_M%q_?*Lv1+2M-bt1z1re7xRKEj29`!tNZI4< zEAhHD2*CH$q($R=M|+Fr1W+mD>eM724;5x-cxmTW8yN(DzipqkKq2E5U`7cCj)YkJ z!IzuIW9{lf0@4R_ka1G@Ihy<%tI-=S9}f!E8V3ebQlMJB3xnwf#IHa%rgmPZlqeB2?X#luK_{SBLJljoYZ zm|5KXYrCr6$JbAtI#of0|LyD7uiw7ezaEYJ_@j>w@7p)=OTYic&+ipJE?!nsObqAX z!PAG~G%^5js;6QqMxreTv!p~O3FG;G47?*yXzqi>N)5`DI)Z{CtZfwWF9Ly5nFBHV zqa%1oCu5M$rD3Q)gBkN6j1Ki<){Kj10_k4jd7-9Rf-+`bP0p^l-&{uOuR;e4^GBC& zsO(a0`n-_OF0MemNyS*Hf)tCi{6M|W!Jo6rFz|zvEwk)R&Dw;fEtBn}dTkP^QN~Ln zf7Rk8TQmZ9i0R*(2@b(IW6Y9hBQfA8f+705wz0vKxtRh7y0aoW90nr$T*~fFa^`;e z{T2}bOywOoGM0i|F3yHQ^mt! z;JAQn76I6eQk4OK$2tdU8*|(J66bMv;XbN%Fc_=&U?2r@AO`-#ATk6)SpW2)-f;1{&+U-J0HieK zpNM0okEtAGNREw*X0yo)uEd(W^px`(1&){%S9Rm2rsRcaApwjbkL{2RaGb4UCznf@ z$zevq&jl73a_>J4GBI8TWHzIPeU`B%)d7mdZI-2b|DlByh)%gvixvVRqsOF z1C~oJ3}kZPP$>sNfMp{f!(fa@90Nt3FGXQks@_5=)HJ~~mzPR-XcQR;r1MFbKq|ko zHv>&~2_I8Ycb?HG-OU3zses*xF@C zq%v@PJPnHzIhd(zz)GnIlap5}b8`y~wJ!0)Z^tqKopbip$;sxC6UU!_@WBU*&p!KX zo&rDFU7PIRFhFlMb2q*T$TCRk1Rwx#8+S|f0KlET_4V~Pago}XpP$bfF^lr1zPT8U zfkV>xPdqtr?ePEZnKQ3`b{qQf7ET=A z2Sa^nTuAFYkjGZt*(Umi3x9*?`Z5dh$ZI|6Bp@G;gUF>QI`g0&THhQ?x8Qkde5+0|-67)awd zr?b`;SA)*M2qM8N8vLUzUYT?T!Os9Y;;Cc6lo$9d-_;unD1-PfgGqlhGMIb;SPSF1 zEzjY{fNaV5yIs2dF60leQmVtu;u`G1n)^V)=3G?@kF$M0T1#egCq0LrG$1@tP<hh|*jRPLJ7+SM4Gq3GG zaNuVTA3prg&z?Oygdl*19I+ViR(SUlfEXDWaf-#FSXo)=1*skYcxw)3iWv2J?RBhW z{Ul!h_jt(?3r+)pZkC}p3mPI>zfjmbv$C?R-c&~mGmAj2Yw!HYZs`C0M~;mgK7IGE zeEkc5d@$~KGM^OUz;FhRjQ2yz!t9yGy$Xlb*-bs~UGQKP2V$53$4G-m)G98BJ_ceE z0`hoW;=e895`fF6rBuE=1r8{~=Rr)+U;&{K_UW1}wQ_r`!qT($)gae^`qysqJXIbS z>tY??%3>MjHX6`$hLK@Nu~QvqhTwARpf8jFko)=rhd-TJMi$`ctn=+k0Q5OC*$m|K zd0qeXHINMH|95i^BO>k(Q5x97-xSXQ*2B0}SC>-MfE+f-VJco%m}T40peUr+!USm5 zc`^@6m?>Ua*norMV~|Ub36RY~KTAX`sx-p0w7s)ysrJlT!)FbUg<#dD*Cj(Cw+4Q_ z!48EGnP6xPp>+L$4T!A3>_2_assDXrZS@Bc0IZpF@pecGB0qxAiHkgc?tBeF?!WEp?;pej=YJ-RAW`WN0P z4hc-t`>?)G?M#E1!BcNFjc(-uJD#@v;odfjDb8k-#C}bsl9s9tO9OhiU5aY4B$Q(z zm7-JmqAg#kb&Q@T{m?y4a820`F2c+lH$g!=(1m^Zf(OYID-Bp&EkL2##1D|*&&Xv3 z-;V^7ur@EXM}7O6+c6vMa2zRs0POQX^=@-Jffk~U-|a#sDg71|H;-bX85p2SVd+d- zP2P)4$80+fBfp2-IxnEhoC&@iY5R&RVF7>db*k4h)nX}QFCin^kQQVf06iK7&11ST zlW*|oV%46ij!%y*r48G~7ojGu*__;aEIL%lg4AYFbPSR>7L>arnGA6^P@EY7C1!OY zlZ?SYJ_FfQLegu@PEX%8Iy$zWN+zuXgxbdOP)h`}gTGFo;L7Lu%KS2la z{FyUnj?%w9&)+idI@;g5%LSd|`O?xNGJx{`kAdMIjE;^w_uY42d1hwjXDXHI+41r5 z7^2*ng@t+9_B@?vzWrIi%JO{O$;7J(fwlTt0mk-@z}@=?ASX*8kgkl`ragi_qOJCk zP#y7>ud<+~P8_5eeJj*>SE=jb%HBow(1RWY>QWA`l}48SWtazWO_5)*2a>%SLM!56 z2N9^iOs*l4Fu%GC)2mpAwX-}=zV0?S7}ycrfS&BH+zBK^vUQ~aXs_`{vl+yVukizX&b@qVw$)SeL>I7EA-Pq*m<9C?6{#89=9uM=$*C z?BFJBjsH3l%6-YLM@< zxI=|?JksjC_hrP&0Zhq4l_7%80gXUH01$qH;J6FC4I(dSj#FLMFl8fS7)76pd^E@; zD4UE!9GNx`k?zvM!XZ5OL7#><4G#^C7fYo?qfv*A_02|Kf8UXb zy?cJ8Uat-z6mB30NMl`ol)Go}WN9{=(yUKrz3T=vqTk0%NTs!vMn>ynLpB>t5s$?h zxCZ|m?uR!ZEIahJ9sqbtf*wa$%D}OvbqT5Yt7p%iJ*kkX75D&jLasL=)FBW{CmYoR z>4J6aF+#VKlau@K;Q#HBk1TLA^o)3+nUsk#1eDTQIXyf^rixF`B|h9{DpmB2mHN!W(2S(03%o$ z8BWI`6StsHufy!z_1eb9Ms3$w#tj60P+7jwAo21sIywr+jvw7WGc%jqyKf?Q`t<34 zH8(eRVtIMF5l_qmX87^tmF000+?{xgpJ@4J<>YmvYoOm@%?bVzXvU16U9t}zJUE3w zsmiQKECI7khT|C=a%Xa7h9+S5lqQ(DGnHzRv7rBrn%57_OSZZj#aP-WDP{ z1tlsxxWmasEnHgY)}wbUWYo?Az}%K>$9vg(AmGQgMrXOE+Ane=)fYlt1&PG zY6k#5_m{VJ0E7SlxOce|RWHAzL4XK?f7C9P^#H!wr`@^$Kth}NuY)Fo=Q+e#u(w($ z!P0sXj!pDI&auPnI}*I5HiCi(cntts+p*U1Uy&E&P68P{w*7z;Q;*U56eAqe`U2J& z;PIGGC6NWlKsvbzg=z)n=jYOoJofO>>({1UymaA>o9YJ8YgbFqr}orOeB$GKN~Pl9 zmC0+(d|zMc#K{xCluV}{n3|kyT)#d&M&}FbR`gU$BtoTaIp(tvZ6JJMCSfmJ^ZH)RKlrup+Cg49W;$YUa0u z)1c_!E8l(!%*aT>+kEvm4)bo66U~u3nG7NtmlaQ~|c=lfM z-va<|+h$mRH{Q5(=I*=i`Kt#G9Qf>&D~%JiT9v@F)gJVBqtJ~q2j+TMN(j}^T6rrB zxS*rnCEr{OO9&Q*NIO6b0Y2{I`F#FiEEQytGW-16+S)%vW+0Bt!0h?+=NSw{P8eJ0 zv2{D0MP`vXdE!L>Lk~Uhul~z_`Q5{o-;`-Y0D}ks@@dR!y&9|k9SediCv3zQ9Qb*W zGdzIQ^ndhy+NLao*E?tWTXSZ!Jo_y-nQ8)2@3m?Z7FRI)Z+N`;t2(o(yQ*GnPtR%< zA>R*5w-9lkiv*_@%3t3fy)8;%d(q>h?Tdb=27idcx+vZ6Z)I89%K$t{QI`X@S}?1> zHczVXmG~52bG<S;MI+>U z{D7^}0zwe_IMcHs5PXvTbvB)ZWFjt`t`Jxj9K;ORjt0ry1brR&J@e)i^l_cpkLySM z{`>FyyI8ybG?o;rU--fo2as;J5%gv(M~Qf`{OQv=M2sZO{4f^3WMW02pMt)}9S=T_ z>7{p|iI3fa|8^k2+^)@nSbCXGr{2J;KQVoM`s>I(3jO?E^zQ+Hw{`Ou7Z(5n>o@Pe z|2_XT0)fw7xNz=Rxm@=2_|6+@vD9U^t!6Tyl*6Pk=u}=%C$!*>H|7Qcr#a8U&o)9O z0KDxpc+&o_uUqrSXaLK)vqo`^a^&k{%$>~%uR^A#f1wO z2i#^IGNLB?@C%HjEErA*NcmM1>oK&=dgCnkVrrKcPAUEUBj|S`u2RLbZsB z$h>`3iwzk7-)aWSCBJSktgk1 zBnXbm{B;|mB`ClA|7 z;I{r4GK8_ZMb#q%AWN44h)M9mkE}Wj)L+lcJK(8@N{2#oD9D#$xQ|Kz3CJX=k3I&g z%S(;*)z#{o3Hl%U&=VubBp$nb`Eq$+p#P_FjrfaL&#!#_>tD}eP^WIB3OCUEv-`r+c(5=lLttEhNt)7v`^3q0@=!Xs+qT7D);)RP}CS;`ZkzVlc z0f4uEBNR*`y{lKRJh^x8#D9e)fq%2Pxp^Eb{rdIQ z$V&uZp#3y1mCM%h@`}r~ZCgSzZbN?-GZQ+Zq#E?%=`1QBLE9AW0sU#_=0^&vfy7US z%DCv4Yo7)tTdqZ+Mnt?NjUK_`k;7$N_*aWH9u=%K0iLE?^|RSXNY!E4wNSSt(&FrE zV<8c!xV4zijH#8X+`#ff<6qDGa#$Lw*Bkn`G}ONe8E?_`go2QnhpEUQanr zjL>c$Q};1PYNZZV_&lm~X^Udb#zY1>SUN$WyvNl)tg(8wLf-qe(98UL0N@?nh>@ZbZEbDUT3=uL`eTnh_Tz|9 z|GO7oeDM%60Vk+s#q+$dRejrIHEc24Zfn1P2Z@1b!vmb*xpSKldd?izJ)I^f~+sTWbiw2&u;&bqCoMy`F_CpW9Q{BuS z7fl_^C6Axwc1IbC{(|hrfB+3VR3N|w4ztZ-vBIi!nnY)5WJej46SG4%Ii|4;(V#$`KOT?a zH6W{W9w+?McVhG z?SM*uphpXU(#KhPz?Ay_Rsa$#?w&DVlV6j|R#*c^_F^m-hiiUK*k01lB+`fW96a*R z78jQO6afG{M;)3dNe2j*dKX;lhQ|{)2me0Qd1vxn8qz`N|s!45p6l zSg}+lML|~vq#It1f-CT?0KkNpM25q*JjIMS!U}#%>C2YidMjKHK>&S68GLcOD($n93>I)7b9|%gZy{!iT-nmT+XE?aN@WKmU!+QHyPn|mT z3Cyhj&f?-C0fD2`n)gn+_UX?lBGj8S3nbp=;AeDRd+jx9OZ(Z;(b2z6u?4e&e{|x+ zi7y;IdNjSVvhuCxpMSn=$_ob$9Ecq|cI@%j&zEPA_1!TZT zL?_V6E_T16AT3-3eZ9bWEF|^V?>-*v7gIubw{Jp(t`HPxJgHz39VgXl4H*EpwZDIh z&%fVs&{8|CymdB!-!e{^-nWVD8kMTT36Cx3%??M|?!K#RLv*`Y48l>yp`L|+Vmg5g z08J(JEVjX3Sz4U<$X3w7S$IhNTTNxS}_;?}_|Al;C z&YPc~w~^kbwID|HKCfN6U5EI}jx#N88W8Th=b|m2BiOE zffq{xtp3H5OH55oIg^uJNdg1jI`IGZRsS|@75Xt)qHY7L)gjO z>AMXA1mD%zA4~SXCuXDos$)flEr5o8?&JY*0~bRr8^WCc7#Z2HC3P%JZ#%0p#4SBE zyKjET0D%UbQUL(W*MSVUQi&AAJjbe3UEgcE2eFLz_doWD?>V!+w(`*Y{46Q+--qY! zFJMr&u3Why$TY{sT%W{r_*kj;hba@>v>*S?Zl+^E>zvr)7uTE10|Ns;ec{|!zo<%P zbwA>I+6z2A0C0PO0JBQ0udfpaX(8qIIYhC?bGh6vBM`VPO1II#Z?2P?*YsTz7@*rp z`8z#5O=3S%{r=*fJ$nSQ0`>j-_y3Q0GETkm#v3D5%wXe=1vF4Co5?_u`r3U6>fNCM zOJv5nltGpBR_u(RZVH|I0E|hDqC98>km|vw!7H^oW}1zr>h%}Ow1|D-t&qA5_gfnP z@D*raLl;Z5sr@y`pjT!p*N=$*DAl4#aS{rf1z6wMAV;;(=mf;>d?W7Ub0yO980l`I zS`7x`29R*Ij#(h{B|#gX>NV#}1PHXW`nB0HcLoX(t%p=VtX``#;P9Pr#IqEwE{`fm z-a3B<*mg++CoVi3)^kq)!4SHnkrHM_<@n~^`MH2K2goo z0l**C*A8up#%NjWIdFsW4}caL+Unr{Z?T&jy$&hAZDB_k0AMvC{kwpf?%doQ96ETA zrz4sQNN5S%3TDiAz0-LC7LJP0=!b*9)&h{ImX56|0f0z*pX4CncXV3p^taRF%<<00 ztv*aB@YEX(W`aOEp=orNfkL<7+jsdDx3A9Wri<#$?B+_TP#4YJ5{7U_?+EU~q8oeMgQS z`NP-GzCLT1ir#jM_kC{{yfpz9)TAn;Gm91-%(v-hY&i+d;%pE(E)3*6D2SpSA0L-U z`AY->60-{+a6@zKN&QO;4)rEG78!oHTKpqg>)BGaPtku%YTZiqy!E>Vmay6^#>337 zQE!AMKBh-IYT4T*kVK7VqM1~CHo7$^MefJfCk?>WYgb`&b2Cz&Xq7<-*)3e$@#jb6 zyC^<@#ed~8GXM?lAD1mAK1%fG?_xi1ckzQkGNyY5Gv&Z(E&vEE8jp4;*5x90xW8S_ zDYiZ*swsgE$1#EHcr3=}9;miFKw@86hU06Ejg86!2M);o{(hp=8O^({np#NAftj&j zW|kQ0{hbQ_I^YN2PqUEZFW@8n|Dy;1zW-ft$oBxici_f|o7D2u4RAXz#AZQgrvyz| zfEGt80h~N6U4vhx;nqFpWZSlF+qTWgoLnc{uF05eO-*iclQChkYqIrq?|1)&=Y98Y zuf6u#Yx$^e4UiWjK&!PbU=<_?bdIcAjT+Q7-aVJ+ z-%g9;-7dB!e{dbiFs~Dt*IfVrA&m>Oy#_%qNAWR6Hw|Y8w8OA18s%lbYd?(}{Aj2l zLp;TTd*VpD6Rema{*9%L#BIfc$}4Vm1RAr$2Epjf2dJXV*ziLACMbY)pMDaSzoDPm zZJ724BwPVM+BsmO0)O5+WMCufOaA+DNbJ283tIUx5-|@HV1-H^!2@GW8CJeF^fW3Bs9;;*Gws@h+zUA}8s;=2!wY(MrCzF_xO(gr&ZgDks zL>b+-T~mflRfaW{Ad?enGhER*t();aWhNGYeYTUf}O_ztxTF)Nl$4 zHuBOxYZ>+cAsn=`_wob-=d3j87m4pasUNR{2%2ny?0;S~K`4cI5SrtKXCejD?$AY0 zAzL%z7O&TL0K%IxDG#c%23n6FHnGV{6QCY@MC?XoXh#qR7=0?QO)=(_P<0^iR=ME2 zz#9swKyD#q|G-XoP8gWd-vW)o$}@ktb#hj2*X6sTgRexng72`v{D-##Q+-Vzys_c* zn)yD0bMd}&*XB5wm&;1u0dIT5805`C(|B}!E+)Bgxrfb4DX{oH##+t2-KBVsm*tef4p4&S>GQXKG zz>P&v$#&$-{Bl_n6>`L-YGRKCOns}=WP9vZlf|?Tj6T1-&Ac$>6?UtEdZtu*n6s~K z$og^aMn9>jG&Do90tM4!>F3V&O_Y08kb*3wyE#{;X$t_i&+DhkmvgduwdZR%9_rDM&M>83 zcyx|2Tm2+3IxXf8vyD`5VVwUA{@PMr<%RjXzV46CVlwyglpvfUmn6|5!opsuDO#_w z!T*nTbygkQuMZ@t~st4)Gvsi*2Jvtu7ON5o)qXzNRU7 zak_28+ba^i9cgn0JIsC0-NxxgvMm zn+H%0H9#|KArJgeOX^x&A%}!q2(Y*(dcoh?v}6}cy~YJ(E%np_Z0#GIMe6zUYm^M|&4X0{-&?hC6-l*O|SqCwqH)7pfD#^Av$IV{({|toIrk?XOhH z<5VZfCrR?KwR&LNeTvbq14Yb0YVZ;^=}nkXCSY~p>fD^K$fh#)&($8pmQPi{IBZdy zV#1BVX@1YK^+H{R?xfDS^<{vbZAHGnZsI_?byR>%D6*Cm@M{C< zyWRy1B>)0fVWXB6?5qfh@e;ZXTwOjTc@ts)sEN;TILf=(%~_aeD?Af$LJL{+JK??y zhWffe#cyT=vB)#Z&-^ylB<~lf>cQgTRp46&e=mOHS;d&2W0ifl0%G@x^O^=RR(30N zk#+>BB^0OWObCreX!$eGlm#goVQ_85CF0*Q2GTd^A$lcc}u+)nItFVG`F>ClMqMZD?AV4w$xf{t+WVypL8csvUCbfys_q4u*bc z$OfC2kc5PUEzN(<@?NR*tykJB3Oq%%C0vZ+AN67ULk*86kxhAL!+1MSUgD+D-WhM8DEyrAjU-zcmnk zTyi2fBCc6WIL{c_NCLYYat(je=zL35S|~3sf4^ifc^^MTO`y7P{G5759HbFG_)1wm zz}Cn3j+s?A`uao7Tq`~E!-VJd;P1cGLkLIwrHoQtQ?wUDTAms;L`FNk7*{iY{KcYV4s#W7>!_01;BclMj>ZE)5 zR6BA*%N2&l{?G+57>G9Nhs5e^f)$qQ`lMYka=b}$uajVtBpvEHlYj}G6{niiD|7G_ z3MzAFL37_9ga57{Jed(g(C*eqma+Ua6{#+SYSw6k_75D@kv^NmEN#iM++ zpBWnY0cmUD>K_N<=*#A8Kx%c-`qLL{=#MU>PM7Ebx^3SVM*9nM(&_BaRj9N}@QPKt zd>2qypG%OI*H#-haN9eUp8DyfI`5CXM9-DA(u_mwKP`brKYbe#^x3we37(GD>VIBe zhkNkfEzZuOQNM;o;RYNH=1}{$`k3{;k+hZM8tDprM`31_osGMfp2?xW8=`b&!|~3o zteg{W_m3ie^unWuFUnUcbCc0{#qH?_Lhso9t#AcsO^#!9QJ5jYFF3)x(lLG zF14yd_JIUI&@r;9W7p+@jG9+`ABoLFr?fz!mhX~h#bp?kVGdPc;5@G&E z@_V1w;qsTilDg!Q);ryh{+#A{`1GMclS#xzC8ZD(L4Q?RqJTOLClnY4fO~V_nX-b> zxZB^-6|6+E74_Z%-g3Ba{<$M_Qr) z5*gg+uT!#S9LYTD7LE^@%O8k@!!1QIk+FOXp9vD^HV4gkuO6|4oTF;B$1p!dAfVUS z&%*#_I1o&u+OXV~UTT<$&?k~Axm4-cqIhvu2kL#NhtpyvK_bU8rqf5dqy?q#^|;o- z)Ed;|?e^fnF63lp=e^S(FV;ti^<21uVCaue9xPPHBmj%LUa1L+l}I7a?uBWfhdZ=< z37hASy0P72a@b);wHUq4!(IiB$`)1KWOY>hRcTuz^e;`<8Khiq{&C&aizDicQ%+M_ z)PeB|&4wGF3Pi{jZP8#cg)C+Kf?z&ioi1bl!)%KJz6TYjpOrFoktd&cgu3K*Ze8A` zVM_ANk#t7sJ$w8$BdbM2Zm?`J4ElCZjX~cUHxEyMAPtk?zaTFkpQrEnLGMp^t=_jM zAI^(Q7J$FcuyzFkLEG1#Yv*3ivm-P+d$r9uo{~bI$HzT%%q7@L`I& zk()>pv(C|TFItBb!fP$@;|w~ZRpc-B&cX}nq!x`{K`U`Y03#Y==2eRV2@u@luN{9c zCBMmy;LxX=^#kZA^yYXVCeT_WRjXT4>+p?i+jHK`tZ!-ffcoe43B%>o_Z~O}hKYVf zh(T10ttJP1onGVi34>9-D)SxQ(L&a_mKd!i`G+dZr%C0=}T)YU?zhRdh^Ey&)2_*VQ@!>Z6*96^jTo z-L$Kih9ZObj)npyhoNLb10w4H<(>jczh}v2nzZcErf5+0VG3z2Gr!{^Tc#v6u&$W4 zm7d(Fzu>OCz81=FdpRB6cpb?(w;SD&cc1tB`z|SXzb+TaId>H3XzOg-s|drX1iTnD zG<4S3$>_5%Gb&u%U}v>)T~7SVGzdYGvKgut#3l>`Se1F8Wn3HT%DCKIPp}OBSvE!p z5n1b*lQl*PDQ?Cn4lW4p<4y&%H^XFzVIxkKZlNUfcEJREfth0~W9P6Uh3hOGdPdKk zQ0$+KW-`_KiWHJJ6gjIL<|Hcq%PjRzZ0$(zJqsyxR00%7bD?(iH7gZ-DV}9ppDwdZ z1dHRtA1V)>Yneov>IqM?q4>FPndL2H5ciS7xjE!^^I0BpV1NjRMB4m!6@!O$_i5){ z*GmC>TJP@5+0QBNmKxKBspqcNrr!MW^@k$$&DbZI`4%W#FrSU2T@|2xCts61ru--H z`_rZKO{VFK$v8c?%Ph49=`KUviY!9|kCx{JtIG?K<|XQJYl8JnajO0g1R{E?E_HnV z*ER2o$W)|3z-|+1150j%B76TWi&01I_&gOXoxUK@UnoP{X;*sri=fLyi`1Z~H$4M2 zYawKjHfvINh=5Rj1f@}D0)yUc`N=V+dDwdMn3^@SS%skn(GnohR~NN zr^uvp!Qx^C5F#(KN6t9Mpf5twUfeY?LtX*hp>WtOO7)ybAx*8-($9{<*!ZUNK5`{x z$M=TZBNib@s;Q)Z)5vD9<3srl*Xkr%n#oKFICDRBEIMQqKm|ajSvSQMnFfjgb1RO z{!JFW@cOyoPfT1F3TOE3S3LRww#{can@Jdsu{Ur6p8?T-a%I_+Ht}m6$Hza+tu-4) z$n0(wuf^qmr+Qd$f57jW(9+jmWYHl)t(bDVq`tA*!k4UuyZjDs5Xjpz2(`(@`B=JN zqRryk=Cth9Z@xl>g}n27CFDFBiAke@1=NtKPM+a~YU)qFKfIy-jQR(Bm!1s%s((Qq zbT^U#5{or8MgnTlC#PkpE}#(cr%mqP1aW!>oO}!g+zoR~3*LPCXAbv?KME0SeTob- z!C=#0n02Rr4yR4NC5&K*#KXLN1S6PYsf6`*{ZM=sLL{Asj1P+@5*;}Awx46#rsE6sq_T4GT{fvA?WN!&vlWPH#$)t zV}^TgJR|fmzP64w9_w7dY!2&UC>-Ju0QD>}VK94WX|*S;mKb?P%zsQ=JhL=_c(gDpp9_^lt`A0NH#Y;BJw z4u2QC&{W%3vspsc_1v%8>)g6Ku*N5SMwLSVE~FXzPAQszEWNMel*Zo?5K&O3w;ew~ zbOH~-FT{_L3=<3_IoWxYO9XduQMVqmA8Amu?X$2tD6gzETT9{PTnKEO-rp6Y?e@jz z*IzIC#BokPDml+KyHL2<9!&~z;IYZLQ2G!+B1{KzhAWLt-ywAhp)*;p8y9YyOwAG) z-O9_DK8I@bqrrWyGf)(xwmOPOa;=j+x%kE>h^BW&p_|2TrBf#niclGUymp22i@er_ z$&YNc!;>VRX0p+QCUx1B`4yNpsGAZ1smYBy_`;}l!3lrLJzQ)wgqJ66E6$t9kWpt& zSTlMdh5Ab;F)z0uQsg~#`g2{*E_gMB;o`E>m!U42B{7bihgG--T*(px&UW_g784ecyQPmm#K>ks*wh$xw4-X3*>hmb@ah{I*DP3KJg-L+|p z$e^~i#c^y`Mq7Q6(&NEhV{y#UN3vMymzld3W2rm_k9V~%Rv;h%=`4mORkePZGNPJD*-`|HhJUBSnm;a$+CxyzAksq_bnH7n-E&Bl{(nR|QpEgS| zwkb5h{b8z@x(FgmHNo+d7iI(*>KpDgwpN9Y-ul{~;Kykc);{}%{xzMQ%lTDn#xCwI zU978cP=ix=52mLG4P0nVI??IACR^((7QqAIOI61vY4>GTSRkG}(6tqEafb|z zVMBj)ILabuEQ>X_O}~f*JtCj0B=_OXd}wcFiZVj7eCzpF$E^=>T(EIo&DRc>O2_Yw2&|2zU1xVQwwzykUztdGq4lB2_>K2BT4|@%y zS>N)FqmZ)}6;K>`R(14HrjE@G4TZ((1-f~7?A^uUFu#3hXX>1?GA_xdU;CH`SsxyT zP{|_{RI;p|TD^V_N<^*4+oHw|e|N%XZW!u&eBtU%$Xm}oO)3-XY8WYYbEkyfA9s6y z_Vfh$y1F*T(28hh-ZAE7E!EXcTPvW83l6`wTD}&QBgK7 zYT&5VbH)h;`Jf)|NUW`N?YFL_^^-%bw3GXQ4hCXCWt?+bb?)=otzb^($7FjxkP)YU zKtjRg^++uXcN2n*2HRidz1qGv1NpK4CAY1CNOr?^21SN4(ieLFWO?sx^4xYfllVhO zNC1MR_nQ6T3B!FBv+hIuS8#8_pO2n{sw}OI>Q6?z zV*>%J2bLC6+NGqLk;k6}86;?nP9VF*1o>+atN^=!Jb8s5s8ZWeMUM4J`++Mu`7kGm)A+t53|P##LFz|>(8 z-)XyF-*}JoqbswBQyIasMlwkeP@?96B6%LT^L1E=O;74@);5Qxj#hXlFI`C!`xHA) zn3GKDnDckaK{Dqc1%?Mb*I-hnR89soYBNDb+w)Ot_Pe4h*O!4OgbAI${x=_;5omwi zyZz4#0~>xcdJ@Ir=yv+4Ffovi-6V_QB2&LY!}XcQX5a<%UvVin-|LEP6uwBy$k2U8 z*VXJW=pK7bf8%R*`BcGw@Mwo|cnAN`b+o!7C(a;mWgTZlOGEUXF-WK1#em#(tz5peIQ%J!(>^obgULQSAtP3_Dv-4qB^%PulC^pSuJw|ZBHAgJ94ee#II zVX@NJiB$F9kyU|FWSWk7LvToNKskk0bjHAa+`OV`!U*!V+Oi+VUn5_R?d?xpo{}dn z_jVHp^%Nl^#wAYpd|g!nKZbk?g}-CU8~_gZO4rN%(K+|3Qw3QrJFcfKo02@6Uipax zO?cY5ecZO=8FVh!0}znyU|#jZ9AsZ)C_q+`CY1HG}8h|6k@O@j>P*;(ro(kYxKSN z9QE2O(U8U0FMs6>#b>UHX;9^5C^Awp=6`pt9)(7i z;kvU+XB6o`ZIGLneXOjgXs!HBcfH&9ZneNjztan5xx8@x#IW|CPO#I}7aTIZ?Z%SS zP{$+yVjCllC{(VJ~zI`G|{XVRVh&t&>yYwKpBi%HR6Thju^gSk(R_Z?c;85g28 z5o2}u3j6m(PbrG#~I#iJCgF>o>MFMpP37YA8%pDROwXt>87!c(1_jDnK{qcoPsb7+TFFiJs3GZx=Y-jL!|eI&Jd8#*DmtdFygJU3wr?HP0S?E7j=!g=jc;0K8`WZe=Y7Vr_&ofZEBJV| z5qU89eA|}J&VOEAd1dkOQ>f05x9z^m<*GSPz5n~Bei?|DQZ~#@(j{m+=XE}W$>0wp zzk8FBEmIOgLQdkK*DI3YwtkaO5dcypyJ(uI=}aFN3+~9TPIE;c%xYe2H!^FduKD3A z@5s=&+Apsw3@zlN#Ay}Cl3%;XbOOlpGefg}k-%i8p{kamkZJ%?=7a_%$pJEU5R%hu zigwA$q&x8Ir~|BYZU!sRS;2pf=|=0@whLz=88Ww%MT_A4sy^z4BdJ;(V>F*#QD=v? zW)9h6tK~rCw8W%yvZjwFf3_syaElPg$RRCn&6`cSiJ1O|q~8eUw~-Qg@-uTn1fKqO zl(sYWIoIm&{wGKSoS&a(<={f17#w7ja18122BV3qOHkIsVBJdCa_4??ad2`TxPBH2 ztY1vW%0H!{41wr={}zUy-RGnl8FkDOu5E>wc>9o;GAZ#u@Z-zTCbX;=ag&S#Okvb{ z-k&R1ToU@wzOSOV9frqUVb4iC;Ib5He2f-8(^a);<32UV)ORLu3$p05&w()4F3TL8 z7^NIiq-D59vE;$au^f&NH@-DHHx1`P+x+!#$BW~(r{VsTXg>N7UUE}#^eXbe$Iien z1UyCb_vg&s=f$8H7Bz8Rky338?biw2<1XD}31>F*s@J_$&XxbPWWS44;8FKc3T%I? z{j#m_WyTYaw#^4DMzD$o>UYuL*yiwby_;QEqLXyWP9GySgk|@gH@orzRAb zGmVCL#vGlUEwprY!+9mN2(|Gr{n;1n+tM}Lal#s#b!jzrz2&rfWtmqyo9WT#DyaWW z*gp1}G^k)e%y$B>2Jq1~iXkPKY8Vk545Ft&ldsde<05?AVV5q*$f$GB8xT6zcXI%Q z=wCd+(yYSAPPgP=*TMH z!~?wee;W`GT#6TgnZBv%X61%zd{_R=o7%f#t@*7`mU4ipi*|w zm0H%NaJJFg+>TW1gs^&IxN{*^%t`&oFcl;v3W>ymfi6mrsuqB88Smk-!f{}e;NG-J zvPnW+E@M7dkX#UVZexY(M==+Mw;>&)mqoxN!KNVe(dLALCj=cUm7O-(6bD)T9OjfH zgZDwBl58xakS#3ZHyyt>F=l)^EUSf*$PwStbo=$%n~XnfnJQ1xgLpR3i5s63bpL~N z#p;JHEqo3>J^=xO$~RuMp~KhJ-Y1@qd*|J&@p-Oz*}vAF^{c}Kw+04?s8&n)|Et~? z8ai1r$Rt|1&--|zpGol?Q!*n|wJC91-wFUG+?hm8>P{fNSf1Ar7hxi4KF>QH-`&NkkfaS%j_A85I& z*6>8rS_%pXITiG|CI#lCBIUiopX=_Ll=2=Ebw)KxkM-SBF`<*tbk%R| z+5`~b(JNcSrL{;53OsLfG88`sPeor;`Pw)zj3lfF8>~eNxIT?+WhMP=oMuccfx%l9 zESlCxOQ0EhcVVF`Ag>=so1E?<&Z+1wgjIxj%%#6o&BhW+e0dQzx1t}d8Z$~F+A0V- zGA9_U^(y?!55B9_^4=e3kPqEZ>)vRLrlZA1m_(+z!M!GBl|yUw(9eQZcllmb;B*EI zb`3)Zy*r4fo;on>=;7|@S^~c%U2xSC+3xqM8c03-zI~7YP6nMhD9FJb^Cq$M6l~}1 zCUuq+60{LqnxxdaIKI~4(ONQQJR@B`#xy{wOe*zZ3=%bTJ^pY=Z+Xt5wPccaxms{> z`}X+6S%@(_B=X!o*M{P^6>ysLw>KH>jB6leShklYn$_kjYM1=!eNJHC5dmcBH`=0e z%%aeOMy#1+?4-ef8ON?IuWn@Oul9O03^I{2sP805G{eIa7!0i;EX^tVeB0|DFNII>?I zOCB!lJGOe?4;D@O+6Gv-3~H0;qw5agQ5u74NGDW`0#8f~{Z3c+LqqkCz&4(SFeD@4 zRMnEk9r8s|6Dc`>@5alR?d2yiBgH#lX0AW<(OEGPifyIhrqAE?Dts3~sTsG>Pz^0h zUHCLZs)-Fpx4KZ)!!m{4@xl3+D0%3C+PN}+N8yrngDG{;?Z$aAASKcvDf!?*Lq+g( zd^@B1cjV_dBrgXeidTU(j(;=NsjRHTBnHSZpye_P=zVS;a$(opO$tVh zE%EHjp0LWTlK0|Rc_`WBzY>1A=n#Gn(0jjb5YtrW5I_ zs<*<7SG{KzR~kg5YOZoCgh_yDyAsNU9@lK8?#QvNkStvL+(q{5EO2(d6ICc^EftcG z9U_I!G1T^2dX5shbw~V0+Kf53_22;eGbwT9aV$PPUb{rU-HWGv->t_K>GKA#H9a2x zSmx~f{2|bsVU|C2Ox#>`8wDNQfA2>@mee%8$T+7H*fOe-yS1-lQme*1^TM;jvfkx= zRkZB1(RtTE@`xRMkQ8Ir70RV9)>sxGM2sVy|7LxKO=sl(XV6ml3qUrz;$SggK;E_( zAz7ZVkj6|Fy+M*B-eL{SpJFJ40~;T1@{yH8EyA6q+^oF~c~P0D371nmwkNf0<#8bu zCq`=e1gwt`j0QHgua%80v?0m8AdJy0pHm>`94UGD1TMK%{A}8|G^(z>pLu_9jH<=Q;44J6e zV;@D1Mxlfm>&fu;8te9B3^!h01P6T+i}cG|t}luL5)C?8<_u;)#DpL@-zP`f+@RI0 zUrp@oE%47RF@bCL7A83GzrX+7P~midoli4ka*n%pdWCJP!Fw!A_vK+j{R=KNL}qgv zY?rQS>#7lK1Qc(%+w9p#X<(0RN2Q!BM^WlqPzGv->kQj?kRX{&nS=VAmZvyEpI~{R zJ6adk$+RRZ??z{h8EVCY2RtjEdISfJ_4d*=a6$h?_uOyXZ=5 z6xMtoAI$mXrn{pI!u;Bh?S1mrw6H1&&kpFrAyF@v?;#TX`sj$uytjoo@L@5S1sKgB zZ+4pyZ)KZY$@QHM3;tcy7u1nRg7NVDaDUfgB)Jl60BTAEpo-@F%n}8PyBoKH-(%wE6M7ZK{&l}My4huR&+%VO@xr_k*C_Mp>;5YY*4o)PpjlWz z;BdKtYbzPCBDMlZ4k((WWw}%JK^S7mh}iRC)1WVeOVKn}7nPMwE$5p58;1tZThmQ! zceKVX3tf7*6pp8W$V=wp!SbzhSo6>PdV8N;qvCj^1r#rrM#$R_c=PwlhEsV&=7b&&1=%PQaUX~}N?vc18kK+-p6%UA5Q zX0mVi6N7&m88w?8bz#VJZLD8UuT-UC(q?EA`9Ytvq1F^3BU39dq zFvrOCxA#MMO^EC_*@<5{(Id`-*PX5ND%YC;$e0VUSEX2uBaj|P6LVZ>Xqmz4*Bg~$ zZ&8{jeG`wucAb|;?Slh+!Pm{0E~AL#nhX0J95opS{$Ox4v~GqB%OmMCYh_i5oVi~Z ziERmTFk8tVjrjMZ-BoEe@6X849(6#H>SaH~zy;^~A1R@x1bL;=C8N6fky7=gC9P{I z2Y#^?3G7jnySP^XB*=pn-r*<`q2Je7Hx5AySY;#5M|hth62CmZkxllR?-VN}E~uVJ>;uZM6zsR$Mq(HC$8~=dRph z6V~;l+J!}6kQSG2xd4uph*J{pPGC!;z|oMT*|b?qdi@XkSh{eH~fK>a1&x9&w`A84|U)qAiL%K#Z z1lW<(@zD~ffzZCM8DXWit3xLJ=x!b@wrE8(17H8c3M2w)S2*866jjel$%f+pBX7WkV#v-gob?xMD_> z;-sKkpZ3h33h4i86LdT_+3}ie*ubwOHUWGJ+ft}?0IKdkM*}`DV=EKcg~wM z@eyE?MA>#^>irQoTa>nb?*9-R0;`;{vJOs8oL*jDAO7v9!iTy``=p3_s|R(qp2KDy zHLzk9BItB#a$vHdO23Y`_+$~(qWgKC02{0yc)>N3mRxliC^6LlQ(B-NLA2)*Ym1<2+3<(N&wQ&31`hQc>%X4XLjj>cOF zm+1GP#CMzRy-C`YK!gEhj6@&p>6P6^$^#MN2}A}akN_)as3g0R4zS?_D}@UcbjRjL zgS!>AM_u`fQ%(s+DmHtJFG7=rmy)DniyhXnc&HO$#{Q84<52S!%*$B?LyCMJ>9M7f_#hSo zN$V>c92v%P`%yiHU-o-tpIfvL3rAt!jWdsZ1$vDXi0g21tj(Aq$y^Yr?@8kKLB=T{ zynyfMLPNg=>o$jh#yGK9UOB`S%!nU77a|r35sk$Zn2a^8mL6Xx8~*8o|MPcDwNBLX ztZnl0BIOq#FP=HrM%Ri7_DF2f)&U1nJDFpU%KLf;Ze^oZ+}(%3WVQc}WDOcFwB*SB z81OCUod>9U3R#-*Aldit?Y%o%nY}MIY*C#*i-eo}B$5uw(;XHsk%PhVHR60z8lAZ-NDdwzbFC78G z(26E*|4l^-DIzxCt`unI!;xxW`8%WbYzCNGZ@jd^Jomjv8Y3XL1AGmD*Rs$*;~0HX z6F2L<3c?1Z*nw%+qn5=im8un_V-~TDj}~ml)7NXbuSQt}%zZwB)(99@qi~Y24P_EQ z;UxI@BCtxjh#tPp3O)fZ-;=SYU0{ttW3CtJRHs@unrPLs5Q^Epi{V?ttBNp5*680Lcfkhf6&pWcpmUmG$VY~)d4 z*{!0_hK-v3qzoM7FkfJf(HT|{_gj~`qnHEXcT3`t{QTigE zKFF<#g6`hf{H;e)TJdX6QU=R=Vpze#BpTG#z-y8#Lf5H}r(i)4h5=xsfBb*!+H^ZP-&A};MAfoG2Jj>rryI_Q+|lokz4JZ5GA zRU`i0sW+!rp$S250j63)AQDIx3oIyZ{cd5@_YP>I%+bV`Y<2Xr_EahKF;Rf`J zD^l_Dp+(la!>kQDDj7hg2vSA~rlJtO@ylN{i?AzuX}YM0-|2mc@xXO+2^y*`$%gmW zTS`O0ZUBb_?pYTM>hsH%E^@DQhPY^uzk1~v zE03BI{Qpx{=js_WJlk>;+?k+AeBgk{B8}o2)|AM;3LsC41I+?5Lune*h{*TU=t`kS~bjQM6hgQa6bV}W-!D#)uQLydXLW&JX=n+NJ&g?i_-^;1Lnz; z<`pn2-&?&GREDg%+CmuOU{DEGZ@&O3A$-zgqgD*%ZlmzCJNmytQk+Pnm&?hgH7BP0 zL$fX>SL{}~xOhXy$hNH?>SyY=QwbZQG$j5!f^ZTlT4l@dNs)ssou!ybr5^g#pt*{E z@NIlXe&ak9C$^NExGkbe^!ODF-=c1W zxvmbSM2M@kNYbmmv#nW1GBHB=fzbL8m|+t7?%2re-zUy)lnFwG4ou#ib~O7%yMdj? zK{knGL%Lkse-em;@5JbanWO`F_|9ZJ>6n7TU64rJu6cQ}S}Gy)X~}EJ3#NEJVrNTq z3bDtvJMM;{917ZTeOa*MPF*_bC%wqEP{Yp8Ac{LRA!~q(Y@D!G-~$pGKty; z^ZU08NVUj)%KkXNcZwpUg~x5>V%mnW!qlF$pgAo$DdHW9@;;eUK7~AFb5PPP6}vJ; zh$65!a*_r;AgGK3OlC-cGyBl`XfrAYufzo@xLC-=SYkBEMDZ$vFwKO6F{!g;=Mvxv z)2W^8Q9bnfcq@Hg_p&l9{{F{!B5YwgoxC&o}5VM7YI7hIBni;{jO|ApzQxszhc zB#F>{@Kxsd5qsj*+8u9>`v6K$i375x1G)qD5CN*=_VP=|sguOvF!LD?L6R$b(wGgZ z-9K@dg3Nw-juy`4{>OI(s`PJg7D9n^mIDukGPA5tV}8SL$d#1$4rbF)X6DZ2(r7Q1 zx(_PA{i_`Jk)}sFzgtJ@3q5_(ad@OwjVI7!78vcPinx$)E(@Jzr02^O);Rh@`&vYe zNo1uwHZea3#G!HlSe-Z#=L#s!H6}I^_cwVcu)=C_N^}5dK4xa@GM}9{`+6w2D0hLVZWGYBUCjT>Yx1?fo7U3lVrjxMO2H zu6sX-f~cVYJ?!NenF;db!l4QS5d|ID6jU)ENK01Ttr45s0e7PYLaktR(AHOh$ zl29As+~F7xIO9$?BxL>CiV;F~mK0M%62&i*i>?(jU_>qdG#tL7y1jXQz}SVeA)-{G zVUw7Guis;LDy-`OpmH-YcZ_&o&^Tr}$%mgb&?*;1%gFIIi(Rz^=q6A~{`1R}(k5a)WgJ#`%g_)1zUxi*;1Ov^HQOy|sP^M*(ZMs9@Q@wKa7$kHm#Z5}wjQ8kv(%|E zOXvTrB!W7-TNkmQb3WVNf7K`t-p!x3A)oR#R|tgz5o-US1$c;TtRh`pmVu!aR_)IJ z1NcA(za3tXt)z>ehV3r@G#>ps$Kuy1J9{=mkCP)&t7pUuZ9V zP-HYMeVo#-H~s>Zq5~tt!yI(>s!eD%+u%_EBaHyv^EWSUhsp@Y(a^Ui(!KseLBA(C z=>7a*k8gc1=`I~iV&%P~M%4h)#yw#|rBCW!zD&M0g!dhL>z4#rM7kt2gf#o31R&sK ziT8PE2#+?mRvb1y3c1ac3p;SS;=|(@{2xEJ028GwSZ*Ccw}atO?FDA_Q}DM<@XupQ zhvxn*9to5hk$RBi#r%v0IC^IJn<29stNl^jB4umcD_ieuV4+Y7=(C zJpnS+CkHb#-utxl^W$-~FiI$FJx^cAXR+eX;{x1b|8?p~^Qf5S4Rjhi*eb}w>FG%f z>Zh2Y{^qS!*d(2HAl7ycgBtVC8S?i*&zg%sqYhSr%m+H#v7&#gNe2QO4!Yn+#D40YTwDv)|9#{VK zmagw{g-zDDG~-Xa0TTQnrAH!ShJmlAPsIHbm6W+ptWue5pTv9s=o9>952;ngQvv*C zO)?fH(4VAPl8lBecv65903UB2yZ>dfh@xPdYG`Q4IoR79EJTBCkN^y}Z{emR$@KIL zoO|e!wY9p6y>Jy0Hme@&H(fY2QeqNUmPfhb>QidgH_vwqh-UbOWujrAy!VZQp030! zOQbvjOb|~K{o;kxD7$iOv`lamiG)C=ZFIRU5$I&VVkN+$g$O{PNM+;#Nb~(_*d7Cw zV=HZTa-hSNdVYKa@=u;Y$TDM^u0m2D27R4@)o5Bsi@~ z2+Ea^0v8xVANpK@Ot(&w!CAtQ#J^sf;C{cuq3HrR9K8F+e|hYw(LboF&E@es$*T|T zLq3+;{+0rFhO2oJVrYP62QX8SaC&|U9yvP=r)GvBCmPU2#3>{-M$OyckwpVaV6e|) z;#Mx@@u!36fZ`fhBCWN5+-FSQ*S{^0MwMjG9BNV{Ak=LahVnxb)TRE+F&Pk2i3Fh- zww{VWlmyRm97u2kMB=gd z3272x((x`4h=e?pEcA(72}*!6_)+S6f-6fB`|e!eD+L%H z8bN3_kChts`AN1FVG%NL!Hfcg?Qrj(1d=jR2?ZGyL8A$vL~vwE`7fI52YEFe7FgR19H|CYFafbW+O^e0&+t(nyk zO7`>9`@v`<#2kVs36SP~h@gZ}nz;yz+e!grCKfCmNO<+FyU-=S!;U8k<>95fw{HHq zz1&L9JGUZmYvKw7Cp-wXu3d z7?=9}I$}^lL8LV{BMuZv&9<#nur}j?0(zAW54-r?j}In~NFW|4DKNq6h)KHpy|?A$ z$c9M~;zDH)Oj-bW40G8K&z1Hbj1?qYm@UAgXD8v&Q^PPjnt^<{&uo9`+e$PjvIkbX zgN_5S{VV07I`1-chJ}i3Xix`88dN3EnIxhFJ^zk>Pc!~yr2Gd*O#p=PJ__~Ugs~=) zntup;cdcMPjmN>CT1Ylm|F5mq;NIpQv|NkzHBX&7y1XvFKJSrM(YW_sEZRYbxl z(7W(PPQQme^m~2Tm3fZVdQXMFL?APNNv~}wjsaJdphwBF2;~9I#hY4N|^Bp@1WIN~YyOF){K4AFkgkc}_d@gjN> zFkIp?iZVHphm*4t@W_b~Sezb)iF_BFu!$`J>iN@m%tY@KN;Q(1$=FQxDq0K4J}f?1CrF=_>pbr3+w3u4630Q2GKwRkEZpz+aP)087M9bO{n) z&qs{}gG3t0P;$Q!auQDgNQnIilKcUaKt!)Ejw8z5e~kXv1VXn^G8p&;CQ^2{&XxaY zPQv7H1umbPgN2zfm>bPPAxk8{u2T5(91@&n9f6P&CN1{k2u=V>MQjn|$mAzbJ`#Z{ z!6V3CS}9WLgR}tp!T)J5fPOjv@dQ8^#+nJCRIMNSbOD&*$5`!02BCJ&6uK>9VUn5U zgtXpvVW--_1i-@6OIo%RTL%XRe;!|WH+d}%w!!vxwm}PEu)U*Aw*kUtt5qExpZvcx z>-FIPS6&Mv`Ao%ux#RqW2%G^@E6q{y_AQ++u3{vHjY9 z0WDSujClewHeF573)DEEn(f9EfRyNLJDTqfe62XAUyCQ&8O~SYHD0H~!ZQeu!01o~ zD#N4L0z=QL|C_vDj)Rr>F*E6i{4BrQQF2+18ECgd5joP^1i+|kkM-&H%EWe zMutfg;et*b^Q1Nu@%)$>EyJZ#li2G&fj_5VyqtxMY~kY#2;H`F0pdP7h4yTe<58Q$ zRQ_}$RKe&Aunll(&svbOF}ja{QorAOwGrS5F94IAB()ff*-xkwK9vlBmM)et0w63k z`iIcJh5M?FNz%QwO?c(rKD2#oGIgbxn_JwtcJ0b9uC1=L2L1oR_RVes1YoeeD_f~t zDNWDJJKJmPxDL9^c;DG=LA}w0(NgUFA36RRkA4dxIJS2-THS9N@;%OLkp*59HcdW| zf@CcV`grTdtbgdWY&EjI09u_+Xv3k9U0JBlOta+`{tgES$6|65WWgnde^&*k0E18v z;3Dp|5Dn-+2H$Ut1ZhqT!DMM3CJF#om$u-_K@K{YMEJPCGvP4fD35voUE%fwD3HgF zupMUwn;P1q0A(GMQ``r_@8?1EfaxOtk7oMGr#~+{Fgjd-^OGZRdTtUfOc!Ai6M-yH z(08#d&}A1!He<4IzXnA{V{*jmw-n)z#x(Oq+_!lL6ARi00nhu#4R~7OY=-><<02^z zD=or(l7jfWGeKYUBtiO7qwODxLqbe(TPjrAkSQx*J&~bCQPlaa)esx4Hf&-`t%)dr zFY=to%+AkeyPZa9dvkpc2G##y8zcaO?c1}dP+2OK{qc#(reOP4TLcJ;SL*@Po7nFy zI%@9UjGbxKG_w%LB&xJ(9cZB-TmP+0&Ssk#c9~%A$DqKm!ZzvOdm>~aQku_UCJ#dH z*;}kAS1K0pvvn{KdC+k!Yy*T?jb<@H$T8#G?Rt>2ZLT>m>7c5N(JT@ z7XfZ|VQp&{c6WB5)9rG?VPO&8G(GjWjy2bdTUJAW4U#f4Lg@c7Abm>n%aIXD2>tzj}%$Hy%anF1T(elKt^5R!8q z?OP8*Y_Hf^8w0)r`9h9~f7vXdLp~>Ju|sm~>=*K+fbxqFefHafv;pFZ9}=X$UjB+a z#8XMN2ts9r9N{oB_IBo}50mst?Fxv`Z#28Gv)9CA(+A%U@e<3x=;(NLt5gmWC;VV3 z8f=3E;JY>q>lOFyAb}#Dr<312gs3F+8nx>3^6JvhLm~4ULE9gejw82Pp18ZwfU^^G zz*=U02Xgt0vfHJ8r=x~4#7Ls_4P@Vyx^$E(Q3I_Z<$a)KW7n1>Mb;wXN!$YN@>BaO*#J<|4Kkra z(Lczu1azM^Na}_9sQ86F1i-+I`-N753@9PcNr2MCviO`1w4$RV-{C=@ z`hW1wAi#)XC*tkxCJ}bC*$A4QRS zoexUw4WcnUp`=_j6e_IbcwP+iLn2P6KM(YE!aMxDBMgI5tp)SW<~JGt}EAe3}J*f`^-oumqAKBM)D;Xs}x{zd=#c8MghAhyztjsU1;Mi&?Tf`{(-F| zigh$5G$N1z|C@LTw&O6Po_;4IqcGu!7eUk_zJ-Y%HYZBaelTNlI)T!B2Qv}DN{Q58 z4?Nw+#uf$#Ho;cA^f?%@A?7_o{UMq6U}7{@$-=3*F}QeY4nBN#8ZMuhf|;=)$lJI- zh~OuE1<%ua1-kVjRPa}G{vii$2ZLj|BoJ}Rv&KK6F#z&#B@XFZ>cJy|e@}Ef(hR8g z<-#7vzfd#&)jWS}85|mEVUt9JB2ot=wLhEH3O$z3W}U?BFw|WMuif5(+pCBY30t&X z55Ie{FuyQ6UMZKpw6eUs@4Bv~xGC~&ts6olEH=N1HN?C|QmQhb3yoA^gA3$Xu#r5CH=ks`a=JT`FZU_);MDpw;Ry zRLi)Ch(8Pctskn%2N_UEC!54U-{OBmmPmRLD z>=>Iw74dJ#*4Oi~ebVkQOq0!K)P4@scX4cG<`c5MzsK)S+Ww@nNR>Y+DY9Z>pJ4qU zIq&fXQOCI?LX-%kiGYyu@t3ItD~1N5`?Mu6qfSg%Bz*+Q;z$(aoqQfb{Qle3Jy_q_ z1sbh&a+LH4*=n_|H(r0^2OodzvA=)*;)PGWdF9G&;*sd(p>JiL2=??DB6R}Vr?a!O z#YUqs-05`adKbxc!z9zTO&p7i#QiRCtqFH`cemi#_AORR`@7_jH znl3IA^vR2Va$<6Rb92)l8XCHE`t<3)K^HOJe7uQPtA)X~%Sk|TqYIw?7XOBBa%gxc z?{?k)v0khFdOn{oPEAco&+|8L-M-a5E)medU(llP@TH57mMWG1@rBpkJYC<}8zL7s zOaR#HuhybI_YN-p<50w4=OYZR>~s}0O5Gt8sFEi-+dhMt>2iOc@NTGDSE$HwiP-Q*a6Q+sa-Y)^@6JcY7bU4(d?t61lRCZGtA`>=NXhA_jYXe6@q2 zFrr1E(Fi7!>7Aq#0Qwp>#E^e-tS{;OCp2tsI{p;!wKkC=Qqs;RxE~Wai_B@kXPAF% zGz-(C6Re+vt zAef1gKu?jhJr7pbH(+CX2ahu*kO6rBWQFf}a(Q_f+itawoj-s6?>+tWGk+!s{LNQi zd36`j01CviCz&@{0e|{4XU-Jy$K;;!5NJR0$RmFm1Nt9dTU%@4dSPKA5RIfd8dWM3 zicqNx$?@@VXJKLC;PuyE`!DX@yLT1;UBHCE#R6h&b92KiRrFm321VZq1?6BDyw4Ai z4zzUfRw@;E?9oT(Zr!>~2X5iSi4%YO?wz|+yL-E~<=C?+;gO!e)|=7mE0u4!pwx5O z+%8rE;=+Xs4kix2j0?0#jhFfOE|0q*vI(hxOw;#k3eWkUN*2%u76bh*PCr<;H}#YI7pC^8>_n+ z0~j^|!hX2pX^&Xd$IXDL+VS-;A&{9oR9h}=*W0jNYr;mgfeFDLZ0$zc#zY)fHfB`)k%5J;9_br1%2@I6mea`3%RpM(#cnZzLHLDp}m z;E(-WV!cxj*(4(-37|f*rQ5)k<^*s8U>3oH00-pEDJ#f9DvBv*0DoXApvRW{jikl5}#dKf5{Jbz{k z=+e$GQ8IK22)SpV;Yrx5H(|fghV|VhY#(%>)1miiL95+i%VL6xX@3ek%dHg>lVQms z3jB0l2o-oi+uJ5@LSxfH2TAJ8Sa!(!*w+5~HVN)vfF7k$$Z`&={W45o;2$3@!dR&Q zLs+2~2oa%)3E}{FE+Yg&lMfl?2R+3h)TkWA9r|e`pM63U@Sx_gEx?-o*kYk^KPCSh zvVvkVxlJZ<51Ih<2D;-=fc{B=svoReSwKF z?sM19K?_lmZ`?Y7-~IY+xO;#}QL(}ZQmftOs+=4+eb<%EW|RCl1SaqB_!CcjdUJi_ zPkr`xe&?>at|<$k=RWt`bN?y+-G6oG&K-AUWn~PJf{KCqX@B9d4GA4QDqu5O6NEZZ zR1^X_A1E21+t}FH&c%xtuOo`^pEnxy<+Zidjdr_DXoMJ`0fPi!uzhpE-zpW0;lljF z<+-`Jzk^x!C4~G(3F7y$!lp=^aWc}zhNC0HP{Mz!$%Cp_jQyGY-YIVsKG5%)z zxcCP!f>rwm&P~7%J#iK$%2~*JReTmzzimtaa?B<_gaA;r0ZQLpkpk6J++hSDCI~75 zVLBNwIsm=3d_wh;m7BBV{oNT=hnIgsiK zD9(dV#5YUJ(=c4`@$Zf?P2zEShjY@mnwKSF(Ig7AfW_+(1v=m0kuYxXU5z3 zUiFrb2?4ne0&5hwftH=s9EMN}GFW;a65?X%q>CZy(Bjd$BKGl%CG5Ln+o)W|wnM%E z6Bv+ZD_MLjhmYkTPXV8%JlMI$S3?u{**)9`eh|i<`o?Eb%kxG7JTV4GWJjX(XUWa4 zSb#z?2TsP)#8EZhZ^?99#vH>3;sPXEFuj4l_ci(lf6*g+)IR|TS{(b9jWZX9acVp5_s3U&az_)_2xv3ZRNhGc@T zV92k2>eQ(}TWi#R1FHw`+?lhF;M4!%%IeAoaAA>w60H%obhr{$qHS17BBYrm$PoLy z7p4pFqt849r)Nf?_xgdiE2Y(BpZdxLG69AzT0KVyy)g%Ds`%&<+bWn~G11qlX zjfHSOtK5Fc(%~ea-(zNyK`R^TS^GfGaI+QyR!2St0rGBdwLL}zI+zIfOw>#Az*s*} z5y6->K|wjPhhujRPBr8*syLD+$V{$4izZL)*>D^sgI|i7RAEC;#Ym&`!kc16YH{$??t4IV<&QtZiShBvZrA-agwme%e9tJuTk*k5=$iL=o!&*R-+ksJ5V7vA zg4cl|OQW1>J^SplUq?jXQ@EITSXunT_4V~<5iuYH0^HCSwCFpUfp2E(LxPWKalndY zZpeX;KXMu#JGTInRttj|&4oAE6^_Q~lovqUhOmueprZr6fM~H(H{Bjc=-($>9(tNh z6Ux*cN+vAL0sE!~d*XKxhLU9PW>+AV&YB1S5~V zezNi{W51sg(S!;?6ogc|6C4WM$=}5>^3X!|5BU8Of#VYZ5s~^-LT3VcY;UZ_7vsbv z(8;>w769mdpj997{yM1~R?4u^b>K@cy$)Z!wgLNXvOpM7*NNYa&SO3niO;U!{17Yt zBAs-vU~BI8J@n8+muj`zzkKn<7fTqRLn8Q@^Th;xp0vQi$o?_13j(L`;5rf>VR-z1{{o0Pn-#k8oNzGd2APUbKH7FW?WtVYQZb zbu+<(Eod!U>y`&<_T0AV^T5vD?w`f`KZ~u1|M~9SyWfKsv!b$L6VuF)TRmBYjI948 z3-%1>9GDm#g5f;ASAcML=rUpeBH4paE652ew*D1Dr0jr=|9@{VKOEH4Ho)oUC!v1P z$5vSOd2TwGByy*i^)IxSfTe@CZM+05tgIa-*#({sARI)3$gqbI1k2W51h$?%6p@~M zpxxy}L?zch8CKV2B`xs!ckY{0Y9Q5(X_`U_EC6a`+Fw<(&WEr_b2B4la{|m4mi%Ggnn-Pm~jORoGiHb z_`RJbymfaC)~j7iu5F@1a$Bu8@kvf@=yP2V?2k$LEJE=YPo6wU(>p(meShW>ndec^ z=L9_rQ`P@FtrhjPX21mttNtt^4<}EYIPt`#iw}QeV{>Dt)9J{8b@BUW8;k+Izk)yg z4DpJ&gq8n4Sl?KG7GX8IpoQ#JAbFSH8^=TuKH4J=RDnh_=Je*PesgTqaPz<9%8Dcb0;56j+S{VgOOS zpVB%?BS9jO`fcgsJP!f@o=6(K=$TO(u&{3(WWB z*48G${vZ9&GavrTc;Am7b0H44Z^Je~0NzI%5osQO^sy(ghxV(>E6X3$*}R4Qc=2As zW(oqjhWxeuEJM#mc2>p^baEsuIhqzJ)X7*4 zFig&@Cz$K%wNxb^DFX6y)WKCrNf;RynV@KA35$1Dwj>_-#6pe&*RZD@$3w&8B6|IGZh1W($NB=hV6o2vNt()K9ZnbG#$f8A` z`-hQUyXt{U5v$6`XyI^_G9Z(L0+<{wusv=8Jgor`CW5sJa#m{TiA{U^O8@H4usCMj ziWj)Js!vyZ#|Mu7i9`?uW|=mcO{(sy&#x^7M5xB>_;crNaJc%l*v6J-+?nfO%wT-Q zmRC@GsOxQAyVH0d`{LWoI5&v^v(M>1P<#MFO6aD3xA`YOU#gCh1WP9c<~6K1p#T-^ zRRh8NRL?g`cF~cRG3p?r)G{XWnC{d>gxgSxSU-RgJv@KtKVKiS zmMp^EwS9Qw?k?;$eDExqkjW}{!_YshP}%cc=|&{VP*?KUK9my^6Fefgy1ELurlh{!c{s~c?x!JkL@Iw6) zjb>vOgDcJT69gYs=kM8PFbhZ=Mr9#iu<-M|F*!N;(-i0tQv9iEwK|3UYtkPOh9jU_ z0Q&Pqf!w^P@%2}l1hg;-{653DrcDeNVc5~r0+37q68(KhA^`HxEPmwrCJq_-rIMMq zl?=%TM-&W%YanTn2>#57=Sc=D&5npjb?So?tedeY_>(-dLIa2pM~DEq#j7z!sct$@ zTH2;qMzaygZy#r0GVwDCJYcMB<9{pbS(zZXB?|AzomRxZ>qJ2&cD|X;ur1RH3LuMt zKcBOqR3yy+s`~MUNdU%ut>2(YtQs~qd0hA|k1g!B9kx2U-}2wHolTwfzoUzq1OrH|x;!@F?3EevAy2ggL&w?vCa&5|PhL zN8o#sWi^cplj`Tiix+un;NHD^4D`VDV{!g!Otbb*Ac=+$Fudjc!)oKO!S!`NFINLW^r)GT&^*Vry``5>_f(Vrvygt|{sP|k=t_gbLgGl&f3S~Yo$$?K# zPs2kGJp{YEJFvgMr>`Gz$Qt|IN&tF)S5qY!(d~4xBM_W8b?QucdF9?eC$EqJ3NT0j zzH2uT#a|&y#nP{=tgie}tJ4lJW45IkyR!5gG(5-!8drd#&+X9jwA&i>qj^*txMGo~ zPoE)j-+y^`Y3bjbJbCsbw{G72k8Ab%Bs~wWV6Ml=93(W0v59CA=x^Nol8d!uKVJd~ zEL^0D7$hb~$4JEtEFN!4mhUi=O09jc%%r8;;=t_a?#d-HsZT$D3um*p1;pzuwu?IX)f#7+$PA_>br-W zv?-WfF$e=j4OpB=GYTbyQ4iao4^kS%zc7l3yk`{vCMt!TgTdc{GWPaql&_G_aV6^5u_gs6$_Xt;3<){il+k{#IbG6EA-R76QbsH2R568`^?>~_TFKcO@YAl)j75CDjH6-hn@rp;KTTN?dP`+~lYXBDA} zm%t0x*Wkul1L~p8#Mw}LK-+YT!60oh<)amKcRJxKKd9e zE}nw*wGC_y)D^0jG&YbD1bp*z;jtBWe2cjgT679OPpj1w)r0-c{KEXJ+uJ*9Qe}IC z?c1~srU1T;n^XxH&C7n^-txVR#NGu~gpJv_$={C+{zB(+45N^`H zKK;IuS?5NZAGn8}936~*R}0?#nk)U7RrN^pvVr7AT$p~&;RRohWWR-Q5xlw z2PE#lA|+2DvHbBK+;43tz+0O;aCNH*o3vjtf>8o;jC4RHV>~55dKrBE8SaT29Z#jc zsnh{Ib_NtI{6vb1cbD$KtFONfzyHVn5Vi$6@H?ORG_0;Jn>j_TCK5(uMu60yMDLD1 z_BuIgrK9TtlN8JM-JsoRKZ}LL&tUNXhQ0&?7;N8`ZGZrL8#e8*XJdaZIDh{9)3~tz zU4+*^pq0A5xrV<;U!95(}}F>P-VgqW)3~&2VtTsxgy=VGL{|*-%5wQdgY7YIhu7^$a

%-GB?$Yd4ikYs*ItWj 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 V2atbbW{Us-002ovPDHLkV1g(1l7#>O literal 0 HcmV?d00001 diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs new file mode 100644 index 00000000..b243826f --- /dev/null +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -0,0 +1,556 @@ +#![cfg_attr(all(not(debug_assertions), target_os = "windows"), windows_subsystem = "windows")] + +use anyhow::Context as _; +use ironrdp_session::image::DecodedImage; +use ironrdp::codecs::rfx::image_processing::PixelFormat; +use bytes::BytesMut; +use core::future::Future; +use ironrdp::input::fast_path::FastPathInput; +use ironrdp_session::{ErasedWriter, FramedReader}; +use ironrdp_session::ConnectionSequenceResult; +use ironrdp_session::InputConfig; +use ironrdp::Rectangle; +use ironrdp_session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; +use serde::Serialize; +use sspi::AuthIdentity; +use std::collections::HashMap; +use std::io; +use std::net::SocketAddr; +use std::str::FromStr; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::Mutex; +use tauri::{Manager as _, State}; +use tokio::io::AsyncWriteExt as _; +use tokio::net::{TcpListener, TcpStream}; +use tokio::sync::mpsc; +use tokio_util::compat::TokioAsyncReadCompatExt as _; +use x509_parser::prelude::{FromDer as _, X509Certificate}; + +const DEFAULT_WIDTH: u16 = 1280; +const DEFAULT_HEIGHT: u16 = 720; +const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; +const USER_CHANNEL_NAME: &str = "USER"; + +type TlsStream = tokio_util::compat::Compat>; + +fn main() { + tauri::Builder::default() + .invoke_handler(tauri::generate_handler![ + close_splashscreen, + init, + connect, + update_mouse + ]) + .setup(|app| { + if let Some(splashscreen) = app.get_window("splashscreen") { + splashscreen.set_always_on_top(false).unwrap(); + } + app.manage(SessionManager::new()); + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} + +#[derive(Clone, Serialize)] +struct DesktopSize { + width: u16, + height: u16, +} + +#[derive(Clone, Serialize)] +struct ResizeEvent { + session_id: usize, + desktop_size: DesktopSize, +} + +#[derive(Clone, Serialize)] +struct NewSessionInfo { + session_id: usize, + websocket_port: u16, + initial_desktop_size: DesktopSize, +} + +struct SessionManager { + next_session_id: AtomicUsize, + sessions: Mutex>, +} + +enum ButtonState { + Unchanged, + Pressed, + Released, +} + +impl SessionManager { + fn new() -> Self { + Self { + next_session_id: AtomicUsize::new(0), + sessions: Mutex::new(HashMap::new()), + } + } + + fn send_message(&self, session_id: usize, msg: SessionMessage) -> anyhow::Result<()> { + let sessions = self.sessions.lock().unwrap(); + let session = sessions.get(&session_id).context("session not found")?; + session.msg_tx.send(msg).ok().context("couldn’t send session message")?; + Ok(()) + } + + /// Returns previous state + fn toggle_down(&self, session_id: usize, currently_down: bool) -> anyhow::Result { + let mut sessions = self.sessions.lock().unwrap(); + let mut session = sessions.get_mut(&session_id).context("session not found")?; + + match (currently_down, session.was_down) { + (true, false) => { + session.was_down = true; + Ok(ButtonState::Pressed) + } + (false, true) => { + session.was_down = false; + Ok(ButtonState::Released) + } + _ => Ok(ButtonState::Unchanged), + } + } + + fn register_session(&self, session: Session) -> usize { + let session_id = self.next_session_id.fetch_add(1, Ordering::SeqCst); + self.sessions.lock().unwrap().insert(session_id, session); + session_id + } +} + +type MessageSender = mpsc::UnboundedSender; + +type MessageReceiver = mpsc::UnboundedReceiver; + +struct Session { + msg_tx: MessageSender, + was_down: bool, +} + +impl Session { + fn new() -> (Self, MessageReceiver) { + let (tx, rx) = mpsc::unbounded_channel(); + let session = Self { + msg_tx: tx, + was_down: false, + }; + (session, rx) + } +} + +enum SessionMessage { + Inputs(FastPathInput), + ResponseFrame(BytesMut), +} + +#[tauri::command] +fn init() { + // do nothing for now +} + +#[tauri::command] +async fn close_splashscreen(window: tauri::Window) { + if let Some(splashscreen) = window.get_window("splashscreen") { + splashscreen.close().unwrap(); + window.get_window("main").unwrap().show().unwrap(); + } +} + +#[tauri::command] +#[allow(non_snake_case)] +async fn update_mouse( + sessionId: usize, + mouseX: u16, + mouseY: u16, + leftClick: bool, + session_manager: State<'_, SessionManager>, +) -> Result<(), String> { + use ironrdp::input::fast_path::FastPathInputEvent; + use ironrdp::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; + use ironrdp::input::MousePdu; + + let session_id = sessionId; + let mouse_x = mouseX; + let mouse_y = mouseY; + let left_click = leftClick; + + let mut inputs = vec![]; + + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + + let button_state = session_manager + .toggle_down(session_id, left_click) + .map_err(|e| e.to_string())?; + + match button_state { + ButtonState::Pressed => { + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + } + ButtonState::Released => { + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + } + ButtonState::Unchanged => {} + } + + let fastpath_input = FastPathInput(inputs); + + session_manager + .send_message(session_id, SessionMessage::Inputs(fastpath_input)) + .unwrap(); + + Ok(()) +} + +#[tauri::command] +async fn connect( + username: String, + password: String, + address: String, + session_manager: State<'_, SessionManager>, +) -> Result { + let input_config = build_input_config(username, password, None); + + let address = SocketAddr::from_str(&address).unwrap(); + + println!("Connect to RDP host"); + + let tcp_stream = TcpStream::connect(&address) + .await + .map_err(RdpError::ConnectionError) + .map_err(|e| e.to_string())?; + + let (connection_sequence_result, rdp_reader, rdp_writer) = + process_connection_sequence(tcp_stream.compat(), &address, &input_config, establish_tls) + .await + .map_err(|e| e.to_string())?; + + let desktop_width = connection_sequence_result.desktop_size.width; + let desktop_height = connection_sequence_result.desktop_size.height; + + let listener = TcpListener::bind("127.0.0.1:0").await.map_err(|e| e.to_string())?; + let websocket_port = listener.local_addr().unwrap().port(); + + let initial_desktop_size = DesktopSize { + width: desktop_width, + height: desktop_height, + }; + + let (session, msg_rx) = Session::new(); + let msg_tx = session.msg_tx.clone(); + let session_id = session_manager.register_session(session); + let new_session_info = NewSessionInfo { + session_id, + websocket_port, + initial_desktop_size, + }; + + start_rdp_session( + msg_tx, + msg_rx, + listener, + rdp_reader, + rdp_writer, + input_config, + connection_sequence_result, + ); + + Ok(new_session_info) +} + +fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { + InputConfig { + credentials: AuthIdentity { + username, + password, + domain, + }, + security_protocol: ironrdp::nego::SecurityProtocol::HYBRID_EX, + keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, + keyboard_subtype: 0, + keyboard_functional_keys_count: 12, + ime_file_name: String::new(), + dig_product_id: String::new(), + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_owned(), + user_channel_name: USER_CHANNEL_NAME.to_owned(), + graphics_config: None, + } +} + +fn start_rdp_session( + msg_tx: MessageSender, + msg_rx: MessageReceiver, + listener: TcpListener, + rdp_reader: FramedReader, + rdp_writer: ErasedWriter, + input_config: InputConfig, + connection_sequence_result: ConnectionSequenceResult, +) { + spawn_task(rdp_session_task( + msg_tx, + listener, + rdp_reader, + input_config, + connection_sequence_result, + )); + spawn_task(message_writer_task(msg_rx, rdp_writer)); +} + +async fn message_writer_task(mut msg_rx: MessageReceiver, mut rdp_writer: ErasedWriter) -> anyhow::Result<()> { + use futures_util::AsyncWriteExt as _; + use ironrdp::PduParsing; + + while let Some(message) = msg_rx.recv().await { + match message { + SessionMessage::ResponseFrame(frame) => { + rdp_writer.write_all(&frame).await?; + rdp_writer.flush().await?; + } + SessionMessage::Inputs(inputs) => { + let mut frame = Vec::new(); + inputs.to_buffer(&mut frame).unwrap(); + rdp_writer.write_all(&frame).await?; + rdp_writer.flush().await?; + } + } + } + + Ok(()) +} + +async fn rdp_session_task( + msg_tx: MessageSender, + listener: TcpListener, + mut rdp_reader: FramedReader, + input_config: InputConfig, + connection_sequence_result: ConnectionSequenceResult, +) -> anyhow::Result<()> { + println!("RDP session task started"); + + // Waiting for frontend to connect via WebSocket + let (tcp_stream, _) = listener.accept().await?; + let mut ws_stream = tokio_tungstenite::accept_async(tcp_stream).await?; + + let mut image = DecodedImage::new( + PixelFormat::RgbA32, + u32::from(connection_sequence_result.desktop_size.width), + u32::from(connection_sequence_result.desktop_size.height), + ); + + let mut active_stage = ActiveStageProcessor::new(input_config, connection_sequence_result); + let mut frame_id = 0; + + 'outer: loop { + // FIXME: remove unwraps + let frame = rdp_reader + .read_frame() + .await + .unwrap() + .ok_or(RdpError::AccessDenied) + .unwrap(); + let outputs = active_stage.process(&mut image, frame).await.unwrap(); + + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => { + if msg_tx.send(SessionMessage::ResponseFrame(frame)).is_err() { + println!("writer task is terminated"); + break 'outer; + }; + } + ActiveStageOutput::GraphicsUpdate(updated_region) => { + let partial_image = extract_partial_image(&image, &updated_region); + + send_update_rectangle(&mut ws_stream, frame_id, updated_region, partial_image) + .await + .context("Failed to send update rectangle")?; + + frame_id += 1; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } + + println!("RPD session terminated"); + + Ok(()) +} + +fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { + let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); + + let image_width = usize::try_from(image.width()).unwrap(); + + let region_top = usize::from(region.top); + let region_left = usize::from(region.left); + let region_width = usize::from(region.width()); + let region_height = usize::from(region.height()); + + let dst_buf_size = region_width * region_height * pixel_size; + let mut dst = vec![0; dst_buf_size]; + + let src = image.data(); + + let image_stride = image_width * pixel_size; + let region_stride = region_width * pixel_size; + + for row in 0..region_height { + let src_begin = image_stride * (region_top + row) + region_left * pixel_size; + let src_end = src_begin + region_stride; + let src_slice = &src[src_begin..src_end]; + + let target_begin = region_stride * row; + let target_end = target_begin + region_stride; + let target_slice = &mut dst[target_begin..target_end]; + + target_slice.copy_from_slice(src_slice); + } + + dst +} + +async fn send_update_rectangle( + stream: &mut tokio_tungstenite::WebSocketStream, + frame_id: usize, + region: Rectangle, + buffer: Vec, +) -> anyhow::Result<()> { + use futures_util::SinkExt as _; + use tokio_tungstenite::tungstenite::Message; + + let top = region.top; + let left = region.left; + let right = region.right; + let bottom = region.bottom; + let width = region.width(); + let height = region.height(); + let msg_len = buffer.len(); + + stream.feed(Message::Text(format!( + r#"{{"top": {top}, "left": {left}, "right": {right}, "bottom": {bottom}, "width": {width}, "height": {height}, "frame_id": {frame_id}, "msg_len": {msg_len}}}"# + ))).await.unwrap(); + + stream.feed(Message::Binary(buffer)).await?; + + Ok(()) +} + +// TODO: this can be refactored in a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) +async fn establish_tls(stream: tokio_util::compat::Compat) -> Result, RdpError> { + let stream = stream.into_inner(); + + let mut tls_stream = { + let mut client_config = rustls::client::ClientConfig::builder() + .with_safe_defaults() + .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) + .with_no_client_auth(); + // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) + client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); + let rc_config = std::sync::Arc::new(client_config); + let example_com = "stub_string".try_into().unwrap(); + let connector = tokio_rustls::TlsConnector::from(rc_config); + connector.connect(example_com, stream).await? + }; + + tls_stream.flush().await?; + + let server_public_key = { + let cert = tls_stream + .get_ref() + .1 + .peer_certificates() + .ok_or(RdpError::MissingPeerCertificate)?[0] + .as_ref(); + get_tls_peer_pubkey(cert.to_vec())? + }; + + Ok(UpgradedStream { + stream: tls_stream.compat(), + server_public_key, + }) +} + +pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { + let res = X509Certificate::from_der(&cert[..]) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; + let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; + + Ok(public_key.data.to_vec()) +} + +mod danger { + use std::time::SystemTime; + + use rustls::client::ServerCertVerified; + use rustls::{Certificate, Error, ServerName}; + + pub struct NoCertificateVerification; + + impl rustls::client::ServerCertVerifier for NoCertificateVerification { + fn verify_server_cert( + &self, + _end_entity: &Certificate, + _intermediates: &[Certificate], + _server_name: &ServerName, + _scts: &mut dyn Iterator, + _ocsp_response: &[u8], + _now: SystemTime, + ) -> Result { + Ok(rustls::client::ServerCertVerified::assertion()) + } + } +} + +fn spawn_task(task: F) +where + F: Future> + Send + 'static, + F::Output: Send + 'static, + T: 'static, +{ + tauri::async_runtime::spawn(async move { + match task.await { + Ok(_) => {} + Err(e) => println!("Task failed: {e:?}"), + } + }); +} + +// TODO: resize event +#[allow(dead_code)] +fn send_resize_event(app: &tauri::AppHandle, session_id: usize, desktop_size: DesktopSize) -> anyhow::Result<()> { + app.emit_all( + "resize", + ResizeEvent { + session_id, + desktop_size, + }, + )?; + Ok(()) +} diff --git a/iron-tauri-client/src-tauri/tauri.conf.json b/iron-tauri-client/src-tauri/tauri.conf.json new file mode 100644 index 00000000..5883c415 --- /dev/null +++ b/iron-tauri-client/src-tauri/tauri.conf.json @@ -0,0 +1,68 @@ +{ + "$schema": "../node_modules/@tauri-apps/cli/schema.json", + "build": { + "beforeBuildCommand": "npm --prefix ../iron-web-client run build-tauri", + "beforeDevCommand": "npm --prefix ../iron-web-client run start-tauri", + "devPath": "http://localhost:4200", + "distDir": "../../iron-web-client/dist/iron-tauri-client" + }, + "package": { + "productName": "iron-gui", + "version": "0.1.0" + }, + "tauri": { + "allowlist": { + "all": false + }, + "bundle": { + "active": true, + "category": "DeveloperTool", + "copyright": "", + "deb": { + "depends": [] + }, + "externalBin": [], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "identifier": "com.devolutions.dev", + "longDescription": "", + "macOS": { + "entitlements": null, + "exceptionDomain": "", + "frameworks": [], + "providerShortName": null, + "signingIdentity": null + }, + "resources": [], + "shortDescription": "", + "targets": "all", + "windows": { + "certificateThumbprint": null, + "digestAlgorithm": "sha256", + "timestampUrl": "" + } + }, + "security": { + "csp": null + }, + "updater": { + "active": false + }, + "windows": [ + { + "fullscreen": false, + "height": 800, + "resizable": true, + "title": "IronRDP GUI", + "url": "/session", + "label": "main", + "width": 1400 + } + ] + } +} From 1dd5fab929e02106b383ebe5909adf489e85c168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 15 Nov 2022 18:42:34 -0500 Subject: [PATCH 0091/1273] Initial wasm-based npm package --- ffi/wasm/.gitignore | 3 +++ ffi/wasm/Cargo.toml | 40 ++++++++++++++++++++++++++++++++++++++++ ffi/wasm/README.md | 19 +++++++++++++++++++ ffi/wasm/src/lib.rs | 36 ++++++++++++++++++++++++++++++++++++ ffi/wasm/src/utils.rs | 10 ++++++++++ ffi/wasm/tests/web.rs | 13 +++++++++++++ 6 files changed, 121 insertions(+) create mode 100644 ffi/wasm/.gitignore create mode 100644 ffi/wasm/Cargo.toml create mode 100644 ffi/wasm/README.md create mode 100644 ffi/wasm/src/lib.rs create mode 100644 ffi/wasm/src/utils.rs create mode 100644 ffi/wasm/tests/web.rs diff --git a/ffi/wasm/.gitignore b/ffi/wasm/.gitignore new file mode 100644 index 00000000..1109c337 --- /dev/null +++ b/ffi/wasm/.gitignore @@ -0,0 +1,3 @@ +bin/ +pkg/ +wasm-pack.log diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml new file mode 100644 index 00000000..fcf27483 --- /dev/null +++ b/ffi/wasm/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "ironrdp-wasm" +version = "0.1.0" +authors = ["Benoît CORTIER "] +edition = "2018" + +[lib] +name = "ironrdp" +crate-type = ["cdylib", "rlib"] + +[features] +default = ["console_error_panic_hook"] + +[workspace] +members = ["."] + +[dependencies] +wasm-bindgen = "0.2.83" +wasm-bindgen-futures = "0.4.33" +lazy_static = "1.4.0" +ron = "0.8.0" +serde = { version = "1.0.147", features = ["derive"] } +ironrdp = { path = "../../ironrdp" } +ironrdp-session = { path = "../../ironrdp-session" } + +# The `console_error_panic_hook` crate provides better debugging of panics by +# logging them with `console.error`. This is great for development, but requires +# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for +# code size when deploying. +console_error_panic_hook = { version = "0.1.7", optional = true } + +# Enable WebAssembly support for getrandom +getrandom = { version = "*", features = ["js"] } + +[dev-dependencies] +wasm-bindgen-test = "0.3.33" + +[profile.release] +# Tell `rustc` to optimize for small code size. +opt-level = "s" diff --git a/ffi/wasm/README.md b/ffi/wasm/README.md new file mode 100644 index 00000000..f7dedbba --- /dev/null +++ b/ffi/wasm/README.md @@ -0,0 +1,19 @@ +# WASM bindings + +## 🛠️ Build with `wasm-pack build` + +``` +wasm-pack build +``` + +## 🔬 Test in Headless Browsers with `wasm-pack test` + +``` +wasm-pack test --headless --firefox +``` + +## 🎁 Publish to NPM with `wasm-pack publish` + +``` +wasm-pack publish +``` diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs new file mode 100644 index 00000000..f2afd840 --- /dev/null +++ b/ffi/wasm/src/lib.rs @@ -0,0 +1,36 @@ +mod utils; + +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +async fn update_mouse( + session_id: usize, + mouse_x: u16, + mouse_y: u16, + left_click: bool, +) -> Result<(), String> { + let _ = session_id; // TODO + let _ = mouse_x; // TODO + let _ = mouse_y; // TODO + let _ = left_click; // TODO + let _ = session_manager; // TODO + + Err("Unimplemented") +} + +#[wasm_bindgen] +pub fn connect(username: String, password: String, address: String) -> Result<(), String> { + let _ = username; // TODO + let _ = address; // TODO + + if password == "abc" { + Ok(()) + } else { + Err("Something wrong happened".to_string()) + } +} + +#[wasm_bindgen] +pub fn init() { + utils::set_panic_hook(); +} diff --git a/ffi/wasm/src/utils.rs b/ffi/wasm/src/utils.rs new file mode 100644 index 00000000..b1d7929d --- /dev/null +++ b/ffi/wasm/src/utils.rs @@ -0,0 +1,10 @@ +pub fn set_panic_hook() { + // When the `console_error_panic_hook` feature is enabled, we can call the + // `set_panic_hook` function at least once during initialization, and then + // we will get better error messages if our code ever panics. + // + // For more details see + // https://github.com/rustwasm/console_error_panic_hook#readme + #[cfg(feature = "console_error_panic_hook")] + console_error_panic_hook::set_once(); +} diff --git a/ffi/wasm/tests/web.rs b/ffi/wasm/tests/web.rs new file mode 100644 index 00000000..de5c1daf --- /dev/null +++ b/ffi/wasm/tests/web.rs @@ -0,0 +1,13 @@ +//! Test suite for the Web and headless browsers. + +#![cfg(target_arch = "wasm32")] + +extern crate wasm_bindgen_test; +use wasm_bindgen_test::*; + +wasm_bindgen_test_configure!(run_in_browser); + +#[wasm_bindgen_test] +fn pass() { + assert_eq!(1 + 1, 2); +} From 19b513fee39c4901ec1b3ac72a85b81bfb499e78 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Tue, 15 Nov 2022 18:50:13 -0500 Subject: [PATCH 0092/1273] Initial web-based frontend Co-authored-by: Zacharia Ellaham --- iron-web-client/.browserslistrc | 16 + iron-web-client/.editorconfig | 16 + iron-web-client/.gitignore | 42 + iron-web-client/.vscode/extensions.json | 4 + iron-web-client/.vscode/launch.json | 20 + iron-web-client/.vscode/tasks.json | 42 + iron-web-client/README.md | 27 + iron-web-client/angular.json | 165 + iron-web-client/karma.conf.js | 44 + iron-web-client/package-lock.json | 20422 ++++++++++++++++ iron-web-client/package.json | 46 + .../src/app/add-tab/add-tab.component.html | 5 + .../src/app/add-tab/add-tab.component.scss | 6 + .../src/app/add-tab/add-tab.component.ts | 16 + iron-web-client/src/app/app.component.html | 1 + iron-web-client/src/app/app.component.scss | 0 iron-web-client/src/app/app.component.spec.ts | 31 + iron-web-client/src/app/app.component.ts | 11 + iron-web-client/src/app/app.module.ts | 48 + iron-web-client/src/app/app.routing.module.ts | 18 + .../src/app/application.service.ts | 27 + .../src/app/login/login.component.html | 21 + .../src/app/login/login.component.scss | 19 + .../src/app/login/login.component.ts | 47 + .../screen-renderer.component.html | 5 + .../screen-renderer.component.scss | 25 + .../screen-renderer.component.ts | 70 + .../src/app/services/command.service.ts | 0 .../src/app/services/server-bridge.service.ts | 43 + .../src/app/services/session.service.ts | 57 + .../src/app/services/tauri-bridge.service.ts | 63 + .../app/services/user-interaction.service.ts | 32 + .../src/app/services/wasm-bridge.service.ts | 45 + .../src/app/session/session.component.html | 2 + .../src/app/session/session.component.scss | 0 .../src/app/session/session.component.ts | 17 + .../src/app/session/session.module.ts | 42 + .../src/app/session/session.routing.module.ts | 16 + .../splash-screen/splashscreen.component.html | 5 + .../splash-screen/splashscreen.component.scss | 26 + .../splash-screen/splashscreen.component.ts | 17 + .../src/app/tabs/tabs.component.html | 14 + .../src/app/tabs/tabs.component.scss | 0 .../src/app/tabs/tabs.component.ts | 32 + iron-web-client/src/assets/.gitkeep | 0 .../src/assets/images/iron-logo.png | Bin 0 -> 193571 bytes iron-web-client/src/assets/ironrdp-fake.js | 0 .../environments/environment-tauri.prod.ts | 8 + .../src/environments/environment-tauri.ts | 8 + .../src/environments/environment.prod.ts | 4 + .../src/environments/environment.ts | 8 + iron-web-client/src/favicon.ico | Bin 0 -> 948 bytes iron-web-client/src/index.html | 16 + iron-web-client/src/main.ts | 12 + iron-web-client/src/models/desktop-size.ts | 4 + iron-web-client/src/models/rect.ts | 7 + iron-web-client/src/models/session.ts | 15 + iron-web-client/src/models/tab.ts | 11 + iron-web-client/src/polyfills.ts | 53 + iron-web-client/src/styles.scss | 4 + iron-web-client/src/test.ts | 26 + iron-web-client/tsconfig.app.json | 15 + iron-web-client/tsconfig.json | 36 + iron-web-client/tsconfig.spec.json | 18 + 64 files changed, 21850 insertions(+) create mode 100644 iron-web-client/.browserslistrc create mode 100644 iron-web-client/.editorconfig create mode 100644 iron-web-client/.gitignore create mode 100644 iron-web-client/.vscode/extensions.json create mode 100644 iron-web-client/.vscode/launch.json create mode 100644 iron-web-client/.vscode/tasks.json create mode 100644 iron-web-client/README.md create mode 100644 iron-web-client/angular.json create mode 100644 iron-web-client/karma.conf.js create mode 100644 iron-web-client/package-lock.json create mode 100644 iron-web-client/package.json create mode 100644 iron-web-client/src/app/add-tab/add-tab.component.html create mode 100644 iron-web-client/src/app/add-tab/add-tab.component.scss create mode 100644 iron-web-client/src/app/add-tab/add-tab.component.ts create mode 100644 iron-web-client/src/app/app.component.html create mode 100644 iron-web-client/src/app/app.component.scss create mode 100644 iron-web-client/src/app/app.component.spec.ts create mode 100644 iron-web-client/src/app/app.component.ts create mode 100644 iron-web-client/src/app/app.module.ts create mode 100644 iron-web-client/src/app/app.routing.module.ts create mode 100644 iron-web-client/src/app/application.service.ts create mode 100644 iron-web-client/src/app/login/login.component.html create mode 100644 iron-web-client/src/app/login/login.component.scss create mode 100644 iron-web-client/src/app/login/login.component.ts create mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.html create mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.scss create mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.ts create mode 100644 iron-web-client/src/app/services/command.service.ts create mode 100644 iron-web-client/src/app/services/server-bridge.service.ts create mode 100644 iron-web-client/src/app/services/session.service.ts create mode 100644 iron-web-client/src/app/services/tauri-bridge.service.ts create mode 100644 iron-web-client/src/app/services/user-interaction.service.ts create mode 100644 iron-web-client/src/app/services/wasm-bridge.service.ts create mode 100644 iron-web-client/src/app/session/session.component.html create mode 100644 iron-web-client/src/app/session/session.component.scss create mode 100644 iron-web-client/src/app/session/session.component.ts create mode 100644 iron-web-client/src/app/session/session.module.ts create mode 100644 iron-web-client/src/app/session/session.routing.module.ts create mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.html create mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.scss create mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.ts create mode 100644 iron-web-client/src/app/tabs/tabs.component.html create mode 100644 iron-web-client/src/app/tabs/tabs.component.scss create mode 100644 iron-web-client/src/app/tabs/tabs.component.ts create mode 100644 iron-web-client/src/assets/.gitkeep create mode 100644 iron-web-client/src/assets/images/iron-logo.png create mode 100644 iron-web-client/src/assets/ironrdp-fake.js create mode 100644 iron-web-client/src/environments/environment-tauri.prod.ts create mode 100644 iron-web-client/src/environments/environment-tauri.ts create mode 100644 iron-web-client/src/environments/environment.prod.ts create mode 100644 iron-web-client/src/environments/environment.ts create mode 100644 iron-web-client/src/favicon.ico create mode 100644 iron-web-client/src/index.html create mode 100644 iron-web-client/src/main.ts create mode 100644 iron-web-client/src/models/desktop-size.ts create mode 100644 iron-web-client/src/models/rect.ts create mode 100644 iron-web-client/src/models/session.ts create mode 100644 iron-web-client/src/models/tab.ts create mode 100644 iron-web-client/src/polyfills.ts create mode 100644 iron-web-client/src/styles.scss create mode 100644 iron-web-client/src/test.ts create mode 100644 iron-web-client/tsconfig.app.json create mode 100644 iron-web-client/tsconfig.json create mode 100644 iron-web-client/tsconfig.spec.json diff --git a/iron-web-client/.browserslistrc b/iron-web-client/.browserslistrc new file mode 100644 index 00000000..4f9ac269 --- /dev/null +++ b/iron-web-client/.browserslistrc @@ -0,0 +1,16 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR diff --git a/iron-web-client/.editorconfig b/iron-web-client/.editorconfig new file mode 100644 index 00000000..59d9a3a3 --- /dev/null +++ b/iron-web-client/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/iron-web-client/.gitignore b/iron-web-client/.gitignore new file mode 100644 index 00000000..0711527e --- /dev/null +++ b/iron-web-client/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/iron-web-client/.vscode/extensions.json b/iron-web-client/.vscode/extensions.json new file mode 100644 index 00000000..77b37457 --- /dev/null +++ b/iron-web-client/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 + "recommendations": ["angular.ng-template"] +} diff --git a/iron-web-client/.vscode/launch.json b/iron-web-client/.vscode/launch.json new file mode 100644 index 00000000..740e35a0 --- /dev/null +++ b/iron-web-client/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "ng serve", + "type": "pwa-chrome", + "request": "launch", + "preLaunchTask": "npm: start", + "url": "http://localhost:4200/" + }, + { + "name": "ng test", + "type": "chrome", + "request": "launch", + "preLaunchTask": "npm: test", + "url": "http://localhost:9876/debug.html" + } + ] +} diff --git a/iron-web-client/.vscode/tasks.json b/iron-web-client/.vscode/tasks.json new file mode 100644 index 00000000..a298b5bd --- /dev/null +++ b/iron-web-client/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558 + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "start", + "isBackground": true, + "problemMatcher": { + "owner": "typescript", + "pattern": "$tsc", + "background": { + "activeOnStart": true, + "beginsPattern": { + "regexp": "(.*?)" + }, + "endsPattern": { + "regexp": "bundle generation complete" + } + } + } + }, + { + "type": "npm", + "script": "test", + "isBackground": true, + "problemMatcher": { + "owner": "typescript", + "pattern": "$tsc", + "background": { + "activeOnStart": true, + "beginsPattern": { + "regexp": "(.*?)" + }, + "endsPattern": { + "regexp": "bundle generation complete" + } + } + } + } + ] +} diff --git a/iron-web-client/README.md b/iron-web-client/README.md new file mode 100644 index 00000000..4eaa2167 --- /dev/null +++ b/iron-web-client/README.md @@ -0,0 +1,27 @@ +# IronWebClient + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.8. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/iron-web-client/angular.json b/iron-web-client/angular.json new file mode 100644 index 00000000..1eb0129b --- /dev/null +++ b/iron-web-client/angular.json @@ -0,0 +1,165 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "iron-web-client": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/iron-web-client", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "./node_modules/normalize.css/normalize.css", + "./node_modules/@angular/material/prebuilt-themes/purple-green.css", + "./node_modules/@devolutions/icons/scss/devolutions-icons.scss", + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "tauri-dev": { + "outputPath": "dist/iron-tauri-client", + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment-tauri.prod.ts" + }, + { + "replace": "src/assets/pkg/ironrdp.js", + "with": "src/assets/ironrdp-fake.js" + } + ], + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + }, + "tauri-prod": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputPath": "dist/iron-tauri-client", + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment-tauri.prod.ts" + }, + { + "replace": "src/assets/pkg/ironrdp.js", + "with": "src/assets/ironrdp-fake.js" + } + ], + "outputHashing": "all" + }, + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "iron-web-client:build:production" + }, + "development": { + "browserTarget": "iron-web-client:build:development" + }, + "tauri-dev": { + "browserTarget": "iron-web-client:build:tauri-dev" + }, + "tauri-prod": { + "browserTarget": "iron-web-client:build:tauri-prod" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "iron-web-client:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "./node_modules/@angular/material/prebuilt-themes/purple-green.css", + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + }, + "cli": { + "analytics": false + } +} diff --git a/iron-web-client/karma.conf.js b/iron-web-client/karma.conf.js new file mode 100644 index 00000000..457a2914 --- /dev/null +++ b/iron-web-client/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/iron-web-client'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/iron-web-client/package-lock.json b/iron-web-client/package-lock.json new file mode 100644 index 00000000..0409d75e --- /dev/null +++ b/iron-web-client/package-lock.json @@ -0,0 +1,20422 @@ +{ + "name": "iron-web-client", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "iron-web-client", + "version": "0.0.0", + "dependencies": { + "@angular/animations": "^14.2.0", + "@angular/cdk": "^14.2.6", + "@angular/common": "^14.2.0", + "@angular/compiler": "^14.2.0", + "@angular/core": "^14.2.0", + "@angular/forms": "^14.2.0", + "@angular/material": "^14.2.6", + "@angular/platform-browser": "^14.2.0", + "@angular/platform-browser-dynamic": "^14.2.0", + "@angular/router": "^14.2.0", + "@devolutions/icons": "^3.3.2", + "@tauri-apps/api": "^1.2.0", + "guid-typescript": "^1.0.9", + "normalize.css": "^8.0.1", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^14.2.8", + "@angular/cli": "~14.2.8", + "@angular/compiler-cli": "^14.2.0", + "@types/jasmine": "~4.0.0", + "jasmine-core": "~4.3.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "typescript": "~4.7.2" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1402.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.9.tgz", + "integrity": "sha512-I0KTpmtukxq447CkdzKonFpIytRnvC77WuwnX4Sef32EM9KqmeNvfy/gZwm08Lqi4mOAC/iTCajXH1TN/4xllA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.9", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.9.tgz", + "integrity": "sha512-/6ul4JLpiKLB4+PJzDF7twgZf28GNHxxJKsheymrxC+ZRMGoMsJCzoU/dmOXE2YY8yGxAFnrTAVIJYomn+QnZQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.9", + "@angular-devkit/build-webpack": "0.1402.9", + "@angular-devkit/core": "14.2.9", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.9", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.15.5" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "@angular/localize": "^14.0.0", + "@angular/service-worker": "^14.0.0", + "karma": "^6.3.0", + "ng-packagr": "^14.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.6.2 <4.9" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1402.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.9.tgz", + "integrity": "sha512-J+bseVpEqHAfxvTKYNoo6B+5TmnkQmEn9aNMEiQ+hv8pQyuW3DCWZ6jOQrfCpJzCYMBdrQALfaRpsQuB92UPVw==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.9", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.9.tgz", + "integrity": "sha512-+e2OmzH/0gjNNH96xJDgshbuIM/NPSwE0NQlgU/KRb8TZt+7ooTmZJ1vk25HKV2YS99BEYzUSqvVAaJtxX/6Qw==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.9.tgz", + "integrity": "sha512-E7muTIbDqysjQld5r9AGXiW8vKHadkHaGe+0QONpmr8TMAtTMqBFxBXRG9vajiUzt/GcFL9dbGGEwM/1dc7VPQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.9", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular/animations": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.10.tgz", + "integrity": "sha512-t3ntvZvEI3lFrsJOC2qcF4ZCD04rVXWt8769YfearACBMsAXF0OAsLFcFHSDxcJelLGvQlXtBhjhe4IFAnQiZw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.10" + } + }, + "node_modules/@angular/cdk": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.9.tgz", + "integrity": "sha512-1cQE7mRrPyzk1sg2UwpbQ/sXQyPukPKdN69o4Bn59Scfl/4wUh53WRPAAHXNudgPYT2ZT3s9Jj2E1cdhi+gxyQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.9", + "@angular-devkit/core": "14.2.9", + "@angular-devkit/schematics": "14.2.9", + "@schematics/angular": "14.2.9", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.10.tgz", + "integrity": "sha512-uXtopPVKq1in/wcyMUYNk9uVDJ1ArlZ0wkfZEE1EMFaIZXR4p1fkbH1zMukUK+ldRlyqkuT1btZUq15incsKcg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.10", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.10.tgz", + "integrity": "sha512-CvZTJNKCNqU3Lr0La60U3XXZfpQbba/eb5YWTgygpoP0kjwOcNOsVou9TrGm57hT5ODy8281JOjWTrKspmYt5w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.10" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.10.tgz", + "integrity": "sha512-1GY1jdHqMpTBapjb0l61vQp0kPo9fryltOwQdm+zElODVFQWl/kvtq1VuMPr+E2qMfNSYg+ffrSixN7nG/E2ww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.2.10", + "typescript": ">=4.6.2 <4.9" + } + }, + "node_modules/@angular/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.10.tgz", + "integrity": "sha512-3XN+c0+tAtcUc8o7sQ41RLcSFPMt8krCfKFpDUOQwKjm90OOBcoG0LfmRfYBFNAenQh4glQQGOaYvLY98bTFTw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4 || ~0.12.0" + } + }, + "node_modules/@angular/forms": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.10.tgz", + "integrity": "sha512-6Wa7Knx+dbVS9+Z05m86pErRb1f3uG9gQ30+nRenjJW1d3HCyFPj6gteqQPUAOhtc4zN4L33pR52UuKoHUYJOQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.10", + "@angular/core": "14.2.10", + "@angular/platform-browser": "14.2.10", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/material": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^14.0.0 || ^15.0.0", + "@angular/cdk": "14.2.7", + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "@angular/forms": "^14.0.0 || ^15.0.0", + "@angular/platform-browser": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.10.tgz", + "integrity": "sha512-oYd5UMuGt4bocGFEaNYhQ7vzZFygLzCVM+SYxgfOHcgzeofZOjdaZgb84ANKgca5jguZg2ZGo1iklAbvfMrk2A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "14.2.10", + "@angular/common": "14.2.10", + "@angular/core": "14.2.10" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.10.tgz", + "integrity": "sha512-K6hCCECGtjLsx9+fNOR7nx6oIqyIlLQnpv/u/L4bw/gL5Usr6t6R15lu0Rg+AT2MxDX1ELG7BG0ZKalLjSaquw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.10", + "@angular/compiler": "14.2.10", + "@angular/core": "14.2.10", + "@angular/platform-browser": "14.2.10" + } + }, + "node_modules/@angular/router": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.10.tgz", + "integrity": "sha512-Pnyy+j6WGh+VlvdsfqWCumlwCrYH5HgcJcrvmjhohTf/dtexfwTGmuqFU+6/d4vRugG84xsLH3wIlnW6P7WEXw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.10", + "@angular/core": "14.2.10", + "@angular/platform-browser": "14.2.10", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@devolutions/icons": { + "version": "3.3.2", + "resolved": "https://devolutions.jfrog.io/devolutions/api/npm/npm/@devolutions/icons/-/icons-3.3.2.tgz", + "integrity": "sha1-fJYnY48Bm0APrqB3qOqNe3qrkyY=", + "peerDependencies": { + "@types/react": ">= 16.8.6", + "react": ">= 17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@ngtools/webpack": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.9.tgz", + "integrity": "sha512-P2zgvsfSpN4BkNzZWnPKUVOzv3y/SUWdnx/nhAG5gsQkLBp0Vf2evwQnbPUKuCrbMpYd1V/5SHb48+0B6FbUtQ==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "typescript": ">=4.6.2 <4.9", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@schematics/angular": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.9.tgz", + "integrity": "sha512-pt/eN+D9a6JeOjgqEdWP8lU6VQIoo3F8RcoVEVXHhjXzF2mIe1a3ZJTwY3ssdemKV4mZgseTJBG99/jxrHK0XQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.9", + "@angular-devkit/schematics": "14.2.9", + "jsonc-parser": "3.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", + "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", + "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jasmine-core": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", + "integrity": "sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-coverage/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma-coverage/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", + "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.10", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", + "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", + "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "dependencies": { + "tslib": "^2.3.0" + } + } + }, + "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.1402.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.9.tgz", + "integrity": "sha512-I0KTpmtukxq447CkdzKonFpIytRnvC77WuwnX4Sef32EM9KqmeNvfy/gZwm08Lqi4mOAC/iTCajXH1TN/4xllA==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.9", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.9.tgz", + "integrity": "sha512-/6ul4JLpiKLB4+PJzDF7twgZf28GNHxxJKsheymrxC+ZRMGoMsJCzoU/dmOXE2YY8yGxAFnrTAVIJYomn+QnZQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.9", + "@angular-devkit/build-webpack": "0.1402.9", + "@angular-devkit/core": "14.2.9", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.9", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild": "0.15.5", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1402.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.9.tgz", + "integrity": "sha512-J+bseVpEqHAfxvTKYNoo6B+5TmnkQmEn9aNMEiQ+hv8pQyuW3DCWZ6jOQrfCpJzCYMBdrQALfaRpsQuB92UPVw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.9", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.9.tgz", + "integrity": "sha512-+e2OmzH/0gjNNH96xJDgshbuIM/NPSwE0NQlgU/KRb8TZt+7ooTmZJ1vk25HKV2YS99BEYzUSqvVAaJtxX/6Qw==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.9.tgz", + "integrity": "sha512-E7muTIbDqysjQld5r9AGXiW8vKHadkHaGe+0QONpmr8TMAtTMqBFxBXRG9vajiUzt/GcFL9dbGGEwM/1dc7VPQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.9", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular/animations": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.10.tgz", + "integrity": "sha512-t3ntvZvEI3lFrsJOC2qcF4ZCD04rVXWt8769YfearACBMsAXF0OAsLFcFHSDxcJelLGvQlXtBhjhe4IFAnQiZw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.9.tgz", + "integrity": "sha512-1cQE7mRrPyzk1sg2UwpbQ/sXQyPukPKdN69o4Bn59Scfl/4wUh53WRPAAHXNudgPYT2ZT3s9Jj2E1cdhi+gxyQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.9", + "@angular-devkit/core": "14.2.9", + "@angular-devkit/schematics": "14.2.9", + "@schematics/angular": "14.2.9", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + } + }, + "@angular/common": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.10.tgz", + "integrity": "sha512-uXtopPVKq1in/wcyMUYNk9uVDJ1ArlZ0wkfZEE1EMFaIZXR4p1fkbH1zMukUK+ldRlyqkuT1btZUq15incsKcg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.10.tgz", + "integrity": "sha512-CvZTJNKCNqU3Lr0La60U3XXZfpQbba/eb5YWTgygpoP0kjwOcNOsVou9TrGm57hT5ODy8281JOjWTrKspmYt5w==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.10.tgz", + "integrity": "sha512-1GY1jdHqMpTBapjb0l61vQp0kPo9fryltOwQdm+zElODVFQWl/kvtq1VuMPr+E2qMfNSYg+ffrSixN7nG/E2ww==", + "dev": true, + "requires": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + } + }, + "@angular/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.10.tgz", + "integrity": "sha512-3XN+c0+tAtcUc8o7sQ41RLcSFPMt8krCfKFpDUOQwKjm90OOBcoG0LfmRfYBFNAenQh4glQQGOaYvLY98bTFTw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.10.tgz", + "integrity": "sha512-6Wa7Knx+dbVS9+Z05m86pErRb1f3uG9gQ30+nRenjJW1d3HCyFPj6gteqQPUAOhtc4zN4L33pR52UuKoHUYJOQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/material": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.10.tgz", + "integrity": "sha512-oYd5UMuGt4bocGFEaNYhQ7vzZFygLzCVM+SYxgfOHcgzeofZOjdaZgb84ANKgca5jguZg2ZGo1iklAbvfMrk2A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.10.tgz", + "integrity": "sha512-K6hCCECGtjLsx9+fNOR7nx6oIqyIlLQnpv/u/L4bw/gL5Usr6t6R15lu0Rg+AT2MxDX1ELG7BG0ZKalLjSaquw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/router": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.10.tgz", + "integrity": "sha512-Pnyy+j6WGh+VlvdsfqWCumlwCrYH5HgcJcrvmjhohTf/dtexfwTGmuqFU+6/d4vRugG84xsLH3wIlnW6P7WEXw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "requires": {} + }, + "@devolutions/icons": { + "version": "3.3.2", + "resolved": "https://devolutions.jfrog.io/devolutions/api/npm/npm/@devolutions/icons/-/icons-3.3.2.tgz", + "integrity": "sha1-fJYnY48Bm0APrqB3qOqNe3qrkyY=", + "requires": {} + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "dev": true, + "optional": true + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@ngtools/webpack": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.9.tgz", + "integrity": "sha512-P2zgvsfSpN4BkNzZWnPKUVOzv3y/SUWdnx/nhAG5gsQkLBp0Vf2evwQnbPUKuCrbMpYd1V/5SHb48+0B6FbUtQ==", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@schematics/angular": { + "version": "14.2.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.9.tgz", + "integrity": "sha512-pt/eN+D9a6JeOjgqEdWP8lU6VQIoo3F8RcoVEVXHhjXzF2mIe1a3ZJTwY3ssdemKV4mZgseTJBG99/jxrHK0XQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.9", + "@angular-devkit/schematics": "14.2.9", + "jsonc-parser": "3.1.0" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==" + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", + "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssdb": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", + "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "optional": true, + "requires": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine-core": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", + "integrity": "sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "karma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", + "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", + "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "needle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "requires": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-properties": { + "version": "12.1.10", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", + "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "requires": {} + }, + "postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "requires": {} + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true + }, + "postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "requires": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "streamroller": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", + "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "zone.js": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", + "requires": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/iron-web-client/package.json b/iron-web-client/package.json new file mode 100644 index 00000000..4f276dac --- /dev/null +++ b/iron-web-client/package.json @@ -0,0 +1,46 @@ +{ + "name": "iron-web-client", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve --host 0.0.0.0", + "start-tauri": "ng serve --configuration tauri-dev", + "build": "ng build", + "build-tauri": "ng build --configuration tauri-prod", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^14.2.0", + "@angular/cdk": "^14.2.6", + "@angular/common": "^14.2.0", + "@angular/compiler": "^14.2.0", + "@angular/core": "^14.2.0", + "@angular/forms": "^14.2.0", + "@angular/material": "^14.2.6", + "@angular/platform-browser": "^14.2.0", + "@angular/platform-browser-dynamic": "^14.2.0", + "@angular/router": "^14.2.0", + "@devolutions/icons": "^3.3.2", + "@tauri-apps/api": "^1.2.0", + "guid-typescript": "^1.0.9", + "normalize.css": "^8.0.1", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^14.2.8", + "@angular/cli": "~14.2.8", + "@angular/compiler-cli": "^14.2.0", + "@types/jasmine": "~4.0.0", + "jasmine-core": "~4.3.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "typescript": "~4.7.2" + } +} diff --git a/iron-web-client/src/app/add-tab/add-tab.component.html b/iron-web-client/src/app/add-tab/add-tab.component.html new file mode 100644 index 00000000..529b323b --- /dev/null +++ b/iron-web-client/src/app/add-tab/add-tab.component.html @@ -0,0 +1,5 @@ +

diff --git a/iron-web-client/src/app/add-tab/add-tab.component.scss b/iron-web-client/src/app/add-tab/add-tab.component.scss new file mode 100644 index 00000000..07c55cff --- /dev/null +++ b/iron-web-client/src/app/add-tab/add-tab.component.scss @@ -0,0 +1,6 @@ +.add-button { + top: 5px; + right: 0; + position: fixed; + z-index: 99999; +} diff --git a/iron-web-client/src/app/add-tab/add-tab.component.ts b/iron-web-client/src/app/add-tab/add-tab.component.ts new file mode 100644 index 00000000..63d203cc --- /dev/null +++ b/iron-web-client/src/app/add-tab/add-tab.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; +import {SessionService} from "../services/session.service"; + +@Component({ + selector: 'app-add-tab', + templateUrl: './add-tab.component.html', + styleUrls: ['./add-tab.component.scss'] +}) +export class AddTabComponent { + + constructor(public sessionService: SessionService) { } + + addSession(){ + this.sessionService.addSession('New Session') + } +} diff --git a/iron-web-client/src/app/app.component.html b/iron-web-client/src/app/app.component.html new file mode 100644 index 00000000..0680b43f --- /dev/null +++ b/iron-web-client/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/iron-web-client/src/app/app.component.scss b/iron-web-client/src/app/app.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/app/app.component.spec.ts b/iron-web-client/src/app/app.component.spec.ts new file mode 100644 index 00000000..413aa61c --- /dev/null +++ b/iron-web-client/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'iron-web-client'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('iron-web-client'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('.content span')?.textContent).toContain('iron-web-client app is running!'); + }); +}); diff --git a/iron-web-client/src/app/app.component.ts b/iron-web-client/src/app/app.component.ts new file mode 100644 index 00000000..e84ab6ae --- /dev/null +++ b/iron-web-client/src/app/app.component.ts @@ -0,0 +1,11 @@ +import {Component} from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'iron-web-client'; +} + diff --git a/iron-web-client/src/app/app.module.ts b/iron-web-client/src/app/app.module.ts new file mode 100644 index 00000000..c729f963 --- /dev/null +++ b/iron-web-client/src/app/app.module.ts @@ -0,0 +1,48 @@ +import {NgModule} from '@angular/core'; +import {BrowserModule} from '@angular/platform-browser'; +import {AppComponent} from './app.component'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import {TabsComponent} from './tabs/tabs.component'; +import {MatTabsModule} from "@angular/material/tabs"; +import {AddTabComponent} from './add-tab/add-tab.component'; +import {MatIconModule} from "@angular/material/icon"; +import {AppRoutingModule} from "./app.routing.module"; +import {SplashscreenComponent} from "./splash-screen/splashscreen.component"; +import {RouterModule} from "@angular/router"; +import {ServerBridgeService} from "./services/server-bridge.service"; +import {environment} from "../environments/environment"; +import {TauriBridgeService} from "./services/tauri-bridge.service"; +import {WasmBridgeService} from "./services/wasm-bridge.service"; +import {UserInteractionService} from "./services/user-interaction.service"; +import {MatProgressBarModule} from '@angular/material/progress-bar'; + +@NgModule({ + declarations: [ + AppComponent, + TabsComponent, + AddTabComponent, + SplashscreenComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + RouterModule, + BrowserAnimationsModule, + MatIconModule, + MatTabsModule, + MatProgressBarModule + ], + bootstrap: [AppComponent], + providers: [ + UserInteractionService, + { + provide: ServerBridgeService, + useFactory: () => { + return environment.tauri ? new TauriBridgeService() : new WasmBridgeService(); + } + }, + ] +}) + +export class AppModule { +} diff --git a/iron-web-client/src/app/app.routing.module.ts b/iron-web-client/src/app/app.routing.module.ts new file mode 100644 index 00000000..17d7655a --- /dev/null +++ b/iron-web-client/src/app/app.routing.module.ts @@ -0,0 +1,18 @@ +import {RouterModule, Routes} from "@angular/router"; +import {NgModule} from "@angular/core"; +import {AppComponent} from "./app.component"; +import {SplashscreenComponent} from "./splash-screen/splashscreen.component"; + +const routes: Routes = [ + {path: 'iron-gui', component: AppComponent}, + {path: 'session', loadChildren: () => import('./session/session.module').then(m => m.SessionModule)}, + {path: 'splashscreen', component: SplashscreenComponent}, + {path: '', redirectTo: 'iron-gui', pathMatch: 'full'} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/iron-web-client/src/app/application.service.ts b/iron-web-client/src/app/application.service.ts new file mode 100644 index 00000000..948864f7 --- /dev/null +++ b/iron-web-client/src/app/application.service.ts @@ -0,0 +1,27 @@ +import {Injectable} from "@angular/core"; +import {BehaviorSubject, Observable, Subject} from "rxjs"; +import {invoke} from "@tauri-apps/api"; +import {environment} from "../environments/environment"; + +@Injectable({ + providedIn: 'root' +}) +export class ApplicationService { + splashScreenReady$: Observable; + splashScreenReady: BehaviorSubject = new BehaviorSubject(false); + + constructor() { + this.splashScreenReady$ = this.splashScreenReady.asObservable() + } + + setSplashScreenReady(value: boolean) { + console.log("set splash ready to ", value); + this.splashScreenReady.next(value); + } + + closeSplashscreen() { + if (environment.tauri) { + invoke('close_splashscreen'); + } + } +} diff --git a/iron-web-client/src/app/login/login.component.html b/iron-web-client/src/app/login/login.component.html new file mode 100644 index 00000000..e68bc1c0 --- /dev/null +++ b/iron-web-client/src/app/login/login.component.html @@ -0,0 +1,21 @@ + diff --git a/iron-web-client/src/app/login/login.component.scss b/iron-web-client/src/app/login/login.component.scss new file mode 100644 index 00000000..79dcb971 --- /dev/null +++ b/iron-web-client/src/app/login/login.component.scss @@ -0,0 +1,19 @@ +.login-wrapper{ + text-align: -webkit-center; +} + +.box{ + top: 80px; + width: 40%; + height: 400px; +} + +.form { + min-width: 150px; + max-width: 500px; + width: 100%; +} + +.full-width { + width: 100%; +} diff --git a/iron-web-client/src/app/login/login.component.ts b/iron-web-client/src/app/login/login.component.ts new file mode 100644 index 00000000..7dc0d3ca --- /dev/null +++ b/iron-web-client/src/app/login/login.component.ts @@ -0,0 +1,47 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl, FormGroup} from "@angular/forms"; +import {MatSnackBar} from "@angular/material/snack-bar"; +import {ServerBridgeService} from "../services/server-bridge.service"; +import {Session} from "../../models/session"; +import {SessionService} from "../services/session.service"; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit { + + currentSession: Session; + + form = new FormGroup({ + host: new FormControl(''), + username: new FormControl(''), + password: new FormControl(''), + }) + + constructor(private snackBar: MatSnackBar, private serverBridge: ServerBridgeService, private sessionService: SessionService) { + this.sessionService.currentSession$.subscribe(session => this.currentSession = session); + } + + ngOnInit(): void { + this.form.get('username')?.setValue('Administrator'); + this.form.get('password')?.setValue('DevoLabs123!'); + this.form.get('host')?.setValue('10.10.0.3:3389'); + } + + connect() { + this.snackBar.open('Connection in progress...', '', {duration: 1000}); + + this.serverBridge.connect(this.form.value.username as string, this.form.value.password as string, this.form.value.host as string).subscribe(start_info => { + if (start_info.websocket_port && start_info.websocket_port > 0) { + this.snackBar.open('success', '', {duration: 1000}); + this.currentSession.sessionId = start_info.session_id; + this.currentSession.desktopSize = start_info.initial_desktop_size; + this.currentSession.active = true; + } else { + this.snackBar.open('failure', '', {duration: 1000}); + } + }) + } +} diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.html b/iron-web-client/src/app/screen-renderer/screen-renderer.component.html new file mode 100644 index 00000000..34ea2188 --- /dev/null +++ b/iron-web-client/src/app/screen-renderer/screen-renderer.component.html @@ -0,0 +1,5 @@ +
+
+ +
+
diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss b/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss new file mode 100644 index 00000000..1bf6c10d --- /dev/null +++ b/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss @@ -0,0 +1,25 @@ +$screen-padding: 30px; + +.screen-wrapper { + position: relative; + width: calc(100% - #{$screen-padding * 2}); + height: calc(100% - #{$screen-padding * 2}); + padding-left: $screen-padding; + padding-top: $screen-padding; + max-height: 100%; + + &.scale-fit { + canvas { + width: 100%; + } + } + + .screen-viewer { + width: 100%; + height: 100%; + overflow: auto; + text-align: center; + } +} + + diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts b/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts new file mode 100644 index 00000000..818be34e --- /dev/null +++ b/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts @@ -0,0 +1,70 @@ +import {AfterViewInit, Component, Input, OnInit} from "@angular/core"; +import {MousePosition, UserInteractionService} from "../services/user-interaction.service"; +import {DesktopSize, ResizeEvent, ServerBridgeService} from "../services/server-bridge.service"; +import {SessionService} from "../services/session.service"; +import {Session} from "../../models/session"; +import {count, throttleTime} from "rxjs"; + +@Component({ + selector: 'app-screen-renderer', + templateUrl: 'screen-renderer.component.html', + styleUrls: ['screen-renderer.component.scss'] +}) +export class ScreenRendererComponent implements OnInit, AfterViewInit { + @Input() scale: 'full' | 'fit' = 'full'; + + currentSession: Session; + + canvas: HTMLCanvasElement; + canvasCtx: any; + + constructor(private serverService: ServerBridgeService, private userInteractionService: UserInteractionService, private sessionService: SessionService) { + } + + ngOnInit() { + this.serverService.init(); + } + + ngAfterViewInit() { + this.canvas = document.getElementById("renderer") as HTMLCanvasElement; + this.canvasCtx = this.canvas?.getContext("2d", { alpha: false }); + + this.sessionService.currentSession$.subscribe(session => { + this.currentSession = session; + this.canvas.width = session.desktopSize.width; + this.canvas.height = session.desktopSize.height; + }); + + this.serverService.resize.subscribe((desktopSize: ResizeEvent) => { + this.canvas.width = desktopSize.desktop_size.width; + this.canvas.height = desktopSize.desktop_size.height; + }); + this.serverService.updateImage.pipe(throttleTime(1000 / 60)).subscribe(({pixels, infos}) => { + this.draw(pixels, infos); + }) + } + + getMousePos(evt: any) { + const rect = this.canvas.getBoundingClientRect(), + scaleX = this.canvas.width / rect.width, + scaleY = this.canvas.height / rect.height; + + const coord: MousePosition = { + x: Math.round((evt.clientX - rect.left) * scaleX), + y: Math.round((evt.clientY - rect.top) * scaleY) + } + + this.userInteractionService.setMousePosition(coord); + } + + setMouseState(state: number) { + this.userInteractionService.setMouseLeftClickState(state); + } + + async draw(bytesArray: any, imageInfo: any) { + const pixels = new Uint8ClampedArray(await bytesArray); + const imageData = new ImageData(pixels, imageInfo.width, imageInfo.height); + this.canvasCtx?.putImageData(imageData, imageInfo.left, imageInfo.top); + } + +} diff --git a/iron-web-client/src/app/services/command.service.ts b/iron-web-client/src/app/services/command.service.ts new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/app/services/server-bridge.service.ts b/iron-web-client/src/app/services/server-bridge.service.ts new file mode 100644 index 00000000..9d17e29e --- /dev/null +++ b/iron-web-client/src/app/services/server-bridge.service.ts @@ -0,0 +1,43 @@ +import {Injectable} from "@angular/core"; +import {Observable, Subject} from "rxjs"; + +export interface ServerRect { + free(): void; + + clone_buffer(): Uint8Array; + + bottom: number; + left: number; + right: number; + top: number; +} + +export interface NewSessionInfo { + session_id: number, + websocket_port: number, + initial_desktop_size: DesktopSize, +} + +export interface DesktopSize { + width: number, + height: number +} + +export interface ResizeEvent { + session_id: number, + desktop_size: DesktopSize, +} + +@Injectable() +export abstract class ServerBridgeService { + abstract init(): void; + + abstract connect(username: string, password: string, address: string): Observable; + + abstract resize: Observable; + + abstract updateImage: Observable; + + abstract updateMouse(mouse_x: number, mouse_y: number, click_state: number): void; +} + diff --git a/iron-web-client/src/app/services/session.service.ts b/iron-web-client/src/app/services/session.service.ts new file mode 100644 index 00000000..314beca6 --- /dev/null +++ b/iron-web-client/src/app/services/session.service.ts @@ -0,0 +1,57 @@ +import {Injectable} from '@angular/core'; +import {Tab} from "../../models/tab"; +import {Session} from "../../models/session"; +import {BehaviorSubject, Observable, Subject} from "rxjs"; +import {Guid} from "guid-typescript"; + +@Injectable({ + providedIn: 'root' +}) +export class SessionService { + sessionCounter = 0; + currentSession$: Observable; + sessions: Session[] = new Array(); + tabs$: Observable + + private _currentSession: BehaviorSubject = new BehaviorSubject(new Session("New Session")); + private _tabs: BehaviorSubject = new BehaviorSubject([]); + + constructor() { + this.tabs$ = this._tabs.asObservable(); + this.currentSession$ = this._currentSession.asObservable(); + } + + public getSessionsTabs() { + const tabs = this.sessions.map(session => new Tab(session.id, session.name)) + this._tabs.next(tabs); + } + + public setCurrentSession(session: Session) { + this._currentSession.next(session); + this.getSessionsTabs(); + } + + public setCurrentSessionById(id: Guid) { + const session = this.sessions.find(session => session.id.equals(id)); + if (session) { + this.setCurrentSession(session); + } + } + + public addSession(name: string) { + this.sessionCounter++; + const newSession = new Session(name); + this.sessions.push(newSession); + if (this.sessionCounter == 1) { + this.setCurrentSession(newSession); + } + } + + public closeSession(id: Guid) { + this.sessionCounter--; + this.sessions = this.sessions.filter(session => !session.id.equals(id)); + if (this.sessionCounter == 1) { + this.setCurrentSession(this.sessions[0]); + } + } +} diff --git a/iron-web-client/src/app/services/tauri-bridge.service.ts b/iron-web-client/src/app/services/tauri-bridge.service.ts new file mode 100644 index 00000000..feb1c3bf --- /dev/null +++ b/iron-web-client/src/app/services/tauri-bridge.service.ts @@ -0,0 +1,63 @@ +import {Injectable} from "@angular/core"; +import {NewSessionInfo, ServerBridgeService, ServerRect} from "./server-bridge.service"; +import {invoke} from "@tauri-apps/api"; +import {from, Observable, Subject, tap} from "rxjs"; +import {listen} from "@tauri-apps/api/event"; + +@Injectable() +export class TauriBridgeService implements ServerBridgeService { + + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + private lastImageInformations: string; + + resize: Observable; + updateImage: Observable; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + + this.initTauriListener(); + } + + init(): void { + } + + connect(username: string, password: string, address: string): Observable { + return from(invoke("connect", {username, password, address}) as Promise).pipe(tap((newSessionInfo: NewSessionInfo) => { + this.initSocket(newSessionInfo.websocket_port); + })); + } + + initSocket(port: any) { + const socket = new WebSocket(`ws://127.0.0.1:${port}`); + socket.addEventListener("message", this.onSocketMessage.bind(this)); + } + + updateMouse(mouseX: number, mouseY:number, clickState:number) { + let leftClick = clickState === 0 ? false : true; + invoke("update_mouse", {sessionId: 0, mouseX, mouseY, leftClick}); + } + + async onSocketMessage(event: any) { + if (typeof event.data === "string") { + this.lastImageInformations = event.data; + } else { + let obj = { + pixels: event.data.arrayBuffer(), + infos: JSON.parse(this.lastImageInformations) + } + this._updateImage.next(obj); + } + } + + private async initTauriListener() { + let unlisten1 = await listen("resize", (evt: any) => { + this._resize.next(evt.payload); + }) + } + + +} diff --git a/iron-web-client/src/app/services/user-interaction.service.ts b/iron-web-client/src/app/services/user-interaction.service.ts new file mode 100644 index 00000000..61c08706 --- /dev/null +++ b/iron-web-client/src/app/services/user-interaction.service.ts @@ -0,0 +1,32 @@ +import {Injectable} from "@angular/core"; +import {BehaviorSubject, Observable, Subject} from "rxjs"; +import {ServerBridgeService} from "./server-bridge.service"; + +export interface MousePosition { + x: number, + y: number +} + +@Injectable() +export class UserInteractionService { + + mouseLeftClickObservable: Observable; + private mouseLeftClick: BehaviorSubject = new BehaviorSubject(0); + mousePositionObservable: Observable; + private mousePosition: BehaviorSubject = new BehaviorSubject({x: 0, y: 0}); + + constructor(private serverBridge: ServerBridgeService) { + this.mousePositionObservable = this.mousePosition.asObservable(); + this.mouseLeftClickObservable = this.mouseLeftClick.asObservable(); + } + + setMousePosition(position: MousePosition) { + this.serverBridge.updateMouse(position.x, position.y, this.mouseLeftClick.value); + this.mousePosition.next(position); + } + + setMouseLeftClickState(state: number) { + this.serverBridge.updateMouse(this.mousePosition.value.x, this.mousePosition.value.y, state); + this.mouseLeftClick.next(state); + } +} diff --git a/iron-web-client/src/app/services/wasm-bridge.service.ts b/iron-web-client/src/app/services/wasm-bridge.service.ts new file mode 100644 index 00000000..687de0d0 --- /dev/null +++ b/iron-web-client/src/app/services/wasm-bridge.service.ts @@ -0,0 +1,45 @@ +import {Injectable} from "@angular/core"; +import {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; +import * as IronWasm from "../../assets/pkg/ironrdp"; +import {Observable, of, Subject} from "rxjs"; + +@Injectable() +export class WasmBridgeService implements ServerBridgeService { + private wasmBridge = IronWasm; + + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + resize: Observable; + updateImage: Observable; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + } + + init(): void { + this.wasmBridge.init(); + } + + // connect(username: string, password: string, address: string): Observable { + // this.wasmBridge.connect(username, password, address); + // return of(0); + // } + + updateMouse(mouse_x: number, mouse_y: number, click_state: number): void { + } + + connect(username: string, password: string, address: string): Observable { + this.wasmBridge.connect(username, password, address); + return of({ + session_id: 0, + initial_desktop_size: { + height: 0, + width: 0 + }, + websocket_port: 0 + }); + ; + } +} diff --git a/iron-web-client/src/app/session/session.component.html b/iron-web-client/src/app/session/session.component.html new file mode 100644 index 00000000..7361f338 --- /dev/null +++ b/iron-web-client/src/app/session/session.component.html @@ -0,0 +1,2 @@ + + diff --git a/iron-web-client/src/app/session/session.component.scss b/iron-web-client/src/app/session/session.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/app/session/session.component.ts b/iron-web-client/src/app/session/session.component.ts new file mode 100644 index 00000000..ae10cac8 --- /dev/null +++ b/iron-web-client/src/app/session/session.component.ts @@ -0,0 +1,17 @@ +import {Component} from "@angular/core"; +import {Session} from "../../models/session"; +import {SessionService} from "../services/session.service"; + +@Component({ + selector: 'app-session', + templateUrl: 'session.component.html', + styleUrls: ['session.component.scss'] +}) +export class SessionComponent { + currentSession: Session; + connected = false; + + constructor(public sessionService: SessionService) { + this.sessionService.currentSession$.subscribe(session => this.currentSession = session); + } +} diff --git a/iron-web-client/src/app/session/session.module.ts b/iron-web-client/src/app/session/session.module.ts new file mode 100644 index 00000000..9eed3176 --- /dev/null +++ b/iron-web-client/src/app/session/session.module.ts @@ -0,0 +1,42 @@ +import {NgModule} from "@angular/core"; +import {SessionComponent} from "./session.component"; +import {CommonModule} from "@angular/common"; +import {SessionRoutingModule} from "./session.routing.module"; +import {LoginComponent} from "../login/login.component"; +import {ScreenRendererComponent} from "../screen-renderer/screen-renderer.component"; +import {MatFormFieldModule} from "@angular/material/form-field"; +import {MatCardModule} from "@angular/material/card"; +import {MatButtonModule} from "@angular/material/button"; +import {MatInputModule} from "@angular/material/input"; +import {FormsModule, ReactiveFormsModule} from "@angular/forms"; +import {MatSnackBarModule} from "@angular/material/snack-bar"; +import {MatTabsModule} from "@angular/material/tabs"; +import {MatIconModule} from "@angular/material/icon"; +import {ServerBridgeService} from "../services/server-bridge.service"; +import {environment} from "../../environments/environment"; +import {TauriBridgeService} from "../services/tauri-bridge.service"; +import {WasmBridgeService} from "../services/wasm-bridge.service"; +import {UserInteractionService} from "../services/user-interaction.service"; + +@NgModule({ + imports: [ + CommonModule, + SessionRoutingModule, + MatButtonModule, + MatFormFieldModule, + MatInputModule, + MatCardModule, + FormsModule, + ReactiveFormsModule, + MatSnackBarModule, + MatTabsModule, + MatIconModule + ], + declarations: [ + SessionComponent, + LoginComponent, + ScreenRendererComponent, + ], +}) +export class SessionModule { +} diff --git a/iron-web-client/src/app/session/session.routing.module.ts b/iron-web-client/src/app/session/session.routing.module.ts new file mode 100644 index 00000000..dc376654 --- /dev/null +++ b/iron-web-client/src/app/session/session.routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import {SessionComponent} from "./session.component"; + +const routes: Routes = [ + { + path: '', + component: SessionComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class SessionRoutingModule { } diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.html b/iron-web-client/src/app/splash-screen/splashscreen.component.html new file mode 100644 index 00000000..dab18cac --- /dev/null +++ b/iron-web-client/src/app/splash-screen/splashscreen.component.html @@ -0,0 +1,5 @@ +
+ + +
IronRdp GUI
+
diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.scss b/iron-web-client/src/app/splash-screen/splashscreen.component.scss new file mode 100644 index 00000000..bf8ac9e7 --- /dev/null +++ b/iron-web-client/src/app/splash-screen/splashscreen.component.scss @@ -0,0 +1,26 @@ +:host { + display: block; + height: 100%; + width: 100%; + background: rgb(255,255,255); + background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(158,158,158,1) 45%, rgba(125,125,125,1) 100%); +} + +img { + max-width: 300px; + margin-bottom: 15px; +} + +.splash { + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); +} + +.title { + text-align: center; + line-height: 55px; + font-size: 55px; + margin-top: 15px; +} diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.ts b/iron-web-client/src/app/splash-screen/splashscreen.component.ts new file mode 100644 index 00000000..747672ee --- /dev/null +++ b/iron-web-client/src/app/splash-screen/splashscreen.component.ts @@ -0,0 +1,17 @@ +import {AfterViewInit, Component} from "@angular/core"; +import {ApplicationService} from "../application.service"; + +@Component({ + selector: 'app-splashscreen', + templateUrl: 'splashscreen.component.html', + styleUrls: ['splashscreen.component.scss'] +}) +export class SplashscreenComponent implements AfterViewInit { + + constructor(private applicationService: ApplicationService) { + } + + ngAfterViewInit() { + this.applicationService.setSplashScreenReady(true); + } +} diff --git a/iron-web-client/src/app/tabs/tabs.component.html b/iron-web-client/src/app/tabs/tabs.component.html new file mode 100644 index 00000000..b72c6c17 --- /dev/null +++ b/iron-web-client/src/app/tabs/tabs.component.html @@ -0,0 +1,14 @@ + + + + +
{{tab.name}}
+ +
+
+
+
+ + diff --git a/iron-web-client/src/app/tabs/tabs.component.scss b/iron-web-client/src/app/tabs/tabs.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/app/tabs/tabs.component.ts b/iron-web-client/src/app/tabs/tabs.component.ts new file mode 100644 index 00000000..5f36061a --- /dev/null +++ b/iron-web-client/src/app/tabs/tabs.component.ts @@ -0,0 +1,32 @@ +import {Component, Inject, OnInit, QueryList} from '@angular/core'; +import {MatTab, MatTabGroup} from "@angular/material/tabs"; +import {SessionService} from "../services/session.service"; +import {Tab} from "../../models/tab"; +import {Guid} from "guid-typescript"; + + +@Component({ + selector: 'app-tabs', + templateUrl: './tabs.component.html', + styleUrls: ['./tabs.component.scss'] +}) +export class TabsComponent implements OnInit { + public tabGroup: MatTabGroup; + public tabNodes: QueryList; + public tabs : Array; + + constructor(public sessionService: SessionService) { + } + + ngOnInit(): void { + this.sessionService.tabs$.subscribe(tabs => this.tabs = tabs); + } + + closeSession(id: Guid){ + this.sessionService.closeSession(id); + } + + setCurrentSession(id:Guid){ + this.sessionService.setCurrentSessionById(id); + } +} diff --git a/iron-web-client/src/assets/.gitkeep b/iron-web-client/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/assets/images/iron-logo.png b/iron-web-client/src/assets/images/iron-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d29c616e45ba7d15bc4f98a8ed500aac97f452dd GIT binary patch literal 193571 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

(8Fkaz$yV#lG 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�MVKXHwJ7ItH{erKLoaF|%*esnyj-q4^LnP2 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�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

~qOad=1Cs-3v+i8g7AIkA*t9?sgB& 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�}SaeNNQ+rY&scw&PF^FVv%G_D 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 ViV{iwEWrQ!+rs7s_L^7X{{xz{w6_2N literal 1029456 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
v*v|5EEdf6JJp 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�)PzXYYc2|=_`uY?!<6y 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%0DG5c6InMd=S_aIiw}lzwrSU{Qn`p z2+rCLUsS80dcG=xR=;8gjG8{wQUIPbrH7_)pItry1m}x9=78M~>BV`pH8wXFoyKK) zAN+Cti|X9l;G$Kez zcXxMpH!^gG2n;11N+S|dXZt_zd#>}uiIVk`K!O$dO@5m3= zLKP#Y@Ucaw=?{673}>oCI4I^v@SgYw=~OdO>XH2_z}KcKyKK(=IWA&O3GiOkmj|6n z8{=~DmF&8?Gja&1xHvhBcweXu#3f;;Fs#tHUXo5)RIm5Ec4%_~i?0A)f7_eYiP#n~4_~NGlK}%PYV1CD_8(0lbj(DG zdb!`_yp?ur0u=!C76}nW4Umtut~dZyuyx!~0K6j&wULJ;vW3b}pwpUQZ#6YqkF%`? z%*m`J_MZB3bfV{dk0wd1V7_|4!UMtG>^y2qu1Rd3V7ldnEH`2tQQ-?16AXWC)VVod^eTpij~_3}u8(xP^51mi#Bd;XarDy`$TqDfJ4VdyRV`&*hSB>oVC zuzD<_oyR`N)q_fdvl?mM^lq`(JjFK`!y#bHGq-~7k2!MDG#?(GOd=*m;p_l_g5XPO z{|UitOH&FbhA|TsWUR0na!5ZKs;s8w#D@XKptI@c&d_MG@R=TAz)iNI{uTxBCm_{T zg4PDx0e6R@fLi4dVCj1E|LG6hA1CPP24)g@V(UBtex;1>qW<%d%3?#RAgxNpJTO4h z{@{J2eYNeyY5i852ncli&(s6OM&14IE!hy?D6lC3XrAi`zcXwBmOIdT$;M?Aavz4~ z%nbAAh*n#EuN%!6eX4^8Dbr!(Y8D9Wj73Ewv(z&@hR(RXhOm2>Th_rN{kGXMzXZY6 zQpv<*VLHgk9H|!e4UO}jfiJdM^Mnqh)5BBcO;}3 zDXGA(UtK(>PY^p}k8v3SlBVs#WK7~mIsFjX(PJui?BB&He@jF2*Kh!c6G#gj`de4Y zB=gPhgEemYzgw3%Vx^>I&?yTm)tR{;46!8$X!#~Rk~kf{S-joc84U0ZIapw7Y%e37 z?R^}0QEed5tpa7U1lK0K|B^!xg6hW3#>B>Iwj5T(Mg`32U?MBJa>>_LedH5jB>0`0 z(uDZJnF)9$HGHD*N+50m$esxP8%=8MGRXo}>mfW~cmMsnB)IIaR1)PEF@3JKlnYlE zW43o+*`RNKOxZ3{;mkb|cA_?IEV40-^3HE0 zgw=&|gHLHZ7HtZfH6m}qAVzgsTj4T1zE@rNHl_&$PPwmqP~jVB zHVC{MJr&Wp6l%&Pq;oy`-MK^3)1MsKfzOwk7G~A2c0i+c-c60PXN>&j2c+4s1kglT zfr=YiHntrWbG-ldCr9ii%(OWRnSx01PnR0&3gHxDicFC|egK&w03Mm`amaTi#`BTs ze?8TB;*1;K;W*}pV|IlsPyv#KvUk=pSd11}ZKCp4)v+@s3yOlkZ^~q5$MV|>3~z7= zq$EE{zrkezRKRWoI#kf$s zqLvmaY(O61;m|EDY!#t!Oo6Yo-AoT^^BcGIp(CMq7(S{i(|6K15+;s3W09B)>sF+c z|5`oUuN$6pF-|5;zDgcH5u`UZKG+a(9&^N6m=%JU@RC9TO4&7J|EzLf-q` z0yL@92~7~uq}WEiJ%-AMQvq_pHWD{7p)8#?cBD(%@Q5w|;H2XTjAwSGFTyLvPA*A; zTvobbmki5faC~9biU?uD!KJq!XC$E0NQJlBIWlc4mL1 z$Ce%oVtiR;S&)ELQ8PClMTn=sgZ^o1?c$VS#@=uKB?`JLV*vw^qB(KAJ9{-RY~+?=7N-NDy2J$Iwkcg%8Qd zpG=WWsn*s^8e+*Il0Hp##CfzLfbEKI$#xuAwE@%nL0ekGC%2I9?nB_S^?x-qZUMjo z%5GE;JxcWef7bnpkkaeo8Tb(!K&%jwEAo-idn8LaPpRw#2m;3b%Mw}?jVeORaP0oQ z5b{1vKx(Nm=rm50G3;L`3izW*c|eN-qL29VB)kCh*OE(sC$v1=nX@nn*hd+185yVl z!WF=&%gW+}uHU;~UiYl9`NU!hWwa|I&9Y@o0tOan+ng7-2L=&Pl5xziW(zIzsYVrG z1>jy}IOreresV*tZJyC{Y7U@_POssNiDaf0WSmlPbZmqyZCtT2>(K^%MCmS89Omz; zltZX67m~{KJeI=>${DeZk-U$pZWKPHQgz)v6dZoxEPjxD)g_PIR##=KgSl#u8Z`Og zr@<;_NulLegQng@)g{o?54~&37+H1x{CN%5{^2k_Umtpk{Bxq6;B?x{)hZW!C7DE) zYbn(Vcxkv39O46{mm}gkd3k6!6^f}pu@_Dta>T^~?%1uI%Ri{d_X-5Ec$79``8iHP z2zN1pVHkFi>c7eVG%SeSFT^Z41{czl1Q}~3fgsqA>qL-CQ%dpj11xVV2bPQ)Sf3A3 z6`8&30q6PF?-yU_p22OZzvBTZ0fQyka(oI zcLMCF;EdJx_-xp7J1d%OY8Ofd)qxQ^1MOCy=W?|$V zdP-D=*RUM22*D-Bt)V>M$KEm!QPy6^XIcW8(Ijpl3HE$|@3FAWq1{mV(>ATJRxWbM znt?;`jdoBi4ch6Rg#6EnS;Ei!B~vyc>@!&b~mKJ zCub+J+}z48daK~#fBXSvdWMGoJ^H`Mewp9&tQbHAOr2jJaO8xSf6O=6|Cbe{#p~4w zIz6Ocvz-@k1!Z@p(m-EXr~Tz>{~jE>?<=G?6WTpUd)J*!%>hI0ltzN2_?W39Q2kk3 zxSYx3^KE;J@*}%;UjK^nZrhQNLw$h$636&1yH-Jd}t2jH%fNjezd#W`=giR z$AR3f{79p69me$y0l?y9?X3h7{i;rN_<`el7ZN_enS*4~QJ?k&;B{Q~;*kIJi#6LF zma7ICK04z;q#0qzS!``D$_@KmP=TCbpzHOuTiQNdd=0Rhg|_)_pfYlptal^*VamFE z-kjY&rus^jSSm2oCi>u`zl1|TSChY#al-$u;b{h84V(R`XMkt<@8Tg6fm88B)Oe>1 z62;tCLmf}mA1@ojXm`iuFF;#g_wBir45m{`?@cyn4G`HTE61#2@FB`>wR`x${k*|w z@~>PF`@6g#MSawPlJSW5(QQJR$dURQ0B0~6jt2LEhG`MWf!@T++nbLxFMT`MPx!8o z15ZXF*`-uJ23iKX{^t?oj*V=svtE>)n;{flHEf!f2jYL$jje*p8G6SM>T`!FX{^rr zKg&$Ko$?H8i-=9e^|*k1{wL|d@slI2!7=?^BMsH&(*DjdDZ}$~7|8idRc;Xx$AlRJ z`ni$}pOz>jwCl$b;6_1Jw#q6NeR3CWT!c;sjtj7?YBxE0Y_@8+#h$Gt_@TM8>05aI z?;~AP%LdHtVThl-cGTmyfB2jo{9i9L0ui3zS>2kH~sGkev785Ds zczO+L-)@W+Qo`QlDu1p2x%ZGYVUjQ5$HvBXh)I60!38(EJ9DV#-*RDU4$%2f_W~di|~WkAW3Ea0QxQ z@%@}&4w_%^ilvu)=rive9otfVu-sqw#VJcRdbYXc`KE*hm}EK^)#n(5IbI`V@nX5X zTN+}{u)s!2{YvcxUCUR&4EQo(&qBl*q}=EvVO&KSB+v|VfI=d}W=>qGD|7X#aA0Zx zIqe|Y+_DNyl$SzC@5rn&6|?8`BX*BAQlr1TVr+wyc@k^e!JXO51a^y9`j^`q7MDJQ zC})R-3oT<@{|bWL2N`Ljik;mnf6CRHhvH(ESH_EhN0pe;n^3dsq}KANiB@b6$_UBP zK-;D8+GrF3n$@agmrfRhbWD0Y+u2t9D+89*@tgf#ln^hElX7Ve+}`k_c~i1UL?+(= zdbIoxrQ5l=i51n?BLRu;Q+yE4ks{BWt(aT={y42D_o(URg7H1911L4kvPAT z^>7iq-uCFKXcviAGo~fQ3+jg{f=1-HgLaFtNoRF|C^DzObA$wB-a_PvT7Dy({W(hl zQZxmk2Uq@WU{JgE$zn#jE)BKf;YMmX>Gj39xRQu`uLIdS$l4Pyf zLu}Hib##mCepXgC#{y%FS$7c-WUm9>^@wV=>e_q?DzgO{AH;`D?c&4Pg3ruwr^BAl z(E;1v^EaVn{EI*?R38HC`zU*}%BaKBm1SKI2vuY{#lGSMkm~nso-JS?ix*dvYQ?Mv zY<&o-PFi#J2T33;V!+P-gqFb#b#IJeS;MmqG?Bw5&4|B8ss%2WsZ$M4NqE<0ht($A zq!vz&y!R#|jWL*0Nt#~25)z%R2_+03x<*D$3ZhZml1e%WPx5evux(l1u4=cOB<=i$ zCpmIdm2<|U&`XeC@<@X&ZKM=3CjT)yw$~^~o||V=@JU8L#lUT$8kc3#?o>an1TG?M_NVyG;d0Y#DtO5T4PoHp3Z2axG>&?C@pECgv zpe7bL0Osc#1-?zPM=q=ogl<~qFY824lU`xbh#U(c34`=4q5(J$Uan%2n{a74WS z@qKeSH+cnVlj`|`_+V!Ke!?U29t}9#G(cJd8!zPnmqw3O$T$pSID3?ZiHnFjZ7*KZ zHWGOzHQ}8jBOtmdfw@twXd<(=vt+M>Or*l%-^hgQzT_i+;|EtS;$3+B@!!eE56mCo z2$3c&ZfOV|y+!ruRWNJ6!_njPM?Z+p4_VnMH)}gm%Ha46V9c!tZRg2}H3_ShhuzI9 z1hK;Y{x&PAho=j^=i)O$rYj!i5?BgujFgB`MK|vl(!;oy$}e!XpO^zywG5EO@{BC# zoCiwGSn%uN4D%QU>pdE%s%dm*CZ#zy+Y}*pqr59u9){qR_#LTO2zIjqw&e@)w_clK zYF`PKVQW~OUX+SX2*Uh1$-D47YU&}pz(Nxi09z!-wTVTO_>3I6Lqjh@44vObjx3a=<`V#D znZB|^TC`B2_eK3g@-+XvC$8ugxVzZd`0*X!*E?Dv*dobpC}FE4 zB{Hi?C9x5VU-8ki9`Vhimsr`*iYo-63&?3>Diy+gD}szgxof-C(qjQ^Am&Nb1miOM zUwPd%*a-V_W1OtAo*En}p(}cgb+~J$>yd+Me}r!1<6$17ZD$;<)Eemz7?n-2e~-+9 zSv|5T$FD>}~e; zR->5)ys%5$-8okPoAH?qPV==o3cZ(gotlj{eO4GtJEXsA`WWT7!EHgL2G&71DOh73 zq{gsv(lS$VJ2!z+qtx5WM>Q&v zWZtKm@b}`2kJ{;>&REu4(SCM!Cj{IQ{@j?O0wY`d-XspFi!xspXzzr{plieEeNKcIw=H4$=@dOZx!c>PaDua?E`MBtlC$wnjB?FY8r%(0 zeFTYwI=Tnu2Ql7J0?Fg+FTBv<1q=?#Iv3YZP|Yg|8{Ml`jvE&P<^42vDB_HYdZ!RS{gvg?DTC8JbCa^ph(>I5R8s_-A=!MGX{58>H>hp_p zQ@4^T=ZHz;mv7x)6gg$GCAi=R=R_;;ea^+@@Ca}cew47-PB3O~fRiCjcHNPU7U?D@ z4F1nR5t1l+L|wM&Rs4P5fp_nZ`cC(A3Twp6JmGWiyx(_fG9C%sJ8}n#7;Pg#$O<(| zF2iNo>X7W?=w)8`i@#zLCWh2QX*JXk)!Wf;^rj{9pJf=_1Lu};^WJG~ft^9DfHu66 z1)YJS-oyzsw3SIF++Q+Of9FQe#VG?G)d@q$Sqdv$iio^dKO|dw&bN*q zky`yidodGR4T=r!qheV)dMG@Pc3SYeev-IdMhx;fU&xq9w2DN0$M7B!!sPmVpR6d165;dPa3GMET^r;LGns=FV3BTjo57XCuYiJbrvRWwF7%^Ri*N+aMUR z+Lu2qC=EP$V+{h_Us`|S>t(71w}x^QT*yf@(%k?jrOE z#wnxlflGvSPb6WNKsl%?URhbFtIC7stwTUXTHP!iaDPcB69Rvg=UbU7b6X3_R` z#w1m-UDw+U?G`@pR`r#f(8Ue;i2*${DIzlh{W64TlPZrEXVRcp4dYP;e32SKELKVU zT2tZ<_iY5d1h$GFP2wdrN?8y)GH&P>8VmwyLPmL)j1-)r6dHOlVz*TCtBCi^w1eMe z-xNk*D%i%Lnm6LSACaRKlR(7*LbIw-RRZLK_;tpT1x=!!J|&XqiU9R?GKYLv2x}!(;2)&#hdE!iQg9Z0m{v^fn-s2w+YY}jAj_Q6G0 zzBj2h`IL|*uSHmAQbPdIpFE^wSIw?nt*14khkFKU6UeAG-n{+O4<++;k(7|*Sf!&nbvcJW5RWCBEw=?YBgct> zKf%qeyOK?54oKs>WR@QC8pBSsxROv0J7Ov; z7?wRVIAUu9j$}_9;*~Br_F}e<3-wsiMqZzyzG(@W8b!oqTv^{bJV!9iL+Y_h%Sso` z5fj_m+D1`O=bXB}fwECi8u>kKkDz_&Hl-GOg5N$pM54;$?D6y4+TX=c=fv{z>geBa zWE`AcM9Bjz#Fqs^JUtty+xzyfXZ7VTTm(Y07x2AA-hIj6RlLXzliCp>MLmyCIe>OA=j-o55z^1suLvvBYyg0z<*feY`dt5XZ?a$=J z@kpb1@o&#mnFDs>1BMdH^T0b%6I?7yVX?$@sSxe1pQw!w<1I*5jsKmK9&e##)?>Wt zym|gzZ}}EtSy@Xbmma0W1IB5N5V9q%3$gqjf9$FUd>#l&kdY&0T6wMq@JS{e9EI0U z?~mHfd;o;nHkV*~NOSY#GN>1*vKTZiM5QP9B$_Y-zr~x4=kJfOW8`XR9+fo|jp5@T z1XLnA{GRM~6ItgSG39Sk#8roLq6;tl5X_(u(++pwSXZJ_JHU=__jYS_%3>@ZbS zSk7Y19QZLjmln3oL@9Vr%Lj*{#C36uF8Ow0*y)uSrxKWxk0X}BU{ucp6qQSIQF5bg zfG)P|vnOPLAJAXx_LOXqlD1^(Ww1 zmfsdJzUYorC9ht%i1#C@SWWvP$Q#V{_B-Xarl1$%JyeDn#3@Al8WrI&D4@&?jUX8% zO;(`^fo_imA)AH9fOW+`&P>HH0}5JOXZU@V2)RXW`=HY3@yCr3M#yeD<>h{esjYoJ z%9I}v)=b2?wOX6q;eCjiY{K?0I++h-sL$xux=0|Op=CA&X1g85bg;9zsW#E})_-;E zpHEg}$&QZB1|k=x@9vt_HH=Nedy;5-8Xp{6jn*y^kJ-9hee%tU(K%oOfAApD%kQCW zj{&$qG2`yPReX+_%7kj4Lc{Q^pVz;NQ>*PBW^E^x5v<`%A+2t5igTxd)LY%{8z23< z$O%5T>7r#07MK&&J8PhVzMO`@k>7o8F#$-HEc??yJ?#QW<5Fe@554v8%oK1*1w!Zo z5up=^=-N$^wHP_1bG%65Kw6P+!emB7P&kUA%km)A^?=(NOdw?Q^%XQ78X zi!{#o?VaOM5Lvir=ebmzR^!3;KFTL`tSddij&5OIU{Lw!8WP=1VU$y|EwVuBG$U}~ z(iqsDjo?LDc5%z2P!P{R?@#z1F^gKqHYf$#0bD`e$m7pwqV6v5nMQU+^iTl#K#l2y zyHhM!atBu6l31(kKU~?q^L56Tn2a7~64to0)fKXD3$wUI6<(SmFpG0zOnDx;_{19+ z+=~K%sF^!j4m7lIhjrF+8;$u8jlmu1xnvX&LE^p81NN&14C!9nr_m(<7bYIw|Xd*CJjITU1P!}o&#c;^1LR17q+>p!s|0JRDM>&rdxb9 zNX?k^uk6DkAUQ-amnNkZ|J7{jhB>JGPk*Oa-kHn8rw!e{CZqKW)t7K(>!+N|>pbVOojcKM~?G3ZJwH%pYrvZJv8SNjD(&x&pnZ z3zph#A5G7OfBrta7+y9lyv!YBu41-y0B9Q{d#l;?jaToD0k|!!!pstATQx*66yO00 zZJtQkOq#EN_ZGf+*<*iI5^(dGsCd~zN5=Ul9%GR49V4LWK1nVu5D5cRL5Viw-6v zQWxyFPds*zq+Wl7|9*$S)p)S8TRyTzF}S#aQRmdW^-Cl~wnT7x=ZapbF#CP~gpbMQa-Q?I>X!4n6YoxW(qD2CG0~VOFb(b>g7l z`ta@E-1$3ZCd&N%k)7;ETi_{eRzH zs%RRSyhiFhY&}mRCfIj}R1EXA;PKW`suw!L%@eGzovLI;4fD&2R;1~j@|#$G0Y(R; zz3QTmF;s6aYpSas!f9xtYC-X)f6{B?^C>WYNC5BnQk@eQS9`z8E~D9A%6NvE2*$1& zI=2OC=UY3zDOGvspcB1pURVVFnuSsi(UmS}x0j;vZqm^8ZtK+R@z1HO@3kkc#A;#) z)~0IzL;dJ>|ACiwor)y1N%3R`73xqaT@!aXI>6-&9y3a0@sN)B%D!iEfZatBd~OjU zd04q6{4TWo3BO~NxPQe$jC^`zV8%nNMvbwGn;}Cji2r`h*-;pyO=kowZ2{+F$Sah9 z5?I`eKz=ec?xzJaB!kXa@SIFxm^nx!uD|<|yzkYa7t1hf{%SKbY%BRN?LLEstsfN! zPIO3-ypdyuzzVI$)%L@y=O(F;cvG|y-EM-rM#)Gmt9c>Q+z1^Wjbli`@sn)fu_S%6 zL+(fOqpHMW;E{T>%369m=$}v)`eLzt9?EkX&6}$FuCxT6?Cmag# zjjZ8Az`kHr{WL_Mt<$ib?yL%&^j`xIQ3X(YU+`|7ecHc*i%A@Tk)p?sEWO@%c(_gH z@nH<>?szmn!O9rJa}Uf5e8N}51lza^<>#k?L@kh9DJ56!3}C z|Fbiu6UDpX*b(qLMA^b3c0NV%hGF|Ekk8GyG!_$JT!;aqK!0nnT`+Q+9?(w;wGA?8 z_{h&_uYuMEGOAWLb33)C=rl>nUt8)xCnD9|^*Gfeuhsj)d0VM>Z`*1#72GDC|!__0Vh_weQu5rzzH;*hz!Ob!sVT_-Tf6B9Ccvq z5zpP)-$qvdgyhvVuc>Z$*J0pr`LPvlb`kfvj_~4Bv-Yk9YQW)7uozz;Yyr+K4}&(; zQ!z!<>|F>eA^n}jA|wDZi8@rr0Jm3=s$(cEmKnR zs&Nl~dqp^6X)ZtVUW-)*CTcjaVZ#U)(q~$2LAO+E@O34fEA-;d`6*ML>NYGoxtO2xN{!H!#cieeCNX zwf`;@{^yq`&9jEsZpf;#u9?Q#lCHoxgb%sy_>9r40EDfU)w79RGQDz)ircTBFv$dh zJh7homzE^h>1EAji0`YPoBmuj4-P;j5?o+IOQd+^WEQYHZem_LbVd>!bOrMqXf;>H zHLA5fM)3Mae9fT|JxWouZX(2;IUV7?4YJttD~pTsN4>`cs_K^A^~ zL%%h-5qSspL6=x3jT=1PuP}TgcW*%xb%;RwHaA=l&$!XZF1%Bdwg z830sJaP>`Mj$(Cc2~E@v4HXy&ocS!{`r@=( zJ}_-bd-FXvs)P=-7V715NXp--%7QW^iMNpBUr}}ZhTmo<V9+3IylF{Nqa;DRmq8XV9v8?k z+x^G1@K`qQHYLm!$acJ^U0VOwb+p;^TGaDvXjYhr?{hsT?61RyE{8+6O%=kLdWZi5 zfBO}g8XDF&Qz)oM7cBZTyO0QZYuB{qw9y&tAn451sWK`1_3^;r zJC*&=nzt}e70}ss#=pw#;qVqX^V*)>9N~2we|#YzTL!#uEWoT&t6!Ds0FRJuP-pcM zS>Wo$ZhQR!DBkM?{<05nt3g=nznZ%MF?`dMY4pxRFJ&$9`lJB&{Gp4u{5WmvYWu$9 zw?Cs(FE5cG=Jd$4Or=5R2*^+iw~nu@=y1#ETA*xqqEOYyQF*jAxU$2OS}7d#F*rDw z`N+*c%>7f zY2a+sq`v$H-_7R8a!GDYp&(}oQ~DmFV9)S;fi1q`X;(_{Q4Jb!M;++Fz)|xzvG~Gm zjmDnvrg_++lul=Kdf+U)Zljj$hqsThD{J_kGm0ng%SmZufZ%sXXkWJ+d%~u3hGx@7=tH1jjDfzqK z|8p1_vA8m(MBhs_w6>ZD#j@V+bwz4=kMN5Y?8M-i>*>i@>9GZaN5isT4^^T%(_JF0vXt;3X_VL=CRs!%K*JSB$9}jp=p+Ksp zQo~izwApDPxKJkCd;(u)b-f^G>#_Pd2{?%?ob10@h7^WW&N%TVtJO?P!Mc^Ph?w3Gh_dI&Rm#JIq%0{hI}s55bVywSRqe z=)E1QZ39vB=pWHDtkKlBXk5o9p_M7QQkVPZxJD44q zye0`NA78i-pnG7;Lz=xp2+LnYLvHw-m-9j{>&Yqk>w*Wr*+eeo5SjiyR=y03n#MBS zATdMeTrw?tBlc;J^HOfSirV+CjQlO($c~X5E(aiCsC;BuJx-dJV{|9q;Pa`KAm3

Q#0}C7NpRYq}Il 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%0DbV2{z@4 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 L0|7N^HsSvR1i+=B diff --git a/iron-tauri-client/src-tauri/icons/128x128.png b/iron-tauri-client/src-tauri/icons/128x128.png index 272302a9be411e9c51889a5fefda1c61f1ccaa73..3ef9026b0c9fa19ba045a3d6d60f3349acf7abbe 100644 GIT binary patch literal 14404 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 Rj4l8G002ovPDHLkV1l_Z&|m-n diff --git a/iron-tauri-client/src-tauri/icons/128x128@2x.png b/iron-tauri-client/src-tauri/icons/128x128@2x.png index 9dff94fb7a87b1c4637fe72f20a07a1cfb56ac20..be89dd04bcf31826cea16223650c8ccc373bbd89 100644 GIT binary patch literal 43117 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 >+Qj;Y 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 literal 67519 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�t;305pg3{s2`m7W2)`+XuW<`!d?5D zy8IfRJ5%A%vZ}vYns2!fuO$4-J%DA3cS$S;k`_pH@d8hbv;g6IiNb|}ZJ3t|aX^TXVH z9*!bdwR77BXlo7OVq63Zl|a=hgU4^c-0Vqs|NH+DZu!+65J|KGVT>xK49V^1Jte#< z&fuTdm|k06gtJl@aEi;W%f}lFfuyzPLe441>2IUHyZ8C62cH*!CB4oqK&qt^DKz0= zoybnqa()d!UtPjocH<>Bf9c6yCTN1HNV1+OZvIe&1P%|AJWwnY;DHD3gLS<<&^yox zc6kh}^j>h%2dN7Ru@xOY_QjvV*KgSiRU-yOHbR8{e4qza2U57eheTjf#x{*zmtAsq zdVc=Ri}UG<3{lQs>0eU-e4q&DpevP2WBvWTBjs}G1(kAH@fco&iA{wI2>zpnQOf(P zem_hureSh+9CmCUf@Bo)%asN2!2*jMx@bb?}ufs>rlQsdf2Ho=Ig zv|3|X?2`Duu{>9;S$p@fng!S0`$D*dRd*YNs3^%*213~BF$0y4j$sEWH`SnlDLSt? z;MIk^noi{RDQ-5vy|2l%UtI|(vM7kV?Y!K#F75&WP-+uL0ArDXCYIDTk9Z0ij|GmL;Wxd(iBfJG+`|Nf2Nz}J5A0NCCbZvt|d%@r0U zb$EE85gnLgRVt=_@vcjLJ2f`(tl?uPvMyoC`M&&9-%;x-3XjL<2h1M8{9*=nZ65%?ms(JR@a6yhIehD;yTKdj;Bb{? zIkg5QzxP93u4 zzE*X!DX5=O8N=-KG>jZR0Gs-IAQ}!Me&dC&egAg&$`5V_(-Y-X-@s9Rs3{ie`LL+& zn=xbS)~$DsPmDk7#EBDGNicHW3;&t|Sf&K1{WO!!K8Wb>2pWeM5O<#8(H#YYcrH97 z98@HvqBTWN;Q06q-%5FY zgDg6?_;g?8vA(8D9DvG_@mO^f9u0Tb-KQ2~Req*HSquUp$#Wo&08?#5hC($E7#Z;_ z2Y!g?iBV*v&ii?oqzP?w{neWAGeuI3u`>(*DT41R1jb}`z~Mdqm?6a9hT+%D3{6{x zfx*pi^R0W}3*Ws3@_H0ZHNY)CfqkkXLJBIhBK9Hto!W*C8}6E!nR)i`@UScV=UuvQ zO#z&x5};C0Tx1XS^z@9N5WXN^$SYo-VTlGj0akGfNp3L;*4Stsj*aBt<~tvPg6#+J zgfVSJQ++I6cB-7Fa7F-W_441xp7+2 z7DOPhig|vN{x4*DQ~DNP!QO|dbRAqz54F%y$&@+(ynO64+`rURvt z!$~`fl`=kOL6wih^MHj}4b!Zk{Fk}#*^b~GG;Iq^JQt>2#dG5D%(`itU|Tk4Af}y2 zN$HkJa#Htk#uzLaqmIv$tkPG~1b^ziP|2$@%TUD>VHuTB1s|)L80O%M3>0=cCd*K) zLcXN8#+vCOyms&2y`PhfNa~u~f9kf{#)JRPn_MhJ9j4v&+q=Jf<(1FKVOHQDM@Eis zF+8eG%y_!Sh~r0;{$d(R^C8frncV7YJXfu7>&f{8G-+^Ly16BtGjPUU`{fmPOEUus zxAr`aXBGV3D)>+_B_kosPP9RDG69LWA0h}+2K)gL7I1eSgw>XqMtx8>1Id@l$xx|o zf$Ah^&t!9uTFAoe9Nwn#kSmy67%i%oz|f;oWtUn?SX-Hv8`LTegEi*BUj|}Sp?ZMOY+Jl$Yv@qIWYsn6B!truR<=D7yT3Xc~u*&vsFT?Uq-8spHDRWz^h`oq40{vQiZ`pstUuy6L5TV7G@W#yz~~u8kIl+Y}2ZR6*P9+ zF@?ZaF+8X;lh0+KFoEK9{=5`+{x>NDD#x-N9tK#r^JZ;o*^;lZMaEEs5vT~!>#15* z=WkCOIrg#PV;Skm6mD(5g|-X=irg!^RVyOJj`axm^##XJYKa--m=Suzg*#= zMFm5Z5)*C+3HWjhfD{7FCSaCR!w8r}7)eQxmq6JDVi6%FqbfQJ2LhkVrn4W}yLaDV zViR7A_tzA_??VZ20w7`%3WY;($&)Yn`sDQF4JzdbLCpGVjA`8zpK=-nzzcLp*cG&p zMgSPi89?jr#c;yINk1^wMaysaPywLZ8^)acroISVa$z@Y7;FZ=PAmo<$X8U1&nqxK zRff5o!l|;EK^%nvZmkWT9`uT^fqNrDsc;3r$u#Op%T)lhIo$G^ygH9uZ5xHzBKN+U z!|+0ZxZi=E7=sqX7^o4)M(aK{Q-I&@8-xAFQ&6!HEX4PgtLWxCh>uWMU?M<>zXbt$ zwBl9n5x5G#4Fg<(=hok0_4}-jBRG7%5bB7Esf5E3FpHHPcmDd$y=3*}*tIpYf0o-h z2LejMh6X;rKg_5mKG>h<_K0p?v4}QG09We&NV|%nS47h(4^JP;s<>15p!2ksqYKI_ zR>(k4TO6LTdp+z}A4MdeNVZJ`<{UUNTZN+&MaX4Q!1NdjW(WaEA5YP#3R+^7Y8G@+ zzywe$K&qD=t4j)$8WjNdYAkZGMeOZRTP=RBg9?Q#dv3l66H_^84dh_3GYD--9r`+a z2tuxhfp{41ePj|wQ)R>`e2}L&p6ItJMTee*PKZ6Q+6h{zU09LRm`(u*Wll%J>ZRYWC5L?jd*poI)W9xmV51TVUJ z2W%Tai>{WTgz^0&BNe#g;d$6QmWQm30|1UxMz4(Tj|$(bxH7D||2)F2Twpfm1;?v^-M zW(np~3t%FQLJGtJF?NhH2%-#NnbK*z-ZeeMR#L{2Pk;`EDb-5FUny6DvzykE%G(`2RelFN&)a-no2ucT3VXWE$qbmQNQ2c5|77Okp|(3*Zf|!Jvjl< zXq2trIQXxr`P5F$&}b#Ajjvg$D{eXau3H?$!8WSF=fb98Dlvdp1oQcJ4*G%xc+us( z@a(7bLCjy~K;z7!2EX2ug1Zhb!U79}>I)O2t#IwRz>CbD=ne4l5?;zOP)8g{8mxfV z4^ecRo8k#bCX#&CAMLRi-bNzeN4$Yv$J2o1g3I21UfyGiIe|1ck2mok5@%r;Qm_q} z%A!Xwm%{LZK{VvW-Gbh(Fe(Kd=4Mk+EMn?VL65{CzC=Yd?Lb|@EGY_-Dbq&fu)ME; zhxm+-J+~1oZEb08o*Ee*xtA*a{s6{+8zP#|7*E94;d)HOqOl~NrUlb9S>u{r3jrRV zlWli*cPDUR{uy52zbKVT9mMH@Zl5O<3QZ&vO&>maa`Y30VgY_%oNi>a$q;sTclJ7t z^+G;C(@|9AEMOGo)&SJ3n_SeKr3S$~{Nub!DJ{RM6Z`cd1O)UuC#V~}3 z@B$%KQBQm16l2p+&_z6-^YaU^urP-yKr#4J5O)xxu8E4PEWkO$EgV!{sZtewy>}9( zFdccpU>L$a8!p-22CXqa+Wl*;t`e2T~Cy)BVQ-lnVi7e+>h z7vLPA7<;070Q_V(H#cvL#bURQjg4KON~L1N<%Sp7gBM;)r_-@wzVPh9bwisx9?vbA zZ07gm28vOh?QJc8R4f)=K+GQKCaXe_)Ec+nsXH_@0M&TM>Kyv$ri0<j`=5>ieC9AA)53HVU~X}oPt;T3(N6Hs;p>UxZF%A!u)I#nfSlX9B2FM{&iD)pt^Ag6dqf1&0w&NJdeRgT!>KV9r0sEB@#=o4Bm2 zyq6M{fL-Ka0jeCRA}BdElZUzaG_)WV5b;!@*^k~pYZ7v$3QWu|@~J$W)4vhmbH$#m z>;W`}1ESx+tzVLp`yAGU`;VulrpDm+7ZP%TZfk2>kLUR3Bg4a&EG{n6)Mf+Ejb193 zhcHF?%>`lZHDV9)Su(FqIb)_yH3n8oW!7+hgKqwf3 z++r3`;qup6gyQ3I3iRF)xqs>|z_4T{T|h;!04=cu!~;I?dnz!1A%TwG$;8Y&6im`X zDre!-sdd+;+JD3r6xyBBU;wT{U=7Vg%;oq~o0^+~Gt)EQCNS{#U<3Fn2uH%vNHlu; z?Ck7-*XOI&MxTi+56Zu7PmGT@p(pTc^bG!^LcQe;Q=-=tz+*V!X!Th<7W+I3|HXK} zN^PAKhs!L0;FA#K+GLp&uh%z-Li#0K0A+Z5Q=D8GJ^At{Uxu#r`!LkdXoR-n@>rcl z__+c=08EtpJGC^NO?BOQK4uoVQsY&5B>aRIII?KRvA{%db0J%S*~uAHy}D~c}|=*wpdU(04PncsuZ@si?> zj<&y8%w%4M-lny}dgKL_7#La$3k%6)ve|>K$J#yxB#`5Db+*4{^yKIZ z@NcsGp3}Wv4*NteAUD|A(e)ZPJ@a^;C%oXe_~S20FD%fkdy8NA2Gel5&7u?>6|PX7 zJh{%q21EcIHL(;H;i>C1c*FB9hOIqG%$b*IrY)|ZFns^+6L9;XdGHZ>UKMSzWcO{} zA!mz%7`C*ju2e3;wr$&C+x8vY%G+)j{5!5a_w57>hQndF@S+Q$qq7q#m1=E1fXLA^ zp1Y@8i<%*QQ5Y*YaMN!dhS7Oy?(u=wF2R*so8UE9ZGsI^3#?KaYy;1W#wRp_W@8{> zEAUuGa?*Hl!|*tZ>BZ3cP3xa4*M#you1B75Xi6p%9>en{3SA_jNG-$TDosK5N|Rd^ zRB)xY2Lqv}h(P6uX>6a63V^D(d_FHsPtROcES6kg?~K-pLIDa3rlzKcPGO|@-7mh? z-Q5*8E%R9fj*+i?w#&=LoV~3&JhyKVO%-2CIq+7;;kw&%&(_&p}yF;>qx!;Ay-&k5|9(l39_atDO`4%u2Tbt`{D!-|s3D^!(zucNl04B$;Tf zM#1%%SWO`rcD|4&QkcIAAQmGl6Q6Kyz!OmcaM!J~qvL6KlAj}l@a&G07H2k_tu(+% zkBbhV|1i@SnVp;KBf2e+1F;*G!0A|WRoN3j1Y0^a2UQD@&@=GI&s+yDds;U{^eR+J z7*nI$>@f^@;6w(#bI%NvjV3M>)VxCuPOSpYai`j=+RkNttl-eJ7x(#dyZU zvI@}Oq{6GO-U83q5P?uNg&B(~RPlFJB>_p}_nvt|u_CfGTrsjMF;4H1*Z*-{-{o@I zDq%izdAj$M1uQ7eIW~aj=4!+6y2rDo0M7Q9(1m&tru+B=ZpV3ad+TaqhciJw{>RhY z+H!5htolXkJX_HtS-v2+g>VEZsK=s_L>cHtfbW&p?1JZAwjLq~{y9}j-Ff(wp_8*F z{OC8wVA_uH#vP~>d220il%Xm-X33@*R&)KUDExk30Cw-%4MA^!PS&#VT#w&YQ);SE zNC^b^Hg4R^yZb~gU-11i-pq#}AzF0mrLrvyM~pB$I6MpY92^4$F%8oS0%ky=MK8i1 zJ$(qCcS#3CSsFBxCj19adrnt+T$Q}y91N_K!_h?i*}s?dO~|j~D5nlVsXbpOM&4nsFN&8#gT;NS@uobc<|)f#BmB`%$4ub8{0F%UnY-Himc1 zHL3Na)G~LWVWU)?hgCro- zRYhr}ntc@OPZxz4aW-w*WIxU+AQp|qd+|7)Y4IvJQ!STDK#2yz0~}a7+Ygp>0^(+t zF&@sr(=O_UH{Q4#F6yyB&5eLfO)_c>Ljndq#0ZX0F2LPKbKrPlpj9(y_NxdOdbrhR zOqAi0@Qd9MeFP|Ufj|(pY}zW99{YnXG4e$GULSe^8*A4AWZNzsuYx#$VI$ISnOrVR zPZ&<-6}V&XNxYxO_ZOf99;lcKc*+@g+WIKG_PN{P!U4=?*e2%=P{18Vq6ljChF%8F zFMw%C+C2u(wx~3F5dqt027|$Fc$~rjcRgV&&-{MBB~sAJS--bfC{$O}U{8SU30nzB z+>M-!62v&?Go3qnEe&~y#}cK*%)(b2YP5gXjgO4-L=)GIWlBNDD$d1SQMD`91amnD z##2RDC=?LTM`2XFpcsBmuxV9Fd}3|TtHQ1(3!ZV=Ane}WhxV@kWn2q1LfqktD$l0_ zRappb-#ZBt1uy2ytHO3t*B)_d>Et13JT=B_O8;r1@Q7FkDi*Z&wn2ACwtNYw0 z8(?Q%rjJosxD|RX_@#43AqE{SZ4i&fVJ0;TOdcCuHp26WxWgiF47~sk)eUGt_|3^G z?C55&vyH+WI)8rNz*I3a(BB$>w>)PD>^xk6U)_HIJ)#O^@yuC@Pf)Eo1P60Z0NgwdTRQ^eE93{Y5@d*rxuFE(SYCg3q#jm zj9S2vY(q%oY~m=gIr$0a0X$(9fY0Yst5r)bxKsEemv1(@W_nX|({~Ra zKKLL!4keh<{kJ;WS|J(sU6VR?0It}SWN&%FZs-nspjcI5K39bksYMu`nTPS|1z5;s zxX1;)8g#eCVdG#oJZYc_-%q{kG(d!U>wR3H`4~ZFqP6nE@LU1*9iPVE*n&cCa#}53 zA#XyU^>3fY-rK^A8+BNwys>E{IrBog%><^i`o@Mq0F3wux_B$^T1%U zADpfI7=I5!$rME~L7xr*uVCb|i6*Oy* zPo7+V#oP9653&8XXdBb-5Q%_Z)Gd#9(T=9-$Cz4%yFJjJgHA8oOuXZP&gfAGbUFG;0Sksa$=>`k39T&o4%+FC)s zmU#96!91-nk9qw?h-+nN^;-~D3ZNAiK*?chtCB$>w$Rd{Wwc!MUQk_8iZETYQ2{Ja zoPpZHF|BB!GPiOIV3Zdjia1IPEq%~JWm;H( zYIYXNxvV%(T7ZWL7-2vF-R%oD_8>Trk9YQVyoxv!A4^e?TqdeCBJLWZ8%EV!9T;(uH*%jYx!^qsEzZYNB1Ors1N2 z^(?OBft8B*Azm>^gQN5ksN@tiwiraoDZzEOhk#ppTU3b(s|fB~2&)+AZ|-|4i8P|AyZ)xHqe^e60ajlF#M~c`gsO{Pg8b8D{}2~Kv1cPc>y}7 z9peBYDiX!4z+hWaiFzCgBVQAV#y&Qmnk$~EOH>*LdY-JjB?Z+%hVVI6ef?AD&#L$p~vHQ`uqD5Rnv^Nw6;7S zf5$Z#Qa)*BcGk%iatWFgokP&qRbq{VD$6zs4RoT8!{`2KadDA*luyK=Bu_{X(AAXX za_Kwk*RQ|%!3XzTgD2FaZ~zyNx{|vEoG`@TGD$c9zCSuLaw4i}#+wa8dn3AGMReQl z#EblMR0co9&pDpU<#>0Y1ZWzS0q-r?zJ1%3W3w|uJ&7m+c|pZC$@-JU;UrnSc3tNU zKf+uqd{%(4wJPJ2>G^_Y9L1zgJ3(&Ehu7dMt0f1HjG_BaQ*S8OPjM|CiVrQBP!%+9 zK;is&l;5Yu8=}eQIio0HJG9hg=&DhyMj%^RuC$p%ZwqempZX za~~>=Y(uDE&;=`%%R6+ds0_ryR+GoVr9zc?x^U$|l=v#t?FUNDZRhjoxvl5(adDwa zmsrlrGPjO_tz^%LM4^U{u z$wTBLOoSemBEkcgKETG;5bvPPR4#2@%`sF2bC8;wZBO zz{j73$2gS2G-k0>;tb6A;gnh8qez(GP~+X-bnX>s9A+Xg9jZn|72%ksrA06+($mxP z;XU_1@O2tB_e2%`C#(XH7t9e#V76r2=JR`cdfz%fKmQl#PIb`0*T%KI+_REg0ZPMf zWb%SJ^c;Q$!twBYVv<1%@Rx`k97Ye})@rr-EmQ=1FviPL_g^NP50=mhv?p5>k6wXt zh4FD;y3DZaOmO5ouEpmQfka0L7kF;*6>y7_RYx?0S-1|Vg?A1mV7dr3WM8o~&J9Rx zKV_-M+EQ{HHH&IuXh<&Z_ zhlYY+cvL_%o>G3~wp-|m+m6Y1QeNWLEn{YU)CWfCFq_j5ruSi{KZn0xmK0<7V++Wq zMqI+ky%(yVXA3l*QBb+XCn4l2*%6_Gir?K7)YK53e_v<+pQ@_&;|CwvJGXJu#;Dil zxxnZ3ytGoSTvaZYHxv=nEtSf(fJcE4A|8I`&j&9CzgV2(z+ne6NOU z>8?_~{EnlCkKE~cl223_dqOLKMkTPYkS?Uti|@x&)8`V2#4TvCx63ttwpk3fJvX7-hoZ;wSoJm@F4n~Z}X&V*W@ z{bSigDonV>MO=7PUQBiWoU0#XnoJR%1aQ~cmT|vqdLeh$68-WE=>;eh@{ou|3I008 zkgK2Q=Q&HRvT=u7`j0nP7Dgg5^v^V zhQ{N3a%mk2CaShl(=Tq%Jq-gT1z@RSj(;jO55t&WPHx{WLC6N-{5@Y6M;7%cvQ-n6 zGI}I={upH_EK3lGHY$MS{Qta6wpif20?ZIC&Z?wPV=D?iz)~{k2H&P3!$8=8-{-~5 zgkQBYCOdrS;2Q#d0}9zZlrc*{gdK{_nq*Je5e`! zJo$U(C4Bsp_!IpA8?!e6S!e`&vavCo!e8;J|mrl*%FD;narksr-hJKj=Y-%p z+YPc)8~>eZ0Yw-vKc9l*$B*;JtDGZH{1zASUvB+t zzt^^<;LDL;j#K*{F#x3Q;w!LphC%IoJFKQ;nXH;5dNI0gUc7ELT6~(0gc)58V}6x2 zSnkG3#U-;5*z)_Q(vz>CFjUGu<@1Hgxgb;Llmc*7K3a|8b4FkBKf?ad}p>|z3H7QMT2FF5t!Rz6(5=_~ZSPL0WYw=-41+ZKZ)YPObIhUP^ z#+m|n{1+QXW`>7{4`YmeZ^L81myLiaN&ykF?nO6}Cha(;B~wr!Jpe~C?SjOf8gK!q zhm6EttGX#d5cJ?AW6p(h{P#pGCQCafZ_`jgh*S_Y`O_bu6qOy0yTx7-T(a+yyY z7S{3)a!vTcCuRBIo(H-6Z^`2ld!zCaA zJ{DRfdg>FB?S`#H!S%Z>YLM2*k=B%fLBl5$hja1SE{{GhvD3xgo@=sn@Z`;yC5Z09@?V6P`x1bO2eHd=N z?UyyT$j!k6oLU#Ke5Ts}bmJf(DzAI)zZZ@kKPLL~X%x6s7x-GJVmor!XM?NHllN5& zuYeCprJ^B)hX4*NkDiqk{&vs3QnUOG4M?H_1N^%1t~8GqcU`1fT`a~`CyD~gRgJ4i z9L7#LXRg9m*Dlwy; zaqBNgI-RAlKb-1DDz25{nE(ZJ3@ubeWB|PAmd1lVVAV1Q3i-G_8>EZOxK*^BYLpvEaG>81Fb&bKLxs1)hRfzuEU5RH#RNyruwtKVAUUS;LW|$Nx5&OgwLJa9|2!E=8w#SS~P#%0N|= z$L8g-x+g$eG!})q**U2I1p6*8Wn~S5U-JZD2?lU#9LZ`cijVC^=_l(+Kp8?*(2)qC z0w@Vf&sl$<);!}P>CQ3*U`r)HY{0yVkWg=2+((Zcg-?9uQ*d%-Qs5R#fXF3>a+X2P~yX025nIv_Z&#H zY?_v=Y7Hm09@3l=s{=FudhXFG4a6yw2{5>_;zdg35?X%LB z9b9N+Fg7!*Ra%5Pt}!hhi(5lOL$}A{@n`SdyZ0S(NR9nO>-amIla?>`B|kB_M}eoW*6EUEl+c?_3_ zNwVmsQYk=lQiZmV7b>L;XF(z|RAN6?oE1R0C0;;dtMu|#V}&bISF4ldrW!gIm)eez&VJd7}ZYB@G3hc>Yz7?txG!G+E3Qf7a2_IW|2#{f(2OCl99= z(~i52&L!bL=M;ck5KLAEs=lejp&ysJ=7 zw#CI@(MT_}qN*!Ms^}Wxf=)U6?yhbq6^bx9F~J9I+Lo|f+-leYq#_H=h0`UtAj_?| zKwdpVDHfRxwfS!FLs%BRvcH9-rZZ zB6=x5|J5(x7eD_6WKp0fg-LnuC7#I=D{t4BjB0`}Z+ZK$U53Ht1m^;cK2RFc3h;MEe!K@!^2qe>W<=+j7}lY7*0)ZUv#NNjax1|2eAwTqPi_J68ncb}lY1 zrf~nh$K&~aOLI%BKM+WCbaq^i7p$$hwdMKvTm)YibgR`|>wt^E(iBBj&?#zbON(;w z&>`;XY4}gPUbv0WPz1vB^?Wd;^Z*<=bklJai&&6~ECg0u#$HLGMGVH}QW=_pe(3E; z!tjwruu)KXhnvD=2Z_S#52y>Kaq*K|Tl0@yp`tvxqw#iH8a_HTH3^^m^rv9Yo;~pN zE1wRVH*5lrd>;{uicCVo=rA{wk&1`H6yCCoUdn^}AB11uc?ax!WWPv1;_oG8vr^5! z3li2m09zcJ+shB~`JiIL#?CmXR)tR)_M#%dv(0-TRANMem4v_H)?qcm5yxdua_U%s zBBKb71sEDk&rGvqQxmkdwXw;uamRx=58^9ST+Lg1HA7eFH{<&Y?QQLO3~PQ62}h=8 z=jOh%n8_SOuhVK+f{i^T?1|Xtzp53$az!9723H0ou;UZsGx*TVLsI zqiqHI?(5g}z@5W6p5oIKF$9E16b=Z6 zT^Xy2?`j}M;gm$wTa4?`5wSBZX*whHyUUm+{N=BI1$!QP2rk@t0bF|VB``Fw4w@2) zx)Q0I|0R+CTxt$ZoIC~(paR*q{}FEW31_f)DXmZd0<>H?zYmi2NTf6!8BYsufPln- zWE48%K|IG_(65 zT;9%U1@I`!fcN2`)u*n%g?v80FflRlj|dvlYu}A=VYR)zy|=x+?Rkd}9YVy2DH}Fy zxN&-Ru3fPmVit|!vI!O~hgG-%m*cB>+pk!0G_y}3eiC>5mMy2$sH`?1gEh31N?3w> z0Dg2Y3us8H=td89G(%TJg%KK{=^<(`bU_u-dMwIY-JG||VcR8TkR&L!i|$Jt1Cq+g^YJAdNi!{jb0ey(0K0pdA!6V&B?}bY zL3|-7f^H^QgxwTh9f5a+-1Q`s2JoJ7FMtUOVxD3&Ndd~Vt63A{iqxao+|BvR?bP)|hab$S3aY?DN1l^I#%UUf$zbX~L3d+Du7B5i#I@xmEX)P@#a9Di$PtRk(Pl8OEna!S;nwzz`3h zd^x$Kx+7)-^77U?*EuN>TQZJO9-MenHLfs(RFH+|bJg%2VxkSP+Eft1ABN$v6CzAO zP>a%Jsv8=}5#O{C;785`XTzZapB3u)-N%?au(Sc}qiIH9;SrGnzEE-*hJ-A;3X4Pb+C6s zYIu0`;-mYI6jISyb831jPhQBOLq}GU1=q?u=SnfpngaNrDFoN?<*87zW|LFXl>Fxf z0FzS_U&WXIEk+bwxkA-(ywq-^)ZT z&*#A$HKPC30_@t{1NZNrgpn))Z0Kr}dZAhSe87e(Q(Pd*it9OYP4H-<2GD4Dh{l$3 zC-RU%Qi|i_q!ct&aQAT*BAQn0h^j(QABdU+mpZSR6)JPMUuin~o7Z%|www=I`7ru2lhcR3VTtrny14T#uZsXr(8 zLb1e{Xr=yHxl|gbYyj;I>z+x02iL-{Mk{~bD}d7|1ZY$Wu3`W|9^#ZM71q?;s?VPs zg~xGGf`N*)AN z=hol-O)js0jbfZRr{(#tl_)!+NvU27A-nZvzD!g z^HB`WUj=X$o&q7mheo_V4S8tt3KXW*l!eTA)aL4m-Ki0dsIn)))ryR{{r7B%@Yik~k*^m;QO*hlPzo=% zCD+{Mlx8M)>>TXgGzcwz2P#ETX-Sw2&zRVCZo^tOLR$V>*2V3VY|Q<;lahEi0#f-1 z1yHI~6(U>>1VcVj01Z6m*KifK+Y`}3TjCYJqSWm zS)622MIN1&+$`)~-vZkQnxUMV=Hvh!Ht8_ zvU8q)9%~BVN>$u&Rx-$v4?qPyZh<+t*Z~c%AS@sV*$n2xvnklx)dtVFZ~(r4_Yp9) zC~r=2D;1TR;MOq#g)Q{}TtOEFKMKbsDDGdb07M_VU8D6nmF>oDvpu!E*^xy(DuWfs zG-TBtx%^=AbETtq(;rjenLB#Gk6wVuxfN9ig#zHAG_6_U9+7Ze>cCzdPk>rz!DJb> zpd5Gj^$_gOb!DM49V%5DvW0?XF)u{@!RdyOZ*5ys0B5&hnn<0SUVzj>o)rou@P`a^ zdsV>)M3!9@jKFnQT9HJP?%X`3*8L}@g^T-KuvFn8coF3f1;dzrL-*XufRh`8t1jLE zgg|@004L^3aM$4}FfdI=7PeNwM*=KUf(|>CtB!<%z&RNUnr`@G8>&7+y6uPJ61iazoq~l zpN%h+(UIYwSj_zUnW7SzDg;<0U@ICU6xj=gV{ndsn>Uy6JRIk)=M{yHObPOZE$Z9( zEI_U-#ADoP;Nz}!2znV1@i2y|7z$8TToGROlmW=kO~Jm!GN@iJ9~DB@ng)^BsC+C{ z6xZmoFsLTf+&f{sww}B8gc(SS%;alauR?Wcw*8G>^{>RGiVE&T#=gPEB!vR2TGf8h8!d z^qrr6rk9l`1fiM#0wsqMzEN{z3s)}bfkc$)dI zqAMOkf$$-7|+|FyO)+qAV)aC+tF^?Iv{;aP{-fZd&8-PzccP<5xuK|N0G zrHV*g&~{6U&gzBr%V;#kV>O=3#u|5pSM7mpt>w1}3N|H^(Ak=VlcVF1Cay^@#>rjDZH~|X1&mZtZG!{lrfrCtyUdxD7?!mSFY6UinDXDQw^fE z=5zWrQI@NM8~ZmBaEK__MedOc2$^28Bp4%W$(uZaZmbNx>d^xb!AcSrQ-%0?W;}+wi3va6?RH=DM z@$hVjj@gTdQh}FT+6PbF)B>!K1^gjgNXf&AqwpJ?t$S(z%+kt9sCiUwUVn*~#l0(4 z2!G8>5DI|Oju{NAetmG#S*+-4G}iP>sQ}b91+b<79+M8B_1NFPu05N}zNAttD?10f zm84HhrDdu}pK))Xp|xI-b3z)1j_|ctpA!Hz&H$)UV2dIlRaY_dN3n8+4-BEo0Sg7H zH5q}S{w~PQFG4DnMIQhag|6~Uf+|^UmZY~`Fm46QS{JywXTVl!w{_ciS0c-lolTa4 z{s^y96vD5fun)!=yyPiEuxlU=RxZOS%t-jD&LEkLK{%lE^VeAP(>P%Blx#vn&wpcR zMKfY8K7!1tO;Dy$?L_M}Szzq;eN$SlqNH=#?Awcl{6fRoU)$Ccz*%_!{1#*7(LgZ# zC#l87NMBQ!t!s@SLQoObpNW*80`)>5MOt}*vMUXw8;$LD$`Xa(Dh-OgiGhfB@|DUM zGm~cUfmKaIBFtd(U^gm+GK^2oL6vEst2)Nol88d~*$W2pMs{80v?JAP%sTLB0=U9X zNWE%sz)vj~Az;&m~2;ZxSZ`eYeXnlye(=iz{6sE|xVAsY5^;E#w}W!tW1;bDgdJL(hBp?AF|-O-TiRYj!uXhC9v|C>a#rfnL00uipRqU#!;JZ zRmS~_U`k#-t9%@|048k&M5#`b89un{;7NP`WJwJMqhC(X z&;GD#n(CVMUwK>YX+T#V&y?+GYzSe?ya2USDmvZK`0RXo0mf!>kj|AL5LQJdfKp$I zDDdIHn5+@tUVtPB;nv98ng|MgOOGZBMG*n@Ac@ZUvU z|I|iZQ+TIQ0zv`65(Uth6|lJi6BvMd%!;BzI$wt4C#MyUH-eao=XkzQpcJX?SpU^Ir#i~^vtI`9IO+7B^yV7KdrBfzOb3Wwfpm)iRI-364!eZVx)EZ}< z2_G(t3NAox30*WVu2s}}Owc$^TY*zU0e)AN14dkBA&P|*jFY`SOgm!g(X3QZ;6z(6 z(SKDD7l=o7*fG!no7&=F*kwp(GmyiufzoU$0&)i4xPVy)EHtwiL#@)pQS23N|Z z`>k;N!Ju3_&Hh7IpXkkL4uOv0NOQn~C-(&42Lg4`322o;@%Z4t9I#*P zIjP#1Raw7&=u5|s9^EflLb6Fas1VkLan{mE%%in0N+`y8xd?- zhd_x)3saE@(C$Amrj%^FbY@i<9UcDc&I@+tMutazy12N=Jvw=P?NBI0*B}-Shx_sN zIrH=LmRm&`2n5yk_V&uu)YNzIwF{UA&JbA&2$GOhmgV)MR#SFD^PSH6H?|&w6ns|m0Qjr~cTS?E zfn}jbfak&SFc{7#@X7D*g~<{sJzZnO=9^3;;DQS-_|kp%-211Klama?0@$`~+YM+8 zuFdE3*QV3yARbfDE=}%8gjL*2t)T>1atR@9O-i+1J z)_yHo_pi>(&LoM>iiFV?bFx??4_<9Sa_WCoAz&%!50KE`Wm@Jd%9YA+GM@PU#PsCz zEz34Z#Hjz@u&eO$OV`1(x3z;(nI`I-8nX_Kq^2epDiI*&UzP4FLgk;`sCEEa)eBnTZr6@r+y^N@m|IRq6GDyAi|1F8TN zlwg`dLpSJss35|APV%AfGCj7W%W%oY8q1eDKGp1+s&M&Kw!-gp zt&&9SnWkz8CKGjqqHo-|@dfzzwa1Sge;tLK=qBrw@^d(6zX_M13;d^7Zh^Qmk8Ur8 z0=l&JDj!A7JprQB!duSm=XU7PeWKt};S`~F6@q(NYAwJrL%?|9zsBR}V$nv+UVuUt z^YB$F!m(vkE5cTn_nz2+iPDRX1&HZKRprb(5olP7F4L8a3$cN(RUA27(-Cv_ZC=4A zk$WbH$VurqRK|<1@nCon!Z<&MnF$)C>bm=?^ej$0K7C2`qIh7b2jIH>4zKvLY|8nA zQ~-`p3dA~w_p5k5XPF1Sc=P?RcaqM9pDRVlz)YNwsEgIY?u&N6dt!3ppN}6u?!oIo zSwvkb9c8I3tL_?cS%2xIXg*&6wr<_}-&0eQuSRd6vKo}YY5)Pb+uz^UcWtp${6QgK z@X&M?=@C5Y6fBvq7recQU`3sXXq5wvu#GnFX~({IE>6c7+kALpw_Yi)Q1AqeH#t%}28JI0|q z4V_|@3ouPJrrvn7TH!SWdRe@U3$BSDLl+5m~>mNZ~>$An#mh( zbPh1uk_3c~BOVSyGlmACFyRywms<@XK3hue(Vzg94)lO!#Xieef63jK`G27dT(3a% z1DF_=fiDdApIC%D9+`#;cxrTLl3+wZVQ1BH#S@FguIcaZSB@S%$}2sYOFVFTyI9L2 zX`1d>mc=rQneFjdBDIj7zXw)9dGR@|09<4?7L5i`w0@FaNGDO%6PWXuz)cz@W@BD1 z8i|-gLqq?!SS-9}eqp{D7miJ&a-u_3_S_>PUPh~9ponejPJ-@KB=5gV2nw=4z&*ys z73N|P^+k5-xM`>{>Imi_v;JP$K%{cdACJMSV@lGCuDijp2ckE(NtjXa=>#wb(R-$I zQV^TB4{Jhj@RlgfEJqd9b4()Zjz9x!-pj9w4m{?9ez4Gy=J!(nahqFaWptiO5DQUI&n?>TuhhaX2!E=SruP zX_aSX+%N;*qo6lL)1=6Ps~G<)ME_19+Hw`Wl4C5rMa=4|tWqtZzOrl+0?)E`HAs8g#R%1@W&zr?ufAvYXd_W&a9LCm-Nd@8rbM8N4#zMUzuRJP8e&pG`Rh7^1)j@G~O;6`EpRXo>p(!)?SiELs0x3*r%;#*{n&;MA=RIcWOkRB>a{mA`(k_0Jao<-UdwP9mAUgV;T7Q{bP^=9|+oY$w|;aYle7$ zQmIrGqBwu*6;}{XAn%Ce*%*hNRdg(rfM!>#RWEvqm*Go3Un&)=RA+Fmh63lL0+8t( zl71(dOuk@dX6AhkW3>^Sr@ld?eO1>|bCFVc;Rs$)YHd?5zT}cyH>}_I@ZlrJKA+2H z=m|anQ24VBC*I^l74#^6T*ai%^1!B!CNMA?U~zgJw8XS?egIsss!^ld;>Vx}dT%Bg z^=lJ@mdk#9+O41fBk~W{5F#+wx+>EDWP&Z227*QcK8S|=5XSVOFX+RRmH|F59;u=5 zjD%LpRA8_`pr%H*z<0kv+yo@x0f^!ITVf0n1PWq|9}fC4#uqbKc}Wcuj6?MSopN5H ztZAsxcDqd9OBj6X%AnTq=hXTA1fi+O@Ku?c{})P3JSHML6h&CHeDJ*o#^F$^i0Mw^ zBB*k#o@21=u>ybc>2Y{)L@e4 z1Y#!PJ^?23sixmg5idkBMHh|v#ckAw z={i5U^M3vqzs1MGh-(Cb_&y)zJk>$Ki&{2BF2t<0nHw@0~>{c1ksire!ol%N~Cqcj>f`W?Q&r^gy#B2GsW5_>WhVE= z&t1_YUUJOK5q`F;%kR|AzxpH}ry&bq%f5cs?Pt>ZD*_1QJcKq6uWmay1GgPYG3N2} zqHG0R1t5pLqLOAN(UF&706jGtzB1I`3a#h?X?TsZg^HM4NY#>5&3Kl!n+yjH6s6Fg z)*u3koBaO3Gs@-CXHhZPa-`Tf;R&1*rNC~!72SS45s!a!cw~47DQY>e@zLJP<8KiY zN^#GM8YK&A^7 zf&AA(h9&I1f{BPN2_YIcM_PLqClFnWt`1@~)uYrb`%=nGH=oz|@$A%d+n}_Tco51` z0C4Fos}1w4P4sn%K;52ymw8+`T`~;_0;JS^a3WQPU+~i;7l4Lrl`TG)Hc;&Sh!#iI2EO^D$+hFHV5PFjyXbm~g5jSAtKr>u%=~mdasRK%j z88|kYLW8JrkANe}^iS2OuK+`BRmtQlPQa%ry=^g$1qgvwM982nkG2>r&qdV#QW`8i zG`Qyt?^|wVouyp6{^cZxs5K`2v%G7>AqQQ$cO6z(BqU4CGxQxW_iDR_o%aXIXFT45z=x_3ZYG5p!X(oCIoe6l-&aE&uG7FE4 zO>RHSdi;?+k&e_-&Q`#^$PrUb3HKkyclx2bpY5UIDnP^9?qBzq9gdokni| zdM3b~BJ9$B*ZBS%x6~ITsVNi1NO)YlA_CR^eTT>4yARH>L{p0ri$-ot%}swM5DdLG zQ>gGpZKYaO)+Gb*k-vKlT>IpWP|8k&iLsj*VU<5NH7j9VxyLW7X zYOx5TBNI?^7{D0`M3hqu44qa?4|2_qVa(SZJ{N6G0X!b=KlhLOdV4oorup7%F6UE~ z6;t{m&ZpV?swf5EIezNA!wbE$Hwy3k^Q+-)H(miltwdp!Cw^T3UjkUL8;s_4pd@;s zqz3Vg9!xPgP$}d9Q{NEB#P_f7I|%7=72QOI3x6z;G$WDF^Gf;BXEB@n@@&cUv2w{7 z>P#wBi%0eFoHnC26CTTGk%O z)L^4>a=Z9g!;nu_@AFQhji;AeXfi2KV|JPU4o#%>G)=E3x0Xcy^)K<{qQI(LGCN`UEM{+oa% z!J7qWZwkYuJ2ydB+y`SPXCQ_6fP$d~<`(5|mZQsRbZ%_9PQX)QD?z`%Effs?pinH# zoeNmNxu5{}+16BT05$BJOXafY$*gGrwN~&;AeM^aN0V?on#NN;tzj>`@j1KUoo~1n zuGrZDKBpq+wf$if_#yDNUj&}EZD6!-1SQrDsyD<-WLb%rYzt5=%yLC?$HQYVI-h4m ze&-JaSv;0_-th6`zbKZ9v%Tv!c(b|u)28QhPB`RKdzq{fFp(4A}|dB3{0_6sW7Y03$&%+@^NDvsFN85IWA3v4z710hM0hyAjB1m z-B1JI$U-AG=9ll|wf>Iy4TRiRsos)TKB6!pkXO+|@ZI}ood?Eq+R)J8$x6BS@~Npw zK4h@Dxn&H~uz!@!f(9v{<34L#C*~Vo`+_&AZH6Xjn-by4Xn@jYp7D>HU4(PYz68 zcBq6BTq$v%%kY98jDi+Qg5r z?&a_b1b@2XIwJmQv?jP{y)EeKZv=nGCQuVyP}L&5n~d0VxVuLSvYZ7oKLZvb$bKUP zzqtD_eEjRT!$huP83;mP8uD9X!y|uYR;zTqZ9;-`*$gBTr8gy#owuKypNRZo--Pqx zi@Vhpv?v0}rti>13`?`}1aA({JKHr*03jf58?Zp_MPaTktv_WkEXg`V-cAJ!QP9K{ zK?QU^loZc{2XPEcMV>^#p3anDdNu{K=_1Ue^N`L~AydHc2G?}OmNf^I-lTEmh6;WR zd79z@NXEj@5%HjF9EFZp5Za<1@M;$52$q;8DT0!8z7#S1lnKm>siv&JQ)>fEL=KmehdVp4!CI^{d<8>I%>+s|I#;mNP=sUM;|ILYGhkq&sjIu!#mqEUe z|Nj!v$kh|2%GE!QD6lcjGmnrPENEIEJo2hI@KMcrn~7!XMy4T%b7)0rU)< zP#CH+hoO)gfkemyfBh%VhOGm=@Zqoj6z&;Y08vY!K?Cu69TAX>a=}1I^?D4?!eZLZ zUaesOzvIT$D=v(wj`q$A7c<#Sh`!qt=PR;Dj%fkT&g((<{%IT9FxGz#+;G)Si0dVE zJqu9sL_m$N17G(g5a`(jEZl>_=tbc(x%XgL)VhnJWllkL@_w*qkAfGyiQDcv0`L0x z_u!G)0vbGz77Rzem0iqSzqq)_8r(bDwQP2Aa%gCyFO^O|Z3;sHzpAT!9WA(ki}*q@ z%tKcUG2@?)^>ReKtTfVttM$peOjuV(p(#WdE--_$^za3U!lI+_su-$JY)oy)3VJRj z#S6#gEx7$~8oqbmFnsGbqwv%FCgInZFTejJy0mj;7|U8PSF&NDVnY^zQQ9*o(2KaI z$|g(|OgNq@!Xx9D3O$~NyZ6t+y@w{?k0HDZ9C=GQ0^#LHH1jLXbRs%h096Lh;pMwDW;GR+E!HGpJ+0rqJr|XXxp)r5i-D$oQEp+pomOG z568d=#ZgIkAeS$IZ5Cn6U?*I%14Dvr4vvq`i1BKwn9E4lg7K0Q43x``u3I!aQ;|Dk8CkK15n#U-BG*TKW7a)%StSIh8cU;GK7_16fY{nPsyd8u) zkLTd)zd4SAKL)q%Pr)G+_H@ZXx1Mo~fDTzy3ThnFpi*HSgyk2E#&TEP*9t$SipQO< zm~djD2oH`d!2O4(;K0-(ayh*D`YWN`U*!ammKWXoSRVujc7wlf zHz>h2j9oEqRc$`NQlnnKDh=a6D_fmI;ol2|*9V8z zPgN_WtBU!oDf`Inm6TMaQfA3S;$B13o;{b(C#F+br>`}J$gn6=<*ss#K(tPc=b{<) z{JE?Fq`o6tlhti_tX740`_oVo1Vvz$Md7w1dHC|J`{AZNGjMPYEqMhvCn1#|OWtvC z8=7i6g%)@`+L9WB#ySGvpdJM+B4a@w1|A1~X3k^?h8E%BW3zC4cotJ?euyL^pnLGu z1RRoDK?NX+Wt;}I|I`s=td{z7y#S?#DI(m$-e@V?wf4Wks zsFL$x`9_vl&u4N+lCi`-pEvfhd9>ue-G7Yv3|-mS+X2>~)wE|mhK_oZsogptc-_eP_!o#=}14g~z{eXqPi`Lk#5LWDohx#w+k`B`!R z0z*#*tz#?3_n6wFAr;g@%cs}cqEr-tIs*IhNA7~k@FSoX%kYg`9)Nd!@uzTXv1%bK zq;KE2u7oMS>yI5hd{~|@`wU7-Mf6`7mKznvDAVbPZrPHn+@4d5H$+9h%RUv!r(YC4Y`=0ikbDpDPNJNZ76k70Hqvqb)x7Gj} zELV-*0DG$P*WTN0?6y90ZmQCG9^Od^I)hM%dq5Cj6tRT$J4az+yolB@0!^_voAqzm zRR^baCl@=j{ms2#V58{A&HtP3Xz+$-Kt2Cdv9~Qy`7Xs?NQ*ZO~G*I=8Yd22yR3wK>bNX8ar;_MVuU0XTq)C3|FBkV8MnX0v}46%6}tuRVvq?&4*@)zaXhLLEx&wDdw?{s|yAFUEuA zW5f|mYFSM@?{xDKl3v^c>h5R29^D2Cdet}H^ECXwTOWW?#W2aoTe^60-7AaldSUhI zN5G+mHs9bavW`TZu1*KZ#&C#nX&yt4^>)e(Ga3J3@cTIfx&`3}^`fore3?}If6`Fxlu z2(g)sdc6p>+&DyJKOECL7xoN{@_TY6t7htRVzK5pzOg@QsATqC*jWYeP6$6sE(b$l zJJH(yFO_ofbG)Y5A3bj|eD2Sdb25TOk{kuw*92Om1JrmY)Fcc6OzO?2p_?L$*+dbA z$*kcStbmr?4fT<=VB*(8z6$?y=M(TBcRmeSns1Dklb{Ufng?_ z890WiyI(x96YkxRhJrhIgqv0dyq`nzT8;`Fu$$*~?|Yy}aZ}Aq^j=FS%v%vCEauD5 z)zpGnn*e%O6{Y|Th6jjjBp4|vm2>L^Tw)J4dYlH0Qc4jmZx&_f*DnlNTPLf6;0g50 zl5jyWGrrv-hLeNrv?C=@ud8AvUwm%H_=QU_;M0ofM- z4zVGFMzy2z@}L5eB;r#<6^N-p0dW?eKZ;?150L{*>*@t)LB-J1l7cmxc5vC6iq4dH za(DM!GoPP)!eyj7D!hQBr5%{L-t(5N{L08c|350Fta;JWcK*Aczluu=H5keQ?3k!y zo;VGAa%GsrIION);Pr+enP`TEJzcQm*kfSjNh_eQ3jso96zq{5P@WitougU!(H)P& zo%gSX8jm(g5X5*>@;AkN?kc59BfzM3hcn(xI)_3PJOt*k%a7?2ZS$$M>o;}zFoSpD zv0dU>3u54@=bXMG*@rHufS{wz*!*msbGsF(``83oK&T3>rj9A9p^^=^J-G#58by3V z^fKZLtC7<_Ok2XSt_X9A;DnT|gn;0ZmIz#Z=2Ga5;_tOQE4gcY_Y~Z*W`}KJ(p`|fVoz`H9TTHNSC@)Kvaq6US;kw8SQuD1e{Rowv~myc z?(gpk^QLj}@(%ILMNJ?mdB)0PNfLPQm`LRI^Nx2*Ou{w_zr?8^V>)t=9)@2%wFB0S zlu`Ht%;F+*F^FGh0n$83d7L86a@BC@jN=&RGs~lRPV|vSf}8^b{zC zY4A?vA2_T+RAom`Rs=6$8unAWvLFS*TxWOJH-?7>|1ZYxS+*y%0?#@xZB&o*0KM>jz-d`c1Hdjn)S6qRTqB zDF7)I@A^94C9g& zbHr8iq9ChzHa9?axd}A}LJ6!un1O`6h3;|yZh3AH9^0K~6?&#ix6K;(?ZbO;ruR3p zdIsjYSS(@_P{Nm{0`TE;mqCkE#+bUo2Kf+Sf}pcf9L7{`XgXM;AIkVSA6PeRKe~Mq z>Y|^ECt}~MlyYCMV>tD8TWej=ka=<)t*sYgIB?HIzJeYFZ~CDwbftVyLg^hXYE#Cd zE0u)ajwCe4CGc@NV}c$@<1MGaK#tCl&Q>7dCw3(tdZ9TgKs69!62r0ZH;cu>*WHlC zJd%a$NLK(1k_!0!t%j~WubWmECrE5BEt&;~YrAA#3tV~9d^l^>anL<~F0?IJ4szEL zd{`8yd6evmp3cDbmtTN8Zo3nHe$O+|pR2eWeGD?^{gStuYH9vlwOYO@lTMrOu;yk; zpu4MQp01mZjE)U=MFrcq@R)W~0x|IEW!5#wiW)qaf+FfMh6WnI`2+Cy_8i=fpkJAj zS-dUKgk5kd2p#FO4%^mnZg=B>NLUHQ=TSMI)tiL(pV9+VhYf6V3o5_7#)X+!7*63WdQDZej7ZoX%ccQOeFRv z&gl}>Z9W!{jpK(rE}zdH@m|1@4g!ia*tNU8^^3()`7(>~;G*Mm8+o8EB46)v0Kx$ovVjsnD0MloL>VgkbJ^;;aNjPnJA1v-n!lsSeAYH6dik}bp z{KbIJ_r8(Q;oED~syzc6M$aXpMaak=&wYM>=<;H<8XFof8akTH)+Wq1OCHd4oq>Kl zYYlJ)i;UE4_|2Lj$f`E8uB`c|(HVG{>rA+5980gZBMxy1jn>VT>d@63g_Zzr0;b6r z1vyP6qL~GVre|$G{Ql(;`x$imO%(n}Jn_w9X7uZb!oOp}KTQd+y_n2qxA)HNTOAGr zugK;yvLyO!#4flmfBH)J=YRMzEI<7;Nc1cOG1vhR?gR*SVmdGaG=MpUxW>x4NjUHL zC9q^}8yNLEjF0CXh9#Opf?%qt_z?#%_XK$+bLDgqGDm)IgVQuUATla$ z5koWszt><JvH-z?_SU#BWh*xMTQPM<4U zG%1sv*dB@{_LLRn3SBGNAHMJy?rWcY9|)2k^iUs$C+I<1G+;``Bjg9c8v))MLj@Lq zT1|xjhL?+4JaFQ1^P#n=8HNTXAzh~W2O2YnNde0~wzI42@l0lN5RTvhB1fbGaN}<) zfce*WGJaF8P`M0Evn86Q@U9bk;O{?r5uA!ZnrLB)#vg>hyfeYqeLR>_oLMG;!~8B+ zXC?u2S)5Smcnwrn4?w~ysGk2e|*_&vX_R4O%YW{bC(5~$UxnQ%CC zUsE!9d8SZ^4dhgPqO1ssL;{jN4~Tk=S$1kvdTx6bb{18qL5SxWpZ|W5_u9wlcuuvxU4*mgK9#q2S|{YSmE!+>uozbfhT&2GT5=Kd&3t{Dw>}cdcO< zCc?GCm1iu5FI;yav;~Mp17l?resA|O@XbFN-L`~7NrjdkI3 zK_2~3v!>L2xC&Q=1OBH}!x$i{FzyIy6Fia>02BV!*470WWBn{!EMG(eVK7H5UVY{w z_}n$;L0gCe4?0p}CE2F z`{Cg=yWo2_{Q>&3b&Dq9x3;tmN2B5I7m9^^<8T~;&q_)_NKd9GE7i&``xY+oppSEU zwp`){(?ug+RWJ>f;<#W0wvT5S#~|OBDLAcO|M2E;xal;e``noIXLbKNBmzD-d(}!% z5hQ!~g{{_${dvA_d-+9+7wyDY|ANh1w%m_jg_*Ye(=OJ&t!nCIJei2$zMpDYw%I>0 z&PT&RSUk52`06BRl{_Ow@kA0Bj(LH)Fo<)QRc-RloJC4s%8?{Up$Kb0GixOXa2g!b z+YX#0!TOzJylV0$0=z!-2tKrA@v=mfOV@;tVwnCGFJs{d=r#6 zJ^|LqR)AU_MBa`xcXG-0HmFrAn1`-6EZ9Dy#M$Vuedxjuk@$1mJ_Ar2 zLr<7?Bkn`=zIx|$!12c}fqb!SKl04W=3uEVL}MvvYU}uJwOqJnB0V-vvm6h$%=(@5 z0%+2&&*R^g49Bm@mkMD8P4mWW!(24d42!#)K}S!(s7!!_V5J9tXYw8goF&-Pa==fU zli0*$ArJ+Bw3!jC&;(|$S%toNJ>WxQwQHd-t{Y;xSU9;2Esm-i_o=FC9|=m} zNKgPw_}kjsPDV}n$H|FwL=Xf+wk_%MRrBEsSDyqOVS%yL5IF>&md-pKZ+RN5%n-i%9u9zp5zAxj%NO(6!S=TH2ix1*+bY#^-*~Ai42({ifq)<8&702!g8`_kD%9)h z6p#LNhvoG;7u!CD7pZqZ<0o&UQHN*u{`Ygzb%+w_EGB?BOuKA#`>23}Gm9 zQ7$ufQ$C;5Z5s|(p$zi^%9V0KAEb5zsp1?TbMtguW zEC?l9@x%F8tChe;!aMj9)jQ}kgcSiok3S5xN(GIQ3O>wy^dtk+g8mjy~qfkvU?^l@S{?Fmc`C~;|f8qj126;*FfH!NL3f}gPa`vIfXv#OxxhrrfL;17o}EC?`i7K?Z2TA4DSYzGx{RkFY<1yEJYPH7bgctmLF zoC})=CSdnO4q*|Q(>2w?JwCppy{o-mSMEjSe^`~k;Zy)j`?t5WoNO7!1DRYlBJz^S zf-C%!hG%=%ZnWT-A78LwJ_J1yLt{w`3lX&b-Z1Mi7X=5Q)pCPS-1P!z!y7=t_>EX{ z$Lc)%;P%Jhhj*{We6+|IajD^)NSu<%)OS#Utfs-DM@XRtp+h{)o2yjHgR(5$91VxZ z1fH9ZS%XA+a*`V#Pa9sZkL&2{;+iq{Ompd2%23m$rq#Tz(7wgnYe`Qi5P;71cIcZw z4|?WwVQ$}pg5Phw^2$a&TPX3O=rs|`xZUUXeSCCe_}?cplNo?1m;XpWGo6e;XLnRr zjrUcm1rS9{AR7j(-#P%fTpjx6v_aBehdOnSW+%ZT2Y_QCf$X$f6GsCoV!e=t`tTNz z)ht*lV~v8G!odx9J_b*2*n?Re#_+`98Kf>~t5hx>-_gdycE(skr_VBMe;{}Py4!2U z$H%tAkyEH)yWRj_E|=y-2=)|@40cJGpZQFNRJ9h8p z3#Bse_xUh%3EUxx;>W7h@(&96+z6YZW!S(g$Sp zESRiOs%jB1zZ7tAP(S*0F43>^)whG8_@%p0Ii&cAZNm! z3I|{Q@m=uC$JaxNO*t|UpQ5&Bld}Ygvv|#_RZ1t!>FjDVO#43c1`bPh;LyLI+ho%_ zcV3^aSuYL__eUfup0Z3~QD+j~edcnA`$gEeYaAY1y90)EHTJkO7j?n6Kl?sdGA9Na z=KKR)%Nd1KeS9ZalRJS^71kePATaaf`d#q-Uq1pb?8&jy7LCMU!NP^Ge*JnNm!Hau zO;hJF1ve;3;zc7PsJf4^_Dwe>#)j3B;4SFuJHhYs|Lw@g$XOHViBz@btcxg$1_~ul z_rV+Q_xr))@i4(h%L3?8Fb{#g($CHmp1rsIg`C1Hnq(|8{sfWzj+6?0PtS?q6=3Sj zE*1)QE|;^>JDD;hu}IX!?AjfMY5W@kxi6AN2d5K{dj}e;-s!cqyiE(#*P_+|z*BUZ5c z6%Z<8z-v0}9InFO|JN_z{FgFOYz z!s4MN`Y#$Oy>#g@5Q#+KnP;AIsIw7kFik_~?VUGRtyWf{0D?e$zb7!_79m*;fjAPH zINZa^;^i>LplDfJWJx;T(2a|A!+3wOROCn~-HQt70S`9kT5Jx5mwiu4frOX@ym8y# z;Lv(bzmdWqw3=?DL~5vXP=Q)7jZQuk2trd+Y9f(HJ~1>r{M}qWx7vL_jc(y1Vhw?@ zpW9Ps9@oP3di~$6R;yp6C8qT-42@g7cqufe67clXPcfoW^hptHHeg=D4}W?2$#D5; ziy+L`pn|Zbn3@CO_G3Zjy`ZK05%?>^9`rmv`<>h1f%V&2m~`@jHu#IH&V*B!c7v#4 zD1l4!#LNBgpSL{i_@uy*a5#z!{<)Do#w z@(NS{cfQ8@@a`e950^r41yyigpPgcKv!S)M?Nrk;&qYCfPoYqV<7ezDm&^M<+XIlX z5FCtwiC9z(&)wgB?-%g%r#7=kowBq8zVV57!=fhio=o&mc|WEJRSaEac>LuF_{J^2 zhyF^PN(_aLw)PFBa{ky-xj4P#bH*>>5N-;K``cPt=39pO+e)?K!<;=guO-a=?e!PJ zvF+%#BCrx@Sp?qH0%Gh$x4s0a5C6R;KIvEAcYsAHadC8lWvnv^5>;HAMb zeCL)&;5RSqff~_lu{I*zAEq}zr0{3KnO;j%#H^`$oraK1zv10DcjPsXUIV+K$3YEJuOQw~!gYEAJ%E2{ zZf^dMbUOV-eC<2N#>dwei^VGbo|{IOepmoL_cKks2iiCK9*n>0pJDHGWRsntif+N`t%wUuD$v>54sCwK zqAG|vsd?Z-0l4Y+tKq+Y_Y!Crxh?7l!Z$zpE?Cj#0~Nu=aK{3O^sQnYl2Dt3o|a}z zNAvLF=3TsQ%SO3UYwhYlvsNiR=<*00k~KV3Cz)xqSTrgJ{lQy?M#rueG478FhVa)P zIv1`wdlAUG0&?3@NG(1a#7HZsn159VR|8kr4Ia~gmq$wQ@$cUWn+NL1Jd4E#t%oHhl-`IJjsuq9HJJeSb4J0G{Fd6 zb`!zDv+=;U<7Xve1YyaNB_Ba7pcNH{hM$9@&(6l3c=lQ z0Zv=g3dtrPY#1xRr~mC<*qOH=AlBg@K6NR4=*&K-7qTEU_d;sL1;9so!N~VRaogii z8ySK^)qrpO^bc^?>OJ`69xfX4)C7@ViJz!3a$1rc)uuIWzDXxMfdy@9yX=&gG*w;Jxp?5~vjX=9_Qc2QA+hJvZ6% z2t1}A5nsUjmr($ol4R-kxm@O^LNTv2yr>y$BYso+=qd#JK<+mIdxU|I7eGpm*2wjM zram`e1*8ZljBo+G1BP+aKJQ^o<+=C>-}t=ocr1`i#6N_g;^zy6VjqS@P7Gx3t(V~0 zi1!A;@!sqk8HHWDcERe^FJc%fI5P^_JO*cy6LTuufv7wYOyJtZP#2tlG5#gzoCXg* z@jU!-{cgmnB)I6LUii+ZFM*Uf30$BVLM#3Zq|Oy!pttYE=hCygU~KIlK`iBA&9+JS z?Du~S1Bz*2T3U>UqdzPZ3x7q!uMR~RB^;tnvYL_!FE07FGWq;cs-jBxCGM}Txd0Zo z@T_qsH1Blq_bdaQm~RN65+yV_0ajXBEsTLsuR(jP3D#`sXYqaoftkTf9%_~|!r8WU zr%u4N{0`%fJ8x&2%T8hRk|j%F=gyrlf?AkSYCCi5Y*G}{$8@>%0T{99P*W=2Qn@@| zQEHd^eSyo-QtGHowjhe3O$%`jcW!&{q*2#8yEmGh$D>uZDGNe?9tnR#5i~$Q`aS*K z%|7t1a^v3E^y3WUR!6O_>v3htFMm zE-df#Givle&+%+Ng#td1*z<|3k&OrkYhwe@nh3!drn%Sc9_Of3KoaGJ$wcC}h^b`Y z5HzRphhVSRYlMTr6VU~KpG{>D2>h>F(gml^i#wd~sb1ha=YuB7?3DT3V`g|l;GJ^} z7~vEsMg`iUBAmWx9!yQUVVwEsl3R7QJ2di(X39HLE-ZKR8iMakqap4;vUGd)>|u{_ z(qYVlC7wvU8EnqGdlM|%5E(l^%g>u;U9Fkv%=nUgA@^ep6<%s;YW@VK89i>AOFTk4 zy=>Pdr?AFw-<#RM5CGscZ|>VS-CN_aM^YOiGhFn(Ff{XGnDZCtnXRr=sz1zTbBk(9 zoj#}Keh&IaB<0u00Fc!uyu#J zvJkq0^an62)pE$|^M01j=%Mh?XIud=23vHYtBQ72fe>n5u&AT&+*6i=M|9@R1Y*tL zN9%4e@(#gax~2K~Xo%!s0s@H+Ho=7xEa>ZPWeUPMmi8M)GSkasX$R-bnZx4#OlA_b zzj)AvGHxoaVNop_P>S*8l5(l~KR$ox?m2VjF2jtDv5#MQgk5f^Go9l9RktH~nytI6 zJccu7Z*T811orMjeB!@x9~M&EI5^dmq#XD+N#jnn4KO-7irIm#sn@cn=A<3qy?{F- zn1xWlrW+9iv2@`)h=hZzMkNqSf+rGl0(suyK@?dNrvOqk3Bl$rmZDxbrx{LI((4!@ zd_DwNPZLOJ9Hl*@XKAJt080mn0v{}u3THF=C=-$Y_9U!a&;o*4M>jtVq2@WPnSu?m zY&?o{24(1+7yQX?urMWPST*Qs4L~v^PsRAI({I3Q5G^zg0(0q5^LBT4!=_D}rq2AE zUEfA(i4GcGma5jxv9Xa05ny_8UT@!D#$s{Lk*oxc=8HlT#3-ye-Q8EAz`imvGIFlz z1o)P#oZnK0rg28d{ij+BDi9*i(7_ArS9@3FM3A(jt6*EsfJMu_-@NV)d?PHg2ckcM z*j@v3(W!itS06}196ZOonYt|E0yG3*PS?)*#K~g@BJzC0DQO@ zD#XJgBv8Y;4PCDOrBSwKBX?@Jn$u;g=4`hR&FbmtVVZtuXpj{HHRjg6)dRy^OR%WL zz)Yvdz2oB(|AhziTGx6UO>-BIhKqq>ogM9$7mJ14CnhE+ZD~@<%mo6c!o0WYT~LN2 zm&-9PaZ1?t-q^VUH;mwjw@E-}gcln~6L>Hr?QDt?*E#cEX|^E#gUY~W)}IY{1&2w2 zM!k#icJvVNY%4`rF~1q+wZzz`V0etGUDB9*el#lp*36SiCf~1_2J?YD0td^{jrVXW zqqde~9l*;G)=Nqwv^fWAWehAF0()%q6;HF_&kb2`t3}X&22D9_(@paseT8#2pdWy5(y`seWc`e5{iIJ6ks(74pFRwlJ7fyN?S* z3IK$FBhIeyH}oWV1MK&>hzw-M+%2VO98{N8Q9>e_d=jnt2N8@vuBoZ%I^4XQQRr_@ zCYwr>+s8|jWv@AR?%a)-=20m%)Uf{Vtb0m8Ay2KIqM@7LP9~B*LMmoMfp_klM#AB5 zp#oThdR-^F?RVV85CntDoyW(=*DYVZ{NLQ33OyE!6)`OMB?6BBf(qaS!!%AP6wB}3 zx@GfMMuz%tV!Q|lEc#J71o39M?M(K`?WZD3%ETNX_? zwkL(@Z^jI7qjPa0Dxc$KT2958dg2DZemojkithhewQ`Yu%Xc;^A0Hgir-U;&~B8*;y;s7L&Ysl z>}K_vrr~kHd3AJjBwVX0PvQ^wJ4>fxw|86#09A1D_T*%CIfCyC@K@^q4l{xO(Qf+P z_$`%6hRWsAsVwB@-g(c8#fX+Al7&YjahIy9|AoK4*>Wxw&+sk+3F-AKP6HIVp%}P= zUqSMO zSBBA&M%a?j8t-_2wOV=lt%fy+RRJ`>i+rINKzR(3V9w^Ws8j%ojtqBb&|aYP=UsQxWyg zaFIyl^f_H!w~maCEY{IX^Xx@YQE_iQ9N_l(%#;cixLU1Z>V|5%>o6L>~jvm~0XHVZ|Qx;)N0z;Pw zM=M@yC34n$Y?qejl3WV48PIeqM~k;^cWV+C_|UCwYAx5Z*TiQrE>Yi zT)wbT(=?V!v>d;C>ikUW$TXXqQpt|i*6-Kr+B);Yde#N>e!BuFOW>}(@+1(8tXlu#hp4o(JQMr4(r;mt#N9JX9kmu;F1L8T@R!)&1V)G%S2=-wZj%jSL`jl}+(w6wcn2l{Mm z@Ta0E{FZIoZZ1~J$M*Eh{l|{>jvQ_x5d;V>*R8>-$=qs#gE&-}gX9SMkul6zhwuHBtZr~g_}sxc?Ox3_%75pv6!;5cQ2_9}q}nYwEfnb3Ru z5oc67{ud92nS+AQOKu3_NcJ%Yu!`^4CC=oo(K^=ab(6XGC>}nK2!5HYIJ!X`)%pjS zh;eVQhqh@jFMvrVHL9wBK_KsuDAC!QaC<9Akey6` zJuQ>(8Z8Dna8n)8K-{?icYRFpj_05dKo?3O=Wy&g8<*r~+tcPFLSy4qwDH ziNHGYY(WOz<8y`hb<{XLhw042r*$*Y`a4yh4OhyfGE9-B{wEqDvho}?jo___O5{cq;-7iE-s3zT`2y7TS5&LjrRWuSRGMmgfbKZfJtv6e zR5D4$1>esX3%|ufY0nD(j9jeDH=E0k;@*6!x3~9EUDrR4S)gSYvj?^P_K5bFI1=$| zB^V6mFqQXYKA-;%BKTYIzQ!cuCv~_T$SAy4ebQAwns#5C-TgiTO#K6MK7aNexoSaZZz!hgdLbu9>A22U`;)Q!62MyYU-Z; zJ*S~t|9^5~_HT%S8eW5Et)Uni-E!y+&=aqzDZ(0$?D>DmWCC-(<|=ge3LPCC=b=(L zjfRNg!SbS@-;3#@O}xNAi=M>BYOUIMT7FjeXY4$gE^{($-@g40wBmGIf(qfhv9Yld z;!P)@7j`Ksg8b0X&@CvqD(3HBMDK7NaUh^VpE~z$OSAQQkWYiZ5{3V=V!m)AT7Ieq z!YI@d8Ygf1qZzhk7{E13*~xQ#RoC=1bBEtjD9n2h2$W=eY!y9ZfprbC(qh}3@hs9z zDFBwzCvG~tQe#j(ROkCL2SImvH-wHJxr!4-HM@xzXwh|w#5m& zC~LZAp=J0&cW3t#yY}q5=Z!4#v>tl4b@&=wO{tlKL$w$2XSz`;=x2DKyl6eBR-1ss z`ZO05U@sHREa*40O2Bfz3MkMf-l(yIZcr|lZ$f)RaJz~7q?1?RrtlhPvH{8(2O(Gt z?f1wsWYXy`6^bR01%W2diRSB^QwndLlr}KD%HF4%xG_x4b_i=&hJX}+m(9H}F>_3n zvy@JRM%STr6e<8W_9lkdvt?PnaAahJNxVlASrLywbY1k)r~p`I)aDL|aIj4xbkxvU zzrR5(nx=#v0MoaGl&}S4XTt5?Lghf&2dh#oLs$)c31hx{=%B#C7354;*A3b%)>(#! zi=Jb;#PicI27A`(AM(p=>`|i^0KGHn&}{6H(BPt&wy$qyk7$3173s=ixw48fcc?W) zC$4Yk5qqB*$#gCa%fp0Qv~;K1&m|F=x<7k6PBEKP=}IV)A3fp#p4}`2P`z+eeXKeJ zH#1GXFr!%j;(~YMGG?n0d~qhpFl#Qbd47!s>jO5YI}NI2l1XVh4eBP(QYPU3-F7wV z^nIp^Jp9+9!H?*=U;P$8tL?goPWgdb05VN6H2!u(5M=!CbqL%(+-ZB%m_P6~_J=)Q zMvMo;y)PIH*aIpRbXwILBHw60b-$QYvu2A<^&iFmmf@abZYrI`H@Z{Z79yqu2oDo| z?BvR%F?c8c#9K3etoWJVAZu#H9Bw}6B?Xt3+H$S;Ynfwkc9Q7{s-7YjtKk;y{g>Ns z_Zan)MXWc&!^7RvHuY_vHkd;HXRjkwBfJCq!_G=FnOcnA<1w!-E8ITkl)j^aGsg(o zU`{XLeHC>@_ig znLX}+uS+jS3IJc{QVc^R*FwxT=FDCPEf=v^^j&!N0tbC|SQnt_dIsbz7}JE^ek~zk z_K%2Z9U0-_P_~cFxB}SQ$Y8_tNZ)pUeyyptdzFX1H=nw%fWM*Qp0D!nUb+jYaWOp#t|R1INF4ZAOJ-BvGmb$atkk-Ze8|A?J zAX^7I;oMXhd?+S7A2JW%wWagT-JP2z)K07ATYC8HHG92DftHJYAG~%KN!lz2N(*LF;*{fEY{Y(D?YM7PWFPd>baZsk zRNbk5|JiHyI#_cY3pQe3G5wI^9Ikg&nmuQ8j#69=Kl-nbovH&py#ac&t7lF0}wP#t78`F zRt~05OyOShfU@w^vR~`e9{6P(t-)l0st27+g6$}jLx2a&hyrl?s<}d;@ML--eNUq_ zQ#DLb4UCD%?Kd@c1N*?0n(QImH2Q@7C)BLojR7iMRASia0auo{uMBE4FsYKHw>rS^$_#{ z%(Mr<+BP*^FEZ*o6o6hi0s+7{SgUGSE3uqm5JVZngVjvJua0CC*?L?gA=byda z?8T-H>6$*~_XmF5n3=dgj&y)JR41lqion{J63pKBQ4Ql}Q+Ydv!_@qvs=8Z3>~K@f zG;B4)X+VzV?oSCHDS*1}v`Z2QqSckgNXpj|eYe2Eo*Kk)5I`Q=By|73Jw858G~kUn z{z5fonj~a8 zM7VWg0dik~<7d7oXofKWAVIVnOih|WBdASxV2*`ukK)uq!)rAIHCD`Y288TWO1W>| z)N!|%po`7T&BW>a6IWr(3jgf&mM*uGjnC$@qlg7uCkjH%GEJVFX3{xsdQ;k79KdO1 zH=GccQr))G;b*)27Y)ysC8&ua&v4p=X~MAKvJ5(&@=>e+=!%BIlE4I%x2qZlg}Q{I z??b=?wVqxC5>L*=fIzS)4a!D>39Ob{!o~79qm(oSyr?_`TVUfAcvp{FF2@5+2*Mk4 z*$}l=QRuHl{9yu|UjA9|Z}xgS7kcxykjZ53Yj17&_kh;}Y$zzW2tMzmwFQ?YfXF>9 zqOvD1pqfGJUSZRKc?}r@j_c(dScMUcK~=}FQ2~*qH+%V!f4u^g|lcZGApOXzo|t~t9iV? z&cG5~H62DEj-PV6@O2Ct%Y?4~_e;g%gW!y9nic-p>m57GBrAntQOy@iS0oe3=NTSA zvufPJAF4ee%gt!wEN3{VTFydo&pH4-&m@hr9Rd(`X4%vrf#C(!QjW0)QC&=~RAlu) zq!^0%!kv|JnJDS_12GmK@g4wOhGCl2>ukGq6qBVYF#n18{i_v>eH2&NIcI1BOM%i1 zbyN;Y4h+wcJR0D=22vQ;*|8=ce{idTVx!I{av)4QB1>m_7 z6;*|BH1g&4mS(E_6$MT-r_+2_sx|W7fr11npxRVKKiBuH%QtOiMSXFhuuO78`8xpXqHn8t>&{Rm9P%E$Spb&{tXiwBtt-m2ZYhs7feN5l z(?J#y6j7>RWruOObcTk?0)i)63C!|1`0X-O1~*E>S zqb0PoHorpr@Kw~jE{*f7>py$Vgy9Wjy_WJzq4h2IBdgth(v+-cCVdoHx5c|03 zLvY`wVi+h6Zim|NCXfV$f!{Reg3v1u>J2?V4q7P-0(!|4WgXHbdN5DA0lXgX&YAu& zGo}FC4l1EkD%S-;oN$={t+A{E(&cl=Iw$bY18d_X)Q+x~~j7u|_+$aja2WHECXRn#RIJYmrGdw!{ zpwH|3K)@en^D2n5a>r;19(Z{VaERdB2t^5q`rE}xDC~R*?D7!C3hyq_#Oc~JBCCVg=%89-H(5^~N zo51HK_e^!Ie}n&BbZ5QI_5jXaZ&%3Wec>1sxzmg(!bPjx>Qc>IZ&wJ!H48hD`r1 z@L+C~*AXwkMXqxp`0qQPhr8Aev5bLe8#GqLE|#m^DE!w(BdNs*#&}}UsJEun#&Bb7 zce?BJg%jM3bar)?DQNaOfUvta!8IaNV|@|4qalC*c=Q51OXr3|p?@tF3tuW% z3eBt+5aR&K2IQ(5Dhn`kCQxd8b3(7rW#G8KsW6f;0nqy5b}zc z3amhO#~SdM6`0t%4$7G^@S=4WXwI4?<3f4ihTpvizj<~Wh*E%+1>3gf8g|20YudbO zMVsf5J)guy%Llx{-QIxb`D(TDSSp#cGMUUDctKEWHO1U#cHG|2Z%b?pVnaOGKx!IzW249V@WwsR ze&3VunJZ62FuTNJe+~2C{p(jlj~sz;&q5f-41rNdg9qBfZxrr&W-I*g_iI5BQ25zQfcg~qA}Rx#;Y~SH+b~p1Gc-RY3EQel^+cW*t~Lzg zeFD#2+1#AE(l9g*Ly==;Nh+(Fnh%9SoT_TC@)BIlKb6Ipz5YZbeeY10>7HPtQ^)dp zy(qVWgpQ-+_XjS))bd%eSoB|O)!G*f!~Tq-sP8J3lsT5gH>p&w%L{CbIJ%l-<+uhJ z2ys@jjJ+(w*4-lz_Q`PE{5dEDb*63%Re^dj3w$*P`5iBVTrVJA5QHZ-r{VW6?m&~q z(~JNPL+7v8YSqndLEDTe0r5~QK6M46P5-r5_Fi7o>s$rJ?xpR+aQggq@No)Sdvx`w zADW0fFifDLA3hj?$G48bkAD9msEDX?m_AvU^1<@nd5n6wpy)7~D?`3q;cNK4LTN%` zR??kTD%Ggls-p40$qNgmJqr;xIE&WO(9H2rAY4o}B?nCleiMp>hBE2&L$V}`)c;NI zwV{P!?|3QGr7xfL5RM{&Z_IuLr;x^Q_m#PUgiWEq3eC+;-Sv9?3^W*v@CdwjY-~c; z4Pz1Y=Z}tJ`WanyP!%@whc%m+EY#fM=yqza}p@TD#leZlrbMz#{6JGQ6O8cBDk32CUON~0<#PwlSLTH zAjqO2jwpM;)C{{=Dj^Chw`hjZvU6wu0#TCAH*y6VrF>gUQ;Mr8^}7_M{!pz}dny_tTH%qWnX9re8a+{HK$3{a%X49`ID2Gx%ho6DuMTAv$+U5@GbSa z%DDL@!HceXy)n>&<1s-W4+Qv*unegH-cm_uX-+^(G7c@#Ftj0d757OH@dzMOc{{rL zYsV(wd%t`Pp5I-Bj3&ePZhI7>AHNKiHpLP6LyJ!hFf<>NbdfItn@39U^0ono0|fsM z1Om?%i}_(V1Y_n8m77bJ)J!Fs|6it%`#Xd<3|lkA_n)>LKKq^%!Dkjgki2XhGL;B} zFAhJv`$hQagKI#;Y(Xl-!&m>}VmNbtGg!qm(3D{cy+px-pr9Wgiz;3c@rIrPt2z{6 z67j{+nhZa<`A&H7#SIYh2QaV7L#0%;6>}=CA__;5cUz7nd@QCcX~Fw31~c-7!mk2; z-#99Sdu$Ghl}feN@DN}xSY*vAgu^NB(4fv~jAdv05Q#*nj4ptJzY1OHrNKb(Or@@@ zs4Mk0#H9ts6S0@`->{r=KD75dgo7S_K~E?CfrsZeZiQ19_rlk%e;0K40sLM}U&|be z{i#RA#E_ImPq2O!s%N3Hb}g8ng;N=;&3@s6sZ{L!?mO_C^;s-Ajd3;6#Gt^6t3Y$k4+mXyur*~A?-xWnS9 zSa)h#N6aUSbGut%$-+K3X6X`Gy08b1TfP{^(Sv;NhdvEkw(o{adK6Y1I~NqCiUMqa z$|hC=lTRYIC1YfwD{s*AX!IF ze^>*F<~W?t833cCfGr2%ch9~EgJlK0s3EVpU?sfk#JM0;Gq`yYCPmQdo1#k>W|M0H zM5RDsgXC_oDMrBCvH*Vf^Lt>;&LOz$>=WSAfAt9npcin;s*_N0)Y;tl(UCOl+BL*& z*|v+@yk!e+^e%n~6+)@5yCkNTT~Szgk}M4jB@rk18gBNN{C;m4(~l1Ye9~47+8(La z)R*dtqEDNJNHqx7Y*per>en-&w^_r8Bk(i;*6Z_l;;Hz_)mrsTqoyv#kov+>xfY$w z7TmFO%z%=T;Avhz+Gk8d%VKA10v0Y@2+Nlr151}Jf!?`2%)R&eyqKz^wsQlTdc*MP z&wLU-|94-7o9=%Bjz8%n@ChM|NHKmVw-K$lu2Frz4|t0x@9}4FTGlPC1`C>l@b@1& z8@_>_z?QKx{Oak=uxM@zoHsXsI>dxMMICN=;04I4I+X$={wJZi~I>3^)Gt zJMg~iKLuJ1JqC#yj;iP})KF7983(J9hBD#<1o{k&jKOvUaklOmfbF~Xz^;Kbrf5{# zaM&JccC+ZTc5&cEAc+%rBNPg3K-F_UDvW#Zkgdz*^6E4z1+!kk+dezOv^oE{-6FI$ zwVWnN!n-wFzqnLY7HM@wFjU-2iv`kVgML;;%l_;=@YGAI;XnV+=ipK!@w`VD`8twj}1S=bKW|I5ojsn_BA zzkU?%eR+UF0X#aU5Nm4PscZF9OND$I;NT{b9W@HTy;w{W2?ZBghWS!WQG%#RO#@eL zQEMFj_M_LqL(e=9w?6hfw5MY5l@DD4XUvts)~Gzvi^8un0EKm7lLkh?xACipA48O6 zR$Ulw>4KJ1FNRR$NRUw#!a`g0Gk)MKnetJgb+S9q=u)- zyeRxsWJdj^yn(r8G%P0KJ$`i4e|EzS@R5&y98O)@2e;q!BS`rz7~Z}C?92|3Yz6Iz zz|Ir32Afp3Lt!aB4+4T5dYb}bTKBv-2>#PMBlP^p|n~Z@4H8qJKOoq%2z23ywn#v&ZzGr^pym#tM)$Yq(AJlO6ISJ* zR#PCCDZs$sIJaT_c6fQ+7GdLtZLlj-L{L${tdVI|4PC6&iYqXiydo6xeIXW)-CC{G zek2OQmO`;mo0ds96ojuwtF>>W?U=_!lbu4r&~d3`@^8wO;$@j^E=YeNZb{s6gJbtK zxSo!Lc)_Y;;Dlo_hF{hP-FS9_p*R9|hyY0h6w}QICbijO7%3uhOf9)0BjzCgn|0wc z5YOgywmSm#>}xvw*`@D-vsSHwC!T#4e)+pU!WX~%H_(J|VY-$Evs`DLd=3(6GaSpL zHg!}2f~9~Ab!JfddgcIr21sMrdE?!W0UAKC1W7k^Lkfk$Rl`s(R4S!Cu1p@XcJ{+o z?Bex$A?WwLSE*LNtEk3Ybng)s&}a_?LPvwR0p~B916NuYGSsw=?v_I?!m-Vv z%@Zg)>lM*uLjW+<4&4`D3-|rudHB$^ABWcFCivZ*zlQn8oDCZ7s zGTn*A?01aoX)k>Q|xymTZf) z(y|#k9t(PxZ%0vJn;1TG5GO)FTvW;GSo4%AYgDH;MU{QV>IL46%2SkTP~OWfS~pv zv;5Ot^22grI*rG?`{qz6^iVt;I#E}v9VX>n1PbcW=9@gXeLM>=C> zBBp_8Qd^|~JX&x|l!;vpMBapOQw#Xp7QlDD^FQz$TIXvozYsq7!4Kf3$duk=p2Bq1 zXE7yU;n6T0x~8c=+Kw)#YD12~h5$Ym!5=C`=DlE}HIV~Rh@oe3`|bC@hD{sb!|yu} zKK199aREW&^m>)AmQ>rcNzq$;xms;PO@Eo}@xI&R^J^IPY|$xrbeU#mE&h~OWF_M9 zup|m6h_dhx7(V@brK&7fb#$>Tog!1EK=IUn;wVceqx3P0`{rin@LZ8n0Al6@vq{Ol!}ufe+18H+EQ&(C=N2wLKq9kAJq zKMh)wDR|+9m*DAjYoTvW7o2#?3aAflgL-a^&AH$huRp0L6Fe9cfnakC5?qx*s*KZq!ilReHQwpNtkds42ZEN6HfvhjO?Ns5pXQ&AO z`U4Cl&@z1W%b$m)_7+Uwml*O-7KCxL(a=(kh(w(+&SX+dIv}hK+nMO*)Q#eO5r`En z7I?U{53JD;UsHnZJ9fZ7ee+u&;cNfk2j7H?F25AcIc*iJI_Y?r)0X6TrOM~?d2&|~ z<1y@7t=?*x_GS3kOIuo77DXcAQB76H-P!_i|M64*3oa)3^tls>L?9N8d_)kq8|wA? zmuj`za$Pe}@J$mHG`F;G4u9SI-pzgXFFyv?UV8j3%~vPVS_KTV28L3EFj{k^ zT7ml>eH?1V0$h3FSzu4@0yR7Ajs+)fO9T_WVHhl$aK{td;QPOQ3LaS74;4+q^CF|2 z(s%@~d0!w@iYHS4fP#O0tyay!VWh4<+ygTh7qX`7cC}vLgi`&}mSlIJDn47FrxpmtIV8gZnPz(v0n%W@Z_k#yFi$N|Zgp>!q|B;vBo~Jj!*(aU=AN$1h zP(#5t)B?MaIM6G!OI8NHRpNRpyV24;URTw+YY`jOhJVUdpLabUGaL^4IyyT396$0+#X{jD`9dj0 z=Yd8+1SOF>=j3Dg&wuiR+~0iWBXH>@=fa%cZt%tuXkj~0=tM{)J7E2~jqviu%`mU4 z6E3*uVvO?1W}UE!*JO-gan}Dq!YE*=|XQHRQ@F-2Lnh_})D)!S9~i3F8$V zB$2lyOUJlH6F?RV9)IA!JfirKYh(duB!W>HZh3GstVL^Z`Pqx$ zq(z+=g9pLm=RoEi;E=~Ok&X**VxHF0D`2T5RQx5d>Lo@z!dP2vH`73tgBXi>&KUyD zI~q$zWkVjo4L|!8yztyp@Tm{H7f!wK-S~S{02nV4VJR;LA<{M%maaSo&OYNLSh1uB zag8ch7@y#4b%R0!vrUbKPc_vgN!+A3#YKOTN?^LXPc7Tson7xoPww{g z$oD&wPyg)F(a)XPkK!BwM>M>`H(XL}1SoMRz;EmPqpY z5m+0C`yP0JRq4IwJ(q#cA7Vz8fL_ja1A7`pheB=PO+aC{RRvN0I%B6M?~d*xpcR)% zH}MYM!zp++G6PT_+yIl?Ujad>!UU#?pV~eIVZ?<_pO4uDJaa~w5bu~hT9K0Z#bIMwLr(PZ_yH#req@{Fr6$2m};{82mqmPA_O4V z6^DyE7r?61&w&@7e;$5&??e0_9(|4p}!LWhsT?ViUAD}sKs$mis&)sCV?Y9%GxAos*b>998Q|oj9>lmfF^{3K`JKu5id!%7AuwKtJNyYg1L1eN5tM9ku9$* zwd1@ulR5-_L4U7Dl0U7g`t?d(i(1qG8(5 zL!_ki`-smA1Kan&g_mB5-b4ldc>k|p!OAnBZg|PGvBM-%Ybd6ZOpcTRf|M9viX3_u zS{X|D33%qI$KV&gydCa-avfAFrbY5Wz(+FCq+0^KH5YibIv*iuD;^EaK@>th;DHe;;fZslg|2d>pdrap>!Ag$Yazr>hF8BH7}2 z1S|1%eCUxPxcwBSF#j!=&)rq6)%ID3BWYuf6c1p3cfe{W0_u>gmMXgxp8tFx5d8P1 zSnRKB_4-FDwOWKVY;m%!aJ=>Mzy!Z(Xp*aw`;D-{U5~8;{iMavJEs{^B>bfL3D7A| zf?6Jf`X~nl$^sBKp*I9Fx{@A$5PX3Mx|(?S@MqB*0Kwz`2RSlZr zL1=1ifgPv-auZ{?*cB884i_JW0wRIKw#EdV z%1|Wo3drL?OJ7B8oWbYWGggGPTXw>ltpiXkRPa4=uwih_bo7!eGT&5?@JLzzjUnTm z#d2w_q9_LJB^)u2#C<#>6~O+A09-|Yxzc_`seRt#@&0=t;5~`w#Lp>;dNLyXWF|1j ziXNAM5D-GXcRjxep4+$!mM-XqGZywjPge`1VjhSE(fXr@z!T9ZqVJ|s#s?M{a$G>^ z&Jh?WP>HY1#*>Mt0OWudJRT7hgb#R+2Ym4qb{vfChRXnSza3)EyA)0t&H5n+-c5MPo{94t0=#@DkwVECTW!*zCIWh`$nz%zH z-*~feuQ>F=s127D0AM)jK?_gqzd*%5Po@F zjs$e4B9IIQAb{?g>@k_ED3hDW03%8XDfp^Y5b+R+HDY@)pw6fu04n|f6bE&n@{$1J z0YW8u71H3(|+r`{9d^ zg~h3l!`J@x2H}~l!@3T-RI1kj$^|w0K7zt?kJ|uqv|4}D@ApS0Cnr}~j0+!xGfrN? zeeK$lVScL*^ey*8y59?OD2{6u0p5q}C3;Z045zvi1(iHK0}*-?Z&ZU%Rb2vFZcfV} zFjs*Zp8`KBR4>I#nPJFnL1e#LW8I9yfd0K<65Ry7pz zH0&Okg!N+u*ona6M4<-ilr7>-j*v^+cF{2O)KoqTg2(5j9-Fzs(7*a??( zCsI``NI?*m&*_HMTZefaPpnd5P3uRo_wS~-IBumN@Qcar3K-D$bhj}UsLa49_;8&q zOsQ&FblpWSE|W}yWLaYu%dJ~(c`Ydd>a$~I;XEiN&5u-Akq#!?K&>0BB)4L4FqA`! zuc4wqZvs8mCm`2^hxs91o*U7QrvecsM-}@S!3= zm)(n2+>1&;#$zbsR_8EWcwqHT^ejSf(!y2<<1zH2>nfpEpvMOA@OdPYH6Dp5@YIID zZmbB5V;%?99+;RyqCSJ6bOkny=V1+o76rxD49k-Je($YHrS`$YRVDTgY!6Rj91cgi zOv_$Vt(1~7#~DGH7ndV8)6*1(MA!>KRI+|A3KwpImv;(yOore)L|oLcL+!IVG47zU zBv?hoBuP=XK}W$ycMqQ0Itsfci*QUAW_u7`ENVKVqNAz1^w_$lvGMfO)TwBD>4MxM z54Sgi&Euy4gk#wQfoEmHk|3o$viCtz67Q=h&?|D}_%RHybvb?sgYA<+wo;B54 z{XtCUP0(IXYv^itq(`-j_NT~v+c-y4hk(*DxS=ihZA-xKf8WH!gc**6FVO1h{90X6 zctHrGum!*+^dMqKXQMe+z^4wYQxwGQE#J2-YrnJQoL+Yn;?!7@M&rre-k-)>WGB!j zq>Nll5j_X5&$l5SkAFWsk-o8l0&{3O!)Nxwb%$^;_{mzW_8DE*7n3D795rCOi#8>Y z2N2k)yKvJMgLC(T!h~s*@3zz1!@0}v(07s7*SJ4=2354c&-ox>jvzX;~T$hp)=zavI_a z9QE)M9Wx5Q5{*XB@cDeJbRuZS-x&zcF|dc#AkY+8(;aNu5b!BhASU$tlZ!Lu;iwWP z6hK@F1)jr{(cQYH?P~An7(u}7NBBOJKe4@F`w$9-f~`$WpY9(TOnSWDB`Aa!RVo#G z3g~3rbo(g+&KbWw?MLQ)O(_BTyTIDJsePCP`lV8-^a$b(K57Aw5q!lxBt8K<7!1nU zOzyXtY<9gQiC$8;h{23b<9eKaNz<(SpJdnO{|_)Ey$n|z;{gBw002ovPDHLkV1hOG B`nLc8 diff --git a/iron-tauri-client/src-tauri/icons/32x32.png b/iron-tauri-client/src-tauri/icons/32x32.png index c517344d9a5ec98c33455b2df994d9391ee1e2f9..b0adbce9d9cc1dadc072b2d3d5310373c9699f4e 100644 GIT binary patch delta 1966 zcmV;f2T}O^61xwOBYy{iNkl1MN|Czw<_us+xcdkK=2wceL;|eQ+z@c*(e+D2u(2B??x>kgkgf?G5hS+p)FxBEtW6>(jmTf`Y$wfA14U``$Wj6-~E92nUaik3hPm& zI9+4iO4tw5Uw`%K%Kz}Jg>`qbrBasS(dQt7H~1KrleaMMXV~yRLA&=po<0~NT>1(I zbGtZhZUfCZh&&;+rUX`%F?Ekv81gn@`xnNX$*_ApuM!Cncu;f8@X1kWoX~IcSX&K# z3kX>7N?hD1?)?3==0j{migHOJB9AZ_yPtu}zkkZA4;gDnr@c%i8spoW5&STN_QMGQ zTUp`^0Z}ix@;VD!Y6pS6(gl2W9xk?$FR|W;VM!E5%DS&!ipv@M2%Twl=+L) z9(Lvm(o1Ar4tNz#m5_3(=Bv^ZzO<~{@)X~lIid_NtyXyk6%UY~^r4P>7{~~Qm0NH* zPJbrOG0$%iL4##KnS^!hfr%IVNt?y^Cbw!M1MJDi=y(M_Eduyt*->tA6m&51+PJr~ zM-hs!dgpJ5jYOl>vK}ZKEwyJNMtu>XPD^0T;A#SH9D%CGTVIHB&=`J*sNMF~a6LK3 zx)|Uc((~u-AHl4>SeE8o7dPMd4SKyE+J9@C<0fOnKwYpXa*Sxa#ObKCURA&jPn3B6 zxCX^!;Bb7oug6gbzYA{QQuYXUR@PuP_b5sQb;J%{y8kA`+y6w+UO=naunAa#Yb*Rc ziDUFeL~M>4S%yjM9f3&*rYGKnghm?9;-LKvpcTT)W2pHqR*xTG_4VIEQ?e~}I)AnY za8)R!tnl|Bq>!a2_`g}6G$4mjpX{GMxMAnM)EQ(!2^cicNqX4((=QQ{J6G1$Q4pB3 zyeJCWo^!ftO4x@-L!300>?C~NaQ4SY^5q~gK7W(5)=FBp|Ba}bW6tjyGh2-mR{Q-XO5f=Ba zARe61Z3C5MQ+>cTDQaLxRIc}e{c=}GlTw$i={L>;&RSg~psN{9@f2i{(M??L{}0~# zZ(?@s1!UCa6x~;BZ7u1_woHA5K7TTz^4;7b9eHVhb_wAM0corDX4q~~)=*r%Nr>>xrmnCMh$Vx+EjLQ`9xWMw_o zyKP8bj_t?q;{FHk(U{FG0Dr%@)Hva6y(bBtJ$qJqfNCq^-2>~u{5}kCMP!K8S@(jG zH3Gm?+)Rr zO9XP#S=2mW&NL$D1y${EE|&CEVtm|cUd6`fHjtcPzSG5!a)3dzs(%7p2wX*_1AFP}l;FxAVe~)M>ai!<-fUjwqj=kVh zGwOc$SM>Xjk?sDVDnoVQY001Njg>R_+*e4vY;IvbKE&bEW7_d^+ED{^X(hK-SC%VE zN=*RiXhen>0u&m7IzKKgeL(AmCL z9^UE)6@feQRopF35T>W&kbvp(f)mvSl@(phvGO;!UYIVg_pK`H&Gg}vu(^G`R2|Q+ zoj;z7ijzEdN+%w>`fUE38+yi`rl)?G9M6CH8LN~tU0jb=SpWb407*qoM6N<$f>4;y AsQ>@~ delta 2418 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 EfFKVjd+s^k`A&lU{2|kSqLIk#Xe_c?k|ZXI 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 T`bd?u00000NkvXXu0mjfr8{9j diff --git a/iron-tauri-client/src-tauri/icons/Square284x284Logo.png b/iron-tauri-client/src-tauri/icons/Square284x284Logo.png index 60d77071baa8b883323101d359c8638470573033..7dcad9c284253bd3043e115b1699973dee0befad 100644 GIT binary patch literal 51051 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

dn;pzd1$TFwZObe{!2sKVNkC8G=36`&fy)zk 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 M07*qoM6N<$g1PlYD*ylh literal 79501 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 O0000*GITi$y zbP+!<n$?q=($M zWcG`=RGpcf8Miy^es`L?!k6c(&B^tx_Kfo^usduynb{eA)Z)A6mTw^B26=naD&o)Z z>^FG+mw&~~7-(xK(P3ht>4V?C>aMI=1@}~adB>IR-sR)c(}~0F6m2#eu;{;NBno|j zfPB5Xn=j1tzPoexuBG+AdlMFY?YrFr3CKs8K|*wEwPay1`VlymiO3pXf2gi*#neI< zTx<*8IS`Jp?sPAola)zwZ}X|%bdP2-nLq}XSAXJh@aOxBrSMgFsCI+WGeBl@ENRvV z2&082vzX2ag$6CwwX|5R6~-&FS%yyJqA;ad8pj%`5~-lAx=z87^G7NDhB; z2?Aa1Ot9xhPvfVpb7JApd2}#`yj0|MlQ$#@3u-;Vi!cw<-Wi0^O&1keZi=xfs4@pN zQ-AE>v*WZ#vXa8g@?*;BpOf@<)@=$jIdaT z0p@iG5Pyxu zm_RV3SAV2tWPHDY90-obP14x9>CJ9^&_htjJ=fmi2D zG;{mUb;F+b-i4E=Pk__ug3G8#pf?QPoaX{gQ`AUQ<*r@puJ63kd>7W3n5x~pShox( zT{DE6$6!_%mQS6NXJ1SY`n@Tv7Jp5^$t%6k(taJ9Tdx9}h{LiXGgOy45QT)+-!HSj z`Ny?AO&!5~0>=p`SQ~9^vT)KvNZ|P_SyA>6YRN{n-J3UUc2SxtSY=x=nx#IvfHd;xYt+VMU86{Fc3qXJ?j| z6>NI)>*wymZxUbprR^3>ehdXd&TH9zO+wsXhG!MC@PG!c#u z=bfxL3|+LUcV2#0?QT3yCS|4W(($Jim*MhOlxMg3)2zhs*UgcdB9TX?XWzh>ErG#; z0J&cGj*bg; z_1sTM*J)Cb>*>MifWzS;SoW{e&T+W5NH1X;^rNDF6k-{M8dZJ`zS~o*Hi|}neyXW0 zeCY^Tzw&`rz4&mtEPow$#(<}=qI^mocy5Ojy90|q^QCw+{37n!5zXaDGb8{*M2lgp zH)2L=#N-e$@&RLXC(CenG7pnMB6>AZ$b^d7J*M-@P@F#8hqxhp-r@t^;A>m4_Lj&7}00xZ-0KK=fhoV7m>Q1 zFA<^!N#I%odF>~g)JMLt>;Q(%JR@Y7(Pubn@k_oiUEn_}Ic?1J0Tr;#;n4gihdO?}Ld_qo+E2eVNou$RF^SwXE_Z&Ft!^_iY zv_`Z|((hea!Gu%Ku6ek$y{8Y_Tbja3xGz|Dvf2_10!<)YU0Drt?O`)7w RfdBvi00>D%PDHLkV1k^bRnGtb diff --git a/iron-tauri-client/src-tauri/icons/Square310x310Logo.png b/iron-tauri-client/src-tauri/icons/Square310x310Logo.png index e9850603617d51ec008c12acaea76e1b4d6b61e0..c8d279cf230ec5be29a5bda0011d651f85e56692 100644 GIT binary patch literal 58732 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

hId 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 z zN3-7*Ue3bC{sr2ngc@n@;TR_N!bO@aRIoxynQT5QFZrEjk9rPy#9=Yc%6bQiMO%nk zDwuf3`^bqFh&gd$G$tHtS(B0A*;8gZyj7Eaq&fo@7vKeMH;^>5H|f&!OABIhg&HrN+yrhB^P=iF<34W?S@&BKDU~P7(7TW6MfU zm(tfyV;|B00c?3{aiysdNq&cs`^tSjG)m_N8%V7bN^? z?OZ$dDppk>81fOIBG!eUeM3&QM>gA_W_bU>+@RL|+`d$)wl45UvU}hz`xAnGT8bm;iCwjv{wxL0qM@w+ zyzE>`j_k{PGU$;R*?qnE-|JqRdcY;T7S(cCt28VfxT~`KlU~9|dsF$CfpYf-+RE}D z0?%8z%_mP<=j|O?2$3+lqsUeaL>-(i6;s>ok6}_!hKUcr+^^GPCrGKN3+b-nP6LY} z-U?ktAlU`8+S$&`;&m(OBiL$+He>S*Dtv2uN>C;CXLVDbLNa48z4Q#^dkc(DKiBc3 zv3zX^c#?}Feo0Oag%;}I8nCIv z7bb9ICyuy#Ua1S6H%nFo=eVBKdDZ~ZY!dM7vXK#B?1r6nw-t=$kg7kyHV+vuO*6sg zg1+k1zvP-6#<>`91QDc+$w_L3gB)j zPKuLfP}A0OJJGELj8L$vG|I)QijR5h$6Tb!ou5=f{ zj3fmb_RT8j5hv;8M84=BItP=uJoj)v?LWh|j~c8Y$+?6Pq(@VGbMLm0uDeCj z0(3-da2Aw32THwZYlYqL>NlyRhexahn*GqQSbZ`2V+POd3zcd<47O}YvN9v9z z>LDkREdwSw*~z=hpUCEpuRObU1y#HbJ`?pNP=z4Y_;d7sA#?EWGpHf4wLY&dV9knj z*MfaNf>U!j-D1b57e{u%%jcZ^+`EW1^bGiKR;>}Q+`!B9jjgDai%#hc0SFocf##ul z?5}DzlrJ7X)L3~!aq9h`pV@F>HBX^mm;$Epd%?fO2C#U#R|*ysvN_4gq)Q7x4+hVV zK1?+oWRWu`qw1YjA4YzBD-Z$lR@57B|EPZ5_bq>8{h+)~n17N+yWe_CA~YHxD=$qV zq-&)fO|R=(<*{%aZ6=f2u>gRyzT$NcklHrkD7#P+*i~Qd>Q}Wf*|z6{I;WsZC?v}> zOD@>;meKyq;NvQxnA@4jDVGxz(#a2nr%xDj4S*s>WBHqln{t76!VmqE1zet-6vbaZf*Z=o}@H8b0>Vf2-6>c25C0=d61>49zNh4wxHYwl@?ReKf3 z+zf*DqtHIfLJB&cyI5Y-9B+#`5V}T#RmoqDY-qS3xp-e+piZR+ypE&x`}#wfS4;Z8 z^E!!@3R8-ZUi?gz`K_U;s9%9%0||+p-oNfOicIY!#z3qgejjamlz#Giegg+C1>%LDEi5qJ zt`Y?BzgXP;{m-Sk&YVIozB8m$^-tl(krvNeO2Taned6jfLVa{YA}^W?W>toy75pR{ ztfsWxBSK^~cmA`cn=77P1$SkH{ETM%Fho~6BZvbMDzxpsvP21h2(=-SCEFU>$AN4s zBs5Rl=hnm%o=U{G*5Vx1E{<@u0+R=J^bUTVFp1V7-X*kGj~P|6`jLDPWX~7z|L`R_ z_20mRj=>UXe8S>{^p`QW_Qzs=8WCiZ%oaWa%tn(ju+L1$w}izWoC}(68-gj&K8d8c z2^=Pce?dX8pD*!pkNL-GnZQRwqRLLNo)&kF3GJd-wvKEqb0>ChK!>^q`fgIk#*3V5(!CEHb#N1 z+eeX47Lylo)kRr4DXElN!-3u}#T?&Z76%-4iC7f0Dd>wz4VzfYh*>mQax2`f%CG72 zyy|LmMVbnH?z!E?EN;nPyILo1_iG0Ui_p3UOfu~J5B&cWF3x4bQl3CYf6Bal+B1j) zz)K3m4&C(2z5%p}q=LDly!48L7kYN9E^+ZW{SE^4bKy=s8}#u^pWXU4#BuEYGR{$M zPogxfr`W(yvAi9!e~O9b2=Bx5yk^Y~k}&Q>$9CpNh(W-&T4viCM1eaRi(vTMiG~eK zn{;zUJ(I{kdG-AjzxYsYPa_$t+&IUAcJZQwu65;Q-8cN_EN+DRTc`f%+WLqjD=$wG zFu)`At}IH zW9G8(^bAzL{)M?)&Y5~r;wS`kJ8767%si>dH6DoDXHw0b9g+lRE`F%Z8w5bNETKw!m%r74cfq`G+c~q{yKQzFJ<| zce&QJ><^Ix*GzNA=&}zr9}SiWV;%V;HwW!G4QgL98}W?Kj6xH@)w^-n>Ew_XU+2t$h00Ydyc`@A$FpT;-&}@ojhWNF{?Dk=+IqXh zIUvC`vdQ$hlEDilNCI#8D@Td>lh}-Mv%vK4(H&$_P!c`P$AcJC`-&KKtQSt-6#NAQ z@$hZT%Jbpeo8}ZS+PrR5`G~n;^rrex%Fv2A6s@u_W>bBcl8kB4WR$d30F4kjVNo1t z*m&&kvF)9F5rZeQ4OT~3>y~5T#kQP+_-gE~<88r(9km`Ch5TT(YVf6Fcq<9uE5WZh z4IIr$&ByS~M%E;y@?QfsznU5d4|3rA+L+c)qa1t?M570g;V$h9pX+@`%hhVNAs$Om z>TF%}rbVwuF+^=HZPq{45h0CV-1t&w=PNHb~Nua>hthFiShx13; z;$(quKB|vJE~qRiWTRvmn*?)JSRY9l%45@r!h<+I)6HxyFF_XQ>%dr#Sy|nyYe=-B z*@|Vc*N@M`sGa&z)`53}muHm83`&$reagiA7x~FWv%d*<3CEF;BBsoKTPNtLRmr8j zr=S|BipMjRL^mU%#T~%J*&zATiIQcK@PS+Oe8~=54~JW%&OMkBJnq?FEU>T$2hwHBc zCVddYdxG0{4;a8@7qJX=S`SX&0);TYz%G(%afHCb+Wfnb*!|J|2q7XSQDN^(Rvz~_ z%BCrw=wG>@p);cBG*=(4Fv;JBs$$bf{ z;zg{|G)u_zPy%yhbfJZ_n8eJBDK!q8B3|WO&vCZ?MzUNY{y4Rahnk#oKGGmvN9%_1 z!;FF2|H93jJtrijAE?$2A(D;i6-37GQ2Q}-SR?5Ah4{ijps&xpoe^u$clyLgpfG54 z;FK0?(A$Hb$3z)_v;E-C&xvCpD}KJf?HH>B=*2`ax+Y2-{X;>ur-P^pX{(!(VAeoQ z!8Hia2O~=!tv9=^prwpyPBv(_SW1o~bT{uK(zvS2r9jWZok2Xe3n8jGyPFhY(&t6Q zun43l5_Ci^xE#c7Gr;P4)UJX2vEjcEidRa=Nan(rXYcZ)5D*GnKp_@;H+!taQI$Xp z<|#|Jtv7qloGQ4}jOLoSv-zUykJqB9)kMs;2V47X8KTzDAanOVk zHsehqj^`PQEDSby1=X3>MS-_{;p>{^BHgRgCd-cd5G(yFN`^Ceeo1R;c4B75qciY~ z?-SR}rgeGdqvl?chV9ID)X{=IxuiX8Z6BfDpLTp`hWUw3>8g8H{U@tmP`^B&6fgdj^*zva`)U+Y^~xutSHT>SQusB#vFHOJ#~yTG6R9<@ zFF`ileRw^Bn@L&gLY>pGf0%Ls(Rx1#6Y?mlxJI74R+3u_8)_Ip7nY(utkKJgnh1&OWJ6T14bfzHl%FsGg^edp>0dA#Fy zncE6)FGdiWSt(|(lBzxil}Sjq8Sffz+Ru30;Vh{O($uQm-(l_%CEf{}jJW*;LOu~y z!-M`soi7?=kpg2y!0s51$2M4sQ32`yp1^UO11R2TRPv!&@95!@oQ5)mw1V3;bpg9n zYX1NseHDBOv%fAD48-?J5hVy_&{)>P^8rYss(4+U9$)$e((3X4%;2kKkc5xCzLnjqvFN@ZbTSil#G3V!+2&n59opRmoD#DwZ-37jDr4pB2nIIC;&L)t69()*=#C(xw5{#r_cA|Yp zSSry2`=;fD-pYi2WZT1$GvMy)bNw5pU#Bfa{bKmm>UTz*r)KQZX3Vg`cR&cSf=NLM zk~F{_WNnRNP?~^-awzgm*eq3A8l>m*xg9wqrB$LoH&@0w z!UM5Q2gP*?`5}=4EB0^@Vm-SrGoHA8`=?#UE-B-PBVI%5Nmpj}4~3o;x+N#LEb8D5TJ0 z$#aoAr3esO|K0|rpkobUmB_xKkQ<7SGN#5!OK#H94J!Ah<~!@$6_afaVD)gH5;pF0 zMc5h}>KsK)B@p%u(CEFps-k`m@J1eykE)IApDQ}}dj1x?r{Vi<=j!f0XFcF_9nbO& z|8@WDzQIuVEzICa@ooKWZ2k88+YwcJ>0d+kv*~Bumf=9{G^+*c?``Tthy0&j1A9bf zgk$1SjTdrM{~-JG%$xkG#`4AI6aipzb`Qg$%Rx;JFtDqxsA4>UmS%UGx8ABUsZq8>1pNYA64@+{Ax;9*@bZLhvvu3?w5T;qQLYRI z4-3b=7r6%Q6w1Y008?VD0q&%em=Go^p_&eLa>+lk_n(-f&byPGRLRj@zq!z@U`F;D z?u!wT7mkJ^B%gY_9q)|{$GDVv_kCUapcQ0Q6)sT3)Ql|YwoF459DXf8leZQ2ED7*=dtKa7o{zq!u0t~Ilp=`i zV`Opk-0d8Li=?zwPhCm7A7Dk$*SNo=jTJHKbddFE7I30180z(Ms(NeR%Pb8{&2fkK z4Hfp4um4j(Cu5}QdH(&_`KU^fB#Ewsl92zh|HznUZhk{K zy}4>b*%D=;CD+I{KH{Bl!B9Ll5P-|dB-X^u-y=X|J4Ut_N*|!Qd15g=6yPq{3GESz zu3=dC$LDOdZnL7SALpXI1$Gi8#r_+&JLw_)XehQcNg=s-quI`uRdq`WL+4C2l?C@T zl=eB8u#qpN`Hef%0ssn5i2-Xzv-t9gnOG?3WZ=rRWyi1WC_o}27qAMv;UdkxSnDI} z=`W|iLTyU)@XKPR7bG|xF#9{dUemegK~>_9_U)P#_}}0TIvl56UVuD#>@p{+(DHkR z4?B5hGCPB3`IkdJDO7qfGn;$rxqr#OLaVYsbf;yJMXdA$e>@^L55Z~%4?(yQqf|2g zdYMt2wD84q-HR3NXbdGh~5n*I-OI`8D+&P9imb$xOd zTMAaETyO0`ZL&bO0wvN;~)!Yn= zOVqX{U8RWGY`d%bd$$u zKMTG-Isu8lU>821Zy1sus{D;q~n-gZW}E8Cu{v{RW` z-J4aEVOEV}m`c4zx3$dg)Hmu#Zv3-vj{92YR9)#2j#EFrVx$pRoGpu0U zF>7T{uD7Dx@0cg`X#8tF+)h%3DTy;c?Gh(;GHKUaVbv|sj>4vSe_4LOizc=Xp<7ED zHR`yXHH}Ao2HWYG>>@($U}(PxoE;MGk-Z}8F@yz{CQPC*Qx*8gGKZ^cI`O5x*B}x9 zFnUFeUxgBoPx7!q*%6h$OyjFLMGGupTEg##6^4MLxxSd`SgBi)1El~xDj!!;jVaGy z;sm|oK`d$YXArppc}!@`AhlqG(c%=d&dV`VSX{#(Yg*?ym?tc}6Jfwic`Y&A0xhcf z-@f`;?BBq^rZJ6zkb?cWr6PQmJZ>NH(@FFBivg)HvGI#ipG;!2(wHO=MnS4s*16Lh*>_W_1Cao$wzD{Nz!Va9L6ILHCJQ$2C||v!WsKfUaw6J}6k=vZao!}c zRjOdtm0@+;AV3mwMFRzlo=F@mm;>9{Jt+H-)sXzERKiB?PTb zv@Y9@{CVJJUi|%=ncUv~91?bcf_6TbrC8*A-PGUwyoP1~ZN>YxZX8Y~oVt0N>$Rd7 zFK;oRF}G7KDLtG85^I95HZIHG+9P)}6pWbg70+*YobGngKU zA3U%T`G>~Y4ptl_GtqPSnJt}L0l8PXpJS0wGA|xgG+NqShLx{GP(^8fX2t4baAqgg zx^6*%J<6)si;0Z|d`vf%_X1Y#4h3C)b%tr5DV4iF!v~++x%GP_WugSh$EyH^$z!S6v}Lt7C?QX-7bYN5TiVBoUJtuU0yzCCW$*Wf*@@KQ zr{_jrP8Emv{?{9INP6u%RG3O5nKJd964X=j9@~ruk|D)QXD8<-LUb8!>h-DJdxO59!aN+o}LAb2zp7cXb`04c#R^?*$jef+vkau$}g`Jqf zxKioq#;F9ifoT-q5)+`*iA=GmShS0pORPOr97RM3BxxxAT+*i&nQz>EaD>DGg#-wb zGmUe21hJ9F(Q}w0rproowC9E>>mZE&ITDrfDObDryZ4*Ou9c^ZESh&p)fk zm~8miZ6Aa?1`6Px!NVox$XB!npvqL~mn&pVvS;e~OmT9AcK-VM(}8Lfu1@`Lf1gZ` zmNIXEYkCH;FrI7N&CU9BvO?$d^r1sd39}c17V?tjptfX23J z3Qs-D;^_s9$zT1PoOU~dTdMdiz2KF$IratCH}SJ>g*W$agmxo77aKH%(QerSWG~6S zR7}9~rEN;`f;QPsB;Xj&L$x--z;2XD{IgZ)FOl>P2;<(Pw!@O!cVvU9?92 zpG9$-|87g$2(Z^>e0yOYnBw`pX*~}l`#<6(kOu^tiM0I3LAyD>8)_Rd==aMl$A7m4 zY0iv+h^HqBa@IB|r*z00+A}mMroG-gQhUHNJdc)>(A=2RafE$*LAHdRM$xtX!X4v3bdKU@t_R*ei;*jaUJx>oX< z#lCu7*vrm|uz2!OHIVaqTg{XFe`qw&2E*e*%}St6=m9rRe|fnZ((|M9TB)EENTa|9 z+ppGbj){Vo(rqhy=XEd>gl}Y5FsSUJGr|kgUM@!C6%5wM60)pEo%n&MBX@)OT-*lC zkWaJHYRROrODP}c=+NgFBJ;%r$uXHj%wb}x$kyzV5EB-I(AL5|bx%L|!@n#24U3tR zmRBLwO11N=4`??Q;+L%8g{2r!_1~C<0X;O1!|AmZ2}yZ$p)BDk=o|o|m$f_%SqW?1 z^_ly_gA-St{6(Giv$1RZPFbi>bVTKLHEW300@JZ}zWdF1y@*$~hwL5vP z0wQN-m6SVzWc=L`Nk`cV4sJcmJ8nOGV$YEqhr)wI8nEMx{em)8`L|x>9Sa_(V#-I2 zLrO#F6A9VnH7{J7jnCm6w%fzF2Isl% zHEqkKvV^KMlVmIDy3HLkJ+-50|A9;!j-suBVXatZ4>=UlH7do@mUC8c+>0y|7C|>Zo^VDpb!hTG}not zvi>G1*gC#|o-@Q;n0P1RhXNxxYMRw=*`+OnWSi-D0g^2lfi0~n?)X8UeAB0tWQ28)XjWMpIt`9$Tmu?z& z8?!@n2Do~^@1_L{**I}(^_BYuS35Ezjak zJ>Vi(W#ptlsrEwXXAF6Z!6=sd&T-kEg$n?hH(mth$y>TOHp#sq+mEi2b?};;L}$sn zmF=Qa71^D^KDEpwF8}@B{}IcQu{jnBc8x+2GRxG2c>*J*Or)!T2((v{Tvy#Hi{E#` zbd-5tuVHf0TlyJPkgc_gcWG4;llZT4Q1iTg&#$ZHYdSLw4*pQ?{$|%f%--FgU-uxW zL3Tg@b*CX!yfL5L=F%ZqcbM5=iTB`wFsUExZ3i0C4x5Hh^(?tyv)3=6LX9 zr9o|zcAmU%zvq6tZ>CipuYp*^qwyuo%wRN^XUVyr)vQ^ciwSC>0E8c7&MNN)qA#U7xm-`85HbU zoW_u5y*8<+gaROqygn#=_T^FTKJz6!+++y+dmHCBx%Yw_{N9%s?gQ&DBwGI~Wx|}l z@8yK_OH1A3;ifKthhM6yYBDqRB^HMe4wvj=n2tP3$8Fs>KX-A7VerhG(x^v9h9fkP zW8#Pp6O#2Z(B9Dp`aL+HI55g?O^DGjqm?`rs&xxRl*$(TNFt4@m;-5*4dgTM67s^t zPRa@L~c=T!4-#iN}o?K)16#&()tQh-*i+(h74+u+L@Q=OA2$xv4GbG|WAYH5kJ z3=v>&4{|shQ z9P&$!MT-CYjkx}V$V-$^u)B!&s9!&IeiK>#=Eq$j?v4C`sw4PP`baJJjr`N4_C`Rr zP0DU{cmMVLy~m`hz@;VejJ8NPKVh8wwic{8lQ(SfNBz8JXp0VJYt;lIIvp=helMIN z8WV4$48cF!>k$*6c#J#U6!%P|DOEChDdCIDarP=$CG)m#A?RQ2pQwzm?)4YwvnsJe z%|wk%RZg|Ljj?8Oo?9b5S6%89qS`cPjA2^2?Rh3g6=76eDrwcV>^XR9fJYdJ5L+v` zIkw?-0NsFW?}b*Qx7T{ZZtvqB17JazQgbnapI;$UIE)S1bvX6$_+9ZhE;zd0$L`lv zbrRQlYOORH0OjsM(ByX>H_Qjnh&%ksCS}MMk3ItlQP1s%-K}>KYGup)MnNY0Fhf96 z$IyFSNl}ziS!)!4wsdxqY|QpC4#T2Bq9Xd90Rt37J$_hsQ!^|l&JClZqs%jG8@;fA z$^_(U1ajziDBp~ZpK%=h{!O&SQhqnN$$%9utHeB`Fm`^p1~rn!_xb!&SW%nU&|%+} z_ok({6IjDOA2{N+ud}f;M(|2E*~EeO%CPR84kGM!%f7~S_Y5Ww5=S!>3CGH>3N0fH zT%Y@@FZ1;(9k;K+!xIA zbVDlEYjD?PRA}8Rv!|Ud58>wxU=o=yAu`^;hRLQExt<6mG9GMzc9Y3E8!>&im>I*A zRd-X86Wlc6p$O!hK%j`3W^;qdQdF3Vf%QS7E{;CWP6UJTUGEv7g?{P;V%eI+d>F_* z?do`623eK~NAd*=>E;k4rE;2efaE42fR&$$y!0;b*@t)qs}z|WE&oM7%d)|tTZ^Hl z;CDGuXL~P@(k`x}3fk2awE$SUurgl3ezq?G9y#cInWG`$tl-A*35CnDmgE5Wpxvo= zp2wKiJ(Pji$9n%F(yUrOg4*#*y|6Z*ThiCOCUTs(MYjb|0A_#2$c(;xL`$b|5u=jQ_-Md32dPj9dUW`p|EYrAhq z>p9eR*gLv*fcbq;g@pW;=%aW_;eV(#V);7Ibfs|Fv9RcsRH$;YpmGzrF)bi;Aq%!p zd!TL11%zBLV?@i|6wWu0co%_k8Y#3cXhY)>Kg1w*J_5R80Whqkr47AM$mK}L%;&m2|$#W14c z`e*sD7gkfoWRcL_2Q9+RxI_3XwQu!^?t|ch!);0}zto7Qyt1Ohn3wX`8XVregreI+ ztMb1Aq?r7#!L7^dg^z2K<;-s%+@F z*&wyao%U?M@2KoTk;GAJs$VD!-0-nH&Qb8EI!9<~rh|?;H2x{kU3O5(QiN`CS!q3}fNeP-aWj&vyHvJ@=8Cg0KSovR}Hb;F^tovDT3;skU&V5X7r7(S%e4pmd?`aiKM zeneJf1Er}TD1T?Jvy|Z%!+;!@D24W%-kjn03=?#d&ify|;BVLq^Fd|55HxcDxB}hq zikA2P=36=;&0R!}lULpPt`TNOBHxa4&w@m+PHKH~0k<5}x5pC2W2cj*g>m*I%BGw4 zxx5;C(2w?=F#GTF(cX8_0F^JdGlfYO9w+GLO;Cd*sYPh&w342e(&H_Rb%eMrkP@? zqWttAjFC^9t3exH7tE@C@f0ZHM53_`DP3~L_`6kdA1L7EE|v0-+eANwBOR%fvAO-y zMCJSNMw+e!)KI389}Cp}2GsagEF-Pl@eQ0QRq@O9J!97{5d%)2U#@zYVnJvjD!zRt zX)R97KXbZn85YqoPfpn}0p#}kF$Fs`;)LR%;i1^Ph!uKnwPrhp=ron??tY+pUwqlV zshgkA1rmI?sfyc5%em4_sCrEpI+o1L#n851I=pB^{Em|PFRDIj?XKO72BdqC`lDJ(>T4P z+d55fcK9ies<%@;{JtmrKKR|Y%)i;F42#5AL$`lqQ~$d22YWn+Nm?e-!kCBilftL{ zi?(O$wHwdgTnW!(tm~dg^hnbuDdYA%euAvsX5fXnu*il3swxY<4%xwZOTU`*(07ZR zwi{mEPq-^Sl( zvuH0~YUrC2Tagx{d}U-G(aTr<67qVJsTtSfD>HIW-&#_2TBgE zq9^_|4zB`dZ+2N0AaV338dfQa_NUaVcuR+RpybF1mn6FLq7Lc!K@sMrZ%A8>mf>_M z)Ysv7_!?-suCuEXo4_NOhP38rObb7o)X0~#B5EQu+~!v$ztP&dIH_V8I<`trx>J<5 zAn5K0y8Xv2!`In2IQ&*saw*pQrS4Q(Z<4p`+KO!uyq4$s5<2E;NBYBD|_2n3{INL9~JYQ?msr>yHxf;V@`ank{ zax_QPInYX6$lxYnNzWa7AaF2RFKV4TLs*BeZx$~!9+^o)q0kqxzr0uh`!z_%aI%%3 zY#)AwkKO+jL0p^(%BlE`eRrY~vRTQNjA#2rD1B@bH-;>sxQJsz^Y~-7m|Yl6#cT01 zVQuXRqfDS)xzO$Oz_}!n4$lnQ?@4D_pG~@KA6x1PMgWXP5y^x})+~)VzWkYFd{%E^ zglif`&2CMRnJZ?M{d)LGtF&6~>m#X_MSIX?)i)>pJHX2L`uCX-7ekz6_38bhyMD=XHt>Rxx7shZLr;5MZ z^)*S$qxG2lGg#y80pVRF_0?4dmjM!=mBa<%6Q7SI=q5>GQ(B}Ey7|^mlR^N@Q(sY& z?W72^@EMb9xQ7|c>)l}~k7Y*YfFJ05f>24eA=LjKyu0m8$LdwLYgLL2Y6V$_u|1{K z%i*yiARB7sqF4>Ays6cM)NUWlV@?Zk)g>IOVNAz5Vl5eeIxq(@EC5!O) zieG9MX}t(!$u@ZOhhJcUE(G>4zl7)xsWctYJ%-rg6cDmtb?eQa0%TqYicBJ8z?|xB zsCmKV9Egg?XKz2^M{AQ}q~X1FHfPTW?@K~c;w-c2+we5jKAFi(08H#(l3 zA3%P5^JCnJKNpi~*$Tp3krV177i)58zR3-u+nHD+vKKPkksatk^Opi9*<9sfO(1)L zJ+cn!Z7dP*aWn z(U|k}Q;x){XJ*YjHgcHHG3$X=$NHKW|74)6Q^O=1%TnW8r`3gwHMT{xTeOL|Tw|h* zJ;s<~A-lfD7-4OR=|f$xVA3e8@tcfYi8E3BvL8;p8;S3BEyIP~%W-GVa+K{`h5M-# zuV$`CZNX+Vls~orAVBhavs-bBgo6N5{>xK5M?H&GngRFAHv8gw*N zp}p=tq}8Pqj^031`4u$Kzh8gnJnBm?prPy{8p`SCGP-{692)MNMdPg>(0JoJG+zA% z%@@9)xbzc9zdM2EuaBVd9|zHRDj!Y9GSOI)hWdjks4d=&`}rGiFMBy|XT;-LaulxZ zjlhi$Sv&PWk9n(D&j=b~U8svBT(F6>G`W;fleax*XT=BWYGK$Q zQ_S$O#mIWWhbM!AOj@_a&i3dL7Y5x z44;1V5l){xi66fD5|@Ae33o1DK-twRsJwL(wPodKs;NUO1u>nitf*S2kntw#mTasu zDcb5m(To5WZDqtQ3Z`yQ0CbH4qD$zi{1Kg{UqE{E6Et2vj{0AVdDdFpnSH4KdJihU z+=ct6x8nXMZ=w97S5bQGW!yfz7T1ek!j;^0T&|to8ik_ue%KcGI9`}H5}{-5@wjat z_?YR?`=H6Ux*4krizovM9QDLn(3Oa}Tx0b|wB&-6$u%ZPwIo_FG%`Rh54olgY0F!F8P-k-O2rb%~U}FW( z6^rk}UEKVJkXaSI9MnInDnzVhwoeYhipp zT{=FD={T{(3sW7iagH~329HO2>~!QWo`S>6C-d&RtWii_q!04g*6v_OrDPK_*}AjX zm}FzyI&;H3kQ?raya+GkM|6v|+%PXrKHXm!>e@@L6@~PWYwS2D*c`#6T9zE4uA?&- zYdJxVa@ZV0_bu!uE6|NgH73_G{pr%*jpi{Ixma_QV~u2?l;AR;}D@%Ug}I2%h~p{)rE z3Ck2zLmw@5-aS;0HBZqHPIzgF#1u#A$}}bV2etK#qnKPHEYwuve>CPi{gg4`^~|i9 zvqlc{nPolDYLmg$;>l-_OCW=9u*kzj_)|gg&k{(#%(zQ&ESU*PHwpW)h%#800J{P+p3{cs95zB_?i-yX%SZ;s&B*N0L1 z#UWIjE=Khy1*kfekE)Y-s6CO5#-sbubU2;USh5dw2R5R*XbmdzmZLO_UXSzy-fgvP zPaN*;jz#IN7~I(zkJ~$z;MVqKxc>fPT;39oQ)`2f8uu(-pFIvy!|m|IAQQM5X>-A5 zEMHd`(R-mU)`70J0dyq#kkC4WWw5EMYeOP2gsG_|1`f2ZAYLL=f=xA4Lp4-GHU7QE z#Hal9i2=S7rq1>rJ-*0e_$c%rWCKl!9@InL;ghi;HNDUTRY7|sz zW2)OAgiQCr8zGaCx8@mqwlN4l?MlS8^i?QLOF&IZILdb~#O-bKac4&$Dw1MRlfDww zX)92bx*TQ6D{wn$C9dsWfy?w|eC~q;e7AKmPH$d{lkX(r*oGJ!d@UL|uf`zd)mZFX zAC0~1BJuv35WK!T5HBYBab8H6kJX9(Sdq98D;6)piX}l?Qv7E`kA5dA2A41Y)#;4s0nKd=FK$ZSqf}1MS;AbmKIpyUp;MY zURaq2k@D9jlWQWOP9Ce#!?tm;0MnE%2hedfL`Myy2IyeEnwE=#F|2~ z`8#7zfQynOR*Ow8*fQ89%VOg-+5SMV5t&S|^?+rxWiNVAvN43LlRO4nD2Fn+=BOl} zI7l3g5IDkRnyNnM z#+YR-#&8ogxNEDyo?hSnYD_k;?YSCCv_+Z_YqBjUn#!%94@x$bU{mq0<3YhDen_xs z{At0akZdfAO$3Ps&GWotu?9zE2c+y56kv{#fW{LyeoHHCd zLMI_3W-<;feGCT{Pe4K3801CyA}`Dn`E=YCgt%})Rut|k&th}I!AO?X<}4R%?#Std z2jQuN-OsXE3t0zHC64^q?ny4)&ZJrv{aXxH+cCSBTobmaXD_73aIxl!%s>}p2Dovt zwqH&r%?nuz=rJ_6De>zq*jNTzroRo+i4^)diOID&1M%T}d+b=?j$I3fVs9|LHi15P zbGAEHPqjn%(7t%eN(5hHmKjKMILpAH`MW>OH>MJyldG<#P!fP;OzGYu#dRSVR&m?jzO#74?>FG7F<_Aoy3H8_%f=$BXBST#sijTB}I&ErdLfI2~tfj65 z_9l9m>STtP2}AJOJTH70KMe)z7T~iDAvm`s8rS|Gd+z}sWtp!3XL_IXp3G!2lT3PV zB!Lim4I#bLn@f=x_*44FlxqkQkyfaB~J?DSU z`L73$JJ09y{Y)|m37L7{=eeKjx$o=VJr{2tT!^<@uERSW>+x>)HoSj)JN|z1W_)sQ zC%$<0UVL-mDSUtNIpEFnzz1*Q(q|t7Uw%Px;#auz)z|p`%dhdx=ilI~Prt$!AAdo7 zj4#>FBr(fXfk0}oQ=tF$*KEIm*V)r@;jHsjpM z!+7BM0X%eUFCIF+Pw@D$eR!5W|5Nu~yg;9yKXCwmJ+U9J9p8^P>G7?T2k`c(eR${e zX1sf5IeokYZyjHZw~o?l(XkNk^1*uZJbG>B;Pw4;@!FoN@!IYMczy3eViBIEnEsCC z({N~dDOQip#^iJh3c`F4prF@Y#`6;kY)Y6ldKh(P!bEYb5gL^aayjiq6gp_N^t{pU z?ziWeynD8J&>+=a5J{Ouj*o(_-eO zq+nmg-fLR10p$`0tz7bT@uy%i*5rl4NImKcW3jBh7zgK%!?_KOcxKlOoIiXuUTI&1 zH(KZ5otEje;7%1?hh96xX0Z$K;^Ad@;lL97Y2P9|xpM&?+%_L~ZJ3Q)R!u|qwM{s% zpaENF*J9nYa;#_?gT*z&@tewFm|Qjl6UG&zVaxzj49~~t;w%j5pN_$WX+$ap7NlW7 zK|1>96ZANsAOl7Hb1`s00fr1J!iZsmF?Q5Ql#LsY>WXUASJ$Jdz6rCZ&%pA93$S6u zGTgLo4ffo)87=$v;CN>{?zrU)9z1sso_hQd{OOO+;=+aVc;k&%@WK0k!>1p=hi|`p zANckIiSPane0~x5@Q=XzPXq5h3B2_PE?vAEKfH7r-~Oo^Uq0K8&mTX8&mP*1Pwu}7 zAKh~!KDcWW-Z{GtZ=Sgx7f)P=3rDZP3vCPWCttvLL$Q2 zBBL!ci9Es+p!|!*l*to)iDF{Gut5V)0*x_Q9>jaaHfe- z1ecus;033z8Uw5*l&6GZYEc3fjmyL8vP^8NOu>$-WWmnL1net!;7}QD21_Hbe_S~B zmxSQ}agaV{fsM;Vk5t;xOdG|+-0YxA;$Tf2_SeN@f4#&(`uIp~9NOslHg{)H`j|JP z-PO+C%#T{hpY5NZpV60N#Brv9Nx<<&m%!$RH_8)Z(LFh)hm*wFDKWU4`0Zo|?wVxB z*@-bY!&x&ETpMxPaG#o%ffF^v}5w!DTO)|}83FxBvua_7ct&XNSEs7o) zsRMIMO*ES6`NLH$0)EE(hCdv$4J`9SepgU_!19qa1$7_EEs0mFyXe zE*~j>4Igr`crOzNDqNzd*XR%yZbf2h)+J&G;Stz=h7led6iZZx1qI$18W`|IaDYF| z27~Zjb7!$>*_T$M79tx9Y-+jN8p8qV*WhgS|gReD(BQ`0fw)0e^lN zmtK7yKfL!Ae)#YMT>AJ!T>A85eE->}`1Z3e@XcqRaQ@~cczol0+`f1snkSCN z>fu?ajE_LPo)3%V2&4NYfZhwULIs10<}S5{-Vd6`xQd3?XSoVW+M8&!`Y+7hzK@1R zMC=N;TIvYPmA>{o!!ta?Gd#mH#28po-9S8=F<|(&A=bDbWGXXcNu}e$YjEO*1!!J52RmqSzhPD#mNk`PR>ervj2etF z1N&i6PAc+J;*cC?hdtVgC`&jZ!h#VT=nr2XGfXBuj7A*{1{Rex&}miBYLw8ZmC$l| zBn3-)tpO&38NS}W2=os|SV$x+k#^XkViDs=Kzec-it=(XYETi%Mh!=OMJZ-ZZo;DZ zv$1y7b=bLm3)+qxz%6IGasLB%;hAS2#a~~30q?#03cmd8P2jtCfgj!nzyjM}fOj7Q z-n<`p;~a4DF5sn;z#m(2>6wH0{_#Ed_IEq*^|>4IDjgT=*;za=lBY|+PMsW zX<3374lbbAat_YkI0yUJ&cXGwt1)$aAx7rLAl2%JAgv6(Dk-36j~y=AW%FL6Rs&y? z5k?Lubq4X?$tYm-lCilmZN@lo@$p5ZEgFuv_=g>FadnZ=7B%5%V(>2%in9}cxh<9QyU3A&3jrYV^?%~mEH?CEV6k7HV;1!a+ffs>VZWyMUSZV)5t~h0~Xd) zeULKYxRgpR(?LPkx<j`;xJ)g4z4RH z#NNhYG*23e)@dWqIb%3Z%p8PUW)8sV8HG4GtpKN{W{dl=Z>i_0$#l<8j>EA@G;h%T z-9>axjzz~*r=WcbeN1#trmywk=)@QtqwhV|)Cwe0^T>+SYx zGMbT?oQ@G=%P$c-2#>(_GmP-yAUUCO+M~1L9QMQX2o~8mi{E`Guk+I zQpy#yHmE6H()HkP(!m+5M}adC;|k(2t)u`OnuemA;@!KKH{yxSzrhPT7vZ&iOY#1} z75L!LO8ousN_=#5Gd{U(KfXBEfo~r=4m^1)et6*#e0T9heE+xCaOu6baOuN$@x#X- z;=9j2!S|nkitoSp3_pDJ2`+v6A@DuLl0SSv@#Kg2;`57m|GnSijn^N+%YVHe=byg| zPd#x4_n$k8+s+(BXZtqn+r1WBHZH}=>*is>)l)HJYAu@T$D^`r6iP-9!N_4n7*d>% zfrZ&9$Vo$fb}9;pLW->imq+{5CEQ*11Q8Fwa<)iwewsbHiRE@;6`mvZj zVLYy$Qi(;=YjEA1M(n(P7LM;&j9d0D!|exF;9T=+JlVb;FVNrq=VLeGr4!rm*Y3@D zm7aT}WewhJTZg~V$FCk-jlb+%fv4Bc$GwXt;z;8t%*~BQe?JY<^-4GtGK6|b8T~qX zpSZ)QugCo20xuUGg-7?y z$6q_H#cN&H;;*d>@#llH@%-*7_`^-Lcy3#b;Ngw6IJvwY2Nu+0&)jP4m{o@LlS*)H z?I_GH9fZll`k}fo6~nUK6c3r2WQ0Q~)Y;p^iKZ?g$T18o*4Kw|TL zE?;Go6zp;-Brn8nIB;TfVGaEqI*lF%y$NQMFMPZM;pZ2OfPhd$ghn7H%8KL|2Qm`l zk(-u+fd#o3F?1j*#*e|IrdrIMJsr!JFUICAYjN<Sr<7nK1$LwIVv+3#LbSggK1wNT z%^SgBiBDKWWM1iO z@YgBFrXkh z7-Q0+F|~gzmXAunx^c;(tLWCMbnLE56q#v~$QF(LJ#UbmM65((EV?H+ z&^0kyzyjNeNzphv(T2MxMhS84&c;aG)@bV$*x0veN(zoo&qc?~fjBg|5WDKKu&yK# zR}F~9_>>R~vYC4`}=MfWFj(v^93Y$DASoSjM>ofsh!+qH~g?hpveZbT<)=Zeqk7;TG0@EUtCc#R@uU-fFK;6vA3tU6Mp?iV)U% zsHU$~#s8DQcD&Ys6LoeWu(g+kqov#;=1CUUTI!r=X-K5`B?B94`e8*$8Ws+T#pGNI zM#qOBC)^KCvmT)|S8!>YiL;Ouy>R9li)(tF4#9yzut(efk&%`A$f$9Z`-o~H$jdW+ zwh>na!UWby~63_GGdNaZMrKE0N{T2Q3;CtqTSb2XiGrxJixp zU?XxJAsCtAz;6a6VQYCdTBi=h*=wrt@Y<<(e#>mUe)B@Swfh>pvu`QhZeESII=A4R zQ@inxJDc&<14r@ov-eX>cpl&V?KS-H!P~&cf5#7>{zHgsUw`}&KKtN3{Nvr%@%~#c z;_cU;!y6Z$!K*Jng=e3>9ryh9FixMk2}ip&;t2ihoi{JV#v882@@3O-_1s!aojeXT zRU}){3+^8!{8^$Vqh~KO+G}ImsB(FAXCKGcamE7D@-_V&d2$TwOB^*G?FTmD5IJ z)9mp$u(%c{uAhvv8?M5+?F;ef&5QB-n-}5yu4`~%|8=-{_d>F)r4Efa7PpIls?D`l`)Wl3YWmf;+hLCozlpq6K{V` z;WjFf8|{at0WnzHFaSqaO~O;{>u}-34S4_T2E2QEl@QpT+dUnRZK}e3D~98qrGxR? zCB^9aO@C~z>xYG-voLRX8m=0Yh^7K3$}$}oo@l{<=s;wJni1=7La5n@K!YBB6cl-D zH6o>7%^p_5u%A7}T*l-a$nt{g>I5j~Q{x_F!dFR78wv$yrpWo7-tuRvYMN z8(`My;Y+{I-$=jL+l95AwAqmV0vP{45Zno6xhU~nj6;uGLZNIVsrkXTM1M-$#x`WpPT zkDAi4{zUBXqQYqd^Rn;HOG|+zG(>uzyjD_tnyd z&V-8OAS@_~!io{GLS)-go+>ifxU{pm#)(5!F*sNejf3MYJpvnNu^lS2;t+QnrLQsk zJ^N{cxra8VZuZg7I8+mdBh}6x+K5ixj8?|>h-^ozdfla2R0A1e)t(39La6=b`3MvlX>ECl1 zuUaOVWP1cQ4?hq8N`cKSuF*B^r4?QGxci=hP|8_c&_k!t!X%Tr_OZyu0-G<*HNkYv zTQqd<80j7gFkpO)Kd#OW!^%Oi*j$o$t**MAFfg2n+UT+tT z0=gUQA~Ti6HO^w|CRku=n;g@F5ZER;&@s{8L)Qd5jy4hvZXEQpVuYyHm&?SpTKYLG zu+=5@h-vk-iEz$jvqpq(wSAUTVGpZyvuHAKlT6&z|@#zPj){zJ2?3{P59xz~>)J zojX=|^tE!}pz_n6d+H%^R>`{VXiGrUvuomSV>Ak*KdL zMrlbNh7L|azuah~CWj-&9*oFve}o2em4-L`e9Z7Qo8V(Iz}raiEycDby-t+H_Qg#2 zFnTR~>Fa(59mT+U1eo*)G#e1)ZA6%_2^K#yq5`}T9psIe5FaFm`5`+p5d9rN7)EhP zWnLt%8XAx5%X4tklwoLIP>EB^8gXvb6g;tE7M|O7HU7N&T3pz>0vGqK#VdQ(;KI)9 z@$BX$IJI~>woa_Xydn80i?bq!en*5(E!J$EOlkzBad`*J37OkZm=DxB_B9#*;TIJ6 za&UN97curqUwfY68J^)8p7C!uoC&FF!bTLD0wZovngd^y=_#n-k|_mu4VC*#f!1HZO@zC~}xNTK6 zI_D3=-pSe6QJ;z}RS8%&Dh3ntZ5WjtiQ(~~7#tgf0-HZF!hMhsXn@_ULInGnsHBCJ zH^yo&*Cv-Xy9(O$DistMDP`hO!OzKh;Xq0CBixxn%AeSrxZ&qiUNY%-xnTbkok|XG zK27sABQh)q&X_2qrzfCjU>-_JhGSw=1s2Ymgf%PXVC%*u*mv_9+}5@Q&)l{PFW$2s z7w$WRS06l#cOKl2fBbGYJ|R9OK6_v%KD*~8e0uw4ynB2VF19Yg?|03?{Wna(Ez4@q zF>fq(Pb$XDp~)zq*C{THe!sU0{u=HO%3^^`q|XbZcBN$6tJ6wed0dXdf+D|nO0^z( zqc?p0gTAsv*|sB_nQ$$AXya^;N=aaIi)>sn z+E+~L{0aJsY`xG1nKs2jWOE5^M;mE#+hmhOHsUyad`qJRx7SDD_PTJKCC)V1aDp2o zOiad!NvSw7IStJdXijP9hqa}tSUkvv$r%9{Zqp;##|w6y7eeVZ^K~^dU~e6@3#CjY zi4QVeA2fu@C9tU_flbLiJsi|abBMwtuzC2Ikh#3ndK(%j|BC|KKYOrw$=FBGC9uh) zh6(Pb2?{y;4zk^Y76#5pr~83Le4X%qlnKGjkFN7zCHu0;P#B~|wcU&v8R595I362H zGO@otAIGK_;rNVVQ7(F7YCjyGkc{s77#yv0(7jLhalKvK*DSIfpX9{x$uwWEz&6Rz zLpw9kei!vXsuxq(OR8^ z)+#sjwaU251h&plF*Wjc%&W7f3VPc-#PhUGw6OZPGWE^Tp#m4efEE<`DNx4>( zI7}!AQXt+aLn!+?%DqJPnvX&Ovsxt%x}*aVdR^5Tn2aVwMnry)lb!R&Q6omS5v5+9 z@xMCkR*RabCXPjf1V8WZ#&OM4~l(xJ)!qI zjP8q^AT`SD2F%Qf#PZSUxVd2vy00q1xoc|i@XCpJdi_j1y=5Mr+2TtSfe|Q`pUHB6|e*G`_$6K%9z1LpGTQ6V0`QJZ{#~wI`yKXs-qb<8Bj$Dgv z8<%0-%BwNwsv1;Q7GcE5bPO7th{D1cWM*2Cm=KC+n=isbb@2D2``I9ehT>+GqE9^R z<+hyQ*j6TlUydt!k@dk#pmD)5cTX%Vb2Vd9vd^y!W))|Lv;VIG5jq9zJ_@9UYEc~H zhw}7DOd6PotH?eqkYDBh**=`tuCW@C?uJjDM5iOi1-1YKgYMP|H(lgU?4Ym0koCyvbC^IfKJp zYAJ0{ISBVA>;Y!v#)hG0P&!sj8iPa2r{b3F*W%%h8}Y#5HMnQbQk>Xu74|Kv!urWW zuxNZ1rW89+mluK3lt2uM@kMHcFQNi`VfFJyq^}8K-UbAjbnw%w;jK}?NQ*a%TgtxT z8JBBO@SxFnL8qgQfnEu{RzaI!sUst2o9MVJBO49(!QH7*=L#Y;u0VqW4i?pyn{zM$y zFdxTvUWYULR^hkJ>+o3HTD)*{4gPZc2E1~56J9;N8Lu7Rh>IQT@%({hc;cpcxa0aM zXq{J$?Gs01O<8};ADoI2NfuZGOz<8;JCf6#t0vaWkzH*tYR%EFu*h54n zd5OsBbE8iH!mZJWO-Oz}E-AGwB_p#oH8U%d@MNz2FOLxe`v(#EMg8(-q$j7|k`SNt zO+>f_W}`RMDji+lIw%<>zmHns7skQ8=rBs}d!R;!qyPxlY+e!PV6g-#=h~<*gM{a1H_@SC>$=g;xKI@53|Tt8IAol4kAWy zpgKl0LTDjc1+i!s0$WUvz$U12(&jXdi0`3;K6fKM=N90cu98xhz{Z_O>s-{+#+f$J zU5(MSAt#!malFxnGxb*7UKfe8brCpQ8-dfj(Vmckj)|FQpOAr;#&m40&ct=4*|=&@ z0_rkCF+AFY)Ic>tX?_S$ax()jNn8`<(Hen*ALT#JUSl*wufQgRX$s)gN@=s=o`*aF zn}?qRnP^xbb9DffyBZqE{y&krh{_-}NpQhln_TM5*R)J63CAvEbbWIdJ|%sfMSLBv z9SWuBHp=2NZ(=!9#K@u%t*cIh0)_r+jEVL~Lxv6Wij%OO?z#Pqg=n5U2<)j`h-k&Wh9b(H73gQZsNEsw#jswA3EQ?auq4cjWyaLvdhG!@2SbV3;Ng7x&e$PlWQ z3DL#Kq65W925thS)`+#3?I<`~-q$w(R+|HH@kvkRRHEvxw758qr8jtR|4$mH0hx13b;-%YLaN)tT zxbWybxbXPBc;S(I@z}k0;O?_$(0Sw_c5K;zhbrY5=;Z4`7 zk3cDP>!euU#8nU!a~n8T=B#ZwuY1yKBZN9`)Is0F`vSF6LaX5TL@OGocx$u>r1&_( z#|TG|HiQ9n2hBeSBBOMyXBs1Y`^5OQA-sy-)w z{I$L(di)#*9UA(XdfLqUnAHdg_J+k042L5UiHUZM9-N2YG>paaS+!Vu^+asDb~@Tt z&BPs>uEKrW=i`yR*W!u&*Wt-M%klV*rMP$f9GqD?2?u6WVr}IJTsmqsarRB3>mP%5-^4=SW<&r3Q*4%aJ?Oq<^R zQN9?RYNd@|yvVNDT$zcjH96Q`-w!)$v#`4|kv5C5*i#mR-QykDKi(#UHQ~o5JlU)` zRB6M3YI_fdh$B@F+KfuHRY{p19Tl{Zt>_im*psb8h-$sG(`MF9hf8piL^x-kvQd}7 zMjWqm60~8ir%iN2w4l4ujuZ6A0^8Zz$R18|hRK8sG*8IE!G=uirj75)k~B;ol7{ju zJ8g9QkQ$&t1idzVZ|l4yvvIXBt=0&SwH~;^0sF7X`=WITY^olCjlEu!B3o7x_vIde z&BMnoS$|q4rSJWje5M2+cJWdDz)lj6>5$p>^6IbWYAeS5u1cLF48q?R7L))JNkO z-Onc{#^U58_F=Q5eL_?ZZ4+!lRBN4JM@v(*ppCx2y}^MFH#|4gI&iEyriX6s{8`g0 zu1U}wC5S~keO*x1o2k}URCCi>ZWn@EJ7>MsC83$-tpjBa?5aq>O;s7#Li6dyvNWt3 zlZ{nDz6N^z8Statn_T z1H3%rijU0Hlwm}7Qk?Vsu%N&%dKw(CC?!`2-&z*g*mqcphm|fA0y$w&$q+!XUliRJ zDN!LPPL4)xe!Q?eSyq;h^^HTYXKn?Kt(t~Ax6a48olEe${VVWb%Vs=qbT95Zx*zv+ z?7^*vci`}jP1v+<6&B6=4Vr2zF=9v&GE(DVjR=CT*(m;B9Q(>B_VuFQ>BWz9PkJf6 zE{l(4a+&KM?nUJ#7vh@UOD=gX(p=y}_j`a!jX;7Q{Z%T8mz5MZD=0>mGWGOAV3WD5 zS6o?Q9Fr?}Zc)16Ifb*odGBCyL2IcfQCErkK&vw$z}pAWf&NI22tl?Z3ImejFfKa{ z69?pB-sr(tQB#V|)0?no@ocoNU5Xp$PQ{Yiai}fMMQ&Uq!u@sd)vHA8qvnphYWll0 zav`wEm6E{b{(F^P^fwsHu-hES%F6kKSWkpp>1)n2Ji{|Q!!v&6W5noE8&O*{X!v$V zY~mvULE&E;O}?}kYK5@ILXA?Rhf1k(wU(EJrppAjP(KV#x1(u9E|yIki_LRuv2k`a z*3YWIg6d(IFfY)3ywDAL0H5KDnblu3@|_mB@-uZ92Bt7W>!i9o4=ZaAVw~lGH@3nZ%%D@32prSeN*Dq zeZ(~(qIpT5^Uro?#_^*l8RGy%;S$;C|6wv};p=NeK!7)bgZ+`{u%IYC9;5oDVti31 z8iwU!VOaq-Hx*&`%#k>9A}}%!tQ0hZRF3L(nhK z2T?|y@aK}dviKAt;E@D2DN{}5>U^bfWiCir3kI_vg2Jt^I^zDCkeb<^*S~l+kw+-6 z^mX{}KKd6Hn~6chHO|6-SIf>uH%%*i!$%_)VakGq5;knSIwUV*eg z1B&c{C`-3scCqBgwy7cm+iG)hb4{iY*jQZqDS?fRnffy8+RG4wD$;X%zr4b z^$2PIEU-x;n;|QHZ6s4<+9N$8X;FpO>cO;cZq9a9g)dH4?QI+tivBQMy5(J?`oo@>L(5lKR1+dF9}TBa7GdukqzPtNEO**fYuGt7qW1}^z_ z;P}KCQU2Z5WbH!~T3y1Ln^qyP5%m%*uyxfs&|OVbxuB1a_6TbZR|cCTu(`#xwkn52 zSqvwOS7ot-XPPq2F4p_J@+wvNmVs7FH5AFVDE*BQrH6hNw++#@=KJ z3w=D;-w)mfy%0&cbF_l3Q8*rU-8Txg7HXYdpyb9;DmC=9w(y~CkX{XouL+4Eei#rH zgwnWB)Mr{Tt$z%bjLXL6$-}T`&UhDP*fysIH_U0m^|R`6?c@r~tuI02_>mYpVh9En z_Cr=$GU6Q3hzJdWpSKYPty=Q&V}XrDHMh9t7T6Thql|?nVVT02s4C$z%3_n6VnmI| zUUQ3Va+v8_<#J|Uh4ko6pPOl|<4jC$CSY*I#7bFj`K4IZec=oaL}o-N2HGqbn;46_oK(ylQh;kJ$6(#`1}v=~ zk9p&Vqh??Z3X*Jy4)Z~vNh{(Xk)6k#M3pXaP0=f`@!zZR;wE2QE*pS|2+JqLdcq^H zd4^|rhG%%j&pSqpE-fV5iieE+)b5D?TCFx*lDPyK7HL#k12jgnRBk9z%zs*788XLgmwuj!f*T`e(5WP0jYT$h`n>2?%6@Qs5~`#?Mx}ti zT7^)Z8dj4U2?1IRv70d=GXQf2+HhS-D%MuyVq;}KHkRdM`LGns>t{oCOd$Gu>ybi# ze;frfHVSL^4%FVa@mi|f)r8)VxMv#|DZ6$CZr%aBj^5<%-rg{{>4VZ<45re z82t;2<%E`nwirkJY z^``{3%d^#fLSPeLyIf%Fs*XiBZG;)O$o6A_?Kp93gAI2!MD=j0k$z@VIu6ulU`JUz z){lt7jNDL+i1kBOhyf0|$JuDy+vVA4q{@Jp4NO*9vS>nWzxgIJ23%fUEV8YYbAST(RCOr8T3^8p7qKZvRp~ zT+`87#_N43{mf`uGZXc4^bgjeCf*&HKN8sN=&I=>t`SFxuIe8PY{Y+8Tr1~! z&O!5CEDl#Xg}}z_sZ7GQiZuHB60o=^5>wNCF@n7veQ7<`NsUu{y`(JJUZZ?D#Q_SM zGnCNK>l_>$j+oelFJqmF+v5{c6S8s(^@QhO>lZLGQ&W_LKF(p!jIl-ScSKpiA{#dt z;tWoiOQ0448{Iol_8K~KD%0ubc!(x15_Ah(V!+Z z5VHrzVKLn&R}W9bZw5J0Ul4;aSq>B@Mk3edkE9SIEPi_U7_=~P6EF7fqu7tdzMfJ~ zFDce#5v@mDa|>)rNqCc~>HE}j;lHa@Xe5!%i++xmLI`XkK6b%zyvc>TgRs8O*WHyJ zil3TS8hup-F^IPXBgEGz1U9Anu*F?a3QX+5NOOiG zJ246cv~}(Cia{(1<8R*_|&Y zq-LH;&B|L$q+jW4&oh2{IP7r)h_zOWpIMFc5Q7k!CS-+T_P|&y9h-r5-TyO>HQMtHKdx@d9HTICekAa2+L zsa<5cIbA}VuqNw4CVZQE{g%|iTTIr| z^dOSfzyxn421XcAl@Neg{bR9wTpqU76{2NIA&yNiK-ZK!bWF@fM?(@iYNOFr$7P~1 zIMx&+d=}dqt(Vc(7=_kGTMupZ^gVTUwAc31S#8Hrns?lERq~uf-&+xd_DUPgFVTeb zeGGrj&$sjUluL+@d0wlKM71O35{E0CI9Qd0{WYoBM|0)gs$^^`O~G}eQ!%?J77Z!E z7-iKXGeCt%y$nHWdOZ{@s>mrOQc78X3=0Vq$7r-h7)^d328TvI>WoV|NK_NFjC;l} zZNx^~LWxGA)e;u=WN2XECw|`E(5baj$9c|3 zMk0`|2@BmPF$Niu{N(6op>;Vi7$s>D^caG{v4P05ajB#qVuDPF^3@>JsDPhN0lkL3 zgx&sWeH#(7PAsIUnQa`{&WOr z;0#bBF;Im>x~Ag;l!)_JAl6q->!=r^O&(Qmzy+jE+4Y*(Z%K(a-RuwK|02<0!or@qXUO zvW8(`BE|Aau_#VEN=Hy&a1n7Lz&{WMy-}2fsA!SX(;~;Pc%$Iv z2BNWnbds%cb<#Adl`zxd?W0q}-=Ia1S&vX|P~c}qu(tsLMh(nbl?W7i%1hlHJmqqc zzOJC(rQ{PjSBFG5Y~-$Yom71VQ=8$ob)mRJaCdiiihGL_Jh;0SDehLRxVr^{yL*cl zcZcG|i+wp~?!7bLUwG!t&R(+DLdt5VA$WZT#S^eLEsHP_DwI>Ua&BVMG}5T+kw%Ur zon#mj3?5ubnKHstSCLM>2k~6;A zO*DHCR=2;1l$|E;=0xrAc$IozAz`D(cLc(u_idl3xv0b~_1!c^#E`EmkuXpQR51iU zS*BR>bx$LpTy)2abJ}?fbma^5ZhF*)AEzo5Y`1f&M7lCzXBg(h*ekg~+FK~@dG7`j zR$149c`=TAX7vFcg7>L1MVXCa#BKA&tXZ~uD=H*vhe(cc20v}~CT2#-WEcXvWBJRv zAb5#zsLt|3y|E*v|H#WS`FrKSaDQe0cd=q)=u7l!tLj-m;j+llQwlq8wnT+JBi zUxmEU<3`7k$J;!W5cC-=%ncmLf5a<}#&s#A4inFCs9>^e$iwJ2UnR`OjL@N=fNe2S zY;C4yqrlPJ{JswwcjFglEJ`fC!w6I=x5KCTPw-J(Vo?P5wGKR>Q%y`52amh}t3UHzwFE$tU?G^0Zn?^RTs4F9&-US2Fp zT)S5*s6j00o(6x8r+!@1R9GETQT9|d7n6YU@9E&S`R|xGP}T}O2CR1VH$ z4klDA>ZHO)pyAGF?Gp-@0>egbxivl|xg#?H{A%8KEaRd0Q}73Bjk? z`%QSL2C7$;Tk0f0k?#IZavbhq!a=M4LRNkklKZVEO(b*P9_Nf&Z3K@AwEi;EYKC^rJ2se~eLJd~kDLs>#da6OZ=(d=7ehSN>F&WfL5q`(u5Q!Z>$45y-ri0lucOWb(yeF1#ona- z0PohlN_Qil!ya}~PZN>6t~&U{%>bm{&H#?7+?528PUk*0M;4ct861zZ%tRymGV{qZ zUsgND;hJmdSzcBOOQC4OKXIRe>5xwPZv$`ms8&m)!#;`-x0PYgR0Pet z$rV5kQkbl#Ng!99GRmzkOqY(aV9&Ic=%uuHFQadi{=%c>mHrxFkKFH#t~CZA&6q98 z{@hJk?j@;#S`)fbs~%yC{bh!z@UR0V6ZgDp6OyM_gc6+7hQ@zl087s({W%gN+E4pE8$e#zMVVGkMr!b@XC{zG z9JLXVu7H^dX_$(cc7{IW%PG2O{#XgP&rLmRml;y3S~q5B?mDU6K)o}yenR8+QlfAT zc!3=v#O(e2)(pG$9%#W`=?5;uWaW--AF24%vp_+YIooEZz|F6HxZ4-@CdgZfG^vSD zRLTW#TwiI7;L*$#Ts%(Y);eVs^T0Xx)M;9fz0L%feb#Sow)!Ss_NhTCV5nI#bCx1ROxj%cw918v;&)1sejFc59 zHP#A=DkE?kmm2!?5Zx+=KoPI9oKzox{7me|pc0>KE)#>dfU9e-O?|)E0mVXHOZPI< zdgdti7&?9Vi|v$r!xO?W67h1&{{Gu&SMqK^PVU;Bu|$Yk7iqXUbnTz?EUF5`$%>#g z{Z}FLizq$r>EHxtm=U;bWxTS|wS=qi`^!Q?;7i9=HCR^GwKiG6uRxHd!Y+1pi+h<) z#tNLD3)bAZ4sPkNsfr{*RV1Dn^q=onEm^c>3Y4Qdb6amJfk9kUkzQ)4c3pe3Y-@F7 zBNy+1`k;CUjwozKeU#Za?sK#Y@HtvwxSq04+&Nz& zAK5bgisfwFhFO=}3*dO)!8P`+0!&M+hHOdrU?t{l#QKSN@BRo7C~`lwJ2UA<%05yZ z`8(p8VZ@DvE}Kc1O&$va*-=0(-X8gaSp7NSQ<}%bR?0QQgiIQ>4X9Z6zVQ3kcKz;$ zD3@E}ihWMTQjChCoe-9wbp4v2bTWq&-VF1|>tqwSN>FAGYG1d$l~ZVgM`j`#V`KE~ zEUF%H}LQHHf(4|Lf|O9f1BQ#A)hJNF`p4KU=&;`D@FKPfD?l>dy}x?g;?guGz# zP|{aabaPdjXI3hEiJ#y-X>8G$DE;Z(gR9nd zs>@Tuoez_1CV}HGk<(o$o8s}CZntdC$B^fDH1diLREC$#OC-e*a~9p7xhB2Ugw5_t z>psL@7JV6bqC;`mEl^!t`w+Dxbiqnon?ysi93?pg;ysizUAgjcC`Ny|=ny5%S*DOD z=AJP=m0^fIgpIWEouL6Q$jt==wD&FQD^n~j%N%AI7(Oco#~;>uWwowO)D&qor5sXB z8J~h%kf9#c22ULs6w}&fUR<_4DHjVvLX3ICkpW`AT37SXP$=foONm#-TLFrTV%+>4 zR8PT;3dT1nc_zUs*X^fHZ&=(w1YJmT;v-rp(P#;q9IFI#K8A^200<%UoUC@ZrVoGP z-g#&w7}gY1OXx+8sOKV3JFpm(q==!yoeBaa!z z{b(W!c}flbYQsDxqwU2VlRJC+jx47V#8K3xiZp8<&Uu2r3};xy-XNwIw;y389Ao4u zRiIOiKJ(|-?$!6kTaKIb)VqH*ciZ?&$DUd<_T|4TX#JqU`kJUos+-yU2;G}Vf$yK- z5D@bJ|EbY{jfV}U`em2q7H3G`+3XxNh49LZmmV`QJSqh;FI0dda4ObDwxrNvca0C{ z3zb7J{)`&0@0r<0pO!T?mD{&l{nTxY;UKDb&jvg8W1KRQ}a!ilP>gt(KXxCi<6 zMti2uhgq9Vu=^Wq?|QVO?NeY6$ZI>WdO67p^?BOC=z98%-1T1G__#kH#~)e3|DU}7!>s1xpV!f= zl{L&AiaPN)Ok;msXR&9ImxCRV>t~U~o!|r`+?<-B!h^RLgbXJPO^IxhZpB?s8DX9*}y@T zo@s}!R$1yG*!q>#uio~qtnSyhV2aTph5)FVcbv$4nw3XgW^{5o$@6wZ!yqCN1XMDN zi&uOU?UUFS$z7xk)8^2nFIiPy{Ft6tf8xbxJVERG-G#(Th9Aner{Q9* z%I>9AYUcfw^**lEbV-oKD-Brhodb`k%qF4q{~nz1&&OkNBt}D>Ds@3d5!Rqq8B{!aubxQ7zNuvwu%;AxGS>tsUl!fbM%j=4LsgSr&Ro&{B2*_JU&ImESs77o#tUF4HH zh-Z?e)^l7Cm>rQ_)llC-i|&p}txi!sI>X7Q@yl(Q&$xb;6fi3fau<-)KuTms$7SB5 ztL55easM?Jy3Z$NSHg6dQ(9NmMFv0B zLT}HP#g~-6kxd(oBj-wyaz!Qrd}eVuwl3rpV>TK7W{q!|h%}>X>!2YOS2wKTu^%6J zatebL8f6M7`SAyNxYf8^K3JuugH~?o*L}_x1RE^Tr%0C*o)a$yd8`etUc}^Gcf8B5 zq0s$m5ioi+rMcnraANM0=<{%`({(c=-gVO{hJ$%AB7%7~u=a31K;rE@IxNz%T{=&4 zZMcN)Q}dN?>fA8IKwwhtD8?4r-wE3?UDaPUz6WWrf}_WTYF=6lDCTTq4RAEUFy5!g;DJEtEtz^pckYTT})PBSBfA*WWil{3zGr6F;Y14S6 zyAT85o+gh#4jY|iv#Wp#9a|9bxQYq;)2H#T*EkjMO6~eN!nVJ=T@XlO-JKdOKBrsX zXiJ2mQHc}FAP^;4+zoGsfqw4;IUQYa@Kf&xSH}k-*6Mh|ORD{jYjq<5k>J6>^Xlv0 z*Cbc#wFWM4Q)G{)0ngW~=D9x4?FLs5H{QFA>6e4L&f*D|;y&c*;$Ml<#RKsk|DbPY zdk0^N!}Yu)UJZ`+(H+w4e*E_m;QJ;9t*-d@Py6NS0N(#$CHCcZ!ldiW45A!N2a24?eNy#?9xB~WVX3}ru*?5eIV7el5sLlrf>su>JwSW z9m->a&*1@`umICgL@xoxgpm7pvCH4L9dpkg;x$etP*P*j1n?J1G$q)ZwLgI^ijC6t zKMts(TO>moQ9Cc0S&Su9P!56 z+NrVEegf(P{7JpigzI~GW9m^b;u?2n1W_FoXk0CFWM`zN-B+NIi>og`WRd5ubf!S& zrnM2#*b1=Ojgdcyk0g*C&JEf1C1>bcBV!1C^D2^|=gWObBPyg06N3pcxDJGtqd6f+ zabM7+BufM|Y{;XFCSxT~7uns-TM=VbplKF#MQ6SAfI7YW=NaXD3UBi+6_88j@WU0L zCNrN_tHEF2 zuz|wNMA`PJka8+rk5|XKF9X(Tk)6B|xEH2Ne4_X$Y#oF@^Y$})T zKP($>BHo);$Kg++3B#|i2a&G?)-uQRSe0Hv3ep5M$fFM%6iCS_f)&Dz%Fp9((_-y4Hc54XkzD03gbCA7-2+SGc&eLbnD1t)<2g?zukNiR$4P{1^L8zp$0Be`OSu(u zZf2{YX-r2j$Y_=}Ez>Eq_>Nslftig%+Veqob885hOP2ZlwC z9`0=>wYN1p%CFqrYjP6 z$o8(~e!6&6pC%r1kyjAZ$mNuWy9K1Ra)pKX0~e`s9m#o2Cxc(~bm}tr zBmm!UCM|UaRkgI8%21e;F-zMGC3_$mFqMYm_8pKz6o-HTe~Sc}tL)6Wvp;`a*;!fb zWOF;vx9HEBm(Q#OI#(v0-bL{7ahKB{N2b?KA;qCe)81uz6XjAP@D$=n*U&1>@2OHM zDY--adKI~S)YiZUu^zv2{O^KN)Sh7~;KRyTjeq3$>ccrGvgfyaKQwk3<-*Dd75fux za8Ki#MhXdM>Bw)M7e-?w9qYe(5M(v^?M1$LUp+@WxSq$3x5=kGcT3;6Tpml|k{g7` zGyEueEa&riS@TLY6h}IbFXr45=`UWa!4vopKm{^`B?in*Ad`KNW^0lu4N6m&!<~O1 z7_e){tbQV|DHEwDbRH<`L~uXABUGLmba{|JJ~_gB??PYdH4f)lJKEWvb6w_qRsBWs z8@`yEq(Jw^r76x$zNQ>j5<`RCgEL7r%A#88m#h+3^{7sFO8NHZPmVr=u=p@z-yvC^ z-0V%rWSJ%YJ9ISVzgEWKjg7^9%^>CJ&fUk4wE12fp7-M?3)3ksKATI~8*fL86{bAV zsunk&RVyVp>Do6dE5-!dI=@Os8EY-aumbkG8bjW?+{>aCzGB~Wu=Ow_Syn`XSYi4$GMsYSI!Q`GVGps{+Ts6QZB?ND-*fMNl;wZi~n4?&|=pjoV`tg zNnUoCOo58Msj7edFsRC4Ls4stUc%)x5H*mMJNf zEBac%V3vjhH+KB6Yc!yD_W2ft!JLJ03{v%Lcd>li<0on{1#|MV^E2Sy|Ri-!A zyKdFhT@z1#J3gY%K72K?_G--DIJ0UE1l(NT`os#JUhJx*q=(2?jqCZA$DC7-SHttO z@78A_*9c0mC{=mv@&SP5tc4kMBxFV>IjD6K1Hz21u9N&pkm$K!{6}^rqOKe=th4i& z-$>3)is({H_^!tbl~i)K4&kzwT|s1f!shQy4*nwL9G?$*<55o|_x`oGwzc}9s2=lN zUyYICk{bodkER#wk6JQ{bmJco^vE3CIfL4s#cE_FZc^2%5BX~%pzFCYG1qL-mW(B-W-6FQ!1Q7KXB}MHpufhoE#4nPOQ7&g9o_to=W5^7O{5IY^nR zpgpMr03+OJ5GfqJUCaT>CQ=BpJ!xi~2%!p4b1bdvraHUYFFG=E>5I7dx6^3xu!ozT zp0oRDNQWnJ3uW2p2rc>T9eUT4CX<#2h0bM3bycp%j{&VT_7k}&-zcRp3jreiugnCtCarw9;Q>Hs#iX!Sjx)ZD!b(E1T}!Of>pi=>6pG|6_i$_jx$4}TdbJduy&Frm-raFma?T=E6kVJ@(t z&-6%wU|bWHMA`D2KIqvRwJVUiUeONOft4>dJ+6L3q|2rg>5Ung!g@8bqv%TtW8B#y z9K{iT{~z6KGu2)M#^cPG10iJKyjYo>;ptQs4yWrRef@zJvI90y(*X4In-0hz1uuAk z_pN5i%#0YYFc8h@OR97f0^z3lK2q@k*CN8jwAN0A`4~GAej~;9tU8v-2#2#r8W({d zRa#C1D?X`5!PQ#|x{ry3H);X#!@)QZ_9G4Bwdi;jjZB(UW?jK{AA+w>k#ATyDQ(He zpO@`(-$+(a&sY5b0a15%e|Y~f2~$_n_6fj(r+W4UM5N_zoV8o+!c%37AdLKJwf3Ic zim?0yLbL9=9ZsT@x<1k;+vv?Hm}Fv^Gj29QFz>U*wh!4)V%P6 zYYtAl+=!hWMVm_s`QeRX#?DthB_}eur`mv-%}v?5XPhi(HIiQd%dPIxppUE2?NPdv zA3Nr%$)WW7{OC-62F4_WiBUor*)npZz~Ry*_2L`BunES%;Q2>a=lM_Th5{ebe{{!~ zNSr4W&v%;M9H-a2e6m-WtPS1a2rvFJPuZ108ubsmC+fysI;xsD4+A9+!640zt&uN9 zZKgw-3c4lf4>su}abd@QN6DV#qb8|7`Ndyy5Q52u7sd~%y?51qHNSW6e<|Dkjx;nv zmrJ+lySbDO9X8Mn>3nPGx6-h|kY1YMlsz?Puqsu$ z-;EN;WkM%J$lXkk>s@{`)z!wb#nqr{fx?6ePcXQo9bN%)=2eOLbfn{Xx0qy#l7@qgT^g!;Q`}Ou( zIHPz{Vgrx8`qw1VP=l?0pbyUCoQY{|7h3E+KWm2+@D|gQOEhF$4K}n8);EC8qXWgp z(^3XmjJ?b~(UkYcfCF>zu;CERaz>k#<+1aCzAKTA&S>qe=ym6Iljy(bo^wRPOR~uO zktIfvcf8!y5M{rctJl@a<(F%}44xW}h=+?1T@$C^rn2!05+bB8)_keA58vNuf@>$Z z)MmDT2MRM=MzVpLbh)}?;f(y*eIrABfm5>rxlIwqre3S$NmcI{1Rp2iH2SYqpunpA= zjIvp&d5W^MGk1XFc5-F#b9-3q4O|dM?J`O*Udhuu;Xx$q58?@8NWHL2fQ{ivZq(CC zbjBhZa`9TYsTvK({z!X4S}zSwu6C5x1eQW?Vz~m;q(Uuep?THhCdsK@X}EK^gX!Em zvlZ}>rYvHJmY+@v*>8WfH>rCD+?|ZXkk#sRy(`a_-R;xtq@)S=B;T)o00X~f*pjAX zN}U~dNF@Y_*tgqUS8@PYK#5bF&SaBwxo^#gCENmI7VL(GfY=j1+dMZnwShJ5;M6uX z4~Hc}=Lgl%GuKPdd=Zo2?Gts*W-m;7?^;Y}xmUsQ(#HOe3+aPW>6r~miO0=EL&L^~ z`0eDz{l*62p&AR6{;-xg6A-%?y5DRLvc6-*czq%d@bHLw@#pBK8KP z7JscgqqvFr{7-&=X^wmH5zenGD_$->+Vo_8*w~q!AtQx94^Emnqllh(HCO)%;#TsG zmz`bQX@fX%ew&~O3UJ@*8;M>4{&PZ931~(~NPf>>0K=><#maRfQRKm%)?hUl!6m6W zRNGfzf#__GFB#46E>oEm@RamZ7~5y)tJoT@kNGpP+DC{3lPK6Mn`87e;n&I}4ASfA zQ8qWl$YW8{{ytV8rR;}jUDDSB;l}_$l0ef@o>fus(hslL7HQQI=aXXQX8=N z$&+@(F2V85^HxTIz)0FdQNcE7_Y@*ZGa{{$uJF+qgLF%qu97WI%Fmq>M)~?q*l|;G z8%++B6%PKP@5W@Dd)*g6(G%60d=VVKzjAw{Avq>#YZ`<22HgQ54;MTnNaQZo04$ruXo{Dgayk z7uO%DV+-*-BnAZ`|i=c&s*P{e}FE0skj3>7a0}-(~p!%TbgvBfLR2XHFgllgUL+BZx+k&4y$Xxyh^TeE-UO>ybPmOi% zt6R#ox{g@fg$6;L0EW~O5*@LRB6bCC7$1T%k9v|OTN;W~Rz|FY3J5?<5_Q6r*zt-Q zeBPT*{jaId>I-)B&9vmpmJ)VtF1>#Cd+qeKHEedtk3RaH=ERIX`qW@7{82FP2ppE; zlu{Sgd1Mcp85dX?<*%Q>(8RZRwV84lf|bSlC<5xmwgP-7nh*h2U_Kj?gMB{!asxFa zrazo7IE~1ZQ2}+J0Sv>afVoS(rep>m3;c;R(%``_4sT|wBlzPkYVfadG;o#y`KwsU zm8m|gTsL8CEAbPRfKL293^%PvG&U_>*3e`9R-`-_*(h3wH9X#*GJJq&ihXlf{99o< ztaQ;54oB?Sy|c5C$<#P4KXl^ErG+i~wkYsBQ<=p_JG3aYFbAvZbf5g<7Rf=@B_D>4 z86>7+YVBsmqY95t1+A#b)S@$Y;RrqtlcfH_0fJuO%vc^o@xkU4KQ;do!U-_B{6Vw% z%!VMwU@d@iOAJ}LaAx_Z{$G(#JMfSuv;C*wYb<1lmRGaHA*IKocn$MY5TCHzjs`(6&G0QG5 z71h?7Af{tnm_~A_`PkVQi`dom$`KhMt9m}iM-z@jiTj_A|3AP;pz}3$CDu{j7keZ6 zWo%~qk~D3?%osDy^G{*4;^&k!C0PK0vjyev4=KxD!N8ab;9=h|UlOo_WP}unt}cGN z&pRDhsKKY|0KPRAXC?|U!c#zZlUnn^+~>s{6|s%ye2Py1zI^j`$h||jXY<9}swIxh zUrHPfzms--Z44d~X@l&L8Ey&U20EDDEsgBmv+IO9B3w`yg*`JY6+WKv+pu2-U*D@| z#7qqsevQqE=nR5j>1cAPl%Wt#>L)~VX57tWqt9f<&19j?5EA*?#0v|L_LN1=7DbL% zg$`GRuRu|h6vo&`-^(>ld*=b*S9CcyLlxQHzQ<$UQLRS+t9K$aaGcYFz^icoNVV;2 z$%kHt?8ssk@jmbudC=hRR!*=pVhLZg?4S$BkdI*B7sZ55m0!aO#?B$2*>4(5r~&Ej zg{l>F{a(8co=d=zLM>Q%M0uZ%uLE0a@8wtDuM(lth9_$IC?H_v{C#TIETt=IaaJ8U z^z~J`#n1OCU0BF(uDklM^PuY*MyUKO&!So7w}-0G{J>1StVO+WR8vr#w`KwSMt<&I zz)Yh$?WR+D*laEi7mFBqBM*Q}Km_^5JsCpFfc(=92g1t$^Ryyk#rmU6{_pKU|RnarDuuo-CDTZ5#o%JNI{$YY-MHSk?6NmZi9sI-gDG#6)p8_Y! zc4t%8IrFfdE`^nU3;Y3yzvE?h0ea6k6w)03V-0Q=eQi|I0sw8zWv$@KDRYtEc<(*X z`~Egj))a76P^L`H+W&1Vc91c5O_X6hGs4WjuZnCJ)8G>0L6$a&lg=+oI?mdT*Wm@1 zv?*f!vXh=YvhEG7j*4f)>FG4MmMk(Cb|fqdSeh0RFWXC(ZMJz})5B+eBOofca7 zZFA@T-e!cNJ8D^sJ!kq0hVm>EA;k;Q#>U>vhA7dwT_|R--r4a;%I-9Gp~oAT=DHsF2;3!gjNZPglc<)J&(6fq;LC< z4!NtCKO?+`YjpLuyV)zp3ZJh^EhL)aJY>lv@T79~U5fnbP+Am^KkdcEyqNOsj3qcs z7GX`SjsXFjn^Ce+7Un&TVUAiX+EP_EY{Btq5OpEJ!NK`fK`O4hPIe=nztI z{)dS+yO%nJ=BAJie8&R7>&nX;p9V$S|5CJq%?_bw(cv{=tgpketAiZ#Wm48e`&4w+ z+oVB+K}A^=nDUFNahn`!RI+i|ICrpQvqHlp&MoMJVHbDxAQyRuoH>$6@c@9e4(9N1 zyt&IOlzHwp7rk%_!1NaAi5AI!I9gxkMGABvinbS_-=5OdRQGu_7kx3sBhOt6|7&kD z=<|+9WvLlR5L8BtddoTRA|vv#8-4NclYO&k;ZfKob6?N2LWW)c=5UM~ux6Mu3#E{T zLB_-j{vY+>@0?)p74PlCmjRClk?ln)Aox7=WRBft%0ccLlGfH4hz-8Th~E;=kGV_v zXR7tt-9jMd(@!rtqa;z1U+4-%{Qu0jIB2)+Jp-{;gw#N>8Cyx1SAI%_f36ZQ0zB{8BWJ=Zbi z#DU}{1=c^r3BwywkTCrAueSYTUoiU{;?!8nWt}9g1g+uOQgs`CgKHSG>+y|f>Md7> zn$HB;p}dZ2-=Dl_;5{MB=s`e|6 zgIMD1HY)&giCHF_uj)%&+r0;Y`gMLZ>U;UgSFg8}N}T1AW-K`VmB9W$j`-V?i{e12 zr^F94$`O`?V1?Fftt?TcB7R7t5jamqeoYrru909P;msS3DOYz0$(U)zs2k?*HL>6C zT_k4lTO#N{y0K!Adf2|>75A6h8~XPPX=+vF2L^Gt_RvI}!W2por6vekqWl8_9yJ7^ z4mCJQGJ^InyZIA0y%n9P|N7EW^;)AGKG+7Wyk?pEPLE`yY7-0!)6E>k$UT>+@giM+ zimOJ0aoAI~%T9M3bDY!!#!$pcC6ANVI+4GP6kGv~6f9ocih9PJ-dz{Px=m2c0`$ub zjdH^x=rOH1s`W46gaC_ei4Heu?aO6F?c+qBG4fnA{3NNocP6nj+D7;z*DY`!p=K>K z4@sRF@PO z#nA?SB@kEYfLTr0icMHFsX;_$j(%e%W$%(h0Lt$HyNCrX#m}zTzgDFPe_jqeK0$c|FJ6{=8| z&;qNkYLyIB%xGZSwltFj0b)qzX)BUx1}3rZLPTd1au#dw6$z6!33;|`B10Z{AdZJ5 zf?XDbpTVTjsQHN_rK;wxo~Ll@%lrrrt(b$w=b?g_t=*x|A`yF2VC1$|XW^LMy!e<) zg2LT1IW1!mwAXF`r-b-NE#r^{mwW*x&g`F1a;6_N_enkvj$o#Sul|U*C|NWL#f_Ia z9+o&I=*QG4l9))t(Jf!`%7@ryQXP9PmBUERnQ1e1hqB}?)23)BeBjx7!f$i^aLD2Z z0;v*AIY^CPFEEPcBpR4Zj;3*lkMzI~LToHJ;>K*_&*YM9NcY1y3E&Bqw9F(e%mbx$ zFzc$MZ5)H+J-s}=+(OdJ%Qv@1FQ4oCW`?o*cLJiW{_~#aPkIVAsmV6-Dz`V7D?0}V zfj<`(P?>*BO?uhsO|)pir)j~+ceLaTg@jH(6Cd6FeAH60(4<`VQLg|ckXm?YaDQ?S z`OQ*;zak@*8gB$@yzxG~WUhxa+2lnG+d&kETB7(( zHKU%?k#JsyiI>E5$?cUDzAY=i?=>sip%X z!y1HPHR~7{HuewkefAZ^o(OMdh6`q!q6gEN+g@t@I@KeXcP9aAXlzDMLb-Pjw(lSJ-SA?Qfbyc0~2);_mg6*v!@=zRscj<}>z)2txtK3w%fNPeVf< zt<5k+KSV2I_cl2EzoE7Ce+|Y7z&Ois2oY)i7A$DD>!2!0=LYfMej6y;2vdDQ^(zaJ zQ+s`H*7b)xgK4`rVMO+GL3;;k+L6Hby6nWi`QiuE2G}n3qkPZ{OJe`2@F;LWW&tZk#5A&a$V|(vn!oK9%NzB2`tQieROr4zrEhFRT zoBk8b1W(&?%!fZrk4?`^BsABR+a{B79AdaoLGUL$;f{LtvXq{1rIkgTXc3TYbvxQW zJa{#@s`%)58rjz7$P9MO4`bo&Z(wYZ;7^p=Nx)`Y6N}UAuxBK{B#SKyomY4BU~iIO z4S7n(<22bo{`q=o`qdv{abnAK;azeHPUu4!H{lp$#xAyCHmxu@2Zg@G_E$*7NP_l& zzK{@sr7wxFFPNZ$60szC1`F@3YY`>4|3hPGjyD0HLCo=yXpo-Y$Hl*~U5D9)$GV#c z8~&$^SEI({-DM)JWO(HQMYlu5xD;%Cq0(R58l9;=J3eA{62uRNBn5D_8JKsa?nerm zFbGBsH^)@RK1uyK8OAnv5oFZ9y1AD1u+SocP;#>t8Oyk|5tusLTv0es6{_P5gd@d8 zMFogZb6?1~xWE}2idLTrKop?Zqx!SMs4lf&`7cFJQ|xk&Dcz~Lq7nrc-6G8<76ksA z;rf<-pI&J=dhh7rQKD#IM#=zu%Zu?Hq(+{M^)fH&V8wN8I!cb*KIS{VT-enyAA7xJ z#O!Wsgrz?WX$0O$6R2#MOB!osdACE(&|pn07}bHLbJP@G{X3MOB%_%r22=cjZ>JiW zgn`+&@LLWWU=EIFi%4^Deb+i_S%uA}Z1^v)8~8Q_YtY;#_fQa3YN1$_MK%64`XjuU z)lF8c78(U2vebr!4arX2(&;nk7IpTq!q1%bWC`b|-(moDmZzf*?xLj}$VkqI&z?K% zIwaPf*NYRSDvXc38~?LB{br=OHa?l&zJop|!SY|*7tro%!)7ILu^i*j7@V$<}%ebvW8#UPM2RwR-LIEmR4V>a8F^ zP~4&c1WP4m^6d4MHhFG^r|hdsfOC?v?eq0?h|Av({;yAHhA&oh6YNPQU!M(t7yg*1 zxd2XM5fnCi8<%I=Te@`U1`(p?jfg)e28@?A1ctVUnDg12@@KWRSX1_1@gP&sI>uNCo#iC+2yL zerLcMaP=DFD%j*h>orLfwgC8NYM7t?eWQVWl_9cFeDXEPNy&%BzUXS@Wtv#%y3Ew9 zke_<(Ha&{2Ig4Dur&WEiLe;K%P{*%Jt1@T%k|ORg4EG~fB$D6eQriEhK_V~7)fq)mtED zF$9O+U5Ma1t_&yRE_^?8J*0G3Sj951Ps^YD$1_84wmhh#0rTIMx0IhRfVtNsyutae znuiM&`PnNRL2E!5#ggjiqFyNHO+1EAw zT(&1M!iI~LSa+JkNs$Q_KS(l57KGx)ehTTgZCvQhHe&K`a(0LJ48nPMn z^d9$(Vpb>lT_eN>zZCMLfY0)xMyE<e4vO(!MupIr8^#LX_A;T0;rZU(&{6+(!!V zsU9hd#l_F(VV`&tY9 zZ=WoATNIw!DpQ5}`up+N*~Jt61EfAjL=4qXHz4aDt({A3%!yccV0TBO-<|Tl3H3>w zK~ho}a8VYyw2aYDIhoC=vzLPtl#Hw6tpnO7X6UJqoIUKL^#-3oqsg;vE+824mnQrO zmd>$DF{JrB8qSw%bdPjQN%wCOO|4%fO}tR$jIdQA%rd?j@zH~Ak;!V%Qeg1^epU5l z8Lens4&(nDiw=t*H7X;(UW07oNl)mJcB^x{xhl_TOWtqjin=&=(^Z-N)Q`!zE`~99 z_sVIwDkpx4U^4}l9?sOB$pe1a6QGa^^kL>j6c4i6lCgP+i}YFo9(%}AHhq^K|x`abi4ey)>h#AJnwhs@(gZk7ofj+khslWd@ z^E*NNGInmd>RA3qAL@;27i1iO4i`x_YxtSr1-@lkQ9kvT8h0bQ+bgNw8chnJf+j+5 zT?H(e1oxU)!uSxwD_9|<00VlEgARa|a0WX+{xm+oJ#stpWv8wFB4B-46vMma%fKsH zimUUp;QE>{PAfmgaPwWLYrvpiTem0c#d%K1fY`iR)1|bia03=*Vx8=DrQ=M_+Q<0? z8qUpE_=wR~P!(&Kwk}#V1kK8g77ZV8YenO1Rv^Iri<6LzGpj~w68T?#W)6Cz`j@Gw z&!3z_C6)$%ak<3#iU|=4A0y{}R>nXQE2|?pzOyo?tBKG6-X%U+*K2KtHb08Gyu-0B z^#-5piW5#b1i$&f@J33=o@}o8wB1Or|J#)|+!O|E9mMzj<66m>YvgjvlA{#wLzZMm zp}I9<{SB(Nv+FB@OSR)$7Zuw%zYL_}6tvKhGV~{*POiVqT02LMjaR;>`Xett+)IQ< z-Yvq-i?eyL*)<-lWpO$-oMl%(Oe2)x7EvorV4x=a(=y5}rC6^3mP1CQ$Ua8ISKxkd zo8Odhiwi?@UgJvrA>y&bFMxGQQP$Xt8{eAFOkGa&FL#kGgv2S9G5QnC<;7@NlS_>X z>R^mhp$w9a2YUYmxDY6Nq%*(d(_w?b2JRf4p@cd7;?z&LGC|;2 zY`Ak;gDZTsS|pySX|w>7T3U%JvNFK#l_p5lDzt&JW==%#d*}oHmQq0IcBG zYJAIIa6+O!4B;ifvVmbKg=eWArC*QqaGs+EvH_?TrDF)B@Q&B|FpE2W_tzLtLO5I5 zb)c1oQNv0<*z<^@n|Z%+x;nDOV^(MQ=%nFfvDe3ubI|=gv41+jz6IKpG%!bwkS_KM z^5DkW8fIqWC1Ud6aF#0bj(8&tX0u6s*Wo~_EfP)oQ!A69KO}&p7mdI#cjX!qeS6!f zaFUn4?4s2A;)Yh3^n&MvzKTPTX4ln$3%jacy^E} zl84u6qOJa-Skn~}2(zawfPqIv+u6&Kya@$m%aW-Kv`cD#F|dgIi2R@#a4KJ_X<-rX=r$&Jvw->Y8NNXY_$J({G5n9Dh}ze?2~!^rg4~5V-3UFli&W!VeP` z%S?F#xKrIImV1~E7rTEjZSV1;xIE7agY`Ksc%JpeA~lFB(hyK}zC`2H=?ytuqQ@gK z4(sj4lUCy6LnLsPeL2LAk0%rNE1Fy;Q~B8C#0>V-x_?1fJ78vfhb z^f*qRkl$IpneB|hboP7UA^~s?h;!+ifh6s$-VF8O>qpI$MWIV-0=j;nCXrura8U<6 zy%}S-nZqvofhkunXi_G=fv^H)yVL34oE$cJiLyTUwNd==B|4X+VxUBZU-*V(==bNO zs#U8bS*lnlYMfm|BkEA!gF^z45kM4Xi|LTfU`)Nhllz-SRdNP_grc01YzN*suI9=4 zj)i7@+Cyv67n7ytXf_z#FGTil2hCvD+Hz?74C2Hhd|6>tbM$k>9|R4ra_D#q^ynHK zggeFOuNnD9urW;<^>mE*i2tE=l&$<(p)x7;@d2)eLz0|0Eu&#AXw@eefAkiaQ}Ruw zY#UdhxIrY{c)YZ~6%6ZObR9RvC5ABIvvgBLnPt07ARdHj(Z+TjU z^@}{3O>eSHjio;Ddn?K4!U)c-i=pPo6y7Y(71Doj*XL>HWvPn-us+PkroV{X?X{xD zw8R?|I}Nk-la9VLgOo&pT~{eBi6DfbdI_t_k4^_McWkvRSNAzbF$K{HqcExtFLNRf z?_Hgv?1+1WcJr)=j5e=4>znp<{Ggg4zbmSHuOiPCEGhi0bdhBX*ti{O(t;#Z(n+h zUMDPWK~42eOR!sad=^=Xp1tnMoXsJGfg1y?MioOu4Kb~FEerMSa^Nc=HxhJ(EhfX-QI9% z|K4f~r_4kc)YJ54z8^~ThjbRcn8TpZPwl`BZh1v|B1`;f9wP9 zZ`t}5HnM{3WGmZ_aaF~yvEmdQIv3(PtXTFaG*v@1octA0w&u!>;!M27)h?tl#)wa< z#YVnp#&*fU=$SR_#Q`vB3IAd?zikgjjYv3k0ywAZ@?$5@#&*^^ciVd}g*J3Wuy{lW zqq_(rihfM0V%d`hjR{B>dM-l=ZhV6bdpjyR7#FvRXAXP3w-VMntIZF*xtysN#G3-bP9qg>X)-tJ#Y&3_R$=_T$L10wuRr|-&Hebv z)H!9td1J#Xv51nNHm#L1sH%vn@DdQA7iaqY;75OPNag8pqOQs{I2K z@D9etsKJyJC}rG0-s}@`UXlNbQUNL;?f56x4AKrSR!%mH?EG}cr0gcblxjVA%oR@| zJU)?VDX!cgy;q(yE1YU9@-?Yo3r9Zv@Lx%(2SIJwPypR7I>nQ$X#CU4jP!xf7AmH3 zSt^WrDxo9%AbYL^$*3K10?fa*h`@7pficN;t<^b0Lj$?7;A%SWIyT=m=ExYkCVtP| zTI01&G?>hG-^<|zEMP*0bKc!}7dk!Q~+OtMEN>~1C1~2biG1Y7FV519B z*R#(VABomWF}+}5kjJIK1A|Z~{yw1<+U3B)G^_NNoJ(h9=jt=pY9Rud>^Ep?olHOL zpt$+-tts=Rrf-|?Rat7;j}~4kb1B&yjp(+juflTZWSS8)DMyFE#o`g3$Ekmq?}tns zS3bIVx{%YL@rz%aKzq!PdA@~`AR@%)p`#}yDoaL#81X(f+`h=(;e>c&u|$DR_`NK{ z0Z`lMFK0wY<-xU!i|D!}DbhJwl*;z^ggRm3$nCb7{vOJFQ4fC5n0Xe-n+7jWParyi zO7*}{ep~V0Z}JQTy^of&SsTuZzld%jZln63PYOopNZD!e(#1Y$%El!lv)u|%S!`uo z9B0bO7BmIdBnR81Hv`&YT2G*G`XE*RkL2bRnAT_j>WqcATzlwVe!<*bEXTyD?TX%<1519;<`0Jf~iGOodjujmeB@JyjGP(C~H&@D$)Pl%n zn`!#VsJ_Lis7-9iNGTFI5XNmFX`nR(Nz*7LJ!0hexBX=rbiA`Ao5_b~-a7v;RWijy z!C**)PcWaff=z%2hKg%Vo+_`YvC(ClG)|DoyB zQx6iV?QVF#-Q$8j`z=mT10ruFT-w{qgnEgV@|PiSJs{guz))u(sBr_MMZhi~bsxB$ zl*Zf_o4fbX*9-OuUH;^=eWM+K>RD0+9d9HUUF0n5k(P33Zk$7_c^yO`4rb4^ZBWK`A#9%O22XExs*c8vvg2j~l=7fHuUu;Op zYR2qLQCy$8bVUKDkbuG}ZXvXvUG+0pNFE8Ic0Y8xxu^um^JOvq=Y9s?3Nj0y7piBy zDIOewRnKw+**c&x^AEexMAolwoZLh$0vYGCq|C%;q;+}7VQH5@iMj-$nk$gKS>$+k zuFd6#%eJQBHV-0CpK-JgZCkjzWh$(@YWZR_o96AiyZF zMwuZC*Pn6Zd3xg_2w``E;(W4U_D6B_1%Pj8xNXz@Vay9R3n13I>j#H+09*7Dafj#K zh}8*bHzbrJD^vy1j+`A1tuXiMzp6$~H~6X5YM5-@3bhFWV!D)gBAUjFXG;}g2?Yeh9i7XRa(;pu`OBuJ9KM@G6e+1tNxn;x3NwuR+V;^h$D zg{$8*!0C~WXX6`j*3OP20!!5#JgaGts*LVEx}uZnZi7&w5V}_HVY@$5#nmwO0=FAG zFgt5rZt&Ow5X}&VyHrW_bfCv*9-MPt& zqT3e1J~Ww;nz%{z^tEN=wDuTubrNCXQR!FrBw519>YsE3&+@51k@x(YH30~W;vy?3 z9*3^zcC{ph)+1(>xM3|hHtD&J}k`7UA zo2rhO5Eq#Q7Ce;|x5gS9!wv0s&5CqFe|$``ZNI~}JHv&$_^5ilBBliN;b6<)6y*>V z|J?khdVh$uvHl6phm`EJIqGOPX137$`CJgda}P|7_V#CiE0BteY1W29sq>&j?-XUo z-MKtW=${=|HzP2`T{(Y5W#(s+mv5$~kqHgGLPAF9*u6SK#idQBMR;ras|H$hpXyA_ z%sU}hYB#M#6J9PJ3!tUP5W=>>Ifz7Y+8PIRtc+ZJp&LxCt1d!E#Zn;r@aQx*+w- zTSEu7dPNO{im>P||KnvzYv5GFE^*dQP$I{|EwA%QbVM)2D*Rr+*hnC4dadBb#>|XA z*-2}r=YU}?rA)MBAq6n6?BCV~}LqnYa zDiU2w?!)>y$k6h%`#h(5y@mPX65;gGfkY=A?thX3Gmz-m7Qx@N##BA&mlls9XGS0C zhCxblbn@7IqSNa_qTxT43u!t_!g?0y$rMnA7zAMQYj_ZsMv&x*VH# z319t_pf#g(@QpBY`%mLHB!+X2i}{j%{pb1e=>YG{>|;4DY}J^^59YDAEfT0BdZZRw2M>sYF91f9pmB zhiy?!9}}87sj5j?>QY-v0*4qQsji+I;r5SvW35?g-6Lu#RLJP>|MXu!7eKD62WpgO z*yl|rcc)(m0xivnRxRqbWVE`YosmDAm~bVg=j&~praJW-H_5`YHDjS1p^YQm1{v)s z*lIl#n26HCnMn`!vc2kdo(Dg9Geyv>5n=Xz{{nAsaVNX1CJpt;M;+*iyTZ8I{j^HM z;YUJki<8_<-@gVt!FslPFhoDjh~CVN&{>cgTn?(gz-imF z_YZURgcCtvs(>GUFKCs9VPe+oAB^cCKuVRwk3}-)g^^%3W*sqim>E_4(Z;F&bJefykG$X+TEqJsCK2X$^5vXPrfU%07*xriw!tpijBk_ zs^EM>x|M%aIPNRN8RleW7bC>v8tvkzJ8JTZl;;p2@TE{HLMjU0gQ8n3x6_g9`^wIG zCp|sf^@E?;?)1OU%2at?K3>rg90QfzC(*V4bIns`o28zyMGLq+@%=Jfh;ygWEuQka2s4=)QV=cPs z`Vxp4CeL3%y|2JMeU#y|Q=*ty;49!SC&%;I z*<;`2*EE;DmP$?QEVCv0W%UB@3pzz61_j@g76R9>JS{(lI+r8ap5$Ey>kC#?9*a#r zUU+ZKPqtncj$5A+v+pzfx=U3k+K;mRo##J%({@$N!%?-}9*1wIg~xqXQ9%)vjUYUT ziZ6<_@y$vN^~#jX$W978J#}MaD5i!f@#tqHHXv_vljzoDB|)ZyK;Pew7Nwu(26WmyjJufsBV$_fooI zj{Q;x)y6^z8d5fKK^tLCE6^InGj{fmE5t)G$Sj(b2L3K*n=k*3=S|+m4LVN@%a7FT~nV57<+<#?^V$;cZaIq9!}Qz#{J%QFE}`! z@_Zh$_PoDPPa(<*Y4lqd7s(6W+e}t#bRqiPMtwo6y&HngvFRhY4ao*+yb z4NEA!Grfl1-gr-(^KsAR%he!o3+p}#b&G3kM--ect|jY~K9D_1KvK$JW{0=Ll`DnH zP}SAes3fJ0Au*bzEQ_Tom&#d7|7;bQGs@l)f+;A}9XB_3gPPrHoDJghm_n#x@ zKLR9&snP*bhC;Z~;Um5feODn^9OBB;+eiGcps|#&F&dW9CDuNTr1}r8k#@M0ztXv@Gw{MNH|$Eeq8AR zQi{``12A2sk@~C{@bD3u`b@4x-IvQ8y^~stke>7{QIybzP$Cp>Rt0=MW~snS;cD!* zQ~TOGI)S^meYSk-IlFaLUtb{-V!h}hKNrd&UTRvK}h zFi2iXDIyk)YD5FeDgT9f6`ISVd2=O<1S%u5F?4a2S@H~(^C35oRgnnGsf@fgOM+%2 z42`sK8A&vBB4Vxt*Ow`PExF%}y*dP~B$E7rZtZT?J+P!P^Lo-`x>6%Wbjbp^TPehr zJY8X)Mr*(KCSF7PU$EqTY+Q-XqhPgVv<$9F(%z)eK&w9@tM>@Gk$7GL{RERxS9Xlf*G9~tVp{L9se zFJ?LzZ7U5Amoec?nuvNQDRS zPVvg>?7>EhHc1%qy+&Dpt)0hbZ+D&?lQ~3>RwU86T5`IzInspIhdsfKwdD6P4^>}J zet8w9u*YRLHj`DD$&2KAL2od-D4Zn@Ayv~rt>P;5Wl&L#7)hHrR$EAsZ8ku9R?nuI zMl%DMj_0(Hy@`Kx=~t}Ue-kQPG5KQ=jHF+zxH0!)t>W{Ht0=eitSfhHCS;cIqYIaD z#5J5yEveg7^*zzCd6Y$6oJi#Z*25x193|$WxafpB(JUi`r6+>)=(e87<)0L#p<`^; zUxXQYiNc~;r3=i?R5gJFvA1y{s?v5*jWe*tzy;M5AW?kL%+^o{SIG6`U|YS%njIb9 z&rw3Qo>eM1;-Vh(v&&#W%dbxG;5C|hr=+;jz?g9!H1;4Rgs@Pl_9i%PJvU8}$#W-F zJ_6OsGpXhV&$Z+|`epCM!KTTk+bO<3c18ZR96@1SrZ?i5fZlXLu zSZ#tJbP2|`m0i8e%E77NaON#-^|m`md}XkVd~}yCwlO(qjULG$iDUojVOim95nQl;i~%EoY&6Y@DAl@U`rsP3LFQ>ztaSFN43T2c3%S5*N3dRk6X)~EeGMVg4b-|;B5JUDeO)UeE35zG~8e;5A*02c?=>8f19tX{R zV*&?UtbpUfU6#anz=SYpuENZcf+p{hBZ|Y98$V0>t@rak(3M>`6K8y+MT@n|TuMd< zBmjsCUC&NVHDp3i(3$AEIruSNdJ~3**>ij_#R9|osjUyQm3rpQvdW^ix@@3vN!H*b zhb=7^PElPLwBi^TRI)$P_mmY7N2mvkV$#&t=F`juxX=s{m?Idp7*fRN(8M={@biyN zd}gRhykB!&UKg%>uR3dwvn)99!~b;q)c9Rd4_ww>*S7>g*4RG+XQL#M3_7(II!EziBx)6-Gk-ywPt;Slr|*^1P3)Y(A21I2m~HrSS8+V9Aff22(f(&4pW zSE>`01{wz}&7e9~id>phV@c=19cTW5YOZ*p0zT5aH*- z5k{_PiVlX{=-$i(e)X**ZcYu&igY9RIp83TXtAY!=LLj>xA4v_O<34F4uTmlTbM`2 zfwvOi@mW-HoT`~~EP->^+?c=u38Gu{XtI?x;FR1*7$%!kweG>PsvS=r{QJob=&Np@ zAK`wTeyQJ0&}jNU6a4ob znE#Mvi`NFn#K68oNT8z;ebQB!7AFKtP%bCx3ti0Q0D|FZG5}xsOk`yJ;RpB_ICES~ z9Iv9fn&zH7*CDwf#8~q9S9LT;$@G?KV7k*_+04W8Towp?e3%WT^z3J96xc&XEMgMY zTzf;^Z1qOGR>}Kof>osPpw*QDz}yhlC+5MnF6*7qX}R_mYlh2nmEoa~sBwP5IO|&W zcI}M8#$_wj{{C0`KVk!?FQD-bcq3PJViPiT#d}R{g)g>*%{=kq+3whD-9BtsLQwJx z^nh_nN0Zkk)5NAdNx`02}yh$WY$h@(v2(uc7l;aQA3v_Aoub9;aF(pv4M$ujg6FOCt|ZD zFpgyMw}gifVMJR*>tJ}0JzJHQ1X8&j#g;LY$%qInurJu&t>@P#eqaUj%X>ZqccG-_ ztV!utSYX_PsX46Yd8@IA1bdXFnM?l>AZBSm7;l3D>&{!+>}*^Yh>spJHAG;3wxde* z@HBF1ZP-xNhUot2EUiwea(;4Uor^&bTSAU}vs3_AO^O$%H4|$7{Ru$Tj5=7*&ej|i zEovTM0>v*dI3x}2Q<;Kl0k~i}r!Q+rmIqKKi%C6w>mPm1W;jHsSZw{_@x+7*4?h(h z8M&eI@4rJIU}m)LrjfKk7$!N&S3%5EW$_PmH>Q&PW`-5mNEZ$Q%KukvMi<{WpY5@v zR3w>0HaL15S>%b>E#I8k-`$1BVpJBly1g406om4kr&RO(2c6O@KwL^%E4FHVRd73L zU(t~knw8HYk$i*J`Hm4S#TXb(pjv={=N2e8GZK#V7Z#|f--JTY1YOUr_E+IajcE!z zdsUytwg#yZJH+nw6?PT$^z$ZlA(2N`3`ZIK(Q2&qfLY>yH4kr`)g(TVGdP4pSS~0v zH@jl9va4y=g-=$$4*ywc`rgAZu+&K$hFQ{ybfJ|ttI++&S~ojZ6nsd$G@Q~2WJS(f zyb9=o8>}{T(5YlboF9y|`&?7|w%C)i)MiJ1G(`YLnl{;gX(+hHAc$2*P`)p6@GiKq z;?4=nloaqv%c;*2h;Dytm+m#uUe<<3RN>uUzW ztRa6=%HjEwWq|bJaT^E@4z5-*f&Bjd=;{4t=y7))8d6M|A`g84^bCpx=Uj8W{ey*r zra{J}aXlf8;NLhYy<~7;&M4K~g<&+f$@a^I>PTcAJ=^+mEYpp3XWyf2Z`}{^$K5r> zdvgH)<#}G<+Zzq#L%*h=a84l57=xeqWvsk-=NaiBCnMxfGGd~a6}$5^tHfvNBHgnM zW_0gH)a}({@zI#Y$)!ms%bCDQ%)BYXBou>7P!`1`8-#>bZfrP#9lTA={VX9e7G7d3 z&MAF8TjuILCGn=MX-UDLO_A#0xPRZz;4p-$Uw~Py1!fIoISDZ+q4M}ViSpwqlZQ@u zb#Nh;h`ltTjOJA~oe~Hsp2C?=7_CYjHUBe=-*wc*=gIbTuYhm2Tic=C9wuS~9jSD@ zJy2e>xa7yr5GABWfo~B%A z>ydgB8cVAwlnR*cm48r#g@bGe2qV&*Zs@7N>){{EYc#rAr%R?w_?(o?R7NGaf1^G= zg(UY7Uzv|`EHVAKfCn_)3pN3N>0MF7X2KcEqX(~oLGfVgbN&$RlP1YnnJ2yLlr~!o zO!IWp734;?4fc2qGgtV60}{`|t;2>=eiwyvM}Zrx1t0K*8+;5Z^t1**wIaoj#-l6M zn_IYa^HHIky|wh;x04|~wu&hb>L(xIJhN7&o;>a9f6&LMWDP7YlZv%|MM3q`oYc+t zL9Y0}czwZfj z29T%7$qRLc1}TdExkKB?bI&8?)q=HQdWSM;Pefa@@-reD-SR3 zrwcrtUjY4YVPEJ&QhU*tvAUwYbu7(|FA}ayB)}mUb(p9dAL-J_D}0C&7&X2eKMiFv zj(+E&YIij|p%*K6^v^<`Yyca+DVs2Q)e+kwirg$AQ^d^DE*y?px6=IV-J))3;qfy5 zFE7xgQj4UoMBl9C#g--*$oB<{*Vq^Kc%w60>JPTBQf}JrkH@wASonTNmEw0#Bfo8s zu!mTc7~l?ltHKNdFQw?pdn8t)Ug(5`QK{)&)SQ9b@(KEy?m!fTcoy-cIc(4R0Qg$R z%&3H=grUz>i3Tf8RH{dtaCD`Q*|}|WWMa*3+-%|+2}N!yY&p3ndOcG8B+Eh1kG%A5 z(riQI)HRY;_vz+*=aB3!4{uS?+02vi3d<5@s+WaNA_Pz<0@4>;eNj zkdUOfoZ~}v3WXUgXg+u9^%8kKoNTS`9Qk1tFTK{3hhx_bK3-JR1m=O_6e(E&PGVHh^p9dl%p@lpj>hD2@~3ClgZv!5^6G`V zBzG%%l3bIhKMHn9cLUM~{z;+lr16FKkNBD*-Ec-n)@)cCVU@8D+>Br=s*ujJY})!h zCG7p$6W^xp{{#`*(!o{ieo)^td9t0+N6tzpn4F#3Q9`3wsRoL+Nq>WeX~7hIAaH)? znzhZB9UCr-{}eyBhB2c5$j0i%BY|9#!Ri+Tiw*#56b`u@uuR$JjVY=_DSqB(rYqYi zIGN|iGBk`CL}XO+^~aZ=W)Yt|h4!r<+Bd&*x|)U9P%#c3qt)4)t897p-e$}PDr`CRE8 z()=clQg;93W?UV%uX#WBAGe?SVvCqRMjBUvHD_U6hOsc*7{gxcg^uk4#x~f&r$Slg z6M@{in|*xTk1+#hkl!(d+WG7YvH_C?bU90H0nqI0U;Rtm` z&*LH7an`8e-`-|`iwOW4`$QVav2q`&S(T)VBkg_st(e)dYPa(8yWNo4&6=t{ZMfv# zR8ZlHAQ|2j64F500P@XaJzY0nBfc@EeZg1_K3?3a5G8w=IaK&4^iHO%$MD-a<**(! zZAVIaNTc-aACDzcoBm<%T0I(+7(PH#TZ7b4qH6Q^^({&7ayQ@gipWS=J~=u>?DKs6 zW%tdsr1)mXRWaNXTnh^cB*~U#1c3^(A!JQ?L<{r4I5S6|Tk{~`tjr{yBEc%E;}mfe zqhst)o1DfE^DEblt^7zIpD{AGWq<_8@K3}$)yFOM6hr;sy_gs^XD)bZ z5&y{O2odpgH&nV3yp|%g*(Ogt$c$#3eye5@aY8!brLzLdw(jGsIfy0Q5}?(B_-Y`l zU+y0m;*lQx7&-^;vlh1bD}rY%^%z$eN=_I|TO_M0#rN%9C%%yres5-P=8;*gRZ%?# z#gQkv={{uhB_6hNKe+wPyNZ_^s^7hG(i7HQs;-C32S#g=)put}URKDrGu4u(tJrjW zO++K*>4nb+6e&d6F+UG7-58Wi!5pBY6Y4~_OxKdn^WtWB6#H*LE>KG#ZuL2494^SB zmzqv&c;e?o)36H)M2Gf(sam$Z!tYC=PV^?*!`iE>d|B@w5chLQYLz8?R1g18C`emH zzrgV6)9!QH(wA{~c-q#Lm6cU1H8&>iDorRR|FTlU0?o!P%s@-3A%R8w{YR4EL3O#& zDx3cZE@GTO{%|u*17J1}RymLIP`QEi&eCT`yN9PR2^Fj4za%eNfs{yBM#D*d4s1Rd z%tRg3dhDF6u=6Iwo9B0h@%Cn%4jt}->wgAxpAI7OS2<#fLkd_#iN(y%Fl9eAQI`KK zN-fRLIwR_S`@jKIwSsYDo-vw21GSy{M|TLSe@vCMfd-WR72}F4dp%CP;Mvh<27DuQ z1}q5$7yc7=9pNdQc!%J6+LBp~`!@ddO6M%R8rK~F6d&lqLNnBz(h~jJ-g8k<^R*&J zP?;+4n;^0vG7o5z^8DdSKTn6(?&AtAyw!^*W0D!MxDN}^?1F2CcNPl_iS8q9QNLDi zqdm0yGr^eJ`lH?>yf{PwK@JQU{GqT^Ww5MVqGfN;;>**iCh48nCt_%5NUl-w;%aJq z`5+J&2VIWR?9QtobzR_AnpBK&K^N&)Rwxk81K%IYU6`@VM`Y(Cy@QS5Y(lz%<;dR8 z%}cNj!?U-hO!$vEg!1N*3}dq|jCQf^(ENEVX)3_){vD-tFdwwz3KS@|PKwioo zXD)2F+`Er55BGDn+pu25{=&fhL{$F!CMU_K@TYG%@@?ft^@ltp ztw3{JRDXrP(amj&KW~>im9S4XF+gRg#t)vTUT8xID&Z+XbgA%|uGVTn5;G~lokVAV zFPdJ&7nX0CrD$hqxk9!F+dKBlUuzY}?DFONem#xkTknsd%tRDqln_|%ax{`7CF>9TtD2Bi^bxiQjvf6f-1+^!IO1Afq7QnT&_UQ7>kwEF;XNJtbbLhJ;6 zE_5kwmH&YLhLu}WK5dv;7#YUp1at=%sceb9EU&A&eZ%K!`B8K2lA$oMt6c(#RQp|? zY1J+q0nzXcx!-ESxC(UjuRJ>mWhZFDt{|y^5kjMQrxBM&~rK&V9L2>wI=#)A4tOTGt)sXT;=~H}L`# z1X{5w$I@V00Yn7msB!iS-YpzU#dFAm&jZO{E)r~&3b<#ku-)AK}Q;Z8{g~$S9 z%Q4QfadD8#ovt8l!n9m{XnPFTNhzyHVNCgZu7Iola;+a|&@3s2kS5!}XHJXld?zG* zsh+FLv-iuqwejnLcO^8?7F$vt8WzZLW<9?!4KpbF=U$8@v_yMn&@Cm-(gE+e_8}xYAQ_D{&V9Us_b`%dtvQ+fP!40O#*NV@LBd=PS`^%d>I-0$S z+?7a!Ga>m4Wtwb;pv)2^&xPG=&p1dkc;at>;%~MFF-R+~Pi@Qvhi_krv zS|-{%UBDfv>PB-9N(JpM1_t!nn|RPYo|Gll1}ev`GVPFRiIqehe!Cvz<%Df4xFiOI z=QcBoUY4egcQ&GX>F^XEoKb0R@`nBc(eo28NUueXfM4z4E)RaHuA(UIShHycW#I(B z{9#u998_dBEj0<-R_7CJ&b(GFLU0S^fpLedj+gQX$;B<(aLwA-T7uhn6DNnK$Lsgj z1{*7Ug|`NqMLXl!IiI$a4(fVCF0Pss91LJ%ef&Up$-k0#l#!F|>xNEX=?(hhVn=_X zr(V9H5tHcQ41OCwBlS3!InJ9CDI;@C$z{p+L7cuD;dcj`>w!e1#|2J^A!DkZ&wYZk z8z!qmEqKxc$OcbcX*5-hv{R4_U}-45r}^J!pP7))Rn}#`6Ws63ceVNZ9a26_5DhMm z%F3$1O`y8;01d3RSqxr^HQLH31I+ryiEw~=g?K2P0Q;U079P=2XlPn5$T3Tv_GBCD z_F)DJ)^&kp$aexm*?_Z1tM|v6!UjV}RJ&-N2=0MNKSFc8HfcOkOK@NV2fAQM-?Z@? zz9!~!GS~{#N8R!^cKt*_O4AUr9i>Oou)c6$eQnR9> z7=DivPjkSwKddaI6e!zd)%9(9Mkz^Y&)|Lb=6NRWmuByn|2aTo8G>?hcOw22_U2VA zu^^o>-v+&vH;+G-jyf9Qs671CWv%Kfgns%aLvDZ71R7Hgb*fj=SltSVnV2LP)@C}v z`^BOD)qwgvKMy4PSH;gqE6uzsxpTZZ#=a%k@0VH@5J*= zE)mhG-&0tA!c~~4N&XFa@0OD6rOKNN{eOu*%}Sq*g9AxWNo8&AWjPUXj(>AYOO-Z* z)&Ue#^2N$MMU>{~Bwxt^FCL&ORo&2Mo-vrxUf<8YH1a{S&?gkp_?#fjvbc-<`=@Gm zn-fv*DmyVxW)puWRAt05*+oC6^L_FU$7N6FSI}gS9gBm8##wXtagj9H_yC$ll_`m( zRjF~lKCBnqbjst9<-`{+4Cg+f(4PilYMHMrzZykkv`+19s?<$qh0DmuaIKW!p`lU_ z0;?v_lQnn}W4XFv2}A5?gfj|qa=h{RuAK3vQcG;{3R?EK;#YV93kKyB-{WX(bP2lR zOSls6-?ghOA(31KBkLm}5d64$;yE%nrPvm+1~rwyvF-;`b$S0@C+?L1b|PNsN?71z;|wO9H%b^Uvmx0}0&i#yIXMrmebKQ4(` zj=4VS{`H!-`T{qm6sf)ei5nL?i!KkW)kFmm`zHJhm|KMz5Z4C0CFFhdtwHW$ay{tcfQ@;9SvyEXOkOTp# zGZq98_PaO-ub0F;Y1VSN$66zAH3!GU5O7mNt@Ezk5vqq{P&pF&!w0y|$RNWse>W`| z66em+F%c23dx$1DY}N@aG%f!M@_T!r3X23qttR#HH^c&o>U;Zp=sU-#_-7r``A#fL zXSysc{an!5Gz^6qhJTv+E)Jca+j+@3`f(xmDeHgyPyouE$7rys3|b2u?H+BNj`MQB zqdp~!Z064FE6=;Mr{6QFd&G$!1vSv|azpEtr|s>&D9QQ+&^inAMefz96umFORw%!r zbe`t}7)n-Jm@toQVOFczStd2j@vUeuM`o){vf%Z5<`7os;<@!LI2*^lv1uEraA8q4 z@#>k-Qhph68)3Qa%}n%X&rv|K^3@cPrs<8K%-se38xwu;%ZPCtN_nD;#WxZA+M%?$ zGL&ANilO^>#JUw(i~7?MeT;{?!4JN?jTfU(Wip)SRb20FA)^Q+jNK}%wK=a2WgTHKR-Xhf zq^!Z_Mu1Ma{~V`I6JzlWL}YYJ|3#Lx{_}71v>pm>3Ig^y@M8DhLC(?f=}iKf$rV=# z_y3cb{Q7~J`=5#DvLr@p&5zOWb|;6Ymvf7Yix>4xO^iU`xy?ZOBJ@VJ2iTi2gT^%` z7dKyXYjboeDB=2>bfAo~EkiBQ+(pns&;bxH7wwiL+{#6i+1W(i{~<&VUI}ZxJD1eq znInjL3X7T8YfUuo9yc(QTb$JTCS^gI6&jo}%zv1h6Zhv^Orn!NpEFC1_@~Gc`BPKP z_$v#(SKCbC{q9@E@80O&KMgAWS`?2aqV{y)(P;3AeE+tbsIhD_u5iXwdAc#7lk}}F zRBa5*0H5y~0|7R8d zhwqwt%{|g3_MF{#PzM9zQ8ZEpV(rlVGl#2(y6WeJ@j*Z*^ox$M#8#JGqKAK~lyw^A z6%^lF@wY@5UT{6wa*BOWD~6v98CCA-NqKa06Vu7%i^x#q7DITm1+JV&aX9{EsQ&uJ z7;mWsd5X2M@%!K(ZW!B+U-Xd>8;-d|{OgejKby)}iD6cd7ctd_9 zXQnK5v)QI@b8=lU?1Kp!L5ZIxp!dVUZ^peLhwIxqQFx)Mr9}?O{q8b1D;KAYOf=V{ z28rab3TFZUA8i}HgL5)i8HMkWbg5CsrKo` zT#ElU-tyXkqRZFFoQ7-{2Mw8Js(ob>dx;m{%PcWV{u_4+A{XtbHZ(ni$hI^^MW$|Q z-kL2=tVRDuuCO{st8i9eO(4a~$NR9=VUfXO_!_;#d^C1d!It&EZs$;^+xc2n%3tAL zKYxHIpj5n+E#?J{Jqfygf(oadrraPi1CpCNEL#j9lZs#*A8$jr1XjGxGZ=l`X*ToI z$@A;t<=OuUXhEeS^Y3%wnf_Gjz1jXh@H!mUAcD;9>JAhT1fHkxd3u^rljQkf>s|GP z1t%n{I$uyR_`kw&RhkSYx)C1@`mm)Rt0@{;MwQ0_8!M9b>_O1@58hETvs`1xFuRu0 zTrM`J3T-WwMZuV<>gB}=4x^Mjg#`Z7>Yf$Or9a%cbHh!0qJ1+XC{ua?miFY(Cwy#L zR)e~)aN)rM?_6i|b%it+j49inXfGy2L;Eq=9rN3MgnGv&5}%oibo?DqVYE1uB9`RQ z@zY|bNuXXRCvqv4Px|b3wda*2))h%ak&(GtA}37d`q=JcE0piek|I$y4_;lIO;DwM z$ZXtFGMx`}@OS2$qZ$_7Rz?E>CJ9xG_X1@rdcX8vr$Wtz2H1|dY5{8%J!>$+4z+Oi zx9`!M^s|#gAr>+i;iYi@^(j7#?61G|`~@}QMnI}!Oo+Mkqoyw6O_>&U?2M^Nl10b4 zLK|_3O5ICHj#-azkM?6lR}MG31QXyGf@i{WABj9XoX4&!)Cn0OT+TzYlg#|>dOt7I z^9O(?0*Hz_JzV^uapQUAX>m@N@aN-T2US`8bM8AGKYK`3#)FZ75NgM9x^ug>=b>ea zUnBa+_PO+~O1bLowV$T7ACl1=mkr}p;b0||!P z4<(&x@a!#Bgpf)k8kdnPFm69$fVm&JEt0E(SfKVye^w?eHcT--O>t5J$MKIT(V&pl zVCx!uMvem7h&pEZFq%6?o69_@k*7Dc>lb$mYd*d*7+liOL)4J z$Df|tR3!@+#Ua(9+(8npuy18MZ$?qip6g6G-j)#Ve~3Yl-unIsiP9W94VGFj$+bG8 zDQhcG_7kqYfe9jQa5|ibm#@7n5flil1Ps4E5uS_w6W5s-#bLN zuQ#=@1N#0iqR#oR^6z{5xyh4l+b6qDc9U(K%*mMS36nV)lWp6!?a57bpU?aI!~Gxh zIKB3@*S^+sU8|`Pwq|zO4j#~dmlMn0_#GPgR-JN7H3rTW;o78sXZ2dFNq6Q^FHn){ z6}n~Ue>xGs`2G%&DPz9sbk}7|RV&j=uE(rhzwu{>I=|A>+OOv*KY?sPGi(V(f98)3 z-H>~9e;@f}t+PH_2S+g@ygj3I!{A;oGh2x=aC1K;x$9 z*hx(`KSA~k70nJZvmghACC9re(6hKoJv=%1klb9dJhxP(%S_DfJ21y?HiS$G8woBs zwrd=S+h3F5nr*PVx2CtRDSc>tV&}rDA>kH&Q=l%MMHAn!^$f|UuhyWXAjWnQ%?k8E ztG5sDEXqPVxh=x@zAj0kE?-@dd@}Z=*1qu_kP<}49Hh4dfcUO*b>pSMhi~c7Gr{M9 z4Y8~J$DAI{Nbz_Zf}bi4@;9cg>Lw@v^n@j63=J4o3ZDeCIVh?5FurV%qt9SBtk8xg zB#}gVdT^>-7OsC9l91H9hqNEHrh>^dAr=y_^((f~cr>h)BMFU<6MG|={R!@VbvfVf zo|?f?U-Z=KP4)TK;lOY;XhS|z#mPgF*qD*G>kBpgUlnH%4ntB&;Xfy+F;qpV(+^p? zRn9Kd8VlOlZPzEFe=R=r!d@0&T8a?p-uHW|_JsH}9_O9}hH+KW4Nk;vH)A9Nfi+yF zpiZW|$-HisfEIiFS&YYSyKm3UN{`Tscg^a#g+CYZ{!UxrOaX%?=D+^r|DF3R86=r9 z@VRG+MzGUf>gn&C>s`{+LRzxrT-JVp%M9$VTjn)Rl3`BzD+&Gq&VLPfr%HPB7s`Vq zI#$}TmlV9<-hOolx;jqul=x`ww7<(cz4hpCY>PlYJt_`wb|QGSI3jX9DvM6#kB%tk zg!Lt#(h0LeQsP$oF>AbgeN8FD<Y81DG+RMGd%uZvt|e2XSyDyuf4hTMY;I0lcV5rK7u9c zS{?%KyNOH8kkM>$HijuoXbRBmlyc-3TzrBRndb&m>Dt2= zFEn6nDQeBA*U=NEsxJ&Ft0N37%+{BCG?|;ndl%4VdCGpoE+x@$48EB}LHPe(%?_LV z9w~_+@&0~sAzvXQ_rD&j^`3R%3iS1sweR{D_2o5>tlxCyGu}^KiH~Upzed60B0EIe z*N5%wwOKJ6$GX`K@p>3cT?z5^Xf}ZBdH#{D8G$XLt>_t zDX-g~R6NcpHH7}*aJQo6Gc$(e7te9D^dPP%Sl)zK5{r0!h&S$VMqC7=cK=Qdu?)9j z`dsb!^eeutM#7c~v*U8p*Q>a@!7;>96tV?6{Rw%~4xw=m)qljLkGcmk{& zX7IWSxEubb@T8u(w4({BjSxPsHGpJMCs$1UMkvOD$E4a{6qN^;KtnW|;Y0-`yNtja z;FhN=5fq36tU?76Z=Q|LCP@HlcA*dQ9$pboVzJrM80bYygAu@nMW#hh5Gnx}ESYD8 z%uIg@Wz#0C&!9tO%e)sf-ib3*hjINTtWb2ycCZ-?*e76^7nVNlj92x3ry3L9j@v^s zl)4&h^zyZY4Y$=9#wGu|0wpNSPa2OpUEHk>1y1q$@pdqx?x~#LtwnJ~oHbcewY4Dt zy-lmwzv^CiJ5?#B{i-jmaDo%$UrQ44*Yn4p5Q1t3z6)&|q-&eOFoF>;Qo_)Mx#?p6 zumZJwAhb~cS8S|A^ih@if6oQh`kT@dwz-BGVB#=TaIoX^^XsYphBhFR(w+)rU8Q>G z9+7=CCgY;(nXHEI$mBqqdgJ1@q`do2}s=Wx^^7^h%YDhA?)7N0Acq{(KhHSeAvDu$BJ0u+>gG=uV8gNRD zHfF6&&K-XVDu{`Gkf^&4Raa5?{Ua#^T5xl7_x$oN-OTi-nvBW~!OtB^*tc;eCXS7y zhA@qz!*i6B*fppX|NJ#%fXCNwjH%p^SikF~pp2J9p##H>2m%`xTx; z`)~I9PIl`^E#2>YTRGHz)7pX?BG^x8Q@tUSNH1=$V77#Oe^YU!rH=5s7Fyx`8iK~h zvv4_yf5=&u#z{0M{Si-rp7^8E~fn@CceBIzNfOjYOVb0D-3D-yRV zk^K?J+!M{uRwX#NMXw3_;^W$(t;#HoVeb~3N>ljbN@fN6G8h_r_DiHY<7)FN9g=?i zR8-enXw=n-(+1C$H?(8}k?=iM)WVZ70lJPFl9%IU@}~=3EOiCL@3!paN>kEM#8_=`7#MBsY$XIK>B2n# zYKslV31}_i(lECNPAR#5Q)9pQhVjfhI?FIa(r>z%uu_P=)G>qJeuUarq-8kZDa+|( zw+;TE)WMX&AMfpMmC3AgCUPO1f+5LsHbP4_Bq`d_$ZUg%xxex%P7Zu7Q=LEld1@7& zbpBGkpUtFuHN}chpp1m&ZxA6~j0iO6# zQ%ncyVy^L%Qc8FFuRd(yLYOwl#g|!Odg~>7Q&W-~+nku5kCTJ(2NT_!&0n;dC;LPI zibG3$5;p3y2$TZALc8Czrkxr$o*F$$4ngP_FbXWD^v9Lm&~{{s*Ci`q4&PFRc`BW` zI;TCFlp>;Hq;j|3*{yqKuzuEj|9bI1HL(^@lW_yhlQ=W$UfZsg+kf{mN8a#*%JXmw zRj?RdCa?X5vGh+Lc#dh`f{lSMQq}xRcBk@Z-?CwtlNMjbTlp;c1j;lQ%D~P40{W;C zBRexquX>iWxf+C0kxv6HLIg}Tr)b-8FMpZ227Gg*Fj-#S{w z5w`)+K5%QY??(TaSAlQ=<}S8Kvn0;*$ZOi!(T?+$a47?% z#}C1x1iW7LfC8&zLfYnzX)CGfVn-vHBrVu$><9b^SNp`Sv7S^fZ;E0IbassOr7@H3jv&pi>y6SSAX z!7=J{>b_O8PiUIW6^yBb*g}t+axV39(|EiNy|ykEm7b3=+ni#TvEjZC>}CjGGT1s~ zOAPXat30ndnETaWzg*jkp0*az32?&?4qFxMSX11^O^9CYu8s)vCVc=RW!AGrgOs5h z9FzwxvpJm|r-?Q;I7yAJbtBN4CVEdFFl!uV*_iyQIl~(5Vjg! zb0lh&E$u*(dA6(EJ|T*;!-sq-|dtMCyaz zpY)zcrg@WSezFWV+WsQgpevs1XT@t$x=NTKph_)!k!3YXIjN9X$dQ%)1ZkGGaW zi$bz{5PB$jwyv@Gwo)2j0osx9GHIklo0(~@hgY?_IX^$<|Wz!n{RS z**!V1{2u+yh@Kd$Mw~^&NX>+5l~9%Q=WDc-aK-mT@~F211zqRaBFfAc1g@s`Nh-8ys z-bXTDD~2=!;3Sq1f>_Og09x^;{OMfEy1#0t43YWcTbjxRWudk-OQYpYou-f}KFC_+ z$n-iU43gY>vje-$Q_5O-f`i^oGOk!yM$5VYKyMwm#iEZ5HX%tbty}gKj z=e?$BFnk8#IHL%#qyL@Pdr6wC?87ll5dzbb=~?}ay2I6ZI}4iR!4;iE{v?mqI9DOJ zo#3G(8==~O-mh8uLU6x~GJpJOR_Ip-k9u8ot$H~*k<6h^4D7$pC%79Ux{Qipv$c5m zqDCoC9tT$4Ur=D>>IMJ%%b56n1qPe_u`NiuBcuL!=mVUnxzQ-r+&-$cRC~7vY zoFWU)kw(oXYR|{hO@ggS(F0=!#okVn6UyVZ*-qJ%mY8u08AgzRSe@beWrl~v(mC)1 zE!#pbcWm!Sz^?~aXe5TT6$C>I8WnHcp$@{C;(*w40WFm~d&E0o*}nbpOy}zjpdf!E zM(gl#{>_Tp0WIy!wkd%PzYPvNDE&?6x)EH8aA)^7wzr>NH#?G4(@q|V%|W{=2wG^gH1SLB%j6~$0>WT$lKEoe=e5@at&6W0^Xn)4NrJBN{L zW~V_5aZb*Ul@53q&cy-SVhCo2c*{8lxBp);N@Z$)@7nWwY!WOt&4&OL_4?*n@el>9 zWbhBH&J*1YFzN%7ESh8nefuYATvz9or#RLW=mu|^)yW1%;ha&jW`z2nCHAb%X6X?T z{B%vXdQi26I|Oi0FCuh0_4Z#-6=#G2MC836H@6<)^-07ANKr-)W)wXLrZ3t!USK~R2W?Yj8&j$)6_%T1q{Tc%v z7q(^#u)GPXDT67EVa|k3HZ;f7eX~$GuhkXun@E=As#dt_$E~J@zHWS7JtMF2xJVPk zptKd(QGz3_=>nzPyPs~2(kT#x2NRpM&NXwY@DUrSX89i;;yT;js(^^Lk&@mTrE^mg zt&fi3MD#RS81@4d88k(w0tpC@`rwFfOyK1zRv=p{t7!>CKum>`!2GbxBt|Gd=&#r~ zI#}CvlgEDEPs$W1lnC#uU?>aBz1iB~5wMV#$;91O=_=b3ZXdm+4YA)ic{al>V#s$l zu5HnR0aJ^p1xSD<3wcFm^00X!*|5EQrj93fL9ozl)i;>bn5#I>^P#=Y<>H-?W{lg_ zRQ!VuOlLc=32}lj=@~{&J8PrDmCbZ~$&nX2kDtBFRRpxOtN!PP2$@g)WY? zHb6>|I*1=y>8bwR6g#;x4BWk?WjpkPO*W)Odxw}g`uUfcN?A`*sTC$;8v?|A5SZJ; z?eS_sfj=TvkG`ilV>#Dnywo>Rv=9C}@QgVZ^2D`584OUkI^ur>ImlKH!(_^g_3GkJ zT$oqZK^*-IXFE>n_y5OTe&rYZ^ZYo`(_MsP%LnOc+My?YSaWwPF?7UO^m4}hfG8{G zBIE)9$ro-5xsLq%Ix`5~$7*)lf#r(hGCTawmh6DeE1_ei&{z5JK@&GSWjE9&X$b** z!6J&5I{Ih|!0h6jt0H-#1oby@=K7$h?2&OIK4Z+=3vTS|cd}orc$XJh6$S#H6+iPXgL4K?AS7#5XA<2g9Y1=N95qW@U1pS10fE|RqzWmzo~D$*S+;7 z%&h9}7u36ul5ivw%B`6X<^IWdXRz*4UBHWLg8>D-;V# zQE-TwEVN#yqqxzQE(<{iN5b%MS+m40S0<8cg7D#X+MV4l z$qfNEQZ!Un;99MPj7TSm&9(h-p>iDgXXfA1=Tm46kyjk<7n_;X<9-zb9Z63ZSrsa0XNnVS7H`l*tDz? zIZi_p#%x$spM@rLa{F#}INW%q#s3}(YZ!eeK5W3H7i=W@PTwHH$B%nB%BlJtgj245 zlo#bNPVd0F%9+^Tn8nOWW)EKLwZ#rCa*-C|*gP@t%aNMw`yg*e)(sO4+R2ZcTCs?` zhR|P~QA^ydjW8Ng=Lu0(m9kayl7k&ZNFh#YT|n0!%ar87M>RfpdqW39Yl3+qp>`4V z*+RQN%j-?HnCLio*76u(RsYx5{IARIuA?<)&`(! zRPVjVK5G!dtye;$uDrW&!)D82=L(J%W3kiA8a}E?dXLVQ)xzgol0?50wwoOX=Rcdz zd->L;TU09!dV*i~nsZni+d}wgPqaI?`ROBk{De}&#|8HXg2~w#@pbb^Dqh|QE=sJ@ zkLlPWe19=qSSls1QYJ^*+u}<=%Nx81o8a&~bHk9b8``w-t0Z+_7;EsG?c~5=R_MNkQhY4pc(8eAb0wIqJ|Tu!y>T*nA*F z0J)FR50Pv=k!F;c{NY>8TO#J9Y!jbA3sOAUqk}SE}f18WOF+o54K{q=CmIhz#aKPS-4{3z@}zzwVia zK={D=E@GhK>SKWuL$PbjR)r{V#$~(;oy!I|6vWDEf;yAn^*cj$Pe`03Y>vCeSF3t6 zES;;C@2^Fi5Xz87HUCqSi~)d8(7n61HOz+o#`6xT<{A_FvSDFkf}$z@7fEnITV15f zH#YdiEg?Vs7lvQPvzh5Nj`ll61uuTkI3dkmy{F~wYYufwrw^){r{Z8?Hs-B0?mQLP zQA9zbWAXDc2F#&NgGch@6a6iP=2*L8JJ6C;9tR;cws_;u7Fg++x)CJM2T!o$O%||j z9~t?hO41vE&>}b09C=EMRDcH2Y2)-!3b?7~Jm{$PSly`6##Hhz7s8w&j&Sn1fWj@P zW!rB^t8R^Rr+n7?AyX~o`STj$S_V)C-$?GkQnQ5Bqao!Jc^58vYoF#45O{mLJhSaj z+UA&~>h6vk^#>%jHOK>Y2Zf@PIwf^`zqyzqfKyqd9(E;@uXDk1SeOZ&t{iHfG%h0^ zu6j__jyb_kM(GhD<3lF<2asu--PFJaL}0s$GB``)_CnmMi)A#QVw9R=yv;n+2B(Ln zf|k)7lasgPcjGKVkbh7_Y}70uF5({*1+Te;w(*XNTF?B)#Q*hAmv#GRoRsHG)yjW0 zJGNG3cN!KO&x@``SmRS6Vw>CQ$zapi*da0MbgDBae@>`Bx z%o)ALI<}XaEy|qIpZ>ynR?7Xk%#l{_FR;t3`TrinXN3O|4P_CsrTk9f zVcD7I%eR`;U}VDl;YQ$ZH)Go(Q8k;cTG(8wD?OE!<%YdEtu)8wD+9^rit*wey|V1q zy|o5f+{x`H)E2#S)x$LlrxhvX2z2zRqVDks1R4|JK$tkYy_WAKP_y-Zb?{PT9YdxS%3 zGAsyS$j=azDUN8g_IsEMEHFd6cne+JLyza72omsnFDB6J=1u|k7qhVTdwOIH9LWCn zytr0AcC9CWcGpCpK@atQ%!*}$0f;s1r9<8qH6|Qt6;utXrmxI-Lt+E0{*Tgs zw_%M7yoE+9Unxf(f4gPu!Irf+AYNY!iTHpnA2hm4Ozgu-#l@OA#x*2`@m0s_4ykW$ zox}@OL>lZ?@u0mMhX026m~BLSq;c7@0Z~qZf(+L42;VC$B*`dzH=iM3mMSJyEl;J- zDwBJ4s=^A_-~d=}Bdd11=iw7S>HA*EM(uZwPU91Rljs<$|I!>)G|;S?;YcR;bbY|e zGn3uR{d0#9)`tO*cfErvW8?{1h86P{>v({-gY09#{;k>bc);JJpX9RCoghCU#{D#kb7ZQAb8_3$M!_i51Y%Z#XSffDV8=msA|lFRI{ z;kW+{Gvkne;{}FkQz?F#uJ1i975+Oz)i4l&oqR_#9{CqM++RAD$J>fwnS^6WIXDAk zZoo3qI_vo+R!*^qcg7(0UBQ7X{iOz)a$IJ9=6b=}c;>`->C9wFXJD6bRJ2>0Q79?r zTgAe!TLdRcn@0Wx4XuLmf;0#De6v;iH896KcrSi;DrM2He}{K;L24rRjE^orij+;>kE_di4rQR?TS_L4{l8SeGAL+sC z7csj0d=Q2GDIrUY2x1K){c0>F?K)OikT1b*_N67f5p0z*MXmdDkQ7r`qRuki7Gb;6 z68-p+>^Rfk$=NB$t?KH}_|Cr&@#SlKejI)rr=3q*KCHavYqW%}>IdvUFQ_TYk9LomPJTx;ZC)PxDz-y{}iC2pQ-T zKzDR7Ky`L5V-^XYyQcDNdF@|zPwnkt5=W>}QWOrqJ-=SNKHaFTt*q69xG;kfdbu&t zC)JX~=~5&_Au}VuW+wKRRhGI4rh6(3_5)M&b1hRvqQ?4ktgWV_5k%(!BpooWqJg-? z`W@BCH#LN_f@c4x6g+7}OVt{n{Nl2AQ0&So< zXBhdgRE1e?YHE!woVi@X`OVs_^J2FLD-}d1>Xsy-@I&m}dV*Ap!PB(Z#BRnmr!bzL z0naa?+0@=2I=S^7w~sA@RK;VFa9^uX5u^DpPcMy*b`IcNk?g+wxHqIWtx+^SSzZ7y zs>eBYf&4XVDHfM1>0wIl3t~b)+zq~;5xrN48xEY(!P_W-heJCHHxz0wP#;F7q8)5Z zjdAf?WiqZ#kdO;DM*JFs2~>=!35G&I#5u8JdMhT@=Y(n+CMS5;b_pozbb|@oWoI&r zB{{Vd7h}|Z(*w_SnVa5Shj4d%)SKG|T3Fqb21+9zpfE&=<(oty2d8h zLtV`&01AAln!0m&@SmC$q(7!w>1b;04-=PF{qEEkayG+W$HQmc{xX*S?Uv@OI#JO~ zY-tS|IE$TWrpqU<<(<^E105|aOh5t}Q+%mLI?J+>TDL_dMp#-PGozA8iT)U zv@NaVL|{<}k5AXICa*?L{5) zhnmcmx>creLij|?KRav+{;PA~cc{*d&;!@9kHEb&9wkZtEiWvPH$L?`4LHc6-V<wU;ZMTi<}tQI`Ar(^MUL~f zEa@+!)|5qZDezNd&{SK}AH&%^sLYq;!qr&*umh@EDS1vUR4VHsB}MT%w2cqG@>pl+ zl4mN(L&4aiAYd>=)U!&-tE20dJLVOE-+)ib`A2KN=sqpb#=7)E<_fRDE1ELt1aJ7G zo>;^VkN>K+o8d4tAAldFh+}{l37spt-R%lmzd4o#@9F@Mw&D7Z#>)D=jX#(E6P05P-X!u>nLGDK5L%U;v-a zK^l7v5R#DCW9Q-^q_mXkcagiW`~Wmy>%$EvDUE^Zj!aHYVO;lT*6gjRn=gj`W+xd< zv_*b|(q_T_RjYw-EqZmL@uL2SB4PuEOHc)hjydl*^$iWujj^=1j&qXwddQ8@putB6QMaZO#KHg_edZo_Q0Qe{Bc zSCp$&biWZ-gZcdg0_+GGQe41u&uUhxUZnP8MmoZ;K{+Y;19LYDdS+&x!`HUaA{TAl zwZ6ecq+asGh-l@qm`HgYLW1l$W?lyBgb2r!p7q?JFl67UL^^&-K388!m6czRhW<_s zwc*JFH_FhUc*6>s%8j)zD<@d;xELZpKD|Q6WVB+p*nT_8cC*6?T&IIc=avpr3}_H= z#Dmro%Ha?3a6zypD2<_B z_;P-n`gt5CTMVBH?N4shYSpr}ver;A0I5qOCn-iasr{w}K30bXnvD5sOPuUIKz~4X zT~tMa4V^_G3U+f~0n*IY8)W%8?aa+N`aRDvK zVI0wdLuT9^GbcDC1P<|U@jm&bNT)x*U#}aYL?knab;}=GcL)jZnK-xAc{;w5h8Q37YN zZ57Lo(1Hmas3<_Z^y;H*=>|8-qK{?%V~_6wdrK3<;u~(k{Y<8p(}4sQ$tRWttybaD zvAs0~YE{t*qTAte{+}+zEJO0!j&C52#IC_S%M{3JZo&m9=Io2nAy2~J+z{LuRd7PI z5|P&Rady>mZz82AW&1#z1>2=R`BLi2Szgf2H?ae=%i@2k$hJ%H)`ono%N@lG+(^m= zXjK9Z$;PIx#e1I!Rh|!}={BAa5g(a`Bnk?qaq~=%K?`4p^;*9(i~$tHov-BS^o4@0 zdF5QBe;xx1o#w$d6n`!X=d=5wMwV{?6JUxoZh7dj_xZ~C1p74D%hT0MH_Ai`GB_~A zu7N2|T%|VODs}{7(==w=D3RpSy9s>T2`Nk^1bta@t_a z>rHQ|;&TU7;7(lEzWoIuy3)4Hngj4GI#3OZ@%!hw1bM+KBa!)j9axW4 zbu}-kl6odLkb|m~WMblsRjTAYq}{HU(&;jZ>jkXHg_seXYgNA>-iHvrXbb2u(oGyB zB=}Hm`sR_vTE5B^VZf~pn3}XJG|`TW(+d{r*qKKD;4VLc$V`R==;Fw|nP%XLT;~ST z_yP(41b|h!xS)s`Jkb%CxEiNtTZ&afzTqR*IoHNo!GHD_s4pJ ze)2$*#T#z^zm;~nH%r(t8D#yBexOFyR!l|(?Toe)%2^cr%o2{owubE9DG(#zJa5)n zjnLEy8(}VXt^qHMSY@QR2pZLmsq1(rVeGjRXly1 z=e!Im*1dZw-4KQ^(z7ZwA7{d{&xm}>JleC|64%!iLK69KheGY-$H-MW30-}kXJep- zF!)#b)t)u1UBAZ^drf*NX0sV4Oc>;L^7Drxkp=Wu7$OiSJF>Vj{=Wt^W}WTy@dGD! z7ofHb9>!jh11N<*_MamuGIy2JM&QRyZ1blKQhdw^mG`6w*-k`s=9`e70DPLB z_D|UCWDB2~ItG691+vshO9o?$d?wdeCZZzq{9zAY8)ZtDB+uk@a0?(%3GxVUlm4qb z(8}cU!tnWS)8zTI9@p9A5=MWM7q%IoH1OVW>s4a|MdFY%@>)HMkY1!mn`in)r2*aw zTfWJu+UO`;9wAY^*8Mf*4Y%-l#OP*cJcaJn1DYXVE$r1OUex^)*SZ2Rk5UOA#qGBT z%6$gSiC#v2q3w}3o73FS<+SfF&;N?X$L30{&)zM`&N}e7 zpOG_rtKp(X(AQV6b9g8{Wg|Ue;Ue)#=VCDPp$Ns2sW>!XQ8O~?H>E%p%-1T+G$J(H zJBBDsa&@5l1?a2KH8-!8u-OXj{csT`-072N6<>X_R)jgHmh=^qIH(5#aV^Wl%nX*Z zbz&yXpodJ)2j8beh`4SRL#2+a03&i$m29W(M*CBqU-35ghuP&@tq==I&8;mfKrqkX zF{5^RO@!n0?`V!)G00?_q`L7zgVTNzv=2unsEaBmwVTl@KK4rN?afQhwGz&R*gwP0 zn5gfQjD4Vpb`3Q(@K2?odd?Jy2E zkt1Z}=jznpPcs!!o_9?EoiEqL&B@?wpOA}%oZVg@tT~hs1(5?Z;FlsTSaay$3o0Y> zYHS=(tKTk}K<7*ch%zfQC=aYORhfLnTouWd-{xaU*rW;7xHXLTMl&7@9_QXf@J}#N{?8Wb|&lf)MT<>Jx?^Zzcugig;x+*g`^L%K3 z>J|K!|Beymd64HeEvOl*=5aurOzekyIJ_nCa5`DqeaEfg=^xf~gVCegnfwzk=X@Br zD8Bb{goD`I6PTuJ24Qvy?iuHRn6YZgAVW^fvcp0^YfJth<}fk%Hcc?sEc_(PEwNb{ zq*fKIwhHr2T}T6^QH5toOkzQtTyGNkgu$V(^_f89<=2eUrNBatNZ=i*XTeUUBHgno z_83}c{F`AP(~yz)!7gADBqw#8R*~6U*~5&TDAAwls`QX3Uh^}rM%@OL8n`{{QOejjUX!zhOq*P8 zl%!N%9U>mg9rO8cmf@JcHJ@^B6x7GT^uKPG3zHj8%-m6pUDZ8a`Li9%2=QO-4btBpywJ@6Ukf@LVmSH>h^F3 z7J%&GA7Oae8T@p85{lcn_j^xXg(G~x_$ zKmLczeb>Kfh&qvAJ3-_9hn5x$)m{;lWs+PxTNtYV4Gg*Zh2I#E<7%9!!fXx@_`8{X z3Vk$>-Yo*PE;AQOvM1~9&|pCcQl)(5i1n>Td%YhM51-J!WB<5$a0xEVhOL~iA%ww{ z`Jw+pIN8J#^_C4&g@IQbDo1VU?ITcPX><*dlB>L9C28_M4I#Cz_NdmBM2fh(WU}XS zNtdMk4J|(MFhfB4({3VJsV`NQEO{2dHbi2WMc2U2iQSj+%xLB6`pnClr!0qT_`Q}? zlNB%8-f_Ao-va6O{S3Axi-%N;XR<$~qqU{Ygx}#Hu0MN`GO^o%3sL66sNp+Qw9mN5 z)J}sP4MTiqdYU}X|zrv76{S3>_!c-X*=?V3ny zDAKV`w|QrdePzhNsR|YSHd(i-TOOUq&>23|j;rePLM1m%BKA=x)bjaY3Erw4 z6eV%pSnl$fS-RE64ksI5a-WFa za-eQ{d`uXfB!L7~VkJifabK}d=76chuu7zArew?iX~|pqGv6u&=K?mX$4xJzL}3j@ z3E^WGCqap@Kctpcci?(!*40JIN3{xb+_c}^zgb)B)*ZRPwZsh zR^-rad$GaRck2#sqRAJl{Hl)Woeaax1-O+J8HYWmQ`BF&@s`*x-D>M_D`{@}nD7>y zNlJ?`IBj}GjzPNH$SH;rS>q1?1-M=meM1jM^h}0TdyR~f%AnB zL=+$8Zl+qdYjM|{5%DJ3yd2-($Zh6y_J`GUny|3eRF|}ap9|eg047hpMZh=va>u;P zI7y$nc%vXpyz!BPTNnTVAkQQkOhIu%BEXOVXQvL0HO-Fqzkx5l-^z1pbK#iZ1<(Kf z0{e;hguh|F`=UUloc-XLuhlktFcEgrW}TCE3M$^O2)DH(V+vL(RaR(gnN^H!p69_z#Pu>Y z88ItqbTF{6J=wk;NlDNkP-VUfoy-m6chkG$qy%_ZBiBDp=?7$_7jfL(CyE$Z6nnu6|5 z3M3%zVCge4sF20&HlsCq95?=PY;4vahg+HnxcAIQK?bzDnidF zvCCc3hoP*h_w!;{zU{=gBk-ky|GFS+Iz!8a{^Z#%Lup*34cDz$D>scPnlslp zBg!o+N`8zvx7_bqXZf1JpiW$dOk&pESboyQL_CQ{wWIXeAKav-_2pQ;WDtz6E9(5= zW}h@pn)6>fQicGi-)+@R0Pu(lZ|pFCR++V|7Jjq(va)>(Y)k(KgJH#mP8^_@H3nQXqa3lM{&w_ zyYLc;W3_Up2i8_QYtLg7c|T6E{xyKTwn}djo(QwfR!gi9&=XIL*zVCUok!i(xY5!) z(b&?qYz9w7>D8-Ny3P8)5D>hf*s4};!Tm6CX{#H|+4{Da(LcufMp)!Zc6{$D8}0#m z+a8Y=4LRoTk-XEzsnX<`a^t;?G$_t7w$>@OdzIYCmGthmbd9#9x(iI)S-p)o8M{k; zmvP(`qqtg)kbt$D2Cz`*+~rqv!7I*Eb8Wm5eCxgvyIr+!39uC+@$E!Li|-7D4>y$h z=+#Q-b|gm>$(`KEP(55P&hs8OPwmuf^(PuziWAczc_F-{f*gq>f?Hwn=ZAtfA`U!E zYB$*p#Op{ni2;$~i(gRH6sYTu`cPV_V<@f`tS1Acc*Y=>NJgzO8<_J>3Zxkl`${0Jv@z@Ngx{- z9;}H0Ag*~oo%KrAueZ5R0)gHPdn4!h`Mo!fk3T{}z;hpCB(S>5J={r4lW`^Go1N(& z7efjyB|%LkDWP|wvCG@@>YVcmYsQ4XRxQV5jqfyOEMaVh&VdR%CosynB)0$XTw(2% zjZr*#Xkp-A>d7gH>*iMOw|YZfO;-|xy&SY1kqKr(Eh^ow(gFvbjeo$j_V!QW05mz$ z#-$P>LlYAI&|_wbv#? zBz^hl96u9}Y>ye(%xhcI84r>UEcbGYIMzHwXW&*MVgeN$Kqzc!+qMm5(ho`iRdZrmm_L@=Zo&Cu+PH5(a5NcJ7p;Q$o6xI2aiN-UoB|bP4IMS?bRh{R z4GTl2GDe^B>`n8^EfW-#!@03OP#3G_OW!YH#-@m+MxWYMoK2a_h^qpzzM-J~5-|9C#f_b?~r`^%bUx;8iP zCu70L)Iv$5q#yX>QbK=7mlNHx5Q+2}O_A#eR_bN0JkcbUMw>b`q^%36Ga@~TMQW)3 zTU5vk61IhV(Z_g(<@6^yT`z>6A39+4|9i$wLG1LyRRYbfw@?keykZ`MRDqn(se*yI z*&4W)^3Ce3BKK&f+r;7RQj&f1qxsaZo#v&O_t{llnv(g9v9C|9kDB-Qbh88hdG9*e zj2(V+NeQ*S0LT7T#QKiBIuHZe_`q??a4*@t6TtHOh4GlcIv7%NSseI=0{x1+)4v%8 zPaxKB&XEmqbr&;-fQ6Wb^9LQ9|0?(Sqe?K^NIKYC0Lw$wB^nLqOpdAYEqt6T)H zKw@0!RiO$zXH%{ZL$PoSN|CGAiq}Yu-v41si{x*YnUDz6GjZJum8do9EUXcVf5=ZB zXE?V#oA&ASv7;c6|IO?C@4R?Y*#=3RPWR(j zK#)!*_zP3uPi$+m1{KwBN-i!a5)#1W*%XqN#yvU3Oa=@k#ZFlmJR$hyRr!aonyle- z&gBpE_F+gK{m)392|m&!tDjOZEdhDpJSnu)7_+Syu7<(r<1NCpv`%3iSwyXi>5fi~ z5eXTD5+RUixP(!$%~Yj=HwXQaweqU4m~#Wa41zWILNJ~M^4 zVZ@J8kNhlw#GsQi*$R1*Vn-*=6l>atTAvY9=r>ct@AzOEJN$Eo9DuMijgVl(a_?2sRv&)q(Arys;@HDuV!6Q5G`)-=Cx2g_RhFlBfuy0^1DP4tX+v(;PtW z6YPyR%W>lli$yofvUH+1t7RCbMu59^wiVBf@FRPYb-LrF=BjNu^~H<}x24uIxi{U6O! zFg`Faup70BgoO0gKQ_j1U}RsEGW(?{yljOcDHNHvP&TM&iy&jj=xEGrxdx}{4~T`Y z^jBZ2GkVu(T(_hioIb%iq=OP+(78kWNR*1p)p>N*lhG8>Tcb6GzrnT81>pZf<#l|= zMc@JInV3^R?RE(A?*9sHah>RXl@(bprD}flod$1h?7mfP2q3RQ>5i^)&@4PTv**%# zMPP<*mK_8VcU@0pLb7Lz%am0Vh{&%!7=#JZ1S&LsUspwzP|esN4 z;SyVulXc|9fZdS#VQNjD;MV*Inbw*V$@h>>ASM|>kA-gW68MJn`#M7pjKm*xW5Z$A z`Ib)u7&I3V+!b#xlBq;KxX=-sQgcDy0AUH3)E*$u@At~#0mtUsADe4tXQ+2%tq+ML?xlriT#Wkrkc$=*T->+ z8}eOTysq~pt;6ZO^C;uLfB*ghZV$G{*ZIvN@rDk|%;AYU?c0`xD`rr6zw(!z832P=a~SsxQ;Nz{DJ zlV?6dAA(TMXUsq%{QzZnq?EFu0LgW(6I!1frxl~zSbXf}n$S^D{+9`^1FpSnJ(UMw z0=c+L1=jHzQw%2NCkL|RHO|&~pdy`Y5lX^74%YX-v%7)}kdBr@^wh^9qfjIq>v4U% z^0s%4AqfegCnqaZN>(0d!kyL0*YHdsrF9~h;I!cRHu$hoJV#bnaexfq$jC?uO>hKz)c3-F70r%F`H8c4 zmc7#6=+5A;D-7M6eBZb5bptP+HyaFQh;gKCtlF&=r_ zBw7G8in;kE%omw?17uMgg3UK7W0aGvgjK3-BgJshpd+bY&TMTN{#_FP&K1I1TErDK zAmm~Zb$0f+0ym-P-z14fzFxu~lL?UP6D1bW6WGw}miR%>(n?=QwqISLH|yMVN5y7x zh&;mbVw~(wc7~J10+gOMJ3g)mK?G-j7YUGxBDJ}m+0%|lj?eVKidNX10DQ)edWlkC(K0ga2&8IqK2C9)IYHL7Bw*_Osx^~52ym& zxNs@^#)vl5OW3^T!F>5Vm>zlxLP#}dhK^fquQ50JbvUtkzja5xt>db8SqY7|Dv1M? zdY=ZjE~bY`Ls88ik*3ixU?66{ql|k3xe~KRVmtTk*ej60S|Yp!DLV z*>46BwMB3`Um-EWY^Qz~Rn6;gRR+nVks!+xrvlJ;$K1NBPDPLOh}v+G8pg;nn4ctZ zvnxSjBluJ{O{F@pfu7lxa61s06MPvT}?l%nTx{R)-~ zslj8tdEa+%hJ>#8#*n&V&n@HBGwr}XGl#{g%19gRm|<(?WC1QH7xuZURf2>ra*6Di zyu6bGE$heajou8?)%jt2HaJGF1{S+@F5xB*ktleX_~DiYw4N(jgPIJ%>!He$dz*}% zfrY{gQpPCtS!z*7SX$zYhM39F5gIgMld%)oMVFj_&dtmSUe_i^T}m?lz5`fCKUpY) z_TY+3$otVzzke4Ztgb#AGv3J7BQy;X4_4RFC&wDcGb~|KqQP#nS^qdngz8X)A!M{^ z|J6y(#|C%Z;50fpD)o4=G1ul`fJ7pM2ML2DmOvsrS0qVGMO{k9zyRa#5ANvfZieU& zJ@q4He8o@u2@eG5+ZGRF|4My=C0_-`Eq&HN!JyH2Mf3HU4@mL4SFDb}o^`lu+jH5( z+P{tdrl9+Qp_P0Z8O;5yarE)lS=Q4LEP2l)af2Mv&&Pc*5!~%BzX#mZ4;T69IEVf!z^zW#m;O-&Bxnq)i~3PW{tt37uHoevsgVH4@|X&>@m`M)uo znI|REcYQCBkV>a`vISn( zEriF2qcl+aXukKGmh*a|>bSk#oW_4DFK%l|c`%Qgm9hY$wS{$Or_*Vaw)0oKrmdpX zb*mNCLqWp0$z|cmuQW@(U+CErf<@i8)XhVOz$q?m{O}ssnF!QtQt>!YsU?jl?eniD zXpa?Us|vJ~ZOqTMI)h9c4q8bjux9B=(V>Ccgga%4iy%!LrrjJA(@4_!;(TO1s`KN9 zTu1&wEGGc{g>b9rVEh~CyFmC$laK1X9f^F;6H=ILI{9Z`1l{T<3&TTiQ1&~(?;JZV z`Oe!;iGSTRO|2^k++DwJ2ihg=YqP?CP5_(Dh{^Tf>z?D$`Pg#3qtK>j5ACo=tkfY$ z#dA%&Ke-FnTteVI4brxZqRBl_X*j6mAyA3Vq_odi6Gag`x8f@f4i8fbGZPnsC==63 zP2^Q38U-yy&v&H%Xq{f0o}QjEDdI@|`>QLy{j)RQt?76cBJ6N!ZCzB-^nP=#$rf{| z<_W!$6{YIx!Tm3N|1K-U%Ae4>`05Gu3xtSt^$BC@GL%db&)0{Cp8WO{_Z>3(wsoFc z$10ZD)3_f3+T9Q!ZK;2mVl}Bzl-!KQ0^xl zhmGGES+{HG-`U(i7%=6p6x^fmfMD1$QNd8!r#8#c>UG%4!8Rj5J$vqqD~TMaQH9Bg z_7r?bA7x0&@ixkqa$H$yWVHC^la5a!5jSuNHgAaT{VP!eS-}xP7%Vg zm_uy2N|dNDnlQYQK+6bAp=AjVY(MZhu^P2?wEBY99X2-B(SRzpqa({7KYkRNjKm); z))0C>oW<#PzZ5ED*b`YQC`+4aAVGvkY#*E>T3CErUR`av;jWyFWeP;fAx%h&%zgs` z*6(Epkv|p>uXYzm>V@-b7J&@EK5ljUM6mM!no{aQE_EfEu(Sar6dp|`-Km)gNF#CZ z$b@(?9W@~Vv$7%|cUhPvn7iYZDw6L4MUpZc$-5iZ8zs_Z??T3?AM(-%gT0?`7O$8pGu?g z3IOt#`ef)UqqepRvu1!aE&0RNV9SH;RZ|4Ryf9?RG80ktgpy67AM)~`-K-}JKILE_ z;dM<%Fnu98^_Zi2ea`@BcS&C0hG0K{?%MmFZ@OQbY)Bw&7jnwjz9w=@T$kYkQVf=h z>YSj{pJm%;jr4pE`Y1fiS)m@ocSHLu4M!x$hyk>M%b7{9#d3F4h9-$h!)6Wm6OzY) zkmOUD86530CPdl&=HoOY(ON1zjEsVOf*nhqKFh%yICx zS+DNzr^q`GPEO?QQ#HfK+!E4Bos=4fYF2FQx|iBxkr0-&WKzYhpbTBua0h4lk?>VN z@K%K(Z)G0)v%O|^Mt%0KH=?!M>%Hjh?eZd$?f5I!*|EP0mZKjOx{h#R+2)KB0R5p4 z&#{^SnnnO=>tkN*yyXiZnJ$*_C-L3!tCyO^*${x9_T`H9h_SY?^nsi!t_7(PALx@o zUnu-a5SPz4}PR+qcFd`a}vF5s^AhY6EnW==Io_`6~WPD@e82Xt44M5|{S5vAU-; zEs(ZrlVzQRf(zf;THnZEn%Ph4A?XqqO#w*jkeB=6dhvI5-zzZp zA1gL~-mcP1%Gz@A2{LkpsO!1sM&dZv5`#0;XpS7*+*VV1n9=Pfr-_N~y@tC4hz4V;2oDc#R@NzWo%9)}`^AYv1ugt!fN@5{FGb9w`y!){v&mb!u%U8>>k zUVjXd{rI8ouO&`C&vcqB*}YCeIZQhBUK~+L<$Ig8VeKuCO8cb#sMH3`l0&G3s(#0C zCk}bxo!c09X}p0i5*UL^tpnVEO8UbrFb;(cgozKH(;!L+ZHraQ&CQ+UU;yv-3|SFv zUn25JV0}3YUtC`Fa?UrQUlLezz3x9>uo<51;G+7mAP=CO&R5-H4%P>*=Jfsow2aql?!b%-Nf&*u$1gVm;T$ z!3f-?aoPu}J_?J-5OchvA4aBcxGYkBB@q%~o=%SwcmuO+v6?$NJt-)J!mXjFOnv@8 zFrs(Em}0;#vN6)ROKAO(kDo79S692?ix*ZZyj23U4uLfmv@HZW=F)o3smefFm>Mht zl{k-6S=qi@O6yFiNg?wO3chRww6lZQ=1dUMl=8s(PTtjZs{g1i2LY^TZqQ}M;kNY! z);gfIf2-kCtvBJBV_MwqO-xt#BM$S+qAA~I;TN6Wg!t6Oam9)tA@}QH$-_3qJgH7_ zcu8H+!@fm@NE0z~25QN{#h0U)8A)9?T;{m1vpioV%d5@a(dM(w>9{*JE4g(fVRCQ; zYEZlxc#t)Qlt@d3fjZ7YDB>I`YqSk~^{)VY4MFU*znc9zo30=JK<;$a)+_$LU{cXh zPslA=D|sK40Qxw1r4zY9kw@)`AAeVf+|vsj7rq5G_^>!7HmS<{Um9cZVcC~;FSaMo zo)VgG3xrvFaXOj3BjxIHBX2S1gi<;PC*&c*Y{$(JvkM6l9II|dUbO~g)WAKMQ;b^8 zaNYRJRYFo-#%Yn!fTOx4QVc>#Nvgyx_7Ldx3h&j5ASYUSRcJ98O|2216W7Ve%Gg~d zW^w1y{nIWO0amQbR^aasgWfGv_?f7ZlENW+|A6o^Kf$>TM68N+#H0vLPBG;pEK5n$ zE@7SkMpeg4^5MR}-Z^_{z)4NmyG8aBvC+GTkL@lnP?{<>t?U zU&D{VAtnUZ8IbAe2^-oR%Jsw}Pma!zr_jp*0==X^r%!Wg?d2Ag*T8)sO39O3_`PiP zZ_|8xqY7tZ1!u;DVJWC@@ec$F&tkRh>Jkt21#EAkG7zH^sIr{C0C$ zAzBahciY%Lg4W9Nz}!md(A?NTa7f85jOb^d3MNL1DD~2caWT^Wjf;zJZ)uF0^VJeq z3W^d#72lZLC#)pU0I;egY9*UD;7c`S#|Fkd;|WwtEo(9`aHYoTMk#GG@QPP7QU3`M zW~UOyxP>t{d=A}QZr%1u_qrb(`RjPx6xH5pOjOH!=;|}2wO>aX5*)``JC3bkA5Za~bloZeKBT5q>j?!u6gR5q`N?{Bnv-C)kQ~5OGX3$E(`%__a}4EBIyx zx5W2VDE04`V$&LpCKD8EcNVdgX=>A{I|9Hv5)o6NG?d{GH?*2XS$`MSlesR8AF}tB zxO<9(N;n~_Aa$(M$2J-`1~zj<5ENC53uP>6PQm*n6@?#-0G4z%p?r{8YQM+cYJ@B& zBV+5)s7TdeXqf7O_6C4D+5ZQ1_D%uQ#V<;qy7PGFM9197e37Y$ZK!@tswit#>gfla zrAeJILjyfD-#(3kLm!Ra3)@mj&}%kV%GBmKgg&5|M!N0~oChghq=c5T-VfhAo7BJ7 zWH_Cqd}*(zf&IoaJv3#9=;Scsi{&eV3J9o5BGZ-C;O?IlH7>`+rw;$B{<45Md6*J^ z4}!MjYln-Az$rN%Rh!S#3I|^FqMcomW<5~^p(pUpo6}jIRLLa`@a{$gov*?+GV-$4 zjNHtY6l&Rae@9P9wlfxX7dTUM5u6JV^88cZ5 zhFMG$(*|R!TEiIphQu{1{cG{vV>9$ zd@P{7Qg`*@=Hce}FFEH#$ms6>Z?a^gcc2`JQnB&VbIz_Y(y?)~o2Y8)l-o2UIXOBz zdNUZ7fRtEDmy+-W<%cj}HlS)svm`Y2ts^BZ_B#v03lo7~T>mJjq;bR8}9D>uZ2;Z5hrH zW+yZI@JL30y6XAPJm>O;+B6TvrJw}I8I@^Pv7(hZ*gqT&&dth;s|i7{e;6_=79bS{ zP07g}1rE3lcw7xd(<@~XhHYC|h&l0nV~`L-3)%?v@@$PvtY8p1=^<^J=TrSvC=E+u zURzyq$Jv~gLQ_CewcPw2(`Q86U&=#dh8QF%ix<6LUo2jpVPR;fXkgvXQqPr4?f%0Y zOcoukX61@o{9sUI^Z=_6(Z;Bo?U!0k429%nRZ9t@)*pFD?;^-6MU!=^eKa^ue@~9@ zwN*VMQes$nKQQ(JgbpNUseSn~qEXspy#05nDi)VL|c7h+ebaGQ!5? zNMY|IC&&?>t^-D6J*c(^g4y*+?34`>rMB`&k27R`${W(u29wxXtcXAt6>o?pl!ssu zcKDN5th_p;tOr49!3>166?U>o&9%W7vdXws^0EuhmAi&IrJ_6Q>y62!A!;A`65$5Q z(+PROoKU?V8mSPtA*n(Rta-bo-uKXp+^x9F0(q zB_&bR?x1Aw2+Z>{$<5JIRI;r0#b`aa31&^8dKv?Tc*J& zD04M<#CktDQ0~!TY(9IBXO9b!Inr@#ukuOAOa{^*FKPT>2REma-Kp{VMh9G&4^FY= zB}LgEVMJg%z=2(IpAiFyS>)G$#n;;sT*Nv^2Rqc30yhjNJs)ssTXnJ<9mF7mP1KFN zl-V@>uz2N5D<;^~wAreY!o`Z&A6Dkp8aA`@_9v(c&<?_o1yXem9bUzJ4A^t_i%^brNnv6~&{@NVYKf;SflHdF-htSeNX%(VxU;x70oXGZ7 zR*Voho8Fn7B;!}jsbgCHvxh$^&^Yv^Fo-4>pUc=q6IO*kPgY2uaI26kNDZs_7NvH-)7g};F%w% zCBJ!woko-`Hm8TEwaWyprUWWIdVmwoCqxbKm=U|iaf6mpONzSS;!qt5j~Dsp4fw-O z6t)U?*V*Ua@Ax%LYl=nEY-V-ndcVh&r7(g%@5?Jbb}2PTy-2wuHf8R6mPTI=u^|m} zfb+S7j(j9KFGjWX7JGeKH#WuwXLo{k#Q3&Z#M4BMK&CXD;_nvnbuABEL-K$UOK?Xb zq>UOyc0Y}|a8?-8hapEFx5*dQj5I~YWGUN0eYs5^O1%=}6r+f>za=YFG8kR>Rsfu|AgCSHp1qHX-$YYqHr>qNCFcTEP zxZfocAKIimn%h%%M!*QWvk%K;-mgURe11?X0UMdWelopQg*3WUAjUoCQ%k@xNg+ zbH00gI?=46Knj)i3>2l_&u>+;g&M^TmGJV;rb=J9t_@+NsIT5)9T|iB4 z993*pGZsKJ)Eg)A-4 zY@uJBJOjc;=5J%jKupdG^RptE1l#N)t#L9!yDobZ6I5CY4^OXGNr53KHbwjj2$hepw^z}EZM{>Hmg`Wj@s)^Eqc`8#+8=f8;S3GBj zPpvp0cue@|rhpc#?BKM(PJaG@kwN1A5C2F6L}_DNBo4LYIex~FG@n0{Tmlt=65Kj4 z@}DXSl7c_V*`9DP(W4W=44%9@`!`m=<6AZBTgjF}6p^yDo<`ZAFJ4oIerbu-GS*V% zKEDOFNlz z7Tdw$Xgyx6+Bx|&0DYG*R;a8*GDa|jTK}OBfPI!xJlN27`0a!~c?Y#ZLUR*j)w2L5nflMJ++(TZ`nC zm);e>xT z5uXBm4|t{~D>h0kmX&qEja67~rO*|>J_S$e3dE=CXjT0`_~d7ZWbRSd=HwO`lxV+k za{D)7+#3XhukKBNZV!OG%mt!%u={KOS}R-1-l~vS~9aP0SZ6rjPAK z@Vk5l%P<>bcPz&-OxJU=ZK)*`+jqlBOUyPUywdk&rb)Z){UaT8JUnL>a&jxkIWdak zCXsTl|M<`kvw!FROyo_a_eluQo}4`$XA^>YMCxf{m|9OK-5C`DE*Q9ozu{Pq3;PRb zVLI{}(quy~XlBf$MIo%we8U)vWEzXx2;%#$l11+XR(6DMo^ZSYaXr@##Hp>`J{c`A zy=C*_dU&w(g$OHv+5_n2AA5tV{18EH9?CyY=nVzi(Z&a3iUb;=#!Koj4(~+9RcfUc zP)}7qZ_VjgNkjkbumZM4@oxqYTmXFCnr1X(hj)}C9ETtCN> zBGT;N-(cb$&Z_jM!&goWQ^AKx>xggo&sU*K7V=pt}=ybaX2ggjS~f_Pa8YFR3Ydlr2}YTNW2Dlho z+c7*g9 zzGNYipjSefy?^0R?diObZEe%iAGOkSd~f8@y`NB z@F{tW+n?OkxSW`f_MNiegr|S2tPc;+saJG35*=716yDv5XymO1hdXFu)|gg(dh=`d`o^A^kQToj!RkG%CiNCxT>Yvj z(Y6JY??WVwIK_iVt<1wAQ;3cU)hV^r0%^*5Sf--hk@6t*2_>AJ$`MaNo>~a$*fNXU3@k(r9yC5&c~*$ z=Ons?s^Z`*UR~cyy1FVlX_(Ic0{__T7umFTmrAzqi~qk}Lo}x?Cn2+fat;FsmU^#^ zkAFsKHC2_y(XbO}GE|E^*zVF-cAy;c%w>mKauo4Ig-ZKoQ!m1sGfKLpUVay&Pe?*uBth^!?CjMf0K& zy<&j6iC=UgFXYy}o~Tu{XAGvgi3Lmdm2BRg{QxzP|LSTU{|Pml;JD zuPPt~jmKMWuFWTes^qOXJ+G8|`M=z$7!j**EmhFtW#(Kw6>}O}aAx0$HSXPJxp)et zSHSYBviYXecDWS9dcbC%&?-70{f4-YqWz^O-fux$Z}HsfHNEY)3&8N%z0=h2YlGo# z)<}EnDvj8ZISwlQ%|0zVHGN!Bwwe^8Q|x`y?*GcAaiApie!tyRD zjV!F=Klu+S5gZb;BA%rX?rzS=W@i!L+=fF7d!WE+InW94%Nxn`WQ5(D`3R0E_4gN%x}PrY z4FWTWiF%wSS@`re7kDR_aBwjhY2~T2clXYP*Yt`qYuGq-|D7GVZVpZnxAO2*E6!(5 z4Fj)&t`AA{vWv{<293AhpI3ShVQ1l0BBETa=Zd;IQHkI|G;I8k&?l)MWj`n>g)xa6 z1t=JQLUM3&CgtbHH#c(uY%Cc&J9MQPSZJS}^WRtw?#)Zbht_%iZ zummgMB9U#39U6XTS}OjIrU*8^6t*_zvc^zgit7IBllI{6bDkwhqc^`FaQWWV;jwtz zHG{;aC}?*1E_kUkF*q3V-ivs4c4lZ~)L)d7pHH&y%wM-c1ID`m10Mk0v+$59s{VOi zCx`tqKOew><-6vgb$i=&>J*^KZP4`Zw)e6dAxUr0e253eJi%G#eY405P zY5$$e_*EmYjy1dSz4~hmj^$DrvOud%#5A!$q5A8?oByxHnz`unlqtzzbPTLevH(%f zrQ6`2DU?1UHd(Yub;=vBa($N*gT|q=L z;WBJI9RB0+S;X1dI_j};Q{{XD9ZF74HEU^O4+R3t3q|ptjX;vU?I_m4M&TR}EpD5x zCeH(#p-EhEM-Zr7K~*z!-Bzttc~;F_a@IGgz<>+eMOMj-vf#vib^d#*o;rm<`Y{Bi zU~AUhvL7YSzm@vEjfF|PsdYPcs!?LjU$BNsQYvTqXhBUAGJ7wFluizIco%hqAtQtX z*T#S8e%Rp$%}@Q<@ocez%C|!pGI@BlaN6<2Cyh$oKb8~hf?FvUm7EJ}q5IW{U)oC~ zaa}?RdU>d#S2b&1f$-t4NBu(HCI-_$7lQH?}>U`BVq zFqHF0C>0wR^;D2w9U4Jjlf$cmEhn z;6@DGo`PIIY{I5%q_4APRDGSH5l~rWJ~lf>i~hm*98#Ky`g}&DlRb`d{2ow;{K8*W)!~Pw8t`y$;sgrD06V?7Dn{7#rZxL$jcXo7)&$vMKI3ntTTLv^I zRL#NYjtrPa1R2qcWf2YB&DPK&E(QJfNedffo{S=Mb|?_{vJG7F=}BKQ(d2ae^R)5< zZf>4!ui?pz>21-YlUs!(@yS#9;Mk(}G*{ShQE8=FR=#3+avwoym~{-cU9(m4i;t0g z62$Msjc*hY;pr?~KLnx+(opD-_187#!oscTEqkSP_NyuCY5qpwV9S~%Tc0*yHoT$c z*)$)YwDk}zE|y(gxk~>u_s`_2=G^@k`+Ka;e0O-0^=fw>1}k?fGWyauDZm)}&jX8u z&W)n!S#IF^#-6ITD@@fiP)`&_P50{0PbeoUK7IT=D%1wSzvR&%et{ux@E$oHYXC}n zjV<>~$NjdeWW+CjvsFmdhE~eYPd72OQ(5p;x}$*{;R$FYK>q243y1wnW^-O%Zu7mXTMMB#ujTI2GH;I) zB`M$X%B?x_W-8LCVM>Ya(>rer=6UPX`j4?8lL3`kx@;|ql%B-VV}b3f;6xIjnWr^(6J2s_zLA8Z7u-yV^$ErHr zTkg#^W~nZ#z|2d;W))C0dyrOZK#A&LxFrT&=s%^LBBh^;N9zrk-tLz{{(djUvw=Z) zLXK#?=UZ*0ogU}m54HhFRs#=hFvzM)-6*+4MBp|}Xke~x?$1HQxRhMnEzNOpQ!T`K>&@TwPUW-aFKmF{I`!K-=4N9EO z$@rRvQ+%VuU$LaEU0GbNt!jmRGtQ9oO*JZboB>NSwWyv7QTkcsy6g#>VM1;BQ`lt2 z3HNK(($&9bXsmZ{q9NYLqR<*_c~%GMV^rN|yRk2f$&pH& z9kTla&y-eq==4Xzwe<{yDXGzEHmA+i%f7(6U@Q7zE3@odvLzGI8e)hbk2nAk=;?m*8gk3xpF} zhT_vjB8B1i&}*wSIt+pQphKYcK!nk%BDZoY$6ZAYSeDCKL$WHx)8bmRJ5oxNDw|U5 znA8UWTft9YM1e*=`Lmy(b2zwBui%LejW0V#RwrpDw6^d#PJobDBWgp+Wg41Sp1i;> zUHZWq;7f4TNk{(3eKOEW2dN^X%Cj2P8U=Y>Zj~mPWq)33plnTraheVj6PsP1{gSS7 z$CuDBiIT0vx5RM&rJDn3{!*9e$m~9jh}Ag)Xs{wVu@g?WSDufw>pXd0j`V*Xm}UNL zYLBi6<3sz<7Vlqir4~HlIRN8otgWChv+`;HV?W>%+S!4M^02>+&f6av+lm*Ib&G`^ z_DocthW*uX^ns=q&cWH`C%CSeI7$_QK15h=5yK}*mGfmG$GfbCkYGfk0cy$qKN76( zU&J;&2$P0jx??d5$lssje-P^ioeiG3p-#(ge(;YLJ!T3)c0{El_6j3-T_+(lygtLv zjc$mb;Oh=tGq_V-)FF<{7$gjqE+p}N9@7!&^C8)oyqM@%q9R?)LNRye?HJi0U`i5f zF9(jmh#&`Ba3vLqgXpW)e$+X@adIN!;b&bDC|9MBdLy|pP?5=Ek}r%UGw7+;z)Sa* zjGP|h*F(2sLO|ve+ALjEDmG=!2PzStc*;UOJqvP#y}Z5*aaUaWEldnHMKZq_*_aH{ z6qXS|CH_>BBdrNXB9I>iAsT|9?e0YHK3_V$**Mw5;##5oUokWKt6F3GgR()ke z`McU`7vp}uS|k~PV!72L+`Cn#M0nv`GV=WVTm=3~s-mI-$oBX5p?rLN@--Rw*5T?w z*7W^2MOG4a#PXkCr1}yZ`fbp!_L(Pn~$X!SW z|D>UzA!=4T7g>FP(jPmPLrZ^%d$~WQ?Asz`&S?`{TeO?4Rnm2}Tp}S}^AIaXA^s^X zR^v9INz@1Z0$W(*0g19mbWY5t#mUX1diJ@x`U$qALB2}rUw6an^mJR!rxCq>n}UTWU__b{N68KQ74AC55Mj?S}1Yl`(ww)-WM&%8;BBFox)POy@Q$B62w+BOD47WQE_<0i!bKG z?O%{abV;Tp`8l(5Ob<~U{?WvGPYvbuh%Y|7{+inBA38pXE2huTJF2g(6CTZ>A=$dy z$guxSgFJ!0w-Esv`+&|rWpGEw>zEPRkkLQ5DmSOX*AJaKL7DP0BZThB3pY9-Qg*DA zS#M~|L1w4zG%>&)`KCvE>Z{{F&Qv0Uft}TycU$Hr9{~ibcQIr_6lUpvJ7#hgZEYC1 zJM-bs%Z+RZh{LXf71JM<=X(eijF?*W+^Mxvlj>qE6`OgjI4Tndd3wj`c_!Rhe0nB_ zzHtP&nsD{1)^s&nuFL$I->Szr<9}1MZlWd4No3TZj=AmK-lSI2Y}fc zKQy%}A_#xSS5!hWv@=8aW)Tq+)Z>pR*m^u0H+BGdd2#}Z0KTfFk|=|E*uQUm!{WW| z0`1*AbG*!d7ybm{@Ta8)D$%IUOD0BIC07-pUA{8tqgRvlvSY0pqv2cp%`tSF%o(pQSr#artx>N95Sk7{ayf*ZSpQV$QD zzwVnAaXjKDy1;(T;#E!ZCpMd5Exx-@#d^;S?V7kA?W~7Cw&;;Kxt>XMHs#lE0>9!W z1mi?uF@=2A+rP+}0@uB`$Qs?k4;dhyqm#oM5!bzFmAlYW*b;)V%8{XT+oKbTB#tTQ zi5}>{Hd_94aFShiyEulTh68yn-fy!II$wb#p^Ew=t1!!HEHR1fBt{H&M1pv# zPG#yP;0X``zna6P@eu2Vq(e3efjPhSGH0oUkuv5x<}(^b69e&gvqo>=e$yc3?j z6iSnbn3&(Op|NqdFHQ^z93O%c!qP|ArB00mf+t`_ltobg7YP)jo^^%zOAJMNbc1UcsliHt_~)p*jRp~bejqP%Zi`$ z{^jcDb}Za41}D=BBMBXq_|;6ze^<_}nJc+Q#SD7EeWqaSS!(SSWj@DEbbzzK0g0#g zbi_62U!*I!rsEHIT*t46$yN3(*~+|0jsBdaAsBj`WqW^rr^?4&+2RD-WE{OnkY&+G?=}YK=-A zh<@+r=)cMBpTX?~GTR+m{-6rq`MQhOwf@PjPxMJtx%Hdkbr)ylCp4-{W(r)b5XqbYgkgc7sx}fcZ5Pq)jK<30Hc?4qYxH zyBb98naoFM@lB;~Seufawi#2VwI;#+o>_Hk5sb#U^&^?#WbK+|TEO;gX=$%Ad)1kz z&hV6Tb1F^GCfGWb8N%?drUZ}l6puW7nOm?P_=+4+eM3tw%9?+tbL4VOxZ(|LA5C)o zGXf@e?%ZFqQy3HB_FsHv+{g$$TMbGPHHyR{SGBb$|6OYVA`tH(Q&|MhTvvn#=POqg z-|}ASTbd*CC&gC4<+Oh%3oc^?DycR}g(x|~*Ux=PLUz{?m`xo`B{unCo0xi~=lh)p zpU05a2GNh0FYBl%z5`sSI(FO24#I=ej}L#$@F#6psUqgE8hV7C8ZvxFsCC<%nEcF7 z>If}eSd1)|-_2wxmJI7I8jOMO1x*cD{U`!Q2Zw|k59L@|Vf<$Kq) zLvkB!U|z6*T66ISq-lOYEkL&_U zM*Q5F|ESc+5Oge}uu7lw56SV@M_Q3{JWPG%TYB)Fyh|GBZ*@Vq!Jwt^fOSJ5PKdSJ zyYg1R%6EwE`+IM4&F7Bf|7Ogk%!(-aXR=3&vkF?|BdjcWrlN{pKmlRg)K7c ze!sFg^Qp-%U$WuF{kE*L)(3E?O7U*(Ip?U#JlMeHRo~5M7GFp#&IV!J+S*E#2!9n? zh#!=a&aCT9n*+Am>3%+bnKBVa>RlLW_#wkeLV7w*IN|6xt>%wR<>BrVN6M6Q}oRglm}pFxH!3Mig80U?EC%*C*T13 zqq-ipb#t=<94)KPW+ddfxZ%hH6=z27R>f34v!jx(p=}g?BBHoI_+*819KYqDTDVp0 zIS>PWtUnevM}Nx=Tnr38|CyWPOdU9HblApwhH&6Oeam)iXyNIjdFyV~P_xdYwm785 zbgyl**h|PM!6e+XH8Qq_|1K=4PgSr4rJ2rw&dAAOnmym80Hx4ClY8I1ZC4v3?mzwX z!-I?`?l^Ei)1QyugRhpEFet)CX7_rPP3YB|OaFKH4t8mjJwbSEJ80jQG_IPsBq@mx zp;Az0_n_6tv(=3+pGIl;?|aPk%~3hfr9_~;WiK zprcoFMPX)@)*d2E)krI;P%GL+c=$CgRLB8YAt(7&8{xG8w!-rsa&uiYs!JEv>u*yo zBRpMk^Q=OS>i;9^D+1bJyJnH#F2y})ad(G6ace2=9^9e06^G*PF2&uQ;vQT}aVbz7 zZr<--+#M?xgv@hh&YYQV&OlW5A)5P1!Y&op!)ptDod^PIJ3>A7q0xNn`_XcNE^NoR zpAx&ryz=7z1pSrMqc2xv%qC(a(>a^S!<%fr^W9bN*bgu3KYywd#bM>$rH}79|I$Wb6`ozfnX>L~P z7wud=Zx8_w3Z(welKH8mvY?)xb>sQWf=mW2I2)IFR03M?Kxg4fLQIMVo*nC?&IItZ zf0!>mep#+r=QD9J|MBg}OcKfiBZRhygWmf4mC#5R?*)Gw|9OEdLg0La!e?4C;4#T$Nn@vY*)uN_;BR zrZu%J#AGa<9LwdqBcfJX)gEI+FXn8L-+j>OTCoau)-VsUpK*2M(x`5ZOwAisrp!Z( zm;1fP*2D=jo)4*#Y-@48u8SsxG@ltPBsRN}a3z(}xXPi=zx(ESxDv(=g3csRL$%Ff?0jjUy%-lbia{~rL2E9^4`mj{Zy>u zN0%5#B)BkU0;OoAEmWA6(Z?NKL_$HFK4bc1)#^KH34uwGNUMK|K*%8e1gm30n9$RyB zacH&q4*d`>9bQsO!F$Er(lW`0p#wzV_J0W01$+&?6^Angj3OuFXi*2!3#>EdByT7{ z;Yh=UeMyPEWEAgv!TX0y#)qdTmwUYSLjbm%as0f>=d6#|-|>vef+%4}P+)3XZZ%_j zcZ_|v&E7Vd3Ipiwnp^I*7BI?BM2aqDtOX=ye;AkA+A{R31Y0HVDKg~(v{4Fq!H|S9 zxFqh_mJjya!8QPOI|nNlZq&lO&#iuqrBjs#ws#`kUMFSTdNS)@bq2HTHO-`fM~&z5 zyh!gmU+~^9y6}Zg{)SU35N4gc88(8b-SY^fM4@ydn+5%I#Sw8BCy;8o<%zxi@bi03nwn(!0Y$k9a9mm~>Qv}iSf;zryPBi& zOT4>(1#N6%9NE7^%PS90Y2%{stADqlRng4Cayk+thlQCRXJ+hB8n@@(6QidBm*F%x z!EVLK9z27_;@V0lI}x%W!c=@6;+WGE;mmolBeCp7PFAn9A`k&sResr>--mNv0L zPf?2G zXElV6!*qQ-@RN4Pa;V!@DVp$E>L)3t@-t4F77)I=C?98ys?0Zg8Vx?{LK0s@@TQ5q z&0tHfFUX9tcLJ)nZVoM`eY%vUMEgH_i8a?_&!9{%N*@i=OK;}q2UqL0T!Y1}$;`); z@y%n0ik+bF9EojFeK(Hoa-$ShfLx6AZrpc| z-0v3$vDZ1I#!9C`L)xf?N|d+KXhFIRuMUu^!7FVXd5FaBt#0SYpY=iOwPpSwGLjSQ`q|LO{< ztnNH}V=q_ej{Bu8Uik9(Az8HN`(Go~{JmwvdVp11d8Dm?b8iKQ8jRAM-Wg?RZ*J`wjD0<79jJ;}UEcZGYRmNJa(4 z&)Qqt z+s-V1t}-z)LXtnd6~v=J$C69j!3fM7V_i=0*lcobPG@l_4~j~~pW_sJD>J<(tO~b} zcdJ{eQo4-}DdhxLKo}Ai0i0xNB59a#7$U)REuJM$0Jy5nvjrB!O*$L@X{; zn9^n~@RrIG^Q$CfOjwAdP^AioArr+CrIZv27CHznS^+{1&(0>vwQeZ@gk;?euw6KA zz(87ot+A4l6SpcRIMvF^V~wgB;(=aiIDl_n=)J*$AHBe=mVtjTP#MPdKnAE*q0124 zqkV#@$R_)gi{kb}FR_K$9%+s3KngG0Iv9G(Ixc&E>?rlCZpXaXPXZFx6yVk9H#|I^ zASpp((p~X+48cJg!qNHuXJ?U zYYH`@c08a#4@$2?6~1y;E!q z!}ZlU2~2TPGq>8y;KUkuPFD$rYSL{=Il|b1M`+LmuLq+4Di1jppK4ztYoh+le&N+e z2Of?6aB5Zu4h=r6p(^E&D;hTRnZ40n*#SV8N@h&5C?)mpD~;mpC*1aJ`++P<&-}9s z^<>e`n1@Wd_S z8^{hx*OR#6E)7L5BE#;JNl_67R*M)~Q(93;CytPhUV$D^@7CNde(R2PZgUVnXA>RA zvx=3rdD(rq< z*(!Tw%#~sV=nw(9EjA}!4lk+@BN5Cj`s{~vYpY9HV31|3@lKG=Ur3%Bck%uAZce=^ zn2-gct%WR!rrWc#N$^Iyg%2Us4ov45H>vTaz?bjk*m->OqYSz+z zNfYP8kdMAt;ke4_QszXSvKN z%tID}1jhtL;-y=<7A6wCJ$N;yf6D#)UBmb!h(hNXpMP-O%IJL!R4{rAo!1sGx_#tL z7U_;DjM%1rZ@n4obVc=Exd*;SoOgkw*V^yoMIQw^nzKAw~vnZK`?fbH)y(RGQmTE zZzGmBE~u#}56jQCwr1*tuYlu|RdhqZ#v{Q=u&eRDN!=I*wf6M9Kq?5n}Yv53E-aolQTv()~F3fx%C)4TDXuN^)3qI0pdj8?|4pC2GajYJkh0ZjL@+75M@=>>Ono zdzPk7ww5877tk~247%WUDM-AjDBX|T(XnR=4Mv_vW-8NaRdkX{)QmF55XFKe^-&4t zyL~yRrJ<5Bmggl;$;T0_12B+9l6f6W7Tzn-%*xQn%M~tueNv)@Q$M(%L75hW(+WmD ze65n1VQ3o*y_YGxm&Z;lK4Ag&$#3(+ay=;x{K4x9fK8p_qe|RQ=m9>}9{Fl+(gOx; zT??-}Y`}Wh5_l4f_CN)+(%w03wq!|0YETOp2aM`lIl+^0`>Gk`KEuHo5M zzGi^PgQJy~x=T;KEG#UAF+Gc+>~U`L^YcbqjrOy6D9t)^F*8!t;UzsHiN!#z61@fw z&q#RW>2^h?R2hq~0$v=m4Fl&u|D7HM6bM8A^MEv61^N?-<%YBt@w4a{OYP9Eb0Pwfkt zT~_yl*+el{mR0&TA&eqhL~#sRBQB!b_)*$f5l(HX9TwP7Jlk1nQTL({$DC=6|C4Yo zJI^DsDNLz~=@+%autF8RjHc~L{XA`RAl4pSxWccN>W*dcsH$$585h;SqLpgJ45R0b zsQIx{!Kk3{NN}ro8?^iCI`(QKjs!kV^Q3;a#r+kaAn`k1Pu;@?UV*K;1`+%?N>F$; zWQtE=6!iif%ZFjs!+=yS8$8jf)qW_MgAqR`5lfVDqt%k!7TQ36L zI#%aZ*VJbQd&muAXpA6sc4-uz+Ck;2zFCGG5B}@%nAanvJ)QafDQ>VWF6U3EiR`01 z)24Rx3Is2*n5=G&RgzD)2%5;CnRE0Xg#AxTF5eetUu!)#AL7Y5E>M;3rLj}&bRj1u zWu*H{5~v*Qd3TT_YLj0)a0mX&tnU01`VBPmkZR#wl7lB?Zo2;&Z9)#uVIwccLMBdB zRTeL^(ZwmR&qMGj8rXK^KM>3b5n{k6wM6g#gZFGQUG6}%(#wk2axJ+I!n8iHM%Ri2#3UdnbK zcpZccY1t)~cR!HTS&*g2#=JHrOecFdQ5aGh1rb7J{Iyon#G66B1B318uFkT=`yHCU zl>YI-a%l+x?|KJY&xot7s=(I~=VE=~?~9k7RCgObT_Vi{s_}k7RuQSYOKUHUm*t51b>28uIf)pz<#0anqE2 z(bx=+0Ta^Ub{y_;F4VWsNb$29l%SlBKW7edYN+T~v^8w6X62ROb?=*>@0eWgG?7$O zyV5CzrF=?f%ggrUYZE(Q?`9|;l(uf#hqIK^u(DcBRl~&u0 zu?WJbGMekfuKZ<7WRYQ`l2urD`jX7d!uzt%%hk&C#gwQ9bO^@9C&@HBQcU>(Z{!Q? zMd}1;HD#xcyUT4#s2J7P7X<%K_0+xN5B#Hdxz+vnj*R)y2NO6ORe`W+-s(y$; zVamLHLy!R3v;bO>ljp2}bAL)NLwXo~><|@Ss@^@5^H^geVo}6UONSdD%@z>xfr(bG zb_d%*F+~0Ep!l*s1(%t*+8?}dtBdaCw#ofeZ*{D*@M4Nz1IgSDnyNhBne3jrnxD%? z#FsIuS7-BE)`9@vQRp@I;nprIYO{>YwinJ?@-iYT3OcK@O!5N)P1Gdvvp>B^VwwIY z#1ZlFdB7@NYiXtlg`*}YeaKwmyRTZ+xrIJA)eu4G$uB(Xi{BhuF^UimnqL;~r`S4UQE6(x|akTHVv6;CX zSvEh}b`APyO|u!)a&KLWR9|#u{_4~P;lTdMkFmqn67#StA4wTPxL$P4VpuS`&amsh zH`bmNbak?x1N3gb+W?>-s^KYHLES~&> z4?9gBu=4sFA-f@!aK@CQR1{27-tGme1^v?0M<@bWh4 z*ggEeq~@WytRHz7`o_^&SDz}hnT=vjHW3%(JVqN(Lh3C+M0}IcQX2!;-}A&V*Z;^E zPfV&qINSkZ#G8cszMg%3UzBI(M)88C`J6a;4=~QPRvf<>3~a&o^Rl+be8NQexnDL# zoi#8_e~7EFnx39s!aZf70nhi}a^c;3uDl?Rb3wn<&5FU3h&Ua}`$}tb7W*}s3QS=8 zc`JP-;7MWmI-b-qXTJ0R)#-dl5!Q%Na-ZD&D#X>`bi+J zCZ;cgoyOV29lu9MRHcG3`%MIn;Y(b9zv@7p-v!4vUUwLRc-#1NLw};RLbf%Z^?}iT zB6lT=x)i%UEd^|4*rlV?>Pex+-^no8zCYK%`AcRYk?mgr4DA5exWl6p?FdmLO>p)i zAw#O{&PlkAS3(!u%>B3ECO@>q9!FU1wIEq}(FSxT1~KWwRo=0ZWk}k7!u^8E!RAK9 zi{5kl-`YzP_&qjrgVmrW#cTOT4{nW_YT31G)$6A#4H5A=qM!e!q(`6}bCVmv+qaA+ zU|Z{;{<(deb8JfxB}15=Di&j{Vx561jEZzgZ=I9)C!XmQt^Y^=*sLg{Wz`{7BhcQ^ z9u9M$T6WZF4Tn5%w&p&D&VDG%*>b1QrKY5;WGFpA??}DlMx#cCFw%0e2#z zr=peGGr}$EMI-PT5TAznGigdnsCQ?i&_gN-bWz5U@J&N*=vD>ngmxGQ1F*|(1je<7en7Q-7!!L?0*jq~@MfJ91c z0xm=9ngBcIDt%_O2}+j9$w&Xo(**%BMk=R|P)E@>uS)0|?UaMN(aGe*91IqknVo&0 zN%>G9SYTVTnR(NlNoe@F1o{r2+|GyT@mmo#IgkXi*+U+CbdWQjo(m1hJt1Fp24*EF zbr+X@7@grbM;;X>&bv<)h!Ddh|EOOn^O-I^6EOoO4GhX4)of03vdrRWb|UR8aBkMy zKS_`o@!*SpB|p^5uTl&<0Iz-YXbp$r z2hI4b0ulr;;*+fQ9=BG#{N0FibE1bQC~*_K&9G1dM57AJwhL(Q=(o(brDeC^wLXZz z{iT2tyjM?o%_@9bo1j#8`vdsUqIsu%eCMRfWF_0jodoaHqA70;}3p25(H{DJOs zh*q|pxgm$;DKay;vOvbzu8GEO5o(w8+{ zBD;_CUfvk?Efk6B?eHFAY4X2kX^SFC(Mf1*%S)Xa)HTsqSwDK_=Q&y%H?1tsa}D&5 zbTB2YMOH(%ru*UyEG*#Ij6<#xQj*MiJW|2rCcDH`7Z`l!w$cK(>Tw=?W5xJ!nMznf zcpMTvn?eIoS9IImpm9IAdaf>BTuZmnAlVS-!y7047Z(kx_P}Orn>>Uc>RU6v2jDZr%k@t?k8R?FRiERGLHG!c^#&6= zL`j&0O%r|yATWK>y#6-Ivk{vW$4pwk}x3kmp^5r*2>-d*X zLV93ox7H-6hrF_@9j_%UwUjMiVOXM-o5UEy)aM(3C1XIL>+4NnC8CT`+IN!)t&Zi zd_+W5OPGRff92RZf2+JN(fy-XZb#39TaGc-U87f`MyO<+Pqm0p#G_Q;%2Xot15ZId zfcBn9uw$%U7Dgq|2`-ri8ASD60w0z!SO(6TCPBtH5(clI-o-Q#7@e)-h}Yi!R(*7R z0Qao@oy>wa$M@Fovn*y)rbdmUT;a^8yiUtZRzGn7=4ZR2IZuUYfr9bS1XE^#$D>Y$ zK>Ee@qH~!(t)nXiD&_L$(lui#7`sXg66-wd>>soRshJ6XD^BXFk8P`tyNX}a<|R(s z+Fe^Sd-Jx9}gPl!gb6Ii2jv4A@RgZb;q!C=T7xos8Yi*e{cNW%k`8aDnMRl zw*+ut1nr?3o+@u6ivEjc1TC7f8WUG>vPVIUXO+M?evmpKH=151KfQjC7n$~Nhsi1n zHPyZ3JDP7}BY~v%t*T+VR_d^pYN^%3Nx5J%g=-b-m!D&_SbY~lR3$U^k=%62_o&^K23;5}QFhBsrAt`*M!8xKMx zX=3q1<0WQ^BEA5=nA4!&(z?dqo>07Vr14WjYp!$mrO8{J6DKbaXHdTUd;X;$LureY4W z%aAqK)9=kxbMrO+ms;W~>g;i^%8GE(<;>17$^{xihetI3Sh z@X|75uYV@d&+9`27OO>O{07i`)G+u(Gmq->OyeL|FDlznZ1mbe zu4Nb5Q7ce0kL6#xTy9q|lk*Lv5hktt z6>3E&w*SoTh0q6@=7VzvKxi|6AtZd^Wd!b6SX)n$V)NMG4j6z9IyIDwbCHpe_wFD^ zmpq>|y18_qmW`V0ppWMJ=MXyG7vAx4ORGN;7wvG4m*IN4&9)1X-KC^SZxLdKP{Hjz z{AjMGQ+y$cEl0=*#Rm6VNso3nbKE~nZKYV{+N0BxO_N`=a-<&;2=wg-1Z4uvFX6$J zRKI6D`WDNFsTsQB)RObE)!+h)NX(@;{at!+UZ}B)b(4*ndx+Wx#_Z|)_zQZ{Z51ka zplx}2_Q%Om3MIB{AA>j~d4nMDpKo7oJ1Q@a{c5@UyT2^BgYrH*<={vZU4~L+s+FlU zYcdO>Fim~7CXzhPsl5AxT#AEUvzl{fuzqX5{$>zZ(_%?>;8NuG-WNVs-p7*F>+6tHuY{KO{Jq5ixVPlT+?PZ?+F-&RHJDHiNIW_4XL zA6mTg)o?>8R9(9>1C^~CWM@7xmAO&3THFv2fe1;T?xk;b=$$-0f-@rP|8C^VGt=69 z$3Ik>Wnq*^U-=k6Cy-=bS7m8uFLnkNWk4uNGAF{bePdzt=C=)!u_O zoVKU#<;?uIcQbeo?Nr_4La|HmhB!)vMea>K*e+UKYPxwJY~bQ1Hq+AH=}N~2ej{^k z95I{DXCuPiKo@!)W_uaRZIFJ6L!eUNnuTq;5X!k@se4nKuvo5w}B4; zv)V(q93o%%GvTY;u6dDtc|jo9N64qn{05d3?FLW9qot_pq;18F>v?uG`ajwKeb>p^ z#ltMhJi5vtJe;1tSR)751g220B9+bD1>Rp#-0nN=uON+#ry}sS5^I)nbBPnzTts{l zLdR1lRiP&QB=HtWmDv-}L;3(-7e?nT4O=#pjNhcZr zl_E%EoEUyo59C#F|DB*#D(_ne8;m~Lo)HT+;AP{)DFzdY5~ zI5Z4hHRB>1?oX<*KboQ5=B zxxCAHwL8*lc&JLR)iTMi6A!}bf#v}R46*yhH5?}BfA>FxxGsMwwKq#>^kZ@Hl%cWv zLtD(CIyynl`Ay>8Mwuv%g(x&O$;b5Z>M(tEiZld12V%t+QItrLMP=QuR0u1oEXyjg zG;I^?DkDFxjsU*>8VttG{Q-OnDT<*NbNi4;FGN9MNY_{OaqIClJ> zuMDH1yM`_6q6)^mR}~`VY4P(*X?-G z+ZwtKD1hD*VOW^;scD)e6{HdnpyiN}vnN$erJh(qxtORZrUu~adk_Ac=W9)ANCjWT zvYT(#X)KurU<3IdG6t-CvWEipcVlcxYL`A7DjGFf9s?>uGD%tmE86^G)Fb(WMH-xH zAkH`3ll+Qh319?aBvq~&mU4L{2<9{|#kLV~e%*HHb@jo&MWA^%@G&Jut3X4a)VGtK~&PV({>{lOd;>>$c;MArb<-`rOG# zm{CI1ZOeOd|B_K_SQ^a|6^ut8*x7!Zkv0e9-%~B`;eKjb6$s7nze$7^IPg$7#O(#LTG#=&_6HI^ z5JsKVn2c=@L@hq3VJ-tiRZ&OxH}S5l-?cDTHB_dhe?5MdZ|_1l7N@6qK6E(P6blR% z9#wa{XHoDMjo`=Xkv-njWPEe>)3TVd0kU`M;QN zL}vwdW)(R*O5^*-#+EOiL$2F!NJFZOl>5U{)CKAV(AP`RN21ibAx|}Q;RxOZIaSas z2jY7B0u1T;P-#A5$3nTg708pOEllJjktr*jy-SPzhlJQ{ur8FG#iCh`fZ}t`&*OZT zoQ?VxZ>1^O{~Nj9kOl__6{A0G50AIkG!|(#gyg`-peuWEev*yrOor#R&k%FFizz6n zDQi0!L{s`mKf=>q>PBNw0YEgx0b?9k?^p-5^f(Z0^1?*RdG>V>ha`51kT9%_>}Z_H z=x^i4=0V2qby;9r<{s$y@O$l1_c_ij<^f&uWHZ!I%`Mm=zD0I#_unV4HZ!5zizg!X z`|07qgRr)YHUJ^t^k^=f`h$xg zrC1_)dR&aQF&=F5n)seKiu8@D56g1*gO3)85AGBC=Fl+Yy@mQQ;eSjGn3Gjsp85sl z1$jt+Vm98p9Ra&U9&ilL@`4C`%l030ZM<5tFv`a@ucAVlKgnx;4Dsv94n@XXc4=)0 z@}598cR-N^Z7^QwPbhzvd7Hi-+xigFbU=J2oc>+UZqUg?T^t}S%3%W((;4UU9f6%kupMIMaR#uXc;$Z)yi~7tqda4 zG|2ke@8$c-G`x9QfilgAI6*(3yJ=!R^CRZcMGt<+TIC*&9 zlBZB^%I8u}Hk9uQS*A9(_djq*|l;c&z$Fr|B*+lgCJ)6z;NpAEn*Jv_$ z`Fal|+Y0_Nk6Mcb=dv%PO0b#zac4#ONvBV0jQ44E-{x&*8MX;J-9gh&z`5gwMymVw zf4SH?Oq=SGOq`_gl#ah*F-xygIV*T(>v3VPtc31uh0BYq3c<3s#>lQ6sugov%#!)r z5oxqW?A>9O0uZcyQw0#QJVCo}7m;3F?1(d%4epcIbY3q16h(ULV1M?;OFyLm%njFL zv-2>Eb`G8Kx5dKtNF&s}1aTe-`KT{nKnJ<&fnD52g*!uKj5|*DOcCIcGVT1oFADhN zMo>=#_w|i-;`eCc!1P>u4#rtL*0b0hi((8kR%iD?esb8l$bh^mJ6py~(xW=}?64p< z{pzW?fikuMU%t_K=k9usLu9ZXZY#q zp%E)NVLh+5_O~;gG8J?Aq{DC}F8V1fKlF@Jwr)|o+Bk3z8qYrrzdV{kFIpNQlv zGS0nb$F2em$trf$s)dgqcK9;y6lQDBh|+g z)EKk;a;wi1H!4!w>0+>c9cRhW#QMD@*O(;^oC>MUEjphG6US$f((erXQX@-W!mBsa zGX<$qqJ#IMFmn%)>r(qSCD1ilIrFHHe>kn=5>S3?bB&KyrX6Df<-pKsh}HctQ$Bjq z#jE?gQl-{0X-y-W5L^2(Jd{WJ{Vf?&mNzoINIF8LtFgSILa_A?ts;*XZMmn$SIgdh z^)rJVbTeiRnMH#7FvkCHr~HxyWTcu6st5?od#7Q?nvsQ4y=Z*{{eLSpdiMzJh2_Ms zL6mSJfP8>e76_wFW5FBL8bF_NW#GUN+uE1aT45QX`PnMxqmu@LMzGd9y+nI!5Wgf~ z2Y~YcmE1+ru3iT0P*ob%0y97IXd+lu=JnDaRkG%^9(umAbvp`o*>#pn@xs|AlYCrB zy}rn!2aR;0M0D4XZ|Ljq>Z}yC#brGsFvyM0ocJ#3;m^~0sY5Rx3Ga@VeCMG0+aIoG zE3O9)xj3jVb({Fh7d}iSKWMF6+VLrAZrZq;g4U+hfWC^glEl@S{T)P$lngnZno75epTc2@mp-4kZ5`7(3_T4~zoYJQ3%dhr!E68{gky*(>iMFU0Fj!%g$ zn8dBNK+CnGZ*V#Z*LIRFKa=cc^NX3{>bVAf_SZP6f1Nb{?$dk;b}Y}l&T@FMDevqeRm9Bs>Ld-!1gn4J z8oI`M0_e1f+TQ>Xb@O!9bjzXbxqw>BHRN)$usF$F_I@?g^D!j*tCE=2?H#A_Qgj?f1E!htBP^Hgr%@Qmo?R}W>Sfv2N1 z;G#Nyfc>=4>E;w!-$q*IsAMxlVFZhKStHf@h-Bpp)rU z`E@}I;!ks9N~m(n)Aguyv63G1*5-8K)UHUHQj9Jw5!CGd_<#51ij1F$4jf2hZ&^*e zx}9k?88x5;6J<2ICaMEdb+51;Iu@-VXY1p{g%bPKe{2#gb*qRl?D=<9&mWu>N%m#U zl;|pT&2)H&=6mgl{9QVF`YpBTy{tyg3A2}}J^9u@T?GT_l;h%Ns5_N)`P0Zq=|+p{ zrVJ7$S;CC!>WohqkpHZDuF!EwAp;%$ z<%P9dM1&O@o6e%w>Oj55sO%UH1g*y_me#g3V`5UQMIV1=%OQUfVY>jXtDAzS^;!;(G9xKjE5M zO91aWqlGXK@lEF=gh=t&L4dkxrc)6$PMqDv?3Rs*oA|xzM#4*R5~7HsbPvBO;To zX}sYK@fejTBGNhwuSA?#a);tg?CRCMh(?z^!G1T!6GWxRBDBM@dvB$jZLJQp7yi6T z1wSM94>LI*u5YZfjYLQyO7BMxp%MO7b{vRLOLELeq+Y+8Or}~2a>EPfeh?UV?LHIf zO~~8i6wxTamrfVb*hb}JNW&*J2sz|>Q!8hRn?I$G|NZ}nv%KsNSl|t&ar-TwSXoxy zJyLQ;qQJl$Y^Q~;r75kyNh_gO4f7>j$dt!zRyH2m+i-FehXBl^@vy}r`znH+){8#a z>~01feQ5nx@q@Pc;s=VRfY-EaG1AR{&Wc}5eFY5ZV}3jQY%-V|TjP$z5YSBMWJg>* z^Cu9_u%ed*n#tjF;f+#9Z_ccJ2vOqWNK88WJg+2T!SKdx2gz^cz}I8A@BahTGxO1= zbhABz5ymt4dSuuCbp+9w6^BwExo++=>&1}<8_d{hDKKepatt}h0h0(6AKM}+F7d&F4mh^g7vtZbss&KKXG#G2R@c*1Tc?R?irEg;g0#ix80MHeE?Q4q`U z#M>lUSHzi(Zc+C`Q_&8`&02335G1^eKcBw_(C|YrPO8&8=>g8|-Z9AYa72z1wi1|EkQftT0Ctmm(L;rcL7`X zy#WYH%ZFmsk6vqpZmT_}rr^m=h!A9b5X#{pb6dNqHO*6E+E!@?hUbMje{-Hj)9_O4qth3|vJ`{N>`y zqMyO61MFKGX-_ynDNY*=^a#7e#QoVGGi`zPm5|(e-eNAGwe_zQgo}Wm>s4OL^$o{C zh1Ws!ogWe*y0R=5HwN}hL%6b=oQ8^-GN&XS%mgyZ1Q6c^i$6?e_4H?V?z=V?QG9p$ z9M!TwrSk<6#ldHjg-K3<7IPMd+Q^~JpCh{~?)%rquL2^QJS6P<;rmO=I100Ta23~s z2`vT%x1qaAyI|45W!^|muqZczV5cQje2vB5dv?(Et_7oT5AJ`rfOB)hi~>^RQiKHu zL%8^4MVYf`iQd-K4e>0X+jU!`J&nKe z_kJL>>W~4nW1%5nNE^57(_@C7OE+uZrlF;pmAM%E#|OHOR&4?8%$2HpwVBX9=Yn=x z-3OiTPwS!F3)f$lmx3@YW@I-bq@KQ7*tDZXGJujDpqJjKT#I2A`E@lxIjKh2#<$T= zQOb_|e7mFq22A@Atr*B37?Q(H;=?~}r8{8$S`bh7KmQZ3ps0vH_;~Fy4k*h{u(cy` z<2hS;)WxLUv4Wpti3|;mB$=i2OxKUWR#lX7tBn{oVXgNE8NG=A>w#zaWp|o+jBel~ zClO`95{SwtQ*W~JwH}5*0#JWnu5MOH4^ao4b(fg>IQVeSL0}PNWQ&>q-Cg>H&*98@ zT~57rZNE?X=iZ@DPU;=zc+af*=5*f+)qz>WeED^;?P84h=4G0gP^~mZkb`3*dFdBx z&*N~4Gufj4DNBt90VL}<=e~gAOP=W$Xn8&**eNx9xQHsdR~c>Yh8C1>lLg(ZTkii+ zZoGOtks;F~i;ca8=b&eS!Pq3 zXD8+X7l6Z8_}l_^rB-e%9^0Hy@Wx9sJZ*e&=Q^ED(tV%2|)loXJdp0B0W!+B>FS?@&>9IUk}BJC9En8-&uM0@*XQDxG1ZQWJR zj_6`I;?aSVxxS*NXmz}4WXPwaF)alPm^rm%QbE%7lWa2OR79y-6AOU%bZ(?^^BuPb2Iy~>(?vWkl%blIF`j-1m3_1|8j#hek`(yJTIs^87 z7P7W-TQJFm?r4ko>`y#{zx9%Kh`K%|`U%HTHw7cGpYGfENgF0Kx3tLak0{G_CME*q zOnxO-r1Lw%?(O5r(Ceu=F+hYC=>l?m9TSb1c`NB5m434I>C9DM@aXcsOb;M!05eBO ziSfWBKa>^x8)dX=MW`WOdKt+dqEkrf#t8h_%%)9~oSumU&z3&&v~bIPPa`)(y8?mZ z`M!!&68=-73^w`#+Sh6bHy3X87ir*&8~Hson9ynA#XH9br@auduRC&O`@^1=Itn{t z;5-Sz;Ve72aFbiT%Mo^1INIs-NJERlAh-dDrsiXwOSS3{&_+};YB(A@c;kG&Bcd

dSn1ad^e7{Jz(3La)Mgqt_OAXJ-aPl#T=@WKne zR{{KH%FeV3?mzlR|Hy-yYS?sOqC5{XJ;)=VL4%kUihJ8s7^b66+|-4OGs29ttdGGF z>_^vyW1g48alpJqtu$;`&ym3xC6fSF*fuvew#6(tyMcQh;QYBX6F?K@=;g~7WUQy; z{A(3iURac9pugU+OiO~_T1nU*uziY9L2ir0rHjYo2crYE$3OgmJbnGNEcK5_pZeP3 zQWIEo(u8(3KLIj2=rm30@BjV3?~~hAoQrv2O3a>M3Zf?`7m-wRkh`X{Yy-YGod8NO ze*uczhy}~B`3G~AeQ?MLMe|~4(-64ebSfO1f(}PBIeURi4RI1aSRU%gA$rOz6YHVe z5mKpUXXj*T;gXzsoUf9Y<2fIVRA%76=e7smlV+YZ2^+ql!V zy$&{hr{JItL{Se-Sx$ZQQ~At0e<^c411|bm@0JBszYcn>#Gz%pwSJloI%P4(jvbSK z@DKihZ}zN(BDE2Vm2hCNL*Bvi29{2MZE<-bPB7E#aCicnIJm8nZK8J^gSW`c1qmmK&^i$!FLuX+_V|@bSLxnfNiH!M)LiwBu!Blz%uXpNz3hIefrLWnggH}&3gAOn?DYX}YvLh5j)Is?0!w>sHk;>9EFI1U^t^<>jThSp` z6TpH5cYqOC9hVPcy%*<+)(8A>i|NTS43?wlemEjqH3|Fhhry@C0Szvj#J~#X31$k0 z$K}RtnQzXN0HAZw#CG&TWe|N`x^zi~1|9JAACOBQ&eip6%GNaNATLwPZLY@o@83>C zl<^J(x_RRty9#Wb4*sZv9YuGVDJc2aY3}dxUg(T<8Pt?PL}fX2{uTL!kA5gC+T2)s zgf_0FMh?|^{=*;s&{w|I=%)_G8#ivqqmMr7b!sa2(18chE&Ie^B64Oys6PQ5>FiU& z#LZ1u?`CBpw&V|36lXSY4kxoX?#IB2}%GvmLJx&{3l%xs%t zh2_tkb%B`40a@;umi5JVC2}k-9vrRv*LK3h>~ir=H_$2g6(AFN4liBq(FsuOfL_E! zz$s+DCha=Mc8l!0Z9j3o>lGJdda27L%q)P1B?SlxO3t= zi+q=smgUOj^K$r!d*q{=o4%ZU)Hmn?2ctQ=Qtj45`!?@3E_QsCOa#u=$oMum(HY7?R@DtI&(!LJ4ISFGypU?nkkGD7 z=<}cdy!`I({;mf#WghBp2pQAFbvL{xyKIjn;Bxl`DiWII)ip5m&G;25)AgEHB}nsJj3D{yrBCz2XMty6iuG zue@<}$&FCQX!}P}{A)$ADBj^X$;0~c(y!e^!^+OiHxDx_f)6J)3|*rjsHsn_M<%bnD_?)>KRH`!MK*f+9D}QyNeWb|LDP%^Wopox zY0%)8fBBdFOHETm^uTb~2B@BpZw*rR?{6PYC$kWsKN z4Zy<3!~p_;ErJ$YmI#7kE9&LX%m6vX%bq{JXXb|}EBoQNJd@75c;RC?erTV3yx{h; z?pWmTzB;gJ#oV}q;n3+aAvTtqp>?v)xT_ewLtu-#bCz+mb5;k(WtuD_4~yzX1T;tu z^T=E*PzBH`bgk^N-gl;wj*3iQeoMZ6;fJzW-H=r&*9S{f@<65)IG%t0c|Wj_Qlwz> z+rRzW^28HQ$Y1=$U$lr?S)dxKev84%%Q8?QVyf(q(}|$vLevti_W&Z0i@+QOK!EvS zUmRKF9-qkP)CqkJm@&dvrjb`&SC0?-0Yig%33kVQ5x7MlM`-aK9t7;SV>1zmGmcdW5AGA6a5ajL(T00wyqJ+?8u9AH++^o)xQ+e}d1 znXKj3`PjM@L`Wo%2_ToX-(04r^^FxdpOE>OV3tyO?p6fMcW%C>TBT10m#)d*dhb8^ zUIiN^X9mXG)nGLZN;3*{QhgdsrEh-ooATAKepP<-qaU>mSdK#S0A;YlU;L!e`DgW$hY^Z2^ev?}87FqqG1)1|tA9j!yxIJ6N$PN$zwJA;vn+zer&epmz9lxT5D>s%N2HYp zHnzvi2gd^-WFX?^EI1yh`MEG8+Va^tX}SzD65wM)bd-g$05|Rl%FUCx^fzZv0E~44 zm_ZW55mT%WlbdV1X?oh!_=t=gyhlEM{iZWR`|6@xt>}?D#$##oVdZU)*Y*JJJ~`U~ z67Ohdm5z?9D-QM?JIP~dCYhO87G*AxZc@}SM9l9NsjHXK2MKLne;$^Sr#kfva#?{!wj9+?r#w11g$s+Yf9Tzp8a%$T{~o) z1y`yhFCP+#cFRZBWkGCF(8}u@3$m`Aq)A!uON;P^R_F7=w&HrktXh+=p8t^?y7{3j zm-?JfO_wV-S(Y+2upWI^5IcJGsQkUZ_xF64DU=-2cWd%lr#F`YVgTT7Q;2kO4+3Us z07V21bZ{#mZ8r<9HFaQzy=c{vj|!sIKkRHRO4W0KlaaJU}*Ok zs37{~I&0i@3Jej)4wHFhWmV?qZpzc2e^gGNzv+Kl9}QLiT2SWEsfH~s2tIMbvT=@O zk{9hd2P($cqT)Nq6HRQfCNoU1PT5)-155*yOtzOdFp#la(lSYYwl-$BeLh~+;e0Tk zz3@|cV&OxXuM9}3sz6d}mbX^m(#jl%4jpPrDfIil{kQ+N456ugOPYWg-01EFA z-GYU1Dv`gLsQ4qBkK88!%nQtj>y#;TVpfRCwg5ALDojRp>NDVAzhF)PMQ#WK5Jt)t zG9{pMvjEPGUjVQGUv#8`*$qI$1YpNG0L)S6?VWetbsMY7(MP^0fBILi*Q258TT>q! zd;K#RnE|f2LkIjV(3$PFmblUZQsqQAYR%Vi;2`DiB<)+K)MO`SWEPvt16TNs76u()vBqiLkEy{j{?K^!$15(|E}|Opu;SKo{SUN zn>Py;j|5v{a}1LOJOB|Z@WBMRd=LNyK!${Nls^jf8bJF#Fea|iW^2PiqlQQ?GfFnQ zIoN@1a0w+W$Nos2P`8bXOakbjWy4F49jyfQH<+4q(dt=ewlBG8sJ09oc4laAf4T|R zkpMRi-+Nhzb32k6;)M6&z}88=Xx4%S(xjpSSQMI>W-dz#ql|5rsL%mO4)6;F4?;dP zk@U2w&@r{LT=lEfoF8p$;i7!w^0TsDbs*#Z)1(5Jj2bLZP(yD`9i+c^d`&DxTY94IpJo+SdO(~@O3d80{g=9+z^Ew^b9~; zUWhAc;P}~e=4u?=yx4*@(#DV&kNvV)&8b&hEE3F&uc`G9f(5GSedX#k+1gl^^5~SD zdH;fof;L3CKHEV33~_dTXd4J+`N}#Kl|WQAPKAzg9j1@BgtTMZE0V2e`z9IdNAk>?-<%wue~VySFZU8Xt}oKSBD9u z0$i=BhI~zkQNR1$@A}3p>Q{qfp8aCXy4d+{2e?h6Vy4D{2OC+$G8|dNJShGx17lD^ zWKt*iskpBKfDfi7fDWa=aUNXo5dfqQ0A{dU(@iH18Zb~XU~*DDzW~ter_Gs3piK ziUbg%44XKQpDp(?f#YqOqZBNVx?k$1DMrhWepx`)3FxMYWmox$1IJREJ~!~;h^29 zzW(3*io9}hw*C{hn4t+}g5n(p4w6j0IE?`09l`}7wwY;RMNl;E0m)bntg(03lD}e%yhn*^X`b%u)MfG^Q%EHr17^Z9S;G2)*tE0kgV_m#5;GuXaxDFTi3k>E^C%evaC`tr1|Tp% zcE)pwZA3JcrE*RxH;3VJLR_+lb5|`R)9cATHVznBM>3ec8YN zfSg@$V7KC;p<|QI44rglXn%mTBzW`VjAi1Ctc1|KJfv$U+PZFmT--6Rby$l(u^dkU zYL^O{Im`E?Et>`=Ma;Alb{D1j+Zvsv;*vZ%`-U7}z90)#$AaRumdY7wV!r$C zyMBd7V`0}~h&20XJluqtLZY*qrmEYL9!vabp`oE%vM z*s-9P>#~8}aqcI}Gmz7XU;#%p?f#i{a>Ex~6I?f42Q}s}vFVBPTy@8E)A>N3{+s`; zJb(G7UMLqdXqch;o5rz(eP=0wfvgxnVG}eD{pwQlmLw~*!%bCk!C;Xj@j_;376D5L zAcWXeFmRgzHc=;$P2;O;V}VKLXc_}-t)r)5p`YVJ!nr$uL` zCMb6`*TJ`M-#+=wXFlW0ek-Uk+u#AtAY}7G0SH!R0pAtZ`)5%r%t|&lxzrF3e%oZ2 zvlJlY<$7kk93q%ti8v3|sv!pz=ZCyh4g&DGvq{OF-f^9fKWZ}@0B&4ll7-4T=`nrm z9y0nH_U}I`XMXqwnW4kmkW|HOQlyc`I?xpRO8C7HOC5%)jkAOg-+nf0mr zACL>n?z*iw;G3MPo1v8?Gt>_BxO0g|n}01~**Fh7%gfZV%+jI}(YPpM+Zk>Z+fLq$ z`aBs3JMgo`oytCb4_a2c!Dd zFbLrX(w2GJ;P}~RpKYchaff#9$YfjNvF|BVzaPK_vy4qvEW=%(m>I$JVl@3huPx$d%TqEaOSGF%KP_#3EbY0U7G!;Pfg7x=3-YCntBNB>;C71WMZS<_{!^#@Cwo zfsgB)Z1|*4FI#De~0ZTQatKQyedmvPjD@D_hZM zr<$Gs0|m7wpL|jd95~>sdce14dtU-%xWqN9@c}TLQl%41F&NPB4kpJy$B{>_sLO-i zHb=p6*e+I_js-0nKm)!noF{+|rZ_6x;vHa$svex?#SD^tY>2X=ItK?sYy;#bk*Di( z_T!J`-c$F>#pUXD!xnFb_HMJa#7JkHF7=4xWRozKWY#AcW@nn2nq-c4no5-?aL`c& z-HzO81p)}ns`5xbY~Ex_Drc(CDkOT99NTG|m%!Ylh$uLr+DGGt@iL}T#aF|9a`hwU zS1T)Bs5d!o3@{y>Z@>Mvmp3SQp>l@~_AhLUd zD#dKfHb4eovfKiGD4S8h?d@16WjZ|XO=5{=<(`)7w6~Y_%Hpke9xPqmAV6!&pl~JJJf`Vx1P(GACg(l)4g&}~4oVczvn7F0nmH;-rXc{!BCDj7AxdF(S*)!A ze)?a$xg}38y(j%!YqA`-n^LNj*9-#;Tpc(%K<~f*e$UokeDTFLWj}+EO>D};GgM05iCGTBdatQ6VJvz~DhDs7s zizO_|O=4;pW@s!0BcX9||60+e$3<5vUT884obqHK*vLYTNJA39W$M`^8PuY@(NW9v za+dKnRc?ZA(QWAiwn&aG| ziWUC06(F0C9O*=~(>9A~KI0l72quUMzufN>%USk@o(xM1^K$6EhvYwhbXlEs5^MUD zZ`e{w(XM5QaCa~qnfl6A(u&0jvY*~6XD~|{;x1#1~ zTh3+@a|-}b3u_AjWCCk5Y|@t`azHk+a9-|TJR|E`xkCrOY&+_8Kx?!U=90d{_w$W! ze8UeQmSflibN2thi4OD4f&jq7rUWsw!=Pr}7Uky#r^#R{6EIh(w6 z%Nz|Zo51RV(vAcGjFYr$Q9Ynsi{;7nbJADakVS_lWf~k9R3E#@n)V2VSXCK|4!RR3 zPWXA89biibaq174lun#03Sffy#=yuCRzyc3-$1D!Hpy(M9sm$)$N-2|G|a~fKNX^z zI44M4a6H`gN+$$4xRbpeE7k)8wTuhv@pp*mYV{9&;d~*nVN;jOi|anlp8eSQKOdBj z=T`NgBpREp16#SbeK5yK3@c92w#CWjW!!-o+KJ2~uYRrLrZM?4>npjpmDhK+6Fpm= z9mWC16J-f@bDE<;$G#Q)Ca}6xQ`0UR_RB@S)OSUOR&RPSZrs~112rAk)s|8_S{YY; zXlPoZgIEWt1`U**sHTmhh3vq#%6`SQs8)T)DyleHeGQn9E1pE zGFWpEqFgS!jR+>QK4xCl52)+Gl;vt6?EeF6l{4^&YBxK zIyx+?y`wUJ;{%BX1|3_|Xy{-9TT9Weg_uP=#8X%SKazXb5DX;#6;lAK!pSk|hsXK-6p$FxXHtImF9 zY-$Fv4(#yZ!*cxiaj$CwSaCu&mJOtBkNY%fe(XSjnuI%OLeSW_{H$ z>{Dun&aU{p->846F7xp1^%9UE&R}aDYuDnPnW2fSEs1?uzgh;M?$E!M4Q#vNXUmO+ zMa)qN7S~8FFP>EPD4=I+`p68RC7G>36PG0-3A!}}0V&DR)ypy?&TJ|7I6%`Pl5tCa z0j-X!W+)o%>ZF5N*_uuYa_}>8S`Yhx7%XhmliwLYm@zV#aoP~CXUp^;Fu_>{`eFer z_M_(oCWd1KfMEaJo0FLw`^O;DU_T&yi!e)BMglem@h)rlLZ#3d+#s#tYY7&)?ymd# z>Wb{Y_d$8_y{nCAs53#e)4N7PYjF;?Cdt0D+(82=2yQve&?HdK1f`<#j{HCe=1C2uf*Ju#Bxgn=k&(=*u?c^@4 z=}$UoHUZM7bO2&-YtTT=P%xcPKBP4zSv$rREWkj(vN+Pn+hi8UU}@{3ad~cl4uc%~ zlmX@~@SN1jw=8ERc z8!amP=z=+F0V_#b5#{lr#RXVf0z+)^p9R<*9iMkqx}Rcb{kk09yeaE7U8lNzUo@Wl z8Wgy6=~9c{3QdvK6jk3Fs(9EwpPb^v)ibz)2Lk|`R$y3MnunXR04$kx*)%H#C~lz4 zE&14_Lk%+ye6T2(>$ z+$-l7*6U_yU&suNlOv%Wv9%O{%uJ@=MKd&)%%cGA?U=FUWpACzKC;ZwG_h_Tf161# z&n^8(I#$ct0s`CS!lC7eu|eW-V%?dTwRKr?CTT=^GYmv+c&ug={Ax&{dhD^sJh-WT z4Z1UCFOXKSLz^qxat{J_%(KIu9pSd5H~Z1B9cEBqN!XX|s{mkQ=ESBlC+hQlIbYLO z_ho4Ymnc%e$BYjwj&;rLPer*i$M2O_&v7(#WIMQ) z%gNtOww7R8#$Aer7Ls`sU}*&qZU-q<8T~}NZH~6>D`aXWvAT?Gg(TKiA6;SK>Lfsr zz}S2|wCc>sjVsRG68Wkgx*+Sf^lxQr02($OPo6yKK@DI47Q*bt*6Fv*ivh0XS2oV} z$Y|oE-u72yjCLmQ8RLAF~Vv=c?bM{1AM0oV3ri z=fFt0i8FvyT?1UjgdYU6vvbm~#RP_@WbWq0Mv0?#CWaTZ&X9Qw6_ezl^a z+^(CU(y`vHgJv$F?{YL$?z%Z@muHhO0RR(C&J@-bXX(-M2MAgLE^d;!I4aBV#+*#7 z-H_F$_*Giihz=(sZ|1?-IXH)JD|z;<6}fMvfNR~X@3QizMKe1-E<87MJ@y4~ZrLOoBpgTB2sJw3hd zH@hZ>j~$as%g#LASg+@XY6#vb8K0X8dzW>@Uk)l{gG&MMb$gF+&T3-Hw4R z$tm9jb2Lj)k_K=h2~}^CM8E`^O*WRn+CsjzP6Gs_S+nfz=-Oo&lr33yQL;$lHi7ER zn>U-$Iu?;mPEPulW*bTfF$ zM95Q&GK;mPnUMto1nnS5Rdk&hdT8UiZ0bOdN^O269VDt-`jKQ7=3s3} ziSelsPy)yhV~e8}b5yl!y_-uivo+^S6_rHV9QHa$w4I*5YgG?00{yJfP|nX}$Goi* z#sJ4rQkG?a*shfH|ZRdwd8{8O% z6Z^RmuYI=>P0oU_`vKVESRf3>d8yy+{P_zqHa;#3H5WP7hArb$Qd3~_(NJmEtR*rw zyG#z#GL5apDQqoHU{Q&H7Kec_OO%^wj_$0qc%?H$>ykOz0v0J!l0?RrgS7=sQM;_P zvbIpgUI{S4L^c)x-T-@3lQWJ>GPN-){hKSY;b5&y-KPL>n&7U$2Ij$L+tk!lv-&GQ zft}bqcp0?V{Im>Nx$1i*a&2ILy;^=I3YS*qqE_YjM#iXy%NrnW4pity|I2wj9y~ww4-1kmSf{Q2LR=+KTwbT1;17C&?t` zC~1hj)weh8fGw&y-&@IdAWsU5^@23i)z z<|>0F17@hJ6~1GM2zOt{GAP*%aA1bStclzD!6fF2w_JJ%RdMwlb=Pp703QTkm?<*2 zbJY*shMN8yyg<~|n&mi$O?O;<cgp4ApB`%Qivd0AuPpTZ_Z&s|_e~ z1`V>-xdmouXQpVDIhqw6l^nBk2NBW$E`_zVF|wTEUS@VJfrKQJG>x&vzWcXqZODPG zSsxiKQL#ZTd>$)o-^W=qU?l0b`riJjt{lpdROE*oj(<7BhUR^+vj zMmB{32DX7RzT?0IGcNWca{eopg~=W&Ap};Z*AD(XE9B)weK1G9R$TUp0TcULQdhx%h>2^-6VBCgT;UYS4ffEN26#%mcnA_C1X||BZe| z;J`LPu|6*D(#~z|Sju6$pyQp_vCG?%+Pq(8K(^esm7s7M6F|zg;$z0h+B%4B0gfC< z!S+}?2LRKAcP%KOld@t6a&0dNW};xuZ02&=B(QAnU#pfhfmcdH;|}CT>J3|h>?)!A zR48DuD{L)|A;tMXCO1**PHCd<0b4E*OUoUlNMo)bLKj(E949cWC?9JJEuUnPwgdgqOf}`zPWy^lEJjG^JU|%+c%mzr`-57r0z>Bhs9X)$Ruk4~ zer`^t4;+*$3oG?w)$&9zL#;^}1fZ0FK`(z$kb1Ny(Lo&<1b?SX)}=LJ;86G-w$nX&&|#*S9^sxggQznry~pp9jxONC%qw zj`U?sK%LYS<+3|TQBBr`**1Ha&x6$NhnblzI>{iwsam#f8y~;TN99S+hf8%Mx08>7 z^HVLL*=Q?YAMS<9<|Q{vW*-?#IM5V_uL;Xfz|{OYs%_J(h|x*8xwzt6>`9+vg+2YP zAQi`9#+KIv4f@~`0AiqsTzeQF@Y6m;yc>SS)fqH#*Xih6PrPWJ11GD!;Fjp zE@Uop$`gxhSqB&DGs+Ax#P005Gb`k_e7rr*?*uR*Hx;$jILpFlSNE@y#WHR;EcxjLp`5v%L&jmTlG5#l9nQRfel8e!kB)h-)qB zOXzIGW+t0{qobqE($iL`%FA1J#)FalS`2pVAG4;WH7_|eD^%3c`mA`Hp)3S$)5qIk zsRhmzRdWGK407y~w1Ewd60={BOA^^~-(2;Ve+!n4=(6+k^X~7GtVg|4)t(W<<8@P1 zk0CauWE>}_Hzh?u(@aoF0l$#EB+fy<;tqXmxq=2oz;4%pt-~NfVd;nYP?)s^SY~RK zkUS2Jj2@Y$_)5b08^hOyY%ewe) zj^tT$&{p4Sh>#Lx#mijG z5*)#nwU_=#m+_b5k_c z9L;HlrZs)(gtY~i4Va8=@{f>7ngxWGv4z0RtmEtA))`y>){68vV2hC;F4D$kRDf$4 zm%h|Q)ruZ$0`YpB8f2?gu&<8mtXT!VHAw-k+%psa0YG8^v|?WNr&&hHj(<)(hk40h zY)d0Ccyrx3POD;{9D)xpS-}7?kE5HMXs<71dDzC#n6|dGzw4^>k4?$a>PB7Op_Ovg zzh?6?LwYtzV`&9VP|LnjK`;e?y2{oh0Prb`-V(V-kS!&cbxEu(&HUU6Ym4Imph#zd zgrK%96afwR(4qu0wrxMoY;jzz5?AXz-hI!5)`E?!%I87NV8e0)&XHujnr*Pc!2@P5 z%+_qtN%oy_QapEv0$Aa@ByeSB$c&E5jstvf4YUv4>iY&~{O3C@u);2bMUZ`hm3UEQtiQC1mxqW3xCa9zXX2=A*6>Ke+ zAFT_h))mHft5{oVgfyY@M@Z}&GGWt9Qe!^0`Ow--SG(=FB^N)EMw>ksD5z{KYkzmy zY_K>s6=522IuZsym+!&gVphd$#%3%qP}vStAsw6*;{vqsoh^qA(+}%%vlaHi*`NgP z%bJSlV8w+jIY7d}2AjB#>x1hU>d64JpEEbueC7r*=;LZ19x&y#2AgIa#FbuIU)roQ zH6IO)!i*~^SP%lLIIjsB@~@>8lT46cbepa1Vx~ctfh|Y#l#pw!6V{f;6m2U=nHESW zVv^<%`3BirLyYT}Dfvnsv47XkeT`-wj&aoLHQ12I%|K(jN-?ux|CseF>4Y>Pj{dPP z&YF$3V?67`n60tY!^%A{_?bz9`7v|jeRCw#`tWQ;5PWZ|m4wcR`+Wl77z8&Lc8BpH1S<4=BkEmYeNshJUG*W1qou^PEF9X<tdiJUD6$z`uH7#e`O-uc-+^kN zwj@(q^D-i9?up(f!yEImzU2U;QPJbZjT=7iQ+;PFSFrx7WbZ)SQdw3j>mECH%;!X+ z>MrKn2qwR?X3mPawqBjx9buqatUO{F&~nC|WElfHo=_j9jE<@_1h+;Z!#E=hFHXC>Zuj~j6g95>gb zr3Xf8upohbb!vjf9s1O|&DJtYe(wz7x?qa#CTla%&NNfBEdrZmzUF0bd4mM)g(>Sz zT13WH&&y}xbF!~CFFjjpjgIe*?I=%k{+E@NWqIwj*L;^LE5hyQM|HsT-S2+a*J{%| zQw=oOCMLGClx04)oDU0d*|}~_TnjMVYrvX`Tpo#!g?)pNZ>Y58+O=!GQt+KPUAS<; zN2(7UI^-WHJ>^)Qx%YsaJ9}2ny!am_e(8Ue=*S}?KldGp_uuEhZCzUYv?1S`1*;GU zcEtqE;Zxf!-&)clw?*!8%UGLan5p)=B>6`m_z)EMN`AjwlqT99w!)4;l}1>z#^=KRKz%7ttA6jj_ugwW({J~L>b)O+ z_@QUq_doD}KdInP|4=FhM1S zb>;D?b_LVXX?Oj5}GyyC_x<}Tue{Q1tjsKk)%77W*EW0M2ElfDm~rga z!}ddLkQ<(G1l5|K?D)4PtEQ2uw(sq?-`?@H>h^@|qN3`#*;x<7%9IZsIN(2D^X1*E z(*KkHSt{-Uv^3#NQ_V;~0faP0RRpAxOwhLVB!9rbuGBp_{mv?Tu=KD*b(nmkcEFB{IcwpnvbM-vTd+x{9gvCcX(MSW@<5!?x5 zP`SYi4k*)x-FKglriGYIC$CT2)QxMl8!w%ndFC0}w{Ktb;l&k1 zbXr?kl8GL7Kg?YgS)Q%SK+*swDOeCox;dFT4kRHOngfL591Gnhw$^3FmY22V%^^*x zMwzF*Unt`t7{yHRw^=i`h~LeboRzf&7uk0{rCL3Iko{X=8+xPb0MODz>O0CB#LQGe zG6y7q+ivmJFBURAZDB~;kR_BO8p?#Qpkq76hf=GO_QRj8`HPGU7T$&c&&on$MH__qr2V7Fn4S8JcROT_rrMQ#Edq zApVUDvNXwHX>m5tC4$+lV{6?9wp_k8djX>YRdxe`gpd$7F*uP&HX;dtW#k`0zuWc= z5H$yg)CIZH?$1(ZxXKtbACz+vL;flrXci>cN5`U3HhZlj-zKWFvz`a9E&0tlFRO90 zCB?aEjMcHRus8%_7I>|GjC*|A+)>^hbab}O9%m(B8SLA(*5e4S4WMv;39O?%D!%u< z@A>b!%T~*8>HP5OJC3)(9Y)q0bJflC$8|p z*BWVM+*CPCisCw`)v5uLFo%mI)2|lL!X=rl9S00@RPxBmGU&1=rTf6vP1Y7%F^5T- z7$r@RfCRN`ImE#t0dsbH+h91Aa=YrDixcudw;*8~sn~>b3xYO(ln1Fz6AJ0nY!sA_ z#hPL)sO212uoSC_QVsF;u75kv9xoBA) z{^mq|+wj^lhiURTL9CR zKElM=2iBiwyH42@F78i?paQ3lAy1aUh?yUf+-=Z-nHC-rXh_XqjQQ}{;h3@gu=qOA zi7JzoG03EVR2uV&yJUiP8Zg*pwzi9mEeE<4soj>_B+UV4k`vUjz^#7kCa}HO*X7bq z2C6iVLN1n+$Y2Oik|L0t8f6{nA%Nn#Yqmmc2uN+E+7Osn@Z|Gipu@noW_Ad8Eh}aA z80x#g;KOz4IGe&=ca&H{kxVqkvDJqe5_280<1z+g)JG(?QAtT4?3eXlWpQD%0PV@GdE!C{e;b8QkdbUBqj>cSP2g z)_qftP}?@!70NOi%k+{|`k@Q}+tDe>^t6>c_*kq7ius&CA9C_rMrbS9hL~HZgm}n| zZIMefK*O4nNy~;9r2-kE$k3SKJWwu)&l}NZq?(~{Wys6~v$Li$ra|pOAD6s-EouS9 zf-Ec3pOyqjSwh?_6EsdSK~q30*!AiY#n>dHe0Ku)Ss$AO+T-Q*yJfZm4E0Ko3>k=7 zPsAK^{e7|8BWqR9*`yXBhqP5L5PFJRv(lzUSTpa_|s>@%~B#4@VT zHn{szNGF#jDX|4Ad4GHiHj9EmmX8}?XLDq^;AKeG!XU)m*|Dzel^SA_+zFlmkjpV~ ze^i!y0LaiWi+hc-Fq&(?>37;~9*nZbnV=6n`Lz72AHU;1xWG$PZY09z1hrh|V_r~8 zGf8urpm#{X;MM|Ls;ez;MnaNFn&dN+{6U1w+HN*?Gzr|ywn`N_-E)up{K|9nuOb~F z?N0vCzzvz7p(tp`hh~=xIp}R4O9>FTcjUwQn#^6fDy5N8 zsc8o*?}&}tvkW=~wN!9R1GBgT6ZFmq7~EpUmWFOgU*$DPr89q9k)T4TtzQzjHMXH$ zr=oaEuJ<047dIc2CsyCAvw^76DE`q`(rH~GbUSK&N5OyPRKa8<2yI5VRpscR|HM?zLNt^Oz%Np_W+$qa4Ok36)K02<_%RvujfVN9Kcayg@@_2h# zp21n~rXnQ4O-;xbpLs@3JouQrKVOx<{F5K}08`Y{FY)O9M%kh$ zoiQb8((*<#EjUR+W!<)UA+}dg=5dPx2DgE+iKKULPhe|l46bFpP@o_sn2?k^n#I_n zgpx)H@9?+H4Ih`EEDp%n{D(5JH7i5Wru0=xvZ=u1mKk=x!v2w7--eGJ`dUo!^5x6T z1}_XmPd)WivwKshV5IE`r4v|1NIS=1X(N{0ohqcU3ki%Z7&2o@)AF&eD&&K-S~oUx z*%Y+XeY=-kTxwWA7sAy(-=rP1KId!;c zaNGHEPgN%RO8%>;VXkV$k9XgFH+UsA(ORoWXr3vvEz9EU;J5uYnF%IkB3N@XDZpUC zkO7W$WY(X?Y$z>oU?YwpW@teZSrN=CEqGg5ObC?OkEbs!=BZU#c>49<_>NrY*)Qjx ze_cw01CEuK<^A{FZ@qr89{to*v+-%E^$ofEVMavRTHmm=G)YPBv307G$`m- zD;y+XLj#t~PO3%_*(=p)YO7VwsH=Fw}Z(p%OX_TKt&@ECxPTSUO|5`ZSRh<2wD&@@vt zV5+79-0d+zZxdt7GD(w!yIB&DJpMMxDgP)4Y7A}?NQSQuQGwr0%Dv8~;-X-K6P~Tr zyT6Of*CM&J@{%0cx-1(~X_{RJ4jk~nW|@>SHm%aCeGQbgal5%tWRO7$RV-{5cAHPi zb;>LYW1wLs#ZG+&OqhKD9GG}&X0uMrGC2mD5G%F*G!7atQ?pT3n?suf{xCa{m7vF~ ztpG9A8tZ)S%U_c}fAOt)rH(-t446D7GIiALxMzDGo{E=R@8z~$pJ|M$6Hv zmt!%pm6h1eRrYvTo5$GzEE%y;P(BBk%Dh}C>0hIp=qQH!?a09cvfexDSoB*GIYu52 zO^S>;R^BrhU_L4J)pD7OML{iPy*$B!+zjo`FhOrGuoX2)Q~hme%~>Qv4ze5ICg~AV z76LaGtQVrJ%3Nha)=JK?ytVGxodSji2(%cbvIILI)p>23nuMeo3}^s9uogB6ts|aG zAaO;Ekcn!2Z_FHRVMptS!}e`$G+SKL)HZ>v04K*P(Ak2NU~devp(J}gMm{dvot_yPgR+%>aQ!z6oEF$^lo`jYJ~o|H zmu88`@WiB?n_Kh}j=0|e+Q4|bF0CVw>Jq3)0Z@~G*_q1PQY=u3ZyUVaK47!dt%$!Z zHA5jGGeJ5rPbIxocK#!)SwE%OpZ2 zge>c^rLwIg!ZN+2lHJU-Liwa2eHiA2+Ul{t&jvMkzFm(QBWu-c5Cau z7#V0GyJ>D4$K`?o3rnkxN>=Jj&C53mu%*Omwp{|XIKg}j$ukQ3)lv#c-p2kyw-?w# z8n#4#Th79iA#jTmdWB{(I7ulqnG^+0Gf~snTm92!)q#w@Bu?$W3G)d9*H`ML64o%& zLVXFCxmdu$6iRZpnGNg@W9E~@dKg60N}glC763zR&6?S)OS7gZK#KETu^-DI?S7LU z0R90>BedMO^_ca0jdE(#)3Y^^V3XoJnzCF>uOO(UML;uy1$oTQJHrIMLl|2TlhgoR zS}>twaFb-lCPjh+Q8GYE2s9h(IHsmD-I6j2X|JCa`~e#kTWwKC3l^5$SVqI($;^*c z`=R2GESS}a%Y9>C%#@I>WYe;2aKW0?wl4#l%vQS=0yXS|%M;<)_?#H%LiOQ7zs08Z z3XOYp=i3sFL@k{XeUYS@ok5d+YfAoz%5VuRmjhl7u*ueQHj&RDpdxO zWSUxr>IP74UHak;FA0dGHJvInp{Bn2-_U0u)Xj+$kj zwutM{SzxuxTTLAUAdWTUGvf@0P;Uf|z%pp_xnMn8NRs`F_1JxvFn2lA-Fd^vBL` zrit;g?Z;AI8c!JP>U&dQ^WDV*)o2-jtd1>Ibdm!BNWV%G`SKvQx-|v~3t;T5w|+Ei zpIM#F2(VGoX7ahI76L}g4~S64g9TJR9*(Z+wzOJ@jS4T#-;{yLd+NWdZ+y(Il04v+ z)8tGu8*c@uW$M-L2(osE0b6EWwmiXv6jM|ZvJrUr3v>lcroLQ&ZqWz5bASXMrwMql}pxbZ-2et*Dz;qTCjI%qsb9+Xb?@ zY&%R@^V*hBvH;A&-B6}PsP`!vzi?$njG%EG~npO zoZ$7>L!@f zyIbjCRPil<%?eD9A3xqy^Mm17W*5qTWKao#l^*$L0L!hz7MAQ0-&U`zfetI?P3aT@A^6)OG1 z#}jIZVx=7+e;k{W2ukp~6#(NQU;`j5Smt$gIlcDEh*iIabyZi$$D(U5TsbRa{SM65 zmL>A6jk->WWZx@oeM36{wRnf17Uu=B_>Kz}+}Vtce}GORrG?GXG@qLUx>QLBOG zVcAHMIR{3_C5$kiD`?mzGHFTlyqwJpuqI=uj1iY}vVjqto9*6ZD}i9*Km-@65Wv~bR)1!@XW@IaowFJ^2BlCNJq88_PAuB98oW;3KI=0$&$4!660Fb;rlY<;s;S&Er_z*p$VyZ^`iCr)6nvNn~)+SMx}; zJo1>HSuAVEpw>Z(l-zj{&`%bySsz>O{L&7=O_G8Fk~63v=^|d5U;ooN+1=-!%{h6h z_MTKW7G=Ykq$LvOYW3C6e)h96Ha6D6$aG*m@x&AI>Z`A|wa>FW6F@2mM!N}Ww>i1}E?{gSa4TY><^VUz zW1^;+lWC@DJA3m5Cw-q$XWDHp%8A+qIZ-_)eetHO)#{*DBQ~{f-#!m&q0}M;HLmIr zVkDL^g@7!??%2$;zB-$CYHOz@RT<$f?zR-TZGz0;8DgO!6FaGUK3Bc9Sriudt;vrU z`ZEBiA@V)sTmh?&xoLeit@=@QyRP26DAAmAA1qvw_`z>DfIC!=l-8=P0GCI~Q5e+X z4kDdtK$Zq-cQC5m@xW%8S|JlP2e@ScU9b$e1iD$pExNQ2Sl0U)xXZn@CdaGibo{c~|0jNRjW zvU*V-mXBpJo|E;h*aZqIJ`1NJVL_|ShqSEAnxG-@vE8IBpd~rzS;LjpP2Ot3Lg`OQ zpcHB$Xtj4qCbVT*N%^RJJ(4mN`1;#(;Pugdj~m|TJe7c`uT#NIBiTN{x$b;zZ~m!7 z=U$TdpnT?tjW^8HT^=SgNxE`ok zx-4@2ZT;a^J{gQ{H<+8`VQ~_Ua*DK<9U}Io-HN;~%>meS^@2PWeJF#~I-tc~r&jab zschb4sM)dgRk4Z0AYgMHEpUZIuWX`Ob2gNA#GfrQ3N?5RCCf95OEO3JvJ*GPCGva zF$;>8`PxP?_L|!3hV@W7N?#iI(P*j$7W{lIXSBH{a_LQpHdjQ(kJp)oZZDDoPX2{OwU^C0IM%$1$DM3EeLm;VwEQN?@sfau0oWcpm*TdimaMPO`WBM{1WBFlL+79Lkbqf=svfr6R_OS^ z0#Ox2Wg(h-sxQBog4^b*MAzPxNE;|?OUCAn)rsj@1k{QE-X5@ha=@)iOwQ}m9Pu5j z&CAmYYVo>ksf;6P2eTx9TGC**y$M1CPi*-ZY|iWWyQQNTpvhfpf}X-)HJO#w+(;qcyOz3Na@D= zB16+6{o}2@M|U0IKIx!#Hv`+Qf?G0stGnIGQmHP<&&g}jTV0XOxYY2MNZY{9l3Q3a zCM4akWxbRBwu~&TS&LF23fH%d{nj)E=Nsm%eAb&`ze zDSlWJC6$o&tzm*zBe^F!FEcVL%Qg43FF|-K!6&!{nUHM2rW@(R-Pmna+EA~7qzWIF zjfDz3+8SxLT9x&dy{?t|JVB%>hj zbaw$;5Zojn|B&|2Nq|OR=SvF4_3E}Y$Ib?-vvP0mMOo5>Pyf^p`>B!%W)x&%wjiVh zA8V$u9xUXK3NgBnPL2mHmjVaF3iTk60EmZL>R}tUR8S~DVbh~RE%_`kSqX>*aV*Pq z&=ySL)jM$)VwZAKXJ)%{Z4}k8ZFg4(`K*OjjHrtdt1f^XJp}Ipssk@^(@26_svzKxc`AC4q6;D63u90w+(*(vl*xNs&hG8H(%4 zZ2^;_$=C+gDVlL(x{@ow8HS^%a?;r{k+po*4@dZzX#eX-nel?&Ye5w>+gZx z>3L3%4axXmk6gTPUgpnUl<4fwq%`S(?bI(zZTOJ8pqmoZyxp}yg8b9n6%|dVLFTha zwgjXi$7>(R<2@frUu{L!w`v~Dst)w3ajODd2ifbdzuqWW6KDF@x_fHdk+y&S&;PkU zo}c~fXCBlbD76t+4oD>F(n8IWt?w+9O~HU=lgdM8ss%ZlQe|8D!K_siThAG+IQoR% zw|Y)`4$4AN{z!k1%`JDgReEH6a#}Xr@3^+MD)H)^L|0yu((tszeG_7C*iR{_-R*LZ zoq!vCu4{{WB`>;#`xc#sz|>xR@x`VO=XMM*9SDE)M}OoU(a$~i zoHs$We2!&T)^EkY#o)yq(`_9ybaS%Oi;!k7q~Ei;JFD%p`wQvb*rBgrpzNop$$w|v znsrvJ=CwBJffUAH2RFapnXLNTst-;JSq`k6m!9#1vKjYm_f}|(aYD>?0Jtle+TAYq z$bK{?M@$=^efe(3)P`#}@N1Fg{Dszur6HE#X9_US|f2ZY$b_?9pxA(yZAAIV5PB9Og zPx?9Ny`uMw-cRb@Km=HUP0en-r*yfEYE1^?WtpnDdu`sC;giQDF7@nz+NT!SlEAD{ zOi~L$mg6-a{fx@JQi=%#MS{Xu{Ttod^$9yUIVm$UGk(5)uQ#JQi1l58Z#S4*{3*P7 z@3!-2#(M17G5>JHXKtJW;@B|CHVqpH5(F0W=){R*?M_OhVsUmGv8A9c|LlrZU6#X^_G>wrZMG`FwvmnCzVfGOMS`0SJ;w+=FCAOJ?gi0IP zR3ppqY-H1db?CZ>8b4<>O%C4l1TYqS`8Nx7!B5JsWd_H2wcI2c`_X08br53Fc-My? zOKq^-b~;V>?jBRy1GY@|*0@(f{QyFKpR^}>NQs}u@{)W#c2K8vbF!V)leAz-Jr69S zU>0ciY0Xpygd}BuTCF%f&!l5ZDj*R0KGYaF^gCJ+Ggsx{D7dZc%ag8yin-VyTm*Ok z=x1GywSZj1E!24|)mOQPXM4bwcY-i7R5+0bd59T=dQ&DfPT?EYb~8_^+h$ot(je!Y z&=5FSzmXkCTrtD4nh2uQuGzd-3!otr+ZM(IxGM;8c_V9* zV?D4c&e;XaVgL+vmgihr+hWmnf$ zt;P#K8Q2%Vi_Ltv2{;cn)D(w(bD@NNxl5CT_JD1drdll~ty}uQWiv0SoOF^rAjCp! z#fqf<2B8j3Np0&akc0-g9pE-<8#0eVfrij|r)3YYsc1no1W??3IaCohw4adK&pxYA z%Rl6#vRP^UiS~NnUCm9Hq}Er)Oqy9@C`yjsGze;YQ!23SVSW;E^Mj-QSj=KAX^gAw zA)Dgs;cbR|U?C8*^DJv*@Co(Dw9LqsD&ol&iwq6A5Non*HOW85%*tNVP>Po|*EsNj zZCMjP)H4+42H#o|i?*Q74+#Jjvn;LyhYSL)kj(nWv_{&NdGAfxz*gJ44E6?c7pCl< zy0xe&_lW2ww*xP!Lwl0+Ag%SA^}VGrz_k7bmZ^lgO(oSS&4 z`uW#nMF!=?(&uGl>#B^cot5$OstonH0aLEixtbpk?H$T35QP|B5|iWa`3aq*p-N*$ zJh9&v@4a~{?!@=V%?1O&0aG4e}(`pG@z_MEd(wh$2l_z zYvNkwXxB^Xtd+#N7^onP2$esw`w02cLZFe9)?|YZygeKFOk%yEF8MZyV)c1Rov!$| zz%2;1j#s?x9?sZJ15;fze)tV_q&+YpfC6K)Dt|cvr z*&G99y)j#<32^m1)@Jg4OgBCy>^H%n@ig0Bufe|BocDCNI)G){Wzhnp&E#qmt<-&k zWh!ISX2ANLAM~ZhdB@(Q7b6&!=Dq^VR*yw{Zn}HZGv$N_Mx7<9sk(igcpv(?31rPZ zH5&8aH}JmHkWZ`ryH)FL$fVpjr*b)Jp05Vbx52!&{e2WQjs*`D=;5{-{?rKM>gP+q zuGPayttm zHYM>kez_m6+;l<{dn(mG>wxj*OQRx*skYP{*kBrQlf6mZyau~zn!}BKpua<{emrrb zXh3~%HCSPFYkSa1y`Pts8}{3)H9(~S&gI5ftZrc)+3v&IV7n;l=^@>18vx-4e5uux zZDEfJe$}Y?V5r5V<~~Y|@0!nqxPCmf2C5=Jfqd3 zll6@ixwc+sbCG9r8#3n1)-eZkePz#8$W#H_*=i0P3g%Fe->8xP$0V$$K?9ynjHW6 z(sr@BPw%8RrFP}^R3~)XMB8jgBKM@$Yu4-Tyxt*+1}43HCU!t4n=9_MT#wkK>5!tF zD3^CRUIw(H4IHD~n`l|3rBnX)vB*_d#lmaJpNyVqM(nt0s5LBcn|%W$bqNo3-1A(G@VRoBR`GJ zc-v;H0g!Qikjgc0hs$Kn&dJ)N&_IrN<) zWofAu)H5h@>1C0({}|N#F*oN8Wo!!bue+Bb-QSXPKi!gXgO|vu4a(3Aq!zM}_a%tPhx&5@wr+Ua!_Mf><7na#WoLf9ps^0A*=UnXb%4?Ai zHOKMqyEzvW)5?vXOW)7A*J1bitjwR?l&Sm6(l;u1bpz!){)v=|B>DVpQ7%-0L1TDLu-STCT)BoN%vulc9|8MvDe>JeI8kswH zyb)D6D8v8%_RiDj;zhi9@hl#^C|Lgj zPu|3XKM=etcoMOwP+LW*BGk~@Hpa9~8`9nBcV>3eP3XdIvPrYadys5)XLb_Um(R|; zUps8m*!7efM$d5TWWa@m+>XtS*wJ=VsT=GlL-r5Tk72fp*I&ohnC+)WHmxpzQC1Gj z8bxc-W0~KLqSmPJ7|2Ob3Y3Jip&wN&5T6(fMZ5xrx?iF1xCQ^y&j&9QW8e zjFiTSXK5wpP-zKp8x=a;ifwMmhg>tTYZu>SOeaTKx-!T*7iuX}qMg3JkZ=|#sHJfH zE{;5KnN?HMDJY^(c}idFdTqiwM{5g$^0PMWKW0(?0rwe(yfp1P&;`P()2?$A&nJT{ z(LhtGr@Wt~C8DV(HvRi)xihtUXt_h%Q5_TpY#!X+RF|dYqDAwcD>@-AGlGfV9+NHX zr3x|Rx*K+p85gr#G>#b@gDe3s^Hr}&_nT`r_g>l5Dzs7Pb8TvB`8nZ(nv9}-!aY$< z@y=tw#~AR49wakj)6p}1G<3qaUDXV(3OUxEWPz@QH>9>X4*~{fRZP|$S3yffpjl~? zW4-)C#i?ylaZZKSQ|wRsfM$oi+cg3s&*5PE_QwFZaSW#b2g4g3CcSi(`zXL`!NS7Qvtpi_ xL}G=^(lUqFEHE(zm`&pIN7}9xR?nMIvIQMH>l7DL0R#X5002ovPDHLkV1hd{HW&Z^ literal 91918 zcmV)nK%KvdP)%6|H00CyzNklMY{F^xY}f@HFO&z3FyKMw{%hN|kW zuK7M#1GdMtkRsfy-CBeAj0 z&hGbUnkN2Ss$KKiQ9IT-*up@Ij4ZXk3By4gwzsy;_w@9>kX(MW&~BlPM3Phsue(J*)3vXwOMa%aqjRUsUDMj8Qafsg zw-6c{>UVc`c1#LTv(bWZBpF>FMP|SjPsIP`s;jPkVNcJNf+W#%WD^$`K2N37O(Ysd zbsbH)s>ND6&K%eRet)zfnH-mBLy;s~l@$UuW+^u|HWiziny=orZEz=AXnfPb$8j8R zY-C%K6}PLSYqGhqd3W`g){fe-sX?v1y?swhOUooJ7_{6Bx8>aR#U+u2n;QePHj-9ryC=eg&ffBwJY&jfDlesLN!28|7ElN}x1durfTJ2pM2k);-o$0rED z&`L7}ps|yF24*od+MS)9t^honKQ6o6EmAC>FNl0l_vT0qUZWSIWq1 zBGTDpxk(6CVk5Ee+TtdnPWAWq{|wzyy5Fe+Hnj3oQ<5~~+?pqv8e4XYt)&KTwPW*v zT77+DcOp^8EHwf(T09=837~U@bs*dy*`fRRV~pP+SICXWlZ#t=`!Ax`#K&s<+F2f6 zM00E3mfx;V)G=#}S!*2B*f`*6(?%n%|0+=9;HS8n8ZZ$f-G+vy$(EMZnp;{sHXo=p zH#hD{)Ws)2SOgwmRThd=y{OiCj9F|fN{7LO+cb@3Ce%Rfabg?&*U{cqACHC~skYj@ z>+NkUWHHlttOYii1rjv0s4?(>W0OeKPawF}+|t^yDGr$uZ!z+@I}wiwPy=*fV3nl? zYZjE}o~~X@4A>k^^SKzUdncud)PU{R8yotsyQ|~tnyR=MJg}syF{r*hbu8$_``G=o z5veBQ+!~uFTU*+Jj?NwQ z+BG-y*Bc*-BXoAQUso58lEvmI!dgE2@nHbRz-@4F$K>GP_MKvUYT))%F1Fh7s{onyS(3Q~F3PVqH6)0SiVrSp&cRp^)3y+uiej{5~H=MJ<5GXHf&=U}X`u%}Bo10r&szJ1N)Q)rQU=z2ux3{&WrDY#fSz3?hl-UBIXq{%sXaV%~ z_J1cBV1))X*X9WZHu|q2nQW_%*PWC(K-rHU*ve5<)93TMU0ppN6cOy2)mA&s$wLVS zgK)tG7yJh$+2Z6jH%=8egGGWC8-g0M_F9@+-K_)LuBu*$wd08$JNmDyz2k!cU4Psg z(wbyz8apQxiWIhN>Ay)-a@8#D+Hvk29+4l9#|M#L%YaDke7v9r!WC5&-O*GXiRgj9 zs!!I7x2kzGPr~@I&7!NLqqDocgH?vWgkUgyJ4udLzgO+39Z%1dAP}c6 z9{2CuwspS;NWTuKiCc?;2LpXuzu3~;;;(+M+VP|w%pyiQ!B<~je;9=I{rIX8Dy48F zUJwX`T#S&u)Y}Yem%4U5?H59_u5MS*r>}@)+{cv%RaF3Q0!zk?-4_T1rRw*o9Z$)@ zEbzX*zPE+A1#Uim3!F<$kw7Q`TuXE79id=I^Y+EsrGA1JV(oas4j$@~<=5a;jtSAo z$2DO^DUa1mV?DlC zb6HOd{CkORGnw=@MUh)-SGjgP-4D;D_^7TZuEvETc|z_fMDnQ;MNrXQBR+>&YUl!) zU0q!-t%*qfMh|8Hw6wG&x;s06rIIBLk}0z>lURjD z&{8wEZr%DakFI7;8ZBDk`5aQf6}HTB*h8zRNUC;l%cX| zsjAP7#}mk}wcgj)H}JZamez=nHL4Bn6Fpe9zA&ySJz3icBWkZCWOx7LF)WTVb1%M6RZbIEMGJljcRDu1>0p*WFVn z7GHnC1sB|kPyh7D$na2SXV(XC<9aZIFDB+tZIGXc^;o+EPY9?HP%&WJvSrKLrl+U> zjd&Tq-@h1-$4khMHRCNquv{(&3kwU7N~Iv1%|fA2pk=`pj;5#*1_{O^k;uoFmY4oD zl};DM=402c^3%!~u($N~G$SDW36ACKGU;>!A{zrSmoF;Ur~9O2eG=MQ+n}wj4H_C6 zV0?Vy&HEmBAcGeA^*BFnUR+$1aE=7S;qad>FE4%6vdFt7T&(S2HDG&sfSN?*Q;iMv zm(R`3f2w2{gH&ILfThqJr85u+P$dF1H8nw9T^&%Q%`glirJ<0`!P4TQjaJ$((S&>d z!NZ5{-Ul%o(4USVsIy7K;TSXGPog!{-QCjnpe-%ubR8i{}(!43h=_G_AgJNU=v7nk0i$!6G7ppySqJD#57 zE(t5$)-)AN(}MH%?tSjIt=qnf*0?X7PP;lL=mMDb+MnqV2&5gnTrx`cuhU;LI9T+FaXV`Lo8lbuKy%U zfTX{@Q|#XC6!+QUenp(MaeP9-iVcihb$vHHaY!XG7XX7smZB=)*p8$iI3bv^voiLs zw86YUEK{t-#d(;Tntr#>=ZgSW6sZOG9_LZp6&~NjXYOTPEatW}HGJ~nM-N^jCgS6{ zo;0h$=l5mB>z0VG!$opF1{QRTuDYdC2`rN<=O9<-Mx!wmZx@f^K}!mG8TNUEdsK5_ zehokqoT%5VnqAw++T9qRihqZs>gU3t@SD*U?NcNL*)!*iHXIs%d`nePRC{G*c}F6V z{7xtoe#yeZd|Ci(ZA@#x_T(Ql?`h8Ce7y0{p(8J%$uG-{Ydh1wuU-_yuYn}XuWW2= z>_<*ULz^su9Nnw%)V{O3o<#vVeh#;Z)I1sopV zxVqGr054*+siEOg*D_yna$=(B%9`xjI1WN3TyiTLoUY1%uBTgpos{P0w~v@t{aGj_V(`cXZDyYA~<+ zgRY`Vc%3y@ljxM$HTUCK>oTbs`&>;4ps9toKHc>NeXc*Cmo!Dj$ML!Ne4TXk*c?z? zl60pzz|JziCYLJ}BsL%Dd8(mlL3f~k`~O9ts~I4*<4HdlVBk(lQO%!0x#2NRN?EE* z+VV-0RV`0isZuV*x`xZRFk~%&CxVrNRu;Y%P}Kp*mIkULu_nCehTutkF69c>#!9vD zK777xf$Vp6J?wV0cFy;7_g*5(uWI0S28XATl1L=v^Upv3>#9ndhK^trCbHku7{wr& zyiX{sIjQW;XMz&6K*gVBDh9>z)qErh>QZ+_nE@5wq!dXy1=x6_W$!+6e{sG@8k%kh zmRev10}3}1;6jaWJG*hMU4k>cP&6xDm%2hB2lnat`T0M+9=ZD3uDAj*p)l5`l;sKl2zv8wv*9WHj=|`IVJVndEYs zjvZ4Jxiz6l@u&jL$pqkYkl#dGT16@VG03tN$mbkbTwa3IN*X3tN-&o-UBhvi)Go-> zR+Q(e0i_~3yl&nt|Hq3Aq$*d{iv!W$P$0^7Y`M9)sThw(uRL<(@O{+X>hTxg*MO~d zoVu&C$QAN0PH%V5e;zx2>`g_(Kr2mV8@|gc2fWBv6{uBTWtqbxaNCVAF|In$)0u#a z2YO+9e>-gJZ-MrDA4D`80)8Dde-Lyn2)KU(aXcjpxi~Wqg^~e_MHePh791FwgrDE@ zF#PI~QCKK|g)pmjcX$8O#Kib}N~L0rcs~8OGT?7*YHHJE>FDU}Oo+OO?Pv+eulub_ z;NqQKkgShD3_;4T={Od6Ib|D7XN-I*Auuc*(%C#@vP-zZi zOF0`#Z0OPAl4%SH^2~B@lpAW5Md+DsAeGDPEGjw0VA0odx$G+pqvQoRYJ6J_*q)Gs z5%Q66ca8yAmbDIk?hu+noNWhe3H4A7=+fJRRQYEe0b*1{+L z=XUtq5ASz#jw)dgVj&UnsE$ptjJ3(q`@f`AYUlK$%z@*f8+$* ze($63z~M1CKAS;+<5s#Wmw@n1mUw6ZstQZI2mukX5=-2rz!6E3%SvZw$EVZjl{YUh zFFQ4Gd+eh|N}j>wr{KWuUAy+qOwW8{c79H!#w-|}B%gsj!EwDNMqISU6XB3JvBFt1 z+^GlZWANO|cENSe?uTcc-v{wf6dVJ<@M};AL_iHRpkLGoQlJhbUkoghdXeWrwU;43 zDS?3tN0Iz^UjhFv4|*vJ7P_Xbkw$plv-iMve)*`BNgI}Fnf1-hEiXY}`!KDa+7dX; z;39z3*C*e&k}b$iv1r%DBg*cc9+0yIFpC+GgJCdz8g56pR1jz+H3SfDf;{8_yj0a6F>XFbwv#!VOnmgcjTc{N&C@;b-?e0!PQ@V9BQFlgh0#V%{i{ zKW@Phdw_l@zYh@(H!?Sq$-FTb41W!Q?KZK|)?CsWusy!R%L}8LK+`OJWN~q^ zTU8XxwsCK#@TNzY5Qj!ouq2A0X=7(hzl7lALIZL$&%fwAc+CqghfDUfgWqov)2ciGD7eF+aK=hwq)LzqDZc(Sa6>)!%Wq66H*5-8~zkXB|PrZ2#y=WT(#+dARKOSZs| z?|cxxe8&)s&n^Mk?ih*%%b`#?UxpPrv=Ur*UFspDI7>^5QX-N3R5F>o7U$upSISo# z!S#rzXjWS>d>{!p^K>l#5zE0*@ov<@C6$|m4ZBW>J)G?=P~5z;JjDChwovo%z-g` z0)oY9a7smxYy&|QKno{e8UqUd@vUFM=We+h(grOJ3Aw-sAnE+?Cr^$Y7E!;N&9=cX z<0gesY5$aI!fS0aucGzs9zQWoVrtOd(}iP$poN=?LZ&Ycu&rv~qD8GGI>GfNkknM! zE@mLWnP^QT;$e_94oWx%av%tWVh(A!B6KuGVDI)G*g4P-E?RXn(+gnOl)uQs-fRX* z60D!HhR~=WBg0YQXk*tTjfwH`XURONHWBQ`xLf;&>+UoqIKx zridv?mYRitrs{rp$#s{)U%mP&xc;(j$f2e1{ye%ib)Y8u!QZ|IAkhmYUmY$89W68@ zq#czqnecTq1V|14;ci}-h1~3eU@Q-z)#kEAKyOKbg(H(0_?ypu5598SBapK+7dar) zb{%!+&Rw^TjGTBs$s&1$__br*F=n?25)*B$^*dKq=5~OlTFWI#Ify}-`GqCe(%uM7 zQRFhoUBpXiV-Ud5LTF*PfEGdO0Dq?}9T^8*b$F!}ZCsWXM&OHqFC4}>ftyn?3$j^2 zIwArW?%D>iNEl8|&A@E70Ob;5#=)+i$}7uA1|k7sJMI+&1KZH|b$^x1=j7V>)`0D7 zCOji&o12<^u}JJ&BjaORF#t+w{R(#vT;{^a0?3$nhwMjUSZ4u*j;IWObn|oI9k03; z2AU-XXi^{yda@hz=AEFo?8IHa8KY}Kd^L>~9IA@U76~Oo*=Pl*NL0JISum#_MQiOa z@@Xp|85S-qKV+pa-14ja@QPfbjPR9&|VI1q`Rmg$DTwgn}CE+13rcE%jievM@8VgoK&P zQbee_fd*ChM>s~QCH~VhG zG|4`btEUgkH3H7e6Ce?Zj58dzHHYBOUVj6;{`q^MLC=AuA}{7ofRY>lU+Z}wC%1yD z#nAF1s|@)am!QqXs3}fpho-lMuZ>~-+zgnL4?}6<0BA^Jqu&DPGQr8k0(|nDKZpPL z#xLOTbQ=7jpk-U8qN=jd*WdpIRaO6JY;1H~Nb1xk{9_*sGv?D_ zCPX{}!!X)hU~_9#CO^$HRp9{y z3@G3ZU4o0Z#NaRA_yV}`vO&<0DFRNBsE5!?!(2YjG~>VUc%P;h}PIO1E0G_Y9?Hx36zQ{_MmG+zj#=;+QG zMZ_rs>SBJ_v7;Y+ejSdT7=c_7c{fGlK_cLrC)aJ01jsQX(?NQ!3qR|)VU+H(EURX< z)qw4^6P(>pbwNvG(WaZrdd>HsAx(g68nB4QTN8liShp}l}fVscr{RaeBh=mEibPi zF#Txnp1t8xv2;N?o7EI8;G~L%^vKaM$mDa-*3t}(kq{`Q0w_)qocuC!o?!&82wG*l z7?>p0n2MD|HkyofIJ%k0y(!44s(~om7_H(m0^=e?f->yhu@z#WD2xn^!*Z^`3yPW5 zCv*3K_EyO&WI@WpG^Ieme{FYn_dT<-vnOgUX${y;cQE%Y5sP28yt4ce)3P)W9fYbC zIruX*280TN+BJK(zCL23FB6viI`cjYA5dHmgyU@9ZSf8BB~{5!gyBP#`bTc2ZCmK=&Cq@La_ z-%h0#Zl0c+91**=Q=8ns)EapD@__%I6A z*a!Zuy-3paf{i;gy|T(+OwrmVOX}ulAcIz#fq?=&HwAVH-A^?L!%G(Y z(-&`rFaGpVSiy*?N($n(qc%0RE(C)9SEW`KKb%@wq9S}xO1!#4r*@pVwdNJWQzjzI z>?i9tlg-T4#p6Hh>1@A#eqp|ese2-qHa52;J$!Ho0--R1TO;^zW3r7j*vP#B4ZX)-vr zB9cJxg>3#hqAp7^46{EPjoyxw$tYQzwT-O?Y^Pica!0z_+TJofH~YJ+6ALx@6m_8B zsonxFp(4xc(*8Pl=PR#;OSU!Q#Kv%bC;@uY00cUBgM=2Fr9~K@CJ95zp~81X1%o20 z_*$A&1SvBO#>B%=nA{I?dJ+_?0EQBTyN=AlN51e=`0>6mD5?PpQ6RKg>W=M$D?Y#P zrs3h^KS2)2u4?#F9W0P*`DA{0XA%~V)OItTYR1Em!=aF~IVVbr+TM#vyxM`)f&$f!`awf*)6sIH zdkoyz00Tz79jy=!2H@zi5lH1rqA<>?jj7*4evqi9jxuNZCth-K||vAHV=Xeh#eCGJ+Y}WjY2F^blorGro)h3FMY4F0VIm zSVT&jeUow)DgAz4*D%*BS-z zX`sfNKx^CzN?kuopd~z1gjlLgS!!gZQ7W!m1i3WFxU}5Z!(gH7X%|ySH2aaaDZnSc zdK-M}&*782wf)V%g@7#X`ZpU;0Ql}@)> zwq2J_r>|;iY`PJj`@?(zO~KkkUl-Kc+uNglbn9p5X8(I~a;g;pErt)hFquqF<2Ae= zsuYE&!#je8ys)&iZ*bS{X-9F-Us+s^;oXiRsnYSOMHn8QhW5rdwABaDtHj_B?kgBl z1r4K}lICa9MO6Pw?x;ffiWu9bT2T-56rZ1|hZ^Z|2v9bztwRpI(|ZpO!z>09c$I@x zw%C}|8|!s}G@WV0b={Xm&h6*koUQ@e=04m&0C!78``F_0(x6H*-&DRLbm(c)Nz4_+ z*<;xZtQJ=m;Le8*LCTb&y>kmRb`63PXo8}G6Ij<6hESTC%-A)HS$YbTz{$>lfn1s~ z{wPL1r@+Bon9>058Uy&JFZ~jJaQ9Jaq(Hc3A#J9%wl*KOZ0nklk+E;4Qt7qLT4YVr zoQp5M__-@9EB`YyGaE&JlnV5L{##mJYHVn1dR|jg(@z%{7Z;!wRH#14%5^$AI{qY; zN__&aE%}Q!4m(+8GP?0E?CQvgMa<{&tYgThjTE1pV(wzD9I{2UDsr`8(|#ISDbo*%e%XK4lFJ$ z9D+@5sc&{*V}l=wMy|#P*xyj&S~@7hOp?(O!?3-CRF#YqDuj3v^QqMI6N;t{b4w|> z_rCq`=)vPi6epl>=Y2h3b-t?nDvX%oG$xAA#cJVKCG4P%>-;!VvuI zfn)HmpZ@{V?ZT+1i-;!KlBx{u*l`$V?v1#JhE3B{s=I^Bq%V#D*Vx#I0kP<?R8n>hM@!z;uYrrPP9Iusq(M1GVL+C`t4>E2*4x@bGb*I}&tu zbx<)1WL8!{cMQ-p1yquxLQpE%7#T+wl#;tC3B)pUp!*yunS%eh+1&y!d+s3Ic^s(VCM`SLp$2a>fE*82|S63%%s`{DniHU8bQY%2M93ds(LqL-; zpwN*>Bz}ND7pg%*L`;=zE?2_me7Cc+qhoGvuFte=UG@3xm4YcB92$or`jrFyTOb+o zfir&+^b*nz7y(uF02+7!HVZ8i0|QPT0znDp=BD8v{{Elf@Ba2*;PB`)x}z#=>uH7? zuRb4M`GQN~C0Fi(tIi*Q)>sfE+!$BVIbOF+6)>dRM%plie0M{A!-1uxrGuM!yf?GO z#$1fLSme55sqlA(Lw)UB7Il{pV0>tyUB0~;-ujBm;59GW1(#jW1bcRM!==|;3pc#{ z)o|sdSAdR_a%^N6X3}|hb@I2nJ^*4B0{x}YBy z3LX@>WecyIp27u6(Aza+zdw+~uli-&(Kox)4O{39$@&-0&CS0LEi;EY6<0O{mvO1W z;-$@G8}V)P^Yizv0}_nCUtC%$&d$w$tG+(*07j%=k|7lsU%<}bOCKGcfNVAm0~j%F z4$3S@RJ8J-*hOmDht`_Pit2U04~{(gF#PGe{~SL5g|9)rXuz)CW_bJCUk`ur|GgW2 z_jhiDiw0U?XImZY?rw%lw)Mem_K{3JKZqN(qfmkxn)!`>1%Bswd*Q9Gyb`WHzX{^L9Fv~W!tLO1+yzp& z2bwxN;hL*2WeN=w$Bv@)wgN|ohT-7;{m|1Gg|4uJ0fL9XT^a#7j{uiVAvqj|$*c_j z`OROzr@wPA%;iaul~)p|$d~o^4}2C^*T?4PW^?3Qtd;ckH2N>R@WSo5C_j&`6uF=d z)j4{g#)|VRveGP;i>^~2F3^WFnat76o(_OfPXd&WFDxzgl1J}QSQ4Pz+ta&_v{4|( zCgF9yxV^pO;pOF}p>=Y^*haxz(_H>IT1xkaL*bXER#HAm^Vuej%kkkUSXh{Yj*fPS zL_!!m!p$we1TqGV>{0==SOeU9``z%)x4#>H@{2oJlfK`*={fLsAN~NmBf6g0-JC{-FP%ohh*`4EZc45Nw=;PNACX(H(da~|FSEfJAoI-SjH#oAo;r>*!gVG z8unrsppFQ7P?2-nzGo-w>}rG&1hg3#0uAR8w!s`{*G~Yrt zoB1(p5N#Cvr;0r7@$Sy9`*lryX)3koBi@UIKaWlAZ z{oUQr-QD%(gNG0Orw9_j28}uxKNJiGiM;+0awr2{(f;WmoN`w1eWXYv8bfaBd+5F{ zZPM&?na12SjNeYDQdi@bw^mh_tP6&uuM@J{Yk0bI*bU8ot zp+ASFhHfYpFzTs?LDF=5aShSbk31~$bI9EmGYjC9mO-}jfW$2Hb##GIvfzOOLr|pr z6Vj}dp|iKUYj|>E{1MoM={}nd*eV2aEELl1p1m&-}jkLw;l1lpCn@#QIDo^<|8XPHi?|^Ts?DjW%Eu`4hM)#Hn?n=Z3=R zFCZG{PE&VxckA5T?AL_b@16$Sl&RU-p~3#G4<=)Y8|D|6Le$YrR&`j(mZV3HpM>SS z4aX*y;gjFE6^_rQmMk(BCp}Nx5=wZ|6@6g~AIC zA3ppDeilV6iqno2JqLNAHzNpMLJLkb^nk~(*cj(VGB<6l?RVw!*+(c-eUt6rUSK6q z$QRy;I1{EaxibJZ=C0E7Ow%$#q2Rah+GkJa+6k#{d2xC9IJ*D;ji3~rdp`!9auUud1sZW9{hJTG3og3&GAI^(U^q}7 z@H@D(buuMeN0u6WE?l{*6B2F-{00UJaAPh}FHp4B)Z`#qUX93U=(sx)#2}!N8k@vb z7f2`)Gzkj%6ztiv9p3tTuY~4^kG0&R^iG?D3*|@2NL-ueUwHoiEG;eHytpu*$N8r5 z@>BP8i;F(9RbOAY9bVhyn(;e=5s?ew7xID?DF45 zhP}zOEcZ-6ja?`fY;kcfuy*6+zVflwjR-xl>XsE@RCUNg>=|RAq2e#c8m8ZR90ny9Z7<(xepw2 zQCTkrggl(Lmu~Hbt|)pDlt)hEESoQP9AoP`6Qc%f&(s3}Vmt4iCs__!YpuyJbTpv( zUn+u5iVP%`r3E3R%JPsT;JG|k3?cOoj7sg=H=z(3|)U*2Ga3^JMlP6CCL>EFu%0)&d#pRw*-Ts z6SiR^Zpn_KQUIQ{y@sjDc{p@%f?9Ip+zWzY<7-fr3sohMI4NtkRbP*IyTi-aVDaR??_kaZ652AxF8Quzx`N6H$fsiu-knqP!~>WAsMJp7-JegZ!B zg|EX5bstixuK}s&yK?`)wuScgwwqSc%RgLRT9!rB?TmO2nv{OO9|i^nE}*XBtdiqZoT7f_|V^c1P5(jSg*G!lfi<_4~{izFM)RlT=o+q*Pv^R*A&RKVuBbe$dTZH?rpDYCk1r7$znr>(l9sT76B=;C;OvNOqjk;jP&!F~7q5XhG#RVD1L(VNiYxas=BB&f@* zIUjzqRtKUwshnx%*BaS5;McFq3Em zE+vnfDl^7_2~|>Vr0kC{We}=2)p0Ye$LOdgu$%rOlgU`?r$p9(?HRRe(~(N0td*7J zlI!p$wLUb}+nVdaH47}P&SZyh(rDoZ^f{2cr6$IbH(6+f*q|EA5L8ld`)%KYx4iA0 z=uX^;6VV5zVPdojg9e7fC5wOy)e~4Q&d=N&i9{bvBof_X!JO6gCyR?*N^+~tk|ScD zy`jDyxt+~hY(myEU9+=sP~^}!u?4#E50{{gt?&f8f!hs=h~22n-=3=df!1O<(@IH-XT@M-KY$?&?m82DB0 zdJ^|W5%A4uq;E=#&BllrC0@ED@`tm6EVfX<$IO3{8zKpB$|F+rC{7NY?U?K_(yb?X zXN*8;x(&De;JfgycmD-E_~;4H@NwNP!eC1re(Rz>xVWzsq6)Gdcpo@a=uA$BWlc|< zY#Zq9{qsN|a8`saJ(nzwvvnoKLZ)dB?d=_YD$Uu92U%&zkEz01^HfsK==ym{yu3{9 z%&)&dPdkxF29QR0Up`Ob2w~jgG|5KyFn}Jyl{=c?9j~|)e(#3!U`xUWL3B>}G;oK-u+#~2Fv-QQM1U5c7xwtax3@VE@?-ou3OJNz_ z3Pw3uP6r0BG?njwHtv2pa%#7J`>XKY_x%+d9-09Pk?r2n0&jcG^WfSG`XH`IOz%Fa z$kv?Td<16|g$0Vtv1;fjROv$po?>Jl(IHnLCD zNN%SD$;J*9r`xJibKg6%!KtAc2=CXONJb?%aLY~c-(Q^y=LK@%eA+)CUx^@l* zdlNWcUI5o#Hi*&mJeZ{nZk8_GaNUKlbD#tM{;?RuY!fCA*x@0s%@{7)l&&a+%N2za{HzfzUIha!cGDuW z9W64-#4yo?#NE+hfQG!5kq6xe@XMe51U~S=4`UQ`hH`S@irroCPw)MGc=46HA*>rL z>l?x`(8F;EqLuc7E4IV?-~KWfXpKrFxHdgG=TFpk{He%?I%BSfGUc0_n{^Qt^;*WA zZdrk-JYaq(y1pamilsfQ+l=F$&1DObNJOHA&jKlDaP4`pfj>{zG?wUmrl5vk=C*Zq z=&@w{W&7^G|D}#)z|NkC^!~Tq3^!c4hcv+PiGE17?S^FM`5^h~prgA3{`{S6z8a8l#oi{!$})*Dpvy2rhGS7SZtd! z48GaYJ=kqH6ozOxDl<|RCq)qfY&K;;iNHe5L5O&Y%sjZo6$W}1KCWvv9Dn$B_&*=| zYqYA-`8(zf1w)|= zEywvL29;t1U3Knz-*}UB<#~O$aV~=v&>`5e1^k^CgRk>)(3*FE9Zka4CI|lF^;f|w zo_9Xd918s4C%3`h|I=T=%;ZrZ&$EF1oQY(xm0biYhp$653;6j8whxA%wb|X%o$&enZ&wjoSbleX}`0vAi{JXHXuMs_13=V|wdDQ*AVH@7|pozqbm@PXG zC5*NXZtDTRu1Wh39CuRLtUun+^wRdO_Fv3QO`fclp5EwlQ>X7jp-T)qG@LVyN)rV@ZfkQ> z^Oy65{I~G$9}CzB)U1}~wyl{==4-Q4Q_24JnDd^uyj*_nWjmmRR+bitv#ORz>maDn zcC^AGp!g!l?M8ttJE{@w?P`Yc(Qz1^Sb{^xh8fRx*+myY0Eu9=fS@*g5X`x8aPm3O zd@(pSm4h#S|5q@TqAv12s#}n^Zy$Vgd1d(0v&H@yv4#_TLDTfkY&L%(VhVaD zI0p(jxOC5UNJfHGV}}=}fV(tWYT+p43kH1PeIJ0Yf9D5`<7lt1gAe}EOW;}kaWIT5 z=*dQqlL%Z*J3tC|fvLs7(fpuj8d*x{%A&hqWngei8wMg=>Aw4itmRC>Z_5xdOT}+m z*6EdPJwV>EV@Eey3~!pBpQq}Hb$PNfr^55KsF$+T-P1dLa%}XS_`S`|Dxgc{O&C>n z`uh8JS&sd}OgiJr3cEm$`M0FxnM@>PvYFee@bw~zt97640)!k2$=Cw%vwL*OVu>V737{eUcr{g#!~ z@=4fa0i#VRTSQ5gKA(SF(|oVZ=Lwzqv}8rt=GT&Iq-_o^G z>f-T3h=G5DJY8NWcx(u216v0NaIAhfIySVWyFO&S?;WpFZhG!TppbqV&WB)qH~8zf zfD&qEI%^8rXNseU4$U}bY7B!{7^Bb5Lu0_l0s;3Q8iLuCJe(Xo4uhRZsFTuQFP>nL zQb&!zPwqPm|A`UR`J#(735hB=av~c2_VUWoM{(nX&DNxBGiGZt7tXew+4^LCcRG`~ zfXo`I%A1;*fwq=L*wNk1@`b|jdf0bp4F2*XpMeRSR7A>Nw5uE5{o1P_p%+=yNeMTA z-o6(g-h(bFs|{rlR+Y6yBa%0SR+^7ldPU?zf|>*8?H+`gnML`)u~D?Ad>8N9xjQ&J zJ#nkojcS7hrliwpDy&|>^EGHa$fBu;BrFmTQamC{-64xnip683D&lW!Y9qCU-}^&oXw!8pyJeZ7l-LCA~7r$9r?}s+&_99Jv*8|F-n@jw0pqs#I!) z+6Fo4d`TKQF$#Wv2)g^WLqU$fM?d{_xb5L#oPB;`@Zr@rJ{w+iQ3n#Y^DHGv^Tol} zGze~>kuxooijEzmZ4<8z$mmQ47Bi}{P zncK*s@&KtoR=)rbErDU=%Pv}2SQx;`Z}W9nWw?ogX+={3K@Gwf1=MxT$z;N|NfO9!rjBO7?EeH&NfE;<%=%7@SC&qGao@d zP!d*W&0^amR-1z0K(5`rlBC^KG)n=}Ok2nlrH7A=!OT()etzE(_}|+ffFh}RVDJ+6 zLb&FUnY{B$*Y;yOL08pdw~OHOc2=l{ES60>tYA z(BI!HjU6Ag_a7Sy)i*ajzp1hQNBEiMg@v&m=nw(!_V@SCYN97)6Z zG^k4=j}wbhYeCkS1Wz-ST5d@ulbPwMnO~Cdq;wW3P6BYeLlGjEJfon}bJGon!_+n1 zCBj|7;4R&jf3G^JIWgVh_h2WP}Ayrk%Mi(IT7HJL=x`{Y7s6{3JjkdL)8(-T-Q{7XeUZin=5WNQKEV6)j7=_ajq6%}qmL=@8_W zhe1IyN3@hvWyM7cMZyI*Jw7&m@#yH-gv{l!-NyhkV(KK}N)(X%9Lz_!`GyvV?h#bWLS=U?`X`|sa(b0)I{lCC<6<;YxnjS3JfCN8NV zz=iSo?|JPN@R}R027h)I0#XW!=!U9&*Fk*XIjo})1=d}~z=?;uuj9w*hYM5jvBG5u zgAbB11;wR@pfEcOL45L$_UGWwKl}-EVscj7z32R&PEXHWKQl9<7)I$7F!4GoA@Ach zH#bv+^b^!3jus;Vgp@=}%^&bH651v!1i_7EtFvAWs*P3(0m26!y8ofS#*mpR8U~-T zSgYQWEsUn-CMX&u7~HzGseen~s}3GKXm)mV^dwsAUpF;B<65TWB7kZ5+Og`=FK?2q zMNhAWwc53FidG)ktsH(vITQ{l(MWXV(MKQsG-7LM+t#fscinT(m(X1|ni?A1qeqTa zZ%(dw9jB_XG((|ngIlB9cMd+Z|KNdMd|ewi0EIRgru5+;#99)|Q_SUZK%0aR7jO~O zq`iCh{?opF``$A*HwSA`ts2z&dOH7jYJB>iUAF-5c2Pr)Qxsm%pT0D%PmWLvK7E;yy;m;4jhd=Wx7|!8e z>k{)46s8HNvJKR+OBT_(iH79&iuuyb7>Ftfi+Xbwio)jZD_WkQWL4ng{%$~5A4bpZ zI-KM|*1(7$is%WK*Wclyg92`^L$d|wYHxwQwj?-a5y1^z88Z*EKLB#H4kKTFrk$lC zkh$!yWTEBeu>3esedq>-7#CM8Ey1>~I%uyCEBhZk;vPFb-Eq}5&%bneW%29jbc%G> zzQVq$$6T-{F;d(Dz&E zLhjPVXl;*fGVcRTSa;Oof}-pZ9zE}v8;Ms}_2Xg=L1X>!Q0 zj9|8q_b;w2#eJc`wUKz_dJG!A$QSm%ptry0Ezf?=vu{u|CEM88NXoYJqCCnKmqrzC zJOQ{fxO4CiX69yJMV2{rrDCA!hVaAqq{h%sAwS?gMAx1o-V4FpMG;l_t3DfjRi-fBynbEElOG3=aX2E*s}J zF-Tu>qOm%qvAOYk3-j|g8$~j2S+HQ!f?5sOswOH15Uf-tbr{{aeYmKfk74}?r*d46 z+hHmnREo2l%EHw61Z>^X1+A^kU==dxa-!RSR)8LfGl_80%OYn%W=%{LCVS*coPR@3 z59fJ+h4jhWw2LX&+S?7mU>F{J=#V-(KHlHd+K$G_;yvVIZou<1%-gYN_vNyxT&+?O zt3urXZC-LE^NG(tJ21D8Tu*$ih0(wW22OgXrl!7-%jE$ooR$+qUhcWqUq}D`!H})r zPBbPz6pn@e07>Y}O~Y)o9lO3zDzRck1R^>S5gCssP7=`IhX?}5Jo%*ZJ3kT96oo#K zIH=r%{8IuN4Ky83pU!$kP;*a~6bsN|nRe5}`1n9D6#U(IBK{(Df3Ik6ZC3HKEvTxJ zDHMvH>*eg;yF1#_*8C~tEgR6nEjMpr*Tfrpc4>vXj^p9O@8tLUWPJXELqjLNO?@h= z`A!ey&`owPxZwPEO^;9hODUIzx4r2`=gq(WVmTg-;wFi&6~t(HtOGZ@1XJN)RmrZX zIi~tfcDd0Dz)exg&OmnLA+Q&QK(kiBFfpJJY=ocOeFFaF3qOS;Q)$)_%@M;SQm|d> zv=#6N?RZ`6orPTfFLK#jQA9vDHK^5qZ4J2Ljh@bAPV^59gpqT(3N1O?%TBMjOnec{ zEF!qg&O={+A0*-tkn9paku27NA)J^o)^}79)|0>@268-o3WE`P5Ur>H5UWQVOHXGj z2D|dkUH3d9$^PK;pY@#UQWGb~?lz5*v?g-LB7MF6{T;gB_vw|DAU{<*T1HFj!<|ANC1fMN3Ty& z5?3Qm5xFu1yEs~>gQjJ@6kX0YwzakPY~4E0iMTTyjYbLs+xp)=Jv04EFA%Uc`soR* zQL}7G7Q7$6Kk|EM#g}$9H#Pr!a$<56MC(H@7!i*r+~;2N+;@!(9s5{nehS|D#uqz( z^!qQBV-Y`;&>{;b+98J|x*COEnfpZ%){S1j`uFPh+z4dL)}&lfsa^j$9{6$arfxGhaP^!0WR$=hBj2mQpy`fyWg0v}pxpd%%r z=nNCRIYYW>mdtBIRHp!tLicm@0Wf9`LeR~Cg~2K6rSbjy#^GQ7`!+Z*kwI$K4@HMn zehN?%^}s~W;SPZj-cJ__`Mbqu+nk+xYQT182a?Fga520Zfh{R|c`~bwqGn#s7zGxn zS(#lfW{^c+3mQ^kIEL~H+fL2+C@nA9+!yni-xFZ&i{d+E-4a&$Wp$CYOOPg6A z)qt=TD0mXDE9nSsxOiI-gkP4)WZG%*q7`IOn>wAPr6@AXQL9P-rpMM=WZrvK-+BPL zAwZq-xfF3qt6pop&+p}^NX+_FnMH>`yVS4*e{{%=D;Y*&dUmG1WRzH{hb_`!DyUEe zZoo*!vXx8jC=qrTd6pL!msaLx=RYd~udF_;p&=SKOS%6XA0F<0&2L|6zxR)SPpJzd zm#Tztyt~04X-7~?qIu^NQ~+tGISkZz8j#JZTBOV*?S0G1kqpWbsE z{^9dKfrC>SoI5HMZ63Xm#Ajs*y~s)8My7Ohc0qrC-!~>E#vk;`?rN*I25cKyY!X>R z?d|Q&Xbn9_0GhPg9R;SIz@SReVC3WkTa>#8`@u)KNYoGpg9*fmsL@tjEII>1CPgl} zB7s+CKhwl_B|l5xCC<&ZO$hsaFwoT@PmGQ_4?l7s*xucDK`3)nK*uwW`7A zOf5D3xGb7EOKWcB@>r~w3|swvt^g&bZ7d0!j@(&vJylJmzy*sSZ)63Q@2h?vmo^>+ zqo=mg-Q9g`bY$$m5%ih+zHQq;eKhR<=IrFu)h~I$h4%aY><^TNL<~X60)L_#AkwBx!mR<@*?}9?l2Z8pXIr*xc@Dayy*T+T z-ZfNz>*QLRr|9@v^W{K_BmY0^&7!gII zvh<lkHQ=3kRxC7m zjiq*~byp2?r`+eclAie`hS3#>SCu`?8wgb0GV4|Z5~^O)E*6SvPfzbyI+gjo6DNje zX}=&Xw*H>3e;Yb>{H51jwZr`2U%o|cYi&g9(1Adt1>{H@Mn7?!NqU{pvJ$h>U5Agk zOiIj1e@Xc<$c#J;_R!3v zp584#J9_lc>oCBy8HGb@!1g!~8Fy(Hf$cahwilpl8YSY|b7Ca1d(yHoEwsvzZ!6g@ z9347IB}}lbzZaas3WoO$jFc9bAf-YwM!KI(Rxc)pW(ND&b~(&R)XS6slLRKZCauj4 zkgQKg4?TFlH8gy(_kv3Wsx~##E-pU}w@QsmnRsNg2 zhDY;We+{V77-Nt@sf*W5EH9^Cc>jI(KZ?1ujpwVGXnSI8&fNajF086ck491ZQ~+RAUiA4TA^1B>ZIG z7<}Y&KZQp|Ghk~$mde2*15CoeWt$%hz<_L*97FBfIxrWni~r%tv5^UuKwU$%8nB(= z!SbLcCnrxvB9VJ=!Mzrvq~xZRHPBcGZc1}t3j`Rr8X6y+ znVC6)f96N4t+0LPU=RW5c}V&@x~|D=0Z4K=(sv3l$lha0nUCWjCxA#6QOvTXwZ3~< z?V4`ney)E0`WD?OU~`(s*R$N@DyvO~%5z-r`PDQ7i~3afG;fO$0TENNB}t|OJ# z@qVAwRJ#ODej4&qkAOY<2>6^7xWz2aFhBf!-%0rAFWd$X3}c`m5W-E)0>_qEH!2ot z5^gBD*9L-ab88!=wY>1aqmSGJ8yDo)fUR~3Hgri{;VF*o+`fIw!s5bSBwk!a)G3m3 z2fKhW*Qq5pQ$aT*n=Qil_!wZs5;{9uK}Qb7vC(p~3n2S6kb^N|@mLiCcS~K7>n1V9 zQwkAMpGb{#$cbuZB9-k@B&<4j-TeTyn0o2Jj@^$=j87b-h1%D@Wc0FPB&#?OEN?<@LM?GDr;zmz#Z9S`q_YSa-OYQ9LUU=(U-#Y*5SH1j-m)`We z3ys{uwKEgr{~Yn_p%4GnpV?PjexZ`jXFw0tffi^2J>0}{%p^(W{1;E#Lr{~Mo}c6v zSs{CI{2?%B4?)0~2Gg*>MN94H4^F^`KlMXqsmcBjzQ4;-e`sUzEH*JW91MWSKA(RH zKkE(CQ&aZ=7fYz6cGQ6Fae*69ono<6{9bcYeDqA zB|R~_1l7 zs|GR-V6q21UY=PM?^OXGxtx~aS##^9c~p3`je`j5ae(E|Bd^D?RmMb?tAWnD_EnYh zRrjrG7%i_2PVnFj2RxYq5N^Iys=M}@t6uQD>#ly@$nnEB-1?*MU27N9zQ1_yJDle~ z_d2DBk!uMzC|9Sx7Hw=iWl1jcePra>F6U4+2|=we3%Riez?wM>8d`0VRRqc31h+jr z4gdV5U%>rCOZYqTwA?sk)+42&(dY7j8PUrQg~RfWojX1|Iy&+hN0h?VR%i{_9``{h z@fb+3Tbf%QYHMwK)8zD&hKECaNz3tf7O0Xrag3H6^>SQVScH}NIT-BghGaYjPBD$a zuL5iDrxVE>h#M{7NYVg{KXFFZ=b$#GEJ>adE=CR7+JO%KCOS#5X z_3o?Qq}JQGWUpBZT_21Tmkh%_bl{-#@BB z-Jb*>T5F0HW#jI>mn*x1q5#%=7K#gypV$w^{Bh9iB_>j8D9v!kgG2By|Mfk1;OHV~ zAss9cmtuW)T;AeOA-OAo*Z3Kgfq{XqVIb=*$oJZ7i}7nm4cN~55Hm>5gPV?lg3<9gSVgaI>ki5S7vdg1GYs znH$6XCWpHoB67+W2)-8Yri77FbZP37K}cl`>DY-e*RX6T_-GSy=VqoVThqetaZJ}bZIg)fl*f*FdPD z*rf7XUtdq4_UhT$SrY($Z5_QDu+iI5RuDfA5~X1Sr>Jayd(pRfW4V!X=U` zq&#yoRX?1VT!v!406VvKLnwe#*G6DtayAx^l=>oI5u`~XeFS(iFQ2)r`5&GZ_<}kd zJaiDg^0n{5{Blw92O{`ZDiaIgWjiVhJTT5~4Y#&7VOBa#b;5cevk@?@{dq00t!L?- zj%V8_Sg=v5$J)oLpW_)c8(C@qRoNkB>jxv$tY@bLp-_O@?LkvR18nQriqYwMjDY%( z?@!=ak7kqx7J7p=>+tU-U^}?QSj4EZ(N%7Nxr;l%M{@Q?rU@9^-UQP2aF1gi7UEm{pSx~yK~XG!pB z>sdV;fy>%xX9b{6pW3m}S#1rTEwDY7>$zSfLp7jPkC*qmCy%sV(k}}Hm0RFcHUZb= z&52K*JPD&ilhE7W2QBUGxPJs#RRJToNG+LaOep1tJ`-+OU@U{NcnpDUKj`KxQV=-| z7}dkwhv(q$KlMEXwPh0218Ns!TEMQcYuTbmUgClYibNF@N_SVc)7skl_Tk~-{bH@w zf(12Td*Tn`+m@D=^08QKUsp%ZwX?G`9jc;QGGj-W0vdNk7|1a_SoBIU!iAuAY~&

cAks6o;9~o`BXJ9d5^DWv8@MU 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 P00000NkvXXu0mjffH?Fz literal 3945 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 DKvl3w diff --git a/iron-tauri-client/src-tauri/icons/Square71x71Logo.png b/iron-tauri-client/src-tauri/icons/Square71x71Logo.png index 0cdc261210ff26639f7e48168acff8736f372d51..4b5f506bb480cb63ad4552a13829a0c0fb0d76d0 100644 GIT binary patch literal 5918 zcmV+(7vboMP)7!2_=%neBt5E&SJ~`I7!x{J_86YQMbCc6|-YH$O(B{Fn6UJmaDd^>a+V z@^6?tBVcE~r?Uv{QivS_BZDA)A6Ko@0Pg<3#Qjg+qfa058BP;0=WzJv7Mj%#q+>rd zV1)5TY=EM0krGn95nG?Q35b-TwR!oU5FnB0AYHI=^+T5cI$_ED7*zPe!lo}D%_+XhJN%@qnB#obOn0nR5!lm~U*nRx(uo#9&JVnbKvEW|Ht3^rTGkaj3h?j(I-NFJ zNMWQ;Vz7P-H*a6TT+KqFe;A@~1f66N=pO}g1GHPxrZx$s>+p^Y08F4_Kzbr`^Um9T zYHYD$fDt}0!~*Ni|6#m&8>0maYwHeN*G0#bNDu(eW;+<1oxy|qS5PXI&{rD9(gLs` z2jJ{F2JAizr1NBw>jaX!0aDLJ5j7~>kMXh|8(2$gi@yjf_}O1XGDY^gjH#8c@zV4G z43AEz9XO7IR4S#I(UBI$rVe8Ik4~Z12A0be92p

vO#k1K`62Z5blSxD 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�vq=`?(cQB*mSQ;ER5ae_nNL}K_Rsk)-P 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

4HE4Xv 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 z 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�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

*CSy9zgj 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

l>gBkTz^cg@Wyd= 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Ǚ_m&1hg~Fcj%)8DE$^0?m4`C^L$)Bj?$B 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 z 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

    2R4O}|>gs^o`7Gv1lEKvF;uB~X$i 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¥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

    qFpao)r!=fej)c4#z7eLc>kHd%$>2(B(W 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/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 z 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

    &X7QTl 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

    lu|0?8pj|4C6hC{S68n?p_ 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%0DWL(}hiS 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

    HME|<$`iA|gjN`QN3ZEdZAf&RV^Rmzo@ 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

    Tw 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

    AmP|!s@pY!tzu&^+PDL^s!QxJC$qppdHt1Q4d z#4Q|DUa3+Qe!X`RrZ63O!C)A|J{vCC-Uh8PKiq!rad>2S0bdsalSVD`;iUEwnTG~1 zDjXuinF%;nIaoym$_3=dFU$eQ~)s)Kg`+SPW z=e;eFNZzKa`WHqzq=q9T|kklHt->Ew^Gyv6j$LbvV z=%$0==QcK>EW$Ng6Y!EN)`O zq7zVd1nPVc5w8O5@9T%5fgxybZpGALh-U(*Qb%#cj@5TkYJ%!qv;~I|Pe?{lkb}f@ ztYFSR$1DEmH=DSutGt&Im4IF3VF9Wfs3IsiHIs+A`82d377+1Nq1lh#Kx-0mr3y^U zFY>88oYTJ%;B&>Et?U6bh6AGCz^z}BllvUjg!_-Drl!W=_ZJd!fo^MSTaV}X=Oe?z zmn<$W($r=H&y8LxmxnM#`ONOF?w9)gzF*+loP$45c)A)D06*CS1N|E;%e-Y|WVDwM zcvrRw9p*2>u%K$1b}pCQ?)CYn@%Em_{iI984nZf@-qrs1qTpV790`tyxI)k-jjwqA0B}UL@<>X z68HfVBpSR+kKBGLAfnj@x@h$!{(9umCNw1jGYA@OvsS zfFXg7-pRzwJQPgQLn>$C)2VgWrrLkR78Kf@(_jFuLSPNeM9k&*Q=6Kbf-}=I-zG5d z_h19~DhNly(MU9U`|RxOfY;}%)<&O+EDy@RZBLAkH=!r+Z1fENqe8vq4O61m6u@IR z;b`?)JQn*r3jf7;ze;VL6o<oq*d8&w=4Zw_o$}-Wy%^=JR?UZut$t{jZ7kU@ETJzGWL+xbs33TtC!W^cqTV zT`Q`bg^SIJPC;Z4BEc{!f+Xa#2tH;Oxl-d*c_jRV7dWzL$FaafaC0GBf!WC!jFS@( z3v1xTaHbEz!LY{;5lt0eN;&XW$Kkr&t?;MM zyAb-L=m+N~@qo)wAuH6hfyS!i&QvzWn?}#@knUBeMbA}m#}?kOQ$BmB8s(a#h(AKm=PlH3wA-kkB*m z$In~`FMC=yMD!|DN*Gh4+w3t6c;G|^zH`qEl#M1X6x6&!4oViuyzNDeFw_b;^e0 z7)hCM^L;0vsKt23!?Fs{-=xB;uigUB*bsqGHH8_ADpc`zRV4vQpWZ0BU!#6xP@>8DX7Pykwh8jMu6{?*X)AlUA7(~ z2>v-$O5J(*l%bQeCj96($6(ry@x~pf6nSecZ`_%?3b%)9$UE?@BdGv3UHAR$_G>ZP(R3`dMGJUBcH_Z%Dp z1u+fN3Ib+8p+zskA3c2to_9$HL|Ga%lP3HJPkT;RdR&#f;v5XDl*7?P{Mo;k^-ajH z<0z*NL8(1oCr0J`DheJ?CD7W^c73BUSyKRycA9Y;8yhz*9!Q?u!gPylf`Q=U8v9Y9 zNpo`(70X;hF*b&G%r&X?q|`EZp<$y`orhIHD^0rWSj7;!dj+GIb@DIgY&#e4BMo@wzaI8!Z`Nt&M$yzNZLIH&$g&Edl3QKX9k18Zg`x+0CzoMEYJLYza>)8%2~g+ zSSVCi)L>75?Fm~6NZgH_j1t5+=QEuY)b!WqVR}V2Pzh{ z_qIWIN4F^Tb*uZ_CL3U9UZ#&xS-2H?F8HN$Mj-|rEo~5w#$hHk3rrpxT{gn=h`7Td za16Zw57iB5LHNzdD(vWHu(OTA96En~-oR8bGtl1}fVVtn2kbmtfM4Bz06n4#Wbw>d zice6jQHwDuRb8>5IpDxLeErs*1avmXVLW3h-@g5@Gn<|b4s7VVetK&9!+iMb?`i=A zfTtFU#nFJ@_X|VUUyNG7k!(Xti#@=F1S

    ?JKuXoE&lW|a1tz3C~yVd^G^z`%?89XE} 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 XBa@{W4;9neib#h9&S!UK#=-kfKD)K?%V&zMf_o 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

    C;e5mBZn}Asz7%&Ez3^efV_*{1grVm!Q*a# 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 Y4=^OX3|AcE0RR9107*qoM6N<$f)=)-jQ{`u diff --git a/iron-tauri-client/src-tauri/icons/icon.png b/iron-tauri-client/src-tauri/icons/icon.png index 6263b98c2c7ece697b0454c8aa00759464bec5c9..fb1e8bd5ee600f4f80aff25294a990e88be01027 100644 GIT binary patch literal 135327 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∋BO7|Od*wiLJ4ME-Puxk&@J8>~lF#t^ts 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¬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

    VecrB92E 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

    %-GB?$Yd4ikYs*ItWj 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 V2atbbW{Us-002ovPDHLkV1g(1l7#>O diff --git a/iron-web-client/src/app/login/login.component.ts b/iron-web-client/src/app/login/login.component.ts index 7dc0d3ca..69cdbd47 100644 --- a/iron-web-client/src/app/login/login.component.ts +++ b/iron-web-client/src/app/login/login.component.ts @@ -10,7 +10,7 @@ import {SessionService} from "../services/session.service"; templateUrl: './login.component.html', styleUrls: ['./login.component.scss'] }) -export class LoginComponent implements OnInit { +export class LoginComponent { currentSession: Session; @@ -24,12 +24,6 @@ export class LoginComponent implements OnInit { this.sessionService.currentSession$.subscribe(session => this.currentSession = session); } - ngOnInit(): void { - this.form.get('username')?.setValue('Administrator'); - this.form.get('password')?.setValue('DevoLabs123!'); - this.form.get('host')?.setValue('10.10.0.3:3389'); - } - connect() { this.snackBar.open('Connection in progress...', '', {duration: 1000}); diff --git a/iron-web-client/src/assets/.gitignore b/iron-web-client/src/assets/.gitignore new file mode 100644 index 00000000..5fff1d9c --- /dev/null +++ b/iron-web-client/src/assets/.gitignore @@ -0,0 +1 @@ +pkg From d34870902ee82d69db968d3498f053dffc8d6cd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Nov 2022 11:14:30 -0500 Subject: [PATCH 0094/1273] build(deps): bump engine.io from 6.2.0 to 6.2.1 in /iron-web-client (#53) Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/socketio/engine.io/releases) - [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/engine.io/compare/6.2.0...6.2.1) --- updated-dependencies: - dependency-name: engine.io dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- iron-web-client/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/iron-web-client/package-lock.json b/iron-web-client/package-lock.json index 0409d75e..dbaa7b6c 100644 --- a/iron-web-client/package-lock.json +++ b/iron-web-client/package-lock.json @@ -4945,9 +4945,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -15427,9 +15427,9 @@ } }, "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", From 440f5de4496e901298321eb8bca7ed5db2a4e8f7 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Thu, 15 Dec 2022 09:03:50 -0500 Subject: [PATCH 0095/1273] feat: change Angular client by Svelte Client (#56) --- iron-svelte-client/.eslintignore | 13 + iron-svelte-client/.eslintrc.cjs | 20 + iron-svelte-client/.gitignore | 10 + iron-svelte-client/.npmrc | 1 + iron-svelte-client/.prettierignore | 13 + iron-svelte-client/.prettierrc | 9 + iron-svelte-client/README.md | 15 + iron-svelte-client/env.development | 1 + iron-svelte-client/env.tauri | 1 + iron-svelte-client/package-lock.json | 5731 +++++++++++++++++ iron-svelte-client/package.json | 44 + iron-svelte-client/src/app.d.ts | 9 + iron-svelte-client/src/app.html | 18 + iron-svelte-client/src/lib/login/login.css | 4 + iron-svelte-client/src/lib/login/login.svelte | 77 + .../lib/remote-screen/remote-screen.svelte | 95 + iron-svelte-client/src/models/desktop-size.ts | 4 + iron-svelte-client/src/models/rect.ts | 7 + iron-svelte-client/src/models/session.ts | 16 + iron-svelte-client/src/routes/+layout.ts | 2 + iron-svelte-client/src/routes/+page.svelte | 4 + .../src/routes/session/+page.svelte | 10 + .../src/services/server-bridge.service.ts | 41 + .../src/services/services-injector.ts | 12 + .../src/services/session.service.ts | 35 + .../src/services/tauri-bridge.service.ts | 61 + .../src/services/user-interaction-service.ts | 25 + .../src/services/wasm-bridge.service.ts | 38 + .../static/beercss/beer.min.css | 1 + iron-svelte-client/static/beercss/beer.min.js | 1 + iron-svelte-client/static/favicon.png | Bin 0 -> 12640 bytes .../static/material-icons/LICENSE | 202 + .../static/material-icons/filled.css | 24 + .../static/material-icons/index.css | 124 + .../material-icons-outlined.woff2 | Bin 0 -> 155276 bytes .../material-icons/material-icons-round.woff2 | Bin 0 -> 173620 bytes .../material-icons/material-icons-sharp.woff2 | Bin 0 -> 135984 bytes .../material-icons-two-tone.woff2 | Bin 0 -> 215704 bytes .../material-icons/material-icons.woff2 | Bin 0 -> 128352 bytes .../static/material-icons/outlined.css | 24 + .../static/material-icons/round.css | 24 + .../static/material-icons/sharp.css | 24 + .../static/material-icons/two-tone.css | 24 + iron-svelte-client/static/theme.css | 59 + iron-svelte-client/svelte.config.js | 24 + iron-svelte-client/tsconfig.json | 18 + iron-svelte-client/vite.config.ts | 11 + iron-tauri-client/README.md | 14 +- iron-tauri-client/src-tauri/tauri.conf.json | 8 +- 49 files changed, 6891 insertions(+), 7 deletions(-) create mode 100644 iron-svelte-client/.eslintignore create mode 100644 iron-svelte-client/.eslintrc.cjs create mode 100644 iron-svelte-client/.gitignore create mode 100644 iron-svelte-client/.npmrc create mode 100644 iron-svelte-client/.prettierignore create mode 100644 iron-svelte-client/.prettierrc create mode 100644 iron-svelte-client/README.md create mode 100644 iron-svelte-client/env.development create mode 100644 iron-svelte-client/env.tauri create mode 100644 iron-svelte-client/package-lock.json create mode 100644 iron-svelte-client/package.json create mode 100644 iron-svelte-client/src/app.d.ts create mode 100644 iron-svelte-client/src/app.html create mode 100644 iron-svelte-client/src/lib/login/login.css create mode 100644 iron-svelte-client/src/lib/login/login.svelte create mode 100644 iron-svelte-client/src/lib/remote-screen/remote-screen.svelte create mode 100644 iron-svelte-client/src/models/desktop-size.ts create mode 100644 iron-svelte-client/src/models/rect.ts create mode 100644 iron-svelte-client/src/models/session.ts create mode 100644 iron-svelte-client/src/routes/+layout.ts create mode 100644 iron-svelte-client/src/routes/+page.svelte create mode 100644 iron-svelte-client/src/routes/session/+page.svelte create mode 100644 iron-svelte-client/src/services/server-bridge.service.ts create mode 100644 iron-svelte-client/src/services/services-injector.ts create mode 100644 iron-svelte-client/src/services/session.service.ts create mode 100644 iron-svelte-client/src/services/tauri-bridge.service.ts create mode 100644 iron-svelte-client/src/services/user-interaction-service.ts create mode 100644 iron-svelte-client/src/services/wasm-bridge.service.ts create mode 100644 iron-svelte-client/static/beercss/beer.min.css create mode 100644 iron-svelte-client/static/beercss/beer.min.js create mode 100644 iron-svelte-client/static/favicon.png create mode 100644 iron-svelte-client/static/material-icons/LICENSE create mode 100644 iron-svelte-client/static/material-icons/filled.css create mode 100644 iron-svelte-client/static/material-icons/index.css create mode 100644 iron-svelte-client/static/material-icons/material-icons-outlined.woff2 create mode 100644 iron-svelte-client/static/material-icons/material-icons-round.woff2 create mode 100644 iron-svelte-client/static/material-icons/material-icons-sharp.woff2 create mode 100644 iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 create mode 100644 iron-svelte-client/static/material-icons/material-icons.woff2 create mode 100644 iron-svelte-client/static/material-icons/outlined.css create mode 100644 iron-svelte-client/static/material-icons/round.css create mode 100644 iron-svelte-client/static/material-icons/sharp.css create mode 100644 iron-svelte-client/static/material-icons/two-tone.css create mode 100644 iron-svelte-client/static/theme.css create mode 100644 iron-svelte-client/svelte.config.js create mode 100644 iron-svelte-client/tsconfig.json create mode 100644 iron-svelte-client/vite.config.ts diff --git a/iron-svelte-client/.eslintignore b/iron-svelte-client/.eslintignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/iron-svelte-client/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/iron-svelte-client/.eslintrc.cjs b/iron-svelte-client/.eslintrc.cjs new file mode 100644 index 00000000..3ccf435f --- /dev/null +++ b/iron-svelte-client/.eslintrc.cjs @@ -0,0 +1,20 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], + plugins: ['svelte3', '@typescript-eslint'], + ignorePatterns: ['*.cjs'], + overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], + settings: { + 'svelte3/typescript': () => require('typescript') + }, + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020 + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/iron-svelte-client/.gitignore b/iron-svelte-client/.gitignore new file mode 100644 index 00000000..6635cf55 --- /dev/null +++ b/iron-svelte-client/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/iron-svelte-client/.npmrc b/iron-svelte-client/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/iron-svelte-client/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/iron-svelte-client/.prettierignore b/iron-svelte-client/.prettierignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/iron-svelte-client/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/iron-svelte-client/.prettierrc b/iron-svelte-client/.prettierrc new file mode 100644 index 00000000..a77fddea --- /dev/null +++ b/iron-svelte-client/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/iron-svelte-client/README.md b/iron-svelte-client/README.md new file mode 100644 index 00000000..1b09bf7d --- /dev/null +++ b/iron-svelte-client/README.md @@ -0,0 +1,15 @@ +SvelteKit UI for IronRDP. + +The client is used both for Tauri Desktop App and Browser App. + +## Tauri + +Please [read the Readme](../iron-tauri-client/) from `iron-tauri-client` + +## Browser + +- Run `npm install` +- Run dev server by `npm run dev` +- Build dist files by `npm run build` + +Files are builded in `./iron-svelte-client/build/browser` \ No newline at end of file diff --git a/iron-svelte-client/env.development b/iron-svelte-client/env.development new file mode 100644 index 00000000..72731839 --- /dev/null +++ b/iron-svelte-client/env.development @@ -0,0 +1 @@ +export pnpm run dev \ No newline at end of file diff --git a/iron-svelte-client/env.tauri b/iron-svelte-client/env.tauri new file mode 100644 index 00000000..e5e4bd42 --- /dev/null +++ b/iron-svelte-client/env.tauri @@ -0,0 +1 @@ +export MODE=tauri && pnpm run build \ No newline at end of file diff --git a/iron-svelte-client/package-lock.json b/iron-svelte-client/package-lock.json new file mode 100644 index 00000000..303c1892 --- /dev/null +++ b/iron-svelte-client/package-lock.json @@ -0,0 +1,5731 @@ +{ + "name": "iron-svelte-client", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "iron-svelte-client", + "version": "0.0.1", + "devDependencies": { + "@material-design-icons/font": "^0.14.2", + "@rollup/plugin-replace": "^5.0.1", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.48", + "@sveltejs/kit": "next", + "@tauri-apps/api": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "beercss": "^2.3.0", + "cross-env": "7.0.3", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^4.0.0", + "guid-typescript": "^1.0.9", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "rxjs": "^7.5.7", + "svelte": "^3.44.0", + "svelte-check": "^2.7.1", + "svelte-preprocess": "^4.10.6", + "tslib": "^2.3.1", + "typescript": "^4.7.4", + "vite": "^3.1.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", + "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", + "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@material-design-icons/font": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", + "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "1.0.0-next.89", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", + "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^2.1.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.48", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", + "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", + "dev": true + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.561", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", + "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.3.1", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^4.2.0", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "mime": "^3.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.5.1", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "5.12.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "svelte": "^3.44.0", + "vite": "^3.2.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", + "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.2" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@swc/core": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", + "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", + "dev": true, + "hasInstallScript": true, + "bin": { + "swcx": "run_swcx.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.20", + "@swc/core-darwin-x64": "1.3.20", + "@swc/core-linux-arm-gnueabihf": "1.3.20", + "@swc/core-linux-arm64-gnu": "1.3.20", + "@swc/core-linux-arm64-musl": "1.3.20", + "@swc/core-linux-x64-gnu": "1.3.20", + "@swc/core-linux-x64-musl": "1.3.20", + "@swc/core-win32-arm64-msvc": "1.3.20", + "@swc/core-win32-ia32-msvc": "1.3.20", + "@swc/core-win32-x64-msvc": "1.3.20" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", + "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", + "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", + "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", + "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", + "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", + "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", + "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", + "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", + "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", + "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true, + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + }, + "peerDependencies": { + "vue": "3.2.45" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/beercss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", + "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", + "dev": true, + "dependencies": { + "material-dynamic-colors": "^0.0.10", + "sass": "^1.49.9", + "uuid": "^8.3.2", + "vue": "^3.2.31" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", + "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", + "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.15", + "@esbuild/linux-loong64": "0.15.15", + "esbuild-android-64": "0.15.15", + "esbuild-android-arm64": "0.15.15", + "esbuild-darwin-64": "0.15.15", + "esbuild-darwin-arm64": "0.15.15", + "esbuild-freebsd-64": "0.15.15", + "esbuild-freebsd-arm64": "0.15.15", + "esbuild-linux-32": "0.15.15", + "esbuild-linux-64": "0.15.15", + "esbuild-linux-arm": "0.15.15", + "esbuild-linux-arm64": "0.15.15", + "esbuild-linux-mips64le": "0.15.15", + "esbuild-linux-ppc64le": "0.15.15", + "esbuild-linux-riscv64": "0.15.15", + "esbuild-linux-s390x": "0.15.15", + "esbuild-netbsd-64": "0.15.15", + "esbuild-openbsd-64": "0.15.15", + "esbuild-sunos-64": "0.15.15", + "esbuild-windows-32": "0.15.15", + "esbuild-windows-64": "0.15.15", + "esbuild-windows-arm64": "0.15.15" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", + "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", + "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", + "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", + "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", + "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", + "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", + "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", + "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", + "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", + "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", + "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", + "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", + "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", + "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", + "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", + "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", + "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", + "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", + "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", + "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", + "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", + "dev": true, + "peerDependencies": { + "eslint": ">=8.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", + "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/material-dynamic-colors": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", + "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", + "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", + "dev": true, + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.10" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", + "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", + "dev": true, + "dependencies": { + "vite": "^3" + } + }, + "node_modules/vitefu": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", + "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", + "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", + "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@material-design-icons/font": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", + "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@sveltejs/adapter-auto": { + "version": "1.0.0-next.89", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", + "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", + "dev": true, + "requires": { + "import-meta-resolve": "^2.1.0" + } + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.48", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", + "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", + "dev": true + }, + "@sveltejs/kit": { + "version": "1.0.0-next.561", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", + "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.3.1", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^4.2.0", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "mime": "^3.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.5.1", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "5.12.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", + "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.2" + } + }, + "@swc/core": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", + "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.20", + "@swc/core-darwin-x64": "1.3.20", + "@swc/core-linux-arm-gnueabihf": "1.3.20", + "@swc/core-linux-arm64-gnu": "1.3.20", + "@swc/core-linux-arm64-musl": "1.3.20", + "@swc/core-linux-x64-gnu": "1.3.20", + "@swc/core-linux-x64-musl": "1.3.20", + "@swc/core-win32-arm64-msvc": "1.3.20", + "@swc/core-win32-ia32-msvc": "1.3.20", + "@swc/core-win32-x64-msvc": "1.3.20" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", + "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", + "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", + "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", + "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", + "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", + "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", + "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", + "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", + "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", + "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", + "dev": true, + "optional": true + }, + "@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true + }, + "@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dev": true, + "requires": { + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dev": true, + "requires": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "dev": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "beercss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", + "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", + "dev": true, + "requires": { + "material-dynamic-colors": "^0.0.10", + "sass": "^1.49.9", + "uuid": "^8.3.2", + "vue": "^3.2.31" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "devalue": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", + "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "esbuild": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", + "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.15", + "@esbuild/linux-loong64": "0.15.15", + "esbuild-android-64": "0.15.15", + "esbuild-android-arm64": "0.15.15", + "esbuild-darwin-64": "0.15.15", + "esbuild-darwin-arm64": "0.15.15", + "esbuild-freebsd-64": "0.15.15", + "esbuild-freebsd-arm64": "0.15.15", + "esbuild-linux-32": "0.15.15", + "esbuild-linux-64": "0.15.15", + "esbuild-linux-arm": "0.15.15", + "esbuild-linux-arm64": "0.15.15", + "esbuild-linux-mips64le": "0.15.15", + "esbuild-linux-ppc64le": "0.15.15", + "esbuild-linux-riscv64": "0.15.15", + "esbuild-linux-s390x": "0.15.15", + "esbuild-netbsd-64": "0.15.15", + "esbuild-openbsd-64": "0.15.15", + "esbuild-sunos-64": "0.15.15", + "esbuild-windows-32": "0.15.15", + "esbuild-windows-64": "0.15.15", + "esbuild-windows-arm64": "0.15.15" + } + }, + "esbuild-android-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", + "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", + "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", + "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", + "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", + "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", + "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", + "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", + "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", + "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", + "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", + "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", + "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", + "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", + "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", + "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", + "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", + "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", + "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", + "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", + "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-svelte3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", + "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-meta-resolve": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", + "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "material-dynamic-colors": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", + "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true + }, + "prettier-plugin-svelte": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", + "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", + "dev": true, + "requires": {} + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svelte": { + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", + "dev": true + }, + "svelte-check": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + } + }, + "svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true + }, + "undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vite": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", + "dev": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + }, + "vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "requires": { + "@swc/core": "^1.3.10" + } + }, + "vite-plugin-wasm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", + "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", + "dev": true, + "requires": { + "vite": "^3" + } + }, + "vitefu": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", + "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", + "dev": true, + "requires": {} + }, + "vue": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/iron-svelte-client/package.json b/iron-svelte-client/package.json new file mode 100644 index 00000000..16d76f21 --- /dev/null +++ b/iron-svelte-client/package.json @@ -0,0 +1,44 @@ +{ + "name": "iron-svelte-client", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "dev-tauri": "cross-env MODE=tauri npm run dev", + "build": "vite build", + "build-tauri": "cross-env MODE=tauri npm run build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@material-design-icons/font": "^0.14.2", + "@rollup/plugin-replace": "^5.0.1", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.48", + "@sveltejs/kit": "next", + "@tauri-apps/api": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "beercss": "^2.3.0", + "cross-env": "7.0.3", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^4.0.0", + "guid-typescript": "^1.0.9", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "rxjs": "^7.5.7", + "svelte": "^3.44.0", + "svelte-check": "^2.7.1", + "svelte-preprocess": "^4.10.6", + "tslib": "^2.3.1", + "typescript": "^4.7.4", + "vite": "^3.1.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + }, + "type": "module" +} \ No newline at end of file diff --git a/iron-svelte-client/src/app.d.ts b/iron-svelte-client/src/app.d.ts new file mode 100644 index 00000000..8f4d6389 --- /dev/null +++ b/iron-svelte-client/src/app.d.ts @@ -0,0 +1,9 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +// and what to do when importing types +declare namespace App { + // interface Locals {} + // interface PageData {} + // interface Error {} + // interface Platform {} +} diff --git a/iron-svelte-client/src/app.html b/iron-svelte-client/src/app.html new file mode 100644 index 00000000..c6fdc597 --- /dev/null +++ b/iron-svelte-client/src/app.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + %sveltekit.head% + + +

    + + diff --git a/iron-svelte-client/src/lib/login/login.css b/iron-svelte-client/src/lib/login/login.css new file mode 100644 index 00000000..2ceb222a --- /dev/null +++ b/iron-svelte-client/src/lib/login/login.css @@ -0,0 +1,4 @@ +.wrapper { + display: flex; + justify-content: center; +} \ No newline at end of file diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte new file mode 100644 index 00000000..9cac4e06 --- /dev/null +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -0,0 +1,77 @@ + + +
    +
    +
    +
    +
    +
    +
    Login
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    + +
    + info + {toastMessage} +
    + + diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte new file mode 100644 index 00000000..edafe839 --- /dev/null +++ b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -0,0 +1,95 @@ + + +
    +
    + setMouseState(1)} + on:mouseup={() => setMouseState(0)} + on:mouseleave={() => setMouseState(0)} + id="renderer" + /> +
    +
    + + diff --git a/iron-svelte-client/src/models/desktop-size.ts b/iron-svelte-client/src/models/desktop-size.ts new file mode 100644 index 00000000..fdf2dbc4 --- /dev/null +++ b/iron-svelte-client/src/models/desktop-size.ts @@ -0,0 +1,4 @@ +export class DesktopSize { + width!: number; + height!: number; +} diff --git a/iron-svelte-client/src/models/rect.ts b/iron-svelte-client/src/models/rect.ts new file mode 100644 index 00000000..a108de34 --- /dev/null +++ b/iron-svelte-client/src/models/rect.ts @@ -0,0 +1,7 @@ +export class Rect { + top!: number; + left!: number; + width!: number; + height!: number; + buffer!: ArrayBuffer +} diff --git a/iron-svelte-client/src/models/session.ts b/iron-svelte-client/src/models/session.ts new file mode 100644 index 00000000..2f9c4f7c --- /dev/null +++ b/iron-svelte-client/src/models/session.ts @@ -0,0 +1,16 @@ +import {Guid} from "guid-typescript"; +import type { DesktopSize } from "./desktop-size"; + +export class Session { + id:Guid; + sessionId!: number; + name?:string; + active!: boolean; + desktopSize!: DesktopSize; + + constructor(name?: string) { + this.id = Guid.create(); + this.name = name; + this.active = false; + } +} diff --git a/iron-svelte-client/src/routes/+layout.ts b/iron-svelte-client/src/routes/+layout.ts new file mode 100644 index 00000000..ceccaaf6 --- /dev/null +++ b/iron-svelte-client/src/routes/+layout.ts @@ -0,0 +1,2 @@ +export const prerender = true; +export const ssr = false; diff --git a/iron-svelte-client/src/routes/+page.svelte b/iron-svelte-client/src/routes/+page.svelte new file mode 100644 index 00000000..a78d9f10 --- /dev/null +++ b/iron-svelte-client/src/routes/+page.svelte @@ -0,0 +1,4 @@ + diff --git a/iron-svelte-client/src/routes/session/+page.svelte b/iron-svelte-client/src/routes/session/+page.svelte new file mode 100644 index 00000000..7b313344 --- /dev/null +++ b/iron-svelte-client/src/routes/session/+page.svelte @@ -0,0 +1,10 @@ + +{#if !$currentSession?.active} + +{:else} + +{/if} diff --git a/iron-svelte-client/src/services/server-bridge.service.ts b/iron-svelte-client/src/services/server-bridge.service.ts new file mode 100644 index 00000000..9ef7506f --- /dev/null +++ b/iron-svelte-client/src/services/server-bridge.service.ts @@ -0,0 +1,41 @@ +import type {Observable} from "rxjs"; + +export interface ServerRect { + free(): void; + + clone_buffer(): Uint8Array; + + bottom: number; + left: number; + right: number; + top: number; +} + +export interface NewSessionInfo { + session_id: number, + websocket_port: number, + initial_desktop_size: DesktopSize, +} + +export interface DesktopSize { + width: number, + height: number +} + +export interface ResizeEvent { + session_id: number, + desktop_size: DesktopSize, +} + +export abstract class ServerBridgeService { + abstract init(): void; + + abstract connect(username: string, password: string, address: string): Observable; + + abstract resize: Observable; + + abstract updateImage: Observable; + + abstract updateMouse(mouse_x: number, mouse_y: number, click_state: number): void; +} + diff --git a/iron-svelte-client/src/services/services-injector.ts b/iron-svelte-client/src/services/services-injector.ts new file mode 100644 index 00000000..2f7505cd --- /dev/null +++ b/iron-svelte-client/src/services/services-injector.ts @@ -0,0 +1,12 @@ +import type { ServerBridgeService } from './server-bridge.service'; + +export let serverBridge: ServerBridgeService; + +if (import.meta.env.MODE === 'tauri') { + import("./tauri-bridge.service").then(module => serverBridge = new module.TauriBridgeService()); +} else { + import("./wasm-bridge.service").then(module => { + serverBridge = new module.WasmBridgeService(); + serverBridge.init(); + }); +} \ No newline at end of file diff --git a/iron-svelte-client/src/services/session.service.ts b/iron-svelte-client/src/services/session.service.ts new file mode 100644 index 00000000..5da921b6 --- /dev/null +++ b/iron-svelte-client/src/services/session.service.ts @@ -0,0 +1,35 @@ +import type { Guid } from "guid-typescript"; +import { writable } from "svelte/store"; +import { Session } from "../models/session"; + +export const currentSession = writable(new Session('New Session')); +let sessions: Session[] = new Array(); +let sessionCounter = 0; + +function setCurrentSession(session: Session) { + currentSession.set(session); +} + +function setCurrentSessionById(id: Guid) { + const session = sessions.find(session => session.id.equals(id)); + if (session) { + setCurrentSession(session); + } +} + +function addSession(name: string) { + sessionCounter++; + const newSession = new Session(name); + sessions.push(newSession); + if (sessionCounter == 1) { + setCurrentSession(newSession); + } +} + +function closeSession(id: Guid) { + sessionCounter--; + sessions = sessions.filter(session => !session.id.equals(id)); + if (sessionCounter == 1) { + setCurrentSession(sessions[0]); + } +} diff --git a/iron-svelte-client/src/services/tauri-bridge.service.ts b/iron-svelte-client/src/services/tauri-bridge.service.ts new file mode 100644 index 00000000..b8716bb6 --- /dev/null +++ b/iron-svelte-client/src/services/tauri-bridge.service.ts @@ -0,0 +1,61 @@ + +import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; +import {invoke} from "@tauri-apps/api"; +import {from, Observable, Subject, tap} from "rxjs"; +import {listen} from "@tauri-apps/api/event"; + +export class TauriBridgeService implements ServerBridgeService { + + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + private lastImageInformations = ''; + + resize: Observable; + updateImage: Observable; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + + this.initTauriListener(); + } + + init(): void { + //Nothing to do + } + + connect(username: string, password: string, address: string): Observable { + return from(invoke("connect", {username, password, address}) as Promise).pipe(tap((newSessionInfo: NewSessionInfo) => { + this.initSocket(newSessionInfo.websocket_port); + })); + } + + initSocket(port: any) { + const socket = new WebSocket(`ws://127.0.0.1:${port}`); + socket.addEventListener("message", this.onSocketMessage.bind(this)); + } + + updateMouse(mouseX: number, mouseY:number, clickState:number) { + const leftClick = clickState === 0 ? false : true; + invoke("update_mouse", {sessionId: 0, mouseX, mouseY, leftClick}); + } + + async onSocketMessage(event: any) { + if (typeof event.data === "string") { + this.lastImageInformations = event.data; + } else { + const obj = { + pixels: event.data.arrayBuffer(), + infos: JSON.parse(this.lastImageInformations) + } + this._updateImage.next(obj); + } + } + + private async initTauriListener() { + const unlisten1 = await listen("resize", (evt: any) => { + this._resize.next(evt.payload); + }) + } +} diff --git a/iron-svelte-client/src/services/user-interaction-service.ts b/iron-svelte-client/src/services/user-interaction-service.ts new file mode 100644 index 00000000..6d31df96 --- /dev/null +++ b/iron-svelte-client/src/services/user-interaction-service.ts @@ -0,0 +1,25 @@ +import { BehaviorSubject, Observable } from 'rxjs'; +import { serverBridge } from './services-injector'; + +export interface MousePosition { + x: number; + y: number; +} + +const mousePosition: BehaviorSubject = new BehaviorSubject({ + x: 0, + y: 0 +}); +const mouseLeftClick: BehaviorSubject = new BehaviorSubject(0); +const mousePositionObservable: Observable = mousePosition.asObservable(); +const mouseLeftClickObservable: Observable = mouseLeftClick.asObservable(); + +export const setMousePosition = function (position: MousePosition) { + serverBridge.updateMouse(position.x, position.y, mouseLeftClick.value); + mousePosition.next(position); +}; + +export const setMouseLeftClickState = function (state: number) { + serverBridge.updateMouse(mousePosition.value.x, mousePosition.value.y, state); + mouseLeftClick.next(state); +}; diff --git a/iron-svelte-client/src/services/wasm-bridge.service.ts b/iron-svelte-client/src/services/wasm-bridge.service.ts new file mode 100644 index 00000000..3a2deec0 --- /dev/null +++ b/iron-svelte-client/src/services/wasm-bridge.service.ts @@ -0,0 +1,38 @@ +import type { NewSessionInfo, ServerBridgeService } from './server-bridge.service'; +import * as IronWasm from '../../../ffi/wasm/pkg/ironrdp'; +import { Observable, of, Subject } from 'rxjs'; + +export class WasmBridgeService implements ServerBridgeService { + private wasmBridge = IronWasm; + + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + resize: Observable; + updateImage: Observable; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + } + + init(): void { + this.wasmBridge.init(); + } + + updateMouse(mouse_x: number, mouse_y: number, click_state: number): void { + // Not implemented yet... + } + + connect(username: string, password: string, address: string): Observable { + this.wasmBridge.connect(username, password, address); + return of({ + session_id: 0, + initial_desktop_size: { + height: 0, + width: 0 + }, + websocket_port: 0 + }); + } +} diff --git a/iron-svelte-client/static/beercss/beer.min.css b/iron-svelte-client/static/beercss/beer.min.css new file mode 100644 index 00000000..c92a11db --- /dev/null +++ b/iron-svelte-client/static/beercss/beer.min.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:FILL@0..1&family=Roboto:wght@300;400;500&display=swap";:root,body.light{--primary: #6750A4;--on-primary: #FFFFFF;--primary-container: #EADDFF;--on-primary-container: #21005E;--secondary: #625B71;--on-secondary: #FFFFFF;--secondary-container: #E8DEF8;--on-secondary-container: #1E192B;--tertiary: #7D5260;--on-tertiary: #FFFFFF;--tertiary-container: #FFD8E4;--on-tertiary-container: #370B1E;--error: #B3261E;--on-error: #FFFFFF;--error-container: #F9DEDC;--on-error-container: #370B1E;--background: #FFFBFE;--on-background: #1C1B1F;--surface: #FFFBFE;--on-surface: #1C1B1F;--outline: #79747E;--surface-variant: #E7E0EC;--on-surface-variant: #49454E;--inverse-surface: #313033;--inverse-on-surface: #F4EFF4;--body: #ffffff;--overlay: rgba(0,0,0,.5);--active: rgba(0,0,0,.1);--elevate1: 0 2rem 2rem 0 rgba(0, 0, 0, .14), 0 1rem 5rem 0 rgba(0, 0, 0, .12), 0 3rem 1rem -2rem rgba(0, 0, 0, .2);--elevate2: 0 6rem 10rem 0 rgba(0, 0, 0, .14), 0 1rem 18rem 0 rgba(0, 0, 0, .12), 0 3rem 5rem -1rem rgba(0, 0, 0, .3);--elevate3: 0 10rem 16rem 0 rgba(0, 0, 0, .14), 0 1rem 31rem 0 rgba(0, 0, 0, .12), 0 3rem 9rem 0rem rgba(0, 0, 0, .4);--size: 1px;--font: "Roboto", BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;--speed1: .1s;--speed2: .2s;--speed3: .3s;--speed4: .4s}body.dark{--primary: #D0BCFF;--on-primary: #371E73;--primary-container: #4F378B;--on-primary-container: #EADDFF;--secondary: #CCC2DC;--on-secondary: #332D41;--secondary-container: #4A4458;--on-secondary-container: #E8DEF8;--tertiary: #EFB8C8;--on-tertiary: #492532;--tertiary-container: #633B48;--on-tertiary-container: #FFD8E4;--error: #F2B8B5;--on-error: #601410;--error-container: #8C1D18;--on-error-container: #F9DEDC;--background: #1C1B1F;--on-background: #E6E1E5;--surface: #1C1B1F;--on-surface: #E6E1E5;--outline: #938F99;--surface-variant: #49454F;--on-surface-variant: #CAC4D0;--inverse-surface: #E6E1E5;--inverse-on-surface: #313033;--body: #000000;--overlay: rgba(0,0,0,.5);--active: rgba(255,255,255,.2);--elevate1: 0 2rem 2rem 0 rgba(0, 0, 0, .14), 0 1rem 5rem 0 rgba(0, 0, 0, .12), 0 3rem 1rem -2rem rgba(0, 0, 0, .2);--elevate2: 0 6rem 10rem 0 rgba(0, 0, 0, .14), 0 1rem 18rem 0 rgba(0, 0, 0, .12), 0 3rem 5rem -1rem rgba(0, 0, 0, .3);--elevate3: 0 10rem 16rem 0 rgba(0, 0, 0, .14), 0 1rem 31rem 0 rgba(0, 0, 0, .12), 0 3rem 9rem 0rem rgba(0, 0, 0, .4);--size: 1px;--font: "Roboto", BlinkMacSystemFont, -apple-system, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;--speed1: .1s;--speed2: .2s;--speed3: .3s;--speed4: .4s}*{-webkit-tap-highlight-color:transparent;position:relative;vertical-align:middle;color:inherit;margin:0;padding:0;border-radius:inherit;box-sizing:border-box}body{color:var(--on-background);background-color:var(--body);overflow-x:hidden}label{font-size:12rem;vertical-align:baseline}a,b,i,span{vertical-align:bottom}a,button,.button{cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;border:none;font-family:inherit;outline:inherit;justify-content:center}.primary{background-color:var(--primary)!important;color:var(--on-primary)!important}.primary-text{color:var(--primary)!important}.primary-border{border-color:var(--primary)!important}.primary-container{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}.secondary{background-color:var(--secondary)!important;color:var(--on-secondary)!important}.secondary-text{color:var(--secondary)!important}.secondary-border{border-color:var(--secondary)!important}.secondary-container{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}.tertiary{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}.tertiary-text{color:var(--tertiary)!important}.tertiary-border{border-color:var(--tertiary)!important}.tertiary-container{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}.error{background-color:var(--error)!important;color:var(--on-error)!important}.error-text{color:var(--error)!important}.error-border{border-color:var(--error)!important}.error-container{background-color:var(--error-container)!important;color:var(--on-error-container)!important}.background{background-color:var(--background)!important;color:var(--on-background)!important}.surface{background-color:var(--surface)!important;color:var(--on-surface)!important}.surface-variant{background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.inverse-surface{background-color:var(--inverse-surface);color:var(--inverse-on-surface)}.black{background-color:#000!important}.black-border{border-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-border{border-color:#fff!important}.white-text{color:#fff!important}.transparent{background-color:transparent!important;box-shadow:none!important;color:inherit!important}.transparent-border{border-color:transparent!important}.transparent-text{color:transparent!important}.fill:not(i){background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.middle-align{display:flex;align-items:center!important}.bottom-align{display:flex;align-items:flex-end!important}.top-align{display:flex;align-items:flex-start!important}.left-align{text-align:left;justify-content:flex-start!important}.right-align{text-align:right;justify-content:flex-end!important}.center-align{text-align:center;justify-content:center!important}.red,.red6{background-color:#f44336!important}.red-border{border-color:#f44336!important}.red-text{color:#f44336!important}.red1{background-color:#ffebee!important}.red2{background-color:#ffcdd2!important}.red3{background-color:#ef9a9a!important}.red4{background-color:#e57373!important}.red5{background-color:#ef5350!important}.red7{background-color:#e53935!important}.red8{background-color:#d32f2f!important}.red9{background-color:#c62828!important}.red10{background-color:#b71c1c!important}.pink,.pink6{background-color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink1{background-color:#fce4ec!important}.pink2{background-color:#f8bbd0!important}.pink3{background-color:#f48fb1!important}.pink4{background-color:#f06292!important}.pink5{background-color:#ec407a!important}.pink7{background-color:#d81b60!important}.pink8{background-color:#c2185b!important}.pink9{background-color:#ad1457!important}.pink10{background-color:#880e4f!important}.purple,.purple6{background-color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple1{background-color:#f3e5f5!important}.purple2{background-color:#e1bee7!important}.purple3{background-color:#ce93d8!important}.purple4{background-color:#ba68c8!important}.purple5{background-color:#ab47bc!important}.purple7{background-color:#8e24aa!important}.purple8{background-color:#7b1fa2!important}.purple9{background-color:#6a1b9a!important}.purple10{background-color:#4a148c!important}.deep-purple,.deep-purple6{background-color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple1{background-color:#ede7f6!important}.deep-purple2{background-color:#d1c4e9!important}.deep-purple3{background-color:#b39ddb!important}.deep-purple4{background-color:#9575cd!important}.deep-purple5{background-color:#7e57c2!important}.deep-purple7{background-color:#5e35b1!important}.deep-purple8{background-color:#512da8!important}.deep-purple9{background-color:#4527a0!important}.deep-purple10{background-color:#311b92!important}.indigo,.indigo6{background-color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo1{background-color:#e8eaf6!important}.indigo2{background-color:#c5cae9!important}.indigo3{background-color:#9fa8da!important}.indigo4{background-color:#7986cb!important}.indigo5{background-color:#5c6bc0!important}.indigo7{background-color:#3949ab!important}.indigo8{background-color:#303f9f!important}.indigo9{background-color:#283593!important}.indigo10{background-color:#1a237e!important}.blue,.blue6{background-color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue1{background-color:#e3f2fd!important}.blue2{background-color:#bbdefb!important}.blue3{background-color:#90caf9!important}.blue4{background-color:#64b5f6!important}.blue5{background-color:#42a5f5!important}.blue7{background-color:#1e88e5!important}.blue8{background-color:#1976d2!important}.blue9{background-color:#1565c0!important}.blue10{background-color:#0d47a1!important}.light-blue,.light-blue6{background-color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue1{background-color:#e1f5fe!important}.light-blue2{background-color:#b3e5fc!important}.light-blue3{background-color:#81d4fa!important}.light-blue4{background-color:#4fc3f7!important}.light-blue5{background-color:#29b6f6!important}.light-blue7{background-color:#039be5!important}.light-blue8{background-color:#0288d1!important}.light-blue9{background-color:#0277bd!important}.light-blue10{background-color:#01579b!important}.cyan,.cyan6{background-color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan1{background-color:#e0f7fa!important}.cyan2{background-color:#b2ebf2!important}.cyan3{background-color:#80deea!important}.cyan4{background-color:#4dd0e1!important}.cyan5{background-color:#26c6da!important}.cyan7{background-color:#00acc1!important}.cyan8{background-color:#0097a7!important}.cyan9{background-color:#00838f!important}.cyan10{background-color:#006064!important}.teal,.teal6{background-color:#009688!important}.teal-border{border-color:#009688!important}.teal-text{color:#009688!important}.teal1{background-color:#e0f2f1!important}.teal2{background-color:#b2dfdb!important}.teal3{background-color:#80cbc4!important}.teal4{background-color:#4db6ac!important}.teal5{background-color:#26a69a!important}.teal7{background-color:#00897b!important}.teal8{background-color:#00796b!important}.teal9{background-color:#00695c!important}.teal10{background-color:#004d40!important}.green,.green6{background-color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-text{color:#4caf50!important}.green1{background-color:#e8f5e9!important}.green2{background-color:#c8e6c9!important}.green3{background-color:#a5d6a7!important}.green4{background-color:#81c784!important}.green5{background-color:#66bb6a!important}.green7{background-color:#43a047!important}.green8{background-color:#388e3c!important}.green9{background-color:#2e7d32!important}.green10{background-color:#1b5e20!important}.light-green,.light-green6{background-color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green1{background-color:#f1f8e9!important}.light-green2{background-color:#dcedc8!important}.light-green3{background-color:#c5e1a5!important}.light-green4{background-color:#aed581!important}.light-green5{background-color:#9ccc65!important}.light-green7{background-color:#7cb342!important}.light-green8{background-color:#689f38!important}.light-green9{background-color:#558b2f!important}.light-green10{background-color:#33691e!important}.lime,.lime6{background-color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime1{background-color:#f9fbe7!important}.lime2{background-color:#f0f4c3!important}.lime3{background-color:#e6ee9c!important}.lime4{background-color:#dce775!important}.lime5{background-color:#d4e157!important}.lime7{background-color:#c0ca33!important}.lime8{background-color:#afb42b!important}.lime9{background-color:#9e9d24!important}.lime10{background-color:#827717!important}.yellow,.yellow6{background-color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow1{background-color:#fffde7!important}.yellow2{background-color:#fff9c4!important}.yellow3{background-color:#fff59d!important}.yellow4{background-color:#fff176!important}.yellow5{background-color:#ffee58!important}.yellow7{background-color:#fdd835!important}.yellow8{background-color:#fbc02d!important}.yellow9{background-color:#f9a825!important}.yellow10{background-color:#f57f17!important}.amber,.amber6{background-color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber1{background-color:#fff8e1!important}.amber2{background-color:#ffecb3!important}.amber3{background-color:#ffe082!important}.amber4{background-color:#ffd54f!important}.amber5{background-color:#ffca28!important}.amber7{background-color:#ffb300!important}.amber8{background-color:#ffa000!important}.amber9{background-color:#ff8f00!important}.amber10{background-color:#ff6f00!important}.orange,.orange6{background-color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange1{background-color:#fff3e0!important}.orange2{background-color:#ffe0b2!important}.orange3{background-color:#ffcc80!important}.orange4{background-color:#ffb74d!important}.orange5{background-color:#ffa726!important}.orange7{background-color:#fb8c00!important}.orange8{background-color:#f57c00!important}.orange9{background-color:#ef6c00!important}.orange10{background-color:#e65100!important}.deep-orange,.deep-orange6{background-color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange1{background-color:#fbe9e7!important}.deep-orange2{background-color:#ffccbc!important}.deep-orange3{background-color:#ffab91!important}.deep-orange4{background-color:#ff8a65!important}.deep-orange5{background-color:#ff7043!important}.deep-orange7{background-color:#f4511e!important}.deep-orange8{background-color:#e64a19!important}.deep-orange9{background-color:#d84315!important}.deep-orange10{background-color:#bf360c!important}.brown,.brown6{background-color:#795548!important}.brown-border{border-color:#795548!important}.brown-text{color:#795548!important}.brown1{background-color:#efebe9!important}.brown2{background-color:#d7ccc8!important}.brown3{background-color:#bcaaa4!important}.brown4{background-color:#a1887f!important}.brown5{background-color:#8d6e63!important}.brown7{background-color:#6d4c41!important}.brown8{background-color:#5d4037!important}.brown9{background-color:#4e342e!important}.brown10{background-color:#3e2723!important}.blue-grey,.blue-grey6{background-color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey1{background-color:#eceff1!important}.blue-grey2{background-color:#cfd8dc!important}.blue-grey3{background-color:#b0bec5!important}.blue-grey4{background-color:#90a4ae!important}.blue-grey5{background-color:#78909c!important}.blue-grey7{background-color:#546e7a!important}.blue-grey8{background-color:#455a64!important}.blue-grey9{background-color:#37474f!important}.blue-grey10{background-color:#263238!important}.grey,.grey6{background-color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey1{background-color:#fafafa!important}.grey2{background-color:#f5f5f5!important}.grey3{background-color:#eee!important}.grey4{background-color:#e0e0e0!important}.grey5{background-color:#bdbdbd!important}.grey7{background-color:#757575!important}.grey8{background-color:#616161!important}.grey9{background-color:#424242!important}.grey10{background-color:#212121!important}.horizontal{display:inline-flex;flex-direction:row!important;gap:16rem;width:auto!important;max-width:none!important}.horizontal>*{margin-top:0!important;margin-bottom:0!important}.vertical,button.vertical,.button.vertical,.chip.vertical{display:inline-flex;flex-direction:column!important;gap:4rem;height:auto!important;max-height:none!important;padding-top:8rem;padding-bottom:8rem}.vertical>*{margin-left:0!important;margin-right:0!important}.divider,.small-divider,.medium-divider,.large-divider{border-bottom:1rem solid var(--outline);display:block;margin:0!important}.medium-divider{margin:16rem 0!important}.large-divider{margin:24rem 0!important}.small-divider{margin:8rem 0!important}.no-elevate{box-shadow:none!important}.small-elevate,.elevate{box-shadow:var(--elevate1)!important}.medium-elevate{box-shadow:var(--elevate2)!important}.large-elevate{box-shadow:var(--elevate3)!important}.round:not(img,video){border-radius:32rem!important}.no-round{border-radius:0!important}.top-round{border-radius:32rem 32rem 0 0!important}.bottom-round{border-radius:0 0 32rem 32rem!important}.left-round{border-radius:32rem 0 0 32rem!important}.right-round{border-radius:0 32rem 32rem 0!important}.top-round.left-round{border-radius:32rem 32rem 0!important}.top-round.right-round{border-radius:32rem 32rem 32rem 0!important}.bottom-round.left-round{border-radius:32rem 0 32rem 32rem!important}.bottom-round.right-round{border-radius:0 32rem 32rem!important}.circle:not(img,video),.square:not(img,video){height:40rem;width:40rem;padding:0}.circle>span,.square>span{display:none}.square.small:not(img,video),.circle.small:not(img,video){height:32rem;width:32rem}.square.large:not(img,video),.circle.large:not(img,video){height:48rem;width:48rem}.square.extra:not(img,video),.circle.extra:not(img,video){height:56rem;width:56rem}.square.round,.circle.round{border-radius:16rem!important}.border:not(table,.field){box-sizing:border-box;border:1rem solid var(--outline);background-color:transparent;box-shadow:none}.no-margin{margin:0!important}.tiny-margin{padding:4rem!important}.small-margin{margin:8rem!important}.medium-margin,.margin{margin:16rem!important}.large-margin{margin:24rem!important}.no-opacity{opacity:0}.opacity{opacity:1}.no-padding{padding:0!important}.tiny-padding{padding:4rem!important}.small-padding{padding:8rem!important}.medium-padding,.padding{padding:16rem!important}.large-padding{padding:24rem!important}.front{z-index:10!important}.back{z-index:-10!important}.left{left:0}.right{right:0}.top{top:0}.bottom{bottom:0}.center{left:50%;transform:translate(-50%)}.middle{top:50%;transform:translateY(-50%)}.middle.center{transform:translate(-50%,-50%)}.scroll{overflow:auto;padding-bottom:16rem}.no-scroll{overflow:hidden}.shadow{background-color:#00000050!important}.left-shadow{background-color:transparent!important;background-image:linear-gradient(to right,black,transparent)}.right-shadow{background-color:transparent!important;background-image:linear-gradient(to left,black,transparent)}.bottom-shadow{background-color:transparent!important;background-image:linear-gradient(to top,black,transparent)}.top-shadow{background-color:transparent!important;background-image:linear-gradient(to bottom,black,transparent)}.small-width{width:192rem!important;max-width:100%}.medium-width{width:384rem!important;max-width:100%}.large-width{width:576rem!important;max-width:100%}.small-height{height:192rem!important}.medium-height{height:384rem!important}.large-height{height:576rem!important}.wrap{display:block;white-space:normal}.no-wrap:not(.dropdown){display:flex;white-space:nowrap}.tiny-space:not(nav,.row,.grid,table){height:8rem}.space:not(nav,.row,.grid,table),.small-space:not(nav,.row,.grid,table){height:16rem}.medium-space:not(nav,.row,.grid,table){height:32rem}.large-space:not(nav,.row,.grid,table){height:48rem}.responsive{width:-webkit-fill-available;width:-moz-available}@media only screen and (max-width: 600px){.m:not(.s),.l:not(.s),.m.l:not(.s){display:none}}@media only screen and (min-width: 601px) and (max-width: 992px){.s:not(.m),.l:not(.m),.s.l:not(.m){display:none}}@media only screen and (min-width: 993px){.m:not(.l),.s:not(.l),.m.s:not(.l){display:none}}html{font-size:var(--size)}body{font-family:var(--font);font-size:14rem}h1,h2,h3,h4,h5,h6{font-weight:400;display:flex;align-items:center;margin-bottom:8rem}*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:16rem}h1{font-size:96rem}h2{font-size:60rem}h3{font-size:48rem}h4{font-size:34rem}h5{font-size:24rem}h6{font-size:20rem}.link{color:var(--primary)!important}.truncate{overflow:hidden;white-space:nowrap!important;text-overflow:ellipsis}.truncate>*{white-space:nowrap!important}.small-text{font-size:12rem}.medium-text{font-size:14rem}.large-text{font-size:16rem}.upper{text-transform:uppercase}.lower{text-transform:lowercase}.capitalize{text-transform:capitalize}.bold{font-weight:700}.overline{text-decoration:line-through}.underline{text-decoration:underline}.italic{font-style:italic}p{margin:8rem 0}.wave:after,.wave.light:after,.chip:after,.button:after,button:after{content:"";position:absolute;top:0;left:0;z-index:1;border-radius:inherit;width:100%;height:100%;background-position:center;background-image:radial-gradient(circle,rgba(255,255,255,.4) 1%,transparent 1%);opacity:0;transition:none}.wave.dark:after,.button.none:after,button.none:after,.chip.border:after,.button.border:after,button.border:after,.chip.transparent:after,.button.transparent:after,button.transparent:after{background-image:radial-gradient(circle,rgba(150,150,150,.2) 1%,transparent 1%)}.wave.none:after,.button.none:after,button.none:after{top:0;left:-4rem;padding:0 4rem}.wave.none:not(.small,.medium,.large,.extra):after,.button.none:not(.small,.medium,.large,.extra):after,button.none:not(.small,.medium,.large,.extra):after{top:-4rem;left:-4rem;padding:4rem}.wave:hover:after,.chip:hover:after,.button:hover:after,button:hover:after,.wave:focus:after,.chip:focus:after,.button:focus:after,button:focus:after{background-size:15000%;opacity:1;transition:var(--speed2) background-size linear}.wave:active:after,.chip:active:after,.button:active:after,button:active:after{background-size:5000%;opacity:0;transition:none}.no-wave:after,.no-wave:hover:after,.no-wave:active:after{display:none}.badge{display:inline-flex;align-items:center;justify-content:center;position:absolute;font-size:12rem;text-transform:none;z-index:1;padding:0 6rem;background-color:var(--error);color:var(--on-error);top:0;left:auto;bottom:auto;right:0;transform:translate(50%,-100%);height:20rem}.badge.none{top:auto;left:auto;bottom:auto;right:auto;transform:none;position:relative;margin:0 2rem}.badge.top{top:0;left:50%;bottom:auto;right:auto;transform:translate(-50%,-100%)}.badge.bottom{top:auto;left:50%;bottom:0;right:auto;transform:translate(-50%,100%)}.badge.left{top:50%;left:0;bottom:auto;right:auto;transform:translate(-100%,-50%)}.badge.right{top:50%;left:auto;bottom:auto;right:0;transform:translate(100%,-50%)}.badge.top.left{top:0;left:0;bottom:auto;right:auto;transform:translate(-50%,-100%)}.badge.top.right{top:0;left:auto;bottom:auto;right:0;transform:translate(50%,-100%)}.badge.bottom.left{top:auto;left:0;bottom:0;right:auto;transform:translate(-50%,100%)}.badge.bottom.right{top:auto;left:auto;bottom:0;right:0;transform:translate(50%,100%)}.badge.border{border:1rem solid var(--error);color:var(--error)}.badge.circle,.badge.square{padding:0;text-align:center;width:20rem;height:20rem}.badge.circle{border-radius:50%}.badge.square{border-radius:0}.button,button{box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;height:40rem;min-width:40rem;font-size:14rem;font-weight:500;color:var(--on-primary);padding:0 24rem;background-color:var(--primary);margin:0 8rem;border-radius:8rem;transition:var(--speed3) transform,var(--speed3) border-radius,var(--speed3) padding;user-select:none;gap:16rem}.button.none,button.none{width:auto;height:auto;color:var(--primary);padding:0;background-color:transparent;min-width:auto;min-height:24rem}.button.small,button.small{height:32rem;min-width:32rem;font-size:14rem}.button.large,button.large{height:48rem;min-width:48rem}.button.extra,button.extra,.button.extend,button.extend{height:56rem;min-width:56rem;font-size:16rem}.button.border,button.border{border:1rem solid var(--primary);color:var(--primary)}.button.circle,button.circle{border-radius:40rem;padding:0}.button.square,button.square{border-radius:0;padding:0}.button.extend,button.extend{padding:0}.button.extend>span,button.extend>span{display:none}.button.extend:hover,button.extend:hover,.button.extend.active,button.extend.active{width:auto;padding:0 16rem}.button.extend:hover>i+span,button.extend:hover>i+span,.button.extend.active>i+span,button.extend.active>i+span{display:inherit;margin-left:32rem}.button.extend:hover>img+span,button.extend:hover>img+span,.button.extend.active>img+span,button.extend.active>img+span{display:inherit;margin-left:48rem}.button[disabled],button:disabled{opacity:.5;cursor:not-allowed}.button[disabled]{pointer-events:none}.button[disabled]:before,button:disabled:before,.button[disabled]:after,button:disabled:after{display:none}.button.fill,button.fill{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}article{box-shadow:var(--elevate1);background-color:var(--surface);color:var(--on-surface);padding:16rem;border-radius:12rem;display:block;transition:var(--speed3) transform,var(--speed3) border-radius,var(--speed3) padding}*+article{margin-top:16rem}article.small{height:192rem}article.medium{height:320rem}article.large{height:512rem}.chip{box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;height:40rem;min-width:40rem;font-size:14rem;font-weight:500;color:var(--on-secondary);padding:0 16rem;background-color:var(--secondary);margin:0 8rem;text-transform:none;border-radius:8rem;transition:var(--speed3) transform,var(--speed3) border-radius,var(--speed3) padding;user-select:none;gap:16rem}.chip.small{height:32rem;min-width:32rem}.chip.large{height:48rem;min-width:48rem}.chip.border{border:1rem solid var(--secondary);color:var(--secondary)}.chip.circle{border-radius:40rem;padding:0}.chip.square{border-radius:0;padding:0}.chip.fill{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important;border:none}main.responsive{margin:0 auto;max-width:1200rem;padding:8rem;overflow-x:hidden;min-height:100vh}main.responsive.max{max-width:100%}nav.bottom:not(.s,.m,.l)~.responsive:not(header){padding-bottom:96rem}nav.top:not(.s,.m,.l)~.responsive:not(footer){padding-top:96rem}nav.left:not(.s,.m,.l)~.responsive{padding-left:96rem}nav.right:not(.s,.m,.l)~.responsive{padding-right:96rem}@media only screen and (max-width: 600px){nav.s.bottom~.responsive:not(header){padding-bottom:96rem}nav.s.top~.responsive:not(footer){padding-top:96rem}nav.s.left~.responsive{padding-left:96rem}nav.s.right~.responsive{padding-right:96rem}}@media only screen and (min-width: 601px) and (max-width: 992px){nav.m.bottom~.responsive:not(header){padding-bottom:96rem}nav.m.top~.responsive:not(footer){padding-top:96rem}nav.m.left~.responsive{padding-left:96rem}nav.m.right~.responsive{padding-right:96rem}}@media only screen and (min-width: 993px){nav.l.bottom~.responsive:not(header){padding-bottom:96rem}nav.l.top~.responsive:not(footer){padding-top:96rem}nav.l.left~.responsive{padding-left:96rem}nav.l.right~.responsive{padding-right:96rem}}@media only screen and (max-width: 600px){main.responsive{padding-right:8rem;padding-left:8rem}}.dropdown{opacity:0;visibility:hidden;position:absolute;box-shadow:var(--elevate2);background-color:var(--surface);z-index:11;top:auto;bottom:0;left:0;right:auto;width:100%;max-height:50vh;max-width:none;transform:translateY(100%);overflow-x:hidden;overflow-y:auto;font-size:14rem;font-weight:400;text-transform:none;color:var(--on-surface);line-height:normal;text-align:left;border-radius:4rem;transform:scale(.8) translateY(120%);transition:var(--speed2) all,0s background-color}.dropdown.no-wrap{width:auto;white-space:nowrap!important}.dropdown.active,.dropdown:not([data-ui]):active,button:not([data-ui]):focus-within>.dropdown,.button:not([data-ui]):focus-within>.dropdown,.field>:not([data-ui]):focus-within~.dropdown{opacity:1;visibility:visible;transform:scale(1) translateY(100%)}.dropdown.left{left:auto;right:0}.dropdown *{white-space:inherit!important}.dropdown>a{padding:12rem 16rem;border-radius:0}.dropdown>a:not(.row){display:block}.dropdown>a:hover,.dropdown>a:focus,.dropdown>a.active{background-color:var(--active)}summary.none{list-style-type:none}summary{cursor:pointer}summary:focus{outline:none}.field{height:48rem;margin-bottom:32rem}*+.field{margin-top:16rem}.grid>*>.field{margin-bottom:16rem}.grid>*>.field+.field{margin-top:32rem}.grid.no-space>*>.field+.field{margin-top:16rem}.grid.medium-space>*>.field+.field{margin-top:40rem}.grid.large-space>*>.field+.field{margin-top:48rem}.field.small{height:40rem}.field.medium{height:48rem}.field.large{height:56rem}.field.extra{height:64rem}.field:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-color:inherit}.field.fill:before{background-color:var(--surface-variant);color:var(--on-surface-variant)}.field>i,.field>img,.field>.loader{position:absolute;top:50%;left:auto;right:16rem;transform:translateY(-50%);cursor:pointer;z-index:0}.field.border>i,.field.fill>i,.field.round>i,.field.border>img,.field.fill>img,.field.round>img,.field.border>.loader,.field.fill>.loader,.field.round>.loader{left:auto;right:16rem}.field>i:first-child,.field>img:first-child,.field>.loader:first-child{left:16rem;right:auto}.field.border>i:first-child,.field.fill>i:first-child,.field.round>i:first-child,.field.border>img:first-child,.field.fill>img:first-child,.field.round>img:first-child,.field.border>.loader:first-child,.field.fill>.loader:first-child,.field.round>.loader:first-child{left:16rem;right:auto}.field.invalid>i{color:var(--error)}.field>.loader{border-width:3rem;width:24rem;height:24rem}.field>select,input[type^=date],input[type^=time]{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}input[type^=date]::-webkit-inner-spin-button,input[type^=date]::-webkit-calendar-picker-indicator,input[type^=time]::-webkit-inner-spin-button,input[type^=time]::-webkit-calendar-picker-indicator{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;z-index:-1;cursor:pointer}input[type=file]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;opacity:0;cursor:pointer}.field>input,.field>textarea,.field>select{border:1rem solid transparent;padding:0 15rem;font-family:inherit;font-size:16rem;width:100%;height:100%;outline:none;z-index:1;background:none;resize:none}.field>input:focus,.field>textarea:focus,.field>select:focus{border:2rem solid transparent;padding:0 14rem}.field.border>input,.field.border>textarea,.field.border>select{border-color:var(--outline)}.field.border>input:focus,.field.border>textarea:focus,.field.border>select:focus{border-color:var(--primary)}.field.round>input,.field.round>textarea,.field.round>select{padding-left:23rem;padding-right:23rem}.field.round>input:focus,.field.round>textarea:focus,.field.round>select:focus{padding-left:22rem;padding-right:22rem}.field.prefix>input,.field.prefix>textarea,.field.prefix>select{padding-left:47rem}.field.prefix>input:focus,.field.prefix>textarea:focus,.field.prefix>select:focus{padding-left:46rem}.field.suffix>input,.field.suffix>textarea,.field.suffix>select{padding-right:47rem}.field.suffix>input:focus,.field.suffix>textarea:focus,.field.suffix>select:focus{padding-right:46rem}.field:not(.border,.round)>input,.field:not(.border,.round)>textarea,.field:not(.border,.round)>select{border-bottom-color:var(--outline)}.field:not(.border,.round)>input:focus,.field:not(.border,.round)>textarea:focus,.field:not(.border,.round)>select:focus{border-bottom-color:var(--primary)}.field{border-radius:4rem 4rem 0 0}.field.border{border-radius:4rem}.field.round{border-radius:32rem}.field.round:not(.border,.fill)>input,.field.round:not(.border,.fill)>textarea,.field.round:not(.border,.fill)>select,.field.round:not(.border)>input:focus,.field.round:not(.border)>textarea:focus,.field.round:not(.border)>select:focus{box-shadow:var(--elevate1)}.field.round:not(.border,.fill)>input:focus,.field.round:not(.border,.fill)>textarea:focus,.field.round:not(.border,.fill)>select:focus{box-shadow:var(--elevate2)}.field.invalid:not(.border,.round)>input,.field.invalid:not(.border,.round)>textarea,.field.invalid:not(.border,.round)>select,.field.invalid:not(.border,.round)>input:focus,.field.invalid:not(.border,.round)>textarea:focus,.field.invalid:not(.border,.round)>select:focus{border-bottom-color:var(--error)}.field.invalid.border>input,.field.invalid.border>textarea,.field.invalid.border>select,.field.invalid.border>input:focus,.field.invalid.border>textarea:focus,.field.invalid.border>select:focus{border-color:var(--error)}.field>:disabled{opacity:.5;cursor:not-allowed}.field.small.textarea{height:72rem}.field.textarea,.field.medium.textarea{height:88rem}.field.large.textarea{height:104rem}.field.extra.textarea{height:120rem}.field>select>option{background-color:var(--surface);color:var(--on-surface)}.field.label>input,.field.label>select{padding-top:16rem}.field.label.border:not(.fill)>input,.field.label.border:not(.fill)>select{padding-top:0}.field.label.small>textarea{padding-top:18rem}.field.label>textarea,.field.label.medium>textarea{padding-top:22rem}.field.label.large>textarea{padding-top:26rem}.field.label.extra>textarea{padding-top:30rem}.field.small:not(.label)>textarea,.field.small.border:not(.fill)>textarea{padding-top:10rem}.field:not(.label)>textarea,.field.border:not(.fill)>textarea,.field.medium:not(.label)>textarea,.field.medium.border:not(.fill)>textarea{padding-top:14rem}.field.large:not(.label)>textarea,.field.large.border:not(.fill)>textarea{padding-top:18rem}.field.extra:not(.label)>textarea,.field.extra.border:not(.fill)>textarea{padding-top:22rem}.field.label>label{position:absolute;top:50%;left:16rem;font-size:16rem;transform:translateY(-50%);transition:var(--speed2) all,0s background-color;z-index:0}.field.label.textarea.small>label{top:20rem}.field.label.textarea>label,.field.label.textarea.medium>label{top:24rem}.field.label.textarea.large>label{top:28rem}.field.label.textarea.extra>label{top:32rem}.field.label.round>label{left:24rem}.field.label.prefix>label{left:48rem}.field.label>label.active,.field.label>[placeholder]:focus~label,.field.label>[placeholder]:not(:placeholder-shown)~label{font-size:12rem;transform:translateY(-120%);z-index:1}.field.label.border:not(.fill)>label.active,.field.label.border:not(.fill)>[placeholder]:focus~label,.field.label.border:not(.fill)>[placeholder]:not(:placeholder-shown)~label{font-size:12rem;top:0%;left:16rem;transform:translateY(-50%);z-index:1}.field.label.border.round:not(.fill)>label.active,.field.label.border.round:not(.fill)>[placeholder]:focus~label,.field.label.border.round:not(.fill)>[placeholder]:not(:placeholder-shown)~label{left:24rem;z-index:1}.field.label>:focus~label{color:var(--primary)}.field.invalid>label{color:var(--error)!important}.field>label.required:after,.field.required>label:after{content:" * "}.field>.helper,.field>.error{position:absolute;left:16rem;bottom:0;transform:translateY(100%);font-size:12rem;background:none!important;padding-top:2rem}a.helper{color:var(--primary)}.field>.error{color:var(--error)!important}.field.round>.helper,.field.round>.error{left:24rem}.field.invalid>.helper{display:none}table td>.field{max-height:100%;height:100%}.grid{--grid-gap: 16rem;display:grid;grid-template-columns:repeat(12,calc(8.33% - var(--grid-gap) + (var(--grid-gap)/12)));gap:var(--grid-gap)}*+.grid{margin-top:16rem}.grid.no-space{--grid-gap: 0rem}.grid.medium-space{--grid-gap: 24rem}.grid.large-space{--grid-gap: 32rem}.s1{grid-area:auto/span 1}.s2{grid-area:auto/span 2}.s3{grid-area:auto/span 3}.s4{grid-area:auto/span 4}.s5{grid-area:auto/span 5}.s6{grid-area:auto/span 6}.s7{grid-area:auto/span 7}.s8{grid-area:auto/span 8}.s9{grid-area:auto/span 9}.s10{grid-area:auto/span 10}.s11{grid-area:auto/span 11}.s12{grid-area:auto/span 12}@media only screen and (min-width: 601px){.m1{grid-area:auto/span 1}.m2{grid-area:auto/span 2}.m3{grid-area:auto/span 3}.m4{grid-area:auto/span 4}.m5{grid-area:auto/span 5}.m6{grid-area:auto/span 6}.m7{grid-area:auto/span 7}.m8{grid-area:auto/span 8}.m9{grid-area:auto/span 9}.m10{grid-area:auto/span 10}.m11{grid-area:auto/span 11}.m12{grid-area:auto/span 12}}@media only screen and (min-width: 993px){.l1{grid-area:auto/span 1}.l2{grid-area:auto/span 2}.l3{grid-area:auto/span 3}.l4{grid-area:auto/span 4}.l5{grid-area:auto/span 5}.l6{grid-area:auto/span 6}.l7{grid-area:auto/span 7}.l8{grid-area:auto/span 8}.l9{grid-area:auto/span 9}.l10{grid-area:auto/span 10}.l11{grid-area:auto/span 11}.l12{grid-area:auto/span 12}}i{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24rem;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;text-align:center;overflow:hidden;width:24rem;min-width:24rem;box-sizing:content-box}i.tiny{font-size:16rem;width:16rem;min-width:16rem}i.small{font-size:20rem;width:20rem;min-width:20rem}i.large{font-size:28rem;width:28rem;min-width:28rem}i.extra{font-size:32rem;width:32rem}i.fill,a.row:hover>i,a.row:focus>i,.transparent:hover>i,.transparent:focus>i{font-variation-settings:"FILL" 1}.absolute{position:absolute}.fixed{position:fixed}.absolute.left.right,.fixed.left.right{width:auto}.absolute.left.right.small,.fixed.left.right.small{height:320rem}.absolute.left.right.medium,.fixed.left.right.medium{height:448rem}.absolute.left.right.large,.fixed.left.right.large{height:704rem}.absolute.top.bottom.small,.fixed.top.bottom.small{width:320rem}.absolute.top.bottom.medium,.fixed.top.bottom.medium{width:448rem}.absolute.top.bottom.large,.fixed.top.bottom.large{width:704rem}header,footer{padding:0 16rem;background-color:var(--surface)}header.fixed,footer.fixed{position:sticky;top:0;bottom:0;left:0;right:0;z-index:12;background-color:inherit;border-radius:0}header.fixed:before,footer.fixed:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;margin:0 -8rem;max-width:100%;background-color:inherit}.modal>header,.modal>footer{padding:0}article>header,article>footer{padding:inherit;padding-left:0;padding-right:0;z-index:11!important}.modal>header.fixed,article>header.fixed,.padding>header.fixed,.medium-padding>header.fixed{transform:translateY(-16rem)}.modal>footer.fixed,article>footer.fixed,.padding>footer.fixed,.medium-padding>footer.fixed{transform:translateY(16rem)}.no-padding>header.fixed,.no-padding>footer.fixed{transform:none}.small-padding>header.fixed{transform:translateY(-8rem)}.small-padding>footer.fixed{transform:translateY(8rem)}.large-padding>header.fixed{transform:translateY(-24rem)}.large-padding>footer.fixed{transform:translateY(24rem)}.loader{--loader-translateY: 0;display:inline-block;width:40rem;height:40rem;border-radius:50%;border:4rem solid var(--primary);clip-path:polygon(50% 50%,0% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%);animation:1.6s to-loader linear infinite;background:none!important}.loader.small{width:24rem;height:24rem;border-width:3rem}.loader.large{width:56rem;height:56rem;border-width:5rem}.loader.red{border-color:#f44336}.loader.pink{border-color:#e91e63}.loader.purple{border-color:#9c27b0}.loader.deep-purple{border-color:#673ab7}.loader.indigo{border-color:#3f51b5}.loader.blue{border-color:#2196f3}.loader.light-blue{border-color:#03a9f4}.loader.cyan{border-color:#00bcd4}.loader.teal{border-color:#009688}.loader.green{border-color:#4caf50}.loader.light-green{border-color:#8bc34a}.loader.lime{border-color:#cddc39}.loader.yellow{border-color:#ffeb3b}.loader.amber{border-color:#ffc107}.loader.orange{border-color:#ff9800}.loader.deep-orange{border-color:#ff5722}.loader.brown{border-color:#795548}.loader.blue-grey{border-color:#607d8b}.loader.grey{border-color:#9e9e9e}.loader.black{border-color:#000}.loader.white{border-color:#fff}.field>.loader{--loader-translateY: -50%}@keyframes to-loader{0%{transform:translateY(var(--loader-translateY)) rotate(0);clip-path:polygon(50% 50%,0% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%,50% 0%)}20%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%)}30%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 100%,50% 100%,50% 100%,50% 100%)}40%{clip-path:polygon(50% 50%,0% 0%,50% 0%,100% 0%,100% 50%,100% 100%,50% 100%,0% 100%,0% 50%)}50%{clip-path:polygon(50% 50%,50% 0%,50% 0%,100% 0%,100% 50%,100% 100%,50% 100%,0% 100%,0% 50%)}60%{clip-path:polygon(50% 50%,100% 50%,100% 50%,100% 50%,100% 50%,100% 100%,50% 100%,0% 100%,0% 50%)}70%{clip-path:polygon(50% 50%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 100%,0% 100%,0% 50%)}80%{clip-path:polygon(50% 50%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 100%,0% 50%)}90%{transform:translateY(var(--loader-translateY)) rotate(360deg);clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}to{clip-path:polygon(50% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%,0% 50%)}}img.small,img.medium,img.large,img.tiny,img.extra,img.round,img.circle,img.responsive,video.small,video.medium,video.large,video.tiny,video.extra,video.round,video.circle,video.responsive{object-fit:cover;object-position:center;transition:var(--speed3) transform,var(--speed3) border-radius,var(--speed3) padding;height:48rem;width:48rem}img.round,video.round{border-radius:8rem}img.circle,video.circle{border-radius:50%}img.tiny,video.tiny{height:32rem;width:32rem}img.small,video.small{height:40rem;width:40rem}img.large,video.large{height:56rem;width:56rem}img.extra,video.extra{height:64rem;width:64rem}img.responsive,video.responsive{width:100%;height:100%;margin:0 auto}button>img.responsive,.button>img.responsive,.chip>img.responsive{width:40rem}button:not(.transparent)>img.responsive,.button:not(.transparent)>img.responsive,.chip:not(.transparent)>img.responsive{border:4rem solid transparent}button.small>img.responsive,.button.small>img.responsive,.chip.small>img.responsive{width:32rem}button.large>img.responsive,.button.large>img.responsive,.chip.large>img.responsive{width:48rem}button.extra>img.responsive,.button.extra>img.responsive,.chip.extra>img.responsive{width:56rem}img.responsive.tiny,video.responsive.tiny{width:100%;height:64rem}img.responsive.small,video.responsive.small{width:100%;height:128rem}img.responsive.medium,video.responsive.medium{width:100%;height:192rem}img.responsive.large,video.responsive.large{width:100%;height:256rem}img.responsive.extra,video.responsive.extra{width:100%;height:320rem}img.responsive.round,video.responsive.round{border-radius:32rem}img.empty-state,video.empty-state{max-width:100%;width:384rem}button>img:not(.responsive,.tiny,.small,.medium,.large,.extra),.button>img:not(.responsive,.tiny,.small,.medium,.large,.extra),.chip>img:not(.responsive,.tiny,.small,.medium,.large,.extra),.field>img:not(.responsive,.tiny,.small,.medium,.large,.extra),.tabs img:not(.responsive,.tiny,.small,.medium,.large,.extra),td img:not(.responsive,.tiny,.small,.medium,.large,.extra){min-width:24rem;max-width:24rem;min-height:24rem;max-height:24rem}.button>i,.button>img,.button>img.responsive,button>i,button>img,button>img.responsive,.chip>i,.chip>img,.chip>img.responsive{margin:0 -8rem}.button>img.responsive,button>img.responsive{margin-left:-24rem}.button>span+img.responsive,button>span+img.responsive{margin-right:-24rem}.chip>img.responsive{margin-left:-16rem}.chip>span+img.responsive{margin-right:-16rem}.circle>img.responsive,.square>img.responsive{margin:0}.extend>i,.extend>img{margin:0;position:absolute;left:16rem}.extend>img.responsive{left:0;width:56rem}.extend.border>img.responsive{width:54rem}.modal{opacity:0;visibility:hidden;position:fixed;box-shadow:var(--elevate2);color:var(--on-surface);background-color:var(--surface);padding:16rem;z-index:100;left:50%;top:10%;min-width:320rem;max-width:100%;max-height:80%;overflow-x:hidden;overflow-y:auto;transition:var(--speed3) all,0s background-color;transform:translate(-50%,-64rem)}.modal:not(.left,.right,.top,.bottom){border-radius:12rem}.modal.small{width:25%;height:25%}.modal.medium{width:50%;height:50%}.modal.large{width:75%;height:75%}.modal.active{opacity:1;visibility:visible;transform:translate(-50%)}.modal.active.left,.modal.active.right,.modal.active.top,.modal.active.bottom,.modal.active.max{transform:translate(0)}.modal.top{opacity:1;top:0;left:0;right:auto;bottom:auto;height:auto;width:100%;min-width:auto;max-height:100%;transform:translateY(-100%)}.modal.left{opacity:1;top:0;left:0;right:auto;bottom:auto;width:auto;height:100%;max-height:100%;transform:translate(-100%)}.modal.right{opacity:1;top:0;left:auto;right:0;bottom:auto;width:auto;height:100%;max-height:100%;transform:translate(100%)}.modal.bottom{opacity:1;top:auto;left:0;right:auto;bottom:0;height:auto;width:100%;min-width:auto;max-height:100%;transform:translateY(100%)}.modal.max{top:0;left:0;right:auto;bottom:auto;width:100%;height:100%;max-width:100%;max-height:100%;transform:translateY(64rem);border-radius:0}.modal.left.small,.modal.right.small{width:320rem}.modal.left.medium,.modal.right.medium{width:512rem}.modal.left.large,.modal.right.large{width:704rem}.modal.top.small,.modal.bottom.small{height:256rem}.modal.top.medium,.modal.bottom.medium{height:384rem}.modal.top.large,.modal.bottom.large{height:512rem}nav>.modal,nav.left>.modal{z-index:0;text-align:left;overflow-y:auto;background-color:inherit;padding:16rem 16rem 16rem 80rem}nav.right>.modal{padding:16rem 80rem 16rem 16rem}nav.top>.modal{padding:80rem 48rem 16rem}nav.bottom>.modal{padding:16rem 48rem 80rem}.modal>a.row:hover,.modal>a.row.active{background-color:var(--secondary-container)}.modal>.row{padding:12rem 8rem}nav,.row{display:flex;align-items:center;justify-content:flex-start;white-space:nowrap;border-radius:0;gap:16rem}*:not(.divider,.small-divider,.medium-divider,.large-divider)+nav:not(.left,.right,.top,.bottom),*:not(.divider,.small-divider,.medium-divider,.large-divider)+.row:not(a){margin-top:16rem}nav *,.row *{margin-top:0;margin-bottom:0}nav>*,.row>*{margin:0!important;white-space:normal;flex:none}nav.no-space,.row.no-space{gap:0rem}nav.no-space>.border+.border,.row.no-space>.border+.border{border-left:0}nav.medium-space,.row.medium-space{gap:24rem}nav.large-space,.row.large-space{gap:32rem}nav>.max,.row>.max{flex:auto}nav.wrap,.row.wrap{display:flex;flex-wrap:wrap}header>nav,header>.row{min-height:64rem}footer>nav,footer>.row{min-height:80rem}nav>.border.no-margin+.border.no-margin,.row>.border.no-margin+.border.no-margin{border-left:0}nav.left,nav.right,nav.top,nav.bottom{display:flex;align-items:center;justify-content:center;flex-direction:column;border:0;position:fixed;color:var(--on-surface);background-color:var(--surface);transform:none;z-index:100;left:0;top:0;bottom:0;right:0;height:auto;width:auto;text-align:center;padding:8rem}nav.left,nav.right{width:80rem}nav.top,nav.bottom{height:80rem}nav.top{bottom:auto;justify-content:center;flex-direction:row}nav.left{right:auto;justify-content:flex-start;flex-direction:column}nav.right{left:auto;justify-content:flex-start;flex-direction:column}nav.bottom{top:auto;justify-content:center;flex-direction:row}nav.left>a:not(button,.button,.chip,img,video),nav.right>a:not(button,.button,.chip,img,video),nav.top>a:not(button,.button,.chip,img,video),nav.bottom>a:not(button,.button,.chip,img,video){min-width:56rem;min-height:56rem;text-align:center;display:flex;z-index:101;flex-direction:column}nav.left>a:not(button,.button,.chip,img,video),nav.right>a:not(button,.button,.chip,img,video){width:auto}nav.top>a:not(button,.button,.chip,img,video),nav.bottom>a:not(button,.button,.chip,img,video){height:auto;width:56rem}nav.left:before,nav.right:before,nav.top:before,nav.bottom:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-color:inherit;z-index:101;border-radius:inherit}nav.left>:not(.modal,.overlay),nav.right>:not(.modal,.overlay),nav.top>:not(.modal,.overlay),nav.bottom>:not(.modal,.overlay){z-index:101}nav.left>a:not(button,.button,.chip)>i,nav.right>a:not(button,.button,.chip)>i,nav.top>a:not(button,.button,.chip)>i,nav.bottom>a:not(button,.button,.chip)>i{padding:4rem;border-radius:32rem;transition:var(--speed1) padding linear;margin:0 auto}nav.left>a:not(button,.button,.chip):hover>i,nav.left>a:not(button,.button,.chip):focus>i,nav.left>a:not(button,.button,.chip).active>i,nav.right>a:not(button,.button,.chip):hover>i,nav.right>a:not(button,.button,.chip):focus>i,nav.right>a:not(button,.button,.chip).active>i,nav.top>a:not(button,.button,.chip):hover>i,nav.top>a:not(button,.button,.chip):focus>i,nav.top>a:not(button,.button,.chip).active>i,nav.bottom>a:not(button,.button,.chip):focus>i,nav.bottom>a:not(button,.button,.chip):hover>i,nav.bottom>a:not(button,.button,.chip).active>i{background-color:var(--secondary-container);color:var(--on-secondary-container);padding:4rem 16rem;font-variation-settings:"FILL" 1}nav.left>.modal{padding-left:88rem}nav.right>.modal{padding-right:88rem}nav.top>.modal{padding-top:88rem}nav.bottom>.modal{padding-bottom:88rem}nav.left-align,nav.top-align{justify-content:flex-start}nav.right-align,nav.bottom-align{justify-content:flex-end}nav.center-align,nav.middle-align{justify-content:center}nav:not(.left,.right)>.space{width:8rem}nav:not(.left,.right)>.medium-space{width:16rem}nav:not(.left,.right)>.large-space{width:24rem}@media only screen and (max-width: 600px){nav.top,nav.bottom{justify-content:space-around}}.overlay{opacity:0;visibility:hidden;position:fixed;top:0;left:0;width:100%;height:100%;color:var(--on-background);background-color:var(--overlay);z-index:100;transition:var(--speed3) all,0s background-color}nav>.overlay{z-index:0}.overlay.active{opacity:1;visibility:visible}.page,.modal:not(.active) .page.active,.page:not(.active) .page.active{opacity:0;position:absolute;display:none}.page.active{opacity:1;position:inherit;display:block}.page.top.active{animation:var(--speed4) page-to-bottom ease}.page.bottom.active{animation:var(--speed4) page-to-top ease}.page.left.active{animation:var(--speed4) page-to-right ease}.page.right.active{animation:var(--speed4) page-to-left ease}@keyframes page-to-bottom{0%{opacity:0;transform:translateY(-64rem)}to{opacity:1;transform:translateY(0)}}@keyframes page-to-top{0%{opacity:0;transform:translateY(64rem)}to{opacity:1;transform:translateY(0)}}@keyframes page-to-left{0%{opacity:0;transform:translate(64rem)}to{opacity:1;transform:translate(0)}}@keyframes page-to-right{0%{opacity:0;transform:translate(-64rem)}to{opacity:1;transform:translate(0)}}.progress{position:absolute;background-color:var(--active);top:0;bottom:0;left:0;right:0;transition:var(--speed4) clip-path;clip-path:polygon(0% 0%,0% 0%,0% 0%,0% 0%)}.progress.left{clip-path:polygon(0% 0%,0% 100%,0% 100%,0% 0%)}.progress.right{clip-path:polygon(100% 0%,100% 100%,100% 100%,100% 0%)}.progress.top{clip-path:polygon(0% 0%,100% 0%,100% 0%,0% 0%)}.progress.bottom{clip-path:polygon(0% 100%,100% 100%,100% 100%,0% 100%)}.progress+*{margin-top:0}.checkbox,.radio,.switch{width:auto;height:auto;line-height:normal;white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center}.checkbox>input,.radio>input{width:24rem;height:24rem;opacity:0}.checkbox>span,.radio>span,.switch>span{display:inline-flex;align-items:center;color:var(--on-background);font-size:14rem}.checkbox>span:not(:empty),.radio>span:not(:empty){padding-left:4rem}.checkbox>input+span:before,.radio>input+span:before,.switch>input+span:empty:after,.switch>input+span>i{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24rem;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;text-align:center;overflow:hidden;width:24rem;height:24rem;box-sizing:border-box;margin:0 auto;outline:none;color:var(--primary);position:absolute;left:-24rem;background-color:transparent;border-radius:50%}.checkbox>input+span:before{content:"check_box_outline_blank"}.radio>input+span:before{content:"radio_button_unchecked"}.checkbox>input:not([disabled]):focus+span:before,.checkbox>input:not([disabled]):hover+span:before,.radio>input:not([disabled]):focus+span:before,.radio>input:not([disabled]):hover+span:before{background-color:var(--active);box-shadow:0 0 0 8rem var(--active);animation:var(--speed1) to-checked ease-out}.checkbox>input:checked+span:before{color:var(--primary);content:"check_box";font-variation-settings:"FILL" 1}.radio>input:checked+span:before{color:var(--primary);content:"radio_button_checked"}.checkbox+.checkbox,.radio+.radio,.switch+.switch{margin-left:8rem}.switch>input{width:52rem;height:32rem;opacity:0}.switch>input+span:before{content:"";position:absolute;left:0;top:50%;background-color:var(--active);border:2rem solid var(--outline);box-sizing:border-box;width:52rem;height:32rem;border-radius:32rem;transform:translate(-52rem,-50%)}.switch>input:checked+span:before{border:none;background-color:var(--primary)}.switch>input+span:empty:after,.switch>input+span>i{position:absolute;left:0;top:50%;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:var(--speed2) all;font-size:16rem;user-select:none;min-width:auto;content:"";color:var(--surface-variant);background-color:var(--outline);transform:translate(-48rem,-50%) scale(.6)}.switch>input:checked+span:empty:after,.switch>input:checked+span>i{content:"check";color:var(--primary);background-color:var(--on-primary);transform:translate(-28rem,-50%) scale(1)}.switch>input+span>i{transform:translate(-48rem,-50%) scale(1)}.switch>input+span>i:last-child,.switch>input:checked+span>i:first-child{opacity:0}.switch>input:checked+span>i:last-child,.switch>input+span>i:first-child{opacity:1}.switch>input:not([disabled]):focus+span:empty:after,.switch>input:not([disabled]):hover+span:empty:after,.switch>input:not([disabled]):focus+span>i,.switch>input:not([disabled]):hover+span>i{box-shadow:0 0 0 8rem var(--active)}.checkbox>input:disabled+span,.radio>input:disabled+span,.switch>input:disabled+span{opacity:.5;cursor:not-allowed}.field>nav,.field>.row{flex-grow:1;padding:0 16rem}.field.round>nav,.field.round>.row{flex-grow:1;padding:0 24rem}@keyframes to-checked{0%{box-shadow:0 0 0 0 var(--active)}to{box-shadow:0 0 0 8rem var(--active)}}table{width:100%;border-spacing:0;font-size:14rem;color:var(--on-background);text-align:left;border-radius:0}table td,table th{width:1%;text-align:inherit;padding:8rem}table th{font-weight:500}table.border td,table.border th{border-bottom:1rem solid var(--outline)}table.no-space td,table.no-space th{padding:0}table.medium-space td,table.medium-space th{padding:12rem}table.large-space td,table.large-space th{padding:16rem}td>.button,td>nav>.button,td>button,td>nav>button,td>.none,td>nav>.none,td>.chip,td>nav>.chip{min-height:24rem;max-height:24rem}td>.circle:not(.tiny,.small,.medium,.large,.extra),td>nav>.circle:not(.tiny,.small,.medium,.large,.extra),td>.square:not(.tiny,.small,.medium,.large,.extra),td>nav>.square:not(.tiny,.small,.medium,.large,.extra){min-width:24rem;max-width:24rem;min-height:24rem;max-height:24rem}.tabs{display:flex;white-space:nowrap;border-bottom:1rem solid var(--outline);border-radius:0}.tabs:not(.left-align,.right-align,.center-align){justify-content:space-around}*+.tabs{margin-top:16rem}.tabs>a{display:flex;font-size:14rem;font-weight:500;color:var(--on-background);padding:8rem 16rem;border-bottom:2rem solid transparent;text-align:center;min-height:48rem;width:100%;gap:4rem}.tabs.small>a{min-height:32rem}.tabs.medium>a{min-height:40rem}.tabs.large>a{min-height:64rem}.tabs>a.active{color:var(--primary);border-bottom:2rem solid var(--primary)}.tabs>a.active>i{color:var(--primary)}.tabs.left-align>a,.tabs.center-align>a,.tabs.right-align>a{width:auto}.toast{position:fixed;top:auto;bottom:96rem;left:50%;right:auto;width:80%;height:auto;z-index:200;visibility:hidden;display:flex;box-shadow:var(--elevate2);color:var(--on-error);background-color:var(--error-background);padding:16rem;opacity:1;cursor:pointer;transform:translate(-50%);text-align:left;align-items:center;border-radius:4rem;gap:8rem}.toast.top{top:96rem;bottom:auto}.toast.bottom{top:auto;bottom:72rem}.toast.active{visibility:visible;animation:var(--speed2) toast-to-top}.toast.active.top{animation:var(--speed2) toast-to-bottom}@keyframes toast-to-top{0%{opacity:0;transform:translate(-50%,16rem)}to{opacity:1;transform:translate(-50%)}}@keyframes toast-to-bottom{0%{opacity:0;transform:translate(-50%,-16rem)}to{opacity:1;transform:translate(-50%)}}@media only screen and (min-width: 993px){.toast{width:40%}}.tooltip{display:none;background-color:#000000e6;color:#fff;font-size:12rem;text-align:center;border-radius:4rem;padding:8rem;position:absolute;z-index:3;top:0;left:50%;bottom:auto;right:auto;transform:translate(-50%,-100%);width:auto;white-space:nowrap;font-weight:500}.tooltip.left{left:0;top:50%;bottom:auto;right:auto;transform:translate(-100%,-50%)}.tooltip.right{right:0;top:50%;bottom:auto;left:auto;transform:translate(100%,-50%)}.tooltip.top{top:0;left:50%;bottom:auto;right:auto;transform:translate(-50%,-100%)}.tooltip.bottom{bottom:0;left:50%;top:auto;right:auto;transform:translate(-50%,100%)}.tooltip.small{width:128rem;white-space:normal}.tooltip.medium{width:192rem;white-space:normal}.tooltip.large{width:256rem;white-space:normal}*:hover>.tooltip{display:flex;align-items:center;gap:8rem}.dropdown:active~.tooltip,button:focus>.dropdown~.tooltip,.button:focus>.dropdown~.tooltip,.field>:focus~.dropdown~.tooltip{display:none} diff --git a/iron-svelte-client/static/beercss/beer.min.js b/iron-svelte-client/static/beercss/beer.min.js new file mode 100644 index 00000000..2f6f0644 --- /dev/null +++ b/iron-svelte-client/static/beercss/beer.min.js @@ -0,0 +1 @@ +(()=>{if(window.ui)return;let g=null,x=null,k=null,m={light:"",dark:""};const Y=r=>new Promise(e=>setTimeout(e,r)),D=()=>"fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r=="x"?e:e&3|8).toString(16)}),u=(r,e)=>{try{return typeof r=="string"?(e||document).querySelector(r):r}catch{}},c=(r,e)=>{try{return typeof r=="string"?(e||document).querySelectorAll(r):r}catch{}},a=(r,e)=>r?r.classList.contains(e):!1,p=(r,e)=>{!r||r.classList.add(e)},d=(r,e)=>{!r||r.classList.remove(e)},s=(r,e,t)=>{r.addEventListener(e,t,!0)},B=(r,e,t)=>{r.removeEventListener(e,t,!0)},T=(r,e)=>{if(!!e)return e.parentNode.insertBefore(r,e)},F=r=>{if(!!r)return r.previousElementSibling},j=r=>{if(!!r)return r.nextElementSibling},f=r=>{if(!!r)return r.parentElement},L=r=>{let e=document.createElement("div");for(let t in r)e[t]=r[t];return e},v=r=>{let e=r,t=f(r),o=u("label",t),i=a(t,"border")&&!a(t,"fill");if(document.activeElement==r||e.value||/date|time/.test(e.type)){if(i&&o){let n=a(o,"active")?o.offsetWidth:Math.round(o.offsetWidth/1.33),b=a(t,"round")?20:12,C=n+b+8;e.style.clipPath=`polygon(0% 0%, ${b}rem 0%, ${b}rem 8rem, ${C}rem 8rem, ${C}rem 0%, 100% 0%, 100% 100%, 0% 100%)`}else e.style.clipPath="";p(o,"active")}else d(o,"active"),e.style.clipPath="";r.getAttribute("data-ui")&&z(r)},q=r=>{let e=r.currentTarget;/input/i.test(e.tagName)||z(e)},A=r=>{let e=r.currentTarget,t=u("input:not([type=file]):not([type=checkbox]):not([type=radio]), select, textarea",f(e));t&&t.focus()},S=r=>{let e=r.currentTarget;v(e)},$=r=>{let e=r.currentTarget;v(e)},E=r=>{let e=r.currentTarget;c(".dropdown.active").forEach(o=>d(o,"active")),B(e,"click",E)},_=r=>{let e=r.currentTarget;d(e,"active"),g&&clearTimeout(g)},N=r=>{let e=r.currentTarget;w(e)},M=r=>{let e=r.currentTarget;w(e,r)},P=()=>{x&&clearTimeout(x),x=setTimeout(y,180)},w=(r,e)=>{if(e){if(e.key!=="Enter")return;let i=e.currentTarget,l=j(i);return!l||!/file/i.test(l.type)?void 0:l.click()}let t=r,o=F(r);!o||!/text/i.test(o.type)||(o.value=Array.from(t.files).map(i=>i.name).join(", "),o.readOnly=!0,o.addEventListener("keydown",M),v(o))},z=(r,e,t)=>{if(e||(e=u(r.getAttribute("data-ui"))),a(e,"modal"))return H(r,e);if(a(e,"dropdown"))return O(r,e);if(a(e,"toast"))return U(r,e,t);if(a(e,"page"))return I(r,e);if(a(e,"progress"))return R(e,t);if(h(r),a(e,"active"))return d(e,"active");p(e,"active")},h=r=>{let e=f(r);if(!a(e,"tabs"))return;c("a",e).forEach(o=>d(o,"active")),p(r,"active")},I=(r,e)=>{h(r);let t=f(e);for(let o=0;o{if(h(r),a(e,"active"))return d(e,"active");c(".dropdown.active").forEach(o=>d(o,"active")),p(e,"active"),s(document.body,"click",E)},H=async(r,e)=>{h(r);let t=F(e);a(t,"overlay")||(t=L({className:"overlay"}),T(t,e),await Y(90)),t.onclick=()=>{d(r,"active"),d(e,"active"),d(t,"active")};let o=a(e,"active"),i=f(e);/nav/i.test(i.tagName)&&c(".modal, a, .overlay",i).forEach(n=>d(n,"active")),o?(d(r,"active"),d(t,"active"),d(e,"active")):(!/button/i.test(r.tagName)&&!a(r,"button")&&!a(r,"chip")&&p(r,"active"),p(t,"active"),p(e,"active"))},U=(r,e,t)=>{h(r),c(".toast.active").forEach(i=>d(i,"active")),p(e,"active"),s(e,"click",_),g&&clearTimeout(g),!(t&&t==-1)&&(g=setTimeout(()=>{d(e,"active")},t&&t?t:6e3))},R=(r,e)=>{let t=r;if(a(t,"left"))return t.style.clipPath=`polygon(0% 0%, 0% 100%, ${e}% 100%, ${e}% 0%)`;if(a(t,"top"))return t.style.clipPath=`polygon(0% 0%, 100% 0%, 100% ${e}%, 0% ${e}%)`;if(a(t,"right"))return t.style.clipPath=`polygon(100% 0%, 100% 100%, ${100-e}% 100%, ${100-e}% 0%)`;if(a(t,"bottom"))return t.style.clipPath=`polygon(0% 100%, 100% 100%, 100% ${100-e}%, 0% ${100-e}%)`},V=()=>{if(m.light&&m.dark)return m;let r=document.createElement("body");r.className="light",document.body.appendChild(r);let e=document.createElement("body");e.className="dark",document.body.appendChild(e);let t=getComputedStyle(r),o=getComputedStyle(e),i=["--primary","--on-primary","--primary-container","--on-primary-container","--secondary","--on-secondary","--secondary-container","--on-secondary-container","--tertiary","--on-tertiary","--tertiary-container","--on-tertiary-container","--error","--on-error","--error-container","--on-error-container","--background","--on-background","--surface","--on-surface","--outline","--surface-variant","--on-surface-variant","--inverse-surface","--inverse-on-surface"];for(let l=0;l{if(!r||!window.materialDynamicColors)return V();let e=/dark/i.test(document.body.className)?"dark":"light";return r&&r.light&&r.dark?(m.light=r.light,m.dark=r.dark,document.body.setAttribute("style",r[e]),r):window.materialDynamicColors(r).then(t=>{const o=i=>{let l="";for(let n in i){let b=n.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase();l+="--"+b+":"+i[n]+";"}return l};return m.light=o(t.light),m.dark=o(t.dark),document.body.setAttribute("style",m[e]),m})},Z=r=>r?(document.body.classList.remove("light","dark"),document.body.classList.add(r),window.materialDynamicColors&&document.body.setAttribute("style",m[r]),r):/dark/i.test(document.body.className)?"dark":"light",K=()=>{k||(k=new MutationObserver(P),k.observe(document.body,{childList:!0,subtree:!0}),y())},y=(r,e)=>{if(r){if(r=="setup")return K();if(r=="guid")return D();if(r=="mode")return Z(e);if(r=="theme")return W(e);let n=u(r),b=u("[data-ui='#"+n.id+"']");z(b,n,e)}c("[data-ui]").forEach(n=>s(n,"click",q)),c(".field > label").forEach(n=>s(n,"click",A)),c(".field > input:not([type=file]):not([type=checkbox]):not([type=radio]), .field > select, .field > textarea").forEach(n=>{s(n,"focus",S),s(n,"blur",$),v(n)}),c(".field > input[type=file]").forEach(n=>{s(n,"change",N),w(n)})};window.ui=y,window.addEventListener("load",()=>y("setup"))})(); diff --git a/iron-svelte-client/static/favicon.png b/iron-svelte-client/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d82ea274dddd29f8f521b99334c5f79375b411c7 GIT binary patch literal 12640 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 O0000pCj literal 0 HcmV?d00001 diff --git a/iron-svelte-client/static/material-icons/LICENSE b/iron-svelte-client/static/material-icons/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/iron-svelte-client/static/material-icons/LICENSE @@ -0,0 +1,202 @@ + + 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/iron-svelte-client/static/material-icons/filled.css b/iron-svelte-client/static/material-icons/filled.css new file mode 100644 index 00000000..5492184a --- /dev/null +++ b/iron-svelte-client/static/material-icons/filled.css @@ -0,0 +1,24 @@ +@font-face { + font-family: "Material Icons"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons.woff2") format("woff2"); +} +.material-icons { + font-family: "Material Icons"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} diff --git a/iron-svelte-client/static/material-icons/index.css b/iron-svelte-client/static/material-icons/index.css new file mode 100644 index 00000000..676c4a29 --- /dev/null +++ b/iron-svelte-client/static/material-icons/index.css @@ -0,0 +1,124 @@ +@font-face { + font-family: "Material Icons"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons.woff2") format("woff2"); +} +.material-icons { + font-family: "Material Icons"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} + +@font-face { + font-family: "Material Icons Outlined"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons-outlined.woff2") format("woff2"); +} +.material-icons-outlined { + font-family: "Material Icons Outlined"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} + +@font-face { + font-family: "Material Icons Round"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons-round.woff2") format("woff2"); +} +.material-icons-round { + font-family: "Material Icons Round"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} + +@font-face { + font-family: "Material Icons Sharp"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons-sharp.woff2") format("woff2"); +} +.material-icons-sharp { + font-family: "Material Icons Sharp"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} + +@font-face { + font-family: "Material Icons Two Tone"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("./material-icons-two-tone.woff2") format("woff2"); +} +.material-icons-two-tone { + font-family: "Material Icons Two Tone"; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + font-feature-settings: "liga"; +} diff --git a/iron-svelte-client/static/material-icons/material-icons-outlined.woff2 b/iron-svelte-client/static/material-icons/material-icons-outlined.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d44b9486679c2c88e81d6d4e3ad6471b0df1c294 GIT binary patch literal 155276 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
    re}V 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 HlNJF08m+SL literal 0 HcmV?d00001 diff --git a/iron-svelte-client/static/material-icons/material-icons-round.woff2 b/iron-svelte-client/static/material-icons/material-icons-round.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e9e305f27d5e78ec2d5047f9660e01b0de6a1ac8 GIT binary patch literal 173620 zcmV)CK*GOwPew9NR8&s@0;V(o3IG5A1{&M|0;T2v0RR9100000000000000000000 z0000Dl!Q+lgV!VmU;waC0X7081ELxP1_gs`2OwK08nyzyjA!o60f<0Jt8sRn{g-M} zJ0(oAwcr$ZjGD2{h9f&i!=?J|LrEW9QP_P76mA<_K%Wm_ItQ}<|NsC0|NsBLkK{-6 zZoZklyxE!Ez02p407*bVJ}R_8fr{d{h?XHy}C#3($;mpz{rS* zd+ALjRWkWOKYLVO4|y1d{ab8GDMiV>N~)yFgg@2y)CQ}y4$Gm|TI-qgUL{phW%@#` zthFk6@-CjVeX|Hz-Q5T2u97O*+3ilNX0?tYA|iYg5h|&Y-QA^nZ?(FTC+CCuQO!ie zOo@r}gy%_lOt_=`1eS--N;a5c29q?x6f>B}$Y9bJeELd3!!#>K5_g}o{O11GbqFU6 z#J4fg^o;Ll(h$om2QdTV1Q8aja0NsKJIrX$M*EIpiNx6AHO2TO znmQyTc?mJ)nVmFaOz|aVl4qL6iC`7%Qb`$!p{gjKV!@xes?bE>l9^7)=YE83{#dp!&;lKTL?sD>wcaf zFa~AZ{<(ZJ)}KayA**~00I~`*{*8FffBM+1o9b!b0xwU zt(aERC^V`kC{t2MlM>yr|Noyk`=9Qr`I^7dV(}(aJM)?#@Kh0!7?ZDqz)};0O_dU% z5r|NwkUC08pb-*ME80|pk$@(M(B%NOB?n=<91=1fIaE2|AUjX@(OSEw|2F&o|5~I! zeyD0#b=SJ0&*Zqy_A!Z$MGUcSXlS&77KO$nND>GUo$+LEzv7;cRDb{&F}B-Eglr{6 znwULi5X88e-Ifk)7Ydy4Vq;X365NOcCb<6mf6Mj%U%R_Lerm1iU2E-q-9`-tf&>yG z-saWi+DS*OV}=YNFarY#42*C@xhDGf=!bZ0N2JnO^B=ekj0Qp80DSuYqafNvg`+H~ zyuQF84qrn7)R^gU4jQm#iJxR9O^k!7mp+QgeM=4q!_J@MO?vISdj!{4`a>{k@iTgC z?1Y?JrWn*DDgcb1VkhW4-sFbL1ST#uK!EDRoXMvN5g`E$Su7=j2g%?kEjoCco3q#k z2LK3B4p!}r!V$8yOa>T{aAM`BB4cXgkeUtvx>Swq_@sXa>|konawm*Fp`L^yO424N zZHTCl{_}Wnh)nMr0#%Wz*kIUf%@jT0e;>*_z_mw6QJa{|I6B@PIJFM>0G3i#mu)wX ztgc`iY^{qHUapz4RaI|9TndmfWEwxxc zDC!~0|NlSd|9{QB_s7p1W1YR<*!!s0prZ6Z8$?s1=cGMaaY}EY<{OV-(v~6`N`M3j z36_L7qAAqg;g~JPNM&h3G7LAYojYBAD5b3iynrA-34-8Y0F~5~17!0#ZO|`4FTq$R zyu^O%3F6!K8)A~oBS(RSSv9tnXtpmFk!F#2f|xW0-=AVtwi_pzz3r<10AyQdKpIKd zajyQ&`Tw)0o3Hmbsx7+;gcEkgL2DcU5rtRdWJxnBqdu}FxyYqSF1XVz zz*HN$lz>TMN}9F3)@J^{ss8^@Gt-YB_1^oS?O`Y!;IdO>2gsZl1QyK9-m^)YhBcBb z*)qg-oF-0cCj~sjFn6u#)c-!U|GH9t{HSV9cUAXeOm-hq@V$7mV3aM}u@u>sEotc9 zd!YLeG#$D?1E|rAMrg^H*vWdAA0W?G&HkIlyDWd6@Al5Wf{2I&5eXt9BH~S1Z@9A8|PMyl$vBTQE^QW+FWz2$( z7JhQF1(fj9L-qa!)&K(n2><`SRIBa#fdC1RR4PExHszYA98S_T%DGrkl*;MMS?OF= z_i`LoKkmElzrc_G!QhYh02l)Z1tLf)0MKLrpr`;y#g7OCe*`ExFo?z^2_PvZDdzx6 zcD5ut-DCier~oKS07%;$Jdl)K7M-p^&KgEa9-6Xppi<5(*{(s(tYI2RWe=`gscNO_ zRaLDjceU)(tD2@=FE?4c-gYm0+pFFUi`6jh7QI=u|Npk~-yc5U=o=vl0Yfim(X9>V zblf2+Ux`tA0%w6h^=W-q2`ZIb0A=gSEikhygT0U1C8YGWeNIO=bjq;ybXV7`b4el>Zm7_u^0|Uk zQ5q_^@Sin>%A-g$G5SMdfi9pkTg$0lx0}Ugh_!D9+*L#nn@O@S{=dxi{lW6u?Cvk@ zKI^nUIwKfVBp`vL-IZa% zwqybYQ`vpeC6nMJq|zdampFGpL?>E0h*VY{p_e?cS&}7tw==Dfyrtzz3quIO1fMZN2;mdP1mkVl zQojd%>)n61>OkfvS+S=fG|jBZr^{a7fBe5npL^f)yX@(J4b!DT%5y+PTPNq5l7sA~$ZyGW8KqL^`sOha&h;1rCj9 z!7Q|+4=cc94FVWM1Y(hdbmSl(<)}s@`Y?o_*v1~taD`jQ9#8;u03RR*$N)-!5nu(l z0bxK6Py{pqUBCda0Bitzz#Z@g{D3eZ3Wx<#fC8Wv=m4gGHQ*e01R+5TkPhSog+Mt_ z4b%j6Ky%Om^aKOI7%&CQ1zq(R)AuZqI{LA zQ+*oOqE>XOzmhSr5=voPV6Cl=P^Fq0I+HGueCp}sTtrdPCbgus?do8+=>=sq{rW*j zsk5Zc&dH5ctyOOWjNlh1!ZzMa%k6ZEDKl#?O}+}N&0qgU78@z4=`Cn^o7>y*WBClh{?soQWJ^S%z>p-B2lm^#$09N{& z>g%R#RyylfCCzo#hfr~{z3!<`|YB;UijhmBzqX6~{LqoyxjGie^HkT%93 zW^oG%M#fT{#+xmGWhvY+bg9au2U+AS_xZ_APUcGP-*DLoiU0S9m_Sa60X z`~WaOh$)VE3j`PlaIlbKg$x@3N@5}%nR~qC13y^hfODRCpumtVS87D8StJy-sYOrv zQ(L}f`U)2*MUhG^qGT)9VARmEt=qO8TiLZeThYKQ8`{S1hTFjuOKmp6Jj-q7%GozO z{mk$E!)va4=xe|E&Up{K^3i!W9eC)8SN<>2Bx8o$!{ApjscnB#yKnn2i?V1p-UXmF6@j5|p1(bF?goN>twAFQ)Y zgF{Za;GKH{YK%Ehq{W;)MfqPP<-|gVUiwJM(o|QS#7UN;UYr~eNw-5n!2-ew-_Q|Z zj|X575D_862pR$a5_A-5_MFl@@{tuv_ULfJ6H#)snQ-J4X^Pb8GNiO;++*V4g?v*3 z(eYWZ<_ignicLVlh=NPZBZ1|kW^CAZ?$$S}22MSWC+3n{mQQMd z=$YgZ5Hm@JhzawQ?q!rT(OpV`PC`XXSE63BN^5)9mWN*Z>Y~x6hdvqd!Ll6}o=usz zYR{p2KluOBf;bW*)(jkZ;FC6^OfbhPTbyvoBM1x%HVGvYG&(+*ig%VVHh~BugCd$} zV~iDA7-EkDzSsbOhlv^!SQr4PF@{SiyKv{=#W%lHX}RXUHzMvNRm`kxU6j=Y66bJm ziyg@U=PWbqaK{I?q$$v0%AOQCO4Mo5W5R}`yL^meB~IclegndbICk+LAmlJ2i8b^f zG0t&v9_Hk2{v>3Yi+m)SRO(sem{)n5Qrd~K%<>YG$|-87xwg8|zZ}i=6d^~0EcLE> z<%8d>+49IM9}O8b=hU5PbJh(_ES9pX)g62E-uHg>r`2k;>vz;`etmiNv2ATa(Babt|q%+R#Xp>AmSS;Mo8ohe+;hP_R zdip2o=sS1sRa{=*PTtUBs}pluJ9qAX{rOw%HfY;{2~+1UTe)?{;PC3*RF_J(hKi2* zRbC?RMn!^g*eV? zlsD__b4xVYbh64J&w+A`mLz57u(6Y5@!?gOtXQR5n&>9iiq7;dPO3sRS|tmqgIE>@ zOgUhTku0*#30J&>0bo!t@X48>aj2a4YRga0`Ox1c&04qb%(bt!Tt*`kQ>2+emf7Z< zcBZnPn_$tCqze-(FeG*Udc$dKD!q6873y``NB5N)wCT^vwF_HpYh~5BKK8x6pt=NO`@*6E%Q8HWJbO6PN4umh{(ZL*N{6a#C2_j7R zNHD^JYZNaQ*yo()fo~?+=7}HNk)+CiDQ60_S^XeuU#GaBjz+T9y4Rzg^`&3!CCFB# zs~G8uRjZejr`ncvsi%X!lv7M&sC3n_O~mZ_~cg~ z%~-eV%!66Wc8pv=^}5IFfQxQh-umPRKl#o7-k7)T$h9wKY&!PrPIe+Ue!!c5a^f~0 z@`EjgNasqG8Uvb&XneT&kD#DL4^u3$#RWYKkXXPDPVfi_7yuY(sPPjaT0vQ4AQL%B zM|v`lMcI}^xt5P|6jKJd5m9_WlE_q@F51_H9#z$KP0#g974215pjemo*w|t}o3c&2 zH_9SAn`N0zmsDBDhO&CHZXG&z>DITuR<@-b?dw=)yV;8x6Zh9>r$VQioV=W-oSB@J zoco;SF~9kr)6?|sjV%@$m_O77${k*_RHZ}QDx@~6Ut$~Y0% zJn_vwC%M8c9`lZXCIhxyDA8feg}c*Ud*8Qy_l{5as_*)xzq{a--&}R*xlg1M!hDN5 zP_4d{p$@?@@wsJe7PF^rtGd2&hdaMKq)9eR;Bd&y>2;!!JkxO(95zHZulsa&hwlfkDHe;*v2z zp_98V3%jnx!{zpuRMxY0Rn;|dl5HqmwL!~9v(?k?>kyw&T-%zGUs~G(=FbcnbDHKk zAM!ifImp@E&$E1l*dd54q0YG*5*w5om6xeni=uAptE~E!HC=PHUMF?`OY|vK8Xw*i zyYcKWEz@>-p60hFffQ-VKt^(qp97A<5h^TLA{Wxsty0Ev_5!GsPF zI2zl<3RdJ6YjGCuSTi;;^lfyQ9nMckREdr&Lf23Dw7)QKqRp7kRdefmI;+Kr$nc|} zgI*iD<@G(ift9<$oRKxV5kgVCO014N8{_^%v)#yRn~o_&Ev-$e3yI|7EM!uO3n@{m z520LA0kelZ+dhz5vaYgcv%BECT5kg5sUG8?-ugNWx>&>}n8CG~Oq)T`ZRr){;vji#_3RGju~R#gKL~x>YKh88I9%r|Fr6@ix}{nrZDNp?U-71b z#pTN?phTs#N#ZWuBTmyA8SlY*oA+xS$oHK|5S`?VN3g*M(4yqxOSd|B+?J-jO>CV0 zfO87a+uL1tNMlPb-Jpj59YOo|L(Yvh9(V*7d^r#`d)YOK+`A>NMeFC*58N_AU(asi zg*^F;@B0lMM{fdQ+;{&A9{zm8n?D2JXGEhUiN`%&3cpL%bsQ`@MT2`_o+ps$+x@^s zZ+qma_~Bt63Vg$5I`o=5%m7+)D=W|3NQi( z7M$WcWRaA&-?ztXv`Q_+s6JC(6@>h^^VmA#9i5R7kxF1~eKrrVLLi#qUj2a^`Y$%( z^iBDL>UVno6*IZO>Nn9h0gHE_FjJ3n1R#K}t)tMHIs)CracY3skO!&*fP~#!7oMRR zkh8h~?X_IrW-YMeIZ3Qb#@KtZj#Ir761*6Bl>B->6$C$ zVfnry<9^&E_+*)KrEND#9jcyx{aCN;_(E3xH+^R_xN$kk9+>O*N=Pu*dJBx zHn}<6X-IkQ(<>mxD|2t6dWL-ziYL@qirv>Y%M%>XP(+vE3Q-Ocd*07Df{=xQ827nw zCz+3m__0Vt#a4m1Yi^%;wzK6urZ>4eK@?>UNJ$kEDDe>Hu|5!v83qi%W$bPh~2zjMYrmkc=`%EhNI-~RYlUO?JzZdhov=6`Q;ITEQ8dq0JYI$(bjuO$$y*V`F{=x2!M zvi^`^NC4MIA4B`{csobgcm8)w-}B6kdld%H<^~a-Vm%*SmK9rCYuezK(>w~bvQM6R zLsTP=nQJEgvgXvppeDhtJ|7%}F&HxX5jp{xV8?wX;LiWMfoEk++Ew8-M<53!rlNp%Eaw0x|r%wT%E>RMEsp4-;HY1O|1$J1qr7Lwgf62 z4SB($_=&;HdK$m#g2%0XQQh0)R}z+^_SIy7Hh zyz-edg6x<8hxA@BFC>b1$78VDaim~9e4*N5CF`V)_%6?(ND z4Kq4?LlBA42U*w)CSmANL>0oDffw%><|+Y7cbSa(Y`8L%+USQ+$3Lu}cRnDpfeEP) zAP?&~vC_7(Uim$WCJN|rk>wp%0eBvCF_V}u)fe=*PYVRK)&T()LLme(906sf%mF`C z&{csDtv_8eiP;b&KxD_c;jW$*`4j6htZcRyyF_S7*>r zd5zs7P8%oB$Mb<~p1?at5Cj>J|H?s77|?%Efs4WUGD0oBg-{<$%DJGI%tq zW4jfPNnOF@QOmE+@CAo5D>a4yxzhdGq!#x=ZrsVc1^K*u#KRrnTk84qgtBzqSZ1MW zMsBKQgg|VRpQE(DziBTs>AxO{hd)LHxD*EVXb_?YQV_lsQjX&e=A|)#?K|=}OO-St zt1UoCw;)4UN(JD^bS_Q6cN(4@FJzMtBFtN-C^3KUJ;L!PZdf`*lFRqH9NnuueJRB! z1)&;#QJ8?_=C);WJ6N#VThZot1X-L*ZOw|K8?D?BibY+(69 z&xNUezRmI6XV%hlxzc=ljSJQ7@tE5(xNF=YS)2>k$i8XUEE|Xg)ytb3q5gBV-*l(S@8-hs_ds5BmvZtH2m;dgejbMad z!nvJG8U`%d7IEexZ_0rsM}E0@VBI6VYt#EHoE^A~s0+FXaPTNmz}~X)W|yU#8&Q4c zLc&m@fK|R5`|x`>Y>?)HnH7CNj0oI!DX#}>iXiz>ai?^ws|Y|YUA>qmDfYd8j~j4t zTJc`?r5Q{*vl4dbreq+OtRg|bQruZYGRDtEc z@jYGT$bV{HB9K8sez})bEVneHeQ8_)({H?l=ZpJR{%3rPxXCp^^0EQ-TLYlKAcue@ z{D?&3%Qk8+U68(Hzs5oG27xb_AK^Bi5%~H>X+`~=oW8EuUKYDGCuHIHh&NBaWLp08 zV>^UgTHEPoIKxr_9xced5;t@<|M(*5U%@hfGzN(2jzAT1WTYUncOcA#Jb|OC8G@!= z_kvU4p&cVIq50Tzwgz#4HWr32_8^x2&kc{nr;Fs`z1Q9Vf048#$q*&LF9Uh0x}58 zHnEMKKT8)4e~K8b!*__jHre+K-QTs})zXlG(WS)|R=z8AlX}28Waz`b%l*)|oJsU- z$i2S~=F8*$tVTvi5V&U08EBcxQC8 zwk+&|q}Pxdgo*yKSDK-6oCRK`=gW*s3zh20+G};KzY$EO)3aP{!-~~@F@?%7(yppl z)>yuRANzS8yPPIS*lNIHc+Pwt*(J_%oql-NDap_?zdC|7JrwrTHqeMKOZk{r6k; z2ljDGJ3v%+3==<>><*sefvZoS^Lv6qsHf0a8N!@#g)SN>Vw~B2B2SPyMSyTPJbAXpA!{oIv1TD_Z;uPZ>O)g7C=`qL@)EMcXY`ngq2S&JO z(a>h^nlG!%-Bv=E!*67Gq77}4tHZbvOGqO@p-a#j6Mw&C8gcdI*hCRFm%Ri1Zq9Us zn7+jG;l|(bdUyn9t~A6Wc#fhpu4Be-5!ylW8p;hr>>@{UJQ3L68BIPtVYzttT&%~x zbJu~p-qS|0a={k|UElo^2A$V?rO^t~n7P{<+gZO$7DPGdGN$1+ET11!$p)~3LjWP5 zvLj9>+Yxwm>lDFjbS@5`ubAeSr;)KKkBYK`wYj&0Y!l-7G0+89EN;GMv#TX8d{2?P z=wj>&YO&X6(ZBLZn~X46N$(iRS`})|3|rW=R!tW}T~b`#g^!t}8xCN7iCE^fy4Ceb zSN8r!X5-%(=C;G%V?+*}`S_W^!g~e|FlR5id=dXNb&L z9ya#ruAP*i|8zz88J$t^tVSL?7;T_szb+YIN3z-O40mog(X{gQPtC$zk*57q!{F4# zNPx;%l`R$8Vx-wKSkUV1kOVXMlBQjNw6@^yz`{F?(%ZiGG|I2(iT0i0g5~>c$Lx2U z;_eO%7^^XeBkAPlK+S&Rw*!5RpNZ4`=oxyc2G`PKS{E`-za!k$UzMc z-84y~G`7L=(Kj4D&zARS>SZeZ*rTkiy6TmT(Fxv1URiq5J1K0+CA*lLtJgcZoR__R zWx?2z5^O-f4ALeG8u+Co1PVZXzec7CW-%-?eKGJMLtFq}U*XW%pmR%S7Me(5=3I@= z7fc9{5D)=HywVUopU~k7*%mJ(UT2hU@!Z@H#)4odG*z8b&ww1x`rKC-z0I@biA$4A#^yl&t4JUAklHo$gt{Q5 zBIr$-RgWB(RNW|Ut`z6)cZzYX$Z-?Y)}vqyWO$4dy@7xY2Ou{n;m%CE$LQnl%*hIF zR=R{~=jeN)8FX_kq+_QAe1M7&SVR*x7aIf$XTbeCI|WhD93nG2TcmB44;%;om=Nxd{MCFD0K5u25AwX=~(sR?T}zX%P2 zXdoC2hZXyQ!s#FJy!hz#(fgwx)C|L~#w9q*^Hh>g1HQ$`J>}hTp7Cs}LR+wG+pXN{ zNeKdG?muJz&KhP`HKOuL>Y*K4f|dwt(?(*!1- z&8>j3NHuSm>VSZ7MAel((cLi8l5No4O^Wdu?yGp++~5iJf1Kqr-1^~PIv%z=y{dxJY=fG+RLY~GMgogOhPl(>#cqAXJw~A6Fe;IixtJi7(30=XO#_S$ zK-JHKzxy(Etm*5a9R5BOH>yBJJ|EE*GNmI0o+deJ+H$1?i_{#_F*`Y62**@fpjc4> zn(lH^QMdj(B@@0s8;^ZTtJS-I$C&(Inx@m$SfQH;YgBg5pH99lmMN4VwN5Ri=^p^Z zq=fjH0xw#-;xnNURMQTaBpRa#4vD8`b}1+V>G-8BXx!!?6_EHyD)rGMY}dpeZwBhyDM4*1BV?d z?{!4F;(h8TUOsxR7iwo%28>n$Md9o)$kj2Ss^@vErENpURp|62wD8Y zBm0YcNI5(h;&%lG*T6%~zA(N1N%r-!suqFWn=YxITClN6Zr&$GHBA9A7K_NXk1E4{ z*D1AwbmiLMw#Zh4Se#!UJz9{138<~FyksW;hbeXqpKm7|eWwDvI6`yLuW+R*`r@Jo z0qZ_I>xW-{e+c<2cSgK4iWb@~a&V%WebM3_m!5J?m&{6eFJtW~TVwTU7Rr4}udj1; zFdHJw(s0ULO+cTHRlKgkl}hk(^JsEsAy|Z9$#ghMQNA^hm;?Y0Lk(;fR;?DTW~2$+ zNo|Y@V_T|yK*dbJZ7ZJ|vG8~?&$IcXC;U6G8MnsTZz$UB?2;82o8bxxr-r{_>O-=( zqVv+T z_D_ml=dtz03FZflpNely(Flt2iEhby`w5y!(c%@Q9s@I2C$NGJ8Ev~=t%_NJu1AV> zFig~ZDE{R40|tiWuj=2Lp0Hee{QTghgSm;c{9WP!9v6AS(LYeWqI|7Ppi?$uZ+bCq z8242F45})JMZ^Sb$E3OEj(TKMso0SnG-?J(FYk0`msGe(=!X7st&oX) zp>iJ5n7Et6G}r*rCwkmIp^m2_syxa81=4_H=Rg@grLvKBtX;R*>2i zZV9^>dArRx3zbZzi>KUPumuWXGmj&GE^T}h|Kw4vBso79Qhxj{bCbotlJbFd*JjVO z0ofPra1=w1(G{(sFd#9hkTwx(bKS0M(yww^4E`K+A^=cggHF(O7STF_zJq>l>JS1@jm%h~uMw=+ zqB3YPPpUx|Jph1p0xar~MR>h~iioxikZN;<7AO!>O>xSG2~H?e)&;!Wi>tOlq7p=z zMUQy?HTXC+is-n3gE|4DH7}sh)4YPdxP^+j<$<>*9xHKqhrNDH zc@L9`MT)npir}mCXMl4X^SDo+=D4tOtQ6(}B$VnR@$rON(KZiGhU> zJHeoi4XC;!0CH)vbnSQ8vhdAO^_VeSE)-s80e$ zZ~#(maS5FpA4LPImG&Y{b+9GXAMgijUS^EAwK8=vlZX;_A&s5rzJdCOj(Zr15>rEJ zG;t>3mZhntDc73+-J>&Rp|Lf+#RFHLJpZltsU*W|E>4RJSqW;o(dbc{@0%jS@*1I+ zoN^JXE1*LUVm%GinnI`sIk|}-)6NqxS%KGK4b{vkKC&@{Sq>oKG^MvfB(65hPBERp zuUFd&YQg`k~Doqt_+WL2q@Mcr~*Va zR(8_uynzdsnV=5zF&?2}tGm8!S%2kJi*U&zx3+FEQPna?vdSRAUjJD;v5Op2W#Brj zO@tS{GqrL97C8?NKxU#bXNcxQPzG{rG^;+FYsJlqpOh!KEE^W8Fd^-B*f#byj)LqK zG_(<@fnk?V`HID8XAK?FaK8g|?@H5U)SNmH zM%=(u=s~GUDt3~iLMUTHU3J`k@^8_WlZl!=&^U zk~vQQh<$c@IR!7q^^mNO^tecw)8UBc#1ITFeljbY4w-5!zSDzwDJkGnpc_kuHKqm0 zEcLIAl#@{I7cU65{^RMJ?X@#IdMhdaU>rj?Oopw7Ot8Y1j^i$e+ug0PbJ+V^PS05--J`c)O584utK2pug`UD6jW3~3Yf&M$Ab@OyA?8J^#{PW z8nGG#sQ^q0iU?-0H@cd*$R-$ z)D=mFDf9pv#IKaKU@h@fnwI4DU%vZ_*8jjqHdCt;vB6Vcd z??UN7IaN6goy>*-_n=_SoM8;I@YEX#|ERgZz8B!=w5)@BwN%(u7Zn7 zHXJalL+L;bEM9QG4&?A+<3Jb1S=|JU_9T{`AAvIY!CFobu>7^ z7U_r`YW?%SvAN|3Q6a->cGi?H4_C`H@DCEE<@FZKh5= z{01(4QeQBSW`59CN36^0{<^1@?)w{bJ-O_C(4aaFb->6Z)<5+g;xe#r8Qq@oaN3 zct&b0;F&g0jx*0|DC0KwX6h`{`J4iY2@CM7n_SGH08Y8NZj|WoX1GF%^;g74kUw#c zw8=Ip83%F@gGKVxu%**6mTu|0?zh=iQO@NiOJ-kgx#*uVdJ3dGiIm?ZIE*2Jpp#^I z-|}!3rzpWm*zXjf-P4(38r=X&0QFb)x`h%T*llzpo_Rt^4XLWTQiL|xC3$L3J9+S~7pW^|?T@<3{XV7Kf zxOf~Gw*zmd&x1{so(0^~kb-g5sOLvC4to2yThj+cris3u_wK34!k%{)4Rr$jy(42rp%Dfvf%!THPP+Ct*Id<8!u@$0~ zg2}oY=bV%Q6l70j$Em}sX~)qt3)#YHEF{xWO{uP5XW}(tCET5<6p^K@lUCk`N4ml> zI8vSY7@9{iS1Cf##WGlx~+!-0jn&hd#CwX2{pP~LZdT%4Q@?WF)hYtxkrvX#37Gw?G7>Xpvp z|JK)ggx-k>_i5RYHh=mqKGz3^#}axbj?j%qb9cwD9~KA8GZ z1+5kS()+2_0uH#~q{7`acfwJQ?|di%E|fMwgg^8Kvm_YFsWn(0VTnvjR4?)Vl z7pbPCNEo&vK-j>9(J1aQ`gHLylpR^|yznrLbP&vqCEuptwQv@SIizyXN~t6;J%;cz z9zGM2OKha|fX7kA1>!FcU)K02DW-poMHLo3VdA(%VS}|Dd1zo`gM(?Nh95TK7r0-| zWM=<;tH>GTfSk#h{MvOp>$*MSl%K-!W@er4k)T>|SI_sL0FKzIYm^l;y!J0-MH!t! zq;imVifhE-G2A<#p-rx&fkN|Pu53vvd zfnMTHa(T!jdbDGK30&K=4q(=E&nRlk^#^|d`ZQp+0(KUn;t=%#{AD2Q1fpKw=nteM zSc74+LyRM0ZH{wIPTlV?uECsl^h5eBY-1#G>?(LBNQMUp^!6~q7`Uk0hWH2)t$mJk z53>B9uaWOX(Ts8qs(556+Y4xBqqW_S=;oq#`}&IEI>wJ5CR2EsIgG`>qxxa$?F=@5 z&#-5ChQqK1|8d6lU?*U;4|kwvcy!&yYoQ-@{?7QqRfTFP8+`M(+jo<_gg*|Pa6b}Q zMlir3LYj^dcG5w_&Rn9*V=FOtGa5A8v7Mx_6c0&hSV-DNGa1)v_7B+%vp5!#SKgZx zvdy*EL`kb@-cvShsdg&PUQx~8Pt>Y(Qp)t7#tgq`uJoCfrw-aVMa zY<-0q8M=2uuXLkwJY+0cvg=HUw90CcXH047mfvzWnNb{KuIelc19w?kILeA$zOStJ z`pc$rFS9+!&Os~t=;I5AFdJ@jveHqVoab#=(y`#7Qk8q1@hhgj&6=Rh$BRiCf>{Q|Go=U4d zrRt9A98c7^JEYdIv)h9cmUu?JVvjXg>~)Pb__K_qntk72wcP(VHeN5v3@zGiTThHj zKCRQCQ?ptRbx9Z9g`IM>NspIfdP7{%XXC1Vt8F&0(;&w_Lm|f#!%K|#;cYs1j7hZ8 z2jh;<_%l(5cf)ZxDvhRf?*(S&n7!#|KCWmY#;eqQZDAB|4r;b!-+7IeWeV(|9=!K< z+^Vm3Yu?rFQR`Q2glMr@*z)Z`qdvZrX`zpHOq#h}b{E<6^25G#$z3&u_GQ`~F7wh+ zsh5t8+inuw)%x)@+DB(Tt~;l8a0l?C&80_sb`ZZ_xz5-JZfx-{g}v&o9{bk(og9l*e9uhL!FKi+P6*LBl}{a*EX&!77J@9$FoxP`jpKPvVK^sTDk z1)yDg!(IW9fja<+pP6j{iuPGSU(oje%qRe>1i%@l6@ce40U$7`01&aWX=wig8AkwQ z18D#Xg)sn?Qa*sDtsXkBB`}oa!F1a*uToPx;H zG{govkdQu)Kcp(iOpue6zY!=@bfDzgCxB`Y>g2tHCKWC7-a;pd9(fO7Xu(J+9TSyo z%oK)Uq0otyNhLNSnb=8P!lAdX0H+u(y1NKBHXbs(k@&>v@dY^(i+n}NP`htb8SN2 z)`6@&Irzk!BX8jY1wQ!{dGggnNxlxBC@Yvpg+dlpj$J`biaKlp1s=m_gwUj?g(Kbl zgLV!b;r)$n7ClCb=+i4ItMsoMJhy2NW;ubt#mURWayOt_m#{@SrGC!KXP#7 zgvh0p*C$`RU8kTyq58XA(fSnYDnTygZBS~W%*8F`S|$5Og}h5DRZLOECQCK%9#G?} zmh@ev?((S*(O8&An&{Khu9>+wr?d#xuzzShp-p-BY4_7XC{-u2TwPRJb&Hhg7d@`# z>E(7zUy>#I&5sWT&KX=~h(ylsZHD)2grx%AFsiAAG3#2sZkeEF>igHUUmloo+EHe+ z_{pr7IoWcLedZfjFl7;+d6r~%h-DL2&@*z#YNQR;zDr;oD-Y{zXq#j+c&FLYV;fTs zJ2Lykt|fa6>e+YlkAt9n;V_(|Z(2FVw!kSyJ^Rj?CFigjxNtYirSf)gb;=F&J;CiO zcd6W`@DRn!9+A>8wIIUtlm>Cb*abEO`Hp)Q~TpCBA@u5LhheXk&bhY=8wM?Q#z zST<(F_HNw0IGlNy7gx)ocs35jrp1t%hakOx;RPno=RP zc?B6nUCBsZuw$7-m1S11(j&;Cpd~AbLD?q!0oi#9u`dT(rF$-CS*~3F*D|pp&sR}- zk$C09-QZtDewD9n*Ze+^U&6dUT=zF9AXZSZY=0Fp+9QQ;6|vS6RREVH;~3HOr7 zb~z{_Ub~NHH!<)upDw?p!ZTfu|G}CB~ zuB(ND-j>;(w2E}1wLno8v|&E%+B&yuZLdsA2L?+z+Ii7QOF?Hg`CV8Fx2$W~j_MZN z9ba`1C1ZMi+iktR^~PH3KE8c{tPJVLE2qEwzqbs~83=+w*&Z>2?S?!VszT{7!r~np zu2rsKBcKvDV7JNmKbe28 zP4Sq@jru$2(;sa-{7!D=gO)`WVu)_7;Fi(b#Pk2a)j zgx9zU=I-6Bv{i50vh88a*nymacRQtR+QpfNd%Hbt*kfwJUIN|waC7%=e}yLp4EN4K zbBA=l15KZGSTTNa#8!&Gi}e+_Kz2JUXo<9U0wxx4Hjy_ z8yTa%$fHpPJB?=Lmpjt3bxF%kZOLR3*&`H8?SH%c++*yyVmaW(ZeTQY5U1< z9sVRa;jgMO{^{D_f0o5R-y#rN1sViEq^cGYM3n>yNu&}IO57DBw66b<;J1g6u+5P0 z@OgTGM9|whFpjn;=Zm)SQ;nEyvL+$NE78` zfQ($D{*XhbO&(l~mQ7fb`qK*N-6^1-{*0ym3hd-k(NbJf%k0s!dlqB zIeodL`R#dLYJRxM0)#y%lr55WP)w(~gnO+^HOmOoQc}UVX_Y(@!jWBVP@`Q7%}1TW zKG$b8v z{TYzAHK?g!h+vzCwMO8J)-)<@ZcM=RxU10#sPwc>!emgp*D2*1olN5=SFooU0tT~) zdAj(i?QSl6x97DNer*2Y-ja>8Wsdy4tc33SYRuYqGwaeeHgrsGYI@m5GruEOjn7?e zReKU{_jyeoU{vP*Fnte>;*N2wp2$@1_o<}Xv+qXE$)EYTD7(~5=M`c8_O2~;+^AIJ z`Bp>ion-!g-s2VT{Xu`S%exk@^mwpSKSur=Qxkf8z`P zW9;s)sJnl%s{eD8p! z!p%hSiOtpIPZEWSohGGAx`;hV7L(k-V+u)yDTxX)lZyG7FKW^Dcbd4gWIK~iD?N2C z1~ahTeHnu@X=FCZB1BbItW0cYV<_Bkb_(q|v`pvZP>~C%h<{AvW>;RKxx9S(^J&Qc z1vVGEzlyr~O<|vZ&&dz7?terSfZXwdk%iDovt3xRPOn9@6crUwT+Gx^ajmk9mk97$ zGHp*w>6V7hV^7K~l%>eVSh*}O<%Rd4!bL@)Bc>9@4$4HF_i9wfRrRGBA~m(SsTFLs zHg-X~RA;`fr@4AqBI?ueX@HeV$rc+bX0=_7NH0Sa(F8$MQ-QDl@?Z5RaDdy!W-V=qNQhE2br2q3>7Oyc9 zZ1$M}kq?CIV5Q7qg#6&savjn8VyAlJ1)(XNDwQ~d2ZIud2t_95`{QyY_KgO)SY%ry z`|{W@2UBue2!w1C`M8E)yCja=BVFMUbA+}rcerp7c6$?hcZ^C7_KT)cSF%SSII zbFiO3ztd?GMVh0YjvnKYvZBK@2nMW2)A&yA%f>Wy3r)R~vVyo#BBgikVevn5QR@5@ zd|m%CES)mGji87bw^(hq! zPt1P;1@@Ob$f{UfOP;!*h&yIJ7qC@DYP}{k+4Z2gA;KI>?u=eVmH{8-3`{oI0;RAlJvw1Xy>~y_DvN_QWN}se2hjw z67~h-5Z;p6eDKCkg%5QhAJ^kQDLw-AbFpzOF+7FsGUEov;oT;ju?}(!N-( zKN&Sjf939z#Uqw6P7iX3b3G8^$#l$XI$xY>-E=j_KAwn8O2pVjLC=-9_C$8k+TUUrpDH?V_KmM77R=Im9 z-Xo(UcRY}+VKnF+I!#%?9n<5M||d!y#=)=paZj z=;Ix^$jI;;&CwvDgfG!R*Qj+!!9?mW`HWZfO?0a26|bA4%tUJG@xVb5MRK`@&~o^< z`w3!>e~U874F*N-kZVi;sp*sU3n&ObjX=^IYHiaYf6|r9#gu6!eR5HT_3fqe;vZlk zLDcGG{CSI(lgH?$e?%w-t7Tsjn^I;@sE)oagNfhdtez`J%r{e`3_o zm;q65d=91a)v*R`%sYpB@o^J5?Q!C^rNn-SL?7&3${ci)%|cya)996#DIo;Q(h#Dw zVL{)cyZEME=6qc`y>yZ2_0u2|Wq$qcT;^mJSoK~B;|)y7^`h{$|7tZk94!89;~#BV zn)Q!B(yI$7QbtcM$OQe7cYeb}b+2ATlfy%?syaha){P<_A0BY#>gq8}TF3hK5xL4g zQ!KNM-N^>N%3qpj7m#=3DPfvi4Y)dSJ&(JxxSf0JdHa6j9cStr$hOXt*BsI2R{mGmp_@{8QTAXV}IKiJRmU*;( z9TSs0eyMw~Wd{cMp$dsdj5}0O?IrL=6JyKRE(Yid4042VSx$>>=ot;MkWgGooKjkN zX;s=RY+FMloL8yx5E=-V61OAlMXSSp0zC0JrJ4ffjS6yyzjw^1XU|gjP~vfcZ>|KB ziiMwl>#T~ln{fyF`L*5Y_BK5E_Tztl|KR9984Y2~K%v7fbzohu-4yudt!;k}=U12;ss=C#8DFjtPKp}~3l1!|o;lq~xdkzrN0(Q2ZNQ?4m^=o7d+^LLiv*-*?f_Jh z5l9&Ta1bCEBCg`JJ!z<>vljDqL{9G==xa|LvWuWq8K#q z<~5r!t(2+)7XRr=Sm}fjNMH@nI+Sw22vIq8*~0IcOCz3XqG^t!N75N>49-EGec?P~aRmFoCE`<=mAhwr#W%K4ucw{)qOVD-^ef*r%Lm5Oxj*$t{(pENQ80LZug{3s8@#XK^a9ur;1 zg^1NOZ_vZMtR@u6oXK61c#0kq5}Py9JN|0?cV7ur4@}4bk_?T zLj5|dDfE6TS+(6^Ym@sl53dqIY>k-BpjjAq(uk|d%i{>vZF3algG6eAg=vBf<);YL zV7V@{fC6@~(uG{@(j-uIC{|DofTA$vbwo5QG>v&r;Dz!DT1*z#!h}p`3T=_lVLoW4K@=1P zNU`(c*V197URc0i`PBDIzD~I>ywvd-C@;K`iqQv{9RY6{NyPRU;uBTvabNe1{Ksk! z_Qm({itupDtGJKYV#qLcSnf+8;uA&?z%bO?g-rF0-3}6w9SrPt2Dx;cm|~iQAT$4x z5q{ux4U1cVNdnc_R+u~X_EDf8M|DQm16&cRk9^j8Ww2O^w(uLvKd`ccRq z?}+0t-MDN?Bsg=0 z;&RRrEZrh#w`8PndJ+T~C4;L*w1V5QZ?_6WPI!b0 zdrwISN)s1=y3EMQaVSc5LJ{`P7z6(4K4|Tg=6N7=ZCo5#(eih znO5@1#qXUBJ)Aj!v$@OTonU#e#G~86G5~#K#n848Y=6|AOsAMflJkov*V~WWbRNh|EWSOXO|9OGkh6 z0^8pS$vL5`w#F%wDr4Rw{q2qJDz3b77UmA(Ek?b^gF9gWDC;mvo@ zLDyDaWv1OpTW&;fR?t-#p^sIUu)swTrmJ+d_RS1|Oj{mAY423pju`rBStVwnRwPCy zXWP;WWA&Ry=9DcF6Ia=?5sq0~f-Z20f#$Ytfi%iTe=C@7IeSVzGvzgkd5X~pC#M-N zc|9pU4u>$=G|RA*ner4u~2Nj*~A^AU0#Js!!Dt^yOYCZVI z44}Cc1RUlP@-Kb_OphdaJkDV1_nTAtU}aOY|A|QP-P(88&bwUmw}lbEU9k2A5IZl; zJmlh-$wXT7%}g?D6n+#V@?)M^87O8gyZ!aj)Uj*hEGr`N&qf-71;Q@7pAVOQGklp! ziwMns^2Rh)iD+Nz)3PH(IMnA{^;dtTYHAA$4(-Y+sQ0*NId8GWZrl%h#!esyI?ut) zxjK&}90(EAqAqYGbvV7W7SqY0i4vkp-~bs?nj(dKP>54HM^gwvB)w=Q3G0FP!ajK4 z*7=q1$Bh;%+UygSY-!Ce=CAk{0_E#-D%x6iExh<8k-IMS>G3DzSK&imU0%hC^3Znl z2AJFOGhWoYdj9+hw4JC$dzx`ZqK+8m!Q$g>Y+fxAlbewT$8E#ew}6`MsL(9YlBY+2 z9G~E>OqH9$DDxGJGpGCy!&Ew2Cjd09bPX{n5~;Fr-a5U%?B>VYqs4|I{pKNSe!L%U zni)CmGaNnDI3KdJpaq(3>Q%~aW3d6dD<~ol!~hgGCA?_ zjF32S)WHY8IGEsxB8o|jPrgP9Yb83ygHF8mQs4*?FaV{ zuP1;)y7Zg0Yc9}Ur6q1T`egVFjm)gge}ZjxZql$3rLSvQ*5)ywT(GmYAHIo)jy@hf zMZ+JgEq;RY3;LA_kECHr67d}5WeIG=`;gAio|(TMYGs)XD9O;w=IBiH9QnzEwG9-| zS}24ah=T!@NW7}qzuJ#F+RP~Z#po;o!D`n!Ga1uR4S_&_XAxw;p(Xt=7fgD99zNs& z&c1sp$DjYkNmV6~G=(MmIUv9_{OO~&9Iud2k~VVejs6$||f z0;G7=(e^tJr1~f@iNdVm_MZWrz$#3L6l;Siqj2neNY}>D;YCez7h{7T5=u|lOs+ze zcfY_Pk-P2jw}*@--O{x0?e5``ZXa(5MKPh9m5LJY^9-~8Qe|H3|G&1#F68{&olDG2 zQQ{7rkZXw0dS;AR8!LRKH;4M_#Z*ln7}fH5b*aH_2zHEzsq8PMyY3WYVvmES#YR>H zKvGrO7)=y1I%LqqMe5~p+&QfN%NP3Jya)V`n zB;yV@q~^{L-=9hvBBqti^h9+X5IwD5OdV+>{MmvIbwZ+x?)t;+evWSQ3{)K^WP6%U zEA>so0b_z__sfl>QZ-{Sp2Gp=Km{Pmqks}r*@BY$%(oYTWJ!GjlV1-aM#BSo>LK!H z6A>r~A{`oO8bXD9=a?$}B}r4t+vX@{*LoEt_O9S6qy^b4<7%K*)$fP}NH+r)A%(=< z!(1wZ;^b*%Y4K&a& z+gLhq!qkvW**apv?PZoxaGRl&&R?VgPD7u{%F_5Q!RM9Dmfcg}fMD^rW}fBN(%J4* zM1m@IN^HyOoUGq<4X0qfJyI#cO>*Q{0_4fpwB z^}{aX5A(U!gVs&EhP%6;44)2}OnO@TOx-xfW^yxyr^?Ew=1S$WvwqTXexg(8Vz+eo zZ<&=FgEFUweqgQK0$87doZIpV#0h!~j~L3HH=DzYlfBOt80t?UsR71UIvMviv-I&G zp^?J3G&Dt!Y|Vj`Q$*42wZ$74K}kf0Cr)AjA%c$qzt@XwZV0mKlzl>6o`xw*q?*5A z_oCfr5w?8JwahAYd~dPG4``#13=fdDm@(IRZJJ6SA3CnQuh%bG!=esr_Y)GLs|5k> zgPK~2o5qg3O<9qp*7JxUolF+6%M4VCVn)6o!KBWVxhV%*?#d>H6JyrSu&x3!WL@4E zgc|`(o28v&yb7(Ww-*+%Qb?u|P8AUGcBlL33fLo6lKx;huxDqgC%`{Czxb&Sgd0gg z6P5P|C@Q*pED5}R4ob|;CJu%h%|OS2rd7&tXS6b){Mz+jn1%YDvo3b~tyb0b>U$}}vx&V;-`uQgZ`5yDe@6w;3E z;2aK<>m7F23!lUEJI_6;7Mq)Kf+|PV;RE>OmMb8tWRyonTt=fli)2$bKF=oDD!orh zY`6sHLS7o%g^lLBJu$cVP!oifkvPCj3;bdWu4!1Qkz*NC@q_US5gKjJ%e&MY(IVKk#xKEQw=& zeuLbhJ=+m%0g!`6pd7ANB+FrDo2e?W$VNe{Ma?Ul=PnlBVpecKhWJGr{r&-%*kJuO zs)He;uwsC1dbrAWb!Ck<$vDXgzIQH4DIj8$`t*}T3kL+xGy*v+CnpE)-Q1;P+w(gU zLMl&DLTDm@MEOPtAJv@dV7GfQLh&vRM6z-?xEYpR1U2+hBC-8+Rh)aFZ3Pw)oX!M+ zA%@?PYgfnPIk(h+NhlA#o>xD3KJysueMY6`PGuv=4N6Lu$gl0f;{AANfi0XEY-=fy zbQpznE^v>_Pt5`qhP^_M22oL{hiHwv7#v$qPW)d9eDH|?JoZL-ZgJ(SBiaeDHxRk{VuXaH1YcO*eVeP#p&-2Op;>IDV#J<`+~ z=V%$>fEHO}Rcag@v_}Yc$O9*Z*bSQGRB)H)<^(F9#Y))5rUcb?deB_E4ec#urZHrl zFXAdi*Tgf0;hDpru<4Vak6!@fIuoO>Rt)hG3cd~d(n8LF4iX)y6TY}lWeY!wP>{Hi z0>&(n9-f2`?$R=jCTSB(`G0QN_eXd%ioG}*XgH#@kXqG<@mSPUmbQHMTG-d4` zpsa)=@O%mgZvvNBVKQq#C^`2@Ga)2l#_pOEGGK=)xLPVcehE!Yuaok&CY zl|3`l`q@@^W=d*y8ym#+>9#D&!Dl!<$G9DTFjc-;4_90N*dBRnr=!E zs$op2E>AQ}og=(yO#2hkPD*$ex@Qcf1X%J@)?Uz5dqSPGUde0-NNT`3~f;=m=&#{jGs;B2zU#RVO}AmcQJzpc1m=e4igU-6TBc5#wn z$3CEUS?r=AmHy*+*+1R0RxK5$J35aWJ2SBSDUeZ`QR8f0ewE$Cxi;L-{PPgWjChIeSW+n z24^Xt%Rwnr%^OX^3Clr?3$Q6Z{*_LlUb|Ig#GF!a zn-xOhXs?+x6%-;P4qeIydD=a5Z7+DT0xnKL&IHdQ47be^ zICOApL?8cp3SielIM9x;Yi9UVoacQs5qiUuLl(0`N4RH2&{(3z^4>X0PS8^|m_rZ{ z*iIg-ZPxHqCRumgT*I3xqpyD`#l#sHx>h^}imNOWPLs!RW6$yv%>>3p6j=|G-TVgEU>~l5mM`@wbUQE zCHDX)Q)~{P@|=dgr?oX44zd*w)(R@e_%u~*w9Lpv32%nDwxMvRZJNg{LxTg@^P}L| z9jxztEm6SAEwtxLrm@sl`aW=yrfi|zQC5n}+badROq3sv3NLdrquymHLwci1BQ!9_ z_;s6s%7!-qYU{AjEM(ct*r(zuZ}C4 zY`s8VN+G@6U?8hQpsf1p;m%^Qv%7eI;UT;9GeV<>|9vCXDzKrq;MypNP;T+@QYnil zlNZAN!-^Ro23Gjbb|~!moUAuaIf(|9Cu=|XD}bV~Ru@fF9?%cA_N{GVxiB}lf%c&$ zD>;i4O_MeN?mG!gnrH{?M>BH2lvLQK42rw#Cdc4ie&F16SQ)6Jp&vjw>P(gAi4E7 zhPRf|99e)e66b}`e+QZU4KrdA5%jn~+n*G~J;eiH4QuFjt6t*|Xmmu=i6EO&d5(mt zz`pT2BzVmi&Fem1cK`TK{-0YTudiR`OEjF#i1#+d5d=3w;jqo@AWNgwgVs-rO*+qq ze{}*4M@t~Qm4)6HK+n*_^9}v{m_uksC6)MX$zox<3E_Bxl8Bf%7h*K8ZdfF1+sdTu z(_-nEkdjf%&8~vfMDqVCXX3x&&4t)xf|Sky4*rVC-PyrI#rL#2p`Z@)2-!wkXOp(* zFokLxjkt-=7XjOVZ*0LMtyfVMI5$x^HFUl!?EXIII+Vse*#oXxyh*6oRT~DFY;~ma zk$SiWDvFfxVfgbw{<3Vidx%>~Ww(x{szF>%p7SY9+SN3z-K?0s0 zvp|!A+khScIg2p&WMDq>lt~IK0TE0RK!Lh8Y8aW(&V|8BT0f>GU{z&@f-;KnKJZ&p zaAd{|4r`bgCUnxfL%!9-XDn*yuN%%Bf7KBRt8+oOaqcb*milot5F0?9X~>VGZM7eW z7R-+o2v$~;br;N$UX+ti(~>4rglUdVN&clidEvc0Q;CJ;%*=AxXe)9PE@v{5n_!Gh zBd$>{NaY~uQ3zN82UH1(Feye!yrN_@aAQU@6=lZ>MK;7XPyl9!gkxvjHM*>7_XZ_4 zN`;NK#c06;l$cs2ZfB`{7ym_8tA+>?0W1jX-Nl0$+d}H3gyXxmyhb;#OtvJk3MDn- zD*mpdp`c?tR9hf&GRw6~13;+fJXT;tp%QF?A?xV=BjjIT-5j<#9SYX56iUUdBOSRE zm|a+{z?7{1bLYP5|FEv6noh~3^Yt}9>;+GEAve4&cXnH3h$F%L#28&yx46;6*07`W zP0nME6L%F)(Isy9rrD)$T(bEuOU|9|Zzc^Q;y@c8iI|*&bzva~0ebzVWP&t<7F4)6 zQJdr&IOUlU#dpBljd1kAO(Hr-V;j%CflAR&Tl9P3To5_KI(-{yM)x@S!aQEA=>KrN+8Za(0Yp%vV%XvkfW((yxJ5vDjC~9nS8(HC4LXFjUf7#@uNy>7uBv zVYgw`6?X~n<(|T~FNcMxJSVyjR%;l}b}ZZJu`7!Z9Mmf=cHnam657r zM;Ca1Na%a-%TH9J$f&BSzO{+N=0v`!PeL1l7cQ;6E2Vm+k#o7JHwNa$I%tlE zJA1If1bzKA>la-vW(l(s$aM&<05Mbr|0gTe0sN$jsb6f8Ve3_bqeUEGsoi}DMN0Gg zuT_=X$nqVm4~C3PWI^+?tTCtr6~}Xmw3lE6EpfV@*CAp2v+;rl6F5NXQPl&AkQ{V* z6o$=UI9hDMZsik2hG%D5v>Gnju<57 z)%CW@7n%XX0%wI{d_AviRHKOx#HQxD?bB?NcH|OrUZQf_SMt!;dyWp zbz%%%#UtJ@q%_WwES44?d8#8ZL84R%*)IJYcXl?MjRK3M?De>~k%c`+j*o?bY2eL_ z=FwPf-v=GRH#F6OPSkk>#i|5@wbdu7upi_>_cq=_=@$`sYia`8AyVaXl0^0?Iu zJnN>L0YbnCtpG&10P#qquw+v3-c1o?SP=VR%cvHjB~57ru2})bidk46kP<~1+(q1K z;zgA9oJ1M|UN$`CgCU~3(IPnSp0ceb(b}+HZ>3TZ{1cUuP3zjBVzO*n-!=kp04ttx zx~}rCG2f&T1f@(Awe?NdyUgC|2(~Hv-An12me7E*#|4;b=H=DAeQm2y*_TzlNcVEo zY|j_6S#Q-oH{G*e9gElNM+VZ*PNS7`+)!@kM~taBY8p8rfYKjl zm|?D#pA}SI6*!I|#_HOfB5?DELDfwwWWIJinsf_O8^xmC3ipGBY4SfzZ~pS-s>@}q z(%^`68bN#dpgljdp%%1vlZy_uwxm;A4UfrXI4GA|7LMhBE()!K)*vD;UguaIs>K5p4jO z62$UTm(sj=NgRKQA@Ma9?m@+l-)UUZVt!=f_UE)biQ7!c(ciqNtEgFZSnWQm$BBzv z{_u$S_#5YS$@J_c%ht+TO(jC6^Jje(R@;@;I?Ov#*$GA&6$)P z1(fULHbQC&$EPl-C;)2cI~K$UOMLfpK2k3u>fE-;OS-#u?Ov=2Gm&er{l@ z?#H`yMq86x0AKZfn;h}^??6UPqS#quxGF2p#%<0Y7@KPq208gH5z+zhM}aHJ?JYxd z;OuSXD$H^oV3FQsK;L7qgC*NM)Wic+MmA#8KHj8b)H5_ zr7Mxo*66;+5BK=(f7&%DR0Fa59sh$6h^=vsb>2iurD2rM))RIGhH+VH9S>~{P^bxR zQ)XQI|9^DBH(TRu`@A_?$`i4oxr$vX(`6}G*A=N)nr=JG2_S(aC$Quc?xBAAI)fQtUH#ZEs3m%>v zAuo`ChPOHDP<*rGprO_)B8CU;?z{ck5|b{UuaVa2hd1#4PkMzxY!M~VU)-e)y3U$N zsazoP`Fg@&Y>l%m+m6>%2T);5aGO>wbV^^~XXor?ll9is+G9u>_sysVg_yT{3V8Dx zDmTm{C3P7zp}WrJu>mTSD}Hn|!tkh|j%fA;z*AZN+zTw^8QH$j`6nG(f*k4ECh>&w zl6Y(^6njG8u~m`#Cg6VY?b9mKVR;TL<~iGzeMW=+XGUP3p`H@<3m7Q4$N&A!9)mz? zG&yw^0hh*^vtZQ00FO(|5J!^j1qcD34}&j=#z>vUByiMW%AYLr->!A4x9q@ALQDCj zsGy1G8v9C>ebA_B?0f4jD$-ck5~U4`JS}3B-2g(y!@-=ZQUU>O-ZwXqRymaeqWl$J>%Rg*5STG3hUx| zVOA9-Tu6csy~v1heYSj+G}&bi3g&C|f>jpGLnxa4KmmIHh2+of8y@`2Gb5;sKbCfl z5RXLihNhw9KCCMY-|+#OEC{=g!K`EfnHNaigL2#`Gwy+3;@SMoZZEF3?34RNrVHcO*c11wJzb$!m2 zy}K`veG;#AZsi}to_Gccxssdp3>EH&(z2DE6|9PadSa_JXt90AA)D6OIwwn(ZS3|d zrvTxkJ;m1!qlFqwe)>RJ8I^`E8Lorn3>7@rWo(oDfSo%0#j_4mH06=Aeon0Kj)USZUCjrY}1ZfK6K^MD(!H5|Lb&)x6A4;fX5=R6!V0ykdyuC!w(JD;ipfR zY-9UnvY$MlI(Aa@VA0oeu72J2UcTaMM{z$AVgMO0YtqM0q=&ua#*IsU?sz}tyq^e2 z{K;Kfq&5FaSE5GYmKc%$y?e8$Dh>f}6kHf}V#*D8Rd8`fthq4AEVi&+$I`VQHY{q4 z&4@4P2A49>csf8z@m3`V%6xJHS=@XA1chQ6k;a$-B1v>KL!MF)V0wv^)iWr9^4)_h z)B(`)MUu4}oE6>m&8G#gzIx2cqbakwVw@K}7}C$AMAKtMrp& z4~>_=_i5UnTptSsjOBRnodN5~4=}5mIKF0~8(sA7eWi(Z>{!^RN_2OO$J*;Yiy}j% zjOosUu(>kS0-C~tKFng@@bJl^D{PKLO{kw_jBhQ^ppQ@p*Ct zt<$qd54&D~k++eX?%2`m7vsnR=dcn_x`b)UF}^n$_vYz()imbz@@6%1qT&>oP-h>U zTYu=lX6G9(zbHK(p#!do(H9UN@}~agc8Viv>%CdX0S6(wVNRg^8KIOp7-xFr0NZZj z2-(`$gRs&2M@Hj3I?z5bH3<1Z-*M{7`!~g#jvtgU;VNV?oKaJIgjl&JA;r< z+0Jd_7XrM=`Sm!rK--O8fay{m_wUSiNQW(`c#WKiYYSo(G8Ost&xjj1k&P5inmMFA zX(^JS3Juh24h{9BNkK!4F6gL})lBpyD{VwAG2ou?_J5sNTW&joy<7XIrw7-jlt2ra zXyQ6RYQZ`8s<;-Fs4Cecz|_v#0d&&FuduY)l)RcXaVzTO3TxIRLh3NW8Z?@g*C?s9 zHv+P_XmVP_eDm+a5d)U{Nl{0*(BpD6mlHbQ*c;uEfRV$&3($buk ztC}3+d=_D@WK=KIHL5Wc^)>`9B!?7-C(Ev5Q=1L1kYxP?zgS_{~Uj(aiN0Nr#nphScGkA@)9FZ;!vA|9~nZat9jvifPO;EV=h}#R!h+ zU837aoeFQa_e7Fcb1_x-B6E)a3yy}p0xGo}GmXlsZ{AkK+^*_D-sVkEGH@9!WQxfg z9_?(Bnzr)@<}jtVyrX~;^xn4m=^!gK!Zk)%4y(+ilfl;-F6!?dKY*}mGVZgYsKpAX z=oqC6)4P3ls4~swIKAp1QdaCch8EOf&8~cyksB3-cW;!u&-rV%!o;_Ws^5CQ;2SfA zjc-e8y(NZ5`*$W9!Q;n^HRz!u>+|QINobw#zC0n zaj4k(DPTb+xU@GWSSU&Hhg%v=lTja^(Y&g-Y*p|IiLu!OgI|5`R0wn%Yd*pivWRK1 zYxk46$CPZFmepQ@Qs~I}-Us4tV8UMJqOU>Y2EI?kMv$xiHlfy)V@5W4HR_58&v;3U zlr_ANfeu$c-=^+nt#eBTf`gehW4Fi*ZqS}x>z^i{b=p@nSo#((Wa|%=w!vJ>T0+Ze zgU$kzYYHw=;eb`%Y8kCzbNH~%I2_}-+$^N{X2?F6l~hg8_Rr_^(gy#=2~>bnI|v_xgMdoW>hx_l9yDyt;W59bb)Ftof-p>6)u( z&*5k3gk+;!TaWX8FdyA>Sn1yC;K?;e&TvIiBvqo^PGYu?D^Vs3+ob-#0rdzi&ha{Z zSg8qkd0ffdXo&PYmsOlo!!}cMq#v7+$f&hCH-Q$ITqN!J5-#1H3@pt{na3r~8&i;k zmd!Yw1*X!(+q32TJag0fPV;kNMVHZ$twsw=N~^{N2)ER7wOu3d{Kc1)1a9g8ObPE! zpMstx%mh;bKsIukSSbKH^1QiTKLosR(`k#AqMAuX=_SIq<}ch-ZPW_#hf>I$Yq#V7S#Zxp~Lgwhbxw-L5z zJ?UF(t5!Xz64Hj1zCqhUp;KaB(erx3Wmqx+7NbH79oKb0)Ej17t^4JA#ZSK^| zDlf2v*xeRiJ=uD0rq<7&cevq&kLK>7;Qm4WX(u7k<+WM;ykMS9f?G-6bmz;r@VHjU ztpI3*DRXwrUFOcnZ+$&0{QUL6T#IB$SkuossqOm?*j938^bHtKlcc-_g~ECGt8oCa z!IiPcIZoaOqe!w0LYrHyf-(H!9bwgWZsh<^x^;SGz5#P{Eg^^LKKCD;UY&q>1&%g{ z9mJy);z<|wIgP~h>WbMc&@eCX5aCLBOtJ^^r6?rI;z_PA<5J74t8gMtTr+6LF#sYEpT$b#B;jj_ z{jP9ud`}q2M@8aujxSxiA4nwT!ecn<&sftgNHX@+N|7!(&!jJbx*ZILp;m<{c3PaQuJDd^ORL>N zQF=3gLRR7Qc_y83T+*pZzVrv=aj61XM09d-y7CkA<1LFNHuJsg%iGqz(y}1CIq9+mckR;va`Ud6M-z2kNWd`;1jjCIWCP zT=+?MgW63}j~oowKkvrr?xn{bVt9D7+|2W&z>yz-THdPW*1!3NoR60i1Yv*>ptOVW z69!WaCr5O%;6-T`e3xqax(H3=u*4vGdZMYJy!godbkJ2|!j>sUjR9S?m#XgcVqRXk z^5yj@$G>_?WK^D1-NA6^4c#S&TRVl>I!!jUWI=(fbkv*}nmP($I^qn}tssVVj-wG; zF-O)3%2E`~E^5f^S=wT&X!b>aYAp<`O0Sijwa%Svv)+>jM;gr?7k z*rDS!DS;1Ncd6Q{vfhfM*)FnYqS-y4cKLcwF=GkHT~^o)e4{4MU~j%~N-jNHn0%sZ z%8=Ja71|t{nJA_FR^6Lw5Qwk;#vP3i*J?5CXrVn3Nx|?ul&{*iJAQjZ@>wclcdb4>RadTD*OK`I{q zbF}RUHhQV+ge5m>UBp@AnW0$hA(XQnf@uj@ZEB*FdteHLLSrP7Wt_KQJ@I{}vBo=w zacooo$>JAG^tFUbMTC$LPNaCL!YxSz>e=VP8E}0dmb9D-`yWA-OWfN#f!8h^oaza# zP9i10T!!iKAwVaPBnmpR7wgu+?SEDV47kI(WZ*<`P1G9*5lg9?2)pE1>c%R*{DNtW zvkJI}3p53!Vj3eU?klXH1Q=PwpTuwgIhL;H8rKwSGEaN>$k9vWl0xy=kOU(kfKyYr~B5Sur-->)qnVvJiaa~gPtLB3k zf#s20Vd&944=e$zkh#Ey#DeZL`4v(Yiin*|mdrX=63Y0Gow7VLj?~ok7?Ojs%t=HttgfiS#5DJ`38iLF^}_h})et6&jD0qC%6Kan_H~5l zV=;>)9#S(*zC(OS=HAH5aduV|;xYn22QPxqdb@2n;x`om=ik12`{)XGcyTF2VJriH ziNZk<0Pkk}FV9{CYV0H~H$XZH86|}*iZn#{IY_~oiZq}7`dvBC!XPEB_kuc}hdKHy zy-Jk)UW<1OSnay<98?o`T3Ku}21@frlmYtkSGdoVYUOf-uykswBVXQdw@_%6mvdq; z1!DlVO}O!!#wJ6@fb=23g(e5oA~i(rjN5^<@vpRv{!Og#^cdpK$$X^swzo0R8jS_+ z1YA%STxePspbyroPPk?))OnR?u|jluVJ-#7tyI=oum)#Ut9w6~%71QMq1@{s3p;iW-y(g0=Q2<&;(%ErAYeXi*BtwkF7}$b zkD)A7NsU!3^0P9js!hJATL@1&bj~_P&Vb8FNif@O|NN}n7RI%bcvNe^))FjR|E>S}Kw2wrW=5FwQD@IJ&--VaZY zQAjPxkCVM*nA%pD!WC%AlaDavGv1KxEj2;g@Hg;cm;(iHHc;^;c-(bOfho3HzeY?! zmaqG|;6*o_!)V$69x9hF2K1Z4>&E=`IJOlBOSY8;MQ8K0#WXdb-3p!r6~ zA(mR@gmLnGwO@bcwzOQlUr!HP$vDcU|=*)@6F@;#H^xk(mfI=;?X|I|E=X2C=Y zyXwRA;e;o6QWOY{HA9B;JxhW{ty+Q_dCAHx9x&VHJ6!3Z_b7?kgDidZl0pC!JkD6| z1}k*t-^{O}f{2P*6Bi_XYgnB93<w$4e!V=Ch(F;yXfJA|8@?O=G1OHK+gB$H7N93ce8DId!Rp=uZ!nzH zZfOgA#T09AwwJsftv9`2yEbev#doUUSBMKS(&emQ4t1m}pC>OPZeTNmD%n9su5;qc zgPS>?I^2Fj`U4iWAG^?9GK$L_5HUo?bE&#pUAasZW@|sDJ|BY z%ZmvIpFRiRgE^V+t$jlLI_brWIro28hG*aSVc{YEnuL%DQ*ySwQ@RMtE=^Gba~?`k zn^60FviMnra5+L$h~Vj7H&G4x9_ zy2;~=J29>%M^Q8*vdi$elVx~BpqV4j(}fEQO4ric_w6Q(#je>xID2z({~i!o2M=`uI5ZO6-+U74j;RRNGEFD+UV zBJ`%LpTDA8r2LOtgJF;3iB$sDTyGOK`(DjaUf9P?iYSAxkzi1fdnr;P{EVJCyONZ= zSv>&p5kLDoxp&WbH68+2*?{w6VcVnWbaC~-TvIx}obFj&#ILY>3`5Xk9376_H_* zFo{q|GNht+;wioV43w`2AQ&inEkJ%M$2(M*Pz2}n9n1#skh_xMV(Nu;uYG5o&TdX` zCuv7W3x~rEIF(v<&>Jeq*(+Du_DhV+ZV!(_`{_^pNFQAw zjc-z$=Au&vQY@Jo!bK%GHlQ08ILiU7b@;V`lrS}16F|Rr3;O z5_wvnj&{Z(QVD0e#aXp)dt?=2j$UbrL=y!^3PLg_JPX?G0uis?N{ZZnKQdxXPhiVW z^vwdop139mp(cPCfCsf~QTLl(<$IjcM7~Kw>^@fOvW+EteW#5ZIi#$~)!J{3yh2F7 z%OTfYN!Ma7z9e3;DdbikSJ6tKjWJf(0d<8MZVE%lB03R6M`W~`Q_6z zbg+vE zUUqRGG-)+io_$9ScK5pNn$s;71z@<#`oaZrEq>)n3$*r zi+uWr0*ZQae8H9lRXIMnAjbd_rSk;%qOGbPA720`{H0FZ7#>G@K|mt>g){5>+GNg? z64PSmaC!18kzaHPFLQ@_&D)wWz;LBG{a`ilRTBkXN|iPKjCh%wD;D4ZzV|vdwtRgt z+4Z-WDk@d`861;+#{Q-|=$@0w%M&r;28BuZ38hH6HYge zI4TKnmhw)0=c_LU`F=&;DbDrK&i|(q+Sn9T2gd(3*7vS66aG5Za#2$Ep*NjNe9oJ{Auh<=u-fC)>>`N$|nRV8J%xE9G2Vlv0*T*-d1#ch3 zp*JGl)MYlwx2fT}Py&f!td>H5RX80sORr-)!clLapwm^kF3hr| zQlS9kk($|sFm`h|I8>$*nBA~ah-}y;t9|k^^`y8LCueJkv=j)($gZlqs3cm5L{FSv z=$+=w3Uw!APo3l}TI0J&ZM2f;TmzCokg8GTV;MeHEKAAsI`aiXP~}U}1;TS=8i$c+ z-G^I@>NIA$UJzZHDymY0IL1TmaFlOT$SE2rTbVIGS))o$)Lir;C8WKc&Lo`4@<8ki zEMGFLBU%WcCbcPVF%2D~byk-E75%7Sd$_d^!IUONTX`!?>A5}5QwA$$x#u_HvG2r9 zQC4PD11-XUes732LuIOG?oW9+n>&Ztl-p}Yw(!7YeskBi;J*vHdb23vN^BVb>F6Qb zN5K3zZcy^rqWW(Xp3nhf&-VHG^UY|} zdC=`;ow3{USZ zod-0mJ&(OlvVz@sYt2k=Qy3qaBm>LFUw1+W0sxwWe9s=VAY)l}qE#ttM90+hBY94e zwfV8Nu)#uvWCvYv>yti#M~Gp{3t?@NACedB!rCnW&<&foCdI0;FenEwF1K|m8$3h| zHLUbiM8aUNHCBmJ23b~?#O`@*%uT&B6+&G`2HVF;i_V3D&W4VEJ+k4>G2!7b;AzaE z=35v-!?moKH4-N4_)6)2CQ%6D+MWTET zG(n(B*tWTO$S`LXQyc>~yz{Y)mao=Dzl?<7MXWu(R&{szo_KJ0=b;4GJBN1dgw=MQ zR*=h$9qw{gC0qdSK=1Cu$7@GJtagx*?lcUVnxvN`b%B-n?*vtr*Bmki58!Y2CVvt+ zv)HUXNczOQadW4P#$-qGvLjqu%xn1MU`G+Tbqkw^@aiXhe?bpS#=#95;A-pX;tDgp z5!sqYQr{}>DK=Of4|n(jR`U=-VjZb5`R%IJkY#kT1_W2yJI8P~)wXG2thPo@^+RV| z59&6regC)3EAamgx_%X2+M?bE#wo;<@EQ1R1El)!Ll>4th}&lr zih^Y(K7UyMV;}!no-MusNqh>U9gPBt<$y=`0fUM|a#Y&Z9{r3(hXDi(|F#TO+R5=4 zjZMi{&Jv!+366cpTE_titC-2bjN^)l^MC8#)iA#fZFJZe8xw9c;7*0a`yUm70eHyt zMK>t}Z`)?APl0q=ch%H`F>231VFK(8W_Fu-on`?+x4F}L*xJI>al8)B;-y)f5jd=% zSU*UvRHz81Ti!t4VEnEfz)_Ae$T73(>>(x#jn&d8i%}xBu)`g+y0;+sWgKdvCVzIV zUS_Gfcx1IYnG6n<)8GHG-vB(p+Tt>qAy6BVW=(Rf_5^3^#*!Ik}Y)_U~0 z5Lm-(g6S14qU_KS=E4qIxH6V@uo?gjA~?uWrZ#tv@9tfn$yTa4E!v%6n7a)&#zqII zo68?`ea2q7|J|NZkyVH+X2!_}MYo^RwA~3f6A~Uc^tCyv#kLb0DeNe;N$L220lA-r zzv#D3%293k-kn;5QMVXEAy1n~^Ll2^qT-Z;YtL{8?lz8vk8d2(Lpz(tGmjgdYHPsY zQy&2t(oJhZF^UP~;0D|?jR9RW4qYZAIxrOsGNXe@bYJd7741^`m;Y#^99rb}&E9%M z*_=M-sXu#9UbTI>Yj{OVp7|mM zjiV!Vf=WAXzCnc^2BqQm+%Uo$wbkL0`+0I3edSbY4=PZi4udzwAdz!9mvQbHEl2jh znN;$UC*N#~b*5xqSqMbPW0Z(fkqa+X7;*t{_9E#<5^|rP_Q{5cinO@YqJ4-h!{_UC zkF?FCTXH;sGgw%#dHr2%F?87|0JwUdENK<_CrGCso~&a4OYbGP6=I1v*ub}SnDMGY z-k>1n{M;&%h*j)jBZRo?9a#vxv+Q9_0b3E=_U5_}Z`t3(fg#I@9IXJFtS;Xj{JYPQ z%Vi~S5_g4DDpbiXX27G&Czz~F`uXj z^C=Qrwi-benV5;)=_g%r+oZ7BUH+{h2l(fMX8=mr%lL|^v{B;8(b534b_*$j@iQMh z&3EI{C|V5D9_t$TkhDC3g7MTG_;$OfC3^eCvcXPgtKtAVWNf0HbLv0?h~#wSoI0-h z5#gUG$ss?9ER zkzLWibuBwz$pt{wn|U(?%ZTXjAx3sxbG@iD@Z2B0TBl!99Jno}u*^6wwLk8O1X*&< z3s7h7$p?r=auHoK%D=!G&#!EhMbP(SNuo0*kkYBrrdE|f2629 zD0JHRF|S4w<{eCZs8w$#Y6p1-keFmoh6dC8l8IM%ADy3jD6&W~LC~|7>}b%MQV6gc4f3)CgHJtrv7j|ugMnctef*;0)_$EDjA$oQ*h;S{Jy2_b zs38I3^9%5miaQQ|QB!~mak)EBXvd5LL7(geYS)Tg4glof7erZJGNjzl0060H2;+to z<|R3tP@xbs6dka7`ARA46jV&)9Wb`T z(|Khz#|(8NOGa(+oV9zN8M2ht?s;YiNqY%6LputFKxoH5tJLC}Dr3wk)K?(~27Vc7 zpo#>&w6IVjy5+DZB#gr>A-a1W&6d>T=AmGr4Ss}+;g^^pZk>m#tYDjLLCQ|kVd14S zh6an2zF9*eHvVJJUIUb#`928S6h?y{cuq|Ph1osOJyg(PVl)4N&T--b%?7IsFOW8y zao4^wO{FD1x3taA>*%M4$*Ng4gYDMrS&f&?7lp^sI@(I~bjKF(s)pzAYRDsxrgD2w z>akQ8$3}psR-b9x&CMlGH{M<~J1$vcd8^|J>t7A6dO;;Z$Mbr9a)?b+DFUM+)--A@ zhPx=9O-rqmXS>k5f(3TWi9PD!hAa8YhqLV~A!NMShSyFx`ifjn^U*H!l^+7P>VNe+sWxDK>*eTYCUR)cXho-4QVBB1mf@c`Ie3fP z4vugHue;95398#1`4?(Ikq_xr$R(XUzo$cvYMJ_81%3r4s7hb=iD5K>tGWSF6@)7n zkwRS_c2?htEXfNo)uI{epfro^LtG)czxVrb_CiAAV{e>4tbSlyy}$x70F)PTPSme% z4-LrNTKFmriux7w+{mq)|1&#bDvr&5kXvZs=Qw>nuXMnE)2CdvMv570WVZJ2iTX?K zqSXr&O}-;vrbdfVGjcQU%b>P0K^+(3Ur|(1X_(-hKiJ-13sWx)ysuqoD-|vriJ;yn zEkrY{jpRG(p@3JJ%Matan;ju8Y*EKuj#F;j|>*G8>~0V}75 z{<+cp)kT%`8(6aoZ=L=Rek+3_1BwV3LVahd4>n6*1mysm7WyvNLoo_-a7~|$1%<&_ zS^6p*%Yuk;O8jh=Z2NT}jVg_azaRYq8&Gx_pGE85Cp?7?ywD40v@XD7ABe#nv<86n zp`gqxv{31xQZiX4(ox}jdIe=;U~~6N1?g~!llQp&Epyl+zA1)X!ncN-5wtplxP*pr!-&qrPVF2(PUpkTEPxF(Al z;F%4Ff}e4~ex_k7JKd=UzaME%O?YgJw1hWTQ3t&ON(;F8Z`#7_LR;%Ooz0TK*APSX zO}T(D-F@A9a~n!a!r$>l6qm{l=#JOb=iCKK*2E@I9z{)n;sv`z3Fyr?ZYXHOL~k3? zO$DVM><9dz0d4BR3EKsV<}CLe^~-xhqY#IZ^Y^gYutv$ac2Hg<5xQJ40{LdBV6#OL zCHRC)N#fBN-QKcf30zbyG#=Y|j{_8xIW{ybSz--!G#RU&^wrUs(n{j0cMi;T%Rmyg^PVLn)5| zIG~xCxC2ot;{_Dzn5z;>p|5{?u~jMKWB6`&>xU*_cdmttOKHM@lfZ|tCWT}s3yw>= zYE5mOz_>tyqk9G}(c}&O2qb3LjNt;dCOwWk52DwtDZwceLkhq}bf*YuKk5sT3%$p| zq0vGS&|ut{m=s#i7`&!fzg{Y_Y)o>8EKy{?_2!69$XZayFhXudUU_13O$l5lASV~Q z(doatr0}$W(@#FuFD8^b2us2rde%Qd`ScJdS|_?9XGN{9%K(cIq>%2KFxz*nIr%4r zw+NHcDT_GMrj0?*wYt33nhjbQ!A<5SjJ)R>R6~BV{{Pd4)!ZKD_^Q;V%Z*rL$7)I) zEnDmNJF_8G_%j&h1UUrvIgo4jO>qXcasQDaLnw4%r(~-k6sQetbOx+tO@JRp@~2tG z$Trh}u{NUyZ&lgNBxexMCGpdPkQfSxOw!1RrF5IphZCs#%1V`hJfaep@R{BGY8HRIPiT`Gv*l&3dzLWCAPvsjdN zgNK>mKOVsSU=R@s8313WzZ0W0n;bau2 zWXY!O_^8)~M1IUA*{oFhcB3M}Qu_5j6v}%YYPX4>zRt-3q5ab(ym95I{FyfKt%=^c zGR24v#_L=DOm;+X57JgEWZJF4&E*6Kz@4|`F+#x=)rgL(DkO?8?CCkD64lFuk}gE` zP{y6GHQP3^9BUcjIosGa^)I|D7mAk15tVgBoZ7>3^|N534|5^ZFS_PGi?M zmhW^#u`RYMJ>Qud$ynrzoyp5%&2Im0irz5fP#a-KKsoAe8v;CD2FrP;KdvEUYc2(B zLDqi1Nn-FG8|?*%p9! zix?q4b&>f}bg)4xF@wUQ7XF5tQSh=Tu;8M8<<*-z3(*ckrlKH6M_osw zwjNw`Ofl-pqO#kWaF!FC9aRuvsK>-&0_s-iRiws7wuwxw&~Fc7>~^rEzdor=nXT(# z1!b&R?4B|btd9DOaheRxF3i;YQg?g1jTY;_Jt3b^u`r>T!B{ztcP54jxFz|cI1#!g zrN12|({laQv9q=myRd^K+tQ5YIS)nNIb+W1hl?0Z;i;+id$%|3Ah^A_#M)DpMa1}= zdM=onQk7kuhhxENiA5e*V`2ZjvqoE>luHmms8D5jMa)^3I_*{6-QF2=7=+?Tc=G>b?MJ{7nU^jN_j@3FsXfJE zIvm?~=a@79IaS;936-ntEkj&&Huj|S{K$Yp%g)9vBIa?q`8I~Bz;<^xdA#QpT8K;3 z6!_&i+4MO1$KzIORhT=|IZh4|CpO5f!EfpJCvs3tN;#{;lzw=_(J3Ahx+ZM}hQx`^U1N8gr=6>&t~Zm( zO{+@6Wc=#d!Cj3{8OnSR%*1w+gZ!|)b#)4oWdidM-5yM1Np}XSW&Cl)`FSoN6-gfw znvp=5A*PVIe*wZIX-Q~w1gBK7;z}mljKr9YWIAe@3jU3fr5J70_A*3(PDn0blW_x) zOO#3-AZ~gj`fjN7Si-S7VqHAiI&*1V5}YHkF`m8_7yl~89zAW{vTba> zf~KkX$19c*8h(3(qnZtDd}0kyk%CGT%(ck6n_T10&w-Slq^KI=G>M^s{o8D;?YZ9!1$5BPN#0rXb`Sp)g7%6x@`si z?dNjMl4CO&wNI||er%hnEwro&Z@2BAzbCi(;zmi^d_+#l%;xq4I7_I+ym@^unOkR2 zc**TMF7g>2XPG3g;b$LiE- zm;;L$S^g@B>`Eh&;2@I~hr8|px)1H61Dxgje>6jGU)J}f18N&XE#tpAaZYS742+SA z`v1ssInLFkFYVhKEe@H4|LNAt;%XIJ1zYj5CF;c$_R+6pnf5in$g04tdGUaf*7B8M zyPU7KpSi;B&i~>*buNz^Gh-5U%jf>lF>YRsrV-SAhjk_EwWa#+ z{WO}YRF8es;%i( zRQvkX4V)f_zl~qcG4yDt84_qPRKgE)N>25Dd~-zi9+@8uiK!*XeFWJr3fIK@t%_nV z)+=&>XgPLodkAjLR;oo@sn=4RVDob>w;YxT8Rp+xG~7#kY#yyMUAMexiY1jOn|!!> zOb=fe?Hv+-cQ7sIyK1pn8~}q#iUOKh5#>00i)f@th_tn+5wVD(iczMY&f0V1{=3+o zxQ*Wc9gRX%Q@49CA5Rv*cxa#Q7Wct`Vcs{Y?k{ig*;H(aU3+`EK;Zs4c7a`!@+nGStQd?z*(CjeD)C5A zWg%l1J9<$Esa^DO^226}JOw9wF9POdOnRB{ZYFOcp0suyn+yW7hKCvkAc?2GIRu_D!YHPl4Ax2yG4 zP!r>5xW#Y>9EzGEXFBVh=Iu3e!7ys(%~}qmCRjd9XLx(VDr1euiG3GHYsG>J4T0|+ zZeNEKbA;qH#}4lft7sr{k@CY(5UN3@&T}J~tbWFXUQgbqWZ!E!X0I+z8G%YC?%`76pk8?;FSMD-)Ba3;|7!wO4 zLzR{yLzTS3p{|FNa9|=0cbT^af?7wUJGZEo7hafjO5-6bGc<}Dy+YqW z*FBVT{ll+kg^*qSs=-?gIY`*6opgF)%OBDmpmu&9i4Xm=V?6plj8wNN|_g1eMR6dO|##hwTP5#YxrTEryT6TCDX zPatUHYapVa&OMr3tPppMif?RqGBvZ%&tT>pynF_(x*X@T`~Yp~x6%4lS1*4FmM1-5qWpHE z{G(4!;?|@dy2694dx-m&76Sz)lWkDnZ$JRx17=esT83fmZ&Pqow6TpxgpGW?Zj^OqH)GS757jb6d(n;!6 zgCi&8l|6^@B?*hKfY`84J~_$B}-j48H9K-2bFKeLi|q2BH3N?+%Q|yS2ht3{Un}ni7&I!qSji#_oh5G*I2J z5nqW>wWP$9@u6|^yLe>x3lEsIj0^AQ*ZV(l`klec**VHf>f4BmWQLd{8rG;vtlJ*L zlfE2?Kemg@V*q?nN%r(7zBAJ>RA>U^m4Wm)(Xmx8{@0-X9`a|ucw8Nr!MNZK_X;3xTO%(dD}NG z8_89G?Uv^qMG5y&8qPU^3OR*>kiUK+-<6KXibElA|8I07s5jPq5`*i!gT40Zg@|e4 zx328ko2?cmTukMG>ead_&v;P~`kAzKl!t`^jP%nQ;k6& zY0^EiP&YF6lRjW4*5?r#G?z?o+Vt-6QfxlY9LL-M_wb&EI00c&8r?T`IFQN!$P#@S zn|||m^fgc(+5G+#z@-5xf76XRa|YPI2pB&rR3=zYx>LRbthq>lhXy3^KF6GDppqV= z2y0A*gh+`i(lPTq%aMq|CW>ITY$H@Nq(e(YJJY;ihi6`-s8>iwREnkC!Z;)Z2QAUc z#j05etGskn|75*Unp#R^2L6ZvI2Q7ak{C;nZ(Zi}ntKC0DSBM6s$nTC0U=;<0~fiu z_eHG5fi7`yBNR@AD?*msJ9!C`S;wp=)yMj<6+}J71@~6?Kov`F_*eIAsFB zx00oO@$7w#CW;!o@B262hTk6kkrnt<>wA7__%}+%OMkmW4Ku^0Ey=k{;zMQBs6hNZ zv&mfhW6E2*hmxBt4)zx9P9C=Yz^j?-_;v(pnxyJA=rt{jhaA`WT*?T9=~E}U%mtAf zdXBKUo!8EA*=XeM%p@7r%v4q^@P^M)4OGt$4K|(jk<{UX z;TwG$j&lNCu<1)k>T{a`bcanXG3|?{g-D{qtCq~i{f)Mc>}*d1<&hWdbQXBpf&}nr zKx(XlpP`iiWIN3af~U=vaARKX0@}0ME~L3J9BL2mA6Qe^1qE?r&Z-2CX7j2|C_;^-WOC1s7!uK}DWfqDDXEr3X zD?@x$cFocE)6&_NpU#CVe)r#s3mC@5^2vx?%>a&)TOaF%L20hJNQxBGI|*inrU63IE?)=hlm^H2y2D0 zx4BYsA(C^zG(p6e>wQEZ7LH0yMi@ZQf=OgzyR;tN{X$OpDoQy8MyK^;?3Xabxp{vH zad5jdp%V79hI-;>e)!T<1uTBtd&K{xCr7>9s_UwbC#FtNu!3ssiPu5tYVy;T^3k^j zz+zdM3DrfVq&MTF3}aH9o4sd97+>7|=y9idIK^=*7cTHT8FkPl^FWKkAS7zslo^4E zjNCxQoE!D6X`aIgbX9BQL8CkWA`0`7%FHcEHw~-Ys;aY%+E5+#sz{-fn%Oecy}MfE zOnP3amX^W@uCEf!{pSV2+z9g0*r$zl;p2;kb{}HAV2d94DGLlnN&T5h6^ng%zVywC z4FDc3WS(5j0d=Eu6#y-2NIqAa;W%#l#Y(;>MeIhKKvn7IK*cz7RI#_l%-zIO8~uz@!GpTYb8E6(whPRI#O)`2x?L#2O|SgsC~iwS(V}bze;H$ohP4} zR$=8i?v(M9huA7Y*uzIL?IC%zmezq+;%rQj&*SN@Isguf4atIo=cx5Mq|l9?&U@tJ zZ_}3Fu+#YC1zb0jRKk+M7*JR-fcpy+!Bm6$tfI8scL=xS;i7eaUnktWeD(agdhw(k zytz*brsQO9aw-&b6M$+7BLJ(dhCrz1IF~%mkB90FKR&|WW3l}D^YCB4#uSPNi?_f3 zwve01U&upOm_{N^wG3)Q{Ltn}eD0f9zrns_Z|;kEwg0Xu*9rC4FNy2-{oxS{S zG6-8%gVE=LWtBP@yAGt~D@F z(K;$K{u%h}Ob#Zw(VUhmM06htxT`tXMcdyWcUOj-cjJ2|f4Rone?eUL_;h zI>74uI$bxmuUmr2iyBQ_8$-PQH7E(XioS8YLSj_y;2O0hk!1CA^ZEqBpu=DcCLA=N z3SvcqgB}|OFuF0pjgU%hfp(LgUj5W|&F%SHV~;=mNU>o$9#s@L7Uib1XB}N#%VsZ# z12+~f@Y!~0VDH%*a#lZhMOKyvV;>jgH3x^g^FJ2eoUigyp#`ath?;`&PdwjPo!eGU ze{18K7lRAohm)|yKj??#sAX~+on9tm)?uvYE0yuUE&;#a+2MJml=QBe0C=)gSm-jj zd?oG#KQFg+dt<3V-;M@rMPbBl9Luo{jE*iU`@swGd;R{a?n06Kr%SdVg)EVkuNRuH zc&LqZl4ZMqZ}zN!dE%WP6rAv#^BV;@KkdX&akL-v#lpD1UW&prvfItdnz6V(9SBlA z?c$i};U*^Aav`Bxry3FTQ&Hyp`*7v-`B#TUq5)4Eyc)!{wSl-YU=ZFXfR7}IZk38O>1!6rT}mUWM4^ktV@ozh7$KDMRO ztbcQ!Vb|Qzq@sbF&{Mid^NV;@s5oEyP-&yi+Tvic?HfO?LlNLVKcb1@TI^$2b zk-&ySyKO|YK*l8CnMM|8KY1jb$qrr3+zdxzp_$Q{PJ9vrB9`of&@~&};%zLgFs3=p znN^NZyvjotg~k;UsO(exRouKt250zuhX6B>fGHMt_C@pwdN8h`1FrF$AjyNE#br_n zG5=Lk>zO|P_Qg+T;S_`5j4v(x-04I{fUFO%&Z-BuTW)wZ`r2ugxFct%niow^i`$G= z;}fS$dN(w)aAmZty%{806dAz@!h{4be?W25!vOsR#6h8cVW9^Bc(;&22afWT zEfRI%m35Oo-jVT)bhL>=BK*fN1Lqdy^n%ASGF4cc%EYV>T?V8<7PcoL)aF@w$zl?P z27*ZdI=4TS^_qa6^0pbJV;3#_{Y2~n4jLqEoU&;X*JZ9<*s!?xPkw*pO2>CH0&Hbx zn{lM*0@^G*cpX~dr6saLVp3HL&A>tyq{;#azMFFtlLx&K!Ush{WDRtduY!zS12Exrwwrbers?H8wfQz6>dUkqXIAwGC7Oo_G$p+#qs~{-YS*m4-8mtd(00 z+DUqUn`he34reNsOac*@X^%1QHxHO1hEqx6r<>AUgr)-K@L2X9k&hy_*Fq>(FiwS; z@~Gn^UDX2>M<1^hgHt-(nSPM8jsjnm3wMp0)S=NdGuOjk&8| zL2tA?_Cx)9YEfUF1Be@-6CZ)0;_m(e3)+`&aJ1OqiVheCa_G4;?V9LJxH&3FWV(_Y z56F;7bV}6#Sezr4xR|*Dm`l(oXbPcZ87o%cOph=f$*WkjA&J4ArYVP*r9m-_feQ=? z6bhK!oO2al8duE8ybw6TrN!|^mW4ozsTFbV1Wa&Yhd>#CSvqXn5pbwIR_ZLJjL{z` z6`!HoAe8fdM|YT%28IdUYEX*r+r4{mQ>~P9iDN>r8K1ZdX19&Ca?;NI_`8JP>?yniB~n3(0vwspB!1MDDPf zZ5y1cqNRNDnS+7_|4ox#V1BS$&zJh&D%1%AC zsRO9nhzHeW53x91GNxrpDYvvS$F-`Mg}MbpN;oeV0dPm?Rs<98J2P~00X*ewxaA^> zqCoLi^9aBlnWz8}*cW;j?zVag8_59%?GDM_BsC!*&dnSA{su)Oh2M328L%!E6#uL| zX1VWQMkFXu#+ypPz4aEG$8@(CPhoFGKj#AoKaE1$m%#Sjk2LxQlgFp$J`C8X06{>$ zzZH?sZ11dH^5llicfR}{PVfSHUUgzlp{Z@v$nKYALSFjk zCw~`iT{*P-V_aIxW94a@k{k68f)jX29d`fq_v)S&C@m05trfK~VK(5Vuh_!zd!dj9 zG;=wiTwAR|V~r=cx4q*&K3g#w^KfgXZHJgJ6^>)uj?&m_N?Yry)(cfp>s)0zC>$X5 zuB|s{|B~LA^t7UmYkb4G&!Le&{WM>s%oC8lwjLz+xk#f9edM4eA5zG@QwG@@zd$LnxxtK$ks_L|+E zWu_Rc+|?TVINyQU@$Cj*{A=vO@iRs2LW&a6k=0M)O_uXl-k~+`2dktBD_H|wt`GA(7b?(7l z8g9($JDc6&@;tWOm`+>7Ft`b$u&{#FEM!N%L!qd{G7)50+s0t4A(q&$t>Qhc5Urcp zh;auVI`S{fjf+Fx8`5QG;{F8)-QF+4b1k!9wJY{otc$@Ug7=}V1A-*3WKq+7{`?P! zrv^YB`XuReZ+YmbD=mD2j2ua=11X@Vs~O^c=-%8uDhMJjvTuuY3pQ4^sxZfv$8pGv z)R1&RCqj^*O}UWc9K3zOTH%9{l?lhazMGL>Is5OFoh(x161jsbl!L!zce(}*&|aCU zxtV5UmVi{1fD6t|Mw9G`CtH6@?&P$~@nA_Zh5e=;iSZLRK7@~{bd1zi!}T#g%@3FC zX1L$RDE|9zm&Rj4L=WwKnmfuF4f8F%-rd@Gt=t=)C3J@ROGhoL8e)#)5rv3yXyiO( z0qJQ7oBltBiC4W{N9dNx;^gt~uf6bpA63h>Di*1~Nv}|<#{FaHIBb%nk!_xS;r~3^ zpIob=T8qFl5>ZnoquU*CDiSwN{>G(6;i;XgH+O{A;sVPMHQe6i=`f7NlH|hv9~Swi zN;|a5+#8ET)7v`E!DG#`V4BH$-n$0?7=|{wl3QvhGycWHbAkny zE{nA|_9c^Fd<$XVt)s=Od5o7SeAZr{murPyDPCjlC;|#t<@{81Rs7 z|MFQ??z9>aYnMG)Njb16B4mc3mWBmPTp!}%>->z*zh}<*0T9X}fnj>EWCQ_~IS}*| zZ{X4t(*HOfn-6{u0#;<+GGTZfy44Yg=K)jjvJF?1t!9JxIxV!W64TunayYjbT%{&dP|wU@%&2!@Y%L%_}SF0vMvH2F)jQ z<1;DO0N53jS60i)KCahcm8IP9*-j}b zzCVA9(9@_3SVn{|*L7U}0Sq)*p^fY61zq=n!SGrOT}(iICmjsne9GL4(S@fyVnBe~ z`BPE?{ZE`PuS^+Tu1e0Sbk)FsHZMleva$_7-N))1-afnXN3-jit+Mm9ZNkkJ&62dF zV_#dC(1#a^;?w$p6SjE-@}4`J zLo-6m-{S&KLc$z%Y5LDufr{%eS|{xk`LyomQU&?B<*^7KblrdDgl2}GoeovntJezx z)gK65li*x@5a@MXbGWKaTxDrZoQD96oO|%hCj+i4y)k&tVli8LHOa@TB(GsW@w9cF zK8Sh5L?I4WI*dXGd4+;^P;sUti2o=G`8eq$d?s0=_sW2q(gr{wqRMw5r-~Pmy}+%{ z&Cg2qj5&MtKib2Wt;z?+9e_s$sUs-^6ckT83WN;|3jpK#4zBQC>=byF zlC};sdb@yQz+MN>i)Jar+GOPI>67XgKd{G?fHBpByhyl{iiZVjWj+ zC0$|(Giis^O3mDRWcF29J<2jJXHt>LrDC^Dp8`GpF*dZ?EHvpZYF$pTRx7K4(r9=&DR(i;dl+J2iRHAoVdHT#!RUbt1YK+Novob3!pYe{Z>1(qPw3cluP=CR-ckI6aF`$?n# zS+q+qaqb^JDG&)7XsekR<6W*6PGup9qnP+mNDrOHBuFiXox2A<;Bd zSt|rmHCY1cUBpHPC8plaPz?#v@YgXbGdGhS0FW_1Ema4X8sx?)e1i|gr; zaSn+R39sWVtDXYS823s%MX~f~GVJJ(@A>qaw1z{DhC+-WTsC+>Ik^@fq$4QAfX)Z@jf$_@$ra%w8wH`R;hz*1L>j zsTQdusSRbHZ#FB1@uS^Hjitg zj3C6zq9EU}s=NwLAED{Mx0Hk0v0|$=GD5^Q!+?NUJOIYJU&%rXV1>bpM|MSGf+Fk^ z>=%Bccwghe5qMrD>|1Dm?nZ(qM1ozAvA~JzEY$ zA>7?GFs5@yVSuN>yK$^Z{ugw=$M%6EillLdfSCn)mV}7qA1iiLk3$}$ZH+8RU_cA1 z2R95sbRWP6s4?^=VJzhVo*q0m4>Ln%Z;Q|sJ9+OmtdRe&e?~r0L=V|zzvJlxr#L&; ztb^GPi2dhgXUBq8Q4{Ka{rf>6j$htz5`5+!095@(u+WwbNZH@b68K0(r`rK}H+&Fg zrD<%ACcEs=-MC$5d7{W$n9IO@eSE{kTQO6XxDOhTG48b=6aQQIOv*P~S>r0J>~UE{ zfR>6-0TSv>s%q6r0cJ=^Op&IvZlnAkB@Qk?Hn{t5seXE{YInov}9KEP%(hCre8q_&L=D=<+^CHc$ef$H(p85wj z+9f_Kl$~~&kh$8XPD`wi-I_VfyHTBTrSB!47cW_8tl@4@kYJ1KT%nf4Gf$i}l4+FP z%8J;$p-gO#S@X;ql|k!hxgJEU0*Fh_)bZh2FdL4DGvjc925XEuF28Jt5Ds^PA%6=B z?*jV~{ih-^pe<)L`I$UR!itVT|AA@*ZX7A&DvcnFQbTiGDaUooK*a=AlNu2ciyK4p zz)GKLSg7V5gR;B`aU-47+cd9@S)Agz@(rZ3iGGncsNUW7N`+-xKSdr}+CGD@yCTYX z%o9v7jiuoXx5;xz0##GVsu8Tr3Jb0<*Y^Rb`2u6yfZ?+6(FN`;Gc5!a@)#*XmG%T~ z)y~GCt|xLwn6g=uZX6lENa{k6-UX(Yl|3-=Hp4)8jfH|ChG>uk4cx2j!9r^ej(nU2~qfob+WYXI@hHatb;U`{~fqsSJB{nILEs5 z&uTC;HX6*-#)NBPBeXGact_&;)pVS5m+n8C6B%8d#rbc#L37liWlD{t5lVrKN2#!@ zO7<(!XJzEL&CcRDH_6mcq*g4d-A0o)!$*JVFVCN+*9DtL=?w~wwT%-nAt_E9>r6N*oBr04)a}^nr!T>z;Z0BC z>u_O+KiNUVfF4Gw z+(nEesL*(d2S;P-b-TVHMBM#1eh_)jicnIrO!JZwp=VKfu(XV*?U*v!8YDou^kPNdjp79W*|+M=70{2It1(&W9cuXMd0^muW<}tYFIHF+5$rMzpo*kC<|vkir*a~k6*5X(Rs)HymlLdsIIgx$ z$r;HPO2tBFDo1YU6LtSDkwZQv2Icesm{`ta&XL8DuBD;nT#{JPE>kfef>D)br7@5^XbrhaOrWIKAXge@~sa?n7vgSTKiuEc-qcXn`}@1udLQ(cSJu^Y{1k0 z?iQ!>5*4_*4oPTp@FdsGb-f zmbOu8F_35U`irF#ps!%|sDRI`2)?3p6f5MP^I1dl#Z=^S#_!}4}wcL^~RcEsfQ`)4RM{K?R{Bi zqtHcJ1yXLSrp=0;_kIj}+HYM<+iJj)n(U-$YeAhQtSSIM>#M?9Q_SI};XTc_xUsql zsNEfkNoSR6!8de(msol4myhGEiJ!lnYG4ZZT5)2_?&ahc0eN)J!PtD81(+qh9N;rQ z#@bdq;y@KFC1-%ZggkilYLUlJB(jn=CJONw4O-_n=*S9|4TG}DQ$7Y4*`Tsg(rz=F zLR(osCrOc4PRjeg!?gV{{*D_pyW5?(u73wu!-uHJOMf@*jAx0mpb!c`ZQGF=*Dvy! zsSx}Q?>mn-YW1%&b0-|WygGR&oF01dAQ{{gw?;WH<2)L=gR7M_5JTuhAa*r*Kg!9Uk>rLjB>KD_K1j#TdhE9E&tG{y~u4sXk6WH&&B>^ zlEnS;wC_c$-FxSC7-KU_VR-J;HJ>b<-@W1KZnbPyiQS{AQx89#-kt5>EH7hH64avM z=MgHz@RZ+ePSEo^VJkdWxKQiX6fBj9q|NCb4sRX$*4J*~_LVkkm2|Eq?*3_L64;`w z%ue`&ibxG7M)9yR9A=Eg%`!~dD82{~ljZL*a|lz+TE1-7tWUQ2;hV{+rKL@`H~J@p z;t*DM#vF$Gz5o$k)J z=HCvkxwP3-rrVwzsGAm8&5cM9=Y85E(^}z1nZ3O6;Uods1lXoqkzYWQ^E{&!P% zP|w!J@ehQHQPpL&sk18Xa!X7033^3rZo~Vjw)NR6sZ>XYC&zck;rpqnZ7AT z)k(re5=S91caot!c1CN4oF$4pg}E%W3zkxBC`}NeqXqfVk-OPfyCfe({*Q%6n^tqb zE@@3`N2(t~&~UzgoUWzn1N6I`-E_^YlbO0-<-c0lS#7+hTNyd5g(Tlpj&;_^j-!fB zi?;0WCH+Kv@FYrDkF_H9y&F&07N<%2{Lp5FTX@1hT;AJgj>RaL+CzW`pS&bqV~!PF zHLgnTz^p7a)sa11I^k70t71?1d|Uz}&xR?v%2R&nrD5WwuR6`agLHcG)6~`z8f&kF z)PyK0gzM0r-rp6u!VEf!NTg}cUpq0k4(`vJj|P7)OUFtpGqV=kH23k3W=;he=-I0V z=Js6cx9O&pdNv^R!dOod5URehIS#W^HAcrfnhW#Qy1qymn+OgA!1IHSa#@QJcg2vn zv5t!j3hO{r?>da=%Em8OitD#-qnNEP8*r5&Nnxs2jEwn|Nf-q~ht3{q9aEzP;f!7u z=LjbX*7+Kk!L0FnHDPU0P6s%N3@24@Of+Fh7CCH9N&G0iDB~)3?eyedO|L3$0!&i# zl;w;JP0m*ZQ%J=t3wV)N=b3W(xVcrE2E1CNHS1m?lSbheF(Q+3>{J)Ew)9sIYxl<9 zwEE4#J+UZ%-`dsdwR^QU!Dr-V1kdhzyn?#;i&rIPt2()VC46Q_@+`50s5DB`6?n$0 z$S|4d35`u2y+j@?G?HUhim}Ugn#CdR-wVD+Z3dyy_?BvkjO%G`@p|akfs_hNdV$@Y z<5b1xUz7r;>w6DBEIKOJ6pFtsP#nc+8t|$TIa~xP_8Psb-R6teH!P$NUA7c!ea2a0y8-CV0 zFL=XywJUag-_Rku&H&XlBxy)a9BtBo`qXGCEzpcUb6J3N*KtNecNP<#riz9&`zX|1 zIU?nUbVg^*mLjLU?uGRsbdhv(L`CORd$o;^doNNLQRiG1a~`U>QZ43$2mBHc3bU+|42h{~&AT6IqBKbaeYbuWWzjv7G? zLT9vvZ$aLn_71n1v~F+wZ3YNPbledbC;J+7ow95LjSQ!kO!7_J=;_XdCM{f-gT7qw z|E5tCL{+BKFV zoC2J9alu=u@gQj}CT7ciOi=kUX znx4%Q7PadmNt=i=rmSOb^m=b%T0~t}0K6QcOwK@&2HTanhQ81-!+9e?e^COMqQqmKA#GOf`48o2p4mZn^4+_nMuW<`fRjUv#!$ntm+u2z8S)(}m(ty> zq&r?WWwN-N=$YKerqpTXTE7fu<*?LI?jY+8YWGMFU}dwh@~w3YM_mKaRwJ6Rj}rl=r^< z+x=c%dI9k5JmMrULpG7Wg$r*~%M6??QN#CdWXrMxSNCuK8?l>0g9WmS6cC{UaiD6b z_x+>K4HZYizMzTA7gJu zC2U9edd^_RILPI*uSW=J+p685KzllI3GcSj99}{A41`43WO^F>!QnN}!MHn@8_@}= z+c7Dq3F+kpJRLHdE8Lvl>sCbAWJt`88OK-|3|)5B6Hre7_)8am>!fwKOmu2*gBg5V zk@D(GPrUT;yWdubA$Qu&pfA;l&*fi>*XkWJitQmiD7UXBLUXzBn22nX7F^TSqZ9Mg6N~vzUh_)t)hshHV za>O7(pEBCazp}*bXj@ItB4?WAHL(aDB@KPBpcjgOy5egpuuea_!0Vp-r~U%e$zKgJ zrE(bnNIvZ7KX3X{;t$LpESkS(APucOOWu%p(m!5f+m^JmWDHcH0vQxeK>Jga+p=6M zdnH%ssXN5Jk|$SGE33wITmJJmt2>^%lMU;j3}3oPt^Mrlw%(y|-oR?apI(TujW`;8 z)PMVxbhexv75#^TzkcTet$q|yg(QIzfLq3*U>38#FP8ciy@6?Ig^>eF*3lZ*Wm%1* z(gGbv&r_6geLRjU%g~z+D_#j&9Td4$ZFU%sIWjf?$m~)xO40?qDF5~u@sP^fV=R;~ zZQ=^y%K`2l-JVBkp|+D(xD0_FgsK4h@rVv=>6OXt$~qia0^H$JXOzv)7cV=renoH| zB(e&s*JXv52&I&_(_F-E0`?#kWj#@IJ_k-|S3PJ2t{o6Pn;oTQgxL)LUnih!iK3gi#y9oT8Jkq*tnPaw`i$hZUu%-K-D_cn+7X%RdiY z_s1{4+WYB(+NfMvN8IcbDrQB@y z`hLhfKIw__j=MKaWA8dD_@YZah#P7^!RG88FxeE&P|9@KS_K;QYZrh%cpbngHK2;H zbae$*dA&eqH;u!-KyOvl1Khj)i%Ql3r2M^lQtr;;a zI)jC@{QXxFr2j>*clI1SgRsdR($l`u;LDby#9TFuCG7kHM3norkDomNYvE~L$V|5d zXHcxA2el<**j{zRD?lP|z{b8Gqyh4zSd zlrf+sN8}>!abpH1O|q*H(novuC@!hY1TjWx$^vrYHFwCM{%?&LI|;BMy3|394>k}D z=M0fK3i6T+gOI7=370|$xw=dY%ws_bD6K)TF6q_cJ=2gAo!{H|2z`krkUbMhTPm|z zh?UN_h8Uq^UZj4pITi#o4^Nh`g-Kjj(5`Mwf-bUma13Fkcfkr70b6g#x3eT)p9ThW z3wCU7+)0V?$h+M_hB&BzWsy4&i~VTjDGHuUESEWC*GL<(s>j7XhJ(e`qF!dITuvkC zoU2m=UftfuZ&2Uib5!-tQf_=8rdsEztwlu><Pe=`ixivFn_4Ljq)98L+NpV+*)^|Kc? z)%~t@#M>NuBl&^x`YV-gP1oZu9i_D4>L*~cH#zL?H2k%zi*PJwR9!ejHf6y#LOe`q zezJtC{AlWiggI6o7*&@M($uRXu+@4{I= zR-Hlc_m3-jv1KaNufM)<7Z1T1k3D@*ckD}xBwZEpSP+PJLa~p--6L*ABPmD!%zI_pL z03b>BBTr?6H%>Z=uv~=NZeOz&BIBbmb0aqhjN|B$07x+tuVIydr&Nkl<$%SX!&O4d z*pC9|Nw$QDm#~%u@N(hmiE*#F4WH&?V5->BVh!OsfR^0O^aksYGVF$7lYD zo=?#ZiHb=*ct9KL_b-#%?Ve@9V;V)Z8@;DtXr}X_L7Ha+2u;#~-mJ@pO(CwdAQGK| z=ObK{;8`U}^^}Uy)e5jBV%IB%oy#bmdNqgZs%{haa&Kjy@dci zqecgKXAPwH=K^rIN~j(N(oTu9=p)Zl<>saS9$f^`OMhc4p7iwuCPW;XaO}>V%Cp~k z2Y^E~%URWN{_>q3D~g%_eG7FCEiyRc)TobtwJpDcuRootGS3A@&nHvu{J#m98NX2h z^OaYidBH!Iy<(8R_Qygj=2&o~R!r<-MByQ)@XiB^Z{d`r)RbyMK-?3a3ZB{_pGMoc zmkW}_x)LTymRRC3KB9sPI#xN?v?Wlf^plK&9|DsA8$OE4c5n1>^-+)&%Hlm)Pnpr5 zdwHGR`x?s1$`({hJ*(eZk5*CYB=#bxZ%34z+Iv9XVDIkt3NzopLUGO z0@K5Tlk0}=E0;(>`OIq@gBc>Hwg2Wt_}I+IS)bwPnZnP(`tYc5G6^m<^gaE8x6OAV zq=V;l8kAEjN@b>!VOmrBpo{M8-bGD=t1HX6xUO*|(4dz<+2G%|}Q^w{d=^0`N&b zl6vUu8kVhSc)sqf$<>o5xKiiGU<2y?Zc8L2NldjMCDU%hyCeO+08gqnp0WDU%X|0{ zP89)VfllK&DsGho_Sn?z1Y-^kmaM)eR*WPz>4rTZw<`07Gq_f=1@=qmyU^M&qD?us zB2>J5mT{0w4U5FH>WRVgFi+NW3y{LX3#COanDMaarg$r*j`(2NF;Glb;$(VbRHYx(1l9h7)i&KUINDGIn%z?0Rj}To zSY0#0duPb~*O{@~0KVJ9m_iYQj8MB{KJ&BAQS62rb(SUHWcBYG_ul~ zY5>bsZ(&4UHx!jo^e+mngKtALck?;eA9SJ{b#(fI55wQ^cEF{jj9SsHYc=hvqd>4xr1ZgNoR*65ZyXFJ-xb~ z#49dPRd?Ye^7sJ_(VIEMx=wIAN>lmWHGu}%3ky=OEO^L72fu=+G1Wf8s#4QF>r68m zIZL(ojQj5f-ceo|fZ41bp;?qvBfRVU5Gyb9n-`5@`Xs`fBQq4W>!GZ999GKJS#4!bixaq-|-&loV$Gzee@io`?A zVLi{X6!&a)Mu*345C9Smawp1Wpiex?5=N?wml680n%qDyAdCRF*JzazOLS?K|7s6vIvAV~#jOGbCizSW`9 zh>nrxqmkSQ7r@7KBCmz{g^O^kbnz!4TS)Q!E= z%ltg#&PKUcZ-C%UyzTXa%|s|OAe{t}Umbca%5sDJ>LPS~lwdtGM_AGcEWXM$a>TwP zh`X9*DUE11A=m2}?XryAvb&kya{sVISV3W#_MJ-6$t;G{w?+rZ-IBE=77L~chE0bq zmBg)U<9m-_hgeKMn2TsGF~w6GgFD~b__$r4&VaqhyeiFJ-@O9@2e@$nRy&BUfMG~{ zi6)gS_@;)$;k#5j4sCkzbA%6cO(xdhIGB}v?+b_6S;x|RFS6ME47T01J^DPI!&BXs zwpY+^tOJM*|DS#+U(!$n1Dd*Nh`nM?JQ6LVQ%p9211uleK)YfO%8|X!UE!>9Icfyp zl2cl;W2`$>AOQACrE<1~KkRWZm;3~W^dj@o94uHDQ^q7B=~%f5gGQcU^(xoFsEQ{H zgdF1e-QQT0(`kHgyOOZmJ;8wWrqH$tPunV0M1ll2orV-YH8yM9cr|jSh1R5D&~_uq zyTsirs`Kd+(JIKP*gyUtBU-d|00EfnxZpFR8JlN`2wDn4q;Nz>vYa|GyhUIz=sE30xy-BO0H6B61IFuj9U?E|axeB=G3bGKvSMV2FQn^^^ZLR`Z@EnUhG));{# z&j|G)-v~N-u8-@VxDvDNJ|IEEc#SlKa6ppzhP}UiHl*y=ZNs0SO=Kkvw^I)i9*{Tm z)VLd%-vb_@Ly-s4$@awWoy$1A!DB!buu%n};s>8?Y`}FX$PG~Y@lRYX~k1&J2~VE@{`x&}67 zvOeU=*!fGQ@X|Z{98sRd}rP(yN zG-XHy!pJ2RLr3wO)kc*mL#N>)CMs2Da7%ut-Fd~r5*R*es@HJq)Y}D*4vHn zTITUnL$i8~3va{|%|61wsP=1%y9&@Y10SB&ZPuGhSxBuT!*aaW;+t7tklx4$fx-52 z5p-*Fm|IK+-SCbCiEg~bs&h`Jp$oBwws(_@R+3YBA0EIEcr5pZm1@T6XhU4TDis&} zkXomaVJg*H`8dR)bz*o?Iqn(YNRDx~tVySED;Z1R{!1lwDXC>s$0EeyYqZf=?{tNb zN*f2Z$|fWVRs~?Jbvrv`=f>`lKBwyskc#ac6B2_*rHW+~YZ~sPhN{@EEhJ4NWpIA# zA?;-v%DSS$OlYE2C^8oX&72ASWGHU5olJhVF4*+}rmH$Iq=K3fa5PM8#c567=m~vs zj%jJb#HbnA2cKY%>p*m}%H5!9SVOvuH(=ha1bpG?1Bnn-PB5n`FN*?MX&D(Q$7|e8^LsJqNSpQ{z>#CX0ON+9m30+B;}4 zC@6MDQuTwylp8?Nf59R{RY)??tBn*X%u%M!JgrYK;` zZSc_=nlj)oGy8uwDygw)j=2V}=(wLr9jR1i01Hq< zcpu#j?^fu9tdmT1C}&VB7X;75(?#dcZhZ{;+~wAe#>X~QL!-b)5|{G%w5a080?Vc; zZM)|Mx7zOUE6~{6y$D7ZD_{1uC%)kNP4yW&GIS5l$*K_P-DgJ8oK)S&kDFh+KqoB0_f5UtLP0&)`li;628i z&SC@Q6$71)-eci%C=^qf)O(N!38RoCS;mursJ`CJk>Be; zQX_((qJt@_Ova+ir^+L1WVKptLKp>d!wSJHP5NkagDqDK5>+dm^)LB{Q;t8k8H(uJ z^WLi@W>xY?N?gkt!c z54b=~L+^9!8pE;BAs@Gpz-z3Cf&JYkt%fmT~igbmWxa4!0sU@+ePB)j;s{QmUT$py4A9T5afm z8#4w2!wSu($ET25oj%=m>RRi%wsjv+9HkX)kG7?%v z!8l@>Mw+HDIHasTZNQpoG8#z3<+2^~&aepvgl#zt?Nf%&qlvgndu11a`c=GSa_8Fu z(GDQ{Sk74qck|E|H@V`N;(Xs_Az2pbd{9Q``Mciy-=j41k&cw-N58`E%;E%D;(CF0 zn@7bvA0ZP%WO$Dh`_^AY;p|A<0ufjXyn^R>aeJ3GVYU9tdu*Xm6!mIQ0}@tS6=fpA-1Ubh#_MRDmbuxiIOmt0C(JW}y$_gyQIu#gy6 znx;I(p4SOg%_=VVcvJkb=gAgZRlzh82_i)B%p!@Hp&fLU;KZc>z<>!VN5mX8Jh9(} zHE!Dx3&+ilc@`iDM07MfdR-v<(B`5aJ==mrWR^qwsV1qjzEBO4D4k2;8YN9Y%XFQ1 zSE!2o2~>wCSu}yIt2buLjYb9g-%Z(C{b+)T7jEwFZ~Bq{Ybk3mIl;EXsjYjzUd8iN zmy;$7E|)01l6B0LaA8lb6&j6RLW>HK5ii~7f~Tvj+{b_0lpE$A!qaTZB8oqlComE& ztX(Cx`_Y*9+(eTn07hffAQxOO5o&{mj+v@Mza^E&_yK#hLCk5U-j7o~y`;e7_TA|v z1HZ*}RsW<0lhY5MT){ON;}bn1VPG?lq|1^U#RM2x9v&XUtoVP^kRuC3O?8P;|N;ShN`X+9vr@C|zxMd*sOrmZ*X z)pMt>2UwcSSX^Ue5{>f7HeQMIKYXa#DJDz2><;N3wv-TR2T(&mKV~F;3VTSXlJ<EXPJ-pU*S}!vOtk*uE4B~k3O=t&)s4Hi8uVhh1^cs&a3FN-Z(XZ|xo_W{ zquwVbyHipg`gnOnH!SgLM97jLIoA<33EseWT@l8{8R4G^mmRqg`Q5DwZzn+0Bm<`19l73;$`0Ke$HG? z2zn(*-PSLi0G=BnjYzeKQ6)`n4vGZ=6H-Zu<8;5js6aKc`U;(K zRi0~Y_#PEg8&E2RXeV~~V;fi;ZDNcnbP!UN&|0d1QcAO!I*7MO^j@Pck-c*2IxLwl z+yEgafR9bVabi36ey16PpxOq+tfkM`qE$}Yr^%wWpDG55)%j+{rgc^b{OYdV@q~P& zwsD(TUkZ7#Ph@l31cL7;G&k9ekQe*?1D6SK94cS3P4J05QJrdoIl+eHe2$n-KE3V}J-_HGd`{a6s!<%YETK622k+#L|_!v+M zDxd@jofrN|miY4OwUZF&&3D!qS;!nEon|-c(TK3Lq+<3T(3iH>8x{TvdVH^zgzgT! z7#$a<&zYFdh2GfSU_{x!q5!eiX@}71t4oO;6$=X$xU~~L;O>|$EVuU~281v6URoU) zb1+KCxwFaZ{)9W6>Up#GiY`tF8MuxY5>TQ9csBK&<9hX?=u(5Ym0A3FnUU|{V(JLO+65Jfk zW>Ae^Ak}qn>NucUc8-1RkWB~#l2no5(kpk)!=TMr_rokq4g{*$CVZm=gN*L6rEfLRp7}>s@(wDDmlIZhb|u~ zhD-#V__#VEho7X5*okwXblRhsOO+`;XhF-5B-bRhH(4o@yl)S7;F^DC?m`xHL7u)$ z1YK2CkD)aslFf9_t40)kkt>N2^SZ)paORr`!Ff7Z3R5w~oV`~on23`HN-+cJD3SzO z51({iSslwYQm6#EL+yx&+4Ajy3+I+(V~(_toG7U_^E4)Tiu5^mMNQ+AJaQzjyROTy z8TbZE39w)rXlR)1A_S*_d=mtH>MLM2gses3$9@Dvg;0P&t-^Xi zXjg8(8_gbsK2C}5Ybwl2rNjt(Vln{i|E{nCLL*DigGDPJiuqJ>1o6m}JA0Je6p$FT z2Pn=)IN&rILy0>0EZKPIqbb+*739G^Mb%&s#%$@9*;}i+ceWp3T9PtUK<7;OY&zpdowj3A(nen=hlqHsAxFt(mO@Ka z=?+Bc6FRoXjE<{1AU90g?z{&dT3bA2;QEFY)1cvr=5*MwLt*HPu`}}LwP-N1Ej2%x zE}`!GhS##@Gg`)nyVK8FJ?C4;hYx?H)cS3$SSqG-*;h7f=;(gl+yvI}u2f{q)~Qq8 z?0EL!sbbGeRg{ZUxx_1XHqbI@{pG-IY_x`Lnl6Fvd*!t|fqTs>>(vT@W$`|ZjbYmP z=(`OgHa;@3|KMQ%_QDG4h30sFdVpdR*Cx(?c;QFqSVTKv)wwkwcnQh`5jKT}P=OsB zV10NY=ppZrB_S3o(?Qah+Kp9wd5as2Q-{j}-iv@_;@f+QV}S0(ggcC7`_xde4>C`> z$;`%VUV?Qy#YhH8ltb)&x@K)9^i+a*6l3^7O1&?KFOgdll)OZOE~fQ4Vwx-^QwHlS zogRe{Vh(Gc3UJdVdWz|KLUzZ(H}tV}s(hDMvOzmAfNLS+gj57~2hanj1q|?JJFf&D zfA9nTMwWSJJn*;du90-Z>FDW2%QBW9lT??qS(j;cP3pO))(va&kOvg;GIjS6c& zkG*&>?&v;kugxJ-Wa4ZHaET(n<;noFEHC$8u+9L0G>)o ziG&4GDDe(#_=T@TNPJIJyecUPb#0_{xC#m9N3ap0H6lHqrNnz{@q0iDo(p6PY&#&3 zbCRgHSxkuO(Ni|Xtc7Yf<6{a>fa>xX;WCQrI;B^59p(aG?m-6?WtChL&05dfL?mz$ z|L~h(jXc7gdG^Xv0Ux%AZ$0tM-Y48|@ zbtvw3YmP6DKK|Upf08p4TaBb1J#5%}t-%YCRm_DH!;nIkD+l-y_pv=Mr2UndD3JSU zSGvhV!TqQbWHO!^B$*@fsUlKN;TJ%YOlev3>O!-V(vVAX5!=g_0R7QA^aqnC4o5*(Ze0)h+Xr_R~o7ToMgZ4fUsNTX!^o1WA6Bp%lQk0TlC@#XiYWiP3 zkUQS5oIwG*OxuZB~?N^st_LLZcWkFu}d+mpz zhXFMBA8+ose>WNL*yiV^k!4fJCBnL9B%9bSEN@n!T7eeYKaWSuBC2|;5PL%p7%CxACVlP$|m@rl3 zJ*@O@8-P@uIy;Jw8Qq~HnQj;@oI!iK3UR>%R*^cuFRyN8mudGKoz1(me%zT{ z`Ns{kJRzAA8^K?D_}L6(;BG}J@oI!IhXZqXdRfZIOB$2|RbC`I8>L5w}QUxICm zQC%O$W0seD`=L)pUH2Y5Lw%EPPcLCbtE3ur6~6b%({Bz(jf1_D@%;c?adtlUCX61s z*t&juegPNyDi6|AAgdCLfm+|1o>8=ifd(1V|_BGoHix8DHP*FdJ&kE7v&J`U)Bx>GrgG87p4U zkm5?P@=Y|s1U zZ_;I9J$}0mtzs3uO5g4BQO?%x=gI=1zCvG)^q`Ot*sMHelhveWv3Xh*3{kQNq1Ifa zr6;Wc8+j98Ws@-oN86WPbB5R8F5xF^vUvH;35n)s(=$D-%Q9}Ii$V%3#VqvHp>tt@ zsaM^F3usd72HK!>Qhd5yku}vTtdKF=N!K-h+gG2VL#Q*Apz(CX{)3&)=MUnCuUCgM zsnwwAPF`T}BG0NGI=+*MM#nUbFaG#6upqp`0Li zb(NoJjSq$6$^Xs;P@S^?|kpSs}<5KT86$;B)DL?8KJ;%=z_^;jzn){X18c zlvH7B0shZI3-`yS78OZIq)8^2?hN1=?wRq?z+4e)-iu$L2B`S)7D~+5d2P0;+Qz z={|N5Hw}uQNJWtW=KO>5F&aE)-`c}wlDdHhv@{5Pgcn1Hj>Kt5v@#M|KHc3~><_^8 zBa5=@hkC8WSE|`Cay{P*+{7t?;FAZvT%O_4cF5=kt4IULEkYS)dFtr2SZ*xBTGu>2){!Qg8|`IxqK z3?I>xb$92Thy1Qmzcv}o|LOM8)#+P{{VcLq;-V88ni->rT2SD6FWEDhg&ZhOx?4Li zr005qFCDb&J;JYFZvMEite(r)KDsksF0reU%;(pO%?2JQmhD|ygt;4PvjhSU@kHX2 zFt@7(CsR;fMW)VN0z!Y{q#A&rS6PeFddJM50zWVxeO!>XdZQ*62wY{<6B|1R4J%yX z%b)Q4x0?H$LyO`(!B2X@A5WVFa;2W5Ni^)xqPF|?gnZHI$o)Xx$dW`K>cxvyxS=}N zau_M!{dB*(&HD| zGg(ZFP{Q4!r?DDb3wpMIz0(ySj@;{L6WU=B2x@YXpIA zjs2Q9Ro2aUo3UyxhgP{{MXcb81kpJu*lX+lvyP+Q_R^>}b-D3FV6(abLpR)HXIiIC zZL3FoA0VhjYF6!Z|L@L>@=|RBt-NDC#y}4agI^NRbv=@WX><8HZHu^d$Q<*d!*qM?LEu60)RAYf z9w8}`UL!{u%rC(gb+NM}^zT2BZUuM;E459o3~Hypw5F=Zs8jb5D{Are%Q2d+S2bz%J@K;jD~3)A%8Wg zgp88Sy5C|cS2&LA6k!5ODf6IyC(3}F#Q_$B-pKk{RLWJ|11!deg_~n6x@}QwEhWW@It_cL{@4x4~1^9Zr~CR&*oC z-GqgPim@=Dxoh;^Ah^ocnE~H_QIeyF{?L#Pq7qf2Vl_a9qf%=3>mDe8PR6GjhqmKK z(|EIFUgVIxBIEShffSeVfi1X%ImXEY?d-Epj8<=w;G;f0h7QChEP~PXPn+z*o!GvJ z15C6=ad#erP2-U#W$VXYeR5rDsXv1aj~N*_G)uie(QU@)y>Otcw{VVLp?vb|DTwgP z93*)M^LWLfFJpfcKK-bn?}WsWfNu*#;XBQiq~+^%#v?M8T9dVs8pdar5*Dxu7gL0G zv94exUj7qACMPP;XN`E@1=t}^co>W;#e^{fEgXxsBxg1S^nN$MzE5(#d|-b~lP#!v8!_3DKlVNKG@Mk>l|=a($`s z`vI>Sp8Zy46;3m^DcC zC{H#%hS4qROqbqhR~_T0!C8>8B-W-1ioiGEQFiMT<;V*cSK;j>A_6n41rH{JoH%N} zX0InC8vo~_EM&VLCGXWbHV5kf+t*DcyYzNcIdNJ<_)L^l$4mq0nE_>eOimHh2cn3A zT-wR1Qw_M%Y8uTWV%Dg7SklkTKEjNm%NYZ9$EzLBA0e9jIvB)Ue9CW!! z;*xru76}K&W|AbhUPT#dTix2~u?Rx8Z8t-G-fEiVvkA>r+NGKbv|W3Vq$`GcZc+zmpe#RE&$5*X)Ouo#psd_ohS-D^6wmpU?9)*!=8NXh}qrg zz~{<&{u^Rl4qo7Atz-0Fm5>s{vnziz>fR9*6QW4<^Pae}Zm+yN6 z3h*7|lldq%r);%`+E3qCukjDmeb}+IN;d#OsOun!b)zoG9PLPURmuuEVru0+;nAe+ zPM4x>fXiSbaS9&R+vxh|n=~%3f+MF%Q`~XrN;SxtIHrIH^H|aUbhy^UbYC;g%W$?M zKAUh}-8ZNV<2Fug5WNIc3|B3>rd?5b73fq2>pnXeRHciqc29rilRXu1nGx^voe2o+ zSl5-$MC;wO${C&eE^Z{MCXgg_&-MjQg)y3&1aQS9p4hLPgEturIVOeh7{n4WT${cr ziq7zYAB#b?3KP*<73LwRj=~BX*#<>gXY72L;N(h86QX|$#WIc4om_wC&j9l_5{sb} zJg&7B?*6s22esAHYQ#uIVGx91_`{S-G>XBY63<0Vxl-6xlv@+Hic8rcPM-C%Lh;2t zWn;|FD(Q1L!_dF;GU%%RGYffan9T82P1W>MPAI4u`9Xc-8KZHK>L0cAcNQ zY(;a~_ya^Fj9w&+fuXR^q-U&nA#8dE7{6Yh_+!Skm#Hdk7fmeBX)l1T%hoyO)}w?B z+22+rYk{*TFRACe`8xO{3q&<9zY2s|V7c+~OU)4X3rixUn)DFy$s2{H9unYM&QLQ$ zjR%D=RTF+6{%r~2mLOU;lik!a_`BN06b|nj3?qoa)J+pU>E|QH`p+LdOh}uqT{jR~ zz7#RZq#ewTG{c0P*u+Kjh*1?rhM{TWev2#hE$iLAvF`7{3#jFt;5j|V_7kU`_e?`_ zB>&%c+^6m9w=1+GD9W6KuKk+^^#+A$DX3DM9_dR&`E$+*Oe%O1=p>%@_0Dune>J%~ zj|9Ytl9^kgZf&KfP{rv0e`Uqe)_?t?7l~u+-L~3(<**fBzFm)l-xE;2yRhk^tX%;% z^~}xX)Op@n@#jDX5rK8iwH=dE4e7Z*S}NBFX9=6)(|A;)Ns0Eo)n|#Mrr4@9G^RGI zudOCC+?N9bAx_JzXSlb}DdCAO2K+*0BygQtT8rNT3N?W7@H`#EflD%Ie{!L&s=*qg zqsM&0GZHyh*9!Ds;|DQ9e;&K}fs<#kfnva8iy6NVOn6el1~}_Gyq0c>z1ZU2l^({m z^qt-}oIHzXJ>VwGA^hDS@LuOEnG^>mJi4?UuayybbPTj42Wq~KIV0+{i$J1g6<=yZ zBQ>oTpFLP=8_5M58K=s0P*tW3!bh#awQ!sArX~ijD@Aa--k>5)5vP)V=u9;8{-3)^ z>6DBgX5sXh0$Yre;hiMrpVHH(OQhE;9aQNyk#KM9zgdJ-a>4h^5934NoZ(i3A}B7W zT8qvxQLtf^Bw5wr_K7c+f>!D(f=RkudpW}pjp&Te1MZ&E<$jG&_hGVYIo0^o%9QDH z8qe`t(W6u@*Kh;2ALq-dS0ZRO;i z%?Y7~uwdQVm%Us8TZsew6L$*%F6kVo25@F8#n4aqoU(JTVSHuKg}&Kk@-}EgM8r<+ zm!yZl11`-g_DG_ID#+P4fUWhu0!~tRP~{%8v*)z!pfa?6vqBSJ&TLJswlySl7MYeH zR2+25GVNJV`ims<8E!xrTQNpskVUhP=Y$A~A}XMhV80-g!CfRkBd;J!2s-VcE9AEl zLRJi)6Lwjuw!yEeh&WUi2eUtIG}RfsmM<5@DTswtp?2$E4~N7Oe_zhO2BL!d0(Ezk z+CL^VRsqxuef}ua{WxcE=k~zR_mJ@j7?)wa0`EEpR0>Z_tEm?r5-`m$XS*peP4I1z z2{ye9X&&q!2m}q=LO>du&j_~~Q{8cZ$LBrI+E^v$G#6Jk4q>H$;ADb{0oZ#iM>T&6 zFxt)|ixB4?eqB2HRBT$_;Ej_I?gJf>QD;iUr$7V&$m zn1O5=(N@YtIFxWB_SXudIwn$)bvcA6@7qOFk>*L+A#fY>Q#n%LeL;j+NeD6aGk|rq z1NGoE|3x{6%goz+7&)&#)iJWc#0d;*9Sra*o$C_B^O?2`n1dBqG&?{#HDH`QrADMypo+bc?(qLY*Dj}b74lLT$X!&oaI zgn^VykcqH+LD4Q4S9Z7j2TU+a?iSrb(@DPEl8$Iv5oKRuWJ{P30vp^m;hj@cV+jt6 z8f>@8Xelq3ZHp{!e6?zsCOQiJWE?r(bY^3kKn_$(Fk*_tWfr_e&emntJ7Sg)L>966 z!im~@F2POdm6&WU9?ag%rR)mXF)n5FMr5K^^cz>xbsCn(ek{a7$Rai#!B|ZE=;uQh zpQa7fwV*fr>nAsz419dy@9H+YkKpw^X73dH=v^T~IlsX)jS(uAm8V*+(_ry9lpPbB zw|K)k-R2;1y+J@(v^F3Okb9-lk~!IZe66}ro>lZVXFK0-aUaPwH=9CEn(v}D43|Vp zDSIAQ(vrQh<&?)_bLhlKDOcGW(5*vZ$_{Q_(&-TKM!B21d!13-sQm_CRh}dv4nDqj zu>kkSBds8=xe0|990D1avno;f7?TPJdDx*d5e;aTFUf`{8ZCUW{1J1=FmuMHlNkiP zAB=OrPZ^?0epr?vZCL*>PJIH{JjfH2)Qsxo?t27x_C@40g?zdNPzZcRX?qXE*csP) ze)h01>HJBy#-_HEa|pTa%AGOX_m9=XZEi1h(UoI}THQ!28%g+jmS=ZZc zA|!finLl0-6};q%n>j6R>g>043*QZJ@ws#p&;fRlC3zRN`=?5x5EVad^o_Ym-__lVGDhZNs9x| zh5T;4h@eAQ{IJPp?@P$E$6NR0WNJF&P7agq<4yvqpCn*jIzhU&Oey5H+?EBj%5(dOTNRaV(_qnN|(d7hbQu;}>9`pxP_G+lIDN z9i0!68F_OJzCa^$$g1xQAs{AtNDe z-c!W^!!f`XvY!B-tqB-YmZzfn;O0z3v zpq@shIp%XdnlE-i>*}5Ro2a9C+c%3>nhLveuwcA8`1l7kf6@(u#>5M7cltj`R|y?t z`FW(UD<>^!*lZ~0!VsvCW7$aQj^>h(gZZ&)fM>ZJ?!dvLdD$VErh&}X)~aR$SR2Er z9ImUuoyQf~?cjVm4L+ytK`D$R$+|2jadr5xfs9M+JZ%A~-L^?4Dgvv&M8@=7F0jHa zrI)OCB)$YP8$K7~KC!FP0B4(`9vD}bTK6yHuZrcnYHP9VWW)R@@l##g%!;)T4%VBg zQlZ!A7P(TpC;B7@9d75*|eMkxrWE_isM`bA{NZ5k8Xy{66aa?H|YY z##^m+O+qVp17t}aIRICvjEY7eU{JEBOf|K+_U9Ea945`T5USp(JgO2O4Uhd!RU3%y z5o&8v)@$&1L!*`-Cht_!mPk5>lHZyTLdkoJCu6yY1j&oXWZAr_M?+(O-2UFbD}N>I z6>7K%rPaZGOQ%NZ<*cZqL0W$m=KDNwX+YoeEHwDF;=1oRzw|D*M`NRaVSD$jwa>4{ zaeFwTxQAx}pHKUo3z*S_HGmz&I<$cE-<>;hb3k8pf2DLtTF_8lBDYF9*FwAoDW-&v zu9BYiARVH+PEFsaMRk05RM{>j+0+Oar#K#>;t34TzU!JN9W}ieW^EO|_ilaIZqIk# zCVQNH*mC)|$s2Y1lMUkD(8^euDh`zGB7B@qFcZ@3dOXx3)W%+l`+uM0p-0#gc%pSIeIxYTTGCW|x8Yt!6BC`yn_kD~a^WYjNoa~Hk#TwLB_ zqWKUF@S#}aRILDL$?~5`Z19M@KuD<_vMLC=6i=6oKd7B0 zSI$QGv|&ZQ>XNeJ<`;WyT19QY7IMJdy}tH4|FT>9_c!NHU!`zRZ_xwBHu4T=4siO& zHZWMU`Lfz39CB=jERyga?6ix^;Gj3aJS2Rzyw|=)a$wkpLmk4wOC5-!C|)WORe%Je z*M&4k#2vDEGH|j>z~a)Ew4CTEULd_16?_BFYw4LX}x)3aBH^Lg1OHN_2-4PTE*igGjD@|5j8&@PWe9Uj4D^U#fDncQ_!6c0^;U; zg5M11zEIgpR*AzR$nr`0=kY&JZkqWInyx%lt&*`uh~Ju&p6EyfRR@9~qcyZ&C zM!R2Rh(u9hY)w(7s9;ziM((XAk`?RQAO;y1U}z9i3imfu?nsP%T&cygBC(c+d!`0j zGJ}vz{**Ds%5q5>kCIcL8HA&9Wh6!8aAe}6Fo7}_CyP^H?0<(m31uWMOd|O#lQ;+A zjC7bG!aqXr1HU=ydfkUb|`+8w}z~%Xt0lndCUwr{l@g=lWo1h=fnQ-T-o4H!s0aK0Kg>oZAET zoQo|l`@cp9FTi%md{e9VhpFkijH3Zo@UhJBGr{C#=lI*F$#}niIt|6L#{!lEUTl;u z%~dJ?@A6cVFt|4*J7|X6Nb3PN&bmb66q!vgt8A4+;0s$zl=~|(!ut$!3gZhm(+2FR z$X%N*6D6|^0TeH#cZQ89msvpqTp$1xqz zB!VMv2=3%axZdfA7}DsRB&aKJbI^|}N<$YLXtS9rcOZ6Nwo3@zhhdwpC`d@ku8x## z9WUm|{6K$Xw_rx$E_SQuhQH5RK$E&`SqLoCawu$}z0UN&ANlDKe8RUU#XA;6fe4SFh zW0vhQanO*UUe3}`teBTWrWS)cGVs4rYF>(KQxMfYI>xBAK^m;>%@tVp(qK$GBLrJp zdp^G(`|z&3gAiXLb`hjqhGDp|+KLG`1=P3$z|}i-@BN8Yhz2)hytsQI)g43vODQ;E zxRl2ivak52^Hy1YDzTzZF5&W z(87Q@FtbYvj-uo*zKwMohTC7jskFEeoN1s{M_L1J@YT|`qXwxneT_NPmaV#XYu2d;8PL{iSo4_|X9z8&@ zE>#bS)i0P#zchnrFmp+<=GCL(3%?i} z5iC@{epG}k4+!$*m_c%t6(F$-{=##4^)H{}Up{cb)oPhyS@MVeIx6Jjm#q1kQ)q4N#-#tVphn_hkTuE!GWs0x}FNyU1I7 zp;1#l|tq3_{;FmXbb$|mhOGFv@__;MeaqHqQ*Z=%^ zi}vNZf?>oDb;%+qw`Cilf@vsF$+P5i#vVUUVR9R2JmD+k?rH`EwC<@H8fpOo2Chr6 zEtUXQ<|{}m%eL|yRkHl-4jfi3Wr4T%@#tMg`Ae3*Ah$SI?oENn3vL`F_j`F zlz6Fr`Zz3k@q+`0{vPxh^EQ>w;!Egfe)f$1HX!}@z!XVs>s3x})4b#mozU(RwuAIY zc#aIHJ5~2)pxonLhLPfWE&%J;2<>PzudE=}uCSnOow$XMqq-4+51fJ}k|M(mbVc8Y zRhO;-c;SwO7tw*Dd^Ged;b2_6;>3CDG4pw`$%0ig@+lI&o0h=i<&rcF zU347-8o`4C*}bLmiDIZ@^Ho{FKsCq9m$Abqw=AF0Gw@4Zr!x#+r*#T??m^$cpf@1p z6s4D$(CEtZh{(sk#o6BnTITtZkr%1UEQtzIUXSujZm|%D?JOiNi{j}`D=`T<6Y3ud zqM@ZDhp*k@_&P5EkCLff`39KtKz!#w>H16T(b(ffuYbGa;G+9H5yq#?$vGUUH)#cf z)%w}hvIsb`kzwNbYsf_1ulU+WBH7q53ru+H1bis-B++JBmJK7Lps)7Ji@?4k%7FT~ zlMG}?D&O`ZAN&8(Dp!N=G5Boca`C66#C=>$!xjmaNh>0pX)D^GK++FHO`(c(7hp$?f!a&AdhRkS(MU5JY^)`h5 zp;gDbKa98X0`jQpAZqb9#6r-9ZmC^MEL5(2_F!h-Bq$jrh)^t4IVyE*hxXzGt`OaY z9rLanGekixJ3P-`~% znspbIHzcaPfU$IHs`MoVh=qD3aC-z1@!Uya2GLvQpZ?e!zqLtqY|)}%8CM){zK5Laxx z_4XDvQ4-%+l+(ZZf%V(iY=vT0G9fS3N&_-*`j@ZSe=AR<>Hmd2b@L3l-;70x+Z2(_1i0uFD%oOZR@XO5_>#; z9VksbBKA6^wQn6R=cT-As5z}g$QRw&1YVjke$n6Y^|eK$6v9=AH0*&YBXZXo{bJ*j zZzpejslr#yH}JsGs!}ovhT-ztMy4RF=>*gZRj6lc^GFkiq@@Y%+quV<1w`o7XoY4W zGuXmz%Co_#T&ceYZXM|Fr;*QYBdMfJDkcHvu(tad9PB*UI>2NQoo_qOEM-Gn=VmB) zN+E&1K(C+7d*L`k#A9JFsIZNs4cZQr``?4x>IN%mR5At{Pc`=*z`^-lrjM}qRMOuW z6=QU1CiyMZ#&#VZA5F({P|$F#%H1vaGfnjaSB@}TA zio{lfp2H;_NAC}4N0JsLX>Jc^^$DNWYS;i75oBUbFNq(6LzU%vaz{s!d3Uy>uR5|D zy0Dm;^!tsRG~vyequLJ=%UY9@;4h%~SeMa%zaprGRyOtOY${d%+EcB!hVB0guXWv8 zyxX$UuT;V#XvtfK<^3Z7x3OQiP2I%OxMVysv#tkxm>HYZ)kNZE1dq&sYfx8-YK%b~ z`4VTI);&?ns;o_ii%@E@S)0_MDVC(ToyyPTld!t~_^tk|in?0I zrjEaEYlIQAVL>ov*m(t zpx7_=*2_$z5Xm_OB1O5ff(dBWhDHD5_G46np<4I7ZX$|;hyf*|)JA$k?&vZh20xX# z(Bny24uGe{4!#GCR?l&X2H1g+wmiU}=>a3H)|4%83u->c#5w&2{ zuu72$Y&`qWN$}|ZehL+ISwtkuOb>u$j5DMFj*}ASHA}=TYZkby!3ZXCWz8+ax9BP*;~;SQUi}aS5})9x`m|8QB@@84qIUK(%vN1o=GJZlM8ceQ zJ-voSKUB4Kg)>BH0w(iGxXu}piR*$bQTOW5a;|KKEDhO60xw(v^MHN|crS$jW3EAs zaC0AnO{daFWzs@bRhaJ~tlm|OaH5uaf$%QV`S*x>qU7C|0WX|o?QV0?1onB2#sCt- z@TgIeKlXx;2=j{P=T zx#H@|UK$*Y7x z3hR^;bR`Yy^|lnpIegKQ6Y2Zxp^TO0ntIQo;&ew@_YGX^ZkNyZ>O|O zE5q}X?5g=-?ir2for~-w%@h2Nzq!>{z582MZNP%%hxf^CSKyxbu*nsX@%pE4h#@AgV5P!RS>yMf{kw4`i%?zn)p9N4c)RkvnSxVcERBFjAmmoW}w}- z>&)Cmv5Q14I&b{FZXo-Ds9Dn}L?wn`4(Arye2^MYyqh?-)GKNQ*+}sAtvaQpO&h;* zymep5S&j-x&K5O{oxJ4@fG@Tbjq`CmY7kv>>Moz93xf^Y*+}4UaeX+b$HwuHV}@*# zN#HU)3h$UqX__G?j?Jm7Wm#$C6z}D@c3n2Ll3@#-HC4N`D}#K&rB$xJ$?|=-Ig;YI z^0#Qn*FGZm;tQVm4c%hyigZkVtbG37E@jD3`V{wr3ixh7s#HJ=W16$g%VeY#FBTcI z`MFrNTrCb<^W___kkK~6wP3WcZ!CRLLck_If&8Py43~?Hglt}{zWl}xMK(lOK&sTG zE_8BtbAF_ayS3I2#`=i31<}@duEl#ME`?Uia>MLa1S((V#*UpyO7>K5K{0uYWV^CRU2<>@*b>;;IazuE#XGN^eeXQ{wNvk8m6=CO!u=6RLK(Xb z=utGa?8C@rjb~l}+VVVDoT$<{3LN??(P=B?DM5ycnYKk1#}e8Z*L#zO7j;3-vu6^l zIpXDfw;#~a6LsNX$3KT!lEXtviXs&YUsN<(XLyfH;(w3VZFrppV6(iu8+X?+{mqW+ zGt3xG2NG5st(dX?>3(c1GcJvUOu}KGC5}zN`NcAC6ymR!WRH`R4`{^c8qqVlJ(a=) zHA~u5Rz5nc$sf123{S}v*=$;Yh1g>X#nx-vUh*<^^9wkVJLJ+GgLJmkNQkr1Pz0?w| zFV}?zKBfXcC(_$fS%LXi%YkSv8xz#!akAit;#Js*2g+h!YMGZ-W%4qD^NAn?z$umx z;TyY}W*YfuH3t;)u?(H%Oe0~FI#*PPRwJv^&1Td&J$#?!WN{)NcCGt=GF`dNA ztRLH$*?F>cGHt6PyzxK&vCmnigFnb? z;*uh=$(_~P-UZ4DGRwAl`e}iju5vOYfdZpSHr|eE>iIriJ$t^Ca!;GgTJC)V&=8G{ zEhke3+AVz44KQ+I+TY z9~uq4xuD+Eq0Ql0N}_DHS8rV!A+0G37B(a<@~#0Fm&wG+ITG`ev|7qaGxb?%9KSlU zvXa-0ExA})_k>F_Ut7|$?KSLu6IaPr`@w}f9?WglOD3FpF5G1Kukdj9LD2^%@8B-n z6nkGw@qKaR{AqyXEK&~I_B$%zrNd{GHPRp)>9OL`&Lvo4X51-eVQJi~I#4_*P-BxH zTJ``+SKW++k&fVFVsq`-#`jExHujfKG}l15|C+7+5&Z`TWo+}*gRcP-8(zG zJc>oS6xGxKt~|u~jIq1kZ_ozD@6vI~pgn%B==wp`@bu}%#%Q=?u(Q}jKe6GoEm$Gq zJi=po!=Q<3M+WlCEW5>{avRn>@wY!s>T2}PHKFC2^HXz-()}l+7bC3)kFRZXeHVO& z8Sv0Ak@YEH$zfu^(3%iLJIm~-HCccMZ7QjZ01Y45`%VXDa72hg~i{A@x1kqheRS(-Dn!#d$ty9^b3!)`@ zOswkMIZU4*_pQD!9KD#E-hdIo#3WxT%J{S=qGrXC zDtuPa4?vNCj##NMkho>L!w-8q`PM6WN??{Pp1ui01(LB1mLq_%YVP{Rc(*VH%}TG- zIE1B7T$R|mkB(vs+E~dob~l!y2A1v!b2?&PUfnj4$_PwTY|YId=E&ASr3&2y>Y!~= z%aW8I0~Llst7=xulB~jiTtc`f>z1I->fJkZhBib<$T4%2mq`h*)(lo|aU0wrKvUdg4_)4WF~{m8RL`%9?)%9&4_JVq~5*PL^z3}Oz(*hW9-0#qhv7o&_5rb*vQV|@8)8R% zs@aueh@0b|d&p>LRJp?Z;I=n)qsYQ8!x+kZlfDq90E=HobzZuUw# zMrWL6H)#`C7<&`s?-z1JK>vxguXCh(lX8lH+v0tFW_iXZ3&4O@<==mY8!bXDSR21B zAu%Z!nnoi>ywgbY@2uZ=3=(2?#5orPKR%` z@{68PH3Gc$I@VnMgxRga0~w8@FBO2@2Fj&~*VKc+5>}#)CPm#(kf&%T^!6MN@OvvH zU(u$NsZza9NrJ$t4sp_TT5zsLqb>L383V^9pKSZQ^|&@gkEoNbUOo<|;o~>9#sp%w zXXx%_=!;G~-5GJ!;IZxQhU;R3SiLPKkz>B%-PjZBFSE{eCZ_@- zQ89iEF|i;kX6{bJO) zg`l-<0K8*}t%!$Af{LR@j|ADIV*Bks{6T#nDy*@_+1Ar<|9t-G(!MM1@2zNs^$=W} zDlU+1`A9cj-im+}Rg#c?h52L}lyLpp0Aylem3Jk*LQAH_628Ty|`x5{##(&19O+D(iRG5<^rP ztt;+lY$cd=%;^hB4mSzmFBX-ki!?=HC>7TQQ{0QfR7FSRMvuv*A!FoPzMv>WWTk?3 zBRe66!7ms$l@;S^~0hbiYgZbM@X5Dlga zVqK$M#^P|kFbm0hKpZEt91Fx}MgKzEEkl8>9(IYo$}i%zDkS%=VZ{k+O5Ex zP`UoI7o}RSp{dH7_O0RGoZ*+h0!dZO(@&GgA;;GDyYx{lnY|0&@ZM+-9+Vt-Oq@9R zaPo3l+LP{$52ATcfJ04dSM)*oit0SDUKxi7y2A+@4N91EH{cFqs-0uR)r$C`FY(@e zm~w<(6ZU*Z?@izKQISF{m@8)Nw`-zZRYlDl)55BD?tFA!8w3~Qxu{|F-DVqBbPJFu|!zpA@B?? zS9k2R>$c#bS*a$D6Wm3A@j#GA$K%b&_(iC+N;3FQ1p#C`JjFwEJygSDKHB=(h6lZG^NN27+4 z&6IFqdYkilHhTJwOSJ~ebTMtO>jEsSs#h{6wUY_#bIVw9FueO<=LEK%XqOzzqmW89 zWE{WvQ6^^al4gXaUd}0;|`Mpvj*G-6d zw88d5aHeT8Sj}^fBODTDjqmpiT8Dum0*zgtgQdZGQ9uoj9ond5&{@0wk1MJVCZtza`V@fQupZtpn)f@X5C# z7GzTD04@a|f3)i~P=*$?N`$U{b>nNq4d(cHl=exN-b71z+Cm#q>^F4}<9@Fll*=0+ z%|Cc!n`FN`0#�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≺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� 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 aydnD{_>JI}w0FBzJdeeE>fs^(2><}qKZ?2l literal 0 HcmV?d00001 diff --git a/iron-svelte-client/static/material-icons/material-icons.woff2 b/iron-svelte-client/static/material-icons/material-icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5492a6e75937db19f9ba860cd2575744887fa26b GIT binary patch literal 128352 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

    l*K8_>P7#5$l zs-dj-g2G&s^ZuYuV2_F!bnG}_@a9I_84X4UM3B2y6QU^;G{lA(p8(IkEjl(>H&SvP zs)#s}h-QNnX0gZ|E0~P4e5HXDmGi2Ed^xk$qQd50!N_>fQH*1WSo#TAh#LL;KuH4O zfc{{CC}Tb2GSD1NR*Pw+i$1WI|MlD$k%=0PXyLjj_bHv-5FOB$kM;nh#Kb^At{bBdD_A9;>zyVZ0j*6qqQ{ z#oq#8uTBmWgL<%JMl%6th#XJlyoYmwm0*3Rh#sQIsRCBgvxgd{k{T+`KYJp&Azn>Y ztXMUWO~$H6U31|x(OFg18*`J`YN%x1bLHp_5hBWV>zq5`AfB`s4QU{+IZ@%j=^JsUF3vyR5C3tr6j6I z!mmV(S3X!x&%$hhMQMf-jxYmZ|c}3w4g&Py3;{owx(Vo2_Be3d+ zoplgDknj-9akvt{cC3r4nOI)IHyg*sf_%#CDh6Wq{B$CX2x82MVS#OtK03!Ps`NBb z-~cxXn+kBHG*Fsz4U7Y0Cj+-X;qyMjf*zD#K~cCsHl@vBl)#r)Z`@8&pC7- zcO9K7SXa>bf)G#M(*#U;SmUFqqoE{WBAK$_g3%=~LlwJZWQQUg@2`V#%EU0!F%%k>$Vm~*$S@4$Rj9j!bdvt#7%ezJ?;zpw~F609CgDgj=#3%4B2r1lG&_VhW_xo2Xx^1(){iyRB<96sF?LJXXi#}o}4{#_Nz zg4W1j6RcwyFJ)DG%*}JFs;^|{nvCMe*e<^ zURlDl=Hl>piOnqgg-EAH124was}h8hFFjFkyhP0H+bsco-V_bcOcZ{R4npRJ3WTtT z8WWP?ywym{vWkRhw5sIhqrGNW6|LYTq!6klGDQm}t76qef37M-CLa(JF~N~2a1ZIu zk_%|Q;YwA&n)LOxxKb=zVqK&;iw^CmZ9qm;&+$B>x4PcxXkwwD<3yZt`wgC-lUSwU zAe>UwG%Zrylp_kfx})O!o%@E^DROWuG;oo%urU?u2EUxTbl>zyX`gF~lOCldGs)JpBQkCn+kQ)57Ot=SjO#xbLg7q%KlF z=aj;^2lc>~_mmPpVtasYBN~{0eBVioT}I^r%rjrW{Oo&->a%2Y&i3CXpHqgUYUpy; zIpzU!n(t@WY}8T^MSLY=vz{S%hwdu%L#vZ+FlS!480fzK0E%&M4hG{+8`>A23~n*s zseZJ!7 zXwW)^5r9G?U0KF~Q52pH?|AUbGsPr&F@uo>vMzMfEILbQQx@)z`S$ zg=H8S-eyIs z%?g`pCCS=rFBL4BI4ARtYATvh{{M{T`dW7m3wFRg_O>+|^Br>SmG1w+ZHVZ)_XDBk`iwd3jU(Frj{Z%rmrPSAJ#XYBK zMZ^_li}eU$01dkiyWNe`gMU!P0bw1n(_j^;XXsHYsI}*WGL?G!Fd-0Xa5QwG>R603_U>{VQu(v}17o|^DVXetYO+!I*n+q6rx1B+k1 z_NsDUFPgOlCGmti%v$EnTJMg=sV8m4He%JP+VH3Y<&uaQ6x~*{b3_8o5hJZun`Xk$ zYcmiA%e7`ki`8`NWl=9R)bCJAsTBWH30G?(3zsjeTfDjceEnYS;@pKAb1~*MA<&rg>!el;Kia@HnN?$j8#L8trHVeUGBN!} zH3wLG+0CFL{H9RRNE@Ou5@wJj>87fc(BvKjKDw6PwQ}jXJ^fnSCw(KA>#EaAF%7^qS#-^) zOG7={deagK+7woLOJhV8tQtcQKfUeZPgGxaQkpGlN^uv$+%&d#;hX=|qlLL-Od>Ig z{7Ug+IYU~)7xXBZYrw=DDAyw6h6!S56MEM>NVN_6856=9=K1Zilxf}kZeEsqzf90I z#JDy21r1Yxs&s6r!)`(7jnHnTyqm9u@?LJl+2bXibw0?Xf9d4RQ^fy#`cz;#*Lr(Q z5`o&HByC`HMB3mcDaRW!Sdidd(1?ebK2~;xctLh71g)pj2w! z6sGyWcao(Q3`aYbfLcl4GEVBaU!Er@S?J2dlnn@bWaW zNR(||>0@4E&P-Ej83WV`HJiI$Tg=e?UR1AiGiqVF8ue)c2Z^J%_(3(2Iy>jGN83%= zRqOMseSUa&<^%ue49z2*Dqa@m|@69nW06SdzBzq1Ns2N zUWQVr%6+24({P0qW11t5zm-MTdQUhG#$1mcrg_nnp<<;aw&UT8a)p+}hLm39UezSF5r{i(6c3S_hiOHVji0eQ0IS(jma6z87tQqp| zKlJzg+3ZS@qx0+L$klgFikIwLG5hL&EScxjRlUCW)RN&h|Ddy2-vsOZG&%}hXZKzX zFUe&Zb7q_q#vK6(6eoX+OJ9U4&|C*96#k#jI~W52vx4}fnrsqM!WlDa9|{~|q^lUM z@jl?k5@c?A;ee$9e2J_`Ue08>bMK$L?YF{CAox*m7#{fg@lw!DL^_3vZkul|3r2?8 zv6n!}HH_*KP?L@GemCeKN-dyiV{W?;It%U&B~|ve52~hziZpZX!h zhnYc2sZg%&8JUAuAIs_pXgXRU3@c;ghb<$Yt~|7V=Pz|01Z>i-L2eFEiar0RU3fn8 z2u95%h_1f9K(kfZpSF@D<%=pW?I)MF~b4Ty1*uLGK7-u}S=Et7iege{qA2WPWm-O^Zt+k9Y9+7ri&silj$ zz6~`uYMzyCm94qN2zyhq5{|Ow4v5la@T#3Nd%pc0lzM)jufY<%P|bs_sECP~k5|oI zT~)$&@zR~%W+#pB@(e`zy~pE>DCex8MKlRWQgmMy9J+tAm5RGPkQSCYp*|p?5yV1E z*q}hgD&PWg?a&OvjbIbE(J#xfM_8QkfzZ%{lScY=388d(daw>td z+E&Zz?9j!VIcF7T)T!_C0?Yw{utXIMgoMvC-9$`P6Cs~q&U%2LL!hB)hQSrDRvq)v zhlRqi(5jF@1kZESjq1C)C(IYs^-7r)gd*r3gxC-drKmD6_xvNos0y7|!1?!TV*J?a zMn!2lT+Hp;dQSUh&MgvT>5F1YO-;d{6MU54W5IUDL5eKsCKB`Y1sc5raglH=SP`up(*aD&y zN!@P5w3>J}!?urkp6mYTTVRk*u%P2Dj9tj(vNtxPa6NqV=pbwOnjvS977td{|1+@z zQIQBoYV@R=4#HA0wK{8o=0(PARz?ZbIyNy55Zm7KBySuLCoxjHalLlUWo1ic@GT^* zu$j)s1te1p)dZ4OD^mV1XTI!h%06Dhf_980*T{atL zhD!cejaWZ@|CjJ^x%c(5*jM(8)6S1i_=6O5bkZN!ygxMb;;)EhFvH4l1~{b@a8MtV zk&mJ(DX~IXDX@cuL4JL*2JS&Vy1t?mR8yxZ1b85~pUh-|PxAP-3iH4V@e_9c~%L9U_eN-JX$gNu7eJJuXV(srPff-%Xy>XhKgces^6Vh1n|{>;~c zLD=(^I&BwQiQ|CjR7t1Z$olLEAuqDwWoNb785jlEF%Dp>8acd1hWwaNFmhJ%Zuhp2 z;h#k5V?h)6)7tn5#3_~y)qF}eB`T(i!J)MrNO8eHULh82^>?ExS26> zB_JzX4ez3~2*1Sb)wVuWYYm=BCKgf6?}>C^{!M&&>@OTIW+(=EHEwX9{LrNN{|4Do z+vqzBd$Tck$=>XYXA(=tgWI(%Uof#1MmPiL+P12v`sINn)nGlK5N_?z!*54vps8t5 zmjP&oC>4g`AxF?XpHGySfs{0V)Mvjr#d*40m0f!6Inh?VrIlhw@lROljU)+eA~D23 z279(-sdCLZf^dQN(Mt%_HX*{oFd8-jXZ{_37nPtA?gY1Hj{m}!BcW`sqt^~(74UQ76vfD99N7a%O z+BM^>Z(@H^b>h3@>XqHx8Pl&(5(D8}PkgfqVwXda(X*+ZGPuu!P{^EBRn*f>zpZSm zrT)PYZlmSW7Ggh1S5l9ivWH>IZ}YC=_43WN(-Sim=BzO1(PHecxC*(O%>3J`c};r^ zOV}u(P-I}O`gf9&bJc&k@PwhgmFZpww(Y?@KEdr1;M9Xu^M|-iPKrOl?RJ_4-9JES z14iB0iEBoQywvJN9`C{U^IJduaeNZ9E*8MnA@h*8U-q(dL;&L^S{iYSMCP3#ojW(m0Ayn$E~{b&*L0lQOS3WRrfxIjAqEn(1IQL~n^xQ5|8h7Fw2gfIf8t%T(S zX;wNVpHJ1gmGqPUs!*CIK>ef3Q(EKaSRsVfwRVlh28w)OdWqy^CiT2PH2QDeAP$vfK^|kvzT2-Hn2<<(N zh90%AffHn@FTpm5YZlefV}FRN+^1X_P~kDJ_b{Z{K1$hVKPM5k`4?0<52uqM7+w?` z{#^?6vaTC+j-1)7t1OKIDw-HR$?XX2rL^B7oC*BwTc%|$SgI56D@@C^YqxOs)fW;n zoYy2}y+Jj2UnPJkydgPf!YW6-W7s7Wb$vuQ#`%cTTBIRB{1(C<;JX_z<|UAvM5#9& z7?2=m2&rOK^V5WfdqfQ`BYIwo>1Am%)GE()0~!lqYy|0(Bj3AA2#|%fLVO@sT z6rviKbxYy%rPh0zPRiylOBd@pPy%7}JZGTD2R-e57IhQf472y}Ox)6rW!wHW^cBSk zYLn@W+(X^*31zf$Gml^6c6|&Pi|JuKMe~9(p7N8J{qnF;)K|)*-^`4*keN>xoCc8T zv3d9Rsr2Y!{-E^Ri`&uJPb^9YlyPN!L92ssefz(p=v}7YoC|I#yN6q91?av85}c#` zh!ZQPHuO-V5HN7#MA~KrBU=a4Ui$n_H0c1~+KX#cb}0I`SUmMj%`!1iVy@Y285c+( zLxdK15=?9cXD1Dt>Q?|V=T=drU+3YgaZY}zijV8VgoqtAjc;Q1Xbl9->Yp^U zNvoKw1t67N-izvLhdc*;x11 zkFozB@NeO77>JLF5PH!_UXvH|JuE?-oEAr%WKEN#F1uYeo`D?3q^3X7HD~Qie{=W#0kIhL-j^R zT~Z3HvR$AXD&+E% zLUzG*Xs$QdjCH+GDZuEUI|>}Kf=9&vS5*vruRxrd!V3lg-hxSKqA|gRSyU=g`C%7) zC>eoo+_NGNTU0@*(Eiq7>`c}>9Yk0HHSK5%NOt=NeLDFZdPFH#n5^2VB>zN_7~oc7?eD1F+1d`|NO<7*BHOFijCJc^TOQ#B;n*pxoeZ zXZ~%pkS0jMNWgH1^v58Tb0*+>6xgW7ciJtY84)xf3c?c8j)0+b zO&R@yNk`Hvb3B-;PsvBJKKUnmR9x($n1HKM1xJA4a(oMC`P_Lr13o2zs7|;e#RBp= znsQcPDkgKlBd7vhSX_5d&8m;l%Sjc24vu(tM&MW!JWf!3Q@MfHpmqs|iA*SV)-caK zs2U!fsVk_vN(U@KY=eNKsxb=^)w~y=2Vok-i(LK9gX&HyQesAbNo>Nv(BSum5yvE8 zt?G+}beVEdI2`AG+!o)5Z&i_IU#&ryeW;Lr4>*Uuw5}V(5Q;A0yOe03BLMxY`V=Mh zD^*ZpCPhFMpvgFAd+$68qS5y?g4RgfDa|N-dJ)=`n5x-?w>H2E`B8#_AzAm3s30IO zEOoQr$e2%aP4EFy(>g1kwJnvlgI?jBgM7x;&bfuEQtDX*=9}y5a{g1gP8|!OfFnQ( za5?-3<;SZjshnDkW34*D`kdn1-4Xq8eiQVL((BIe^`V(<@ zwTBw>v_SltR}cTYAO(Z_ZMS9yy$*#oIsJ zz1(eJR21~7ERWZW0@ z-&W9?(RShEmpbS)>%ye~6`zqefSxeS(61Tv=ebG@3ge$7z%8B@T0yn5R^<& zuPt)l?g?S*C1LbQ24Vq;lh|gcgz4vN#LK{hAbf?2Y01Wf^%5TW({S0}49dnf16Ynf z$b0%0#6FzNaA?-)qW^PKv=H*fiSl7* z3|D3JLBW;HLNH?^lD_y#&e?j!g&*V>rIi0-iiPhmi*%`BA$LBHptSXyXYJD$jz?lg zReJz*|HGCdPY(U9QZEmW_XoCTYI#w|NRt+0jd&^99^jyP3D^|>w_hGX>1{*&o6IME zk%kURIh5xfBe+3Dzu5vh24^(*w=PNZ#K&#)Xb9dM`}~?bB(qg4YNHN1=;_d3veO75 z$_F}+Fj);FS5ugP&g9L6VkR4am-rCkvz8i6BW8iLClItJLTkCGMJiRN&P%27Y8B#} zM9!08$<8nTrfZmDeKviR?@{R|kg`S_kNHLmK>9oM>7O6j!*d+5^y2EpqmJaa0c0T^1o>HajBg6jM< zXQz;6oGx&~aNYdeD)Or<{Ui7))Ba?scx;UhfiUq!LpP`W zyz{obOOI-I%~8|f_DOOPtCBPbk?7+WMN@8KxJ;lMFy=O2H8iFGfoPk zIJ=KiM#c9aY~}n%pmntff>~51EM#C%pQF7~a3-QQ*+YJ$hpmU{u-M&}nQ_-WdZThk zmrqrYkaaM)m5CT=z#JJ!7)T%Nd}v0Wyi1sEAl_;5_+4cW*5(%7u2lx;b2aD=JZ~6T zhYhIqquC3RV>vVLasXH0D&u4?|2;Vt{d++wQSAfoP*X?7baDY0$f@mohaP>GQ8Ef< zz{8};Rno>i72uNzhQ#)tRn?y5FczUP2sZ_bjBDDPnvst|pS`)EKzny{z*^%VY#$)o zPx+9V+rwep$TGs+WLQxxZ=8ps` zY#aC>VXlc?9e{wJGBF$0c2tZoh-D3i^pck4a!EhEOd5;&Bk4$T+N{_p0W_ItMK)7c zxLuhjEWo4)>=ih7Qvg;JhzZS^y*wUbe$g!AJ!{SFt*i=h_)oAXQjp6(_fKv?FYxe* z*qtH>giK3AU7-g^s8V+h)alYls+--|26o=O5S@3ZXx$dtA8H}%dgqWEFvEjS_IUON zo00ZR@*1FO=!DPE1*n>2rbX{KOJ2QIjXAOKW;Om-oxvgSeGH_FL`8BGbPx?wwm_JS zmoCpwUNW~d`RtX2M(^V4yZ0OaUG}MWoc(}%x(w2BA#KMwR^l`YKhtfA@cGXwo!7*! zq^IOTVarBNtUQ#|_576?ZmDNkB@;D)AXHI)old-&tKnyYzLo!z*hl|gm%cFmh|-qd zW7><&dn0+QwD6#EsasBgRJf!<8UU5SS3)(AIia(!tWqNpe9U|) zlI;B=?lYyQ=5dYYs~}IrgqRl6WL5G*ln2TkW#|RJ>WA8C)qnTzEbqh1;t#ZJ3o?dC zZQKPiJ-xgt5>-d{w4eruI*pA{Y{3Fb^;<)y7Yio^T}eoW$SJqDUtK>W?S>wR7_M<^6S@ES#X;two1u70VamU7b>DCW?D}A3ETh~>H^$$P}F!rUT`(*a*`Z-K=(8@YqF+r2yli_W9K=Ba|2oX9&@KDF zp8kkW05QwPK**Y zCE!IEqK6n(QOL>3qYswLEd3i)je77%Qd$=7tmC|zFtM1fk4!Gc6D-C>!4TI0A-71AQ9&{us~Fw z$*ZGH?9Qs>8nnlq*c>4WQugQ3*3wx9n&-_2)#DZ1FZ{f7n|+0XGVkU*HU*o7{C(<9 z?cCn$Q->R3-KRQFfN?-J&Pj1i;7`oz6 zw!dY-CeoM4>M7NLE-r}zds@$Iu@*UO_UtO{WB1*g=y}07_|A_ormr{J-ub6QFn&ys zO12*7wWVN0Sd{#T@jef`>+{RTdb66IImh&l;tSXm_R=8j$|fexv(qjPXHvq3h9*nnzOJx9DopT?ynKF* zUC(^*aQ5L~_g73H5cUHH1wid7GSu{9S?d{n$2WbfmM^>o?xfaiG;93dVFXPX#rt%t zL}y9NS=unt1D_;@YdTx?p{jdC>8zfQ8|VKljF5&+3D$tuqmmu?m)LlUEyj5Mhrs`5 zE;)P-Ptqwn3ssY*6X_bmP&|K(oM!N4PVJtSreLr?370v{o335qM2~6)`TtG05el5$_BTzYiv_kaEXyu#_tFY;|F@35Oif&Y7Xxx)oq5~Pl9Xzh6B{Yq~SY7>85 z7{e37W3I+QP>KI727v!3_tOkVKd?!DwdzAs`&Inu0;}zXA~E_;k81bYYFh1;pwg{^ zG*Jm%EvQ(f@4sJ&ChfV<;q0ebWh%9(yjS5^maCdGwPugR$#jnFKk zSwwDdR0tNxA8;F$ogqXijz+C!MLWVd?}v%9+t@UoxS%TX=vQBqBm#XoWE-Ba;tyci zthAgD#fvn69JHP{ciw#Cu5ilKnuPD481~zd-|%VQ7diej3EEn9K0eCBfmremv=CsG z$nu5NSnvgohOaJQa}*K_tINeXn7c|4Hs*wduT8Z3#atJls6zjc<%i$Q7%7&1ua1-V`_ z_&oC{C?bym1_wL8f}%A%5YTH>fpO)`hnjL<*gZp&WNA**qVfxe-VvdIiN!^3cOd{w z(V|CrZ4U$pKQs&O(T9aMs3fKds|jS;iJ1E$_LdBO7p;M-V^TNu2p_krp>HsEVv2I9 zXpTl(J9VlgYCuEttD68EAEC3MEQ&$gPK3f-KE9Zu9BZA|oFleGE+&Ebo&D@R{wnZ` zgHlj-zk-wX>(7@t(nGuc3CJc-j{Mg7+hP9AFl8XURiy8ekbW3MPKh|ird}%65D-Ke z4M9|e_q2NgWx3)Tl)??JsT+2qs2wWMm>p@1^##_qzhCbr`((PP1(hO*&U)b8p`7T= zzk*e!T*?+Dk8=4vz)i5Wm{(QJ^X(l-p(-vhZ-u1ZaO|A^kOVe+ZeDqBmlMo3AmyPm zce;A!Tepl(XH%C_2+<-}!#+R(hDo0X0S-ZFUFIm|sV_(waD|1GWFPuP%$(dC&Cc|B zPVdp#jmU&>6DO!u5VShpu1g!}4dMuoGb?`rl2*LBxapmL%5R9<&KLP-Tj*rO4?6o< zZ@s{2g8di_8QUF8{I;59D(Q9Pq*nf}t+PJ?H4>ij>;S#6(hSgLxDDz8)FjF8gu4$dSSz3NP@MW9T$DLhw!qJU&x~b~NRQTgSMXt~hp} zskcH3KpP4ae!6Tdfns2wVo)WYrqx7m`}UVvDImIqJ%5dbxX=1jZN_V5eYA7tR=4CZ zq`Ak~ebt6Q;p^FX^+)3NUlMJ#`vjx5X7sJW&t_*V-p}p2-kRh2ajuWfFr>c}EU)5z zv(d=qBGn7@R2NxpxUS0Z|I>&qOL|s?N(SH?CM<$^LwlzM-O~tK{GDF1 z@cK{PuC6)r7frW*F6OHZumW2;CS)RgYF7;IKgc_l)wP|@KkInr{%Ab#Lx31$BWndE za#`4uQ=(suvQUs2aCvuso1?pvrCVTsz?9ZC3C0j02ueomhL^?fmK;u>v2zIfL}>>( zyTjLoL)|vHB(0k%1M{;Wmr4npNeDJMUOy#%MDooa1;3mR-fZ7;_-8Elo|KMcaJQk? zMc;qoD&7}l`cP7^sRt_1?l1I7c<;-L(?4Q@zv9tS^3M#M6vr;ErK*5Tv|>;Fh{9K1 zC`yqfq)@%mTCxZYUo;n=<;X}XPUT~zABkfQQK@}{wO0@mjWI@mvJjhkie3=G)Y89$=C;vr~Pi78D@6QJz z$c!0bo+bGsWJ=?SPmmfw@mM04ANv(kSU}N*Z#+#XgK2{P7Q9t?4{sOlp>i=puHD

    sT5+C~)5bw)yD`@rz&ACITGUr^7Yy~hpqhE?+sqcF(I9WPH3J|jpk;*#j z<6=;#BQ)x-kHBmUot0jW^lQrhLH#f(eVY9tNX77r-MBi;U0*AF9G)sU!*=)(=vb$K z96^ORsK>0fp!0~r-yWnF>C54WFMQ4o*JBFQZT8BnwdHOD+6G>DJam0ux(xRUAbDrt ziiDNEnGXDXQep)+HwuaoHSHP9kG;a!D^i(XxaP=BX(xYZOlJGZ>C?$^2^z=ZCf9rV zkgENeN~P)*FL%+wG@29eVjHuOtu-0R8_Ekm+z&BM+^QdX2njBB*Pd9 ziu5qdC@##yrY5H;4WM87DZ>K6OaW;GNqVIiO_e5H2X2wBMs-dNeOlU=D*MwRf7U+- zmvu<0i6H-`3Yr1J{4RKt^Pt7b!A%nGooP*asx6;5Y%-JM6@_0 z{J``R*Zm&tdbys)DJiJu@GDNeA-9Emu6guG@F>CB@L$~OXo;_ijZ zOf;Gk+d%zr3{a!`iU>kwC4aR3=#$&I&7^FP^UR26`bl^`Ap}~XVDQadL~4q_JU{S= zO|oW?Na>LCO?3)|Dj_#>%D3F16XA&$B!T^C>66hO)8fJ3ba{Ho|ND1Nc}}hx&}Jv3 zv)k`uCbRoF6bMGA$(xC}oCG@**VdfPCMJw63lnDbQ!A##hfjWE)cydVV#nmsmo$#} z;V#VLQSW5(F;oU$?!pgcvJZ?u?#C_~%$5`^Cjv`!f-VincP`xt^ieN*C3Wa)x0wBR z5c3m!%EB`if1vo^9Ue3AoP}Ekh+M-m=b`gtOwPyXc#@8vPUJ*F&c@_)g1su`|MM-6 z`PLRRFkqs2isE=#oJy4~X)G!$`(IiqyS~Jpi(<(U)bYssOObNWfYzV{FnI$L+Gg#H z5N3roWxmF;%X{7lKyrA==q`6qJ;2nRQNI*Acpl91^?lo{2~+Ls{|0*iaxHmWJBw0X zk7cz*|FxE8!JRI{XB2HAor{rdLH5(}lh0UO3fHdkr=ZV?f3kA$iI+HH@scfnJACwL z(#x*j`ZgQB|FoUoIfvGbfHFs^pvL;B!L`k^i=ZDc4@sa-3&uX)(K7>2?~$Y8Aw0YT z<-EVp;47my*F1F+O`RY1oInmdt7hqCw5F10$0ofMV!Pq>0J*HpGZTOl(}yS9#876z z!6?*D{H>@f8_Qx`#-%lQJq z05kR4)AP?ljtU32X8QrK`m#`ZUcsV~z;UUK(EdXwi%rFC1;wQIC*W|F18YXzB?=wc zj4A)sG9<0d{Iq>MT17jZ1T55QO}29W>#y-)@+TiFVY;t5M!H&Nac+{z_;B+z!dMfK zR;b1TzOPYScyO&5rG!O#b}@mBr(={26PUB5K=l;mlUQAwW^0RPoF|}EFfazm#&ymK zpiXKE3xI?2WGx7FFV=*8?9=FAghg^P&(}|(NT&6OAEQIKZx}Xwp(gA!CCPQD#6@~G zrB@DjT6>Os*T0LBs3Oqx&Hz_vGv|kF72RRT`!o;~x*-prgOeORFNp~tJC!iY{6+m>{6wx9MDYqs{)L4H z_BpwHlH^B-Vi}Cazf3{#_=i7$w?v(>xz!!b=Se3Elwi0oux-xY<4kbKo zv54<{&s)i3ekV1MueX20Kl#iE|v{jm|woWH?>YNN%;UD{)f zmMY)gJ5Xp)Ea0dYECVsqMgswCHIqafn4}+Pg%?gt(F zk5Vb|HTr=xNg6l8H-5%E9O!%LC>3Q#Ep<_tiJPoC2tOUPW5eIuZ7%Nw*qh2?=4qvm zeV-;&Lk90${9DPlXk0DV2$c|Lu>SEom$;mKV4mMC%BSL6Rxk5^0{->Tk+J|aSl89~ zuW!CHggf6F4^eVrPoK0qvs$tdlX$|&hg)>ImyB0825rM+bRlgSMtOJgy!G7IPTu)n z2R{i;4@4T2Qp35^DgP5?}|kY-t zU;i=u=Fh?9iO;23uKFwq=rS>74;rO-a<*8WOrFfy#=CrDn7oe^<47eg{>@#9=WP6z zCQ#58%Ut8S>rN*nmdZqQe(5ziOrJz&Y@Kw!eyV7ab_fJtt4C0?6!>G*NEQ~+f3|`3 zo)JSP4YSE%1_yWT_fDxvGdeX780L_DO}g)a(koB!AX!i|=yjlVB`+e?f|o$XP8W+{ zii7Au(+na@A(EGWX_e2pg}fgWyj-9Z=hXIPULF4_F}B_D!KD-LILQ<)P0seSMKErE zW&_OT z@Q-*cE$m9F?gcB3?W6FYVXd#Qg{M{tF0D+LIsgAmPqh_t5t1K;lq1EElFH~J(c#_T zD#k{D0}Ekimz;pYx$)Q!Sso0QvdR}i@W=|d;5s-4Q)p;}a@?6UKxrn|!$lE$euZ0s zfTS476Tp-vJ?2Vfv#&!SAv z_Myt)sRv%5Ym1!>?W%A)$Jp*rZE;|vZK^=I)SRYh>z2GKhJ>$0z9!eh!>lq2GOTez zQyGt^ss8s6biDe9=8*49EYh9{Y&epa>o%YEUtp+O;em)m8pbySi`{tT) zocimstmI-}W`O>_`mb3hU}CLVcr%du@(F6p`n2yLIoF^N7y;Ifh)gjg!^t#2GOWpY z|8&8K*F-aM=}Hx8I+NOl)j%u*O~xm^vxf2zM@1qE3jvL*oEHKk*ecsr3sS+>8wN zSlzrV(!o|AcCY4>rTYu(2{GRag2{h>2}RthHzPssa+FTDU*99Yup(#G4hJBtpe#9;30YRN z`pLLVUTn&tshnEY5}7_+P5-Qaw&hjdF?RXkviw1WL(GfVLf+Na*=O*nwR-^Qz)xl| zH3zymp!^c~k)>HQr~q(d@f)l=YhAKZ#pBZ)Mdft#RSn11DYjUwg$+iEy0;n*qr5_@(7_a)qNO#$hG#bloO}du5!c|-`6>cIxV*kwW#uf)AYUp#Fw~%! zp(_y30|x@=4+?8#=Wl69)chMyGd`=OgmFI#xhtA^LaL6dPjR4yX;TD8GdmS)p3KgK zYNoD8k@z3Uc#zNXt)=~nD%suskf8h^zSjBP zBpg_B-~TATHIo&?e=`u4PJn3SwxjMy+xjQ?QL%IA# z{wp`kOJZtV&vkFShBEn7Tidv{?jvRY>@6S=ftparKtI@-I6Ze=IyfYfz$1o&Ev&Kyy3rOIuPy)C zx>5dVGAfiOhFHBD?6ul0uh>_ENK(0VvR*~WHuO>y{bTlE3z1mfkW9r4BLqK`5O91? zfLHj!p5DdNCvp2^pu-Mz3VW2m#tkxq@ZF!%pf$Nu#Ym#XucZyn`V7Sf=aU4Vzne%m zcj3|TQ(s=IgnCtOL@f0^cz2R5xi8N!9nqf6gKX|uv({p=VrnOU(ugKg8g^<=FYlb^ z+siw}1z;Z6rGZxoVo=K9YZRdo75jAhQNDQlf|+vt8GX78*`7d{KjVI&nSb&a1-+O^&wHx#l9n6BJHLKv z+kR(3TeO^=n1g*p;ps4~$kKd_FveF_{gZ96xY7@I7@jV<^Ll=d9EL9OyI?kchlWO7 z;~TQ?bgE=y;S0snVYT)cpSsa&T-v19z(w zYpPq4;9lkkFr^*dmYNt(0Z>S%n)kF^gEr;)!%Qwn=LJ9G45eI<#6+0O50MRVQD2Jx z%zYF+EBW5Sj=W&Py}5f6`0C5vA?+OJAO7;+ zb9+nrb64yMw_1*nNCG-}YJXFNq~ zh8FqRTau<#;fsZ&(E^Ag(|}FIUvqEuCQ*0CV%blJXqw!7?V=FdUp#K>$O+hdEnOXH_nRn{CFC_V%|}Io7u|?!mg06 zJ{1W)e1iZ;m4uN+xPXFdbFU<m0Fi0(S0c#_O5zQ--BZPvb>^#Sxl%7X_jOLU2EKKIG5&jfa zb2f^{{x5)$UkPO*F72o3Y&MUKbWr&gm_T7KUnDzgZu;jGf~oUtL4}xjevxuK<|G-1 z2D9i#-VPtk0JZoOfGCQ`8}aRKJ=Q;x)o{i9`xu-P;p-l7Mt0f`f=b`C7rP3BA+x? z3-+@GEWLjxu>>vFiRD4Y4Lk`O2AcYvDYrt8ufb`HjWJ3^oBL)H80-aGff(tw{n>Pa z67oChL>(%I`k{9C(f7@w_xM>W(99+!mJl|;nq~pa@}=(xion|O3yH20!FO#+ zI)0|Lh({up%-j`m8#OWt?XBP558W&BRioo@+j8x98+8ss0#uE50+xJ;N8R~fIrGXE zoG0Mx>zqK(T55Tw+Mr_6i2&FP&aUnOQIg0#?k4x!ey0%)Rw!PMck6xM6?DMd^YN-E zuCfdrG^>2@0(uMTTV0g!4$028tR|FNbpjonJt2}=yF6=~lta-^P91h>Y{`IWqcJn- zSQaT}>1X4EurTwLXa;(}*v{rnSm%`NS_Y>v4*eOyAef%USrml7P)p>O*@B44?)ZLD z&p96W`4KRoJhFWZ^G@(mhjJd5e@n)nEv1#G@6@alVQKTPDk0Y*jS$&Q$ok;LP>1e= zcf~?I+W1q+Ff!D7FB<1}&STvs+vI|1RK2A9KhHSfg6^+r)rq*NZzA1mA(th^q^-b* z#i}vD5_M&hti21_{^;D<%EV5%>tHzldi{!p7J{+%{u33yUit_2OXv9Z*3v^@qVWns zO9A01tdzV-8t;{Laa@kJ6Csq+UPG zV!D~6SHGLgXwZIC2}Vkn?K^lPM#}fR^sEesdAyD?N0q-$-J*! zcBP3CCf2XHD~n-IUR3`~(wT*BfI5-%BPyX0trzlw52U}tr!qwSL>1WR#ZQb{+cPkC|>`(BlFC^VaKlWaE+?gUS%ptC9 zP`yMY*18>ez6{PXm^tq582ad(De{FCMK!sbT2PZ|%Hd;A{9AG##r(Z4bKhQh=UtnO zP%QHH_jPPZ#O$qH)+wr?>NhwIEm6-Vv>w^#I3v|Q7dVDXyAC;v^aKv_;Tf^@BP`rJ zN#cQ_w4frcoEMZ?+$?Ks12g^ny7k3(aa-6xOywe0HVXtMT%YgwC%K`Z9hUxmU_t8B z2{H)b^;{FglNz-fU}bECkX9ZZzEujeDUyPO`$MhUGLx)C<8JSk6I0kKj>r28p{yhg zZNYw~GACAmbEwtqBG`HA?)n)u>$@co5U<`G57_Cbg)dZcFg#d+JFz@OJq{xpKQ5i}xGkI++i#RrArshKP?5rCa$4E&$^t zf}zSPkz7*7e!QUj7)^xoCpc<{5}X#01?xA@eujxNSKK&Tzk}>Pd<&)Xjl1PZkD}9Q zXCSQ`4v4JpO!+|Pqj9x|oOJSLnp=~J3=Lk#HLLosFIl>xT^4Ue1 z!TNNn5TO!4AJY2M=$zb(%C&Iv%D}=VynbOw9Rx??=|fRJ#n{~w=z;^H)OtkD>>+sF zjm(6KT8Wfye(QsGaXULeHqSMH_O4ehojQH-^2x1RaIVDa^u>or*&;CDSA$|)5<1~{ zNd@KnUbv*ZDYv}9Zm`2?#q7|UE6L|j3E!CN=;x1-9{dKkU(D(8&nTUIZ+gezQ~fbX z!($Nh$yu4_)&Lhf@p*=Gp)(1HTO346Z(T}Z;Y3wxAQ#Kevp{ugj61d>xVsXnDSnpe zpnxknl$C$zO`(2{@nTcoH>9XcM>uxow4LoBrF>v!Xk^bc{4^im&4a;x>#1iH?a761 z-%zft#b%x(Ip~_h4+lL+W;t z3gzVaQ#lS-&C(qBKpZW)sdplj+@1=UEgOwtyEETMV|ar z=I)q}Klw$!H27l1`wqoyEVUNj_2tik*R#bYy=#KHn~t)2pW_)zRAJ}bNX9DMOd*z8 zvS?mXx znc?qWDku{Svp)!p{76Y&s%BFCl_p85DyidggQh#OBL^m1_hejU^c)`ex7o9M%IVtQ zF&D$(pL$=uC^-};$8Aoc!uPzgH83$(fO0|BE7PR{m2Nh#@;cs?{@S8kDC?M* zh|6qGQ{C2ziHHhRYT%;5^L$wk+ji9j&T;Ps5H(UurC6VcLc($8Ld4-E$Ms#}!bH$D zQy&d-R4GfXsp{CtPDWcpMM|Pf{;g;^4}wQg_Q|PsWwc|ia?2aiVWB_u3RzEB#Ckk; zt_bB~u^~M#9FZ??c{t1?W}5a_m-SL7%R0_dpCCJW8mX1Hy1>2TagXm&X6nlk`)wRg zm7t=J8tBICuNU(;&0`6j^sN5jZBM&_VjY&YEL>xLaO?D8ua|X&X(opb0qhuK+<9S* zHyA513=?oe2hh9~;z<)t^8glDkn!+;Dr%S+hqI8r^JaDwNMp8BHIF2%N+u;CpRsU) z!9BFj)f7vF6W)Oi5p3@~BK|o1EC5$CO6`!o@2FiJ0t_i_pmretP|t2acSC|3Rd^ER zq|}Y}W!OKx4Q##LkdN@|;J`|=UXMa`j&(sey%SZgBFxV!;Y0~4*}}l)&7iC&wD{%E z>^hT_qil0Squ%UGXBF!ECJ13kn}q9n#XbzV;R)lgvqr#e?u26nK#a@?{Q7#(GYGtT zqpbn;wOQRr{xRNlvF<2vZWxVi*iWoIFLmoqbHAYN;y1X4X^#w_A-CG9FSO#9KwNUA z;cW`a*+2kE%IXq+LQ-N%QF+ly#dZUtaWzo8v35JG4c+JrSibB_wF!qK&L()l(!IP< zl)F?kYk(+i(0u%bPZY&R;b@DZkSgKX_^CjXR_z6c;I|b)aWyXA@b> z^6!rT9C>$(=pq_KUZ@2l6^EVlQ&btL!$1$zsFNYu@8L8k6B>!`efj_6D> z==e!Pd~Hs(9B6DjYyl})Cpgil5~YYY;aq1C%RucX31?b}BfpgCB=a4CHMQ0{R8nIl z6s?pCtqJKfV3_K$4a~|@gAleyfuOt)k^Wlwx}@%aX_IbxNT+Ol^B*+f0m&8-O>$W8 zek%t#crkdPo!{(#FZQx{E41Cpto6Q={atxGvOdUO7^l{H|FYYBgq`=zz)t5WsP##D zx4E-1Ozd^jBgSBwsH(J#_r9Ov?#t^rdPmaZ6@N=*d3DCIgPMI#RoI!RS-MjO40 zI&uEo2glBw4PhJZbjkt#{@tKzP|S!sSQW3&>4LIcd4<5I&?@g*Pm`fXz`2D29@!bJ zuvOE&RN5&R9=c<0MKLH|<@HQeL?sqmrp&)R(3gz0`S{Zli2z1}p(E0@ejP8t7Pmk7 z#J4i+x;2@#f}^YQ6W^K)9(cA~!IsCe$FkX9{>Bd=hOo9uWvOH;^F4laTPrt~nd&1H zTTykZqOQrtoM@z8OK z@q=ewO+ubS0ujGnXWv!2H~OsA4Y>1+LMfDpG879&fb%te`j^!;bQj zWrCYEo~S5CuQuL1_iDaNhLk{cfLA`+na5sx2ko2^Zjz3`;4BYUAzvK5CK8^3B5!X8+=M9nWYtp0b8(qnl3P*tvDDZe9}_c zhpm-p`_gKDgNj6>(%Q&!Y3X;Y$D~A|(ZoeUb9u&24* z#07YvSMl3z*{8jqf|}KDcSMO@^%fD_)|ji{agBXFsj*@fA_N!rslWAD8$fOjhfY2g zcs0)(F4TP2NENlq6mECeu&L*xmNY1P>BPkgiNpovEpC$C87JSAyfY=}Stvy|29s^t z&VfJ)ak*AggqqR@S|t?G;;z+19r6CS^!W1NcIu8R`)A*qh$H^=Ucu@bxZ3{;zF)`SE(^B&+sp!E zxyx_}`++@Jng`LF&_=N~?7ZKhroihz)-lu-|vbv48u}6Hd@4X`h#fF>hiXRb!`O z{~eU%VUMYzYIuTqR1{uQ5wPAgf>Uo&*K$xK=R__G-+ituK+OF17`EqZF;YSr`H zt5NmPDVn?(-{A7kN~t1u&@qNy+1EVqar>o4{bm{-7_oBo6zA%5MXWU17z#Er_g7gY(btgBukk$eRfY+6K>O&c~tSh8iuENn0hmWqS(g{>OQs*yH6jfq$P48p?91sAbkOB<zy43T5bpr)3#bQMZbQo_S;ukmXtG0<%P*~vq;kEcM+81 zGQZYLN7o=x)x2W5$XtDkn)mAq}GC5(R zeJ9US^+p}B)T_jL!Ip3h1I2r1zCcNB)Ex3a27g4S(@fbxkf9NVHta8>KF*S2!o7f1 zA65PwRjCa)RXiH@@tNOjYAv&!-s+i-y=F+2&#l{18>Dtf!i?fKAW6 z?R;X&lyz7HR`48JW6^jF9SnEN?8S4QC9BH8vh=~dzLo4j07HF=rFfUwDG|yw7AHE*2Gj~*rB~2`s zI29H54J*=zeJEhmOxtJ}LEBkEAbY9pH#e%gV+suo`Sc$+L zv~ESj$L_(%d6ebrZb|1Qm7<;5>rNH9R0v7i#Of9M$pQ{vE>uMUWpyhDyMM1fb*z1P zO48}$9*)+9vfzUGOtfaShNi|Sj!T&%p$jW0RSTW%9j2zeV(rU!3fSj<`?v@D0&9`b zg1xAekd(Kn7gtvn=9ZRcRhYkghOh$AX!DYaWQ{a-SuHMEzlIx*JejrMlC+GrfGFO7 zNbuA&Wrsol2bm3OXJqwOqj{^Xpv_{D=$ADQ2m>kTxYrNW)vTH!T#n2OI^HXqp8}k; zJkJy$GpGXoejNF;)~rC4CRSFl?-xoaVx9-H{R6c6@f?}eQ=SMAf(R9nk-NZ3rD+<{ zrn|O}-lH^qxbMF3Gp*IzPPfRPq-o9~RXWYN4Aq!0Hqs9KbEiv8IS?FHa$SzP_oa1J zs|Lx1P%a4w;DCHXptW!yuwv|Cl0gdzgPoG7|3T%cvy%WppCsygzaZcASMkelfT-`t zq|>1Xp7D6=`ICskW0Ngfoy}R$BXEbiC8iUu!_2?v3eC~ZQY#=Xb#;l81s69wr8#=rnEAsAEQOm1J%4$|v3ReukQ`J)30k~6p zMW~#u?R1%6)NUoUhqz|yljSUCbL>mjpe zIlEsO^`77dgSE0(2r8vv6hdq|XDNp_Pc=@u(UQNCU~G!kvK5lye)2S=EGYejZ>IZ@~#WxbQVlo!tAqVaNpgL#`w6_XyU9&*TGWm|zO2}PtL zMUqP`Tv9$AiY%fmzf{1H3Ks@!h;%xP#!}s!!M=OTG-t?Bn8dJspms_28Ih0snQB@FuhlbEVxGZ}lIsakU5*`xQszG@DlUWF zDR{DTn0uWC*Hj#kH4?Ss0$*=2XLHxx*)r+Jvp@`79xOvVSO|CE`h#WC>vVklY9DK` zXiW@FwP=_xr@_<+e=f-f8r-e9KlcoO?JOm&b4u-MwXJYGmjH|vBDoH1$ys^Kmz}wo z7@f(|yk?CNcOQhAoY8&>lFPOG5@A#kSw3me5Cs9HRE;GAbpc_ggY zoxWWrt9eNm1*Pg;E`oSO+ld$~Bv1)VLUr$b*V>1+*3F?)!wXPwFu+to0s^S^YGTI- zqCq0K`ooPVA2%rN{6fnN408FkInX_1k1tS0`RPByJtWPa9+kuWT-wL6m%}woBy^ny zss9QW1;)XLd3qxnF-Q8feQ$MOEyTw-;n7UBW<@8Pim_EH(CNzXsvG_d@WY9K{d{f^ zB<K7q%?3d_Y+kZAwHDVI1%9ulUhg+~&kPMHpG-24xFXn;F{jtF zGGFUD#(GyVLC6uKE&%~l1VQtjKyc4L(yTEGdPr{9M1zS_3IFz0XV-F2fjl1Kp(UhI zWK>a@Npdf&nviQ5bHK+di1!hbk0WykNWEplXWBgx_ds%AbHrh|wihu_*{j>$j(Eh8 z92Tj6c8)edc{)H*7`$IbzH5`zAFiP*%l`Ss-D~Hoh`rxu1(|oSBzQ1LURDtLR|L48 z`hG%5Z+T_|*c-54%(_}Rv&dzyg3u$jKiq`!nSG-RF^EoXq_9vD^!akyw949&LIdnT zz!->(1M9)|PRXokDM-FbXfj%W847AfC=zmQ;`wYmRJ64Hi{~V?XvW4!#Xb9f*G)+Z zn!5`WK!3l~JtX{h07H~VYqm(MAb*sLXaE&n_R3?(EI(|n-@Lw<` z$*7Rb0FCIf+;nvqmXr~7Gs1W@&c#!?UJdBjv>|(`&B*KqkO<3Uu$xXzAQ&brhJ7V_ ztPN2=mE{YY-`K}6_32+p$|qbR48r<_m!+;n@)23DNX|{Ncw1rx+K(NxB_NWh#Iqwy zrk_>Sug9@@=>*!8p&rBKow3-FRT$o02iJqMN4VIN|Djn4Hec8TPUhpH{7UuNs{41m zN`GguU4EqS19Xipi_w(wEsz;rYJgmw1%rK_JOKn z-2(I^$o~M2{X6#xevEv%?QMGaDFVS#A_{ltuwQ=aq`zg_?TRi`!HoPA%%CfDtiT5` zp1rYcq5YN7kRlGH+GbR(p=867%&WyLpKsM}v$#*R^)pZXCJqg&@342&&sT4O@5pJn&6N!-&}(w+zNXhF`k8o#2FW|_NT#Eb zc>;gM>$>vPJ5&=Axrr~kj8_fc5Y7<_B*}~Odn;Ri$0uaJqR0xCjVE6esv`noK|x?Ir0skaR)Py_ znq8BPl5;t+bbQVm^*URBt6u@g)3$ZZ8Vyg`R?^}@h>c(}cpfRN^9OA1Tl5bJ`>-!Y zP4wNSGRscfj>2}a$cmh-ebdfen^C?1wnSu&*uJ@jKl7sE2<`@p>?thbmAYX_=o_b? z$T}fo@1ffCA9;K}DfVUo;f;RPX|<#~8Tim_N^x*udEKdYTUJUCIu7MSjjFiq>?|j5 z5wc$O>+Z#eu)UC=dgnL_q2zNjCl^8Q6SoUUvV=H5j-v~aTXW`jlxb71tIULML`b7j zCYVU6dhA~UHy~DnG$@*N7WxRr3L5-chDqVHhJtJ*%Mus21E5>g;$E>Lq|gJUGp;VT zr}No_^FIMAZ57K3%(~n8oWo9@WU2Q>v#S7ub+@}ND%Tz?d|@qz>hi`wQV1KrJAE!m z4;&JV>iaZIz*$iybfaHTYeq>1yC!(7cD@?c3uSt;dnRO66uJ%c#27t`@uVDK=xv> z-4unp$n)!EXLRO&=UffG`LetH%T&;*PEWOyZ+?7v_f<9TGj+$)ja_D^mQWy}D*ECv zQ_&<@^f9>6XbBZGI5|hI87)OMCou~SqC41OVx7g?2Sheu*5~va9ALZ?)rMlIUH4&T z@7wfzF;H|MycAF}zj^57-P_;Hf&SFbSDZGD!I)nKb%zZPygZ-Gq-h(CvV;!u%0d8T zN^R%5QiLeo-jA}e`@;3-jk72HA?ijkoz35*kgms5%}d6Lurx~E0@cctm0_AcGxZ+` z>gQ%wC!SAjaNH&iPR`1Y!{|lYy4e<_IjcX8HQIJ#)!0T(4Kzt(pU0(tFs_@tU3}l# zqOnF>4vll;_T`p%#GE70)362Ymh&=!Wb-|%c4q1&#JR%Awf?{s zRPrKu%PO0I7w+rRds9tkwt582uLZ|260$V9gQ_Bd4_}N$vVT5JlyNsy)QtU2s`JB2 zSvtF235el5VPn>;g~|O*_PJ0(k3t5BYBw`Fa^4Zw+(qA`ZCl#QGFbv88bXtzp$M3` z+kwgeGJ+Z+r^X*Fv!lb#kX16%y|Ej<|l39Ua1; zZ`v|?U+TbBp|MMbfKNHF$v)B)pnDdbKBKrWoY|uGS-=3jnH)o`IXsh zlQEA#y>YUe#GiIobBlO23Is(?b&m=uCe|bkEoOvjQd1NC<$F2Oz@2vEOKx~z5|O4<7*W7AF9Gii*4Y?2##rQd{bFks{piwpFm=RqRQ4LAKU-T7LDd&XUIy;Xt}Zu==p*Z_#r)qWpxP2*B!WAZiKHYOF+7U z_or6Q!|@2$;OHh>+SZVru}1EW4pI-El$RjO(z|{)`tGWSl6otSx8#E04lX~=h9!8Y zTNG&6WbtWU5xN--z{nnfj^{a^ur;?LWe3EuVHRWk%S$)#4g0jys))O$o?LCGfzwp^ zDJ{!eQj%Xd*ilo3?_anutiRe2ErEg+IXb%E*@WRiF!&bVA@&yA_-d`JC}ykkMD1QG zPq6T^{ScCb=UNRLUV2a$!tnuNJN0?3pWe2>fPB?Oq*iN^9K%&A45so5uCI@T9=3POrKyFHl~r^#M$-6K0==}EAnvvXCZcrM5)7>#-TL<5v`Jx=u;k4D=?u->;meygzm$V zxaR}Jqa^CoJgO8-m!!yKjFJ@h(I*t5K&a(`th$eek0zeYHq@UsnaDYkK+84gy+~=b zNzU3ET%}^34wE1$#lqIjqtdjnfA8MyaLrADu{$%t&LeL zzO)6A-6WzuPI&6yTEG$(BrT<&J4s7dNtmV*;Ex;7uFA2Vo11zQ+wucHpEbx8pN!qQ z>k1FLMH|PqcaCpfP&;bZzz^YLi?{iLO69wf!=KPQ3Hc6w6r&5Y9kWQ5ee$dXX=~(b zdFxqa`P5Ucw8_)bCn9z7wL8l-*(2MVvj$K#V_v}$?m2#11k{j2Qn}2A=0GKrYU(x^ zLkhRV1g-W2w4@d#GMdVc-Bnh0;!KjArg2{0cAfw#%G^iW^@(k^=4ZU zcie&|JZA%+V#Kw@t5Ysf7f&XHdaEw-LmgC~2ZrBbD2?<+%sEYA-e#_}B}hWX^@@`2 z8#?`H4I35VavvEE2dJ&7uMGCYZ-j7s{azT|rSqP_YmS^AUFCYdHQ4y?2)^knGW7Ne z7PmjYnxDA4W{g@NUNSQmeK8n_K^2%=2dt%;{$Hk~)+oA136`DBuv92YUB$9@bvlp| z3$Wu?9VQ@@CZkVkZT%GpIR3Z5*Q(1*zDt}yO3?hQjM7r?-99h^g#@3&lgJviDh^t; zBH&F@SEE^>Frw^=dN$!*M+~`P$FX@x9Pge^lTvUBP;r5Zyyo70rBi%Ify@XzDH=ad z%dAPy%lSdC%r}#C<`jZRd{>^-o^m5`HtXwEKMOlixhT3Vw^c)l06l?3H&*(I<+F-v z=qG;SlPPUQ%!Fje+tVz!ko+K3cUzr9lU6&5bTLSmHW8cWcQ<6+$?8uv^*v|*9f#ER z!84^PHyUNy9h?gcKWmuykSlh`fWums(0c9?=#JO$b>UXR5tE;Ejm?j&)=s^xxS@Sms9;++Fe5cO*<&ZHjb|q5sXk;EV%TPI@{_LhpQg< zT~pa_JDjiacy;j2b~`NTOeEiUwHjzb3~A<#E4bgV^a{DDk>Jo!!Hz3S)!=`s*7CcFpg`XbFWT|;y{M^3qX1pe z)(tQ)a=@A6R-Kv9)FjzQ_}$x5co=e1;kHm3yq|D%0K&HWnl+hq!nfR;%B5;zUXBp9f;AE?W>G8RY)(s> zz{V23?SyN8f;Fy6X9_DH81X}=k4expiyqIiImHU+Ju>8K_YTy6Ly}?#i=^2q@AROeiw|zT)e255tEcx97fF$pxLsypUIC(8C*?jT zNw|_jdu>oJ5{kD2An=liy|L3^EBxw{a*_zAX84_mXKF}<6dvx3l_MzCBF(&0kj z2azE;K?8-FA3?^)xhel!3%deo!sqHS*#!)d45XSK4Yn~1Qz?39H2s=2xRI#RA3JF9 zbdKZXrmF3w9}LM$SM6gsOa0%W#+Hf6LS))Sgt{Wehv9sGgDglAlP5|M?Pd5 zeht^EoV*;e(|!@x>Oy^Ng+)oDuEx0@vaQf^zi@OWz_KrwNYJrhp49rlwKqWL-; z_Lp$IKP5<*y$6?15E{smY5OL1H?p8u?P}7ITol8f_hXT|XTlVprY&C|fYF8yy?Z_I zH>5l7OG`;bPwhQLQC`1?{IG^~=6WkgOcA$h^vA2z*`T8eq*u$qVk{^#PbweFexjOd zLNh3uG?l9Au;SN9z*UFI?Es5uL)&ZXRcyB7&R!a-@S3{3N+lx>_NQ+4j*4%dZ) z!Gc3*yzs(weBIt_N%0mbBMl3xf0KP~;tkiqFV*T<(&;%gipE4*YESKq)_GAJ;3N^o zp2<1r2%nvQO@Ci}Ox2~K+$QYGNuv!q@%Z{CjAkW$7q+UnaPI1crc<@v>b&vU9{DKN zx7fS0gdYAX%X>u5ql#^Z8l?Aw2`HCwXRkUrkR<~}iKK3|HRWPlRnq!yC8S~mK>~-J z*Cu>x&4>sc190v5nP2T=svACXv|wF&l$AdBZdWMKi&w6D4utvcQZ5uQ2bGYtAX{tK zYHN&=x3{t>sXlTyg1*|Vbuo0*3;}}MB2{kgY?=zi$rwVS61yTEg`(6IdpE$rt=M^r!KT!JJc6!vgwI6a_Uxi~CC#IK4O8~p6E2x{E1;Ly8C_1xQ!Pw7}xRlLc zWtZ&hPIP+n;5EfMgc>9ChWBI6h&*leOhjrJ=_I^rVMYbs|KUb@pj9t4#X8?*RjVR8%#ofe{nL z4nm%t_PAi($`lSsa`Q zs4~iv0f&jQ62Z9TK8+t$CoH~UWNVRD zfw~d&ka_A}cQk#jy{57*UIn_w!nuUwPTAYMQ%M{*MZxgP5Y42ikgA_=jI({6X3M=G zfv?j(fFu$pqlMa}>>Ki6ZJ-qRNir3uXR*mKWHA&7GCq*jp_weA1RW$9@^n<%s#nP9 zP2I8Ob_TT}Lru2650q2u4FjLzs+ENEP%$~;`y+FyfAQrqBjD8VXMS8W2p6OnuB zvHpJuaGKRa7lY=s_!8H%5oaQuFOOgJf!mXV`0#~3*2{#g%05E@CWV;5-AP*>tiU^i z8^d1vrPRHnr(`K~?~HXmqb3c+ff*ci^;3s3(zbnHLG#A3wR7;8$vTMdQ~pBft0(mR z!QQOZ9&h`w4YrWqLW^YXCTb^W5`H{hYi{QN*52J^SQ=(&c^>mdf@~!W#Q}A%nj%$< z!M#WQO9RoUdLk4d9lP@v9=D=#N_NMX_o-iX+%Sv$koK&gHS<>qeG{n$_}oyWg2LK1 z3|JuJ1}@f%17`>>z|9m}RJQ&*E&dZRH?Ez!0ncv1HBCI;RzZelnk%f2JDA_Hb$O~C8ql+pj?rudM zLRd@b2;^Y`lZYrsE&H>N9fyU31vq{z))l&nAXPvcvFx2~Mw~-+h~O@a_GXlzLhIGs zQ0Pu^wt(W?c;B4d6y(O#4qq2RxmlW)qhh>u^xoQF(WR5L{Ra1H*KmixPez!coC&Hx z1{aLss{j~Psuq;Z$c)ZaxGmbGFk@=HgDXkmsE}OnLyG*%CB{I3H`>mLZ+Ob}DqW>b zvMh*gR!zssRLiAN6Ep&{$VNsk@ zkQlW9`|%JWiVu8)^2398D$pc@#*z_?LeFyam~dt5G?Esk67y|koMC@OvHkcey>`C+ zY6WutqVX3#u15cZ$v&|HNby<~Lq7(K(L<2%fCW4EG(U&4#rS-{;BlvK3so;WAS)-8 zUhfx@=#aZz1hvRV#C|G$ogvh2SW6m6^sSjcXv{EHQ;Qm_2%K_!4NKxkoz&Q8=8t_= zkyq^X2NM&{v~n~a4%Y>7p|Jj5GGLe4NpFF?g=*iM$75LUd_xea(f?eC;({56{c)*l z@JF7yxB1PU&IXg<$@6Y=eJ5x(%U`rR^QcwHvp7Luo+eDlXTjx->Zr{5@+vXv^m}9^O1pvlx3T@h|e=Z(C zhhVO=h`gEDTxYW+_Ga$+qN%~qRv7$DtKzIDAJ|UM4sUdeVFfk(W~{Wqh?fRcLG#e0 zkOB4^3Dw6U^_m6@USU^L?gu2A91@h9^D-0=M?ku0=B{OGH*S}30I-S77&r?ge?~fe z8!h5FO~XhN;WgH4?}1T?dg6DUxxj;l!SH)9B1}s+Q9l0GAsU6xyMad-6oypJrluusQM^$gc^ud1F9$ zRlM-ytH5JBQOBvQ&4~`ogOpB04Wp#HoKRt z(^L!`sJL}d^a*ei$3;8}>ls5o!3pVmaS@mFA;bdNBr2~`?Fy!>Czdld&H~v#8D2*o zzH8b2xHk%o(Vnm(n~O9Xv=B=*l8O+?gN=RpPNHs6`$!@AfOqXm+$>lTZFf$ghT&F3 zOB1Km_XnD#ZKnnuy=-J(X*eMLg{&L*sA*7`?p-=&=HW#3zn5HNNP^o>@28mBdE*h- z%(S0)r-4FO_3Zmz@FrNLBSdvCXG^IV?l9Y#Ymg`oR)v^6XsB{FJ#x7UX2=b)PRD1> z6IcVfOI23zVF=(i0RCb-_m32<$27$(>+U3+EXyj1TECre;=44KsVc@iqE7}z(nr>+ z8QJ3pGBZr=;B4vEKGLaakF!kvRhZ}x;>-=fJiV*1^#?*}#f;<0j2V-|oJ;cT_0mGO z-y|TgLLM9CZ%{X;BfmSo-0+_|J6kVTHk!};Sffb+*s=Uk&=-V5GMig|IcIQiX88GM zaOP7nS8!ED{OwT!aj*za#qttfDbhet8tssk%@@oZvyn1IecUQD5hVvK<48zIkw2ql zMwx!e1h7b?BPP5J!CQF{yKmV5{j8@Sx_Zv*p1d#gqD0juI?izuV!ttTUW}1u|Je_y zIX%7f#-H|HjFK`m_ubYkXq4ku-)Izm9N}7E^p1S}8&P|?6b_f2H$JB`!wpeB$W*$G z*7y=eVTI4aEm62l*6h@|pLn|BMb=Ii@-Faq%{#bl24N|F3U%D++yDjhT^QX(TB*{Z{d21^# zg|@xhirT+p2toO5bx1D?Cl)4xsa;vK5-#)}^@u{z;QhJorsHF|@WwxCj3?h=G{o;J z0>iP=qz3UB*$^PY65$7AYHtejg}naKRSTmD2>S6yR(;l>g+cAyNrlno}KQN%#K0C#n-6iG_-A8^mEkp8%>pANX5dj!$2uIr)woVhibF)@BU; zmFyR+F-17Yh;qv(QWPP`-ivGAAxp@R^Az=4jW~0N`i*T3)$X%2>e~iq#K2I@A9EmB zlHi3z0`B6OjC0RZho&IQwyGeU&1$?cQFX$=mFz5f`c($WC#K^df^I0nl4t+g96nm~ ze^w^p8bHsgjzJhz&D#B;8MY4+^fD(F)UQWHVnwI{v~+>71n8tlo23Vyr#29!$FqCm zG=J&8IR?9sMWa4XwFwGS1%w{7m#tii!`m}1=C z7)g@DQEQzL+_JV^j&=Q{c?VTBj@8xxQr{bQHEoqxK@xm0UBV_d+lGwQ^u< zC)Z8ocnqMg0bzm#!Zfkqj#q<%<4y{y$9E1iw1m*BGYrT^KfNuWic-#%8(Grgn7!J1 z=zgU;@*(2Ppf?W{Y^wJ>$&GH&aWwSkAdKa>uYp`CghkqFfc<2?;UFjGS#`1Re{^+x z{*!fweS)k`f}7%8bE+LCZDHdId!O?5%{x?sg-+}%Yw*VJP0GMIicO&tmB$HEuxjFB zkQ+#r#0O|+SDUN8g&i7=vnMwgw$~qAWw!=H2*2qwB1h^LRQG+dq2MX)shAFzL*@3JAm#j)o>-0|jV{oqWaXP#tf!>D);_Hgx!H@i1-PtXmMt+{A?mtr1r6 zwShbRvapN5FCv|!-H)qn3CbgJpL_Ab_=u@kE2Y-FPVq#dZg}O;lf-m2h7s$)-43io zxh~2b1rNhdiEs$$9BlS5N|4Ihh=uzF`{L=TLHB$osrUYR-$2rZ#V$K<6=pUVbQpZj zKm{N)S4Lm;Gc5~BD<*zTs6@!u>uPGLP@7>`ggagKsjcbMdRF4K5PVrQ9gD~QVyqb} z$EvZP8T+IrFUjJ8wjJtSLl%dCmYdMm27NZO$>1=QUS3-{f=cZK!L-~rU3XDBv!gjY zY=N#NbJ(H{h#Bufr6LN|n*^&d3Q#)UKjPT1YG^%G`!K^~zJCxBxwm&Kj5}3Wh8OR9 zidU*L_gorOLE6LswMbYm0Bm_4!wGCjgj2o14;3G!Vq|Qj0Yo7;uqkN{|Hi-^uuRMx z3Rnn;-4l7we*uf;P?p8+>45+d&8x?oQSBPfznq5FNF2f^z?Yq$L8O#4u;rF}VW58+ zO_A_baalDc!k0Q(+hxzJHy0w+?(dS8*8cw8yMuS-`CJ{3U3nZkwIF7#br&NAcXRsg zKsHq1taPu``&g`P+taWtzb-Aod{BKj>9`*s*S9@JF!8D4HOvn>>wHIGOM}Y7|SbO){Y{Hm%L%FzzDmD_0)by)gww+&0dGl z=u!cPmVY~E?&E|CgJk%+lW08O8P~_`d zI#HMl{-$NZr>a2u{t`btln#*uJrE^`r(xEqA<@H`YYH{DoK8*YBp^wkj$FMWxZFWI z>Ku#r*PLcOYCj*0G^yO>Gl&_itFXsITrDBn)mDo4qPlhFmI;?$YZm6CaTVP0J_Wez zJ%tz-@BaCDyn6y@ri)Tymc0l!Ra8V(;m%Uk1rg*ov5pzl#KrRRScF5pW#S(?#p|_! zYt`+r#(5(bVrUj#ao%?1B3Tl5zLF>AtAY}kImwc@;czure|b#RBaFn-jf9jiD9-by z^5F0|#+HD>glCbp=(N5~XbX*fW_18Dc4Za`7g+^@oMV6Vucj0m5M3tIsy&&@5 z7Yp`0h0AUkS8!aXVWp?*bW(&<3q6NO^#ZU9j`nTSztjt0iG?uRC7wjkf5p`V_bu!T z?oTcpvDC7p0bVlJw6e537yy>rS#?jhk^E;P0d!)!orEK}qjnkr@nO)t4bUZ{6DD(% zYOg848}rjrwO#GB!()&%=`l?q-dvmoA&SW^Qu2-JiU4Qqt++KL_;g+F=?S$@uV|8P zx0$V0tuXXEI=NvF!5ARl4kWsX%=!H}jroy)>}Wyf;QrxsCDMz7E8vH_0QS>;d4PX! zZPGa(y|mT)-cnc2v69$I^TQfcn$7J2um?+>HCaJ>9}tv#fTbi)h^oou`bx(!WBoqBqe%2SD`6^N z#C3Uj2=cr$#rZKw#9h%4JEz=fQ&X&_89i?5f!nVPuwR4j=_QoWT5zZ`Tl zS6+vqKyhp7X_*?VihgaeEcjEYCb3X28pw+UF(QKb7XfP`Ct=UT6QHGu zagQQVZik$GKposTZH){xSEUEwa;g;S!@>cY$xAbKzyR_P&6O^pMRn<1(XH8o5pGK* z%lw3NlxFy8QO#`>Y15&Vf^XI6kCl;_jCEV~_LMSpP-;gT&8M{WJM?wc6}xT)#!%Ok z+9=@==MD2BFF-?7EOKqINum(Sxe1lZ+7OQMwV+=`i?;)rm*d|@Ia!cJbROuyE5_`$9CXI@Ke2fHH=Qjcb zJWS{rNhDeOjKT~=-5XXFS&DUhtOh|2?jhucha0g4ug^{+G58FoIm0b~K;coV!Ljt- zghVTyENrMqv+)aA$Ah!(?WcD3(09u)DN-E{PscrOw9GrJU4;n*{%1aiFd1VSh>3%b zeCK`6F^$I}HVQm1CPZ3CZ~p|&SJ?P)kApS-er9oJ-gp`qiEhU7R*`J4u4~(5K#P}J7{>Wq#0^j4$i<3Pz;1#5T83I$- zyPHC5z(Cz3#@Bb&Pm}(SbzBXFMVCBn16za5Q#CJwN)gXpqV0 z`+`R4eYh8LbMU5@2fpD{=+U`)5=2CrU7|^duqYP@w(q%-Z8(J~ zEPRf_ofa?vCdnoY195*NnS~uYG$%z(7QQ5gTU5aBFMlPG)-z`@uwy?4s7$6%T)-u~ zIRSSMTf*JwkkC(}q-Q}f$mUUF6qFcqrHOb)QH)x)F@UL{IVK3l5$+D;Sl;e%2N%Q} zzU&Tz7T)p-POH~Eu5M;Ub#LZ~1#xZ16NVZdiimT>p#&xVieCzj93b1^?A;~88PeW*k$3V%-W(7c%Ax?uN?k;= zy0=n4$r=e!l7oK*{h!%|N8aq(le^W8XU^2l{fFi4hi-lI>3wtkgRzi`qDgec@vo2Hs8Ufdfq3SoF#7=82z|RMqj_nq&m&&>LOB2$;yZqEwXq3v z3$VV1i}U>en|@P6IK*{4_Z0&&IvUu<&1dJvE)!)^Pb&i~P=+Nwfvz}5B2FYZ|)WMcuKsQC%6|_CAm17TOo(k;( zc(E)a5lK5`7A^n*BZ*rKgtN%YpxF=cC6NX@CjONkWQh}cghiaf7$w{@N7nTL% zpd4F)LdPe_G9Zs?TSi!I406b2Cwt8b;@%_r)0O8U&VTqFtun{A`P3`QCP|l&0QwJN zTF-fcu(RNMi>^fI%{!F6{1P^<2&Z5!v|)8;cxVlUPQ+g;bm6XGATyw zfnKnKNFF#f#`0cne;>~KukT4(uv{<{bZr7YLA2e-enm*crl`HlZ1K_rKWtww{+O-478*s-BW+|FeZ6Ft5lo65Ym9_75DJmawXEr&6xH)J1dWQHVg;2517= z4*);s?^kQ*=w5E)>E>(zM~;6R$`?+WdzN2ON;Pv+;2m1H1<4jv&Vba*RS2Hft}-tm zFj71aDR!TaZJY9_(nb|=!`@qP-E*c(QRl!(yas&6Cl72n$Hgf&BjZoyruY-8mn0<# z%aaautPk_eBxJ*=MPt8V+DGzqs9!Dbci)$}@|wwmOOls{^^wrsbjIeB-?A=(h{e|! z==>`Gz=F4R%vjn4BaEWbDrQEABkBT7TWStT|1bLyG^yv2r&?JRyeB{TX1!I=s;fxP zf@*A*#9l7Dov||Cr(E2tDh!<(PQ%i{Ie?SLc7`=5c4Vl=6U!kgh`_;Ds4$})di{XN z|2Sg{hW=lnr1WwyEe!LyVD5HzAFIwf1-7~B(bzV;kK103?v9*}OVxAj^hV8pG+PPStmQ0~+F%@`aTDpCQSKH- zXH~TX1s8wlNLy8J})0$=vrhu)x_`M5iUL2=I1ta0_wh!Uh z4^8OgjT3V!gCV@vkHg2SGa2rc{atfsMxq?$8$5HEcqKO@YV0rw>Q;t~rBuGx3p=F> z+BUbQ)!D`XBaQQ7k~4ttYJ~cPXrAc*-j#?VcZOVIR%>jdYceLMkK^_=wdqV$@6i(I zNGZC10^WP<|A-v?SW-fOB0pZAf!aBHYwBrlzqBm>oORN`MCmV}RT7=~Q2@gYAU*n_ z2&UfU_Nyr<;E=rmfM2~Jg1stpyf6p9nSlpj3TK^b!%k(ae1Q{MBaAtU6~=W@wTg;Y zN;Yy9pyL<-OXQFffD{DA_%i#i8VVoedy0A&_EtlDGG`Dd+?*g;;rr>qgVWCfFPH~= zdQ5A}ZpOtOD3DAkAiaTxo5f(tmkmQKm?MNz^z{7u)S>pVVo^MHu%=;Mwy+?sd|^SM zpSpeF`6N?@Du;lTWoMx<(}(p<2h`Mtt?R=Fd;@J4j=0yrUAqv2n3 z+|fQ@p7dW6U2vkzU*z&Xg**MARNHs&er9<_?OR$GPk3~1=AOGJC)69pLBptD+`MkR z8$WfN=M_dB08+~tC8_TiX@IA(zozFAO7i-VbJ0j+lj1J4DkBQu6VWl~fR!0-TsB}^ zDu#w(fYwB$1>uAvCs8ZYz@QZ*oK?;QfDewdL_1H5L51!Y{dRY^Z3}ieCu^LpcsO37 zx~6hY$#w1xXN4De%lb3jPp%X$bWIOXDF;K=Br%gRQO$&ZJo}J+h z1Zwd^@ZL>^8FFS_pnYXipIcdC>SoScv3w)-GKy+>nJDA)LEL})j{o$&+;KX0hK9PF zYwXu?63)YBTp7$FK$}zUQ8*(6N#T7c0koJxOA6=3;jmk_ltDpUbZ+{PIC75MG+rgU?vqd+X_w zdvEmB#3Kb1g?cwfZV+RmVT?eWN5h2XI147BiC=~=-F5P>rCAt5W>ry)m>V48adLwk z(Tj?O6Z{u^eWvMq$1(@x&vO_k0%wS5SgSRZE_XVu=+XYyyy6E${(Ufu% zBw*1%0h~LI(e&X;0O@qDYcHr=rWIjaxoun1%ARcx(q~vnyn%q}^BSf~hHGvQ+`c$v z>@>UN2RY;I+n;^*=JDCfckRkRcj6C0D?pZC3uYz|7fuo}yR~yQ5jVAV1mXvc^`Xw# z!2j=OcHj9l%!`Fvp1E!9nfF|`tvLgW000mG(vvhvF=7y0dEsSSa=d5+Q8=n9M;6@k zySY|Q5SBMJj`P|&|DhYRpa3mPvH2%5{q08`i4KtoTD9L;+# z{OE06U60l{#rDGr*b57nuD;@-`DOF`^E&?~TXWpw=5>7z>cuHHXoECgb!Eu+4w2f2 zmp8wBExTqvAQlJ`M#8x&mw9$wkYg)p&8P&r#S~VfEUQ8!?A2I@kIv}Ln`*7}EPvJ6 zRniamjcdx33;hF2{|Jj)5Eu55v=NH6G(*5SM0KD9NDD_r9_)Q;o7J2vQ1FsBg>tb$ zZZ@6AW>{s3k-6Cdm-y>uH+#SvU@}Tu#$3-0)X$nvETu6f6{Z)(va@u7#j0jQR%2r} zvqg;Yd3rNh=D8Cve!RWFgp@+pf@_7nV|QT0pE6U!%NUR+^*e1k@hv5|^EY9MlZ1WdNR#BnsAJodpR=8BMhz2x&>dD2tsG~DV&v=4bCVfjpzT}5Y~v&3s6S?IC+Cgh)5E09PIHrK$71= zw&Y8kR|G^9+jHwWMJRFlh)STiMPkD zZSe-8Ep>r{Y0XZ|XTk_5AN1jAq^uamQVWs`orIYj7i8LJ(4qCkrYzbLlT zgCWcRfPFHi3@QffF+K8)Vs9cSWf{bPY}B?zwshOnhbl_sNlS(q{5mp@J074&FCv*^ z&>@Kw&_)o1yNnul*GZ9YZD0Pv&VB8ZurK)*!MA)#+9%B{&Mf;HJGx?;_tdR#esb^T z)r`saU-5^e@=qjXjzL>xm@>1(HgT8}wfOkkXo1hHiDQF0^^vEqTM8~5~ojcE@DbsZ2G z5C@wvShY6jXdPum)^b)=1325B)m@_ty{5a%rK?n5a9cbX3PwNm(cg8vGfkKoZ>iEsApDM2Zy9b2+1AfU8DQsfbz{NY3o0Uo0OyGPk>@CWrfaGM54C+D}## z4*l279o!G^9os4$do0Ul{IXz$2ppzT_|Ug6Dd^Y+8Plzbw+vcV=AOF;tVuc98CVQF zVl(l0IJ}j_Vr1){JwPkk?3iZ(z!S`v@k@NJrw7t)Lcn2*0hoL?vPg`C2*g#`bqEp0 z#KDV}*hVHvqs@`Y>S5nnH7UWE|857#N&<^|$*KxJ=}Pp&zn?QYDzx7)-)f8)1XeC; zeG)D0!^6qp!)Z-W{%rZ+xOeT^b>qF0-D8&B^r@z40ZIu`?QGF3gyjAj$B-6+qrqR2 zOSkU|j+9uarfi;mUAwWDF-LKy1AHIwNeAS ztP+Tt0E4b)co@Us;9GT=0R_CPx)2kgRa*WFaasi~DiP7``?LGt1Mh0D-?f>nSG;tiF+EzQ%`XV>7MExkmDlIUl&YMX%8s(0 z?}ILb#lFweSM^O%4ZY14Q(r3@-UIiaLM2n_btHL1hI z5MyMA6R;!@<1|vGG$~aP?sF>T|dKU%0Q zQvJl%#zqSI=WFvLgfsdZ=aVyA&XD;~=Vflbp~~l$WembO-}FY){8@uFr+1bK00xUd zq*5s%DI-M)jhKx*(ct}PVEzW?UnGO9)ThiVn>R(@kn5ti_yy8C{C@LS$ZJ1cYpeEY zr_WXt0cDKzPK;o|ij5~2M{8>r+)`59(9j?1;~%tL1URCcDEvuk3R7z9tU|qK`Z>b% zfg9`N9BgVswC{ywH{Ph4cw_1debI)gemDs#BVHb!ZuQdZ@BO_u-k2Bj+jH}$GSv%s zRtSHLkQ-U*5gv=XY6}Ke`%Mlu_`X(aZkp|CJ+1E zErBysY<89S<6d*gJJhG1yh$kI;9VyR&ON}c4x_9%GYYYDT z!V7Zb$jKrH9OpME?&knuu#?bP+o__kS&!@^cBXi_br-W~uJXI?m|LMVl9WFiQy2-LT#uqz# zT=`XHRr#(aw@+;fVW{I}$2+_GH;vU(JJ;mO8-0!Sot%xk9S};FW5D-x%)O0QZ`f2b zKKSM`xZGrVdxJvpXFZYWEyE)`APtd(MaMnc&bzT(7!F{#8Qbw}>J|2Yl*%Kg%RJ+r z>n84jG_K|G^cX)UqxI03u#Z+BwMWO=&r2xi1q~Y`nV)CQRX$d^eJN)Q&icIqew?Tp z+B#H~cyaUVo$&CAvdU1t*RjKZZcDu&yzq_O64wcVLR5dSUEX-aw_Ka=J4y=l zo&SG@_3UOW2<|VHF)77hQ z?vh*h{^DyN#yB_5lUZ*Ms7aPwveTfrcoI=mt|UdYab-u4 z*iE;$XyPQ8hQrD(=dXfcdXw`DMfu`nRzPDQO;a?UvYxZYS$WV2#ej(0g?4WJ7GE~N z3)Q`CZN1#V74EP;y?oh{oYW2+&g?wX8v^%TpHc&nROzzBop2tO0R#l4!-9x#k{ARo zfxW5WeS0GqN&p)}itndJOajVtX9x7!zxk8YyKUg_%za%BQBZ^^;iY#6z? z0C3gHTE;?A7FesgUvXb$R2uoFL=#{1tya{5(w;ju8IuR?uMIv}NyF)R`JI6z{Lbtq%jR%-(Jv0DqXERo?ag|g+N|Nmd}bZ$?$wR zE@uM*J#!}a>L^TqRgXV)eR#HUthl@~#nTu;e(^XB= zVhX9!uU8`I;fUH~E+vpmk$aJxl>V|He{?i2|0i%mZNz*yd_EkZOl$8hSMR{K3LgH7 zbcFR_6yuX3HE7TzJ|ly+fEDM}bN(9r=*gnb>=<<97Crff5^9;zS8Y2N4SfUHi5-Yq z@p4}1GO7{YR0UK{DAltq)dT0ntl8C$u3+Ve5+a9$5MfiEB2_>kf-1X(bLmVaMpS|A zM+earMld2c;h^^4-QK>W1zY9}v=7Y5L)#{KOHPaQg=efs5G8;Yp+HE8u9!#-H-{n^ zlAxMoPmknm)~vs!poOCwou$*7@pPW)o#(z>jW>)W^F-J1)VTi_#qI$(zN(36zF8z& zS65z_s9fDD&+T@uS<~w<_CE2r59Gf)GcZxV%$^U>ijzn!a*-NAKu=S>Kjd;+Yuzo# z=P}UQ=+W*F37JMv+~3#NW?ADFoViQ`*ZCZlXl~Ao?%0`mXHL_MrphKqll4P8L1y<= z*A=#d+z*r-dO|SB9b6Z>H`<2Qc~!p;$j+YEs@JckjTu?pEDR|NcR5aCRj6Ls4@Qnn zVXh29h0OgBYdPJ5O7;c+B>`F7h)>%w5}S4voq#l)yx*aZ z0wv8G-0yiD4YZdDb{S*`Gu_~|8DjovN+mNI9&mPvEFoi1+aOW=26wR`)_2YnQd8eh z49?>0vc-ow z2IA4xMP{DEjApV=oGA3S7^MEdkt4pt+dp9LaP7UqZ3fa?PzzjAqyc4suKH??`Y=;| zdeD_yGNK?D42Q5zw#SACUi)Yyxr8tJmlMV%NUV~6XYzXD;)112D4;AXTv@LSoO<`ez4nQP;8~)T~()xN+ib($=jb zKB*lR_;v!0Q!J35!{?c{;IYO>v(r3WnH9MN0q*I=-3u-vrFH}*gYt>CXR$6zM~YAj z=?3nCS3cqtU;un-P!eI$Q3V(CJ{Fez#n-kA00Z|mCi%|VXe%1^*?0Pk z9ej7Wb-VVqPr}Qa*DbC$jJ0=IQft=LXm>tYrn(14Q$|jg$8$tqd*(J1%B*O7<%5h= z>Q=+vp%mmb+$;h-4)b9%o-<0O$n&Hi$9&R7QpL+@N)WJ8w;+H_vPy17aYZqU&Nv85 zjRRJ!N=JcRwv{vQsq5By(6ejXwl5aT7bAB$J_Qv~{bGo-x&~rcQHj#pFDjBsMx(H! zC$zR>EQrP%_Off9QDFvo9OXMqYc`ZlkJ{1=HOi0@F`X#Ht*Jd8Oc)-<;Sd(#V*2T9;R*HGx8>Q81x#Qw^(NNB) zxknGjv6;slnq%@HoW?Y>fsLFrxRKA|<@cgJp3tl?Ih)r^57dURq7f-0&O@{W#5~8Z zh1?gz?d>1+JbrA_R)XEjl~;f-`!>E=T!ch+abVLoUc?=qO@jN36Cv?_^rlz&M-`4uQ*)!I4 z&!d0*!v&88Mj}DxGo-;Hs{WMpxZ~e7pe;94`fqyL@KpKK*qqqZ@~0YT{t!G*O>>@` zea>0_podE0<33I#MHM`i0_R+iX1T}^cpkqUbZy*o4M_-kGM<|QTWz+R>ATtDmUh_e zetPgg=hDSn^9-iyTdSM4ZF_jzwx)S=S3{1yJ6T5+Cj2Mn3&|KzlEIa2kLFgMfRJOn zTfJu>L$8xoj6^KAxX1_r1rk+NtvPef^XJ*mPcQOZ>A2!qbXrbdR~Bse{Lmpea-zLm zdVejp+SuY-BTr6GS1mo6>iy`$4>}(m8IgWhf6-yhvjPDKnqH=sMFq7vH7Hbo{JGyN^CV>ScD1})Pi9BXrCXoHG+=`{1 zI6rD7ZA~~5&bPqXw38AM*_)DuBR`3taUP>cTsaGAVJ*r;ADBPF$v_Gg&nCeQU1=l4 zNP==>F|6nWB&TIBY#nK98)2l+@cUD#_I3^dbrhDZCo9xoQ54J^zj!>3OeKP9(MxYE5kDuEn^a;XiSlARU)vT$xIJREAtYX4 zsx8mnDscS~Rgp)hT694AGi&%%sD&6TZ%mHuDTFzEI|u37TdBs zxo)NeirUou!dU2J`g)4dwt1VI1I=DT0y#q$ zl8~T~w>o*Cmf(nUILc;}&w%XMxd{M<5RA52e2{C@8M?_PZz#lJ4Gnj^RW+!FxvHk- z0uYVG5{fNj5GIfxFrE7oDjhaj7;ZZ80R`yf6f&P zP)ctkXqpWo6yl8*tw+ZZSf9o;87^d_@;tk|Z=i(tgdp{v{=Tp)W?4XeaLFDco<8XB z6HjdsL67C9A2Xk^XtS8TWSJ4F@HeCkIn++&RpX&FJVL+N*7oLZ?6#Id$=XvHjEcN~ zC#m&d;L)G7)`uhE2p2-I6cPl`L>Pi_SRg+CIWav(&b;XjB}TcuZ6mQVS`fH3e|82- z$7Oz>m_9%DR98ft{CKF3=C6My8fekbIJ}|E7Ioy)0M7fR-+a@&xxNaJ93yq=52s5|TEs|IDiBmK2tMbcd{W{RR zwq)6=Rlm@urpD9GOFZw}5jqOS5yJ%WzQ9+<7EfCA(f}4d3&kT%!K);u zXBvpuK=AAhv!724^pac++H;|38ayliuzd5Z1NUhFgV(YUiM$`ZtnbgiSFHJ4;=GJX&feJ!aue>Tp)wHk8Iu$zNI#cB<#p8nyW_Ily%_z;$uM`_7H#jxT zA4YxsO=?#0l#dDvSzR3c{wl6^W%G;~*j&q^5636WF5_i--u%YK`Q<;nHgDboMkomD z5}xzv3x&~lt33UP3e*hZD@6_Cu5cj{Pz@*x$wOynoNbH?ey4&b8EZM|5{09Jl#$~0 zu|)_8h}zVbYG0bFZI_iJl_#b>`8q@7dQ(0#m&#TiKplQCrMhis=r+=R=k7LAzuu@P zo^cN;<7HG@LS46@r2ihAJJO8d*q3XW>Am%vyZ>CpBk5o;Cm?{tcVPKo)zkU3NL#kZ zq-W%mD%DdFP1&{J$O9!FK;LXZBri!Ux!_hRluBAAr`+;|jF9c7@x&xOL}{uLx*U%{ zq@)G}<5DseO_3)cBpe0Pz(LNn&^{TS*?ni*a76+!P8N%h;EK_mJly6*r0-CWh|0YY z_Hq6c#BRH%n-fXYh$G*3K5-GBGN_~>8nz!E94f}5O@*bQ53ae49tY1pcLV#9Eyt zvJD0WHN8CQ4KT2v&azt?B~%YzL);s13Rn3GLvxfnKl!Ngz+~A5F=DTI*!}K%%`q!eB z?d?busqC*SQTSx_I}N4M4|;<2>I9kc*lE@g1rgV^r#Rs?_rt&<-4BP0-BXT4)f|C$ zuB#uTXoXb8CtZ5>5XL01nvT%wa;dHh-eUK#Rya2H{DBU2(H^xulsrPk^|IwP7V{qo6gBk(7{ig_1K=Po^j8IO-hrasj{i}O67@}#~jMBnbnO&y+sR)wio@Pi2J@q z5g>pP2E2t_VFQ-tKFjO)+n2CGCJEsH8zG*NALr}1v%k^CwPA?FUIBQoI=)<3&es(? zcR7pKO`w$Rj_usRPhPK7*=`sP$(wYecPE+{$$`D|OG>>3@5n^7Q=R7HA;@=*oR^W~ zC;&YN6$V-)Y2b8GS3o#iVSPJ+Ly@xyO2zHT53I7#g16Yq9i|bFImv8`!~si$#iB7( zBBzlAf-qPZZ&<#OeZtSMoGa{t!TmD#q=E0T5){5YgYPgln0 zvO~mO%vQjR*($Y0@h1YU0cY+)tn-2kKXy1A)LLIzx$GEZL%i~XJt*ZRoOG{ z3Au~fiuTN#myV_z%a+8LvI(siKn!f z+)znwG(Z4FVWDB%7;BCnP0hE1uFA?tQcJz43egcN9NR#r|Mq{5A7))(jkEqedUckZ zneZI8x6rAzOU`WJ$68(V@`WG25&)-T?k+|Kx7|Tv{nbXgNK+!I#OxWnoWw}>yz@2FEQ$T5Zq5&!~!BuLVol9fu6NCh+XHu1N zX+bRC3S%WMx!KD-tLl7FF%2R6zE|)?w0%4ggRwB`pN|X=^s-IWH~07-eu?0DqI>2< z#S0s@Jo4Ft6_p+slb3$q6k5nGf}ZW(>&o$D${Fw{N;3|C(-TFvouZtc@9y!wjM0T( z(~zOeq^~;UnKDocF(Y$=o}pawQRGSv?^y|R(s5HY^cvg^9T(({x%Ml5!&F@w9vpoWT z6hcAU`7=0(qtuZQ($#+LpQyj`oy7xx+5!D%+Ut(bh|>PUwoObl33av}kd;H7Z=|w} z2m*uByn~e|-eWmv1;!B>2$Pt zCyagF#5qagp`7G@w6gco+R^99;q_=DJ=O--;-U^^7xA@QYIvx zWNlTZZ7lH>wy&qttk0ktC6V-92PLpeS~5OiU}~>B{hPf)w2o3j9p^@(lea{-6Wwm7 zt%vmJDH;Kh{O~7Fqs%K|*%$`Okme%6SyuT+;)*)xs)gyVZx=+yM9RB*Ft_-4Jv(4h zMS@>7Ai$#B%KL5@;z8rtw$#}(c`b=)-U!s5+Ruh52S-P!$1p;Rr&+_|{Bv6Spa-aP z!w)Ce8<9qP!r}1br0tD#q4R@vsq4I!7is)!{8Y5~^$#Zg6!>%E!3yL)aPk!^DM6DZ zv^<=T6-+5-e+t<^gfTTDzbycoPq1X;Hc|4JX2zpXE!T3wk$r2`^DFab4-N&`qqGyS zm1yCkiF}D4o<|pVOnrAm0qTT^zuYzO1A?;|OkI5(w z1w<8(?@R%`T&fBCn7Z0YXr+|Z@??EUK=1$BA|fpNg=IJzfp0X)yDyTbF?qU>EPiSI z@mjx!4B78Kp=#}dImuw)kf8XM=3Xdp8{wQgZK%hdfXiU!@dpaxcG{BNR>`vVmKFdp z^CvEHoW7g>D1IjV$HnF=g_!aix#{r96u4}d|JYHmxb`%ax9y@pfoy)%Djv|9idTKJP!G{eiuiiC4;~wQF1>? zCD-u?>sj}ihArd1XLQ0bup zEFx`3@L@&B?s~-bH4Y>bRuXR@JcZYU_1g({sKXvwT+`UKta6ZefejW+Qfg+vqx0j+ z);ht$IlfgHtOR3R<4*@h1BToB^m5Bc7MF9&7OwEy!V9;h3@C$2K(gtS9}2fRTqj+t z$uMj`kkJ{kevHj+?`PL7y0p^lZCkwy_B{LSs%AU5^nW3f``W(=PqxGJEA!oU_hgu; zn0=kCEqNuic(zB!5|Hf_sk>YA6gLIP?=kU@2e^DW%}R^Y9f&GH6hBPxXU0ZF?Kh)I z-$?9kh9Tr~gXiSuT-QFBG}3gnwyv(&#|}7F@fYIwH(cN97g&9+(ydC*LdJTFdN*w3 zIetXhyrxzM-?-6ITW}rE^^L1GtXan_)l|)(rC&!TfRvc;Lw49!)SToh`&f%1J>+gy ziaY14DVlvR_*Ly|dbh_)>!3LhNVZ>wn!9)JZb$2AlQ=}eyJi^Dc})VD7inlvU6#XOI+K zr~~E_F)BlO82q;{Pznkl{u5Z)T59DXc%v9Xn{KP2jokK=+WqU-myhd+TC4|+X)-w- zTyVou$H316H3)8Y&yv=5UxRLnW*X{!(?!oDT-Kom4MXg60DF4i5(7v?>_PYSFnGuxAVtUeJ$1NKx= z3e#*~pkF{pIH0N8r>ahcj=HXEZ8V=%;1%8ihgqlPSLS<#j%vQ9TQ0l<>J5tJX@9|E zj{ZncT%J1og5m;L`X^2B9Lpa&Xf5YwBbnKU(*k!jP~yT2agnK|BVjkRmz20vrpq-D+h=J=+pZf;%Os>RN_3GC0L zZTT;$p*i?mZVFa&6-;@?YnpA&&|-L^&YAk>o{Lz4*W;_@y4zw|JP}K0cQQ^X*lIQ# z5RBxRDSzPSgbwQj+#0iZVt4KbqAE*X35Y6Y91rzVe{*aAJ;CR92D*$p0o$zH?!) z-_ix~2^@~cn98b-S&_A%Oc_?4tXx=HwvZnm5*!emcX>_dl5gAfx%A-won|F_Wm92n zsa6u~Rg^y&Ub5tzDp+ygG$e~w^H4bG!?VdvaxV~n_fKF>AAesOQpZ)4!QWofRMila z^!!k!>~l6~{y3Ay=UiB}{KLb-1FF!)jrt#@82jz(5Lz0^lW@fw*>tOww3PE-2!Q&bi;>?7YA3nlxN1M6WI^JaU=Bhi8_|KH<_DTRTdk;gSsINSp20JDdy0 ztO&Dm#*$r*T~u~XaI!eo!zVtrSW1B=4~uNbBK7-nE0X@lgY;3vCW3dU5v%(mvL>_uo~bKn$s93 zjWZmQCfP$se3t7!u*mF^z?y~gS8nTh&~LhO?YyGWqpqWsuLE~}$?D?O`U=Zgx_%W* zU;Ia&abBQ=nnx1uDgbk_Rqn*?A{!@^q^_w^-+!+)G6oEv?OdWZH#Y~xm%QsinV!v`5RjTV&(Ym+#6b1gn*g`yEJHA%7-OAZ}NrEn5=8+}sk62UEHamu|fO41(|_7Z5Fvxj8drXFog#=MbcRtXIA zv`D5zMAulXjy0hvWGp-n4{r;Y1P=wxuYQ1Kk=4mhc&4!`!!r#NDQ9NyKJ=m3oVxDo z3fQ{T4E#h;EJ6M@4qV}AYN0WZLd}QKjJ?;Yi|y^#x6Qrq)#QH62L`HomsgBblnZCa z6`Z~~HEb^3BOvHE1syADZ#lZlmAj>LaS2>KFR3e~GYRZFSIO@zU8E9ze2Uz!K-b`D zv)!yk4S--^4q<(d2e*qIJ5p1T)WjWdIQks}kOw7qk`CdA(D(57Fy0vS?%m%%FwkOF zrbZcWK}U&7WfU9LdhKtU%&bhvoHI21>vbX+Kw$(B2qx^;#;H}wjnR3jm|y<=)cJFS z-jEP|Nz=s-CG_s-psphRV=v=Y_Wv zE4vh){w^3aX|mqp<*sAl?`NmYv(APAWwir~NJ4ICYH}=J9!mDbcnu5y?^v|dkt2C| zloE!Fu;GYzmZCobX0r;;Y;IEY2^KIrNy3fC0u-LOoBnaJ!JI_;`SjuR!F0ii>Yg*t2_Nw{6*-5iKbP)hYWo3@7ErU_ zN^Q!gSeuxmlX2ye6Vw$qDJWC?UW-q3BaRndC$JU(D^XGH^gVT{JjL3m;g>M$;Ia^~ zWYBY4yvJrWaHqKdfUqjxr3j22wvC3ek6vrk*18raalEzhWL9G-7?qh@M>vMy!#9pt zzqD%U`Up+rN^^~QWl_oGNL#rK^RufVtWv$Cj)~5TTy&80-_J4@2SAyDoo46DW2~N^ z#gt3$+(;VtaF`Q((EBv0stASSJc%8?acd$QO}|p|7i7!6nMzK(OHn~h?}x^&RpF@=x}20{7DJktVR@Q zoRL;Jszg;~RSIlqPvU!$5IL=EoO9kVjWXvvg@6jNEhmk4dr21W&0SWRpYz}HeP5~m z9jtQ4&a|H876XPuDlu52VxA64HB=pyJCnYqk%nPNt&3j>vv8U5QA|F{{3r1QFX*4= z&(+x&&zec1>qYI%DQ3F}#2Sq-C|&%bPU3V*5EoMT9U>k(o*^F30y6p~`Wk^g_s{_J zdOXk?-1CF19xO`{Q5*nsmHcuBGrhLa9Gc<`9t+xK5g(o+#t)YrmaaPAhWUIuHZjCe zL@pd}1`|N4G+QLPFe^FDx1WSUvp1dL9+JAD=u-@co%}Md7vTUwnPS-f(X{LW~O#6>ygW#EKp!#C#&0v^lj6Nit})WMbmBI z;B>`|3KOb^G1dBBEh*W+#kC@;>%jmDw+5gWmy8~8?Au)ap86S$SqH{_ClJCn2G>e6yodKdv@dkZ31S z$v=JXbIdp%EH?oou>>yoba_^87)CD)E-aTbY+HSr58hF9Aw@UEW)wHy2I7ajfQ%xb z?f+KQ|1ZMmbP}BjPOOm$yn(eRACC(5*I zU?50BZGbsK-Vx*!31e)tk!@x>Fe8R;jQdF~?~!*;z0h@_p>Gd}u${GoYEd7k+|3#s z2}wK0!9!BdaeaqKHw-?nr-tC1b7^fVh{!Y~Mt_rVz<~yvV8uMP42b(M3~5eT4Vk3z#uPt|f2dxF6!^L&EF(roeMdN0sX^mIgK1joUND81i1 zeDu6+(lWU_Gj1Jc^)MKq!ULcjZ_-$Ft%a~C4ICgK`}h{Cstl6p#5zj)qoJ8u`KOC? zzE=UCTy=jBlcjaeXTmMKqz=wRJh*Wf4bCs8*-w5XVuy6@uGE&;^;bYT{O_`gGru)O2LU#ShtUWd5leY7%-9tiqn3US6J_lv`S!!7o!l z8$eGYxcgN0eZ*S8pNuP)mU(EAa2ag2@4u0*l4QkiQMEe#)$8(*h7#lrhUVNiDF%aq z&}sbgDw6co8WUx?zO?*zIzq(q7Fk_*S`s+@{Yz&)B?YPX_Hh z7|BvHo2YFWs2oaDKAl3-L`r=rimMclgw`0;55`Qn#_g7(m%KF+F=!z>WQvU-vkqDC zsFI}V`0HRoI7;#|pS`Scs`>Mk;bFg@*DCDm@rLI&8&)n8nbu8jDu>Dy2h2B`<`)=!Bp%(YMkBj#0Gx0bQr#D#Y8~+KmQ^%TUxecdken zWWvum{5e+kJYtW1{AJ<<+k_b7skNg{Qc4@1}>$4Va4FKHVe|7x*(%a{CP=;j9YwN;f6 zhBt4IZuXVJ<79g5@ZrYB-m%+nkJa%S_AXpF*BN&+D38Nv2V<9WhDn;hQY>oP?IN1( z>6e6L<`%Wvcx=APJL9$cKao_GKsbO2f0&~FEMUsLgRuK@q3cWWzNAtCn%44 zMyPSWycNY#j;VN{na6pUMrcDSO+MXgwto3P76XI`)Wc%+KnQFm%@~UK^pj*ikv^g; ziHs=Lb@2kHivvD0$$m1zKoDE9vOXdR-dDauQYyddBl_^nD>X|;^2d18_j=hfC) zty-HMA^8g1F}UN+Q5nprxna7HO+9-kYDc3|5h$@zff3jAVbYOOo=BQ0 z%o0ZRzn&2yWv+2iW_1)6IiOV?swL|O2d9W+3}bUhiT&Aj0|@HedN@W{P*$qcaziMR z>AFT5U}5t-<|&wDDM_JuJMY+xnhC3*h07k<@fJ)If%+y2Q{-m17fUm>PS^MJG@wOo zZAAoiM=xaklDOHCDGK6-3;`S~Lmc!qzoApu6k9MI*?zjr=pzY$A2eiY2h&74>-mKB zc^q9TBc^6Gq9N-3KZ|*>GuORQfriQoMdTY-wbG!z{iIFepn1p1f@uFI+JMNjewtK& zT_80x{RtE@;-Z7Q|8f)fLSi8g3KDRoF?^mi)q#?j10x4oQJ5T+vB3Rj+gT8MVI>RF z{4}he6R_OPQ9s*ueN!iqI_jd_zrjnwmz~kHgmCc$hmliLSTBy?Y`)!L={r*>%dy#c z1aFWe^XSiKX4_T_b#G}B96Kqgy002VK`Z#1{UrWnt#Ocr-A`6p=Ubc#25g%36BrS? zg!IZtMPQlCHjs<{p02coFe1SOx1!e7uHKClBnVc~P>5UmoJNx&?l$@&Ir8O~u(82_ z^(ww5l($jk^~7{eI_q?4s^ZSwhEzZ|IQ9DZJc73}Xgr9f8@qkoHbYeU>LUFo?7a{l z7tsokiAG3A?d!{WatPW~YX@R6we1R=vJp0e3nkfGRRvSAoHMs&m|pg zEbB`!hOYTm#()j34Q~BO9Osnd$wk+|fXTh*jtqHI&^-J$W*X(2?AL6*LmWgzOOHQTMdmO zHI+I)Vg#uv$#>iyIk0mPGXr*6v_4ab_Kz+38g|FQ^ z-KM|7cgN@Hx37%oFC&(FrRFjZMu5kk+PI+-AxXG;(+21`8mdU_$cR^Voh8r94P+s= z(N3r+9)hCP($dq~_n{6Y+TB7!4>Cf}LTUuI6OHagp?CB13jDyBu<9Va^BFQhC zzD*{ole&b0&Xi7p5O@ooqxVX;m2M;I420F{I(5oGr0G($MD8&vTU}+!Doo1+i8-?t z+&e%GjTs04nn&;?P>*z&qK0L|Hx;bJ`M-v0V(8K^a$&IwHT`tA}>Enrozj7q=_6%f#&TV~Ss_rcg43f&J!YL&= z0k@TfPo%KLr2}~Vlh4IACM_SzgXbv=p2+dSABpRdm)*Ek;c$e)4vRAItsao4hJ>lU-ocAQ>OU^@6MeD=1UUsRw;XFI^c|!G6=+7 z+vU=)m~xslTd#yTZ&aGG(b)_!UYS+3BuoM(EhSWXNk*@hksdUXSQ1jLRZjUn;Tl%} zM(H=0s|Rxq23Ib85zo(0TKg&I6g&>U%^L6N-ZZ>G;iaqSgf>CJe%&uUMSX|JLDEBl z{l6~q)w3z~jeNV0bb8y!$oV_G!V@dpgD)@cmT&9TcQ4SE*cuMyk!*sZJj}(`o2_@0+zzM8-C>uJTZ&!?nThji#l9{M=A5`?DqEA4II6T~f|p7T7G!jHto_xB30N3mC!Y*XOmG ztk%p-BA{z$qgqz&VY#`Ng=Mmp88JuXVcN@0mzS9MT^SkNpoc zH}@nLdK`I_GV|aAy_v!PLaQhKcma|DQ90#^eh*E*a%ZDIUcWp(eaNb6b^(gDb;rVP zoCxdFRGwZQ_95cm@7jWzR?TX&Xog=gdDtVPfvG5pjS%_>_>-dE#t1BpaWw5HW3uhM z%G=`et%0Wf(k7*5z7P3+hLV!sg0IYtZY#l2=cP;O#Z1aoSZ<$F?b=XXQtm%S6&3#g zfT0%-Vhqk4JSR16ofV6gf1I%Ra z`9J_GE~ESm`#v>R$1_{NVsg;h6{yp>j^x`;a`2re4e%n$)vO6g_VrGPMr0J6eVZSB z-wY7B2|C}8l(JN%aK>d1bk0;%Y`n6uo1!5rOB+~Dv4U%E6y;XXTNrcSLBD8`3?B@>=y85wqO&EfI5=(M*oGWb}O6I0zfXNEs&DZY=HI zt}LY0z>jQ-w~31irJm}vVlU1&Uwn&(UQyN-#BmCZU(ND=(bH+|?3;0AVM`Ah z-zU3$8Hwi8{E`yBNUkcFl)34HIdk6*IBB5H?opWZvZ=+{VtON*=JOC5CP~5>A^%_r zrrq|I{L2R4Mf%q@FP^m-G^%>+wA~DYrNV6$O@? z0kx!4rRoOv`@b!(JYlf&LmLT(USJyh5+M8qX zMhlna#+6H!OVc-InZZB$*xMCB(8ip1oza}Kz((&1c)qKuTatYG&fU+@%xyDn)q6h~ zy}5q9ad5rtrLvTB$J({D9lSAPG#SV0G-e6|ILZtyvLza4Y!FIXkZ#+>*9ic8*x%0( z#ee})6DLBANxq2G5u{ww1EoM=Fdcmi{wr$(CvZATnzs4(j_rkn8H%@`qwd~%+W;HO_V#2|*=_yyH zFW@G>YQyvmt7dxU96z=(?fXH=n$0z{2aB73__d2`FD_1}C09r@0VV+()K=5FC< zwqp6(?7JKw>5a#V&b_R0I>|*Mr1hhZGUROyy0_d2ltyKCH1O9HQ^7it$z&bAV|#R9 z($K~{&;G{Jc6SU%=Q@}L$9^56;?jS6r@vqy4O;QIeQdl~8@&8oT`%X+NqGnq`dM=W zuZVGyQDot{IY_~Rs{3~dR*X}Df?i64cHq)%Nnt8GMbH~s!iJQiG{Yrxz3QV$v4ObH znDj8`oW3CUwHzBl5t*;!GT z<~Ao5wFN$l=uHx&mC?8d0JCQgdvlc z+50tYEe&*}EOWzQ94fa2X@fNV=Sowf8snqBC4xc`FjwAw7n$CjF=tMOkMXI)0Z#0z zn(|mDjj#_-^&b#bUVUv5$q&pqDRXX!ycB+*ACFWv5Sv?1HiIq?;{J7`CEfh%{?MJtFd>p8h8C z>7roJrll$zTXB3!aZ!75aeGm53LJln0G|(~4?lg>f8u+kG6&5~T&peov5Vv5B)sdx z7%3YQ(cGM-%U*t1#F>NXKeIiaW+r?sFDbk}WQ08@V`$+Y8w)iFUxALe+NT~TFN^7^ z0xw5O$b1?41tP+;&Xy0#PdZB(^!!Yun5v4oa@a)j8Vm;KnNE*4&$aJ$6?^B_&#tbj zu3o;JDq(e3vrwO{a@>MZLqI|y2f;<@o5QvdIX|#wlALr`*lXL~-X1@tsh|}WHs14U z%-y(1+I61@1Yoe?6_?&O1?A53!$W~9m%SZGNVXqqTD2-;b0*78|56!??|$ur**JBP zm4RJVwPtsbuBW-di4cNt2~${Z8d=aX?#q#34X(LQi}u-;bS}(evX#|y{QehcY)yJ1 zil|{PnVwOF&!Uq0fKaJC%K)&y&f!fQX<9H$Z+#<~rfY7>Td8V+F`8 z-*;?WW-xirywmLC#|>7aJ|5NUt!IuK!OOjbYqK~{@aF4)FI&2NJ2T@d@Q^)2(UQm1 z)f~#6T|?9dRi%^YNyMNn0$xGgCRRJwu=$*_Jpf6B!5G%p1q}l z!DLXW#~Ex8bEvJwY_}-u7vJk;)}XuKcYH?f+_2223JQBas=zu74|XiGM$Bi2Q#mjJ zf=xx*c|M_~;dS%8E2;LYOekkOJqsH=y(}^kiNu(S=TJ&wTDWkz+S{bMCgLsL)==0h z1ln9>HQAc7qV578_b;s+P&xokYb};i)|->D<7(%*l+tZHE7UqKC)^tdoO*9C%F|qV z7hBcsiQ+3@7b)@1L!Xl|n!p4FXHzkrGTC0xYVNkLIS|y>O!+jAO4GbyXTe9JFnK@bdJ$`r<)Qjj|nWB1<=Y2n#0 z0GvAT3IS)tSR2Wqld(s`fXuSt-wIf^;!{XQ_U32(LP~NBgJV>UXYMqnv+j@x%JMW1 zhAEZ=S0dhxN8RkZ`$;zgc)y)SETkwELw={zNh37H5r&sXac%1_P`oJW0jDmxFB$14sSbe`@zKUUtLN(XSSJ#y!Ocz^#)i6N`t3<-UE=-9EDfgUlbx(^fs8t!xqI4*a*CUYY)m*6jd z!j44BO>3vWj?VNEK}_5*qQwC(06YeO$<7qzFbbFD5U@TNylR?7{9ldgoIhQg6;xL% z8CcKOFz=EzYnCi+2OTY+s*DdM%eg+OP*R>8k#gi@Q(MP)2ioaK2x;qAxbeQn51&Gl zQZ?;=gVExe!`=erMCAzus|x-XBY}QXKC2o9irgJrQQF-)*3F6#wYzs4O&Is}hdQK& z@`*(>*{Dj?7nJBwNF_uUeJ*{AF61r4zM18!(b)<%q-7X*eL#R(|>3 z&AWRR3$JuPn(GITn3$}ZImUWVlig535Q$JwTszg z3c4m5E8f;mCbn;<+S+=k$$i)q#=?zm2TJQRGwZw8U*KC<_(nPL2C-kcMNK>p4mb8c z4`1@aQ@kdH299H_KBbzF@I$CqSlkMQM5+}iyn{2LK5(6K{|NN$jq`bi#3mlpt#}hk zt0M5oyhz1IvhWFILipcU*i61LAwJjCpyM?rmhqsyiXJGbYq+1}2dC`|ZC1LyPi{mE zT^|I5?w6*}X==hz4~zT%miVZw%%-f&C_j-3IZ)ag7A?8fG?(6Th`hS-=O^&dIPv9^mn7HFGlTUU<@xY>n%_RSBT{vaV&r=FH%2&dSQ+h=}1H zE{F>;_4^02pmJmIkqAMIF=pQ1fclsU|J4Ug!>pqm04|__39`<-#Q&*lbh8t)X6rOX zBL-F%%Ys@+5Cci0gD8gC^Q?q=)`+#&B9B`f%!0wcNMLPCINL+BnD$riV_Y?@pehQP zpbYjAYc@y%8aekRi(>}k<@@>*`isrET_BJLs)jG+DoQ06DpZO#m`CtnZ~J?keKjy7ER*h%H-Us12tQqKIjfJm0Jg$_+6;oO5lID2WXz6PnD9;5Spn#v1~^T0def1 zO)}RbgaTRfS5EdK+b#K~(s22Hbv!VstKLYO}eTl2ekHx#~;yFl_xcN|`jG{!xbR?DiWV0d$|TWJq=avbq$$kh9arv|Hy!a7|>;!-|P1&ePBS zbpxU{vvO5WsuIl;s$GM_E5M6+`(yXV-HCkyIc8%;on42!IuCT23dI?PV$(h_p_yJf zagmtJpaqN#n-gUc*}m6IZ#xEPRTQ3I9QRs~dZq)ySODh-1q=yi!^%am(_bLawQ==C zu|B;adsZH%@$^R%ZF#ePegLP3I;c z@Qim{@htt@Am@s8`&8Gt`ccSzJVoBiHO z7#-6eEda6Ajjb0Cut_kcMST-5#5wHp;;?dA$NE6uWY)vUH>=q!ltS;JOa1?H z$3b=2Lgm{60W`Ttu0+{t_ZOSP4ox?yelY)_DrE1fiNy<>io?wRG(AzJo6}XWLU5t3 zqApyR8NNVC&v!+(?3(+lGg6=T!?R!KfM>7#O;9l(%eq>kI7h>?AM)~MyXMSnDEkhc z*$USjHeWT}J`Elrx#98wIp?@Pg1 zEXQym82dU4Xg3GkKmglnZOj^33+pSpc>$MK!O>;zl{|}EX}~BDBO{G?Heli=XPZqk z3>7HCx%Y!a6+)Cn2A;$j#o8cQw){Hz3*OTs$DQsQCtADs;_{w*^zP_O8#c6-R4G*@ zZw(~x=;*j%>jW1NOdnw@*^WlDUf=RHR|+IAy#NK?Lp8-1AcS~phs|J1^QNP%GihF4 zYj7A08^j2i4#w|Ok8G6@*O7;p&N}Weu%!}NlX;=CqQbE_{^JN*ZnA@ zfWniU$pPbRZ->MQRwBoTXi?O2!Rk+QCDaoTFb zoTv1j0TN!(YN^B9@7d_=A-zAMLkT4*0g^aH{FaRinPbwZPSq{H43zhr zUot5tRagpIKeuFeDNJ$xffmwe&yy`;s*x7)TPpW`AkZvZE3H-ORH9P7E!57~x4&1(@a zF7Lj@g3X1eY{OULmo($qDztwGiu7WIw|ffUfLg910^V#imaR1t`ay}x!WE)gxmwjG zwcRO2pKCG*nd3;$uj=~7+f_UJ@l~@0dqjMdt(gt|#}CtU#>fC~;|nfmcyGzhWp^Kj zJ&S{!3j!#)QXSo+6%e9*fBZcT%{^Yt^D*b*&2H($Eq|)?CbxJ#A65KIa%9fO{=R-) zlh&8|DQCIq|6fV2`)jXRbn4ryr|MPb3toB;91+8?ON!~~&tkFS?{mHi%o)4=p8}Lj ziVquy{qSz5G2@zktOV56cmFfYFzFc3lheAL1oZ%w#+NE^dH)a;wEeF=Sr?KXo}~}k z=sXMjeTruhCc7244DizT52}|=g$X&WoWvl(K77>p*K`)$l@M(d_itej6+B5g(unH4RDA>Bk z61gAUu82(eUNj|qM82>-N{eS>@q^xe$i*Z~vm~qgp@sq#*huUK(K}2-By^?!h!sx` zlR`^p`eL<1$Jt`wWrPw*Xe1`j zu?T4B-1OaOeCXo@=sH(dG@F{%<2Z)Jw2e>EG$VpWvubP=Xw!9&o#qIPQ!9i;L`3x4 zfTeG`VQR4BipPuyB&cBY%bO8TRwED>P5-6toEW+AD^^xc&K`8_eDtls!LFj#dEGE6 z?lmZKO@-k&u)&YR2z{q74pG8fslsqhO4SbyZwT*R(I4 z;kn{*xyD?T2RTMlHQeX3Pqvvn@^u8U*Jd09dc7f4$`7)>5OQkJ^y`m5{`dbuI#Q>< zrhRh2{x@&z**5BtxlWZ7%C_zbv*rP~TdpV_q+`P8T^eT3AQ;Alu?$~(ZRFM0$||lO zvyA=YxpDo~@yeh89jU|KEg7W~JC)B{mM>wQ_#W#O!^BcA@VzqDW$oX<_8(Zc;egc% zo=ZV(y-o%7ToM*02klzP9R+rD@)7mS534Uc4mi`IFoE3SUb9A7E9OnAe@ROo_q_EB zrNgBdo6}77+(r4H3M{h=Rk`hFE?BNu>>gZst<1kGl6v}Hr*SPjr33>sK6t0^HK1q! zJ9^9KZ+h%1KkeRov68!OBnYntQLjU%7UX$9$kRS zqJr)uK+8GDqwcZn;T~9Ya%M0@1@%2Uo%lnQ__<|WTf6W#n1^}3civhy_wC$yxp;)3 z@#X?{(t?@|A`${2y**72C>_F>h!L8KaRkqrUAiQ-*B3OHL3xsW)jXzHoB0@iB9A|q z*|Bppla(CY6AWUE#4;|jV$-d!UGqur@9=lGYXaDcgt?W+Hc1^H1mBF&qy+{sKzjys z3fi89&;c9Xh*2H^KN?g1gOir4H|N|Oj`ud~eJuBI@h`w_w-U#Ymmg<^G1#ngzoZ$1 zF_2(g7rVp|sSuYnn+{pCWmdjb7Oe+8fxtFFy1_#nlp7ncPEJzHURlD&vAg{f9|+WH zpzZ#bY0o`QU#fn&Wma)fdNmWt94X$D{1)RFdwk-a?s;00&T;piu__`iqdRObmQ5Kbu=ei-M+EJMxQ!VD9?rfsoZ{rX?-Dms^|G-xq)ik}g@I zO}~xrbGpH>Z{*^z!7zbwjUqGKx+=CdLhAZJ4%POTt+cL-h^O(bFEf6q&-ozo?|-Q7 zZYpkYCj4_}Pul75i2c@sSp{KRabsJmttJX6a?&SD!%SgPtrVU?q%H?eJY;!lW2k(^|g?pKV zXrdq#yZ^r6AlMMOowjloE3AYicH9AX)$#w$Z&?bSebd*#c*SBu;pU?NOx>#+hc|qSy<=>H|wxEEbr7~U{ z-MoqVEQM-qrRKHtbaqk|6^>tLOSd{T@YsVNeNoHnCL(k-V9l@1Q;Iw3(U5cQCkhjbhzY4 z(dtSFcGW&OhLa#&GuURV)y%aQSjYtQT_f9ZOBTjG#Ho zW5TnV8nYu!;igDs5D3lmDKOrPx7u-R^&0Vs6G3!M;lS^0_^f))^D(E%=%QMdBT$B> zYvwhwc=4P$Gojex5USZ=q>QwJ;#;)*j_~En@@0QLX&k~qk(QP&vw7Gv&p3}Z_3W!P zcde|Ew9OP4h-eo12CDa|+nJ%lXoltyISQI>iLpqYmjVHbFlX0tpJA>ZM1V*p$<@F75EOc^B zg4bKGAWZc=V9c}^SIc)DH`C;wP7=wye$+&g4VzQy@iP4$zGzUySb2H&v1l=?a4egz zIfNp!cYYHQF@&!rYvo}JBtY|yybo2N70k2wPc0U^(P3@+60AB)q&JTSuY6Y4JZT*| zlyf4tQ;6sWif9edh8QQo8$%_YrToL{X8qHi`A?7er7mSI1q5{Hsf?I_oR{|W9hR~zl8&X(PEp$@qte^g55rTLvCLfpDaPZ{knSm^*8f&zrOnMsqbGZ) zao|S~k|YS{OA333#fR^=?yCFIGDr+s9)e zwzbL4-cW{ole`kcynho20*1P$qD_U5{8zcRQOaJ!-)wQM(4b{;o$z`><39O zob-TwTYApA7 zfAaH({pivHknUPdenP2NZ;#ltB$q(N)@CDem%wu(76*i~Cx_7pQrzm|Zf@F`$8 zlE7dTgWbwD4jLT}fD~X*)%_1CgIBEVjBI!^$Z1Ecn=nhzvK(ng3i~wIBZZ%(}_z!$z+`?GTVwzTHx)_aK z7zaA8od_8oX9m9MN7E`m2uR%=*T~7(^=|tT>ohl$qi9_6eof6aDIyGWd~`9Kp<4zY zrCSVZ11&D;ttWoVbCZG?8$a68BctU)MxhgKmb`fL#Elqld5xb&UB$9hY7I5J3B?*4 z*uiDGNL?9+1;&n@TT7K0Tu}4u{F&6kSWHE!X7QRM%7!xnw!))Yg~U|7CZwE&?o|kC zncLOXDa{JIPni-XXQb2Ru}vlyg$cEKpS|0i$vO+dx?4w}cpdVCygvDjRc!8&kjmr7 zDLVOyM@AeSL~)~eWDp$$*0T3WtuCugP64%P*N>+>0WKe5D; z?eFw*ky#br9zN-{jn#lT4X!-_x zArZ>?v<-_2uWsLPr76RRO<~52rYjrTtHTkBN4pw9l%(p3RQjwr32`9?LMUM)j2e^$ zR;2m);hOJ)VxUcsS8w!?mp^AQLErrxP_P!)ockWU8dM|S=gUnGWAi?gwrGa8bjmZv zqg(WycS|ykyF4`J%b$-B%HMg73p(%fUb-#A8lY=jd#o^+o_wCFs+`eZAy~u(xXuho zew+nBWoY;ozkbsHj$kN^V*PIydffyMAJOF!wp~3QOhX~@X!<|m%c55Wz>Qe4L_9Fu zH#6MTMRj%6|8(?dVA0%`ioh55s=wwju1zAW1}&hx(bnd5|9#f@DR$9cM16(E@j#P4l=#6D;MR7vt4K? zDD_{(mq%F zZS;79zxh~usJ|nH>8B1A%>LCw@$Wh+!O=Yia$YUVtbY;5tT;Ft9HcxXf*o0 zO;=&C-Yt;+2f5p$g=uVgK&=IhK_(G`sa;=c_B{&uW&Wopi=VXnO*us-h zRh3jh{z95w1#_cWS>sUPR;BFuoM^?o5_eb&L$C}{_0ZeO5?T^$LZMt;E|xQQYfxkG z@_OSLCuI)Y3VQb|6Q{gXoo-RxCu&u+DO@ ztx;JBsA$!psu>mU4d)argJdXb-qt^RNiAbJwc0M($z@X@+jv2{@A6K9=;G*gE_yQF z2JN>q=FC}d%t)&&Trrpn5G3jVc;Omo8;r!VLQ04FvUCMuife#lPD&7i7(q+{3Mj89 zV2CMD;o%{1X3%&L+cj#O+x@P02Z5)!gWc&m_gOlc=LVNt!d0u~T?I|Ajl?u`Gi%y( zR_V!~4NOBhIpW$b`X0|7g;98P!e(&vTLZ(QcZfVu!Zfx0a^i+CJ zw420t%_>m2PsMPbAS%V-Z~%`Q3ugZa?U`u0Kys>=FytrU02FS)djN06Sp;{GI{^#} zEYOz~xOO916G&rtzY8LsRF?)WAOCoKPTVZ1-@_<=`kVgay~1fI?5tl&xP5I0H;YTG z*)_!AoJVf6#^qK0y@6h~PxFIbD0U9~vY|(l<4;6y_9p@zh-J1I+pUsfpUbAaJZ^0{u0k3mwjjV z#^fIG2)-p$B77HP_ib7DBm%iVQ+U;XFZjgppaXIKFTWKqsP^Ui0VS5!-F}ovQKoxh z-%0N~NQHr%BunYVQM{Lz9V%(w0x|ux9CwP_TG$o=F`E_(gVGIR_lsv%(B39|l^19E z_J$40r{f0kz+}$A2yCEV6Zu;Ya}u6pZvGAHbt{AUc{g8i=!IUC8xGA)*xV1l^|S5+ z7=z!#5X{i(LiAV47}$<}BUtWzNj!0n8W*MUqDZqig;e}1rHLOS5^{=^_<3pOAGf6Y z7p|HWdtNp%8G>2+Kxq`9*G}w3Y?K(N#Rf4KPU04$um~4que}!=m-I@q;B`S>A{KcH zU5g+{e%*D^I0rw4p5vnH36Gi8^!sWt`)GnYw@wI$6%#RsIB3vsd;e?;6iMw}u}$51 zpUp1Coe!y+r0Dlk>B6Jh!yAb z)8~eRWo8X?#=~nZ_Y=u*61=l3Dj_Cn#MOg0ADty<9W51?(pb>VmY1kyw}#XZn(Bf& zEmuPYl-=2@8EGw$33Bri-Ewk_ov~shSj-|MU399RGcDO-;+V!v!x7s4YKx`0tLx=t z7mVXwNY@&?RXH*Omft`TD9@n-R3T;U^p-O?AAf(k+5e01@BQs^r-3ydLu6cyuDW@} zP%ZOx%VLn3rvPXd6Jmqfo)kW0K`rbNX299d4+6B)tZ;Xs8*jKzi7a_U9a;v+yGAxl z+Rf8AYPL^qb2XdsLL96OYvQ@VKQyKZa{if_*7!p(SH5P!r1p_^UFJG4KSChH=-z!kTxyS1(d=t zBL*B(l77drYF8gvt|!v^ z#CF=O*^(hJ^IxF`A4%9kggzcPk?RHSEFB=*9a`2pjf{fD(vm@xS z=JKN#V)0mUzNs+v3)(oS+@w7B&OT$OT&+GKST}cWdUAH#^dnu^dq#$rJxu3$vvhau zuMfj2dYKV)znK%xUtLVdTLiLCq|mJO$CkB@pPd;G;Y{`zfE1{0 zZ$z*vfLNd-q{`3Rev0GPbLyyG)!V zameZuMLPXRz$ zFu4l(r=Q%uKWc!}nm z_`g4wYCy1L$V8HGf25y5A{-6G-gqFrxdmt4yg%oji8T&g-T2E8w~0Gc`<6RLHs)?= z(ocAd@#M*XRm+hTuj(C>>ytN_~n6c$-QeiZeP$MYM-WOd4#wl|Tnk)KN|bR(f{I zEr)b?@>Y3p=E=8%*LW^Fb%rhH?n+jWEOHbkpYH{JBNRDGQlF622)RVFbFH_*;e%IF z_}Xu+JYO5upb zB?#JqppR;sP06z!NtWzc8^-p5D=PLZ4Pk{Phc99Kn5>GKv*cBIA;%Wg;VFOlGlG54 zjAM3Ff5C*LSsn=I7sB2gB`D^*5MKYT9P4zM+2aJY_tA1T5O7$TfuQ5PZf|wB#9sE0 z>vkDrkM#Zt#VnY?jN%A*OxV#*XJQ?AWaJM^Kfy7at7v1h7=t`(l)>xU6x`1T^2yR4 z3XTAyaZzYb1|pGUAU&ZXe8l0~Pnx12C$NAnE(??OR>Uqx5H}vm%Co12Gt)BvIFiNBr)`#YQ1jbkt}U z1#$4{31%jE;lVf-3<2SWfDX8N|HQK5z>8;3X8j(Og{MFpsGn9SPB~(5?QyZPH1XV| zAK|vpC^Rax4Tcz(dDbPyuO~quPslw3rmDNnQ!?2p=Uv$_k5c=7hEN-OfcqSMbzb@4TnO?rM zBJg6GX~J?U4h0Z3l<4(gdQQQle$K?6!tpqoV=i2CTyFvcx^MID+T|d;Wy=%_pJ z7sli(nNS#IJgxkX$=0|Ff_tK#`CsKr^DjW8ax#OAnVoTONF102bUJ#!NPJ#W5OJL@ zAza6^M*UV8HcP`R@h${LlBzGUa-iQ$l1e4IolzY&2NS+k{RA`obmWqN0$Z7IJrE2& z*-?m+FsIoxWrYNVX>$V{HiLC}Uq!2ppVl9ncy%Lr8+#NIGD0_YXQa!}yz%O+RY^by z<)DDY5{!Py9`Mi!DHevo;4?&$Lj?KU0?;af2th^^zcL}_qX-E;-wJu4s-aYg@O_3+ zqWg>Y5yqx%ml7LSHzp<@&Td@QIEzgLn3)rE8^F76R$E9{Wpg^;O256k(}~&XdQS@w z9`<=6ry}03V^NZW@CnE6-REAGI!WET=fp$$myd+B5Gu|mFe5wR&1cNww;&4Advc?j z8gp`_KKVk-PNRvUjN~QmQETG6fpsR!q8+Z~Ak57i*XEQR4+8^G30lm$^;O=#6{F?< z<~^Mw#+T)z71jA~3$#DYD@aSIB!oZ-q*V>*VLGIS+4r{JV}qvm12y^ir~V$3k5L!o z7pf{R$ktn^s!9qtM>_C=NF$2O!GtfUar`{!(2)N|g;+X2O#%zo3FC#@a4bewRm zHd1iJgk>9og&JT$UrmxM<+5cRtV;|I__J+oS-QbNU6wc(3@`~~tIyJfz*=&@{Ypl_ z8R;ARL=zpU_MvZS^zjfRw;_9pl~LtD5I@r0{q24zfVRmV?q{O&_f|mOXlW#!j*BRs z6cstl;Ov)f!b)#OJK>-hwx1l=;~L!NLFsidFe830;iPU3d*gjdgR408dCu80PU66U z@#h~;+p=CiNfvUsYE3;Rm4lOm4r?0#d&`!8Zq5dbNV5AzM#f?WW9Xv+VQfS)*z{mR z7j8xoR9-PGAMQa?d3jTFadC6=A=KB9MYJn9>&wf#fZ(YHs>f-)mGI7>I6^10)nF$p z&h+gx;LW8bKxCp!11VHLiD_XBRa6}8C@!L|a87>$LR?hqx}9oqt-jh~Hk&{X`zA<< z`_Gu&n_=HN_~ZJGzN-%xr+WRw{E2}dylVGCi;Db|m=DAa!#5_{8`BQ1!alq*zW(U$ zqx27k?*$&($^5T1_Z=lnzxU;*DXET(;^!XTUyCbiR=S0dUldkUsd|-}D7{PszcN#=nD#-vqIQeTV36S26Lb)Vl(C)xw$KR!{lcIeN5q@k>=)vKuP z?n2i6xpQakao;z4Yv%%aj<#Lqc&PQ$(3L}VjJ{GhA&Fc&N_RI{AFw809ivoArasoA z`Da3RH`UceE55Lu3&wULDxvB&6IgSPjK3!66|Eaoo)#WEqLU~f z7<7;>a?oma7q-(yjf4?zZ3QFmhUB^Ya83=xG!{Wz=r7tpD0X*^&-|K{KEV%uBk9{4 zBUl3oE7y-u!p?UP`nv9yT@aq?1Xceul}jJQQLNXl zG@~{{?^CFUg|m8~S7Nbv2d{TDm<%*h_4So#$xpS;QCh0QUuA#B?^Is$Qtu%1IF8Ci3~069L$0#Le2ZP`T7R(OVz`WkP(Kz;moz1 zs+TUhq2eW6qRhv`FB{U(OUjT}ntAr-x>Bg|wWQT@1ehP!XEs{Z7)pTkKKWnzH2rt7 zhOtld5F+7Whkkdgp&(>RmD~}xOd?)pQSCI%R3z*2{*aanB#K+1^Q|F(!%rn9YU~+jEXMigP&+oij!dLMD%;6C{)8kX_74VdIR^ zJYV>FWl+&oXN{`XIMu*G*#pPcp&Rz0ts=})V!HpXzB1{ry=AF!%GEl>{UoE(-S6cg z)9ob`Vdr!LZMa_{22mP%*6FPzJpoZhH_t8wN@8lxZf-Cny#PlKuA!4qCokpiz7Ors zTqro5mY+o3cwjBP<)ysJ8XJI}o`+a-M^U^Sqmd2*cPJq7epa~TKn+3pcnnthiJsON zC+jrhV2BQ!(sN1p>$vZ63}Tv5-0y1$x?H=)Ppf{-_>?rn>_nJ%HOlrBa_Wm3nbriWVIMlY`0JeHBo=PNtls5e+y^|KdrXTB=GYoNQh5e=xI)apdmmIRMe5oPFyS+UKk(Zr6_+8xs?;6_7K6cOq0PcbTz?=}%{JT%hh} zW>Ub=i4_y`gc1wLgoGmnwE-|&It}s37aX+@oTYJJZ#mWnpwk~Yyo^P3;6_m1UF&CD zb|AAV69`RQJPOKqqM}+k5ZJmu36^ z`OosxwOocrpe-dbiDaT&8%1btPp$o>+M*rJ%|PUujXyyWcVyu;F``akG$KtyjdR91 z<%9#WLUc%A&|1gzAQTHzk}bc$Uo7J7IA^Vah8QNpJ>x%__cP~jyX{Jyd51*-n-tj( z?hGycG&go<(1ZR@othxmAL!3biy(5F`SA!wVk<9bG?k(6U;7F=e{;VK2ntZ`R|$~| zxH;h-sA|qFL+oYn?#i|{n1I{b2o^Ek%xZX_x;frv9oOrr+0MK?=WNP2UQr(68usBK z<>gSsB2I{a1w|}a0N7XUQp#n@-7?v3rA)5eVU7`-21pjjsm2-ITD6nyhfPmomZAko z-_y%QQF2g6obD`8{X2poPZW%~hERgB;;H7`S{%he`X&B;j@a035~1^GK$MU1O1N(& z_SK7Dd@-|tm#d7C8(f(Yp)OpUGPuJlHvvby#Q(lc>h7k-^J@Za7=`TId1qf|m&b(y zKO`w+@5O@tsyep62)a&#pbuGc5BCZ6ZH^d)|HBY--~+r$&I=47ylWTiexoIr#&K*k zvZ+WI?6$5h0a$dcw*M>>WtxSN2CGUY&%lJsCpLGeAzy;NYZxs*+hMgB6ci($YXOcz z96~`ek(Cw9xfjWd#&L`UlxOpc!99`D%?h^aH5CVX<$kgSunpQ8XN4V>JQfmSwfeh3 zze!rB6k9U66O%f%>wmr;dhwNOf(uLJ45jPxPHQ8OSyR-oLQUBEK{3q|!%(XBtB16d zYvGaj(*M(xydkY{+her7s){Ns1V9+G+t8URr+kXjW+-{FFV0Q_>c z6eJAFq zuI}_QcHluUFmYSzj_h93oI0y3HBbLx7n=$7>|(o^B0V(PrIIk<0O%@VmSt3Wjyt=F zNDT9p$PlZk=Ywd^J!>7Fxu0*Qxj&QnmUk0|yKo)Enry!xVCu<$K?-uBPKYuPj*+L( zFb#Efp!iepgCjMRDgwq3|KrL$V9tv->&<#=LG0>$a8 z{wnh}O}jv4UVuFmrh1x1f**eRCGVG&Cu&0H_WOX&*pkqi6Dxnt|K+D21i0T&$Svd< z-VeIp0?$C{zOU&ykrweGLUzD;M<&_O*vwkS8fA5ZD09chJZ^6<=L34+|DF2{i!Fir zAK-h%(L-|OE}486S1#l3X6JjY(yI@&`DyDZz9YoyifF4qnWx{?HsIBxG3a&bFt5&vP;P#+6W*pS`bI?oDCoVxIj}3Lu0!NJ0aMU+TBeR6?5SU7;~GzU9p0?k_n*f z4Abjl(BXvx+Btsbz^60s3*koPrk9t$3Sx~iz+Q80*9OMX3ahuc>M_6~h9l;|#Rg8W z9)>4K_5=(h(KF65SaUk1JIeA8t?c#0-sCCcZkB)8oXkdd>`kuDeNIwSxIe$2pjg*E z(F2vrR(~{WqK^|stgh-g08N3mR+Pj6{oE2rLs)LSrEH&}sUgP8Me&*(uZ7yI$B&s? zSh+-9={Uj7&%cU-^FR42H1lU~qkNMhR}cS*A6+$iVxKsCvalo+=6v-}wefgiI>^U% zgPupHyNA<4RSD5jv3ugYj33ZmC?sSjVzU&SmF zW@CPH?HNYxs@i!)>glCvzN6zcW}9s?e%ZZ=o7I9`??!0Q+{b z39+CgnQmRKK#9ukIuFQX2b_0hs8Vz5Iw%R4UEutYtgMlF$Gf{Ji={;o(wmyv8=`1w zL%=KFr?S_Uz|WdF+_xsPbe2?Qh|pWt1F4%o)>lq_$J>!Bdc=;@>GSf$?!Lu%c6o+` z(JYg@+!LeY9=bh=DH0e`HO2C%V8aosW?h7ouL%V&L1AHDt^Zw+SI^@1znfAo%>aq} zEyvBzr@FhXneU!@7c6pGY~7yL)*Y1(Ut$rH43tEG0+-o2q07p@Y$OsZaL zgv|u_x1m>7ouJzy3_TYqn12C<7g)!SQ_GflkNZIUte=bG?xiKb_`v|?_Clo65h=QQ z|9;6%uR+^rhUnFT!w;8R$m-!5Y*?hjkZMQQwZOjM`_i1;=ZcG~MIiI%qYUF9-AE6l zf(vuK)-EVV{~gVNdRN0PuXI=iHRxTxl!x467&Qk0xc6kOj-Ee}nzcQsMPF_)pWOV6 zu7(&|qV?uKE*^XPZE9d3DZ?ll^xf?`{bPVQg@BUyZmPLC{ke7@(NGR&f&RC@y#MpbG*q__Q@LCR5GprC$aTylasnEAK128IL3{! zS{@hCgdcTIVo$79&S?ziuo4QY z#3~_*FuYf6nZUC%Xf{svLOEmrM-nSr^9kGRIl!9^ck^crP)yTYsl?q?x{To%u;tnS zuEGbTb6Il>!2YeGJYe#ac)xBbg)$P!-cso~l|Ou<9iSgP0`@@)nL;B9>>^e*0L^cx z7R>S#)G55`H-JBP@5M^u8$$A#dtcyCbDw7d$SuLM76F#0|LazWaP(iEmwv_=GQvO) zk7(i4E?%=zaUz)p|)w2uDv;ER=>gu*Sdu}gUNt*l#NBHD4 z-Ma=s*X}i~I1DeCa}q&L7OaBJG(1^0U^))l)E1Mu6B}j=wHg(~EngHVbyT6p`SaTgLg89^FVG$6#2+{9!E;jvocNAUd zf$0HnUIprwa2OXq_3Hn2Rs9Lg^x9|cSGL}VYL9p2j&^jkpJ~4iX-K3rpfw)fwUp+q znLmH`?k2o*YChkVy>tnrSE+;ZGo_*33J2L+-UA!S)76j4ckO2j%)=FA05|AwnCHC$$h6=@EJb(xl zY_6{kqB=~TCAJlvY9vu0hcY-d)8(19)Jp$^jZ1_Z5~{pS7$5_T+nY+FvLgu4KS0E` z!WM8C7N9q{yt}DsKtuvo@n{A__+C6;4xnJbkEl1Mtc zb0||M)!9XLwNNbw*t@LFuP0_t3{#Xo?|wr#L_ysl6oO{DgJ5^Ar&#GxUoN>wAo;Ct z7YD}n1+~xvg;*VT$xn%EG7t~YJa@%gm8W&p-s|z=)YFx_IgKI1z7pBz58mlBg_$VE zKG^o9G(=z^PUxg@lJ@NeDq&wI6PkaIHraEvhvA@*M?pc4B7=e=zYk*jr6gwn0gF9E z{2stHYKTxl=%vaaEcnC*F7M-hK5yU0Ja<`TLouJvLcXFB<6mntUA6vanOfkj zmGuiVeHoQsv|Rdvjj+G?VC6+Qs>+j%Mwf_>U7>58%qY4zir}8v3_>yAF1n-OrC&WZ zaz>9nVcow36=JvQ$$9|@937Amq}Yw5cyO%g)+utzWgs{?MdDy*&*~tNH7J)9lWc>1 zKI^Zfmv52j%2@x0D9Xa!fY1W@ije<;N_8>|-`O53xE>&>@5InMOPAqecuwTrPwR0*CA=aeTdXyg@<|%Z_Ojs}r zdZ?o#&Ejz7d6$(Tu|mf@$z&A7Rz+nHv8#yj!`~U1gMMA4c)p^zgw<10o^nNN7q_$k zZ$)7oF}myE6!DFrIEa)d=PY%jO_Lk@Yjz}S%x+6euHFHNxC4$wn0DU0TtATCaGciW z8z8Q8=FK-d$MmEbOx!8#Q{c^;aT>7~A~!7H73fggK245l6Qxv`3em&cqF(P=ziK`=1b{V;Bauk1&~rSyyfdDk793S(=T52YXgDnlLxm)Phz#gdG_6Q$%rOWHDi*(FWL?L=owEo)6Ky-oSfA zj;G*<$_fL!^hBfh>bQfS07`5A4)>#eh*L{y@i8(N_Y3_~&$8%{vtHOm(G+cpV+4h* z-hwmfjvWH(=@K27dU6mQWWmP4^TM>CMPbHo{tGK21y!x`}NVX>!Ka)OY^Tqk({W> zqk{-pY_mtLRsqI{gZK%;_&<+gQJ~Qv&k+Bg3jP41+VwYoWX!;>eJ_UZJJS!uT~F=u zW-K!dY+3g9#zJKfpU9Zr9^WDLRUkfQ43V4*IGZV(E2zeV+t;Q}nj++cm|gD{qlBR0 znS%?c3$?u9o5+7o$Z=&C%SazI*4C4lqa(gh0lb~&H@c6@-RBh0mbdEl;i;c)a$d{H znXe?S-luUvDXsdx5yXYP}EI) zos3iC_o#bS8cm6L3Y#K8-**Ve=ngRFK5Hl0**DQK*@5kQA8N|+AMU+6#bi!h9h&f0 zyWNI4p#(dI-s6nd4OET|!U-N#sLUH9Hbg;8Xfi#67Uza?7PbU}c{2$2Z$ zGtK*x8MJ{IhWlM28_7$QglrbA!BwHHiMa?o2}nN8@x>mI66=Zcx*ty( z%>ouseIm~s-$Ja22r$fAFq3bbHrlPdBaH=V^v5*F>(ns;9knY5)F7`RkaMwohyGar z;v>co$-6+9z#Mmd0#Q+UPqR&o2^sJDV=Ttt13RVB+dkJzii_aj0X!4e81p%KY`QQ! zJrCJCG69VuKaVC8{CTif)rZ|d={wspSBW7J=PX!$3Rg(?`(;K_}GBh>db)TAqc8= zdKrqQswi%LC7#{Q?AMB*Fh{ha`A7H#a^H=gn>0(t9M2FQ4+`&V922zn1yi9N+7t2xl34On&0!W<|R15p7!I_pkwiNuD=;%Hy>;B>>R7_ zVsb9Z(2)Opv;w6QOWWl}j@pYcF;;9hSQUBVyr~rUL!HgmCW|Xwr}2cq9_?}x5+V9J zOMIKz-A(1^(_pAUi#cq2<2(5dq*|(9)%Usfg&JJ7vjQH248Y&9jyYFa+b%J}l_>0vdhJ ziA&CAtPf_Wy_T1rU4ne*Q@QMn4{?F@>uqjMxjMy!6Jq&{S~WAArbu@IM*@7y9a^jQ zO{iGn0P6w=BTY8zcjR?2$1=F~tK*Xm*CtJlWycgeSgB$1+R`WAdh8!`9u=d}E*B(f zy*CW*1LEqPyS(%Fa*nqVClc^e!E+$0On(d5ncLYGkAG0rhDmTpJmfwcfuSVJ@AfC{ z9;6g8@y9T*$nCVP8=3^|P^;BoP>vbIfz!hf%g00K-KRkJ5WK4frC(ZqPR9*X6^Q%6 zv*!K+VC~nQFX(kK=_#lZ*O^Ssrtx)%>E^hp*?#C~IfqkzRNgK9;qM=3E2=FU&a|)g z$+oQ&gbs`Xzw`O?s>+$+iHWn7dgM33z<``teG*q??Mu4mQuLO8Vxa zC0yuPOxs_8o;U#_fN;@kA97_t3v$)d_Um(u--jpQKfE|~Vn4hjwZYdOBJOu;S}8J& zFIxuYm-hBvXyo=G@yrhn!8b}s()p{rI1&})B?H&9jO_xso^;zZ4Q|H6ke= zK{SmAm9&1!YgvMvjBi}#z_TKAMBD8yWit*~GvnDu?KiDMyVHf4iq0SW04Z4huEm2_ zAb2!mG-iZo$gGs(jSPbUkg*kfL?A6s(G-vm*V%O`cxsfk)kq`BtrWamZu2hOwJr=k zjwcv>Vm8PNbp6st)6}kiC5Wa3c!`q-{c?aIKl)+Yyr*0=HM+V*Q}^)Mr#|%|qfHbr z3)5S=xj;Yi-7paD=TRgUiyxv93DFsW=kIjRQ43Ug@&gn}N|P?if|ByYD7Sy7&lp9s zLd>ZR7yL2l${g!{1HXQK$GV_89eJl;cPEzo+3SXHKS$h7LXUIU+Q~YP-l{ugayCS$rlO=Q^;{fA+}#wzD}_?>R1O; zoSciEUrt1r#EU?lI|O`kMghQVd0i=INeDw^m{Y>?dfU>8eC-%yae=uQBe>PaJaS^# zu3}m!`i_R#XJ1De(Ev@dYYi z!{2`xJyT0n3-v;T6%im!HxVI;H~*gWo+B}(`=&a7s#BdhUnR68K^=AHp);qY4!7j6 zJb5`)=aUdTL0ttcbIO`{Zt~=h_rG&~zQ_B5XJN;0c-zf)eOX*`2<(v*z~cAgSWz$y zZH`G@wh3Lp!Y7?=dJ z9~FhlB-O-MK}nzGef&l`%COay;qu+-{08j{dTZNWP4iA)_bbLTt*(N$_2GQDsQ9Lu z3E&cfh=*KHPL>4p+F3GLD(i_X^XYnmx;lzVlQYxcVrM2xi=cuNIp+y2t4%)tc7PM! zhhw3WIEGdv6qf1rrS$T-@ymvC=m!qaGq@gBd`mqYjC(oEO%aT+`4;XK!@jT#OfL3>E zub^Xobg0cbNI7Bw%n-L-!>?v=cIh|tMy%bB=q}gh z&Gl;=Tnk+dGohQ350{jzU9o&kW#>e%scGEBry4+sX>`;UiYk=OXw{Nem*bSvj_?Jp zE0_++CQLp_Ot!^qb#TQgU=@`ho3$WH3MPo;h};`9jyS@uxI4ZHWE#`o8;JpD)s8^| z4q^n5OI^x%?L^C4#gOCt!-(OFT|>hX0U!cg@b(ynTjyOI(CFyAi?v*2T$%LnH{X+; zB80Bj#jxR+pj;H6#QhRzna+oB(vw{ZAhOP$p{f{aj9ke#Pn!9bbfXc&90+bDh8hw* zQxPWDb^v~~fu8a-L0_XB1v}N#c>~`*VB48jJ~u^rI2Gj@h-fq`0afR}W&qX#4ZJY? z7R(~m05b`?u(RciQB{?8`+Xn};t6|06am@UZR@rKD+RepI@#~g0fWN!jqR}j&1 z=MobtBR^|Pz6pYXo%t5GuADhzI_~ZF1B0*b6z}{R4$Q07`|R2TCmrY4K$aj zhxu20F#K$3AiL>3c5pl(9kFHC;NY$;mUYW2n~mMcBuX>9{`;eIyj=h2cLObC7pysY zvaxUm3%wgzJuKbsIz`z=;KKJ~1K8_V!7jmA;9Kn~da`#BvY!ZVKOZ>ccjV#Z0%d92 zJH!gggt!@!cpxoF4TC;tcC|upYfped?m_na==4w4+IzJ-2X?PRzrz5Ld!l}amXyU5 zOLvm&CG6iDg;*`PrFLX5VPZ{}O`m>(sfhx)JLR#{S?Fkc<0%uVS72p%Z;0IU$&=!Y zd78cq83$LKujSU()iQ41zu#x?*aSe*pFqXC+yU)YRQeO7ee(SDaK%O`3O|J0-F!p0 zAa|H#JRBuz@Cnfz;}jiNS?ef{)kcVkHt#~=qGsBPqNw$zwPw$>eW(^`$=M!wq%z;y%>wy6h>X*hS;gFo+wPgU0s4b-@9anvCr$c1+^H>CSW~@-Ne?a zrOuWa6_%}H@1R6G=9qE_*_Q@&PW(s|^kvAc|JVTC5_06;H1osbpcP`>M`_UGbIeEu z9R1MxF9pWn!b%z>3M?lv$ofZYwwp=cMu6W2HQ}BZiy}Z4$;E6S`?wA3pGQ+Yc&m$V zz`_?jueG%HVrs&ACMJggwc3#}v;Opu+A-w-%A&ofmFRYZnA^W3m|MHLz8(sIHk^)~ zSlTS!cP2k#?Yi-`YroiKJnZN;#yH1c+p>5=@9kCsqx>8;i=p4t_WIg{07W!=!Th$x zs}@FWaOx3F=#&$OYLK^_RCf=*qKGLFBb|J1&2Q+zxGX|`hb*cg5+Y6g{F0n80Hjb* z^%LuicKY5UC4bC3_~5u~Y;Vf|cqkL9=b5a`p3$tcP1EPX++Kd5^f%-;?gQl|+PjM5 z-HDq?j1l1|?)uH7L9B_@G%<@4I|PpIBJ?4A;qFp30IN};;@Cp|cePn;Ihj%9im%mtoCWuPf_@Tg1jUz-zwUNZ02SzkQTI%j!FqdTls2@BVi= zIp5vq=7q1Vy`%x2i*%Es<}N+d=Q&Upk}zA@pFsNXL9dFGW)g|orwonJJ}v;-*Ix%T zOR^`>6(crgclkQ;jSpl!k(Q)ddFKMUKMHWjJV791?_MC*bTF4?Ngri0$-(N>+UoG~ zX_Qpp9eR=%_Jbv>1J$Jxj&2s^kz$mi6l3l0`HJem>llKu{cIea+@{hb=Knl8P%u(e z00wc7J^?-h_tK_#Np{{WJAhh*5y)&V@86rsvw7EMG(oiVR{`M|8vE5a_vt^;On02` ztPoLgu0r>5j{+@^Z)|I6xhVQ$S1)Y3knQDj&A0DET-nf?B^t4$PW9Sf7DjnoLa;gB zJKot(?@Q``XmMi~NnHTgA(;R^-;c+*N;kl(DaD+TIRi57Mnxuzjm|r3ftr0)67s5L zPe!Me{p!gwwJt=~1!9k#?ZHdE-GkOqm+R6FL#S*a!t=u zshYPtzOY;DwCbFe9uWZ@Rn##Lb#N$3sdcx>%v_gELELYTEktEjs0r7^ad6EZs??X> zV*q(g1{T+m`Ck`kcjw)&%;3M5&NTDc5ciM1^($OClt_@oBgh7a)q>PICHEFqJ@V& ze+1~~w){@NGRaS(CS9ffyx~K7BDZ&iOAyj*HsVI$h z>>nVh6(wEntiyuh2o5*UbNB%Tp2s#Ylj_Yb9|9u_HTzjNmU)yR)^zrxZ)TXuS3h{l zfvi-tI|grYOz-`4E;g4rQ|E@O5KKj}dC9d{?Wb=(F|2n-XISMv!~@i3%xpnVNo#TO zXWudv)FCziZF}anmBl5kTe$34L?Tx2byV!6QchY(g0xK9%!g3B8L@99OpqjjW&hB* zMOu;|xF7B^fz@lkeU<(h8RxpX(61)O0n#OaPAw=U-GiT!uar)&)=9U%&UjHYT*$$2xzST zn-TcD?nV&%{Po#nXUTs{RcOTJA$#`>bgY5$!XD~^U%PyF9zVS?=}081s{6WO&&K*X zN-;sc5z?G@vK~p|pS|p&hmC@hfuEmXb6pm%;W5>fyLqR^ahBs%%LF|L!5tw_b^i(h z-!cc`$+@==bbVH9L4CcNE9)z{FJFl6LQz!dLSra+^O339c_-jBnw}3~en1r$DaM+v zsF->#M$w)x0f#v^2VHZ3ET+70?)>L3xmjUhyyMH~^XCdx1&2*m6%6RPFp&KDa%+DI zsXif3COb4E_^r@vQHb2rGeNf2$yyp-|E&57u!LW-SYHZRSoM|5eGpUI{K8R&F|hSL z$<8vWzJBOW|EZ?M2sr#z3#(4*ySQrD=*_pE>AcuIXftT$iuXuyQ4x`=SKreT0j-U3d<9RooSk(t#zcwX3N_C3%d1>H#pPWx`+?;L2p>g z5KuK}*bjFRWRs9XTYTfK`lVA^cfk_pbkJgiMG%<(i$8ey>wBsSTIfL^{B?r7Nm2rd zU8k_EI8m?9aa%_+{J*qpoo-eGZIiRY;{Y$UE`HQj3qbmH9^?QD?YnfBQ6^w$R>NHIjv5`A4p-o?pfUaUs@%I@0}7jIcgKuh>qupNFJACP@$F zelxeNJ1EQz;xJ5@KEqPfn(g)p%YGL6UHy|__PdsfD9}8)A6pilj5^G$ZkEvhtN-Cb z95l_haI^|loR_4~a?W=2&>*Plh#>#AqR~R5r$2>rWdP$pbaL)4IlJZ+rOEI+B59Y= z`b@(>@U?u5R_{3KiZn6G*s=_z2uywN112sKS;ekrGpKfbhJUQNSxbts;1qFM`zL>T$y5jO;>dQ@O=sS|#CW3XVu|Brf$iH@5RBCg!bBD|* zBhLg{GMP~b_v??+n4p`r7bz#+?0UX$)G?wADkF~3^X)EXjvCB+_g;|Y8o>70R@ySx zHzI-)ceuaN`27qJjNHGs@%IN%c0f;sL!&gUB&&lwjA?aZHhu z5oN=cYGt{C9Ho-E-0EG5+0JC|yp^dj_3|+1ZLX-RVefOSVV6MoY$j~E8Vlp9Tlt;M z2-4iiPcY<6@e<#UDRP9AnEIGDMR>}*#uI^U^bBC;X>MdZJ>7&_YSP}G3!JoC&35&& z)D8|$YqtPIUr!x{CLCeKXUKHc^f_P-F{Db~;gYJE=1q>Fm?C8Fv7{9gKmeH08Dkk@ zV1Puq91if)qodP1l`W*khHc|1GCW3I0IVl$n(&WgFKx{ADd+CY-5+iX^ougou`Sfc zG&@%R+!;|KEv^8G#ffFqz0@E{NMPmQrOOwt#X8_Ayi08$uFPWsi9!@cYY!D2T|aHs zGZSu3vtk!!^ml)kU?s88S@*8G*BR4G6yrK zRIo4(2dkh=0BHn~-GJpF0GO~w>=`14L{@|Xf;Bx^IWIjEsMF^Tqg{TqD5{%KqAYwy zbg%>?h~^DMJ=({(qj$f!Uyvs4xjHdX{X8vbB5vTw+Bq>?MBEWQ#JLMxZ$ip{%kX}0 zKKr(ddUi*9dj^?VAk?*M;?C4JtE#B{td5R$`qL=0ha>fS z9yA?lI&)h}j!~SanMvFs0u4BrjaZ{6b|mpi8>=x<=A*%B1 zLg%G`-Az0ta4aW@zC8)E-RLt-f{wwbf>0>nZ>%#I zrdzMaWJEmv-(aH5E*JA}0n-5Mc9u-=>`f@p7k%uWnxc;R*dvt(&u@KI6_lP{%RYIG zK})pyXpm&-)lqMySAPuEdHh;9cTZYQ?b1JV9)RI6JL7Qcv~6nI##Zh-5JBEiegaI2 z`Q5m$2-I3XyXH5H*r@9dLiNiG{`{(+SHz~V-k*}Afx!=A2YL5aLLh^v7u*VE+QL~^ zN4A+`!>pUXdFhaBL)hhlCPDS!acaEgqyuw|5Galw45IWF|Me1Du{fx3^1CLJ6c!3X zS@P4DyJ2&wIs~bkG4%~H1AE#_5Q@6MVu4wY=z-Y+x!dz+L-)^r!9r->8S9Jl_o3PR z`WncF2~nm~au~RzELGJ8oSHT2e^T+{3ddmJcs; zq&MY`_BI0uRS*^-D9@W1h{01~EIl&YI^);*2eR}EmD`97WK>(I4(iCJb%%y{mf8Zd z7IsGPtW_*FeAh6;;;+DSXMPrq*p&?REM!nMcF1~!=9nZ_~Y z*{dTrN7KK@{NS1PWkZQPj_YpN0*3$RwR>_C=FZkwAC% zfFn>$%|xI@rwzQ?@uess1d${)7AfvZIa%#x5yIeA1T>MAC3NcrmzwT>khIIMHC^Zo zhX=N0^7rVu6d;I9-n|v?y`G&)+P8OoQ^;c9!RQhKGj>PnPoba9&gjx}`F$%Mf9SfF zX*6{xFHHy1@$4{nFlRk;^-XiEPtHgM@4n>Ixec&4kg^g?7LdcqCTjvPNu4bxQMh}XS4C3!22mSxhY$N|upfnxr! zk-X^7ESR^V>+edopa-3QU{AbkZeHQ079^72=l?Uv}Z zAg;|eX1as9uLL>be1Y54fyjiNmmpm%tSz`Y>_0Zc)bZoD_vo@>yHyCz19m@6ZJ|Gt zC6#)HdQqf%eIFx*Nq(&!Jj&b|{XV(=ju;b9mVeuJ&_|muxf0Y4DB+*ZrP3<4K`(ZYKao<#6X%T11?2>E`WGiT%NzaKI^l60jNM7kSEMEdi1X~&8!81$1VctG#EdgU=ckRyz&0U zZ4~(lsQJg`0hHoV@e2t$A{po~CzqRZw|diOkIT>y#>KpC|NLl)_~zchYXt z7%KeWx6BUiaTq?%)vS*(`2UFq>HX_ofnp?RBP!YeY1nKHWLA!%jglDXgvCEghyQKx zKmSCO*K_q*6zN5D_Mww&2!Al1AIFM`22x>z6UV)P)&w&k2;V2H6R?S%lV*qomyY8GTiJ?>kXU1 z(_Or~R^-%!U(*IR{tb$SM+ectDHKHw$;&k&MK$AJX7upk(Xz1UpC57@J_f>rKRaKL z5rQIBhUf+ZB$t&4LI-w&w?vNYy&-Q2Thhwwa<1^Lki8!JFZWoWG=^h|sF1y6-!`O( zC)G}Z=4R$>K7TfoI{yWW^~HI+FlbISo%8MXqOwyhlHW;;N#Fh&1$IC|*Z~Dy{5D6EmgagM&wDF}n z*yN(rova=Z9j@E_R)1ac>OHZz$GnZru@O2b=Er?dZX7G~dOapC$kGU<*4ZYt0ff}9s98Ta#0hOJ6Ce5Ffg~?z~CM?+vaLlmu~p4`Q%{W_wP5<{;&Kl zYMK51T33Z%qG5gS{SzN8$&KrT>%Ywwe=ZPWN^Q6q?zZjUzFrKpAqW_wXDD3QP|{zC zsSRoarkseeoo18{9gK6WF}NpBnqv&zM^)7qW1p>C?|3M&Wik0f$FkEu2DncfQf7t6Wpm8^CzR7sWM9)vBqRJxP>ASFK@al|;Q5 zScuyTuzS(ZUb%jI>iVXHouWz+_S5xmkUR`{3(i+Aq(idSOR z>vAvu#0HXQ6A(|MKnY)a=n!RUQi)TZXzHX64RKx0@t`2*>vvq_xAEB(cG&4ERcCtqZo$42E(Xh)QV17ri{k* z4nP9TKQ%RJ3l{!N3O1$b_4F~qYMnA$FpFi%cIVp!Ox0tDZxn`}n30tv%F^wXQjx&G)JDP~%b_-PbaH-b0d5-~bV#D!v}ViJ=#bd~FN| z3mU8nNH~sb1%h9fU;|k;cLvD}A6pT%Xtc1nj71z~3n<=QwPz9-3JD+p>*<1bcP z|El&u2Wk$6>|kvXRmmw(m6IB+{W}<9 zw@QNFT1m(71$wrCmZohYm|5U|Z#bN~`7HK|*x)@YUwL`H(F|BcaK|=lZ+SS@lUT1Q z`!~3gU=h9b_uASbA~yzFJ;k096({YeT^;k4k+7M^HbqRnx5zQz=$~a? z^8?ZD473UUWwhigA1c-wX)rXl{kaprddU2~rT>@m561odH-{Z@ZP4PJD8T(t3ob6M zxrTFdJ)94f)c+bp{~0{1j;_P!J7bU3p9@E02ks4oSu51Jn#hnQ$^Qx~obwl0FEjfd zDHMU436O6{<+n?E=kGrGTt|W?Lm#Er(m5hLx|2KOr~P{V3E}ovcUySB=w#4);CCMR zEAZr5TOLgfh=l>#uqixmA@Y?1Ry3q|%X{A}bm?aTh#7~RI zsIl?o%fZ5`?+ull$`|`e{Bpf>(Wn9rBYswrpSqz_%*dH_uNl+bvSMqs@bDTiG)hm; z+m;|`Zx`scpSDT09QG%tIr$k2brL5P5NszEiK&sB&rJS3y^f^%`aUkMJ=E9tj~3_l z_4b;OmM)}g?i}ZqEy8y)-O82D-Md?6kY=s3y`Ag)t#IV%Xv?{0u8ViJjhT$bft)@F zK!;vZJYqL=m?sTtv(0QEMnB(I*4|J^iDN{6Y+IyD(dnf3L*tdy*EQXoIoE4qXPE(J zE}l_KH!0{ng8v)r4r8zwLAi6ZbSh^2i>=ZSx#y}?{G2swiZeo_AKm?!X(G7NlQ)Kk z$KIAo-yTkh=TA!PhzmiZY(}2h*_@%F>*$B(R4B%6l!N+f%SH?=U{_KeG75^+r7ae+#{W1$2Bibgj6%lNVh z{9YXQh1gbfe23qAcpHwpu=4j4i@iEPmFHqwZ6&r|+lPH>Fd&xHw=LAL69i6fYokh8 z9vzYR=bP!TjBovJ0)}-NijqH*O(I~#h!|kZ&w|h$j5tsl&!XtoE_^M9W9{+C1gmI+ zu~rX<*{vb;)Fs$aNRgb06~LN{ET37b^}azy9@Fd6-uuo2@x!Lru-RU>IY2rjnU{F{ zUSPY9C(d&m7CsPV!U%d$cTL-~h-^nX9#EYB)I@G57Fj0wFAOnXxgN?$1SDPJrjMUW zDdwZ4@-dH5>9P206NZRXK_Am{EjStwpQ7BMf%Ps!wUc4_#JbOzG9zV>z)#~EKtQVw zSoJ(VYBn3~sND#LB5zLctT{L_mXj+NtdrATAlGjoFMKDZ{>F7jTI90{awsggF{0X9 zN`oVq$rDkc_f_aqYoF^ZIUA5WE#Zt2HNsCOu}QEYoDDQjG4VJ0N$bdD{~5?SZ=Mx` z4nJYS6W(vU<~=MhpBx5*?|8QOvW$w4Ke-`yP<#n`seF}0zKb6gnqH5m#zIy8$qAh^ z@c|9CBEp;Kd6BMJ4El%}x%7)YK6pgY<{YB_&`F}vl5RM8$e$tB#T@vZ_OxQYFUVm> za^Kpx>M-QqL%(;3f^DPn(63e|aDMWA3vTVHQjUMiZgZ0RHgsGn%2IZXJ6H9Av-jWO%BKdb0BKyn-lV9zF5Kq z&Fq>K&;3y>JaYTW|AR7dp1N?2c^;SFKLD0g7pn8bvJd~ia{Gu-{Nr5lB#ukv&NCxl zt%GH434N~i9r}t0Pkwjwkrb{P^gpleRZi{PB82dKT{b1~ceM6my)eKUhBv8k$v8Em z*HiIbYHQEEkgZs&8dYYUk+b8A(=Fz)UuY4!;n5KTM{mT@r`?&e@aHRGNCLg8s2tAF zh}DOd`8Y>`Cd0@EWl>kTpXktB(%lg_Pl*l&_vlRK@NG39IFQ6Ghi6fe+!2KUzBN=< zfM3QV1F>wsJ$qlrBwxD_1oP>5Gpl)`086`?PuWQwQG$sqv<+iLAI5_iU1iwr=+dr; zg)a3|nIhvO#qNZMz)iQ{Kd#_Q>x6Xm(lpmz(g`4J#>IZSStAo|1Z|SPpiW?~m3XfM z_QK)3ttDC?3iCDxn+6HQVd8jVIK@vn8aE`*TOa}4^{U4@=oCp_UWJ7{#sx~vgj4rD2M6G_wM!)MCapriY z$4^L#oujhC=sy;(&MP?6+Pz<5hJ(vviN=SD}uF=pE$E(yC2p^-0@a?xTcVCI58(x$8>P50NA5`1lqd0nr-n0a)c{_qgpK z+A9~H5a3rgfdKg^Mp@^J04JSt0J?D6p}QnY>cKfr>E5{Tih%5bIdL0+zrTjaDD{~k z<)N$`y4d{`+(aCYe+)61+?h3&LfUaRL53>CX;2(LYO6RlxY+jndgh@w&~0|B+w+D ze{)llyNj$|75KXQM4f%hp~J3wk901~A#NiVsryZtnOB-m847_GTRM*2%DU$1ZCt_G z00J#GRO5^QOL%- z19I8GosA)|_H;xD=c~K3+T)G{3xYoG-qYaAPWjq$Ixymh8b1^fc?jpu17AP!^^o1v zbY-WVPPeX%GuqCq7!M>WZIr8D7}%CZ<)l#Q~&lbPX8ZDl$;f1+LbQ%bZ1GlP?J%9i(MGH3=i$^6AZgWR70rEs7CHk7ro0Ce~&z)eg*lhL^ zH+bBYA3Oz8f3Za>yaxl(;Zvcs{2JR=K)<{a?FKK^v*m7<1LxXHQa<*%8MU4U#9CX# zm_~XbbGn!B6KH)1;7#p`JL!e%1&mBc5?HK>43w>)e4k19L2?!~e5b{}0bgA-XLHKI@osaegY7;Xmc9vZM3t>=1^} z{#;xH<>ibs3%|+~giGJLx=SDlzFc*3cl<7uzu$(*w_KBl36jW(Bf(i2UI~&OFOsk$ zL_;YQlqN)`y{GWyHsp$SuO9zET*)lp$A_{yOt36?+}1E#nCl@E^SEB=yH1?Ydi^cG zB&1Ci@1-fflIPv|c-H6S?PVtK+#tCZF|%%0kS7{bQ0yJ|ua~B+KI(8=PH0ZXwiIE8 zzol^%n}6*eMvq+G&TyV4Uol40O4`J37(#?hEZ+4-D-ZS}#)s9FXo`2piamUuUFEY^ zhef&@zMB-Vzl`2%sxM9s^TAL<&DJ$_VJMo@zO|oDz#A7=y>fl#XN>d--b^}?au`H_ z;N{ae3dWq0=n2G$QF4hEoGc&W33hoK^OUP}w|p;yPW0nFK?EiL{g=*L9Z|8N8N6;F zgiOz*dS`oh99&o zU?+Y#V0;u2px~IHwIhJvb>?{SVw`xFpfiLz95@k>!>f71PvZUZz(F|RWN6Wnt^vk( z<3BG9`13|^rtA==jw+U?;sS##RLQ#8&rEARBEN>V892AQDF_El!VUrpk0Tw#fzrVk zaJE^rD4ztl6WmZxTMN<>!*?8QX!&dN*&#tWw;Vt-<)!8I}B_lAFB$!vlfohxg$u5)Oi6+n)F*KkMK_+t1hqL0mE)oPVDi58V$wOSVOjlSw zA^voubTX%*jqZFoGayAQNUJV(DV~elk?E~3y(vy|QSoNYsC2ydrp&{rC31aeAZDd$m@@kx<~;JJcXc^9A_U>wAzP zY{H^tvW2r2Ej+yABT7ttG*8s1;SvBl?LzU*K-pgmp9@ia-!8rYbe~s;#MRkO?`IZ` zM|0aRNT@F~pUWf^iFtA1)qa7M+Rv`D{nc>3+TcBzoh253`+=jw<)TLnRJf2&Lfdfl z1bYM*FA2QtEh&5~kv!d2pq)OKpLr_4Vt!l*jKQO7a3e8dwX)t<=q2oEM@Rb&1BsCi z)YcI@0jECf3H9`=a3%{pgI(U;-F-yLhdcWa17I#yUx!Z0YSz+6%Bj!_<^r{c@6Ggv z@1Iu#`R(V`ASjwV4T;)~c2pT(nz@-I(5eOqHh~e_fzZtm;|*%!%@P1LY(*-uN`)1M ztqQ}+T`=BiCQV=;F4H1b+|d}%OYbop+oyKQzjxINa!)K+74yD$Xj>8BYXhm{IrQ*w z{(b5=rO}y;K_y1H|MYB85w>I54op;(HuODV5`upme z1wMYzGMOkgv=rD&Byo~(7%fJnS)49+&uDiR&5E01MV!bWm`)aC@;P)HlM8vk-*w*O z@v?u2ykKsKGC10+4J*f*uqZF3a9L_w=^WuAE>ezf8}~tQKrV|UMSI8L(Mf=SmC{bo zU2gPgj3*L(6@veJ8T?Q6nrkDqb{;{%1e=&_r4S#B1xuJfOR^8#ym{{)_=|_$sSI$n zC@S2z=Q-3m1+rUpLnpwaAa0bu1T|vTW$NUPDg8b1z>~V(Y#Amv6%626G8+dL#t$WN zKg%u9v~Jnsx*z8Q>B4k$x%ghmNKQlCGde>QLc~#f2QtiYn@TuW;_Hl?TcqegR{Ppn zDcBWz^kjcb9%Vmpd1ZdShlG6MQpHf9goxRAUfwd=G=7mX5&95Y>2`<0SacAbYNBGv z>>@^?`9%B0OmOWu5+wi5Ca5KYGHDk~D)F2T@4XL-D{lR4lH zH9t^r!XUd|4~RX5QOxoaj1dN4rX_(JxDu-~#K#&EW-e|;bIqu-mTE;7zKnet$F%~b zMbB$8Vw&OBTS`9NCmXA3<9rMyu$EKR(Kb4uU@p18f~+HAEP+cG#|*w8E(+b2Q4~Yb zZDF*I9mgwvT-y!Q+3P4t77Y5@wTVa_2I7OCo1!o*!liOCci2*?0+uJRr8qE9EXz>~ zHu(vZ@MF<(izBvSAIujEdUG>ov7>ei*1UXVa-aF59sUphUJYbNXy9rTAhXtjr~ZU6VA5t#MvaC3)!L2x)W#__ zmY{t->vjWHN;Psisr3u`{0mMGm6_4E;|=#<*;}&pB}6 z%~3Tn*6-{e16M|7;qTS!$7L5XGsomk>cXBMsItpjPJJGDKi_96K4O_r=uL>#l&3e1 z!bGYKEA#xiFw8{?Y(TRyu&;+PD^e7U`J-AGDJ(hET*Dc62r4Dbdh>Ir`4uN=Np<&` zGs~(?<2vTil$Lc-OUfEMlE1l7D6Gn_4JfBJ0ok^Gjzyd?-ZE!>HAETMt3p9w>pdTM zg@ZE1rF)~b5~Hdq2T{dWOA9cu*(^>M7^R?XI#VD;|PK;zATd@gA zb$mP*oxsEvvpD@ri7`5wU!Py5i_I2je9bsaDDc=%M$+qf>D7VveTFS1AI-YKHM5bS zY%x)$3c@Oz+R0i*mM)?DvndMB(r73!&%%Z#m-UiE&QgF?GEWJ6@X7Rq86O4AG4KTQ z3A5AZ?T$gSTwFPezo>LWM?)=tR+HIbijOtw0{P;6Q`x6q5r2QUzCN0f47h@+3nYTs zGca|MU!70~3IBkpgDoIG|KpKB+N1YoshujL{&cB~hw|gfHi&5aH;b07?ODQPjRdms zodvYW>g6lz`6w?sbipeavHyJ)BS|d5UKSb4X@xKgU#4dAn6$>k|Im$ryvYk42-pcx zE%SwG2?%LKy4+qFqGFMBI_R72l`&-d5ovqS^0e+$l}Bo`bMq*-N4~e2>SEr>oufV5 zOdVc;v1DrtiV-*>=OF2}7+fUm!7vB$)3ZB=GJ@i=VIbDS1R5oG^D%cIj^wbQN1rKc z$Qp*dkEDXE9N4ueQyFyNVvF*Cg* zWW>{zjPV<5hU*u>5H_2i*6$g?kv$h&%d*hUBiHT|oU@EFq4DE+vt9jz>s^%4>HoTA zs~AoUM=(S~k#J%-0Xi)B<*+k#6KmXNUABii(asoLr4v0}XGv&VSo~yyC*1e5pgDW? znI45XDsw7(xhN<}zp-b5d`RRF4NYhN7k>4kLRgkcqGi=Sou_3!MBwSeKE(wnnJO$( zT+IHVZdF!yAmGRGK%DaK!@JsH;2JTurluh~!K63utl@6(kMUV+SN)f8ex229&=26b z4O8EUlY=bLx@&%lLLhgb$F{Px8pZ+%vD|*$J5695`x`_PFvGdJ`F#jFRqXfHlGz|W z4zA;5I{KNEhqoMy`&AL_Lxftti^D*!9F{_*Yf{o~K@-efr%IV+NqbL*F%6{$j(}i> zF?4xgR;U(#6uyCyq=E4sOJsUF%RS?{o8gPBXhQC~*UP4vY`W*-@)ZXK2U?I8m{tJY zoyV#4csEt$>mXe-qFp@d@@}!5Mwq#$6|O}!1NZn4u+ubp(qKr}3E4x_)L$?$iI}he znILYG52yUJ2#ad42!D)Ale9Yh5$rSW&8)6rTe6zA8wgelU(M&=%WcqRy{6}(%KQb0 zEuPAZWBACFLj!vN%ysHs(=Oz*V`I2zvX(`407(oDbQ0o|5w>8gT;A(Rx}_k3=M8s6 zz_FkrK2ZcCX(UaucV}r$@q~r4-KBG`Yi9_x2$l^Q=AN0#hQeYpXQ$`--Sxrkr4(3M zG1>hn(5M|YQm_fbM+8M&id{hWo^GX&1;fROb^>f4bw55gNBs zd&%ArYcJZ1afA}O1$nruP>i-p&l1#frH+Xa{SO9XYW5fgigKJFUDE@y<@rG8V;9r+ zPw?~hhndwIJNBEoeLG;*_NmmC=D&Ul37!4v{B?=%f7ls2U#6sKrmBN8HX_DuVUT&| zv(jLgd(21zQdwMf2nDc03jVGoP$CH+8k7W1EcH*+N$3Pwu4lx?@`izJ&F`e{n z$;mVo&#ucIyjxap4pii`y{1XYo;t&G-vOyyLW+zhG2`RenVtpZ-0_F8=q z?1uGd%OZ@HmD%55cbe{CC8pC>aZqN)EJtUNmlyOG7EtpoeXdMdwmhEa3bP|@8Tv`> z(opn%(9Zh40Yg6J)`IrDfz>hrbRbAR|0+9ED`c~Q%2mR+Ang?pt?!7zHii?ZloIlV z-N)B=82F=Bwe;l3NYqc2e|^^9*f{FfYx5Z7<4gGj&(h<

    2@*Arq|@ox;IopRzro+D_*NQ^llF2tbr2FhgWku6}>FoMhlvK|fT zz3|pO^&keCWW9&>Incznsxy-{)g(DDNmD~wZ2AO}1X81s8=5Xs`q9=;etGt3Gzi3( zgzkTEuc`rO;kelp=>T8@bzerp<1{s8W;eFyZN%1%y&OHS|6Oi4jD`(yBxGHP?#KBhRI zAOh2}Kg#q!xUJ=BE|LL6-%8sjoy(T{^Mee>$>wq`XfqV5t3}cctB8mGm{^OgWhOq4 zeJO)$L6gBTb#Wm}nN_-5tT<+qUBdBAtwvZYl`D*M_k`2ttqa4{2?1ggTsUGH2@~-~ zmA)+HlQO>o*|(3>1kLBjbB>EJaSe2u=mrgO!8rvkwJ>+|!csO4X z(WX=ZDvGu{_~y;Skw2ankNlrqg2aLO7wq7UqoXrNqkfEx_jr{nD(dW{1MO^RcvfHk z`S6jl>Fb7iBSaWkM$UQZBOv3U`-2ZwzkkDjzq|qX^;gbPLql6IBerG1f~9^geW>(_ zz~Y^~q*5)PqMx>8XQL(;%S4%82m`Lx@R3EJ>x;;)o&q5fDPsPpxl&S{*7rE7so&TP zKOfinCC95#Yv78k3mFz?|O&NK(qtQpfGPd zkO6x51>$63E%*OA?&WJLaP1xLv!6G(-0Vi$Wp_VK$>d_Ln&4!-p=j011+Mvj(r$jg zB7OGp+5=~{`VQOthBMi{0Bi$V6=!r^eE|?ZE4(cVyRM*1kjTeEU<=uimehgi&FM}g zFFy+@vS|MuwuD)T1r8aGmk3Aym1=jSIidz;J0c}z!0=OlT7P68j?_Q9Z={X8sTQCz zFnlH+j~{~J2;Wok!dI_K`pJW~X5#K&2UPt_f7coLF_^|UDwj|_L-RyHZwg)CKkXOAPEp`{PjMNfTOr;gJRLj&LHm-ShGe3Xe^EdhV8~pr{pFhHa;aPLdZ9f_iiQziX)3m5$3^55u?2^JQht~(EVlT;Y)vgopXHL_pUD2Jy)f*eioZ- zLealbtl1}QJ3RTVg6XvZ<;!=2@%}Eys(&toH9eT;GSTpA4=}b5@luMlkT*M5N zsQ@bgwy{(i_?qNn`46lB8?;SeW(>hl40L&AtzLE}W5rTe@tuehd3tlUlnLaZrBSdG z_gY$o4o};$?&_U+`w8_h-+n~k{0VFy{ud)eG(*kw-CUqox8}-d3M%YoR5Y@!OHr@Tin+E z9UIG7Q>I%|xQ~Y0f`i<1RP)*Cf-!IIkmuHkSaQ&FHJf?ig!x{rkE&EHta-pc z5Wg~*a%C>gv9Cc(f?CiusR^%!@86e*VNL~OaF$K0!@4NJuG7F^oGg4cU1nQi7Th@* zZKiF#JZXPIfIOa!lCF@$b!ji8Xhe&onSi<3Y#x>mpFTa?X0IseOkhGusN|9qdE#dG zr~?uv0)`5ALB+x)E7GpC2O##I^il?KNp3<_Ek_zSv zVWkqOtPoB*8ZOku>8yGPbr2yKE(~Fc%7?mQ@yv9JFs2v@YK)(yCvC+!?bM`}5<(tw zD|WV+8Wv>fjWE1{$4iNV(oRlk?+=qC*CQ}+oKR-XL8O@USU+_oU*ap~ujG^pAt>7_ zSLP(=TObs&f5_lm3npA}G*^KV-B2qK3_7@Vgr~w_`VdAwSp5N_EF@(3=M{fFuQh9A zD*$rr-0&iw8oxkY7?%FLyJJ;yR4Ac5ju87wri3*Hw3ylEDe@U@#6-$N2`{=2d`@Gd zN3c43summADjIg@H_;=HHA0236u)(rZm7><8Lv1R6C;Nt!P&ee zGA_{}-U>i+P6?{ddzyWM{PZsL*1|;)VFPcme>ye!Y!{>(J={LG8+IJW`I*>tYGH&Z{Of7S6 zZNm%$H;|#t5r+9^VLBYk(mfM~uD^7s?N6*A+HIUv;E75DldWKm@We3XQ}N1u_pTD4 zB|XSA?TDu*gVMhzj|Bkxe`i^Fr8viypNOe;(dm8RSYp0S+m)7YIK9V`OG;dDUy%cI z0Cux=g3J(|Qd*PLNA<0{DhYD$z{tpC0p3#0mROIhE~JRNKZ7M$;V*)Pb)m*K6EU=oD!(oP}qc8Oh1w zdu&MG<^E2}ld*yb?vCr143w6{4f|#23TZHy~l>hHh* z{YXL-G?92>79Z3f_Gyc$#-jd zA@d|_Ea)RZfu2(q8+9y;&gU^TB2$-bQ?o|tJT>Ekt%-?Szbf+M=|Nxtf#0VGMgVa; z{_nVAgS&pjHo`_=9Dcrf;utP0I1x$KJ5J<@0wHc5Au;R>nYyWYnL)S^2wpRD|zo?f_cf&Cag43y*?YhAGL?UK5P?Ch_+7WH{$V;|ID zMBQJ*F3aR;gTeF`-aDdx>p|~3=2OI|W0W}c&IF31O~uqbiYw%l@r->qimR0pTh)2q zepA9x`X2M(F(4EkQHs(3c?t-sWo-;cNhZ9c9Vw4ZD}`(~i#;Ki+< z2u^PwBKLGn&dSmzMF*d+%ffrz_5SOX_|HGZeRmTvq`eWF0wDkdc%57hjoG=VW?IDg$)YZK2Oum3Frxpl1qMr_*LbNt3mOF_3u7i#Nt$MF%Jv z^F2wRZp(^<1f<&w=uT`)t=()Ij+ZwlMMP%bW;_tlV|?&ozks>s1-y`T1R^xAkS?Dk z>n=QulDaRw1v$o|Cn;>wvr~R^K|{$Z67r0`9VQIL@L1Gp z51uadsC@SA z{|<^eAta@iLjF>EVkqFWAom&2Y;+0HPe){rP|&mE!v&v!`1WD7l%Ua|;-HdC(Cd)A zl8}N;`pc1*;Xfr?&B9G^9lg~ zc5ZBpqDjwTK>UA5Qtrci)tlKyYni}k$^kv`=R8@u6}}lCWe~p8=cENJme!3!&VNp! z_r*S0DayZD4QyV1X~v$DXcWk*hWrkJX608Ow~Bj%$te1%>+<19_KYH#{Khn5eh!u&*$vTJ-zk>99H`{Tr!@WJuV4%)Av!wdq`9rj8!1oKXT;xlbWXdHB&N}W`bm;r4& zS+9p`eqO!3@}G9;&XP`cX09u@+^PKq)%E^AHDhwfy35*}eL<^q2L^Ku2K5AS`A6K`3K0 zSaw95`hE-y$Go5V+Z#)i2%=oF9~^ZSBVMQlAa@J3sn1Id?-N-JUnlKE;(ti+kAL}d z>1nrRjlD5~i^0Jc1u?xws0a85KrpIO0ML~1Y5eDyTz>37(x)>{P#-h>ILK=H3LkC< zeZBbKL;Pi%?5^`2d6*>gP%;gOzUrtv+1JtS?#nf{q4laqD0n{7D(Y`|B@W2=w>2bLKMfFr}Dt0sF!aKb-oP z#Tv-hsbFNm?Ad{4DUU+~k^FysK2?;l#>rtLV_IcDm|@U$i62PW$z~%P1G8nI0|==` zy5v<$2?SA_#Su%QO66Y91PJW86zi$&wGWdiyQGlc1L zBgGw&@SytMz2~F->H5}#qUQNLZgZ@=8JP>n(@9iA!-3fx@O?%R8f@`O7JqJoEXUqI zG{KJB6EX_(c~cj;QV}@I>e<^^@&G5@n%~v9sK5TrQ~WNpR25qO%G2mt`ds!_R%86a zST;L$VSFQNYYhG6bQ@9yZtg>B*^EhZ+ubJ4whDeTo!92W zDlpIobfaRqT?ZiOz&0p=XF$Q3fnL={01^_!vlE(K2@7GN;sNCwuLU$-9yDP7-N}gr zQ2E77M&>60#`#pzqYUpETO8vNTL6#$V4R_4DCDyeo1*s+d|_6oDp$TB*|oy{zO_~xEH z;8ie{`$WfD(5k+^%1Vw6f1etYjTyHV)3A)LI?~u^iZof|FqGh}VkqCfL1{E=)&SPs z)O)(td*7LTK-_I18^@5-5qoGD+)}@D%^IG~6uAr#v_`RU)xCV_IB_#ya_=RJ^1Hc= ze;Jgp?-JF#J<*Dt{N_5}@dlZt^A{)$Rrw6tqnxlQ%Q`5)86-YA)q{&f^te63tL8jP zj>2_gX5m;5A6euC+1&Ok8n?c@Sz3A-z5hOY%|gRrjM?uPiUCFm?if_4 zo6lVYImHg7KSoL*PB~JW|NTILWZnNFegEoqrRKn&axVt3=8u;$93CD$kmCNcHH^XJ zRb5e+kRQBw(h}-N7(oyJhzK#855w)PpyX-4AVCoUe>~D44Lhw(Ifnv!*H~XzS*}!19T)Wc2ZnI*NE)V7qt z?VIe8U?FO28)I=gx2R%a0a)(PvrziEfN_7EC%Q7smKRe7h?0j*WS4W!+6*K6O`D7R zM?id%P8QUW_d&MT9%I6DfZ-w*jM2n)za)k#valmeP;bA?M=n&0nWS3gSmOAcBD*A` z3_>eL$;!1~`QMlk5l%D%+Z{|76N80av&%xS%`t{k6df85E<9JqnME?QsFlUa=jZ>* zAq+TxL;RR%&j(b%;}*K2Z)og>c==yow`@MCc;Br?x$*(W-UY5oXnh4FryRVfQP04L zVpO%uc1ut@3|AFcgbA~b>^V)Vg7S{sGF=HipE*ClhUPOU$#_;ap2RF|{G2RBSH>D& zwv9{6L!XuTzjeABz}pz?CC(6?FnMjmInU3;z7&W+VKRD@K#X+jeq$P}YqpRLN~DQ zY<*~$U|P{0>bb}+s4N6IdU(80rS%ynoaI#*TS@KYM zQg{jXiP)r8h@6aDXX|YBkJS&iunKZT&I_{|7x;HvleD9Vtt9;_0ysLxee?>b+~D#Htj;;trz=dKNYf|34KB_Wl;X?cC}>>J27i zM4TVF*~p&G`bMml-Y{S|2DDTH-CFrh=hZUIk}V0BJSQuaUi(d=AtpJghgcJD46H1g z$h4BovTL^OhhB49XH6(c&hjb*& z=xmzZRU>TG*9lHNM*8_?Q}SZ+!44ylt4)ALr zEh{>WWQ`ik$rVyjB}AMO`2~N)TtprWV8l6vE8LqG_lbRZ_q?xAY77lnTI;OSajFAE z!`J!WHKLx%WbBo-MLI3r5&*Nhw#?Bt>%F6v_PNHci&)fc?q~cce;{d$-wsyB{dK!5 zmgjW7y@Z(O)~TYUzqBKw;MJ%z{iBRK;;$FXw8qJN4$(6*2}JDl!Tl*C3}60~1sE56 z%9wp@mm8NqC81}Pi=VOz5z8FrOh-B0aSn5$ogLv6Cp*LH?BgiMILnC+bGic_+!;=n z;+JA=)?lrle?xZ2gfmb6^ke=gvTB_p6PrNwbC-HB#g6q^opqsV)6ssg_ed^ Date: Fri, 16 Dec 2022 06:55:59 -0800 Subject: [PATCH 0096/1273] feat: glutin-based GUI client (#55) Co-authored-by: Sandeep Bansal --- .gitignore | 2 +- Cargo.toml | 5 +- iron-tauri-client/src-tauri/src/main.rs | 2 +- ironrdp-cli/src/main.rs | 2 +- ironrdp-gui-client/Cargo.toml | 51 ++ ironrdp-gui-client/README.md | 8 + ironrdp-gui-client/src/config.rs | 190 ++++++ ironrdp-gui-client/src/gui.rs | 154 +++++ ironrdp-gui-client/src/gui/input.rs | 99 +++ ironrdp-gui-client/src/main.rs | 253 ++++++++ ironrdp-renderer/Cargo.toml | 18 + ironrdp-renderer/shaders/avc.vert | 8 + ironrdp-renderer/shaders/avc420.frag | 35 + ironrdp-renderer/shaders/avc444.frag | 77 +++ ironrdp-renderer/shaders/avc444v2.frag | 79 +++ ironrdp-renderer/shaders/texture_shader.frag | 9 + ironrdp-renderer/shaders/texture_shader.vert | 10 + ironrdp-renderer/src/draw.rs | 601 ++++++++++++++++++ ironrdp-renderer/src/lib.rs | 7 + ironrdp-renderer/src/renderer.rs | 227 +++++++ ironrdp-renderer/src/surface.rs | 331 ++++++++++ ironrdp-replay-client/Cargo.toml | 17 + ironrdp-replay-client/README.md | 1 + ironrdp-replay-client/scripts/runtests.ps1 | 4 + ironrdp-replay-client/src/main.rs | 123 ++++ ironrdp-replay-client/test_data/README.md | 3 + .../test_data/sample1_avc444.data | Bin 0 -> 311405 bytes .../test_data/sample1_avc444v2.data | Bin 0 -> 331268 bytes .../test_data/sample2_avc444.data | Bin 0 -> 193685 bytes .../test_data/sample2_avc444v2.data | Bin 0 -> 1352813 bytes ironrdp-session/src/active_session.rs | 9 +- ironrdp-session/src/active_session/x224.rs | 30 +- .../src/active_session/x224/gfx.rs | 21 +- .../src/connection_sequence/user_info.rs | 2 +- ironrdp-session/src/errors.rs | 32 +- ironrdp-session/src/lib.rs | 6 +- 36 files changed, 2397 insertions(+), 19 deletions(-) create mode 100644 ironrdp-gui-client/Cargo.toml create mode 100644 ironrdp-gui-client/README.md create mode 100644 ironrdp-gui-client/src/config.rs create mode 100644 ironrdp-gui-client/src/gui.rs create mode 100644 ironrdp-gui-client/src/gui/input.rs create mode 100644 ironrdp-gui-client/src/main.rs create mode 100644 ironrdp-renderer/Cargo.toml create mode 100644 ironrdp-renderer/shaders/avc.vert create mode 100644 ironrdp-renderer/shaders/avc420.frag create mode 100644 ironrdp-renderer/shaders/avc444.frag create mode 100644 ironrdp-renderer/shaders/avc444v2.frag create mode 100644 ironrdp-renderer/shaders/texture_shader.frag create mode 100644 ironrdp-renderer/shaders/texture_shader.vert create mode 100644 ironrdp-renderer/src/draw.rs create mode 100644 ironrdp-renderer/src/lib.rs create mode 100644 ironrdp-renderer/src/renderer.rs create mode 100644 ironrdp-renderer/src/surface.rs create mode 100644 ironrdp-replay-client/Cargo.toml create mode 100644 ironrdp-replay-client/README.md create mode 100644 ironrdp-replay-client/scripts/runtests.ps1 create mode 100644 ironrdp-replay-client/src/main.rs create mode 100644 ironrdp-replay-client/test_data/README.md create mode 100644 ironrdp-replay-client/test_data/sample1_avc444.data create mode 100644 ironrdp-replay-client/test_data/sample1_avc444v2.data create mode 100644 ironrdp-replay-client/test_data/sample2_avc444.data create mode 100644 ironrdp-replay-client/test_data/sample2_avc444v2.data diff --git a/.gitignore b/.gitignore index 49bac416..29948552 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ Cargo.lock target/ -ironrdp_client.log +*.log # Editor/IDE files *~ diff --git a/Cargo.toml b/Cargo.toml index 06efe42e..ac99411a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,5 +2,8 @@ members = [ "ironrdp", "ironrdp-session", - "ironrdp-cli" + "ironrdp-gui-client", + "ironrdp-cli", + "ironrdp-renderer", + "ironrdp-replay-client", ] diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs index b243826f..89aa66a7 100644 --- a/iron-tauri-client/src-tauri/src/main.rs +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -363,7 +363,7 @@ async fn rdp_session_task( u32::from(connection_sequence_result.desktop_size.height), ); - let mut active_stage = ActiveStageProcessor::new(input_config, connection_sequence_result); + let mut active_stage = ActiveStageProcessor::new(input_config, None, connection_sequence_result); let mut frame_id = 0; 'outer: loop { diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs index fface121..e8504e06 100644 --- a/ironrdp-cli/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -105,7 +105,7 @@ async fn run(config: Config) -> Result<(), RdpError> { u32::from(connection_sequence_result.desktop_size.height), ); - let mut active_stage = ActiveStageProcessor::new(config.input, connection_sequence_result); + let mut active_stage = ActiveStageProcessor::new(config.input, None, connection_sequence_result); let mut frame_id = 0; 'outer: loop { diff --git a/ironrdp-gui-client/Cargo.toml b/ironrdp-gui-client/Cargo.toml new file mode 100644 index 00000000..dbe17d33 --- /dev/null +++ b/ironrdp-gui-client/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = "ironrdp-gui-client" +version = "0.4.2" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] +keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] + +[features] +default = ["rustls"] +rustls = ["dep:rustls", "dep:tokio-rustls"] +native-tls = ["dep:native-tls", "dep:async-native-tls"] + +[dependencies] + +# Protocol +ironrdp = { path = "../ironrdp" } +ironrdp-session = { path = "../ironrdp-session" } +sspi = "0.4.0" + +# CLI +clap = { version = "4.0", features = ["derive", "cargo"] } +exitcode = "1.1.2" + +# logging +log = "0.4" +fern = "0.6" + +# SSL +x509-parser = "0.14" +native-tls = { version = "0.2", optional = true } +rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } + +# async, futures +tokio = { version = "1", features = ["full"]} +async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } +tokio-rustls = { version = "0.23", optional = true } +tokio-util = { version = "0.7.4", features = ["compat"] } +futures-util = "0.3" + +# Utils +chrono = "0.4.22" +image = "0.24.4" + +# Gui +glow = { version ="0.11.0" } +glutin = { version = "0.29" } +ironrdp-renderer = { path = "../ironrdp-renderer"} \ No newline at end of file diff --git a/ironrdp-gui-client/README.md b/ironrdp-gui-client/README.md new file mode 100644 index 00000000..2192776c --- /dev/null +++ b/ironrdp-gui-client/README.md @@ -0,0 +1,8 @@ +# GUI client +1. An experimental GUI based of glutin and glow library. +2. Sample command to run the ui client: + ``` + cargo run --bin ironrdp-gui-client -- -u SimpleUsername -p SimplePassword! --avc444 --thin-client --small-cache --capabilities 0xf 192.168.1.100:3389 + ``` +3. If the GUI has artifacts it can be dumped to a file using the gfx_dump_file parameter. Later the ironrdp-replay-client binary can be used to debug and fix any issues + in the renderer. \ No newline at end of file diff --git a/ironrdp-gui-client/src/config.rs b/ironrdp-gui-client/src/config.rs new file mode 100644 index 00000000..e9a9deb9 --- /dev/null +++ b/ironrdp-gui-client/src/config.rs @@ -0,0 +1,190 @@ +use std::{net::SocketAddr, num::ParseIntError, path::PathBuf}; + +use clap::{clap_derive::ValueEnum, crate_name, Parser}; +use ironrdp_session::{GraphicsConfig, InputConfig}; +use sspi::AuthIdentity; + +const DEFAULT_WIDTH: u16 = 1920; +const DEFAULT_HEIGHT: u16 = 1080; +const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; +const USER_CHANNEL_NAME: &str = "USER"; + +pub struct Config { + pub log_file: String, + pub routing_addr: SocketAddr, + pub input: InputConfig, + pub gfx_dump_file: Option, +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +enum SecurityProtocol { + Ssl, + Hybrid, + HybridEx, +} + +impl SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::nego::SecurityProtocol { + match security_protocol { + SecurityProtocol::Ssl => ironrdp::nego::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::nego::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::nego::SecurityProtocol::HYBRID_EX, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +enum KeyboardType { + IbmPcXt, + OlivettiIco, + IbmPcAt, + IbmEnhanced, + Nokia1050, + Nokia9140, + Japanese, +} + +impl KeyboardType { + fn parse(keyboard_type: KeyboardType) -> ironrdp::gcc::KeyboardType { + match keyboard_type { + KeyboardType::IbmEnhanced => ironrdp::gcc::KeyboardType::IbmEnhanced, + KeyboardType::IbmPcAt => ironrdp::gcc::KeyboardType::IbmPcAt, + KeyboardType::IbmPcXt => ironrdp::gcc::KeyboardType::IbmPcXt, + KeyboardType::OlivettiIco => ironrdp::gcc::KeyboardType::OlivettiIco, + KeyboardType::Nokia1050 => ironrdp::gcc::KeyboardType::Nokia1050, + KeyboardType::Nokia9140 => ironrdp::gcc::KeyboardType::Nokia9140, + KeyboardType::Japanese => ironrdp::gcc::KeyboardType::Japanese, + } + } +} + +fn parse_hex(input: &str) -> Result { + if input.starts_with("0x") { + u32::from_str_radix(input.get(2..).unwrap_or(""), 16) + } else { + input.parse::() + } +} +/// Devolutions IronRDP client +#[derive(Parser, Debug)] +#[clap(author = "Devolutions", about = "Devolutions-IronRDP client")] +#[clap(version, long_about = None)] +struct Args { + /// A file with IronRDP client logs + #[clap(short, long, value_parser, default_value_t = format!("{}.log", crate_name!()))] + log_file: String, + + /// An address on which the client will connect. Format: : + #[clap(value_parser = is_socket_address)] + addr: SocketAddr, + + /// A target RDP server user name + #[clap(short, long, value_parser)] + username: String, + + /// An optional target RDP server domain name + #[clap(short, long, value_parser)] + domain: Option, + + /// A target RDP server user password + #[clap(short, long, value_parser)] + password: String, + + /// Specify the security protocols to use + #[clap(long, value_enum, value_parser, default_value_t = SecurityProtocol::HybridEx)] + security_protocol: SecurityProtocol, + + /// The keyboard type + #[clap(long, value_enum, value_parser, default_value_t = KeyboardType::IbmEnhanced)] + keyboard_type: KeyboardType, + + /// The keyboard subtype (an original equipment manufacturer-dependent value) + #[clap(long, value_parser, default_value_t = 0)] + keyboard_subtype: u32, + + /// The number of function keys on the keyboard + #[clap(long, value_parser, default_value_t = 12)] + keyboard_functional_keys_count: u32, + + /// The input method editor (IME) file name associated with the active input locale + #[clap(long, value_parser, default_value_t = String::from(""))] + ime_file_name: String, + + /// Contains a value that uniquely identifies the client + #[clap(long, value_parser, default_value_t = String::from(""))] + dig_product_id: String, + + /// Enable AVC444 + #[clap(long, group = "avc")] + avc444: bool, + + /// Enable H264 + #[clap(long, group = "avc")] + h264: bool, + + /// Enable thin client + #[clap(long)] + thin_client: bool, + + /// Enable small cache + #[clap(long)] + small_cache: bool, + + /// Enabled capability versions. Each bit represents enabling a capability version + /// starting from V8 to V10_7 + #[clap(long, value_parser = parse_hex, default_value_t = 0)] + capabilities: u32, + + /// Enables dumping the gfx stream to a file location + #[clap(long, value_parser)] + gfx_dump_file: Option, +} + +fn is_socket_address(s: &str) -> Result { + s.parse::() + .map_err(|_| String::from("The address does not match the format: :")) +} + +impl Config { + pub fn parse_args() -> Self { + let args = Args::parse(); + + let graphics_config = if args.avc444 || args.h264 { + Some(GraphicsConfig { + avc444: args.avc444, + h264: args.h264, + thin_client: args.thin_client, + small_cache: args.small_cache, + capabilities: args.capabilities, + }) + } else { + None + }; + + let input = InputConfig { + credentials: AuthIdentity { + username: args.username, + password: args.password, + domain: args.domain, + }, + security_protocol: SecurityProtocol::parse(args.security_protocol), + keyboard_type: KeyboardType::parse(args.keyboard_type), + keyboard_subtype: args.keyboard_subtype, + keyboard_functional_keys_count: args.keyboard_functional_keys_count, + ime_file_name: args.ime_file_name, + dig_product_id: args.dig_product_id, + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_string(), + user_channel_name: USER_CHANNEL_NAME.to_string(), + graphics_config, + }; + + Self { + log_file: args.log_file, + routing_addr: args.addr, + input, + gfx_dump_file: args.gfx_dump_file, + } + } +} diff --git a/ironrdp-gui-client/src/gui.rs b/ironrdp-gui-client/src/gui.rs new file mode 100644 index 00000000..8cf89def --- /dev/null +++ b/ironrdp-gui-client/src/gui.rs @@ -0,0 +1,154 @@ +use std::fmt::Debug; + +use std::path::PathBuf; +use std::sync::mpsc::{Receiver, SyncSender}; + +use std::sync::{self, Arc}; + +use glutin::dpi::PhysicalPosition; + +use glutin::event::{Event, WindowEvent}; +use glutin::event_loop::ControlFlow; + +use ironrdp::dvc::gfx::ServerPdu; +use ironrdp_renderer::renderer::Renderer; +use ironrdp_session::{ErasedWriter, GfxHandler}; +use tokio::sync::Mutex; + +use crate::RdpError; + +use self::input::{handle_input_events, translate_input_event}; + +mod input; + +#[derive(Debug, Clone)] +pub struct MessagePassingGfxHandler { + channel: SyncSender, +} + +impl MessagePassingGfxHandler { + pub fn new(channel: SyncSender) -> Self { + Self { channel } + } +} + +impl GfxHandler for MessagePassingGfxHandler { + fn on_message(&self, message: ServerPdu) -> Result, RdpError> { + self.channel + .send(message) + .map_err(|e| RdpError::SendError(e.to_string()))?; + Ok(None) + } +} + +pub struct UiContext { + window: glutin::ContextWrapper, + event_loop: glutin::event_loop::EventLoop, +} + +impl UiContext { + fn create_ui_context( + width: i32, + height: i32, + ) -> ( + glutin::ContextWrapper, + glutin::event_loop::EventLoop, + ) { + let event_loop = glutin::event_loop::EventLoopBuilder::with_user_event().build(); + let window_builder = glutin::window::WindowBuilder::new() + .with_title("IronRDP Client") + .with_resizable(false) + .with_inner_size(glutin::dpi::PhysicalSize::new(width, height)); + let window = glutin::ContextBuilder::new() + .with_vsync(true) + .build_windowed(window_builder, &event_loop) + .unwrap(); + (window, event_loop) + } + + pub fn new(width: u16, height: u16) -> Self { + let (window, event_loop) = UiContext::create_ui_context(width as i32, height as i32); + UiContext { window, event_loop } + } +} + +#[derive(Debug)] +pub enum UserEvent {} + +/// Launches the GUI. Because of the way UI programming works the event loop has to be run from main thread +pub fn launch_gui( + context: UiContext, + gfx_dump_file: Option, + graphic_receiver: Receiver, + stream: Arc>, +) -> Result<(), RdpError> { + let (sender, receiver) = sync::mpsc::channel(); + + tokio::spawn(async move { handle_input_events(receiver, stream).await }); + + let renderer = Renderer::new(context.window, graphic_receiver, gfx_dump_file); + // We handle events differently between targets + + let mut last_position: Option> = None; + context.event_loop.run(move |main_event, _, control_flow| { + *control_flow = ControlFlow::Wait; + + match &main_event { + Event::LoopDestroyed => {} + Event::RedrawRequested(_) => { + let res = renderer.repaint(); + if res.is_err() { + log::error!("Repaint send error: {:?}", res); + } + } + Event::WindowEvent { ref event, .. } => match event { + WindowEvent::CloseRequested => *control_flow = ControlFlow::Exit, + WindowEvent::Resized(..) => { + // let width = new_size.width; + // let height = new_size.height; + // let scale_factor = window.window().scale_factor(); + // info!("Scale factor: {} Window size: {:?}x {:?}", scale_factor, width, height); + // let layout_pdu = display::ClientPdu::DisplayControlMonitorLayout(MonitorLayoutPdu { + // monitors: vec![Monitor { + // left: 0, + // top: 0, + // width: width, + // height: height, + // flags: MonitorFlags::PRIMARY, + // physical_width: 0, + // physical_height: 0, + // orientation: Orientation::Landscape, + // desktop_scale_factor: 0, + // device_scale_factor: 0, + // }], + // }); + // let mut data_buffer = Vec::new(); + // layout_pdu.to_buffer(&mut data_buffer)?; + // if let (Some(x224_processor), Some(stream)) = (x224_processor.as_ref(), stream.as_mut()) { + // let mut x224_processor = x224_processor.lock()?; + // // Ignorable eror in case of display channel is not connected + // let result = + // x224_processor.send_dynamic(&mut *stream, x224::RDP8_DISPLAY_PIPELINE_NAME, data_buffer); + // if result.is_err() { + // log::error!("Monitor layour {:?}", result); + // } else { + // log::error!("Monitor layour success"); + // } + // } + } + WindowEvent::KeyboardInput { .. } + | WindowEvent::MouseInput { .. } + | WindowEvent::CursorMoved { .. } => { + if let Some(event) = translate_input_event(main_event, &mut last_position) { + let result = sender.send(event); + if result.is_err() { + log::error!("Send of event failed: {:?}", result); + } + } + } + _ => {} + }, + _ => (), + } + }) +} diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs new file mode 100644 index 00000000..3a5bea65 --- /dev/null +++ b/ironrdp-gui-client/src/gui/input.rs @@ -0,0 +1,99 @@ +use std::sync::mpsc::Receiver; +use std::sync::Arc; + +use futures_util::AsyncWriteExt; +use glutin::dpi::PhysicalPosition; +use glutin::event::ElementState; +use glutin::event::{Event, WindowEvent}; + +use ironrdp::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; +use ironrdp::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use ironrdp::input::MousePdu; +use ironrdp::PduParsing; +use ironrdp_session::ErasedWriter; +use tokio::sync::Mutex; + +use super::UserEvent; + +pub async fn handle_input_events(receiver: Receiver, event_stream: Arc>) { + loop { + let mut fastpath_events = Vec::new(); + let event = receiver.recv().unwrap(); + fastpath_events.push(event); + while let Ok(event) = receiver.try_recv() { + fastpath_events.push(event); + } + let mut data: Vec = Vec::new(); + let input_pdu = FastPathInput(fastpath_events); + input_pdu.to_buffer(&mut data).unwrap(); + let mut event_stream = event_stream.lock().await; + let _result = event_stream.write_all(data.as_slice()).await; + let _result = event_stream.flush().await; + } +} + +pub fn translate_input_event( + event: Event, + last_position: &mut Option>, +) -> Option { + match event { + Event::WindowEvent { ref event, .. } => match event { + WindowEvent::KeyboardInput { + device_id: _, + input, + is_synthetic: _, + } => { + let scan_code = input.scancode & 0xff; + + let flags = match input.state { + ElementState::Pressed => KeyboardFlags::empty(), + ElementState::Released => KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + }; + Some(FastPathInputEvent::KeyboardEvent(flags, scan_code as u8)) + } + WindowEvent::MouseInput { state, button, .. } => { + if let Some(position) = last_position.as_ref() { + let button = match button { + glutin::event::MouseButton::Left => ButtonEvents::LEFT_BUTTON, + glutin::event::MouseButton::Right => ButtonEvents::RIGHT_BUTTON, + glutin::event::MouseButton::Middle => ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, + glutin::event::MouseButton::Other(_) => ButtonEvents::empty(), + }; + let button_events = button + | match state { + ElementState::Pressed => ButtonEvents::DOWN, + ElementState::Released => ButtonEvents::empty(), + }; + let pdu = MousePdu { + x_position: position.x as u16, + y_position: position.y as u16, + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events, + number_of_wheel_rotations: 0, + }; + + Some(FastPathInputEvent::MouseEvent(pdu)) + } else { + None + } + } + WindowEvent::CursorMoved { position, .. } => { + *last_position = Some(*position); + + let pdu = MousePdu { + x_position: position.x as u16, + y_position: position.y as u16, + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + }; + + Some(FastPathInputEvent::MouseEvent(pdu)) + } + _ => None, + }, + _ => None, + } +} diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-gui-client/src/main.rs new file mode 100644 index 00000000..ecba717d --- /dev/null +++ b/ironrdp-gui-client/src/main.rs @@ -0,0 +1,253 @@ +#[macro_use] +extern crate log; + +mod config; + +use std::io; +use std::sync::Arc; + +use crate::config::Config; +use futures_util::io::AsyncWriteExt as _; +use gui::MessagePassingGfxHandler; +use ironrdp::codecs::rfx::image_processing::PixelFormat; +use ironrdp::dvc::gfx::ServerPdu; +use ironrdp_session::image::DecodedImage; +use ironrdp_session::{ + process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, ErasedWriter, RdpError, UpgradedStream, +}; +use std::{process, sync::mpsc::sync_channel}; +use tokio::io::AsyncWriteExt as _; +use tokio::net::TcpStream; +use tokio::sync::Mutex; +use tokio_util::compat::TokioAsyncReadCompatExt as _; +use x509_parser::prelude::{FromDer as _, X509Certificate}; + +#[cfg(feature = "rustls")] +type TlsStream = tokio_util::compat::Compat>; + +#[cfg(all(feature = "native-tls", not(feature = "rustls")))] +type TlsStream = tokio_util::compat::Compat>; + +mod gui; + +#[cfg(feature = "rustls")] +mod danger { + use std::time::SystemTime; + + use rustls::client::ServerCertVerified; + use rustls::{Certificate, Error, ServerName}; + + pub struct NoCertificateVerification; + + impl rustls::client::ServerCertVerifier for NoCertificateVerification { + fn verify_server_cert( + &self, + _end_entity: &Certificate, + _intermediates: &[Certificate], + _server_name: &ServerName, + _scts: &mut dyn Iterator, + _ocsp_response: &[u8], + _now: SystemTime, + ) -> Result { + Ok(rustls::client::ServerCertVerified::assertion()) + } + } +} + +#[tokio::main] +async fn main() { + let config = Config::parse_args(); + setup_logging(config.log_file.as_str()).expect("failed to initialize logging"); + + let exit_code = match run(config).await { + Ok(_) => { + println!("RDP successfully finished"); + exitcode::OK + } + Err(RdpError::IOError(e)) if e.kind() == io::ErrorKind::UnexpectedEof => { + error!("{}", e); + println!("The server has terminated the RDP session"); + exitcode::NOHOST + } + Err(ref e) => { + error!("{}", e); + println!("RDP failed because of {}", e); + + match e { + RdpError::IOError(_) => exitcode::IOERR, + RdpError::ConnectionError(_) => exitcode::NOHOST, + _ => exitcode::PROTOCOL, + } + } + }; + + std::process::exit(exit_code); +} + +fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { + fern::Dispatch::new() + .format(|out, message, record| { + out.finish(format_args!( + "{}[{}] {}", + chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S:%6f]"), + record.level(), + message + )) + }) + .chain(fern::log_file(log_file)?) + .apply()?; + + Ok(()) +} + +async fn run(config: Config) -> Result<(), RdpError> { + let stream = TcpStream::connect(config.routing_addr) + .await + .map_err(RdpError::ConnectionError)?; + + let (connection_sequence_result, reader, writer) = + process_connection_sequence(stream.compat(), &config.routing_addr, &config.input, establish_tls).await?; + + let writer = Arc::new(Mutex::new(writer)); + let image = DecodedImage::new( + PixelFormat::RgbA32, + u32::from(connection_sequence_result.desktop_size.width), + u32::from(connection_sequence_result.desktop_size.height), + ); + + launch_client(config, connection_sequence_result, image, reader, writer).await +} + +async fn launch_client( + config: Config, + connection_sequence_result: ironrdp_session::ConnectionSequenceResult, + image: DecodedImage, + reader: ironrdp_session::FramedReader, + writer: Arc>, +) -> Result<(), RdpError> { + let (sender, receiver) = sync_channel::(1); + let handler = MessagePassingGfxHandler::new(sender); + let active_stage = ActiveStageProcessor::new( + config.input.clone(), + Some(Box::new(handler)), + connection_sequence_result, + ); + let gui = gui::UiContext::new(config.input.width, config.input.height); + + let active_stage_writer = writer.clone(); + let active_stage_handle = tokio::spawn(async move { + let result = process_active_stage(reader, active_stage, image, active_stage_writer).await; + if result.is_err() { + log::error!("Active stage failed: {:?}", result); + process::exit(-1); + } + result + }); + gui::launch_gui(gui, config.gfx_dump_file, receiver, writer.clone())?; + active_stage_handle.await.map_err(|e| RdpError::IOError(e.into()))? +} + +async fn process_active_stage( + mut reader: ironrdp_session::FramedReader, + mut active_stage: ActiveStageProcessor, + mut image: DecodedImage, + writer: Arc>, +) -> Result<(), RdpError> { + let mut frame_id = 0; + 'outer: loop { + let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; + let outputs = active_stage.process(&mut image, frame).await?; + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => { + let mut writer = writer.lock().await; + writer.write_all(&frame).await? + } + ActiveStageOutput::GraphicsUpdate(_region) => { + // TODO: control this with CLI argument + dump_image(&image, frame_id); + + frame_id += 1; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } + Ok(()) +} + +// TODO: this can be refactored into a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) +async fn establish_tls(stream: tokio_util::compat::Compat) -> Result, RdpError> { + let stream = stream.into_inner(); + + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let mut tls_stream = { + let connector = async_native_tls::TlsConnector::new() + .danger_accept_invalid_certs(true) + .use_sni(false); + + // domain is an empty string because client accepts IP address in the cli + match connector.connect("", stream).await { + Ok(tls) => tls, + Err(err) => return Err(RdpError::TlsHandshakeError(err)), + } + }; + + #[cfg(feature = "rustls")] + let mut tls_stream = { + let mut client_config = rustls::client::ClientConfig::builder() + .with_safe_defaults() + .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) + .with_no_client_auth(); + // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) + client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); + let rc_config = std::sync::Arc::new(client_config); + let example_com = "stub_string".try_into().unwrap(); + let connector = tokio_rustls::TlsConnector::from(rc_config); + connector.connect(example_com, stream).await? + }; + + tls_stream.flush().await?; + + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let server_public_key = { + let cert = tls_stream + .peer_certificate() + .map_err(RdpError::TlsConnectorError)? + .ok_or(RdpError::MissingPeerCertificate)?; + get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? + }; + + #[cfg(feature = "rustls")] + let server_public_key = { + let cert = tls_stream + .get_ref() + .1 + .peer_certificates() + .ok_or(RdpError::MissingPeerCertificate)?[0] + .as_ref(); + get_tls_peer_pubkey(cert.to_vec())? + }; + + Ok(UpgradedStream { + stream: tls_stream.compat(), + server_public_key, + }) +} + +pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { + let res = X509Certificate::from_der(&cert[..]) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; + let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; + + Ok(public_key.data.to_vec()) +} + +pub fn dump_image(image: &DecodedImage, frame_id: usize) { + debug_assert_eq!(image.pixel_format(), PixelFormat::RgbA32); + + image::RgbaImage::from_raw(image.width(), image.height(), image.data().to_vec()) + .unwrap() + .save(format!("frame.{frame_id}.jpg")) + .unwrap(); +} diff --git a/ironrdp-renderer/Cargo.toml b/ironrdp-renderer/Cargo.toml new file mode 100644 index 00000000..23aecb3e --- /dev/null +++ b/ironrdp-renderer/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "ironrdp-renderer" +version = "0.1.0" +edition = "2018" + +[lib] +path = "src/lib.rs" + +[dependencies] +glow = "0.11" +log = "0.4" +futures = "0.3.17" +failure = "0.1" +byteorder = "1.3" +ironrdp = { path = "../ironrdp" } +glutin = { version = "0.29" } +openh264 = { version = "0.3" } +tokio = { version = "1", features = ["full"]} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc.vert b/ironrdp-renderer/shaders/avc.vert new file mode 100644 index 00000000..12aa17d5 --- /dev/null +++ b/ironrdp-renderer/shaders/avc.vert @@ -0,0 +1,8 @@ +precision mediump float; + +uniform mat4 u_projection; +attribute vec2 a_position; + +void main(){ + gl_Position = u_projection * vec4(a_position, 0.0, 1.0); +} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc420.frag b/ironrdp-renderer/shaders/avc420.frag new file mode 100644 index 00000000..1e68d41a --- /dev/null +++ b/ironrdp-renderer/shaders/avc420.frag @@ -0,0 +1,35 @@ +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +void main(void) { + // Inverted image + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); + + // Scale from [0..width, 0..height] to [0..1.0, 0..1.0] range and + // then scale to eliminate the stride padding + vec2 tex_coord = ((coordinates) / screen_size) * stride_scale; + + float main_y_channel = texture2D(main_y_texture, tex_coord).x; + float main_u_channel = texture2D(main_u_texture, tex_coord).x; + float main_v_channel = texture2D(main_v_texture, tex_coord).x; + + vec4 channels = vec4(main_y_channel, main_u_channel, main_v_channel, 1.0); + gl_FragColor = channels * conversion; +} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc444.frag b/ironrdp-renderer/shaders/avc444.frag new file mode 100644 index 00000000..1b55e93b --- /dev/null +++ b/ironrdp-renderer/shaders/avc444.frag @@ -0,0 +1,77 @@ +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +const vec2 half_offset = vec2(0.5, 0.5); + +void main(void) { + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y) ; + vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; + // Query the main view + float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; + float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; + float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; + + coordinates = coordinates - half_offset; + + float offset = floor(mod(coordinates.y, 16.0) * 0.5); + float start_y = offset + floor(coordinates.y / 16.0) * 16.0; + // Auxiliary view + vec2 aux_tex_coord = vec2(coordinates.x, start_y) + half_offset; + vec2 aux_tex_coord_next = aux_tex_coord + vec2(1.0, 0.0); + + vec2 top_half = aux_tex_coord/screen_size * stride_scale; + vec2 top_half_next = aux_tex_coord_next/screen_size * stride_scale; + vec2 bottom_half = (aux_tex_coord + vec2(0.0, 8.0))/screen_size * stride_scale; + vec2 bottom_half_next = (aux_tex_coord_next + vec2(0.0, 8.0))/screen_size * stride_scale; + + float aux_b4 = texture2D(aux_y_texture, top_half).x; + float aux_b5 = texture2D(aux_y_texture, bottom_half).x; + float next_u = texture2D(aux_y_texture, top_half_next).x; + float next_v = texture2D(aux_y_texture, bottom_half_next).x; + vec2 aux_uv_additional = vec2(next_u, next_v); + + float aux_b6 = texture2D(aux_u_texture, main_tex_coord).x; + float aux_b7 = texture2D(aux_v_texture, main_tex_coord).x; + + float is_x_odd = mod(coordinates.x, 2.0); + float is_y_odd = mod(coordinates.y, 2.0); + float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); + + vec2 aux_uv_main = vec2(aux_b4, aux_b5); + vec2 aux_uv_secondary = vec2(aux_b6, aux_b7); + + vec2 uv_channels = is_y_odd * aux_uv_main + (1.0 - is_y_odd) * is_x_odd * aux_uv_secondary; + + // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule + vec2 main_uv=vec2(main_u_channel, main_v_channel); + vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_secondary - aux_uv_additional, vec2(0.0, 0.0), vec2(1.0, 1.0)); + vec2 uv_diff = abs(uv_augmented - main_uv); + bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); + vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); + vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); + + vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; + + vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); + vec3 rgb = (channels * conversion).xyz; + gl_FragColor = vec4(rgb, 1.0); +} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc444v2.frag b/ironrdp-renderer/shaders/avc444v2.frag new file mode 100644 index 00000000..6e72bfcc --- /dev/null +++ b/ironrdp-renderer/shaders/avc444v2.frag @@ -0,0 +1,79 @@ +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +const vec2 half_offset = vec2(0.5, 0.5); + +void main(void) { + + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); + + // Query the main view + vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; + float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; + float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; + float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; + + coordinates = coordinates - half_offset; + float left_x = coordinates.x * 0.5; + float right_x = (screen_size.x + coordinates.x) * 0.5; + + // Auxiliary view + // Left + vec2 left_half = (vec2(left_x, coordinates.y) + half_offset)/screen_size * stride_scale; + float aux_ub4 = texture2D(aux_y_texture, left_half).x; + float aux_ub6 = texture2D(aux_u_texture, left_half).x; + float aux_ub8 = texture2D(aux_v_texture, left_half).x; + + // Right + vec2 right_half = (vec2(right_x, coordinates.y) + half_offset)/screen_size * stride_scale; + float aux_vb5 = texture2D(aux_y_texture, right_half).x; + float aux_vb7 = texture2D(aux_u_texture, right_half).x; + float aux_vb9 = texture2D(aux_v_texture, right_half).x; + + // Create aux view + vec2 aux_uv_main = vec2(aux_ub4, aux_vb5); + vec2 aux_uv_left = vec2(aux_ub6, aux_vb7); + vec2 aux_uv_right = vec2(aux_ub8, aux_vb9); + + float is_x_odd = mod(coordinates.x, 2.0); + float is_y_odd = mod(coordinates.y, 2.0); + float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); + float is_x_mod_4 = float(mod(coordinates.x, 4.0) < 1.0); + + // If x is odd then b4,b5 have data + // else if y is odd then b6,b7 have data when x is divisible by 4 + // else b8,b9 have data + vec2 uv_channels = is_x_odd * aux_uv_main + (1.0 - is_x_odd) * is_y_odd * (is_x_mod_4 * aux_uv_left + (1.0 - is_x_mod_4) * aux_uv_right); + + // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule + vec2 main_uv=vec2(main_u_channel, main_v_channel); + vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_left - aux_uv_right, vec2(0.0, 0.0), vec2(1.0, 1.0)); + vec2 uv_diff = abs(uv_augmented - main_uv); + bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); + vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); + vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); + + vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; + vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); + vec3 rgb = (channels * conversion).xyz; + gl_FragColor = vec4(rgb, 1.0); +} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/texture_shader.frag b/ironrdp-renderer/shaders/texture_shader.frag new file mode 100644 index 00000000..bbbb22d2 --- /dev/null +++ b/ironrdp-renderer/shaders/texture_shader.frag @@ -0,0 +1,9 @@ +precision lowp float; + +varying vec2 v_texCoord; +uniform sampler2D screen_texture; + +void main(void) { + vec4 color = texture2D(screen_texture, v_texCoord); + gl_FragColor = color; +} \ No newline at end of file diff --git a/ironrdp-renderer/shaders/texture_shader.vert b/ironrdp-renderer/shaders/texture_shader.vert new file mode 100644 index 00000000..f9acb74e --- /dev/null +++ b/ironrdp-renderer/shaders/texture_shader.vert @@ -0,0 +1,10 @@ +precision mediump float; + +attribute vec2 a_position; +attribute vec2 a_tex_coord; +varying vec2 v_texCoord; + +void main(){ + v_texCoord = a_tex_coord; + gl_Position = vec4(a_position, 0.0, 1.0); +} \ No newline at end of file diff --git a/ironrdp-renderer/src/draw.rs b/ironrdp-renderer/src/draw.rs new file mode 100644 index 00000000..721c13d3 --- /dev/null +++ b/ironrdp-renderer/src/draw.rs @@ -0,0 +1,601 @@ +use glow::*; +use ironrdp::Rectangle; + +use std::{iter::FromIterator, mem::size_of, slice::from_raw_parts, sync::Arc}; + +fn cast_as_bytes(input: &[T]) -> &[u8] { + unsafe { from_raw_parts(input.as_ptr() as *const u8, input.len() * size_of::()) } +} + +pub struct DrawingTexture { + gl: Arc, + texture: Texture, + location: UniformLocation, + height: i32, +} + +impl DrawingTexture { + unsafe fn new(gl_ref: Arc, program: Program, location: &str, height: i32) -> Self { + let gl = &gl_ref; + let location = gl.get_uniform_location(program, location).unwrap(); + let texture = gl.create_texture().unwrap(); + gl.bind_texture(TEXTURE_2D, Some(texture)); + gl.tex_parameter_i32(TEXTURE_2D, TEXTURE_MAG_FILTER, NEAREST as i32); + gl.tex_parameter_i32(TEXTURE_2D, TEXTURE_MIN_FILTER, NEAREST as i32); + gl.tex_parameter_i32(TEXTURE_2D, TEXTURE_WRAP_S, CLAMP_TO_EDGE as i32); + gl.tex_parameter_i32(TEXTURE_2D, TEXTURE_WRAP_T, CLAMP_TO_EDGE as i32); + gl.bind_texture(TEXTURE_2D, None); + DrawingTexture { + gl: gl_ref.clone(), + texture, + location, + height, + } + } + + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn bind_texture(&self, gl: &Context, pixels: &[u8], stride: i32) { + gl.bind_texture(TEXTURE_2D, Some(self.texture)); + gl.tex_image_2d( + TEXTURE_2D, + 0, + glow::R8 as i32, + stride, + self.height, + 0, + glow::RED, + UNSIGNED_BYTE, + Some(pixels), + ); + gl.bind_texture(TEXTURE_2D, None); + } +} + +impl Drop for DrawingTexture { + fn drop(&mut self) { + unsafe { + self.gl.delete_texture(self.texture); + } + } +} + +pub struct DrawingTextures { + y: DrawingTexture, + u: DrawingTexture, + v: DrawingTexture, + height: i32, + index: i32, +} + +impl DrawingTextures { + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn new( + gl_ref: Arc, + program: Program, + height: i32, + y_location: &str, + u_location: &str, + v_location: &str, + index: i32, + ) -> Self { + let y = DrawingTexture::new(gl_ref.clone(), program, y_location, height); + let u = DrawingTexture::new(gl_ref.clone(), program, u_location, height / 2); + let v = DrawingTexture::new(gl_ref, program, v_location, height / 2); + + DrawingTextures { y, u, v, height, index } + } + + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn bind(&self, gl: &Context, data: &[u8], stride_0: usize, stride_1: usize) { + let luma = stride_0 * self.height as usize; + let chroma = stride_1 * (self.height as usize / 2); + let y_pixels = &data[0..luma]; + let u_pixels = &data[luma..luma + chroma]; + let v_pixels = &data[luma + chroma..]; + + self.y.bind_texture(gl, y_pixels, stride_0 as i32); + self.u.bind_texture(gl, u_pixels, stride_1 as i32); + self.v.bind_texture(gl, v_pixels, stride_1 as i32); + + self.activate(gl); + } + + unsafe fn activate(&self, gl: &Context) { + gl.uniform_1_i32(Some(&self.y.location), self.index); + gl.active_texture(TEXTURE0 + self.index as u32); + gl.bind_texture(TEXTURE_2D, Some(self.y.texture)); + + gl.uniform_1_i32(Some(&self.u.location), self.index + 1); + gl.active_texture(TEXTURE0 + 1 + self.index as u32); + gl.bind_texture(TEXTURE_2D, Some(self.u.texture)); + + gl.uniform_1_i32(Some(&self.v.location), self.index + 2); + gl.active_texture(TEXTURE0 + 2 + self.index as u32); + gl.bind_texture(TEXTURE_2D, Some(self.v.texture)); + gl.active_texture(TEXTURE0 + 3 + self.index as u32); + } +} + +#[derive(Debug, Copy, Clone)] +pub enum ShaderType { + Avc420, + Avc444, + Avc444v2, + TextureShader, +} + +impl ShaderType { + fn get_fragment_shader_source(&self) -> String { + let mut source = String::new(); + match self { + ShaderType::Avc444 => { + source.push_str(include_str!("../shaders/avc444.frag")); + } + ShaderType::Avc444v2 => { + source.push_str(include_str!("../shaders/avc444v2.frag")); + } + ShaderType::Avc420 => { + source.push_str(include_str!("../shaders/avc420.frag")); + } + ShaderType::TextureShader => { + source.push_str(include_str!("../shaders/texture_shader.frag")); + } + } + source + } + + fn get_vertex_shader_source(&self) -> String { + let mut source = String::new(); + match self { + ShaderType::Avc420 | ShaderType::Avc444 | ShaderType::Avc444v2 => { + source.push_str(include_str!("../shaders/avc.vert")); + } + ShaderType::TextureShader => { + source.push_str(include_str!("../shaders/texture_shader.vert")); + } + } + source + } + + unsafe fn create_shader(&self, gl: &Context, shader_version: &str) -> crate::Result { + let vertex_shader_source = self.get_vertex_shader_source(); + let fragment_shader_source = self.get_fragment_shader_source(); + + let shader_sources = [ + (glow::VERTEX_SHADER, vertex_shader_source), + (glow::FRAGMENT_SHADER, fragment_shader_source), + ]; + + let program = gl.create_program()?; + let mut shaders = Vec::with_capacity(shader_sources.len()); + + for (shader_type, shader_source) in shader_sources.iter() { + let shader = gl.create_shader(*shader_type)?; + gl.shader_source(shader, &format!("{}\n{}", shader_version, shader_source)); + gl.compile_shader(shader); + if !gl.get_shader_compile_status(shader) { + return Err(crate::Error::from(gl.get_shader_info_log(shader))); + } + gl.attach_shader(program, shader); + shaders.push(shader); + } + + gl.link_program(program); + if !gl.get_program_link_status(program) { + return Err(crate::Error::from(gl.get_program_info_log(program))); + } + + for shader in shaders { + gl.detach_shader(program, shader); + gl.delete_shader(shader); + } + + Ok(program) + } +} + +pub struct OffscreenBuffer { + gl: Arc, + texture: Texture, + frame_buffer: Framebuffer, +} + +impl Drop for OffscreenBuffer { + fn drop(&mut self) { + unsafe { + self.gl.delete_texture(self.texture); + } + } +} + +impl OffscreenBuffer { + unsafe fn new(gl_ref: Arc, width: i32, height: i32) -> crate::Result { + let gl = &gl_ref; + let texture = gl.create_texture()?; + gl.bind_texture(TEXTURE_2D, Some(texture)); + gl.tex_image_2d(TEXTURE_2D, 0, RGB as i32, width, height, 0, RGB, UNSIGNED_BYTE, None); + + let frame_buffer = gl.create_framebuffer()?; + gl.bind_framebuffer(FRAMEBUFFER, Some(frame_buffer)); + gl.framebuffer_texture_2d(FRAMEBUFFER, COLOR_ATTACHMENT0, TEXTURE_2D, Some(texture), 0); + gl.bind_framebuffer(FRAMEBUFFER, None); + Ok(OffscreenBuffer { + gl: gl_ref.clone(), + texture, + frame_buffer, + }) + } + + unsafe fn activate(&self) { + self.gl.bind_framebuffer(FRAMEBUFFER, Some(self.frame_buffer)); + } + + unsafe fn deactivate(&self) { + self.gl.bind_framebuffer(FRAMEBUFFER, None); + } +} + +pub struct TextureShaderProgram { + gl: Arc, + program: Program, + screen_texture_location: UniformLocation, + vertex_buffer: Buffer, + vertex_array: VertexArray, +} + +impl TextureShaderProgram { + unsafe fn new( + gl_ref: Arc, + shader_version: &str, + width: i32, + height: i32, + texture_width: i32, + texture_height: i32, + ) -> crate::Result { + let gl = &gl_ref; + let program = ShaderType::TextureShader.create_shader(gl, shader_version)?; + gl.use_program(Some(program)); + + let a_position = gl.get_attrib_location(program, "a_position").unwrap(); + let a_tex_coord = gl.get_attrib_location(program, "a_tex_coord").unwrap(); + let screen_texture_location = gl.get_uniform_location(program, "screen_texture").unwrap(); + + // If video height is higher trim the padding on the bottom + let y_location = if texture_height > height { + (texture_height - height) as f32 / height as f32 + } else { + 0.0 + }; + + // If video width is higher trim the padding on the right + let x_location = if texture_width > width { + 1.0 - (texture_width - width) as f32 / width as f32 + } else { + 1.0 + }; + + #[rustfmt::skip] + let data : Vec = vec![ + -1.0, -1.0, 0.0, y_location, + 1.0, -1.0, x_location, y_location, + -1.0, 1.0, 0.0, 1.0, + -1.0, 1.0, 0.0, 1.0, + 1.0, -1.0, x_location, y_location, + 1.0, 1.0, x_location, 1.0, + ]; + + let vertex_array = gl.create_vertex_array()?; + let vertex_buffer = gl.create_buffer().unwrap(); + gl.bind_vertex_array(Some(vertex_array)); + gl.bind_buffer(ARRAY_BUFFER, Some(vertex_buffer)); + + gl.enable_vertex_attrib_array(a_tex_coord as u32); + gl.enable_vertex_attrib_array(a_position as u32); + + gl.buffer_data_u8_slice(ARRAY_BUFFER, cast_as_bytes(data.as_ref()), DYNAMIC_DRAW); + gl.vertex_attrib_pointer_f32(a_position, 2, FLOAT, false, 16, 0); + gl.vertex_attrib_pointer_f32(a_tex_coord, 2, FLOAT, false, 16, 8); + + Ok(TextureShaderProgram { + gl: gl_ref.clone(), + program, + vertex_buffer, + vertex_array, + screen_texture_location, + }) + } + + unsafe fn set_location(&self, location: Rectangle) { + self.gl.viewport( + location.left as i32, + location.top as i32, + location.right as i32, + location.bottom as i32, + ); + } + + unsafe fn draw_texture(&self, texture: Texture) { + let gl = &self.gl; + gl.use_program(Some(self.program)); + + gl.uniform_1_i32(Some(&self.screen_texture_location), 0); + gl.active_texture(TEXTURE0); + gl.bind_texture(TEXTURE_2D, Some(texture)); + gl.generate_mipmap(TEXTURE_2D); + + gl.bind_vertex_array(Some(self.vertex_array)); + gl.bind_buffer(ARRAY_BUFFER, Some(self.vertex_buffer)); + gl.draw_arrays(glow::TRIANGLES, 0, 6); + } +} + +impl Drop for TextureShaderProgram { + fn drop(&mut self) { + unsafe { + self.gl.delete_program(self.program); + self.gl.delete_buffer(self.vertex_buffer); + self.gl.delete_vertex_array(self.vertex_array); + } + } +} + +pub struct AvcShaderProgram { + gl: Arc, + program: Program, + main: DrawingTextures, + aux: Option, + width: i32, + height: i32, + vertex_buffer: Buffer, + vertex_array: VertexArray, + a_position: u32, + stride_scale_location: UniformLocation, +} + +impl Drop for AvcShaderProgram { + fn drop(&mut self) { + unsafe { + let gl = self.gl.clone(); + gl.delete_buffer(self.vertex_buffer); + gl.delete_vertex_array(self.vertex_array); + gl.delete_program(self.program); + } + } +} + +impl AvcShaderProgram { + unsafe fn update_shader_data(&self, stride_scale: f32, regions: &[Rectangle]) { + let gl = self.gl.clone(); + // Redraw the two triangles for the region + #[rustfmt::skip] + let data = Vec::::from_iter(regions.iter().flat_map(|region| { + let left = region.left as f32; + let right = region.right as f32; + let top = self.height as f32 - region.bottom as f32; + let bottom = self.height as f32 - region.top as f32; + vec![ + left, top, + right, top, + right, bottom, + right, bottom, + left, bottom, + left, top, + ] + })); + + gl.bind_buffer(ARRAY_BUFFER, Some(self.vertex_buffer)); + gl.bind_vertex_array(Some(self.vertex_array)); + gl.enable_vertex_attrib_array(self.a_position as u32); + gl.buffer_data_u8_slice(ARRAY_BUFFER, cast_as_bytes(data.as_ref()), DYNAMIC_DRAW); + gl.vertex_attrib_pointer_f32(self.a_position, 2, FLOAT, false, 8, 0); + + let data = vec![stride_scale, 1.0]; + gl.uniform_2_f32_slice(Some(&self.stride_scale_location), data.as_slice()); + } + + unsafe fn new( + gl_ref: Arc, + shader_version: &str, + width: i32, + height: i32, + shader_type: ShaderType, + ) -> crate::Result { + match shader_type { + ShaderType::Avc444 | ShaderType::Avc444v2 | ShaderType::Avc420 => {} + _ => return Err(crate::Error::from("Invalid shader type")), + } + + let gl = gl_ref.clone(); + let program = shader_type.create_shader(&gl, shader_version)?; + gl.use_program(Some(program)); + let stride_scale_location = gl.get_uniform_location(program, "stride_scale").unwrap(); + + let a_position = gl.get_attrib_location(program, "a_position").unwrap(); + + let screen_size_location = gl.get_uniform_location(program, "screen_size").unwrap(); + let u_projection_location = gl.get_uniform_location(program, "u_projection").unwrap(); + + let data: Vec = vec![width as f32, height as f32]; + gl.uniform_2_f32_slice(Some(&screen_size_location), data.as_slice()); + + // Projection matrix helps us map the points (0..width, 0.height) to (-1.0..1.0, -1.0..1.0) coordinates + #[rustfmt::skip] + let data: Vec = vec![ + 2.0 / width as f32, 0.0, 0.0, -1.0, + 0.0, 2.0 / height as f32, 0.0, -1.0, + 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 1.0, + ]; + gl.uniform_matrix_4_f32_slice(Some(&u_projection_location), true, data.as_slice()); + + let main = DrawingTextures::new( + gl_ref.clone(), + program, + height, + "main_y_texture", + "main_u_texture", + "main_v_texture", + 0, + ); + + let aux = match shader_type { + ShaderType::Avc444 | ShaderType::Avc444v2 => Some(DrawingTextures::new( + gl_ref.clone(), + program, + height, + "aux_y_texture", + "aux_u_texture", + "aux_v_texture", + 3, + )), + ShaderType::Avc420 => None, + ShaderType::TextureShader => unreachable!(), + }; + // Set parameters that are not going to change accross different programs. + // All shaders within a context share parameters and must be of the same type + // The paraemters here are going to remain constant + + let vertex_buffer = gl.create_buffer().unwrap(); + let vertex_array = gl.create_vertex_array()?; + Ok(AvcShaderProgram { + gl: gl_ref, + program, + main, + aux, + width, + height, + vertex_buffer, + vertex_array, + a_position, + stride_scale_location, + }) + } + + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn draw( + &self, + main: &[u8], + aux: Option<&[u8]>, + stride_0: usize, + stride_1: usize, + regions: &Vec, + ) { + let gl = self.gl.clone(); + gl.use_program(Some(self.program)); + gl.viewport(0, 0, self.width, self.height); + + self.main.bind(&gl, main, stride_0, stride_1); + self.main.activate(&gl); + + if let Some(aux) = aux { + let aux_texture = self.aux.as_ref().unwrap(); + + aux_texture.bind(&gl, aux, stride_0, stride_1); + aux_texture.activate(&gl); + } + + // Textures are set with stride widths + // Map appropriately on the texture + let stride_scale = self.width as f32 / stride_0 as f32; + self.update_shader_data(stride_scale, regions); + + // For now there are assumptions that the stirde_1 is 1/2 stride_0 + if stride_1 != stride_0 / 2 { + panic!("Program cannot handle stride mismatch"); + } + // Each region is 6 verticies (two triangles) + gl.draw_arrays(glow::TRIANGLES, 0, regions.len() as i32 * 6); + } +} + +pub struct DrawingContext { + avc_420: AvcShaderProgram, + avc_444: AvcShaderProgram, + texture_shader: TextureShaderProgram, + offscreen_buffer: OffscreenBuffer, +} + +impl DrawingContext { + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn new( + gl_ref: Arc, + shader_version: &str, + width: i32, + height: i32, + is_v2: bool, + video_width: i32, + video_height: i32, + ) -> crate::Result { + let avc_444_shader_type = if is_v2 { + ShaderType::Avc444v2 + } else { + ShaderType::Avc444 + }; + + let texture_shader = + TextureShaderProgram::new(gl_ref.clone(), shader_version, width, height, video_width, video_height)?; + + let avc_420 = AvcShaderProgram::new( + gl_ref.clone(), + shader_version, + video_width, + video_height, + ShaderType::Avc420, + )?; + let avc_444 = AvcShaderProgram::new( + gl_ref.clone(), + shader_version, + video_width, + video_height, + avc_444_shader_type, + )?; + let offscreen_buffer = OffscreenBuffer::new(gl_ref, video_width, video_height)?; + Ok(DrawingContext { + avc_420, + avc_444, + texture_shader, + offscreen_buffer, + }) + } + + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn draw( + &self, + main: &[u8], + aux: Option<&[u8]>, + stride_0: usize, + stride_1: usize, + regions: &Vec, + ) { + let program = if aux.is_some() { &self.avc_444 } else { &self.avc_420 }; + // Draw to an offscreen buffer so that we can reutilize it on next frame paint + self.offscreen_buffer.activate(); + program.draw(main, aux, stride_0, stride_1, regions); + + self.offscreen_buffer.deactivate(); + } + + /// # Safety + /// + /// TODO: Safety notes + pub unsafe fn draw_cached(&self, location: Rectangle) { + self.texture_shader.set_location(location); + self.texture_shader.draw_texture(self.offscreen_buffer.texture); + } +} + +impl Drop for DrawingContext { + fn drop(&mut self) {} +} diff --git a/ironrdp-renderer/src/lib.rs b/ironrdp-renderer/src/lib.rs new file mode 100644 index 00000000..e479c84e --- /dev/null +++ b/ironrdp-renderer/src/lib.rs @@ -0,0 +1,7 @@ +pub mod renderer; + +mod draw; +mod surface; + +type Error = Box; +type Result = std::result::Result; diff --git a/ironrdp-renderer/src/renderer.rs b/ironrdp-renderer/src/renderer.rs new file mode 100644 index 00000000..6c6d6794 --- /dev/null +++ b/ironrdp-renderer/src/renderer.rs @@ -0,0 +1,227 @@ +use std::fmt::Debug; +use std::fs::File; + +use std::path::PathBuf; +use std::sync::mpsc::Receiver; +use std::sync::mpsc::RecvError; +use std::sync::mpsc::SendError; +use std::sync::mpsc::Sender; + +use std::sync::PoisonError; +use std::sync::{mpsc, Arc}; +use std::thread; +use std::thread::JoinHandle; + +use failure::Fail; +use glutin::dpi::PhysicalSize; +use ironrdp::PduParsing; + +use ironrdp::dvc::gfx; +use ironrdp::dvc::gfx::Codec1Type; +use ironrdp::dvc::gfx::ServerPdu; + +use ironrdp::impl_from_error; +use ironrdp::Rectangle; +use log::info; + +use crate::surface::DataBuffer; + +use crate::surface::SurfaceDecoders; +use crate::surface::Surfaces; + +#[derive(Debug)] +enum RenderEvent { + Paint((u16, DataBuffer)), + Repaint, + ServerPdu(ServerPdu), +} + +#[derive(Clone)] +struct DataRegion { + pub data: Vec, + pub regions: Vec, +} + +impl Debug for DataRegion { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("DataRegion") + .field("data_len", &self.data.len()) + .field("regions", &self.regions) + .finish() + } +} + +/// Runs the decode loop to decode any graphics PDU +fn handle_gfx_pdu( + graphic_receiver: Receiver, + gfx_dump_file: Option, + tx: Sender, +) -> Result<(), RendererError> { + let mut file = gfx_dump_file.map(|file| File::create(file).unwrap()); + let mut decoders = SurfaceDecoders::new(); + loop { + let message = graphic_receiver + .recv() + .map_err(|e| RendererError::RecieveError(e.to_string()))?; + + if let Some(file) = file.as_mut() { + let _result = message.to_buffer(file); + }; + match &message { + ServerPdu::WireToSurface1(pdu) => { + let surface_id = pdu.surface_id; + let decoded = decoders.decode_wire_to_surface_1_pdu(pdu)?; + tx.send(RenderEvent::Paint((surface_id, decoded)))?; + } + ServerPdu::CreateSurface(pdu) => { + decoders.add(pdu.surface_id)?; + } + ServerPdu::DeleteSurface(pdu) => { + decoders.remove(pdu.surface_id)?; + } + _ => {} + }; + + if !matches!(message, ServerPdu::WireToSurface1(..)) { + tx.send(RenderEvent::ServerPdu(message))?; + } + } +} + +/// Runs the paint loop to paint the decoded PDU onto the canvas +fn handle_draw( + window: glutin::ContextWrapper, + rx: Receiver, +) -> Result<(), RendererError> { + let window = unsafe { window.make_current().unwrap() }; + let shader_version = "#version 410"; + let gl = unsafe { glow::Context::from_loader_function(|s| window.get_proc_address(s) as *const _) }; + let gl = Arc::new(gl); + let mut surfaces = Surfaces::new(); + loop { + let message = rx.recv()?; + log::info!("Got user event {:?}", message); + match message { + RenderEvent::Repaint => { + surfaces.flush_output(); + let result = window.swap_buffers(); + if result.is_err() { + log::error!("Swap buffers error: {:?}", result); + } + } + RenderEvent::Paint((surface_id, data)) => { + surfaces.draw_scene(surface_id, data)?; + } + RenderEvent::ServerPdu(pdu) => match pdu { + ServerPdu::CreateSurface(pdu) => { + surfaces.create_surface(pdu, gl.clone(), shader_version)?; + } + ServerPdu::DeleteSurface(pdu) => { + surfaces.delete_surface(pdu.surface_id); + } + ServerPdu::MapSurfaceToScaledOutput(pdu) => { + surfaces.map_surface_to_scaled_output(pdu)?; + } + ServerPdu::EndFrame(_) => { + window.window().request_redraw(); + } + ServerPdu::ResetGraphics(pdu) => { + window.window().set_inner_size(PhysicalSize { + width: pdu.width, + height: pdu.height, + }); + } + _ => { + log::info!("Ignore message: {:?}", pdu); + } + }, + } + } +} + +/// The renderer launches two threads to handle graphics messages. +/// The first thread takes any graphics PDU and decodes the messages. +/// The second thread paints the messages onto the canvas +pub struct Renderer { + render_proxy: Sender, + _decode_thread: JoinHandle>, + _draw_thread: JoinHandle>, +} + +impl Renderer { + pub fn new( + window: glutin::ContextWrapper, + graphic_receiver: Receiver, + gfx_dump_file: Option, + ) -> Renderer { + let (tx, rx) = mpsc::channel::(); + let tx2 = tx.clone(); + let decode_thread = thread::spawn(move || { + let result = handle_gfx_pdu(graphic_receiver, gfx_dump_file, tx2); + info!("Graphics handler result: {:?}", result); + result + }); + let draw_thread = thread::spawn(move || { + let result = handle_draw(window, rx); + info!("Draw handler result: {:?}", result); + result + }); + + Renderer { + render_proxy: tx, + _decode_thread: decode_thread, + _draw_thread: draw_thread, + } + } + + pub fn repaint(&self) -> Result<(), RendererError> { + self.render_proxy.send(RenderEvent::Repaint)?; + Ok(()) + } +} + +#[derive(Debug, Fail)] +pub enum RendererError { + #[fail(display = "Unable to send message on channel {}", _0)] + SendError(String), + #[fail(display = "Unable to recieve message on channel {}", _0)] + RecieveError(String), + #[fail(display = "Failed to decode openh264 stream {}", _0)] + OpenH264Error(openh264::Error), + #[fail(display = "Graphics pipeline protocol error: {}", _0)] + GraphicsPipelineError(gfx::GraphicsPipelineError), + #[fail(display = "Invalid surface id: {}", _0)] + InvalidSurfaceId(u16), + #[fail(display = "Codec not supported: {:?}", _0)] + UnsupportedCodec(Codec1Type), + #[fail(display = "Failed to decode rdp data")] + DecodeError, + #[fail(display = "Lock poisoned")] + LockPoisonedError, +} + +impl_from_error!( + gfx::GraphicsPipelineError, + RendererError, + RendererError::GraphicsPipelineError +); + +impl_from_error!(openh264::Error, RendererError, RendererError::OpenH264Error); + +impl From> for RendererError { + fn from(e: SendError) -> Self { + RendererError::SendError(e.to_string()) + } +} + +impl From for RendererError { + fn from(e: RecvError) -> Self { + RendererError::RecieveError(e.to_string()) + } +} + +impl From> for RendererError { + fn from(_e: PoisonError) -> Self { + RendererError::LockPoisonedError + } +} diff --git a/ironrdp-renderer/src/surface.rs b/ironrdp-renderer/src/surface.rs new file mode 100644 index 00000000..804c57ed --- /dev/null +++ b/ironrdp-renderer/src/surface.rs @@ -0,0 +1,331 @@ +use std::{collections::HashMap, fmt::Debug, sync::Arc}; + +use glow::Context; +use ironrdp::{ + dvc::gfx::{ + Avc420BitmapStream, Avc444BitmapStream, Codec1Type, CreateSurfacePdu, Encoding, GraphicsPipelineError, + PixelFormat, WireToSurface1Pdu, + }, + PduBufferParsing, Rectangle, +}; +use log::error; +use openh264::decoder::{DecodedYUV, Decoder}; + +use crate::{draw::DrawingContext, renderer::RendererError}; + +type Result = std::result::Result; + +#[derive(Clone)] +struct DataRegion { + data: Vec, + regions: Vec, +} + +impl Debug for DataRegion { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("DataRegion") + .field("data_len", &self.data.len()) + .field("regions", &self.regions) + .finish() + } +} + +pub struct SurfaceDecoders { + decoders: HashMap, +} + +impl SurfaceDecoders { + pub fn new() -> Self { + SurfaceDecoders { + decoders: HashMap::new(), + } + } + pub fn add(&mut self, id: u16) -> Result<()> { + self.decoders.insert(id, Decoder::new()?); + Ok(()) + } + + pub fn remove(&mut self, id: u16) -> Result<()> { + self.decoders.remove(&id); + Ok(()) + } + + pub fn decode_wire_to_surface_1_pdu(&mut self, pdu: &WireToSurface1Pdu) -> Result { + let decoder = self + .decoders + .get_mut(&pdu.surface_id) + .ok_or(RendererError::InvalidSurfaceId(pdu.surface_id))?; + match pdu.codec_id { + ironrdp::dvc::gfx::Codec1Type::Avc420 => { + let packet = Avc420BitmapStream::from_buffer_consume(&mut pdu.bitmap_data.as_slice()) + .map_err(GraphicsPipelineError::from)?; + let yuv = decoder.decode(packet.data)?.ok_or(RendererError::DecodeError)?; + let dimensions = yuv.dimension_rgb(); + let strides = yuv.strides_yuv(); + let regions = packet.rectangles; + let data = convert_to_buffer(yuv); + let data1 = DataRegion { data, regions }; + Ok(DataBuffer { + main: Some(data1), + aux: None, + stride0: strides.0, + stride1: strides.1, + operation: Encoding::LUMA, + codec: pdu.codec_id, + dimensions, + }) + } + ironrdp::dvc::gfx::Codec1Type::Avc444 | ironrdp::dvc::gfx::Codec1Type::Avc444v2 => { + let packet = Avc444BitmapStream::from_buffer_consume(&mut pdu.bitmap_data.as_slice()) + .map_err(GraphicsPipelineError::from)?; + let yuv = decoder.decode(packet.stream1.data)?.ok_or(RendererError::DecodeError)?; + let dimensions = yuv.dimension_rgb(); + let strides = yuv.strides_yuv(); + let regions = packet.stream1.rectangles; + let data = convert_to_buffer(yuv); + let data1 = DataRegion { data, regions }; + + let data2 = if packet.encoding == Encoding::LUMA_AND_CHROMA { + let aux = packet.stream2.unwrap(); + let yuv = decoder.decode(aux.data)?.ok_or(RendererError::DecodeError)?; + let data = convert_to_buffer(yuv); + let regions = aux.rectangles; + Some(DataRegion { data, regions }) + } else { + None + }; + let data_buffer = match packet.encoding { + Encoding::LUMA_AND_CHROMA => DataBuffer { + main: Some(data1), + aux: data2, + stride0: strides.0, + stride1: strides.1, + operation: packet.encoding, + codec: pdu.codec_id, + dimensions, + }, + Encoding::LUMA => DataBuffer { + main: Some(data1), + aux: None, + stride0: strides.0, + stride1: strides.1, + operation: packet.encoding, + codec: pdu.codec_id, + dimensions, + }, + Encoding::CHROMA => DataBuffer { + main: None, + aux: Some(data1), + stride0: strides.0, + stride1: strides.1, + operation: packet.encoding, + codec: pdu.codec_id, + dimensions, + }, + _ => unreachable!("Unknown encoding type"), + }; + Ok(data_buffer) + } + _ => Err(RendererError::UnsupportedCodec(pdu.codec_id)), + } + } +} + +#[derive(Debug, Clone)] +pub struct DataBuffer { + operation: Encoding, + main: Option, + aux: Option, + stride0: usize, + stride1: usize, + codec: Codec1Type, + dimensions: (usize, usize), +} + +pub struct Surface { + id: u16, + _pixel_format: PixelFormat, + context: Option, + location: Option, + data_cache: Option, + shader_version: String, + gl: Arc, + width: u16, + height: u16, +} + +impl Surface { + pub fn new( + id: u16, + pixel_format: PixelFormat, + gl: Arc, + shader_version: &str, + width: u16, + height: u16, + ) -> Result { + Ok(Surface { + id, + _pixel_format: pixel_format, + context: None, + location: None, + data_cache: None, + gl, + width, + height, + shader_version: shader_version.to_string(), + }) + } + + pub fn set_location(&mut self, location: Rectangle) { + self.location = Some(location); + } + + fn draw_scene(&mut self, data: DataBuffer) -> Result<()> { + let stride0 = data.stride0; + let stride1 = data.stride1; + let (main_data, main_regions) = if let Some(data) = data.main.as_ref() { + self.data_cache = Some(data.clone()); + (data.data.as_slice(), &data.regions) + } else { + let cache = self.data_cache.as_ref().unwrap(); + (cache.data.as_slice(), &cache.regions) + }; + let (aux_data, regions) = if data.operation == Encoding::CHROMA || data.operation == Encoding::LUMA_AND_CHROMA { + let aux = data.aux.as_ref().unwrap(); + (Some(aux.data.as_slice()), &aux.regions) + } else { + (None, main_regions) + }; + unsafe { + let context = if let Some(context) = self.context.as_mut() { + context + } else { + self.context = Some( + DrawingContext::new( + self.gl.clone(), + &self.shader_version, + self.width as i32, + self.height as i32, + data.codec == Codec1Type::Avc444v2, + data.dimensions.0 as i32, + data.dimensions.1 as i32, + ) + .expect("Initiliazation of context failed"), + ); + self.context.as_mut().unwrap() + }; + match data.operation { + Encoding::LUMA_AND_CHROMA => { + context.draw(main_data, aux_data, stride0, stride1, regions); + } + Encoding::LUMA => { + context.draw(main_data, None, stride0, stride1, regions); + } + Encoding::CHROMA => { + context.draw(main_data, aux_data, stride0, stride1, regions); + } + _ => { + error!("Unknown operation type"); + } + } + } + Ok(()) + } + + fn draw_cached(&self) { + if let Some(context) = self.context.as_ref() { + let location = if let Some(location) = self.location.as_ref() { + location.clone() + } else { + Rectangle { + top: 0, + left: 0, + right: self.width, + bottom: self.height, + } + }; + + unsafe { + context.draw_cached(location); + } + } + } +} + +pub struct Surfaces { + surfaces: HashMap, +} + +impl Surfaces { + pub(crate) fn new() -> Self { + Surfaces { + surfaces: HashMap::new(), + } + } + + fn get_surface(&mut self, id: u16) -> Result<&mut Surface> { + self.surfaces.get_mut(&id).ok_or(RendererError::InvalidSurfaceId(id)) + } + + pub(crate) fn create_surface( + &mut self, + pdu: CreateSurfacePdu, + gl: Arc, + shader_version: &str, + ) -> Result<()> { + let surface = Surface::new( + pdu.surface_id, + pdu.pixel_format, + gl, + shader_version, + pdu.width, + pdu.height, + )?; + self.surfaces.insert(surface.id, surface); + Ok(()) + } + + pub(crate) fn delete_surface(&mut self, id: u16) { + self.surfaces.remove(&id); + } + + pub(crate) fn draw_scene(&mut self, id: u16, data: DataBuffer) -> Result<()> { + let surface = self.get_surface(id)?; + surface.draw_scene(data) + } + + pub(crate) fn flush_output(&mut self) { + for (_id, surface) in self.surfaces.iter_mut() { + surface.draw_cached(); + } + } + + pub(crate) fn map_surface_to_scaled_output( + &mut self, + pdu: ironrdp::dvc::gfx::MapSurfaceToScaledOutputPdu, + ) -> Result<()> { + let surface = self.get_surface(pdu.surface_id)?; + surface.set_location(Rectangle { + left: pdu.output_origin_x as u16, + top: pdu.output_origin_y as u16, + right: pdu.target_width as u16, + bottom: pdu.target_height as u16, + }); + Ok(()) + } +} + +/// Convert the decoded data to a buffer. OpenH264 documentation says that if +/// the data is not immediately used it should be copied out. +fn convert_to_buffer(yuv: DecodedYUV) -> Vec { + let y = yuv.y_with_stride(); + let u = yuv.u_with_stride(); + let v = yuv.v_with_stride(); + let total_len = y.len() + u.len() + v.len(); + let mut data = vec![0; total_len]; + let data_slice = data.as_mut_slice(); + data_slice[0..y.len()].copy_from_slice(&y[0..]); + data_slice[y.len()..y.len() + u.len()].copy_from_slice(&u[0..]); + data_slice[y.len() + u.len()..y.len() + u.len() + v.len()].copy_from_slice(&v[0..]); + data +} diff --git a/ironrdp-replay-client/Cargo.toml b/ironrdp-replay-client/Cargo.toml new file mode 100644 index 00000000..811ee7ad --- /dev/null +++ b/ironrdp-replay-client/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "ironrdp-replay-client" +version = "0.4.2" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] + +[dependencies] +ironrdp = { path = "../ironrdp" } +clap = { version = "4.0", features = ["derive", "cargo"] } +glutin = { version = "0.29" } +ironrdp-renderer = { path = "../ironrdp-renderer" } +simplelog = "0.12" +log = "0.4" \ No newline at end of file diff --git a/ironrdp-replay-client/README.md b/ironrdp-replay-client/README.md new file mode 100644 index 00000000..9a1d2706 --- /dev/null +++ b/ironrdp-replay-client/README.md @@ -0,0 +1 @@ +Utility tool to parse data dumped through the RDP graphics pipeline and replay it. This tool is helpful to iterate and fix any issues in the rendering pipeline. \ No newline at end of file diff --git a/ironrdp-replay-client/scripts/runtests.ps1 b/ironrdp-replay-client/scripts/runtests.ps1 new file mode 100644 index 00000000..4221d431 --- /dev/null +++ b/ironrdp-replay-client/scripts/runtests.ps1 @@ -0,0 +1,4 @@ +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample2_avc444.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444v2.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample2_avc444v2.data \ No newline at end of file diff --git a/ironrdp-replay-client/src/main.rs b/ironrdp-replay-client/src/main.rs new file mode 100644 index 00000000..9c8d6bc6 --- /dev/null +++ b/ironrdp-replay-client/src/main.rs @@ -0,0 +1,123 @@ +use std::{fs::File, io::ErrorKind, path::PathBuf, process::exit, sync::mpsc::sync_channel, thread, time::Duration}; + +use clap::Parser; + +use glutin::{ + dpi::PhysicalSize, + event::{Event, WindowEvent}, + event_loop::ControlFlow, +}; +use ironrdp::{ + dvc::gfx::{GraphicsPipelineError, ServerPdu}, + PduParsing, +}; +use log::LevelFilter; + +use ironrdp_renderer::renderer::Renderer; +use simplelog::{Config, SimpleLogger}; + +pub type Error = Box; + +/// Devolutions IronRDP client +#[derive(Parser, Debug)] +#[clap(version, long_about = None)] +struct Args { + /// A file to use for the data file + #[clap(long, value_parser)] + data_file: PathBuf, + + ////// Frame rate + #[clap(long, value_parser, default_value_t = 1)] + frame_rate: u32, + + // Close on completion + #[clap(long, value_parser)] + close: bool, +} + +pub enum UserEvent {} + +fn create_ui_context() -> ( + glutin::ContextWrapper, + glutin::event_loop::EventLoop, +) { + let event_loop = glutin::event_loop::EventLoopBuilder::with_user_event().build(); + let window_builder = glutin::window::WindowBuilder::new() + .with_title("RDP Replay Helper!") + .with_resizable(false) + .with_inner_size(PhysicalSize { width: 0, height: 0 }); + let window = glutin::ContextBuilder::new() + .with_vsync(true) + .build_windowed(window_builder, &event_loop) + .unwrap(); + (window, event_loop) +} + +pub fn main() -> Result<(), Error> { + let _ = SimpleLogger::init(LevelFilter::Debug, Config::default()); + let args = Args::parse(); + + let (sender, receiver) = sync_channel(1); + + let (window, event_loop) = create_ui_context(); + let renderer = Renderer::new(window, receiver, None); + + thread::spawn(move || { + let result = handle_file(sender, args); + log::info!("Result: {:?}", result); + }); + + event_loop.run(move |main_event, _, control_flow| { + *control_flow = ControlFlow::Wait; + + match &main_event { + Event::LoopDestroyed => {} + Event::RedrawRequested(_) => { + let res = renderer.repaint(); + if res.is_err() { + log::error!("Repaint send error: {:?}", res); + } + } + Event::WindowEvent { ref event, .. } => match event { + WindowEvent::CloseRequested => *control_flow = ControlFlow::Exit, + WindowEvent::Resized(size) => { + log::info!("Window resized {:?}", size); + } + _ => {} + }, + _ => (), + } + }); +} + +// Parse the graphics file and send it to renderer 1 event at a time +fn handle_file(sender: std::sync::mpsc::SyncSender, args: Args) -> Result<(), Error> { + let file = File::open(args.data_file).unwrap(); + let delay = 1000 / args.frame_rate as u64; + + loop { + let packet = ServerPdu::from_buffer(&file); + if let Ok(packet) = packet { + let wait = matches!(packet, ServerPdu::WireToSurface1(..)); + sender.send(packet)?; + if wait { + thread::sleep(Duration::from_millis(delay)); + } + } else { + let ignorable = if let Err(GraphicsPipelineError::IOError(e)) = packet.as_ref() { + e.kind() == ErrorKind::UnexpectedEof + } else { + false + }; + + if !ignorable { + log::error!("Error: {:?}", packet); + } + + if args.close { + exit(0); + } + return Err(Error::from("S".to_string())); + } + } +} diff --git a/ironrdp-replay-client/test_data/README.md b/ironrdp-replay-client/test_data/README.md new file mode 100644 index 00000000..492535d6 --- /dev/null +++ b/ironrdp-replay-client/test_data/README.md @@ -0,0 +1,3 @@ +Data generated using a custom parser and data file from [Here](https://github.com/microsoft/WindowsProtocolTestSuites/tree/main/TestSuites/RDP/Client/src/TestSuite/RDPEGFX/H264TestData) + +Some data generated using custom code in FreeRDP GFX pipeline to dump stream to file. \ No newline at end of file diff --git a/ironrdp-replay-client/test_data/sample1_avc444.data b/ironrdp-replay-client/test_data/sample1_avc444.data new file mode 100644 index 0000000000000000000000000000000000000000..cb8d5dbb6d99ab4bae0bd99d18b69180504a182c GIT binary patch literal 311405 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 SdsUEMFjf`$H7dx*r2HE;`*yhi literal 0 HcmV?d00001 diff --git a/ironrdp-replay-client/test_data/sample1_avc444v2.data b/ironrdp-replay-client/test_data/sample1_avc444v2.data new file mode 100644 index 0000000000000000000000000000000000000000..bc696a6d8002dcf074b7a30061a47731ac0c0a39 GIT binary patch literal 331268 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%0A}Gqi3SGGdL* zNlpn_&tpkg9;BqK7w{3Y=AIww^n7K^cx39y7Id=O&gS{l(CKO`uS^E(vY#u&j=PhF z#_Op%w$w52dz+U&A1B&C9KT$jdS3ESZGSG!y?Booqo?n>KAu?%SXAltJp!5UsF$1}HHzou&2EtM~y6z#z;-^?*46ar!4UcYs*v z2e~W12OljcVX5CW7wf^MmQf6zN0ob2#fmt|a!n$!Lbu?vfji4*5@f1j`4QE`G}g~K z`_=1?M+!y>{Z9FMcQ`6rvVOH(6C6 z4+dWmf=M~-iXC?GinnRZN!N1kOg#_`$)C?Ys%~{h=~>zwGT}0-olPvBhT-6mvJr17 z*l!(hI{Wy9{c@4aJ#i4O&>O=_gpEh!H1ZSXBxTYz(&dF%esVRBfJ;* z@P2jpl{m__>QP)S?JCxjwW)Rwy8Xw`k($@11SC{?T+vSSLxA!2jzp(VN)>jV9uMU2 z3jAM;y$4WJ-QF*}6GHDrdT)XhK}1kMihy(wqzTfS(k*mI=tvU*X-W|UL{y5>q$EgH zK|w%}7LZ;Oqyo%75Q zhvXVk%%mETT+Bn})IV+!xX4|kdh@Z`L03* zsRu5j0<H-6Gdzb8a&hR~W=f;}-mixDub zAI6VQjsStdVb+X`&UFA(Ul`iL9p+JhAO6jn;HG$c^x$Y9$wdmqZ1eIPoS=09-@1+2 ztN_6vNO0+F1tkXi_X+XK*YJ?TnYg>9)p|tV6I(^E3^lvUozu+)ZXwnwwJaIs_#1K} zM}XEIPafur@w6IF43l#h%*3m5*!}ZA>Tcn8A?zGB^)tEr%akB#Tr_t z&G#fhZ}{}*&@qO@z-93`rsXj1do4Kc;`hbXR9A7gg_c3VpXwHOi2?Y5iKys*2Hq7k zn7VwmIq7q2U5h%0+u{^rFLU)NxvJn+B|cggQ-cPP>PiumpS}b3Da()gmfh^{Fl(9U z8Bv&4n}wBv@3{}813KY=DEUSV`;=$j^bU%E9rNaC1S%Pj z#bMNO_K)pp?48;`Dk0#)p3;vMH&@u?amGa#7}H6L!P`4oCywH2H|=hX#p8MFk2xYg z5?vWxFpcAL2t%i#o^q_h)-%@QlRQBS!KMstBOC z-3Rm8*7BDMTVpMC;b2VH^UK*r=8ymJgF1e5x^riXaFc?VtWkh9{ywW`ToVz9%(0xPp;`fckUZBcwrf$U$j%}B8VhiG!+JcSlLh{PVn9@j0&_kWO6 zg<1DAh?myh(Eyoux`8acgfy#nt6C|IgW7T^dckr18PX1~p~P2#GKkkwzsX~KGmA3< zsxyFfD%YZ}YF;xeJ>40fPn{;lxUr`+mx1U5x5jmgae=acAmEgmC z+&Knsh=}D}iYsv+^!fk?%z+*hbV9loeeU$gtpNTuMW zMfsVD=mBprv%6d#fF}3>o=0EyvNXb)h+;%I!#jK;a3}hj2%mS|3&jEHne^IB1?;NSZ&|ci6w1;d+lObacC-`4A{dj+nyqn2Vp%f zMV4PhsCWlI^)T4ceCBWOVGG;Mpy0cdF$x}2=(eqaYrPTvl@xLjZMIIoF|9LA51CjJ zpae>myhB&YGDM-V5Qt|0j_s%tKd2-N9ixCpNgnIpZc6JeC!?5BAB|lq)7YMV!O@gs_RTd#6+lA5l7bwilhwL>`R?>-yxcdxAm6KFqBVgaeJN;ghO zmfUK$ozs~?y>o(fa1@ma;APf-9$tTD%tOb+Afj`KW7@+ls{SyHuDC?oYy&_s(@>M+ z46oPu&GU?*1`2)pb9M~lm=NCR(O-=Zzf*{g4khIJ43|aMfl0Dz2+EgGI&C?Pyz4No zP#hb-a0TCLx!Jm#0KUinQoM@`NA7ibDPJ-qQF&F3OLGf=-1j$m3X-k`P9XY*|IVRx zN^S5+aF?4w4aZ)1`P2TOynhe;e!uLH-MWn9Bseb#+@rhSiz@j&1q)C{pqM9_RS6O) z7_7vKgcrFygD%49$0Sa~oIH?#Aym^V&o~ai;}uNrR44%RQp%I$xHdj;1*Gv{pYco! zF8uBcDr;OUP^B|a;#uRV<2jn-aieuCh;zApAr1cfMk)Obi-?{h)WRN5B$%<@PoHOS z{COQ2_~FOgpP!`|(%E@|1)8c^io~Dv4b#q&1lQ*eUk^1VC|hs)0jvez>BJU;hwM%#mZKfc)`5d2 z^gIoAWfT?JpDYY`-z`94(#46nIpa=05@ZIWo7efNFd!03Zc*JipU5r0-xNk6GwF|c zpt(>#-kw8-VFd|1Juylw$k>`94_NT}FWS)O{(dF(xg;pU=MyjroD-~+enu~a_DP7(lO~?;yZ3tS z_@n*j&bJT#0ZyF>np5}hfo*}?A)4T_Nid_Ys89j;RDxGiN{uTZ` zI5-?yIQ|*~2+Ll~U~4u>#!e_mgyz zFyK$gcV<-~Dy~Kej9Uf-IK6Q`j90@i)UJHlB6rjNbN$Pi9`)PHn&eA%Q^w*k`D3+U z?WdVeGFFuS{z1n>s+KNhOrt5BbhR!S3lxi98s=r^xb2ChP=5PeJhbRp`|cj_gaUYK z3Nsf>a2P2Vs2dk^7e2hB@WpeBus{xb?gAJJ7~`{kY8Y6}I%-lgIZ~-x*ZQ25*+TUO zHpmvVNppH9@d;99I+ry43<+sl&-?yLRXB_!vfk}NPjtm7BGvSFCY_qEXvT0kUz`@c({-(w`h@~> zH@$n)e4WJ*rLY?v(YzLoQ&5g860!e6vIV30BZVyP-#I@(1WAYu>#>fbCwpdLLYJUy)i!&lS-NP#*iSaWjxOeHL8Au!*;u zD^A!bKRZ4i)V%$0dNrOB9Jza6UujGRSvr@`5@tzAuf7_JOJj-K#wG_E20lH_WRv5j zeiOwlK$Zc&`jqAG-TTZI1$m->`_Z>d1_i_=;m2L*1;wXw-e4z5mt9Rtj*4t=?F*mt zDK&esS!1*N zl3v8gv&2fpnsQrrwn~V204={W7S{XnLGXb0a{=(HF=*z+jp8>-X==Vr%|8N0Vw#Ea zXmFvfp^{Ir@8KkYTIUOds-}fNjt?PYFAq%rsQ@7fVQJ2hhux``r#yG6n`fNIWgd^n z{&MBihb}Ox$GgW*E)<*ecLg|UF4iGFa#_iH?3_Lp?l&k4(=yS9nwE~4kNG2!BpT)G zC}>udr2a&modSk5|FF&Xzb`X@_1SKFOU}1Xu)s{MplE0wig*==Jf*7Pdc#nE=QMvslvJ*=|%7ZtsF6 z(@6E7yvq5=og9OmF)f?orj%g)n##LVLtA5B_8*W4E{2J}l_9LwX2i^PGByS6X0Le9 zQuaH;1>rqP1kl!8Mb>tlM{u{>7A)MB8M@a;-1a2L)$QE>p(b;zL5f8#n0c(xe;00R zVI-o)&vbfT>^8lAbOHbSS3L|se&qLX0kr5i{FS;Ftv<0jJRLuNi;weCxJ=n-k*Vji#|soIFE3gHA)Y?lLFp`_#u^d@Cu6ikY?8J{ zvt0|{TWl#F6|jV}`t#95#0b0d2qEMKm7sp3y?OWu5kuo3u)9Bj!LtJdmS(lv)wT2N z?A!v0PZ+i%X|X5@ttXu-0ugG}fA|~R?EKo)N)Jbbf5~_ZRDQ?{tOSw6;Y7^CYQJZO zf*VVp_@Q7w!{$O+i2RF={i*&eN`79yU5y&f7BVy857_I;Jyz^5se?ng2NPFBE&eRG zQ-nwft=kK?dw6Q` zT+4OCj<+K8=|L3L!1C#1BB6X;U9f~nd6ggUea|LTxc8lr#62N!kPe@{lr8+h zFwZcb-($Nm!=y5~(0K61SEh6}nSMktr%>ONN%^fgfpLbgN0EC(MDM`W<;#E~(+}DHFTwx#gEc%4;Eo;x zop5X#mp+YO{K{bQ=sZW0<)5{({h!U`t95}~6OUz6Z#eF)5`M;=zjp#RcLs5?T-vgk z;m`)XJ}z>v10n{n{qvb6%m^<;IE6CJ73)p1$fvh;2G)2UwtyB&NAxbn&cg)Ov)3V` z98cIo8ZZav{87|u*}+uEEhON%`!HrQv7Y??V++tr&-*pWxA9qgw3Z=F=qxpJ+4IJS znW{(>PxNdExP}Xj`!y!I$)nVk0M+4;@kIo(X@@Pmp9N2L+-Q#5 ztdckF<(=lJ@t_uSy@N3EX%r*?O67ecli;=n5`)ND3e8ZLgzA|jY?45jSPBKD$eYG$ zhhsogsm3vCUQedU=feWix!KTtEERR_x4rEaCD7c8AsN%_~;CN;EXzE`a zaL9+hGt?N!Ot}zW4-xTFA2`=u&LtQxuixdX&y8Jl}P>86}p zpkw~2Xxv!qrpg-6_vJ!%HgEYF8L?G+VdwWvul6uXYdlhU`BH1fP4Y0K1qd@hUfXB} z_G`CkO5cQV)J?58gG3UP%QHL^YCoIXGKL3BgI%XwpwmEOs)L|=201@8j5cY{$X5Pg zZr>rywX(5B_Ex~@%tEQkDgcF){ZI-7!_>)=RaDP26IOB2{DZie_Qsu6-eW$3KV!+^ zrSbP@2$C+Gz8sw83WE5h0JPRDlsvY9NGwIqw^?I;d)aC(i16Hi!QTx~B2bfr8lj3b zWA@i-)>Hz4Hy3W?W$(7@c;P~!rAZ5-z8ilIiEqVx2kQcpT;B-05lz7dlrz@5NYabP z`4#oxj!2ufNDOCgo})m_k>iROHPq@z zLfb_&4+wrLsAjPCrp9kUpUB<2yY4M2n*7Qj5@6&Nxal3++W7zr5p#bksx(=O+5K~x z7KC6OWMR=Ye6jDgmztqjr2{Cp3hJ~neYr>OBPm^vgD8Ju7x?}|P>^0s*77;c$}6_~ zGN2QZeq3Xk9Chsj7g`8Pv>%y0cYl}TGHNuzoKmikZV@qfz36W(^SiNdJ|^| zyt;3M(m+gAQMXau{3M}oS*Rzena?2Ffa~&EBp$FCl&82^x#IH}3C?mpd2}s5{`j^t zIJM`dhg)5ZLX`v@?eyvKSHSOBS-Lm|nC%E^RaYgp2RNOB+)09ur33m@(p0p60 z>7@ksiYg}wH@R|8$&pSV148W}Ep-1!qK&!C*7uV*kQmol@6$@5t%VGIZ0!+B;yB41WizIu3xDO)nCwy7O z_tl+!1rAEWy;7L5PrvO{@9iH@V<}FX>;lL$P%hL$_UyH@k;63~$2!0*tIyOGMe2H( zsZsvKV665V1{S6uj=PK1PGNM&kD)Mt@uQ)#fxil<@UW3~q`wXElI*`4bOCg3GQV;= zn!k3a*|HJH)a}7oMvKO}lpZ9aN&6*`E4#sFgMG9FXk!Jp&i3b?X^v&dOGyoSIx`-6 zLI76@uX2&$DLFUgx18S>vKwtXW%nA6T9EhTuRcR7sU?>m`C&-nI_tIL%!^=`&O-(H zLK?16RYPqA);!DNf%WwWI$nyx+Ora7s(dK<-%^A9%(o51Zx2fX!U9*N9V&G{JN|=n z))C`|>%i_R#77?r+6J%Kdm7J6*zo(E^^rvLu zIz~KRfI+W_vbj42`dpW~BKp~Ks_Z+s^94%*xvglR_*f-Q+>rXwmjFo&h$c$aaPJ~Z z{v9AD-DBh$cpL^#0=RKJmfk2zcKbq!4lo&UUHZ>FEB95!Yc$#MVv#F{xO2s^EWllE zCLq|zdWecKq5SQP5x`pW-|k9jiL%qMD#FoTr^sX z6pw7)=v+SNppJuj-F|%srMzB}v*YwWD4CH8c~9}3h-mTPb=;uN?A@ChcYUSR`dJ~C zsVcN|T`kV|e)r2u*D2_pHdqhG_E+>?Q`~xy+7bViI;$~m7Ze-V8mc>)b%-t zh%0NRkNMRkb>}IFiP-t;Qgm(>J<0176|Kcm-KRPyIrEpa#;r#B!mpj{MA^maQsr6? z=HR7q0k@P(!KWmq<87|uD6IHx)b6bo^xGx`rm?QG6b2#=w0n!mmmjUm^({sVvg zWgJQot|XUwLH^)#znF~l>lGy(1?61YYW!d7Po;TX|Ld8kZ4i5!zE(TM`1Y%(Sl9(% zTzbcZ9R+iqQ%kFG-$KD8iw>*2$>yZ8$pZ=IP7hu^%R3RcFAHQ^AT~v2*wDKct;c+! zX@*1`|5l}M)8_3xHn-Dv623B|32N6d1SC@PbbKkYRR(9frQR5veDzV|XaM7xr(l(| zqKj&4sWU0TS{HeC@BcFWtk0mxnE?F~b9II^u^7>Oh$rS5h%wfnXK=dDH23?+r^2a! z9kk6#>U<15$W59I{a?T>u%B{Iq2WWJnUSi$FpC&#v4s9Cx3_(TcV{zk`dugdG5SyK z(|v!lXSExaz$|WwUTi(%c!_Q>c6kEVc$#{ z_LXeT$s)a!gws!9y1d&6`jZMPI==nhxR7=jL*>*1+QM`BVX*zrY=(z(xFG0*>xmOG z?d>VGB`+~PwEk~I?H4Td9sqkv+cYVl3Rn^_dEAFr zFS5FZ>InEq3|t?`fqAyxI{9`A5;K=K?ieM6Hu$P)^WNet^R^$tMofpT_t zZooG=Eiy>85dt3?K6>1Oy;SpA%*(k~X3YgbqiU#yV2KxCcL6kfj!IZ5UJ@=mU1pw$ z=umEWcKjYe-IiMvAC#iW_snQw`2=<~W(V!=(WbWT{}CI}{jRQ%wRC@SeqiMxKka}B zfA$+VBnT4yVmWFf8L+$!$M|t)nJ7{e@bZe>ZabW{O@3pJndJWk&|6XsA}F($OC>M8 zvTWobLZY3~bBE#V0HaG~7QoioOZxmTuI=4NaxL^ZzsvC8i7!r2j@9c#)$dVf?jino zFAgsQ?9}vGT11fqX#eD>HMOt6Z)JtTffp%(+#IWA6z4iCa)JQh7Uf%>i|il5K%7gK zWPwbX!}~KTzk&4bgx;l?Dyi3ouH+lMf~r<~d2i|u2OHU6dOm$tE6K@Xox8sFGeaQ>k? zsr%!`;RCkX^ddaf`zSVZ2nA?S*3d?2!R#Wwlc72MWma+mpECan zoN%Gpp=I}J6$csg*}7F#m?qo4LZA<1J2S&Wkg)Whd^A$+7c}~_wMYJ zg||HWiFZITFfnzLHS4#V>P)@{qK&*E-8kTihlJ~Lhj?5pHL(Clko!!II7?*?U&eW; zuTri9Uja3r?~*5m`)+p_C^86Y=22LR?Bw}IM$wv!op3!=G|X3E>t0lY0&`iSTz^N; z1m=&((>H(uqHoM0H1Krt?mj>B2Pr&hqGs#1_Z{+AKyrbwtp6!7Yp1neWQxYcpwR+}2D37vjB+uxs)){A|+PZ}Y{V(Q>PR^eM zYk$2_d7UF&e~saW?>CG;8FkqB{)d>fh;o9ucIZsZ%y}wCgYdxbfr}Xrn!e9k?G3aV<9WdF|h?PNF3WZ{-%60m4VsL$+nad*APV_+~9;-C^sdJpD>f@RGWfyTBs?ZlkTjdEADsR;L`yRTk7awUII-}|Ww z8Nj$wsrmfgG}4EnRL36fydc_QeHw`eYYChL3aLNOeWVWeN8& zFE0n;)<>O^VI!Pd8le6b_wEp$NYS(n?SH}R7`bQLEXl?D&az< zHu6N}1yltw7zOOj%44zi!?NNd>8)d|L|%TDtd)@hz2&x;0t*p@A|bL@sIe{u8v2!^ z^A8}eJlzM750X%1E`qvn=#m=i=VS*oz%_?H$4MM8I)vN-RS9pgQ!7VGy&G{ zq2sW=%wmp5m>@7&UdO{CK>(!0LegwT7%~r>PjNo?^Y|EzU>@0*IGTwBpB=hRLB*~- z9T;A=Y_}0AOyA<6qdHT2|IR6(tdr||#qY(~i2}qisod90%BZ>)T|01=2Uc{W9}I(N z@jAgMb*w+dWTce|vEH1I`3`;m=R{>C4y~Dr#4p^H`emwFi#(MN5g@TE$d>#zc1`4Y zPP@P^_2HX?l9GewT>V8yApHlEx?s%d{8RT;38r-_=TL#h_xS=_E|$KXA@cvTnE$=1 z$tlFX|GmP=zuX|8$W6engvslfRf%t)_S^VK(DenjUiKeb9y(l%a1Defja8n1i^y`f z+neY&44t%kCi=mfe`qs&RE)1J5m`Bjo*3l9%M_+v;4*b(7$jUwxA2${_0`DuIR7+2 z1k`%}(l{l4javKdUbS%>GOE3r%ArB2IGrI5Kn-{}^O^0PrK6S=)QM zoc)p8a@six9LK-Tg9P}X> zXZ@vydkysth1sJZlJTdjzzeRD7syOtPS?7^;hYjngE~LtV|to?i^u8GLLEp9BY#Fc zZYh6UfH=536jLQfw_lLsow~#Typ(xs2V`Gm87m+?TT=Ukm2r_;R zJ+%(pg({g|s;bSbXl^5lmEF$}Ag;w}2!~7U&%-Bw232>BR=Pa^lp%%H&#YYEiTQq_ zPA0BtQCP4R-Dy%7L{wClXY{*_h?pbB<6Gnt`ae!!ImWokUiqcR7~ReT@o@FZ0>ReM z{b5GTB?c?nGnc-qrzFfwfZ*ebWD>oCSJ7B?J!?|-$7XVmss`yP@wyP%-F)fcAwign zoJY>eVp!3(^In|K*l^Ef5Fsmy*is2VHd zus!n=JQX7vkmo68YrRmk!N(gnE~59M;pBg&qV@BBnn)s_+Z}Q}^u)tv$Je)|vD`5V zY%v^?KhX7ul2fi5ED_-4;*?rOat1>nDb;904ZKf%@E6ni|9^qty-W0Eu*;GZHwwnq zU=|Ww-qI36?@;ez+|%_3X66mV-)N7?JpDmdNKOgcmm;V;**q~!rL%x~i*ueS?PCnC zQlWmE>Y6Y|>%+$L@v;2LLpGeS&up;tZn?T}0Cr7{c4q&IDTfIBz1(^_<%W6ay3R!x z#0y()A>OB@AnISWBk8B?EOp?*&|D)}3!3vW9f<7mU*Rq>386Y(Fb``l%G&+or(`pJ z=LZ0#Mo1NbZCFmABHpxkph@&+@;rok%{RYJMUjSq=UkBf#@C2jJ+Cj0!$B_ccqRXs zROainGG9s{XYDTleo277uNgzpQs5;PgCPDb%RLImK*SWA&I;zP7^|_pVG_C6u ztR89Pf!-Zg6kn2F$MiEl=GY_FNA^t$y>ts-V65T0L4rF7Sx(MW-a2rz%yLRGOADt- zA?0y_MLUsaA`#O+ruZ&9a&Nl7fm-{^Ti=HwyfH$D)PecsTM*g!hSZ)5`4Z@h6}GlR z|NRlGXnqena}U!~26@FWtUg`v({4&!Ok#Vm1xdt!g)xVP$@9Y~@3s2_t_uVvNXPEr zXRH2If7xm8j`XyXx^P!#)A6)&8Gosv*>;@$MDwd0rwTD}9;@%~R;KtJBxeGgO8%3& z{_mam|M&x_By>udCB744P=4vhCFTG-p~fU3%61GkAp>TTDcJ};Qa5NtMGO$g2f27^ z<8&;6x~lPV;@ndPVfpJcl&Po!HyU5BH>eLc?@&TkRRpL-{Sb(6T$tO9rvwtCrrjr4rzm+QP*@+c&ahK;HnTeZM`pK$l}e!JTk|M4a(^lEGX16=$$Q*1Nl6F%*~i65fr{ zeIx)ZjU<`T%XaUKdK>{g;#eyI&>=r;RaCBnYto$u3&=@0FD< z8$$6%&-l{pSLu4IN{=ZPM6>qtG6Jp8?{a^Y0@R7;Xeu3dD{P7x@ww-pZ%yQxe`8to zyfQ+)?29rpsfT<+dd?#y5|%zZhb`sMY~Q4NX6$_|MFrWYp!hp~4)wOaWSRIwb$<2I z4bJ?xFt+n}5B3AUN*dA6`WsF3LL;fT^yZOwQl-Z}1`>HO;djrdt&qk{P86V#cl~b2 zpyXCe_B73?sgW~2wIDpMrgV>zaccSab{RJnr>09Y(__S_1uO1J!~$cT?Kql>yR9{H zrght&1aFL?B@j!f!F01 zAKXBb%B%Kg%!lbW?x2M1Xx#Yq!P+& z)@u@x%&KBkm#h2aV%bEb^-zQK4coip7q9mG$xFkKZeQ^HZ9Pe1Q1zlakANF8=XZUi zw6a$jSi73|68{PHk*CWjKN^;7Bc2yC4R>mCwl7+{9hvC%ehGE7o51kSFElwLnoJBDW}0mXWQ7bTx8B1aZK>>c+DMy+o`_!7jThy^??@@FRE3@Dj2&BA# zwy?=vB{U*U_;O$Qa{hd$3#5FU?C`m(LYCaIO4n0~dEKFmq$ja3Ed7)YP}Mz45z&8f zRpwDwMpqNFkSjia5)Hl=DR&&;;_PA+wu~#A`C%@#iX6AK##j*#$z(m_w*#KMabtYAGn<$?J(LoQsd5MNl@r&G^TLZz(j7%NUF&gB1EOJWb#!2y2 zraKZ54XhYDvb9wmUq{R`{&wLrv+(#SHMxaK;gk9|E6UW$?0<(E3ygP&c zuj@(H`?XzMxf^rT9J%|E@iNozfY+FxFP647MWUlgjI=cMboo;ylgC=GE*<22ZQCHD zG5+0eZPKCy=^{%!WR`^{iXAZF_ohivgwSTpR%AfthlGbo%&womh>wxLD4}{88(E=# z;<4BzZFcFK2?T~u$}B{O%paVAQOh6w{mrvfC3KxJBdhPjB>A3r`!s6qg6R=oF3%`r zoR$CkiLWuX#>Oy&@KTTYdxqu|%@m)IeH^!om2~3-LCnR$7(Z7s#|CjG1^{awH+ei>69J}}=U-K2X z&Z)&7fAjaWl?#^g{a0q_H~RpT-R+<%=Vbe@xF7=bRSYUf!qPa36$5DE%3J%4a*E)Z zPplXn(&fL7p$;s6AqJ z4cFW}R;atq(DGSEdjku8>7Tu_2!0QAUJtA$P>45Jd}&$>*MdJt;l6PN2~eP-f^ zZoupcZ-1u2syu`0ZUi~3yvpozp(f*%(v8hJ(&NTW5TG$T&afoUJWCkRA3lSQ5ke{aIZM{{Wm*8&yh1~~yhFXnLIGF? z)lK1wwoS6FlU!rrSN;`Y;$R>yoXsMSMEw^13b@~Px)zVU%p-w7#OR;XgzppBg3f1@ zd*uc?r3}l-qOH!?{?~j!PWM(o;OfYwy0zPP6c`+!HZdhH5N+H`4U`5)!C3Or^3kVz7Y{=U| zw1OWu*eVgl8n|wDB(44jfT6?1d4HF0QVdY)QuIY;r-wWHCsIGD+e zTRj05_p`V_oC1@Ga@@(LzbhY^>yMUI__4zaF7$oK1XVzd${9{#zW^vKJL+(+J)7oLeh^|&|67Qt_I&iB zfF-2j%+?S3+gpQ-sA9SmhbUtqR7TX8;d}_S%7&;I`FT+NV-kG=AEDUh#98pk)Vnls zXdt^0liVF8uRC#Dl0P&tlmEJFAQ+k$od;Oq4XLiGZgO1*&y2zNQ)dqWr>*x#9RJ(F zHvATId|Y-~2LgckyHU*Fh)O=LC->ZM`_m09M(!aL-=ngE9xSD5_0~1~X8My*#34aP zP;4~c!H&?qPrY>uiL%IL5Y}=;K{NNPU-e^Ce^&_8_;Sx4*7r+fdHDo=DFH2#6NO`B zL}Gh1X5a{VUEmXYL|jK4ex3DP?4W=Di;{jU-8FXk<%o-aBLJmOnjbIHw(oNYxcr;!w*fYl(6V>uCse9-KIf7$+E>d!1@WQkxYyS1X!C z`Hj`W`?R61lN<|y&^{?z**M!P2Biv%8-RTKn5fAi_w|tpH&u>*2szw*?)+Y&8T%IZ zQWWf>&%1a2fLY>gSJolXjnhn+PZI6qh6$7T~I8AbNZt(>k8FpG*_(I z$@ZOhj(6TcdFR^v9CrDrI!7tSGR_(A9*~|zmqve2=*hzY%?R1@yn%uxbKC!pAlQ;l z+ob6+_O!J7Fn8F3${`Esasp$?ak0D1+KA=``NsI#Bo&?b^m$Ly^F`pUORkN$~pDG&%%8Dv!Psbj+eM7a5p$uHKK)X3~bMlcyvg?6X?r%xbAq#j0brRJa-8 zcu9qd#MULRnm!7)bJb{0RoiCE6+PUp?#P&uj}kEHentjtS?ycxuck>6^Uvz` zF-f{K-_W}V-+95Dko(sPnqNW0gOMSwqN?l~#O~Zz48iF?ua!mvvhiHC!N%JMlW|3Y z1`wq`%f4mKvWs%<#|v$o*V^Yb{`8zsy*p7!BS4=?r5B>X&bLK!mSD#-C*@{!`0w!U zZr)=8>^?o~v}z-}z9b$PC^rlrtV~M_G+`Eep$T1~v(G0Y_7BY}1%FPIjB#zB8Ez5@ zfS)dyh_R-o>PlE3L6RuzBil!Vx*okJCY7QyqJ7tZ(dO^p_bLUChNjRp)^pdm z>kSZ-=ACDW1V+a~2aI(TwY^ab2!BdWJXpgm8BcTtscia_jT)cMC(4;WsB5~3ghvOZ zJxhordyc3U`vYIA##eFm z^~B@k(ysqdc{m+I*uH5THh0jc#j~J`{u}edSRi z%c0`8E}?h{Nk?Ssf!4r-N+qh-bnlJN&I9xYFpjuek+PXI@(bds+WIQPy2T^CYFO9i zXWI2D++pnD+!g$3#o#V8lDpE;$Sxll&peLu<4T4_Cd* z1NEA=E8mRPPvrKa@4L7G<1uMy45F$?sI$E@-`M?bz@&y)V~6M!BpQx@!fb4%(52&b zD+T13($|&gSB_V`+#g;>FU2 z3Q@}PhRug2SdMq%`(${R+a*3sZimhfprR-GD(jYFzZI?zqVw z=m0=gP5zv^mO3}-d{$FBq>=pgPWBNnx|grACEgt;*%`xJ;!rn)C5O9*u&J4zkDhfd za8z9#e4%WNN?u2F+_P+b0Ui=c%c8E(XaP?W0GlOdh8&^r4lVvOdByI(#2vw8K(sj; zfKdv3iPyQx;`ovVph<9dVa<{0LfS4%UJkNCioQhN(xx$VeMk(G_Ds0w4^i!kq+70E zLi_jg#2K2YXG)FUUFsR9PC3_zGd3-c_tgsEdeYw-=RghOHdrUl$ug~LlE6ZP`}DP! zz$tdA_k5%~Ylgq@Ye;g!5-Hx9m7%XT!RR65%W$5oLNjaE%XhR~r?@3)1F@sV7B!o* z1xG<^Gw)y<->@hm4fN&@#_;QMv&Q!g&+m~|jTO`$;kUbgwSYh%cEtC;lw4|mm0aBN zF9eB!Ta=}?WWCD}W1)%kt0aw|-6F{>v|R6-1aHy9*IttQnBZIJqtoHFGU*T^7z3_S z(Dn;rrvO@%WulV}+;N1*I+3+~SIAg{+*DWf$xfo2ZOXhGmrS6h>8%v-Zkrr23WR(# zzxAa2T1%rsTWZMtka&RM%pLAKVMuVvH(qlQid_U)X-%=>hQJE4>*Wo>U9M2rjYa$< z1SofGELj;TIkkG#9zDyDo+Ic+sreh)ymr0^Sg0d$O!Mx4YM@{ObezB6GO~68KYkW} zj6Vbe$+>15%-t}^$3Wh-E~3)yhkx2%b5oAP)FGkMh^`};oa@rV!eoZ)r&<(SUX>2` zwcxg!z*)ik^zyIO{KiZdY3$Q@etuRy6?J{21e&Pp4g_Bg{I=oeTFV7J|JMY(!#d%>exWrtBsCr&$6jS#kD-+?mLGnFPK&ANVMI$!>j5de+#K zPJqgUs(a8^@TK&wtipfnkF~b!Cg+Tfy9se3E&!L(&lF@c4wBXso=Ius)AaKWh@m2b zKV!$I&%W=<((#qtCKSN*bW&&MwUb+?_>$eGU3z7FZdV{Y^*AXb?sv6N;8=z?ETuX{ z@$hTyxfcbiWeE6#M?qN~3o9k&$DKutbv#|cGB5BIi|Zm+vfjLY-B}7cA1K#z6?7SF z1S0DNjY9D7O}<-8;68c@sR^nxreOXA%Yl&guh}Fxy1xWJtynv{6~6eeHLwF<%tFx& z-|5bA^k0PcJ@H&Ty=KX*Rdu{THb*nOunQO%Db=}RZ zQyq{F0sNer1=0>U_9%^Q#<-ggPVe6gozna_T7D$`NceQ$RDH4(y{sh#8whtMj%a?& zop(kv$Z)d=W4^QFOsA=ZYGrtlE!NUvjqR^Z|~@gG^A}3pMcfZT>xPy^aok8 z7EF$;1%q#ab0ZL{2fdY_BMwWR8nhkhQ4k>SU{aXdllWGqO_iHV4CQ$>phJdc@NLBW zyD<#@q|#XZ)P16@`B_W&w!%7JGbk*|^PDDI|Hrmr{3-Rn%r#%Q^JA!_-;#}-fdI8Q z=lkcTY9k40SUzs1mn5ug@)%m3HT(*#U$W!(a+^aIVENrK=Q!2!gV z|Jv}G_S4AR<5>JRiVk8=nNU=as#PxlN+o7_>)kx32UKPycK>KpOABCuK(hD&7=`k!Q!yZ@1llKTIij6$0R{u6c*f45;+sQNDU2Fg>i18u?-sr$4u z)b-Rot$tg{ITVSs-AZAOUrI#YdKC&7NJ!~z{W1?1>3Cda&oYC!QW&p7!a_yg2Q@}> z-oVS7>5FyahQMq%68o>|bPXq`Yy|&TJV{dEjS~Hk6zoZ=}*7;QfAo1D83zcDzt0^ln*A4 zp3J;|uc&J`+g$g_SzDDN=f->9k0o_sxrC|Eaqq72iy!`8WcC=oNrc#RwVUR6upE`c zJT!Sm6YYjowx{o=Umt>(4%gtmtS1o`7RG^_UF&zAhs`E#MRzmfp3{+4M*<(_^<6_u zGJewN*w8@F=sw*ySHA`G-o39c5fD}{EM3|!&-E@7Lz*4r4q~JI=2{GnzB`3uq$V`j z^1(l<-@yIXkJCK4{lTN<7ZVIGD;0Aw{N_{l#6CUcHhg2a7Hcw&AII;ih{4v+oG+pL zSkpd^KSap1BkAX{@?I5|0eD81#Or^go&dZZ2^uxuMZbmVo0|av2^+TxdkY#4plFC@z(yqXdV4fKm5= zA(UooCkOnw2rm=LPW0#Cve|^Q)wcbYgxgLFx)bMqryaAxK}<$bxl-qX*8Pma2iG@Z zqVWtF@n`9GbOX1HT=-V)m^_P8k0kCb5#|})8r2{VkKU6o;O07q0D|&SU9iPe`57HJ z8UhP5x%))7siihv-TMg!JQm+zNK{Ob);#So0jz6NJl;sgezwnzKlj+%t<^Lo-EG9I z5I5Otl;D44q{_f^toFZXdk?54+I@X=5?UzIm0m>@5h>E7g(jdNsEB|_kt$6Plp-Yo z>Cy#h3J3@y(xfUSp(rX<5kXo)6R8O`ft0!VzP-PF_Wz#moO92*_s)Vzm|2U=Oy+&x zXWrjaNUOrlIkT3?2KjpkXr5tHb5_!=8yQeQ5!b#sL% z&S;4J%q7ZBpI+~H(N>NmUPOV!vYjqJw@|o7^yT-L_HLlb z6Z-6`g`SPgJWtadury+9a@fPWO!gfcnqtsV{YbNVr8)(`~ z4uXjWCia}PHx=qKm|O-CXa%}hBC}bVrwtrj z8YhL)B`wInOtl@Fo;lzBCA#v1>zmO5vEZjQ+s!n@2O5!2Y&~t82*$SqLm)M1Z+z=R z7uN;raNz21slaan(@bUEw;n&FMl$T!3O%dEugab1#zMI6eDAF>vGlZk3BK#%GLJsN zf$olZZKx08*V!_EoP%{eWgFWwK5BinZ4Y~IUzf&;LzfR}`-?C{Dh}NZ3_uPrM;!ZJ zb!H+WhCwOWbnH~h8uEr}6+w1r=qB^Xul4i$@?u1;FNRw8^{Gp`jDEK`IAr{8-oD;9 zJTLOym0|eVsZe6_*m*7WH^o3J;4av5qYe+8|1qXAgFjge?|6nYW4d!Tsr|gK4z*;< z4!t%1b4(qn$8GswA&6v&mc7>VXg9n1T)q#dX}%Ji?pu0BVrD>h=XPxI+Y!3Ql48aS zk8h2b(6Nxo>Tt8=<0;9!Sm6O!JEg;I}Vk=BuA#g5Qz8- zN=m5m84UOW3(+w2%~zH_^}ZiCcXN8%IJB~@6GsQ!Mq+`l-DpOer@Cc3cs(aJkK8mD z(dD9L0K|V+09(3(9RLn1F#BDtL^kO9P`;O9ClcH1V2MzBNJsK&ilOC1&$f4wlb8OJmHdo^$C-I^l>kTd2d@fuU zb$`9v&|f-?M5kWPKQJcI_!I@4iF*9C@nxy@gSn`lD;FMT9y3V}vd*p9W?4g#n@EJ_ z?>D!qYxux%TC^68F>sWYHj--V%~c5BM^Na?`X-E$&ksf(*FsEB`SuC~f=AyPD-%I7 zYFD(YCI2|nJ}p=7&xLl)iF@Ekq(Eeg%da@Clnt;@9xTqD@cEHQ{EB<%bWLj%DkkcVP>8MNHw~~7+m^tod{pkxqUjQf=^Iql}Q0| z!0WJ_U|f?@p^DYGuac{>-KZ?B;!D#$q)I!Sy(>@pIZ-3ze4M`#-s5;Ecz&0op9xO0 zB@7>O3fZ`zzah&g>2WuM+{Q%YR+9QwlLV5se<0o*F{YUSgO1|?D|m<6CJBEHF5Y+oEPoqfwJ4q5;s1Ymx}xE2C>ppmWqASt=AhZ^ zs|NhfX8$_xOx>r&%h607Rz$K%g`nl$WdL9yqlW0j?=?3hcCM8-0ud%CDJW?pUQn)3qMK43$;>t$u&=4*V@&b zotP$&iF#}5dk=fjaC*5^g6ArM@(-nY4Na-eoS4ks{V6U;JBH{4+~HO$U#K;{Pc?XY z#`H+e$w2CRdZ80Oxx3AogS#lgK`p#vvvK2z=kXcMG?+gt^~eQOsEj&a+o?=&QkU1? zv!Qjr>?Q_*W@v=C@iuGq2|nx~!(1f!vJwsYGuMwy6bIR1uU)nUXBJrUVcv;Xz0L+y z|BGq$2vjiF$RCdCKfFB1!BDW!Hol^N4-%)59rao*)X^C26KU~^1g=(w&M1Fe^y>lh zSlKLA9>8ZfC_iT@h*UByzwH2VyHoTL#Mjy0jmi4=aUOm{$Nip@@-pMR z4-BJ98+mF%1dgS;N|hS<(rqBfinpi#-FE?nPM>4o$Ea`z8*t)g|C~So%1X}PGq7)x zP?5pEKa2PQKz~i<$%5oKOcmsDetREu#la(hN&u%7_=E8$l>%dz({D}1QJ0f#bL&TL zysHJ<&45MT<-{oM4|T9}#%DT|k^m2#Q2SbLNTl+aLE%x$2SF-FtF59_Q(URgl2esmbc_kWhy?p!4 znG9U5^#=a9X>c`y#!>AhrE8+OF1IqVzTtCe?7U3uQD3vlI|1{mnwa>v&+8d`$G_6g zQqumXQKrTpMwvVNgC&iOwIga1AIHMDo2 z>L9vjs>3Ogw6wbluHu_Nb64=!L+J5DxeZ16;S_dFAS^NBA1my zYq=NM7{!#iv>tN#>AQ&5ou;l#pECNWxBBgNR{sx%e`wl3{5Tr&1X33u*jLFC_Bj5J zXZF6NCSUrch!Fmi{S#04PDl>md!X(de&EiJ_d`Q}%zd{aYB^}uGaM|1oJrF)6&-$) ze8wB}c3HC)s7DlNkmJPAaSZ_qwHK`u&D$b4%3+QA6eGg+N6{vJr(USV{^8FB!rX(M z%O#8ji|0ok{?mtIb&m~wjZwVz`(X$8h|Wf)R6zLf*14 z$XM+FL!y>Wxv_BtDzhK%wz}kPi zp3CRtDSmVg^|X+8r95rRj5?zDlcv`Jnk3{CfX5uRSRmffLsEw*z*zc>W|DQIKZx?J zvHM9RmEwJURM9Ob9DyRq;y@g3m`#@laAHi-GxYviF;&OP_< z;N%~~R>w)fo1Z#kk6U6z^Y^aU^$N8v-fD)R0 z^4#anYvB|52EYP>eH5bwEWRMTd1UhXvb^J0e=$A5zK7FAXZ~UIQ%f`YA-gf3ctaDz zDBk}uGeuSms#Qdj^wUrqH~;Vs`r~(bT5l@?R0IH|IOO<`NaBfiG}43u)KZU1eFcaQ z{k|b|F2jpr!{Pu*lv;BG&5DDmVLZn4`M7Jc|X+w?vJ5!fE^eOHui($2v{)qpu zhJ7x8tXGg=wAaBDlk4O>^lfD-0juz#8dTJ%VEhBwMby#XWG>pm)L7n2iIe;_o~%AWz;4jdh0k}jm{68^Dab>A3r zlW>4!tUhv9@um)f0yFpxkq7$vAZ+3aDlx3JXogec#68a5g8G-3F)Ady^1!S@&JnZ| z*2DviNIjDi6>mRbqc`ykOl$lve_GWG!@5$I1TJ1Yay1Ynbv++>qv|0!cGxNIrJcVm zbj#>9Vr)(v;A8~GWW`$6<5mtX6~kUe_MHYn9GjPZBXZdnokxRzVCWA}3IOL3#*6|4sS68;voi`$Iwk4L zg#TF~{wTOHMs125Nh%n7zK<-5)k@pFN&bIjyYTFSwgl7UVZdE5T`8k!u@>V+PIeqa zts&dII{Lv?3)8<(2mjkn(-G*QRzc?axU16_%e?8h-MZ#~u;xFVH1thqc16(AYdA7K z!m`E7o<%zmffISB9BcXn$9Z0dS<+L!*6)$AfY`1eHRfOKLf{tX00XBYLulohy|4q| ze0B|nfcyAQNiSxH=DO(J^ACsZ^6WtbLE(}tx6WTx_I-$qzDcY3!F=<)@RcKsVbAt0 z1Fk+|GaQL>gNylsUic2XhZJhR6j$7L+y+_la?!y&czDFe9h$Dl5Lsbi-6*BxbWJeM z#SO7XV*(R%Z6?hsP6(@}!?+TLGE48WDT*lj5SlSB&t!QcEDCobxw`Q-l-1so?=KxRT-%EH*P*B$lacxGqjl?QJnSmRKIXr&mLe$}b; zZKwJhIzJd4VoJ)7tM7%GV((x}1ddWp0gIy9 zScb(EZV&Xo#B_ZFjb*6NhuWzH2{t$+!(}6jYm>67OV3HakQcp6PhkntP{|h;?)u$} zZ5Nnf>2VK`bF5l$f|q2|SuLA=2cQ6wnSo~Nz#vV5JNUS2d~T84j|To z0d8(wg@IrvO_f$b(#X^wwFI=a;N)HT@1j>bLP`f8DQXj1&YrDp#jybbCNXi&@d5mT zL~e94Bz?|`@^E!!bH9LZsGF72cok1|I$g%XxH;ZLEWEmvJa;o?>6y&HcF_nB00}q3 zu^&VE=qTBR#$saK6R@x0fmY-l# zN2DkT)2E%)f@ZRP4E^Z+F{0_CiAYXAK=<^}7HUlMIkIKk0Yn z)+H}hEj;DPEE4MKe$pVFMgvJu0#aew3~G5(pDdCEhCi4yBo|+_E{5j9yC&V(El`p8 zv3FeMU^@uWn^z)$%=8a}X~vltaQv9a>>p7gNc*VPdj+eh;@`z3+2Bxtj?)+T${hW0 z|8l_z4v2g7eF;%?eVV34=7-3XMo{!ePW#3B9CIq65IK@At-XwV^C2*t|9nPuRNIdi z4{{KW6lzc1zq1+sg&37D_%U8GdxyC9J1R8};C^e=*;WawhflV?@EzucLyn6p zs%Jl3%JVZ+tO+MX#?e3Yb+jZ!>v^B=9qoXbpltayqVlczJ`~nodG60KYCVNbes;$8 zIz{9G!-k_d9K_syU_2dz{o4E(llxar?*D^3q&+r}=CjB0n;e$_iAE3dPhO@;fY8j9 zDFr_+y!_(+Ss|~-+B!s`SJ_ipXW8cRqd-)YDoxk73^@Luj)so$E>5t83nwpy=1e=W zqp$VJhCVRd#8C0u7r;A(!khKGh zQB`BNJ*A&GOs#&}2>tX^gAzeg3#aSaUc6-daH>V^P#Gl6=G-E!q*z_vLy@}|z~b-M zM?EdkQX{@0gFA`#95Zl^F8%@O2M?@vef%S1VlFap)j1U4Zzo*iylnpErX;GmHLvs& z%~)~m?tpjxYqOyhs!#>3q|T}JlI^w?g-!LtR(zCNc9PLIhuqewVr>Mw8wAw?Ova z_kvVI1)5569$NZ4HZ>LvfjYaLJtgy^?(GXZJ!USvlS&!``nPdlH#0{XRy?VvBp}#o z!iT%kP@gy5sYUqlYW!{V(Wi@BHNUun#1y`6^w4sDQW!LtMz4H(ChRw0^35rU^HIN0 zBF3`7hC^Z@|K)J*A6OH!TOq_g6ZGUBmg`@=thmaR#N;fv37j_f?qizN!@SXWbp*{& z0vTi1yX8#lz;_^4;#bsyI;wiNQ&Zy3cEa~LL~AjNj950ZcOK1oOv~-cJUASETz}?G zlXbL(8_zhY2^>%i5+SoS&^6(Y$mI)>h-?aUPyaNQT@IqpOepWAN1bw`k0dhuWkTBx zvh=VEFxp+L3THZs;J(ljTxb8zYo;@t@$l)du_7wCurKm&jT+Ufwb5JuA@j>UwOO{T zJeOKpn@)@WS4$2<^PVBgsJL4PDc+rd>xM>pJF^@nn_ULq#i+@{X#e)PX?V>+JQIG)!G2 z5O9U`L$AzAI;S?KBgVwG`jd%o74@88TtLf%KY|tzGXxH*;JiHl?989Q=K*lSZ~{x|h)cGHn4c_hW7H z)%ed-8M7_K8jvc89bn*BWC-WZbhxXC{+1|Sl4D^D4+$5GRJ_!hRWI+yD7x>78`_Tg z!`E*=%?D>!grWw4e`*u|7BK$JMjq2Ym%rKbUp<;@|5rQyi|zjlK>O!W{4ef>KOx@z zy}vX>YYzepR5r{> zARrL5>Q+dGOpi)5DU@zV$y+V;IY|&uaD18&MBpdqA>ps%`=2iaNGW9rp?`8mvPeTQ z)zHVfFiP*RdEXYI>Mx;SY?o9Pr1xw;QSh4&x4q;j%P%0<$2C<8phmdf8})0!a;nD; z0=UM0B{tlnPw--&C+}-Es;(1uVR!nrb&e+{To(xrYkIEiYbH~DyRZy{DBM$v!d8Wf z)*OU+-&ut7^7iZGC1^8E?F?MrJ|y~AQ!cONDJT`m+Yr^S7W29))ldPq>c;$yt4_6S z>=#pVTu!X^#T^Y!6Iheee!1zN&~)pv3jc0(^^vysAWop0ck|t@)m?2)Qh)Bs&7RN3A>$;#+AKPp{r}YtBaYtk>4PKuude_I_PmkBvdLBHSfe}B`B{u z_Fne%&*IHCeuK|hX_z>SYSjJjk8uM&9EC7YWR=YJRF+c_})LO79g)X zdFG9Q+q*a~bl2whP2Ce1C|`85!;N?FE~NrU&4JBGUs!V%ycd0!!szMHc+u7t+SnR!>Ihgf*?-6-4>V4N)R*W(q-;IF_DjAohU1f?#xfi1LhY zE_6JH!$#oV)KvY7_AHKqKG|It)F62410vGjnUUyQD{Hr!HjN1A)AjIWv4bQo`}Ln2 zq&c0Dg!5^Jw>6hl+Z#ocKAP0J zbNDx|H!Bk=v2Gbf`l*<*2}7P|&+mWFr=?JNSQi{HOzm-{!pXU!my>0Bc7EQDb)tRL zr#=Mw3y;nV{U(z874zhMkrs_n&?1eg+zi|ke{|ah_$jm@x{S(@kJ#%r z30kG%)fQ2C$3dsQ)eZ{9(zRoej|zwg%9A0tM$IPkB@F!4Y_@Nus$)XVR6fy^^svAD zSjq_@!>V}CxZA6+5b;Y_^k^J6oa=Z8H7X*aKX_6~_~}V@ZC@9|*J0FB$*gnnZpFqg zJ3otcJia5N)csCw9e3EBWitfjsf|2RU51HDnhcl$cf&E(VUCpT4z2}El7_tbBaxct z!#6Td3?Sg(p@}9H=&OFx+1wQ$)P|d77OkDjdSI=VP7=;-p7_iqt)2VDZGxkzX&QCV z`iWfy{%e0j0L|vmwAQr1cle`=z@!#OHjjJE2$o-)DqQ%sv0GSWnrxkD{B0 z6HNi;>KxO85$w?KMR2H-M>Z`Ou|tK!j#$s^%mDmR=8HGwy92llHxXLFOHWoY;J(Q; z9RKuwaj9ln+MvmmXCSLgc%Lzna8KE1Y70bqfZaCGZ=v~??tTSi*-YC8x3%9=hj2{c zncL4-W)|lasN4hg>s#cDs*ihZswiUL@S)*DeDB@Bxl;^n314%kwqU&ba!rRIuU7|r z8yxH|qH;e1q*jZX4lli|>a}VizIdOH*kqNn%NIqYb!&ir?i=)a(l1}MQKyw$Qg8=p zi>|=~MS*_c{6Rd(tQYoSgLW%e6o&N)IJ7h(sWp9D#b_Hg1QdSnM~jjpxjt(`1tq0_hY zy&J^h*ozee1_j0xUwQp{54`;I{3h7LIZ=McmI)jqJ92;=dPDv%F9Z_~s>%5`+A(W2 zngGlv0ee6c2`62@=^l@s%Iolp-8+B&0-DW$0V-%W5b3&(VqGPedRR z>NN5>inzBCyGW>u-gUFe-TfZ=x4AD(8VKD==?!Qdh`&#viJ(=$)oNrkix&w!)a*Ts za0Kr$T!r4A5MT`9;x2h1*}O()6MpfecJAG;NZ<}sZB+e+uEMArdxc_v7VP-0UQXv5 z5_XH(-0;3?`L{%fKvZl{k);Jr)g6AA4*h|4X3%BLygdo;hYV~cVmg0`JUp5^J1vr< z+DXs>7awb~clVmzsNj;RK$az&HI&)YcD*C3`ux;*<;t?d1E7sro*73gKRRuama0A=Z zok@6yBMb5ciI7H*Lp?tEUwvxbFQ8_KdsgBc;uOHkcp^wO^3C`C%n38O^(h?AE{}PO z{p6dO;v2^_=2~)E#<|4-rx_(p_r))|fRmn(3Q_V2^5eJ>I9^hFepAjy)7sAwM0v7^ ztb%daH*B;?UqlilxH78ma^SV5zBf*((()g+ze)zJ<@#TgUU_9xmV-?L%G&{Z$) z7P}m-(sN%BR;66-0GH}%hsxoGIX=S_XkXNBLz6Cd{C5Ly=U>BeE%i3G4GTGX>nmd$ ztk5TF{gUayh#vuGmTU4(IG}!4{2PB`d29^_qk&$Dsl#RK$f#ciADOFiUm>Vqhth4y zEJUc`BVmbGiA%+k1*y*0P9|Laf==ufOvqAU{64J(r$SW|-F;$`UWo!cWkx?s^_`<0 z?KPU7b3L;fbvP+C@RM1@->DY}?*Q)ULbtO4Up78-oul|m7D#o~t7WY|8n@`W=hoF| zl&A2l;fv3m^g?5XoFpt+l5}`$p=MT8`-4DfA2Rl7`t?}>4)w${WK)7YNCfG*bOAja zwyl=>i00D`OGF%(d>6L=+qXvI!{Q_MjwYG2BhZndC-a(a;hloR5upYyS0;(KjD>fL>IZR%T3q!lZM>lxZlNo+Simk8_FbN#ag2+AyZo9g)z)Q+Wr6 zJ^Msv5$F!b(P+C_Y9-nO4UGpbNZsw9<;-cKDggBK0PjV^;Q;`OW}!c7Mlt9ipCp$a zwN}1)x-gcJ7C#L`o{CN^a?E(3%BUuWj zqz**6Jz^dJ=z-{7+Wak+tI^;-rTEh(l46lsnrqpvzYDc|{z zcj<)L0}xrQ!XnnNBMWM9_~<%YX&f+}^iBC8*K?DM<73zubPOz=Eu_9pz9q)s_sB#v z(ImHO16%RlwRedxZ~T@41B~bZD8{&Db#p&;jBj`uhs-&n{0#p36fl!UaBFH-OYwbz`6Ta& z_8M_J(h=n+{3d`qH@gDpkj&&-mrY~y`pKb#AUC0%1Rht+tjsC} zU-j3)w*#Ed>6)uQo}QBx)CJ^|i-j5)4aRfcNn&km{5+Os0Y87AXd!8?bvMsOLwA^I@0<(IFGv*q~3Zc(EPeQZi#@IAUk0=Bh-;$v6tfd+dI4@Ml6XF0lMF*#D%Zp_XNT1DH z{>m5r!}cIl@d;0n#_WHz$1SoO?A|kg+e;;J2)1#@&K!U!)SnfHy=YPfxLLmr-;2K* zy!hE(-2Zgt{u8Lo0hKz3yyc+sOJ3{2S4(w(p-zKWtL{aU8ovhDjWr2~GHHm)Q5-22 zLzF8B8A&}SN;6y3JN2U`Rs~@?#qrTa_Lo6heOxaSNO}r$g0NS2aQlV`X2cjZ{OTE7 zgx%p_zMkc{oORRXHks_WQxwBPYZ6f!47SGHCytM;8WP`IAAqEydDRa;Y)CY51)4wJ z+)(u3Mq5B@I27O@(g`Fa3wVE5x0QSE1RMkW@7ekR$38*gq%vV=s)sQMAenym@Y7fI zj8(~SF*aITW5~9ZzN0W60!Sx#!wqje#(zms=H%J+I=9Z@(s?J{cWj{ejaCV2{2&Q@XZ08Z(ikWlE@nKL#tMygW|BYCAf@c5ka z7Ac6Byl`#0wCnk6`rnSW;lz_(3I8A|W8Y7kCNf#ACDmW`yr6a@s@Sg8E1n0 zaxJ~MF8Xkwjw4*%Kd0MR7!xn>>fN?A(#4te+lk-R-r(d`fgNo={*J4HwC(dxP`T4_ zSIG4z_T<4s*opktCr7IDJ3yvaiNzj#?uS-I(@@uszn$Gg&Rh$#E~@ z4}OAGQTPx*>mK4^x~VRc z;rUQ>7k&Erx%j&(rz<0CohiW0_T}0UMH2^eHueA*4PrN7kTHp=$eD)X-n9eK8)lw zVB?srS9+bHNM@+Em-UPAr_e+D5PEn#s%i^M$5H>H)!yyc>C^vSrm3L?3H$|wY1?tN zwC78%wMA;RTrOR*=2tg%2@t*;3d!Mo%OKZ+dJ(C%3qCnQ0J|R1P$m8Mo|1+ef-?_QufNbGUMPqk zt_H=vYFPBB#giDG1q<96TNp&&dRcnvm4m64G7Hp^$V>hvIN+?usPeg`hbnlG>$ZeD z#>~KJERgiR(`U%w$Rjodz)-YCa?Bb-?2L<9|I9bMwCf%MO~X`B@lp-Y7)QTH(@K!u zeog-;hY%OVwAgCZw{)tOu4Z_SXHlA0^vP!%0>RA?Lu#*(YP{m48GW8X5o8Gpo!f_j+9v6NC8J0ws^SR-6Z z6+y*so?_hR#7xu2bA}H&W-SYAxx^tCLS%XcrM1(*X~ulYM-N-Od@-gnCBojZuQ@G3k|fZSlqK8eu3rnc zkEmWnCgepo*&r{95cqc`q1vC>yJ7R&5NS15@0&00LT#29n`uI}=i=H3q~$D9@B1~J zvip_N(|WMDkRW{Vl$(`?Jkspv5q9%OFCH7m19idhIrsvj-WsQO(vDVc`af1M)o2MpXv|HVF88Da1#CE(LitAsqKTIXN+A}@rqzur`{PT zj2q4ABu3ZRaWr-uf){zYGGc|G4&oi>;{oaYtmbthU^V{Q6O|WNOG1#g6GGb=YSV^~ z#P}gu-w;X)sYT&EyJWS2*F|hY3jBn?#Td%t|2yRV1D1oS$LKiXh%7XRZQu@U>>=x8 zymo^bWVpVToz3A*K_@gF=;|&8(8Yr1AnsP!M&!3-CShn+yOVJgNGZUgJ_rM>XQl6| z7XWk@wlzmBNMgg2RR|F53gXE|T4fDSEIb3k?p@LX5%59;7)P?7d!LYr`FkfO5X%+c zx78S;9usI9P6lF>1~c6^fT7B@H6lB}bO)e`LwtZwQLycv1mm2j)=>j5SD5irVSTN3 zx+ay}viG%ElpJ&zQW$`ZauF84he9g-&?(rsm#zSFCCmo!?a-sjLN@9=30w*~+J%qHt`~f94(j=NFL5 zo}h_k(J=cS0)-!!8pYfa88PwLI~~W2MrM`4&TgQY&l~LCn!SCz0I)qjb^FN@8Ong| z+p9n>o;zmOLWCsTGMTh5?$wya?bRs&f`AAF35)^4oY=v8OcMDv(*PI4fw@Jv@FV5A z#dD^3CKa7~>}$Wn`8JA|W8O2IixCZASm=bv)G1-6%f{=XSQ|TG2~i&L|)~7Iw@7OLw1;C|=YQqxl<} z-1LFozJHDg`0#aopIG|(G$7*kx-(O;_rYbI@d;sFPT4d3CvWotpBZ^RS-3eO0|Z{? z>bj|zv!Rl;+v|kmJnwKS<=qPc+0GnApUajsWU~xHu}ryrlSH7%noR6H$&+VNa5UD{ zIa8>tv^nmib%Tc$_7m;0aoH+qwl8n7(WN5gKc24AjDBJ{wvULG!`z6Z{P5_tj7$r| z4&)YkV(ud+E=rzXvK2d6`&r*@dl|EHa@8ytto8Lqf(JC8mQD849XWeUtaFzt57A_x zetzizK~K+E>Es|$Y@e7a5?8J<^Z;C6!ksZ*cFu2pI6?SzyK{nJBZ~9o%*=^+3~plY zAV?qnV3vD|#UyU1J}~wnyTxqy4v8#q?Xg1+^)47YzGNpp;=e?1$lJ{4xDRfXEF5)2 zfuP23z40OB}mFmc<9xB<7hf_n~OKuAA5EDz*`)voh9}*?7coA&&(Qw)q z{L16=hFvE($C$4#N1%ZJxjyR1a*EE_a%3Y=`a)J7Ys0nSHxi3zod}Khh@r{?p|LmL zF?gC6XPr2`+k1{ag~y6wJDn%ahW^&eLqwkxqakiOr%t*HRR&K>_OTdi0*3Ol3L%fP zHd`F0HlvTSb@Y>dOfb=#GCOfaT!HZ9qt#6@2Jdz~@u>A9aeb}26IV;E zL#MFn^v8?2&po$*7L3;av_NRNTAEkXRaS0$1mh)#>MBr?b;ngL=o`!tD^`_#O^B(h zHTUOdKrp12fNANyZ>V%Iy*I)B+_Syej}Fgr&?sV1nO83ic0_^Xc=nzv2u&8dq5}7v z_Y;}mPcMY_IHhb*>iqS451jC(f_7@cqKBV{cl>5>XkPI!;*8O<+7+Q+YbAS_0ay*A z$Zdj24g7j4p!t7COSQ3VkPZujhE4ho1^i&*vcsO6S(Gd_`LnFggm-~QOCcvjB;^kYaM$Kd zw&$0?=Xk|@x579&E7j5pv0tGgsY9sAIS@So6Y0|BmUcb62jSP?4ijsu;e;H01B0yu zGjasem1!auMcfkqZtk+p(HjAF`@l4#v0Rq2cX)@80wo36Ye7eK#F0R*^J5r<{%R!C zrM9R~pZ%3}Us&+`UESu*%*xuzV`B9$)gwMX13-(vJM{N7 z6&4CS>TqqJ0Yzo-1!afv>{LLKq7i5eg7cg>Bv)9X zkkLk{paO04m+DeSZzNmiTI<2z5)W?CxQ+J9o-QPHYW4BI}aYD<@jvVIn<+fp^TlP)fVCwv=kQFObC$NzF{wBjS zNOtWD5mV~?J0ySSDQv(vm9cc|+|GAIGh<`FfmV(S@cx`-z2`EpWRo0}2E=nC7CjM8 zjYMQV7_2M(yuow{MWr2frst1>HjvCxo+GE@NhNAX1ee}D3-?16t1*;5e5VOwkXAJB z;;zV>H^lrlaTdg*9c*{b%Ux0No*DFUoyFB0|!<&Z|=So2fv63%0AluNy;#ZlalN)SfaQppXQ8rY~xq%5y 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 `{g=TB!Yv|BkF**sd26pcY-+Tjy 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

    h7gHLbAA6}3Y!YJ#W2|IW3 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%0DTN@ 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%0AE5j%-*538zv@E#54}GlijM`mK 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 literal 0 HcmV?d00001 diff --git a/iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 b/iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8f799901c22d1698bf1dd1d3dbbd54a22cc9dd06 GIT binary patch literal 215704 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\bJB47s& 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

    IjKaj(J}NYM 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

    ;2=85d4ptzGOjC((czPky~*}>3_J76X= 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

    ~| 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
      Q#hB~_?DZo$Xqqv_vQ3*HwjmLRoqO3 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 Self { + pub fn new( + config: InputConfig, + graphics_handler: Option>, + connection_sequence_result: ConnectionSequenceResult, + ) -> Self { let x224_processor = x224::Processor::new( utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), config.global_channel_name, config.graphics_config, + graphics_handler, ); let fast_path_processor = fast_path::ProcessorBuilder { diff --git a/ironrdp-session/src/active_session/x224.rs b/ironrdp-session/src/active_session/x224.rs index 3d0dcf68..83632658 100644 --- a/ironrdp-session/src/active_session/x224.rs +++ b/ironrdp-session/src/active_session/x224.rs @@ -16,8 +16,10 @@ use crate::transport::{ }; use crate::{GraphicsConfig, RdpError}; -const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; -const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; +pub use self::gfx::GfxHandler; + +pub const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; +pub const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; pub struct Processor { static_channels: HashMap, @@ -27,6 +29,7 @@ pub struct Processor { drdynvc_transport: Option, static_transport: Option, graphics_config: Option, + graphics_handler: Option>, } impl Processor { @@ -34,6 +37,7 @@ impl Processor { static_channels: HashMap, global_channel_name: String, graphics_config: Option, + graphics_handler: Option>, ) -> Self { Self { static_channels, @@ -43,6 +47,7 @@ impl Processor { drdynvc_transport: None, static_transport: None, graphics_config, + graphics_handler, } } @@ -161,6 +166,7 @@ impl Processor { create_request.channel_name.as_str(), create_request.channel_id, create_request.channel_id_type, + &mut self.graphics_handler, ) { self.dynamic_channels .insert(create_request.channel_id, dyncamic_channel); @@ -283,13 +289,21 @@ fn process_global_channel_pdu( } } -fn create_dvc(channel_name: &str, channel_id: u32, channel_id_type: FieldType) -> Option { +fn create_dvc( + channel_name: &str, + channel_id: u32, + channel_id_type: FieldType, + graphics_handler: &mut Option>, +) -> Option { match channel_name { - RDP8_GRAPHICS_PIPELINE_NAME => Some(DynamicChannel::new( - Box::new(gfx::Handler::new()), - channel_id, - channel_id_type, - )), + RDP8_GRAPHICS_PIPELINE_NAME => { + let handler = graphics_handler.take(); + Some(DynamicChannel::new( + Box::new(gfx::Handler::new(handler)), + channel_id, + channel_id_type, + )) + } RDP8_DISPLAY_PIPELINE_NAME => Some(DynamicChannel::new( Box::new(display::Handler::new()), channel_id, diff --git a/ironrdp-session/src/active_session/x224/gfx.rs b/ironrdp-session/src/active_session/x224/gfx.rs index 78d5b742..b7d171a2 100644 --- a/ironrdp-session/src/active_session/x224/gfx.rs +++ b/ironrdp-session/src/active_session/x224/gfx.rs @@ -12,18 +12,24 @@ use log::debug; use super::DynamicChannelDataHandler; use crate::{GraphicsConfig, RdpError}; +pub trait GfxHandler { + fn on_message(&self, message: ServerPdu) -> Result, RdpError>; +} + pub struct Handler { decompressor: zgfx::Decompressor, decompressed_buffer: Vec, frames_decoded: u32, + gfx_handler: Option>, } impl Handler { - pub fn new() -> Self { + pub fn new(gfx_handler: Option>) -> Self { Self { decompressor: zgfx::Decompressor::new(), decompressed_buffer: Vec::with_capacity(1024 * 16), frames_decoded: 0, + gfx_handler, } } } @@ -39,7 +45,7 @@ impl DynamicChannelDataHandler for Handler { let gfx_pdu = ServerPdu::from_buffer(&mut slice)?; debug!("Got GFX PDU: {:?}", gfx_pdu); - if let ServerPdu::EndFrame(end_frame_pdu) = gfx_pdu { + if let ServerPdu::EndFrame(end_frame_pdu) = &gfx_pdu { self.frames_decoded += 1; // Enqueue an acknowledge for every end frame let client_pdu = ClientPdu::FrameAcknowledge(FrameAcknowledgePdu { @@ -53,6 +59,17 @@ impl DynamicChannelDataHandler for Handler { } else { // Handle the normal PDU } + + // If there is a listener send all the data to the listener + if let Some(handler) = self.gfx_handler.as_mut() { + // Handle the normal PDU + let client_pdu = handler.on_message(gfx_pdu)?; + + if let Some(client_pdu) = client_pdu { + client_pdu_buffer.reserve(client_pdu_buffer.len() + client_pdu.buffer_length()); + client_pdu.to_buffer(&mut client_pdu_buffer)?; + } + } } if !client_pdu_buffer.is_empty() { diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs index 7674b12a..f02f6631 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -239,7 +239,7 @@ fn create_pointer_capability_set() -> CapabilitySet { fn create_input_capability_set(config: &InputConfig) -> CapabilitySet { CapabilitySet::Input(Input { - input_flags: InputFlags::SCANCODES, + input_flags: InputFlags::all(), keyboard_layout: 0, keyboard_type: Some(config.keyboard_type), keyboard_subtype: config.keyboard_subtype, diff --git a/ironrdp-session/src/errors.rs b/ironrdp-session/src/errors.rs index fdfad82b..d0f7730c 100644 --- a/ironrdp-session/src/errors.rs +++ b/ironrdp-session/src/errors.rs @@ -1,4 +1,10 @@ -use std::io; +use std::{ + io, + sync::{ + mpsc::{RecvError, SendError}, + PoisonError, + }, +}; use failure::Fail; use ironrdp::{ @@ -107,6 +113,12 @@ pub enum RdpError { InvalidCapabilitiesMask(u32), #[fail(display = "Stream terminated while waiting for some data")] UnexpectedStreamTermination, + #[fail(display = "Unable to send message on channel {}", _0)] + SendError(String), + #[fail(display = "Unable to recieve message on channel {}", _0)] + RecieveError(String), + #[fail(display = "Lock poisoned")] + LockPoisonedError, #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[fail(display = "Invalid DER structure: {}", _0)] DerEncode(#[fail(cause)] native_tls::Error), @@ -130,6 +142,24 @@ impl From for RdpError { } } +impl From> for RdpError { + fn from(e: SendError) -> Self { + RdpError::SendError(e.to_string()) + } +} + +impl From for RdpError { + fn from(e: RecvError) -> Self { + RdpError::RecieveError(e.to_string()) + } +} + +impl From> for RdpError { + fn from(_e: PoisonError) -> Self { + RdpError::LockPoisonedError + } +} + impl From for RdpError { fn from(e: nego::NegotiationError) -> Self { RdpError::NegotiationError(e) diff --git a/ironrdp-session/src/lib.rs b/ironrdp-session/src/lib.rs index 732a0b7c..2c2d397c 100644 --- a/ironrdp-session/src/lib.rs +++ b/ironrdp-session/src/lib.rs @@ -3,20 +3,21 @@ extern crate log; mod codecs; mod errors; -mod utils; pub mod active_session; pub mod connection_sequence; pub mod image; pub mod transport; +pub mod utils; use ironrdp::{gcc, nego}; -pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor}; +pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor, GfxHandler}; pub use crate::codecs::{ErasedWriter, FramedReader}; pub use crate::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; pub use crate::errors::RdpError; +#[derive(Debug, Clone)] pub struct GraphicsConfig { pub avc444: bool, pub h264: bool, @@ -25,6 +26,7 @@ pub struct GraphicsConfig { pub capabilities: u32, } +#[derive(Debug, Clone)] pub struct InputConfig { pub credentials: sspi::AuthIdentity, pub security_protocol: nego::SecurityProtocol, From aa85fe4869aad3a1e1827da8b27145a513ad48ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 19 Dec 2022 11:56:58 -0500 Subject: [PATCH 0097/1273] refactor: split into multiple crates (#57) --- Cargo.toml | 10 +- README.md | 23 + iron-tauri-client/src-tauri/Cargo.toml | 3 +- iron-tauri-client/src-tauri/src/main.rs | 23 +- ironrdp-cli/Cargo.toml | 3 +- ironrdp-cli/src/config.rs | 8 +- ironrdp-cli/src/main.rs | 11 +- ironrdp-core/Cargo.toml | 29 + ironrdp-core/README.md | 3 + {ironrdp => ironrdp-core}/fuzz/.gitignore | 0 {ironrdp => ironrdp-core}/fuzz/Cargo.toml | 0 .../fuzz/fuzz_targets/fuzz_pdu.rs | 0 {ironrdp => ironrdp-core}/src/basic_output.rs | 0 .../src/basic_output/bitmap.rs | 28 +- .../src/basic_output/bitmap/tests.rs | 0 .../src/basic_output/fast_path.rs | 34 +- .../src/basic_output/fast_path/test.rs | 0 .../src/basic_output/surface_commands.rs | 25 +- .../basic_output/surface_commands/tests.rs | 0 {ironrdp => ironrdp-core}/src/ber.rs | 0 {ironrdp => ironrdp-core}/src/ber/tests.rs | 0 {ironrdp => ironrdp-core}/src/codecs.rs | 0 {ironrdp => ironrdp-core}/src/codecs/rfx.rs | 74 +- .../src/codecs/rfx/data_messages.rs | 0 .../src/codecs/rfx/header_messages.rs | 0 .../src/codecs/rfx/tests.rs | 0 ironrdp-core/src/crypto.rs | 2 + .../utils => ironrdp-core/src/crypto}/rc4.rs | 0 .../utils => ironrdp-core/src/crypto}/rsa.rs | 0 {ironrdp => ironrdp-core}/src/gcc.rs | 65 +- .../src/gcc/cluster_data.rs | 18 +- .../src/gcc/cluster_data/test.rs | 0 .../src/gcc/conference_create.rs | 0 .../src/gcc/conference_create/test.rs | 8 +- .../src/gcc/core_data.rs | 32 +- .../src/gcc/core_data/client.rs | 12 +- .../src/gcc/core_data/client/test.rs | 0 .../src/gcc/core_data/server.rs | 0 .../src/gcc/core_data/server/test.rs | 0 .../src/gcc/message_channel_data.rs | 0 .../src/gcc/message_channel_data/test.rs | 0 .../src/gcc/monitor_data.rs | 18 +- .../src/gcc/monitor_data/test.rs | 0 .../src/gcc/monitor_extended_data.rs | 18 +- .../src/gcc/monitor_extended_data/test.rs | 0 .../src/gcc/multi_transport_channel_data.rs | 20 +- .../gcc/multi_transport_channel_data/test.rs | 0 .../src/gcc/network_data.rs | 21 +- .../src/gcc/network_data/test.rs | 0 .../src/gcc/security_data.rs | 22 +- .../src/gcc/security_data/test.rs | 0 .../test.rs => ironrdp-core/src/gcc/tests.rs | 0 ironrdp-core/src/geometry.rs | 95 + {ironrdp => ironrdp-core}/src/input.rs | 22 +- .../src/input/fast_path.rs | 1 - {ironrdp => ironrdp-core}/src/input/mouse.rs | 0 .../src/input/mouse_x.rs | 0 .../src/input/scan_code.rs | 0 {ironrdp => ironrdp-core}/src/input/sync.rs | 0 {ironrdp => ironrdp-core}/src/input/tests.rs | 7 +- .../src/input/unicode.rs | 0 {ironrdp => ironrdp-core}/src/input/unused.rs | 0 ironrdp-core/src/lib.rs | 111 ++ ironrdp-core/src/macros.rs | 23 + {ironrdp => ironrdp-core}/src/mcs.rs | 32 +- .../src/mcs/connect_initial.rs | 0 .../src/mcs/connect_initial/test.rs | 0 .../test.rs => ironrdp-core/src/mcs/tests.rs | 0 {ironrdp => ironrdp-core}/src/nego.rs | 16 +- {ironrdp => ironrdp-core}/src/nego/tests.rs | 0 {ironrdp => ironrdp-core}/src/per.rs | 0 {ironrdp => ironrdp-core}/src/per/test.rs | 0 .../src/preconnection.rs | 24 +- {ironrdp => ironrdp-core}/src/rdp.rs | 60 +- .../src/rdp/capability_sets.rs | 80 +- .../src/rdp/capability_sets/bitmap.rs | 0 .../src/rdp/capability_sets/bitmap/test.rs | 0 .../src/rdp/capability_sets/bitmap_cache.rs | 0 .../rdp/capability_sets/bitmap_cache/test.rs | 0 .../src/rdp/capability_sets/bitmap_codecs.rs | 0 .../rdp/capability_sets/bitmap_codecs/test.rs | 0 .../src/rdp/capability_sets/brush.rs | 0 .../src/rdp/capability_sets/brush/test.rs | 0 .../rdp/capability_sets/frame_acknowledge.rs | 0 .../src/rdp/capability_sets/general.rs | 0 .../src/rdp/capability_sets/general/test.rs | 0 .../src/rdp/capability_sets/glyph_cache.rs | 0 .../rdp/capability_sets/glyph_cache/test.rs | 0 .../src/rdp/capability_sets/input.rs | 4 +- .../src/rdp/capability_sets/input/test.rs | 0 .../src/rdp/capability_sets/large_pointer.rs | 0 .../capability_sets/multifragment_update.rs | 0 .../capability_sets/offscreen_bitmap_cache.rs | 0 .../offscreen_bitmap_cache/test.rs | 0 .../src/rdp/capability_sets/order.rs | 0 .../src/rdp/capability_sets/order/test.rs | 0 .../src/rdp/capability_sets/pointer.rs | 0 .../src/rdp/capability_sets/pointer/test.rs | 0 .../src/rdp/capability_sets/sound.rs | 0 .../src/rdp/capability_sets/sound/test.rs | 0 .../rdp/capability_sets/surface_commands.rs | 2 +- .../capability_sets/surface_commands/test.rs | 0 .../src/rdp/capability_sets/test.rs | 0 .../rdp/capability_sets/virtual_channel.rs | 0 .../capability_sets/virtual_channel/test.rs | 0 .../src/rdp/client_info.rs | 33 +- .../src/rdp/client_info/test.rs | 0 .../src/rdp/finalization_messages.rs | 37 +- {ironrdp => ironrdp-core}/src/rdp/headers.rs | 0 .../src/rdp/server_error_info.rs | 16 +- .../src/rdp/server_license.rs | 84 +- .../client_new_license_request.rs | 6 +- .../client_new_license_request/test.rs | 0 .../client_platform_challenge_response.rs | 6 +- .../test.rs | 0 .../server_license/licensing_error_message.rs | 0 .../licensing_error_message/test.rs | 0 .../server_license/server_license_request.rs | 12 +- .../server_license_request/cert.rs | 0 .../server_license_request/test.rs | 0 .../server_platform_challenge.rs | 0 .../server_platform_challenge/test.rs | 0 .../server_license/server_upgrade_license.rs | 2 +- .../server_upgrade_license/test.rs | 0 .../src/rdp/server_license/test.rs | 0 .../src/rdp/session_info.rs | 34 +- .../src/rdp/session_info/logon_extended.rs | 0 .../src/rdp/session_info/logon_info.rs | 4 +- .../src/rdp/session_info/tests.rs | 0 {ironrdp => ironrdp-core}/src/rdp/test.rs | 0 {ironrdp => ironrdp-core}/src/rdp/vc.rs | 38 +- {ironrdp => ironrdp-core}/src/rdp/vc/dvc.rs | 0 .../src/rdp/vc/dvc/capabilities.rs | 0 .../src/rdp/vc/dvc/capabilities/tests.rs | 0 .../src/rdp/vc/dvc/close.rs | 0 .../src/rdp/vc/dvc/close/tests.rs | 0 .../src/rdp/vc/dvc/create.rs | 0 .../src/rdp/vc/dvc/create/tests.rs | 0 .../src/rdp/vc/dvc/data.rs | 0 .../src/rdp/vc/dvc/data/tests.rs | 0 .../src/rdp/vc/dvc/data_first.rs | 0 .../src/rdp/vc/dvc/data_first/tests.rs | 0 .../src/rdp/vc/dvc/display.rs | 28 +- .../src/rdp/vc/dvc/gfx.rs | 40 +- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 46 +- .../dvc/gfx/graphics_messages/avc_messages.rs | 9 +- .../vc/dvc/gfx/graphics_messages/client.rs | 0 .../vc/dvc/gfx/graphics_messages/server.rs | 0 .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 6 +- .../src/rdp/vc/dvc/gfx/test.rs | 0 .../src/rdp/vc/dvc/tests.rs | 0 {ironrdp => ironrdp-core}/src/rdp/vc/tests.rs | 0 ironrdp-core/src/utils.rs | 94 + {ironrdp => ironrdp-core}/src/x224.rs | 0 {ironrdp => ironrdp-core}/src/x224/tests.rs | 0 ironrdp-devolutions-gateway/Cargo.toml | 11 + ironrdp-devolutions-gateway/README.md | 3 + ironrdp-devolutions-gateway/src/lib.rs | 1 + ironrdp-graphics/Cargo.toml | 24 + ironrdp-graphics/README.md | 3 + .../src}/color_conversion.rs | 5 - .../rfx => ironrdp-graphics/src}/dwt.rs | 5 +- .../src}/image_processing.rs | 8 +- ironrdp-graphics/src/lib.rs | 10 + .../src}/quantization.rs | 2 +- ironrdp-graphics/src/rectangle_processing.rs | 1623 +++++++++++++++++ .../rfx => ironrdp-graphics/src}/rlgr.rs | 19 +- .../src}/subband_reconstruction.rs | 0 ironrdp-graphics/src/utils.rs | 36 + .../src}/zgfx/circular_buffer.rs | 0 .../src}/zgfx/control_messages.rs | 4 +- .../src/zgfx/mod.rs | 812 +++++++-- .../tests/color_conversion.rs | 4 +- .../tests.rs => ironrdp-graphics/tests/dwt.rs | 2 +- .../tests/image_processing.rs | 6 +- .../tests/rlgr.rs | 3 +- ironrdp-gui-client/src/config.rs | 7 +- ironrdp-gui-client/src/gui.rs | 7 +- ironrdp-gui-client/src/gui/input.rs | 196 +- ironrdp-gui-client/src/main.rs | 9 +- ironrdp-input/Cargo.toml | 11 + ironrdp-input/README.md | 3 + ironrdp-input/src/lib.rs | 1 + ironrdp-renderer/Cargo.toml | 9 +- ironrdp-renderer/src/draw.rs | 9 +- ironrdp-renderer/src/renderer.rs | 57 +- ironrdp-renderer/src/surface.rs | 18 +- ironrdp-replay-client/src/main.rs | 26 +- ironrdp-session-async/Cargo.toml | 8 + ironrdp-session-async/README.md | 3 + ironrdp-session-async/src/lib.rs | 1 + ironrdp-session/Cargo.toml | 9 +- ironrdp-session/README.md | 3 + ironrdp-session/src/active_session.rs | 11 +- .../src/active_session/codecs/rfx.rs | 15 +- .../src/active_session/fast_path.rs | 11 +- ironrdp-session/src/active_session/x224.rs | 12 +- .../src/active_session/x224/display.rs | 4 +- .../src/active_session/x224/gfx.rs | 13 +- ironrdp-session/src/codecs.rs | 10 +- ironrdp-session/src/connection_sequence.rs | 84 +- .../src/connection_sequence/user_info.rs | 15 +- ironrdp-session/src/errors.rs | 246 +-- ironrdp-session/src/image.rs | 7 +- ironrdp-session/src/lib.rs | 2 +- ironrdp-session/src/transport.rs | 74 +- ironrdp-session/src/transport/channels.rs | 4 +- ironrdp-session/src/transport/connection.rs | 5 +- ironrdp-tls/Cargo.toml | 11 + ironrdp-tls/README.md | 3 + ironrdp-tls/src/lib.rs | 1 + ironrdp/Cargo.toml | 24 +- ironrdp/README.md | 3 + .../src/codecs/rfx/rectangles_processing.rs | 386 ---- .../codecs/rfx/rectangles_processing/tests.rs | 1236 ------------- ironrdp/src/lib.rs | 112 +- ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs | 452 ----- ironrdp/src/utils.rs | 260 --- 218 files changed, 3669 insertions(+), 3772 deletions(-) create mode 100644 ironrdp-core/Cargo.toml create mode 100644 ironrdp-core/README.md rename {ironrdp => ironrdp-core}/fuzz/.gitignore (100%) rename {ironrdp => ironrdp-core}/fuzz/Cargo.toml (100%) rename {ironrdp => ironrdp-core}/fuzz/fuzz_targets/fuzz_pdu.rs (100%) rename {ironrdp => ironrdp-core}/src/basic_output.rs (100%) rename {ironrdp => ironrdp-core}/src/basic_output/bitmap.rs (90%) rename {ironrdp => ironrdp-core}/src/basic_output/bitmap/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/basic_output/fast_path.rs (88%) rename {ironrdp => ironrdp-core}/src/basic_output/fast_path/test.rs (100%) rename {ironrdp => ironrdp-core}/src/basic_output/surface_commands.rs (93%) rename {ironrdp => ironrdp-core}/src/basic_output/surface_commands/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/ber.rs (100%) rename {ironrdp => ironrdp-core}/src/ber/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/codecs.rs (100%) rename {ironrdp => ironrdp-core}/src/codecs/rfx.rs (76%) rename {ironrdp => ironrdp-core}/src/codecs/rfx/data_messages.rs (100%) rename {ironrdp => ironrdp-core}/src/codecs/rfx/header_messages.rs (100%) rename {ironrdp => ironrdp-core}/src/codecs/rfx/tests.rs (100%) create mode 100644 ironrdp-core/src/crypto.rs rename {ironrdp/src/utils => ironrdp-core/src/crypto}/rc4.rs (100%) rename {ironrdp/src/utils => ironrdp-core/src/crypto}/rsa.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc.rs (87%) rename {ironrdp => ironrdp-core}/src/gcc/cluster_data.rs (83%) rename {ironrdp => ironrdp-core}/src/gcc/cluster_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/conference_create.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/conference_create/test.rs (89%) rename {ironrdp => ironrdp-core}/src/gcc/core_data.rs (64%) rename {ironrdp => ironrdp-core}/src/gcc/core_data/client.rs (97%) rename {ironrdp => ironrdp-core}/src/gcc/core_data/client/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/core_data/server.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/core_data/server/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/message_channel_data.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/message_channel_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/monitor_data.rs (87%) rename {ironrdp => ironrdp-core}/src/gcc/monitor_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/monitor_extended_data.rs (90%) rename {ironrdp => ironrdp-core}/src/gcc/monitor_extended_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/multi_transport_channel_data.rs (74%) rename {ironrdp => ironrdp-core}/src/gcc/multi_transport_channel_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/network_data.rs (91%) rename {ironrdp => ironrdp-core}/src/gcc/network_data/test.rs (100%) rename {ironrdp => ironrdp-core}/src/gcc/security_data.rs (91%) rename {ironrdp => ironrdp-core}/src/gcc/security_data/test.rs (100%) rename ironrdp/src/gcc/test.rs => ironrdp-core/src/gcc/tests.rs (100%) create mode 100644 ironrdp-core/src/geometry.rs rename {ironrdp => ironrdp-core}/src/input.rs (89%) rename {ironrdp => ironrdp-core}/src/input/fast_path.rs (99%) rename {ironrdp => ironrdp-core}/src/input/mouse.rs (100%) rename {ironrdp => ironrdp-core}/src/input/mouse_x.rs (100%) rename {ironrdp => ironrdp-core}/src/input/scan_code.rs (100%) rename {ironrdp => ironrdp-core}/src/input/sync.rs (100%) rename {ironrdp => ironrdp-core}/src/input/tests.rs (96%) rename {ironrdp => ironrdp-core}/src/input/unicode.rs (100%) rename {ironrdp => ironrdp-core}/src/input/unused.rs (100%) create mode 100644 ironrdp-core/src/lib.rs create mode 100644 ironrdp-core/src/macros.rs rename {ironrdp => ironrdp-core}/src/mcs.rs (94%) rename {ironrdp => ironrdp-core}/src/mcs/connect_initial.rs (100%) rename {ironrdp => ironrdp-core}/src/mcs/connect_initial/test.rs (100%) rename ironrdp/src/mcs/test.rs => ironrdp-core/src/mcs/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/nego.rs (97%) rename {ironrdp => ironrdp-core}/src/nego/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/per.rs (100%) rename {ironrdp => ironrdp-core}/src/per/test.rs (100%) rename {ironrdp => ironrdp-core}/src/preconnection.rs (93%) rename {ironrdp => ironrdp-core}/src/rdp.rs (59%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets.rs (91%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap_cache.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap_cache/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap_codecs.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/bitmap_codecs/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/brush.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/brush/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/frame_acknowledge.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/general.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/general/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/glyph_cache.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/glyph_cache/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/input.rs (93%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/input/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/large_pointer.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/multifragment_update.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/offscreen_bitmap_cache.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/order.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/order/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/pointer.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/pointer/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/sound.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/sound/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/surface_commands.rs (93%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/surface_commands/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/virtual_channel.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/capability_sets/virtual_channel/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/client_info.rs (95%) rename {ironrdp => ironrdp-core}/src/rdp/client_info/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/finalization_messages.rs (83%) rename {ironrdp => ironrdp-core}/src/rdp/headers.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_error_info.rs (98%) rename {ironrdp => ironrdp-core}/src/rdp/server_license.rs (78%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/client_new_license_request.rs (98%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/client_new_license_request/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/client_platform_challenge_response.rs (98%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/client_platform_challenge_response/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/licensing_error_message.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/licensing_error_message/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_license_request.rs (96%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_license_request/cert.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_license_request/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_platform_challenge.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_platform_challenge/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_upgrade_license.rs (99%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/server_upgrade_license/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/server_license/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/session_info.rs (79%) rename {ironrdp => ironrdp-core}/src/rdp/session_info/logon_extended.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/session_info/logon_info.rs (96%) rename {ironrdp => ironrdp-core}/src/rdp/session_info/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc.rs (67%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/capabilities.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/capabilities/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/close.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/close/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/create.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/create/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/data.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/data/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/data_first.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/data_first/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/display.rs (94%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx.rs (93%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/graphics_messages.rs (90%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs (97%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/graphics_messages/client.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/graphics_messages/server.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/graphics_messages/test.rs (99%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/gfx/test.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/dvc/tests.rs (100%) rename {ironrdp => ironrdp-core}/src/rdp/vc/tests.rs (100%) create mode 100644 ironrdp-core/src/utils.rs rename {ironrdp => ironrdp-core}/src/x224.rs (100%) rename {ironrdp => ironrdp-core}/src/x224/tests.rs (100%) create mode 100644 ironrdp-devolutions-gateway/Cargo.toml create mode 100644 ironrdp-devolutions-gateway/README.md create mode 100644 ironrdp-devolutions-gateway/src/lib.rs create mode 100644 ironrdp-graphics/Cargo.toml create mode 100644 ironrdp-graphics/README.md rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/color_conversion.rs (95%) rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/dwt.rs (98%) rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/image_processing.rs (98%) create mode 100644 ironrdp-graphics/src/lib.rs rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/quantization.rs (99%) create mode 100644 ironrdp-graphics/src/rectangle_processing.rs rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/rlgr.rs (95%) rename {ironrdp/src/codecs/rfx => ironrdp-graphics/src}/subband_reconstruction.rs (100%) create mode 100644 ironrdp-graphics/src/utils.rs rename {ironrdp/src/rdp/vc/dvc/gfx => ironrdp-graphics/src}/zgfx/circular_buffer.rs (100%) rename {ironrdp/src/rdp/vc/dvc/gfx => ironrdp-graphics/src}/zgfx/control_messages.rs (98%) rename ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs => ironrdp-graphics/src/zgfx/mod.rs (86%) rename ironrdp/src/codecs/rfx/color_conversion/tests.rs => ironrdp-graphics/tests/color_conversion.rs (99%) rename ironrdp/src/codecs/rfx/dwt/tests.rs => ironrdp-graphics/tests/dwt.rs (99%) rename ironrdp/src/codecs/rfx/image_processing/tests.rs => ironrdp-graphics/tests/image_processing.rs (99%) rename ironrdp/src/codecs/rfx/rlgr/tests.rs => ironrdp-graphics/tests/rlgr.rs (99%) create mode 100644 ironrdp-input/Cargo.toml create mode 100644 ironrdp-input/README.md create mode 100644 ironrdp-input/src/lib.rs create mode 100644 ironrdp-session-async/Cargo.toml create mode 100644 ironrdp-session-async/README.md create mode 100644 ironrdp-session-async/src/lib.rs create mode 100644 ironrdp-session/README.md create mode 100644 ironrdp-tls/Cargo.toml create mode 100644 ironrdp-tls/README.md create mode 100644 ironrdp-tls/src/lib.rs create mode 100644 ironrdp/README.md delete mode 100644 ironrdp/src/codecs/rfx/rectangles_processing.rs delete mode 100644 ironrdp/src/codecs/rfx/rectangles_processing/tests.rs delete mode 100644 ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs delete mode 100644 ironrdp/src/utils.rs diff --git a/Cargo.toml b/Cargo.toml index ac99411a..cf4d1970 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,15 @@ [workspace] members = [ "ironrdp", + "ironrdp-core", + "ironrdp-graphics", + "ironrdp-input", "ironrdp-session", - "ironrdp-gui-client", - "ironrdp-cli", + "ironrdp-session-async", + "ironrdp-tls", + "ironrdp-devolutions-gateway", "ironrdp-renderer", + "ironrdp-cli", + "ironrdp-gui-client", "ironrdp-replay-client", ] diff --git a/README.md b/README.md index 30f90859..2b6164a5 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,26 @@ A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on security. +## Architecture (Work In Progress…) + +- `ironrdp`: meta crate re-exporting important crates +- `ironrdp-core`: core, RDP protocol packets encoding and decoding. +- `ironrdp-graphics`: image processing primitives and algorithms (ZGFX, DWT…). +- `ironrdp-input`: helpers to build FastPathInput packets. +- `ironrdp-session`: abstract state machine on top of `ironrdp-graphics`. +- `ironrdp-session-async`: `Future`s built on top of `ironrdp-session`. +- `ironrdp-tls`: TLS boilerplate common with most IronRDP clients. +- `ironrdp-devolutions-gateway`: Devolutions Gateway extensions. +- `ironrdp-renderer`: `glutin` primitives for OpenGL rendering. +- `ironrdp-cli`: basic command-line client mostly for debugging purposes. +- `ironrdp-gui-client`: basic GUI client for IronRDP. +- `ironrdp-replay-client`: utility tool to replay RDP graphics pipeline for debugging purposes. +- `iron-web-client`: web-based frontend using `Angular` and `Material` frameworks). +- `iron-svelte-client`: web-based frontend using `Svelte` and `Material` frameworks). +- `iron-tauri-client`: a native client built with Tauri. Frontend is using the `iron-web-client`/`iron-svelte-client` component. +- `ffi/wasm`: WebAssembly high-level bindings targeting web browsers. + +## Demonstration + +https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4 + diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml index 9d6a61ea..304a0fb7 100644 --- a/iron-tauri-client/src-tauri/Cargo.toml +++ b/iron-tauri-client/src-tauri/Cargo.toml @@ -21,8 +21,7 @@ custom-protocol = [ "tauri/custom-protocol" ] # Protocol ironrdp = { path = "../../ironrdp" } -ironrdp-session = { path = "../../ironrdp-session" } -sspi = "0.4.0" +sspi = "0.4" serde = { version = "1.0", features = ["derive"] } # SSL diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs index 89aa66a7..7ee8b6b4 100644 --- a/iron-tauri-client/src-tauri/src/main.rs +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -1,24 +1,23 @@ #![cfg_attr(all(not(debug_assertions), target_os = "windows"), windows_subsystem = "windows")] -use anyhow::Context as _; -use ironrdp_session::image::DecodedImage; -use ironrdp::codecs::rfx::image_processing::PixelFormat; -use bytes::BytesMut; use core::future::Future; -use ironrdp::input::fast_path::FastPathInput; -use ironrdp_session::{ErasedWriter, FramedReader}; -use ironrdp_session::ConnectionSequenceResult; -use ironrdp_session::InputConfig; -use ironrdp::Rectangle; -use ironrdp_session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; -use serde::Serialize; -use sspi::AuthIdentity; use std::collections::HashMap; use std::io; use std::net::SocketAddr; use std::str::FromStr; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Mutex; + +use anyhow::Context as _; +use bytes::BytesMut; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::input::fast_path::FastPathInput; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ConnectionSequenceResult, ErasedWriter, FramedReader, InputConfig}; +use ironrdp::geometry::Rectangle; +use ironrdp::session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; +use serde::Serialize; +use sspi::AuthIdentity; use tauri::{Manager as _, State}; use tokio::io::AsyncWriteExt as _; use tokio::net::{TcpListener, TcpStream}; diff --git a/ironrdp-cli/Cargo.toml b/ironrdp-cli/Cargo.toml index 484b1643..f758f6f2 100644 --- a/ironrdp-cli/Cargo.toml +++ b/ironrdp-cli/Cargo.toml @@ -18,8 +18,7 @@ native-tls = ["dep:native-tls", "dep:async-native-tls"] # Protocol ironrdp = { path = "../ironrdp" } -ironrdp-session = { path = "../ironrdp-session" } -sspi = "0.4.0" +sspi = "0.4" # CLI clap = { version = "4.0", features = ["derive", "cargo"] } diff --git a/ironrdp-cli/src/config.rs b/ironrdp-cli/src/config.rs index b2b94380..d36bef48 100644 --- a/ironrdp-cli/src/config.rs +++ b/ironrdp-cli/src/config.rs @@ -1,7 +1,9 @@ -use std::{net::SocketAddr, num::ParseIntError}; +use std::net::SocketAddr; +use std::num::ParseIntError; -use clap::{clap_derive::ValueEnum, crate_name, Parser}; -use ironrdp_session::{GraphicsConfig, InputConfig}; +use clap::clap_derive::ValueEnum; +use clap::{crate_name, Parser}; +use ironrdp::session::{GraphicsConfig, InputConfig}; use sspi::AuthIdentity; const DEFAULT_WIDTH: u16 = 1920; diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs index e8504e06..fd1ec415 100644 --- a/ironrdp-cli/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -5,16 +5,19 @@ mod config; use std::io; -use crate::config::Config; use futures_util::io::AsyncWriteExt as _; -use ironrdp::codecs::rfx::image_processing::PixelFormat; -use ironrdp_session::image::DecodedImage; -use ironrdp_session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ + process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream, +}; use tokio::io::AsyncWriteExt as _; use tokio::net::TcpStream; use tokio_util::compat::TokioAsyncReadCompatExt as _; use x509_parser::prelude::{FromDer as _, X509Certificate}; +use crate::config::Config; + #[cfg(feature = "rustls")] type TlsStream = tokio_util::compat::Compat>; diff --git a/ironrdp-core/Cargo.toml b/ironrdp-core/Cargo.toml new file mode 100644 index 00000000..3c07058d --- /dev/null +++ b/ironrdp-core/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "ironrdp-core" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] +description = "A Rust implementation of the Microsoft Remote Desktop Protocol" +keywords = ["rdp", "remote", "desktop", "protocol"] + +[dependencies] +bit_field = "0.10.1" +bitflags = "1.3.2" +bitvec = "1.0.0" +byteorder = "1.4.3" +bytes = "1" +der-parser = "8.0.0" +thiserror = "1.0.37" +lazy_static = "1.4.0" +md-5 = "0.10.1" +num-bigint = "0.4.3" +num-derive = "0.3.3" +num-integer = "0.1.44" +num-traits = "0.2.14" +ring = "0.16.20" +x509-parser = "0.14" +tap = "1.0.1" diff --git a/ironrdp-core/README.md b/ironrdp-core/README.md new file mode 100644 index 00000000..69c177ee --- /dev/null +++ b/ironrdp-core/README.md @@ -0,0 +1,3 @@ +# IronRDP Core + +IronRDP core primitives: mostly RDP protocol packets encoding and decoding. diff --git a/ironrdp/fuzz/.gitignore b/ironrdp-core/fuzz/.gitignore similarity index 100% rename from ironrdp/fuzz/.gitignore rename to ironrdp-core/fuzz/.gitignore diff --git a/ironrdp/fuzz/Cargo.toml b/ironrdp-core/fuzz/Cargo.toml similarity index 100% rename from ironrdp/fuzz/Cargo.toml rename to ironrdp-core/fuzz/Cargo.toml diff --git a/ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs b/ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs similarity index 100% rename from ironrdp/fuzz/fuzz_targets/fuzz_pdu.rs rename to ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs diff --git a/ironrdp/src/basic_output.rs b/ironrdp-core/src/basic_output.rs similarity index 100% rename from ironrdp/src/basic_output.rs rename to ironrdp-core/src/basic_output.rs diff --git a/ironrdp/src/basic_output/bitmap.rs b/ironrdp-core/src/basic_output/bitmap.rs similarity index 90% rename from ironrdp/src/basic_output/bitmap.rs rename to ironrdp-core/src/basic_output/bitmap.rs index cbd11e1a..e8b5d551 100644 --- a/ironrdp/src/basic_output/bitmap.rs +++ b/ironrdp-core/src/basic_output/bitmap.rs @@ -6,10 +6,11 @@ use std::io::{self, Write}; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use thiserror::Error; -use crate::utils::{Rectangle, SplitTo}; -use crate::{impl_from_error, PduBufferParsing, PduParsing}; +use crate::geometry::Rectangle; +use crate::utils::SplitTo; +use crate::{PduBufferParsing, PduParsing}; pub const COMPRESSED_DATA_HEADER_SIZE: usize = 8; pub const BITMAP_DATA_MAIN_DATA_SIZE: usize = 12; @@ -216,23 +217,18 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum BitmapError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid update type for Bitmap Update")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid update type for Bitmap Update")] InvalidUpdateType, - #[fail( - display = "Input buffer len is shorter than the data length: {} < {}", - actual, expected - )] + #[error("Input buffer len is shorter than the data length: {} < {}", actual, expected)] InvalidDataLength { actual: usize, expected: usize }, - #[fail(display = "Compression is not supported for Bitmap data")] + #[error("Compression is not supported for Bitmap data")] NotSupportedCompression, - #[fail(display = "Invalid first row size, expected: {}, but got: {}", actual, expected)] + #[error("Invalid first row size, expected: {}, but got: {}", actual, expected)] InvalidFirstRowSize { actual: usize, expected: usize }, - #[fail(display = "The width of the bitmap must be divisible by 4")] + #[error("The width of the bitmap must be divisible by 4")] InvalidScanWidth, } - -impl_from_error!(io::Error, BitmapError, BitmapError::IOError); diff --git a/ironrdp/src/basic_output/bitmap/tests.rs b/ironrdp-core/src/basic_output/bitmap/tests.rs similarity index 100% rename from ironrdp/src/basic_output/bitmap/tests.rs rename to ironrdp-core/src/basic_output/bitmap/tests.rs diff --git a/ironrdp/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs similarity index 88% rename from ironrdp/src/basic_output/fast_path.rs rename to ironrdp-core/src/basic_output/fast_path.rs index 976803a9..f1691f09 100644 --- a/ironrdp/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -6,14 +6,14 @@ use std::io::{self, Write}; use bit_field::BitField; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; use super::bitmap::{Bitmap, BitmapError}; use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; use crate::utils::SplitTo; -use crate::{impl_from_error, per, PduBufferParsing, PduParsing}; +use crate::{per, PduBufferParsing, PduParsing}; /// Implements the Fast-Path RDP message header PDU. #[derive(Debug, Clone, PartialEq, Eq)] @@ -246,30 +246,26 @@ bitflags! { } /// The type of a Fast-Path parsing error. Includes *length error* and *I/O error*. -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum FastPathError { /// May be used in I/O related errors such as receiving empty Fast-Path packages. - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Surface Commands error: {}", _0)] - SurfaceCommandsError(#[fail(cause)] SurfaceCommandsError), - #[fail(display = "Bitmap error: {}", _0)] - BitmapError(#[fail(cause)] BitmapError), + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Surface Commands error")] + SurfaceCommandsError(#[from] SurfaceCommandsError), + #[error("Bitmap error: {0}")] + BitmapError(#[from] BitmapError), /// Used in the length-related error during Fast-Path parsing. - #[fail(display = "Received invalid Fast-Path package with 0 length")] + #[error("Received invalid Fast-Path package with 0 length")] NullLength { bytes_read: usize }, - #[fail(display = "Received invalid update code: {}", _0)] + #[error("Received invalid update code: {0}")] InvalidUpdateCode(u8), - #[fail(display = "Received invalid fragmentation: {}", _0)] + #[error("Received invalid fragmentation: {0}")] InvalidFragmentation(u8), - #[fail(display = "Received compressed Fast-Path package")] + #[error("Received compressed Fast-Path package")] CompressionNotSupported, - #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] + #[error("Input buffer is shorter then the data length: {} < {}", actual, expected)] InvalidDataLength { expected: usize, actual: usize }, - #[fail(display = "Received unsupported Fast-Path Update: {:?}", _0)] + #[error("Received unsupported Fast-Path Update: {0:?}")] UnsupportedFastPathUpdate(UpdateCode), } - -impl_from_error!(io::Error, FastPathError, FastPathError::IOError); -impl_from_error!(SurfaceCommandsError, FastPathError, FastPathError::SurfaceCommandsError); -impl_from_error!(BitmapError, FastPathError, FastPathError::BitmapError); diff --git a/ironrdp/src/basic_output/fast_path/test.rs b/ironrdp-core/src/basic_output/fast_path/test.rs similarity index 100% rename from ironrdp/src/basic_output/fast_path/test.rs rename to ironrdp-core/src/basic_output/fast_path/test.rs diff --git a/ironrdp/src/basic_output/surface_commands.rs b/ironrdp-core/src/basic_output/surface_commands.rs similarity index 93% rename from ironrdp/src/basic_output/surface_commands.rs rename to ironrdp-core/src/basic_output/surface_commands.rs index ac1855a1..5c655072 100644 --- a/ironrdp/src/basic_output/surface_commands.rs +++ b/ironrdp-core/src/basic_output/surface_commands.rs @@ -4,13 +4,14 @@ mod tests; use std::io::{self, Write}; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::utils::{Rectangle, SplitTo}; -use crate::{impl_from_error, PduBufferParsing, PduParsing}; +use crate::geometry::Rectangle; +use crate::utils::SplitTo; +use crate::{PduBufferParsing, PduParsing}; pub const SURFACE_COMMAND_HEADER_SIZE: usize = 2; @@ -270,16 +271,14 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum SurfaceCommandsError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid Surface Command type: {}", _0)] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid Surface Command type: {0}")] InvalidSurfaceCommandType(u16), - #[fail(display = "Invalid Frame Marker action: {}", _0)] + #[error("Invalid Frame Marker action: {0}")] InvalidFrameAction(u16), - #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] + #[error("Input buffer is shorter then the data length: {actual} < {expected}")] InvalidDataLength { expected: usize, actual: usize }, } - -impl_from_error!(io::Error, SurfaceCommandsError, SurfaceCommandsError::IOError); diff --git a/ironrdp/src/basic_output/surface_commands/tests.rs b/ironrdp-core/src/basic_output/surface_commands/tests.rs similarity index 100% rename from ironrdp/src/basic_output/surface_commands/tests.rs rename to ironrdp-core/src/basic_output/surface_commands/tests.rs diff --git a/ironrdp/src/ber.rs b/ironrdp-core/src/ber.rs similarity index 100% rename from ironrdp/src/ber.rs rename to ironrdp-core/src/ber.rs diff --git a/ironrdp/src/ber/tests.rs b/ironrdp-core/src/ber/tests.rs similarity index 100% rename from ironrdp/src/ber/tests.rs rename to ironrdp-core/src/ber/tests.rs diff --git a/ironrdp/src/codecs.rs b/ironrdp-core/src/codecs.rs similarity index 100% rename from ironrdp/src/codecs.rs rename to ironrdp-core/src/codecs.rs diff --git a/ironrdp/src/codecs/rfx.rs b/ironrdp-core/src/codecs/rfx.rs similarity index 76% rename from ironrdp/src/codecs/rfx.rs rename to ironrdp-core/src/codecs/rfx.rs index 02b0347d..a26707a8 100644 --- a/ironrdp/src/codecs/rfx.rs +++ b/ironrdp-core/src/codecs/rfx.rs @@ -6,26 +6,17 @@ mod tests; use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; - -use crate::{impl_from_error, PduBufferParsing, PduParsing}; -pub mod color_conversion; -pub mod dwt; -pub mod image_processing; -pub mod quantization; -pub mod rectangles_processing; -pub mod rlgr; -pub mod subband_reconstruction; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; pub use self::data_messages::{ ContextPdu, EntropyAlgorithm, FrameBeginPdu, FrameEndPdu, OperatingMode, Quant, RegionPdu, RfxRectangle, Tile, TileSetPdu, }; pub use self::header_messages::{Channel, ChannelsPdu, CodecVersionsPdu, SyncPdu}; -pub use self::rlgr::RlgrError; +use crate::{PduBufferParsing, PduParsing}; const BLOCK_HEADER_SIZE: usize = 6; const CODEC_CHANNEL_HEADER_SIZE: usize = 2; @@ -211,59 +202,54 @@ pub enum BlockType { Extension = 0xCCC7, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum RfxError { - #[fail(display = "IO error: {}", _0)] - IoError(#[fail(cause)] io::Error), - #[fail(display = "Got invalid block type: {}", _0)] + #[error("IO error")] + IoError(#[from] io::Error), + #[error("Got invalid block type: {0}")] InvalidBlockType(u16), - #[fail( - display = "Got unexpected Block type: expected ({:?}) != actual({:?})", - expected, actual - )] + #[error("Got unexpected Block type: expected ({expected:?}) != actual({actual:?})")] UnexpectedBlockType { expected: BlockType, actual: BlockType }, - #[fail(display = "Got unexpected Block type ({:?}) while was expected header message", _0)] + #[error("Got unexpected Block type ({0:?}) while was expected header message")] InvalidHeaderBlockType(BlockType), - #[fail(display = "Got invalid block length: {}", _0)] + #[error("Got invalid block length: {0}")] InvalidBlockLength(usize), - #[fail(display = "Got invalid Sync magic number: {}", _0)] + #[error("Got invalid Sync magic number: {0}")] InvalidMagicNumber(u32), - #[fail(display = "Got invalid Sync version: {}", _0)] + #[error("Got invalid Sync version: {0}")] InvalidSyncVersion(u16), - #[fail(display = "Got invalid codecs number: {}", _0)] + #[error("Got invalid codecs number: {0}")] InvalidCodecsNumber(u8), - #[fail(display = "Got invalid codec ID: {}", _0)] + #[error("Got invalid codec ID: {0}")] InvalidCodecId(u8), - #[fail(display = "Got invalid codec version: {}", _0)] + #[error("Got invalid codec version: {0}")] InvalidCodecVersion(u16), - #[fail(display = "Got invalid channel ID: {}", _0)] + #[error("Got invalid channel ID: {0}")] InvalidChannelId(u8), - #[fail(display = "Got invalid context ID: {}", _0)] + #[error("Got invalid context ID: {0}")] InvalidContextId(u8), - #[fail(display = "Got invalid context tile size: {}", _0)] + #[error("Got invalid context tile size: {0}")] InvalidTileSize(u16), - #[fail(display = "Got invalid conversion transform: {}", _0)] + #[error("Got invalid conversion transform: {0}")] InvalidColorConversionTransform(u16), - #[fail(display = "Got invalid DWT: {}", _0)] + #[error("Got invalid DWT: {0}")] InvalidDwt(u16), - #[fail(display = "Got invalid entropy algorithm: {}", _0)] + #[error("Got invalid entropy algorithm: {0}")] InvalidEntropyAlgorithm(u16), - #[fail(display = "Got invalid quantization type: {}", _0)] + #[error("Got invalid quantization type: {0}")] InvalidQuantizationType(u16), - #[fail(display = "Input buffer is shorter then the data length: {} < {}", actual, expected)] + #[error("Input buffer is shorter then the data length: {actual} < {expected}")] InvalidDataLength { expected: usize, actual: usize }, - #[fail(display = "Got invalid Region LRF: {}", _0)] + #[error("Got invalid Region LRF: {0}")] InvalidLrf(bool), - #[fail(display = "Got invalid Region type: {}", _0)] + #[error("Got invalid Region type: {0}")] InvalidRegionType(u16), - #[fail(display = "Got invalid number of tilesets: {}", _0)] + #[error("Got invalid number of tilesets: {0}")] InvalidNumberOfTilesets(u16), - #[fail(display = "Got invalid ID of context: {}", _0)] + #[error("Got invalid ID of context: {0}")] InvalidIdOfContext(u16), - #[fail(display = "Got invalid TileSet subtype: {}", _0)] + #[error("Got invalid TileSet subtype: {0}")] InvalidSubtype(u16), - #[fail(display = "Got invalid IT flag of TileSet: {}", _0)] + #[error("Got invalid IT flag of TileSet: {0}")] InvalidItFlag(bool), } - -impl_from_error!(io::Error, RfxError, RfxError::IoError); diff --git a/ironrdp/src/codecs/rfx/data_messages.rs b/ironrdp-core/src/codecs/rfx/data_messages.rs similarity index 100% rename from ironrdp/src/codecs/rfx/data_messages.rs rename to ironrdp-core/src/codecs/rfx/data_messages.rs diff --git a/ironrdp/src/codecs/rfx/header_messages.rs b/ironrdp-core/src/codecs/rfx/header_messages.rs similarity index 100% rename from ironrdp/src/codecs/rfx/header_messages.rs rename to ironrdp-core/src/codecs/rfx/header_messages.rs diff --git a/ironrdp/src/codecs/rfx/tests.rs b/ironrdp-core/src/codecs/rfx/tests.rs similarity index 100% rename from ironrdp/src/codecs/rfx/tests.rs rename to ironrdp-core/src/codecs/rfx/tests.rs diff --git a/ironrdp-core/src/crypto.rs b/ironrdp-core/src/crypto.rs new file mode 100644 index 00000000..aa76b1e3 --- /dev/null +++ b/ironrdp-core/src/crypto.rs @@ -0,0 +1,2 @@ +pub(crate) mod rc4; +pub(crate) mod rsa; diff --git a/ironrdp/src/utils/rc4.rs b/ironrdp-core/src/crypto/rc4.rs similarity index 100% rename from ironrdp/src/utils/rc4.rs rename to ironrdp-core/src/crypto/rc4.rs diff --git a/ironrdp/src/utils/rsa.rs b/ironrdp-core/src/crypto/rsa.rs similarity index 100% rename from ironrdp/src/utils/rsa.rs rename to ironrdp-core/src/crypto/rsa.rs diff --git a/ironrdp/src/gcc.rs b/ironrdp-core/src/gcc.rs similarity index 87% rename from ironrdp/src/gcc.rs rename to ironrdp-core/src/gcc.rs index 2cd0771b..d69ae721 100644 --- a/ironrdp/src/gcc.rs +++ b/ironrdp-core/src/gcc.rs @@ -1,14 +1,14 @@ use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[cfg(test)] -pub mod test; +pub mod tests; pub mod conference_create; pub(crate) mod monitor_data; @@ -368,45 +368,32 @@ impl PduParsing for UserDataHeader { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum GccError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Core data block error: {}", _0)] - CoreError(#[fail(cause)] CoreDataError), - #[fail(display = "Security data block error: {}", _0)] - SecurityError(#[fail(cause)] SecurityDataError), - #[fail(display = "Network data block error: {}", _0)] - NetworkError(#[fail(cause)] NetworkDataError), - #[fail(display = "Cluster data block error: {}", _0)] - ClusterError(#[fail(cause)] ClusterDataError), - #[fail(display = "Monitor data block error: {}", _0)] - MonitorError(#[fail(cause)] MonitorDataError), - #[fail(display = "Multi-transport channel data block error: {}", _0)] - MultiTransportChannelError(#[fail(cause)] MultiTransportChannelDataError), - #[fail(display = "Monitor extended data block error: {}", _0)] - MonitorExtendedError(#[fail(cause)] MonitorExtendedDataError), - #[fail(display = "Invalid GCC block type")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Core data block error")] + CoreError(#[from] CoreDataError), + #[error("Security data block error")] + SecurityError(#[from] SecurityDataError), + #[error("Network data block error")] + NetworkError(#[from] NetworkDataError), + #[error("Cluster data block error")] + ClusterError(#[from] ClusterDataError), + #[error("Monitor data block error")] + MonitorError(#[from] MonitorDataError), + #[error("Multi-transport channel data block error")] + MultiTransportChannelError(#[from] MultiTransportChannelDataError), + #[error("Monitor extended data block error")] + MonitorExtendedError(#[from] MonitorExtendedDataError), + #[error("Invalid GCC block type")] InvalidGccType, - #[fail(display = "Invalid conference create request: {}", _0)] + #[error("Invalid conference create request: {0}")] InvalidConferenceCreateRequest(String), - #[fail(display = "Invalid Conference create response: {}", _0)] + #[error("Invalid Conference create response: {0}")] InvalidConferenceCreateResponse(String), - #[fail(display = "A server did not send the required GCC data block: {:?}", _0)] + #[error("A server did not send the required GCC data block: {0:?}")] RequiredClientDataBlockIsAbsent(ClientGccType), - #[fail(display = "A client did not send the required GCC data block: {:?}", _0)] + #[error("A client did not send the required GCC data block: {0:?}")] RequiredServerDataBlockIsAbsent(ServerGccType), } - -impl_from_error!(io::Error, GccError, GccError::IOError); -impl_from_error!(CoreDataError, GccError, GccError::CoreError); -impl_from_error!(SecurityDataError, GccError, GccError::SecurityError); -impl_from_error!(NetworkDataError, GccError, GccError::NetworkError); -impl_from_error!(ClusterDataError, GccError, GccError::ClusterError); -impl_from_error!(MonitorDataError, GccError, GccError::MonitorError); -impl_from_error!( - MultiTransportChannelDataError, - GccError, - GccError::MultiTransportChannelError -); -impl_from_error!(MonitorExtendedDataError, GccError, GccError::MonitorExtendedError); diff --git a/ironrdp/src/gcc/cluster_data.rs b/ironrdp-core/src/gcc/cluster_data.rs similarity index 83% rename from ironrdp/src/gcc/cluster_data.rs rename to ironrdp-core/src/gcc/cluster_data.rs index e7d679f4..cfc28b30 100644 --- a/ironrdp/src/gcc/cluster_data.rs +++ b/ironrdp-core/src/gcc/cluster_data.rs @@ -4,12 +4,12 @@ pub mod test; use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const REDIRECTION_VERSION_MASK: u32 = 0x0000_003C; @@ -75,12 +75,10 @@ pub enum RedirectionVersion { V6 = 5, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum ClusterDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid redirection flags field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid redirection flags field")] InvalidRedirectionFlags, } - -impl_from_error!(io::Error, ClusterDataError, ClusterDataError::IOError); diff --git a/ironrdp/src/gcc/cluster_data/test.rs b/ironrdp-core/src/gcc/cluster_data/test.rs similarity index 100% rename from ironrdp/src/gcc/cluster_data/test.rs rename to ironrdp-core/src/gcc/cluster_data/test.rs diff --git a/ironrdp/src/gcc/conference_create.rs b/ironrdp-core/src/gcc/conference_create.rs similarity index 100% rename from ironrdp/src/gcc/conference_create.rs rename to ironrdp-core/src/gcc/conference_create.rs diff --git a/ironrdp/src/gcc/conference_create/test.rs b/ironrdp-core/src/gcc/conference_create/test.rs similarity index 89% rename from ironrdp/src/gcc/conference_create/test.rs rename to ironrdp-core/src/gcc/conference_create/test.rs index efe29cb1..9e1d8b20 100644 --- a/ironrdp/src/gcc/conference_create/test.rs +++ b/ironrdp-core/src/gcc/conference_create/test.rs @@ -14,21 +14,21 @@ const CONFERENCE_CREATE_RESPONSE_PREFIX_BUFFER: [u8; 24] = [ lazy_static! { pub static ref CONFERENCE_CREATE_REQUEST: ConferenceCreateRequest = ConferenceCreateRequest { - gcc_blocks: gcc::test::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD.clone(), + gcc_blocks: gcc::tests::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD.clone(), }; pub static ref CONFERENCE_CREATE_RESPONSE: ConferenceCreateResponse = ConferenceCreateResponse { user_id: 0x79f3, - gcc_blocks: gcc::test::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS.clone(), + gcc_blocks: gcc::tests::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS.clone(), }; pub static ref CONFERENCE_CREATE_REQUEST_BUFFER: Vec = { let mut buffer = CONFERENCE_CREATE_REQUEST_PREFIX_BUFFER.to_vec(); - buffer.extend(gcc::test::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD_BUFFER.as_slice()); + buffer.extend(gcc::tests::CLIENT_GCC_WITH_CLUSTER_OPTIONAL_FIELD_BUFFER.as_slice()); buffer }; pub static ref CONFERENCE_CREATE_RESPONSE_BUFFER: Vec = { let mut buffer = CONFERENCE_CREATE_RESPONSE_PREFIX_BUFFER.to_vec(); - buffer.extend(gcc::test::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS_BUFFER.as_slice()); + buffer.extend(gcc::tests::SERVER_GCC_WITHOUT_OPTIONAL_FIELDS_BUFFER.as_slice()); buffer }; diff --git a/ironrdp/src/gcc/core_data.rs b/ironrdp-core/src/gcc/core_data.rs similarity index 64% rename from ironrdp/src/gcc/core_data.rs rename to ironrdp-core/src/gcc/core_data.rs index fb9d768b..8392fc7e 100644 --- a/ironrdp/src/gcc/core_data.rs +++ b/ironrdp-core/src/gcc/core_data.rs @@ -3,9 +3,7 @@ pub mod server; use std::io; -use failure::Fail; - -use crate::impl_from_error; +use thiserror::Error; const VERSION_SIZE: usize = 4; @@ -43,30 +41,28 @@ impl RdpVersion { pub const V10_12: Self = Self(0x0008_0011); } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum CoreDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid version field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid version field")] InvalidVersion, - #[fail(display = "Invalid color depth field")] + #[error("Invalid color depth field")] InvalidColorDepth, - #[fail(display = "Invalid post beta color depth field")] + #[error("Invalid post beta color depth field")] InvalidPostBetaColorDepth, - #[fail(display = "Invalid high color depth field")] + #[error("Invalid high color depth field")] InvalidHighColorDepth, - #[fail(display = "Invalid supported color depths field")] + #[error("Invalid supported color depths field")] InvalidSupportedColorDepths, - #[fail(display = "Invalid secure access sequence field")] + #[error("Invalid secure access sequence field")] InvalidSecureAccessSequence, - #[fail(display = "Invalid keyboard type field")] + #[error("Invalid keyboard type field")] InvalidKeyboardType, - #[fail(display = "Invalid early capability flags field")] + #[error("Invalid early capability flags field")] InvalidEarlyCapabilityFlags, - #[fail(display = "Invalid connection type field")] + #[error("Invalid connection type field")] InvalidConnectionType, - #[fail(display = "Invalid server security protocol field")] + #[error("Invalid server security protocol field")] InvalidServerSecurityProtocol, } - -impl_from_error!(io::Error, CoreDataError, CoreDataError::IOError); diff --git a/ironrdp/src/gcc/core_data/client.rs b/ironrdp-core/src/gcc/core_data/client.rs similarity index 97% rename from ironrdp/src/gcc/core_data/client.rs rename to ironrdp-core/src/gcc/core_data/client.rs index 8d476b04..23d431ee 100644 --- a/ironrdp/src/gcc/core_data/client.rs +++ b/ironrdp-core/src/gcc/core_data/client.rs @@ -98,7 +98,7 @@ impl PduParsing for ClientCoreData { let mut client_name_buffer = [0; CLIENT_NAME_SIZE]; buffer.read_exact(&mut client_name_buffer)?; - let client_name = utils::bytes_to_utf16_string(client_name_buffer.as_ref()) + let client_name = utils::from_utf16_bytes(client_name_buffer.as_ref()) .trim_end_matches('\u{0}') .into(); @@ -111,7 +111,7 @@ impl PduParsing for ClientCoreData { let mut ime_file_name_buffer = [0; IME_FILE_NAME_SIZE]; buffer.read_exact(&mut ime_file_name_buffer)?; - let ime_file_name = utils::bytes_to_utf16_string(ime_file_name_buffer.as_ref()) + let ime_file_name = utils::from_utf16_bytes(ime_file_name_buffer.as_ref()) .trim_end_matches('\u{0}') .into(); @@ -135,9 +135,9 @@ impl PduParsing for ClientCoreData { } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - let mut client_name_buffer = utils::string_to_utf16(self.client_name.as_ref()); + let mut client_name_buffer = utils::to_utf16_bytes(self.client_name.as_ref()); client_name_buffer.resize(CLIENT_NAME_SIZE - 2, 0); - let mut ime_file_name_buffer = utils::string_to_utf16(self.ime_file_name.as_ref()); + let mut ime_file_name_buffer = utils::to_utf16_bytes(self.ime_file_name.as_ref()); ime_file_name_buffer.resize(IME_FILE_NAME_SIZE - 2, 0); buffer.write_u32::(self.version.0)?; @@ -225,7 +225,7 @@ impl PduParsing for ClientCoreOptionalData { let mut dig_product_id_buffer = [0; DIG_PRODUCT_ID_SIZE]; try_read_optional!(buffer.read_exact(&mut dig_product_id_buffer), optional_data); optional_data.dig_product_id = Some( - utils::bytes_to_utf16_string(dig_product_id_buffer.as_ref()) + utils::from_utf16_bytes(dig_product_id_buffer.as_ref()) .trim_end_matches('\u{0}') .into(), ); @@ -278,7 +278,7 @@ impl PduParsing for ClientCoreOptionalData { .write_u16::(value.bits())); try_write_optional!(self.dig_product_id, |value: &str| { - let mut dig_product_id_buffer = utils::string_to_utf16(value); + let mut dig_product_id_buffer = utils::to_utf16_bytes(value); dig_product_id_buffer.resize(DIG_PRODUCT_ID_SIZE - 2, 0); dig_product_id_buffer.extend_from_slice([0; 2].as_ref()); // UTF-16 null terminator diff --git a/ironrdp/src/gcc/core_data/client/test.rs b/ironrdp-core/src/gcc/core_data/client/test.rs similarity index 100% rename from ironrdp/src/gcc/core_data/client/test.rs rename to ironrdp-core/src/gcc/core_data/client/test.rs diff --git a/ironrdp/src/gcc/core_data/server.rs b/ironrdp-core/src/gcc/core_data/server.rs similarity index 100% rename from ironrdp/src/gcc/core_data/server.rs rename to ironrdp-core/src/gcc/core_data/server.rs diff --git a/ironrdp/src/gcc/core_data/server/test.rs b/ironrdp-core/src/gcc/core_data/server/test.rs similarity index 100% rename from ironrdp/src/gcc/core_data/server/test.rs rename to ironrdp-core/src/gcc/core_data/server/test.rs diff --git a/ironrdp/src/gcc/message_channel_data.rs b/ironrdp-core/src/gcc/message_channel_data.rs similarity index 100% rename from ironrdp/src/gcc/message_channel_data.rs rename to ironrdp-core/src/gcc/message_channel_data.rs diff --git a/ironrdp/src/gcc/message_channel_data/test.rs b/ironrdp-core/src/gcc/message_channel_data/test.rs similarity index 100% rename from ironrdp/src/gcc/message_channel_data/test.rs rename to ironrdp-core/src/gcc/message_channel_data/test.rs diff --git a/ironrdp/src/gcc/monitor_data.rs b/ironrdp-core/src/gcc/monitor_data.rs similarity index 87% rename from ironrdp/src/gcc/monitor_data.rs rename to ironrdp-core/src/gcc/monitor_data.rs index 4d650c97..eda0df90 100644 --- a/ironrdp/src/gcc/monitor_data.rs +++ b/ironrdp-core/src/gcc/monitor_data.rs @@ -4,10 +4,10 @@ pub mod test; use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; pub const MONITOR_COUNT_SIZE: usize = 4; pub const MONITOR_SIZE: usize = 20; @@ -102,14 +102,12 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum MonitorDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid monitor count field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid monitor count field")] InvalidMonitorCount, - #[fail(display = "Invalid monitor flags field")] + #[error("Invalid monitor flags field")] InvalidMonitorFlags, } - -impl_from_error!(io::Error, MonitorDataError, MonitorDataError::IOError); diff --git a/ironrdp/src/gcc/monitor_data/test.rs b/ironrdp-core/src/gcc/monitor_data/test.rs similarity index 100% rename from ironrdp/src/gcc/monitor_data/test.rs rename to ironrdp-core/src/gcc/monitor_data/test.rs diff --git a/ironrdp/src/gcc/monitor_extended_data.rs b/ironrdp-core/src/gcc/monitor_extended_data.rs similarity index 90% rename from ironrdp/src/gcc/monitor_extended_data.rs rename to ironrdp-core/src/gcc/monitor_extended_data.rs index a592aeed..dc040f1a 100644 --- a/ironrdp/src/gcc/monitor_extended_data.rs +++ b/ironrdp-core/src/gcc/monitor_extended_data.rs @@ -4,11 +4,11 @@ pub mod test; use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const MONITOR_COUNT_MAX: usize = 16; const MONITOR_ATTRIBUTE_SIZE: u32 = 20; @@ -117,16 +117,14 @@ pub enum MonitorOrientation { PortraitFlipped = 270, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum MonitorExtendedDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid monitor attribute size field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid monitor attribute size field")] InvalidMonitorAttributeSize, - #[fail(display = "Invalid monitor orientation field")] + #[error("Invalid monitor orientation field")] InvalidMonitorOrientation, - #[fail(display = "Invalid monitor count field")] + #[error("Invalid monitor count field")] InvalidMonitorCount, } - -impl_from_error!(io::Error, MonitorExtendedDataError, MonitorExtendedDataError::IOError); diff --git a/ironrdp/src/gcc/monitor_extended_data/test.rs b/ironrdp-core/src/gcc/monitor_extended_data/test.rs similarity index 100% rename from ironrdp/src/gcc/monitor_extended_data/test.rs rename to ironrdp-core/src/gcc/monitor_extended_data/test.rs diff --git a/ironrdp/src/gcc/multi_transport_channel_data.rs b/ironrdp-core/src/gcc/multi_transport_channel_data.rs similarity index 74% rename from ironrdp/src/gcc/multi_transport_channel_data.rs rename to ironrdp-core/src/gcc/multi_transport_channel_data.rs index 4fc6285f..4a2cb6c0 100644 --- a/ironrdp/src/gcc/multi_transport_channel_data.rs +++ b/ironrdp-core/src/gcc/multi_transport_channel_data.rs @@ -4,10 +4,10 @@ pub mod test; use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const FLAGS_SIZE: usize = 4; @@ -45,16 +45,10 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum MultiTransportChannelDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid flags field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid flags field")] InvalidMultiTransportFlags, } - -impl_from_error!( - io::Error, - MultiTransportChannelDataError, - MultiTransportChannelDataError::IOError -); diff --git a/ironrdp/src/gcc/multi_transport_channel_data/test.rs b/ironrdp-core/src/gcc/multi_transport_channel_data/test.rs similarity index 100% rename from ironrdp/src/gcc/multi_transport_channel_data/test.rs rename to ironrdp-core/src/gcc/multi_transport_channel_data/test.rs diff --git a/ironrdp/src/gcc/network_data.rs b/ironrdp-core/src/gcc/network_data.rs similarity index 91% rename from ironrdp/src/gcc/network_data.rs rename to ironrdp-core/src/gcc/network_data.rs index 93322781..3918456e 100644 --- a/ironrdp/src/gcc/network_data.rs +++ b/ironrdp-core/src/gcc/network_data.rs @@ -6,10 +6,10 @@ use std::str; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_integer::Integer; +use thiserror::Error; -use crate::{impl_from_error, try_read_optional, PduParsing}; +use crate::{try_read_optional, PduParsing}; const CHANNELS_MAX: usize = 31; @@ -176,17 +176,14 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum NetworkDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "UTF-8 error: {}", _0)] - Utf8Error(#[fail(cause)] str::Utf8Error), - #[fail(display = "Invalid channel options field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("UTF-8 error")] + Utf8Error(#[from] str::Utf8Error), + #[error("Invalid channel options field")] InvalidChannelOptions, - #[fail(display = "Invalid channel count field")] + #[error("Invalid channel count field")] InvalidChannelCount, } - -impl_from_error!(io::Error, NetworkDataError, NetworkDataError::IOError); -impl_from_error!(str::Utf8Error, NetworkDataError, NetworkDataError::Utf8Error); diff --git a/ironrdp/src/gcc/network_data/test.rs b/ironrdp-core/src/gcc/network_data/test.rs similarity index 100% rename from ironrdp/src/gcc/network_data/test.rs rename to ironrdp-core/src/gcc/network_data/test.rs diff --git a/ironrdp/src/gcc/security_data.rs b/ironrdp-core/src/gcc/security_data.rs similarity index 91% rename from ironrdp/src/gcc/security_data.rs rename to ironrdp-core/src/gcc/security_data.rs index 0f6d53fa..97512805 100644 --- a/ironrdp/src/gcc/security_data.rs +++ b/ironrdp-core/src/gcc/security_data.rs @@ -5,11 +5,11 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const CLIENT_ENCRYPTION_METHODS_SIZE: usize = 4; const CLIENT_EXT_ENCRYPTION_METHODS_SIZE: usize = 4; @@ -183,20 +183,18 @@ pub enum EncryptionLevel { Fips = 4, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum SecurityDataError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid encryption methods field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid encryption methods field")] InvalidEncryptionMethod, - #[fail(display = "Invalid encryption level field")] + #[error("Invalid encryption level field")] InvalidEncryptionLevel, - #[fail(display = "Invalid server random length field: {}", _0)] + #[error("Invalid server random length field: {0}")] InvalidServerRandomLen(u32), - #[fail(display = "Invalid input: {}", _0)] + #[error("Invalid input: {0}")] InvalidInput(String), - #[fail(display = "Invalid server certificate length: {}", _0)] + #[error("Invalid server certificate length: {0}")] InvalidServerCertificateLen(u32), } - -impl_from_error!(io::Error, SecurityDataError, SecurityDataError::IOError); diff --git a/ironrdp/src/gcc/security_data/test.rs b/ironrdp-core/src/gcc/security_data/test.rs similarity index 100% rename from ironrdp/src/gcc/security_data/test.rs rename to ironrdp-core/src/gcc/security_data/test.rs diff --git a/ironrdp/src/gcc/test.rs b/ironrdp-core/src/gcc/tests.rs similarity index 100% rename from ironrdp/src/gcc/test.rs rename to ironrdp-core/src/gcc/tests.rs diff --git a/ironrdp-core/src/geometry.rs b/ironrdp-core/src/geometry.rs new file mode 100644 index 00000000..e5343615 --- /dev/null +++ b/ironrdp-core/src/geometry.rs @@ -0,0 +1,95 @@ +use std::cmp::{max, min}; +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Rectangle { + pub left: u16, + pub top: u16, + pub right: u16, + pub bottom: u16, +} + +impl Rectangle { + pub fn empty() -> Self { + Self { + left: 0, + top: 0, + right: 0, + bottom: 0, + } + } + + pub fn width(&self) -> u16 { + self.right - self.left + } + + pub fn height(&self) -> u16 { + self.bottom - self.top + } + + pub fn union_all(rectangles: &[Self]) -> Self { + Self { + left: rectangles.iter().map(|r| r.left).min().unwrap_or(0), + top: rectangles.iter().map(|r| r.top).min().unwrap_or(0), + right: rectangles.iter().map(|r| r.right).max().unwrap_or(0), + bottom: rectangles.iter().map(|r| r.bottom).max().unwrap_or(0), + } + } + + pub fn intersect(&self, other: &Self) -> Option { + let result = Self { + left: max(self.left, other.left), + top: max(self.top, other.top), + right: min(self.right, other.right), + bottom: min(self.bottom, other.bottom), + }; + + if result.left < result.right && result.top < result.bottom { + Some(result) + } else { + None + } + } + + pub fn union(&self, other: &Self) -> Self { + Self { + left: min(self.left, other.left), + top: min(self.top, other.top), + right: max(self.right, other.right), + bottom: max(self.bottom, other.bottom), + } + } +} + +impl crate::PduParsing for Rectangle { + type Error = io::Error; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let left = stream.read_u16::()?; + let top = stream.read_u16::()?; + let right = stream.read_u16::()?; + let bottom = stream.read_u16::()?; + + Ok(Self { + left, + top, + right, + bottom, + }) + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + stream.write_u16::(self.left)?; + stream.write_u16::(self.top)?; + stream.write_u16::(self.right)?; + stream.write_u16::(self.bottom)?; + + Ok(()) + } + + fn buffer_length(&self) -> usize { + 8 + } +} diff --git a/ironrdp/src/input.rs b/ironrdp-core/src/input.rs similarity index 89% rename from ironrdp/src/input.rs rename to ironrdp-core/src/input.rs index 13c2f2e0..f36e36c7 100644 --- a/ironrdp/src/input.rs +++ b/ironrdp-core/src/input.rs @@ -1,11 +1,11 @@ use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[cfg(test)] mod tests; @@ -137,20 +137,18 @@ impl From<&InputEvent> for InputEventType { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum InputEventError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid Input Event type: {}", _0)] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid Input Event type: {0}")] InvalidInputEventType(u16), - #[fail(display = "Encryption not supported")] + #[error("Encryption not supported")] EncryptionNotSupported, - #[fail(display = "Event code not supported {}", _0)] + #[error("Event code not supported {0}")] EventCodeUnsupported(u8), - #[fail(display = "Keyboard flags not supported {}", _0)] + #[error("Keyboard flags not supported {0}")] KeyboardFlagsUnsupported(u8), - #[fail(display = "Synchronize flags not supported {}", _0)] + #[error("Synchronize flags not supported {0}")] SynchronizeFlagsUnsupported(u8), } - -impl_from_error!(io::Error, InputEventError, InputEventError::IOError); diff --git a/ironrdp/src/input/fast_path.rs b/ironrdp-core/src/input/fast_path.rs similarity index 99% rename from ironrdp/src/input/fast_path.rs rename to ironrdp-core/src/input/fast_path.rs index 221738bc..4b89cdc0 100644 --- a/ironrdp/src/input/fast_path.rs +++ b/ironrdp-core/src/input/fast_path.rs @@ -8,7 +8,6 @@ use num_traits::{FromPrimitive, ToPrimitive}; use crate::fast_path::EncryptionFlags; use crate::input::{InputEventError, MousePdu, MouseXPdu}; - use crate::{per, PduParsing}; /// Implements the Fast-Path RDP message header PDU. diff --git a/ironrdp/src/input/mouse.rs b/ironrdp-core/src/input/mouse.rs similarity index 100% rename from ironrdp/src/input/mouse.rs rename to ironrdp-core/src/input/mouse.rs diff --git a/ironrdp/src/input/mouse_x.rs b/ironrdp-core/src/input/mouse_x.rs similarity index 100% rename from ironrdp/src/input/mouse_x.rs rename to ironrdp-core/src/input/mouse_x.rs diff --git a/ironrdp/src/input/scan_code.rs b/ironrdp-core/src/input/scan_code.rs similarity index 100% rename from ironrdp/src/input/scan_code.rs rename to ironrdp-core/src/input/scan_code.rs diff --git a/ironrdp/src/input/sync.rs b/ironrdp-core/src/input/sync.rs similarity index 100% rename from ironrdp/src/input/sync.rs rename to ironrdp-core/src/input/sync.rs diff --git a/ironrdp/src/input/tests.rs b/ironrdp-core/src/input/tests.rs similarity index 96% rename from ironrdp/src/input/tests.rs rename to ironrdp-core/src/input/tests.rs index 44700801..45e4894c 100644 --- a/ironrdp/src/input/tests.rs +++ b/ironrdp-core/src/input/tests.rs @@ -1,11 +1,8 @@ use lazy_static::lazy_static; -use crate::input::{ - mouse::{ButtonEvents, MovementEvents, WheelEvents}, - MousePdu, -}; - use super::fast_path::{FastPathInput, FastPathInputEvent}; +use crate::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use crate::input::MousePdu; use crate::PduParsing; const FASTPATH_INPUT_MESSAGE: [u8; 44] = [ diff --git a/ironrdp/src/input/unicode.rs b/ironrdp-core/src/input/unicode.rs similarity index 100% rename from ironrdp/src/input/unicode.rs rename to ironrdp-core/src/input/unicode.rs diff --git a/ironrdp/src/input/unused.rs b/ironrdp-core/src/input/unused.rs similarity index 100% rename from ironrdp/src/input/unused.rs rename to ironrdp-core/src/input/unused.rs diff --git a/ironrdp-core/src/lib.rs b/ironrdp-core/src/lib.rs new file mode 100644 index 00000000..74e49233 --- /dev/null +++ b/ironrdp-core/src/lib.rs @@ -0,0 +1,111 @@ +#[macro_use] +mod macros; + +pub mod codecs; +pub mod gcc; +pub mod geometry; +pub mod input; +pub mod mcs; +pub mod nego; +pub mod rdp; +pub mod utils; + +pub(crate) mod basic_output; +pub(crate) mod ber; +pub(crate) mod crypto; +pub(crate) mod per; +pub(crate) mod preconnection; +pub(crate) mod x224; + +use thiserror::Error; + +pub use crate::basic_output::{bitmap, fast_path, surface_commands}; +pub use crate::mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}; +pub use crate::nego::*; +pub use crate::preconnection::{PreconnectionPdu, PreconnectionPduError}; +pub use crate::rdp::vc::dvc; +pub use crate::rdp::{ + CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, ServerDemandActive, + ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, VirtualChannel, +}; +pub use crate::x224::*; + +pub trait PduParsing { + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity + + fn from_buffer(stream: impl std::io::Read) -> Result + where + Self: Sized; + fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error>; + fn buffer_length(&self) -> usize; +} + +pub trait PduBufferParsing<'a>: Sized { + type Error; // FIXME: this bound type should probably be removed for the sake of simplicity + + fn from_buffer(mut buffer: &'a [u8]) -> Result { + Self::from_buffer_consume(&mut buffer) + } + fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result; + fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error>; + fn buffer_length(&self) -> usize; +} + +pub enum RdpPdu { + X224(x224::Data), + FastPath(fast_path::FastPathHeader), +} + +impl PduParsing for RdpPdu { + type Error = RdpError; + + fn from_buffer(mut stream: impl std::io::Read) -> Result { + use bit_field::BitField; + use byteorder::ReadBytesExt; + use num_traits::FromPrimitive; + + let header = stream.read_u8()?; + let action = header.get_bits(0..2); + let action = Action::from_u8(action).ok_or(RdpError::InvalidActionCode(action))?; + + match action { + Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version(&mut stream, header)?)), + Action::FastPath => Ok(Self::FastPath(fast_path::FastPathHeader::from_buffer_with_header( + &mut stream, + header, + )?)), + } + } + + fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error> { + match self { + Self::X224(x224) => x224.to_buffer(stream).map_err(RdpError::from), + Self::FastPath(fast_path) => fast_path.to_buffer(stream).map_err(RdpError::from), + } + } + + fn buffer_length(&self) -> usize { + match self { + Self::X224(x224) => x224.buffer_length(), + Self::FastPath(fast_path) => fast_path.buffer_length(), + } + } +} + +#[derive(Debug, Error)] +pub enum RdpError { + #[error("IO error")] + IOError(#[from] std::io::Error), + #[error("X224 error")] + X224Error(#[from] nego::NegotiationError), + #[error("Surface Commands error")] + FastPathError(#[from] fast_path::FastPathError), + #[error("Received invalid action code: {0}")] + InvalidActionCode(u8), +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, num_derive::FromPrimitive, num_derive::ToPrimitive)] +pub enum Action { + FastPath = 0x0, + X224 = 0x3, +} diff --git a/ironrdp-core/src/macros.rs b/ironrdp-core/src/macros.rs new file mode 100644 index 00000000..f5718dc7 --- /dev/null +++ b/ironrdp-core/src/macros.rs @@ -0,0 +1,23 @@ +#[macro_export] +macro_rules! try_read_optional { + ($e:expr, $ret:expr) => { + match $e { + Ok(v) => v, + Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => { + return Ok($ret); + } + Err(e) => return Err(From::from(e)), + } + }; +} + +#[macro_export] +macro_rules! try_write_optional { + ($val:expr, $f:expr) => { + if let Some(ref val) = $val { + $f(val)? + } else { + return Ok(()); + } + }; +} diff --git a/ironrdp/src/mcs.rs b/ironrdp-core/src/mcs.rs similarity index 94% rename from ironrdp/src/mcs.rs rename to ironrdp-core/src/mcs.rs index cbc15423..76107ee2 100644 --- a/ironrdp/src/mcs.rs +++ b/ironrdp-core/src/mcs.rs @@ -1,15 +1,15 @@ use std::io; use byteorder::{ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; use crate::gcc::GccError; -use crate::{impl_from_error, per, PduParsing}; +use crate::{per, PduParsing}; #[cfg(test)] -mod test; +mod tests; mod connect_initial; @@ -340,28 +340,24 @@ impl DisconnectUltimatumReason { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum McsError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "RDP error: {}", _0)] - RdpError(#[fail(cause)] crate::RdpError), - #[fail(display = "GCC block error: {}", _0)] - GccError(#[fail(cause)] GccError), - #[fail(display = "Invalid disconnect provider ultimatum")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("RDP error")] + RdpError(#[from] crate::RdpError), + #[error("GCC block error")] + GccError(#[from] GccError), + #[error("Invalid disconnect provider ultimatum")] InvalidDisconnectProviderUltimatum, - #[fail(display = "Invalid domain MCS PDU")] + #[error("Invalid domain MCS PDU")] InvalidDomainMcsPdu, - #[fail(display = "Invalid MCS Connection Sequence PDU: {}", _0)] + #[error("Invalid MCS Connection Sequence PDU")] InvalidPdu(String), - #[fail(display = "Invalid invalid MCS channel id: {}", _0)] + #[error("Invalid invalid MCS channel id")] UnexpectedChannelId(String), } -impl_from_error!(io::Error, McsError, McsError::IOError); -impl_from_error!(crate::RdpError, McsError, McsError::RdpError); -impl_from_error!(GccError, McsError, McsError::GccError); - impl From for io::Error { fn from(e: McsError) -> io::Error { io::Error::new(io::ErrorKind::Other, format!("MCS Connection Sequence error: {}", e)) diff --git a/ironrdp/src/mcs/connect_initial.rs b/ironrdp-core/src/mcs/connect_initial.rs similarity index 100% rename from ironrdp/src/mcs/connect_initial.rs rename to ironrdp-core/src/mcs/connect_initial.rs diff --git a/ironrdp/src/mcs/connect_initial/test.rs b/ironrdp-core/src/mcs/connect_initial/test.rs similarity index 100% rename from ironrdp/src/mcs/connect_initial/test.rs rename to ironrdp-core/src/mcs/connect_initial/test.rs diff --git a/ironrdp/src/mcs/test.rs b/ironrdp-core/src/mcs/tests.rs similarity index 100% rename from ironrdp/src/mcs/test.rs rename to ironrdp-core/src/mcs/tests.rs diff --git a/ironrdp/src/nego.rs b/ironrdp-core/src/nego.rs similarity index 97% rename from ironrdp/src/nego.rs rename to ironrdp-core/src/nego.rs index 72d8842a..af2e6e51 100644 --- a/ironrdp/src/nego.rs +++ b/ironrdp-core/src/nego.rs @@ -6,12 +6,12 @@ use std::io::prelude::*; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; use crate::x224::{TpktHeader, X224TPDUType, TPDU_REQUEST_LENGTH, TPKT_HEADER_LENGTH}; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const COOKIE_PREFIX: &str = "Cookie: mstshash="; const ROUTING_TOKEN_PREFIX: &str = "Cookie: msts="; @@ -91,21 +91,19 @@ pub enum NegoData { } /// The type of the error that may result from a negotiation process. -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum NegotiationError { /// Corresponds for an I/O error that may occur during a negotiation process /// (invalid response code, invalid security protocol code, etc.) - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), + #[error("IO error")] + IOError(#[from] io::Error), /// May indicate about a negotiation error recieved from a server. - #[fail(display = "Received negotiation error from server, code={:?}", 0)] + #[error("Received negotiation error from server, code={0:?}")] ResponseFailure(FailureCode), - #[fail(display = "Invalid tpkt header version")] + #[error("Invalid tpkt header version")] TpktVersionError, } -impl_from_error!(io::Error, NegotiationError, NegotiationError::IOError); - impl From for io::Error { fn from(e: NegotiationError) -> io::Error { io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {}", e)) diff --git a/ironrdp/src/nego/tests.rs b/ironrdp-core/src/nego/tests.rs similarity index 100% rename from ironrdp/src/nego/tests.rs rename to ironrdp-core/src/nego/tests.rs diff --git a/ironrdp/src/per.rs b/ironrdp-core/src/per.rs similarity index 100% rename from ironrdp/src/per.rs rename to ironrdp-core/src/per.rs diff --git a/ironrdp/src/per/test.rs b/ironrdp-core/src/per/test.rs similarity index 100% rename from ironrdp/src/per/test.rs rename to ironrdp-core/src/per/test.rs diff --git a/ironrdp/src/preconnection.rs b/ironrdp-core/src/preconnection.rs similarity index 93% rename from ironrdp/src/preconnection.rs rename to ironrdp-core/src/preconnection.rs index 8a4ee1c1..42197ebf 100644 --- a/ironrdp/src/preconnection.rs +++ b/ironrdp-core/src/preconnection.rs @@ -1,12 +1,12 @@ use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; use crate::utils::{self, SplitTo}; -use crate::{impl_from_error, PduBufferParsing}; +use crate::PduBufferParsing; const PRECONNECTION_PDU_V1_SIZE: usize = 16; @@ -62,9 +62,7 @@ impl PduBufferParsing<'_> for PreconnectionPdu { } let payload_bytes = buffer.split_to(usize::from(cch_pcb) * 2); - let payload = utils::bytes_to_utf16_string(payload_bytes) - .trim_end_matches('\0') - .into(); + let payload = utils::from_utf16_bytes(payload_bytes).trim_end_matches('\0').into(); (cch_pcb, Some(payload)) } @@ -121,18 +119,16 @@ impl From<&PreconnectionPdu> for Version { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum PreconnectionPduError { - #[fail(display = "IO error: {}", _0)] - IoError(#[fail(cause)] io::Error), - #[fail(display = "Provided data is not an valid preconnection Pdu")] + #[error("IO error")] + IoError(#[from] io::Error), + #[error("Provided data is not an valid preconnection Pdu")] InvalidHeader, - #[fail(display = "Unexpected version: {}", _0)] + #[error("Unexpected version: {0}")] UnexpectedVersion(u32), } -impl_from_error!(io::Error, PreconnectionPduError, PreconnectionPduError::IoError); - #[cfg(test)] mod tests { use lazy_static::lazy_static; diff --git a/ironrdp/src/rdp.rs b/ironrdp-core/src/rdp.rs similarity index 59% rename from ironrdp/src/rdp.rs rename to ironrdp-core/src/rdp.rs index f68f5a31..20f34825 100644 --- a/ironrdp/src/rdp.rs +++ b/ironrdp-core/src/rdp.rs @@ -1,11 +1,12 @@ use std::io; -use failure::Fail; +use thiserror::Error; use self::client_info::ClientInfoError; use self::finalization_messages::FinalizationMessagesError; use self::server_license::ServerLicenseError; -use crate::{impl_from_error, input::InputEventError, PduParsing}; +use crate::input::InputEventError; +use crate::PduParsing; #[cfg(test)] pub mod test; @@ -76,47 +77,38 @@ impl PduParsing for ClientInfoPdu { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum RdpError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Client Info PDU error: {}", _0)] - ClientInfoError(ClientInfoError), - #[fail(display = "Server License PDU error: {}", _0)] - ServerLicenseError(ServerLicenseError), - #[fail(display = "Capability sets error: {}", _0)] - CapabilitySetsError(CapabilitySetsError), - #[fail(display = "Finalization PDUs error: {}", _0)] - FinalizationMessagesError(FinalizationMessagesError), - #[fail(display = "Invalid RDP security header")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Client Info PDU error")] + ClientInfoError(#[from] ClientInfoError), + #[error("Server License PDU error")] + ServerLicenseError(#[from] ServerLicenseError), + #[error("Capability sets error")] + CapabilitySetsError(#[from] CapabilitySetsError), + #[error("Finalization PDUs error")] + FinalizationMessagesError(#[from] FinalizationMessagesError), + #[error("Invalid RDP security header")] InvalidSecurityHeader, - #[fail(display = "Invalid RDP Share Control Header: {}", _0)] + #[error("Invalid RDP Share Control Header: {0}")] InvalidShareControlHeader(String), - #[fail(display = "Invalid RDP Share Data Header: {}", _0)] + #[error("Invalid RDP Share Data Header: {0}")] InvalidShareDataHeader(String), - #[fail(display = "Invalid RDP Connection Sequence PDU")] + #[error("Invalid RDP Connection Sequence PDU")] InvalidPdu(String), - #[fail(display = "Unexpected RDP Share Control Header PDU type: {:?}", _0)] + #[error("Unexpected RDP Share Control Header PDU type: {0:?}")] UnexpectedShareControlPdu(ShareControlPduType), - #[fail(display = "Unexpected RDP Share Data Header PDU type: {:?}", _0)] + #[error("Unexpected RDP Share Data Header PDU type: {0:?}")] UnexpectedShareDataPdu(ShareDataPduType), - #[fail(display = "Save session info PDU error: {}", _0)] - SaveSessionInfoError(session_info::SessionError), - #[fail(display = "Server set error info PDU error: {}", _0)] - ServerSetErrorInfoError(ServerSetErrorInfoError), - #[fail(display = "Input event PDU error: Err: {}", _0)] - InputEventError(InputEventError), + #[error("Save session info PDU error")] + SaveSessionInfoError(#[from] session_info::SessionError), + #[error("Server set error info PDU error")] + ServerSetErrorInfoError(#[from] ServerSetErrorInfoError), + #[error("Input event PDU error")] + InputEventError(#[from] InputEventError), } -impl_from_error!(io::Error, RdpError, RdpError::IOError); -impl_from_error!(ClientInfoError, RdpError, RdpError::ClientInfoError); -impl_from_error!(ServerLicenseError, RdpError, RdpError::ServerLicenseError); -impl_from_error!(CapabilitySetsError, RdpError, RdpError::CapabilitySetsError); -impl_from_error!(FinalizationMessagesError, RdpError, RdpError::FinalizationMessagesError); -impl_from_error!(session_info::SessionError, RdpError, RdpError::SaveSessionInfoError); -impl_from_error!(ServerSetErrorInfoError, RdpError, RdpError::ServerSetErrorInfoError); -impl_from_error!(InputEventError, RdpError, RdpError::InputEventError); - impl From for io::Error { fn from(e: RdpError) -> io::Error { io::Error::new(io::ErrorKind::Other, format!("RDP Connection Sequence error: {}", e)) diff --git a/ironrdp/src/rdp/capability_sets.rs b/ironrdp-core/src/rdp/capability_sets.rs similarity index 91% rename from ironrdp/src/rdp/capability_sets.rs rename to ironrdp-core/src/rdp/capability_sets.rs index a43b2650..17db296a 100644 --- a/ironrdp/src/rdp/capability_sets.rs +++ b/ironrdp-core/src/rdp/capability_sets.rs @@ -1,11 +1,11 @@ use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[cfg(test)] pub mod test; @@ -535,72 +535,64 @@ enum CapabilitySetType { FrameAcknowledge = 0x1e, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum CapabilitySetsError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Utf8 error: {}", _0)] - Utf8Error(#[fail(cause)] std::string::FromUtf8Error), - #[fail(display = "Invalid type field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Utf8 error")] + Utf8Error(#[from] std::string::FromUtf8Error), + #[error("Invalid type field")] InvalidType, - #[fail(display = "Invalid bitmap compression field")] + #[error("Invalid bitmap compression field")] InvalidCompressionFlag, - #[fail(display = "Invalid multiple rectangle support field")] + #[error("Invalid multiple rectangle support field")] InvalidMultipleRectSupport, - #[fail(display = "Invalid major platform type field")] + #[error("Invalid major platform type field")] InvalidMajorPlatformType, - #[fail(display = "Invalid minor platform type field")] + #[error("Invalid minor platform type field")] InvalidMinorPlatformType, - #[fail(display = "Invalid protocol version field")] + #[error("Invalid protocol version field")] InvalidProtocolVersion, - #[fail(display = "Invalid compression types field")] + #[error("Invalid compression types field")] InvalidCompressionTypes, - #[fail(display = "Invalid update capability flags field")] + #[error("Invalid update capability flags field")] InvalidUpdateCapFlag, - #[fail(display = "Invalid remote unshare flag field")] + #[error("Invalid remote unshare flag field")] InvalidRemoteUnshareFlag, - #[fail(display = "Invalid compression level field")] + #[error("Invalid compression level field")] InvalidCompressionLevel, - #[fail(display = "Invalid brush support level field")] + #[error("Invalid brush support level field")] InvalidBrushSupportLevel, - #[fail(display = "Invalid glyph support level field")] + #[error("Invalid glyph support level field")] InvalidGlyphSupportLevel, - #[fail(display = "Invalid RemoteFX capability version")] + #[error("Invalid RemoteFX capability version")] InvalidRfxICapVersion, - #[fail(display = "Invalid RemoteFX capability tile size")] + #[error("Invalid RemoteFX capability tile size")] InvalidRfxICapTileSize, - #[fail(display = "Invalid RemoteFXICap color conversion bits")] + #[error("Invalid RemoteFXICap color conversion bits")] InvalidRfxICapColorConvBits, - #[fail(display = "Invalid RemoteFXICap transform bits")] + #[error("Invalid RemoteFXICap transform bits")] InvalidRfxICapTransformBits, - #[fail(display = "Invalid RemoteFXICap entropy bits field")] + #[error("Invalid RemoteFXICap entropy bits field")] InvalidRfxICapEntropyBits, - #[fail(display = "Invalid RemoteFX capability set block type")] + #[error("Invalid RemoteFX capability set block type")] InvalidRfxCapsetBlockType, - #[fail(display = "Invalid RemoteFX capability set type")] + #[error("Invalid RemoteFX capability set type")] InvalidRfxCapsetType, - #[fail(display = "Invalid RemoteFX capabilities block type")] + #[error("Invalid RemoteFX capabilities block type")] InvalidRfxCapsBlockType, - #[fail(display = "Invalid RemoteFX capabilities block length")] + #[error("Invalid RemoteFX capabilities block length")] InvalidRfxCapsBockLength, - #[fail(display = "Invalid number of capability sets in RemoteFX capabilities")] + #[error("Invalid number of capability sets in RemoteFX capabilities")] InvalidRfxCapsNumCapsets, - #[fail(display = "Invalid codec property field")] + #[error("Invalid codec property field")] InvalidCodecProperty, - #[fail(display = "Invalid codec ID")] + #[error("Invalid codec ID")] InvalidCodecID, - #[fail(display = "Invalid channel chunk size field")] + #[error("Invalid channel chunk size field")] InvalidChunkSize, - #[fail(display = "Invalid codec property length for the current property ID")] + #[error("Invalid codec property length for the current property ID")] InvalidPropertyLength, - #[fail(display = "Invalid data length")] + #[error("Invalid data length")] InvalidLength, } - -impl_from_error!(io::Error, CapabilitySetsError, CapabilitySetsError::IOError); - -impl From for CapabilitySetsError { - fn from(e: std::string::FromUtf8Error) -> Self { - CapabilitySetsError::Utf8Error(e) - } -} diff --git a/ironrdp/src/rdp/capability_sets/bitmap.rs b/ironrdp-core/src/rdp/capability_sets/bitmap.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap.rs diff --git a/ironrdp/src/rdp/capability_sets/bitmap/test.rs b/ironrdp-core/src/rdp/capability_sets/bitmap/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap/test.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap/test.rs diff --git a/ironrdp/src/rdp/capability_sets/bitmap_cache.rs b/ironrdp-core/src/rdp/capability_sets/bitmap_cache.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap_cache.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap_cache.rs diff --git a/ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs b/ironrdp-core/src/rdp/capability_sets/bitmap_cache/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap_cache/test.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap_cache/test.rs diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs.rs b/ironrdp-core/src/rdp/capability_sets/bitmap_codecs.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap_codecs.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap_codecs.rs diff --git a/ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs b/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/bitmap_codecs/test.rs rename to ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs diff --git a/ironrdp/src/rdp/capability_sets/brush.rs b/ironrdp-core/src/rdp/capability_sets/brush.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/brush.rs rename to ironrdp-core/src/rdp/capability_sets/brush.rs diff --git a/ironrdp/src/rdp/capability_sets/brush/test.rs b/ironrdp-core/src/rdp/capability_sets/brush/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/brush/test.rs rename to ironrdp-core/src/rdp/capability_sets/brush/test.rs diff --git a/ironrdp/src/rdp/capability_sets/frame_acknowledge.rs b/ironrdp-core/src/rdp/capability_sets/frame_acknowledge.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/frame_acknowledge.rs rename to ironrdp-core/src/rdp/capability_sets/frame_acknowledge.rs diff --git a/ironrdp/src/rdp/capability_sets/general.rs b/ironrdp-core/src/rdp/capability_sets/general.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/general.rs rename to ironrdp-core/src/rdp/capability_sets/general.rs diff --git a/ironrdp/src/rdp/capability_sets/general/test.rs b/ironrdp-core/src/rdp/capability_sets/general/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/general/test.rs rename to ironrdp-core/src/rdp/capability_sets/general/test.rs diff --git a/ironrdp/src/rdp/capability_sets/glyph_cache.rs b/ironrdp-core/src/rdp/capability_sets/glyph_cache.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/glyph_cache.rs rename to ironrdp-core/src/rdp/capability_sets/glyph_cache.rs diff --git a/ironrdp/src/rdp/capability_sets/glyph_cache/test.rs b/ironrdp-core/src/rdp/capability_sets/glyph_cache/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/glyph_cache/test.rs rename to ironrdp-core/src/rdp/capability_sets/glyph_cache/test.rs diff --git a/ironrdp/src/rdp/capability_sets/input.rs b/ironrdp-core/src/rdp/capability_sets/input.rs similarity index 93% rename from ironrdp/src/rdp/capability_sets/input.rs rename to ironrdp-core/src/rdp/capability_sets/input.rs index 87a93593..c356183f 100644 --- a/ironrdp/src/rdp/capability_sets/input.rs +++ b/ironrdp-core/src/rdp/capability_sets/input.rs @@ -52,7 +52,7 @@ impl PduParsing for Input { let mut ime_buffer = [0; IME_FILE_NAME_SIZE]; buffer.read_exact(&mut ime_buffer)?; - let keyboard_ime_filename = utils::bytes_to_utf16_string(ime_buffer.as_ref()) + let keyboard_ime_filename = utils::from_utf16_bytes(ime_buffer.as_ref()) .trim_end_matches('\u{0}') .into(); @@ -80,7 +80,7 @@ impl PduParsing for Input { buffer.write_u32::(self.keyboard_subtype)?; buffer.write_u32::(self.keyboard_function_key)?; - let mut keyboard_ime_file_name_buffer = utils::string_to_utf16(self.keyboard_ime_filename.as_ref()); + let mut keyboard_ime_file_name_buffer = utils::to_utf16_bytes(self.keyboard_ime_filename.as_ref()); keyboard_ime_file_name_buffer.resize(IME_FILE_NAME_SIZE - 2, 0); buffer.write_all(keyboard_ime_file_name_buffer.as_ref())?; buffer.write_u16::(0)?; // ime file name null terminator diff --git a/ironrdp/src/rdp/capability_sets/input/test.rs b/ironrdp-core/src/rdp/capability_sets/input/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/input/test.rs rename to ironrdp-core/src/rdp/capability_sets/input/test.rs diff --git a/ironrdp/src/rdp/capability_sets/large_pointer.rs b/ironrdp-core/src/rdp/capability_sets/large_pointer.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/large_pointer.rs rename to ironrdp-core/src/rdp/capability_sets/large_pointer.rs diff --git a/ironrdp/src/rdp/capability_sets/multifragment_update.rs b/ironrdp-core/src/rdp/capability_sets/multifragment_update.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/multifragment_update.rs rename to ironrdp-core/src/rdp/capability_sets/multifragment_update.rs diff --git a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs b/ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache.rs rename to ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache.rs diff --git a/ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs b/ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs rename to ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs diff --git a/ironrdp/src/rdp/capability_sets/order.rs b/ironrdp-core/src/rdp/capability_sets/order.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/order.rs rename to ironrdp-core/src/rdp/capability_sets/order.rs diff --git a/ironrdp/src/rdp/capability_sets/order/test.rs b/ironrdp-core/src/rdp/capability_sets/order/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/order/test.rs rename to ironrdp-core/src/rdp/capability_sets/order/test.rs diff --git a/ironrdp/src/rdp/capability_sets/pointer.rs b/ironrdp-core/src/rdp/capability_sets/pointer.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/pointer.rs rename to ironrdp-core/src/rdp/capability_sets/pointer.rs diff --git a/ironrdp/src/rdp/capability_sets/pointer/test.rs b/ironrdp-core/src/rdp/capability_sets/pointer/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/pointer/test.rs rename to ironrdp-core/src/rdp/capability_sets/pointer/test.rs diff --git a/ironrdp/src/rdp/capability_sets/sound.rs b/ironrdp-core/src/rdp/capability_sets/sound.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/sound.rs rename to ironrdp-core/src/rdp/capability_sets/sound.rs diff --git a/ironrdp/src/rdp/capability_sets/sound/test.rs b/ironrdp-core/src/rdp/capability_sets/sound/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/sound/test.rs rename to ironrdp-core/src/rdp/capability_sets/sound/test.rs diff --git a/ironrdp/src/rdp/capability_sets/surface_commands.rs b/ironrdp-core/src/rdp/capability_sets/surface_commands.rs similarity index 93% rename from ironrdp/src/rdp/capability_sets/surface_commands.rs rename to ironrdp-core/src/rdp/capability_sets/surface_commands.rs index d75418ed..f577d97a 100644 --- a/ironrdp/src/rdp/capability_sets/surface_commands.rs +++ b/ironrdp-core/src/rdp/capability_sets/surface_commands.rs @@ -4,7 +4,7 @@ mod test; use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use crate::rdp::CapabilitySetsError; use crate::PduParsing; diff --git a/ironrdp/src/rdp/capability_sets/surface_commands/test.rs b/ironrdp-core/src/rdp/capability_sets/surface_commands/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/surface_commands/test.rs rename to ironrdp-core/src/rdp/capability_sets/surface_commands/test.rs diff --git a/ironrdp/src/rdp/capability_sets/test.rs b/ironrdp-core/src/rdp/capability_sets/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/test.rs rename to ironrdp-core/src/rdp/capability_sets/test.rs diff --git a/ironrdp/src/rdp/capability_sets/virtual_channel.rs b/ironrdp-core/src/rdp/capability_sets/virtual_channel.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/virtual_channel.rs rename to ironrdp-core/src/rdp/capability_sets/virtual_channel.rs diff --git a/ironrdp/src/rdp/capability_sets/virtual_channel/test.rs b/ironrdp-core/src/rdp/capability_sets/virtual_channel/test.rs similarity index 100% rename from ironrdp/src/rdp/capability_sets/virtual_channel/test.rs rename to ironrdp-core/src/rdp/capability_sets/virtual_channel/test.rs diff --git a/ironrdp/src/rdp/client_info.rs b/ironrdp-core/src/rdp/client_info.rs similarity index 95% rename from ironrdp/src/rdp/client_info.rs rename to ironrdp-core/src/rdp/client_info.rs index 299404b4..aa08dc7d 100644 --- a/ironrdp/src/rdp/client_info.rs +++ b/ironrdp-core/src/rdp/client_info.rs @@ -4,13 +4,13 @@ pub mod test; use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; use crate::utils::CharacterSet; -use crate::{impl_from_error, try_read_optional, try_write_optional, utils, PduParsing}; +use crate::{try_read_optional, try_write_optional, utils, PduParsing}; const RECONNECT_COOKIE_LEN: usize = 28; const TIMEZONE_INFO_NAME_LEN: usize = 64; @@ -339,14 +339,14 @@ impl PduParsing for TimezoneInfo { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u32::(self.bias)?; - let mut standard_name = utils::string_to_utf16(self.standard_name.as_str()); + let mut standard_name = utils::to_utf16_bytes(self.standard_name.as_str()); standard_name.resize(TIMEZONE_INFO_NAME_LEN, 0); stream.write_all(standard_name.as_ref())?; self.standard_date.to_buffer(&mut stream)?; stream.write_u32::(self.standard_bias)?; - let mut daylight_name = utils::string_to_utf16(self.daylight_name.as_str()); + let mut daylight_name = utils::to_utf16_bytes(self.daylight_name.as_str()); daylight_name.resize(TIMEZONE_INFO_NAME_LEN, 0); stream.write_all(daylight_name.as_ref())?; @@ -543,25 +543,22 @@ pub enum CompressionType { Rdp61 = 3, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum ClientInfoError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "UTF-8 error: {}", _0)] - Utf8Error(#[fail(cause)] std::string::FromUtf8Error), - #[fail(display = "Invalid address family field")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("UTF-8 error")] + Utf8Error(#[from] std::string::FromUtf8Error), + #[error("Invalid address family field")] InvalidAddressFamily, - #[fail(display = "Invalid flags field")] + #[error("Invalid flags field")] InvalidClientInfoFlags, - #[fail(display = "Invalid performance flags field")] + #[error("Invalid performance flags field")] InvalidPerformanceFlags, - #[fail(display = "Invalid reconnect cookie field")] + #[error("Invalid reconnect cookie field")] InvalidReconnectCookie, } -impl_from_error!(io::Error, ClientInfoError, ClientInfoError::IOError); -impl_from_error!(std::string::FromUtf8Error, ClientInfoError, ClientInfoError::Utf8Error); - fn string_len(value: &str, character_set: CharacterSet) -> u16 { value.len() as u16 * character_set.to_u16().unwrap() } diff --git a/ironrdp/src/rdp/client_info/test.rs b/ironrdp-core/src/rdp/client_info/test.rs similarity index 100% rename from ironrdp/src/rdp/client_info/test.rs rename to ironrdp-core/src/rdp/client_info/test.rs diff --git a/ironrdp/src/rdp/finalization_messages.rs b/ironrdp-core/src/rdp/finalization_messages.rs similarity index 83% rename from ironrdp/src/rdp/finalization_messages.rs rename to ironrdp-core/src/rdp/finalization_messages.rs index ac2201c3..80a539c1 100644 --- a/ironrdp/src/rdp/finalization_messages.rs +++ b/ironrdp-core/src/rdp/finalization_messages.rs @@ -1,12 +1,12 @@ use std::io; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::{gcc, impl_from_error, PduParsing}; +use crate::{gcc, PduParsing}; const SYNCHRONIZE_PDU_SIZE: usize = 2 + 2; const CONTROL_PDU_SIZE: usize = 2 + 2 + 4; @@ -174,29 +174,22 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum FinalizationMessagesError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Monitor Data error: {}", _0)] - MonitorDataError(#[fail(cause)] gcc::MonitorDataError), - #[fail(display = "Invalid message type field in Synchronize PDU")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Monitor Data error")] + MonitorDataError(#[from] gcc::MonitorDataError), + #[error("Invalid message type field in Synchronize PDU")] InvalidMessageType, - #[fail(display = "Invalid control action field in Control PDU")] + #[error("Invalid control action field in Control PDU")] InvalidControlAction, - #[fail(display = "Invalid grant id field in Control PDU")] + #[error("Invalid grant id field in Control PDU")] InvalidGrantId, - #[fail(display = "Invalid control id field in Control PDU")] + #[error("Invalid control id field in Control PDU")] InvalidControlId, - #[fail(display = "Invalid list flags field in Font List PDU")] + #[error("Invalid list flags field in Font List PDU")] InvalidListFlags, - #[fail(display = "Invalid monitor count field: {}", _0)] + #[error("Invalid monitor count field: {0}")] InvalidMonitorCount(u32), } - -impl_from_error!(io::Error, FinalizationMessagesError, FinalizationMessagesError::IOError); -impl_from_error!( - gcc::MonitorDataError, - FinalizationMessagesError, - FinalizationMessagesError::MonitorDataError -); diff --git a/ironrdp/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs similarity index 100% rename from ironrdp/src/rdp/headers.rs rename to ironrdp-core/src/rdp/headers.rs diff --git a/ironrdp/src/rdp/server_error_info.rs b/ironrdp-core/src/rdp/server_error_info.rs similarity index 98% rename from ironrdp/src/rdp/server_error_info.rs rename to ironrdp-core/src/rdp/server_error_info.rs index a3707341..8592aff4 100644 --- a/ironrdp/src/rdp/server_error_info.rs +++ b/ironrdp-core/src/rdp/server_error_info.rs @@ -1,11 +1,11 @@ use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerSetErrorInfoPdu(pub ErrorInfo); @@ -385,16 +385,14 @@ impl RdpSpecificCode { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum ServerSetErrorInfoError { - #[fail(display = "IO error: {}", _0)] - IoError(#[fail(cause)] io::Error), - #[fail(display = "Unexpected info code: {}", _0)] + #[error("IO error")] + IoError(#[from] io::Error), + #[error("Unexpected info code: {0}")] UnexpectedInfoCode(u32), } -impl_from_error!(io::Error, ServerSetErrorInfoError, ServerSetErrorInfoError::IoError); - #[cfg(test)] mod tests { use super::*; diff --git a/ironrdp/src/rdp/server_license.rs b/ironrdp-core/src/rdp/server_license.rs similarity index 78% rename from ironrdp/src/rdp/server_license.rs rename to ironrdp-core/src/rdp/server_license.rs index 955b75a0..2452ecc8 100644 --- a/ironrdp/src/rdp/server_license.rs +++ b/ironrdp-core/src/rdp/server_license.rs @@ -2,14 +2,14 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use md5::Digest; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use ring::digest; +use thiserror::Error; use crate::rdp::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[cfg(test)] pub mod test; @@ -161,78 +161,76 @@ pub enum BlobType { ClientMachineNameBlob = 0x10, } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum ServerLicenseError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "UTF-8 error: {}", _0)] - Utf8Error(#[fail(cause)] std::string::FromUtf8Error), - #[fail(display = "Invalid preamble field: {}", _0)] + #[error("IO error: {0}")] + IOError(#[from] io::Error), + #[error("UTF-8 error: {0}")] + Utf8Error(#[from] std::string::FromUtf8Error), + #[error("Invalid preamble field: {0}")] InvalidPreamble(String), - #[fail(display = "Invalid preamble message type field")] + #[error("Invalid preamble message type field")] InvalidLicenseType, - #[fail(display = "Invalid error code field")] + #[error("Invalid error code field")] InvalidErrorCode, - #[fail(display = "Invalid state transition field")] + #[error("Invalid state transition field")] InvalidStateTransition, - #[fail(display = "Invalid blob type field")] + #[error("Invalid blob type field")] InvalidBlobType, - #[fail(display = "Unable to generate random number {}", _0)] + #[error("Unable to generate random number {0}")] RandomNumberGenerationError(String), - #[fail(display = "Unable to retrieve public key from the certificate")] + #[error("Unable to retrieve public key from the certificate")] UnableToGetPublicKey, - #[fail(display = "Unable to encrypt RSA public key")] + #[error("Unable to encrypt RSA public key")] RsaKeyEncryptionError, - #[fail(display = "Invalid License Request key exchange algorithm value")] + #[error("Invalid License Request key exchange algorithm value")] InvalidKeyExchangeValue, - #[fail(display = "MAC checksum generated over decrypted data does not match the server's checksum")] + #[error("MAC checksum generated over decrypted data does not match the server's checksum")] InvalidMacData, - #[fail(display = "Invalid platform challenge response data version")] + #[error("Invalid platform challenge response data version")] InvalidChallengeResponseDataVersion, - #[fail(display = "Invalid platform challenge response data client type")] + #[error("Invalid platform challenge response data client type")] InvalidChallengeResponseDataClientType, - #[fail(display = "Invalid platform challenge response data license detail level")] + #[error("Invalid platform challenge response data license detail level")] InvalidChallengeResponseDataLicenseDetail, - #[fail(display = "Invalid x509 certificate")] + #[error("Invalid x509 certificate")] InvalidX509Certificate, - #[fail(display = "Invalid certificate version")] + #[error("Invalid certificate version")] InvalidCertificateVersion, - #[fail(display = "Invalid x509 certificates amount")] + #[error("Invalid x509 certificates amount")] InvalidX509CertificatesAmount, - #[fail(display = "Invalid proprietary certificate signature algorithm ID")] + #[error("Invalid proprietary certificate signature algorithm ID")] InvalidPropCertSignatureAlgorithmId, - #[fail(display = "Invalid proprietary certificate key algorithm ID")] + #[error("Invalid proprietary certificate key algorithm ID")] InvalidPropCertKeyAlgorithmId, - #[fail(display = "Invalid RSA public key magic")] + #[error("Invalid RSA public key magic")] InvalidRsaPublicKeyMagic, - #[fail(display = "Invalid RSA public key length")] + #[error("Invalid RSA public key length")] InvalidRsaPublicKeyLength, - #[fail(display = "Invalid RSA public key data length")] + #[error("Invalid RSA public key data length")] InvalidRsaPublicKeyDataLength, - #[fail(display = "Invalid License Header security flags")] + #[error("Invalid License Header security flags")] InvalidSecurityFlags, - #[fail(display = "The server returned unexpected error")] + #[error("The server returned unexpected error")] UnexpectedError(LicensingErrorMessage), - #[fail(display = "Got unexpected license message")] + #[error("Got unexpected license message")] UnexpectedLicenseMessage, - #[fail(display = "The server has returned an unexpected error")] + #[error("The server has returned an unexpected error")] UnexpectedServerError(LicensingErrorMessage), - #[fail(display = "The server has returned STATUS_VALID_CLIENT unexpectedly")] + #[error("The server has returned STATUS_VALID_CLIENT unexpectedly")] UnexpectedValidClientError(LicensingErrorMessage), - #[fail(display = "Invalid Key Exchange List field")] + #[error("Invalid Key Exchange List field")] InvalidKeyExchangeAlgorithm, - #[fail(display = "Received invalid company name length (Product Information): {}", _0)] + #[error("Received invalid company name length (Product Information): {0}")] InvalidCompanyNameLength(u32), - #[fail(display = "Received invalid product ID length (Product Information): {}", _0)] + #[error("Received invalid product ID length (Product Information): {0}")] InvalidProductIdLength(u32), - #[fail(display = "Received invalid scope count field: {}", _0)] + #[error("Received invalid scope count field: {0}")] InvalidScopeCount(u32), - #[fail(display = "Received invalid sertificate length: {}", _0)] + #[error("Received invalid sertificate length: {0}")] InvalidCertificateLength(u32), } -impl_from_error!(io::Error, ServerLicenseError, ServerLicenseError::IOError); - pub struct BlobHeader { pub blob_type: BlobType, pub length: usize, @@ -277,12 +275,6 @@ impl BlobHeader { } } -impl_from_error!( - std::string::FromUtf8Error, - ServerLicenseError, - ServerLicenseError::Utf8Error -); - fn compute_mac_data(mac_salt_key: &[u8], data: &[u8]) -> Vec { let data_len_buffer = (data.len() as u32).to_le_bytes(); diff --git a/ironrdp/src/rdp/server_license/client_new_license_request.rs b/ironrdp-core/src/rdp/server_license/client_new_license_request.rs similarity index 98% rename from ironrdp/src/rdp/server_license/client_new_license_request.rs rename to ironrdp-core/src/rdp/server_license/client_new_license_request.rs index 08d1ccaa..a4a2c87b 100644 --- a/ironrdp/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp-core/src/rdp/server_license/client_new_license_request.rs @@ -13,9 +13,9 @@ use super::{ PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, ServerLicenseRequest, KEY_EXCHANGE_ALGORITHM_RSA, PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; -use crate::utils::rsa::encrypt_with_public_key; -use crate::utils::CharacterSet; -use crate::{utils, PduParsing}; +use crate::crypto::rsa::encrypt_with_public_key; +use crate::utils::{self, CharacterSet}; +use crate::PduParsing; const LICENSE_REQUEST_STATIC_FIELDS_SIZE: usize = 20; diff --git a/ironrdp/src/rdp/server_license/client_new_license_request/test.rs b/ironrdp-core/src/rdp/server_license/client_new_license_request/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/client_new_license_request/test.rs rename to ironrdp-core/src/rdp/server_license/client_new_license_request/test.rs diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs b/ironrdp-core/src/rdp/server_license/client_platform_challenge_response.rs similarity index 98% rename from ironrdp/src/rdp/server_license/client_platform_challenge_response.rs rename to ironrdp-core/src/rdp/server_license/client_platform_challenge_response.rs index 17f628a7..6482d34e 100644 --- a/ironrdp/src/rdp/server_license/client_platform_challenge_response.rs +++ b/ironrdp-core/src/rdp/server_license/client_platform_challenge_response.rs @@ -4,17 +4,17 @@ mod test; use std::io; use std::io::Write; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use md5::Digest; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; use super::{ BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, PreambleFlags, PreambleType, PreambleVersion, ServerLicenseError, ServerPlatformChallenge, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, PLATFORM_ID, PREAMBLE_SIZE, }; -use crate::utils::rc4::Rc4; +use crate::crypto::rc4::Rc4; use crate::PduParsing; const RESPONSE_DATA_VERSION: u16 = 0x100; diff --git a/ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs b/ironrdp-core/src/rdp/server_license/client_platform_challenge_response/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/client_platform_challenge_response/test.rs rename to ironrdp-core/src/rdp/server_license/client_platform_challenge_response/test.rs diff --git a/ironrdp/src/rdp/server_license/licensing_error_message.rs b/ironrdp-core/src/rdp/server_license/licensing_error_message.rs similarity index 100% rename from ironrdp/src/rdp/server_license/licensing_error_message.rs rename to ironrdp-core/src/rdp/server_license/licensing_error_message.rs diff --git a/ironrdp/src/rdp/server_license/licensing_error_message/test.rs b/ironrdp-core/src/rdp/server_license/licensing_error_message/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/licensing_error_message/test.rs rename to ironrdp-core/src/rdp/server_license/licensing_error_message/test.rs diff --git a/ironrdp/src/rdp/server_license/server_license_request.rs b/ironrdp-core/src/rdp/server_license/server_license_request.rs similarity index 96% rename from ironrdp/src/rdp/server_license/server_license_request.rs rename to ironrdp-core/src/rdp/server_license/server_license_request.rs index 5dacb588..2e11feb5 100644 --- a/ironrdp/src/rdp/server_license/server_license_request.rs +++ b/ironrdp-core/src/rdp/server_license/server_license_request.rs @@ -359,7 +359,7 @@ impl PduParsing for ProductInfo { stream.read_exact(&mut company_name)?; company_name.resize((company_name_len - 2) as usize, 0); - let company_name = utils::bytes_to_utf16_string(company_name.as_slice()); + let company_name = utils::from_utf16_bytes(company_name.as_slice()); let product_id_len = stream.read_u32::()?; if !(2..=MAX_PRODUCT_ID_LEN).contains(&product_id_len) { @@ -370,7 +370,7 @@ impl PduParsing for ProductInfo { stream.read_exact(&mut product_id)?; product_id.resize((product_id_len - 2) as usize, 0); - let product_id = utils::bytes_to_utf16_string(product_id.as_slice()); + let product_id = utils::from_utf16_bytes(product_id.as_slice()); Ok(Self { version, @@ -382,13 +382,13 @@ impl PduParsing for ProductInfo { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u32::(self.version)?; - let mut company_name = utils::string_to_utf16(&self.company_name); + let mut company_name = utils::to_utf16_bytes(&self.company_name); company_name.resize(company_name.len() + 2, 0); stream.write_u32::(company_name.len() as u32)?; stream.write_all(&company_name)?; - let mut product_id = utils::string_to_utf16(&self.product_id); + let mut product_id = utils::to_utf16_bytes(&self.product_id); product_id.resize(product_id.len() + 2, 0); stream.write_u32::(product_id.len() as u32)?; @@ -398,8 +398,8 @@ impl PduParsing for ProductInfo { } fn buffer_length(&self) -> usize { - let company_name_utf_16 = utils::string_to_utf16(&self.company_name); - let product_id_utf_16 = utils::string_to_utf16(&self.product_id); + let company_name_utf_16 = utils::to_utf16_bytes(&self.company_name); + let product_id_utf_16 = utils::to_utf16_bytes(&self.product_id); PRODUCT_INFO_STATIC_FIELDS_SIZE + company_name_utf_16.len() diff --git a/ironrdp/src/rdp/server_license/server_license_request/cert.rs b/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs similarity index 100% rename from ironrdp/src/rdp/server_license/server_license_request/cert.rs rename to ironrdp-core/src/rdp/server_license/server_license_request/cert.rs diff --git a/ironrdp/src/rdp/server_license/server_license_request/test.rs b/ironrdp-core/src/rdp/server_license/server_license_request/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/server_license_request/test.rs rename to ironrdp-core/src/rdp/server_license/server_license_request/test.rs diff --git a/ironrdp/src/rdp/server_license/server_platform_challenge.rs b/ironrdp-core/src/rdp/server_license/server_platform_challenge.rs similarity index 100% rename from ironrdp/src/rdp/server_license/server_platform_challenge.rs rename to ironrdp-core/src/rdp/server_license/server_platform_challenge.rs diff --git a/ironrdp/src/rdp/server_license/server_platform_challenge/test.rs b/ironrdp-core/src/rdp/server_license/server_platform_challenge/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/server_platform_challenge/test.rs rename to ironrdp-core/src/rdp/server_license/server_platform_challenge/test.rs diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license.rs b/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs similarity index 99% rename from ironrdp/src/rdp/server_license/server_upgrade_license.rs rename to ironrdp-core/src/rdp/server_license/server_upgrade_license.rs index e31c3984..15c496a7 100644 --- a/ironrdp/src/rdp/server_license/server_upgrade_license.rs +++ b/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs @@ -9,7 +9,7 @@ use super::{ read_license_header, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, PreambleType, ServerLicenseError, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE, UTF16_NULL_TERMINATOR_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; -use crate::utils::rc4::Rc4; +use crate::crypto::rc4::Rc4; use crate::utils::CharacterSet; use crate::{utils, PduParsing}; diff --git a/ironrdp/src/rdp/server_license/server_upgrade_license/test.rs b/ironrdp-core/src/rdp/server_license/server_upgrade_license/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/server_upgrade_license/test.rs rename to ironrdp-core/src/rdp/server_license/server_upgrade_license/test.rs diff --git a/ironrdp/src/rdp/server_license/test.rs b/ironrdp-core/src/rdp/server_license/test.rs similarity index 100% rename from ironrdp/src/rdp/server_license/test.rs rename to ironrdp-core/src/rdp/server_license/test.rs diff --git a/ironrdp/src/rdp/session_info.rs b/ironrdp-core/src/rdp/session_info.rs similarity index 79% rename from ironrdp/src/rdp/session_info.rs rename to ironrdp-core/src/rdp/session_info.rs index dcd4240f..6a5c2057 100644 --- a/ironrdp/src/rdp/session_info.rs +++ b/ironrdp-core/src/rdp/session_info.rs @@ -1,11 +1,11 @@ use std::io; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; #[cfg(test)] mod tests; @@ -100,28 +100,26 @@ pub enum InfoData { LogonExtended(LogonInfoExtended), } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum SessionError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid save session info type value")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid save session info type value")] InvalidSaveSessionInfoType, - #[fail(display = "Invalid domain name size value")] + #[error("Invalid domain name size value")] InvalidDomainNameSize, - #[fail(display = "Invalid user name size value")] + #[error("Invalid user name size value")] InvalidUserNameSize, - #[fail(display = "Invalid logon version value")] + #[error("Invalid logon version value")] InvalidLogonVersion2, - #[fail(display = "Invalid logon info version2 size value")] + #[error("Invalid logon info version2 size value")] InvalidLogonVersion2Size, - #[fail(display = "Invalid server auto-reconnect packet size value")] + #[error("Invalid server auto-reconnect packet size value")] InvalidAutoReconnectPacketSize, - #[fail(display = "Invalid server auto-reconnect version")] + #[error("Invalid server auto-reconnect version")] InvalidAutoReconnectVersion, - #[fail(display = "Invalid logon error type value")] + #[error("Invalid logon error type value")] InvalidLogonErrorType, - #[fail(display = "Invalid logon error data value")] + #[error("Invalid logon error data value")] InvalidLogonErrorData, } - -impl_from_error!(io::Error, SessionError, SessionError::IOError); diff --git a/ironrdp/src/rdp/session_info/logon_extended.rs b/ironrdp-core/src/rdp/session_info/logon_extended.rs similarity index 100% rename from ironrdp/src/rdp/session_info/logon_extended.rs rename to ironrdp-core/src/rdp/session_info/logon_extended.rs diff --git a/ironrdp/src/rdp/session_info/logon_info.rs b/ironrdp-core/src/rdp/session_info/logon_info.rs similarity index 96% rename from ironrdp/src/rdp/session_info/logon_info.rs rename to ironrdp-core/src/rdp/session_info/logon_info.rs index ef1ccb32..bfb63acf 100644 --- a/ironrdp/src/rdp/session_info/logon_info.rs +++ b/ironrdp-core/src/rdp/session_info/logon_info.rs @@ -53,9 +53,9 @@ impl PduParsing for LogonInfoVersion1 { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - let mut domain_name_buffer = utils::string_to_utf16(self.logon_info.domain_name.as_ref()); + let mut domain_name_buffer = utils::to_utf16_bytes(self.logon_info.domain_name.as_ref()); domain_name_buffer.resize(DOMAIN_NAME_SIZE_V1 - 2, 0); - let mut user_name_buffer = utils::string_to_utf16(self.logon_info.user_name.as_ref()); + let mut user_name_buffer = utils::to_utf16_bytes(self.logon_info.user_name.as_ref()); user_name_buffer.resize(USER_NAME_SIZE_V1 - 2, 0); stream.write_u32::(((self.logon_info.domain_name.len() + 1) * 2) as u32)?; diff --git a/ironrdp/src/rdp/session_info/tests.rs b/ironrdp-core/src/rdp/session_info/tests.rs similarity index 100% rename from ironrdp/src/rdp/session_info/tests.rs rename to ironrdp-core/src/rdp/session_info/tests.rs diff --git a/ironrdp/src/rdp/test.rs b/ironrdp-core/src/rdp/test.rs similarity index 100% rename from ironrdp/src/rdp/test.rs rename to ironrdp-core/src/rdp/test.rs diff --git a/ironrdp/src/rdp/vc.rs b/ironrdp-core/src/rdp/vc.rs similarity index 67% rename from ironrdp/src/rdp/vc.rs rename to ironrdp-core/src/rdp/vc.rs index 543fd75e..ba34c112 100644 --- a/ironrdp/src/rdp/vc.rs +++ b/ironrdp-core/src/rdp/vc.rs @@ -6,10 +6,10 @@ mod tests; use std::{io, str}; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; pub const DRDYNVC_CHANNEL_NAME: &str = "drdynvc"; @@ -59,36 +59,30 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum ChannelError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "From UTF8 error: {}", _0)] - FromUtf8Error(#[fail(cause)] std::string::FromUtf8Error), - #[fail(display = "Invalid channel PDU header")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("From UTF8 error: {}", _0)] + FromUtf8Error(#[from] std::string::FromUtf8Error), + #[error("Invalid channel PDU header")] InvalidChannelPduHeader, - #[fail(display = "Invalid channel total data length")] + #[error("Invalid channel total data length")] InvalidChannelTotalDataLength, - #[fail(display = "Invalid DVC PDU type")] + #[error("Invalid DVC PDU type")] InvalidDvcPduType, - #[fail(display = "Invalid DVC id length value")] + #[error("Invalid DVC id length value")] InvalidDVChannelIdLength, - #[fail(display = "Invalid DVC data length value")] + #[error("Invalid DVC data length value")] InvalidDvcDataLength, - #[fail(display = "Invalid DVC capabilities version")] + #[error("Invalid DVC capabilities version")] InvalidDvcCapabilitiesVersion, - #[fail(display = "Invalid DVC message size")] + #[error("Invalid DVC message size")] InvalidDvcMessageSize, - #[fail( - display = "Invalid DVC total message size: actual ({}) > expected ({})", - actual, expected - )] + #[error("Invalid DVC total message size: actual ({actual}) > expected ({expected})")] InvalidDvcTotalMessageSize { actual: usize, expected: usize }, } -impl_from_error!(io::Error, ChannelError, ChannelError::IOError); -impl_from_error!(std::string::FromUtf8Error, ChannelError, ChannelError::FromUtf8Error); - impl From for io::Error { fn from(e: ChannelError) -> io::Error { io::Error::new(io::ErrorKind::Other, format!("Virtual channel error: {}", e)) diff --git a/ironrdp/src/rdp/vc/dvc.rs b/ironrdp-core/src/rdp/vc/dvc.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc.rs rename to ironrdp-core/src/rdp/vc/dvc.rs diff --git a/ironrdp/src/rdp/vc/dvc/capabilities.rs b/ironrdp-core/src/rdp/vc/dvc/capabilities.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/capabilities.rs rename to ironrdp-core/src/rdp/vc/dvc/capabilities.rs diff --git a/ironrdp/src/rdp/vc/dvc/capabilities/tests.rs b/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/capabilities/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/close.rs b/ironrdp-core/src/rdp/vc/dvc/close.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/close.rs rename to ironrdp-core/src/rdp/vc/dvc/close.rs diff --git a/ironrdp/src/rdp/vc/dvc/close/tests.rs b/ironrdp-core/src/rdp/vc/dvc/close/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/close/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/close/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/create.rs b/ironrdp-core/src/rdp/vc/dvc/create.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/create.rs rename to ironrdp-core/src/rdp/vc/dvc/create.rs diff --git a/ironrdp/src/rdp/vc/dvc/create/tests.rs b/ironrdp-core/src/rdp/vc/dvc/create/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/create/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/create/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/data.rs b/ironrdp-core/src/rdp/vc/dvc/data.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/data.rs rename to ironrdp-core/src/rdp/vc/dvc/data.rs diff --git a/ironrdp/src/rdp/vc/dvc/data/tests.rs b/ironrdp-core/src/rdp/vc/dvc/data/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/data/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/data/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/data_first.rs b/ironrdp-core/src/rdp/vc/dvc/data_first.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/data_first.rs rename to ironrdp-core/src/rdp/vc/dvc/data_first.rs diff --git a/ironrdp/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/data_first/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs diff --git a/ironrdp/src/rdp/vc/dvc/display.rs b/ironrdp-core/src/rdp/vc/dvc/display.rs similarity index 94% rename from ironrdp/src/rdp/vc/dvc/display.rs rename to ironrdp-core/src/rdp/vc/dvc/display.rs index 1e6fc0c6..bac6266f 100644 --- a/ironrdp/src/rdp/vc/dvc/display.rs +++ b/ironrdp-core/src/rdp/vc/dvc/display.rs @@ -1,15 +1,13 @@ -// #[cfg(test)] -// mod test; - use std::io::{self, Read, Write}; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; -use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; - -use crate::{impl_from_error, PduParsing}; use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; + +use crate::PduParsing; + const RDP_DISPLAY_HEADER_SIZE: usize = 8; #[derive(Debug, Clone, PartialEq, Eq)] @@ -289,14 +287,12 @@ impl<'a> From<&'a ClientPdu> for ClientPduType { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum DisplayPipelineError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid Header cmd ID")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid Header cmd ID")] InvalidCmdId, - #[fail(display = "Invalid PDU length: expected ({}) != actual ({})", expected, actual)] + #[error("Invalid PDU length: expected ({expected}) != actual ({actual})")] InvalidPduLength { expected: usize, actual: usize }, } - -impl_from_error!(io::Error, DisplayPipelineError, DisplayPipelineError::IOError); diff --git a/ironrdp/src/rdp/vc/dvc/gfx.rs b/ironrdp-core/src/rdp/vc/dvc/gfx.rs similarity index 93% rename from ironrdp/src/rdp/vc/dvc/gfx.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx.rs index 88b4d85f..bdb70f67 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx.rs +++ b/ironrdp-core/src/rdp/vc/dvc/gfx.rs @@ -1,13 +1,11 @@ -pub mod zgfx; - mod graphics_messages; + #[cfg(test)] mod test; use std::io; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use failure::Fail; use graphics_messages::RESET_GRAPHICS_PDU_SIZE; pub use graphics_messages::{ Avc420BitmapStream, Avc444BitmapStream, CacheImportReplyPdu, CacheToSurfacePdu, CapabilitiesAdvertisePdu, @@ -19,9 +17,10 @@ pub use graphics_messages::{ WireToSurface1Pdu, WireToSurface2Pdu, }; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use thiserror::Error; -use crate::{impl_from_error, PduParsing}; +use crate::PduParsing; const RDP_GFX_HEADER_SIZE: usize = 8; @@ -300,31 +299,20 @@ impl<'a> From<&'a ServerPdu> for ServerPduType { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum GraphicsPipelineError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Graphics messages error: {}", _0)] - GraphicsMessagesError(#[fail(cause)] graphics_messages::GraphicsMessagesError), - #[fail(display = "Invalid Header cmd ID")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Graphics messages error")] + GraphicsMessagesError(#[from] graphics_messages::GraphicsMessagesError), + #[error("Invalid Header cmd ID")] InvalidCmdId, - #[fail(display = "Unexpected client's PDU type: {:?}", _0)] + #[error("Unexpected client's PDU type: {0:?}")] UnexpectedClientPduType(ClientPduType), - #[fail(display = "Unexpected server's PDU type: {:?}", _0)] + #[error("Unexpected server's PDU type: {0:?}")] UnexpectedServerPduType(ServerPduType), - #[fail( - display = "Invalid ResetGraphics PDU size: expected ({}) != actual ({})", - expected, actual - )] + #[error("Invalid ResetGraphics PDU size: expected ({expected}) != actual ({actual})")] InvalidResetGraphicsPduSize { expected: usize, actual: usize }, - #[fail(display = "Invalid PDU length: expected ({}) != actual ({})", expected, actual)] + #[error("Invalid PDU length: expected ({expected}) != actual ({actual})")] InvalidPduLength { expected: usize, actual: usize }, } - -impl_from_error!(io::Error, GraphicsPipelineError, GraphicsPipelineError::IOError); - -impl_from_error!( - graphics_messages::GraphicsMessagesError, - GraphicsPipelineError, - GraphicsPipelineError::GraphicsMessagesError -); diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages.rs similarity index 90% rename from ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages.rs index b731e0fa..583db0cd 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -5,24 +5,24 @@ pub mod test; use std::io; mod avc_messages; +pub use avc_messages::{Avc420BitmapStream, Avc444BitmapStream, Encoding, QuantQuality}; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; pub use client::{CacheImportReplyPdu, CapabilitiesAdvertisePdu, FrameAcknowledgePdu, QueueDepth}; -use failure::Fail; use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive as _, ToPrimitive as _}; pub use server::{ CacheToSurfacePdu, CapabilitiesConfirmPdu, Codec1Type, Codec2Type, CreateSurfacePdu, DeleteEncodingContextPdu, DeleteSurfacePdu, EndFramePdu, EvictCacheEntryPdu, MapSurfaceToOutputPdu, MapSurfaceToScaledOutputPdu, MapSurfaceToScaledWindowPdu, PixelFormat, ResetGraphicsPdu, SolidFillPdu, StartFramePdu, SurfaceToCachePdu, SurfaceToSurfacePdu, Timestamp, WireToSurface1Pdu, WireToSurface2Pdu, RESET_GRAPHICS_PDU_SIZE, }; +use thiserror::Error; use super::RDP_GFX_HEADER_SIZE; use crate::gcc::MonitorDataError; -use crate::utils::Rectangle; -use crate::{impl_from_error, PduParsing}; -pub use avc_messages::{Avc420BitmapStream, Avc444BitmapStream, Encoding, QuantQuality}; +use crate::geometry::Rectangle; +use crate::PduParsing; const CAPABILITY_SET_HEADER_SIZE: usize = 8; @@ -279,34 +279,26 @@ bitflags! { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum GraphicsMessagesError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid codec ID version 1")] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid codec ID version 1")] InvalidCodec1Id, - #[fail(display = "Invalid codec ID version 2")] + #[error("Invalid codec ID version 2")] InvalidCodec2Id, - #[fail(display = "Invalid pixel format")] + #[error("Invalid pixel format")] InvalidFixelFormat, - #[fail(display = "Monitor error: {}", _0)] - MonitorError(#[fail(cause)] MonitorDataError), - #[fail(display = "Invalid ResetGraphics PDU width: {} > MAX ({})", actual, max)] + #[error("Monitor error")] + MonitorError(#[from] MonitorDataError), + #[error("Invalid ResetGraphics PDU width: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduWidth { actual: u32, max: u32 }, - #[fail(display = "Invalid ResetGraphics PDU height: {} > MAX ({})", actual, max)] + #[error("Invalid ResetGraphics PDU height: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduHeight { actual: u32, max: u32 }, - #[fail(display = "Invalid ResetGraphics PDU monitors count: {} > MAX ({})", actual, max)] + #[error("Invalid ResetGraphics PDU monitors count: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduMonitorsCount { actual: u32, max: u32 }, - #[fail(display = "Invalid capabilities version")] + #[error("Invalid capabilities version")] InvalidCapabilitiesVersion, - #[fail(display = "Both luma and chroma packets specified but length is missing")] + #[error("Both luma and chroma packets specified but length is missing")] InvalidAvcEncoding, } - -impl_from_error!(io::Error, GraphicsMessagesError, GraphicsMessagesError::IOError); - -impl_from_error!( - MonitorDataError, - GraphicsMessagesError, - GraphicsMessagesError::MonitorError -); diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs similarity index 97% rename from ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs index 3573667b..f2dc7c46 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs +++ b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs @@ -1,11 +1,14 @@ -use std::{fmt::Debug, io::Write}; +use std::fmt::Debug; +use std::io::Write; -use super::GraphicsMessagesError; -use crate::{PduBufferParsing, PduParsing, Rectangle}; use bit_field::BitField; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use super::GraphicsMessagesError; +use crate::geometry::Rectangle; +use crate::{PduBufferParsing, PduParsing}; + #[derive(Debug, Clone, PartialEq, Eq)] pub struct QuantQuality { pub quantization_parameter: u8, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/client.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/client.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/client.rs diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/server.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/server.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/server.rs diff --git a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs similarity index 99% rename from ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 143a46d5..3d9cf672 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -1,10 +1,8 @@ use lazy_static::lazy_static; use super::*; -use crate::{ - gcc::{Monitor, MonitorFlags}, - PduBufferParsing, -}; +use crate::gcc::{Monitor, MonitorFlags}; +use crate::PduBufferParsing; pub const WIRE_TO_SURFACE_1_BUFFER: [u8; 218] = [ 0x00, 0x00, 0x08, 0x00, 0x20, 0xa5, 0x03, 0xde, 0x02, 0xab, 0x03, 0xe7, 0x02, 0xc9, 0x00, 0x00, 0x00, 0x01, 0x0e, diff --git a/ironrdp/src/rdp/vc/dvc/gfx/test.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/test.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/gfx/test.rs rename to ironrdp-core/src/rdp/vc/dvc/gfx/test.rs diff --git a/ironrdp/src/rdp/vc/dvc/tests.rs b/ironrdp-core/src/rdp/vc/dvc/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/tests.rs rename to ironrdp-core/src/rdp/vc/dvc/tests.rs diff --git a/ironrdp/src/rdp/vc/tests.rs b/ironrdp-core/src/rdp/vc/tests.rs similarity index 100% rename from ironrdp/src/rdp/vc/tests.rs rename to ironrdp-core/src/rdp/vc/tests.rs diff --git a/ironrdp-core/src/utils.rs b/ironrdp-core/src/utils.rs new file mode 100644 index 00000000..533180b0 --- /dev/null +++ b/ironrdp-core/src/utils.rs @@ -0,0 +1,94 @@ +use std::io; + +use byteorder::{LittleEndian, ReadBytesExt as _, WriteBytesExt as _}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::ToPrimitive as _; + +pub(crate) fn to_utf16_bytes(value: &str) -> Vec { + value + .encode_utf16() + .flat_map(|i| i.to_le_bytes().to_vec()) + .collect::>() +} + +pub(crate) fn from_utf16_bytes(mut value: &[u8]) -> String { + let mut value_u16 = vec![0x00; value.len() / 2]; + value + .read_u16_into::(value_u16.as_mut()) + .expect("read_u16_into cannot fail at this point"); + + String::from_utf16_lossy(value_u16.as_ref()) +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] +pub(crate) enum CharacterSet { + Ansi = 1, + Unicode = 2, +} + +pub(crate) fn read_string( + mut stream: impl io::Read, + size: usize, + character_set: CharacterSet, + read_null_terminator: bool, +) -> io::Result { + let size = size + + if read_null_terminator { + character_set.to_usize().unwrap() + } else { + 0 + }; + let mut buffer = vec![0; size]; + stream.read_exact(&mut buffer)?; + + let result = match character_set { + CharacterSet::Unicode => from_utf16_bytes(buffer.as_slice()), + CharacterSet::Ansi => String::from_utf8(buffer) + .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("the string is not utf8: {}", e)))?, + }; + + Ok(result.trim_end_matches('\0').into()) +} + +pub(crate) fn write_string_with_null_terminator( + mut stream: impl io::Write, + value: &str, + character_set: CharacterSet, +) -> io::Result<()> { + match character_set { + CharacterSet::Unicode => { + stream.write_all(to_utf16_bytes(value).as_ref())?; + stream.write_u16::(0) + } + CharacterSet::Ansi => { + stream.write_all(value.as_bytes())?; + stream.write_u8(0) + } + } +} + +pub trait SplitTo { + fn split_to(&mut self, n: usize) -> Self; +} + +impl SplitTo for &[T] { + fn split_to(&mut self, n: usize) -> Self { + assert!(n <= self.len()); + + let (a, b) = self.split_at(n); + *self = b; + + a + } +} + +impl SplitTo for &mut [T] { + fn split_to(&mut self, n: usize) -> Self { + assert!(n <= self.len()); + + let (a, b) = std::mem::take(self).split_at_mut(n); + *self = b; + + a + } +} diff --git a/ironrdp/src/x224.rs b/ironrdp-core/src/x224.rs similarity index 100% rename from ironrdp/src/x224.rs rename to ironrdp-core/src/x224.rs diff --git a/ironrdp/src/x224/tests.rs b/ironrdp-core/src/x224/tests.rs similarity index 100% rename from ironrdp/src/x224/tests.rs rename to ironrdp-core/src/x224/tests.rs diff --git a/ironrdp-devolutions-gateway/Cargo.toml b/ironrdp-devolutions-gateway/Cargo.toml new file mode 100644 index 00000000..9b696633 --- /dev/null +++ b/ironrdp-devolutions-gateway/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "ironrdp-devolutions-gateway" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[dependencies] diff --git a/ironrdp-devolutions-gateway/README.md b/ironrdp-devolutions-gateway/README.md new file mode 100644 index 00000000..708346d3 --- /dev/null +++ b/ironrdp-devolutions-gateway/README.md @@ -0,0 +1,3 @@ +# IronRDP Devolutions Gateway + +Devolutions Gateway extensions for IronRDP. diff --git a/ironrdp-devolutions-gateway/src/lib.rs b/ironrdp-devolutions-gateway/src/lib.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ironrdp-devolutions-gateway/src/lib.rs @@ -0,0 +1 @@ + diff --git a/ironrdp-graphics/Cargo.toml b/ironrdp-graphics/Cargo.toml new file mode 100644 index 00000000..957b7402 --- /dev/null +++ b/ironrdp-graphics/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "ironrdp-graphics" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[dependencies] +ironrdp-core = { path = "../ironrdp-core" } +num-traits = "0.2.14" +num-derive = "0.3.3" +byteorder = "1.4.3" +thiserror = "1.0.37" +bitvec = "1.0.0" +bit_field = "0.10.1" +bitflags = "1.3.2" +lazy_static = "1.4.0" + +[dev-dependencies] +hex-literal = "0.3.4" +proptest = "1.0.0" diff --git a/ironrdp-graphics/README.md b/ironrdp-graphics/README.md new file mode 100644 index 00000000..253f023d --- /dev/null +++ b/ironrdp-graphics/README.md @@ -0,0 +1,3 @@ +# IronRDP Graphics + +Image processing primitives and algorithms for RDP (ZGFX, DWT…). diff --git a/ironrdp/src/codecs/rfx/color_conversion.rs b/ironrdp-graphics/src/color_conversion.rs similarity index 95% rename from ironrdp/src/codecs/rfx/color_conversion.rs rename to ironrdp-graphics/src/color_conversion.rs index 37f01424..d05187c0 100644 --- a/ironrdp/src/codecs/rfx/color_conversion.rs +++ b/ironrdp-graphics/src/color_conversion.rs @@ -1,11 +1,6 @@ -#[cfg(test)] -mod tests; - use std::cmp::{max, min}; use std::io::{self, Write}; -// TODO: extract in an auxiliary crate? ironrdp-utils? Try to keep core small - const DIVISOR: f32 = (1 << 16) as f32; const ALPHA: u8 = 255; diff --git a/ironrdp/src/codecs/rfx/dwt.rs b/ironrdp-graphics/src/dwt.rs similarity index 98% rename from ironrdp/src/codecs/rfx/dwt.rs rename to ironrdp-graphics/src/dwt.rs index 9385ef99..44d87843 100644 --- a/ironrdp/src/codecs/rfx/dwt.rs +++ b/ironrdp-graphics/src/dwt.rs @@ -1,7 +1,4 @@ -#[cfg(test)] -mod tests; - -use crate::utils::SplitTo; +use ironrdp_core::utils::SplitTo as _; pub fn decode(buffer: &mut [i16], temp_buffer: &mut [i16]) { decode_block(&mut buffer[3840..], temp_buffer, 8); diff --git a/ironrdp/src/codecs/rfx/image_processing.rs b/ironrdp-graphics/src/image_processing.rs similarity index 98% rename from ironrdp/src/codecs/rfx/image_processing.rs rename to ironrdp-graphics/src/image_processing.rs index f67d2781..94980bf8 100644 --- a/ironrdp/src/codecs/rfx/image_processing.rs +++ b/ironrdp-graphics/src/image_processing.rs @@ -1,13 +1,9 @@ -#[cfg(test)] -mod tests; - use std::io; use byteorder::WriteBytesExt; +use ironrdp_core::geometry::Rectangle; use num_derive::ToPrimitive; -use num_traits::ToPrimitive; - -use crate::utils::Rectangle; +use num_traits::ToPrimitive as _; const MIN_ALPHA: u8 = 0x00; const MAX_ALPHA: u8 = 0xff; diff --git a/ironrdp-graphics/src/lib.rs b/ironrdp-graphics/src/lib.rs new file mode 100644 index 00000000..7672b4b0 --- /dev/null +++ b/ironrdp-graphics/src/lib.rs @@ -0,0 +1,10 @@ +pub mod color_conversion; +pub mod dwt; +pub mod image_processing; +pub mod quantization; +pub mod rectangle_processing; +pub mod rlgr; +pub mod subband_reconstruction; +pub mod zgfx; + +mod utils; diff --git a/ironrdp/src/codecs/rfx/quantization.rs b/ironrdp-graphics/src/quantization.rs similarity index 99% rename from ironrdp/src/codecs/rfx/quantization.rs rename to ironrdp-graphics/src/quantization.rs index 17559e74..3e512ad0 100644 --- a/ironrdp/src/codecs/rfx/quantization.rs +++ b/ironrdp-graphics/src/quantization.rs @@ -1,4 +1,4 @@ -use super::Quant; +use ironrdp_core::codecs::rfx::Quant; const FIRST_LEVEL_SIZE: usize = 1024; const SECOND_LEVEL_SIZE: usize = 256; diff --git a/ironrdp-graphics/src/rectangle_processing.rs b/ironrdp-graphics/src/rectangle_processing.rs new file mode 100644 index 00000000..8829585f --- /dev/null +++ b/ironrdp-graphics/src/rectangle_processing.rs @@ -0,0 +1,1623 @@ +use std::cmp::{max, min}; + +use ironrdp_core::geometry::Rectangle; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Region { + pub extents: Rectangle, + pub rectangles: Vec, +} + +impl Region { + pub fn new() -> Self { + Self { + extents: Rectangle::empty(), + rectangles: Vec::new(), + } + } + + pub fn union_rectangle(&mut self, rectangle: Rectangle) { + if self.rectangles.is_empty() { + *self = Self::from(rectangle); + } else { + let mut dst = Vec::with_capacity(self.rectangles.len() + 1); + + handle_rectangle_higher_relative_to_extents(&rectangle, &self.extents, &mut dst); + + // treat possibly overlapping region + let bands = split_bands(self.rectangles.as_slice()); + let mut bands = bands.as_slice(); + while let Some((band, bands_new)) = bands.split_first() { + bands = bands_new; + + let top_inter_band = if band[0].bottom <= rectangle.top + || rectangle.bottom <= band[0].top + || rectangle_in_band(band, &rectangle) + { + // `rectangle` is lower, higher, or in the current band + dst.extend_from_slice(band); + + rectangle.top + } else { + handle_rectangle_that_overlaps_band(&rectangle, band, &mut dst); + + band[0].bottom + }; + + if !bands.is_empty() { + let next_band = bands[0]; + handle_rectangle_between_bands(&rectangle, band, next_band, &mut dst, top_inter_band); + } + } + + handle_rectangle_lower_relative_to_extents(&rectangle, &self.extents, &mut dst); + + self.rectangles = dst; + self.extents = self.extents.union(&rectangle); + + self.simplify(); + } + } + + pub fn intersect_rectangle(&self, rectangle: &Rectangle) -> Self { + match self.rectangles.len() { + 0 => Self::new(), + 1 => self.extents.intersect(rectangle).map(Self::from).unwrap_or_default(), + _ => { + let rectangles = self + .rectangles + .iter() + .take_while(|r| r.top < rectangle.bottom) + .filter_map(|r| r.intersect(rectangle)) + .collect::>(); + let extents = Rectangle::union_all(rectangles.as_slice()); + + let mut region = Self { rectangles, extents }; + region.simplify(); + + region + } + } + } + + fn simplify(&mut self) { + /* Simplify consecutive bands that touch and have the same items + * + * ==================== ==================== + * | 1 | | 2 | | | | | + * ==================== | | | | + * | 1 | | 2 | ====> | 1 | | 2 | + * ==================== | | | | + * | 1 | | 2 | | | | | + * ==================== ==================== + * + */ + + if self.rectangles.len() < 2 { + return; + } + + let mut current_band_start = 0; + while current_band_start < self.rectangles.len() + && current_band_start + get_current_band(&self.rectangles[current_band_start..]).len() + < self.rectangles.len() + { + let current_band = get_current_band(&self.rectangles[current_band_start..]); + let next_band = get_current_band(&self.rectangles[current_band_start + current_band.len()..]); + + if current_band[0].bottom == next_band[0].top && bands_internals_equal(current_band, next_band) { + let first_band_len = current_band.len(); + let second_band_len = next_band.len(); + let second_band_bottom = next_band[0].bottom; + self.rectangles + .drain(current_band_start + first_band_len..current_band_start + first_band_len + second_band_len); + self.rectangles + .iter_mut() + .skip(current_band_start) + .take(first_band_len) + .for_each(|r| r.bottom = second_band_bottom); + } else { + current_band_start += current_band.len(); + } + } + } +} + +impl Default for Region { + fn default() -> Self { + Self::new() + } +} + +impl From for Region { + fn from(r: Rectangle) -> Self { + Self { + extents: r.clone(), + rectangles: vec![r], + } + } +} + +fn handle_rectangle_higher_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { + if rectangle.top < extents.top { + dst.push(Rectangle { + top: rectangle.top, + bottom: min(extents.top, rectangle.bottom), + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn handle_rectangle_lower_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { + if extents.bottom < rectangle.bottom { + dst.push(Rectangle { + top: max(extents.bottom, rectangle.top), + bottom: rectangle.bottom, + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn handle_rectangle_that_overlaps_band(rectangle: &Rectangle, band: &[Rectangle], dst: &mut Vec) { + /* rect overlaps the band: + | | | | + ====^=================| |==| |=========================== band + | top split | | | | + v | 1 | | 2 | + ^ | | | | +----+ +----+ + | merge zone | | | | | | | 4 | + v +----+ | | | | +----+ + ^ | | | 3 | + | bottom split | | | | + ====v=========================| |==| |=================== + | | | | + + possible cases: + 1) no top split, merge zone then a bottom split. The band will be splitted + in two + 2) not band split, only the merge zone, band merged with rect but not splitted + 3) a top split, the merge zone and no bottom split. The band will be split + in two + 4) a top split, the merge zone and also a bottom split. The band will be + splitted in 3, but the coalesce algorithm may merge the created bands + */ + + let band_top = band[0].top; + let band_bottom = band[0].bottom; + + if band_top < rectangle.top { + // split current band by the current band top and `rectangle.top` (case 3, 4) + copy_band(band, dst, band_top, rectangle.top); + } + + // split the merge zone (all cases) + copy_band_with_union( + band, + dst, + max(rectangle.top, band_top), + min(rectangle.bottom, band_bottom), + rectangle, + ); + + // split current band by the `rectangle.bottom` and the current band bottom (case 1, 4) + if rectangle.bottom < band_bottom { + copy_band(band, dst, rectangle.bottom, band_bottom); + } +} + +fn handle_rectangle_between_bands( + rectangle: &Rectangle, + band: &[Rectangle], + next_band: &[Rectangle], + dst: &mut Vec, + top_inter_band: u16, +) { + /* test if a piece of rect should be inserted as a new band between + * the current band and the next one. band n and n+1 shouldn't touch. + * + * ============================================================== + * band n + * +------+ +------+ + * ===========| rect |====================| |=============== + * | | +------+ | | + * +------+ | rect | | rect | + * +------+ | | + * =======================================| |================ + * +------+ band n+1 + * =============================================================== + * + */ + + let band_bottom = band[0].bottom; + + let next_band_top = next_band[0].top; + if next_band_top != band_bottom && band_bottom < rectangle.bottom && rectangle.top < next_band_top { + dst.push(Rectangle { + top: top_inter_band, + bottom: min(next_band_top, rectangle.bottom), + left: rectangle.left, + right: rectangle.right, + }); + } +} + +fn rectangle_in_band(band: &[Rectangle], rectangle: &Rectangle) -> bool { + // part of `rectangle` is higher or lower + if rectangle.top < band[0].top || band[0].bottom < rectangle.bottom { + return false; + } + + for source_rectangle in band { + if source_rectangle.left <= rectangle.left { + if rectangle.right <= source_rectangle.right { + return true; + } + } else { + // as the band is sorted from left to right, + // once we've seen an item that is after `rectangle.left` + // we are sure that the result is false + return false; + } + } + + false +} + +fn copy_band_with_union( + mut band: &[Rectangle], + dst: &mut Vec, + band_top: u16, + band_bottom: u16, + union_rectangle: &Rectangle, +) { + /* merges a band with the given rect + * Input: + * unionRect + * | | + * | | + * ==============+===============+================================ + * |Item1| |Item2| |Item3| |Item4| |Item5| Band + * ==============+===============+================================ + * before | overlap | after + * + * Resulting band: + * +-----+ +----------------------+ +-----+ + * |Item1| | Item2 | |Item3| + * +-----+ +----------------------+ +-----+ + * + * We first copy as-is items that are before Item2, the first overlapping + * item. + * Then we find the last one that overlap unionRect to agregate Item2, Item3 + * and Item4 to create Item2. + * Finally Item5 is copied as Item3. + * + * When no unionRect is provided, we skip the two first steps to just copy items + */ + + let items_before_union_rectangle = band + .iter() + .map(|r| Rectangle { + top: band_top, + bottom: band_bottom, + left: r.left, + right: r.right, + }) + .take_while(|r| r.right < union_rectangle.left); + let items_before_union_rectangle_len = items_before_union_rectangle.clone().map(|_| 1).sum::(); + dst.extend(items_before_union_rectangle); + band = &band[items_before_union_rectangle_len..]; + + // treat items overlapping with `union_rectangle` + let left = min( + band.first().map(|r| r.left).unwrap_or(union_rectangle.left), + union_rectangle.left, + ); + let mut right = union_rectangle.right; + while !band.is_empty() { + if band[0].right >= union_rectangle.right { + if band[0].left < union_rectangle.right { + right = band[0].right; + band = &band[1..]; + } + break; + } + band = &band[1..]; + } + dst.push(Rectangle { + top: band_top, + bottom: band_bottom, + left, + right, + }); + + // treat remaining items on the same band + copy_band(band, dst, band_top, band_bottom); +} + +fn copy_band(band: &[Rectangle], dst: &mut Vec, band_top: u16, band_bottom: u16) { + dst.extend(band.iter().map(|r| Rectangle { + top: band_top, + bottom: band_bottom, + left: r.left, + right: r.right, + })); +} + +fn split_bands(mut rectangles: &[Rectangle]) -> Vec<&[Rectangle]> { + let mut bands = Vec::new(); + while !rectangles.is_empty() { + let band = get_current_band(rectangles); + rectangles = &rectangles[band.len()..]; + bands.push(band); + } + + bands +} + +fn get_current_band(rectangles: &[Rectangle]) -> &[Rectangle] { + let band_top = rectangles[0].top; + + for i in 1..rectangles.len() { + if rectangles[i].top != band_top { + return &rectangles[..i]; + } + } + + rectangles +} + +fn bands_internals_equal(first_band: &[Rectangle], second_band: &[Rectangle]) -> bool { + if first_band.len() != second_band.len() { + return false; + } + + for (first_band_rect, second_band_rect) in first_band.iter().zip(second_band.iter()) { + if first_band_rect.left != second_band_rect.left || first_band_rect.right != second_band_rect.right { + return false; + } + } + + true +} + +#[cfg(test)] +mod tests { + use lazy_static::lazy_static; + + use super::*; + + lazy_static! { + static ref REGION_FOR_RECTANGLES_INTERSECTION: Region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 11, + bottom: 9, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 7, + top: 1, + right: 8, + bottom: 3, + }, + Rectangle { + left: 9, + top: 1, + right: 11, + bottom: 3, + }, + Rectangle { + left: 7, + top: 3, + right: 11, + bottom: 4, + }, + Rectangle { + left: 3, + top: 4, + right: 6, + bottom: 6, + }, + Rectangle { + left: 7, + top: 4, + right: 11, + bottom: 6, + }, + Rectangle { + left: 1, + top: 6, + right: 3, + bottom: 8, + }, + Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }, + Rectangle { + left: 6, + top: 6, + right: 10, + bottom: 8, + }, + Rectangle { + left: 4, + top: 8, + right: 5, + bottom: 9, + }, + Rectangle { + left: 6, + top: 8, + right: 10, + bottom: 9, + }, + ], + }; + } + + #[test] + fn union_rectangle_sets_extents_and_single_rectangle_for_empty_region() { + let mut region = Region::new(); + + let input_rectangle = Rectangle { + left: 5, + top: 1, + right: 9, + bottom: 2, + }; + + let expected_region = Region { + extents: input_rectangle.clone(), + rectangles: vec![input_rectangle.clone()], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_places_new_rectangle_higher_relative_to_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 1, + right: 9, + bottom: 2, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 9, + bottom: 7, + }, + rectangles: vec![input_rectangle.clone(), existing_band_rectangle], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_places_new_rectangle_lower_relative_to_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }; + + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![existing_band_rectangle, input_rectangle.clone()], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_does_not_add_new_rectangle_which_is_inside_a_band() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle.clone()], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 4, + right: 6, + bottom: 5, + }; + + let expected_region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_cuts_new_rectangle_top_part_which_crosses_band_on_top() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 1, + top: 2, + right: 4, + bottom: 4, + }; + + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 2, + right: 7, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 4, + }, + Rectangle { + left: 2, + top: 4, + right: 7, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_cuts_new_rectangle_lower_part_which_crosses_band_on_bottom() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 5, + top: 6, + right: 9, + bottom: 8, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 9, + bottom: 8, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 6, + }, + Rectangle { + left: 2, + top: 6, + right: 9, + bottom: 7, + }, + Rectangle { + left: 5, + top: 7, + right: 9, + bottom: 8, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_cuts_new_rectangle_higher_and_lower_part_which_crosses_band_on_top_and_bottom() { + let existing_band_rectangle = Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }; + let mut region = Region { + extents: existing_band_rectangle.clone(), + rectangles: vec![existing_band_rectangle], + }; + + let input_rectangle = Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 11, + }; + + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 5, + bottom: 11, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_without_merging_with_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 9, + bottom: 7, + }, + Rectangle { + left: 12, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 10, + top: 3, + right: 11, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 9, + bottom: 7, + }, + Rectangle { + left: 10, + top: 3, + right: 11, + bottom: 7, + }, + Rectangle { + left: 12, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 10, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 9, + top: 3, + right: 14, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles_on_board() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 10, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 10, + top: 3, + right: 13, + bottom: 7, + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 3, + right: 15, + bottom: 7, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 8, + top: 3, + right: 13, + bottom: 7, + }, + Rectangle { + left: 13, + top: 3, + right: 15, + bottom: 7, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn union_rectangle_inserts_new_rectangle_between_two_bands() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }, + ], + }; + + let input_rectangle = Rectangle { + left: 3, + top: 4, + right: 4, + bottom: 9, + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 3, + right: 7, + bottom: 10, + }, + rectangles: vec![ + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 4, + bottom: 8, + }, + Rectangle { + left: 1, + top: 8, + right: 4, + bottom: 10, + }, + ], + }; + + region.union_rectangle(input_rectangle); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_does_not_change_two_different_bands_with_multiple_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 7, + bottom: 3, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_does_not_change_two_different_bands_with_one_rectangle() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_does_not_change_three_different_bands_with_one_rectangle() { + let mut region = Region { + extents: Rectangle { + left: 2, + top: 1, + right: 7, + bottom: 11, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 1, + right: 5, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 7, + bottom: 7, + }, + Rectangle { + left: 3, + top: 7, + right: 5, + bottom: 11, + }, + ], + }; + let expected_region = region.clone(); + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_merges_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 3, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_merges_three_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + Rectangle { + left: 1, + top: 3, + right: 2, + bottom: 4, + }, + Rectangle { + left: 3, + top: 3, + right: 4, + bottom: 4, + }, + Rectangle { + left: 5, + top: 3, + right: 6, + bottom: 4, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 3, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 4, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 4, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 4, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn simplify_merges_two_pairs_of_bands_with_identical_internal_rectangles() { + let mut region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 2, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 2, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 2, + }, + Rectangle { + left: 1, + top: 2, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 2, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 3, + bottom: 4, + }, + Rectangle { + left: 4, + top: 3, + right: 5, + bottom: 4, + }, + Rectangle { + left: 6, + top: 3, + right: 7, + bottom: 4, + }, + Rectangle { + left: 2, + top: 4, + right: 3, + bottom: 5, + }, + Rectangle { + left: 4, + top: 4, + right: 5, + bottom: 5, + }, + Rectangle { + left: 6, + top: 4, + right: 7, + bottom: 5, + }, + ], + }; + let expected_region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 7, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 1, + top: 1, + right: 2, + bottom: 3, + }, + Rectangle { + left: 3, + top: 1, + right: 4, + bottom: 3, + }, + Rectangle { + left: 5, + top: 1, + right: 6, + bottom: 3, + }, + Rectangle { + left: 2, + top: 3, + right: 3, + bottom: 5, + }, + Rectangle { + left: 4, + top: 3, + right: 5, + bottom: 5, + }, + Rectangle { + left: 6, + top: 3, + right: 7, + bottom: 5, + }, + ], + }; + + region.simplify(); + assert_eq!(expected_region, region); + } + + #[test] + fn intersect_rectangle_returns_empty_region_for_not_intersecting_rectangle() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 0, + top: 0, + right: 0, + bottom: 0, + }, + rectangles: vec![], + }; + let input_rectangle = Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); + } + + #[test] + fn intersect_rectangle_returns_empty_region_for_empty_intersection_region() { + let region = Region { + extents: Rectangle { + left: 0, + top: 0, + right: 0, + bottom: 0, + }, + rectangles: vec![], + }; + let expected_region = region.clone(); + let input_rectangle = Rectangle { + left: 5, + top: 2, + right: 6, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); + } + + #[test] + fn intersect_rectangle_returns_part_of_rectangle_that_overlaps_for_region_with_one_rectangle() { + let region = Region { + extents: Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }, + rectangles: vec![Rectangle { + left: 1, + top: 1, + right: 5, + bottom: 3, + }], + }; + let expected_region = Region { + extents: Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }, + rectangles: vec![Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }], + }; + let input_rectangle = Rectangle { + left: 2, + top: 2, + right: 3, + bottom: 3, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); + } + + #[test] + fn intersect_rectangle_returns_region_with_parts_of_rectangles_that_intersect_input_rectangle() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 3, + top: 2, + right: 8, + bottom: 5, + }, + rectangles: vec![ + Rectangle { + left: 3, + top: 2, + right: 5, + bottom: 3, + }, + Rectangle { + left: 7, + top: 2, + right: 8, + bottom: 3, + }, + Rectangle { + left: 7, + top: 3, + right: 8, + bottom: 4, + }, + Rectangle { + left: 3, + top: 4, + right: 6, + bottom: 5, + }, + Rectangle { + left: 7, + top: 4, + right: 8, + bottom: 5, + }, + ], + }; + let input_rectangle = Rectangle { + left: 3, + top: 2, + right: 8, + bottom: 5, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); + } + + #[test] + fn intersect_rectangle_returns_region_with_exact_sizes_of_rectangle_that_overlaps_it() { + let region = &*REGION_FOR_RECTANGLES_INTERSECTION; + let expected_region = Region { + extents: Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }, + rectangles: vec![Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }], + }; + let input_rectangle = Rectangle { + left: 4, + top: 6, + right: 5, + bottom: 8, + }; + + let actual_region = region.intersect_rectangle(&input_rectangle); + assert_eq!(expected_region, actual_region); + } +} diff --git a/ironrdp/src/codecs/rfx/rlgr.rs b/ironrdp-graphics/src/rlgr.rs similarity index 95% rename from ironrdp/src/codecs/rfx/rlgr.rs rename to ironrdp-graphics/src/rlgr.rs index 22d63152..70ff0153 100644 --- a/ironrdp/src/codecs/rfx/rlgr.rs +++ b/ironrdp-graphics/src/rlgr.rs @@ -1,16 +1,12 @@ -#[cfg(test)] -mod tests; - use std::cmp::min; use std::io; use bitvec::field::BitField as _; use bitvec::order::Msb0; use bitvec::slice::BitSlice; -use failure::Fail; +use ironrdp_core::codecs::rfx::EntropyAlgorithm; +use thiserror::Error; -use super::EntropyAlgorithm; -use crate::impl_from_error; use crate::utils::Bits; const KP_MAX: u32 = 80; @@ -31,7 +27,6 @@ macro_rules! write_byte { }; } -#[macro_export] macro_rules! try_split_bits { ($bits:ident, $n:expr) => { if $bits.len() < $n { @@ -230,12 +225,10 @@ impl From for CompressionMode { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum RlgrError { - #[fail(display = "IO error: {}", _0)] - IoError(#[fail(cause)] io::Error), - #[fail(display = "The input tile is empty")] + #[error("IO error: {0}")] + IoError(#[from] io::Error), + #[error("The input tile is empty")] EmptyTile, } - -impl_from_error!(io::Error, RlgrError, RlgrError::IoError); diff --git a/ironrdp/src/codecs/rfx/subband_reconstruction.rs b/ironrdp-graphics/src/subband_reconstruction.rs similarity index 100% rename from ironrdp/src/codecs/rfx/subband_reconstruction.rs rename to ironrdp-graphics/src/subband_reconstruction.rs diff --git a/ironrdp-graphics/src/utils.rs b/ironrdp-graphics/src/utils.rs new file mode 100644 index 00000000..e854808e --- /dev/null +++ b/ironrdp-graphics/src/utils.rs @@ -0,0 +1,36 @@ +use std::ops; + +use bitvec::prelude::{BitSlice, Msb0}; + +pub struct Bits<'a> { + bits_slice: &'a BitSlice, + remaining_bits_of_last_byte: usize, +} + +impl<'a> Bits<'a> { + pub fn new(bits_slice: &'a BitSlice) -> Self { + Self { + bits_slice, + remaining_bits_of_last_byte: 0, + } + } + + pub fn split_to(&mut self, at: usize) -> &'a BitSlice { + let (value, new_bits) = self.bits_slice.split_at(at); + self.bits_slice = new_bits; + self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; + value + } + + pub fn remaining_bits_of_last_byte(&self) -> usize { + self.remaining_bits_of_last_byte + } +} + +impl ops::Deref for Bits<'_> { + type Target = BitSlice; + + fn deref(&self) -> &Self::Target { + self.bits_slice + } +} diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs b/ironrdp-graphics/src/zgfx/circular_buffer.rs similarity index 100% rename from ironrdp/src/rdp/vc/dvc/gfx/zgfx/circular_buffer.rs rename to ironrdp-graphics/src/zgfx/circular_buffer.rs diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs b/ironrdp-graphics/src/zgfx/control_messages.rs similarity index 98% rename from ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs rename to ironrdp-graphics/src/zgfx/control_messages.rs index c04d1ffa..9a5defa8 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/control_messages.rs +++ b/ironrdp-graphics/src/zgfx/control_messages.rs @@ -1,8 +1,8 @@ use bit_field::BitField; use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt}; +use byteorder::{LittleEndian, ReadBytesExt as _}; use num_derive::FromPrimitive; -use num_traits::FromPrimitive; +use num_traits::FromPrimitive as _; use super::ZgfxError; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs b/ironrdp-graphics/src/zgfx/mod.rs similarity index 86% rename from ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs rename to ironrdp-graphics/src/zgfx/mod.rs index 0ea1cf7c..0278cabb 100644 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx/tests.rs +++ b/ironrdp-graphics/src/zgfx/mod.rs @@ -1,199 +1,651 @@ -use hex_literal::hex; -use lazy_static::lazy_static; +//! ZGFX (RDP8) Bulk Data Compression -use super::*; +mod circular_buffer; +mod control_messages; -lazy_static! { - static ref ENCODED_ZGFX_SINGLE: [Vec; 5] = { - [ +use std::io::{self, Write}; + +use bitvec::bits; +use bitvec::field::BitField as _; +use bitvec::order::Msb0; +use bitvec::slice::BitSlice; +use byteorder::WriteBytesExt; +use thiserror::Error; + +use self::circular_buffer::FixedCircularBuffer; +use self::control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; +use crate::utils::Bits; + +const HISTORY_SIZE: usize = 2_500_000; + +pub struct Decompressor { + history: FixedCircularBuffer, +} + +impl Decompressor { + pub fn new() -> Self { + Self { + history: FixedCircularBuffer::new(HISTORY_SIZE), + } + } + + pub fn decompress(&mut self, input: &[u8], output: &mut Vec) -> Result { + let segmented_data = SegmentedDataPdu::from_buffer(input)?; + + match segmented_data { + SegmentedDataPdu::Single(segment) => self.handle_segment(&segment, output), + SegmentedDataPdu::Multipart { + uncompressed_size, + segments, + } => { + let mut bytes_written = 0; + for segment in segments { + let written = self.handle_segment(&segment, output)?; + bytes_written += written; + } + + if bytes_written != uncompressed_size { + Err(ZgfxError::InvalidDecompressedSize { + decompressed_size: bytes_written, + uncompressed_size, + }) + } else { + Ok(bytes_written) + } + } + } + } + + fn handle_segment(&mut self, segment: &BulkEncodedData<'_>, output: &mut Vec) -> Result { + if !segment.data.is_empty() { + if segment.compression_flags.contains(CompressionFlags::COMPRESSED) { + self.decompress_segment(segment.data, output) + } else { + self.history.write_all(segment.data)?; + output.extend_from_slice(segment.data); + + Ok(segment.data.len()) + } + } else { + Ok(0) + } + } + + fn decompress_segment(&mut self, encoded_data: &[u8], output: &mut Vec) -> Result { + let mut bits = BitSlice::from_slice(encoded_data); + + // The value of the last byte indicates the number of unused bits in the final byte + bits = &bits[..8 * (encoded_data.len() - 1) - *encoded_data.last().unwrap() as usize]; + let mut bits = Bits::new(bits); + let mut bytes_written = 0; + + while !bits.is_empty() { + let token = TOKEN_TABLE + .iter() + .find(|token| token.prefix == bits[..token.prefix.len()]) + .ok_or(ZgfxError::TokenBitsNotFound)?; + let _prefix = bits.split_to(token.prefix.len()); + + match token.ty { + TokenType::NullLiteral => { + // The prefix value is encoded with a "0" prefix, + // then read 8 bits containing the byte to output. + let value = bits.split_to(8).load_be::(); + + self.history.write_u8(value)?; + output.push(value); + bytes_written += 1; + } + TokenType::Literal { literal_value } => { + self.history + .write_u8(literal_value) + .expect("circular buffer does not fail"); + output.push(literal_value); + bytes_written += 1; + } + TokenType::Match { + distance_value_size, + distance_base, + } => { + let written = + handle_match(&mut bits, distance_value_size, distance_base, &mut self.history, output)?; + bytes_written += written; + } + } + } + + Ok(bytes_written) + } +} + +impl Default for Decompressor { + fn default() -> Self { + Self::new() + } +} + +fn handle_match( + bits: &mut Bits<'_>, + distance_value_size: usize, + distance_base: u32, + history: &mut FixedCircularBuffer, + output: &mut Vec, +) -> io::Result { + // Each token has been assigned a different base distance + // and number of additional value bits to be added to compute the full distance. + + let distance = (distance_base + bits.split_to(distance_value_size).load_be::()) as usize; + + if distance == 0 { + read_unencoded_bytes(bits, history, output) + } else { + read_encoded_bytes(bits, distance, history, output) + } +} + +fn read_unencoded_bytes( + bits: &mut Bits<'_>, + history: &mut FixedCircularBuffer, + output: &mut Vec, +) -> io::Result { + // A match distance of zero is a special case, + // which indicates that an unencoded run of bytes follows. + // The count of bytes is encoded as a 15-bit value + let length = bits.split_to(15).load_be::() as usize; + + if bits.remaining_bits_of_last_byte() > 0 { + let pad_to_byte_boundary = 8 - bits.remaining_bits_of_last_byte(); + bits.split_to(pad_to_byte_boundary); + } + + let unencoded_bits = bits.split_to(length * 8); + + // FIXME: not very efficient, but we need to rework the `Bits` helper and refactor a bit otherwise + let unencoded_bits = unencoded_bits.to_bitvec(); + let unencoded_bytes = unencoded_bits.as_raw_slice(); + history.write_all(unencoded_bytes)?; + output.extend_from_slice(unencoded_bytes); + + Ok(unencoded_bytes.len()) +} + +fn read_encoded_bytes( + bits: &mut Bits<'_>, + distance: usize, + history: &mut FixedCircularBuffer, + mut output: &mut Vec, +) -> io::Result { + // A match length prefix follows the token and indicates + // how many additional bits will be needed to get the full length + // (the number of bytes to be copied). + + let length_token_size = bits.leading_ones(); + bits.split_to(length_token_size + 1); // length token + zero bit + + let length = if length_token_size == 0 { + // special case + + 3 + } else { + let length = bits.split_to(length_token_size + 1).load_be::() as usize; + + let base = 2u32.pow(length_token_size as u32 + 1) as usize; + + base + length + }; + + let output_length = output.len(); + history.read_with_offset(distance, length, &mut output)?; + history + .write_all(&output[output_length..]) + .expect("circular buffer does not fail"); + + Ok(length) +} + +struct Token { + pub prefix: &'static BitSlice, + pub ty: TokenType, +} + +enum TokenType { + NullLiteral, + Literal { + literal_value: u8, + }, + Match { + distance_value_size: usize, + distance_base: u32, + }, +} + +lazy_static::lazy_static! { + static ref TOKEN_TABLE: [Token; 40] = [ + Token { + prefix: bits![static u8, Msb0; 0], + ty: TokenType::NullLiteral, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 0, 0], + ty: TokenType::Literal { literal_value: 0x00 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 0, 1], + ty: TokenType::Literal { literal_value: 0x01 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 0], + ty: TokenType::Literal { literal_value: 0x02 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 1], + ty: TokenType::Literal { literal_value: 0x03 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 0], + ty: TokenType::Literal { literal_value: 0x0ff }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 0], + ty: TokenType::Literal { literal_value: 0x04 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 1], + ty: TokenType::Literal { literal_value: 0x05 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 0], + ty: TokenType::Literal { literal_value: 0x06 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 1], + ty: TokenType::Literal { literal_value: 0x07 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 0], + ty: TokenType::Literal { literal_value: 0x08 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 1], + ty: TokenType::Literal { literal_value: 0x09 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 0], + ty: TokenType::Literal { literal_value: 0x0a }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 1], + ty: TokenType::Literal { literal_value: 0x0b }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 0], + ty: TokenType::Literal { literal_value: 0x3a }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 1], + ty: TokenType::Literal { literal_value: 0x3b }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 0], + ty: TokenType::Literal { literal_value: 0x3c }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 1], + ty: TokenType::Literal { literal_value: 0x3d }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 0], + ty: TokenType::Literal { literal_value: 0x3e }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 1], + ty: TokenType::Literal { literal_value: 0x3f }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 0], + ty: TokenType::Literal { literal_value: 0x40 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 1], + ty: TokenType::Literal { literal_value: 0x80 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 0], + ty: TokenType::Literal { literal_value: 0x0c }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 1], + ty: TokenType::Literal { literal_value: 0x38 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 0], + ty: TokenType::Literal { literal_value: 0x39 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 1], + ty: TokenType::Literal { literal_value: 0x66 }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 0, 0, 1], + ty: TokenType::Match { + distance_value_size: 5, + distance_base: 0, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 0, 1, 0], + ty: TokenType::Match { + distance_value_size: 7, + distance_base: 32, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 0, 1, 1], + ty: TokenType::Match { + distance_value_size: 9, + distance_base: 160, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 0, 0], + ty: TokenType::Match { + distance_value_size: 10, + distance_base: 672, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 0, 1], + ty: TokenType::Match { + distance_value_size: 12, + distance_base: 1_696, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 0], + ty: TokenType::Match { + distance_value_size: 14, + distance_base: 5_792, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 1], + ty: TokenType::Match { + distance_value_size: 15, + distance_base: 22_176, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 0], + ty: TokenType::Match { + distance_value_size: 18, + distance_base: 54_944, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 1], + ty: TokenType::Match { + distance_value_size: 20, + distance_base: 317_088, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 0], + ty: TokenType::Match { + distance_value_size: 20, + distance_base: 1_365_664, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 1], + ty: TokenType::Match { + distance_value_size: 21, + distance_base: 2_414_240, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 0], + ty: TokenType::Match { + distance_value_size: 22, + distance_base: 4_511_392, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 1], + ty: TokenType::Match { + distance_value_size: 23, + distance_base: 8_705_696, + }, + }, + Token { + prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 1, 0], + ty: TokenType::Match { + distance_value_size: 24, + distance_base: 17_094_304, + }, + }, + ]; +} + +#[derive(Debug, Error)] +pub enum ZgfxError { + #[error("IO error")] + IOError(#[from] io::Error), + #[error("Invalid compression type")] + InvalidCompressionType, + #[error("Invalid segmented descriptor")] + InvalidSegmentedDescriptor, + #[error( + "Decompressed size of segments ({}) does not equal to uncompressed size ({})", + decompressed_size, + uncompressed_size + )] + InvalidDecompressedSize { + decompressed_size: usize, + uncompressed_size: usize, + }, + #[error("Token bits not found")] + TokenBitsNotFound, +} + +#[cfg(test)] +mod tests { + use hex_literal::hex; + use lazy_static::lazy_static; + + use super::*; + + lazy_static! { + static ref ENCODED_ZGFX_SINGLE: [Vec; 5] = { + [ hex!("e0 24 09 e3 18 0a 44 8d 37 f4 c6 e8 a0 20 c6 30 01").to_vec(), hex!("e0 24 07 45 02 a6 62 54 63 1a e3 11 5c 45 c8 8e 76 8c 1b 69 1a 6d 8c 45 bf c4 5d 66 9e 04 22 44 47 13 58 47 e4 52 89 22 2c 80 04").to_vec(), hex!("e0 24 e7 16 01 f1 22 23 6e c6 a2 10 bc 50 0e 44 88 8f 59 ba e6 49 f6 9b 99 38 9c 86 24 27 19 2d 8c 63 e4 44 e1 1a 24 92 9e c1 75 82 fc dc 5f 67 2a 64 3a 23 ca e3 1e 02 51 22 32 8c c8 63 18 8c b6 fb 1e 23 2d 98 11 97 0e 33 22 dc 1f 25 75 22 db 7d 8c b8 58 12 2d c3 89 65 48 b6 df 23 2e 1f ba 48 b7 03 03 49 4c e0 c4 fe e9 28 df 59 16 e0 fb ac 8b 70 30 24 5b 86 68 24 8b 6f 35 74 49 d6 df 66 94 46 5b 30 24 5b 87 19 f9 35 b6 ff 23 2e 1f b9 91 6e 06 04 82 70 e3 49 28 e1 8c b8 7e e9 25 1c 3a 49 47 0e b2 51 c3 19 70 fd d6 4a 38 75 92 8e 1c 7d 98 e3 82 32 e1 fb 8f b2 51 c1 20 9c 38 cc 94 70 e6 45 b8 3e e7 ec af 6e c0 91 6e 1c 69 25 1c 3a 49 47 0e 92 51 c3 22 dc 38 d6 4a 38 75 92 8e 1d 64 a3 86 45 b8 71 86 04 d0 1c 2c 09 28 e0 90 4e 16 04 65 c3 8c c8 b7 07 cc b0 25 7b 7f b9 94 ce 06 04 65 c3 8d 24 a3 87 49 28 e1 d2 4a 38 63 2e 1c 6b 25 1c 3a c9 47 0e b2 51 c3 19 70 d1 a9 66 4a 37 c6 33 42 bb 6a 3c 08 cb 76 04 8b 70 d3 f4 48 26 f4 78 11 96 ff 73 22 dc 0c 0c ca 67 05 1e 04 8b 6f f3 49 16 e0 fb a4 8b 70 30 34 92 8e 1d 64 5b 83 e6 b2 2d c1 f7 59 16 e0 60 48 b7 0d 1e 04 b8 70 63 e4 65 bd 1e 04 8b 6e c0 90 4e 1a 3c 09 16 df e6 64 5b 83 ec 65 c2 c0 8c b8 68 f0 24 a3 83 4f 99 a3 c1 c3 22 db b0 23 2e 1c 6b 31 37 07 c8 c9 47 83 86 45 b7 60 46 5c 38 c7 d9 70 e0 8c 94 78 38 64 5b 76 04 82 70 d1 e0 66 8f 07 0c 8b 6f f6 32 e1 60 46 5c 34 78 12 e1 c1 a4 c0 5c 1f 74 91 6e 06 04 65 c3 47 81 25 1c 1a c9 47 0e b2 2d c0 c0 8c b8 68 f0 24 a3 83 0c 08 cb 7f b8 60 48 b6 f4 78 12 09 be 33 22 dc 1f 33 22 dc 1f 63 2e 16 04 65 c3 8d 24 a3 86 32 e1 fb a4 8b 70 30 23 2e 1c 6b 25 1c 31 97 0f dd 64 5b 81 81 19 70 d1 e0 69 47 3b 6f 98 c4 65 bd 1e 06 92 2d b5 49 81 20 9b d1 e0 46 5b fc cc 8b 70 54 98 12 09 bd 1e 04 65 be 34 91 6e 0f 9a 48 b7 07 dd 26 02 e0 60 48 b7 0d 49 81 27 5b fc d6 45 b8 3e eb 22 dc 0c 0d 65 33 82 8f 02 4a 38 31 f2 45 b7 a3 c0 90 4d e8 f0 23 2d f1 99 16 e0 f9 19 70 fd 8c b8 58 11 97 0d 1e 04 9d 6f f3 4f 9a 51 e0 e1 91 6d d8 11 97 0d 1e 04 94 70 6b f3 4a 3c 1c 32 2d bb 02 32 e1 a3 c0 92 8e 0c 7d d2 8f 07 0c 8b 6f 47 81 22 db d1 e0 69 47 83 86 45 b7 fb 19 70 b0 23 2e 1a 3c 09 3a df e6 9f 74 a3 c1 c3 22 db b0 23 2e 1a 3c 09 28 e0 d7 ee 94 78 38 64 5b 76 04 65 c3 47 81 25 1c 18 60 69 47 83 86 45 b7 a3 c0 91 6d e8 f0 34 a3 c1 c3 22 db fd 8c b8 58 11 97 0d 1e 04 9d 6f f3 46 06 94 78 38 64 5b 76 04 65 c3 47 81 25 1c 1a b0 34 a3 c1 c3 22 db b0 24 11 57 45 88 92 2a c6 ec 00 07").to_vec(), hex!("e0 24 ab b2 e2 c0 7e d6 2a 22 a3 ba 9a 40 53 a3 e8 c7 3a 36 2c 60 40 ab 8b 51 05 3a b0 c0 cc 0c 00 00 00 ca ac cc ca 00 01 c3 cc 0a 00 00 00 00 40 00 01 c1 cc 0c 00 00 00 00 00 00 00 01 00 c4 cc 83 53 00 00 40 01 00 01 01 01 c0 00 54 53 00 00 00 00 00 00 00 04 00 03 66 76 88 99 a9 32 11 11 22 12 11 11 11 22 12 11 11 11 22 12 01 c6 cc 57 00 00 00 00 00 00 00 00 00 00 00 00 19 00 13 00 14 00 00 00 00 00 1e cf fe c0 11 02 10 12 10 41 90 11 ae 44 7d 0d 44 0b 25 03 8b 44 40 00 00 1e cf d8 0c 41 24 19 09 42 2d 21 4c 48 91 a2 cc 00 00 00 1e cd fb 02 48 18 84 90 62 15 5d 22 92 a5 4b a0 93 80 c6 cc 6f 00 00 00 00 00 00 01 00 00 00 00 00 21 00 1b 00 1c 00 00 00 00 00 1e cf ff 20 28 80 c8 01 01 20 98 a9 51 a1 b5 dd bc 90 b7 e4 45 7e 92 12 89 2f d2 25 e2 56 00 00 00 1e cf c8 04 40 84 1e 81 21 91 68 13 2e c2 09 a0 81 58 41 cc 61 4c 41 cc 00 00 00 1e cd f9 00 48 14 83 90 09 02 45 51 42 ab d2 53 89 22 8c 47 10 50 c8 e3 20 00 c6 cc 7f 00 00 00 00 00 00 02 00 00 00 00 00 23 00 22 00 23 00 00 00 00 00 1e cf ff 90 04 41 42 00 40 48 32 41 1a c4 13 76 10 e1 08 df c1 99 bf 81 19 bd f6 01 1b 4f 40 93 6c 00 00 1e cf 90 34 80 48 05 0d 40 a0 50 21 65 29 89 73 d9 24 fc 29 57 fe 09 55 ff e2 23 57 ff 88 45 b8 00 00 1e cd f2 00 90 01 01 20 08 44 04 34 2a 31 17 08 43 84 21 c3 21 f1 8d 9f 08 6c fe 31 8d 27 a4 24 86 c6 cc 8d 00 00 00 00 00 00 03 00 00 00 00 00 32 00 25 00 1f 00 00 00 00 00 1e cf ff 60 10 80 08 01 00 20 88 08 7f 40 40 84 46 cf ff 94 92 42 7e a5 24 90 fd 4a 4c 12 7f 52 58 a1 3f a9 42 92 1f d5 0a 4c 13 fd 85 10 12 00 00 00 1e cf b0 04 80 48 0a 06 83 42 f4 28 51 5b b7 aa 49 ff 96 49 ff a8 a8 ff 2a 4b ff 25 45 ff 95 49 fe 2a 48 00 00 1e cd f9 00 88 18 82 b0 42 19 0e 91 32 29 a3 0c 7d 98 43 ec c6 2e cc 62 cc 61 66 20 c0 c6 cc 5d 00 00 00 00 00 00 04 00 00 00 00 00 1f 00 13 00 14 00 00 00 00 00 1d 16 4d bf ff a0 21 02 10 22 16 40 24 24 27 a8 c4 2e c6 21 c4 18 e2 0c 76 08 53 01 20 00 00 1e cf f2 05 90 11 0d 20 48 b4 25 2a 91 0a 50 58 68 00 00 1e cd fc 81 64 08 42 c8 31 12 80 85 00 48 85 62 2a 00 c6 cc 60 00 00 00 00 00 00 05 00 00 00 00 00 1b 00 17 00 17 00 00 00 00 00 1e cf f2 01 10 31 01 20 68 04 64 28 d4 2a 81 25 1a 45 68 d0 83 86 46 58 b0 00 00 1e cf f6 00 10 61 01 60 08 c4 16 2a 95 2c 91 ec a6 28 21 c1 40 00 00 1e cd fb 01 c8 20 84 90 62 35 0a 85 72 a4 8f 45 5a 08 1a 81 a0 c6 cc 6b 00 00 00 00 00 00 06 00 00 00 00 00 1e 00 1c 00 1a 00 00 00 00 00 1e cf ec 01 20 52 0a 40 b4 19 15 1a 2d 14 2a 84 14 54 d2 d0 94 28 d4 38 80 96 0e 00 00 00 1e cf ec 04 20 42 0a c1 10 88 ba 04 8a 2f 63 1e 30 87 cc 61 63 0c e1 87 58 40 00 00 1e cd f9 00 48 24 82 30 12 2d 0a 95 3a 52 2e b8 e4 85 34 e1 82 d9 90 c0 c6 cc 70 00 00 00 00 00 00 07 00 00 00 00 00 20 00 1e 00 1b 00 00 00 00 00 1e cf f9 00 48 14 81 90 49 02 45 46 8d 0e b5 29 5f e1 28 fc 72 26 29 15 f8 52 24 50 c3 98 00 00 1e cf d8 00 40 44 09 07 d0 08 49 12 e9 28 a5 cc 20 b9 88 3e c6 16 61 8f 98 83 c6 00 00 00 1e cd f2 01 90 39 04 60 68 74 4a 55 28 69 2c a8 92 a5 15 50 ed 0a 25 05 00 c6 cc 5c 00 00 00 00 00 00 08 00 00 00 00 00 20 00 15 00 10 00 00 00 00 00 1e cf fd 80 24 02 42 48 14 81 21 a7 42 87 4b 9c 99 1c 4d 21 4f c5 1c fc 8e 24 39 b7 68 70 00 00 1e cf 90 08 83 48 32 12 91 42 5b 40 fd 02 c4 4c 5d 01 40 00 00 1e cd e4 2c 20 12 00 40 50 0a 0c 1b 1c 00 c6 cc 57 00 00 00 00 00 00 09 00 00 00 00 00 21 00 12 00 0d 00 00 00 00 00 1e cf ff 20 08 81 48 29 02 90 64 32 7a 0e 99 a7 6e 91 2f f0 8a 26 29 11 e2 15 f8 a1 53 23 b0 00 00 1e cf 61 19 03 21 28 8a 45 45 8a 44 54 a8 81 40 00 00 1e cd e4 22 22 22 20 44 12 4c 00 c6 cc 6a 00 00 00 00 00 00 0a 00 00 00 00 00 24 00 19 00 16 00 00 00 00 00 1e cf ff b0 04 40 e2 06 40 a4 19 14 8c 85 0e d2 48 d4 71 6f fc 85 15 fe 21 4b fc 23 9f 85 29 f8 52 80 00 00 1e cf 60 01 06 20 34 01 02 80 a1 0d 87 d8 6d 01 72 05 ce 2a 98 70 c0 00 00 1e cd e4 09 20 62 16 41 28 14 d4 15 e8 4a aa 2d 21 01 24 98 c6 cc 81 00 00 00 00 00 00 0b 00 00 00 00 00 33 00 1f 00 18 00 00 00 00 00 1e cf ff e4 01 30 18 80 88 0b 02 43 20 e4 64 49 55 57 ff f8 95 59 ff fe 24 aa 5f ff e2 41 54 ff fc 41 54 bf ff c4 82 a9 ff f8 82 a3 7f fe 20 94 50 00 00 1e ce c0 44 08 82 d0 44 22 1a 1a 05 9f a1 0c 7f 61 85 d8 81 76 31 9f cc c6 7f 40 c6 00 00 00 1e cd d8 0a 41 44 15 0a 43 a3 20 4e c5 e6 4b 11 a8 a2 6e 28 d1 c8 c6 cc 86 00 00 00 00 00 00 0c 00 00 00 00 00 25 00 26 00 24 00 00 00 00 00 1e cf ff fe 40 30 80 84 00 40 04 00 80 c3 94 10 20 8d e4 d9 e9 a2 cd b2 a1 19 a4 cc c8 21 08 23 59 46 40 00 00 1e d6 40 34 02 80 a0 28 1a 07 e8 52 a2 95 ab ff c0 ae af ff 10 2b 5f e0 28 ab f0 29 4f d0 a4 f0 a7 66 43 00 00 00 1e cd c8 04 40 44 01 00 41 50 7e 88 89 04 22 3f fa 06 92 4f 48 48 69 d2 10 c6 d0 c6 31 c3 08 41 0e 1c c6 cc 70 00 00 00 00 00 00 0d 00 00 00 00 00 26 00 1c 00 17 00 00 00 00 00 1e cf ff f6 00 08 00 c0 04 00 84 20 90 e4 04 08 b3 2f fa 64 80 7b 24 30 be 92 19 3b 0c 52 c1 c8 2b 4b 05 b4 00 00 1e cf c8 02 40 24 0d 08 d0 28 28 d4 68 a4 92 b5 41 aa 43 51 4c 44 08 1c 4b 0c 00 00 1e cd f9 00 88 2c 82 10 d2 09 2d 32 56 16 21 23 14 1e 62 8a c0 c6 cc 73 00 00 00 00 00 00 0e 00 00 00 00 00 26 00 1c 00 1a 00 00 00 00 00 1e cf ff c8 06 20 11 03 20 64 15 86 42 4a 8a ba b9 47 e2 a4 ef fc 8c 97 f8 69 4f f0 ca 9f e4 a5 5f f9 46 50 00 00 1e cf ec 00 20 62 0e c0 10 89 34 09 19 61 4f 63 0e 21 8f 6c 20 a2 08 2d 98 c0 00 00 1e cd f9 02 48 19 80 90 92 11 35 12 76 1e 4b 4e 46 a4 44 a2 29 e4 51 80 c6 cc 65 00 00 00 00 00 00 0f 00 00 00 00 00 1e 00 16 00 1a 00 00 00 00 00 1e cf ff f2 01 88 1c 40 84 00 81 23 93 12 ae 84 51 42 22 8a da 48 42 48 94 a1 a9 24 00 00 1e cf d8 18 40 64 19 03 40 21 a0 70 ba 06 08 10 20 d6 11 00 00 00 1e cd f6 04 90 01 01 20 48 b4 44 ea 13 22 a2 45 28 a2 28 72 0a 19 14 00 c6 cc 5c 00 00 00 00 00 00 00 00 01 00 00 00 1b 00 13 00 17 00 00 00 00 00 1e cf ff b0 1c 40 e2 00 41 c8 72 11 1a 74 92 8a 39 90 ac 38 85 6b 2c 06 10 00 00 1e cf 20 61 07 22 08 0a 01 d5 02 b4 d0 6b 90 72 a0 00 00 1e cd e4 00 20 12 1e 44 50 48 2e d6 26 49 a5 11 c2 10 84 23 00 c6 cc 7b 00 00 00 00 00 00 01 00 01 00 00 00 22 00 21 00 21 00 00 00 00 00 1e cf ff d8 0a 20 31 06 20 64 19 20 85 9a 09 46 39 8c 6e 9b 33 7f 48 12 49 d2 12 49 3d 0c 92 18 00 00 1e ce c0 24 24 83 a0 48 b4 34 15 29 a5 32 95 57 fe 4a aa ff c1 56 af ff 12 ab 5f fe 25 55 00 00 00 1e cd e4 01 21 52 0c 40 d1 48 48 6a 12 42 e4 21 b7 f4 21 a4 3f a1 24 81 d9 24 0c 7d 20 43 00 c6 cc 90 00 00 00 00 00 00 02 00 01 00 00 00 2d 00 27 00 25 00 00 00 00 00 1e cf ff ec 04 10 10 80 08 01 00 41 c9 98 99 33 fa 18 92 64 fd 44 92 4c fd 49 48 64 fd 84 14 92 7d 4a 49 09 ea 84 90 9e c9 21 08 00 00 1e ce 40 34 06 80 a0 28 14 14 1f 42 8a d5 55 ff e5 2e 57 ff 8a ad 3f f2 ac af fc a9 4b fc 8c 97 e2 89 7e 92 00 00 00 1e cd d8 04 40 44 01 00 40 21 fa 04 48 29 11 ff 1a 48 63 f8 92 10 3e 90 83 38 43 33 ec cc 2d 98 c5 99 80 c6 cc 7c 00 00 00 00 00 00 03 00 01 00 00 00 30 00 1d 00 18 00 00 00 00 00 1e cf ff 90 00 c0 02 00 c0 08 02 01 02 04 7f d0 46 3d 24 3f ff 92 85 82 4f ea 50 94 87 ea 53 04 93 f5 25 21 0f 64 24 0c f4 90 81 b4 81 1a 00 00 1e cf d8 06 40 24 05 03 40 a1 7a 14 28 a5 c9 d5 21 35 24 79 23 bc 85 10 50 09 00 00 00 1e cd f9 00 88 10 83 90 62 25 11 32 3a 0c 35 81 84 b0 18 4a 14 c0 c6 cc 55 00 00 00 00 00 00 04 00 01 00 00 00 18 00 16 00 10 00 00 00 00 00 1e cf f2 00 90 01 12 20 a8 05 14 0c 91 52 8a 56 80 b4 16 21 c6 00 00 00 1e cf f9 08 c8 20 83 90 c2 0e 80 b1 0d 67 2c c2 38 43 8c 00 00 00 1e cd fc 80 44 1a 40 0a 41 02 80 9d 00 d0 c6 cc 5d 00 00 00 00 00 00 05 00 01 00 00 00 1e 00 17 00 11 00 00 00 00 00 1e cf f2 00 10 09 02 20 e8 04 74 08 d0 2a c7 6b 5a 62 10 a1 50 2b 46 28 ad 7a 14 b0 00 00 1e cf f9 0c 08 04 86 10 52 29 15 42 7a 0c 29 76 20 87 d9 8c 00 00 00 1e cd fd 8d 24 00 c0 48 69 01 43 52 8a ab d8 c6 cc 56 00 00 00 00 00 00 06 00 01 00 00 00 15 00 17 00 13 00 00 00 00 00 1e cf f2 07 90 03 01 25 e8 04 d4 49 c8 b0 92 50 82 4a 00 00 00 1e cf f9 00 08 28 81 b0 02 31 05 72 16 9a 51 ac 05 3d 81 28 60 00 00 1e cd fd 80 a4 14 41 c8 41 0e 90 8d 62 61 7b 4b 00 c6 cc 54 00 00 00 00 00 00 07 00 01 00 00 00 1c 00 11 00 10 00 00 00 00 00 1c a8 51 1f fe 83 44 09 82 91 24 06 34 08 90 25 ca 02 a8 52 0a b0 45 ad 63 40 00 00 1e cf f2 02 10 59 08 20 e8 e4 12 a1 09 5a 80 00 00 1e cd fc 80 64 18 42 c8 21 1e 80 5f 25 00 c6 cc 57 00 00 00 00 00 00 08 00 01 00 00 00 1c 00 10 00 14 00 00 00 00 00 1e cf f9 01 c8 1c 80 48 09 12 44 a1 40 99 06 a2 30 73 07 21 d8 5b 1a d0 29 58 00 00 1e cf ec 02 20 d2 46 41 11 68 8a d0 04 80 00 00 1e cd fb 01 48 00 8e 10 12 01 05 02 14 03 15 09 84 80 c6 cc 4d 00 00 00 00 00 00 09 00 01 00 00 00 1e 00 08 00 10 00 00 00 00 00 1e cf fc 80 04 02 42 c8 03 0e 80 85 25 14 2a 21 07 11 60 a4 05 b0 49 04 9a ab 43 00 00 00 1e cf e4 11 28 e0 00 00 1e cd fb 05 88 04 80 16 12 01 05 02 b6 1c c6 cc 5e 00 00 00 00 00 00 0a 00 01 00 00 00 1d 00 16 00 14 00 00 00 00 00 1e cf fd 81 24 0a 40 24 24 83 21 68 4a 54 91 5b 47 3b c3 8a f0 a2 b6 23 9b 45 ac 00 00 1e cf e4 0e 20 12 02 41 11 29 88 d7 22 59 22 94 63 82 1c 30 00 00 1e cd fb 01 08 14 82 10 f2 01 cd 02 f4 0a a8 4b 0b 00 c6 cc 82 00 00 00 00 00 00 0b 00 01 00 00 00 2f 00 1f 00 1d 00 00 00 00 00 1c a8 51 1f ff fa 03 10 11 01 10 62 09 09 07 22 59 4a 2b ff f1 22 b5 ff f8 82 a3 7f f8 14 5a ff f0 22 b5 ff e0 51 27 f9 09 4f f2 44 e0 00 00 1e cf e4 00 20 42 04 41 74 11 11 12 3d 46 32 e3 19 be 31 0d f0 86 6f 8c 63 8c 21 c6 10 00 00 1e cd fb 01 c8 14 81 30 92 0d 0b 42 9d 54 4d 25 21 4a f1 c7 78 72 78 53 bc 38 c0 c6 cc 67 00 00 00 00 00 00 0c 00 01 00 00 00 24 00 17 00 15 00 00 00 00 00 1e cf ff d8 02 20 51 08 90 12 04 8e 49 23 26 d4 4d 24 9f e5 24 ff ca 94 ff c9 25 7f f9 45 4f fc 8c 90 00 00 1e cf b0 08 80 49 22 12 84 4b 48 ad 42 74 30 cf 99 85 b0 83 00 00 00 1e cd f6 17 90 01 01 20 08 54 a4 aa 95 24 f3 0a 2a a2 80 c6 cc 6c 00 00 00 00 00 00 0d 00 01 00 00 00 26 00 18 00 17 00 00 00 00 00 1e cf ff ec 00 10 08 82 88 29 00 c5 25 21 4b 49 6a 57 f8 a2 af f0 49 5f f9 14 9f e2 89 7f e4 92 7f 8e 0a b0 00 00 1e cf b0 04 81 08 32 02 88 54 46 a1 44 d8 52 d8 12 81 a8 56 20 00 00 00 1e cd f6 06 90 11 09 22 a8 24 94 c9 5a 48 a4 8e 50 85 62 b0 c0 c6 cc 74 00 00 00 00 00 00 0e 00 01 00 00 00 2a 00 19 00 1a 00 00 00 00 00 1e cf ff f6 00 88 04 40 c4 04 83 20 90 64 24 c9 57 5f f9 29 57 ff 8a 2b 8f fc 14 63 ff 29 49 ff 91 89 ff 92 89 fe 14 8c 00 00 1e cf 90 18 80 88 2d 00 42 22 23 a2 59 b4 30 a1 04 d0 16 35 0e 1a 70 00 00 1e cd f2 01 90 29 05 20 1a 04 86 9d 15 36 95 71 4d 41 5a 41 01 82 45 00 c6 cc 67 00 00 00 00 00 00 0f 00 01 00 00 00 27 00 15 00 14 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 44 06 08 46 11 85 42 17 1c 04 24 49 13 a8 8d a1 da fc 41 1e 83 22 c3 20 00 00 1e cf 20 11 04 20 28 42 25 11 5a 85 cc 88 ac 5b c6 96 c0 00 00 1e cd e4 01 20 52 10 41 51 48 aa 92 b4 60 40 c3 84 00 c6 cc 68 00 00 00 00 00 00 00 00 02 00 00 00 1d 00 1a 00 1a 00 00 00 00 00 1e cf ff f2 03 08 48 40 84 0c 84 22 11 10 d0 20 87 30 86 ec 31 a1 84 43 08 82 2c 00 00 1e ce c0 74 06 80 a0 48 74 34 28 50 bd d4 c7 25 e4 45 61 c9 8e 04 84 80 00 00 1e cd d8 10 40 44 01 01 a1 90 90 20 46 e6 29 86 23 08 42 19 04 0c 51 40 c6 cc 7f 00 00 00 00 00 00 01 00 02 00 00 00 2c 00 1f 00 1d 00 00 00 00 00 1d c8 48 1f ff ff f4 04 10 00 80 04 10 c2 30 cc 02 42 04 21 27 d9 24 90 9e a8 49 09 ec 84 84 34 90 66 f8 84 0e 20 47 35 ac 80 00 00 1e cf 90 04 80 48 0a 02 81 41 46 83 a6 95 74 ff 32 93 f2 92 7e 51 12 45 1a 88 40 92 00 00 00 1e cd f2 00 10 01 04 20 48 3a 22 24 49 e8 62 11 f6 33 16 62 0e 20 c7 60 ce c0 24 c6 cc 66 00 00 00 00 00 00 02 00 02 00 00 00 20 00 18 00 17 00 00 00 00 00 1c f0 4e df ff fa 02 10 01 00 10 42 2c 80 88 91 47 d0 63 1c c4 59 d8 c2 86 2d 82 41 54 38 00 00 1e cf f6 00 90 19 03 20 d4 0a 1a 94 14 5e 51 22 9c 40 30 f4 0c 30 00 00 1e cd fc 80 04 08 42 48 11 10 86 99 4a 45 50 1f 40 92 0b 0c 00 c6 cc 64 00 00 00 00 00 00 03 00 02 00 00 00 1c 00 18 00 19 00 00 00 00 00 1e cf fb 00 08 08 81 10 76 09 11 3d 12 28 34 a2 a2 07 a0 48 f6 28 47 6b 2d 00 00 00 1e cf fc 82 64 00 40 48 01 12 80 85 03 68 0b 35 83 8b 40 87 30 c0 00 00 1e cd fe 40 21 03 90 02 02 40 13 51 2b 50 9b 0f 20 93 38 08 a0 d3 00 c6 cc 53 00 00 00 00 00 00 04 00 02 00 00 00 17 00 19 00 0c 00 00 00 00 00 1e cf f2 07 90 01 0b 22 e8 04 74 08 48 a0 4b d0 29 58 56 81 20 00 00 1e cf fc 80 c4 0c 40 58 41 0e 8c 99 0d 02 4b 30 e8 18 a2 04 42 05 00 00 00 1e cd fe 47 b1 0f 90 02 02 00 c6 cc 7d 00 00 00 00 00 00 05 00 02 00 00 00 22 00 25 00 1f 00 00 00 00 00 1e cf f2 00 90 29 05 20 08 04 34 69 52 b5 dc fd 24 9f 92 95 ff 95 29 f8 95 5f f9 29 4f c2 53 80 00 00 1e cf fb 00 08 08 82 10 56 11 09 22 1d 25 10 8f e6 66 c7 f4 21 08 7c 43 18 da 18 c6 9d 84 20 df 40 c2 00 00 00 1e cd fe 40 51 03 90 26 0a 42 91 29 52 a6 8c 92 5d f9 12 7e 48 a7 8e 4b f1 22 bc 28 a0 c6 cc 6a 00 00 00 00 00 00 06 00 02 00 00 00 1d 00 1c 00 1a 00 00 00 00 00 1c f0 4e df ff a0 51 04 10 12 1c a2 46 50 8a c9 45 ea 43 55 04 29 09 54 3b 64 58 00 00 1e cf f2 00 10 21 09 20 48 64 5a 04 4d a9 84 d0 c4 16 6c 16 8c 1d 82 58 72 80 00 00 1e cd fc 80 64 18 40 48 39 0c 8a a9 1a ae a9 4a 26 a4 34 a0 94 84 39 80 c6 cc 72 00 00 00 00 00 00 07 00 02 00 00 00 28 00 1c 00 17 00 00 00 00 00 1e cf fc 80 04 10 41 64 18 82 21 21 f4 05 14 4f 21 8d bf fa 04 90 9f 49 09 24 fd 44 84 c3 ec 24 90 cf ec 08 0a 48 00 00 1e cf e4 09 20 66 06 42 d0 14 b4 94 aa b3 52 9c fd 12 5f e5 24 fc 92 5f 92 48 00 00 1e cd fb 04 48 8c 83 10 96 01 11 4d 22 4f b1 0c e1 04 39 88 30 c6 cc 67 00 00 00 00 00 00 08 00 02 00 00 00 21 00 18 00 17 00 00 00 00 00 1e cf f9 02 88 04 81 90 02 3e 80 89 42 3d 08 c1 76 6c 3f 6d 8c 67 e8 48 0f 9b 41 9f d2 40 ce 00 00 1e cf ec 10 20 12 1c 40 d1 88 2a 52 51 69 84 9d a8 84 29 08 53 80 00 00 1e cd fb 04 48 00 87 90 42 2d 11 5a 26 93 61 4a 30 52 02 8a 00 c6 cc 59 00 00 00 00 00 00 09 00 02 00 00 00 1d 00 10 00 15 00 00 00 00 00 1e cf f9 02 48 0c 80 10 02 15 1d 15 2a ea 92 5b 45 1c f1 c8 90 a5 7e 87 12 29 14 00 00 1e cf ec 27 20 02 06 47 50 08 2f 48 5a 50 00 00 1e cd fb 02 08 1c 84 10 72 19 25 22 b4 04 9a e1 28 05 80 c6 cc 5d 00 00 00 00 00 00 0a 00 02 00 00 00 1e 00 14 00 14 00 00 00 00 00 1c f0 4e df ff a0 11 0b 10 22 34 84 c2 4e aa 24 9a 92 d0 c2 86 38 54 8e 2b 79 11 40 00 00 1e cf ec 23 20 82 0e 43 90 34 65 2b 91 b0 f3 0e 31 80 00 00 1e cd fc 81 64 08 43 c8 01 48 82 b1 5a 09 40 71 2c 8c c6 cc 70 00 00 00 00 00 00 0b 00 02 00 00 00 21 00 1e 00 1a 00 00 00 00 00 1e cf fd 80 64 06 40 c8 19 01 d0 49 48 d4 d6 4b 93 23 ad e2 3a fc b4 4f 1c 7b f1 1c da d0 a0 00 00 1e cf e4 06 20 62 03 20 44 22 22 1d 22 8d d0 c6 7c 62 0b 18 67 cc 20 b3 08 58 c3 00 00 00 1e cd fb 02 48 18 84 90 66 05 2d 15 1b 2a 96 4b 42 9a 87 24 71 de 14 00 c6 cc 77 00 00 00 00 00 00 0c 00 02 00 00 00 28 00 1e 00 1a 00 00 00 00 00 1e cf ff 60 08 80 c8 19 01 20 c8 1e 8c 8c 8a d5 3e 94 a7 fe 19 2b ff 09 29 ff 91 52 ff c2 52 bf f0 a4 af fc 82 a0 00 00 1e cf c8 04 40 84 1e 82 21 11 74 09 16 4e 43 0b b1 04 3e 63 0b b1 8c f9 8c 78 c3 00 00 00 1e cd f9 00 48 14 84 30 32 15 1a 8d 4a 57 98 69 aa 1c 91 43 04 91 70 e0 c6 cc 66 00 00 00 00 00 00 0d 00 02 00 00 00 20 00 17 00 18 00 00 00 00 00 1e cf ff e4 01 10 28 80 88 34 83 22 91 91 58 96 5b 65 14 68 a1 5f a2 33 20 a9 a4 33 42 9a 00 00 1e cf 90 74 81 08 3a 0e 80 40 42 9d 47 92 c1 24 38 a8 09 60 e0 00 00 1e cd f2 0f 10 19 06 20 c8 14 a4 48 6b 31 ec 30 a1 05 30 74 05 00 c6 cc 65 00 00 00 00 00 00 0e 00 02 00 00 00 20 00 1b 00 13 00 00 00 00 00 1c f0 4e df ff ff ff 40 a0 81 82 0c 50 a1 28 63 0b 0d 47 0a 22 31 30 72 b0 c8 64 d6 b2 c8 00 00 1e cf 90 1c 81 c8 02 0a 87 42 4a 9d 2a 49 31 c7 12 85 1a 88 ef 0a 10 e3 00 00 00 1e cd f2 01 10 91 10 24 88 94 25 a8 9d 40 b5 0c 00 c6 cc 58 00 00 00 00 00 00 0f 00 02 00 00 00 1a 00 15 00 12 00 00 00 00 00 1e cf ff fc 82 06 01 10 01 0a 10 84 12 02 83 0b 41 45 40 12 4a 07 a2 c0 00 00 1e cf c8 0a 42 24 45 13 44 21 ac 42 bb 84 aa a0 a2 45 00 00 00 1e cd f6 00 10 81 22 24 c8 b4 05 e8 9d 52 8a 00 c6 cc 50 00 00 00 00 00 00 00 00 03 00 00 00 15 00 13 00 11 00 00 00 00 00 1e cf fe 40 a1 03 90 02 62 40 10 51 21 22 82 c7 8f 2d 00 00 00 1e cf f9 00 c8 e8 8b 11 02 05 11 42 14 89 25 02 18 00 00 1e cd fd 81 44 12 40 88 99 08 96 47 76 46 c0 c6 cc 59 00 00 00 00 00 00 01 00 03 00 00 00 1c 00 16 00 10 00 00 00 00 00 1e cf fd 81 04 02 40 08 19 10 82 89 1b aa 71 4a 28 ec 28 ec 39 31 c5 5f a1 50 00 00 1e cf fb 07 88 0c 80 10 c2 05 11 42 15 8c 08 39 44 11 46 30 00 00 1e cd fe 42 f1 11 91 32 04 41 95 58 a5 48 c6 cc 56 00 00 00 00 00 00 02 00 03 00 00 00 18 00 15 00 12 00 00 00 00 00 1c f0 4e df ff d0 38 80 08 38 93 28 98 94 9b 2e f2 14 8e da 85 00 00 00 1e cf fb 01 08 50 89 11 02 15 01 32 74 1c 28 e2 09 41 00 00 00 1e cd fe 42 31 0b 91 52 3a 44 90 90 a5 5d 0e 50 c6 cc 69 00 00 00 00 00 00 03 00 03 00 00 00 1c 00 1d 00 19 00 00 00 00 00 1e cf fc 81 24 0e 40 08 49 1a 8e 89 1a e5 56 af 22 95 e1 52 bc 49 cf c9 55 00 00 00 1e cf f9 01 08 20 80 90 42 21 05 32 64 5c 52 98 62 20 8c ec 66 6e 63 33 b1 99 80 00 00 1e cd fe 40 71 0b 90 22 0e 43 90 14 b3 51 64 b9 05 15 30 a4 bc 89 00 c6 cc 5e 00 00 00 00 00 00 04 00 03 00 00 00 1b 00 16 00 16 00 00 00 00 00 1e cf fd 81 24 1e 41 48 01 02 8e 9d 02 2d 34 b1 6a 73 25 0c a8 b3 54 33 00 00 00 1e cf f2 04 10 91 0e 21 c8 c4 25 89 11 63 0b 46 0e 93 1d 40 00 00 1e cd fd 81 64 00 40 48 a9 2e 96 bd 0b eb 31 e5 31 0e 84 30 c6 cc 7e 00 00 00 00 00 00 05 00 03 00 00 00 25 00 21 00 21 00 00 00 00 00 1e cf fe 40 11 01 90 32 02 41 90 34 a4 69 aa e5 39 90 e1 0e e6 b6 37 fc 42 42 4f d8 49 24 3f 44 c4 4c 00 00 00 1e cf ec 02 20 22 08 40 e8 24 44 88 6a 30 96 09 48 a2 bf 14 93 fc 4a 4f fc 95 2b ff c1 56 80 00 00 1e cd fc 80 e4 0a 40 48 04 83 23 a3 41 65 6c 24 11 a8 82 17 99 9b 3f e8 49 08 7f f2 92 48 40 c6 cc 73 00 00 00 00 00 00 06 00 03 00 00 00 25 00 1f 00 18 00 00 00 00 00 1c f0 4e df ff ff a0 30 81 84 00 43 08 22 c1 09 a3 46 18 b1 0c cf ed 06 6d ec 84 24 3f 88 42 1b a1 a1 8c 00 00 1e cf c8 00 41 24 0d 00 a1 d0 d2 51 aa b6 94 a4 fc 92 5f e5 24 fc 92 5f e2 49 7f 92 40 00 00 1e cd f9 00 48 0c 83 11 e2 1d 11 42 16 9a 41 8b 31 85 08 73 06 00 c6 cc 7e 00 00 00 00 00 00 07 00 03 00 00 00 2c 00 20 00 1b 00 00 00 00 00 1e cf ff c8 00 20 21 00 20 04 01 00 8f e8 08 10 44 6d be 92 49 09 f6 49 09 27 d5 21 08 76 10 90 de c2 40 d3 d8 40 c6 e8 63 18 00 00 1e cf d8 06 40 64 0d 03 40 68 68 d1 a6 8e aa 48 9a 48 bf 48 53 c5 1c f1 47 3c 50 d4 3b 00 00 00 1e cd f6 02 10 11 07 60 08 44 44 74 4a 31 64 30 b6 10 71 03 90 12 c1 64 14 c6 cc 64 00 00 00 00 00 00 08 00 03 00 00 00 23 00 14 00 16 00 00 00 00 00 1e cf fd 80 04 00 40 88 11 0b a1 10 22 5f 42 10 5d b1 8f 33 10 f9 9a cd fd 08 40 5c cc 43 f9 9b 0c 00 00 1e cf f6 01 90 49 02 20 e8 84 32 ea 02 44 ca 52 6a 20 00 00 1e cd fb 00 08 18 83 90 22 91 05 12 15 9a 8e c1 5a 30 a0 f0 c6 cc 55 00 00 00 00 00 00 09 00 03 00 00 00 1b 00 12 00 11 00 00 00 00 00 1e cf f6 01 90 39 04 60 e8 54 04 14 2a bd 22 4d 50 e4 64 3b 08 80 f4 44 00 00 00 1e cf fb 02 88 04 80 10 13 59 05 62 36 9a c3 00 00 00 1e cd fd 81 c4 02 43 88 09 1c 82 b9 18 66 88 c6 cc 64 00 00 00 00 00 00 0a 00 03 00 00 00 20 00 1a 00 13 00 00 00 00 00 1e cf fb 00 c8 0c 80 10 12 12 8a 95 25 55 a2 9f 92 44 c5 14 48 e4 4d 12 5f e4 52 de 44 60 00 00 1e cf fb 00 08 28 81 b0 22 21 0e 91 32 75 14 4d 02 14 20 a2 0e 61 c8 00 00 00 1e cd fe 40 11 07 10 92 0c 44 91 90 8a e9 93 42 80 c6 cc 64 00 00 00 00 00 00 0b 00 03 00 00 00 1f 00 18 00 16 00 00 00 00 00 1e cf fd 80 64 16 c0 18 01 0a 8e 82 85 05 96 93 8e 78 e3 bf 44 77 e4 28 92 14 9a 23 80 00 00 1e cf f6 04 10 21 01 61 08 74 65 29 99 20 f2 1d 88 81 cc 39 0b 00 00 00 1e cd fd 81 24 0c 41 c8 01 02 88 bd 03 a8 0f a0 3a 82 48 56 c6 cc 6b 00 00 00 00 00 00 0c 00 03 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf fe c0 31 01 90 12 06 41 64 12 12 34 d9 92 a7 5f e2 24 fc 8e 26 92 13 48 89 a4 3b f1 15 60 00 00 1e cf ec 04 20 62 07 20 04 32 3d 12 84 ec 31 66 0e 31 c6 14 51 4c 56 00 00 00 1e cd fc 80 24 1a 40 18 39 10 96 92 85 e4 8a 4a 10 8a c8 62 02 40 c6 cc 5c 00 00 00 00 00 00 0d 00 03 00 00 00 1e 00 13 00 14 00 00 00 00 00 1e cf ff b0 04 41 22 00 40 88 32 63 0a 56 29 2c ad 45 1d ed 41 28 52 4a 14 9a 14 50 00 00 1e cf d8 1a 40 c4 1d 29 41 26 a6 52 c3 ce 24 63 00 00 00 1e cd f9 00 08 c8 81 90 c2 1d 21 4a 66 54 a8 1c c0 b0 c6 cc 57 00 00 00 00 00 00 0e 00 03 00 00 00 1d 00 14 00 0f 00 00 00 00 00 1e cf ff c8 06 20 01 01 20 04 99 00 b5 02 2a 3c 81 25 09 2a e2 8a fc 51 6f cc 28 00 00 1e cf e4 09 20 62 16 41 11 e8 04 a4 68 26 e3 44 16 60 00 00 1e cd fb 00 88 34 80 10 f2 29 14 4a 00 c6 cc 53 00 00 00 00 00 00 0f 00 03 00 00 00 18 00 13 00 11 00 00 00 00 00 1e cf ff c8 1e 20 21 01 20 04 69 c4 81 1a 09 43 b2 18 a0 85 22 18 00 00 1e cf ec 03 20 c2 1a 40 a8 14 e4 ea 08 2a 50 24 00 00 00 1e cd fc 86 a4 10 40 48 01 02 f2 81 7a 05 00 c6 cc 5d 00 00 00 00 00 00 00 00 04 00 00 00 20 00 13 00 13 00 00 00 00 00 1e cf ff 20 08 83 48 01 07 21 c8 0a d0 22 83 c8 9c a4 c2 9d fe 0a 2a ff c0 e5 7f fe 44 54 00 00 1e cf e4 0e 20 e2 14 41 91 ca 0c 19 22 40 b4 08 00 00 00 1e cd fb 01 c8 54 87 90 32 35 2d 3a f7 49 88 98 00 c6 cc 74 00 00 00 00 00 00 01 00 04 00 00 00 28 00 1a 00 1b 00 00 00 00 00 1e cf ff 90 24 40 62 04 40 08 12 19 2a 14 35 92 4a 64 8f 7f 84 53 bf f0 8a 3f c2 94 ef ff c1 46 af ff f0 24 d5 40 00 00 1e cf d8 0c 40 84 0d 02 43 27 22 46 a3 9c 82 14 41 88 42 39 8c 28 c3 00 00 00 1e cd f9 01 c8 14 81 10 12 1d 15 02 55 58 a7 3b 11 cc 8e 21 14 64 38 84 38 c6 cc 6e 00 00 00 00 00 00 02 00 04 00 00 00 29 00 19 00 15 00 00 00 00 00 1e cf ff d8 06 20 51 06 60 24 09 14 95 06 8a d4 a4 c9 2a ff f2 95 2f ff 14 5a bf ff c4 92 d5 ff 85 aa f3 ff 85 ad 58 00 00 1e cf b0 00 81 08 72 08 85 42 48 9d 27 12 c2 1c 41 88 c1 58 61 46 00 00 00 1e cd f2 01 90 29 0d 21 28 04 14 eb 5f 26 87 04 86 4a 28 c6 cc 77 00 00 00 00 00 00 03 00 04 00 00 00 28 00 1d 00 1b 00 00 00 00 00 1e cf ff ec 01 10 28 80 88 09 02 42 91 91 91 4a ab ff 25 54 ff ca b4 7f e5 6a 3f f2 b4 b7 f9 55 67 fa 94 19 91 66 00 00 1e cf 60 01 02 20 48 12 06 88 89 22 35 10 c5 98 83 98 10 e6 14 af 1c 97 e4 55 00 00 00 1e cd e4 03 20 52 06 40 90 e8 69 11 aa e5 12 0f 26 51 0f 18 db 7f 04 86 90 c6 cc 96 00 00 00 00 00 00 04 00 04 00 00 00 30 00 26 00 29 00 00 00 00 00 1d 16 4d bf ff ff ff d0 08 20 20 84 02 0c 62 84 81 00 4c c8 50 c6 74 84 86 4f 40 86 99 3e 82 49 93 3b 4a 49 31 7f 52 4b 14 ce c4 29 8a 40 00 00 1e d4 40 54 06 80 a0 1a 2d 0e 83 a5 55 2a 9c 52 ab ff 0a aa ff f1 15 ae fe 15 5a bf ff 12 5a a7 ff 89 55 80 00 00 1e cd b0 0c 81 08 12 07 40 a2 22 40 9e e6 46 ff 88 69 24 fa 49 24 93 e8 92 49 27 d0 94 98 a7 ea 4a 49 0f ab 14 84 00 c6 cc 8f 00 00 00 00 00 00 05 00 04 00 00 00 2e 00 23 00 27 00 00 00 00 00 1e cf ff fd 80 06 02 30 01 02 30 04 3e c0 20 20 41 18 cf ff e4 b1 49 0f ec 24 a4 87 ea 85 21 0f 64 92 04 f6 60 84 1b 21 83 db 32 c0 00 00 1e ce 40 14 02 80 a0 28 14 14 28 be 9d 6a a9 ff e5 6a 5f fe 2a a9 ff 95 91 fa 90 d4 88 94 82 20 a0 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 fa 08 a3 36 7f f4 92 48 1e c9 24 02 f4 92 06 3f a4 80 67 18 31 d8 c2 90 00 c6 cc 69 00 00 00 00 00 00 06 00 04 00 00 00 21 00 19 00 18 00 00 00 00 00 1e cf ff d8 00 20 01 02 20 44 11 06 c8 44 a2 7a 20 42 ec 69 ab 01 25 a4 e2 89 22 93 f2 2a 00 00 00 1e cf d8 02 40 a4 0d 04 d0 28 6a 50 57 20 1e 56 83 0b 61 04 7c c6 60 00 00 1e cd fb 01 88 18 80 b0 22 35 09 ea 06 d8 e8 46 5a d0 84 3b c7 1c c6 cc 63 00 00 00 00 00 00 07 00 04 00 00 00 1f 00 19 00 14 00 00 00 00 00 1e cf ff 20 20 80 88 11 03 b0 84 22 24 28 ee 62 e1 0c f8 21 1f 46 14 a0 b4 4b 0e 28 c0 00 00 1e cf f2 00 90 59 00 20 08 b4 4a 74 08 b2 5a 22 0c 84 07 05 1a 8c 18 00 00 1e cd fc 80 84 16 49 49 59 0c 86 9d 22 ad 22 a5 14 00 c6 cc 75 00 00 00 00 00 00 08 00 04 00 00 00 29 00 1f 00 16 00 00 00 00 00 1e cf fd 80 44 04 40 88 2d 82 21 22 4b e8 29 18 df fc 48 43 4f d8 42 42 7e c2 12 43 e8 42 48 7f f0 21 09 3d 63 0d 00 00 00 1e cf f9 02 c8 00 80 90 06 1d 22 95 4a 1b 49 23 2b 8d 8a 29 7f 88 8a ff 09 15 fe 0a 48 00 00 1e cd fd 82 24 00 43 c8 89 04 9a b9 0d 62 34 0b b0 a5 c2 30 c6 cc 67 00 00 00 00 00 00 09 00 04 00 00 00 22 00 17 00 17 00 00 00 00 00 1e cf f9 00 08 3c 82 10 92 05 11 5d 12 8f e8 c6 3f b6 31 8d fb 24 24 0f d9 09 24 3f a2 49 0c 80 00 00 1e cf fb 00 88 04 80 12 a2 45 02 8d 65 16 99 24 55 c5 36 45 14 00 00 1e cd fd 81 24 04 42 48 11 02 90 85 ea 05 dc 6d 01 67 16 61 00 c6 cc 58 00 00 00 00 00 00 0a 00 04 00 00 00 1b 00 12 00 14 00 00 00 00 00 1e cf f6 00 90 01 01 20 68 6a 1a 74 68 54 a5 30 53 b0 08 9d a0 81 3b 30 c0 00 00 1e cf f9 01 08 2c 80 14 02 0d 31 3a 02 a9 08 a0 00 00 1e cd fd 80 24 00 40 48 01 06 80 84 5b 44 ba 12 39 40 c6 cc 5a 00 00 00 00 00 00 0b 00 04 00 00 00 1d 00 12 00 14 00 00 00 00 00 1e cf fb 00 48 14 82 90 02 01 25 2a 0d 35 a2 89 42 8d 43 98 2d 8a d6 8d 01 68 00 00 00 1e cf f6 02 10 59 02 21 a8 24 f4 4b 50 6a 00 d0 00 00 1e cd fd 80 a4 00 40 48 01 06 84 84 41 40 db 92 06 00 c6 cc 5f 00 00 00 00 00 00 0c 00 04 00 00 00 21 00 17 00 10 00 00 00 00 00 1e cf fe 40 31 02 90 52 01 21 48 64 a8 3a 2b 24 8d c5 1a 45 1a 28 a2 47 1d e1 5a 5f ba 23 80 00 00 1e cf f2 04 10 09 00 20 68 a4 55 49 5e 48 a4 8a 56 80 49 23 00 00 00 1e cd fc 8a 64 00 40 c8 41 02 de 81 0a c0 c6 cc 62 00 00 00 00 00 00 0d 00 04 00 00 00 1f 00 18 00 14 00 00 00 00 00 1e cf ff 60 38 81 c8 04 81 90 e4 32 0d 19 76 49 35 34 28 af c8 8d 14 73 c7 69 7e 85 58 00 00 1e cf ec 0c 20 32 1c 40 52 68 0b 50 22 81 28 1a 8b 05 20 2c 83 00 00 00 1e cd fc 81 a4 00 44 48 01 1e 80 b5 13 21 8a 4b 45 68 c6 cc 68 00 00 00 00 00 00 0e 00 04 00 00 00 21 00 1b 00 15 00 00 00 00 00 1e cf ff b0 14 40 62 06 40 08 09 04 8c 95 34 75 29 4d e8 51 5f 89 1b 44 77 e4 29 b1 0d 41 00 00 00 1e cf e4 06 20 92 10 41 e8 04 64 f4 0c 36 86 16 c6 1e c2 0f 63 19 c2 08 00 00 00 1e cd fb 0c 48 08 85 90 42 25 19 2a 94 2b 35 87 10 e7 00 c6 cc 5b 00 00 00 00 00 00 0f 00 04 00 00 00 19 00 14 00 17 00 00 00 00 00 1e cf ff d8 02 20 91 00 22 64 03 14 a9 4a d5 88 a4 6a 43 99 10 65 80 00 00 1e cf d8 58 40 e4 19 09 43 24 a2 5a 83 8b 20 5b 08 b0 00 00 1e cd fb 00 48 00 88 90 a2 05 7d 12 56 92 49 8e 28 d4 90 94 88 c6 cc 71 00 00 00 00 00 00 00 00 05 00 00 00 31 00 19 00 10 00 00 00 00 00 1e cf f6 03 90 19 01 20 28 0f d1 49 58 51 47 f2 4a 2d 5f ff e0 08 db 7f f0 02 b6 df fc 00 b6 dd ff f0 04 97 2f bf c0 82 de cd ff 44 37 76 64 00 00 1e ce 40 e4 02 86 20 68 84 74 c9 91 a8 c7 b0 84 70 c6 71 8c df 30 86 00 00 1e cd 20 a9 0c a4 28 62 05 65 02 95 89 b0 c6 cc 82 00 00 00 00 00 00 01 00 05 00 00 00 3a 00 1b 00 16 00 00 00 00 00 1e cf fd 80 64 02 40 48 0b 02 82 85 07 fd 12 4b 55 d7 7f fc 6d 9b 5b ff fc 35 36 d9 bf ff c3 35 6d bb ff ff 0a aa 66 d9 ff 0a ed b7 5f ff f8 ea ad b2 ff ff 8e aa d9 20 00 00 1e dc 40 44 07 40 90 44 3d 01 22 25 6a 20 ba 18 76 10 7b 18 e2 05 10 a5 00 00 00 1e cd 20 19 09 a2 a8 02 05 09 19 72 35 98 f3 08 6f 99 9b 40 c6 cc 89 00 00 00 00 00 00 02 00 05 00 00 00 2d 00 21 00 24 00 00 00 00 00 1e cf ff d8 02 20 13 01 20 24 0b 04 85 0a 1f e9 29 6b 95 ff fe 2c aa df ff e2 c9 44 ff c5 52 6f ca 8c 42 11 c2 1b 3f a1 a1 a6 00 00 00 1e cc c0 64 12 80 21 a8 04 d4 4a d3 46 a5 29 df e0 95 5f f8 56 ab ff f1 25 56 ff fc 4b 55 80 00 00 1e cc 40 c4 06 86 20 74 02 42 24 3a 4c 64 7f 63 1a 49 e9 09 24 cf d5 24 92 4f d4 96 29 27 ea 4b 14 90 c6 cc 99 00 00 00 00 00 00 03 00 05 00 00 00 31 00 27 00 2a 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 40 02 10 40 11 84 42 82 04 05 02 4d b4 31 a4 9d 09 24 93 d2 49 24 9f 64 92 43 3e 88 42 49 3d 0a 42 40 00 00 1e cd 20 19 02 a0 28 0a 05 03 a5 42 9a 55 3d 2a ab ff ca b5 5f fe 21 5a bf fc 55 69 ff 95 54 ff cd 14 bf ca 90 00 00 1e cc c0 44 00 81 20 08 04 1f 40 89 04 22 37 ff 49 0c 92 7e a5 24 98 bf 52 52 49 3f 61 25 20 7b 8a 40 86 c8 18 7b 31 80 c6 cc 84 00 00 00 00 00 00 04 00 05 00 00 00 2c 00 22 00 1f 00 00 00 00 00 1e cf ff fe c0 21 80 04 00 40 0c 00 80 40 43 c8 10 42 3d 24 fe ac 52 49 3e 88 52 40 e9 24 84 3b 09 20 5d b1 86 a3 19 4c 65 80 00 00 1e ce c0 14 02 80 a0 28 14 14 28 be 8d 2a a9 3f f2 d4 9f e5 48 fd 48 9f a4 44 a1 46 1c 21 c3 00 00 00 1e cd c8 00 40 04 02 80 20 10 91 fa 04 10 8c 2e d9 8c e6 20 e2 08 2d 84 1c 40 ec 05 00 c6 cc 68 00 00 00 00 00 00 05 00 05 00 00 00 22 00 19 00 16 00 00 00 00 00 1e cf ff e4 00 10 00 81 08 29 0c 49 22 22 55 6d 12 54 9a 4a ff 11 2b f0 a5 5f f9 14 af fc a2 a0 00 00 1e cf e4 01 21 32 04 42 51 88 6b 11 d6 63 cc 63 8c 62 c4 10 df 19 98 00 00 1e cd fb 01 08 2c 80 10 d2 01 89 2a a6 5c 69 29 1c 77 88 e0 c6 cc 86 00 00 00 00 00 00 06 00 05 00 00 00 27 00 27 00 21 00 00 00 00 00 1e cf ff c8 06 20 31 03 20 64 05 86 42 46 9a ba ba 4b ff 2a 93 fc 52 a7 fe 16 95 ff e2 a9 4f fc 8b 4b ff 0a c8 00 00 1e cf ec 00 20 62 04 40 f4 11 11 12 04 7a 99 8d fd 06 6c 7f 42 10 93 d8 42 43 7b 21 21 0f e2 12 43 7b 09 21 00 00 00 1e cd fc 80 a4 12 40 18 29 0e 82 83 4a aa d3 71 d3 f4 29 5f e4 55 3f 0a 95 fe 12 ab ff 03 52 c6 cc 7d 00 00 00 00 00 00 07 00 05 00 00 00 25 00 1f 00 22 00 00 00 00 00 1e cf ff f2 01 88 0c 40 04 04 84 60 91 91 aa 8d 4a 52 fc a4 5f e6 48 fd 25 2f f1 4a 3f cc a5 bf d4 54 80 00 00 1e cf c8 00 40 44 2d 02 42 23 d1 20 51 ba 20 83 cc cc 5d 99 85 99 8c fb 31 8b 31 06 00 00 00 1e cd f9 00 c8 04 83 90 29 02 41 46 9d 0d 2e e2 bf cc 91 fa 49 3f cc 91 fa 91 3f 29 17 f9 91 00 c6 cc 64 00 00 00 00 00 00 08 00 05 00 00 00 1f 00 17 00 17 00 00 00 00 00 1e cf ff f9 00 84 0c 20 02 06 e0 c8 04 44 84 79 22 96 83 4a 34 e4 a4 75 f9 22 78 a8 60 00 00 1e cf 90 1c 80 c8 1a 01 d0 e8 a8 b5 29 aa 2d 11 e8 62 d3 00 58 00 00 1e cd ec 06 20 62 03 20 c4 4d 29 2a 36 16 7b 14 1e 09 a0 f2 80 c6 cc 99 00 00 00 00 00 00 09 00 05 00 00 00 34 00 27 00 27 00 00 00 00 00 1e cf ff ec 00 30 10 80 08 01 00 40 20 21 ff a0 41 88 e9 3f e8 52 49 8b ff 48 24 b1 67 c8 4a 49 91 ec 01 09 93 3c 80 8c 93 3b 08 12 66 72 0c 86 4e 00 00 00 1e cf d8 06 40 a4 15 00 e8 32 1a 54 5e 9a 5d cf fc 32 97 ff 81 55 7f f8 0a 55 ff e0 45 2e fc 10 aa ff c0 46 a0 00 00 1e cd f6 03 10 31 01 b0 02 09 19 1f 44 92 99 7c 46 6c ff 83 1a 43 ff 90 84 86 7d 04 24 93 d0 20 da 7a 40 d2 40 c6 cc 88 00 00 00 00 00 00 0a 00 05 00 00 00 32 00 20 00 1f 00 00 00 00 00 1e cf fe c0 01 01 10 bb 00 20 08 44 49 7e 81 08 8c 2f ed 92 48 1f ff fc 91 09 24 7f f5 94 42 80 bf fe b2 44 42 4b f9 4a 88 88 4b fb 4a 8a 88 50 00 00 1e cf f2 08 10 19 0c 60 28 34 94 1a 34 c8 69 72 8a ff ca a4 ff c9 51 7f fa 8a a7 ff 95 64 00 00 1e cd fb 04 48 08 86 90 62 26 84 91 3e 82 88 27 63 10 fe c6 31 8f f9 48 40 9e c9 08 00 c6 cc 4b 00 00 00 00 00 00 0b 00 05 00 00 00 1a 00 13 00 07 00 00 00 00 00 1c a8 51 1f ff e8 5c 40 04 04 46 10 4d 49 0c b8 f7 78 73 19 14 f5 88 b0 00 00 1e cf f2 11 90 11 0d 20 48 f4 45 2a 95 2c 91 4a 00 00 00 1e cd fb 28 00 c6 cc 61 00 00 00 00 00 00 0c 00 05 00 00 00 1b 00 17 00 18 00 00 00 00 00 1e cf fd 80 24 00 40 c8 39 01 41 6e 89 14 28 6a 28 12 41 27 69 14 57 e2 88 00 00 1e cf f2 07 10 09 0e 20 28 c4 35 49 5a 69 85 88 2c 51 34 18 60 00 00 1e cd fb 02 c8 00 80 90 02 1d 21 1a c4 ca 34 e2 8a 38 83 88 12 88 c6 cc 61 00 00 00 00 00 00 0d 00 05 00 00 00 18 00 1b 00 17 00 00 00 00 00 1e cf fe c0 b1 02 30 32 12 41 30 54 a4 4c aa 0f 0d 11 3d 0a 1d 00 00 00 1e cf f2 00 10 09 00 21 08 14 14 0a 91 2c 91 0e 28 a2 0e 61 1c 40 8b 30 80 00 00 1e cd f9 00 08 04 81 10 12 9d 01 6a 47 54 79 02 4a 12 50 92 80 c6 cc 7a 00 00 00 00 00 00 0e 00 05 00 00 00 23 00 1f 00 21 00 00 00 00 00 1e cf ff 60 80 80 c8 11 01 20 08 48 53 a0 a7 76 33 7d 83 33 e1 99 bf 83 33 df f0 10 6c 7f c4 21 24 00 00 1e cf ec 00 20 42 08 40 e8 44 64 74 8b 2e 41 0c f8 cc 47 cc 62 3e c2 08 e1 06 71 8c 00 00 00 1e cd f9 01 c8 14 81 30 32 1d 0d 06 85 75 aa 63 92 fc 89 3f 22 a5 fe 22 97 f9 15 2f f2 45 40 c6 cc 77 00 00 00 00 00 00 0f 00 05 00 00 00 28 00 19 00 1f 00 00 00 00 00 1c a8 51 1f ff fe 80 02 02 20 02 28 46 14 90 12 28 a8 76 63 17 6c d8 2f 6d 0c 17 de 24 83 7f f0 52 40 9f 4c 20 44 00 00 1e cf c8 08 41 04 06 81 21 91 68 12 32 e3 48 16 50 92 84 94 24 85 62 00 00 1e cd f2 00 90 19 05 20 94 1a 1a 34 94 d6 4b 69 23 6a 85 3f 29 09 a4 84 d2 22 65 0a 00 c6 cc 7f 00 00 00 00 00 00 00 00 06 00 00 00 33 00 18 00 1d 00 00 00 00 00 1e ce c0 5a 01 a0 34 07 40 c8 36 0f e4 64 59 6b 7b 7b ff fc 01 13 99 99 fd 10 9b 97 73 fa 02 5b d9 7f fc 02 5b b7 7e 01 2d b5 fe 05 5a bf f0 15 58 00 00 1e d4 40 64 04 80 d0 64 22 1d 32 25 6a 31 c2 94 0b a8 f5 3c 72 40 00 00 1e da 40 04 02 83 20 68 a4 15 49 54 20 93 99 c2 08 dd 63 36 f8 21 a4 9d 0c 69 20 c6 cc 97 00 00 00 00 00 00 01 00 06 00 00 00 2d 00 27 00 2c 00 00 00 00 00 1e cf fe c0 15 00 c8 0b 01 90 2c 12 12 2f ff 45 4a ad 6a 3f ff fc 72 c9 24 fe 37 50 23 fc d4 b1 b9 51 6d 0a 66 68 66 7b e0 8d b4 00 00 1e cd 20 11 02 a0 68 12 09 05 2a 14 51 9a aa ff 09 57 7f e0 5a af ff 10 ab 5f fe 21 56 bf fc 48 ac ff ca 34 80 00 00 1e ce 40 24 08 80 20 08 04 1e 91 12 08 45 f6 6d 24 9f 49 24 99 3f 42 98 a4 ce d2 52 62 9f d4 a1 49 27 ea 4a 49 27 ea 4a 48 40 c6 cc 99 00 00 00 00 00 00 02 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff ff f4 08 08 10 20 00 80 04 00 85 20 09 04 08 20 53 e8 52 49 27 d1 01 60 c1 f5 29 24 87 aa 12 42 7b 24 84 0d 90 86 1d 0d 06 80 00 00 1e cc c0 14 02 80 d0 14 0a 0a 14 28 7e 95 55 d4 ff fc b5 65 ff f9 95 53 ff 2b 49 ff 95 49 fe 64 2b fc c4 69 0a 00 00 00 1e cd 60 01 00 20 08 05 00 80 81 05 1f f4 12 8d e9 0f d9 8a 60 87 d5 31 40 2d 92 41 9f d2 40 82 ed 06 3c c1 2c 14 c6 cc 65 00 00 00 00 00 00 03 00 06 00 00 00 23 00 18 00 13 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 00 80 21 11 d8 99 20 85 ed 8c 11 f6 63 5b a0 20 a3 07 60 94 61 d8 c9 80 00 00 1e cf c8 02 40 24 0d 03 42 68 28 d1 ad 49 65 54 86 28 40 34 2c a0 00 00 1e cd f9 00 08 08 82 10 52 19 25 12 d4 03 93 ac 00 c6 cc 56 00 00 00 00 00 00 04 00 06 00 00 00 1a 00 13 00 12 00 00 00 00 00 1e cf ff b0 00 40 c2 06 44 c8 02 89 02 b6 12 63 84 a4 51 5e 09 68 4a b0 00 00 1e cf f2 01 90 61 03 21 88 14 82 03 64 52 16 34 c0 00 00 1e cd fd 88 a4 00 42 c8 21 0e aa 91 1b 68 2c b0 c6 cc 80 00 00 00 00 00 00 05 00 06 00 00 00 28 00 24 00 1d 00 00 00 00 00 1e cf ff 90 14 40 62 06 c0 ac 19 0c 84 8d 14 72 5d 57 fe 15 4b fc 12 ab ff 08 aa ff c2 32 ef e2 2a e3 ff c0 2a dc 00 00 1e cf f6 02 10 21 00 20 7a 08 84 89 12 3b 08 42 ec 66 6f 8c cd be 02 1b 6e c0 c6 87 c4 21 8d b0 31 8c 00 00 1e cd fd 80 a4 0e 40 98 19 0e 89 42 a5 42 2d 49 c7 5e 1c af c4 95 f8 94 bf 24 90 c6 cc 99 00 00 00 00 00 00 06 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff f4 02 10 10 80 84 08 41 11 88 44 26 45 38 b5 ff f8 b0 ab 7f fe 24 aa 5f fe 0c 56 7f f8 aa a7 fe 16 95 ff f9 85 49 ff e2 d1 10 00 00 1e cf e4 00 20 22 00 40 10 48 08 7d 12 0a 46 7f d2 43 43 7b 09 21 0f e2 48 40 f8 90 c6 3f a1 20 43 e8 41 ad 46 68 00 00 1e cd fb 00 c8 0c 80 90 12 05 0b d0 91 a2 95 77 ff 95 95 7f f8 a8 d3 ff 28 d2 ff ca 32 bf f2 8a 9f e5 44 fd 22 00 c6 cc 6d 00 00 00 00 00 00 07 00 06 00 00 00 23 00 17 00 1c 00 00 00 00 00 1e cf ff fd 80 62 01 10 11 03 10 64 0b 09 19 32 d1 35 42 9f 94 44 d2 14 fd 42 b3 11 97 a0 cb 58 c0 00 00 1e cf 20 11 02 20 f4 01 08 92 91 5a 05 d0 19 51 ee f1 1c c2 ba 00 00 1e cd e4 01 20 12 06 41 50 5a 0a 34 6b 56 a2 53 49 69 e4 4c 06 12 73 29 8c c0 c6 cc 70 00 00 00 00 00 00 08 00 06 00 00 00 20 00 19 00 20 00 00 00 00 00 1e cf ff ff 90 14 20 70 81 18 28 83 11 44 12 33 82 24 05 0a 63 88 62 39 99 9b e3 48 63 00 00 00 1e ce 40 64 02 93 a0 48 74 54 54 2b ad ae 29 5f 8a 53 f2 52 7e 52 40 00 00 1e cd 90 24 81 88 1a 00 81 46 42 81 14 2b 0a c1 90 84 73 10 ce 23 33 7c cd 8c 7d 08 41 80 c6 cc 8e 00 00 00 00 00 00 09 00 06 00 00 00 2f 00 25 00 23 00 00 00 00 00 1e cf ff ff c8 02 10 00 40 84 08 c0 08 0a 1e 4c 20 20 84 7d 61 0f 4c f4 04 24 99 ec 09 24 cf 51 09 26 7a 24 84 93 b0 84 86 7b 21 09 10 00 00 1e ce 40 34 06 81 a0 28 14 0f 46 8d 14 aa bf f0 a9 d7 fe 14 aa ff c4 55 3f 14 95 fe 49 27 e9 22 fc 91 00 00 00 1e cd 60 01 03 20 08 02 01 07 d0 24 41 48 bc 43 6d ba 41 b4 3e 21 21 8f a1 0c 37 06 10 51 06 21 00 c6 cc 91 00 00 00 00 00 00 0a 00 06 00 00 00 39 00 20 00 21 00 00 00 00 00 1e cf ff fe 40 01 80 14 00 c0 14 01 80 c0 40 47 fb 0c 91 ce 42 9f ff a8 8d 11 09 7e d2 22 22 20 7d a2 a5 0a 17 fe 94 28 84 97 fd 44 a1 2c 3f a9 29 24 9f d8 0a 04 80 00 00 1e cf b0 05 80 c8 0a 02 83 42 f4 28 51 5a 93 95 51 7f 8a 49 f9 48 49 21 28 a1 0a 10 51 40 00 00 1e cd e4 00 20 02 00 40 90 88 3e 81 02 0a 21 7b 33 1f 6c c2 3e cc 69 31 92 c6 38 c1 da c3 80 c6 cc 5d 00 00 00 00 00 00 0b 00 06 00 00 00 1e 00 15 00 13 00 00 00 00 00 1e cf fe 40 01 04 90 12 04 40 12 51 a0 a4 94 52 6c 38 c1 d7 8c 52 20 76 05 e9 35 80 00 00 1e cf f6 0a 90 21 07 21 48 54 c4 6b 13 28 b1 0e 61 c8 00 00 00 1e cd fb 09 48 20 80 90 02 05 d1 0a b4 0b a8 d3 00 c6 cc 70 00 00 00 00 00 00 0c 00 06 00 00 00 2b 00 1c 00 12 00 00 00 00 00 1e cf fe c0 11 01 90 32 02 41 90 3d 19 09 15 ba 7d 4a 8f fc 35 2b ff f1 22 b3 ff c1 4a 57 ff e2 42 8d ff e2 11 2b ff 10 54 00 00 1e cf f6 00 10 31 07 60 88 44 5a 44 c9 dc 43 c4 31 c6 31 62 08 2c c6 16 c2 08 00 00 1e cd fb 02 48 00 80 90 22 2d 19 08 8a 5a 81 10 c6 cc 7a 00 00 00 00 00 00 0d 00 06 00 00 00 24 00 22 00 1d 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 48 02 29 4a 04 12 e8 8b f2 44 ff 32 27 f8 a4 9f f9 24 af ff 22 93 fc 2a 8e 00 00 1e cf ec 02 20 82 06 c0 90 88 f4 49 14 4e 84 31 f6 31 0f b3 19 bf a0 43 43 fa 10 34 3e 08 63 40 00 00 1e cd f9 02 48 18 84 90 62 1d 1d 05 2a ea b9 ca fd 0a 4f 14 54 fd 0a 57 e2 2a 00 c6 cc 71 00 00 00 00 00 00 0e 00 06 00 00 00 22 00 19 00 1f 00 00 00 00 00 1e cf ff c8 02 20 01 04 20 04 11 07 24 22 24 85 ea 62 33 e2 cd 9c 8c db 8b 08 b4 31 a0 c4 43 00 00 00 1e cf d8 08 40 c4 0e 80 22 11 54 27 48 aa 08 12 c1 68 1a 83 0f 66 00 00 00 1e cd f6 00 90 29 03 20 68 0e 82 4a 8d 34 6e 53 bf 44 53 c8 e2 52 08 52 10 a2 92 88 00 c6 cc 66 00 00 00 00 00 00 0f 00 06 00 00 00 24 00 12 00 19 00 00 00 00 00 1e cf ff 60 01 80 88 01 02 21 76 01 01 12 0f fa 10 d8 5f 66 c1 1f f4 83 1e 20 47 d8 c2 a0 21 6f 58 00 00 00 1e cf b0 18 82 48 32 12 84 4b 48 20 23 51 2c 00 00 00 1e cd d8 06 40 64 1d 00 d0 68 6a 29 55 65 c4 b4 87 4a 0e c5 68 05 5c c6 cc 78 00 00 00 00 00 00 00 00 07 00 00 00 22 00 1e 00 21 00 00 00 00 00 1e cf ff c8 0a 20 11 01 20 64 14 82 4e 48 e1 45 33 b3 36 6a c6 3c 65 04 6d a5 1b 1a 46 c6 86 80 00 00 1e cc c0 54 0a 81 a0 14 3a 1a 34 1a 6d 57 7e 22 a7 85 14 f1 c8 91 45 12 28 e7 8a 18 00 00 1e cc c0 44 04 80 20 08 04 1e 91 12 08 45 e2 1b 6d ec 09 0d 3a 08 cc f8 62 0b 18 45 cc 1c 38 c6 cc 78 00 00 00 00 00 00 01 00 07 00 00 00 26 00 1c 00 1f 00 00 00 00 00 1e cf ff f2 02 08 08 40 8c 0e 40 10 88 88 08 21 72 36 67 48 68 63 a4 86 83 b0 86 86 b0 d0 c6 b0 c6 82 6c 20 00 00 1e ce 40 14 02 81 a0 28 14 34 1e 85 34 bb bf c4 91 fa 23 bf 44 25 05 1a 80 50 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 f4 10 c8 c7 f3 36 0b 99 85 d8 cb 38 16 35 c3 cf 00 c6 cc 5f 00 00 00 00 00 00 02 00 07 00 00 00 1f 00 13 00 16 00 00 00 00 00 1e cf ff c8 00 20 21 02 20 84 0b 00 81 42 ce 54 33 0d 10 64 11 1b 60 ef cc 56 9f 96 20 00 00 1e cf c8 06 41 64 02 82 a2 a8 2b 98 10 20 78 41 20 00 00 1e cd fb 00 88 35 80 10 f6 01 3e c5 0a 49 34 b1 27 9c 78 f0 c6 cc 5b 00 00 00 00 00 00 03 00 07 00 00 00 1f 00 11 00 14 00 00 00 00 00 1e cf ff 20 18 80 08 09 08 20 09 d4 28 1b 46 2d 1d 41 29 c5 1b 39 cf fc 32 4f ff 29 52 00 00 1e cf e4 0a 21 42 20 44 11 8a 0b 90 a8 60 00 00 00 1e cd fc 80 e4 22 43 c8 39 0e 9a 8d 6b 2f 12 f1 e2 80 c6 cc 66 00 00 00 00 00 00 04 00 07 00 00 00 22 00 12 00 1b 00 00 00 00 00 1e cf ff 60 48 81 a4 04 85 90 52 59 19 07 64 b3 74 21 53 ff 21 4a ff c1 29 7f e1 25 3f c3 66 80 00 00 1e cf d8 10 42 04 41 0e 4d 29 23 54 cb 53 71 48 00 00 1e cd fb 01 c8 14 81 10 32 15 35 3a 24 5a 24 d1 b6 08 5c 83 1b f8 c6 86 00 c6 cc 88 00 00 00 00 00 00 05 00 07 00 00 00 36 00 1c 00 1f 00 00 00 00 00 1e cf ff 90 04 40 62 02 40 48 12 09 0a 0f e8 96 55 5c ff ff c4 92 b5 ff c2 2a d5 ff ff fc 22 25 97 7f fc 10 6c 9a ff f0 92 6d 5f fe 16 4b 5b ff 84 8a d2 80 00 00 1e cf c8 00 40 84 09 02 40 e8 09 12 27 51 44 98 49 07 8c 51 4e f2 22 bf 51 20 00 00 1e cd f6 01 90 19 03 20 68 0d 05 1a 54 d1 72 88 85 22 68 1c 53 18 e6 66 6f e9 09 0c 00 c6 cc 76 00 00 00 00 00 00 06 00 07 00 00 00 28 00 1a 00 1d 00 00 00 00 00 1e cf ff f6 00 88 04 c0 c4 0c 81 21 6c 24 24 49 72 7c f1 4b 7f f8 b4 42 7c dc 26 ff 0b 0d ea 8b 5f f9 51 9f a8 20 00 00 1e cf 20 21 05 a0 48 6a 09 15 9a 34 29 2d c9 44 97 89 27 92 29 e8 8a 00 00 00 1e cd d8 02 40 64 15 04 a0 d3 10 ac 45 c5 2d 88 21 d8 cc df 43 18 6e 30 41 4c 60 c6 cc 6d 00 00 00 00 00 00 07 00 07 00 00 00 1e 00 1b 00 1d 00 00 00 00 00 1e cf ff fe c0 30 80 84 10 40 c4 00 82 40 48 20 49 25 11 cc 20 cb 08 0c 41 44 91 24 00 00 1e ce c0 94 06 80 a0 1a 05 1d 1a 14 34 92 e5 78 8a 5e 44 09 08 94 5c c2 00 00 00 1e cd 90 10 81 08 12 03 43 21 22 43 51 88 f3 11 9b ec 61 8a 20 44 21 d8 30 a8 80 c6 cc 6d 00 00 00 00 00 00 08 00 07 00 00 00 22 00 1c 00 18 00 00 00 00 00 1e cf ff fe 40 00 80 84 00 40 84 10 83 22 22 20 61 76 31 8c 7d 08 60 b6 30 e4 02 d9 51 c6 d2 38 00 00 1e cf 90 0c 80 48 1a 06 82 d0 d0 a3 55 1a 94 a2 45 23 51 08 16 c0 49 a4 08 00 00 00 1e cd d8 00 40 44 09 04 40 e8 08 92 2b 43 18 a3 05 20 0d 24 16 00 c6 cc 65 00 00 00 00 00 00 09 00 07 00 00 00 22 00 17 00 15 00 00 00 00 00 1e cf ff f6 01 08 08 40 84 00 80 20 d8 88 89 2a bc 82 19 f3 18 dd 30 53 b0 e1 50 51 43 22 96 00 00 00 1e cf e4 01 20 52 0e 40 28 54 74 54 ad 2d 0a 60 62 b0 20 20 50 00 00 1e cd f6 04 10 39 02 21 48 14 64 28 91 0f 52 79 8e 51 c0 c6 cc 69 00 00 00 00 00 00 0a 00 07 00 00 00 2f 00 13 00 10 00 00 00 00 00 1c f0 4e df ff ff d0 00 40 82 00 10 02 00 80 47 30 10 62 06 9f 61 09 07 fd 20 42 1f c1 06 67 fd 02 04 6f f8 20 63 f8 83 1b f8 b1 9c 00 00 00 1e cf f6 02 90 51 10 20 68 c5 06 0b d0 93 64 d3 40 00 00 1e cd f9 01 08 24 81 10 92 dd 09 1b 92 e0 c6 cc 64 00 00 00 00 00 00 0b 00 07 00 00 00 25 00 14 00 14 00 00 00 00 00 1e cf fd 81 04 0a 40 58 01 04 8c 85 0d 45 12 bb 10 c5 e6 62 2f 8c c4 7f f4 81 8c 7f f2 10 21 3e 90 31 a0 00 00 1e cf f9 00 88 28 80 90 c2 0d 09 d3 a4 50 14 31 48 a0 00 00 1e cd f9 02 48 18 83 90 82 1d 21 0a d4 08 b8 d0 74 f0 c6 cc 61 00 00 00 00 00 00 0c 00 07 00 00 00 1f 00 16 00 15 00 00 00 00 00 1e cf fd 80 a4 06 40 c8 14 87 22 a1 41 49 24 bb c7 69 30 50 5d 03 f4 30 cf fa 1a 04 00 00 00 1e cf f2 04 10 21 01 60 c8 64 1a 05 49 92 6b 03 89 60 70 b0 00 00 1e cd f6 07 90 01 05 21 48 35 d4 0a d4 22 e7 02 68 35 10 c6 cc 7a 00 00 00 00 00 00 0d 00 07 00 00 00 1f 00 22 00 22 00 00 00 00 00 1e cf ff 20 08 80 48 19 03 21 2c 12 54 6a 74 a9 4e fc 45 12 28 e7 8a 39 85 06 a1 d9 00 00 00 1e cf e4 04 20 22 04 40 f4 21 09 12 3d 26 23 3f 98 d9 be 02 19 be 19 88 fb 0c 43 88 20 b3 10 40 00 00 1e cd f2 02 90 29 01 20 5a 0c 8a 8d 0a 1d 24 b9 5f 85 29 f8 92 7e 45 2b fc 92 5f 89 27 e4 8a 00 c6 cc 6a 00 00 00 00 00 00 0e 00 07 00 00 00 1c 00 1b 00 1c 00 00 00 00 00 1e cf ff c8 02 20 a1 02 20 24 51 38 85 02 aa 29 42 9c ec 65 08 14 66 72 c2 00 00 00 1e cf b0 00 81 08 4d 00 41 25 a4 56 91 55 10 a6 e6 31 e6 61 68 20 53 06 00 00 00 1e cd d8 02 40 a4 21 03 44 a1 50 a5 62 92 49 6d 45 a7 90 a2 48 a3 49 09 48 60 c6 cc 54 00 00 00 00 00 00 0f 00 07 00 00 00 1c 00 0e 00 13 00 00 00 00 00 1e cf ff c8 08 20 c1 12 21 a4 01 10 a5 12 89 45 58 41 e6 d6 17 66 61 76 66 00 00 00 1e cf 62 e1 00 a1 48 4a 01 0d 01 10 00 00 1e cd b0 1c 87 48 02 02 b9 42 52 81 16 16 72 82 80 c6 cc 53 00 00 00 00 00 00 00 00 08 00 00 00 1c 00 0e 00 12 00 00 00 00 00 1e cf e4 01 20 02 04 40 90 08 08 53 24 a5 31 0d 08 21 18 64 18 a2 26 40 5b 94 00 00 1e ce 40 54 14 85 a0 89 04 94 c2 c0 00 00 1e cd 60 89 08 a2 28 ba 01 05 12 11 2a 4b 10 00 c6 cc 52 00 00 00 00 00 00 01 00 08 00 00 00 1c 00 0d 00 12 00 00 00 00 00 1e cf 90 08 80 88 12 0a 80 44 44 95 25 2a 1b 98 c5 0c 28 c7 b0 45 43 0e 08 60 00 00 1e ce c1 64 0a 80 20 28 06 23 c0 00 00 1e cd 60 59 07 a2 68 aa 01 14 9e 81 54 0f 42 b0 c6 cc 54 00 00 00 00 00 00 02 00 08 00 00 00 24 00 0f 00 0a 00 00 00 00 00 1e ce c0 24 02 80 20 28 6d 05 5a 14 35 29 4d 0a 57 7f 81 ca fc 39 d7 f8 22 ae ff 01 d5 df f8 24 5b 80 00 00 1e ce c0 c4 02 80 24 08 14 04 28 81 00 00 00 1e cd 20 89 07 a2 ab 40 c6 cc 75 00 00 00 00 00 00 03 00 08 00 00 00 36 00 12 00 16 00 00 00 00 00 1e ce c0 14 02 80 a0 68 14 34 1f 46 8a 55 55 ff fe 2d 57 9f ff ff 09 96 da ff f8 db 76 d7 ff f0 ce 5c cb 7f f0 6a ee 65 bf fd 2a cd cc cb ff e0 d5 57 2b 32 00 00 1e ce 42 44 1a 80 22 c8 94 45 a8 94 58 86 88 2c 00 00 1e cd 20 09 07 a1 c8 0a 45 31 1a e4 4b 24 52 a8 c2 28 63 00 c6 cc 97 00 00 00 00 00 00 04 00 08 00 00 00 25 00 2b 00 30 00 00 00 00 00 1e cf d8 02 40 a4 05 03 40 a0 74 68 d1 5a a6 92 2f 72 0a a0 8b a9 99 bf 98 db 4f 68 12 d3 3e b4 93 32 00 00 00 1e ce 40 34 0a 81 a0 5a 15 0d 0a 14 bb 55 d5 ff e1 6a af ff c0 95 ab ff ff 84 92 6a ff c2 56 ad ff ff 84 32 d5 ff 80 b5 aa 00 00 1e cc c0 04 08 81 20 08 3e 84 89 02 08 7f a1 b6 d9 3f a9 49 26 2f f5 24 b1 62 ff a9 28 58 b3 e5 28 51 0a 7f e9 28 51 09 7f e9 28 50 a1 00 c6 cc 81 00 00 00 00 00 00 05 00 08 00 00 00 2a 00 1f 00 21 00 00 00 00 00 1e cf f9 00 48 04 80 90 12 05 05 0d 0a 1f e9 2a aa bb ff f0 29 45 fe 45 17 85 0a 40 cb db 31 af fb 11 21 0f d9 8a 12 40 00 00 1e cf 90 0c 81 48 1a 05 a0 50 51 a5 4b 4a b8 a7 e9 22 fc a2 26 91 13 48 89 a4 12 8e 68 00 00 1e cd b0 00 80 08 12 00 84 41 e8 10 20 a2 17 23 31 be c6 18 b3 31 0e 63 0b 30 ce c0 94 1c c0 c6 cc 6b 00 00 00 00 00 00 06 00 08 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 88 02 19 42 24 50 ac 22 10 18 47 99 98 b3 36 37 f4 86 86 3f a1 24 24 00 00 1e cf d8 02 40 a4 15 02 a0 51 53 a0 a6 d2 89 14 e1 45 10 10 24 96 11 80 00 00 1e cd f2 02 10 21 05 20 88 44 54 ca 52 2a 80 a8 9b 1c 4b 11 45 00 c6 cc 7a 00 00 00 00 00 00 07 00 08 00 00 00 22 00 23 00 1e 00 00 00 00 00 1e cf ff b0 04 41 22 09 21 24 19 04 82 d2 4d 29 c4 b9 fe 1c a7 f8 15 57 fa 09 2f f0 3a fc c4 80 00 00 1e cf f2 04 10 21 01 90 22 19 09 0e 91 25 3e 42 19 f3 33 37 c1 8c 69 a1 84 6d f0 61 1b 7c 10 c6 80 00 00 1e cd f9 00 08 04 80 10 12 09 05 12 95 9e 61 27 6a 14 57 91 18 8a 2b d1 14 f4 52 00 c6 cc 87 00 00 00 00 00 00 08 00 08 00 00 00 34 00 22 00 1a 00 00 00 00 00 1d 16 4d bf ff ff e8 04 20 21 05 08 31 09 c6 21 13 2c a4 d4 aa 5f ff e2 4a a5 ff fe 24 94 5f ff f0 24 aa ff ff e0 24 94 bf f0 82 ab 7f ff e1 24 15 40 00 00 1e cf e4 06 20 62 02 c0 90 c8 48 74 0a 29 97 b3 66 3e 34 31 8f 89 06 c7 c4 21 87 31 04 7d 98 c0 00 00 1e cd f9 07 48 10 83 90 52 09 15 2a 34 2d 72 bf 51 27 92 44 a4 84 22 8c c6 cc 70 00 00 00 00 00 00 09 00 08 00 00 00 2b 00 13 00 1b 00 00 00 00 00 1e cf ff f6 00 88 14 42 04 0c 85 22 90 48 c9 ac 8e a5 49 7f f9 49 57 ff f8 92 a2 ff fc 0a a5 7f ff 81 25 47 ff fc 41 2a 00 00 00 1e cf c8 0c 41 c4 49 09 40 23 27 40 c3 48 3d 00 2c 00 00 1e cd f9 00 c8 14 82 90 06 05 15 2a 2a 2d 25 8e 28 82 91 85 1c c5 07 82 40 c6 cc 62 00 00 00 00 00 00 0a 00 08 00 00 00 26 00 11 00 14 00 00 00 00 00 1e cf ff fb 03 84 02 60 22 14 20 48 64 04 25 d0 59 2e ff 29 27 fe 54 a7 ff 85 54 ff fc 45 2a ff ff 12 0a 28 00 00 1e cf b0 40 84 08 82 20 8f 40 27 a4 4d 95 00 00 00 1e cd ec 11 20 b2 04 40 51 2a 2c 50 26 75 02 48 08 38 c6 cc 70 00 00 00 00 00 00 0b 00 08 00 00 00 26 00 1a 00 19 00 00 00 00 00 1e cf ff f9 01 04 04 20 42 00 20 79 00 48 44 40 bc 49 0c 69 e8 08 4b f8 4c 4b a4 23 12 21 fa a1 9f e6 9d 9c 00 00 1e cf b0 04 83 98 2a 15 42 a5 51 a9 4a 45 d5 1c af 0e 2b c8 51 05 14 00 00 00 1e cd ec 11 60 02 1e c1 11 74 05 88 74 09 2e 61 16 61 0a 10 ce 63 10 c6 cc 75 00 00 00 00 00 00 0c 00 08 00 00 00 34 00 18 00 12 00 00 00 00 00 1e cf ff e4 00 10 10 81 08 21 03 c8 04 04 04 0a 47 fe 92 49 21 ff 56 2c 52 4f fd 24 a1 42 9f fd 22 88 50 97 dc 25 11 0a 7f f4 8a 22 12 5e 42 58 b2 00 00 00 1e cf c8 20 40 e4 11 02 40 a7 27 51 45 e5 54 e1 0e 46 a4 11 45 00 00 00 1e cd ec 09 21 72 4a 41 11 68 8a d1 28 f2 06 1c c6 cc 75 00 00 00 00 00 00 0d 00 08 00 00 00 1b 00 21 00 22 00 00 00 00 00 1e cf ff 90 24 42 e2 04 41 c8 a2 09 4a 27 52 88 39 bb 61 15 78 3a d8 56 80 00 00 1e cf c8 00 40 c4 11 01 a1 91 11 d2 28 da 18 59 04 33 e2 19 9f d8 66 6f e0 84 86 f4 84 34 80 00 00 1e cd e4 03 20 32 0a 40 a8 54 54 68 34 da ed a2 44 d1 25 fe 24 97 fe 49 4b ff 03 29 ff 84 a9 00 c6 cc 66 00 00 00 00 00 00 0e 00 08 00 00 00 20 00 15 00 1a 00 00 00 00 00 1e cf ff b0 14 40 02 02 40 08 22 09 0a 84 93 2d 08 df 04 38 21 1c 76 34 8d 6d c0 c5 26 30 00 00 1e cf 60 21 05 a0 08 7a 01 59 2a 86 d8 7b 05 b0 5b 06 00 00 00 1e cd b0 04 81 48 42 0a 89 40 a3 4e a5 24 98 51 4e 08 71 c9 a4 44 d2 14 c6 cc 56 00 00 00 00 00 00 0f 00 08 00 00 00 24 00 10 00 0b 00 00 00 00 00 1e cf ff 60 20 80 88 21 01 b0 44 02 44 68 e8 42 0b 91 8c 5e cd 84 7f 61 88 7f 63 18 2e 62 0f b1 9a 00 00 00 1e cf 21 b1 00 a1 88 0a 01 05 31 c2 2f 00 00 00 1e cd 60 19 24 a1 48 0b 10 c6 cc 50 00 00 00 00 00 00 00 00 09 00 00 00 18 00 0d 00 14 00 00 00 00 00 1e da 40 64 02 89 a1 c8 1a 32 14 ec 2d 16 08 7c d6 1e 10 5c 43 00 00 00 1f c8 40 14 04 80 a1 48 74 24 20 00 00 1e ce 43 24 02 86 20 68 c4 34 c8 50 5a 3b 59 32 c0 70 c6 cc 4e 00 00 00 00 00 00 01 00 09 00 00 00 1b 00 05 00 17 00 00 00 00 00 1e ce 40 04 1e 85 20 a8 14 44 c8 6e 2f 43 0b 10 cf 84 21 fc d8 21 fc 46 12 00 00 08 08 00 00 00 1e ce 40 04 0a 81 20 a8 24 54 09 54 6b 14 84 d6 1d 81 ec 02 c0 c6 cc 44 00 00 00 00 00 00 02 00 09 00 00 00 1e 00 05 00 0a 00 00 00 00 00 1e d0 40 54 06 80 a0 34 07 49 47 43 43 a9 dd 77 f8 0a af 32 2b 60 ae f0 71 45 51 00 00 00 08 08 00 00 00 1e ee 40 04 66 80 2b 00 c6 cc 86 00 00 00 00 00 00 03 00 09 00 00 00 41 00 18 00 16 00 00 00 00 00 1c a8 51 1e 80 64 06 40 64 0d 83 61 90 c8 c8 ff f6 aa ae ee 66 7f fe 0d 56 2b 95 7f ff 03 55 77 9b 9f ff a2 8c ae ae b3 ff e8 63 55 57 9b ff e8 26 6a 77 2f ff 06 26 73 32 ff e0 c4 c6 5b c8 00 00 1e cc 40 64 13 40 10 44 4d 01 22 9a 4c 2e c2 15 30 73 0e 31 c6 00 00 00 1e d2 40 84 04 80 d0 a4 12 0a 14 ca 25 48 22 44 02 92 07 00 c6 cc a4 00 00 00 00 00 00 04 00 09 00 00 00 2f 00 2c 00 32 00 00 00 00 00 1e cf ff fb 00 44 06 20 02 00 20 18 0c 79 0b 12 88 97 b3 ea b2 64 e7 5a c3 26 1b 46 49 c9 6d 09 33 e6 ba 84 9f e4 bb 42 4f f9 2d b4 30 00 00 1e cc 40 34 02 80 d0 14 0d 05 0a 0f fa 24 aa ba eb ff ff c2 24 93 5f f8 48 35 5f e0 2d 57 ff 80 54 af fc 04 69 fe 05 27 e4 74 00 00 1e cc 40 04 00 80 20 14 05 01 05 02 3f fa 08 47 a6 4c ff d4 92 c5 8b fe 85 09 62 9f f4 92 50 a4 ff 52 4a 49 3f a8 29 24 9f a8 29 21 3e a0 49 20 c6 cc 82 00 00 00 00 00 00 05 00 09 00 00 00 38 00 18 00 1b 00 00 00 00 00 1e cf ff e4 00 30 00 80 08 01 04 40 20 21 ff 40 86 10 d2 4f fa b1 62 93 3e e1 42 85 0b ff ea 32 85 0a 3f 71 11 0a 14 7e d2 14 44 28 fd 95 28 88 51 f9 25 11 0a 20 00 00 1e cf d8 06 40 64 22 82 a2 a8 2b a8 5e ac e4 41 08 82 8a c3 10 c0 00 00 1e cd f6 01 10 39 13 20 c8 54 54 89 53 71 2a 56 c2 a5 b1 15 6c 29 10 72 00 c6 cc 80 00 00 00 00 00 00 06 00 09 00 00 00 2f 00 1b 00 1f 00 00 00 00 00 1e cf fe 40 01 01 30 22 04 41 e4 02 02 04 10 8c ff e9 24 90 9f b2 62 90 9f d8 49 48 4f ec 25 24 27 f5 42 52 07 ea 93 04 0f d8 52 10 00 00 00 1e cf ec 04 20 82 02 41 11 08 28 93 2a 82 88 51 84 22 0c 76 10 71 06 23 00 00 00 1e cd f6 01 90 29 06 20 68 54 54 14 69 ad d3 52 47 92 4b f2 91 7e 52 2f f3 22 7e 92 00 c6 cc 73 00 00 00 00 00 00 07 00 09 00 00 00 2a 00 1a 00 18 00 00 00 00 00 1c a8 51 1f fe 80 04 04 80 10 24 52 2d 29 04 92 98 a7 5f b1 15 7f 82 4a ff 0a aa ff c2 b5 5f fe 21 ab 5f ff f3 0c da e8 00 00 1e cf d8 08 40 44 09 03 a0 90 91 25 a0 a2 09 21 8a 20 c4 60 ac 08 1c 00 00 00 1e cd ec 01 20 32 06 40 d0 54 34 68 d4 59 25 29 06 8d 04 54 69 cc c6 cc 7b 00 00 00 00 00 00 08 00 09 00 00 00 28 00 1d 00 1f 00 00 00 00 00 1e cf f9 00 48 0d 81 90 12 05 05 07 f4 24 56 aa 5f fe 12 a9 ff e2 a3 4f fc aa a7 f9 6a 2f f5 54 5f b9 8b 1c ac 60 00 00 1e cf 90 00 80 88 22 0b 40 22 29 40 7d 0b cb 48 e2 af c2 94 ff 29 53 ff 25 55 00 00 00 1e cd b0 0c 81 c8 22 02 91 51 4c 91 19 25 2e 41 0d bf 88 36 87 f1 09 24 9f 49 24 92 00 c6 cc 76 00 00 00 00 00 00 09 00 09 00 00 00 25 00 1b 00 1f 00 00 00 00 00 1e cf ff 60 18 80 48 09 01 20 c8 28 3f a1 22 49 5c bf ff 51 19 7f f8 a2 4b f0 28 a7 a1 41 e5 60 ee cc 30 00 00 1e ce c1 d4 08 81 a1 28 24 54 a9 29 ad d4 fc 94 9f e6 a2 7e 92 4f d2 86 00 00 00 1e cd 60 f1 01 d0 24 11 04 87 48 89 25 e8 c6 67 cd b1 8d d2 49 03 76 48 41 bf a4 21 08 c6 cc 70 00 00 00 00 00 00 0a 00 09 00 00 00 27 00 18 00 1a 00 00 00 00 00 1e cf ff ec 01 10 18 80 88 09 06 41 20 ec 24 db 7b 7e 4a 55 ff f8 11 4a ff c0 52 3f c9 22 fc 91 6f 48 21 c3 00 00 00 1e ce c0 34 12 81 20 68 74 44 69 55 45 5c 73 21 48 41 e0 ab 0e 00 00 00 1e cd 60 01 03 20 e8 12 19 15 12 45 13 42 10 51 0c 73 19 0c 0e 56 04 80 c6 cc 6b 00 00 00 00 00 00 0b 00 09 00 00 00 2a 00 15 00 15 00 00 00 00 00 1c a8 51 1f ff ff ff e8 04 10 10 40 41 02 12 16 10 84 22 24 24 6a 2a 91 ff e4 54 7f f9 54 27 24 89 8a 3b 7a 0a da 08 80 00 00 1e cf 60 19 03 a0 88 1a 15 3d ab 75 16 85 0a 70 a7 10 30 00 00 1e cd b0 08 81 08 22 03 40 23 24 42 a1 81 e1 84 88 24 f0 c6 cc 65 00 00 00 00 00 00 0c 00 09 00 00 00 29 00 12 00 13 00 00 00 00 00 1e cf ff ff 60 00 40 06 04 60 02 00 c0 63 ec 42 04 11 86 9f b0 92 49 9f 42 24 84 d0 86 11 c2 08 4d 61 8b 58 b3 26 00 00 00 1e cf b0 04 81 48 42 02 97 7c 42 b1 37 1a 81 0c 00 00 1e cd e4 04 21 42 0a 41 14 09 a8 16 a4 45 ce 04 54 c6 cc 81 00 00 00 00 00 00 0d 00 09 00 00 00 20 00 25 00 25 00 00 00 00 00 1e cf ff ec 00 30 68 80 88 01 04 41 20 21 55 4c a3 b5 87 5b 10 52 9d 81 29 58 51 24 2b 00 00 00 1e cf d8 08 40 04 09 00 41 f4 64 08 12 4f a1 08 db fe 20 69 0f e8 04 34 3e 04 33 7c 11 99 f6 31 0e 21 88 00 00 1e cd ec 03 20 32 02 40 d0 28 1e 9d 0a 29 54 f9 25 5f f8 25 4f fc 85 2b fc 05 4a ff 04 95 fe 44 97 e4 88 c6 cc 73 00 00 00 00 00 00 0e 00 09 00 00 00 1d 00 1d 00 22 00 00 00 00 00 1e cf ff e4 03 10 00 87 88 11 02 40 25 2c 4c b2 49 65 87 10 2b 58 d0 62 b0 46 00 00 00 1e cf 60 01 01 21 74 01 04 97 44 89 9d 08 c1 76 c6 3e cc c2 ec cc 2c c4 1e 62 0c 00 00 1e cd 90 04 80 c8 2a 09 a0 d0 53 a2 e8 a4 92 53 94 8b ff 2a 47 f9 92 3f ca 91 fe 54 8f f3 24 00 c6 cc 62 00 00 00 00 00 00 0f 00 09 00 00 00 24 00 14 00 13 00 00 00 00 00 1c a8 51 1f ff ff f4 00 10 20 83 04 08 41 31 09 84 c4 88 1e c0 c3 cc c2 d0 40 b6 62 2d 59 84 73 18 a0 00 00 1e ce 40 14 20 80 a2 08 34 04 2b 11 24 94 4c 86 40 38 00 00 1e cc c4 64 02 87 20 28 e4 15 68 10 48 94 54 73 00 c6 cc 58 00 00 00 00 00 00 00 00 0a 00 00 00 23 00 0f 00 0f 00 00 00 00 00 1e cf ec 06 20 62 03 61 04 12 1f 4c 89 24 f9 4c 47 fc 33 11 ff 46 0d 8f e0 31 9f c1 8c df c1 82 40 00 00 1e cc 40 d4 04 86 a0 48 f4 01 01 05 30 00 00 1f 46 40 04 36 80 21 a8 05 d4 0a d2 60 c6 cc 55 00 00 00 00 00 00 01 00 0a 00 00 00 28 00 0f 00 07 00 00 00 00 00 1e cf d8 04 40 44 1a 80 fd 00 42 22 24 47 d4 66 17 cc cd b7 ec 21 21 3f 61 09 09 fb 09 09 0f a4 24 34 fd 90 08 60 00 00 1f 38 40 34 18 84 a0 c8 b4 45 e8 04 40 00 00 1f d2 40 04 38 c6 cc 49 00 00 00 00 00 00 02 00 0a 00 00 00 1f 00 0e 00 05 00 00 00 00 00 1c f0 4e df 40 44 2c 80 a0 93 69 14 a3 41 44 ad ac 17 62 0a 7d 98 77 d9 85 6f e8 60 e0 00 00 1f c8 40 34 00 80 a0 48 14 24 aa 00 00 00 08 08 00 c6 cc 57 00 00 00 00 00 00 03 00 0a 00 00 00 2d 00 0e 00 05 00 00 00 00 00 1e cf 90 0d 80 48 0d 01 a0 74 19 0c 83 fb 12 4a 57 ad df ff 82 49 6d df fc 02 49 ad fe 00 55 7b f0 46 ab fc 0a 9d fe 44 53 0a 38 00 00 1e e0 40 74 18 81 a1 88 12 89 0d 20 00 00 08 08 00 c6 cc 82 00 00 00 00 00 00 04 00 0a 00 00 00 2f 00 1a 00 22 00 00 00 00 00 1e cf ff 90 05 40 26 03 20 24 09 10 83 e4 2c 64 b5 a9 bf ff ff 1a b6 43 9f f8 6d b6 04 f6 b6 a5 bf c3 55 4f ff c5 55 6f f2 84 68 e3 00 00 00 1e cc 40 54 06 81 a0 5a 15 15 1a 0a 49 24 81 ac 16 c1 6c 09 60 d4 0b 40 00 00 1e d0 40 24 04 80 20 08 3f 42 44 81 24 2f b1 9b 3f 8c 33 3e 20 86 7c 41 05 88 31 c4 08 e2 06 00 c6 cc 78 00 00 00 00 00 00 05 00 0a 00 00 00 37 00 12 00 18 00 00 00 00 00 1d c8 48 1f ff ff ff 40 00 80 06 00 10 03 00 60 18 04 0c f1 0c 10 b2 16 7d a8 51 09 4f fa a1 42 85 3f d4 94 29 27 f5 28 4a 49 fa 12 c5 03 d9 24 84 3d 92 42 08 00 00 1e ce c0 34 14 83 a0 c8 24 15 c8 dc 69 82 50 00 00 00 1e cd 90 00 81 c8 1a 04 8b 43 40 89 36 90 6b b0 72 0a 0b 40 d0 90 c6 cc 77 00 00 00 00 00 00 06 00 0a 00 00 00 2d 00 17 00 1c 00 00 00 00 00 1c f0 4e df ff e8 00 40 04 00 40 10 88 48 f2 0c 18 ee 6c 15 18 ea f6 b2 ae ff c6 23 5e fc 48 bc ff 7f e0 12 4d b7 ff 00 92 ed d0 00 00 1e ce c0 64 12 82 21 08 1a 02 84 b4 1c 59 87 30 e6 0e 61 c4 00 00 00 1e cd 60 19 00 a0 68 35 06 86 9d 06 8a c9 22 52 9a 47 12 45 1a 85 18 28 87 10 c6 cc 87 00 00 00 00 00 00 07 00 0a 00 00 00 39 00 19 00 1e 00 00 00 00 00 1e cf f6 01 b0 09 01 20 34 0d 06 85 07 fa 24 95 ae b5 ff ff f0 9b 32 64 ff f8 66 db 75 ff f8 6e 5b 6d ff fc 53 72 d9 3f fe 29 cb 64 bf ff 8a ae 49 33 ff 06 cc 90 60 00 00 1e ce 40 04 6c 82 a0 a8 04 04 a9 52 41 24 ab d8 95 7e 1d 2f c2 95 00 00 00 1e cc 40 14 14 81 a1 88 34 a4 48 6c 31 62 19 be 10 d9 f3 1b 37 f4 09 09 9e 84 84 98 c6 cc a4 00 00 00 00 00 00 08 00 0a 00 00 00 2f 00 2f 00 2f 00 00 00 00 00 1e cf ff c8 02 20 11 01 21 04 0b 04 85 32 0b d5 44 6d ef a8 69 24 fd 09 24 9c ff 40 4b 16 2f f4 24 b2 14 ff 42 51 0b 17 fd 4a 12 c5 80 00 00 1e d2 40 34 07 40 50 14 0a 07 e8 51 a2 95 aa ff ff 15 5e 6f ff f1 0c b4 7f c2 b5 6b ff fc 49 6a 9f ff 89 34 53 ff f3 25 45 ff e3 51 10 00 00 1e cc 40 24 00 81 50 04 02 02 1f d0 24 84 a3 7b ff f8 25 31 49 fd 49 42 92 7f 52 58 a4 9f d4 94 28 4f d4 a6 22 1f 64 c1 08 7d 85 21 00 c6 cc 78 00 00 00 00 00 00 09 00 0a 00 00 00 29 00 1a 00 1e 00 00 00 00 00 1e cf ff e4 02 10 00 85 b8 01 00 40 24 21 4f a1 10 c7 f7 a1 8c ef 64 90 0f d2 43 0d ff 29 20 43 b2 10 c6 f6 42 12 20 00 00 1e cf c8 02 40 64 0d 06 a0 50 d1 a6 a6 b3 2a 82 1c 29 41 0e 30 21 66 30 00 00 1e cd d8 00 40 04 09 00 41 21 f4 08 12 51 3a 33 0b 66 1d 84 45 81 28 12 12 a1 2e 00 c6 cc 69 00 00 00 00 00 00 0a 00 0a 00 00 00 1e 00 1d 00 17 00 00 00 00 00 1e cf ff c8 0a 20 91 00 21 64 21 0c 81 0b 89 29 48 b0 38 8b 61 07 31 04 7d 9b 18 00 00 00 1e cf ec 01 20 42 12 42 10 e8 ca 52 2c bb 10 ce 31 05 b1 88 df 33 33 7c 42 18 c0 00 00 1e cd f9 0c 48 08 85 90 42 1d 15 15 0a ed 4b 8a 4f 22 a3 c9 28 c6 cc 70 00 00 00 00 00 00 0b 00 0a 00 00 00 23 00 19 00 1d 00 00 00 00 00 1e cf ff e4 00 10 08 82 08 19 00 41 22 2a 45 ca 86 e3 10 df 63 0c 51 04 37 d8 66 cc c6 23 b3 58 c0 00 00 1e cf ec 06 20 92 04 42 90 28 ca 51 2c d2 08 2d 0c 62 20 c4 40 ec 40 00 00 1e cd f9 00 c8 24 81 30 12 25 11 2a 94 29 2c 94 91 49 e4 8a 7a 24 4a 88 c4 51 80 c6 cc 69 00 00 00 00 00 00 0c 00 0a 00 00 00 1d 00 1b 00 1a 00 00 00 00 00 1e cf ff d8 02 20 01 01 20 04 09 00 85 12 05 50 81 cc 56 98 c1 83 82 04 a0 8a 20 00 00 1e cf e4 02 20 82 06 42 10 88 34 49 17 61 04 90 c5 10 22 30 54 04 28 81 80 00 00 1e cd f2 06 90 11 05 20 e8 24 54 a9 15 69 0e 71 91 08 8a 3b d1 08 8e 30 c6 cc 69 00 00 00 00 00 00 0d 00 0a 00 00 00 1c 00 1a 00 1c 00 00 00 00 00 1e cf ff d8 02 20 e3 03 21 8c 29 00 85 35 d4 24 ad 09 0e 68 25 a5 04 15 11 00 00 00 1e cf c8 08 40 44 11 01 a1 90 92 d0 2c a7 b0 c2 88 31 0c 71 00 e5 14 00 00 00 1e cd ec 03 20 32 0a 40 a8 34 54 68 a9 b4 94 94 51 5e 85 19 0a 0d 44 c8 1a 00 c6 cc 67 00 00 00 00 00 00 0e 00 0a 00 00 00 20 00 14 00 1c 00 00 00 00 00 1c f0 4e df ff ff f4 1c 10 e0 88 04 08 40 16 08 44 0d 90 a0 86 1c 8c 39 bb f2 0a d9 06 00 00 00 1e cf 60 11 02 20 f4 01 04 96 91 5a 02 0f 70 94 01 80 00 00 1e cd c8 02 40 24 0d 03 42 68 28 d1 aa 8d dc 53 c8 a3 0a 15 e8 71 07 0c 80 90 c6 cc 52 00 00 00 00 00 00 0f 00 0a 00 00 00 1b 00 0c 00 14 00 00 00 00 00 1e cf ff d8 00 20 61 07 20 44 21 04 81 1a c6 96 80 85 64 60 f4 9c 10 ac 00 00 00 1e ce c1 c4 06 83 21 68 02 a0 00 00 1e cd 20 09 03 a0 c8 3a 21 1d 42 31 5a 8d 21 c7 38 00 c6 cc 56 00 00 00 00 00 00 00 00 0b 00 00 00 1f 00 16 00 0a 00 00 00 00 00 1e cf ff d8 0c 20 41 00 20 36 20 88 43 24 22 86 57 18 c7 d8 41 d6 b1 9c 60 a1 4e 21 58 00 00 1e cc 42 24 0a 81 21 68 04 f4 0b 52 4a 0d 42 c8 d6 5a 10 56 00 00 1e da 40 44 1a 80 30 80 c6 cc 58 00 00 00 00 00 00 01 00 0b 00 00 00 22 00 13 00 0c 00 00 00 00 00 1e cf ff b0 00 40 42 04 40 88 02 0e c4 44 49 4b e4 21 9f cc 63 7f 18 63 cd 30 b3 08 58 43 98 30 00 00 1e cc 42 24 02 87 21 28 64 34 09 54 09 50 22 83 40 00 00 1f 2a 40 04 6e 80 21 e8 26 10 c6 cc 48 00 00 00 00 00 00 02 00 0b 00 00 00 1a 00 10 00 07 00 00 00 00 00 1e cf fe 40 41 05 c8 11 0d 90 04 82 12 3a cb 45 76 04 d0 34 2d 01 28 14 00 00 1e cc 40 74 0c a4 20 a8 a4 b4 89 d8 22 e0 00 00 1f ee 40 04 1c c6 cc 47 00 00 00 00 00 00 03 00 0b 00 00 00 1c 00 0f 00 05 00 00 00 00 00 1e cf fd 80 24 0a 41 c8 11 02 96 a5 4a 09 65 11 c1 94 10 b2 04 2c 33 38 d6 00 00 00 1e cc 40 14 0c 80 a0 88 d4 25 e8 01 28 00 00 08 08 00 c6 cc 5c 00 00 00 00 00 00 04 00 0b 00 00 00 25 00 12 00 0e 00 00 00 00 00 1e cf ff 20 28 82 08 19 08 20 88 3a 02 64 97 90 42 1f cc cd 8f e6 48 42 7a 42 43 4f b0 90 92 7a 42 43 40 00 00 1e ee 40 04 48 80 a1 88 34 c4 6b 17 20 d3 8e 00 00 00 1e d8 40 b4 0c 84 a1 88 34 e4 22 c0 c6 cc 63 00 00 00 00 00 00 05 00 0b 00 00 00 26 00 14 00 12 00 00 00 00 00 1e cf ff 20 10 80 08 11 02 20 ec 02 04 09 31 72 30 bb 66 33 e6 c3 17 b4 31 87 f4 84 19 fd 21 08 5f 43 01 00 00 00 1e d2 40 e4 02 87 20 68 c4 55 49 5a 26 c3 c8 2c 82 c0 00 00 1e cc 43 54 04 80 a0 08 94 84 ab 91 28 91 4a 18 c6 cc 79 00 00 00 00 00 00 06 00 0b 00 00 00 39 00 11 00 18 00 00 00 00 00 1c f0 4e df ff d0 18 81 98 09 81 60 b0 c8 3e cc 92 95 fa df ff 82 4b 77 67 f8 02 5b d7 bf d1 25 dd 7b fc 01 2d ec bf ff c0 11 6e 66 7f c0 89 72 e5 ff ff 04 45 b9 96 00 00 1e ce 40 64 12 82 21 68 44 b4 ca 54 68 1c 00 00 00 1e cc 40 74 10 83 a0 48 d4 06 c8 5e 4d 84 3c c2 23 e6 10 df 30 86 c6 cc 9b 00 00 00 00 00 00 07 00 0b 00 00 00 30 00 28 00 2c 00 00 00 00 00 1e cf ff ec 01 70 0a 80 98 0b 02 41 24 f9 0b 19 2d 68 df f6 ed 52 1f ff e7 2c 12 4f c9 65 08 7f fa 59 49 27 2d 41 1e f5 a8 cf 73 68 87 a0 00 00 1e de 40 34 02 80 a0 1d 06 8a 85 0a 28 f7 75 57 ff 91 a9 7f e1 1a af ff 10 a3 5f fe 21 55 7f f8 8a cb ff c4 56 40 00 00 1e cc 40 44 00 81 20 08 04 1f 44 89 04 22 5f ff 42 49 24 fa 24 92 49 fa 82 92 49 fa 92 92 43 e8 92 49 0f a1 49 24 3e 89 24 90 c6 cc 88 00 00 00 00 00 00 08 00 0b 00 00 00 35 00 1e 00 1e 00 00 00 00 00 1e cf ff ff c8 00 30 00 40 04 00 c0 08 06 02 02 3e 53 18 64 33 fe c2 85 0a 1f d4 b1 49 27 f5 28 4a 49 fd 50 91 84 fe c2 50 24 9f d4 96 09 27 f5 42 48 90 00 00 1e cf 60 0b 00 a0 28 1a 0d 0b d0 a1 45 65 6a 51 59 ea 0c 71 01 ce 10 ce 10 87 08 40 00 00 1e cd c8 00 40 04 01 00 42 21 f4 08 12 23 a1 18 7b 05 a0 49 0a 73 64 8b d9 24 f0 e4 c6 cc 83 00 00 00 00 00 00 09 00 0b 00 00 00 30 00 1d 00 1f 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 08 82 20 10 e4 44 08 64 6f f8 90 92 1f f4 84 92 4f a1 49 24 9f a9 0c 52 4f d0 94 92 67 69 43 24 3f 50 c5 0c 00 00 00 1e cf ec 06 20 42 06 42 10 88 2a 11 27 41 4c 5b 18 87 63 0a 41 85 b0 83 d8 41 80 00 00 1e cd f6 04 90 29 00 21 28 34 2a 14 e9 a5 35 14 97 e9 24 fd 24 9f a4 4b f2 44 fc 91 40 c6 cc 7c 00 00 00 00 00 00 0a 00 0b 00 00 00 2a 00 1d 00 1e 00 00 00 00 00 1c f0 4e df ff ff a0 20 82 04 00 41 08 2e 01 01 22 0c 7d 0d 0c 3e 84 83 3e 90 c6 1f d8 42 06 ec 84 1a e2 41 8b b5 e0 c0 00 00 1e cf d8 04 40 44 09 02 40 e8 09 11 2b 41 04 3c c4 11 cc 31 d8 41 c4 0e c0 96 00 00 00 1e cd ec 03 20 32 06 40 50 5a 0a 34 69 aa ee 44 a2 44 a2 29 e4 51 88 e2 50 e2 48 e0 c6 cc 5b 00 00 00 00 00 00 0b 00 0b 00 00 00 1e 00 12 00 14 00 00 00 00 00 1e cf fe c0 81 03 90 02 04 40 90 13 21 41 68 56 0c 12 4a 47 69 b1 22 48 ad 3c b4 80 00 00 1e cf 60 31 04 a0 08 62 05 18 e8 85 04 4a 4a 20 00 00 1e cd b0 0c 81 48 32 02 87 46 42 a5 45 85 58 e0 2a 00 c6 cc 5c 00 00 00 00 00 00 0c 00 0b 00 00 00 20 00 16 00 0f 00 00 00 00 00 1e cf fe 40 01 06 10 12 08 40 90 10 a2 45 04 96 91 47 3c 8e 25 0a 2b f4 45 3f 48 89 a5 a8 00 00 1e cf 20 31 1d 20 68 02 05 01 5a 04 50 e8 28 c5 93 07 30 60 00 00 1e cd 60 09 03 a0 c8 0a 35 01 5a 44 40 c6 cc 46 00 00 00 00 00 00 0d 00 0b 00 00 00 19 00 0c 00 0a 00 00 00 00 00 1e cf fd 81 64 08 41 c8 41 06 96 81 3b 0b 35 8e 18 a0 85 1c d4 28 c0 00 00 1e ce c0 a4 0a 82 21 68 02 e8 00 00 1e cc c0 74 10 81 b1 40 c6 cc 44 01 00 00 00 00 00 0e 00 0b 00 00 00 09 01 0b 00 19 00 00 00 00 c2 40 28 47 42 0a 11 d1 04 6b d1 06 d0 a6 5d 20 13 42 4e 8c 56 a0 5a 91 0b 41 90 0f 24 c0 6a 98 e5 41 c3 28 ac 0d d0 a1 10 51 13 16 05 17 52 c0 62 9c 00 15 7a 80 b9 42 a0 1d 50 51 a4 09 e1 1c c7 47 45 7a d6 d0 0b 4c 4a 77 bd 86 00 0a 81 3c c1 60 7e 85 32 d9 00 aa 14 5a f7 a8 03 34 a6 b0 00 03 da 50 d2 00 80 e9 b4 2f b8 f4 c8 32 80 ae 43 ef 90 55 62 78 32 c5 00 06 fe be 85 08 86 8d 29 e1 a9 76 7f 78 00 de b4 82 9a 35 80 0f 07 d4 81 30 3d bf 40 d0 18 47 fd 3c b9 60 fb fc d7 bf ec 40 00 fc 1c 3a 80 07 7c 9c 00 18 00 41 23 ff 60 a8 45 7f bf 7f 32 81 00 11 ff 73 88 00 f8 ff fa d5 09 00 00 20 00 15 1c 01 21 1a a2 1b 00 a7 ba 7d 00 fd fe e1 00 00 4f e2 4a 7e e7 a8 22 02 1f df ff ff fc 3b b6 d0 80 04 7e 6e fe b0 f9 a7 80 00 6e 0d fc 9d a8 00 20 3f 63 65 70 40 40 01 02 90 80 e0 43 39 6c 30 00 00 1e ce 41 e4 02 87 20 2e c0 00 00 1e cc 41 74 04 82 a0 08 34 04 29 11 41 24 3b 10 c2 4c 71 87 44 c3 8c c6 cc 53 01 00 00 00 00 00 0f 00 0b 00 00 00 1b 01 1a 00 07 00 00 00 00 a5 21 85 4c 63 6a 28 ac 0c a1 d5 88 03 c4 29 92 97 00 bd 15 35 c7 78 05 a5 69 ce 97 00 a6 98 42 98 7b 4c 21 4c 3d 4c 21 4c 10 9b a2 a0 da 2a 1a 80 7d 0a 18 a0 20 5c 00 2a ca fa 8b b8 a0 20 b0 88 20 4c 9a 00 b5 00 28 54 81 72 d4 85 d1 8a 15 c9 5b 68 02 34 50 97 bd 80 06 e9 a6 b4 00 00 77 54 03 46 50 14 0e 83 e8 11 29 d2 95 af 03 6b 96 f9 b8 0b 5c 7d f0 6e a3 74 1d 00 19 ab a8 51 cc a1 a6 ef d0 35 07 02 61 a2 23 14 53 4e 80 da 75 00 06 aa f1 d1 41 2a 0c 00 52 74 1f a1 fb 03 3f 93 e6 df c8 02 7f d7 8f 0f 40 80 00 26 01 07 c8 40 00 b1 83 54 00 52 40 1e b1 fd 8c 5d 02 44 8f 9f e1 c0 02 0f b2 20 0f f9 ff d7 f7 e4 3c 00 03 d0 20 00 24 18 a4 da cd 8b 9e c0 07 51 48 07 f7 ee 7d 80 0a 48 03 ff b1 f1 1c 58 64 01 c7 cf fb 70 77 e5 20 00 04 9b 3f 56 f1 4e 10 03 c1 9f 0f e0 a2 28 20 03 76 76 79 57 10 02 08 03 8f 40 80 03 81 00 20 41 c1 96 ec 22 d0 00 00 1e ce 40 a4 0a 81 20 29 04 54 08 d4 59 0a 44 21 11 31 19 32 10 b1 11 30 00 00 1e cc 40 35 38 c2 cc 06 00 00 00 00").to_vec(), hex!("e0 24 b3 d3 88 89 23 5c 63 00 05").to_vec(), ] - }; - static ref DECODED_ZGFX_SINGLE: [Vec; 5] = { - [ + }; + static ref DECODED_ZGFX_SINGLE: [Vec; 5] = { + [ hex!("13 00 00 00 14 00 00 00 02 05 0a 00 04 00 00 00 20 00 00 00").to_vec(), hex!("0e 00 00 00 54 01 00 00 00 04 00 00 00 03 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ff 03 00 00 ff 02 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 01 00 00 00 0c 00 00 00 0c 00 00 00 01 00 00 00").to_vec(), hex!("09 00 00 00 0f 00 00 00 00 00 00 04 00 03 21 17 00 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 03 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 18 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 40 00 40 00 06 00 00 00 1c 00 00 00 00 00 f6 17 b0 bf 6e 5f ce a9 02 00 00 00 00 00 40 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 00 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 01 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 00 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 40 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 80 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 00 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 01 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 02 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 00 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 40 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 80 03 c0 02 07 00 00 00 12 00 00 00 02 00 00 00 01 00 c0 03 c0 02 0c 00 00 00 0c 00 00 00 02 00 00 00").to_vec(), hex!("0b 00 00 00 10 00 00 00 00 c0 fd ff 03 00 00 00 02 00 00 00 c0 53 00 00 00 00 09 00 01 00 00 00 20 ab 53 00 00 c0 cc 0c 00 00 00 ca ac cc ca 00 01 c3 cc 0a 00 00 00 00 40 00 01 c1 cc 0c 00 00 00 00 00 00 00 01 00 c4 cc 83 53 00 00 40 01 00 01 01 01 c0 00 54 53 00 00 00 00 00 00 00 04 00 03 66 76 88 99 a9 32 11 11 22 12 11 11 11 22 12 11 11 11 22 12 01 c6 cc 57 00 00 00 00 00 00 00 00 00 00 00 00 19 00 13 00 14 00 00 00 00 00 1e cf fe c0 11 02 10 12 10 41 90 11 ae 44 7d 0d 44 0b 25 03 8b 44 40 00 00 1e cf d8 0c 41 24 19 09 42 2d 21 4c 48 91 a2 cc 00 00 00 1e cd fb 02 48 18 84 90 62 15 5d 22 92 a5 4b a0 93 80 c6 cc 6f 00 00 00 00 00 00 01 00 00 00 00 00 21 00 1b 00 1c 00 00 00 00 00 1e cf ff 20 28 80 c8 01 01 20 98 a9 51 a1 b5 dd bc 90 b7 e4 45 7e 92 12 89 2f d2 25 e2 56 00 00 00 1e cf c8 04 40 84 1e 81 21 91 68 13 2e c2 09 a0 81 58 41 cc 61 4c 41 cc 00 00 00 1e cd f9 00 48 14 83 90 09 02 45 51 42 ab d2 53 89 22 8c 47 10 50 c8 e3 20 00 c6 cc 7f 00 00 00 00 00 00 02 00 00 00 00 00 23 00 22 00 23 00 00 00 00 00 1e cf ff 90 04 41 42 00 40 48 32 41 1a c4 13 76 10 e1 08 df c1 99 bf 81 19 bd f6 01 1b 4f 40 93 6c 00 00 1e cf 90 34 80 48 05 0d 40 a0 50 21 65 29 89 73 d9 24 fc 29 57 fe 09 55 ff e2 23 57 ff 88 45 b8 00 00 1e cd f2 00 90 01 01 20 08 44 04 34 2a 31 17 08 43 84 21 c3 21 f1 8d 9f 08 6c fe 31 8d 27 a4 24 86 c6 cc 8d 00 00 00 00 00 00 03 00 00 00 00 00 32 00 25 00 1f 00 00 00 00 00 1e cf ff 60 10 80 08 01 00 20 88 08 7f 40 40 84 46 cf ff 94 92 42 7e a5 24 90 fd 4a 4c 12 7f 52 58 a1 3f a9 42 92 1f d5 0a 4c 13 fd 85 10 12 00 00 00 1e cf b0 04 80 48 0a 06 83 42 f4 28 51 5b b7 aa 49 ff 96 49 ff a8 a8 ff 2a 4b ff 25 45 ff 95 49 fe 2a 48 00 00 1e cd f9 00 88 18 82 b0 42 19 0e 91 32 29 a3 0c 7d 98 43 ec c6 2e cc 62 cc 61 66 20 c0 c6 cc 5d 00 00 00 00 00 00 04 00 00 00 00 00 1f 00 13 00 14 00 00 00 00 00 1d 16 4d bf ff a0 21 02 10 22 16 40 24 24 27 a8 c4 2e c6 21 c4 18 e2 0c 76 08 53 01 20 00 00 1e cf f2 05 90 11 0d 20 48 b4 25 2a 91 0a 50 58 68 00 00 1e cd fc 81 64 08 42 c8 31 12 80 85 00 48 85 62 2a 00 c6 cc 60 00 00 00 00 00 00 05 00 00 00 00 00 1b 00 17 00 17 00 00 00 00 00 1e cf f2 01 10 31 01 20 68 04 64 28 d4 2a 81 25 1a 45 68 d0 83 86 46 58 b0 00 00 1e cf f6 00 10 61 01 60 08 c4 16 2a 95 2c 91 ec a6 28 21 c1 40 00 00 1e cd fb 01 c8 20 84 90 62 35 0a 85 72 a4 8f 45 5a 08 1a 81 a0 c6 cc 6b 00 00 00 00 00 00 06 00 00 00 00 00 1e 00 1c 00 1a 00 00 00 00 00 1e cf ec 01 20 52 0a 40 b4 19 15 1a 2d 14 2a 84 14 54 d2 d0 94 28 d4 38 80 96 0e 00 00 00 1e cf ec 04 20 42 0a c1 10 88 ba 04 8a 2f 63 1e 30 87 cc 61 63 0c e1 87 58 40 00 00 1e cd f9 00 48 24 82 30 12 2d 0a 95 3a 52 2e b8 e4 85 34 e1 82 d9 90 c0 c6 cc 70 00 00 00 00 00 00 07 00 00 00 00 00 20 00 1e 00 1b 00 00 00 00 00 1e cf f9 00 48 14 81 90 49 02 45 46 8d 0e b5 29 5f e1 28 fc 72 26 29 15 f8 52 24 50 c3 98 00 00 1e cf d8 00 40 44 09 07 d0 08 49 12 e9 28 a5 cc 20 b9 88 3e c6 16 61 8f 98 83 c6 00 00 00 1e cd f2 01 90 39 04 60 68 74 4a 55 28 69 2c a8 92 a5 15 50 ed 0a 25 05 00 c6 cc 5c 00 00 00 00 00 00 08 00 00 00 00 00 20 00 15 00 10 00 00 00 00 00 1e cf fd 80 24 02 42 48 14 81 21 a7 42 87 4b 9c 99 1c 4d 21 4f c5 1c fc 8e 24 39 b7 68 70 00 00 1e cf 90 08 83 48 32 12 91 42 5b 40 fd 02 c4 4c 5d 01 40 00 00 1e cd e4 2c 20 12 00 40 50 0a 0c 1b 1c 00 c6 cc 57 00 00 00 00 00 00 09 00 00 00 00 00 21 00 12 00 0d 00 00 00 00 00 1e cf ff 20 08 81 48 29 02 90 64 32 7a 0e 99 a7 6e 91 2f f0 8a 26 29 11 e2 15 f8 a1 53 23 b0 00 00 1e cf 61 19 03 21 28 8a 45 45 8a 44 54 a8 81 40 00 00 1e cd e4 22 22 22 20 44 12 4c 00 c6 cc 6a 00 00 00 00 00 00 0a 00 00 00 00 00 24 00 19 00 16 00 00 00 00 00 1e cf ff b0 04 40 e2 06 40 a4 19 14 8c 85 0e d2 48 d4 71 6f fc 85 15 fe 21 4b fc 23 9f 85 29 f8 52 80 00 00 1e cf 60 01 06 20 34 01 02 80 a1 0d 87 d8 6d 01 72 05 ce 2a 98 70 c0 00 00 1e cd e4 09 20 62 16 41 28 14 d4 15 e8 4a aa 2d 21 01 24 98 c6 cc 81 00 00 00 00 00 00 0b 00 00 00 00 00 33 00 1f 00 18 00 00 00 00 00 1e cf ff e4 01 30 18 80 88 0b 02 43 20 e4 64 49 55 57 ff f8 95 59 ff fe 24 aa 5f ff e2 41 54 ff fc 41 54 bf ff c4 82 a9 ff f8 82 a3 7f fe 20 94 50 00 00 1e ce c0 44 08 82 d0 44 22 1a 1a 05 9f a1 0c 7f 61 85 d8 81 76 31 9f cc c6 7f 40 c6 00 00 00 1e cd d8 0a 41 44 15 0a 43 a3 20 4e c5 e6 4b 11 a8 a2 6e 28 d1 c8 c6 cc 86 00 00 00 00 00 00 0c 00 00 00 00 00 25 00 26 00 24 00 00 00 00 00 1e cf ff fe 40 30 80 84 00 40 04 00 80 c3 94 10 20 8d e4 d9 e9 a2 cd b2 a1 19 a4 cc c8 21 08 23 59 46 40 00 00 1e d6 40 34 02 80 a0 28 1a 07 e8 52 a2 95 ab ff c0 ae af ff 10 2b 5f e0 28 ab f0 29 4f d0 a4 f0 a7 66 43 00 00 00 1e cd c8 04 40 44 01 00 41 50 7e 88 89 04 22 3f fa 06 92 4f 48 48 69 d2 10 c6 d0 c6 31 c3 08 41 0e 1c c6 cc 70 00 00 00 00 00 00 0d 00 00 00 00 00 26 00 1c 00 17 00 00 00 00 00 1e cf ff f6 00 08 00 c0 04 00 84 20 90 e4 04 08 b3 2f fa 64 80 7b 24 30 be 92 19 3b 0c 52 c1 c8 2b 4b 05 b4 00 00 1e cf c8 02 40 24 0d 08 d0 28 28 d4 68 a4 92 b5 41 aa 43 51 4c 44 08 1c 4b 0c 00 00 1e cd f9 00 88 2c 82 10 d2 09 2d 32 56 16 21 23 14 1e 62 8a c0 c6 cc 73 00 00 00 00 00 00 0e 00 00 00 00 00 26 00 1c 00 1a 00 00 00 00 00 1e cf ff c8 06 20 11 03 20 64 15 86 42 4a 8a ba b9 47 e2 a4 ef fc 8c 97 f8 69 4f f0 ca 9f e4 a5 5f f9 46 50 00 00 1e cf ec 00 20 62 0e c0 10 89 34 09 19 61 4f 63 0e 21 8f 6c 20 a2 08 2d 98 c0 00 00 1e cd f9 02 48 19 80 90 92 11 35 12 76 1e 4b 4e 46 a4 44 a2 29 e4 51 80 c6 cc 65 00 00 00 00 00 00 0f 00 00 00 00 00 1e 00 16 00 1a 00 00 00 00 00 1e cf ff f2 01 88 1c 40 84 00 81 23 93 12 ae 84 51 42 22 8a da 48 42 48 94 a1 a9 24 00 00 1e cf d8 18 40 64 19 03 40 21 a0 70 ba 06 08 10 20 d6 11 00 00 00 1e cd f6 04 90 01 01 20 48 b4 44 ea 13 22 a2 45 28 a2 28 72 0a 19 14 00 c6 cc 5c 00 00 00 00 00 00 00 00 01 00 00 00 1b 00 13 00 17 00 00 00 00 00 1e cf ff b0 1c 40 e2 00 41 c8 72 11 1a 74 92 8a 39 90 ac 38 85 6b 2c 06 10 00 00 1e cf 20 61 07 22 08 0a 01 d5 02 b4 d0 6b 90 72 a0 00 00 1e cd e4 00 20 12 1e 44 50 48 2e d6 26 49 a5 11 c2 10 84 23 00 c6 cc 7b 00 00 00 00 00 00 01 00 01 00 00 00 22 00 21 00 21 00 00 00 00 00 1e cf ff d8 0a 20 31 06 20 64 19 20 85 9a 09 46 39 8c 6e 9b 33 7f 48 12 49 d2 12 49 3d 0c 92 18 00 00 1e ce c0 24 24 83 a0 48 b4 34 15 29 a5 32 95 57 fe 4a aa ff c1 56 af ff 12 ab 5f fe 25 55 00 00 00 1e cd e4 01 21 52 0c 40 d1 48 48 6a 12 42 e4 21 b7 f4 21 a4 3f a1 24 81 d9 24 0c 7d 20 43 00 c6 cc 90 00 00 00 00 00 00 02 00 01 00 00 00 2d 00 27 00 25 00 00 00 00 00 1e cf ff ec 04 10 10 80 08 01 00 41 c9 98 99 33 fa 18 92 64 fd 44 92 4c fd 49 48 64 fd 84 14 92 7d 4a 49 09 ea 84 90 9e c9 21 08 00 00 1e ce 40 34 06 80 a0 28 14 14 1f 42 8a d5 55 ff e5 2e 57 ff 8a ad 3f f2 ac af fc a9 4b fc 8c 97 e2 89 7e 92 00 00 00 1e cd d8 04 40 44 01 00 40 21 fa 04 48 29 11 ff 1a 48 63 f8 92 10 3e 90 83 38 43 33 ec cc 2d 98 c5 99 80 c6 cc 7c 00 00 00 00 00 00 03 00 01 00 00 00 30 00 1d 00 18 00 00 00 00 00 1e cf ff 90 00 c0 02 00 c0 08 02 01 02 04 7f d0 46 3d 24 3f ff 92 85 82 4f ea 50 94 87 ea 53 04 93 f5 25 21 0f 64 24 0c f4 90 81 b4 81 1a 00 00 1e cf d8 06 40 24 05 03 40 a1 7a 14 28 a5 c9 d5 21 35 24 79 23 bc 85 10 50 09 00 00 00 1e cd f9 00 88 10 83 90 62 25 11 32 3a 0c 35 81 84 b0 18 4a 14 c0 c6 cc 55 00 00 00 00 00 00 04 00 01 00 00 00 18 00 16 00 10 00 00 00 00 00 1e cf f2 00 90 01 12 20 a8 05 14 0c 91 52 8a 56 80 b4 16 21 c6 00 00 00 1e cf f9 08 c8 20 83 90 c2 0e 80 b1 0d 67 2c c2 38 43 8c 00 00 00 1e cd fc 80 44 1a 40 0a 41 02 80 9d 00 d0 c6 cc 5d 00 00 00 00 00 00 05 00 01 00 00 00 1e 00 17 00 11 00 00 00 00 00 1e cf f2 00 10 09 02 20 e8 04 74 08 d0 2a c7 6b 5a 62 10 a1 50 2b 46 28 ad 7a 14 b0 00 00 1e cf f9 0c 08 04 86 10 52 29 15 42 7a 0c 29 76 20 87 d9 8c 00 00 00 1e cd fd 8d 24 00 c0 48 69 01 43 52 8a ab d8 c6 cc 56 00 00 00 00 00 00 06 00 01 00 00 00 15 00 17 00 13 00 00 00 00 00 1e cf f2 07 90 03 01 25 e8 04 d4 49 c8 b0 92 50 82 4a 00 00 00 1e cf f9 00 08 28 81 b0 02 31 05 72 16 9a 51 ac 05 3d 81 28 60 00 00 1e cd fd 80 a4 14 41 c8 41 0e 90 8d 62 61 7b 4b 00 c6 cc 54 00 00 00 00 00 00 07 00 01 00 00 00 1c 00 11 00 10 00 00 00 00 00 1c a8 51 1f fe 83 44 09 82 91 24 06 34 08 90 25 ca 02 a8 52 0a b0 45 ad 63 40 00 00 1e cf f2 02 10 59 08 20 e8 e4 12 a1 09 5a 80 00 00 1e cd fc 80 64 18 42 c8 21 1e 80 5f 25 00 c6 cc 57 00 00 00 00 00 00 08 00 01 00 00 00 1c 00 10 00 14 00 00 00 00 00 1e cf f9 01 c8 1c 80 48 09 12 44 a1 40 99 06 a2 30 73 07 21 d8 5b 1a d0 29 58 00 00 1e cf ec 02 20 d2 46 41 11 68 8a d0 04 80 00 00 1e cd fb 01 48 00 8e 10 12 01 05 02 14 03 15 09 84 80 c6 cc 4d 00 00 00 00 00 00 09 00 01 00 00 00 1e 00 08 00 10 00 00 00 00 00 1e cf fc 80 04 02 42 c8 03 0e 80 85 25 14 2a 21 07 11 60 a4 05 b0 49 04 9a ab 43 00 00 00 1e cf e4 11 28 e0 00 00 1e cd fb 05 88 04 80 16 12 01 05 02 b6 1c c6 cc 5e 00 00 00 00 00 00 0a 00 01 00 00 00 1d 00 16 00 14 00 00 00 00 00 1e cf fd 81 24 0a 40 24 24 83 21 68 4a 54 91 5b 47 3b c3 8a f0 a2 b6 23 9b 45 ac 00 00 1e cf e4 0e 20 12 02 41 11 29 88 d7 22 59 22 94 63 82 1c 30 00 00 1e cd fb 01 08 14 82 10 f2 01 cd 02 f4 0a a8 4b 0b 00 c6 cc 82 00 00 00 00 00 00 0b 00 01 00 00 00 2f 00 1f 00 1d 00 00 00 00 00 1c a8 51 1f ff fa 03 10 11 01 10 62 09 09 07 22 59 4a 2b ff f1 22 b5 ff f8 82 a3 7f f8 14 5a ff f0 22 b5 ff e0 51 27 f9 09 4f f2 44 e0 00 00 1e cf e4 00 20 42 04 41 74 11 11 12 3d 46 32 e3 19 be 31 0d f0 86 6f 8c 63 8c 21 c6 10 00 00 1e cd fb 01 c8 14 81 30 92 0d 0b 42 9d 54 4d 25 21 4a f1 c7 78 72 78 53 bc 38 c0 c6 cc 67 00 00 00 00 00 00 0c 00 01 00 00 00 24 00 17 00 15 00 00 00 00 00 1e cf ff d8 02 20 51 08 90 12 04 8e 49 23 26 d4 4d 24 9f e5 24 ff ca 94 ff c9 25 7f f9 45 4f fc 8c 90 00 00 1e cf b0 08 80 49 22 12 84 4b 48 ad 42 74 30 cf 99 85 b0 83 00 00 00 1e cd f6 17 90 01 01 20 08 54 a4 aa 95 24 f3 0a 2a a2 80 c6 cc 6c 00 00 00 00 00 00 0d 00 01 00 00 00 26 00 18 00 17 00 00 00 00 00 1e cf ff ec 00 10 08 82 88 29 00 c5 25 21 4b 49 6a 57 f8 a2 af f0 49 5f f9 14 9f e2 89 7f e4 92 7f 8e 0a b0 00 00 1e cf b0 04 81 08 32 02 88 54 46 a1 44 d8 52 d8 12 81 a8 56 20 00 00 00 1e cd f6 06 90 11 09 22 a8 24 94 c9 5a 48 a4 8e 50 85 62 b0 c0 c6 cc 74 00 00 00 00 00 00 0e 00 01 00 00 00 2a 00 19 00 1a 00 00 00 00 00 1e cf ff f6 00 88 04 40 c4 04 83 20 90 64 24 c9 57 5f f9 29 57 ff 8a 2b 8f fc 14 63 ff 29 49 ff 91 89 ff 92 89 fe 14 8c 00 00 1e cf 90 18 80 88 2d 00 42 22 23 a2 59 b4 30 a1 04 d0 16 35 0e 1a 70 00 00 1e cd f2 01 90 29 05 20 1a 04 86 9d 15 36 95 71 4d 41 5a 41 01 82 45 00 c6 cc 67 00 00 00 00 00 00 0f 00 01 00 00 00 27 00 15 00 14 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 44 06 08 46 11 85 42 17 1c 04 24 49 13 a8 8d a1 da fc 41 1e 83 22 c3 20 00 00 1e cf 20 11 04 20 28 42 25 11 5a 85 cc 88 ac 5b c6 96 c0 00 00 1e cd e4 01 20 52 10 41 51 48 aa 92 b4 60 40 c3 84 00 c6 cc 68 00 00 00 00 00 00 00 00 02 00 00 00 1d 00 1a 00 1a 00 00 00 00 00 1e cf ff f2 03 08 48 40 84 0c 84 22 11 10 d0 20 87 30 86 ec 31 a1 84 43 08 82 2c 00 00 1e ce c0 74 06 80 a0 48 74 34 28 50 bd d4 c7 25 e4 45 61 c9 8e 04 84 80 00 00 1e cd d8 10 40 44 01 01 a1 90 90 20 46 e6 29 86 23 08 42 19 04 0c 51 40 c6 cc 7f 00 00 00 00 00 00 01 00 02 00 00 00 2c 00 1f 00 1d 00 00 00 00 00 1d c8 48 1f ff ff f4 04 10 00 80 04 10 c2 30 cc 02 42 04 21 27 d9 24 90 9e a8 49 09 ec 84 84 34 90 66 f8 84 0e 20 47 35 ac 80 00 00 1e cf 90 04 80 48 0a 02 81 41 46 83 a6 95 74 ff 32 93 f2 92 7e 51 12 45 1a 88 40 92 00 00 00 1e cd f2 00 10 01 04 20 48 3a 22 24 49 e8 62 11 f6 33 16 62 0e 20 c7 60 ce c0 24 c6 cc 66 00 00 00 00 00 00 02 00 02 00 00 00 20 00 18 00 17 00 00 00 00 00 1c f0 4e df ff fa 02 10 01 00 10 42 2c 80 88 91 47 d0 63 1c c4 59 d8 c2 86 2d 82 41 54 38 00 00 1e cf f6 00 90 19 03 20 d4 0a 1a 94 14 5e 51 22 9c 40 30 f4 0c 30 00 00 1e cd fc 80 04 08 42 48 11 10 86 99 4a 45 50 1f 40 92 0b 0c 00 c6 cc 64 00 00 00 00 00 00 03 00 02 00 00 00 1c 00 18 00 19 00 00 00 00 00 1e cf fb 00 08 08 81 10 76 09 11 3d 12 28 34 a2 a2 07 a0 48 f6 28 47 6b 2d 00 00 00 1e cf fc 82 64 00 40 48 01 12 80 85 03 68 0b 35 83 8b 40 87 30 c0 00 00 1e cd fe 40 21 03 90 02 02 40 13 51 2b 50 9b 0f 20 93 38 08 a0 d3 00 c6 cc 53 00 00 00 00 00 00 04 00 02 00 00 00 17 00 19 00 0c 00 00 00 00 00 1e cf f2 07 90 01 0b 22 e8 04 74 08 48 a0 4b d0 29 58 56 81 20 00 00 1e cf fc 80 c4 0c 40 58 41 0e 8c 99 0d 02 4b 30 e8 18 a2 04 42 05 00 00 00 1e cd fe 47 b1 0f 90 02 02 00 c6 cc 7d 00 00 00 00 00 00 05 00 02 00 00 00 22 00 25 00 1f 00 00 00 00 00 1e cf f2 00 90 29 05 20 08 04 34 69 52 b5 dc fd 24 9f 92 95 ff 95 29 f8 95 5f f9 29 4f c2 53 80 00 00 1e cf fb 00 08 08 82 10 56 11 09 22 1d 25 10 8f e6 66 c7 f4 21 08 7c 43 18 da 18 c6 9d 84 20 df 40 c2 00 00 00 1e cd fe 40 51 03 90 26 0a 42 91 29 52 a6 8c 92 5d f9 12 7e 48 a7 8e 4b f1 22 bc 28 a0 c6 cc 6a 00 00 00 00 00 00 06 00 02 00 00 00 1d 00 1c 00 1a 00 00 00 00 00 1c f0 4e df ff a0 51 04 10 12 1c a2 46 50 8a c9 45 ea 43 55 04 29 09 54 3b 64 58 00 00 1e cf f2 00 10 21 09 20 48 64 5a 04 4d a9 84 d0 c4 16 6c 16 8c 1d 82 58 72 80 00 00 1e cd fc 80 64 18 40 48 39 0c 8a a9 1a ae a9 4a 26 a4 34 a0 94 84 39 80 c6 cc 72 00 00 00 00 00 00 07 00 02 00 00 00 28 00 1c 00 17 00 00 00 00 00 1e cf fc 80 04 10 41 64 18 82 21 21 f4 05 14 4f 21 8d bf fa 04 90 9f 49 09 24 fd 44 84 c3 ec 24 90 cf ec 08 0a 48 00 00 1e cf e4 09 20 66 06 42 d0 14 b4 94 aa b3 52 9c fd 12 5f e5 24 fc 92 5f 92 48 00 00 1e cd fb 04 48 8c 83 10 96 01 11 4d 22 4f b1 0c e1 04 39 88 30 c6 cc 67 00 00 00 00 00 00 08 00 02 00 00 00 21 00 18 00 17 00 00 00 00 00 1e cf f9 02 88 04 81 90 02 3e 80 89 42 3d 08 c1 76 6c 3f 6d 8c 67 e8 48 0f 9b 41 9f d2 40 ce 00 00 1e cf ec 10 20 12 1c 40 d1 88 2a 52 51 69 84 9d a8 84 29 08 53 80 00 00 1e cd fb 04 48 00 87 90 42 2d 11 5a 26 93 61 4a 30 52 02 8a 00 c6 cc 59 00 00 00 00 00 00 09 00 02 00 00 00 1d 00 10 00 15 00 00 00 00 00 1e cf f9 02 48 0c 80 10 02 15 1d 15 2a ea 92 5b 45 1c f1 c8 90 a5 7e 87 12 29 14 00 00 1e cf ec 27 20 02 06 47 50 08 2f 48 5a 50 00 00 1e cd fb 02 08 1c 84 10 72 19 25 22 b4 04 9a e1 28 05 80 c6 cc 5d 00 00 00 00 00 00 0a 00 02 00 00 00 1e 00 14 00 14 00 00 00 00 00 1c f0 4e df ff a0 11 0b 10 22 34 84 c2 4e aa 24 9a 92 d0 c2 86 38 54 8e 2b 79 11 40 00 00 1e cf ec 23 20 82 0e 43 90 34 65 2b 91 b0 f3 0e 31 80 00 00 1e cd fc 81 64 08 43 c8 01 48 82 b1 5a 09 40 71 2c 8c c6 cc 70 00 00 00 00 00 00 0b 00 02 00 00 00 21 00 1e 00 1a 00 00 00 00 00 1e cf fd 80 64 06 40 c8 19 01 d0 49 48 d4 d6 4b 93 23 ad e2 3a fc b4 4f 1c 7b f1 1c da d0 a0 00 00 1e cf e4 06 20 62 03 20 44 22 22 1d 22 8d d0 c6 7c 62 0b 18 67 cc 20 b3 08 58 c3 00 00 00 1e cd fb 02 48 18 84 90 66 05 2d 15 1b 2a 96 4b 42 9a 87 24 71 de 14 00 c6 cc 77 00 00 00 00 00 00 0c 00 02 00 00 00 28 00 1e 00 1a 00 00 00 00 00 1e cf ff 60 08 80 c8 19 01 20 c8 1e 8c 8c 8a d5 3e 94 a7 fe 19 2b ff 09 29 ff 91 52 ff c2 52 bf f0 a4 af fc 82 a0 00 00 1e cf c8 04 40 84 1e 82 21 11 74 09 16 4e 43 0b b1 04 3e 63 0b b1 8c f9 8c 78 c3 00 00 00 1e cd f9 00 48 14 84 30 32 15 1a 8d 4a 57 98 69 aa 1c 91 43 04 91 70 e0 c6 cc 66 00 00 00 00 00 00 0d 00 02 00 00 00 20 00 17 00 18 00 00 00 00 00 1e cf ff e4 01 10 28 80 88 34 83 22 91 91 58 96 5b 65 14 68 a1 5f a2 33 20 a9 a4 33 42 9a 00 00 1e cf 90 74 81 08 3a 0e 80 40 42 9d 47 92 c1 24 38 a8 09 60 e0 00 00 1e cd f2 0f 10 19 06 20 c8 14 a4 48 6b 31 ec 30 a1 05 30 74 05 00 c6 cc 65 00 00 00 00 00 00 0e 00 02 00 00 00 20 00 1b 00 13 00 00 00 00 00 1c f0 4e df ff ff ff 40 a0 81 82 0c 50 a1 28 63 0b 0d 47 0a 22 31 30 72 b0 c8 64 d6 b2 c8 00 00 1e cf 90 1c 81 c8 02 0a 87 42 4a 9d 2a 49 31 c7 12 85 1a 88 ef 0a 10 e3 00 00 00 1e cd f2 01 10 91 10 24 88 94 25 a8 9d 40 b5 0c 00 c6 cc 58 00 00 00 00 00 00 0f 00 02 00 00 00 1a 00 15 00 12 00 00 00 00 00 1e cf ff fc 82 06 01 10 01 0a 10 84 12 02 83 0b 41 45 40 12 4a 07 a2 c0 00 00 1e cf c8 0a 42 24 45 13 44 21 ac 42 bb 84 aa a0 a2 45 00 00 00 1e cd f6 00 10 81 22 24 c8 b4 05 e8 9d 52 8a 00 c6 cc 50 00 00 00 00 00 00 00 00 03 00 00 00 15 00 13 00 11 00 00 00 00 00 1e cf fe 40 a1 03 90 02 62 40 10 51 21 22 82 c7 8f 2d 00 00 00 1e cf f9 00 c8 e8 8b 11 02 05 11 42 14 89 25 02 18 00 00 1e cd fd 81 44 12 40 88 99 08 96 47 76 46 c0 c6 cc 59 00 00 00 00 00 00 01 00 03 00 00 00 1c 00 16 00 10 00 00 00 00 00 1e cf fd 81 04 02 40 08 19 10 82 89 1b aa 71 4a 28 ec 28 ec 39 31 c5 5f a1 50 00 00 1e cf fb 07 88 0c 80 10 c2 05 11 42 15 8c 08 39 44 11 46 30 00 00 1e cd fe 42 f1 11 91 32 04 41 95 58 a5 48 c6 cc 56 00 00 00 00 00 00 02 00 03 00 00 00 18 00 15 00 12 00 00 00 00 00 1c f0 4e df ff d0 38 80 08 38 93 28 98 94 9b 2e f2 14 8e da 85 00 00 00 1e cf fb 01 08 50 89 11 02 15 01 32 74 1c 28 e2 09 41 00 00 00 1e cd fe 42 31 0b 91 52 3a 44 90 90 a5 5d 0e 50 c6 cc 69 00 00 00 00 00 00 03 00 03 00 00 00 1c 00 1d 00 19 00 00 00 00 00 1e cf fc 81 24 0e 40 08 49 1a 8e 89 1a e5 56 af 22 95 e1 52 bc 49 cf c9 55 00 00 00 1e cf f9 01 08 20 80 90 42 21 05 32 64 5c 52 98 62 20 8c ec 66 6e 63 33 b1 99 80 00 00 1e cd fe 40 71 0b 90 22 0e 43 90 14 b3 51 64 b9 05 15 30 a4 bc 89 00 c6 cc 5e 00 00 00 00 00 00 04 00 03 00 00 00 1b 00 16 00 16 00 00 00 00 00 1e cf fd 81 24 1e 41 48 01 02 8e 9d 02 2d 34 b1 6a 73 25 0c a8 b3 54 33 00 00 00 1e cf f2 04 10 91 0e 21 c8 c4 25 89 11 63 0b 46 0e 93 1d 40 00 00 1e cd fd 81 64 00 40 48 a9 2e 96 bd 0b eb 31 e5 31 0e 84 30 c6 cc 7e 00 00 00 00 00 00 05 00 03 00 00 00 25 00 21 00 21 00 00 00 00 00 1e cf fe 40 11 01 90 32 02 41 90 34 a4 69 aa e5 39 90 e1 0e e6 b6 37 fc 42 42 4f d8 49 24 3f 44 c4 4c 00 00 00 1e cf ec 02 20 22 08 40 e8 24 44 88 6a 30 96 09 48 a2 bf 14 93 fc 4a 4f fc 95 2b ff c1 56 80 00 00 1e cd fc 80 e4 0a 40 48 04 83 23 a3 41 65 6c 24 11 a8 82 17 99 9b 3f e8 49 08 7f f2 92 48 40 c6 cc 73 00 00 00 00 00 00 06 00 03 00 00 00 25 00 1f 00 18 00 00 00 00 00 1c f0 4e df ff ff a0 30 81 84 00 43 08 22 c1 09 a3 46 18 b1 0c cf ed 06 6d ec 84 24 3f 88 42 1b a1 a1 8c 00 00 1e cf c8 00 41 24 0d 00 a1 d0 d2 51 aa b6 94 a4 fc 92 5f e5 24 fc 92 5f e2 49 7f 92 40 00 00 1e cd f9 00 48 0c 83 11 e2 1d 11 42 16 9a 41 8b 31 85 08 73 06 00 c6 cc 7e 00 00 00 00 00 00 07 00 03 00 00 00 2c 00 20 00 1b 00 00 00 00 00 1e cf ff c8 00 20 21 00 20 04 01 00 8f e8 08 10 44 6d be 92 49 09 f6 49 09 27 d5 21 08 76 10 90 de c2 40 d3 d8 40 c6 e8 63 18 00 00 1e cf d8 06 40 64 0d 03 40 68 68 d1 a6 8e aa 48 9a 48 bf 48 53 c5 1c f1 47 3c 50 d4 3b 00 00 00 1e cd f6 02 10 11 07 60 08 44 44 74 4a 31 64 30 b6 10 71 03 90 12 c1 64 14 c6 cc 64 00 00 00 00 00 00 08 00 03 00 00 00 23 00 14 00 16 00 00 00 00 00 1e cf fd 80 04 00 40 88 11 0b a1 10 22 5f 42 10 5d b1 8f 33 10 f9 9a cd fd 08 40 5c cc 43 f9 9b 0c 00 00 1e cf f6 01 90 49 02 20 e8 84 32 ea 02 44 ca 52 6a 20 00 00 1e cd fb 00 08 18 83 90 22 91 05 12 15 9a 8e c1 5a 30 a0 f0 c6 cc 55 00 00 00 00 00 00 09 00 03 00 00 00 1b 00 12 00 11 00 00 00 00 00 1e cf f6 01 90 39 04 60 e8 54 04 14 2a bd 22 4d 50 e4 64 3b 08 80 f4 44 00 00 00 1e cf fb 02 88 04 80 10 13 59 05 62 36 9a c3 00 00 00 1e cd fd 81 c4 02 43 88 09 1c 82 b9 18 66 88 c6 cc 64 00 00 00 00 00 00 0a 00 03 00 00 00 20 00 1a 00 13 00 00 00 00 00 1e cf fb 00 c8 0c 80 10 12 12 8a 95 25 55 a2 9f 92 44 c5 14 48 e4 4d 12 5f e4 52 de 44 60 00 00 1e cf fb 00 08 28 81 b0 22 21 0e 91 32 75 14 4d 02 14 20 a2 0e 61 c8 00 00 00 1e cd fe 40 11 07 10 92 0c 44 91 90 8a e9 93 42 80 c6 cc 64 00 00 00 00 00 00 0b 00 03 00 00 00 1f 00 18 00 16 00 00 00 00 00 1e cf fd 80 64 16 c0 18 01 0a 8e 82 85 05 96 93 8e 78 e3 bf 44 77 e4 28 92 14 9a 23 80 00 00 1e cf f6 04 10 21 01 61 08 74 65 29 99 20 f2 1d 88 81 cc 39 0b 00 00 00 1e cd fd 81 24 0c 41 c8 01 02 88 bd 03 a8 0f a0 3a 82 48 56 c6 cc 6b 00 00 00 00 00 00 0c 00 03 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf fe c0 31 01 90 12 06 41 64 12 12 34 d9 92 a7 5f e2 24 fc 8e 26 92 13 48 89 a4 3b f1 15 60 00 00 1e cf ec 04 20 62 07 20 04 32 3d 12 84 ec 31 66 0e 31 c6 14 51 4c 56 00 00 00 1e cd fc 80 24 1a 40 18 39 10 96 92 85 e4 8a 4a 10 8a c8 62 02 40 c6 cc 5c 00 00 00 00 00 00 0d 00 03 00 00 00 1e 00 13 00 14 00 00 00 00 00 1e cf ff b0 04 41 22 00 40 88 32 63 0a 56 29 2c ad 45 1d ed 41 28 52 4a 14 9a 14 50 00 00 1e cf d8 1a 40 c4 1d 29 41 26 a6 52 c3 ce 24 63 00 00 00 1e cd f9 00 08 c8 81 90 c2 1d 21 4a 66 54 a8 1c c0 b0 c6 cc 57 00 00 00 00 00 00 0e 00 03 00 00 00 1d 00 14 00 0f 00 00 00 00 00 1e cf ff c8 06 20 01 01 20 04 99 00 b5 02 2a 3c 81 25 09 2a e2 8a fc 51 6f cc 28 00 00 1e cf e4 09 20 62 16 41 11 e8 04 a4 68 26 e3 44 16 60 00 00 1e cd fb 00 88 34 80 10 f2 29 14 4a 00 c6 cc 53 00 00 00 00 00 00 0f 00 03 00 00 00 18 00 13 00 11 00 00 00 00 00 1e cf ff c8 1e 20 21 01 20 04 69 c4 81 1a 09 43 b2 18 a0 85 22 18 00 00 1e cf ec 03 20 c2 1a 40 a8 14 e4 ea 08 2a 50 24 00 00 00 1e cd fc 86 a4 10 40 48 01 02 f2 81 7a 05 00 c6 cc 5d 00 00 00 00 00 00 00 00 04 00 00 00 20 00 13 00 13 00 00 00 00 00 1e cf ff 20 08 83 48 01 07 21 c8 0a d0 22 83 c8 9c a4 c2 9d fe 0a 2a ff c0 e5 7f fe 44 54 00 00 1e cf e4 0e 20 e2 14 41 91 ca 0c 19 22 40 b4 08 00 00 00 1e cd fb 01 c8 54 87 90 32 35 2d 3a f7 49 88 98 00 c6 cc 74 00 00 00 00 00 00 01 00 04 00 00 00 28 00 1a 00 1b 00 00 00 00 00 1e cf ff 90 24 40 62 04 40 08 12 19 2a 14 35 92 4a 64 8f 7f 84 53 bf f0 8a 3f c2 94 ef ff c1 46 af ff f0 24 d5 40 00 00 1e cf d8 0c 40 84 0d 02 43 27 22 46 a3 9c 82 14 41 88 42 39 8c 28 c3 00 00 00 1e cd f9 01 c8 14 81 10 12 1d 15 02 55 58 a7 3b 11 cc 8e 21 14 64 38 84 38 c6 cc 6e 00 00 00 00 00 00 02 00 04 00 00 00 29 00 19 00 15 00 00 00 00 00 1e cf ff d8 06 20 51 06 60 24 09 14 95 06 8a d4 a4 c9 2a ff f2 95 2f ff 14 5a bf ff c4 92 d5 ff 85 aa f3 ff 85 ad 58 00 00 1e cf b0 00 81 08 72 08 85 42 48 9d 27 12 c2 1c 41 88 c1 58 61 46 00 00 00 1e cd f2 01 90 29 0d 21 28 04 14 eb 5f 26 87 04 86 4a 28 c6 cc 77 00 00 00 00 00 00 03 00 04 00 00 00 28 00 1d 00 1b 00 00 00 00 00 1e cf ff ec 01 10 28 80 88 09 02 42 91 91 91 4a ab ff 25 54 ff ca b4 7f e5 6a 3f f2 b4 b7 f9 55 67 fa 94 19 91 66 00 00 1e cf 60 01 02 20 48 12 06 88 89 22 35 10 c5 98 83 98 10 e6 14 af 1c 97 e4 55 00 00 00 1e cd e4 03 20 52 06 40 90 e8 69 11 aa e5 12 0f 26 51 0f 18 db 7f 04 86 90 c6 cc 96 00 00 00 00 00 00 04 00 04 00 00 00 30 00 26 00 29 00 00 00 00 00 1d 16 4d bf ff ff ff d0 08 20 20 84 02 0c 62 84 81 00 4c c8 50 c6 74 84 86 4f 40 86 99 3e 82 49 93 3b 4a 49 31 7f 52 4b 14 ce c4 29 8a 40 00 00 1e d4 40 54 06 80 a0 1a 2d 0e 83 a5 55 2a 9c 52 ab ff 0a aa ff f1 15 ae fe 15 5a bf ff 12 5a a7 ff 89 55 80 00 00 1e cd b0 0c 81 08 12 07 40 a2 22 40 9e e6 46 ff 88 69 24 fa 49 24 93 e8 92 49 27 d0 94 98 a7 ea 4a 49 0f ab 14 84 00 c6 cc 8f 00 00 00 00 00 00 05 00 04 00 00 00 2e 00 23 00 27 00 00 00 00 00 1e cf ff fd 80 06 02 30 01 02 30 04 3e c0 20 20 41 18 cf ff e4 b1 49 0f ec 24 a4 87 ea 85 21 0f 64 92 04 f6 60 84 1b 21 83 db 32 c0 00 00 1e ce 40 14 02 80 a0 28 14 14 28 be 9d 6a a9 ff e5 6a 5f fe 2a a9 ff 95 91 fa 90 d4 88 94 82 20 a0 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 fa 08 a3 36 7f f4 92 48 1e c9 24 02 f4 92 06 3f a4 80 67 18 31 d8 c2 90 00 c6 cc 69 00 00 00 00 00 00 06 00 04 00 00 00 21 00 19 00 18 00 00 00 00 00 1e cf ff d8 00 20 01 02 20 44 11 06 c8 44 a2 7a 20 42 ec 69 ab 01 25 a4 e2 89 22 93 f2 2a 00 00 00 1e cf d8 02 40 a4 0d 04 d0 28 6a 50 57 20 1e 56 83 0b 61 04 7c c6 60 00 00 1e cd fb 01 88 18 80 b0 22 35 09 ea 06 d8 e8 46 5a d0 84 3b c7 1c c6 cc 63 00 00 00 00 00 00 07 00 04 00 00 00 1f 00 19 00 14 00 00 00 00 00 1e cf ff 20 20 80 88 11 03 b0 84 22 24 28 ee 62 e1 0c f8 21 1f 46 14 a0 b4 4b 0e 28 c0 00 00 1e cf f2 00 90 59 00 20 08 b4 4a 74 08 b2 5a 22 0c 84 07 05 1a 8c 18 00 00 1e cd fc 80 84 16 49 49 59 0c 86 9d 22 ad 22 a5 14 00 c6 cc 75 00 00 00 00 00 00 08 00 04 00 00 00 29 00 1f 00 16 00 00 00 00 00 1e cf fd 80 44 04 40 88 2d 82 21 22 4b e8 29 18 df fc 48 43 4f d8 42 42 7e c2 12 43 e8 42 48 7f f0 21 09 3d 63 0d 00 00 00 1e cf f9 02 c8 00 80 90 06 1d 22 95 4a 1b 49 23 2b 8d 8a 29 7f 88 8a ff 09 15 fe 0a 48 00 00 1e cd fd 82 24 00 43 c8 89 04 9a b9 0d 62 34 0b b0 a5 c2 30 c6 cc 67 00 00 00 00 00 00 09 00 04 00 00 00 22 00 17 00 17 00 00 00 00 00 1e cf f9 00 08 3c 82 10 92 05 11 5d 12 8f e8 c6 3f b6 31 8d fb 24 24 0f d9 09 24 3f a2 49 0c 80 00 00 1e cf fb 00 88 04 80 12 a2 45 02 8d 65 16 99 24 55 c5 36 45 14 00 00 1e cd fd 81 24 04 42 48 11 02 90 85 ea 05 dc 6d 01 67 16 61 00 c6 cc 58 00 00 00 00 00 00 0a 00 04 00 00 00 1b 00 12 00 14 00 00 00 00 00 1e cf f6 00 90 01 01 20 68 6a 1a 74 68 54 a5 30 53 b0 08 9d a0 81 3b 30 c0 00 00 1e cf f9 01 08 2c 80 14 02 0d 31 3a 02 a9 08 a0 00 00 1e cd fd 80 24 00 40 48 01 06 80 84 5b 44 ba 12 39 40 c6 cc 5a 00 00 00 00 00 00 0b 00 04 00 00 00 1d 00 12 00 14 00 00 00 00 00 1e cf fb 00 48 14 82 90 02 01 25 2a 0d 35 a2 89 42 8d 43 98 2d 8a d6 8d 01 68 00 00 00 1e cf f6 02 10 59 02 21 a8 24 f4 4b 50 6a 00 d0 00 00 1e cd fd 80 a4 00 40 48 01 06 84 84 41 40 db 92 06 00 c6 cc 5f 00 00 00 00 00 00 0c 00 04 00 00 00 21 00 17 00 10 00 00 00 00 00 1e cf fe 40 31 02 90 52 01 21 48 64 a8 3a 2b 24 8d c5 1a 45 1a 28 a2 47 1d e1 5a 5f ba 23 80 00 00 1e cf f2 04 10 09 00 20 68 a4 55 49 5e 48 a4 8a 56 80 49 23 00 00 00 1e cd fc 8a 64 00 40 c8 41 02 de 81 0a c0 c6 cc 62 00 00 00 00 00 00 0d 00 04 00 00 00 1f 00 18 00 14 00 00 00 00 00 1e cf ff 60 38 81 c8 04 81 90 e4 32 0d 19 76 49 35 34 28 af c8 8d 14 73 c7 69 7e 85 58 00 00 1e cf ec 0c 20 32 1c 40 52 68 0b 50 22 81 28 1a 8b 05 20 2c 83 00 00 00 1e cd fc 81 a4 00 44 48 01 1e 80 b5 13 21 8a 4b 45 68 c6 cc 68 00 00 00 00 00 00 0e 00 04 00 00 00 21 00 1b 00 15 00 00 00 00 00 1e cf ff b0 14 40 62 06 40 08 09 04 8c 95 34 75 29 4d e8 51 5f 89 1b 44 77 e4 29 b1 0d 41 00 00 00 1e cf e4 06 20 92 10 41 e8 04 64 f4 0c 36 86 16 c6 1e c2 0f 63 19 c2 08 00 00 00 1e cd fb 0c 48 08 85 90 42 25 19 2a 94 2b 35 87 10 e7 00 c6 cc 5b 00 00 00 00 00 00 0f 00 04 00 00 00 19 00 14 00 17 00 00 00 00 00 1e cf ff d8 02 20 91 00 22 64 03 14 a9 4a d5 88 a4 6a 43 99 10 65 80 00 00 1e cf d8 58 40 e4 19 09 43 24 a2 5a 83 8b 20 5b 08 b0 00 00 1e cd fb 00 48 00 88 90 a2 05 7d 12 56 92 49 8e 28 d4 90 94 88 c6 cc 71 00 00 00 00 00 00 00 00 05 00 00 00 31 00 19 00 10 00 00 00 00 00 1e cf f6 03 90 19 01 20 28 0f d1 49 58 51 47 f2 4a 2d 5f ff e0 08 db 7f f0 02 b6 df fc 00 b6 dd ff f0 04 97 2f bf c0 82 de cd ff 44 37 76 64 00 00 1e ce 40 e4 02 86 20 68 84 74 c9 91 a8 c7 b0 84 70 c6 71 8c df 30 86 00 00 1e cd 20 a9 0c a4 28 62 05 65 02 95 89 b0 c6 cc 82 00 00 00 00 00 00 01 00 05 00 00 00 3a 00 1b 00 16 00 00 00 00 00 1e cf fd 80 64 02 40 48 0b 02 82 85 07 fd 12 4b 55 d7 7f fc 6d 9b 5b ff fc 35 36 d9 bf ff c3 35 6d bb ff ff 0a aa 66 d9 ff 0a ed b7 5f ff f8 ea ad b2 ff ff 8e aa d9 20 00 00 1e dc 40 44 07 40 90 44 3d 01 22 25 6a 20 ba 18 76 10 7b 18 e2 05 10 a5 00 00 00 1e cd 20 19 09 a2 a8 02 05 09 19 72 35 98 f3 08 6f 99 9b 40 c6 cc 89 00 00 00 00 00 00 02 00 05 00 00 00 2d 00 21 00 24 00 00 00 00 00 1e cf ff d8 02 20 13 01 20 24 0b 04 85 0a 1f e9 29 6b 95 ff fe 2c aa df ff e2 c9 44 ff c5 52 6f ca 8c 42 11 c2 1b 3f a1 a1 a6 00 00 00 1e cc c0 64 12 80 21 a8 04 d4 4a d3 46 a5 29 df e0 95 5f f8 56 ab ff f1 25 56 ff fc 4b 55 80 00 00 1e cc 40 c4 06 86 20 74 02 42 24 3a 4c 64 7f 63 1a 49 e9 09 24 cf d5 24 92 4f d4 96 29 27 ea 4b 14 90 c6 cc 99 00 00 00 00 00 00 03 00 05 00 00 00 31 00 27 00 2a 00 00 00 00 00 1c a8 51 1f ff ff ff fa 01 04 04 10 30 40 02 10 40 11 84 42 82 04 05 02 4d b4 31 a4 9d 09 24 93 d2 49 24 9f 64 92 43 3e 88 42 49 3d 0a 42 40 00 00 1e cd 20 19 02 a0 28 0a 05 03 a5 42 9a 55 3d 2a ab ff ca b5 5f fe 21 5a bf fc 55 69 ff 95 54 ff cd 14 bf ca 90 00 00 1e cc c0 44 00 81 20 08 04 1f 40 89 04 22 37 ff 49 0c 92 7e a5 24 98 bf 52 52 49 3f 61 25 20 7b 8a 40 86 c8 18 7b 31 80 c6 cc 84 00 00 00 00 00 00 04 00 05 00 00 00 2c 00 22 00 1f 00 00 00 00 00 1e cf ff fe c0 21 80 04 00 40 0c 00 80 40 43 c8 10 42 3d 24 fe ac 52 49 3e 88 52 40 e9 24 84 3b 09 20 5d b1 86 a3 19 4c 65 80 00 00 1e ce c0 14 02 80 a0 28 14 14 28 be 8d 2a a9 3f f2 d4 9f e5 48 fd 48 9f a4 44 a1 46 1c 21 c3 00 00 00 1e cd c8 00 40 04 02 80 20 10 91 fa 04 10 8c 2e d9 8c e6 20 e2 08 2d 84 1c 40 ec 05 00 c6 cc 68 00 00 00 00 00 00 05 00 05 00 00 00 22 00 19 00 16 00 00 00 00 00 1e cf ff e4 00 10 00 81 08 29 0c 49 22 22 55 6d 12 54 9a 4a ff 11 2b f0 a5 5f f9 14 af fc a2 a0 00 00 1e cf e4 01 21 32 04 42 51 88 6b 11 d6 63 cc 63 8c 62 c4 10 df 19 98 00 00 1e cd fb 01 08 2c 80 10 d2 01 89 2a a6 5c 69 29 1c 77 88 e0 c6 cc 86 00 00 00 00 00 00 06 00 05 00 00 00 27 00 27 00 21 00 00 00 00 00 1e cf ff c8 06 20 31 03 20 64 05 86 42 46 9a ba ba 4b ff 2a 93 fc 52 a7 fe 16 95 ff e2 a9 4f fc 8b 4b ff 0a c8 00 00 1e cf ec 00 20 62 04 40 f4 11 11 12 04 7a 99 8d fd 06 6c 7f 42 10 93 d8 42 43 7b 21 21 0f e2 12 43 7b 09 21 00 00 00 1e cd fc 80 a4 12 40 18 29 0e 82 83 4a aa d3 71 d3 f4 29 5f e4 55 3f 0a 95 fe 12 ab ff 03 52 c6 cc 7d 00 00 00 00 00 00 07 00 05 00 00 00 25 00 1f 00 22 00 00 00 00 00 1e cf ff f2 01 88 0c 40 04 04 84 60 91 91 aa 8d 4a 52 fc a4 5f e6 48 fd 25 2f f1 4a 3f cc a5 bf d4 54 80 00 00 1e cf c8 00 40 44 2d 02 42 23 d1 20 51 ba 20 83 cc cc 5d 99 85 99 8c fb 31 8b 31 06 00 00 00 1e cd f9 00 c8 04 83 90 29 02 41 46 9d 0d 2e e2 bf cc 91 fa 49 3f cc 91 fa 91 3f 29 17 f9 91 00 c6 cc 64 00 00 00 00 00 00 08 00 05 00 00 00 1f 00 17 00 17 00 00 00 00 00 1e cf ff f9 00 84 0c 20 02 06 e0 c8 04 44 84 79 22 96 83 4a 34 e4 a4 75 f9 22 78 a8 60 00 00 1e cf 90 1c 80 c8 1a 01 d0 e8 a8 b5 29 aa 2d 11 e8 62 d3 00 58 00 00 1e cd ec 06 20 62 03 20 c4 4d 29 2a 36 16 7b 14 1e 09 a0 f2 80 c6 cc 99 00 00 00 00 00 00 09 00 05 00 00 00 34 00 27 00 27 00 00 00 00 00 1e cf ff ec 00 30 10 80 08 01 00 40 20 21 ff a0 41 88 e9 3f e8 52 49 8b ff 48 24 b1 67 c8 4a 49 91 ec 01 09 93 3c 80 8c 93 3b 08 12 66 72 0c 86 4e 00 00 00 1e cf d8 06 40 a4 15 00 e8 32 1a 54 5e 9a 5d cf fc 32 97 ff 81 55 7f f8 0a 55 ff e0 45 2e fc 10 aa ff c0 46 a0 00 00 1e cd f6 03 10 31 01 b0 02 09 19 1f 44 92 99 7c 46 6c ff 83 1a 43 ff 90 84 86 7d 04 24 93 d0 20 da 7a 40 d2 40 c6 cc 88 00 00 00 00 00 00 0a 00 05 00 00 00 32 00 20 00 1f 00 00 00 00 00 1e cf fe c0 01 01 10 bb 00 20 08 44 49 7e 81 08 8c 2f ed 92 48 1f ff fc 91 09 24 7f f5 94 42 80 bf fe b2 44 42 4b f9 4a 88 88 4b fb 4a 8a 88 50 00 00 1e cf f2 08 10 19 0c 60 28 34 94 1a 34 c8 69 72 8a ff ca a4 ff c9 51 7f fa 8a a7 ff 95 64 00 00 1e cd fb 04 48 08 86 90 62 26 84 91 3e 82 88 27 63 10 fe c6 31 8f f9 48 40 9e c9 08 00 c6 cc 4b 00 00 00 00 00 00 0b 00 05 00 00 00 1a 00 13 00 07 00 00 00 00 00 1c a8 51 1f ff e8 5c 40 04 04 46 10 4d 49 0c b8 f7 78 73 19 14 f5 88 b0 00 00 1e cf f2 11 90 11 0d 20 48 f4 45 2a 95 2c 91 4a 00 00 00 1e cd fb 28 00 c6 cc 61 00 00 00 00 00 00 0c 00 05 00 00 00 1b 00 17 00 18 00 00 00 00 00 1e cf fd 80 24 00 40 c8 39 01 41 6e 89 14 28 6a 28 12 41 27 69 14 57 e2 88 00 00 1e cf f2 07 10 09 0e 20 28 c4 35 49 5a 69 85 88 2c 51 34 18 60 00 00 1e cd fb 02 c8 00 80 90 02 1d 21 1a c4 ca 34 e2 8a 38 83 88 12 88 c6 cc 61 00 00 00 00 00 00 0d 00 05 00 00 00 18 00 1b 00 17 00 00 00 00 00 1e cf fe c0 b1 02 30 32 12 41 30 54 a4 4c aa 0f 0d 11 3d 0a 1d 00 00 00 1e cf f2 00 10 09 00 21 08 14 14 0a 91 2c 91 0e 28 a2 0e 61 1c 40 8b 30 80 00 00 1e cd f9 00 08 04 81 10 12 9d 01 6a 47 54 79 02 4a 12 50 92 80 c6 cc 7a 00 00 00 00 00 00 0e 00 05 00 00 00 23 00 1f 00 21 00 00 00 00 00 1e cf ff 60 80 80 c8 11 01 20 08 48 53 a0 a7 76 33 7d 83 33 e1 99 bf 83 33 df f0 10 6c 7f c4 21 24 00 00 1e cf ec 00 20 42 08 40 e8 44 64 74 8b 2e 41 0c f8 cc 47 cc 62 3e c2 08 e1 06 71 8c 00 00 00 1e cd f9 01 c8 14 81 30 32 1d 0d 06 85 75 aa 63 92 fc 89 3f 22 a5 fe 22 97 f9 15 2f f2 45 40 c6 cc 77 00 00 00 00 00 00 0f 00 05 00 00 00 28 00 19 00 1f 00 00 00 00 00 1c a8 51 1f ff fe 80 02 02 20 02 28 46 14 90 12 28 a8 76 63 17 6c d8 2f 6d 0c 17 de 24 83 7f f0 52 40 9f 4c 20 44 00 00 1e cf c8 08 41 04 06 81 21 91 68 12 32 e3 48 16 50 92 84 94 24 85 62 00 00 1e cd f2 00 90 19 05 20 94 1a 1a 34 94 d6 4b 69 23 6a 85 3f 29 09 a4 84 d2 22 65 0a 00 c6 cc 7f 00 00 00 00 00 00 00 00 06 00 00 00 33 00 18 00 1d 00 00 00 00 00 1e ce c0 5a 01 a0 34 07 40 c8 36 0f e4 64 59 6b 7b 7b ff fc 01 13 99 99 fd 10 9b 97 73 fa 02 5b d9 7f fc 02 5b b7 7e 01 2d b5 fe 05 5a bf f0 15 58 00 00 1e d4 40 64 04 80 d0 64 22 1d 32 25 6a 31 c2 94 0b a8 f5 3c 72 40 00 00 1e da 40 04 02 83 20 68 a4 15 49 54 20 93 99 c2 08 dd 63 36 f8 21 a4 9d 0c 69 20 c6 cc 97 00 00 00 00 00 00 01 00 06 00 00 00 2d 00 27 00 2c 00 00 00 00 00 1e cf fe c0 15 00 c8 0b 01 90 2c 12 12 2f ff 45 4a ad 6a 3f ff fc 72 c9 24 fe 37 50 23 fc d4 b1 b9 51 6d 0a 66 68 66 7b e0 8d b4 00 00 1e cd 20 11 02 a0 68 12 09 05 2a 14 51 9a aa ff 09 57 7f e0 5a af ff 10 ab 5f fe 21 56 bf fc 48 ac ff ca 34 80 00 00 1e ce 40 24 08 80 20 08 04 1e 91 12 08 45 f6 6d 24 9f 49 24 99 3f 42 98 a4 ce d2 52 62 9f d4 a1 49 27 ea 4a 49 27 ea 4a 48 40 c6 cc 99 00 00 00 00 00 00 02 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff ff f4 08 08 10 20 00 80 04 00 85 20 09 04 08 20 53 e8 52 49 27 d1 01 60 c1 f5 29 24 87 aa 12 42 7b 24 84 0d 90 86 1d 0d 06 80 00 00 1e cc c0 14 02 80 d0 14 0a 0a 14 28 7e 95 55 d4 ff fc b5 65 ff f9 95 53 ff 2b 49 ff 95 49 fe 64 2b fc c4 69 0a 00 00 00 1e cd 60 01 00 20 08 05 00 80 81 05 1f f4 12 8d e9 0f d9 8a 60 87 d5 31 40 2d 92 41 9f d2 40 82 ed 06 3c c1 2c 14 c6 cc 65 00 00 00 00 00 00 03 00 06 00 00 00 23 00 18 00 13 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 00 80 21 11 d8 99 20 85 ed 8c 11 f6 63 5b a0 20 a3 07 60 94 61 d8 c9 80 00 00 1e cf c8 02 40 24 0d 03 42 68 28 d1 ad 49 65 54 86 28 40 34 2c a0 00 00 1e cd f9 00 08 08 82 10 52 19 25 12 d4 03 93 ac 00 c6 cc 56 00 00 00 00 00 00 04 00 06 00 00 00 1a 00 13 00 12 00 00 00 00 00 1e cf ff b0 00 40 c2 06 44 c8 02 89 02 b6 12 63 84 a4 51 5e 09 68 4a b0 00 00 1e cf f2 01 90 61 03 21 88 14 82 03 64 52 16 34 c0 00 00 1e cd fd 88 a4 00 42 c8 21 0e aa 91 1b 68 2c b0 c6 cc 80 00 00 00 00 00 00 05 00 06 00 00 00 28 00 24 00 1d 00 00 00 00 00 1e cf ff 90 14 40 62 06 c0 ac 19 0c 84 8d 14 72 5d 57 fe 15 4b fc 12 ab ff 08 aa ff c2 32 ef e2 2a e3 ff c0 2a dc 00 00 1e cf f6 02 10 21 00 20 7a 08 84 89 12 3b 08 42 ec 66 6f 8c cd be 02 1b 6e c0 c6 87 c4 21 8d b0 31 8c 00 00 1e cd fd 80 a4 0e 40 98 19 0e 89 42 a5 42 2d 49 c7 5e 1c af c4 95 f8 94 bf 24 90 c6 cc 99 00 00 00 00 00 00 06 00 06 00 00 00 32 00 28 00 28 00 00 00 00 00 1c f0 4e df ff ff f4 02 10 10 80 84 08 41 11 88 44 26 45 38 b5 ff f8 b0 ab 7f fe 24 aa 5f fe 0c 56 7f f8 aa a7 fe 16 95 ff f9 85 49 ff e2 d1 10 00 00 1e cf e4 00 20 22 00 40 10 48 08 7d 12 0a 46 7f d2 43 43 7b 09 21 0f e2 48 40 f8 90 c6 3f a1 20 43 e8 41 ad 46 68 00 00 1e cd fb 00 c8 0c 80 90 12 05 0b d0 91 a2 95 77 ff 95 95 7f f8 a8 d3 ff 28 d2 ff ca 32 bf f2 8a 9f e5 44 fd 22 00 c6 cc 6d 00 00 00 00 00 00 07 00 06 00 00 00 23 00 17 00 1c 00 00 00 00 00 1e cf ff fd 80 62 01 10 11 03 10 64 0b 09 19 32 d1 35 42 9f 94 44 d2 14 fd 42 b3 11 97 a0 cb 58 c0 00 00 1e cf 20 11 02 20 f4 01 08 92 91 5a 05 d0 19 51 ee f1 1c c2 ba 00 00 1e cd e4 01 20 12 06 41 50 5a 0a 34 6b 56 a2 53 49 69 e4 4c 06 12 73 29 8c c0 c6 cc 70 00 00 00 00 00 00 08 00 06 00 00 00 20 00 19 00 20 00 00 00 00 00 1e cf ff ff 90 14 20 70 81 18 28 83 11 44 12 33 82 24 05 0a 63 88 62 39 99 9b e3 48 63 00 00 00 1e ce 40 64 02 93 a0 48 74 54 54 2b ad ae 29 5f 8a 53 f2 52 7e 52 40 00 00 1e cd 90 24 81 88 1a 00 81 46 42 81 14 2b 0a c1 90 84 73 10 ce 23 33 7c cd 8c 7d 08 41 80 c6 cc 8e 00 00 00 00 00 00 09 00 06 00 00 00 2f 00 25 00 23 00 00 00 00 00 1e cf ff ff c8 02 10 00 40 84 08 c0 08 0a 1e 4c 20 20 84 7d 61 0f 4c f4 04 24 99 ec 09 24 cf 51 09 26 7a 24 84 93 b0 84 86 7b 21 09 10 00 00 1e ce 40 34 06 81 a0 28 14 0f 46 8d 14 aa bf f0 a9 d7 fe 14 aa ff c4 55 3f 14 95 fe 49 27 e9 22 fc 91 00 00 00 1e cd 60 01 03 20 08 02 01 07 d0 24 41 48 bc 43 6d ba 41 b4 3e 21 21 8f a1 0c 37 06 10 51 06 21 00 c6 cc 91 00 00 00 00 00 00 0a 00 06 00 00 00 39 00 20 00 21 00 00 00 00 00 1e cf ff fe 40 01 80 14 00 c0 14 01 80 c0 40 47 fb 0c 91 ce 42 9f ff a8 8d 11 09 7e d2 22 22 20 7d a2 a5 0a 17 fe 94 28 84 97 fd 44 a1 2c 3f a9 29 24 9f d8 0a 04 80 00 00 1e cf b0 05 80 c8 0a 02 83 42 f4 28 51 5a 93 95 51 7f 8a 49 f9 48 49 21 28 a1 0a 10 51 40 00 00 1e cd e4 00 20 02 00 40 90 88 3e 81 02 0a 21 7b 33 1f 6c c2 3e cc 69 31 92 c6 38 c1 da c3 80 c6 cc 5d 00 00 00 00 00 00 0b 00 06 00 00 00 1e 00 15 00 13 00 00 00 00 00 1e cf fe 40 01 04 90 12 04 40 12 51 a0 a4 94 52 6c 38 c1 d7 8c 52 20 76 05 e9 35 80 00 00 1e cf f6 0a 90 21 07 21 48 54 c4 6b 13 28 b1 0e 61 c8 00 00 00 1e cd fb 09 48 20 80 90 02 05 d1 0a b4 0b a8 d3 00 c6 cc 70 00 00 00 00 00 00 0c 00 06 00 00 00 2b 00 1c 00 12 00 00 00 00 00 1e cf fe c0 11 01 90 32 02 41 90 3d 19 09 15 ba 7d 4a 8f fc 35 2b ff f1 22 b3 ff c1 4a 57 ff e2 42 8d ff e2 11 2b ff 10 54 00 00 1e cf f6 00 10 31 07 60 88 44 5a 44 c9 dc 43 c4 31 c6 31 62 08 2c c6 16 c2 08 00 00 1e cd fb 02 48 00 80 90 22 2d 19 08 8a 5a 81 10 c6 cc 7a 00 00 00 00 00 00 0d 00 06 00 00 00 24 00 22 00 1d 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 48 02 29 4a 04 12 e8 8b f2 44 ff 32 27 f8 a4 9f f9 24 af ff 22 93 fc 2a 8e 00 00 1e cf ec 02 20 82 06 c0 90 88 f4 49 14 4e 84 31 f6 31 0f b3 19 bf a0 43 43 fa 10 34 3e 08 63 40 00 00 1e cd f9 02 48 18 84 90 62 1d 1d 05 2a ea b9 ca fd 0a 4f 14 54 fd 0a 57 e2 2a 00 c6 cc 71 00 00 00 00 00 00 0e 00 06 00 00 00 22 00 19 00 1f 00 00 00 00 00 1e cf ff c8 02 20 01 04 20 04 11 07 24 22 24 85 ea 62 33 e2 cd 9c 8c db 8b 08 b4 31 a0 c4 43 00 00 00 1e cf d8 08 40 c4 0e 80 22 11 54 27 48 aa 08 12 c1 68 1a 83 0f 66 00 00 00 1e cd f6 00 90 29 03 20 68 0e 82 4a 8d 34 6e 53 bf 44 53 c8 e2 52 08 52 10 a2 92 88 00 c6 cc 66 00 00 00 00 00 00 0f 00 06 00 00 00 24 00 12 00 19 00 00 00 00 00 1e cf ff 60 01 80 88 01 02 21 76 01 01 12 0f fa 10 d8 5f 66 c1 1f f4 83 1e 20 47 d8 c2 a0 21 6f 58 00 00 00 1e cf b0 18 82 48 32 12 84 4b 48 20 23 51 2c 00 00 00 1e cd d8 06 40 64 1d 00 d0 68 6a 29 55 65 c4 b4 87 4a 0e c5 68 05 5c c6 cc 78 00 00 00 00 00 00 00 00 07 00 00 00 22 00 1e 00 21 00 00 00 00 00 1e cf ff c8 0a 20 11 01 20 64 14 82 4e 48 e1 45 33 b3 36 6a c6 3c 65 04 6d a5 1b 1a 46 c6 86 80 00 00 1e cc c0 54 0a 81 a0 14 3a 1a 34 1a 6d 57 7e 22 a7 85 14 f1 c8 91 45 12 28 e7 8a 18 00 00 1e cc c0 44 04 80 20 08 04 1e 91 12 08 45 e2 1b 6d ec 09 0d 3a 08 cc f8 62 0b 18 45 cc 1c 38 c6 cc 78 00 00 00 00 00 00 01 00 07 00 00 00 26 00 1c 00 1f 00 00 00 00 00 1e cf ff f2 02 08 08 40 8c 0e 40 10 88 88 08 21 72 36 67 48 68 63 a4 86 83 b0 86 86 b0 d0 c6 b0 c6 82 6c 20 00 00 1e ce 40 14 02 81 a0 28 14 34 1e 85 34 bb bf c4 91 fa 23 bf 44 25 05 1a 80 50 00 00 1e cd c8 00 40 04 01 00 40 20 22 43 f4 10 c8 c7 f3 36 0b 99 85 d8 cb 38 16 35 c3 cf 00 c6 cc 5f 00 00 00 00 00 00 02 00 07 00 00 00 1f 00 13 00 16 00 00 00 00 00 1e cf ff c8 00 20 21 02 20 84 0b 00 81 42 ce 54 33 0d 10 64 11 1b 60 ef cc 56 9f 96 20 00 00 1e cf c8 06 41 64 02 82 a2 a8 2b 98 10 20 78 41 20 00 00 1e cd fb 00 88 35 80 10 f6 01 3e c5 0a 49 34 b1 27 9c 78 f0 c6 cc 5b 00 00 00 00 00 00 03 00 07 00 00 00 1f 00 11 00 14 00 00 00 00 00 1e cf ff 20 18 80 08 09 08 20 09 d4 28 1b 46 2d 1d 41 29 c5 1b 39 cf fc 32 4f ff 29 52 00 00 1e cf e4 0a 21 42 20 44 11 8a 0b 90 a8 60 00 00 00 1e cd fc 80 e4 22 43 c8 39 0e 9a 8d 6b 2f 12 f1 e2 80 c6 cc 66 00 00 00 00 00 00 04 00 07 00 00 00 22 00 12 00 1b 00 00 00 00 00 1e cf ff 60 48 81 a4 04 85 90 52 59 19 07 64 b3 74 21 53 ff 21 4a ff c1 29 7f e1 25 3f c3 66 80 00 00 1e cf d8 10 42 04 41 0e 4d 29 23 54 cb 53 71 48 00 00 1e cd fb 01 c8 14 81 10 32 15 35 3a 24 5a 24 d1 b6 08 5c 83 1b f8 c6 86 00 c6 cc 88 00 00 00 00 00 00 05 00 07 00 00 00 36 00 1c 00 1f 00 00 00 00 00 1e cf ff 90 04 40 62 02 40 48 12 09 0a 0f e8 96 55 5c ff ff c4 92 b5 ff c2 2a d5 ff ff fc 22 25 97 7f fc 10 6c 9a ff f0 92 6d 5f fe 16 4b 5b ff 84 8a d2 80 00 00 1e cf c8 00 40 84 09 02 40 e8 09 12 27 51 44 98 49 07 8c 51 4e f2 22 bf 51 20 00 00 1e cd f6 01 90 19 03 20 68 0d 05 1a 54 d1 72 88 85 22 68 1c 53 18 e6 66 6f e9 09 0c 00 c6 cc 76 00 00 00 00 00 00 06 00 07 00 00 00 28 00 1a 00 1d 00 00 00 00 00 1e cf ff f6 00 88 04 c0 c4 0c 81 21 6c 24 24 49 72 7c f1 4b 7f f8 b4 42 7c dc 26 ff 0b 0d ea 8b 5f f9 51 9f a8 20 00 00 1e cf 20 21 05 a0 48 6a 09 15 9a 34 29 2d c9 44 97 89 27 92 29 e8 8a 00 00 00 1e cd d8 02 40 64 15 04 a0 d3 10 ac 45 c5 2d 88 21 d8 cc df 43 18 6e 30 41 4c 60 c6 cc 6d 00 00 00 00 00 00 07 00 07 00 00 00 1e 00 1b 00 1d 00 00 00 00 00 1e cf ff fe c0 30 80 84 10 40 c4 00 82 40 48 20 49 25 11 cc 20 cb 08 0c 41 44 91 24 00 00 1e ce c0 94 06 80 a0 1a 05 1d 1a 14 34 92 e5 78 8a 5e 44 09 08 94 5c c2 00 00 00 1e cd 90 10 81 08 12 03 43 21 22 43 51 88 f3 11 9b ec 61 8a 20 44 21 d8 30 a8 80 c6 cc 6d 00 00 00 00 00 00 08 00 07 00 00 00 22 00 1c 00 18 00 00 00 00 00 1e cf ff fe 40 00 80 84 00 40 84 10 83 22 22 20 61 76 31 8c 7d 08 60 b6 30 e4 02 d9 51 c6 d2 38 00 00 1e cf 90 0c 80 48 1a 06 82 d0 d0 a3 55 1a 94 a2 45 23 51 08 16 c0 49 a4 08 00 00 00 1e cd d8 00 40 44 09 04 40 e8 08 92 2b 43 18 a3 05 20 0d 24 16 00 c6 cc 65 00 00 00 00 00 00 09 00 07 00 00 00 22 00 17 00 15 00 00 00 00 00 1e cf ff f6 01 08 08 40 84 00 80 20 d8 88 89 2a bc 82 19 f3 18 dd 30 53 b0 e1 50 51 43 22 96 00 00 00 1e cf e4 01 20 52 0e 40 28 54 74 54 ad 2d 0a 60 62 b0 20 20 50 00 00 1e cd f6 04 10 39 02 21 48 14 64 28 91 0f 52 79 8e 51 c0 c6 cc 69 00 00 00 00 00 00 0a 00 07 00 00 00 2f 00 13 00 10 00 00 00 00 00 1c f0 4e df ff ff d0 00 40 82 00 10 02 00 80 47 30 10 62 06 9f 61 09 07 fd 20 42 1f c1 06 67 fd 02 04 6f f8 20 63 f8 83 1b f8 b1 9c 00 00 00 1e cf f6 02 90 51 10 20 68 c5 06 0b d0 93 64 d3 40 00 00 1e cd f9 01 08 24 81 10 92 dd 09 1b 92 e0 c6 cc 64 00 00 00 00 00 00 0b 00 07 00 00 00 25 00 14 00 14 00 00 00 00 00 1e cf fd 81 04 0a 40 58 01 04 8c 85 0d 45 12 bb 10 c5 e6 62 2f 8c c4 7f f4 81 8c 7f f2 10 21 3e 90 31 a0 00 00 1e cf f9 00 88 28 80 90 c2 0d 09 d3 a4 50 14 31 48 a0 00 00 1e cd f9 02 48 18 83 90 82 1d 21 0a d4 08 b8 d0 74 f0 c6 cc 61 00 00 00 00 00 00 0c 00 07 00 00 00 1f 00 16 00 15 00 00 00 00 00 1e cf fd 80 a4 06 40 c8 14 87 22 a1 41 49 24 bb c7 69 30 50 5d 03 f4 30 cf fa 1a 04 00 00 00 1e cf f2 04 10 21 01 60 c8 64 1a 05 49 92 6b 03 89 60 70 b0 00 00 1e cd f6 07 90 01 05 21 48 35 d4 0a d4 22 e7 02 68 35 10 c6 cc 7a 00 00 00 00 00 00 0d 00 07 00 00 00 1f 00 22 00 22 00 00 00 00 00 1e cf ff 20 08 80 48 19 03 21 2c 12 54 6a 74 a9 4e fc 45 12 28 e7 8a 39 85 06 a1 d9 00 00 00 1e cf e4 04 20 22 04 40 f4 21 09 12 3d 26 23 3f 98 d9 be 02 19 be 19 88 fb 0c 43 88 20 b3 10 40 00 00 1e cd f2 02 90 29 01 20 5a 0c 8a 8d 0a 1d 24 b9 5f 85 29 f8 92 7e 45 2b fc 92 5f 89 27 e4 8a 00 c6 cc 6a 00 00 00 00 00 00 0e 00 07 00 00 00 1c 00 1b 00 1c 00 00 00 00 00 1e cf ff c8 02 20 a1 02 20 24 51 38 85 02 aa 29 42 9c ec 65 08 14 66 72 c2 00 00 00 1e cf b0 00 81 08 4d 00 41 25 a4 56 91 55 10 a6 e6 31 e6 61 68 20 53 06 00 00 00 1e cd d8 02 40 a4 21 03 44 a1 50 a5 62 92 49 6d 45 a7 90 a2 48 a3 49 09 48 60 c6 cc 54 00 00 00 00 00 00 0f 00 07 00 00 00 1c 00 0e 00 13 00 00 00 00 00 1e cf ff c8 08 20 c1 12 21 a4 01 10 a5 12 89 45 58 41 e6 d6 17 66 61 76 66 00 00 00 1e cf 62 e1 00 a1 48 4a 01 0d 01 10 00 00 1e cd b0 1c 87 48 02 02 b9 42 52 81 16 16 72 82 80 c6 cc 53 00 00 00 00 00 00 00 00 08 00 00 00 1c 00 0e 00 12 00 00 00 00 00 1e cf e4 01 20 02 04 40 90 08 08 53 24 a5 31 0d 08 21 18 64 18 a2 26 40 5b 94 00 00 1e ce 40 54 14 85 a0 89 04 94 c2 c0 00 00 1e cd 60 89 08 a2 28 ba 01 05 12 11 2a 4b 10 00 c6 cc 52 00 00 00 00 00 00 01 00 08 00 00 00 1c 00 0d 00 12 00 00 00 00 00 1e cf 90 08 80 88 12 0a 80 44 44 95 25 2a 1b 98 c5 0c 28 c7 b0 45 43 0e 08 60 00 00 1e ce c1 64 0a 80 20 28 06 23 c0 00 00 1e cd 60 59 07 a2 68 aa 01 14 9e 81 54 0f 42 b0 c6 cc 54 00 00 00 00 00 00 02 00 08 00 00 00 24 00 0f 00 0a 00 00 00 00 00 1e ce c0 24 02 80 20 28 6d 05 5a 14 35 29 4d 0a 57 7f 81 ca fc 39 d7 f8 22 ae ff 01 d5 df f8 24 5b 80 00 00 1e ce c0 c4 02 80 24 08 14 04 28 81 00 00 00 1e cd 20 89 07 a2 ab 40 c6 cc 75 00 00 00 00 00 00 03 00 08 00 00 00 36 00 12 00 16 00 00 00 00 00 1e ce c0 14 02 80 a0 68 14 34 1f 46 8a 55 55 ff fe 2d 57 9f ff ff 09 96 da ff f8 db 76 d7 ff f0 ce 5c cb 7f f0 6a ee 65 bf fd 2a cd cc cb ff e0 d5 57 2b 32 00 00 1e ce 42 44 1a 80 22 c8 94 45 a8 94 58 86 88 2c 00 00 1e cd 20 09 07 a1 c8 0a 45 31 1a e4 4b 24 52 a8 c2 28 63 00 c6 cc 97 00 00 00 00 00 00 04 00 08 00 00 00 25 00 2b 00 30 00 00 00 00 00 1e cf d8 02 40 a4 05 03 40 a0 74 68 d1 5a a6 92 2f 72 0a a0 8b a9 99 bf 98 db 4f 68 12 d3 3e b4 93 32 00 00 00 1e ce 40 34 0a 81 a0 5a 15 0d 0a 14 bb 55 d5 ff e1 6a af ff c0 95 ab ff ff 84 92 6a ff c2 56 ad ff ff 84 32 d5 ff 80 b5 aa 00 00 1e cc c0 04 08 81 20 08 3e 84 89 02 08 7f a1 b6 d9 3f a9 49 26 2f f5 24 b1 62 ff a9 28 58 b3 e5 28 51 0a 7f e9 28 51 09 7f e9 28 50 a1 00 c6 cc 81 00 00 00 00 00 00 05 00 08 00 00 00 2a 00 1f 00 21 00 00 00 00 00 1e cf f9 00 48 04 80 90 12 05 05 0d 0a 1f e9 2a aa bb ff f0 29 45 fe 45 17 85 0a 40 cb db 31 af fb 11 21 0f d9 8a 12 40 00 00 1e cf 90 0c 81 48 1a 05 a0 50 51 a5 4b 4a b8 a7 e9 22 fc a2 26 91 13 48 89 a4 12 8e 68 00 00 1e cd b0 00 80 08 12 00 84 41 e8 10 20 a2 17 23 31 be c6 18 b3 31 0e 63 0b 30 ce c0 94 1c c0 c6 cc 6b 00 00 00 00 00 00 06 00 08 00 00 00 22 00 1a 00 18 00 00 00 00 00 1e cf ff b0 04 40 e2 00 40 88 02 19 42 24 50 ac 22 10 18 47 99 98 b3 36 37 f4 86 86 3f a1 24 24 00 00 1e cf d8 02 40 a4 15 02 a0 51 53 a0 a6 d2 89 14 e1 45 10 10 24 96 11 80 00 00 1e cd f2 02 10 21 05 20 88 44 54 ca 52 2a 80 a8 9b 1c 4b 11 45 00 c6 cc 7a 00 00 00 00 00 00 07 00 08 00 00 00 22 00 23 00 1e 00 00 00 00 00 1e cf ff b0 04 41 22 09 21 24 19 04 82 d2 4d 29 c4 b9 fe 1c a7 f8 15 57 fa 09 2f f0 3a fc c4 80 00 00 1e cf f2 04 10 21 01 90 22 19 09 0e 91 25 3e 42 19 f3 33 37 c1 8c 69 a1 84 6d f0 61 1b 7c 10 c6 80 00 00 1e cd f9 00 08 04 80 10 12 09 05 12 95 9e 61 27 6a 14 57 91 18 8a 2b d1 14 f4 52 00 c6 cc 87 00 00 00 00 00 00 08 00 08 00 00 00 34 00 22 00 1a 00 00 00 00 00 1d 16 4d bf ff ff e8 04 20 21 05 08 31 09 c6 21 13 2c a4 d4 aa 5f ff e2 4a a5 ff fe 24 94 5f ff f0 24 aa ff ff e0 24 94 bf f0 82 ab 7f ff e1 24 15 40 00 00 1e cf e4 06 20 62 02 c0 90 c8 48 74 0a 29 97 b3 66 3e 34 31 8f 89 06 c7 c4 21 87 31 04 7d 98 c0 00 00 1e cd f9 07 48 10 83 90 52 09 15 2a 34 2d 72 bf 51 27 92 44 a4 84 22 8c c6 cc 70 00 00 00 00 00 00 09 00 08 00 00 00 2b 00 13 00 1b 00 00 00 00 00 1e cf ff f6 00 88 14 42 04 0c 85 22 90 48 c9 ac 8e a5 49 7f f9 49 57 ff f8 92 a2 ff fc 0a a5 7f ff 81 25 47 ff fc 41 2a 00 00 00 1e cf c8 0c 41 c4 49 09 40 23 27 40 c3 48 3d 00 2c 00 00 1e cd f9 00 c8 14 82 90 06 05 15 2a 2a 2d 25 8e 28 82 91 85 1c c5 07 82 40 c6 cc 62 00 00 00 00 00 00 0a 00 08 00 00 00 26 00 11 00 14 00 00 00 00 00 1e cf ff fb 03 84 02 60 22 14 20 48 64 04 25 d0 59 2e ff 29 27 fe 54 a7 ff 85 54 ff fc 45 2a ff ff 12 0a 28 00 00 1e cf b0 40 84 08 82 20 8f 40 27 a4 4d 95 00 00 00 1e cd ec 11 20 b2 04 40 51 2a 2c 50 26 75 02 48 08 38 c6 cc 70 00 00 00 00 00 00 0b 00 08 00 00 00 26 00 1a 00 19 00 00 00 00 00 1e cf ff f9 01 04 04 20 42 00 20 79 00 48 44 40 bc 49 0c 69 e8 08 4b f8 4c 4b a4 23 12 21 fa a1 9f e6 9d 9c 00 00 1e cf b0 04 83 98 2a 15 42 a5 51 a9 4a 45 d5 1c af 0e 2b c8 51 05 14 00 00 00 1e cd ec 11 60 02 1e c1 11 74 05 88 74 09 2e 61 16 61 0a 10 ce 63 10 c6 cc 75 00 00 00 00 00 00 0c 00 08 00 00 00 34 00 18 00 12 00 00 00 00 00 1e cf ff e4 00 10 10 81 08 21 03 c8 04 04 04 0a 47 fe 92 49 21 ff 56 2c 52 4f fd 24 a1 42 9f fd 22 88 50 97 dc 25 11 0a 7f f4 8a 22 12 5e 42 58 b2 00 00 00 1e cf c8 20 40 e4 11 02 40 a7 27 51 45 e5 54 e1 0e 46 a4 11 45 00 00 00 1e cd ec 09 21 72 4a 41 11 68 8a d1 28 f2 06 1c c6 cc 75 00 00 00 00 00 00 0d 00 08 00 00 00 1b 00 21 00 22 00 00 00 00 00 1e cf ff 90 24 42 e2 04 41 c8 a2 09 4a 27 52 88 39 bb 61 15 78 3a d8 56 80 00 00 1e cf c8 00 40 c4 11 01 a1 91 11 d2 28 da 18 59 04 33 e2 19 9f d8 66 6f e0 84 86 f4 84 34 80 00 00 1e cd e4 03 20 32 0a 40 a8 54 54 68 34 da ed a2 44 d1 25 fe 24 97 fe 49 4b ff 03 29 ff 84 a9 00 c6 cc 66 00 00 00 00 00 00 0e 00 08 00 00 00 20 00 15 00 1a 00 00 00 00 00 1e cf ff b0 14 40 02 02 40 08 22 09 0a 84 93 2d 08 df 04 38 21 1c 76 34 8d 6d c0 c5 26 30 00 00 1e cf 60 21 05 a0 08 7a 01 59 2a 86 d8 7b 05 b0 5b 06 00 00 00 1e cd b0 04 81 48 42 0a 89 40 a3 4e a5 24 98 51 4e 08 71 c9 a4 44 d2 14 c6 cc 56 00 00 00 00 00 00 0f 00 08 00 00 00 24 00 10 00 0b 00 00 00 00 00 1e cf ff 60 20 80 88 21 01 b0 44 02 44 68 e8 42 0b 91 8c 5e cd 84 7f 61 88 7f 63 18 2e 62 0f b1 9a 00 00 00 1e cf 21 b1 00 a1 88 0a 01 05 31 c2 2f 00 00 00 1e cd 60 19 24 a1 48 0b 10 c6 cc 50 00 00 00 00 00 00 00 00 09 00 00 00 18 00 0d 00 14 00 00 00 00 00 1e da 40 64 02 89 a1 c8 1a 32 14 ec 2d 16 08 7c d6 1e 10 5c 43 00 00 00 1f c8 40 14 04 80 a1 48 74 24 20 00 00 1e ce 43 24 02 86 20 68 c4 34 c8 50 5a 3b 59 32 c0 70 c6 cc 4e 00 00 00 00 00 00 01 00 09 00 00 00 1b 00 05 00 17 00 00 00 00 00 1e ce 40 04 1e 85 20 a8 14 44 c8 6e 2f 43 0b 10 cf 84 21 fc d8 21 fc 46 12 00 00 08 08 00 00 00 1e ce 40 04 0a 81 20 a8 24 54 09 54 6b 14 84 d6 1d 81 ec 02 c0 c6 cc 44 00 00 00 00 00 00 02 00 09 00 00 00 1e 00 05 00 0a 00 00 00 00 00 1e d0 40 54 06 80 a0 34 07 49 47 43 43 a9 dd 77 f8 0a af 32 2b 60 ae f0 71 45 51 00 00 00 08 08 00 00 00 1e ee 40 04 66 80 2b 00 c6 cc 86 00 00 00 00 00 00 03 00 09 00 00 00 41 00 18 00 16 00 00 00 00 00 1c a8 51 1e 80 64 06 40 64 0d 83 61 90 c8 c8 ff f6 aa ae ee 66 7f fe 0d 56 2b 95 7f ff 03 55 77 9b 9f ff a2 8c ae ae b3 ff e8 63 55 57 9b ff e8 26 6a 77 2f ff 06 26 73 32 ff e0 c4 c6 5b c8 00 00 1e cc 40 64 13 40 10 44 4d 01 22 9a 4c 2e c2 15 30 73 0e 31 c6 00 00 00 1e d2 40 84 04 80 d0 a4 12 0a 14 ca 25 48 22 44 02 92 07 00 c6 cc a4 00 00 00 00 00 00 04 00 09 00 00 00 2f 00 2c 00 32 00 00 00 00 00 1e cf ff fb 00 44 06 20 02 00 20 18 0c 79 0b 12 88 97 b3 ea b2 64 e7 5a c3 26 1b 46 49 c9 6d 09 33 e6 ba 84 9f e4 bb 42 4f f9 2d b4 30 00 00 1e cc 40 34 02 80 d0 14 0d 05 0a 0f fa 24 aa ba eb ff ff c2 24 93 5f f8 48 35 5f e0 2d 57 ff 80 54 af fc 04 69 fe 05 27 e4 74 00 00 1e cc 40 04 00 80 20 14 05 01 05 02 3f fa 08 47 a6 4c ff d4 92 c5 8b fe 85 09 62 9f f4 92 50 a4 ff 52 4a 49 3f a8 29 24 9f a8 29 21 3e a0 49 20 c6 cc 82 00 00 00 00 00 00 05 00 09 00 00 00 38 00 18 00 1b 00 00 00 00 00 1e cf ff e4 00 30 00 80 08 01 04 40 20 21 ff 40 86 10 d2 4f fa b1 62 93 3e e1 42 85 0b ff ea 32 85 0a 3f 71 11 0a 14 7e d2 14 44 28 fd 95 28 88 51 f9 25 11 0a 20 00 00 1e cf d8 06 40 64 22 82 a2 a8 2b a8 5e ac e4 41 08 82 8a c3 10 c0 00 00 1e cd f6 01 10 39 13 20 c8 54 54 89 53 71 2a 56 c2 a5 b1 15 6c 29 10 72 00 c6 cc 80 00 00 00 00 00 00 06 00 09 00 00 00 2f 00 1b 00 1f 00 00 00 00 00 1e cf fe 40 01 01 30 22 04 41 e4 02 02 04 10 8c ff e9 24 90 9f b2 62 90 9f d8 49 48 4f ec 25 24 27 f5 42 52 07 ea 93 04 0f d8 52 10 00 00 00 1e cf ec 04 20 82 02 41 11 08 28 93 2a 82 88 51 84 22 0c 76 10 71 06 23 00 00 00 1e cd f6 01 90 29 06 20 68 54 54 14 69 ad d3 52 47 92 4b f2 91 7e 52 2f f3 22 7e 92 00 c6 cc 73 00 00 00 00 00 00 07 00 09 00 00 00 2a 00 1a 00 18 00 00 00 00 00 1c a8 51 1f fe 80 04 04 80 10 24 52 2d 29 04 92 98 a7 5f b1 15 7f 82 4a ff 0a aa ff c2 b5 5f fe 21 ab 5f ff f3 0c da e8 00 00 1e cf d8 08 40 44 09 03 a0 90 91 25 a0 a2 09 21 8a 20 c4 60 ac 08 1c 00 00 00 1e cd ec 01 20 32 06 40 d0 54 34 68 d4 59 25 29 06 8d 04 54 69 cc c6 cc 7b 00 00 00 00 00 00 08 00 09 00 00 00 28 00 1d 00 1f 00 00 00 00 00 1e cf f9 00 48 0d 81 90 12 05 05 07 f4 24 56 aa 5f fe 12 a9 ff e2 a3 4f fc aa a7 f9 6a 2f f5 54 5f b9 8b 1c ac 60 00 00 1e cf 90 00 80 88 22 0b 40 22 29 40 7d 0b cb 48 e2 af c2 94 ff 29 53 ff 25 55 00 00 00 1e cd b0 0c 81 c8 22 02 91 51 4c 91 19 25 2e 41 0d bf 88 36 87 f1 09 24 9f 49 24 92 00 c6 cc 76 00 00 00 00 00 00 09 00 09 00 00 00 25 00 1b 00 1f 00 00 00 00 00 1e cf ff 60 18 80 48 09 01 20 c8 28 3f a1 22 49 5c bf ff 51 19 7f f8 a2 4b f0 28 a7 a1 41 e5 60 ee cc 30 00 00 1e ce c1 d4 08 81 a1 28 24 54 a9 29 ad d4 fc 94 9f e6 a2 7e 92 4f d2 86 00 00 00 1e cd 60 f1 01 d0 24 11 04 87 48 89 25 e8 c6 67 cd b1 8d d2 49 03 76 48 41 bf a4 21 08 c6 cc 70 00 00 00 00 00 00 0a 00 09 00 00 00 27 00 18 00 1a 00 00 00 00 00 1e cf ff ec 01 10 18 80 88 09 06 41 20 ec 24 db 7b 7e 4a 55 ff f8 11 4a ff c0 52 3f c9 22 fc 91 6f 48 21 c3 00 00 00 1e ce c0 34 12 81 20 68 74 44 69 55 45 5c 73 21 48 41 e0 ab 0e 00 00 00 1e cd 60 01 03 20 e8 12 19 15 12 45 13 42 10 51 0c 73 19 0c 0e 56 04 80 c6 cc 6b 00 00 00 00 00 00 0b 00 09 00 00 00 2a 00 15 00 15 00 00 00 00 00 1c a8 51 1f ff ff ff e8 04 10 10 40 41 02 12 16 10 84 22 24 24 6a 2a 91 ff e4 54 7f f9 54 27 24 89 8a 3b 7a 0a da 08 80 00 00 1e cf 60 19 03 a0 88 1a 15 3d ab 75 16 85 0a 70 a7 10 30 00 00 1e cd b0 08 81 08 22 03 40 23 24 42 a1 81 e1 84 88 24 f0 c6 cc 65 00 00 00 00 00 00 0c 00 09 00 00 00 29 00 12 00 13 00 00 00 00 00 1e cf ff ff 60 00 40 06 04 60 02 00 c0 63 ec 42 04 11 86 9f b0 92 49 9f 42 24 84 d0 86 11 c2 08 4d 61 8b 58 b3 26 00 00 00 1e cf b0 04 81 48 42 02 97 7c 42 b1 37 1a 81 0c 00 00 1e cd e4 04 21 42 0a 41 14 09 a8 16 a4 45 ce 04 54 c6 cc 81 00 00 00 00 00 00 0d 00 09 00 00 00 20 00 25 00 25 00 00 00 00 00 1e cf ff ec 00 30 68 80 88 01 04 41 20 21 55 4c a3 b5 87 5b 10 52 9d 81 29 58 51 24 2b 00 00 00 1e cf d8 08 40 04 09 00 41 f4 64 08 12 4f a1 08 db fe 20 69 0f e8 04 34 3e 04 33 7c 11 99 f6 31 0e 21 88 00 00 1e cd ec 03 20 32 02 40 d0 28 1e 9d 0a 29 54 f9 25 5f f8 25 4f fc 85 2b fc 05 4a ff 04 95 fe 44 97 e4 88 c6 cc 73 00 00 00 00 00 00 0e 00 09 00 00 00 1d 00 1d 00 22 00 00 00 00 00 1e cf ff e4 03 10 00 87 88 11 02 40 25 2c 4c b2 49 65 87 10 2b 58 d0 62 b0 46 00 00 00 1e cf 60 01 01 21 74 01 04 97 44 89 9d 08 c1 76 c6 3e cc c2 ec cc 2c c4 1e 62 0c 00 00 1e cd 90 04 80 c8 2a 09 a0 d0 53 a2 e8 a4 92 53 94 8b ff 2a 47 f9 92 3f ca 91 fe 54 8f f3 24 00 c6 cc 62 00 00 00 00 00 00 0f 00 09 00 00 00 24 00 14 00 13 00 00 00 00 00 1c a8 51 1f ff ff f4 00 10 20 83 04 08 41 31 09 84 c4 88 1e c0 c3 cc c2 d0 40 b6 62 2d 59 84 73 18 a0 00 00 1e ce 40 14 20 80 a2 08 34 04 2b 11 24 94 4c 86 40 38 00 00 1e cc c4 64 02 87 20 28 e4 15 68 10 48 94 54 73 00 c6 cc 58 00 00 00 00 00 00 00 00 0a 00 00 00 23 00 0f 00 0f 00 00 00 00 00 1e cf ec 06 20 62 03 61 04 12 1f 4c 89 24 f9 4c 47 fc 33 11 ff 46 0d 8f e0 31 9f c1 8c df c1 82 40 00 00 1e cc 40 d4 04 86 a0 48 f4 01 01 05 30 00 00 1f 46 40 04 36 80 21 a8 05 d4 0a d2 60 c6 cc 55 00 00 00 00 00 00 01 00 0a 00 00 00 28 00 0f 00 07 00 00 00 00 00 1e cf d8 04 40 44 1a 80 fd 00 42 22 24 47 d4 66 17 cc cd b7 ec 21 21 3f 61 09 09 fb 09 09 0f a4 24 34 fd 90 08 60 00 00 1f 38 40 34 18 84 a0 c8 b4 45 e8 04 40 00 00 1f d2 40 04 38 c6 cc 49 00 00 00 00 00 00 02 00 0a 00 00 00 1f 00 0e 00 05 00 00 00 00 00 1c f0 4e df 40 44 2c 80 a0 93 69 14 a3 41 44 ad ac 17 62 0a 7d 98 77 d9 85 6f e8 60 e0 00 00 1f c8 40 34 00 80 a0 48 14 24 aa 00 00 00 08 08 00 c6 cc 57 00 00 00 00 00 00 03 00 0a 00 00 00 2d 00 0e 00 05 00 00 00 00 00 1e cf 90 0d 80 48 0d 01 a0 74 19 0c 83 fb 12 4a 57 ad df ff 82 49 6d df fc 02 49 ad fe 00 55 7b f0 46 ab fc 0a 9d fe 44 53 0a 38 00 00 1e e0 40 74 18 81 a1 88 12 89 0d 20 00 00 08 08 00 c6 cc 82 00 00 00 00 00 00 04 00 0a 00 00 00 2f 00 1a 00 22 00 00 00 00 00 1e cf ff 90 05 40 26 03 20 24 09 10 83 e4 2c 64 b5 a9 bf ff ff 1a b6 43 9f f8 6d b6 04 f6 b6 a5 bf c3 55 4f ff c5 55 6f f2 84 68 e3 00 00 00 1e cc 40 54 06 81 a0 5a 15 15 1a 0a 49 24 81 ac 16 c1 6c 09 60 d4 0b 40 00 00 1e d0 40 24 04 80 20 08 3f 42 44 81 24 2f b1 9b 3f 8c 33 3e 20 86 7c 41 05 88 31 c4 08 e2 06 00 c6 cc 78 00 00 00 00 00 00 05 00 0a 00 00 00 37 00 12 00 18 00 00 00 00 00 1d c8 48 1f ff ff ff 40 00 80 06 00 10 03 00 60 18 04 0c f1 0c 10 b2 16 7d a8 51 09 4f fa a1 42 85 3f d4 94 29 27 f5 28 4a 49 fa 12 c5 03 d9 24 84 3d 92 42 08 00 00 1e ce c0 34 14 83 a0 c8 24 15 c8 dc 69 82 50 00 00 00 1e cd 90 00 81 c8 1a 04 8b 43 40 89 36 90 6b b0 72 0a 0b 40 d0 90 c6 cc 77 00 00 00 00 00 00 06 00 0a 00 00 00 2d 00 17 00 1c 00 00 00 00 00 1c f0 4e df ff e8 00 40 04 00 40 10 88 48 f2 0c 18 ee 6c 15 18 ea f6 b2 ae ff c6 23 5e fc 48 bc ff 7f e0 12 4d b7 ff 00 92 ed d0 00 00 1e ce c0 64 12 82 21 08 1a 02 84 b4 1c 59 87 30 e6 0e 61 c4 00 00 00 1e cd 60 19 00 a0 68 35 06 86 9d 06 8a c9 22 52 9a 47 12 45 1a 85 18 28 87 10 c6 cc 87 00 00 00 00 00 00 07 00 0a 00 00 00 39 00 19 00 1e 00 00 00 00 00 1e cf f6 01 b0 09 01 20 34 0d 06 85 07 fa 24 95 ae b5 ff ff f0 9b 32 64 ff f8 66 db 75 ff f8 6e 5b 6d ff fc 53 72 d9 3f fe 29 cb 64 bf ff 8a ae 49 33 ff 06 cc 90 60 00 00 1e ce 40 04 6c 82 a0 a8 04 04 a9 52 41 24 ab d8 95 7e 1d 2f c2 95 00 00 00 1e cc 40 14 14 81 a1 88 34 a4 48 6c 31 62 19 be 10 d9 f3 1b 37 f4 09 09 9e 84 84 98 c6 cc a4 00 00 00 00 00 00 08 00 0a 00 00 00 2f 00 2f 00 2f 00 00 00 00 00 1e cf ff c8 02 20 11 01 21 04 0b 04 85 32 0b d5 44 6d ef a8 69 24 fd 09 24 9c ff 40 4b 16 2f f4 24 b2 14 ff 42 51 0b 17 fd 4a 12 c5 80 00 00 1e d2 40 34 07 40 50 14 0a 07 e8 51 a2 95 aa ff ff 15 5e 6f ff f1 0c b4 7f c2 b5 6b ff fc 49 6a 9f ff 89 34 53 ff f3 25 45 ff e3 51 10 00 00 1e cc 40 24 00 81 50 04 02 02 1f d0 24 84 a3 7b ff f8 25 31 49 fd 49 42 92 7f 52 58 a4 9f d4 94 28 4f d4 a6 22 1f 64 c1 08 7d 85 21 00 c6 cc 78 00 00 00 00 00 00 09 00 0a 00 00 00 29 00 1a 00 1e 00 00 00 00 00 1e cf ff e4 02 10 00 85 b8 01 00 40 24 21 4f a1 10 c7 f7 a1 8c ef 64 90 0f d2 43 0d ff 29 20 43 b2 10 c6 f6 42 12 20 00 00 1e cf c8 02 40 64 0d 06 a0 50 d1 a6 a6 b3 2a 82 1c 29 41 0e 30 21 66 30 00 00 1e cd d8 00 40 04 09 00 41 21 f4 08 12 51 3a 33 0b 66 1d 84 45 81 28 12 12 a1 2e 00 c6 cc 69 00 00 00 00 00 00 0a 00 0a 00 00 00 1e 00 1d 00 17 00 00 00 00 00 1e cf ff c8 0a 20 91 00 21 64 21 0c 81 0b 89 29 48 b0 38 8b 61 07 31 04 7d 9b 18 00 00 00 1e cf ec 01 20 42 12 42 10 e8 ca 52 2c bb 10 ce 31 05 b1 88 df 33 33 7c 42 18 c0 00 00 1e cd f9 0c 48 08 85 90 42 1d 15 15 0a ed 4b 8a 4f 22 a3 c9 28 c6 cc 70 00 00 00 00 00 00 0b 00 0a 00 00 00 23 00 19 00 1d 00 00 00 00 00 1e cf ff e4 00 10 08 82 08 19 00 41 22 2a 45 ca 86 e3 10 df 63 0c 51 04 37 d8 66 cc c6 23 b3 58 c0 00 00 1e cf ec 06 20 92 04 42 90 28 ca 51 2c d2 08 2d 0c 62 20 c4 40 ec 40 00 00 1e cd f9 00 c8 24 81 30 12 25 11 2a 94 29 2c 94 91 49 e4 8a 7a 24 4a 88 c4 51 80 c6 cc 69 00 00 00 00 00 00 0c 00 0a 00 00 00 1d 00 1b 00 1a 00 00 00 00 00 1e cf ff d8 02 20 01 01 20 04 09 00 85 12 05 50 81 cc 56 98 c1 83 82 04 a0 8a 20 00 00 1e cf e4 02 20 82 06 42 10 88 34 49 17 61 04 90 c5 10 22 30 54 04 28 81 80 00 00 1e cd f2 06 90 11 05 20 e8 24 54 a9 15 69 0e 71 91 08 8a 3b d1 08 8e 30 c6 cc 69 00 00 00 00 00 00 0d 00 0a 00 00 00 1c 00 1a 00 1c 00 00 00 00 00 1e cf ff d8 02 20 e3 03 21 8c 29 00 85 35 d4 24 ad 09 0e 68 25 a5 04 15 11 00 00 00 1e cf c8 08 40 44 11 01 a1 90 92 d0 2c a7 b0 c2 88 31 0c 71 00 e5 14 00 00 00 1e cd ec 03 20 32 0a 40 a8 34 54 68 a9 b4 94 94 51 5e 85 19 0a 0d 44 c8 1a 00 c6 cc 67 00 00 00 00 00 00 0e 00 0a 00 00 00 20 00 14 00 1c 00 00 00 00 00 1c f0 4e df ff ff f4 1c 10 e0 88 04 08 40 16 08 44 0d 90 a0 86 1c 8c 39 bb f2 0a d9 06 00 00 00 1e cf 60 11 02 20 f4 01 04 96 91 5a 02 0f 70 94 01 80 00 00 1e cd c8 02 40 24 0d 03 42 68 28 d1 aa 8d dc 53 c8 a3 0a 15 e8 71 07 0c 80 90 c6 cc 52 00 00 00 00 00 00 0f 00 0a 00 00 00 1b 00 0c 00 14 00 00 00 00 00 1e cf ff d8 00 20 61 07 20 44 21 04 81 1a c6 96 80 85 64 60 f4 9c 10 ac 00 00 00 1e ce c1 c4 06 83 21 68 02 a0 00 00 1e cd 20 09 03 a0 c8 3a 21 1d 42 31 5a 8d 21 c7 38 00 c6 cc 56 00 00 00 00 00 00 00 00 0b 00 00 00 1f 00 16 00 0a 00 00 00 00 00 1e cf ff d8 0c 20 41 00 20 36 20 88 43 24 22 86 57 18 c7 d8 41 d6 b1 9c 60 a1 4e 21 58 00 00 1e cc 42 24 0a 81 21 68 04 f4 0b 52 4a 0d 42 c8 d6 5a 10 56 00 00 1e da 40 44 1a 80 30 80 c6 cc 58 00 00 00 00 00 00 01 00 0b 00 00 00 22 00 13 00 0c 00 00 00 00 00 1e cf ff b0 00 40 42 04 40 88 02 0e c4 44 49 4b e4 21 9f cc 63 7f 18 63 cd 30 b3 08 58 43 98 30 00 00 1e cc 42 24 02 87 21 28 64 34 09 54 09 50 22 83 40 00 00 1f 2a 40 04 6e 80 21 e8 26 10 c6 cc 48 00 00 00 00 00 00 02 00 0b 00 00 00 1a 00 10 00 07 00 00 00 00 00 1e cf fe 40 41 05 c8 11 0d 90 04 82 12 3a cb 45 76 04 d0 34 2d 01 28 14 00 00 1e cc 40 74 0c a4 20 a8 a4 b4 89 d8 22 e0 00 00 1f ee 40 04 1c c6 cc 47 00 00 00 00 00 00 03 00 0b 00 00 00 1c 00 0f 00 05 00 00 00 00 00 1e cf fd 80 24 0a 41 c8 11 02 96 a5 4a 09 65 11 c1 94 10 b2 04 2c 33 38 d6 00 00 00 1e cc 40 14 0c 80 a0 88 d4 25 e8 01 28 00 00 08 08 00 c6 cc 5c 00 00 00 00 00 00 04 00 0b 00 00 00 25 00 12 00 0e 00 00 00 00 00 1e cf ff 20 28 82 08 19 08 20 88 3a 02 64 97 90 42 1f cc cd 8f e6 48 42 7a 42 43 4f b0 90 92 7a 42 43 40 00 00 1e ee 40 04 48 80 a1 88 34 c4 6b 17 20 d3 8e 00 00 00 1e d8 40 b4 0c 84 a1 88 34 e4 22 c0 c6 cc 63 00 00 00 00 00 00 05 00 0b 00 00 00 26 00 14 00 12 00 00 00 00 00 1e cf ff 20 10 80 08 11 02 20 ec 02 04 09 31 72 30 bb 66 33 e6 c3 17 b4 31 87 f4 84 19 fd 21 08 5f 43 01 00 00 00 1e d2 40 e4 02 87 20 68 c4 55 49 5a 26 c3 c8 2c 82 c0 00 00 1e cc 43 54 04 80 a0 08 94 84 ab 91 28 91 4a 18 c6 cc 79 00 00 00 00 00 00 06 00 0b 00 00 00 39 00 11 00 18 00 00 00 00 00 1c f0 4e df ff d0 18 81 98 09 81 60 b0 c8 3e cc 92 95 fa df ff 82 4b 77 67 f8 02 5b d7 bf d1 25 dd 7b fc 01 2d ec bf ff c0 11 6e 66 7f c0 89 72 e5 ff ff 04 45 b9 96 00 00 1e ce 40 64 12 82 21 68 44 b4 ca 54 68 1c 00 00 00 1e cc 40 74 10 83 a0 48 d4 06 c8 5e 4d 84 3c c2 23 e6 10 df 30 86 c6 cc 9b 00 00 00 00 00 00 07 00 0b 00 00 00 30 00 28 00 2c 00 00 00 00 00 1e cf ff ec 01 70 0a 80 98 0b 02 41 24 f9 0b 19 2d 68 df f6 ed 52 1f ff e7 2c 12 4f c9 65 08 7f fa 59 49 27 2d 41 1e f5 a8 cf 73 68 87 a0 00 00 1e de 40 34 02 80 a0 1d 06 8a 85 0a 28 f7 75 57 ff 91 a9 7f e1 1a af ff 10 a3 5f fe 21 55 7f f8 8a cb ff c4 56 40 00 00 1e cc 40 44 00 81 20 08 04 1f 44 89 04 22 5f ff 42 49 24 fa 24 92 49 fa 82 92 49 fa 92 92 43 e8 92 49 0f a1 49 24 3e 89 24 90 c6 cc 88 00 00 00 00 00 00 08 00 0b 00 00 00 35 00 1e 00 1e 00 00 00 00 00 1e cf ff ff c8 00 30 00 40 04 00 c0 08 06 02 02 3e 53 18 64 33 fe c2 85 0a 1f d4 b1 49 27 f5 28 4a 49 fd 50 91 84 fe c2 50 24 9f d4 96 09 27 f5 42 48 90 00 00 1e cf 60 0b 00 a0 28 1a 0d 0b d0 a1 45 65 6a 51 59 ea 0c 71 01 ce 10 ce 10 87 08 40 00 00 1e cd c8 00 40 04 01 00 42 21 f4 08 12 23 a1 18 7b 05 a0 49 0a 73 64 8b d9 24 f0 e4 c6 cc 83 00 00 00 00 00 00 09 00 0b 00 00 00 30 00 1d 00 1f 00 00 00 00 00 1e cf ff f6 00 08 00 40 04 08 82 20 10 e4 44 08 64 6f f8 90 92 1f f4 84 92 4f a1 49 24 9f a9 0c 52 4f d0 94 92 67 69 43 24 3f 50 c5 0c 00 00 00 1e cf ec 06 20 42 06 42 10 88 2a 11 27 41 4c 5b 18 87 63 0a 41 85 b0 83 d8 41 80 00 00 1e cd f6 04 90 29 00 21 28 34 2a 14 e9 a5 35 14 97 e9 24 fd 24 9f a4 4b f2 44 fc 91 40 c6 cc 7c 00 00 00 00 00 00 0a 00 0b 00 00 00 2a 00 1d 00 1e 00 00 00 00 00 1c f0 4e df ff ff a0 20 82 04 00 41 08 2e 01 01 22 0c 7d 0d 0c 3e 84 83 3e 90 c6 1f d8 42 06 ec 84 1a e2 41 8b b5 e0 c0 00 00 1e cf d8 04 40 44 09 02 40 e8 09 11 2b 41 04 3c c4 11 cc 31 d8 41 c4 0e c0 96 00 00 00 1e cd ec 03 20 32 06 40 50 5a 0a 34 69 aa ee 44 a2 44 a2 29 e4 51 88 e2 50 e2 48 e0 c6 cc 5b 00 00 00 00 00 00 0b 00 0b 00 00 00 1e 00 12 00 14 00 00 00 00 00 1e cf fe c0 81 03 90 02 04 40 90 13 21 41 68 56 0c 12 4a 47 69 b1 22 48 ad 3c b4 80 00 00 1e cf 60 31 04 a0 08 62 05 18 e8 85 04 4a 4a 20 00 00 1e cd b0 0c 81 48 32 02 87 46 42 a5 45 85 58 e0 2a 00 c6 cc 5c 00 00 00 00 00 00 0c 00 0b 00 00 00 20 00 16 00 0f 00 00 00 00 00 1e cf fe 40 01 06 10 12 08 40 90 10 a2 45 04 96 91 47 3c 8e 25 0a 2b f4 45 3f 48 89 a5 a8 00 00 1e cf 20 31 1d 20 68 02 05 01 5a 04 50 e8 28 c5 93 07 30 60 00 00 1e cd 60 09 03 a0 c8 0a 35 01 5a 44 40 c6 cc 46 00 00 00 00 00 00 0d 00 0b 00 00 00 19 00 0c 00 0a 00 00 00 00 00 1e cf fd 81 64 08 41 c8 41 06 96 81 3b 0b 35 8e 18 a0 85 1c d4 28 c0 00 00 1e ce c0 a4 0a 82 21 68 02 e8 00 00 1e cc c0 74 10 81 b1 40 c6 cc 44 01 00 00 00 00 00 0e 00 0b 00 00 00 09 01 0b 00 19 00 00 00 00 c2 40 28 47 42 0a 11 d1 04 6b d1 06 d0 a6 5d 20 13 42 4e 8c 56 a0 5a 91 0b 41 90 0f 24 c0 6a 98 e5 41 c3 28 ac 0d d0 a1 10 51 13 16 05 17 52 c0 62 9c 00 15 7a 80 b9 42 a0 1d 50 51 a4 09 e1 1c c7 47 45 7a d6 d0 0b 4c 4a 77 bd 86 00 0a 81 3c c1 60 7e 85 32 d9 00 aa 14 5a f7 a8 03 34 a6 b0 00 03 da 50 d2 00 80 e9 b4 2f b8 f4 c8 32 80 ae 43 ef 90 55 62 78 32 c5 00 06 fe be 85 08 86 8d 29 e1 a9 76 7f 78 00 de b4 82 9a 35 80 0f 07 d4 81 30 3d bf 40 d0 18 47 fd 3c b9 60 fb fc d7 bf ec 40 00 fc 1c 3a 80 07 7c 9c 00 18 00 41 23 ff 60 a8 45 7f bf 7f 32 81 00 11 ff 73 88 00 f8 ff fa d5 09 00 00 20 00 15 1c 01 21 1a a2 1b 00 a7 ba 7d 00 fd fe e1 00 00 4f e2 4a 7e e7 a8 22 02 1f df ff ff fc 3b b6 d0 80 04 7e 6e fe b0 f9 a7 80 00 6e 0d fc 9d a8 00 20 3f 63 65 70 40 40 01 02 90 80 e0 43 39 6c 30 00 00 1e ce 41 e4 02 87 20 2e c0 00 00 1e cc 41 74 04 82 a0 08 34 04 29 11 41 24 3b 10 c2 4c 71 87 44 c3 8c c6 cc 53 01 00 00 00 00 00 0f 00 0b 00 00 00 1b 01 1a 00 07 00 00 00 00 a5 21 85 4c 63 6a 28 ac 0c a1 d5 88 03 c4 29 92 97 00 bd 15 35 c7 78 05 a5 69 ce 97 00 a6 98 42 98 7b 4c 21 4c 3d 4c 21 4c 10 9b a2 a0 da 2a 1a 80 7d 0a 18 a0 20 5c 00 2a ca fa 8b b8 a0 20 b0 88 20 4c 9a 00 b5 00 28 54 81 72 d4 85 d1 8a 15 c9 5b 68 02 34 50 97 bd 80 06 e9 a6 b4 00 00 77 54 03 46 50 14 0e 83 e8 11 29 d2 95 af 03 6b 96 f9 b8 0b 5c 7d f0 6e a3 74 1d 00 19 ab a8 51 cc a1 a6 ef d0 35 07 02 61 a2 23 14 53 4e 80 da 75 00 06 aa f1 d1 41 2a 0c 00 52 74 1f a1 fb 03 3f 93 e6 df c8 02 7f d7 8f 0f 40 80 00 26 01 07 c8 40 00 b1 83 54 00 52 40 1e b1 fd 8c 5d 02 44 8f 9f e1 c0 02 0f b2 20 0f f9 ff d7 f7 e4 3c 00 03 d0 20 00 24 18 a4 da cd 8b 9e c0 07 51 48 07 f7 ee 7d 80 0a 48 03 ff b1 f1 1c 58 64 01 c7 cf fb 70 77 e5 20 00 04 9b 3f 56 f1 4e 10 03 c1 9f 0f e0 a2 28 20 03 76 76 79 57 10 02 08 03 8f 40 80 03 81 00 20 41 c1 96 ec 22 d0 00 00 1e ce 40 a4 0a 81 20 29 04 54 08 d4 59 0a 44 21 11 31 19 32 10 b1 11 30 00 00 1e cc 40 35 38 c2 cc 06 00 00 00").to_vec(), hex!("0c 00 00 00 0c 00 00 00 03 00 00 00").to_vec(), ] - }; -} + }; + } -// #[bench] -// fn bench_zgfx_decopresses_single_large_multiple_pdus(b: &mut test::Bencher) { -// let mut decompressed = -// Vec::with_capacity(DECODED_ZGFX_SINGLE.iter().map(|d| d.len()).max().unwrap()); + // #[bench] + // fn bench_zgfx_decopresses_single_large_multiple_pdus(b: &mut test::Bencher) { + // let mut decompressed = + // Vec::with_capacity(DECODED_ZGFX_SINGLE.iter().map(|d| d.len()).max().unwrap()); -// b.iter(|| { -// let mut zgfx = Decompressor::new(); -// for encode in ENCODED_ZGFX_SINGLE.iter() { -// zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); -// decompressed.clean(); -// } -// }); -// } + // b.iter(|| { + // let mut zgfx = Decompressor::new(); + // for encode in ENCODED_ZGFX_SINGLE.iter() { + // zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); + // decompressed.clean(); + // } + // }); + // } -#[test] -fn zgfx_decopresses_multiple_single_pdus() { - let pairs = ENCODED_ZGFX_SINGLE.iter().zip(DECODED_ZGFX_SINGLE.iter()); - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(pairs.clone().map(|(_, d)| d.len()).max().unwrap()); - for (i, (encode, decode)) in pairs.enumerate() { - let bytes_written = zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decode.len(), bytes_written); - assert_eq!(decompressed, *decode, "Failed to decompress encoded PDU #{}", i); - decompressed.clear(); + #[test] + fn zgfx_decopresses_multiple_single_pdus() { + let pairs = ENCODED_ZGFX_SINGLE.iter().zip(DECODED_ZGFX_SINGLE.iter()); + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(pairs.clone().map(|(_, d)| d.len()).max().unwrap()); + for (i, (encode, decode)) in pairs.enumerate() { + let bytes_written = zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decode.len(), bytes_written); + assert_eq!(decompressed, *decode, "Failed to decompress encoded PDU #{}", i); + decompressed.clear(); + } + } + + #[test] + fn zgfx_decopresses_only_one_literal() { + let buffer = [0b1100_1000, 0x03]; + let expected = vec![0x01]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_one_literal_with_null_prefix() { + let buffer = [0b0011_0010, 0b1000_0000, 0x07]; + let expected = vec![0x65]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_only_multiple_literals() { + let buffer = [0b1100_1110, 0b1001_1011, 0b0001_1001, 0b0100_0000, 0x06]; + let expected = vec![0x01, 0x02, 0xff, 0x65]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_one_literal_with_one_match_distance_1() { + let buffer = [0b0011_0010, 0b1100_0100, 0b0011_0000, 0x1]; + let expected = vec![0x65; 1 + 4]; // literal (1) + match repeated 4 (length) + 0 times + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { + let buffer = [ + 0b0010_0000, + 0b1001_0000, + 0b1000_1000, + 0b0111_0001, + 0b0001_1111, + 0b1011_0010, + 0x1, + ]; + let expected = "ABC".repeat(20); + let expected = expected.as_bytes(); + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_one_match_with_match_unencoded_bytes() { + let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); + let mut buffer = vec![0b1000_1000, 0b0000_0000, 0b00010101, 0b1000_0000]; + buffer.extend_from_slice(expected); + buffer.extend_from_slice(&[0x00]); // no bits unused + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_multiple_literals_with_match_in_center_with_not_compressed() { + let buffer = [ + 0xE1, // DEBLOCK_MULTIPART + 0x03, 0x00, // 3 segments + 0x2B, 0x00, 0x00, 0x00, // 0x0000002B total bytes uncompressed + 0x11, 0x00, 0x00, 0x00, // first segment is the next 17 bytes: + 0x04, // type 4, not PACKET_COMPRESSED + 0x54, 0x68, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6B, 0x20, 0x62, 0x72, 0x6F, 0x77, 0x6E, + 0x20, // "The quick brown " + 0x0E, 0x00, 0x00, 0x00, // second segment is the next 14 bytes: + 0x04, // type 4, not PACKET_COMPRESSED + 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, 0x65, // "fox jumps ove" + 0x10, 0x00, 0x00, 0x00, // third segment is the next 16 bytes + 0x24, // type 4 + PACKET_COMPRESSED + 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, 0x9C, // encoded: + // 0 01110010 = literal 0x72 = "r" + // 0 00100000 = literal 0x20 = " " + // 0 01110100 = literal 0x74 = "t" + // + // 10001 11111 0 = match, distance = 31, length = 3 "he " + // + // 0 01101100 = literal 0x6C = "l" + // 0 01100001 = literal 0x61 = "a" + // 0 01111010 = literal 0x7A = "z" + // 0 01111001 = literal 0x79 = "y" + // 0 00100000 = literal 0x20 = " " + // 0 01100100 = literal 0x64 = "d" + // 0 01101111 = literal 0x6F = "o" + // 0 01100111 = literal 0x67 = "g" + 0x02, // ignore last two bits of 0x9C byte + ]; + let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(expected.len(), bytes_written); + assert_eq!(decompressed, expected, "\n{:x?} != \n{:x?}", decompressed, expected); + } + + #[test] + fn zgfx_decopresses_single_match_unencoded_block() { + let buffer = [ + 0xe0, 0x04, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, + ]; + let expected = vec![ + 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, + ]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(expected.len(), bytes_written); + assert_eq!(decompressed, expected); + } + + #[test] + fn zgfx_decopresses_unencoded_block_without_padding() { + let buffer = [0b1110_0101, 0b0001_0000, 0b0000_0000, 0b00000001, 0b1111_0000, 0x0]; + let expected = vec![0x08, 0xf0]; + + let mut zgfx = Decompressor::new(); + let mut decompressed = Vec::with_capacity(expected.len()); + zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); + assert_eq!(decompressed, expected); } } - -#[test] -fn zgfx_decopresses_only_one_literal() { - let buffer = [0b1100_1000, 0x03]; - let expected = vec![0x01]; - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_one_literal_with_null_prefix() { - let buffer = [0b0011_0010, 0b1000_0000, 0x07]; - let expected = vec![0x65]; - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_only_multiple_literals() { - let buffer = [0b1100_1110, 0b1001_1011, 0b0001_1001, 0b0100_0000, 0x06]; - let expected = vec![0x01, 0x02, 0xff, 0x65]; - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_one_literal_with_one_match_distance_1() { - let buffer = [0b0011_0010, 0b1100_0100, 0b0011_0000, 0x1]; - let expected = vec![0x65; 1 + 4]; // literal (1) + match repeated 4 (length) + 0 times - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_three_literals_with_one_match_distance_3_length_57() { - let buffer = [ - 0b0010_0000, - 0b1001_0000, - 0b1000_1000, - 0b0111_0001, - 0b0001_1111, - 0b1011_0010, - 0x1, - ]; - let expected = "ABC".repeat(20); - let expected = expected.as_bytes(); - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_one_match_with_match_unencoded_bytes() { - let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); - let mut buffer = vec![0b1000_1000, 0b0000_0000, 0b00010101, 0b1000_0000]; - buffer.extend_from_slice(expected); - buffer.extend_from_slice(&[0x00]); // no bits unused - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_multiple_literals_with_match_in_center_with_not_compressed() { - let buffer = [ - 0xE1, // DEBLOCK_MULTIPART - 0x03, 0x00, // 3 segments - 0x2B, 0x00, 0x00, 0x00, // 0x0000002B total bytes uncompressed - 0x11, 0x00, 0x00, 0x00, // first segment is the next 17 bytes: - 0x04, // type 4, not PACKET_COMPRESSED - 0x54, 0x68, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6B, 0x20, 0x62, 0x72, 0x6F, 0x77, 0x6E, - 0x20, // "The quick brown " - 0x0E, 0x00, 0x00, 0x00, // second segment is the next 14 bytes: - 0x04, // type 4, not PACKET_COMPRESSED - 0x66, 0x6F, 0x78, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x6F, 0x76, 0x65, // "fox jumps ove" - 0x10, 0x00, 0x00, 0x00, // third segment is the next 16 bytes - 0x24, // type 4 + PACKET_COMPRESSED - 0x39, 0x08, 0x0E, 0x91, 0xF8, 0xD8, 0x61, 0x3D, 0x1E, 0x44, 0x06, 0x43, 0x79, 0x9C, // encoded: - // 0 01110010 = literal 0x72 = "r" - // 0 00100000 = literal 0x20 = " " - // 0 01110100 = literal 0x74 = "t" - // - // 10001 11111 0 = match, distance = 31, length = 3 "he " - // - // 0 01101100 = literal 0x6C = "l" - // 0 01100001 = literal 0x61 = "a" - // 0 01111010 = literal 0x7A = "z" - // 0 01111001 = literal 0x79 = "y" - // 0 00100000 = literal 0x20 = " " - // 0 01100100 = literal 0x64 = "d" - // 0 01101111 = literal 0x6F = "o" - // 0 01100111 = literal 0x67 = "g" - 0x02, // ignore last two bits of 0x9C byte - ]; - let expected = "The quick brown fox jumps over the lazy dog".as_bytes(); - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(expected.len(), bytes_written); - assert_eq!(decompressed, expected, "\n{:x?} != \n{:x?}", decompressed, expected); -} - -#[test] -fn zgfx_decopresses_single_match_unencoded_block() { - let buffer = [ - 0xe0, 0x04, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, - ]; - let expected = vec![ - 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, - ]; - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(expected.len(), bytes_written); - assert_eq!(decompressed, expected); -} - -#[test] -fn zgfx_decopresses_unencoded_block_without_padding() { - let buffer = [0b1110_0101, 0b0001_0000, 0b0000_0000, 0b00000001, 0b1111_0000, 0x0]; - let expected = vec![0x08, 0xf0]; - - let mut zgfx = Decompressor::new(); - let mut decompressed = Vec::with_capacity(expected.len()); - zgfx.decompress_segment(buffer.as_ref(), &mut decompressed).unwrap(); - assert_eq!(decompressed, expected); -} diff --git a/ironrdp/src/codecs/rfx/color_conversion/tests.rs b/ironrdp-graphics/tests/color_conversion.rs similarity index 99% rename from ironrdp/src/codecs/rfx/color_conversion/tests.rs rename to ironrdp-graphics/tests/color_conversion.rs index 5adcccda..73ed461b 100644 --- a/ironrdp/src/codecs/rfx/color_conversion/tests.rs +++ b/ironrdp-graphics/tests/color_conversion.rs @@ -1,6 +1,4 @@ -use std::i16; - -use super::*; +use ironrdp_graphics::color_conversion::*; #[test] fn rgb_from_ycbcr_works_for_zeros() { diff --git a/ironrdp/src/codecs/rfx/dwt/tests.rs b/ironrdp-graphics/tests/dwt.rs similarity index 99% rename from ironrdp/src/codecs/rfx/dwt/tests.rs rename to ironrdp-graphics/tests/dwt.rs index a07f5755..2ebbac82 100644 --- a/ironrdp/src/codecs/rfx/dwt/tests.rs +++ b/ironrdp-graphics/tests/dwt.rs @@ -1,4 +1,4 @@ -use super::*; +use ironrdp_graphics::dwt::*; #[test] fn decode_works_for_min_values() { diff --git a/ironrdp/src/codecs/rfx/image_processing/tests.rs b/ironrdp-graphics/tests/image_processing.rs similarity index 99% rename from ironrdp/src/codecs/rfx/image_processing/tests.rs rename to ironrdp-graphics/tests/image_processing.rs index 81452340..edfbb9a6 100644 --- a/ironrdp/src/codecs/rfx/image_processing/tests.rs +++ b/ironrdp-graphics/tests/image_processing.rs @@ -1,6 +1,8 @@ -use proptest::prelude::*; +use std::io; -use super::*; +use ironrdp_core::geometry::Rectangle; +use ironrdp_graphics::image_processing::*; +use proptest::prelude::*; fn bgra_to_rgba(input: &[u8], mut output: &mut [u8]) -> io::Result<()> { use std::io::Write as _; diff --git a/ironrdp/src/codecs/rfx/rlgr/tests.rs b/ironrdp-graphics/tests/rlgr.rs similarity index 99% rename from ironrdp/src/codecs/rfx/rlgr/tests.rs rename to ironrdp-graphics/tests/rlgr.rs index a08ab093..1a71019e 100644 --- a/ironrdp/src/codecs/rfx/rlgr/tests.rs +++ b/ironrdp-graphics/tests/rlgr.rs @@ -1,4 +1,5 @@ -use super::*; +use ironrdp_core::codecs::rfx::EntropyAlgorithm; +use ironrdp_graphics::rlgr::*; #[test] fn decode_works_with_rlgr3() { diff --git a/ironrdp-gui-client/src/config.rs b/ironrdp-gui-client/src/config.rs index e9a9deb9..393066ff 100644 --- a/ironrdp-gui-client/src/config.rs +++ b/ironrdp-gui-client/src/config.rs @@ -1,6 +1,9 @@ -use std::{net::SocketAddr, num::ParseIntError, path::PathBuf}; +use std::net::SocketAddr; +use std::num::ParseIntError; +use std::path::PathBuf; -use clap::{clap_derive::ValueEnum, crate_name, Parser}; +use clap::clap_derive::ValueEnum; +use clap::{crate_name, Parser}; use ironrdp_session::{GraphicsConfig, InputConfig}; use sspi::AuthIdentity; diff --git a/ironrdp-gui-client/src/gui.rs b/ironrdp-gui-client/src/gui.rs index 8cf89def..fb4e27c9 100644 --- a/ironrdp-gui-client/src/gui.rs +++ b/ironrdp-gui-client/src/gui.rs @@ -1,23 +1,18 @@ use std::fmt::Debug; - use std::path::PathBuf; use std::sync::mpsc::{Receiver, SyncSender}; - use std::sync::{self, Arc}; use glutin::dpi::PhysicalPosition; - use glutin::event::{Event, WindowEvent}; use glutin::event_loop::ControlFlow; - use ironrdp::dvc::gfx::ServerPdu; use ironrdp_renderer::renderer::Renderer; use ironrdp_session::{ErasedWriter, GfxHandler}; use tokio::sync::Mutex; -use crate::RdpError; - use self::input::{handle_input_events, translate_input_event}; +use crate::RdpError; mod input; diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs index 3a5bea65..ffeba09a 100644 --- a/ironrdp-gui-client/src/gui/input.rs +++ b/ironrdp-gui-client/src/gui/input.rs @@ -1,99 +1,97 @@ -use std::sync::mpsc::Receiver; -use std::sync::Arc; - -use futures_util::AsyncWriteExt; -use glutin::dpi::PhysicalPosition; -use glutin::event::ElementState; -use glutin::event::{Event, WindowEvent}; - -use ironrdp::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; -use ironrdp::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; -use ironrdp::input::MousePdu; -use ironrdp::PduParsing; -use ironrdp_session::ErasedWriter; -use tokio::sync::Mutex; - -use super::UserEvent; - -pub async fn handle_input_events(receiver: Receiver, event_stream: Arc>) { - loop { - let mut fastpath_events = Vec::new(); - let event = receiver.recv().unwrap(); - fastpath_events.push(event); - while let Ok(event) = receiver.try_recv() { - fastpath_events.push(event); - } - let mut data: Vec = Vec::new(); - let input_pdu = FastPathInput(fastpath_events); - input_pdu.to_buffer(&mut data).unwrap(); - let mut event_stream = event_stream.lock().await; - let _result = event_stream.write_all(data.as_slice()).await; - let _result = event_stream.flush().await; - } -} - -pub fn translate_input_event( - event: Event, - last_position: &mut Option>, -) -> Option { - match event { - Event::WindowEvent { ref event, .. } => match event { - WindowEvent::KeyboardInput { - device_id: _, - input, - is_synthetic: _, - } => { - let scan_code = input.scancode & 0xff; - - let flags = match input.state { - ElementState::Pressed => KeyboardFlags::empty(), - ElementState::Released => KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, - }; - Some(FastPathInputEvent::KeyboardEvent(flags, scan_code as u8)) - } - WindowEvent::MouseInput { state, button, .. } => { - if let Some(position) = last_position.as_ref() { - let button = match button { - glutin::event::MouseButton::Left => ButtonEvents::LEFT_BUTTON, - glutin::event::MouseButton::Right => ButtonEvents::RIGHT_BUTTON, - glutin::event::MouseButton::Middle => ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, - glutin::event::MouseButton::Other(_) => ButtonEvents::empty(), - }; - let button_events = button - | match state { - ElementState::Pressed => ButtonEvents::DOWN, - ElementState::Released => ButtonEvents::empty(), - }; - let pdu = MousePdu { - x_position: position.x as u16, - y_position: position.y as u16, - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events, - number_of_wheel_rotations: 0, - }; - - Some(FastPathInputEvent::MouseEvent(pdu)) - } else { - None - } - } - WindowEvent::CursorMoved { position, .. } => { - *last_position = Some(*position); - - let pdu = MousePdu { - x_position: position.x as u16, - y_position: position.y as u16, - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, - }; - - Some(FastPathInputEvent::MouseEvent(pdu)) - } - _ => None, - }, - _ => None, - } -} +use std::sync::mpsc::Receiver; +use std::sync::Arc; + +use futures_util::AsyncWriteExt; +use glutin::dpi::PhysicalPosition; +use glutin::event::{ElementState, Event, WindowEvent}; +use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; +use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use ironrdp::core::input::MousePdu; +use ironrdp::PduParsing; +use ironrdp_session::ErasedWriter; +use tokio::sync::Mutex; + +use super::UserEvent; + +pub async fn handle_input_events(receiver: Receiver, event_stream: Arc>) { + loop { + let mut fastpath_events = Vec::new(); + let event = receiver.recv().unwrap(); + fastpath_events.push(event); + while let Ok(event) = receiver.try_recv() { + fastpath_events.push(event); + } + let mut data: Vec = Vec::new(); + let input_pdu = FastPathInput(fastpath_events); + input_pdu.to_buffer(&mut data).unwrap(); + let mut event_stream = event_stream.lock().await; + let _result = event_stream.write_all(data.as_slice()).await; + let _result = event_stream.flush().await; + } +} + +pub fn translate_input_event( + event: Event, + last_position: &mut Option>, +) -> Option { + match event { + Event::WindowEvent { ref event, .. } => match event { + WindowEvent::KeyboardInput { + device_id: _, + input, + is_synthetic: _, + } => { + let scan_code = input.scancode & 0xff; + + let flags = match input.state { + ElementState::Pressed => KeyboardFlags::empty(), + ElementState::Released => KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + }; + Some(FastPathInputEvent::KeyboardEvent(flags, scan_code as u8)) + } + WindowEvent::MouseInput { state, button, .. } => { + if let Some(position) = last_position.as_ref() { + let button = match button { + glutin::event::MouseButton::Left => ButtonEvents::LEFT_BUTTON, + glutin::event::MouseButton::Right => ButtonEvents::RIGHT_BUTTON, + glutin::event::MouseButton::Middle => ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, + glutin::event::MouseButton::Other(_) => ButtonEvents::empty(), + }; + let button_events = button + | match state { + ElementState::Pressed => ButtonEvents::DOWN, + ElementState::Released => ButtonEvents::empty(), + }; + let pdu = MousePdu { + x_position: position.x as u16, + y_position: position.y as u16, + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events, + number_of_wheel_rotations: 0, + }; + + Some(FastPathInputEvent::MouseEvent(pdu)) + } else { + None + } + } + WindowEvent::CursorMoved { position, .. } => { + *last_position = Some(*position); + + let pdu = MousePdu { + x_position: position.x as u16, + y_position: position.y as u16, + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + }; + + Some(FastPathInputEvent::MouseEvent(pdu)) + } + _ => None, + }, + _ => None, + } +} diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-gui-client/src/main.rs index ecba717d..dc4eb6ee 100644 --- a/ironrdp-gui-client/src/main.rs +++ b/ironrdp-gui-client/src/main.rs @@ -3,25 +3,26 @@ extern crate log; mod config; -use std::io; +use std::sync::mpsc::sync_channel; use std::sync::Arc; +use std::{io, process}; -use crate::config::Config; use futures_util::io::AsyncWriteExt as _; use gui::MessagePassingGfxHandler; -use ironrdp::codecs::rfx::image_processing::PixelFormat; use ironrdp::dvc::gfx::ServerPdu; +use ironrdp::graphics::image_processing::PixelFormat; use ironrdp_session::image::DecodedImage; use ironrdp_session::{ process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, ErasedWriter, RdpError, UpgradedStream, }; -use std::{process, sync::mpsc::sync_channel}; use tokio::io::AsyncWriteExt as _; use tokio::net::TcpStream; use tokio::sync::Mutex; use tokio_util::compat::TokioAsyncReadCompatExt as _; use x509_parser::prelude::{FromDer as _, X509Certificate}; +use crate::config::Config; + #[cfg(feature = "rustls")] type TlsStream = tokio_util::compat::Compat>; diff --git a/ironrdp-input/Cargo.toml b/ironrdp-input/Cargo.toml new file mode 100644 index 00000000..e7b54a36 --- /dev/null +++ b/ironrdp-input/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "ironrdp-input" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[dependencies] diff --git a/ironrdp-input/README.md b/ironrdp-input/README.md new file mode 100644 index 00000000..3d9efa68 --- /dev/null +++ b/ironrdp-input/README.md @@ -0,0 +1,3 @@ +# IronRDP Input + +Helpers to build RDP FastPathInput packets. diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ironrdp-input/src/lib.rs @@ -0,0 +1 @@ + diff --git a/ironrdp-renderer/Cargo.toml b/ironrdp-renderer/Cargo.toml index 23aecb3e..fee87970 100644 --- a/ironrdp-renderer/Cargo.toml +++ b/ironrdp-renderer/Cargo.toml @@ -1,7 +1,12 @@ [package] name = "ironrdp-renderer" version = "0.1.0" -edition = "2018" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] [lib] path = "src/lib.rs" @@ -10,7 +15,7 @@ path = "src/lib.rs" glow = "0.11" log = "0.4" futures = "0.3.17" -failure = "0.1" +thiserror = "1.0.38" byteorder = "1.3" ironrdp = { path = "../ironrdp" } glutin = { version = "0.29" } diff --git a/ironrdp-renderer/src/draw.rs b/ironrdp-renderer/src/draw.rs index 721c13d3..1c5cae99 100644 --- a/ironrdp-renderer/src/draw.rs +++ b/ironrdp-renderer/src/draw.rs @@ -1,7 +1,10 @@ -use glow::*; -use ironrdp::Rectangle; +use std::iter::FromIterator; +use std::mem::size_of; +use std::slice::from_raw_parts; +use std::sync::Arc; -use std::{iter::FromIterator, mem::size_of, slice::from_raw_parts, sync::Arc}; +use glow::*; +use ironrdp::geometry::Rectangle; fn cast_as_bytes(input: &[T]) -> &[u8] { unsafe { from_raw_parts(input.as_ptr() as *const u8, input.len() * size_of::()) } diff --git a/ironrdp-renderer/src/renderer.rs b/ironrdp-renderer/src/renderer.rs index 6c6d6794..dc70c557 100644 --- a/ironrdp-renderer/src/renderer.rs +++ b/ironrdp-renderer/src/renderer.rs @@ -1,33 +1,20 @@ use std::fmt::Debug; use std::fs::File; - use std::path::PathBuf; -use std::sync::mpsc::Receiver; -use std::sync::mpsc::RecvError; -use std::sync::mpsc::SendError; -use std::sync::mpsc::Sender; - -use std::sync::PoisonError; -use std::sync::{mpsc, Arc}; +use std::sync::mpsc::{Receiver, RecvError, SendError, Sender}; +use std::sync::{mpsc, Arc, PoisonError}; use std::thread; use std::thread::JoinHandle; -use failure::Fail; use glutin::dpi::PhysicalSize; -use ironrdp::PduParsing; - use ironrdp::dvc::gfx; -use ironrdp::dvc::gfx::Codec1Type; -use ironrdp::dvc::gfx::ServerPdu; - -use ironrdp::impl_from_error; -use ironrdp::Rectangle; +use ironrdp::dvc::gfx::{Codec1Type, ServerPdu}; +use ironrdp::geometry::Rectangle; +use ironrdp::PduParsing; use log::info; +use thiserror::Error; -use crate::surface::DataBuffer; - -use crate::surface::SurfaceDecoders; -use crate::surface::Surfaces; +use crate::surface::{DataBuffer, SurfaceDecoders, Surfaces}; #[derive(Debug)] enum RenderEvent { @@ -180,34 +167,26 @@ impl Renderer { } } -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum RendererError { - #[fail(display = "Unable to send message on channel {}", _0)] + #[error("Unable to send message on channel {0}")] SendError(String), - #[fail(display = "Unable to recieve message on channel {}", _0)] + #[error("Unable to recieve message on channel {0}")] RecieveError(String), - #[fail(display = "Failed to decode openh264 stream {}", _0)] - OpenH264Error(openh264::Error), - #[fail(display = "Graphics pipeline protocol error: {}", _0)] - GraphicsPipelineError(gfx::GraphicsPipelineError), - #[fail(display = "Invalid surface id: {}", _0)] + #[error("errored to decode openh264 stream {0}")] + OpenH264Error(#[from] openh264::Error), + #[error("Graphics pipeline protocol error: {0}")] + GraphicsPipelineError(#[from] gfx::GraphicsPipelineError), + #[error("Invalid surface id: {0}")] InvalidSurfaceId(u16), - #[fail(display = "Codec not supported: {:?}", _0)] + #[error("Codec not supported: {0:?}")] UnsupportedCodec(Codec1Type), - #[fail(display = "Failed to decode rdp data")] + #[error("errored to decode rdp data")] DecodeError, - #[fail(display = "Lock poisoned")] + #[error("Lock poisoned")] LockPoisonedError, } -impl_from_error!( - gfx::GraphicsPipelineError, - RendererError, - RendererError::GraphicsPipelineError -); - -impl_from_error!(openh264::Error, RendererError, RendererError::OpenH264Error); - impl From> for RendererError { fn from(e: SendError) -> Self { RendererError::SendError(e.to_string()) diff --git a/ironrdp-renderer/src/surface.rs b/ironrdp-renderer/src/surface.rs index 804c57ed..430b2738 100644 --- a/ironrdp-renderer/src/surface.rs +++ b/ironrdp-renderer/src/surface.rs @@ -1,17 +1,19 @@ -use std::{collections::HashMap, fmt::Debug, sync::Arc}; +use std::collections::HashMap; +use std::fmt::Debug; +use std::sync::Arc; use glow::Context; -use ironrdp::{ - dvc::gfx::{ - Avc420BitmapStream, Avc444BitmapStream, Codec1Type, CreateSurfacePdu, Encoding, GraphicsPipelineError, - PixelFormat, WireToSurface1Pdu, - }, - PduBufferParsing, Rectangle, +use ironrdp::core::dvc::gfx::{ + Avc420BitmapStream, Avc444BitmapStream, Codec1Type, CreateSurfacePdu, Encoding, GraphicsPipelineError, PixelFormat, + WireToSurface1Pdu, }; +use ironrdp::core::PduBufferParsing; +use ironrdp::geometry::Rectangle; use log::error; use openh264::decoder::{DecodedYUV, Decoder}; -use crate::{draw::DrawingContext, renderer::RendererError}; +use crate::draw::DrawingContext; +use crate::renderer::RendererError; type Result = std::result::Result; diff --git a/ironrdp-replay-client/src/main.rs b/ironrdp-replay-client/src/main.rs index 9c8d6bc6..efd37705 100644 --- a/ironrdp-replay-client/src/main.rs +++ b/ironrdp-replay-client/src/main.rs @@ -1,19 +1,19 @@ -use std::{fs::File, io::ErrorKind, path::PathBuf, process::exit, sync::mpsc::sync_channel, thread, time::Duration}; +use std::fs::File; +use std::io::ErrorKind; +use std::path::PathBuf; +use std::process::exit; +use std::sync::mpsc::sync_channel; +use std::thread; +use std::time::Duration; use clap::Parser; - -use glutin::{ - dpi::PhysicalSize, - event::{Event, WindowEvent}, - event_loop::ControlFlow, -}; -use ironrdp::{ - dvc::gfx::{GraphicsPipelineError, ServerPdu}, - PduParsing, -}; -use log::LevelFilter; - +use glutin::dpi::PhysicalSize; +use glutin::event::{Event, WindowEvent}; +use glutin::event_loop::ControlFlow; +use ironrdp::dvc::gfx::{GraphicsPipelineError, ServerPdu}; +use ironrdp::PduParsing; use ironrdp_renderer::renderer::Renderer; +use log::LevelFilter; use simplelog::{Config, SimpleLogger}; pub type Error = Box; diff --git a/ironrdp-session-async/Cargo.toml b/ironrdp-session-async/Cargo.toml new file mode 100644 index 00000000..249adbf0 --- /dev/null +++ b/ironrdp-session-async/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "ironrdp-session-async" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/ironrdp-session-async/README.md b/ironrdp-session-async/README.md new file mode 100644 index 00000000..043eaa5d --- /dev/null +++ b/ironrdp-session-async/README.md @@ -0,0 +1,3 @@ +# IronRDP Session Async + +`Future`s built on top of `ironrdp-session` crate. diff --git a/ironrdp-session-async/src/lib.rs b/ironrdp-session-async/src/lib.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ironrdp-session-async/src/lib.rs @@ -0,0 +1 @@ + diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index 5ade0813..73b4b3e6 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -2,14 +2,16 @@ name = "ironrdp-session" version = "0.1.0" edition = "2021" +readme = "README.md" license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] [dependencies] -ironrdp = { path = "../ironrdp" } -sspi = { version = "0.4.0", features = ["network_client"] } +ironrdp-core = { path = "../ironrdp-core" } +ironrdp-graphics = { path = "../ironrdp-graphics" } +sspi = { version = "0.4", features = ["network_client"] } bytes = "1" chrono = "0.4" failure = "0.1.8" @@ -24,4 +26,5 @@ bitflags = "1" bit_field = "0.10.1" byteorder = "1.4.3" futures-util = "0.3" -ring = "0.16.20" # for ring::rand::SystemRandom, we might consider using another crate at some point for portability +thiserror = "1.0.37" +ring = "0.16.20" # for ring::rand::SystemRandom, TODO: we might consider using `rand` instead diff --git a/ironrdp-session/README.md b/ironrdp-session/README.md new file mode 100644 index 00000000..1388b85f --- /dev/null +++ b/ironrdp-session/README.md @@ -0,0 +1,3 @@ +# IronRDP Session + +Abstract state machine on top of `ironrdp-graphics` crate. diff --git a/ironrdp-session/src/active_session.rs b/ironrdp-session/src/active_session.rs index 1f2226a3..a5492aa0 100644 --- a/ironrdp-session/src/active_session.rs +++ b/ironrdp-session/src/active_session.rs @@ -3,17 +3,16 @@ mod fast_path; mod x224; use bytes::{BufMut as _, BytesMut}; -use ironrdp::fast_path::FastPathError; -use ironrdp::{RdpPdu, Rectangle}; -use log::warn; +use ironrdp_core::fast_path::FastPathError; +use ironrdp_core::geometry::Rectangle; +use ironrdp_core::RdpPdu; +pub use self::x224::GfxHandler; use crate::connection_sequence::ConnectionSequenceResult; use crate::image::DecodedImage; use crate::transport::{Decoder, RdpTransport}; use crate::{utils, InputConfig, RdpError}; -pub use self::x224::GfxHandler; - pub struct ActiveStageProcessor { x224_processor: x224::Processor, fast_path_processor: fast_path::Processor, @@ -44,6 +43,8 @@ impl ActiveStageProcessor { } } + // TODO: the async part should be extracted to `ironrdp-session-async` + pub async fn process( &mut self, image: &mut DecodedImage, diff --git a/ironrdp-session/src/active_session/codecs/rfx.rs b/ironrdp-session/src/active_session/codecs/rfx.rs index b2048fcb..374c84b0 100644 --- a/ironrdp-session/src/active_session/codecs/rfx.rs +++ b/ironrdp-session/src/active_session/codecs/rfx.rs @@ -3,14 +3,13 @@ mod tests; use std::cmp::min; -use ironrdp::codecs::rfx::color_conversion::YCbCrBuffer; -use ironrdp::codecs::rfx::image_processing::PixelFormat; -use ironrdp::codecs::rfx::rectangles_processing::Region; -use ironrdp::codecs::rfx::{ - self, color_conversion, dwt, quantization, rlgr, subband_reconstruction, EntropyAlgorithm, Headers, Quant, - RfxRectangle, Tile, -}; -use ironrdp::{PduBufferParsing, Rectangle}; +use ironrdp_core::codecs::rfx::{self, EntropyAlgorithm, Headers, Quant, RfxRectangle, Tile}; +use ironrdp_core::geometry::Rectangle; +use ironrdp_core::PduBufferParsing; +use ironrdp_graphics::color_conversion::{self, YCbCrBuffer}; +use ironrdp_graphics::image_processing::PixelFormat; +use ironrdp_graphics::rectangle_processing::Region; +use ironrdp_graphics::{dwt, quantization, rlgr, subband_reconstruction}; use lazy_static::lazy_static; use log::debug; diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index 7836de92..a2942f40 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -1,9 +1,12 @@ use std::io; -use ironrdp::codecs::rfx::FrameAcknowledgePdu; -use ironrdp::fast_path::{FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode}; -use ironrdp::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; -use ironrdp::{PduBufferParsing, Rectangle, ShareDataPdu}; +use ironrdp_core::codecs::rfx::FrameAcknowledgePdu; +use ironrdp_core::fast_path::{ + FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, +}; +use ironrdp_core::geometry::Rectangle; +use ironrdp_core::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; +use ironrdp_core::{PduBufferParsing, ShareDataPdu}; use log::{debug, info, warn}; use num_traits::FromPrimitive; diff --git a/ironrdp-session/src/active_session/x224.rs b/ironrdp-session/src/active_session/x224.rs index 83632658..12208058 100644 --- a/ironrdp-session/src/active_session/x224.rs +++ b/ironrdp-session/src/active_session/x224.rs @@ -4,20 +4,18 @@ mod gfx; use std::collections::HashMap; use std::{cmp, io}; -use ironrdp::dvc::FieldType; -use ironrdp::rdp::vc::{self, dvc}; -use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; -use ironrdp::{Data, ShareDataPdu}; -use log::{debug, error}; +use ironrdp_core::dvc::FieldType; +use ironrdp_core::rdp::vc::{self, dvc}; +use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; +use ironrdp_core::{Data, ShareDataPdu}; +pub use self::gfx::GfxHandler; use crate::transport::{ Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, StaticVirtualChannelTransport, }; use crate::{GraphicsConfig, RdpError}; -pub use self::gfx::GfxHandler; - pub const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; pub const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; diff --git a/ironrdp-session/src/active_session/x224/display.rs b/ironrdp-session/src/active_session/x224/display.rs index 5c12e4f3..1218cbb1 100644 --- a/ironrdp-session/src/active_session/x224/display.rs +++ b/ironrdp-session/src/active_session/x224/display.rs @@ -1,5 +1,5 @@ -use ironrdp::{dvc::display::ServerPdu, PduParsing}; -use log::debug; +use ironrdp_core::dvc::display::ServerPdu; +use ironrdp_core::PduParsing; use super::DynamicChannelDataHandler; use crate::RdpError; diff --git a/ironrdp-session/src/active_session/x224/gfx.rs b/ironrdp-session/src/active_session/x224/gfx.rs index b7d171a2..29be978a 100644 --- a/ironrdp-session/src/active_session/x224/gfx.rs +++ b/ironrdp-session/src/active_session/x224/gfx.rs @@ -1,12 +1,11 @@ use bitflags::bitflags; -use ironrdp::{ - dvc::gfx::{ - zgfx, CapabilitiesAdvertisePdu, CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV107Flags, - CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, - QueueDepth, ServerPdu, - }, - PduParsing, +use ironrdp_core::dvc::gfx::{ + CapabilitiesAdvertisePdu, CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV107Flags, + CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, + QueueDepth, ServerPdu, }; +use ironrdp_core::PduParsing; +use ironrdp_graphics::zgfx; use log::debug; use super::DynamicChannelDataHandler; diff --git a/ironrdp-session/src/codecs.rs b/ironrdp-session/src/codecs.rs index ceabf188..74167337 100644 --- a/ironrdp-session/src/codecs.rs +++ b/ironrdp-session/src/codecs.rs @@ -5,7 +5,7 @@ use bit_field::BitField; use byteorder::{BigEndian, ReadBytesExt}; use bytes::{BufMut, BytesMut}; use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; -use ironrdp::Action; +use ironrdp_core::Action; use num_traits::FromPrimitive; use crate::transport::{Decoder as TransportDecoder, Encoder as TransportEncoder}; @@ -44,7 +44,7 @@ where (self.reader, self.buf) } - pub async fn read_frame(&mut self) -> Result, ironrdp::RdpError> + pub async fn read_frame(&mut self) -> Result, ironrdp_core::RdpError> where R: Unpin, { @@ -98,7 +98,7 @@ where } /// Function to call when there are no more bytes available to be read from the underlying I/O. -fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp::RdpError> { +fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp_core::RdpError> { match decode_frame(buf)? { Some(frame) => Ok(Some(frame)), None => { @@ -112,14 +112,14 @@ fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp::Rdp } /// Attempts to decode a frame from the provided buffer of bytes. -fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp::RdpError> { +fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp_core::RdpError> { let mut stream = buf.as_ref(); if stream.is_empty() { return Ok(None); } let header = stream.read_u8()?; let action = header.get_bits(0..2); - let action = Action::from_u8(action).ok_or(ironrdp::RdpError::InvalidActionCode(action))?; + let action = Action::from_u8(action).ok_or(ironrdp_core::RdpError::InvalidActionCode(action))?; let length = match action { Action::X224 if stream.len() >= 3 => { diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 58bd6041..a62a90dc 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -2,34 +2,26 @@ mod user_info; use std::collections::HashMap; use std::future::Future; -use std::io; -use std::iter; use std::net::SocketAddr; +use std::{io, iter}; use dns_lookup::lookup_addr; -use futures_util::AsyncRead; -use futures_util::AsyncReadExt as _; -use futures_util::AsyncWrite; -use ironrdp::rdp::capability_sets::CapabilitySet; -use ironrdp::rdp::server_license::{ +use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite}; +use ironrdp_core::rdp::capability_sets::CapabilitySet; +use ironrdp_core::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; -use ironrdp::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; -use ironrdp::{nego, rdp, PduParsing}; +use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; +use ironrdp_core::{nego, rdp, PduParsing}; use ring::rand::SecureRandom as _; use sspi::internal::credssp; use sspi::NegotiateConfig; -use crate::codecs::encode_next_frame; -use crate::codecs::ErasedWriter; -use crate::codecs::FramedReader; -use crate::transport::ChannelIdentificators; -use crate::transport::SendPduDataContextTransport; -use crate::transport::ShareControlHeaderTransport; -use crate::transport::TsRequestTransport; +use crate::codecs::{encode_next_frame, ErasedWriter, FramedReader}; use crate::transport::{ - connect, DataTransport, EarlyUserAuthResult, McsTransport, SendDataContextTransport, ShareDataHeaderTransport, + connect, ChannelIdentificators, DataTransport, EarlyUserAuthResult, McsTransport, SendDataContextTransport, + SendPduDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, TsRequestTransport, X224DataTransport, }; use crate::{InputConfig, RdpError}; @@ -53,6 +45,8 @@ pub struct UpgradedStream { pub server_public_key: Vec, } +// TODO: the async part should be extracted to `ironrdp-session-async` + pub async fn process_connection_sequence( stream: S, routing_addr: &SocketAddr, @@ -197,16 +191,17 @@ pub async fn process_mcs_connect( selected_protocol: nego::SecurityProtocol, ) -> Result { let connect_initial = - ironrdp::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); + ironrdp_core::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); let mut codec = X224DataTransport::default(); encode_next_frame(writer, &mut codec, connect_initial.clone()).await?; - let connect_response: ironrdp::ConnectResponse = reader.decode_next_frame(&mut codec).await?; + let connect_response: ironrdp_core::ConnectResponse = reader.decode_next_frame(&mut codec).await?; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; - if connect_initial.conference_create_request.gcc_blocks.security == ironrdp::gcc::ClientSecurityData::no_security() - && gcc_blocks.security != ironrdp::gcc::ServerSecurityData::no_security() + if connect_initial.conference_create_request.gcc_blocks.security + == ironrdp_core::gcc::ClientSecurityData::no_security() + && gcc_blocks.security != ironrdp_core::gcc::ServerSecurityData::no_security() { return Err(RdpError::InvalidResponse(String::from( "The server demands a security, while the client requested 'no security'", @@ -240,7 +235,7 @@ pub async fn process_mcs( mut static_channels: StaticChannels, config: &InputConfig, ) -> Result { - let erect_domain_request = ironrdp::mcs::ErectDomainPdu { + let erect_domain_request = ironrdp_core::mcs::ErectDomainPdu { sub_height: 0, sub_interval: 0, }; @@ -251,15 +246,15 @@ pub async fn process_mcs( encode_next_frame( writer, &mut codec, - ironrdp::McsPdu::ErectDomainRequest(erect_domain_request), + ironrdp_core::McsPdu::ErectDomainRequest(erect_domain_request), ) .await?; debug!("Send MCS Attach User Request PDU"); - encode_next_frame(writer, &mut codec, ironrdp::McsPdu::AttachUserRequest).await?; + encode_next_frame(writer, &mut codec, ironrdp_core::McsPdu::AttachUserRequest).await?; let mcs_pdu = stream.decode_next_frame(&mut codec).await?; - let initiator_id = if let ironrdp::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { + let initiator_id = if let ironrdp_core::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); static_channels.insert(config.user_channel_name.clone(), attach_user_confirm.initiator_id); @@ -273,7 +268,7 @@ pub async fn process_mcs( }; for (_, id) in static_channels.iter() { - let channel_join_request = ironrdp::mcs::ChannelJoinRequestPdu { + let channel_join_request = ironrdp_core::mcs::ChannelJoinRequestPdu { initiator_id, channel_id: *id, }; @@ -281,12 +276,12 @@ pub async fn process_mcs( encode_next_frame( writer, &mut codec, - ironrdp::McsPdu::ChannelJoinRequest(channel_join_request), + ironrdp_core::McsPdu::ChannelJoinRequest(channel_join_request), ) .await?; let mcs_pdu = stream.decode_next_frame(&mut codec).await?; - if let ironrdp::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { + if let ironrdp_core::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); if channel_join_confirm.initiator_id != initiator_id @@ -437,16 +432,16 @@ pub async fn process_capability_sets( config: &InputConfig, ) -> Result { let share_control_pdu = reader.decode_next_frame(&mut codec).await?; - let capability_sets = if let ironrdp::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu - { - debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); - server_demand_active.pdu.capability_sets - } else { - return Err(RdpError::UnexpectedPdu(format!( - "Expected Server Demand Active PDU, got: {:?}", - share_control_pdu.as_short_name() - ))); - }; + let capability_sets = + if let ironrdp_core::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu { + debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); + server_demand_active.pdu.capability_sets + } else { + return Err(RdpError::UnexpectedPdu(format!( + "Expected Server Demand Active PDU, got: {:?}", + share_control_pdu.as_short_name() + ))); + }; let desktop_size = capability_sets .iter() .find(|c| matches!(c, CapabilitySet::Bitmap(_))) @@ -462,10 +457,9 @@ pub async fn process_capability_sets( height: config.height, }); - let client_confirm_active = ironrdp::ShareControlPdu::ClientConfirmActive(user_info::create_client_confirm_active( - config, - capability_sets, - )?); + let client_confirm_active = ironrdp_core::ShareControlPdu::ClientConfirmActive( + user_info::create_client_confirm_active(config, capability_sets)?, + ); debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); encode_next_frame(writer, &mut codec, client_confirm_active).await?; Ok(desktop_size) @@ -477,7 +471,7 @@ pub async fn process_finalization( mut codec: ShareDataHeaderTransport, initiator_id: u16, ) -> Result<(), RdpError> { - use ironrdp::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; + use ironrdp_core::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; #[derive(Copy, Clone, PartialEq, Debug)] enum FinalizationOrder { @@ -522,7 +516,7 @@ pub async fn process_finalization( ( FinalizationOrder::ControlCooperate, ShareDataPdu::Control(ControlPdu { - action: ironrdp::ControlAction::Cooperate, + action: ironrdp_core::ControlAction::Cooperate, grant_id: 0, control_id: 0, }), @@ -530,7 +524,7 @@ pub async fn process_finalization( ( FinalizationOrder::RequestControl, ShareDataPdu::Control(ControlPdu { - action: ironrdp::ControlAction::GrantedControl, + action: ironrdp_core::ControlAction::GrantedControl, grant_id, control_id, }), diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs index f02f6631..9addb9c5 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -1,12 +1,13 @@ -use std::{env, net, str::FromStr}; +use std::str::FromStr; +use std::{env, net}; -use ironrdp::gcc::{ +use ironrdp_core::gcc::{ Channel, ChannelOptions, ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, SupportedColorDepths, }; -use ironrdp::nego::SecurityProtocol; -use ironrdp::rdp::capability_sets::{ +use ironrdp_core::nego::SecurityProtocol; +use ironrdp_core::rdp::capability_sets::{ Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, CacheEntry, CaptureFlags, CmdFlags, Codec, CodecProperty, EntropyBits, FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, Input, InputFlags, LargePointer, LargePointerSupportFlags, MajorPlatformType, MinorPlatformType, @@ -14,11 +15,11 @@ use ironrdp::rdp::capability_sets::{ RfxCaps, RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, Sound, SoundFlags, SupportLevel, SurfaceCommands, VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, GLYPH_CACHE_NUM, }; -use ironrdp::rdp::{ +use ironrdp_core::rdp::{ AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, ClientInfoPdu, CompressionType, Credentials, ExtendedClientInfo, ExtendedClientOptionalInfo, SERVER_CHANNEL_ID, }; -use ironrdp::{CapabilitySet, ClientConfirmActive}; +use ironrdp_core::{CapabilitySet, ClientConfirmActive}; use num_traits::ToPrimitive; use crate::utils::CodecId; @@ -112,7 +113,7 @@ pub fn create_client_confirm_active( Ok(ClientConfirmActive { originator_id: SERVER_CHANNEL_ID, - pdu: ironrdp::DemandActive { + pdu: ironrdp_core::DemandActive { source_descriptor: SOURCE_DESCRIPTOR.to_string(), capability_sets: server_capability_sets, }, diff --git a/ironrdp-session/src/errors.rs b/ironrdp-session/src/errors.rs index d0f7730c..eb71c5c5 100644 --- a/ironrdp-session/src/errors.rs +++ b/ironrdp-session/src/errors.rs @@ -1,133 +1,117 @@ -use std::{ - io, - sync::{ - mpsc::{RecvError, SendError}, - PoisonError, - }, -}; +use std::io; +use std::sync::mpsc::{RecvError, SendError}; +use std::sync::PoisonError; -use failure::Fail; -use ironrdp::{ - codecs, - dvc::{display, gfx}, - fast_path::FastPathError, - nego, - rdp::{self, server_license::ServerLicenseError}, - McsError, -}; +use ironrdp_core::dvc::{display, gfx}; +use ironrdp_core::fast_path::FastPathError; +use ironrdp_core::rdp::server_license::ServerLicenseError; +use ironrdp_core::{codecs, nego, rdp, McsError}; +use ironrdp_graphics::{rlgr, zgfx}; +use thiserror::Error; -#[derive(Debug, Fail)] +#[derive(Debug, Error)] pub enum RdpError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "connection error: {}", _0)] - ConnectionError(#[fail(cause)] io::Error), - #[fail(display = "X.224 error: {}", _0)] - X224Error(#[fail(cause)] io::Error), - #[fail(display = "negotiation error: {}", _0)] - NegotiationError(#[fail(cause)] nego::NegotiationError), - #[fail(display = "unexpected PDU: {}", _0)] + #[error("IO error")] + IOError(#[from] io::Error), + #[error("connection error")] + ConnectionError(#[source] io::Error), + #[error("X.224 error")] + X224Error(#[source] io::Error), + #[error("negotiation error")] + NegotiationError(#[from] nego::NegotiationError), + #[error("unexpected PDU: {0}")] UnexpectedPdu(String), - #[fail(display = "Unexpected disconnection: {}", _0)] + #[error("Unexpected disconnection: {0}")] UnexpectedDisconnection(String), - #[fail(display = "invalid response: {}", _0)] + #[error("invalid response: {0}")] InvalidResponse(String), #[cfg(all(feature = "native-tls", not(feature = "rustls")))] - #[fail(display = "TLS connector error: {}", _0)] - TlsConnectorError(native_tls::Error), + #[error("TLS connector error")] + TlsConnectorError(#[source] native_tls::Error), #[cfg(all(feature = "native-tls", not(feature = "rustls")))] - #[fail(display = "TLS handshake error: {}", _0)] - TlsHandshakeError(native_tls::Error), + #[error("TLS handshake error")] + TlsHandshakeError(#[source] native_tls::Error), #[cfg(feature = "rustls")] - #[fail(display = "TLS connector error: {}", _0)] - TlsConnectorError(rustls::Error), + #[error("TLS connector error")] + TlsConnectorError(#[source] rustls::Error), #[cfg(feature = "rustls")] - #[fail(display = "TLS handshake error: {}", _0)] - TlsHandshakeError(rustls::Error), - #[fail(display = "CredSSP error: {}", _0)] - CredSspError(#[fail(cause)] sspi::Error), - #[fail(display = "CredSSP TSRequest error: {}", _0)] - TsRequestError(#[fail(cause)] io::Error), - #[fail(display = "early User Authentication Result error: {}", _0)] - EarlyUserAuthResultError(#[fail(cause)] io::Error), - #[fail(display = "the server denied access via Early User Authentication Result")] + #[error("TLS handshake error")] + TlsHandshakeError(#[source] rustls::Error), + #[error("CredSSP error")] + CredSspError(#[from] sspi::Error), + #[error("CredSSP TSRequest error")] + TsRequestError(#[source] io::Error), + #[error("early User Authentication Result error")] + EarlyUserAuthResultError(#[source] io::Error), + #[error("the server denied access via Early User Authentication Result")] AccessDenied, - #[fail(display = "MCS Connect error: {}", _0)] - McsConnectError(#[fail(cause)] McsError), - #[fail(display = "failed to get info about the user: {}", _0)] + #[error("MCS Connect error")] + McsConnectError(#[from] McsError), + #[error("failed to get info about the user: {0}")] UserInfoError(String), - #[fail(display = "MCS error: {}", _0)] - McsError(McsError), - #[fail(display = "Client Info PDU error: {}", _0)] - ClientInfoError(rdp::RdpError), - #[fail(display = "Server License PDU error: {}", _0)] - ServerLicenseError(rdp::RdpError), - #[fail(display = "Share Control Header error: {}", _0)] - ShareControlHeaderError(rdp::RdpError), - #[fail(display = "capability sets error: {}", _0)] - CapabilitySetsError(rdp::RdpError), - #[fail(display = "Virtual channel error: {}", _0)] - VirtualChannelError(rdp::vc::ChannelError), - #[fail(display = "Invalid channel id error: {}", _0)] + #[error("MCS error")] + McsError(#[source] McsError), + #[error("Client Info PDU error")] + ClientInfoError(#[source] rdp::RdpError), + #[error("Server License PDU error")] + ServerLicenseError(#[source] rdp::RdpError), + #[error("Share Control Header error")] + ShareControlHeaderError(#[source] rdp::RdpError), + #[error("capability sets error")] + CapabilitySetsError(#[source] rdp::RdpError), + #[error("Virtual channel error")] + VirtualChannelError(#[from] rdp::vc::ChannelError), + #[error("Invalid channel id error: {0}")] InvalidChannelIdError(String), - #[fail(display = "Graphics pipeline protocol error: {}", _0)] - GraphicsPipelineError(gfx::GraphicsPipelineError), - #[fail(display = "Display pipeline protocol error: {}", _0)] - DisplayPipelineError(display::DisplayPipelineError), - #[fail(display = "ZGFX error: {}", _0)] - ZgfxError(#[fail(cause)] gfx::zgfx::ZgfxError), - #[fail(display = "Fast-Path error: {}", _0)] - FastPathError(#[fail(cause)] FastPathError), - #[fail(display = "RDP error: {}", _0)] - RdpError(#[fail(cause)] ironrdp::RdpError), - #[fail(display = "access to the non-existing channel: {}", _0)] + #[error("Graphics pipeline protocol error")] + GraphicsPipelineError(#[from] gfx::GraphicsPipelineError), + #[error("Display pipeline protocol error")] + DisplayPipelineError(#[from] display::DisplayPipelineError), + #[error("ZGFX error")] + ZgfxError(#[from] zgfx::ZgfxError), + #[error("Fast-Path error")] + FastPathError(#[from] FastPathError), + #[error("RDP error")] + RdpError(#[from] ironrdp_core::RdpError), + #[error("access to the non-existing channel: {0}")] AccessToNonExistingChannel(u32), - #[fail(display = "access to the non-existing channel name: {}", _0)] + #[error("access to the non-existing channel name: {0}")] AccessToNonExistingChannelName(String), - #[fail(display = "data in unexpected channel: {}", _0)] + #[error("data in unexpected channel: {0}")] UnexpectedChannel(u16), - #[fail(display = "unexpected Surface Command codec ID: {}", _0)] + #[error("unexpected Surface Command codec ID: {0}")] UnexpectedCodecId(u8), - #[fail(display = "RDP error: {}", _0)] - RfxError(#[fail(cause)] codecs::rfx::RfxError), - #[fail(display = "absence of mandatory Fast-Path header")] + #[error("RDP error")] + RfxError(#[from] codecs::rfx::RfxError), + #[error("absence of mandatory Fast-Path header")] MandatoryHeaderIsAbsent, - #[fail(display = "RLGR error: {}", _0)] - RlgrError(#[fail(cause)] codecs::rfx::rlgr::RlgrError), - #[fail(display = "absence of RFX channels")] + #[error("RLGR error")] + RlgrError(#[from] rlgr::RlgrError), + #[error("absence of RFX channels")] NoRfxChannelsAnnounced, - #[fail( - display = "the server that started working using the inconsistent protocol: {:?}", - _0 - )] - UnexpectedFastPathUpdate(ironrdp::fast_path::UpdateCode), - #[fail(display = "server error: {}", _0)] + #[error("the server that started working using the inconsistent protocol: {0:?}")] + UnexpectedFastPathUpdate(ironrdp_core::fast_path::UpdateCode), + #[error("server error: {0}")] ServerError(String), - #[fail(display = "Missing peer certificate")] + #[error("Missing peer certificate")] MissingPeerCertificate, - #[fail(display = "Dynamic virtual channel not connected")] + #[error("Dynamic virtual channel not connected")] DynamicVirtualChannelNotConnected, - #[fail(display = "Static global channel not connected")] + #[error("Static global channel not connected")] StaticChannelNotConnected, - #[fail(display = "Invalid Capabilities mask provided. Mask: {:X}", _0)] + #[error("Invalid Capabilities mask provided. Mask: {0:X}")] InvalidCapabilitiesMask(u32), - #[fail(display = "Stream terminated while waiting for some data")] + #[error("Stream terminated while waiting for some data")] UnexpectedStreamTermination, - #[fail(display = "Unable to send message on channel {}", _0)] + #[error("Unable to send message on channel {0}")] SendError(String), - #[fail(display = "Unable to recieve message on channel {}", _0)] + #[error("Unable to recieve message on channel {0}")] RecieveError(String), - #[fail(display = "Lock poisoned")] + #[error("Lock poisoned")] LockPoisonedError, #[cfg(all(feature = "native-tls", not(feature = "rustls")))] - #[fail(display = "Invalid DER structure: {}", _0)] - DerEncode(#[fail(cause)] native_tls::Error), -} - -impl From for RdpError { - fn from(e: io::Error) -> Self { - RdpError::IOError(e) - } + #[error("Invalid DER structure")] + DerEncode(#[source] native_tls::Error), } #[cfg(feature = "rustls")] @@ -160,66 +144,6 @@ impl From> for RdpError { } } -impl From for RdpError { - fn from(e: nego::NegotiationError) -> Self { - RdpError::NegotiationError(e) - } -} - -impl From for RdpError { - fn from(e: McsError) -> Self { - RdpError::McsError(e) - } -} - -impl From for RdpError { - fn from(e: rdp::vc::ChannelError) -> Self { - RdpError::VirtualChannelError(e) - } -} - -impl From for RdpError { - fn from(e: gfx::GraphicsPipelineError) -> Self { - RdpError::GraphicsPipelineError(e) - } -} - -impl From for RdpError { - fn from(e: display::DisplayPipelineError) -> Self { - RdpError::DisplayPipelineError(e) - } -} - -impl From for RdpError { - fn from(e: gfx::zgfx::ZgfxError) -> Self { - RdpError::ZgfxError(e) - } -} - -impl From for RdpError { - fn from(e: FastPathError) -> Self { - RdpError::FastPathError(e) - } -} - -impl From for RdpError { - fn from(e: ironrdp::RdpError) -> Self { - RdpError::RdpError(e) - } -} - -impl From for RdpError { - fn from(e: codecs::rfx::RfxError) -> Self { - RdpError::RfxError(e) - } -} - -impl From for RdpError { - fn from(e: codecs::rfx::rlgr::RlgrError) -> Self { - RdpError::RlgrError(e) - } -} - impl From for RdpError { fn from(e: ServerLicenseError) -> Self { RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError(e)) diff --git a/ironrdp-session/src/image.rs b/ironrdp-session/src/image.rs index 8f2e8720..5ec259e3 100644 --- a/ironrdp-session/src/image.rs +++ b/ironrdp-session/src/image.rs @@ -1,7 +1,8 @@ +use ironrdp_core::geometry::Rectangle; +use ironrdp_graphics::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; +use ironrdp_graphics::rectangle_processing::Region; + use crate::RdpError; -use ironrdp::codecs::rfx::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; -use ironrdp::codecs::rfx::rectangles_processing::Region; -use ironrdp::Rectangle; const TILE_SIZE: u16 = 64; const SOURCE_PIXEL_FORMAT: PixelFormat = PixelFormat::BgrX32; diff --git a/ironrdp-session/src/lib.rs b/ironrdp-session/src/lib.rs index 2c2d397c..49371fbe 100644 --- a/ironrdp-session/src/lib.rs +++ b/ironrdp-session/src/lib.rs @@ -10,7 +10,7 @@ pub mod image; pub mod transport; pub mod utils; -use ironrdp::{gcc, nego}; +use ironrdp_core::{gcc, nego}; pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor, GfxHandler}; pub use crate::codecs::{ErasedWriter, FramedReader}; diff --git a/ironrdp-session/src/transport.rs b/ironrdp-session/src/transport.rs index a4c91209..c5cc90ab 100644 --- a/ironrdp-session/src/transport.rs +++ b/ironrdp-session/src/transport.rs @@ -5,13 +5,12 @@ use std::io; use std::marker::PhantomData; use bytes::BytesMut; -use ironrdp::rdp::SERVER_CHANNEL_ID; -use ironrdp::{PduParsing, RdpPdu}; - -use crate::RdpError; +use ironrdp_core::rdp::SERVER_CHANNEL_ID; +use ironrdp_core::{PduParsing, RdpPdu}; pub use self::channels::{ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport}; pub use self::connection::{connect, EarlyUserAuthResult, TsRequestTransport}; +use crate::RdpError; pub trait Encoder { type Item; @@ -60,7 +59,7 @@ impl Encoder for DataTransport { type Error = RdpError; fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - ironrdp::Data::new(data.len()).to_buffer(&mut stream)?; + ironrdp_core::Data::new(data.len()).to_buffer(&mut stream)?; stream.write_all(data.as_ref())?; stream.flush()?; @@ -75,7 +74,7 @@ impl Decoder for DataTransport { fn decode(&mut self, mut stream: impl io::Read) -> Result { match self.state { TransportState::ToDecode => { - let data_pdu = ironrdp::Data::from_buffer(&mut stream)?; + let data_pdu = ironrdp_core::Data::from_buffer(&mut stream)?; Ok(data_pdu.data_length) } @@ -102,15 +101,15 @@ impl Encoder for X224DataTransport where E: PduParsing, ::Error: From, - ::Error: From, + ::Error: From, { type Item = E; type Error = ::Error; fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { - ironrdp::Data::new(data.buffer_length()) + ironrdp_core::Data::new(data.buffer_length()) .to_buffer(&mut stream) - .map_err(ironrdp::RdpError::X224Error)?; + .map_err(ironrdp_core::RdpError::X224Error)?; data.to_buffer(&mut stream)?; Ok(()) } @@ -120,13 +119,13 @@ impl Decoder for X224DataTransport where D: PduParsing, ::Error: From, - ::Error: From, + ::Error: From, { type Item = D; type Error = ::Error; fn decode(&mut self, mut stream: impl io::Read) -> Result { - let data = ironrdp::Data::from_buffer(&mut stream).map_err(ironrdp::RdpError::X224Error)?; + let data = ironrdp_core::Data::from_buffer(&mut stream).map_err(ironrdp_core::RdpError::X224Error)?; let length = data.data_length; let item = D::from_buffer(&mut stream)?; let remaining = length - item.buffer_length(); @@ -146,7 +145,10 @@ impl McsTransport { Self(transport) } - pub fn prepare_data_to_encode(mcs_pdu: ironrdp::McsPdu, extra_data: Option>) -> Result { + pub fn prepare_data_to_encode( + mcs_pdu: ironrdp_core::McsPdu, + extra_data: Option>, + ) -> Result { let mut mcs_pdu_buff = BytesMut::with_capacity(mcs_pdu.buffer_length()); mcs_pdu_buff.resize(mcs_pdu.buffer_length(), 0x00); mcs_pdu.to_buffer(mcs_pdu_buff.as_mut()).map_err(RdpError::McsError)?; @@ -169,12 +171,12 @@ impl Encoder for McsTransport { } impl Decoder for McsTransport { - type Item = ironrdp::McsPdu; + type Item = ironrdp_core::McsPdu; type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> Result { self.0.decode(&mut stream)?; - let mcs_pdu = ironrdp::McsPdu::from_buffer(&mut stream).map_err(RdpError::McsError)?; + let mcs_pdu = ironrdp_core::McsPdu::from_buffer(&mut stream).map_err(RdpError::McsError)?; Ok(mcs_pdu) } @@ -227,7 +229,7 @@ impl Encoder for SendDataContextTransport { type Error = RdpError; fn encode(&mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let send_data_context = ironrdp::mcs::SendDataContext { + let send_data_context = ironrdp_core::mcs::SendDataContext { channel_id: self.channel_ids.channel_id, initiator_id: self.channel_ids.initiator_id, pdu_length: send_data_context_pdu.len(), @@ -235,7 +237,7 @@ impl Encoder for SendDataContextTransport { self.mcs_transport.encode( McsTransport::prepare_data_to_encode( - ironrdp::McsPdu::SendDataRequest(send_data_context), + ironrdp_core::McsPdu::SendDataRequest(send_data_context), Some(send_data_context_pdu), )?, &mut stream, @@ -253,11 +255,11 @@ impl Decoder for SendDataContextTransport { let mcs_pdu = self.mcs_transport.decode(&mut stream)?; match mcs_pdu { - ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { + ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, }), - ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { + ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { Err(RdpError::UnexpectedDisconnection(format!( "Server disconnection reason - {:?}", disconnect_reason @@ -293,11 +295,11 @@ impl ShareControlHeaderTransport { } impl Encoder for ShareControlHeaderTransport { - type Item = ironrdp::ShareControlPdu; + type Item = ironrdp_core::ShareControlPdu; type Error = RdpError; fn encode(&mut self, share_control_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let share_control_header = ironrdp::ShareControlHeader { + let share_control_header = ironrdp_core::ShareControlHeader { share_control_pdu, pdu_source: self.pdu_source, share_id: self.share_id, @@ -313,7 +315,7 @@ impl Encoder for ShareControlHeaderTransport { } impl Decoder for ShareControlHeaderTransport { - type Item = ironrdp::ShareControlPdu; + type Item = ironrdp_core::ShareControlPdu; type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> Result { @@ -326,7 +328,7 @@ impl Decoder for ShareControlHeaderTransport { } let share_control_header = - ironrdp::ShareControlHeader::from_buffer(&mut stream).map_err(RdpError::ShareControlHeaderError)?; + ironrdp_core::ShareControlHeader::from_buffer(&mut stream).map_err(RdpError::ShareControlHeaderError)?; self.share_id = share_control_header.share_id; if share_control_header.pdu_source != SERVER_CHANNEL_ID { @@ -349,30 +351,30 @@ impl ShareDataHeaderTransport { } impl Encoder for ShareDataHeaderTransport { - type Item = ironrdp::ShareDataPdu; + type Item = ironrdp_core::ShareDataPdu; type Error = RdpError; fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let share_data_header = ironrdp::ShareDataHeader { + let share_data_header = ironrdp_core::ShareDataHeader { share_data_pdu, - stream_priority: ironrdp::rdp::StreamPriority::Medium, - compression_flags: ironrdp::rdp::CompressionFlags::empty(), - compression_type: ironrdp::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() + stream_priority: ironrdp_core::rdp::StreamPriority::Medium, + compression_flags: ironrdp_core::rdp::CompressionFlags::empty(), + compression_type: ironrdp_core::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() }; self.0 - .encode(ironrdp::ShareControlPdu::Data(share_data_header), &mut stream) + .encode(ironrdp_core::ShareControlPdu::Data(share_data_header), &mut stream) } } impl Decoder for ShareDataHeaderTransport { - type Item = ironrdp::ShareDataPdu; + type Item = ironrdp_core::ShareDataPdu; type Error = RdpError; fn decode(&mut self, mut stream: impl io::Read) -> Result { let share_control_pdu = self.0.decode(&mut stream)?; - if let ironrdp::ShareControlPdu::Data(share_data_header) = share_control_pdu { + if let ironrdp_core::ShareControlPdu::Data(share_data_header) = share_control_pdu { Ok(share_data_header.share_data_pdu) } else { Err(RdpError::UnexpectedPdu(format!( @@ -481,7 +483,7 @@ where let mut pdu_data = Vec::new(); send_data_context_pdu.to_buffer(&mut pdu_data)?; - let send_data_context = ironrdp::mcs::SendDataContext { + let send_data_context = ironrdp_core::mcs::SendDataContext { channel_id: channel_ids.channel_id, initiator_id: channel_ids.initiator_id, pdu_length: pdu_data.len(), @@ -489,7 +491,7 @@ where self.mcs_transport.encode( McsTransport::prepare_data_to_encode( - ironrdp::McsPdu::SendDataRequest(send_data_context), + ironrdp_core::McsPdu::SendDataRequest(send_data_context), Some(pdu_data), )?, &mut stream, @@ -514,13 +516,13 @@ where let mcs_pdu = self.mcs_transport.decode(&mut stream)?; let channel_ids = match mcs_pdu { - ironrdp::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { + ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, }), - ironrdp::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err(RdpError::UnexpectedDisconnection( - format!("Server disconnection reason - {:?}", disconnect_reason), - )), + ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( + RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {:?}", disconnect_reason)), + ), _ => Err(RdpError::UnexpectedPdu(format!( "Expected Send Data Context PDU, got {:?}", mcs_pdu.as_short_name() diff --git a/ironrdp-session/src/transport/channels.rs b/ironrdp-session/src/transport/channels.rs index 6ed0b51b..11727255 100644 --- a/ironrdp-session/src/transport/channels.rs +++ b/ironrdp-session/src/transport/channels.rs @@ -1,7 +1,7 @@ use std::io; -use ironrdp::rdp::vc; -use ironrdp::PduParsing; +use ironrdp_core::rdp::vc; +use ironrdp_core::PduParsing; use super::{Decoder, Encoder, SendDataContextTransport}; use crate::RdpError; diff --git a/ironrdp-session/src/transport/connection.rs b/ironrdp-session/src/transport/connection.rs index eeb21db5..0ac3327a 100644 --- a/ironrdp-session/src/transport/connection.rs +++ b/ironrdp-session/src/transport/connection.rs @@ -1,10 +1,11 @@ use bytes::BytesMut; use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; -use ironrdp::{nego, PduParsing}; +use ironrdp_core::{nego, PduParsing}; use log::debug; use sspi::internal::credssp; -use crate::{codecs::FramedReader, RdpError}; +use crate::codecs::FramedReader; +use crate::RdpError; const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; diff --git a/ironrdp-tls/Cargo.toml b/ironrdp-tls/Cargo.toml new file mode 100644 index 00000000..7b88ea36 --- /dev/null +++ b/ironrdp-tls/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "ironrdp-tls" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[dependencies] diff --git a/ironrdp-tls/README.md b/ironrdp-tls/README.md new file mode 100644 index 00000000..9d8bf77b --- /dev/null +++ b/ironrdp-tls/README.md @@ -0,0 +1,3 @@ +# IronRDP TLS + +TLS boilerplate common with most IronRDP clients. diff --git a/ironrdp-tls/src/lib.rs b/ironrdp-tls/src/lib.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ironrdp-tls/src/lib.rs @@ -0,0 +1 @@ + diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index 79a7a7b4..ae8825ee 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -11,23 +11,7 @@ description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] [dependencies] -bit_field = "0.10.1" -bitflags = "1.3.2" -bitvec = "1.0.0" -byteorder = "1.4.3" -bytes = "1" -der-parser = "8.0.0" -failure = "0.1.8" -hex-literal = "0.3.4" -lazy_static = "1.4.0" -md-5 = "0.10.1" -num-bigint = "0.4.3" -num-derive = "0.3.3" -num-integer = "0.1.44" -num-traits = "0.2.14" -ring = "0.16.20" -x509-parser = "0.14" -tap = "1.0.1" - -[dev-dependencies] -proptest = "1.0.0" +ironrdp-core = { path = "../ironrdp-core" } +ironrdp-session = { path = "../ironrdp-session" } +ironrdp-graphics = { path = "../ironrdp-graphics" } +ironrdp-input = { path = "../ironrdp-input" } diff --git a/ironrdp/README.md b/ironrdp/README.md new file mode 100644 index 00000000..57a29cb6 --- /dev/null +++ b/ironrdp/README.md @@ -0,0 +1,3 @@ +# IronRDP + +Meta crate re-exporting other important crates for convenience. diff --git a/ironrdp/src/codecs/rfx/rectangles_processing.rs b/ironrdp/src/codecs/rfx/rectangles_processing.rs deleted file mode 100644 index c02417e8..00000000 --- a/ironrdp/src/codecs/rfx/rectangles_processing.rs +++ /dev/null @@ -1,386 +0,0 @@ -#[cfg(test)] -mod tests; - -use std::cmp::{max, min}; - -use crate::utils::Rectangle; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Region { - pub extents: Rectangle, - pub rectangles: Vec, -} - -impl Region { - pub fn new() -> Self { - Self { - extents: Rectangle::empty(), - rectangles: Vec::new(), - } - } - - pub fn union_rectangle(&mut self, rectangle: Rectangle) { - if self.rectangles.is_empty() { - *self = Self::from(rectangle); - } else { - let mut dst = Vec::with_capacity(self.rectangles.len() + 1); - - handle_rectangle_higher_relative_to_extents(&rectangle, &self.extents, &mut dst); - - // treat possibly overlapping region - let bands = split_bands(self.rectangles.as_slice()); - let mut bands = bands.as_slice(); - while let Some((band, bands_new)) = bands.split_first() { - bands = bands_new; - - let top_inter_band = if band[0].bottom <= rectangle.top - || rectangle.bottom <= band[0].top - || rectangle_in_band(band, &rectangle) - { - // `rectangle` is lower, higher, or in the current band - dst.extend_from_slice(band); - - rectangle.top - } else { - handle_rectangle_that_overlaps_band(&rectangle, band, &mut dst); - - band[0].bottom - }; - - if !bands.is_empty() { - let next_band = bands[0]; - handle_rectangle_between_bands(&rectangle, band, next_band, &mut dst, top_inter_band); - } - } - - handle_rectangle_lower_relative_to_extents(&rectangle, &self.extents, &mut dst); - - self.rectangles = dst; - self.extents = self.extents.union(&rectangle); - - self.simplify(); - } - } - - pub fn intersect_rectangle(&self, rectangle: &Rectangle) -> Self { - match self.rectangles.len() { - 0 => Self::new(), - 1 => self.extents.intersect(rectangle).map(Self::from).unwrap_or_default(), - _ => { - let rectangles = self - .rectangles - .iter() - .take_while(|r| r.top < rectangle.bottom) - .filter_map(|r| r.intersect(rectangle)) - .collect::>(); - let extents = Rectangle::union_all(rectangles.as_slice()); - - let mut region = Self { rectangles, extents }; - region.simplify(); - - region - } - } - } - - fn simplify(&mut self) { - /* Simplify consecutive bands that touch and have the same items - * - * ==================== ==================== - * | 1 | | 2 | | | | | - * ==================== | | | | - * | 1 | | 2 | ====> | 1 | | 2 | - * ==================== | | | | - * | 1 | | 2 | | | | | - * ==================== ==================== - * - */ - - if self.rectangles.len() < 2 { - return; - } - - let mut current_band_start = 0; - while current_band_start < self.rectangles.len() - && current_band_start + get_current_band(&self.rectangles[current_band_start..]).len() - < self.rectangles.len() - { - let current_band = get_current_band(&self.rectangles[current_band_start..]); - let next_band = get_current_band(&self.rectangles[current_band_start + current_band.len()..]); - - if current_band[0].bottom == next_band[0].top && bands_internals_equal(current_band, next_band) { - let first_band_len = current_band.len(); - let second_band_len = next_band.len(); - let second_band_bottom = next_band[0].bottom; - self.rectangles - .drain(current_band_start + first_band_len..current_band_start + first_band_len + second_band_len); - self.rectangles - .iter_mut() - .skip(current_band_start) - .take(first_band_len) - .for_each(|r| r.bottom = second_band_bottom); - } else { - current_band_start += current_band.len(); - } - } - } -} - -impl Default for Region { - fn default() -> Self { - Self::new() - } -} - -impl From for Region { - fn from(r: Rectangle) -> Self { - Self { - extents: r.clone(), - rectangles: vec![r], - } - } -} - -fn handle_rectangle_higher_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { - if rectangle.top < extents.top { - dst.push(Rectangle { - top: rectangle.top, - bottom: min(extents.top, rectangle.bottom), - left: rectangle.left, - right: rectangle.right, - }); - } -} - -fn handle_rectangle_lower_relative_to_extents(rectangle: &Rectangle, extents: &Rectangle, dst: &mut Vec) { - if extents.bottom < rectangle.bottom { - dst.push(Rectangle { - top: max(extents.bottom, rectangle.top), - bottom: rectangle.bottom, - left: rectangle.left, - right: rectangle.right, - }); - } -} - -fn handle_rectangle_that_overlaps_band(rectangle: &Rectangle, band: &[Rectangle], dst: &mut Vec) { - /* rect overlaps the band: - | | | | - ====^=================| |==| |=========================== band - | top split | | | | - v | 1 | | 2 | - ^ | | | | +----+ +----+ - | merge zone | | | | | | | 4 | - v +----+ | | | | +----+ - ^ | | | 3 | - | bottom split | | | | - ====v=========================| |==| |=================== - | | | | - - possible cases: - 1) no top split, merge zone then a bottom split. The band will be splitted - in two - 2) not band split, only the merge zone, band merged with rect but not splitted - 3) a top split, the merge zone and no bottom split. The band will be split - in two - 4) a top split, the merge zone and also a bottom split. The band will be - splitted in 3, but the coalesce algorithm may merge the created bands - */ - - let band_top = band[0].top; - let band_bottom = band[0].bottom; - - if band_top < rectangle.top { - // split current band by the current band top and `rectangle.top` (case 3, 4) - copy_band(band, dst, band_top, rectangle.top); - } - - // split the merge zone (all cases) - copy_band_with_union( - band, - dst, - max(rectangle.top, band_top), - min(rectangle.bottom, band_bottom), - rectangle, - ); - - // split current band by the `rectangle.bottom` and the current band bottom (case 1, 4) - if rectangle.bottom < band_bottom { - copy_band(band, dst, rectangle.bottom, band_bottom); - } -} - -fn handle_rectangle_between_bands( - rectangle: &Rectangle, - band: &[Rectangle], - next_band: &[Rectangle], - dst: &mut Vec, - top_inter_band: u16, -) { - /* test if a piece of rect should be inserted as a new band between - * the current band and the next one. band n and n+1 shouldn't touch. - * - * ============================================================== - * band n - * +------+ +------+ - * ===========| rect |====================| |=============== - * | | +------+ | | - * +------+ | rect | | rect | - * +------+ | | - * =======================================| |================ - * +------+ band n+1 - * =============================================================== - * - */ - - let band_bottom = band[0].bottom; - - let next_band_top = next_band[0].top; - if next_band_top != band_bottom && band_bottom < rectangle.bottom && rectangle.top < next_band_top { - dst.push(Rectangle { - top: top_inter_band, - bottom: min(next_band_top, rectangle.bottom), - left: rectangle.left, - right: rectangle.right, - }); - } -} - -fn rectangle_in_band(band: &[Rectangle], rectangle: &Rectangle) -> bool { - // part of `rectangle` is higher or lower - if rectangle.top < band[0].top || band[0].bottom < rectangle.bottom { - return false; - } - - for source_rectangle in band { - if source_rectangle.left <= rectangle.left { - if rectangle.right <= source_rectangle.right { - return true; - } - } else { - // as the band is sorted from left to right, - // once we've seen an item that is after `rectangle.left` - // we are sure that the result is false - return false; - } - } - - false -} - -fn copy_band_with_union( - mut band: &[Rectangle], - dst: &mut Vec, - band_top: u16, - band_bottom: u16, - union_rectangle: &Rectangle, -) { - /* merges a band with the given rect - * Input: - * unionRect - * | | - * | | - * ==============+===============+================================ - * |Item1| |Item2| |Item3| |Item4| |Item5| Band - * ==============+===============+================================ - * before | overlap | after - * - * Resulting band: - * +-----+ +----------------------+ +-----+ - * |Item1| | Item2 | |Item3| - * +-----+ +----------------------+ +-----+ - * - * We first copy as-is items that are before Item2, the first overlapping - * item. - * Then we find the last one that overlap unionRect to agregate Item2, Item3 - * and Item4 to create Item2. - * Finally Item5 is copied as Item3. - * - * When no unionRect is provided, we skip the two first steps to just copy items - */ - - let items_before_union_rectangle = band - .iter() - .map(|r| Rectangle { - top: band_top, - bottom: band_bottom, - left: r.left, - right: r.right, - }) - .take_while(|r| r.right < union_rectangle.left); - let items_before_union_rectangle_len = items_before_union_rectangle.clone().map(|_| 1).sum::(); - dst.extend(items_before_union_rectangle); - band = &band[items_before_union_rectangle_len..]; - - // treat items overlapping with `union_rectangle` - let left = min( - band.first().map(|r| r.left).unwrap_or(union_rectangle.left), - union_rectangle.left, - ); - let mut right = union_rectangle.right; - while !band.is_empty() { - if band[0].right >= union_rectangle.right { - if band[0].left < union_rectangle.right { - right = band[0].right; - band = &band[1..]; - } - break; - } - band = &band[1..]; - } - dst.push(Rectangle { - top: band_top, - bottom: band_bottom, - left, - right, - }); - - // treat remaining items on the same band - copy_band(band, dst, band_top, band_bottom); -} - -fn copy_band(band: &[Rectangle], dst: &mut Vec, band_top: u16, band_bottom: u16) { - dst.extend(band.iter().map(|r| Rectangle { - top: band_top, - bottom: band_bottom, - left: r.left, - right: r.right, - })); -} - -fn split_bands(mut rectangles: &[Rectangle]) -> Vec<&[Rectangle]> { - let mut bands = Vec::new(); - while !rectangles.is_empty() { - let band = get_current_band(rectangles); - rectangles = &rectangles[band.len()..]; - bands.push(band); - } - - bands -} - -fn get_current_band(rectangles: &[Rectangle]) -> &[Rectangle] { - let band_top = rectangles[0].top; - - for i in 1..rectangles.len() { - if rectangles[i].top != band_top { - return &rectangles[..i]; - } - } - - rectangles -} - -fn bands_internals_equal(first_band: &[Rectangle], second_band: &[Rectangle]) -> bool { - if first_band.len() != second_band.len() { - return false; - } - - for (first_band_rect, second_band_rect) in first_band.iter().zip(second_band.iter()) { - if first_band_rect.left != second_band_rect.left || first_band_rect.right != second_band_rect.right { - return false; - } - } - - true -} diff --git a/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs b/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs deleted file mode 100644 index 85f3eefc..00000000 --- a/ironrdp/src/codecs/rfx/rectangles_processing/tests.rs +++ /dev/null @@ -1,1236 +0,0 @@ -use lazy_static::lazy_static; - -use super::*; - -lazy_static! { - static ref REGION_FOR_RECTANGLES_INTERSECTION: Region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 11, - bottom: 9, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 5, - bottom: 3, - }, - Rectangle { - left: 7, - top: 1, - right: 8, - bottom: 3, - }, - Rectangle { - left: 9, - top: 1, - right: 11, - bottom: 3, - }, - Rectangle { - left: 7, - top: 3, - right: 11, - bottom: 4, - }, - Rectangle { - left: 3, - top: 4, - right: 6, - bottom: 6, - }, - Rectangle { - left: 7, - top: 4, - right: 11, - bottom: 6, - }, - Rectangle { - left: 1, - top: 6, - right: 3, - bottom: 8, - }, - Rectangle { - left: 4, - top: 6, - right: 5, - bottom: 8, - }, - Rectangle { - left: 6, - top: 6, - right: 10, - bottom: 8, - }, - Rectangle { - left: 4, - top: 8, - right: 5, - bottom: 9, - }, - Rectangle { - left: 6, - top: 8, - right: 10, - bottom: 9, - }, - ], - }; -} - -#[test] -fn union_rectangle_sets_extents_and_single_rectangle_for_empty_region() { - let mut region = Region::new(); - - let input_rectangle = Rectangle { - left: 5, - top: 1, - right: 9, - bottom: 2, - }; - - let expected_region = Region { - extents: input_rectangle.clone(), - rectangles: vec![input_rectangle.clone()], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_places_new_rectangle_higher_relative_to_band() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle.clone()], - }; - - let input_rectangle = Rectangle { - left: 5, - top: 1, - right: 9, - bottom: 2, - }; - - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 1, - right: 9, - bottom: 7, - }, - rectangles: vec![input_rectangle.clone(), existing_band_rectangle], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_places_new_rectangle_lower_relative_to_band() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle.clone()], - }; - - let input_rectangle = Rectangle { - left: 1, - top: 8, - right: 4, - bottom: 10, - }; - - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 3, - right: 7, - bottom: 10, - }, - rectangles: vec![existing_band_rectangle, input_rectangle.clone()], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_does_not_add_new_rectangle_which_is_inside_a_band() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle.clone()], - }; - - let input_rectangle = Rectangle { - left: 5, - top: 4, - right: 6, - bottom: 5, - }; - - let expected_region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_cuts_new_rectangle_top_part_which_crosses_band_on_top() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle], - }; - - let input_rectangle = Rectangle { - left: 1, - top: 2, - right: 4, - bottom: 4, - }; - - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 2, - right: 7, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 2, - right: 4, - bottom: 3, - }, - Rectangle { - left: 1, - top: 3, - right: 7, - bottom: 4, - }, - Rectangle { - left: 2, - top: 4, - right: 7, - bottom: 7, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_cuts_new_rectangle_lower_part_which_crosses_band_on_bottom() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle], - }; - - let input_rectangle = Rectangle { - left: 5, - top: 6, - right: 9, - bottom: 8, - }; - - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 9, - bottom: 8, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 6, - }, - Rectangle { - left: 2, - top: 6, - right: 9, - bottom: 7, - }, - Rectangle { - left: 5, - top: 7, - right: 9, - bottom: 8, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_cuts_new_rectangle_higher_and_lower_part_which_crosses_band_on_top_and_bottom() { - let existing_band_rectangle = Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }; - let mut region = Region { - extents: existing_band_rectangle.clone(), - rectangles: vec![existing_band_rectangle], - }; - - let input_rectangle = Rectangle { - left: 3, - top: 1, - right: 5, - bottom: 11, - }; - - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 1, - right: 7, - bottom: 11, - }, - rectangles: vec![ - Rectangle { - left: 3, - top: 1, - right: 5, - bottom: 3, - }, - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 3, - top: 7, - right: 5, - bottom: 11, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_without_merging_with_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 9, - bottom: 7, - }, - Rectangle { - left: 12, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - let input_rectangle = Rectangle { - left: 10, - top: 3, - right: 11, - bottom: 7, - }; - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 9, - bottom: 7, - }, - Rectangle { - left: 10, - top: 3, - right: 11, - bottom: 7, - }, - Rectangle { - left: 12, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 10, - bottom: 7, - }, - Rectangle { - left: 13, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - let input_rectangle = Rectangle { - left: 9, - top: 3, - right: 14, - bottom: 7, - }; - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_inserts_new_rectangle_in_band_of_3_rectangles_with_merging_with_side_rectangles_on_board() { - let mut region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 10, - bottom: 7, - }, - Rectangle { - left: 13, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - let input_rectangle = Rectangle { - left: 10, - top: 3, - right: 13, - bottom: 7, - }; - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 3, - right: 15, - bottom: 7, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 8, - top: 3, - right: 13, - bottom: 7, - }, - Rectangle { - left: 13, - top: 3, - right: 15, - bottom: 7, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn union_rectangle_inserts_new_rectangle_between_two_bands() { - let mut region = Region { - extents: Rectangle { - left: 1, - top: 3, - right: 7, - bottom: 10, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 1, - top: 8, - right: 4, - bottom: 10, - }, - ], - }; - - let input_rectangle = Rectangle { - left: 3, - top: 4, - right: 4, - bottom: 9, - }; - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 3, - right: 7, - bottom: 10, - }, - rectangles: vec![ - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 3, - top: 7, - right: 4, - bottom: 8, - }, - Rectangle { - left: 1, - top: 8, - right: 4, - bottom: 10, - }, - ], - }; - - region.union_rectangle(input_rectangle); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_does_not_change_two_different_bands_with_multiple_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 3, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 2, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 2, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 2, - }, - Rectangle { - left: 1, - top: 2, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 2, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 2, - right: 7, - bottom: 3, - }, - ], - }; - let expected_region = region.clone(); - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_does_not_change_two_different_bands_with_one_rectangle() { - let mut region = Region { - extents: Rectangle { - left: 2, - top: 1, - right: 7, - bottom: 11, - }, - rectangles: vec![ - Rectangle { - left: 3, - top: 1, - right: 5, - bottom: 3, - }, - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - ], - }; - let expected_region = region.clone(); - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_does_not_change_three_different_bands_with_one_rectangle() { - let mut region = Region { - extents: Rectangle { - left: 2, - top: 1, - right: 7, - bottom: 11, - }, - rectangles: vec![ - Rectangle { - left: 3, - top: 1, - right: 5, - bottom: 3, - }, - Rectangle { - left: 2, - top: 3, - right: 7, - bottom: 7, - }, - Rectangle { - left: 3, - top: 7, - right: 5, - bottom: 11, - }, - ], - }; - let expected_region = region.clone(); - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_merges_bands_with_identical_internal_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 3, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 2, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 2, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 2, - }, - Rectangle { - left: 1, - top: 2, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 2, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 2, - right: 6, - bottom: 3, - }, - ], - }; - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 3, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 3, - }, - ], - }; - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_merges_three_bands_with_identical_internal_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 3, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 2, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 2, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 2, - }, - Rectangle { - left: 1, - top: 2, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 2, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 2, - right: 6, - bottom: 3, - }, - Rectangle { - left: 1, - top: 3, - right: 2, - bottom: 4, - }, - Rectangle { - left: 3, - top: 3, - right: 4, - bottom: 4, - }, - Rectangle { - left: 5, - top: 3, - right: 6, - bottom: 4, - }, - ], - }; - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 3, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 4, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 4, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 4, - }, - ], - }; - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn simplify_merges_two_pairs_of_bands_with_identical_internal_rectangles() { - let mut region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 5, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 2, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 2, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 2, - }, - Rectangle { - left: 1, - top: 2, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 2, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 2, - right: 6, - bottom: 3, - }, - Rectangle { - left: 2, - top: 3, - right: 3, - bottom: 4, - }, - Rectangle { - left: 4, - top: 3, - right: 5, - bottom: 4, - }, - Rectangle { - left: 6, - top: 3, - right: 7, - bottom: 4, - }, - Rectangle { - left: 2, - top: 4, - right: 3, - bottom: 5, - }, - Rectangle { - left: 4, - top: 4, - right: 5, - bottom: 5, - }, - Rectangle { - left: 6, - top: 4, - right: 7, - bottom: 5, - }, - ], - }; - let expected_region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 7, - bottom: 5, - }, - rectangles: vec![ - Rectangle { - left: 1, - top: 1, - right: 2, - bottom: 3, - }, - Rectangle { - left: 3, - top: 1, - right: 4, - bottom: 3, - }, - Rectangle { - left: 5, - top: 1, - right: 6, - bottom: 3, - }, - Rectangle { - left: 2, - top: 3, - right: 3, - bottom: 5, - }, - Rectangle { - left: 4, - top: 3, - right: 5, - bottom: 5, - }, - Rectangle { - left: 6, - top: 3, - right: 7, - bottom: 5, - }, - ], - }; - - region.simplify(); - assert_eq!(expected_region, region); -} - -#[test] -fn intersect_rectangle_returns_empty_region_for_not_intersecting_rectangle() { - let region = &*REGION_FOR_RECTANGLES_INTERSECTION; - let expected_region = Region { - extents: Rectangle { - left: 0, - top: 0, - right: 0, - bottom: 0, - }, - rectangles: vec![], - }; - let input_rectangle = Rectangle { - left: 5, - top: 2, - right: 6, - bottom: 3, - }; - - let actual_region = region.intersect_rectangle(&input_rectangle); - assert_eq!(expected_region, actual_region); -} - -#[test] -fn intersect_rectangle_returns_empty_region_for_empty_intersection_region() { - let region = Region { - extents: Rectangle { - left: 0, - top: 0, - right: 0, - bottom: 0, - }, - rectangles: vec![], - }; - let expected_region = region.clone(); - let input_rectangle = Rectangle { - left: 5, - top: 2, - right: 6, - bottom: 3, - }; - - let actual_region = region.intersect_rectangle(&input_rectangle); - assert_eq!(expected_region, actual_region); -} - -#[test] -fn intersect_rectangle_returns_part_of_rectangle_that_overlaps_for_region_with_one_rectangle() { - let region = Region { - extents: Rectangle { - left: 1, - top: 1, - right: 5, - bottom: 3, - }, - rectangles: vec![Rectangle { - left: 1, - top: 1, - right: 5, - bottom: 3, - }], - }; - let expected_region = Region { - extents: Rectangle { - left: 2, - top: 2, - right: 3, - bottom: 3, - }, - rectangles: vec![Rectangle { - left: 2, - top: 2, - right: 3, - bottom: 3, - }], - }; - let input_rectangle = Rectangle { - left: 2, - top: 2, - right: 3, - bottom: 3, - }; - - let actual_region = region.intersect_rectangle(&input_rectangle); - assert_eq!(expected_region, actual_region); -} - -#[test] -fn intersect_rectangle_returns_region_with_parts_of_rectangles_that_intersect_input_rectangle() { - let region = &*REGION_FOR_RECTANGLES_INTERSECTION; - let expected_region = Region { - extents: Rectangle { - left: 3, - top: 2, - right: 8, - bottom: 5, - }, - rectangles: vec![ - Rectangle { - left: 3, - top: 2, - right: 5, - bottom: 3, - }, - Rectangle { - left: 7, - top: 2, - right: 8, - bottom: 3, - }, - Rectangle { - left: 7, - top: 3, - right: 8, - bottom: 4, - }, - Rectangle { - left: 3, - top: 4, - right: 6, - bottom: 5, - }, - Rectangle { - left: 7, - top: 4, - right: 8, - bottom: 5, - }, - ], - }; - let input_rectangle = Rectangle { - left: 3, - top: 2, - right: 8, - bottom: 5, - }; - - let actual_region = region.intersect_rectangle(&input_rectangle); - assert_eq!(expected_region, actual_region); -} - -#[test] -fn intersect_rectangle_returns_region_with_exact_sizes_of_rectangle_that_overlaps_it() { - let region = &*REGION_FOR_RECTANGLES_INTERSECTION; - let expected_region = Region { - extents: Rectangle { - left: 4, - top: 6, - right: 5, - bottom: 8, - }, - rectangles: vec![Rectangle { - left: 4, - top: 6, - right: 5, - bottom: 8, - }], - }; - let input_rectangle = Rectangle { - left: 4, - top: 6, - right: 5, - bottom: 8, - }; - - let actual_region = region.intersect_rectangle(&input_rectangle); - assert_eq!(expected_region, actual_region); -} diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs index 98ef0100..75deb26c 100644 --- a/ironrdp/src/lib.rs +++ b/ironrdp/src/lib.rs @@ -1,109 +1,3 @@ -pub mod codecs; -pub mod gcc; -pub mod input; -pub mod mcs; -pub mod nego; -pub mod rdp; - -mod basic_output; -mod ber; -mod per; -mod preconnection; -mod utils; -mod x224; - -pub use crate::basic_output::{bitmap, fast_path, surface_commands}; -pub use crate::mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}; -pub use crate::nego::*; -pub use crate::preconnection::{PreconnectionPdu, PreconnectionPduError}; -pub use crate::rdp::vc::dvc; -pub use crate::rdp::{ - CapabilitySet, ClientConfirmActive, ClientInfoPdu, ControlAction, DemandActive, ServerDemandActive, - ShareControlHeader, ShareControlPdu, ShareDataHeader, ShareDataPdu, VirtualChannel, -}; -pub use crate::utils::Rectangle; -pub use crate::x224::*; - -pub trait PduParsing { - type Error; // FIXME: this bound type should probably be removed for the sake of simplicity - - fn from_buffer(stream: impl std::io::Read) -> Result - where - Self: Sized; - fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error>; - fn buffer_length(&self) -> usize; -} - -pub trait PduBufferParsing<'a>: Sized { - type Error; // FIXME: this bound type should probably be removed for the sake of simplicity - - fn from_buffer(mut buffer: &'a [u8]) -> Result { - Self::from_buffer_consume(&mut buffer) - } - fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result; - fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error>; - fn buffer_length(&self) -> usize; -} - -pub enum RdpPdu { - X224(x224::Data), - FastPath(fast_path::FastPathHeader), -} - -impl PduParsing for RdpPdu { - type Error = RdpError; - - fn from_buffer(mut stream: impl std::io::Read) -> Result { - use bit_field::BitField; - use byteorder::ReadBytesExt; - use num_traits::FromPrimitive; - - let header = stream.read_u8()?; - let action = header.get_bits(0..2); - let action = Action::from_u8(action).ok_or(RdpError::InvalidActionCode(action))?; - - match action { - Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version(&mut stream, header)?)), - Action::FastPath => Ok(Self::FastPath(fast_path::FastPathHeader::from_buffer_with_header( - &mut stream, - header, - )?)), - } - } - - fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error> { - match self { - Self::X224(x224) => x224.to_buffer(stream).map_err(RdpError::from), - Self::FastPath(fast_path) => fast_path.to_buffer(stream).map_err(RdpError::from), - } - } - - fn buffer_length(&self) -> usize { - match self { - Self::X224(x224) => x224.buffer_length(), - Self::FastPath(fast_path) => fast_path.buffer_length(), - } - } -} - -#[derive(Debug, failure::Fail)] -pub enum RdpError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] std::io::Error), - #[fail(display = "X224 error: {}", _0)] - X224Error(#[fail(cause)] nego::NegotiationError), - #[fail(display = "Surface Commands error: {}", _0)] - FastPathError(#[fail(cause)] fast_path::FastPathError), - #[fail(display = "Received invalid action code: {}", _0)] - InvalidActionCode(u8), -} - -impl_from_error!(std::io::Error, RdpError, RdpError::IOError); -impl_from_error!(nego::NegotiationError, RdpError, RdpError::X224Error); -impl_from_error!(fast_path::FastPathError, RdpError, RdpError::FastPathError); - -#[derive(Debug, Copy, Clone, PartialEq, Eq, num_derive::FromPrimitive, num_derive::ToPrimitive)] -pub enum Action { - FastPath = 0x0, - X224 = 0x3, -} +// TODO: remove glob reexport at some point +pub use ironrdp_core::*; +pub use {ironrdp_core as core, ironrdp_graphics as graphics, ironrdp_input as input, ironrdp_session as session}; diff --git a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs b/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs deleted file mode 100644 index 2f76f482..00000000 --- a/ironrdp/src/rdp/vc/dvc/gfx/zgfx.rs +++ /dev/null @@ -1,452 +0,0 @@ -mod circular_buffer; -mod control_messages; - -#[cfg(test)] -mod tests; - -use std::io::{self, Write}; - -use bitvec::bits; -use bitvec::field::BitField as _; -use bitvec::order::Msb0; -use bitvec::slice::BitSlice; -use byteorder::WriteBytesExt; -use circular_buffer::FixedCircularBuffer; -use control_messages::{BulkEncodedData, CompressionFlags, SegmentedDataPdu}; -use failure::Fail; -use lazy_static::lazy_static; - -use crate::impl_from_error; -use crate::utils::Bits; - -const HISTORY_SIZE: usize = 2_500_000; - -pub struct Decompressor { - history: FixedCircularBuffer, -} - -impl Decompressor { - pub fn new() -> Self { - Self { - history: FixedCircularBuffer::new(HISTORY_SIZE), - } - } - - pub fn decompress(&mut self, input: &[u8], output: &mut Vec) -> Result { - let segmented_data = SegmentedDataPdu::from_buffer(input)?; - - match segmented_data { - SegmentedDataPdu::Single(segment) => self.handle_segment(&segment, output), - SegmentedDataPdu::Multipart { - uncompressed_size, - segments, - } => { - let mut bytes_written = 0; - for segment in segments { - let written = self.handle_segment(&segment, output)?; - bytes_written += written; - } - - if bytes_written != uncompressed_size { - Err(ZgfxError::InvalidDecompressedSize { - decompressed_size: bytes_written, - uncompressed_size, - }) - } else { - Ok(bytes_written) - } - } - } - } - - fn handle_segment(&mut self, segment: &BulkEncodedData<'_>, output: &mut Vec) -> Result { - if !segment.data.is_empty() { - if segment.compression_flags.contains(CompressionFlags::COMPRESSED) { - self.decompress_segment(segment.data, output) - } else { - self.history.write_all(segment.data)?; - output.extend_from_slice(segment.data); - - Ok(segment.data.len()) - } - } else { - Ok(0) - } - } - - fn decompress_segment(&mut self, encoded_data: &[u8], output: &mut Vec) -> Result { - let mut bits = BitSlice::from_slice(encoded_data); - - // The value of the last byte indicates the number of unused bits in the final byte - bits = &bits[..8 * (encoded_data.len() - 1) - *encoded_data.last().unwrap() as usize]; - let mut bits = Bits::new(bits); - let mut bytes_written = 0; - - while !bits.is_empty() { - let token = TOKEN_TABLE - .iter() - .find(|token| token.prefix == bits[..token.prefix.len()]) - .ok_or(ZgfxError::TokenBitsNotFound)?; - let _prefix = bits.split_to(token.prefix.len()); - - match token.ty { - TokenType::NullLiteral => { - // The prefix value is encoded with a "0" prefix, - // then read 8 bits containing the byte to output. - let value = bits.split_to(8).load_be::(); - - self.history.write_u8(value)?; - output.push(value); - bytes_written += 1; - } - TokenType::Literal { literal_value } => { - self.history - .write_u8(literal_value) - .expect("circular buffer does not fail"); - output.push(literal_value); - bytes_written += 1; - } - TokenType::Match { - distance_value_size, - distance_base, - } => { - let written = - handle_match(&mut bits, distance_value_size, distance_base, &mut self.history, output)?; - bytes_written += written; - } - } - } - - Ok(bytes_written) - } -} - -impl Default for Decompressor { - fn default() -> Self { - Self::new() - } -} - -fn handle_match( - bits: &mut Bits<'_>, - distance_value_size: usize, - distance_base: u32, - history: &mut FixedCircularBuffer, - output: &mut Vec, -) -> io::Result { - // Each token has been assigned a different base distance - // and number of additional value bits to be added to compute the full distance. - - let distance = (distance_base + bits.split_to(distance_value_size).load_be::()) as usize; - - if distance == 0 { - read_unencoded_bytes(bits, history, output) - } else { - read_encoded_bytes(bits, distance, history, output) - } -} - -fn read_unencoded_bytes( - bits: &mut Bits<'_>, - history: &mut FixedCircularBuffer, - output: &mut Vec, -) -> io::Result { - // A match distance of zero is a special case, - // which indicates that an unencoded run of bytes follows. - // The count of bytes is encoded as a 15-bit value - let length = bits.split_to(15).load_be::() as usize; - - if bits.remaining_bits_of_last_byte() > 0 { - let pad_to_byte_boundary = 8 - bits.remaining_bits_of_last_byte(); - bits.split_to(pad_to_byte_boundary); - } - - let unencoded_bits = bits.split_to(length * 8); - - // FIXME: not very efficient, but we need to rework the `Bits` helper and refactor a bit otherwise - let unencoded_bits = unencoded_bits.to_bitvec(); - let unencoded_bytes = unencoded_bits.as_raw_slice(); - history.write_all(unencoded_bytes)?; - output.extend_from_slice(unencoded_bytes); - - Ok(unencoded_bytes.len()) -} - -fn read_encoded_bytes( - bits: &mut Bits<'_>, - distance: usize, - history: &mut FixedCircularBuffer, - mut output: &mut Vec, -) -> io::Result { - // A match length prefix follows the token and indicates - // how many additional bits will be needed to get the full length - // (the number of bytes to be copied). - - let length_token_size = bits.leading_ones(); - bits.split_to(length_token_size + 1); // length token + zero bit - - let length = if length_token_size == 0 { - // special case - - 3 - } else { - let length = bits.split_to(length_token_size + 1).load_be::() as usize; - - let base = 2u32.pow(length_token_size as u32 + 1) as usize; - - base + length - }; - - let output_length = output.len(); - history.read_with_offset(distance, length, &mut output)?; - history - .write_all(&output[output_length..]) - .expect("circular buffer does not fail"); - - Ok(length) -} - -struct Token { - pub prefix: &'static BitSlice, - pub ty: TokenType, -} - -enum TokenType { - NullLiteral, - Literal { - literal_value: u8, - }, - Match { - distance_value_size: usize, - distance_base: u32, - }, -} - -lazy_static! { - static ref TOKEN_TABLE: [Token; 40] = [ - Token { - prefix: bits![static u8, Msb0; 0], - ty: TokenType::NullLiteral, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 0, 0], - ty: TokenType::Literal { literal_value: 0x00 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 0, 1], - ty: TokenType::Literal { literal_value: 0x01 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 0], - ty: TokenType::Literal { literal_value: 0x02 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 1, 0, 1], - ty: TokenType::Literal { literal_value: 0x03 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 0], - ty: TokenType::Literal { literal_value: 0x0ff }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 0], - ty: TokenType::Literal { literal_value: 0x04 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 0, 1, 1, 1, 1], - ty: TokenType::Literal { literal_value: 0x05 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 0], - ty: TokenType::Literal { literal_value: 0x06 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 0, 1], - ty: TokenType::Literal { literal_value: 0x07 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 0], - ty: TokenType::Literal { literal_value: 0x08 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 0, 1, 1], - ty: TokenType::Literal { literal_value: 0x09 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 0], - ty: TokenType::Literal { literal_value: 0x0a }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 0, 1], - ty: TokenType::Literal { literal_value: 0x0b }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 0], - ty: TokenType::Literal { literal_value: 0x3a }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 0, 1, 1, 1], - ty: TokenType::Literal { literal_value: 0x3b }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 0], - ty: TokenType::Literal { literal_value: 0x3c }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 0, 1], - ty: TokenType::Literal { literal_value: 0x3d }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 0], - ty: TokenType::Literal { literal_value: 0x3e }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 0, 1, 1], - ty: TokenType::Literal { literal_value: 0x3f }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 0], - ty: TokenType::Literal { literal_value: 0x40 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 0, 1], - ty: TokenType::Literal { literal_value: 0x80 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 0], - ty: TokenType::Literal { literal_value: 0x0c }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 0, 1], - ty: TokenType::Literal { literal_value: 0x38 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 0], - ty: TokenType::Literal { literal_value: 0x39 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 1, 1, 1, 1, 1, 1, 1], - ty: TokenType::Literal { literal_value: 0x66 }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 0, 0, 1], - ty: TokenType::Match { - distance_value_size: 5, - distance_base: 0 - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 0, 1, 0], - ty: TokenType::Match { - distance_value_size: 7, - distance_base: 32 - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 0, 1, 1], - ty: TokenType::Match { - distance_value_size: 9, - distance_base: 160 - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 0, 0], - ty: TokenType::Match { - distance_value_size: 10, - distance_base: 672, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 0, 1], - ty: TokenType::Match { - distance_value_size: 12, - distance_base: 1_696, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 0], - ty: TokenType::Match { - distance_value_size: 14, - distance_base: 5_792, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 0, 1], - ty: TokenType::Match { - distance_value_size: 15, - distance_base: 22_176, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 0], - ty: TokenType::Match { - distance_value_size: 18, - distance_base: 54_944, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 0, 1], - ty: TokenType::Match { - distance_value_size: 20, - distance_base: 317_088, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 0], - ty: TokenType::Match { - distance_value_size: 20, - distance_base: 1_365_664, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 0, 1], - ty: TokenType::Match { - distance_value_size: 21, - distance_base: 2_414_240, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 0], - ty: TokenType::Match { - distance_value_size: 22, - distance_base: 4_511_392, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 0, 1], - ty: TokenType::Match { - distance_value_size: 23, - distance_base: 8_705_696, - }, - }, - Token { - prefix: bits![static u8, Msb0; 1, 0, 1, 1, 1, 1, 1, 1, 0], - ty: TokenType::Match { - distance_value_size: 24, - distance_base: 17_094_304, - }, - }, - ]; -} - -#[derive(Debug, Fail)] -pub enum ZgfxError { - #[fail(display = "IO error: {}", _0)] - IOError(#[fail(cause)] io::Error), - #[fail(display = "Invalid compression type")] - InvalidCompressionType, - #[fail(display = "Invalid segmented descriptor")] - InvalidSegmentedDescriptor, - #[fail( - display = "Decompressed size of segments ({}) does not equal to uncompressed size ({})", - decompressed_size, uncompressed_size - )] - InvalidDecompressedSize { - decompressed_size: usize, - uncompressed_size: usize, - }, - #[fail(display = "Token bits not found")] - TokenBitsNotFound, -} - -impl_from_error!(io::Error, ZgfxError, ZgfxError::IOError); diff --git a/ironrdp/src/utils.rs b/ironrdp/src/utils.rs deleted file mode 100644 index c7e5d191..00000000 --- a/ironrdp/src/utils.rs +++ /dev/null @@ -1,260 +0,0 @@ -pub mod rc4; -pub mod rsa; - -use std::cmp::{max, min}; -use std::{io, ops}; - -use bitvec::prelude::{BitSlice, Msb0}; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::ToPrimitive; - -use crate::PduParsing; - -#[macro_export] -macro_rules! try_read_optional { - ($e:expr, $ret:expr) => { - match $e { - Ok(v) => v, - Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => { - return Ok($ret); - } - Err(e) => return Err(From::from(e)), - } - }; -} - -#[macro_export] -macro_rules! try_write_optional { - ($val:expr, $f:expr) => { - if let Some(ref val) = $val { - $f(val)? - } else { - return Ok(()); - } - }; -} - -#[macro_export] -macro_rules! impl_from_error { - ($from_e:ty, $to_e:ty, $to_e_variant:expr) => { - impl From<$from_e> for $to_e { - fn from(e: $from_e) -> Self { - $to_e_variant(e) - } - } - }; -} - -pub fn string_to_utf16(value: &str) -> Vec { - value - .encode_utf16() - .flat_map(|i| i.to_le_bytes().to_vec()) - .collect::>() -} - -pub fn bytes_to_utf16_string(mut value: &[u8]) -> String { - let mut value_u16 = vec![0x00; value.len() / 2]; - value - .read_u16_into::(value_u16.as_mut()) - .expect("read_u16_into cannot fail at this point"); - - String::from_utf16_lossy(value_u16.as_ref()) -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] -pub enum CharacterSet { - Ansi = 1, - Unicode = 2, -} - -pub fn read_string( - mut stream: impl io::Read, - size: usize, - character_set: CharacterSet, - read_null_terminator: bool, -) -> io::Result { - let size = size - + if read_null_terminator { - character_set.to_usize().unwrap() - } else { - 0 - }; - let mut buffer = vec![0; size]; - stream.read_exact(&mut buffer)?; - - let result = match character_set { - CharacterSet::Unicode => bytes_to_utf16_string(buffer.as_slice()), - CharacterSet::Ansi => String::from_utf8(buffer) - .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("the string is not utf8: {}", e)))?, - }; - - Ok(result.trim_end_matches('\0').into()) -} - -pub fn write_string_with_null_terminator( - mut stream: impl io::Write, - value: &str, - character_set: CharacterSet, -) -> io::Result<()> { - match character_set { - CharacterSet::Unicode => { - stream.write_all(string_to_utf16(value).as_ref())?; - stream.write_u16::(0) - } - CharacterSet::Ansi => { - stream.write_all(value.as_bytes())?; - stream.write_u8(0) - } - } -} - -pub struct Bits<'a> { - bits_slice: &'a BitSlice, - remaining_bits_of_last_byte: usize, -} - -impl<'a> Bits<'a> { - pub fn new(bits_slice: &'a BitSlice) -> Self { - Self { - bits_slice, - remaining_bits_of_last_byte: 0, - } - } - - pub fn split_to(&mut self, at: usize) -> &'a BitSlice { - let (value, new_bits) = self.bits_slice.split_at(at); - self.bits_slice = new_bits; - self.remaining_bits_of_last_byte = (self.remaining_bits_of_last_byte + at) % 8; - value - } - - pub fn remaining_bits_of_last_byte(&self) -> usize { - self.remaining_bits_of_last_byte - } -} - -impl<'a> ops::Deref for Bits<'a> { - type Target = BitSlice; - - fn deref(&self) -> &Self::Target { - self.bits_slice - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Rectangle { - pub left: u16, - pub top: u16, - pub right: u16, - pub bottom: u16, -} - -impl Rectangle { - pub fn empty() -> Self { - Self { - left: 0, - top: 0, - right: 0, - bottom: 0, - } - } - - pub fn width(&self) -> u16 { - self.right - self.left - } - - pub fn height(&self) -> u16 { - self.bottom - self.top - } - - pub fn union_all(rectangles: &[Self]) -> Self { - Self { - left: rectangles.iter().map(|r| r.left).min().unwrap_or(0), - top: rectangles.iter().map(|r| r.top).min().unwrap_or(0), - right: rectangles.iter().map(|r| r.right).max().unwrap_or(0), - bottom: rectangles.iter().map(|r| r.bottom).max().unwrap_or(0), - } - } - - pub fn intersect(&self, other: &Self) -> Option { - let result = Self { - left: max(self.left, other.left), - top: max(self.top, other.top), - right: min(self.right, other.right), - bottom: min(self.bottom, other.bottom), - }; - - if result.left < result.right && result.top < result.bottom { - Some(result) - } else { - None - } - } - - pub fn union(&self, other: &Self) -> Self { - Self { - left: min(self.left, other.left), - top: min(self.top, other.top), - right: max(self.right, other.right), - bottom: max(self.bottom, other.bottom), - } - } -} - -impl PduParsing for Rectangle { - type Error = io::Error; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let left = stream.read_u16::()?; - let top = stream.read_u16::()?; - let right = stream.read_u16::()?; - let bottom = stream.read_u16::()?; - - Ok(Self { - left, - top, - right, - bottom, - }) - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u16::(self.left)?; - stream.write_u16::(self.top)?; - stream.write_u16::(self.right)?; - stream.write_u16::(self.bottom)?; - - Ok(()) - } - - fn buffer_length(&self) -> usize { - 8 - } -} - -pub trait SplitTo { - fn split_to(&mut self, n: usize) -> Self; -} - -impl SplitTo for &[T] { - fn split_to(&mut self, n: usize) -> Self { - assert!(n <= self.len()); - - let (a, b) = self.split_at(n); - *self = b; - - a - } -} - -impl SplitTo for &mut [T] { - fn split_to(&mut self, n: usize) -> Self { - assert!(n <= self.len()); - - let (a, b) = std::mem::take(self).split_at_mut(n); - *self = b; - - a - } -} From 98c6a1e97e06d4f2025f055d3d24dab3d781ad93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 16 Jan 2023 16:37:00 -0500 Subject: [PATCH 0098/1273] build: fix tauri compilation (#59) --- iron-tauri-client/src-tauri/src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs index 7ee8b6b4..d1b23917 100644 --- a/iron-tauri-client/src-tauri/src/main.rs +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -11,7 +11,7 @@ use std::sync::Mutex; use anyhow::Context as _; use bytes::BytesMut; use ironrdp::graphics::image_processing::PixelFormat; -use ironrdp::input::fast_path::FastPathInput; +use ironrdp::core::input::fast_path::FastPathInput; use ironrdp::session::image::DecodedImage; use ironrdp::session::{ConnectionSequenceResult, ErasedWriter, FramedReader, InputConfig}; use ironrdp::geometry::Rectangle; @@ -168,9 +168,9 @@ async fn update_mouse( leftClick: bool, session_manager: State<'_, SessionManager>, ) -> Result<(), String> { - use ironrdp::input::fast_path::FastPathInputEvent; - use ironrdp::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; - use ironrdp::input::MousePdu; + use ironrdp::core::input::fast_path::FastPathInputEvent; + use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; + use ironrdp::core::input::MousePdu; let session_id = sessionId; let mouse_x = mouseX; From d164087d1a51e7c678753bab7754703b2a0c80ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 11:29:50 -0500 Subject: [PATCH 0099/1273] build: update Rust toolchain to 1.67.0 --- rust-toolchain.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e44d5bfe..b42ddcf0 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.65.0" -components = [ "rustfmt", "clippy" ] +channel = "1.67.0" +components = ["rustfmt", "clippy"] From ea0e6a4fff878326e85b8bbf038f85f584801a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 15:26:55 -0500 Subject: [PATCH 0100/1273] refactor: architecture rework --- iron-tauri-client/src-tauri/Cargo.toml | 2 +- iron-tauri-client/src-tauri/src/main.rs | 35 +- ironrdp-cli/Cargo.toml | 18 +- ironrdp-cli/src/config.rs | 24 +- ironrdp-cli/src/main.rs | 64 +- ironrdp-core/Cargo.toml | 12 +- ironrdp-core/fuzz/Cargo.toml | 19 +- ironrdp-core/src/connection_initiation.rs | 1059 +++++++++++++++++ ironrdp-core/src/gcc/core_data/client.rs | 18 +- ironrdp-core/src/gcc/core_data/client/test.rs | 4 +- ironrdp-core/src/gcc/core_data/server.rs | 18 +- ironrdp-core/src/gcc/core_data/server/test.rs | 6 +- ironrdp-core/src/lib.rs | 24 +- ironrdp-core/src/nego.rs | 392 ------ ironrdp-core/src/nego/tests.rs | 663 ----------- ironrdp-core/src/rdp/server_license.rs | 6 +- .../client_new_license_request.rs | 8 +- ironrdp-core/src/x224.rs | 11 +- ironrdp-core/src/x224/tests.rs | 8 +- ironrdp-graphics/Cargo.toml | 4 +- ironrdp-gui-client/Cargo.toml | 22 +- ironrdp-gui-client/src/config.rs | 25 +- ironrdp-gui-client/src/gui.rs | 2 +- ironrdp-gui-client/src/gui/input.rs | 4 +- ironrdp-gui-client/src/main.rs | 46 +- ironrdp-renderer/Cargo.toml | 3 - ironrdp-session-async/Cargo.toml | 14 +- ironrdp-session-async/src/lib.rs | 2 +- ironrdp-session/Cargo.toml | 13 +- ironrdp-session/src/active_session.rs | 93 +- .../src/active_session/fast_path.rs | 47 +- ironrdp-session/src/active_session/x224.rs | 318 ++--- ironrdp-session/src/connection_sequence.rs | 428 +++++-- .../src/connection_sequence/user_info.rs | 18 +- ironrdp-session/src/errors.rs | 6 +- ironrdp-session/src/frame.rs | 435 +++++++ ironrdp-session/src/{codecs.rs => framed.rs} | 32 +- ironrdp-session/src/lib.rs | 25 +- ironrdp-session/src/transport.rs | 535 --------- ironrdp-session/src/transport/channels.rs | 116 -- ironrdp-session/src/transport/connection.rs | 126 -- 41 files changed, 2332 insertions(+), 2373 deletions(-) create mode 100644 ironrdp-core/src/connection_initiation.rs delete mode 100644 ironrdp-core/src/nego.rs delete mode 100644 ironrdp-core/src/nego/tests.rs create mode 100644 ironrdp-session/src/frame.rs rename ironrdp-session/src/{codecs.rs => framed.rs} (83%) delete mode 100644 ironrdp-session/src/transport.rs delete mode 100644 ironrdp-session/src/transport/channels.rs delete mode 100644 ironrdp-session/src/transport/connection.rs diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml index 304a0fb7..af151fd7 100644 --- a/iron-tauri-client/src-tauri/Cargo.toml +++ b/iron-tauri-client/src-tauri/Cargo.toml @@ -21,7 +21,7 @@ custom-protocol = [ "tauri/custom-protocol" ] # Protocol ironrdp = { path = "../../ironrdp" } -sspi = "0.4" +sspi = { version = "0.6", features = ["network_client"] } serde = { version = "1.0", features = ["derive"] } # SSL diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs index d1b23917..a8597ffd 100644 --- a/iron-tauri-client/src-tauri/src/main.rs +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -3,20 +3,19 @@ use core::future::Future; use std::collections::HashMap; use std::io; -use std::net::SocketAddr; -use std::str::FromStr; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Mutex; use anyhow::Context as _; use bytes::BytesMut; -use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::core::input::fast_path::FastPathInput; -use ironrdp::session::image::DecodedImage; -use ironrdp::session::{ConnectionSequenceResult, ErasedWriter, FramedReader, InputConfig}; use ironrdp::geometry::Rectangle; -use ironrdp::session::{process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream}; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; use serde::Serialize; +use sspi::network_client::reqwest_network_client::RequestClientFactory; use sspi::AuthIdentity; use tauri::{Manager as _, State}; use tokio::io::AsyncWriteExt as _; @@ -234,19 +233,24 @@ async fn connect( ) -> Result { let input_config = build_input_config(username, password, None); - let address = SocketAddr::from_str(&address).unwrap(); + let addr = ironrdp::session::connection_sequence::Address::lookup_addr(address).map_err(|e| e.to_string())?; println!("Connect to RDP host"); - let tcp_stream = TcpStream::connect(&address) + let tcp_stream = TcpStream::connect(addr.sock) .await .map_err(RdpError::ConnectionError) .map_err(|e| e.to_string())?; - let (connection_sequence_result, rdp_reader, rdp_writer) = - process_connection_sequence(tcp_stream.compat(), &address, &input_config, establish_tls) - .await - .map_err(|e| e.to_string())?; + let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( + tcp_stream.compat(), + &addr, + &input_config, + establish_tls, + Box::new(RequestClientFactory), + ) + .await + .map_err(|e| e.to_string())?; let desktop_width = connection_sequence_result.desktop_size.width; let desktop_height = connection_sequence_result.desktop_size.height; @@ -288,7 +292,7 @@ fn build_input_config(username: String, password: String, domain: Option password, domain, }, - security_protocol: ironrdp::nego::SecurityProtocol::HYBRID_EX, + security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, keyboard_subtype: 0, keyboard_functional_keys_count: 12, @@ -372,8 +376,9 @@ async fn rdp_session_task( .await .unwrap() .ok_or(RdpError::AccessDenied) - .unwrap(); - let outputs = active_stage.process(&mut image, frame).await.unwrap(); + .unwrap() + .freeze(); + let outputs = active_stage.process(&mut image, frame).unwrap(); for out in outputs { match out { diff --git a/ironrdp-cli/Cargo.toml b/ironrdp-cli/Cargo.toml index f758f6f2..b47d6d72 100644 --- a/ironrdp-cli/Cargo.toml +++ b/ironrdp-cli/Cargo.toml @@ -11,14 +11,14 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:rustls", "dep:tokio-rustls"] -native-tls = ["dep:native-tls", "dep:async-native-tls"] +rustls = ["dep:tokio-rustls"] +native-tls = ["dep:async-native-tls"] [dependencies] # Protocol ironrdp = { path = "../ironrdp" } -sspi = "0.4" +sspi = { version = "0.6", features = ["network_client"] } # TODO: enable dns_resolver at some point # CLI clap = { version = "4.0", features = ["derive", "cargo"] } @@ -30,16 +30,16 @@ fern = "0.6" # SSL x509-parser = "0.14" -native-tls = { version = "0.2", optional = true } -rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } +async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } +tokio-rustls = { version = "0.23", features = ["dangerous_configuration"], optional = true } # async, futures tokio = { version = "1", features = ["full"]} -async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } -tokio-rustls = { version = "0.23", optional = true } tokio-util = { version = "0.7.4", features = ["compat"] } futures-util = "0.3" # Utils -chrono = "0.4.22" -image = "0.24.4" +chrono = "0.4.23" +whoami = "1.2.3" +image = "0.24.5" +anyhow = "1.0.68" diff --git a/ironrdp-cli/src/config.rs b/ironrdp-cli/src/config.rs index d36bef48..d679269f 100644 --- a/ironrdp-cli/src/config.rs +++ b/ironrdp-cli/src/config.rs @@ -1,4 +1,3 @@ -use std::net::SocketAddr; use std::num::ParseIntError; use clap::clap_derive::ValueEnum; @@ -13,7 +12,7 @@ const USER_CHANNEL_NAME: &str = "USER"; pub struct Config { pub log_file: String, - pub routing_addr: SocketAddr, + pub addr: String, pub input: InputConfig, } @@ -25,11 +24,11 @@ enum SecurityProtocol { } impl SecurityProtocol { - fn parse(security_protocol: SecurityProtocol) -> ironrdp::nego::SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::core::SecurityProtocol { match security_protocol { - SecurityProtocol::Ssl => ironrdp::nego::SecurityProtocol::SSL, - SecurityProtocol::Hybrid => ironrdp::nego::SecurityProtocol::HYBRID, - SecurityProtocol::HybridEx => ironrdp::nego::SecurityProtocol::HYBRID_EX, + SecurityProtocol::Ssl => ironrdp::core::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::core::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::core::SecurityProtocol::HYBRID_EX, } } } @@ -66,6 +65,7 @@ fn parse_hex(input: &str) -> Result { input.parse::() } } + /// Devolutions IronRDP client #[derive(Parser, Debug)] #[clap(author = "Devolutions", about = "Devolutions-IronRDP client")] @@ -75,9 +75,8 @@ struct Args { #[clap(short, long, value_parser, default_value_t = format!("{}.log", crate_name!()))] log_file: String, - /// An address on which the client will connect. Format: : - #[clap(value_parser = is_socket_address)] - addr: SocketAddr, + /// An address on which the client will connect. + addr: String, /// A target RDP server user name #[clap(short, long, value_parser)] @@ -137,11 +136,6 @@ struct Args { capabilities: u32, } -fn is_socket_address(s: &str) -> Result { - s.parse::() - .map_err(|_| String::from("The address does not match the format: :")) -} - impl Config { pub fn parse_args() -> Self { let args = Args::parse(); @@ -179,7 +173,7 @@ impl Config { Self { log_file: args.log_file, - routing_addr: args.addr, + addr: args.addr, input, } } diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs index fd1ec415..9dea945d 100644 --- a/ironrdp-cli/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -7,10 +7,10 @@ use std::io; use futures_util::io::AsyncWriteExt as _; use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::connection_sequence::{process_connection_sequence, UpgradedStream}; use ironrdp::session::image::DecodedImage; -use ironrdp::session::{ - process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, RdpError, UpgradedStream, -}; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, RdpError}; +use sspi::network_client::reqwest_network_client::RequestClientFactory; use tokio::io::AsyncWriteExt as _; use tokio::net::TcpStream; use tokio_util::compat::TokioAsyncReadCompatExt as _; @@ -28,12 +28,12 @@ type TlsStream = tokio_util::compat::Compat Result { - Ok(rustls::client::ServerCertVerified::assertion()) + Ok(tokio_rustls::rustls::client::ServerCertVerified::assertion()) } } } @@ -58,20 +58,30 @@ async fn main() { println!("RDP successfully finished"); exitcode::OK } - Err(RdpError::IOError(e)) if e.kind() == io::ErrorKind::UnexpectedEof => { - error!("{}", e); + Err(RdpError::IOError(e)) + if e.kind() == io::ErrorKind::UnexpectedEof || e.kind() == io::ErrorKind::ConnectionReset => + { + let e = anyhow::Error::from(e); + + error!("{:#}", e); + println!("The server has terminated the RDP session"); + println!("{:?}", e); + exitcode::NOHOST } - Err(ref e) => { - error!("{}", e); - println!("RDP failed because of {}", e); - - match e { + Err(e) => { + let exit_code = match e { RdpError::IOError(_) => exitcode::IOERR, RdpError::ConnectionError(_) => exitcode::NOHOST, _ => exitcode::PROTOCOL, - } + }; + + let e = anyhow::Error::from(e); + error!("{:#}", e); + println!("{:?}", e); + + exit_code } }; @@ -95,12 +105,18 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { } async fn run(config: Config) -> Result<(), RdpError> { - let stream = TcpStream::connect(config.routing_addr) - .await - .map_err(RdpError::ConnectionError)?; + let addr = ironrdp::session::connection_sequence::Address::lookup_addr(config.addr)?; - let (connection_sequence_result, mut reader, mut writer) = - process_connection_sequence(stream.compat(), &config.routing_addr, &config.input, establish_tls).await?; + let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::ConnectionError)?; + + let (connection_sequence_result, mut reader, mut writer) = process_connection_sequence( + stream.compat(), + &addr, + &config.input, + establish_tls, + Box::new(RequestClientFactory), + ) + .await?; let mut image = DecodedImage::new( PixelFormat::RgbA32, @@ -112,8 +128,8 @@ async fn run(config: Config) -> Result<(), RdpError> { let mut frame_id = 0; 'outer: loop { - let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; - let outputs = active_stage.process(&mut image, frame).await?; + let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?.freeze(); + let outputs = active_stage.process(&mut image, frame)?; for out in outputs { match out { ActiveStageOutput::ResponseFrame(frame) => writer.write_all(&frame).await?, @@ -150,12 +166,12 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< #[cfg(feature = "rustls")] let mut tls_stream = { - let mut client_config = rustls::client::ClientConfig::builder() + let mut client_config = tokio_rustls::rustls::client::ClientConfig::builder() .with_safe_defaults() .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) .with_no_client_auth(); // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) - client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); + client_config.key_log = std::sync::Arc::new(tokio_rustls::rustls::KeyLogFile::new()); let rc_config = std::sync::Arc::new(client_config); let example_com = "stub_string".try_into().unwrap(); let connector = tokio_rustls::TlsConnector::from(rc_config); diff --git a/ironrdp-core/Cargo.toml b/ironrdp-core/Cargo.toml index 3c07058d..b39b2934 100644 --- a/ironrdp-core/Cargo.toml +++ b/ironrdp-core/Cargo.toml @@ -13,17 +13,15 @@ keywords = ["rdp", "remote", "desktop", "protocol"] [dependencies] bit_field = "0.10.1" bitflags = "1.3.2" -bitvec = "1.0.0" byteorder = "1.4.3" -bytes = "1" -der-parser = "8.0.0" +der-parser = "8.1.0" thiserror = "1.0.37" lazy_static = "1.4.0" -md-5 = "0.10.1" +md5 = { package = "md-5", version = "0.10.5" } num-bigint = "0.4.3" num-derive = "0.3.3" -num-integer = "0.1.44" -num-traits = "0.2.14" -ring = "0.16.20" +num-integer = "0.1.45" +num-traits = "0.2.15" +sha1 = "0.10.5" x509-parser = "0.14" tap = "1.0.1" diff --git a/ironrdp-core/fuzz/Cargo.toml b/ironrdp-core/fuzz/Cargo.toml index 03d6c5a1..ffa4076f 100644 --- a/ironrdp-core/fuzz/Cargo.toml +++ b/ironrdp-core/fuzz/Cargo.toml @@ -1,25 +1,20 @@ - [package] name = "ironrdp-fuzz" version = "0.0.1" authors = ["Automatically generated"] publish = false +[[bin]] +name = "fuzz_pdu" +path = "fuzz_targets/fuzz_pdu.rs" + [package.metadata] cargo-fuzz = true -[dependencies] -bytes = "0.4" - -[dependencies.ironrdp] -path = ".." -[dependencies.libfuzzer-sys] -git = "https://github.com/rust-fuzz/libfuzzer-sys.git" - # Prevent this from interfering with workspaces [workspace] members = ["."] -[[bin]] -name = "fuzz_pdu" -path = "fuzz_targets/fuzz_pdu.rs" +[dependencies] +ironrdp = { path = ".." } +libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git" } diff --git a/ironrdp-core/src/connection_initiation.rs b/ironrdp-core/src/connection_initiation.rs new file mode 100644 index 00000000..76353e63 --- /dev/null +++ b/ironrdp-core/src/connection_initiation.rs @@ -0,0 +1,1059 @@ +//! PDUs used during the Connection Initiation stage + +use std::io; +use std::io::prelude::*; + +use bitflags::bitflags; +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use num_derive::{FromPrimitive, ToPrimitive}; +use num_traits::{FromPrimitive, ToPrimitive}; +use thiserror::Error; + +use crate::x224::{TpktHeader, X224TPDUType, TPDU_REQUEST_LENGTH, TPKT_HEADER_LENGTH}; +use crate::PduParsing; + +const COOKIE_PREFIX: &str = "Cookie: mstshash="; +const ROUTING_TOKEN_PREFIX: &str = "Cookie: msts="; + +const RDP_NEG_DATA_LENGTH: u16 = 8; +const CR_LF_SEQ_LENGTH: usize = 2; + +bitflags! { + /// A 32-bit, unsigned integer that contains flags indicating the supported + /// security protocols. + /// The client and server agree on it during the Connection Initiation phase. + /// + /// # MSDN + /// + /// * [RDP Negotiation Request (RDP_NEG_REQ)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/902b090b-9cb3-4efc-92bf-ee13373371e3) + pub struct SecurityProtocol: u32 { + const RDP = 0; + const SSL = 1; + const HYBRID = 2; + const RDSTLS = 4; + const HYBRID_EX = 8; + } +} + +bitflags! { + /// Holds the negotiation protocol flags of the *request* message. + /// + /// # MSDN + /// + /// * [RDP Negotiation Request (RDP_NEG_REQ)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/902b090b-9cb3-4efc-92bf-ee13373371e3) + #[derive(Default)] + pub struct RequestFlags: u8 { + const RESTRICTED_ADMIN_MODE_REQUIRED = 0x01; + const REDIRECTED_AUTHENTICATION_MODE_REQUIRED = 0x02; + const CORRELATION_INFO_PRESENT = 0x08; + } +} + +bitflags! { + /// Holds the negotiation protocol flags of the *response* message. + /// + /// # MSDN + /// + /// * [RDP Negotiation Response (RDP_NEG_RSP)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/b2975bdc-6d56-49ee-9c57-f2ff3a0b6817) + #[derive(Default)] + pub struct ResponseFlags: u8 { + const EXTENDED_CLIENT_DATA_SUPPORTED = 0x01; + const DYNVC_GFX_PROTOCOL_SUPPORTED = 0x02; + const RDP_NEG_RSP_RESERVED = 0x04; + const RESTRICTED_ADMIN_MODE_SUPPORTED = 0x08; + const REDIRECTED_AUTHENTICATION_MODE_SUPPORTED = 0x10; + } +} + +/// The type of the negotiation error. May be contained in +/// [`ResponseData`](enum.ResponseData.html). +#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] +pub enum FailureCode { + SSLRequiredByServer = 1, + SSLNotAllowedByServer = 2, + SSLCertNotOnServer = 3, + InconsistentFlags = 4, + HybridRequiredByServer = 5, + /// Used when the failure caused by [`ResponseFailure`](struct.ResponseFailure.html). + SSLWithUserAuthRequiredByServer = 6, +} + +/// The kind of the negotiation request message, including the message as a +/// [`String`](https://doc.rust-lang.org/std/string/struct.String.html). +/// +/// # MSDN +/// +/// * [Client X.224 Connection Request PDU](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/18a27ef9-6f9a-4501-b000-94b1fe3c2c10) +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum NegoData { + RoutingToken(String), + Cookie(String), +} + +/// The type of the error that may result from a negotiation process. +#[derive(Debug, Error)] +pub enum NegotiationError { + /// Corresponds for an I/O error that may occur during a negotiation process + /// (invalid response code, invalid security protocol code, etc.) + #[error("IO error")] + IOError(#[from] io::Error), + /// May indicate about a negotiation error recieved from a server. + #[error("Received negotiation error from server, code={0:?}")] + ResponseFailure(FailureCode), + #[error("Invalid tpkt header version")] + TpktVersionError, +} + +impl From for io::Error { + fn from(e: NegotiationError) -> io::Error { + io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {}", e)) + } +} + +#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] +enum Message { + Request = 1, + Response = 2, + Failure = 3, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Request { + pub nego_data: Option, + pub flags: RequestFlags, + pub protocol: SecurityProtocol, + pub src_ref: u16, +} + +impl PduParsing for Request { + type Error = NegotiationError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let tpkt = TpktHeader::from_buffer(&mut stream)?; + + crate::x224::read_and_check_tpdu_header(&mut stream, X224TPDUType::ConnectionRequest)?; + + let _dst_ref = stream.read_u16::()?; + let src_ref = stream.read_u16::()?; + + read_and_check_class(&mut stream, 0)?; + + let mut buffer = vec![0u8; tpkt.length - TPDU_REQUEST_LENGTH]; + + stream.read_exact(buffer.as_mut_slice())?; + let mut stream = buffer.as_slice(); + + let nego_data = if let Some((nego_data, read_len)) = read_nego_data(stream) { + stream.consume(read_len); + + Some(nego_data) + } else { + None + }; + + if stream.len() >= RDP_NEG_DATA_LENGTH as usize { + let neg_req = Message::from_u8(stream.read_u8()?).ok_or_else(|| { + NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid negotiation request code", + )) + })?; + if neg_req != Message::Request { + return Err(NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid negotiation request code", + ))); + } + + let flags = RequestFlags::from_bits_truncate(stream.read_u8()?); + let _length = stream.read_u16::()?; + let protocol = SecurityProtocol::from_bits_truncate(stream.read_u32::()?); + + Ok(Self { + nego_data, + flags, + protocol, + src_ref, + }) + } else { + Ok(Self { + nego_data, + flags: RequestFlags::empty(), + protocol: SecurityProtocol::RDP, + src_ref, + }) + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + TpktHeader::new(self.buffer_length()).to_buffer(&mut stream)?; + + let tpdu_length = self.buffer_length() - TPKT_HEADER_LENGTH - 1; + stream.write_u8(tpdu_length as u8)?; + + stream.write_u8(X224TPDUType::ConnectionRequest.to_u8().unwrap())?; + stream.write_u16::(0)?; // dst_ref + stream.write_u16::(self.src_ref)?; + stream.write_u8(0)?; // class + + match &self.nego_data { + Some(NegoData::Cookie(s)) => writeln!(&mut stream, "{}{}\r", COOKIE_PREFIX, s)?, + Some(NegoData::RoutingToken(s)) => writeln!(&mut stream, "{}{}\r", ROUTING_TOKEN_PREFIX, s)?, + None => (), + } + + if self.protocol.bits() > SecurityProtocol::RDP.bits() { + stream.write_u8(Message::Request.to_u8().unwrap())?; + stream.write_u8(self.flags.bits())?; + stream.write_u16::(RDP_NEG_DATA_LENGTH as u16)?; + stream.write_u32::(self.protocol.bits())?; + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + TPDU_REQUEST_LENGTH + + match &self.nego_data { + Some(NegoData::Cookie(s)) => s.len() + COOKIE_PREFIX.len() + CR_LF_SEQ_LENGTH, + Some(NegoData::RoutingToken(s)) => s.len() + ROUTING_TOKEN_PREFIX.len() + CR_LF_SEQ_LENGTH, + None => 0, + } + + if self.protocol.bits() > SecurityProtocol::RDP.bits() { + usize::from(RDP_NEG_DATA_LENGTH) + } else { + 0 + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ResponseData { + Confirm { + flags: ResponseFlags, + protocol: SecurityProtocol, + }, + Failure { + code: FailureCode, + }, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Response { + pub response: Option, + pub dst_ref: u16, + pub src_ref: u16, +} + +impl PduParsing for Response { + type Error = NegotiationError; + + fn from_buffer(mut stream: impl io::Read) -> Result { + let _tpkt = TpktHeader::from_buffer(&mut stream)?; + + crate::x224::read_and_check_tpdu_header(&mut stream, X224TPDUType::ConnectionConfirm)?; + + let dst_ref = stream.read_u16::()?; + let src_ref = stream.read_u16::()?; + + read_and_check_class(&mut stream, 0)?; + + let neg_resp = Message::from_u8(stream.read_u8()?).ok_or_else(|| { + NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid negotiation response code", + )) + })?; + let flags = ResponseFlags::from_bits_truncate(stream.read_u8()?); + let _length = stream.read_u16::()?; + + match neg_resp { + Message::Response => { + let protocol = SecurityProtocol::from_bits_truncate(stream.read_u32::()?); + + Ok(Self { + response: Some(ResponseData::Confirm { flags, protocol }), + dst_ref, + src_ref, + }) + } + Message::Failure => { + let error = FailureCode::from_u32(stream.read_u32::()?).ok_or_else(|| { + NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid negotiation failure code", + )) + })?; + + Err(NegotiationError::ResponseFailure(error)) + } + _ => Err(NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid security protocol code", + ))), + } + } + + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + TpktHeader::new(self.buffer_length()).to_buffer(&mut stream)?; + + let tpdu_length = self.buffer_length() - TPKT_HEADER_LENGTH - 1; + stream.write_u8(tpdu_length as u8)?; + + stream.write_u8(X224TPDUType::ConnectionConfirm.to_u8().unwrap())?; + stream.write_u16::(self.dst_ref)?; + stream.write_u16::(self.src_ref)?; + stream.write_u8(0)?; // class + + match &self.response { + Some(ResponseData::Confirm { flags, protocol }) => { + stream.write_u8(Message::Response.to_u8().unwrap())?; + stream.write_u8(flags.bits())?; + stream.write_u16::(RDP_NEG_DATA_LENGTH)?; + stream.write_u32::(protocol.bits())?; + } + Some(ResponseData::Failure { code }) => { + stream.write_u8(Message::Failure.to_u8().unwrap())?; + stream.write_u8(0)?; // flags + stream.write_u16::(RDP_NEG_DATA_LENGTH)?; + stream.write_u32::(code.to_u32().unwrap())?; + } + None => (), + } + + Ok(()) + } + + fn buffer_length(&self) -> usize { + TPDU_REQUEST_LENGTH + RDP_NEG_DATA_LENGTH as usize + } +} + +fn read_nego_data(stream: &[u8]) -> Option<(NegoData, usize)> { + if let Ok((routing_token, read_len)) = read_string_with_cr_lf(stream, ROUTING_TOKEN_PREFIX) { + Some((NegoData::RoutingToken(routing_token), read_len)) + } else if let Ok((cookie, read_len)) = read_string_with_cr_lf(stream, COOKIE_PREFIX) { + Some((NegoData::Cookie(cookie), read_len)) + } else { + None + } +} + +fn read_string_with_cr_lf(mut stream: impl io::BufRead, start: &str) -> io::Result<(String, usize)> { + let mut read_start = String::new(); + stream + .by_ref() + .take(start.len() as u64) + .read_to_string(&mut read_start)?; + + if read_start == start { + let mut value = String::new(); + stream.read_line(&mut value)?; + match value.pop() { + Some('\n') => (), + _ => { + return Err(io::Error::new( + io::ErrorKind::UnexpectedEof, + "message uncorrectly terminated", + )); + } + } + match value.pop() { + Some('\r') => (), // cr + _ => { + return Err(io::Error::new( + io::ErrorKind::UnexpectedEof, + "message is not terminated with cr", + )); + } + } + let value_len = value.len(); + + Ok((value, start.len() + value_len + CR_LF_SEQ_LENGTH)) + } else { + Err(io::Error::new( + io::ErrorKind::InvalidData, + "invalid or unsuppored message", + )) + } +} + +fn read_and_check_class(mut stream: impl io::Read, required_class: u8) -> Result<(), NegotiationError> { + let class = stream.read_u8()?; + + if class != required_class { + return Err(NegotiationError::IOError(io::Error::new( + io::ErrorKind::InvalidData, + "invalid tpdu class", + ))); + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn rdp_negotiation_data_is_written_to_request_if_nla_security() { + let mut buffer = Vec::new(); + let expected = [0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00]; + + let request = Request { + nego_data: Some(NegoData::Cookie("a".to_string())), + flags: RequestFlags::empty(), + protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, + src_ref: 0, + }; + + request.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer[buffer.len() - usize::from(RDP_NEG_DATA_LENGTH)..], expected); + } + + #[test] + fn rdp_negotiation_data_is_not_written_if_rdp_security() { + #[rustfmt::skip] + let expected = [ + // tpkt header + 0x3u8, // version + 0x0, // reserved + 0x00, 0x22, // lenght in BE + + // tpdu + 0x1d, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, + 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, + ]; + let mut buff = Vec::new(); + + let request = Request { + nego_data: Some(NegoData::Cookie("User".to_string())), + flags: RequestFlags::empty(), + protocol: SecurityProtocol::RDP, + src_ref: 0, + }; + + request.to_buffer(&mut buff).unwrap(); + + assert_eq!(expected.as_ref(), buff.as_slice()); + } + + #[test] + fn negotiation_request_is_written_correclty() { + #[rustfmt::skip] + let expected = [ + // tpkt header + 0x3u8, // version + 0x0, // reserved + 0x00, 0x2a, // lenght in BE + + // tpdu + 0x25, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, + 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x00, + ]; + let mut buff = Vec::new(); + + let request = Request { + nego_data: Some(NegoData::Cookie("User".to_string())), + flags: RequestFlags::empty(), + protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, + src_ref: 0, + }; + + request.to_buffer(&mut buff).unwrap(); + + assert_eq!(expected.as_ref(), buff.as_slice()); + } + + #[test] + fn negotiation_response_is_processed_correctly() { + let expected_flags = ResponseFlags::all(); + + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x02, // negotiation message + expected_flags.bits(), + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // selected protocol + ]; + + let response_data = Some(ResponseData::Confirm { + flags: expected_flags, + protocol: SecurityProtocol::HYBRID, + }); + + let response = Response { + response: response_data, + dst_ref: 0, + src_ref: 0, + }; + + assert_eq!(response, Response::from_buffer(buffer.as_ref()).unwrap()); + } + + #[test] + fn wrong_message_code_in_negotiation_response_results_in_error() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0xAF, // negotiation message + 0x1F, // flags + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // selected protocol + ]; + + match Response::from_buffer(buffer.as_ref()) { + Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn negotiation_failure_in_response_results_in_error() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x03, // negotiation message + 0x1F, // flags + 0x08, 0x00, // length + 0x06, 0x00, 0x00, 0x00, // failure code + ]; + + match Response::from_buffer(buffer.as_ref()) { + Err(NegotiationError::ResponseFailure(e)) if e == FailureCode::SSLWithUserAuthRequiredByServer => {} + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn cookie_in_request_is_parsed_correctly() { + let request = [ + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, + 0x73, 0x65, 0x72, 0x0D, 0x0A, 0xFF, 0xFF, + ]; + + let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); + + match nego_data { + NegoData::Cookie(cookie) => assert_eq!(cookie, "User"), + _ => panic!("Cookie expected"), + }; + } + + #[test] + fn routing_token_in_request_is_parsed_correctly() { + let request = [ + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x3D, 0x33, 0x36, 0x34, 0x30, 0x32, + 0x30, 0x35, 0x32, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, + 0xFF, 0xFF, + ]; + + let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); + + match nego_data { + NegoData::RoutingToken(routing_token) => assert_eq!(routing_token, "3640205228.15629.0000"), + _ => panic!("Routing token expected"), + }; + } + + #[test] + fn read_string_with_cr_lf_on_non_value_results_in_error() { + let request = [ + 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x0F, 0x42, 0x73, 0x65, 0x72, 0x0D, + 0x0A, 0xFF, 0xFF, + ]; + + match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { + Err(ref e) if e.kind() == io::ErrorKind::InvalidData => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn read_string_with_cr_lf_on_unterminated_message_results_in_error() { + let request = [ + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, + 0x73, 0x65, 0x72, + ]; + + match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { + Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn read_string_with_cr_lf_on_unterminated_with_cr_message() { + let request = [ + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x0a, + ]; + + match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { + Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn negotiation_request_with_negotiation_data_is_parsed_correctly() { + let expected_flags = + RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; + + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x2a, // lenght in BE + + // tpdu + 0x6, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, + 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie + 0x01, // request code + expected_flags.bits(), + 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message + ]; + + let request = Request { + nego_data: Some(NegoData::Cookie("User".to_string())), + flags: expected_flags, + protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, + src_ref: 0, + }; + + assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); + } + + #[test] + fn negotiation_request_without_variable_fields_is_parsed_correctly() { + let expected_flags = + RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; + + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + // tpdu + 0x6, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x01, // request code + expected_flags.bits(), + 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message + ]; + + let request = Request { + nego_data: None, + flags: expected_flags, + protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, + src_ref: 0, + }; + + assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); + } + + #[test] + fn negotiation_request_without_negotiation_data_is_parsed_correctly() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x22, // lenght in BE + // tpdu + 0x6, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, + 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie + ]; + + let request = Request { + nego_data: Some(NegoData::Cookie("User".to_string())), + flags: RequestFlags::empty(), + protocol: SecurityProtocol::RDP, + src_ref: 0, + }; + + assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); + } + + #[test] + fn negotiation_request_with_invalid_negotiation_code_results_in_error() { + #[rustfmt::skip] + let request = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x2a, // lenght in BE + // tpdu + 0x6, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, + 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie + 0x03, // request code + 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message + ]; + + match Request::from_buffer(request.as_ref()) { + Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } + + #[test] + fn negotiation_response_is_written_correctly() { + let flags = ResponseFlags::all(); + + #[rustfmt::skip] + let expected = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x0e, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x02, // negotiation message + flags.bits(), + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // selected protocol + ]; + + let mut buffer = Vec::new(); + + let response_data = Some(ResponseData::Confirm { + flags, + protocol: SecurityProtocol::HYBRID, + }); + + let response = Response { + response: response_data, + dst_ref: 0, + src_ref: 0, + }; + + response.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, expected); + } + + #[test] + fn negotiation_error_is_written_correclty() { + #[rustfmt::skip] + let expected = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x0e, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x03, // negotiation message + 0x00, + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // error code + ]; + + let mut buffer = Vec::new(); + + let failure_data = Some(ResponseData::Failure { + code: FailureCode::SSLNotAllowedByServer, + }); + + let response = Response { + response: failure_data, + dst_ref: 0, + src_ref: 0, + }; + + response.to_buffer(&mut buffer).unwrap(); + + assert_eq!(buffer, expected); + } + + #[test] + fn buffer_length_is_correct_for_negatiation_request() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x2a, // lenght in BE + + // tpdu + 0x6, // length + 0xe0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, + 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x00, + ]; + + let request = Request { + nego_data: Some(NegoData::Cookie("User".to_string())), + flags: RequestFlags::empty(), + protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, + src_ref: 0, + }; + + assert_eq!(request.buffer_length(), buffer.len()); + } + + #[test] + fn buffer_length_is_correct_for_negotiation_response() { + let flags = ResponseFlags::all(); + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, + 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, + 0x00, // dst_ref + 0x00, + 0x00, // src_ref + 0x00, // class + + 0x02, // negotiation message + flags.bits(), + 0x08, + 0x00, // length + 0x02, + 0x00, + 0x00, + 0x00, // selected protocol + ]; + + let response_data = Some(ResponseData::Confirm { + flags, + protocol: SecurityProtocol::HYBRID, + }); + + let response = Response { + response: response_data, + dst_ref: 0, + src_ref: 0, + }; + + assert_eq!(response.buffer_length(), buffer.len()); + } + + #[test] + fn from_buffer_correctly_parses_negotiation_failure() { + #[rustfmt::skip] + let expected = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x03, // negotiation message + 0x00, + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // error code + ]; + + match Response::from_buffer(expected.as_ref()) { + Err(NegotiationError::ResponseFailure(_)) => (), + Err(e) => panic!("invalid error type: {}", e), + Ok(_) => panic!("error expected"), + } + } + + #[test] + fn buffer_length_is_correct_for_negotiation_failure() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + + 0x03, // negotiation message + 0x00, 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // error code + ]; + + let failure_data = Some(ResponseData::Failure { + code: FailureCode::SSLNotAllowedByServer, + }); + + let failure = Response { + response: failure_data, + dst_ref: 0, + src_ref: 0, + }; + + assert_eq!(buffer.len(), failure.buffer_length()); + } + + #[test] + fn read_and_check_tpdu_header_reads_invalid_data_correctly() { + let buffer = [ + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + ]; + + assert!(crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::Data).is_err()); + } + + #[test] + fn read_and_check_tpdu_header_reads_correct_data_correctly() { + let buffer = [ + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x00, // class + ]; + + crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::ConnectionConfirm).unwrap(); + } + + #[test] + fn invalid_class_is_handeled_correctly() { + #[rustfmt::skip] + let buffer = [ + // tpkt header + 0x3, // version + 0x0, // reserved + 0x00, 0x13, // lenght in BE + + // tpdu + 0x6, // length + 0xd0, // code + 0x00, 0x00, // dst_ref + 0x00, 0x00, // src_ref + 0x01, // class + + 0x03, // negotiation message + 0x00, + 0x08, 0x00, // length + 0x02, 0x00, 0x00, 0x00, // error code + ]; + + assert!(Response::from_buffer(buffer.as_ref()).is_err()); + } + + #[test] + fn parse_negotiation_request_correctly_handles_invalid_slice_length() { + let request = [ + 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, + 0x0a, // failing cookie + ]; + + match Request::from_buffer(request.as_ref()) { + Err(NegotiationError::TpktVersionError) => (), + Err(e) => panic!("wrong error type: {}", e), + _ => panic!("error expected"), + } + } +} diff --git a/ironrdp-core/src/gcc/core_data/client.rs b/ironrdp-core/src/gcc/core_data/client.rs index 23d431ee..c84a8769 100644 --- a/ironrdp-core/src/gcc/core_data/client.rs +++ b/ironrdp-core/src/gcc/core_data/client.rs @@ -10,7 +10,7 @@ use num_traits::{FromPrimitive, ToPrimitive}; use tap::Pipe as _; use super::{CoreDataError, RdpVersion, VERSION_SIZE}; -use crate::{nego, try_read_optional, try_write_optional, utils, PduParsing}; +use crate::{connection_initiation, try_read_optional, try_write_optional, utils, PduParsing}; pub const IME_FILE_NAME_SIZE: usize = 64; @@ -185,7 +185,7 @@ pub struct ClientCoreOptionalData { pub early_capability_flags: Option, pub dig_product_id: Option, pub connection_type: Option, - pub server_selected_protocol: Option, + pub server_selected_protocol: Option, pub desktop_physical_width: Option, pub desktop_physical_height: Option, pub desktop_orientation: Option, @@ -238,8 +238,11 @@ impl PduParsing for ClientCoreOptionalData { try_read_optional!(buffer.read_u8(), optional_data); // pad1octet optional_data.server_selected_protocol = Some( - nego::SecurityProtocol::from_bits(try_read_optional!(buffer.read_u32::(), optional_data)) - .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, + connection_initiation::SecurityProtocol::from_bits(try_read_optional!( + buffer.read_u32::(), + optional_data + )) + .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, ); optional_data.desktop_physical_width = @@ -290,9 +293,10 @@ impl PduParsing for ClientCoreOptionalData { buffer.write_u8(0)?; // pad1octet - try_write_optional!(self.server_selected_protocol, |value: &nego::SecurityProtocol| { - buffer.write_u32::(value.bits()) - }); + try_write_optional!( + self.server_selected_protocol, + |value: &connection_initiation::SecurityProtocol| { buffer.write_u32::(value.bits()) } + ); try_write_optional!(self.desktop_physical_width, |value: &u32| buffer .write_u32::(*value)); diff --git a/ironrdp-core/src/gcc/core_data/client/test.rs b/ironrdp-core/src/gcc/core_data/client/test.rs index 786b49ff..a057cda7 100644 --- a/ironrdp-core/src/gcc/core_data/client/test.rs +++ b/ironrdp-core/src/gcc/core_data/client/test.rs @@ -1,8 +1,8 @@ use lazy_static::lazy_static; +use crate::connection_initiation; use crate::gcc::core_data::client::*; use crate::gcc::core_data::*; -use crate::nego; const CLIENT_CORE_DATA_BUFFER: [u8; 128] = [ 0x04, 0x00, 0x08, 0x00, // version @@ -84,7 +84,7 @@ lazy_static! { data.optional_data.early_capability_flags = Some(ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU); data.optional_data.dig_product_id = Some(String::from("69712-783-0357974-42714")); data.optional_data.connection_type = Some(ConnectionType::NotUsed); - data.optional_data.server_selected_protocol = Some(nego::SecurityProtocol::RDP); + data.optional_data.server_selected_protocol = Some(connection_initiation::SecurityProtocol::RDP); data }; diff --git a/ironrdp-core/src/gcc/core_data/server.rs b/ironrdp-core/src/gcc/core_data/server.rs index a1969859..12d97966 100644 --- a/ironrdp-core/src/gcc/core_data/server.rs +++ b/ironrdp-core/src/gcc/core_data/server.rs @@ -8,7 +8,7 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use tap::Pipe as _; use super::{CoreDataError, RdpVersion, VERSION_SIZE}; -use crate::{nego, try_read_optional, try_write_optional, PduParsing}; +use crate::{connection_initiation, try_read_optional, try_write_optional, PduParsing}; const CLIENT_REQUESTED_PROTOCOL_SIZE: usize = 4; const EARLY_CAPABILITY_FLAGS_SIZE: usize = 4; @@ -41,7 +41,7 @@ impl PduParsing for ServerCoreData { #[derive(Debug, Clone, PartialEq, Eq, Default)] pub struct ServerCoreOptionalData { - pub client_requested_protocols: Option, + pub client_requested_protocols: Option, pub early_capability_flags: Option, } @@ -52,8 +52,11 @@ impl PduParsing for ServerCoreOptionalData { let mut optional_data = Self::default(); optional_data.client_requested_protocols = Some( - nego::SecurityProtocol::from_bits(try_read_optional!(buffer.read_u32::(), optional_data)) - .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, + connection_initiation::SecurityProtocol::from_bits(try_read_optional!( + buffer.read_u32::(), + optional_data + )) + .ok_or(CoreDataError::InvalidServerSecurityProtocol)?, ); optional_data.early_capability_flags = Some( @@ -65,9 +68,10 @@ impl PduParsing for ServerCoreOptionalData { } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - try_write_optional!(self.client_requested_protocols, |value: &nego::SecurityProtocol| { - buffer.write_u32::(value.bits()) - }); + try_write_optional!( + self.client_requested_protocols, + |value: &connection_initiation::SecurityProtocol| { buffer.write_u32::(value.bits()) } + ); try_write_optional!(self.early_capability_flags, |value: &ServerEarlyCapabilityFlags| buffer .write_u32::(value.bits())); diff --git a/ironrdp-core/src/gcc/core_data/server/test.rs b/ironrdp-core/src/gcc/core_data/server/test.rs index 134ade8a..a0e908c4 100644 --- a/ironrdp-core/src/gcc/core_data/server/test.rs +++ b/ironrdp-core/src/gcc/core_data/server/test.rs @@ -1,8 +1,8 @@ use lazy_static::lazy_static; +use crate::connection_initiation; use crate::gcc::core_data::server::*; use crate::gcc::core_data::*; -use crate::nego; const SERVER_CORE_DATA_BUFFER: [u8; 4] = [ 0x04, 0x00, 0x08, 0x00, // version @@ -25,14 +25,14 @@ lazy_static! { pub static ref SERVER_CORE_DATA_TO_FLAGS: ServerCoreData = ServerCoreData { version: RdpVersion::V5_PLUS, optional_data: ServerCoreOptionalData { - client_requested_protocols: Some(nego::SecurityProtocol::RDP), + client_requested_protocols: Some(connection_initiation::SecurityProtocol::RDP), early_capability_flags: None, }, }; pub static ref SERVER_CORE_DATA_WITH_ALL_OPTIONAL_FIELDS: ServerCoreData = ServerCoreData { version: RdpVersion::V5_PLUS, optional_data: ServerCoreOptionalData { - client_requested_protocols: Some(nego::SecurityProtocol::RDP), + client_requested_protocols: Some(connection_initiation::SecurityProtocol::RDP), early_capability_flags: Some(ServerEarlyCapabilityFlags::EDGE_ACTIONS_SUPPORTED_V1), }, }; diff --git a/ironrdp-core/src/lib.rs b/ironrdp-core/src/lib.rs index 74e49233..4183237c 100644 --- a/ironrdp-core/src/lib.rs +++ b/ironrdp-core/src/lib.rs @@ -6,7 +6,6 @@ pub mod gcc; pub mod geometry; pub mod input; pub mod mcs; -pub mod nego; pub mod rdp; pub mod utils; @@ -17,11 +16,13 @@ pub(crate) mod per; pub(crate) mod preconnection; pub(crate) mod x224; +mod connection_initiation; + use thiserror::Error; pub use crate::basic_output::{bitmap, fast_path, surface_commands}; +pub use crate::connection_initiation::*; pub use crate::mcs::{ConnectInitial, ConnectResponse, McsError, McsPdu, SendDataContext}; -pub use crate::nego::*; pub use crate::preconnection::{PreconnectionPdu, PreconnectionPduError}; pub use crate::rdp::vc::dvc; pub use crate::rdp::{ @@ -51,25 +52,28 @@ pub trait PduBufferParsing<'a>: Sized { fn buffer_length(&self) -> usize; } -pub enum RdpPdu { - X224(x224::Data), +pub enum PduHeader { + X224(x224::DataHeader), FastPath(fast_path::FastPathHeader), } -impl PduParsing for RdpPdu { +impl PduParsing for PduHeader { type Error = RdpError; fn from_buffer(mut stream: impl std::io::Read) -> Result { - use bit_field::BitField; - use byteorder::ReadBytesExt; - use num_traits::FromPrimitive; + use bit_field::BitField as _; + use byteorder::ReadBytesExt as _; + use num_traits::FromPrimitive as _; let header = stream.read_u8()?; let action = header.get_bits(0..2); let action = Action::from_u8(action).ok_or(RdpError::InvalidActionCode(action))?; match action { - Action::X224 => Ok(Self::X224(x224::Data::from_buffer_with_version(&mut stream, header)?)), + Action::X224 => Ok(Self::X224(x224::DataHeader::from_buffer_with_version( + &mut stream, + header, + )?)), Action::FastPath => Ok(Self::FastPath(fast_path::FastPathHeader::from_buffer_with_header( &mut stream, header, @@ -97,7 +101,7 @@ pub enum RdpError { #[error("IO error")] IOError(#[from] std::io::Error), #[error("X224 error")] - X224Error(#[from] nego::NegotiationError), + X224Error(#[from] connection_initiation::NegotiationError), #[error("Surface Commands error")] FastPathError(#[from] fast_path::FastPathError), #[error("Received invalid action code: {0}")] diff --git a/ironrdp-core/src/nego.rs b/ironrdp-core/src/nego.rs deleted file mode 100644 index af2e6e51..00000000 --- a/ironrdp-core/src/nego.rs +++ /dev/null @@ -1,392 +0,0 @@ -#[cfg(test)] -mod tests; - -use std::io; -use std::io::prelude::*; - -use bitflags::bitflags; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use num_derive::{FromPrimitive, ToPrimitive}; -use num_traits::{FromPrimitive, ToPrimitive}; -use thiserror::Error; - -use crate::x224::{TpktHeader, X224TPDUType, TPDU_REQUEST_LENGTH, TPKT_HEADER_LENGTH}; -use crate::PduParsing; - -const COOKIE_PREFIX: &str = "Cookie: mstshash="; -const ROUTING_TOKEN_PREFIX: &str = "Cookie: msts="; - -const RDP_NEG_DATA_LENGTH: u16 = 8; -const CR_LF_SEQ_LENGTH: usize = 2; - -bitflags! { - /// The communication protocol which the client and server agree to transfer - /// data on during the X.224 phase. - /// - /// # MSDN - /// - /// * [RDP Negotiation Request (RDP_NEG_REQ)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/902b090b-9cb3-4efc-92bf-ee13373371e3) - pub struct SecurityProtocol: u32 { - const RDP = 0; - const SSL = 1; - const HYBRID = 2; - const RDSTLS = 4; - const HYBRID_EX = 8; - } -} - -bitflags! { - /// Holds the negotiation protocol flags of the *request* message. - /// - /// # MSDN - /// - /// * [RDP Negotiation Request (RDP_NEG_REQ)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/902b090b-9cb3-4efc-92bf-ee13373371e3) - #[derive(Default)] - pub struct RequestFlags: u8 { - const RESTRICTED_ADMIN_MODE_REQUIRED = 0x01; - const REDIRECTED_AUTHENTICATION_MODE_REQUIRED = 0x02; - const CORRELATION_INFO_PRESENT = 0x08; - } -} - -bitflags! { - /// Holds the negotiation protocol flags of the *response* message. - /// - /// # MSDN - /// - /// * [RDP Negotiation Response (RDP_NEG_RSP)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/b2975bdc-6d56-49ee-9c57-f2ff3a0b6817) - #[derive(Default)] - pub struct ResponseFlags: u8 { - const EXTENDED_CLIENT_DATA_SUPPORTED = 0x01; - const DYNVC_GFX_PROTOCOL_SUPPORTED = 0x02; - const RDP_NEG_RSP_RESERVED = 0x04; - const RESTRICTED_ADMIN_MODE_SUPPORTED = 0x08; - const REDIRECTED_AUTHENTICATION_MODE_SUPPORTED = 0x10; - } -} - -/// The type of the negotiation error. May be contained in -/// [`ResponseData`](enum.ResponseData.html). -#[derive(Copy, Clone, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] -pub enum FailureCode { - SSLRequiredByServer = 1, - SSLNotAllowedByServer = 2, - SSLCertNotOnServer = 3, - InconsistentFlags = 4, - HybridRequiredByServer = 5, - /// Used when the failure caused by [`ResponseFailure`](struct.ResponseFailure.html). - SSLWithUserAuthRequiredByServer = 6, -} - -/// The kind of the negotiation request message, including the message as a -/// [`String`](https://doc.rust-lang.org/std/string/struct.String.html). -/// -/// # MSDN -/// -/// * [Client X.224 Connection Request PDU](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/18a27ef9-6f9a-4501-b000-94b1fe3c2c10) -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum NegoData { - RoutingToken(String), - Cookie(String), -} - -/// The type of the error that may result from a negotiation process. -#[derive(Debug, Error)] -pub enum NegotiationError { - /// Corresponds for an I/O error that may occur during a negotiation process - /// (invalid response code, invalid security protocol code, etc.) - #[error("IO error")] - IOError(#[from] io::Error), - /// May indicate about a negotiation error recieved from a server. - #[error("Received negotiation error from server, code={0:?}")] - ResponseFailure(FailureCode), - #[error("Invalid tpkt header version")] - TpktVersionError, -} - -impl From for io::Error { - fn from(e: NegotiationError) -> io::Error { - io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {}", e)) - } -} - -#[derive(Copy, Clone, Debug, PartialEq, FromPrimitive, ToPrimitive)] -enum Message { - Request = 1, - Response = 2, - Failure = 3, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Request { - pub nego_data: Option, - pub flags: RequestFlags, - pub protocol: SecurityProtocol, - pub src_ref: u16, -} - -impl PduParsing for Request { - type Error = NegotiationError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let tpkt = TpktHeader::from_buffer(&mut stream)?; - - crate::x224::read_and_check_tpdu_header(&mut stream, X224TPDUType::ConnectionRequest)?; - - let _dst_ref = stream.read_u16::()?; - let src_ref = stream.read_u16::()?; - - read_and_check_class(&mut stream, 0)?; - - let mut buffer = vec![0u8; tpkt.length - TPDU_REQUEST_LENGTH]; - - stream.read_exact(buffer.as_mut_slice())?; - let mut stream = buffer.as_slice(); - - let nego_data = if let Some((nego_data, read_len)) = read_nego_data(stream) { - stream.consume(read_len); - - Some(nego_data) - } else { - None - }; - - if stream.len() >= RDP_NEG_DATA_LENGTH as usize { - let neg_req = Message::from_u8(stream.read_u8()?).ok_or_else(|| { - NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid negotiation request code", - )) - })?; - if neg_req != Message::Request { - return Err(NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid negotiation request code", - ))); - } - - let flags = RequestFlags::from_bits_truncate(stream.read_u8()?); - let _length = stream.read_u16::()?; - let protocol = SecurityProtocol::from_bits_truncate(stream.read_u32::()?); - - Ok(Self { - nego_data, - flags, - protocol, - src_ref, - }) - } else { - Ok(Self { - nego_data, - flags: RequestFlags::empty(), - protocol: SecurityProtocol::RDP, - src_ref, - }) - } - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - TpktHeader::new(self.buffer_length()).to_buffer(&mut stream)?; - - let tpdu_length = self.buffer_length() - TPKT_HEADER_LENGTH - 1; - stream.write_u8(tpdu_length as u8)?; - - stream.write_u8(X224TPDUType::ConnectionRequest.to_u8().unwrap())?; - stream.write_u16::(0)?; // dst_ref - stream.write_u16::(self.src_ref)?; - stream.write_u8(0)?; // class - - match &self.nego_data { - Some(NegoData::Cookie(s)) => writeln!(&mut stream, "{}{}\r", COOKIE_PREFIX, s)?, - Some(NegoData::RoutingToken(s)) => writeln!(&mut stream, "{}{}\r", ROUTING_TOKEN_PREFIX, s)?, - None => (), - } - - if self.protocol.bits() > SecurityProtocol::RDP.bits() { - stream.write_u8(Message::Request.to_u8().unwrap())?; - stream.write_u8(self.flags.bits())?; - stream.write_u16::(RDP_NEG_DATA_LENGTH as u16)?; - stream.write_u32::(self.protocol.bits())?; - } - - Ok(()) - } - - fn buffer_length(&self) -> usize { - TPDU_REQUEST_LENGTH - + match &self.nego_data { - Some(NegoData::Cookie(s)) => s.len() + COOKIE_PREFIX.len() + CR_LF_SEQ_LENGTH, - Some(NegoData::RoutingToken(s)) => s.len() + ROUTING_TOKEN_PREFIX.len() + CR_LF_SEQ_LENGTH, - None => 0, - } - + if self.protocol.bits() > SecurityProtocol::RDP.bits() { - usize::from(RDP_NEG_DATA_LENGTH) - } else { - 0 - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum ResponseData { - Response { - flags: ResponseFlags, - protocol: SecurityProtocol, - }, - Failure { - code: FailureCode, - }, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Response { - pub response: Option, - pub dst_ref: u16, - pub src_ref: u16, -} - -impl PduParsing for Response { - type Error = NegotiationError; - - fn from_buffer(mut stream: impl io::Read) -> Result { - let _tpkt = TpktHeader::from_buffer(&mut stream)?; - - crate::x224::read_and_check_tpdu_header(&mut stream, X224TPDUType::ConnectionConfirm)?; - - let dst_ref = stream.read_u16::()?; - let src_ref = stream.read_u16::()?; - - read_and_check_class(&mut stream, 0)?; - - let neg_resp = Message::from_u8(stream.read_u8()?).ok_or_else(|| { - NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid negotiation response code", - )) - })?; - let flags = ResponseFlags::from_bits_truncate(stream.read_u8()?); - let _length = stream.read_u16::()?; - - match neg_resp { - Message::Response => { - let protocol = SecurityProtocol::from_bits_truncate(stream.read_u32::()?); - - Ok(Self { - response: Some(ResponseData::Response { flags, protocol }), - dst_ref, - src_ref, - }) - } - Message::Failure => { - let error = FailureCode::from_u32(stream.read_u32::()?).ok_or_else(|| { - NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid negotiation failure code", - )) - })?; - - Err(NegotiationError::ResponseFailure(error)) - } - _ => Err(NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid security protocol code", - ))), - } - } - - fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - TpktHeader::new(self.buffer_length()).to_buffer(&mut stream)?; - - let tpdu_length = self.buffer_length() - TPKT_HEADER_LENGTH - 1; - stream.write_u8(tpdu_length as u8)?; - - stream.write_u8(X224TPDUType::ConnectionConfirm.to_u8().unwrap())?; - stream.write_u16::(self.dst_ref)?; - stream.write_u16::(self.src_ref)?; - stream.write_u8(0)?; // class - - match &self.response { - Some(ResponseData::Response { flags, protocol }) => { - stream.write_u8(Message::Response.to_u8().unwrap())?; - stream.write_u8(flags.bits())?; - stream.write_u16::(RDP_NEG_DATA_LENGTH)?; - stream.write_u32::(protocol.bits())?; - } - Some(ResponseData::Failure { code }) => { - stream.write_u8(Message::Failure.to_u8().unwrap())?; - stream.write_u8(0)?; // flags - stream.write_u16::(RDP_NEG_DATA_LENGTH)?; - stream.write_u32::(code.to_u32().unwrap())?; - } - None => (), - } - - Ok(()) - } - - fn buffer_length(&self) -> usize { - TPDU_REQUEST_LENGTH + RDP_NEG_DATA_LENGTH as usize - } -} - -fn read_nego_data(stream: &[u8]) -> Option<(NegoData, usize)> { - if let Ok((routing_token, read_len)) = read_string_with_cr_lf(stream, ROUTING_TOKEN_PREFIX) { - Some((NegoData::RoutingToken(routing_token), read_len)) - } else if let Ok((cookie, read_len)) = read_string_with_cr_lf(stream, COOKIE_PREFIX) { - Some((NegoData::Cookie(cookie), read_len)) - } else { - None - } -} - -fn read_string_with_cr_lf(mut stream: impl io::BufRead, start: &str) -> io::Result<(String, usize)> { - let mut read_start = String::new(); - stream - .by_ref() - .take(start.len() as u64) - .read_to_string(&mut read_start)?; - - if read_start == start { - let mut value = String::new(); - stream.read_line(&mut value)?; - match value.pop() { - Some('\n') => (), - _ => { - return Err(io::Error::new( - io::ErrorKind::UnexpectedEof, - "message uncorrectly terminated", - )); - } - } - match value.pop() { - Some('\r') => (), // cr - _ => { - return Err(io::Error::new( - io::ErrorKind::UnexpectedEof, - "message is not terminated with cr", - )); - } - } - let value_len = value.len(); - - Ok((value, start.len() + value_len + CR_LF_SEQ_LENGTH)) - } else { - Err(io::Error::new( - io::ErrorKind::InvalidData, - "invalid or unsuppored message", - )) - } -} - -fn read_and_check_class(mut stream: impl io::Read, required_class: u8) -> Result<(), NegotiationError> { - let class = stream.read_u8()?; - - if class != required_class { - return Err(NegotiationError::IOError(io::Error::new( - io::ErrorKind::InvalidData, - "invalid tpdu class", - ))); - } - - Ok(()) -} diff --git a/ironrdp-core/src/nego/tests.rs b/ironrdp-core/src/nego/tests.rs deleted file mode 100644 index 591b9a4d..00000000 --- a/ironrdp-core/src/nego/tests.rs +++ /dev/null @@ -1,663 +0,0 @@ -use super::*; - -#[test] -fn rdp_negotiation_data_is_written_to_request_if_nla_security() { - let mut buffer = Vec::new(); - let expected = [0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00]; - - let request = Request { - nego_data: Some(NegoData::Cookie("a".to_string())), - flags: RequestFlags::empty(), - protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, - src_ref: 0, - }; - - request.to_buffer(&mut buffer).unwrap(); - - assert_eq!(buffer[buffer.len() - usize::from(RDP_NEG_DATA_LENGTH)..], expected); -} - -#[test] -fn rdp_negotiation_data_is_not_written_if_rdp_security() { - #[rustfmt::skip] - let expected = [ - // tpkt header - 0x3u8, // version - 0x0, // reserved - 0x00, 0x22, // lenght in BE - - // tpdu - 0x1d, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, - ]; - let mut buff = Vec::new(); - - let request = Request { - nego_data: Some(NegoData::Cookie("User".to_string())), - flags: RequestFlags::empty(), - protocol: SecurityProtocol::RDP, - src_ref: 0, - }; - - request.to_buffer(&mut buff).unwrap(); - - assert_eq!(expected.as_ref(), buff.as_slice()); -} - -#[test] -fn negotiation_request_is_written_correclty() { - #[rustfmt::skip] - let expected = [ - // tpkt header - 0x3u8, // version - 0x0, // reserved - 0x00, 0x2a, // lenght in BE - - // tpdu - 0x25, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, - 0x00, - ]; - let mut buff = Vec::new(); - - let request = Request { - nego_data: Some(NegoData::Cookie("User".to_string())), - flags: RequestFlags::empty(), - protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, - src_ref: 0, - }; - - request.to_buffer(&mut buff).unwrap(); - - assert_eq!(expected.as_ref(), buff.as_slice()); -} - -#[test] -fn negotiation_response_is_processed_correctly() { - let expected_flags = ResponseFlags::all(); - - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x02, // negotiation message - expected_flags.bits(), - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // selected protocol - ]; - - let response_data = Some(ResponseData::Response { - flags: expected_flags, - protocol: SecurityProtocol::HYBRID, - }); - - let response = Response { - response: response_data, - dst_ref: 0, - src_ref: 0, - }; - - assert_eq!(response, Response::from_buffer(buffer.as_ref()).unwrap()); -} - -#[test] -fn wrong_message_code_in_negotiation_response_results_in_error() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0xAF, // negotiation message - 0x1F, // flags - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // selected protocol - ]; - - match Response::from_buffer(buffer.as_ref()) { - Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn negotiation_failure_in_response_results_in_error() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x03, // negotiation message - 0x1F, // flags - 0x08, 0x00, // length - 0x06, 0x00, 0x00, 0x00, // failure code - ]; - - match Response::from_buffer(buffer.as_ref()) { - Err(NegotiationError::ResponseFailure(e)) if e == FailureCode::SSLWithUserAuthRequiredByServer => {} - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn cookie_in_request_is_parsed_correctly() { - let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, - 0x73, 0x65, 0x72, 0x0D, 0x0A, 0xFF, 0xFF, - ]; - - let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); - - match nego_data { - NegoData::Cookie(cookie) => assert_eq!(cookie, "User"), - _ => panic!("Cookie expected"), - }; -} - -#[test] -fn routing_token_in_request_is_parsed_correctly() { - let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x3D, 0x33, 0x36, 0x34, 0x30, 0x32, - 0x30, 0x35, 0x32, 0x32, 0x38, 0x2E, 0x31, 0x35, 0x36, 0x32, 0x39, 0x2E, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, - 0xFF, 0xFF, - ]; - - let (nego_data, _read_len) = read_nego_data(request.as_ref()).unwrap(); - - match nego_data { - NegoData::RoutingToken(routing_token) => assert_eq!(routing_token, "3640205228.15629.0000"), - _ => panic!("Routing token expected"), - }; -} - -#[test] -fn read_string_with_cr_lf_on_non_value_results_in_error() { - let request = [ - 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x0F, 0x42, 0x73, 0x65, 0x72, 0x0D, - 0x0A, 0xFF, 0xFF, - ]; - - match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { - Err(ref e) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn read_string_with_cr_lf_on_unterminated_message_results_in_error() { - let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, - 0x73, 0x65, 0x72, - ]; - - match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { - Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn read_string_with_cr_lf_on_unterminated_with_cr_message() { - let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x0a, - ]; - - match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { - Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn negotiation_request_with_negotiation_data_is_parsed_correctly() { - let expected_flags = - RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; - - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x2a, // lenght in BE - - // tpdu - 0x6, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, 0x55, - 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie - 0x01, // request code - expected_flags.bits(), - 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message - ]; - - let request = Request { - nego_data: Some(NegoData::Cookie("User".to_string())), - flags: expected_flags, - protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, - src_ref: 0, - }; - - assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); -} - -#[test] -fn negotiation_request_without_variable_fields_is_parsed_correctly() { - let expected_flags = - RequestFlags::RESTRICTED_ADMIN_MODE_REQUIRED | RequestFlags::REDIRECTED_AUTHENTICATION_MODE_REQUIRED; - - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - // tpdu - 0x6, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x01, // request code - expected_flags.bits(), - 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message - ]; - - let request = Request { - nego_data: None, - flags: expected_flags, - protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, - src_ref: 0, - }; - - assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); -} - -#[test] -fn negotiation_request_without_negotiation_data_is_parsed_correctly() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x22, // lenght in BE - // tpdu - 0x6, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie - ]; - - let request = Request { - nego_data: Some(NegoData::Cookie("User".to_string())), - flags: RequestFlags::empty(), - protocol: SecurityProtocol::RDP, - src_ref: 0, - }; - - assert_eq!(request, Request::from_buffer(buffer.as_ref()).unwrap()); -} - -#[test] -fn negotiation_request_with_invalid_negotiation_code_results_in_error() { - #[rustfmt::skip] - let request = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x2a, // lenght in BE - // tpdu - 0x6, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, // cookie - 0x03, // request code - 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, // request message - ]; - - match Request::from_buffer(request.as_ref()) { - Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} - -#[test] -fn negotiation_response_is_written_correctly() { - let flags = ResponseFlags::all(); - - #[rustfmt::skip] - let expected = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x0e, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x02, // negotiation message - flags.bits(), - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // selected protocol - ]; - - let mut buffer = Vec::new(); - - let response_data = Some(ResponseData::Response { - flags, - protocol: SecurityProtocol::HYBRID, - }); - - let response = Response { - response: response_data, - dst_ref: 0, - src_ref: 0, - }; - - response.to_buffer(&mut buffer).unwrap(); - - assert_eq!(buffer, expected); -} - -#[test] -fn negotiation_error_is_written_correclty() { - #[rustfmt::skip] - let expected = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x0e, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x03, // negotiation message - 0x00, - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // error code - ]; - - let mut buffer = Vec::new(); - - let failure_data = Some(ResponseData::Failure { - code: FailureCode::SSLNotAllowedByServer, - }); - - let response = Response { - response: failure_data, - dst_ref: 0, - src_ref: 0, - }; - - response.to_buffer(&mut buffer).unwrap(); - - assert_eq!(buffer, expected); -} - -#[test] -fn buffer_length_is_correct_for_negatiation_request() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x2a, // lenght in BE - - // tpdu - 0x6, // length - 0xe0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, - 0x68, 0x3D, 0x55, 0x73, 0x65, 0x72, 0x0D, 0x0A, 0x01, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, - 0x00, - ]; - - let request = Request { - nego_data: Some(NegoData::Cookie("User".to_string())), - flags: RequestFlags::empty(), - protocol: SecurityProtocol::HYBRID | SecurityProtocol::SSL, - src_ref: 0, - }; - - assert_eq!(request.buffer_length(), buffer.len()); -} - -#[test] -fn buffer_length_is_correct_for_negotiation_response() { - let flags = ResponseFlags::all(); - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, - 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, - 0x00, // dst_ref - 0x00, - 0x00, // src_ref - 0x00, // class - - 0x02, // negotiation message - flags.bits(), - 0x08, - 0x00, // length - 0x02, - 0x00, - 0x00, - 0x00, // selected protocol - ]; - - let response_data = Some(ResponseData::Response { - flags, - protocol: SecurityProtocol::HYBRID, - }); - - let response = Response { - response: response_data, - dst_ref: 0, - src_ref: 0, - }; - - assert_eq!(response.buffer_length(), buffer.len()); -} - -#[test] -fn from_buffer_correctly_parses_negotiation_failure() { - #[rustfmt::skip] - let expected = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x03, // negotiation message - 0x00, - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // error code - ]; - - match Response::from_buffer(expected.as_ref()) { - Err(NegotiationError::ResponseFailure(_)) => (), - Err(e) => panic!("invalid error type: {}", e), - Ok(_) => panic!("error expected"), - } -} - -#[test] -fn buffer_length_is_correct_for_negotiation_failure() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - - 0x03, // negotiation message - 0x00, 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // error code - ]; - - let failure_data = Some(ResponseData::Failure { - code: FailureCode::SSLNotAllowedByServer, - }); - - let failure = Response { - response: failure_data, - dst_ref: 0, - src_ref: 0, - }; - - assert_eq!(buffer.len(), failure.buffer_length()); -} - -#[test] -fn read_and_check_tpdu_header_reads_invalid_data_correctly() { - let buffer = [ - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - ]; - - assert!(crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::Data).is_err()); -} - -#[test] -fn read_and_check_tpdu_header_reads_correct_data_correctly() { - let buffer = [ - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x00, // class - ]; - - crate::x224::read_and_check_tpdu_header(buffer.as_ref(), X224TPDUType::ConnectionConfirm).unwrap(); -} - -#[test] -fn invalid_class_is_handeled_correctly() { - #[rustfmt::skip] - let buffer = [ - // tpkt header - 0x3, // version - 0x0, // reserved - 0x00, 0x13, // lenght in BE - - // tpdu - 0x6, // length - 0xd0, // code - 0x00, 0x00, // dst_ref - 0x00, 0x00, // src_ref - 0x01, // class - - 0x03, // negotiation message - 0x00, - 0x08, 0x00, // length - 0x02, 0x00, 0x00, 0x00, // error code - ]; - - assert!(Response::from_buffer(buffer.as_ref()).is_err()); -} - -#[test] -fn parse_negotiation_request_correctly_handles_invalid_slice_length() { - let request = [ - 0x43, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x3A, 0x20, 0x6D, 0x73, 0x74, 0x73, 0x68, 0x61, 0x73, 0x68, 0x3D, - 0x0a, // failing cookie - ]; - - match Request::from_buffer(request.as_ref()) { - Err(NegotiationError::TpktVersionError) => (), - Err(e) => panic!("wrong error type: {}", e), - _ => panic!("error expected"), - } -} diff --git a/ironrdp-core/src/rdp/server_license.rs b/ironrdp-core/src/rdp/server_license.rs index 2452ecc8..bb0e0ee8 100644 --- a/ironrdp-core/src/rdp/server_license.rs +++ b/ironrdp-core/src/rdp/server_license.rs @@ -5,7 +5,6 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use md5::Digest; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use ring::digest; use thiserror::Error; use crate::rdp::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; @@ -280,12 +279,13 @@ fn compute_mac_data(mac_salt_key: &[u8], data: &[u8]) -> Vec { let pad_one: [u8; 40] = [0x36; 40]; - let sha_result = digest::digest( - &digest::SHA1_FOR_LEGACY_USE_ONLY, + let mut hasher = sha1::Sha1::new(); + hasher.update( [mac_salt_key, pad_one.as_ref(), data_len_buffer.as_ref(), data] .concat() .as_slice(), ); + let sha_result = hasher.finalize(); let pad_two: [u8; 48] = [0x5c; 48]; diff --git a/ironrdp-core/src/rdp/server_license/client_new_license_request.rs b/ironrdp-core/src/rdp/server_license/client_new_license_request.rs index a4a2c87b..5f9ab1c6 100644 --- a/ironrdp-core/src/rdp/server_license/client_new_license_request.rs +++ b/ironrdp-core/src/rdp/server_license/client_new_license_request.rs @@ -6,7 +6,6 @@ use std::io; use bitflags::bitflags; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use md5::Digest; -use ring::digest; use super::{ BasicSecurityHeader, BasicSecurityHeaderFlags, BlobHeader, BlobType, LicenseEncryptionData, LicenseHeader, @@ -200,10 +199,9 @@ impl PduParsing for ClientNewLicenseRequest { } fn salted_hash(salt: &[u8], salt_first: &[u8], salt_second: &[u8], input: &[u8]) -> Vec { - let sha_result = digest::digest( - &digest::SHA1_FOR_LEGACY_USE_ONLY, - [input, salt, salt_first, salt_second].concat().as_slice(), - ); + let mut hasher = sha1::Sha1::new(); + hasher.update([input, salt, salt_first, salt_second].concat().as_slice()); + let sha_result = hasher.finalize(); let mut md5 = md5::Md5::new(); md5.update([salt, sha_result.as_ref()].concat().as_slice()); diff --git a/ironrdp-core/src/x224.rs b/ironrdp-core/src/x224.rs index 55bd5cc8..8c46420b 100644 --- a/ironrdp-core/src/x224.rs +++ b/ironrdp-core/src/x224.rs @@ -7,7 +7,7 @@ use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::nego::NegotiationError; +use crate::connection_initiation::NegotiationError; use crate::PduParsing; pub const TPKT_HEADER_LENGTH: usize = 4; @@ -40,8 +40,7 @@ impl TpktHeader { pub fn new(length: usize) -> Self { Self { length } } -} -impl TpktHeader { + pub fn from_buffer_with_version(mut stream: impl io::Read, version: u8) -> Result { if version != TPKT_VERSION { return Err(NegotiationError::TpktVersionError); @@ -77,11 +76,11 @@ impl PduParsing for TpktHeader { } #[derive(Debug, PartialEq, Eq)] -pub struct Data { +pub struct DataHeader { pub data_length: usize, } -impl Data { +impl DataHeader { pub fn new(data_length: usize) -> Self { Self { data_length } } @@ -103,7 +102,7 @@ impl Data { } } -impl PduParsing for Data { +impl PduParsing for DataHeader { type Error = NegotiationError; fn from_buffer(mut stream: impl io::Read) -> Result { diff --git a/ironrdp-core/src/x224/tests.rs b/ironrdp-core/src/x224/tests.rs index 97a11801..ac38c960 100644 --- a/ironrdp-core/src/x224/tests.rs +++ b/ironrdp-core/src/x224/tests.rs @@ -53,9 +53,9 @@ fn from_buffer_correctly_parses_data() { let mut buffer_slice = &buffer[..]; - let data_header = Data { data_length: 5 }; + let data_header = DataHeader { data_length: 5 }; - assert_eq!(data_header, Data::from_buffer(&mut buffer_slice).unwrap()); + assert_eq!(data_header, DataHeader::from_buffer(&mut buffer_slice).unwrap()); assert_eq!(5, buffer_slice.len()); } @@ -67,7 +67,7 @@ fn to_buffer_correctly_serializes_data() { 0x02, 0xf0, 0x80, // data tpdu ]; - let data_header = Data { data_length: 5 }; + let data_header = DataHeader { data_length: 5 }; let mut buffer = Vec::new(); data_header.to_buffer(&mut buffer).unwrap(); @@ -83,7 +83,7 @@ fn buffer_length_is_correct_for_data() { 0x02, 0xf0, 0x80, // data tpdu ]; - let data_header = Data { data_length: 5 }; + let data_header = DataHeader { data_length: 5 }; assert_eq!(buffer.len(), data_header.buffer_length()); } diff --git a/ironrdp-graphics/Cargo.toml b/ironrdp-graphics/Cargo.toml index 957b7402..f5ddc061 100644 --- a/ironrdp-graphics/Cargo.toml +++ b/ironrdp-graphics/Cargo.toml @@ -10,11 +10,11 @@ authors = ["Devolutions Inc. "] [dependencies] ironrdp-core = { path = "../ironrdp-core" } -num-traits = "0.2.14" +num-traits = "0.2.15" num-derive = "0.3.3" byteorder = "1.4.3" thiserror = "1.0.37" -bitvec = "1.0.0" +bitvec = "1.0.1" bit_field = "0.10.1" bitflags = "1.3.2" lazy_static = "1.4.0" diff --git a/ironrdp-gui-client/Cargo.toml b/ironrdp-gui-client/Cargo.toml index dbe17d33..7226e7b2 100644 --- a/ironrdp-gui-client/Cargo.toml +++ b/ironrdp-gui-client/Cargo.toml @@ -11,15 +11,14 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:rustls", "dep:tokio-rustls"] -native-tls = ["dep:native-tls", "dep:async-native-tls"] +rustls = ["dep:tokio-rustls"] +native-tls = ["dep:async-native-tls"] [dependencies] # Protocol ironrdp = { path = "../ironrdp" } -ironrdp-session = { path = "../ironrdp-session" } -sspi = "0.4.0" +sspi = { version = "0.6", features = ["network_client"] } # CLI clap = { version = "4.0", features = ["derive", "cargo"] } @@ -31,21 +30,18 @@ fern = "0.6" # SSL x509-parser = "0.14" -native-tls = { version = "0.2", optional = true } -rustls = { version = "0.20", features = ["dangerous_configuration"], optional = true } +async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } +tokio-rustls = { version = "0.23", features = ["dangerous_configuration"], optional = true } # async, futures tokio = { version = "1", features = ["full"]} -async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } -tokio-rustls = { version = "0.23", optional = true } tokio-util = { version = "0.7.4", features = ["compat"] } futures-util = "0.3" # Utils -chrono = "0.4.22" -image = "0.24.4" +chrono = "0.4.23" +image = "0.24.5" -# Gui -glow = { version ="0.11.0" } -glutin = { version = "0.29" } +# GUI +glutin = "0.29" ironrdp-renderer = { path = "../ironrdp-renderer"} \ No newline at end of file diff --git a/ironrdp-gui-client/src/config.rs b/ironrdp-gui-client/src/config.rs index 393066ff..158d00f5 100644 --- a/ironrdp-gui-client/src/config.rs +++ b/ironrdp-gui-client/src/config.rs @@ -1,10 +1,9 @@ -use std::net::SocketAddr; use std::num::ParseIntError; use std::path::PathBuf; use clap::clap_derive::ValueEnum; use clap::{crate_name, Parser}; -use ironrdp_session::{GraphicsConfig, InputConfig}; +use ironrdp::session::{GraphicsConfig, InputConfig}; use sspi::AuthIdentity; const DEFAULT_WIDTH: u16 = 1920; @@ -14,7 +13,7 @@ const USER_CHANNEL_NAME: &str = "USER"; pub struct Config { pub log_file: String, - pub routing_addr: SocketAddr, + pub addr: String, pub input: InputConfig, pub gfx_dump_file: Option, } @@ -27,11 +26,11 @@ enum SecurityProtocol { } impl SecurityProtocol { - fn parse(security_protocol: SecurityProtocol) -> ironrdp::nego::SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::core::SecurityProtocol { match security_protocol { - SecurityProtocol::Ssl => ironrdp::nego::SecurityProtocol::SSL, - SecurityProtocol::Hybrid => ironrdp::nego::SecurityProtocol::HYBRID, - SecurityProtocol::HybridEx => ironrdp::nego::SecurityProtocol::HYBRID_EX, + SecurityProtocol::Ssl => ironrdp::core::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::core::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::core::SecurityProtocol::HYBRID_EX, } } } @@ -77,9 +76,8 @@ struct Args { #[clap(short, long, value_parser, default_value_t = format!("{}.log", crate_name!()))] log_file: String, - /// An address on which the client will connect. Format: : - #[clap(value_parser = is_socket_address)] - addr: SocketAddr, + /// An address on which the client will connect. + addr: String, /// A target RDP server user name #[clap(short, long, value_parser)] @@ -143,11 +141,6 @@ struct Args { gfx_dump_file: Option, } -fn is_socket_address(s: &str) -> Result { - s.parse::() - .map_err(|_| String::from("The address does not match the format: :")) -} - impl Config { pub fn parse_args() -> Self { let args = Args::parse(); @@ -185,7 +178,7 @@ impl Config { Self { log_file: args.log_file, - routing_addr: args.addr, + addr: args.addr, input, gfx_dump_file: args.gfx_dump_file, } diff --git a/ironrdp-gui-client/src/gui.rs b/ironrdp-gui-client/src/gui.rs index fb4e27c9..1d0270d2 100644 --- a/ironrdp-gui-client/src/gui.rs +++ b/ironrdp-gui-client/src/gui.rs @@ -7,8 +7,8 @@ use glutin::dpi::PhysicalPosition; use glutin::event::{Event, WindowEvent}; use glutin::event_loop::ControlFlow; use ironrdp::dvc::gfx::ServerPdu; +use ironrdp::session::{ErasedWriter, GfxHandler}; use ironrdp_renderer::renderer::Renderer; -use ironrdp_session::{ErasedWriter, GfxHandler}; use tokio::sync::Mutex; use self::input::{handle_input_events, translate_input_event}; diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs index ffeba09a..1fed170c 100644 --- a/ironrdp-gui-client/src/gui/input.rs +++ b/ironrdp-gui-client/src/gui/input.rs @@ -7,8 +7,8 @@ use glutin::event::{ElementState, Event, WindowEvent}; use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; use ironrdp::core::input::MousePdu; -use ironrdp::PduParsing; -use ironrdp_session::ErasedWriter; +use ironrdp::core::PduParsing; +use ironrdp::session::ErasedWriter; use tokio::sync::Mutex; use super::UserEvent; diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-gui-client/src/main.rs index dc4eb6ee..9f744ca0 100644 --- a/ironrdp-gui-client/src/main.rs +++ b/ironrdp-gui-client/src/main.rs @@ -11,10 +11,10 @@ use futures_util::io::AsyncWriteExt as _; use gui::MessagePassingGfxHandler; use ironrdp::dvc::gfx::ServerPdu; use ironrdp::graphics::image_processing::PixelFormat; -use ironrdp_session::image::DecodedImage; -use ironrdp_session::{ - process_connection_sequence, ActiveStageOutput, ActiveStageProcessor, ErasedWriter, RdpError, UpgradedStream, -}; +use ironrdp::session::connection_sequence::{process_connection_sequence, UpgradedStream}; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, RdpError}; +use sspi::network_client::reqwest_network_client::RequestClientFactory; use tokio::io::AsyncWriteExt as _; use tokio::net::TcpStream; use tokio::sync::Mutex; @@ -35,12 +35,12 @@ mod gui; mod danger { use std::time::SystemTime; - use rustls::client::ServerCertVerified; - use rustls::{Certificate, Error, ServerName}; + use tokio_rustls::rustls::client::ServerCertVerified; + use tokio_rustls::rustls::{Certificate, Error, ServerName}; pub struct NoCertificateVerification; - impl rustls::client::ServerCertVerifier for NoCertificateVerification { + impl tokio_rustls::rustls::client::ServerCertVerifier for NoCertificateVerification { fn verify_server_cert( &self, _end_entity: &Certificate, @@ -50,7 +50,7 @@ mod danger { _ocsp_response: &[u8], _now: SystemTime, ) -> Result { - Ok(rustls::client::ServerCertVerified::assertion()) + Ok(tokio_rustls::rustls::client::ServerCertVerified::assertion()) } } } @@ -102,12 +102,18 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { } async fn run(config: Config) -> Result<(), RdpError> { - let stream = TcpStream::connect(config.routing_addr) - .await - .map_err(RdpError::ConnectionError)?; + let addr = ironrdp::session::connection_sequence::Address::lookup_addr(config.addr.clone())?; - let (connection_sequence_result, reader, writer) = - process_connection_sequence(stream.compat(), &config.routing_addr, &config.input, establish_tls).await?; + let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::ConnectionError)?; + + let (connection_sequence_result, reader, writer) = process_connection_sequence( + stream.compat(), + &addr, + &config.input, + establish_tls, + Box::new(RequestClientFactory), + ) + .await?; let writer = Arc::new(Mutex::new(writer)); let image = DecodedImage::new( @@ -121,9 +127,9 @@ async fn run(config: Config) -> Result<(), RdpError> { async fn launch_client( config: Config, - connection_sequence_result: ironrdp_session::ConnectionSequenceResult, + connection_sequence_result: ironrdp::session::connection_sequence::ConnectionSequenceResult, image: DecodedImage, - reader: ironrdp_session::FramedReader, + reader: ironrdp::session::FramedReader, writer: Arc>, ) -> Result<(), RdpError> { let (sender, receiver) = sync_channel::(1); @@ -149,15 +155,15 @@ async fn launch_client( } async fn process_active_stage( - mut reader: ironrdp_session::FramedReader, + mut reader: ironrdp::session::FramedReader, mut active_stage: ActiveStageProcessor, mut image: DecodedImage, writer: Arc>, ) -> Result<(), RdpError> { let mut frame_id = 0; 'outer: loop { - let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; - let outputs = active_stage.process(&mut image, frame).await?; + let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?.freeze(); + let outputs = active_stage.process(&mut image, frame)?; for out in outputs { match out { ActiveStageOutput::ResponseFrame(frame) => { @@ -196,12 +202,12 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< #[cfg(feature = "rustls")] let mut tls_stream = { - let mut client_config = rustls::client::ClientConfig::builder() + let mut client_config = tokio_rustls::rustls::client::ClientConfig::builder() .with_safe_defaults() .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) .with_no_client_auth(); // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) - client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); + client_config.key_log = std::sync::Arc::new(tokio_rustls::rustls::KeyLogFile::new()); let rc_config = std::sync::Arc::new(client_config); let example_com = "stub_string".try_into().unwrap(); let connector = tokio_rustls::TlsConnector::from(rc_config); diff --git a/ironrdp-renderer/Cargo.toml b/ironrdp-renderer/Cargo.toml index fee87970..ad945aac 100644 --- a/ironrdp-renderer/Cargo.toml +++ b/ironrdp-renderer/Cargo.toml @@ -14,10 +14,7 @@ path = "src/lib.rs" [dependencies] glow = "0.11" log = "0.4" -futures = "0.3.17" thiserror = "1.0.38" -byteorder = "1.3" ironrdp = { path = "../ironrdp" } glutin = { version = "0.29" } openh264 = { version = "0.3" } -tokio = { version = "1", features = ["full"]} \ No newline at end of file diff --git a/ironrdp-session-async/Cargo.toml b/ironrdp-session-async/Cargo.toml index 249adbf0..a48c0447 100644 --- a/ironrdp-session-async/Cargo.toml +++ b/ironrdp-session-async/Cargo.toml @@ -2,7 +2,17 @@ name = "ironrdp-session-async" version = "0.1.0" edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] [dependencies] +ironrdp-core = { path = "../ironrdp-core" } +ironrdp-graphics = { path = "../ironrdp-graphics" } +bytes = "1" +num-traits = "0.2.15" +bit_field = "0.10.1" +byteorder = "1.4.3" +futures-util = "0.3" diff --git a/ironrdp-session-async/src/lib.rs b/ironrdp-session-async/src/lib.rs index 8b137891..c68850e5 100644 --- a/ironrdp-session-async/src/lib.rs +++ b/ironrdp-session-async/src/lib.rs @@ -1 +1 @@ - +// pub mod framed; diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index 73b4b3e6..37741ca3 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -11,20 +11,19 @@ authors = ["Devolutions Inc. "] [dependencies] ironrdp-core = { path = "../ironrdp-core" } ironrdp-graphics = { path = "../ironrdp-graphics" } -sspi = { version = "0.4", features = ["network_client"] } +ironrdp-devolutions-gateway = { path = "../ironrdp-devolutions-gateway" } # FIXME: Quick and dirty approach, this should not be here +sspi = "0.6" bytes = "1" -chrono = "0.4" -failure = "0.1.8" log = "0.4" whoami = "1" semver = "1" num-derive = "0.3.3" -num-traits = "0.2.14" +num-traits = "0.2.15" lazy_static = "1.4" -dns-lookup = "1.0.8" bitflags = "1" -bit_field = "0.10.1" +bit_field = "0.10.1" # TODO: will be unused once the framed module is moved byteorder = "1.4.3" futures-util = "0.3" thiserror = "1.0.37" -ring = "0.16.20" # for ring::rand::SystemRandom, TODO: we might consider using `rand` instead +rand_core = "0.6.4" +x509-cert = "0.1.0" # TODO: consider removing dependency on this one in `ironrdp-session` diff --git a/ironrdp-session/src/active_session.rs b/ironrdp-session/src/active_session.rs index a5492aa0..4e305301 100644 --- a/ironrdp-session/src/active_session.rs +++ b/ironrdp-session/src/active_session.rs @@ -2,15 +2,14 @@ mod codecs; mod fast_path; mod x224; -use bytes::{BufMut as _, BytesMut}; +use bytes::{BufMut as _, Bytes, BytesMut}; use ironrdp_core::fast_path::FastPathError; use ironrdp_core::geometry::Rectangle; -use ironrdp_core::RdpPdu; +use ironrdp_core::{PduHeader, PduParsing as _}; pub use self::x224::GfxHandler; use crate::connection_sequence::ConnectionSequenceResult; use crate::image::DecodedImage; -use crate::transport::{Decoder, RdpTransport}; use crate::{utils, InputConfig, RdpError}; pub struct ActiveStageProcessor { @@ -26,7 +25,8 @@ impl ActiveStageProcessor { ) -> Self { let x224_processor = x224::Processor::new( utils::swap_hashmap_kv(connection_sequence_result.joined_static_channels), - config.global_channel_name, + connection_sequence_result.initiator_id, + connection_sequence_result.global_channel_id, config.graphics_config, graphics_handler, ); @@ -43,55 +43,66 @@ impl ActiveStageProcessor { } } - // TODO: the async part should be extracted to `ironrdp-session-async` - - pub async fn process( + // TODO: async version? + /// Sends a PDU on the dynamic channel. The upper layers are responsible for encoding the PDU and converting them to message + pub fn send_dynamic( &mut self, - image: &mut DecodedImage, - frame: BytesMut, - ) -> Result, RdpError> { - let mut output_writer = BytesMut::new().writer(); - let mut frame_reader = frame.as_ref(); + stream: impl std::io::Write, + channel_name: &str, + message: Bytes, + ) -> Result<(), RdpError> { + self.x224_processor.send_dynamic(stream, channel_name, message) + } + + // TODO: async version? + /// Send a pdu on the static global channel. Typically used to send input events + pub fn send_static( + &self, + stream: impl std::io::Write, + message: ironrdp_core::ShareDataPdu, + ) -> Result<(), RdpError> { + self.x224_processor.send_static(stream, message) + } + + pub fn process(&mut self, image: &mut DecodedImage, frame: Bytes) -> Result, RdpError> { let mut graphics_update_region = None; - match RdpTransport.decode(&mut frame_reader) { - Ok(RdpPdu::X224(data)) => { - if let Err(error) = self.x224_processor.process(frame_reader, &mut output_writer, data) { - match error { - RdpError::UnexpectedDisconnection(message) => { - warn!("User-Initiated disconnection on Server: {}", message); - return Ok(vec![ActiveStageOutput::Terminate]); - } - RdpError::UnexpectedChannel(channel_id) => { - warn!("Got message on a channel with {} ID", channel_id); - return Ok(vec![ActiveStageOutput::Terminate]); - } - err => { - return Err(err); - } - } + let output = match PduHeader::from_buffer(&frame[..]).map_err(RdpError::from) { + Ok(PduHeader::X224(_header)) => match self.x224_processor.process(frame) { + Ok(output) => output, + Err(RdpError::UnexpectedDisconnection(message)) => { + warn!("User-Initiated disconnection on Server: {}", message); + return Ok(vec![ActiveStageOutput::Terminate]); } - } - Ok(RdpPdu::FastPath(header)) => { - // skip header bytes in such way because here is possible - // that data length was written in the not right way, - // so we should skip only what has been actually read - - graphics_update_region = - self.fast_path_processor - .process(image, &header, frame_reader, &mut output_writer)?; + Err(RdpError::UnexpectedChannel(channel_id)) => { + warn!("Got message on a channel with {} ID", channel_id); + return Ok(vec![ActiveStageOutput::Terminate]); + } + Err(err) => { + return Err(err); + } + }, + Ok(PduHeader::FastPath(header)) => { + let mut output_writer = BytesMut::new().writer(); + graphics_update_region = self.fast_path_processor.process( + image, + &header, + &frame[header.buffer_length()..], + &mut output_writer, + )?; + output_writer.into_inner() } Err(RdpError::FastPathError(FastPathError::NullLength { bytes_read: _ })) => { warn!("Received null-length Fast-Path packet, dropping it"); + BytesMut::new() } Err(e) => return Err(e), - } + }; let mut stage_outputs = Vec::new(); - let output_buffer = output_writer.into_inner(); - if !output_buffer.is_empty() { - stage_outputs.push(ActiveStageOutput::ResponseFrame(output_buffer)); + if !output.is_empty() { + stage_outputs.push(ActiveStageOutput::ResponseFrame(output)); } if let Some(update_region) = graphics_update_region { diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index a2942f40..d504bca8 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -11,18 +11,15 @@ use log::{debug, info, warn}; use num_traits::FromPrimitive; use super::codecs::rfx; +use crate::frame::{Frame as _, ShareDataFrame}; use crate::image::DecodedImage; -use crate::transport::{ - DataTransport, Encoder, McsTransport, SendDataContextTransport, ShareControlHeaderTransport, - ShareDataHeaderTransport, -}; use crate::utils::CodecId; -use crate::RdpError; +use crate::{ChannelIdentificators, RdpError}; pub struct Processor { complete_data: CompleteData, rfx_handler: rfx::DecodingContext, - frame: Frame, + marker_processor: FrameMarkerProcessor, } impl Processor { @@ -109,7 +106,7 @@ impl Processor { marker.frame_action, marker.frame_id.unwrap_or(0) ); - self.frame.process_marker(&marker, &mut output)?; + self.marker_processor.process(&marker, &mut output)?; } } } @@ -128,7 +125,7 @@ impl ProcessorBuilder { Processor { complete_data: CompleteData::new(), rfx_handler: rfx::DecodingContext::new(), - frame: Frame::new(self.initiator_id, self.global_channel_id), + marker_processor: FrameMarkerProcessor::new(self.initiator_id, self.global_channel_id), } } } @@ -188,34 +185,34 @@ impl CompleteData { } } -struct Frame { - transport: ShareDataHeaderTransport, +struct FrameMarkerProcessor { + initiator_id: u16, + global_channel_id: u16, } -impl Frame { +impl FrameMarkerProcessor { fn new(initiator_id: u16, global_channel_id: u16) -> Self { Self { - transport: ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( - SendDataContextTransport::new( - McsTransport::new(DataTransport::default()), - initiator_id, - global_channel_id, - ), - initiator_id, - global_channel_id, - )), + initiator_id, + global_channel_id, } } - fn process_marker(&mut self, marker: &FrameMarkerPdu, mut output: impl io::Write) -> Result<(), RdpError> { + fn process(&mut self, marker: &FrameMarkerPdu, output: impl io::Write) -> Result<(), RdpError> { match marker.frame_action { FrameAction::Begin => Ok(()), - FrameAction::End => self.transport.encode( - ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { + FrameAction::End => ShareDataFrame { + channel_ids: ChannelIdentificators { + initiator_id: self.initiator_id, + channel_id: self.global_channel_id, + }, + share_id: 0, + pdu_source: self.initiator_id, + pdu: ShareDataPdu::FrameAcknowledge(FrameAcknowledgePdu { frame_id: marker.frame_id.unwrap_or(0), }), - &mut output, - ), + } + .encode(output), } } } diff --git a/ironrdp-session/src/active_session/x224.rs b/ironrdp-session/src/active_session/x224.rs index 12208058..3eb75e27 100644 --- a/ironrdp-session/src/active_session/x224.rs +++ b/ironrdp-session/src/active_session/x224.rs @@ -4,28 +4,27 @@ mod gfx; use std::collections::HashMap; use std::{cmp, io}; +use bytes::{BufMut as _, Bytes, BytesMut}; use ironrdp_core::dvc::FieldType; use ironrdp_core::rdp::vc::{self, dvc}; use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; -use ironrdp_core::{Data, ShareDataPdu}; +use ironrdp_core::ShareDataPdu; pub use self::gfx::GfxHandler; -use crate::transport::{ - Decoder, DynamicVirtualChannelTransport, Encoder, SendDataContextTransport, ShareControlHeaderTransport, - ShareDataHeaderTransport, StaticVirtualChannelTransport, +use crate::frame::{ + DynamicVirtualChannelClientFrame, DynamicVirtualChannelServerFrame, Frame as _, SendDataInfoFrame, ShareDataFrame, }; -use crate::{GraphicsConfig, RdpError}; +use crate::{ChannelIdentificators, GraphicsConfig, RdpError}; pub const RDP8_GRAPHICS_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::Graphics"; pub const RDP8_DISPLAY_PIPELINE_NAME: &str = "Microsoft::Windows::RDS::DisplayControl"; pub struct Processor { - static_channels: HashMap, channel_map: HashMap, dynamic_channels: HashMap, - global_channel_name: String, - drdynvc_transport: Option, - static_transport: Option, + global_initiatior_id: u16, + global_channel_id: u16, + drdynvc_channel_id: Option, graphics_config: Option, graphics_handler: Option>, } @@ -33,118 +32,138 @@ pub struct Processor { impl Processor { pub fn new( static_channels: HashMap, - global_channel_name: String, + global_initiatior_id: u16, + global_channel_id: u16, graphics_config: Option, graphics_handler: Option>, ) -> Self { + let drdynvc_channel_id = static_channels.iter().find_map(|(id, name)| { + if name == vc::DRDYNVC_CHANNEL_NAME { + Some(*id) + } else { + None + } + }); + Self { - static_channels, dynamic_channels: HashMap::new(), channel_map: HashMap::new(), - global_channel_name, - drdynvc_transport: None, - static_transport: None, + global_initiatior_id, + global_channel_id, + drdynvc_channel_id, graphics_config, graphics_handler, } } - pub fn process( - &mut self, - mut stream: impl io::Read, - mut output: impl io::Write, - data: Data, - ) -> Result<(), RdpError> { - let mut transport = SendDataContextTransport::default(); - transport.mcs_transport.0.set_decoded_context(data.data_length); + pub fn process(&mut self, frame: Bytes) -> Result { + // FIXME(perf): there is decoding work done multiple times. + // I believe the `Frame` trait is not appropriate here and its use should be replaced. - let channel_ids = transport.decode(&mut stream)?; - transport.set_decoded_context(channel_ids); + let info_frame = SendDataInfoFrame::decode(&frame[..])?; - let channel_id = channel_ids.channel_id; - let initiator_id = channel_ids.initiator_id; - match self.static_channels.get(&channel_id).map(String::as_str) { - Some(vc::DRDYNVC_CHANNEL_NAME) => self.process_dvc_message(&mut stream, &mut output, transport, channel_id), - Some(name) if name == self.global_channel_name => { - if self.static_transport.is_none() { - self.static_transport = Some(ShareDataHeaderTransport::new(ShareControlHeaderTransport::new( - transport, - initiator_id, - channel_id, - ))); - } - let transport = self.static_transport.as_mut().unwrap(); + let channel_id = info_frame.channel_ids.channel_id; - process_global_channel_pdu(&mut stream, transport) + if channel_id == self.global_channel_id { + // NOTE: my understanding is that this so-called global channel is actually called the I/O channel in official doc + self.process_global_channel_pdu(frame)?; + Ok(BytesMut::new()) + } else { + match self.drdynvc_channel_id { + Some(dyvc_id) if channel_id == dyvc_id => self.process_dvc_message(frame), + _ => Err(RdpError::UnexpectedChannel(channel_id)), } - Some(_) => Err(RdpError::UnexpectedChannel(channel_id)), - None => panic!("Channel with {} ID must be added", channel_id), } } /// Sends a PDU on the dynamic channel. The upper layers are responsible for encoding the PDU and converting them to message - #[allow(dead_code)] pub fn send_dynamic( &mut self, - mut stream: impl io::Write, + stream: impl io::Write, channel_name: &str, - message: Vec, + extra_data: Bytes, ) -> Result<(), RdpError> { - if let Some(transport) = self.drdynvc_transport.as_mut() { - let channel_id = self - .channel_map - .get(channel_name) - .ok_or_else(|| RdpError::AccessToNonExistingChannelName(channel_name.to_string()))?; - let channel = self - .dynamic_channels - .get_mut(channel_id) - .ok_or(RdpError::AccessToNonExistingChannel(*channel_id))?; - let client_data = dvc::ClientPdu::Data(dvc::DataPdu { - channel_id_type: channel.channel_id_type, - channel_id: channel.channel_id, - data_size: message.len(), - }); + let drdynvc_channel_id = self + .drdynvc_channel_id + .ok_or_else(|| RdpError::DynamicVirtualChannelNotConnected)?; - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(message))?, - &mut stream, - )?; - } else { - return Err(RdpError::DynamicVirtualChannelNotConnected); - }; + let dvc_channel_id = self + .channel_map + .get(channel_name) + .ok_or_else(|| RdpError::AccessToNonExistingChannelName(channel_name.to_string()))?; + + let dvc_channel = self + .dynamic_channels + .get_mut(dvc_channel_id) + .ok_or(RdpError::AccessToNonExistingChannel(*dvc_channel_id))?; + + let dvc_client_data = dvc::ClientPdu::Data(dvc::DataPdu { + channel_id_type: dvc_channel.channel_id_type, + channel_id: dvc_channel.channel_id, + data_size: extra_data.len(), + }); + + DynamicVirtualChannelClientFrame { + channel_ids: ChannelIdentificators { + initiator_id: self.global_initiatior_id, + channel_id: drdynvc_channel_id, + }, + dvc_pdu: dvc_client_data, + extra_data, + } + .encode(stream)?; Ok(()) } /// Send a pdu on the static global channel. Typically used to send input events - #[allow(dead_code)] - pub fn send_static(&mut self, mut stream: impl io::Write, message: ShareDataPdu) -> Result<(), RdpError> { - if let Some(transport) = self.static_transport.as_mut() { - transport.encode(message, &mut stream)?; - } else { - return Err(RdpError::StaticChannelNotConnected); - }; - - Ok(()) + pub fn send_static(&self, stream: impl io::Write, message: ShareDataPdu) -> Result<(), RdpError> { + ShareDataFrame { + channel_ids: ChannelIdentificators { + initiator_id: self.global_initiatior_id, + channel_id: self.global_channel_id, + }, + share_id: 0, + pdu_source: self.global_initiatior_id, + pdu: message, + } + .encode(stream) } - fn process_dvc_message( - &mut self, - mut stream: impl io::Read, - mut output: impl io::Write, - transport: SendDataContextTransport, - channel_id: u16, - ) -> Result<(), RdpError> { - if self.drdynvc_transport.is_none() { - self.drdynvc_transport = Some(DynamicVirtualChannelTransport::new( - StaticVirtualChannelTransport::new(transport), - channel_id, - )); + fn process_global_channel_pdu(&self, frame: Bytes) -> Result<(), RdpError> { + let share_data_frame = ShareDataFrame::decode(&frame[..])?; + + if share_data_frame.channel_ids.channel_id != self.global_channel_id { + return Err(RdpError::InvalidResponse(format!( + "Unexpected Share Data channel ID ({})", + share_data_frame.channel_ids.channel_id, + ))); } - let transport = self.drdynvc_transport.as_mut().unwrap(); + match share_data_frame.pdu { + ShareDataPdu::SaveSessionInfo(session_info) => { + debug!("Got Session Save Info PDU: {:?}", session_info); + Ok(()) + } + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(ErrorInfo::ProtocolIndependentCode( + ProtocolIndependentCode::None, + ))) => { + debug!("Received None server error"); + Ok(()) + } + ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e)) => Err(RdpError::ServerError(e.description())), + _ => Err(RdpError::UnexpectedPdu(format!( + "Expected Session Save Info PDU, got: {:?}", + share_data_frame.pdu.as_short_name() + ))), + } + } - match transport.decode(&mut stream)? { + fn process_dvc_message(&mut self, frame: Bytes) -> Result { + let drdynvc_frame = DynamicVirtualChannelServerFrame::decode(&frame[..])?; + let mut buf_writer = BytesMut::new().writer(); + + match drdynvc_frame.dvc_pdu { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { debug!("Got DVC Capabilities Request PDU: {:?}", caps_request); let caps_response = dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { @@ -152,22 +171,23 @@ impl Processor { }); debug!("Send DVC Capabilities Response PDU: {:?}", caps_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(caps_response, None)?, - &mut output, - )?; + DynamicVirtualChannelClientFrame { + channel_ids: drdynvc_frame.channel_ids, + dvc_pdu: caps_response, + extra_data: Bytes::new(), + } + .encode(&mut buf_writer)?; } dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {:?}", create_request); - let creation_status = if let Some(dyncamic_channel) = create_dvc( + let creation_status = if let Some(dynamic_channel) = create_dvc( create_request.channel_name.as_str(), create_request.channel_id, create_request.channel_id_type, &mut self.graphics_handler, ) { - self.dynamic_channels - .insert(create_request.channel_id, dyncamic_channel); + self.dynamic_channels.insert(create_request.channel_id, dynamic_channel); self.channel_map .insert(create_request.channel_name.clone(), create_request.channel_id); @@ -183,12 +203,19 @@ impl Processor { }); debug!("Send DVC Create Response PDU: {:?}", create_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(create_response, None)?, - &mut output, - )?; + DynamicVirtualChannelClientFrame { + channel_ids: drdynvc_frame.channel_ids, + dvc_pdu: create_response, + extra_data: Bytes::new(), + } + .encode(&mut buf_writer)?; - negotiate_dvc(&create_request, transport, &mut output, &self.graphics_config)?; + negotiate_dvc( + &create_request, + drdynvc_frame.channel_ids, + &mut buf_writer, + &self.graphics_config, + )?; } dvc::ServerPdu::CloseRequest(close_request) => { debug!("Got DVC Close Request PDU: {:?}", close_request); @@ -199,24 +226,30 @@ impl Processor { }); debug!("Send DVC Close Response PDU: {:?}", close_response); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(close_response, None)?, - &mut output, - )?; + DynamicVirtualChannelClientFrame { + channel_ids: drdynvc_frame.channel_ids, + dvc_pdu: close_response, + extra_data: Bytes::new(), + } + .encode(&mut buf_writer)?; self.dynamic_channels.remove(&close_request.channel_id); } dvc::ServerPdu::DataFirst(data) => { let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; - let mut data_buff = vec![0; data.data_size]; - stream.read_exact(&mut data_buff)?; + let mut data_buf = drdynvc_frame.extra_data; + if data_buf.len() > data.data_size { + let _ = data_buf.split_off(data.data_size); + } + + // FIXME(perf): copy with data_buf.to_vec() if let Some(dvc_data) = self .dynamic_channels .get_mut(&data.channel_id) .ok_or(RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_first_pdu(data.total_data_size as usize, data_buff)? + .process_data_first_pdu(data.total_data_size as usize, data_buf.to_vec())? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type, @@ -224,23 +257,29 @@ impl Processor { data_size: dvc_data.len(), }); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut output, - )?; + DynamicVirtualChannelClientFrame { + channel_ids: drdynvc_frame.channel_ids, + dvc_pdu: client_data, + extra_data: Bytes::copy_from_slice(&dvc_data), // FIXME(perf): copy + } + .encode(&mut buf_writer)?; } } dvc::ServerPdu::Data(data) => { let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; - let mut data_buff = vec![0; data.data_size]; - stream.read_exact(&mut data_buff)?; + let mut data_buf = drdynvc_frame.extra_data; + if data_buf.len() > data.data_size { + let _ = data_buf.split_off(data.data_size); + } + + // FIXME(perf): copy with data_buf.to_vec() if let Some(dvc_data) = self .dynamic_channels .get_mut(&data.channel_id) .ok_or(RdpError::AccessToNonExistingChannel(data.channel_id))? - .process_data_pdu(data_buff)? + .process_data_pdu(data_buf.to_vec())? { let client_data = dvc::ClientPdu::Data(dvc::DataPdu { channel_id_type, @@ -248,42 +287,17 @@ impl Processor { data_size: dvc_data.len(), }); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut output, - )?; + DynamicVirtualChannelClientFrame { + channel_ids: drdynvc_frame.channel_ids, + dvc_pdu: client_data, + extra_data: Bytes::copy_from_slice(&dvc_data), + } + .encode(&mut buf_writer)?; } } } - Ok(()) - } -} - -fn process_global_channel_pdu( - mut stream: impl io::Read, - transport: &mut ShareDataHeaderTransport, -) -> Result<(), RdpError> { - let share_data_pdu = transport.decode(&mut stream)?; - - match share_data_pdu { - ShareDataPdu::SaveSessionInfo(session_info) => { - debug!("Got Session Save Info PDU: {:?}", session_info); - - Ok(()) - } - ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(ErrorInfo::ProtocolIndependentCode( - ProtocolIndependentCode::None, - ))) => { - debug!("Received None server error"); - - Ok(()) - } - ShareDataPdu::ServerSetErrorInfo(ServerSetErrorInfoPdu(e)) => Err(RdpError::ServerError(e.description())), - _ => Err(RdpError::UnexpectedPdu(format!( - "Expected Session Save Info PDU, got: {:?}", - share_data_pdu.as_short_name() - ))), + Ok(buf_writer.into_inner()) } } @@ -316,8 +330,8 @@ fn create_dvc( fn negotiate_dvc( create_request: &dvc::CreateRequestPdu, - transport: &mut DynamicVirtualChannelTransport, - mut stream: impl io::Write, + channel_ids: ChannelIdentificators, + stream: impl io::Write, graphics_config: &Option, ) -> Result<(), RdpError> { if create_request.channel_name == RDP8_GRAPHICS_PIPELINE_NAME { @@ -329,10 +343,12 @@ fn negotiate_dvc( }); debug!("Send GFX Capabilities Advertise PDU"); - transport.encode( - DynamicVirtualChannelTransport::prepare_data_to_encode(client_data, Some(dvc_data))?, - &mut stream, - )?; + DynamicVirtualChannelClientFrame { + channel_ids, + dvc_pdu: client_data, + extra_data: Bytes::copy_from_slice(&dvc_data), + } + .encode(stream)?; } Ok(()) diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index a62a90dc..2d79e9df 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -5,34 +5,32 @@ use std::future::Future; use std::net::SocketAddr; use std::{io, iter}; -use dns_lookup::lookup_addr; -use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite}; +use bytes::{BufMut as _, Bytes, BytesMut}; +use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; use ironrdp_core::rdp::capability_sets::CapabilitySet; use ironrdp_core::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; -use ironrdp_core::{nego, rdp, PduParsing}; -use ring::rand::SecureRandom as _; -use sspi::internal::credssp; -use sspi::NegotiateConfig; +use ironrdp_core::{rdp, PduParsing}; +use rand_core::{OsRng, RngCore}; +use sspi::network_client::NetworkClientFactory; +use sspi::{credssp, NegotiateConfig}; -use crate::codecs::{encode_next_frame, ErasedWriter, FramedReader}; -use crate::transport::{ - connect, ChannelIdentificators, DataTransport, EarlyUserAuthResult, McsTransport, SendDataContextTransport, - SendPduDataContextTransport, ShareControlHeaderTransport, ShareDataHeaderTransport, TsRequestTransport, - X224DataTransport, -}; -use crate::{InputConfig, RdpError}; +use crate::frame::{SendDataInfoFrame, SendPduDataFrame, ShareControlFrame, ShareDataFrame, X224Frame}; +use crate::framed::{encode_next_frame, ErasedWriter, FramedReader}; +use crate::{ChannelIdentificators, InputConfig, RdpError}; pub type StaticChannels = HashMap; +#[derive(Clone)] pub struct DesktopSize { pub width: u16, pub height: u16, } +#[derive(Clone)] pub struct ConnectionSequenceResult { pub desktop_size: DesktopSize, pub joined_static_channels: StaticChannels, @@ -45,13 +43,30 @@ pub struct UpgradedStream { pub server_public_key: Vec, } -// TODO: the async part should be extracted to `ironrdp-session-async` +pub struct Address { + pub hostname: String, + pub sock: SocketAddr, +} + +impl Address { + pub fn lookup_addr(hostname: String) -> io::Result { + use std::net::ToSocketAddrs as _; + let sockaddr = hostname.to_socket_addrs()?.next().unwrap(); + Ok(Self { + hostname, + sock: sockaddr, + }) + } +} + +// TODO: convert to a state machine and wrap into a future in ironrdp-session-async pub async fn process_connection_sequence( stream: S, - routing_addr: &SocketAddr, + addr: &Address, config: &InputConfig, upgrade_stream: UpgradeFn, + network_client_factory: Box, ) -> Result<(ConnectionSequenceResult, FramedReader, ErasedWriter), RdpError> where S: AsyncRead + AsyncWrite + Unpin + 'static, @@ -60,10 +75,14 @@ where UpgradedS: AsyncRead + AsyncWrite + Unpin + Send + 'static, { let (reader, mut writer) = stream.split(); - let mut reader = FramedReader::new(reader); - let selected_protocol = connect( + //== Connection Initiation ==// + // Exchange supported security protocols and a few other connection flags. + + trace!("Connection Initiation"); + + let selected_protocol = connection_initiation( &mut reader, &mut writer, config.security_protocol, @@ -71,24 +90,33 @@ where ) .await?; - let (reader, leftover) = reader.into_inner(); + info!("Selected security protocol: {selected_protocol:?}"); + //== Upgrade to Enhanced RDP Security ==// + // NOTE: we assume the selected protocol is never the standard RDP security (RC4). + + let reader = reader.into_inner_no_leftover(); let stream = reader.reunite(writer).unwrap(); - debug_assert_eq!(leftover.len(), 0, "no leftover is expected after initial negotiation"); - let UpgradedStream { mut stream, server_public_key, } = upgrade_stream(stream).await?; - if selected_protocol.contains(nego::SecurityProtocol::HYBRID) - || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { - process_cred_ssp(&mut stream, config.credentials.clone(), server_public_key, routing_addr).await?; + process_cred_ssp( + &mut stream, + config.credentials.clone(), + server_public_key, + &addr.hostname, + network_client_factory, + ) + .await?; - if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - let data = EarlyUserAuthResult::read(&mut stream).await?; + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + let data = read_early_user_auth_result(&mut stream).await?; if let credssp::EarlyUserAuthResult::AccessDenied = data { return Err(RdpError::AccessDenied); } @@ -99,8 +127,19 @@ where let mut reader = FramedReader::new(reader).into_erased(); let mut writer = Box::pin(writer) as ErasedWriter; - let static_channels = process_mcs_connect(&mut reader, &mut writer, config, selected_protocol).await?; - let joined_static_channels = process_mcs(&mut reader, &mut writer, static_channels, config).await?; + //== Basic Settings Exchange ==// + // Exchange basic settings including Core Data, Security Data and Network Data. + + trace!("Basic Settings Exchange"); + + let static_channels = basic_settings_exchange(&mut reader, &mut writer, config, selected_protocol).await?; + + //== Channel Connection ==// + // Connect every individual channel. + + trace!("Channel Connection"); + + let joined_static_channels = channel_connection(&mut reader, &mut writer, static_channels, config).await?; debug!("Joined static active_session: {:?}", joined_static_channels); let global_channel_id = *joined_static_channels @@ -110,22 +149,56 @@ where .get(config.user_channel_name.as_str()) .expect("user channel must be added"); - let transport = - SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); - send_client_info(&mut writer, transport, config, routing_addr).await?; + //== RDP Security Commencement ==// + // When using standard RDP security (RC4), a Security Exchange PDU is sent at this point. + // NOTE: IronRDP is only supporting extended security (TLS…). - process_server_license_exchange(&mut reader, &mut writer, config, global_channel_id).await?; + if selected_protocol == ironrdp_core::SecurityProtocol::RDP { + return Err(RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + "Standard RDP Security (RC4 encryption) is not supported", + ))); + } - let transport = - SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); - let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let desktop_size = process_capability_sets(&mut reader, &mut writer, transport, config).await?; + //== Secure Settings Exchange ==// + // Send Client Info PDU (information about supported types of compression, username, password, etc). - let transport = - SendDataContextTransport::new(McsTransport::new(DataTransport::new()), initiator_id, global_channel_id); - let transport = ShareControlHeaderTransport::new(transport, initiator_id, global_channel_id); - let transport = ShareDataHeaderTransport::new(transport); - process_finalization(&mut reader, &mut writer, transport, initiator_id).await?; + trace!("Secure Settings Exchange"); + + let global_channel_ids = ChannelIdentificators { + initiator_id, + channel_id: global_channel_id, + }; + settings_exchange(&mut writer, global_channel_ids, config, &addr.sock).await?; + + //== Optional Connect-Time Auto-Detection ==// + // NOTE: IronRDP is not expecting the Auto-Detect Request PDU from server. + + //== Licensing ==// + // Server is sending information regarding licensing. + // Typically useful when support for more than two simultaneous connections is required (terminal server). + + trace!("Licensing"); + + server_licensing_exchange(&mut reader, &mut writer, config, global_channel_id).await?; + + //== Optional Multitransport Bootstrapping ==// + // NOTE: our implemention is not expecting the Auto-Detect Request PDU from server + + //== Capabilities Exchange ==/ + // The server sends the set of capabilities it supports to the client. + + trace!("Capabilities Exchange"); + + let desktop_size = capabilities_exchange(&mut reader, &mut writer, global_channel_ids, config).await?; + + //== Connection Finalization ==// + // Client and server exchange a few PDUs in order to finalize the connection. + // Client may send PDUs one after the other without waiting for a response in order to speed up the process. + + trace!("Connection finalization"); + + connection_finalization(&mut reader, &mut writer, global_channel_ids).await?; Ok(( ConnectionSequenceResult { @@ -143,22 +216,27 @@ pub async fn process_cred_ssp( mut stream: impl AsyncRead + AsyncWrite + Unpin, credentials: sspi::AuthIdentity, server_public_key: Vec, - routing_addr: &SocketAddr, + addr: &str, + network_client_factory: Box, ) -> Result<(), RdpError> { - let mut transport = TsRequestTransport::default(); + use sspi::ntlm::NtlmConfig; - let destination_host = lookup_addr(&routing_addr.ip()) - .map_err(|err| RdpError::UserInfoError(format!("unable to query destination host name: {:?}", err)))?; - let service_principal_name = format!("TERMSRV/{}", destination_host); + let service_principal_name = format!("TERMSRV/{}", addr); let mut cred_ssp_client = credssp::CredSspClient::new( server_public_key, credentials, credssp::CredSspMode::WithCredentials, - credssp::ClientMode::Negotiate(NegotiateConfig::default()), + credssp::ClientMode::Negotiate(NegotiateConfig { + protocol_config: Box::new(NtlmConfig), + package_list: None, + hostname: addr.to_owned(), + network_client_factory, + }), service_principal_name, ) .map_err(RdpError::CredSspError)?; + let mut next_ts_request = credssp::TsRequest::default(); loop { @@ -170,12 +248,12 @@ pub async fn process_cred_ssp( match result { credssp::ClientState::ReplyNeeded(ts_request) => { debug!("Send CredSSP TSRequest (reply needed): {:x?}", ts_request); - transport.encode(ts_request, &mut stream).await?; - next_ts_request = transport.decode(&mut stream).await?; + write_credssp_ts_request(ts_request, &mut stream).await?; + next_ts_request = read_credssp_ts_request(&mut stream).await?; } credssp::ClientState::FinalMessage(ts_request) => { debug!("Send CredSSP TSRequest (final): {:x?}", ts_request); - transport.encode(ts_request, &mut stream).await?; + write_credssp_ts_request(ts_request, &mut stream).await?; break; } } @@ -184,18 +262,17 @@ pub async fn process_cred_ssp( Ok(()) } -pub async fn process_mcs_connect( +pub async fn basic_settings_exchange( reader: &mut FramedReader, writer: &mut ErasedWriter, config: &InputConfig, - selected_protocol: nego::SecurityProtocol, + selected_protocol: ironrdp_core::SecurityProtocol, ) -> Result { let connect_initial = ironrdp_core::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); - let mut codec = X224DataTransport::default(); - encode_next_frame(writer, &mut codec, connect_initial.clone()).await?; - let connect_response: ironrdp_core::ConnectResponse = reader.decode_next_frame(&mut codec).await?; + encode_next_frame(writer, X224Frame(connect_initial.clone())).await?; + let connect_response: ironrdp_core::ConnectResponse = reader.decode_next_frame::>().await?.0; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; @@ -229,7 +306,7 @@ pub async fn process_mcs_connect( Ok(static_channels) } -pub async fn process_mcs( +pub async fn channel_connection( stream: &mut FramedReader, writer: &mut ErasedWriter, mut static_channels: StaticChannels, @@ -240,20 +317,17 @@ pub async fn process_mcs( sub_interval: 0, }; - let mut codec = X224DataTransport::default(); - debug!("Send MCS Erect Domain Request PDU: {:?}", erect_domain_request); encode_next_frame( writer, - &mut codec, - ironrdp_core::McsPdu::ErectDomainRequest(erect_domain_request), + X224Frame(ironrdp_core::McsPdu::ErectDomainRequest(erect_domain_request)), ) .await?; debug!("Send MCS Attach User Request PDU"); - encode_next_frame(writer, &mut codec, ironrdp_core::McsPdu::AttachUserRequest).await?; + encode_next_frame(writer, X224Frame(ironrdp_core::McsPdu::AttachUserRequest)).await?; - let mcs_pdu = stream.decode_next_frame(&mut codec).await?; + let mcs_pdu = stream.decode_next_frame::>().await?.0; let initiator_id = if let ironrdp_core::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); @@ -275,12 +349,11 @@ pub async fn process_mcs( debug!("Send MCS Channel Join Request PDU: {:?}", channel_join_request); encode_next_frame( writer, - &mut codec, - ironrdp_core::McsPdu::ChannelJoinRequest(channel_join_request), + X224Frame(ironrdp_core::McsPdu::ChannelJoinRequest(channel_join_request)), ) .await?; - let mcs_pdu = stream.decode_next_frame(&mut codec).await?; + let mcs_pdu = stream.decode_next_frame::>().await?.0; if let ironrdp_core::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); @@ -303,30 +376,44 @@ pub async fn process_mcs( Ok(static_channels) } -pub async fn send_client_info( +pub async fn settings_exchange( writer: &mut ErasedWriter, - mut codec: SendDataContextTransport, + channel_ids: ChannelIdentificators, config: &InputConfig, routing_addr: &SocketAddr, ) -> Result<(), RdpError> { let client_info_pdu = user_info::create_client_info_pdu(config, routing_addr)?; debug!("Send Client Info PDU: {:?}", client_info_pdu); - let mut pdu = Vec::with_capacity(client_info_pdu.buffer_length()); + + let mut buf_writer = BytesMut::with_capacity(client_info_pdu.buffer_length()).writer(); client_info_pdu - .to_buffer(&mut pdu) + .to_buffer(&mut buf_writer) .map_err(RdpError::ServerLicenseError)?; - encode_next_frame(writer, &mut codec, pdu).await?; + let buf = buf_writer.into_inner(); + + encode_next_frame( + writer, + SendDataInfoFrame { + channel_ids, + data: buf.freeze(), + }, + ) + .await?; + Ok(()) } -pub async fn process_server_license_exchange( +pub async fn server_licensing_exchange( reader: &mut FramedReader, writer: &mut ErasedWriter, config: &InputConfig, global_channel_id: u16, ) -> Result<(), RdpError> { - let mut codec = SendPduDataContextTransport::::default(); - let (channel_ids, initial_license_message) = reader.decode_next_frame(&mut codec).await?; + let initial_server_license_frame = reader + .decode_next_frame::>() + .await?; + let channel_ids = initial_server_license_frame.channel_ids; + let initial_license_message = initial_server_license_frame.pdu; check_global_id(channel_ids, global_channel_id)?; @@ -336,14 +423,10 @@ pub async fn process_server_license_exchange( let (new_license_request, encryption_data) = match initial_license_message.message_type { InitialMessageType::LicenseRequest(license_request) => { let mut client_random = vec![0u8; RANDOM_NUMBER_SIZE]; - - let rand = ring::rand::SystemRandom::new(); - rand.fill(&mut client_random) - .map_err(|err| RdpError::IOError(io::Error::new(io::ErrorKind::InvalidData, format!("{}", err))))?; + OsRng.fill_bytes(&mut client_random); let mut premaster_secret = vec![0u8; PREMASTER_SECRET_SIZE]; - rand.fill(&mut premaster_secret) - .map_err(|err| RdpError::IOError(io::Error::new(io::ErrorKind::InvalidData, format!("{}", err))))?; + OsRng.fill_bytes(&mut premaster_secret); ClientNewLicenseRequest::from_server_license_request( &license_request, @@ -373,10 +456,20 @@ pub async fn process_server_license_exchange( trace!("{:?}", new_license_request); trace!("{:?}", encryption_data); - encode_next_frame(writer, &mut codec, new_license_request).await?; + encode_next_frame( + writer, + SendPduDataFrame { + channel_ids, + pdu: new_license_request, + }, + ) + .await?; - let mut codec = SendPduDataContextTransport::::default(); - let (channel_ids, challenge) = reader.decode_next_frame(&mut codec).await?; + let server_platform_challenge_frame = reader + .decode_next_frame::>() + .await?; + let channel_ids = server_platform_challenge_frame.channel_ids; + let challenge = server_platform_challenge_frame.pdu; check_global_id(channel_ids, global_channel_id)?; let challenge_response = ClientPlatformChallengeResponse::from_server_platform_challenge( @@ -393,10 +486,22 @@ pub async fn process_server_license_exchange( debug!("Successfully generated Client Platform Challenge Response"); trace!("{:?}", challenge_response); - encode_next_frame(writer, &mut codec, challenge_response).await?; + encode_next_frame( + writer, + SendPduDataFrame { + channel_ids, + pdu: challenge_response, + }, + ) + .await?; - let mut codec = SendPduDataContextTransport::::default(); - let (channel_ids, upgrade_license) = match reader.decode_next_frame(&mut codec).await { + let SendPduDataFrame { + channel_ids, + pdu: upgrade_license, + } = match reader + .decode_next_frame::>() + .await + { Err(RdpError::ServerLicenseError(rdp::RdpError::ServerLicenseError( rdp::server_license::ServerLicenseError::UnexpectedValidClientError(_), ))) => { @@ -425,23 +530,32 @@ pub async fn process_server_license_exchange( Ok(()) } -pub async fn process_capability_sets( +pub async fn capabilities_exchange( reader: &mut FramedReader, writer: &mut ErasedWriter, - mut codec: ShareControlHeaderTransport, + global_channel_ids: ChannelIdentificators, config: &InputConfig, ) -> Result { - let share_control_pdu = reader.decode_next_frame(&mut codec).await?; + let share_control_frame = reader.decode_next_frame::().await?; + + if share_control_frame.channel_ids.channel_id != global_channel_ids.channel_id { + return Err(RdpError::InvalidResponse(format!( + "Unexpected Send Data Context channel ID ({})", + global_channel_ids.channel_id, + ))); + } + let capability_sets = - if let ironrdp_core::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_pdu { + if let ironrdp_core::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_frame.pdu { debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); server_demand_active.pdu.capability_sets } else { return Err(RdpError::UnexpectedPdu(format!( "Expected Server Demand Active PDU, got: {:?}", - share_control_pdu.as_short_name() + share_control_frame.pdu.as_short_name() ))); }; + let desktop_size = capability_sets .iter() .find(|c| matches!(c, CapabilitySet::Bitmap(_))) @@ -461,15 +575,24 @@ pub async fn process_capability_sets( user_info::create_client_confirm_active(config, capability_sets)?, ); debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); - encode_next_frame(writer, &mut codec, client_confirm_active).await?; + encode_next_frame( + writer, + ShareControlFrame { + channel_ids: global_channel_ids, + share_id: share_control_frame.share_id, + pdu_source: global_channel_ids.initiator_id, + data: Bytes::new(), + pdu: client_confirm_active, + }, + ) + .await?; Ok(desktop_size) } -pub async fn process_finalization( +pub async fn connection_finalization( reader: &mut FramedReader, writer: &mut ErasedWriter, - mut codec: ShareDataHeaderTransport, - initiator_id: u16, + global_channel_ids: ChannelIdentificators, ) -> Result<(), RdpError> { use ironrdp_core::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; @@ -486,7 +609,7 @@ pub async fn process_finalization( while finalization_order != FinalizationOrder::Finished { let share_data_pdu = match finalization_order { FinalizationOrder::Synchronize => ShareDataPdu::Synchronize(SynchronizePdu { - target_user_id: initiator_id, + target_user_id: global_channel_ids.initiator_id, }), FinalizationOrder::ControlCooperate => ShareDataPdu::Control(ControlPdu { action: ControlAction::Cooperate, @@ -507,8 +630,19 @@ pub async fn process_finalization( FinalizationOrder::Finished => unreachable!(), }; debug!("Send Finalization PDU: {:?}", share_data_pdu); - encode_next_frame(writer, &mut codec, share_data_pdu).await?; - let share_data_pdu = reader.decode_next_frame(&mut codec).await?; + encode_next_frame( + writer, + ShareDataFrame { + channel_ids: global_channel_ids, + share_id: 0, + pdu_source: global_channel_ids.initiator_id, + pdu: share_data_pdu, + }, + ) + .await?; + + let share_data_frame = reader.decode_next_frame::().await?; + let share_data_pdu = share_data_frame.pdu; debug!("Got Finalization PDU: {:?}", share_data_pdu); finalization_order = match (finalization_order, share_data_pdu) { @@ -528,7 +662,9 @@ pub async fn process_finalization( grant_id, control_id, }), - ) if grant_id == initiator_id && control_id == u32::from(SERVER_CHANNEL_ID) => FinalizationOrder::Font, + ) if grant_id == global_channel_ids.initiator_id && control_id == u32::from(SERVER_CHANNEL_ID) => { + FinalizationOrder::Font + } (FinalizationOrder::Font, ShareDataPdu::FontMap(_)) => FinalizationOrder::Finished, ( order, @@ -562,3 +698,101 @@ fn check_global_id(channel_ids: ChannelIdentificators, id: u16) -> Result<(), Rd Ok(()) } } + +pub async fn write_credssp_ts_request( + ts_request: credssp::TsRequest, + mut stream: impl AsyncWrite + Unpin, +) -> Result<(), RdpError> { + let mut buf = BytesMut::with_capacity(ts_request.buffer_len() as usize); + buf.resize(ts_request.buffer_len() as usize, 0x00); + + ts_request + .encode_ts_request(buf.as_mut()) + .map_err(RdpError::TsRequestError)?; + + stream.write_all(buf.as_ref()).await?; + stream.flush().await?; + + Ok(()) +} + +pub async fn read_credssp_ts_request(mut stream: impl AsyncRead + Unpin) -> Result { + const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; + + let mut buf = BytesMut::with_capacity(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE); + buf.resize(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE, 0x00); + stream.read_exact(&mut buf).await?; + + let ts_request_buffer_length = credssp::TsRequest::read_length(buf.as_ref())?; + buf.resize(ts_request_buffer_length, 0x00); + stream.read_exact(&mut buf[MAX_TS_REQUEST_LENGTH_BUFFER_SIZE..]).await?; + + let ts_request = credssp::TsRequest::from_buffer(buf.as_ref()).map_err(RdpError::TsRequestError)?; + + Ok(ts_request) +} + +pub async fn read_early_user_auth_result( + mut stream: impl AsyncRead + Unpin, +) -> Result { + let mut buf = BytesMut::with_capacity(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE); + buf.resize(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE, 0x00); + stream.read_exact(&mut buf).await?; + let early_user_auth_result = + credssp::EarlyUserAuthResult::from_buffer(buf.as_ref()).map_err(RdpError::EarlyUserAuthResultError)?; + + Ok(early_user_auth_result) +} + +pub async fn connection_initiation( + reader: &mut FramedReader, + mut writer: W, + security_protocol: ironrdp_core::SecurityProtocol, + username: String, +) -> Result { + let connection_request = build_connection_request_with_username(security_protocol, username); + let mut buffer = Vec::new(); + connection_request.to_buffer(&mut buffer)?; + debug!("Send X.224 Connection Request PDU: {:?}", connection_request); + writer.write_all(&buffer).await?; + writer.flush().await?; + + let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; + let connection_response = ironrdp_core::Response::from_buffer(frame.as_ref())?; + if let Some(ironrdp_core::ResponseData::Confirm { + flags, + protocol: selected_protocol, + }) = connection_response.response + { + debug!( + "Got X.224 Connection Confirm PDU: selected protocol ({:?}), response flags ({:?})", + selected_protocol, flags + ); + + if security_protocol.contains(selected_protocol) { + Ok(selected_protocol) + } else { + Err(RdpError::InvalidResponse(format!( + "Got unexpected security protocol: {:?} while was expected one of {:?}", + selected_protocol, security_protocol + ))) + } + } else { + Err(RdpError::InvalidResponse(format!( + "Got unexpected X.224 Connection Response: {:?}", + connection_response.response + ))) + } +} + +fn build_connection_request_with_username( + security_protocol: ironrdp_core::SecurityProtocol, + username: String, +) -> ironrdp_core::Request { + ironrdp_core::Request { + nego_data: Some(ironrdp_core::NegoData::Cookie(username)), + flags: ironrdp_core::RequestFlags::empty(), + protocol: security_protocol, + src_ref: 0, + } +} diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs index 9addb9c5..aabf91d2 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -6,7 +6,6 @@ use ironrdp_core::gcc::{ ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, SupportedColorDepths, }; -use ironrdp_core::nego::SecurityProtocol; use ironrdp_core::rdp::capability_sets::{ Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, CacheEntry, CaptureFlags, CmdFlags, Codec, CodecProperty, EntropyBits, FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, @@ -19,7 +18,7 @@ use ironrdp_core::rdp::{ AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, ClientInfoPdu, CompressionType, Credentials, ExtendedClientInfo, ExtendedClientOptionalInfo, SERVER_CHANNEL_ID, }; -use ironrdp_core::{CapabilitySet, ClientConfirmActive}; +use ironrdp_core::{CapabilitySet, ClientConfirmActive, SecurityProtocol}; use num_traits::ToPrimitive; use crate::utils::CodecId; @@ -47,6 +46,14 @@ pub fn create_client_info_pdu(config: &InputConfig, routing_addr: &net::SocketAd let security_header = BasicSecurityHeader { flags: BasicSecurityHeaderFlags::INFO_PKT, }; + + // FIXME: dependency injection + // let dir = env::current_dir() + // .map_err(|e| RdpError::UserInfoError(format!("Failed to get current directory path: {:?}", e)))? + // .to_string_lossy() + // .to_string(); + let dir = "C:\\Users".to_owned(); + let client_info = ClientInfo { credentials: auth_identity_to_credentials(config.credentials.clone()), code_page: 0, // ignored if the keyboardLayout field of the Client Core Data is set to zero @@ -65,10 +72,7 @@ pub fn create_client_info_pdu(config: &InputConfig, routing_addr: &net::SocketAd net::SocketAddr::V6(_) => AddressFamily::INet6, }, address: routing_addr.ip().to_string(), - dir: env::current_dir() - .map_err(|e| RdpError::UserInfoError(format!("Failed to get current directory path: {:?}", e)))? - .to_string_lossy() - .to_string(), + dir, optional_data: ExtendedClientOptionalInfo::default(), }, }; @@ -131,7 +135,7 @@ fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) - client_build: semver::Version::parse(env!("CARGO_PKG_VERSION")) .map(|version| version.major * 100 + version.minor * 10 + version.patch) .unwrap_or(0) as u32, - client_name: whoami::hostname(), + client_name: whoami::hostname(), // FIXME: probably not wasm-friendly keyboard_type: config.keyboard_type, keyboard_subtype: config.keyboard_subtype, keyboard_functional_keys_count: config.keyboard_functional_keys_count, diff --git a/ironrdp-session/src/errors.rs b/ironrdp-session/src/errors.rs index eb71c5c5..083f43f5 100644 --- a/ironrdp-session/src/errors.rs +++ b/ironrdp-session/src/errors.rs @@ -5,7 +5,7 @@ use std::sync::PoisonError; use ironrdp_core::dvc::{display, gfx}; use ironrdp_core::fast_path::FastPathError; use ironrdp_core::rdp::server_license::ServerLicenseError; -use ironrdp_core::{codecs, nego, rdp, McsError}; +use ironrdp_core::{codecs, rdp, McsError}; use ironrdp_graphics::{rlgr, zgfx}; use thiserror::Error; @@ -18,7 +18,7 @@ pub enum RdpError { #[error("X.224 error")] X224Error(#[source] io::Error), #[error("negotiation error")] - NegotiationError(#[from] nego::NegotiationError), + NegotiationError(#[from] ironrdp_core::NegotiationError), #[error("unexpected PDU: {0}")] UnexpectedPdu(String), #[error("Unexpected disconnection: {0}")] @@ -97,8 +97,6 @@ pub enum RdpError { MissingPeerCertificate, #[error("Dynamic virtual channel not connected")] DynamicVirtualChannelNotConnected, - #[error("Static global channel not connected")] - StaticChannelNotConnected, #[error("Invalid Capabilities mask provided. Mask: {0:X}")] InvalidCapabilitiesMask(u32), #[error("Stream terminated while waiting for some data")] diff --git a/ironrdp-session/src/frame.rs b/ironrdp-session/src/frame.rs new file mode 100644 index 00000000..459c09e2 --- /dev/null +++ b/ironrdp-session/src/frame.rs @@ -0,0 +1,435 @@ +use std::io; + +use bytes::{Buf as _, BufMut as _, Bytes, BytesMut}; +use ironrdp_core::rdp::vc; +use ironrdp_core::rdp::SERVER_CHANNEL_ID; +use ironrdp_core::PduParsing; + +use crate::ChannelIdentificators; +use crate::RdpError; + +pub(crate) trait Frame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError>; + + fn decode(stream: impl io::Read) -> Result + where + Self: Sized; +} + +pub struct X224Frame(pub T) +where + T: PduParsing; + +impl Frame for X224Frame +where + T: PduParsing, + RdpError: From<::Error>, +{ + fn encode(self, mut stream: impl io::Write) -> Result<(), RdpError> { + ironrdp_core::DataHeader::new(self.0.buffer_length()) + .to_buffer(&mut stream) + .map_err(ironrdp_core::RdpError::X224Error)?; + self.0.to_buffer(&mut stream)?; + stream.flush()?; + Ok(()) + } + + fn decode(mut stream: impl io::Read) -> Result { + let data_header = + ironrdp_core::DataHeader::from_buffer(&mut stream).map_err(ironrdp_core::RdpError::X224Error)?; + let length = data_header.data_length; + let item = T::from_buffer(&mut stream)?; + let remaining = length - item.buffer_length(); + if remaining > 0 { + let mut remaining = vec![0u8; remaining]; + stream.read_exact(&mut remaining)?; + } + Ok(Self(item)) + } +} + +#[derive(Clone, Debug)] +pub struct McsFrame { + pub pdu: ironrdp_core::McsPdu, + pub data: Bytes, +} + +impl Frame for McsFrame { + fn encode(self, mut stream: impl io::Write) -> Result<(), RdpError> { + let data_header = ironrdp_core::DataHeader::new(self.pdu.buffer_length() + self.data.len()); + + data_header.to_buffer(&mut stream)?; + self.pdu.to_buffer(&mut stream)?; + stream.write_all(&self.data)?; + + stream.flush()?; + + Ok(()) + } + + fn decode(mut stream: impl io::Read) -> Result { + let data_header = ironrdp_core::DataHeader::from_buffer(&mut stream)?; + + let mcs_pdu = ironrdp_core::McsPdu::from_buffer(&mut stream)?; + + let remaining = data_header.data_length - mcs_pdu.buffer_length(); + let mut data = BytesMut::zeroed(remaining); + + if remaining > 0 { + stream.read_exact(&mut data)?; + } + + Ok(Self { + pdu: mcs_pdu, + data: data.freeze(), + }) + } +} + +#[derive(Clone, Debug)] +pub struct SendDataInfoFrame { + pub channel_ids: ChannelIdentificators, + pub data: Bytes, +} + +impl SendDataInfoFrame { + pub fn new(initiator_id: u16, channel_id: u16, data: Bytes) -> Self { + Self { + channel_ids: ChannelIdentificators { + initiator_id, + channel_id, + }, + data, + } + } +} + +impl Frame for SendDataInfoFrame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let send_data_context = ironrdp_core::mcs::SendDataContext { + channel_id: self.channel_ids.channel_id, + initiator_id: self.channel_ids.initiator_id, + pdu_length: self.data.len(), + }; + + McsFrame { + pdu: ironrdp_core::McsPdu::SendDataRequest(send_data_context), + data: self.data, + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let mcs_frame = McsFrame::decode(stream)?; + + match mcs_frame.pdu { + ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(Self { + channel_ids: ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }, + data: mcs_frame.data, + }), + ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( + RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {:?}", disconnect_reason)), + ), + _ => Err(RdpError::UnexpectedPdu(format!( + "Expected Send Data Context PDU, got {:?}", + mcs_frame.pdu.as_short_name() + ))), + } + } +} + +pub struct ShareControlFrame { + pub channel_ids: ChannelIdentificators, + pub share_id: u32, + pub pdu_source: u16, // NOTE: looks like this is always equal to channel_ids.initiatior_id + pub pdu: ironrdp_core::ShareControlPdu, + pub data: Bytes, +} + +impl Frame for ShareControlFrame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let share_control_header = ironrdp_core::ShareControlHeader { + share_control_pdu: self.pdu, + pdu_source: self.pdu_source, + share_id: self.share_id, + }; + + let mut buf_writer = BytesMut::with_capacity(share_control_header.buffer_length()).writer(); + share_control_header + .to_buffer(&mut buf_writer) + .map_err(RdpError::ShareControlHeaderError)?; + let mut buf = buf_writer.into_inner(); + buf.extend_from_slice(&self.data); + + SendDataInfoFrame { + channel_ids: self.channel_ids, + data: buf.freeze(), + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let info_frame = SendDataInfoFrame::decode(stream)?; + + let channel_ids = info_frame.channel_ids; + let mut remaining_reader = info_frame.data.reader(); + + let share_control_header = ironrdp_core::ShareControlHeader::from_buffer(&mut remaining_reader) + .map_err(RdpError::ShareControlHeaderError)?; + let pdu = share_control_header.share_control_pdu; + let pdu_source = share_control_header.pdu_source; + let share_id = share_control_header.share_id; + + if pdu_source != SERVER_CHANNEL_ID { + warn!( + "Invalid Share Control Header pdu source: expected ({}) != actual ({})", + SERVER_CHANNEL_ID, share_control_header.pdu_source + ); + } + + let remaining = remaining_reader.into_inner(); + + Ok(Self { + channel_ids, + share_id, + pdu_source, + pdu, + data: remaining, + }) + } +} + +pub struct ShareDataFrame { + pub channel_ids: ChannelIdentificators, + pub share_id: u32, + pub pdu_source: u16, // NOTE: looks like this is always equal to channel_ids.initiatior_id + pub pdu: ironrdp_core::ShareDataPdu, +} + +impl Frame for ShareDataFrame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let share_data_header = ironrdp_core::ShareDataHeader { + share_data_pdu: self.pdu, + stream_priority: ironrdp_core::rdp::StreamPriority::Medium, + compression_flags: ironrdp_core::rdp::CompressionFlags::empty(), + compression_type: ironrdp_core::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() + }; + + ShareControlFrame { + channel_ids: self.channel_ids, + share_id: self.share_id, + pdu_source: self.pdu_source, + pdu: ironrdp_core::ShareControlPdu::Data(share_data_header), + data: Bytes::new(), + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let frame = ShareControlFrame::decode(stream)?; + + if let ironrdp_core::ShareControlPdu::Data(share_data_header) = frame.pdu { + Ok(Self { + channel_ids: frame.channel_ids, + share_id: frame.share_id, + pdu_source: frame.pdu_source, + pdu: share_data_header.share_data_pdu, + }) + } else { + Err(RdpError::UnexpectedPdu(format!( + "Expected Share Data Header, got: {:?}", + frame.pdu.as_short_name() + ))) + } + } +} + +#[derive(Clone, Debug)] +pub struct SendPduDataFrame +where + T: PduParsing, +{ + pub channel_ids: ChannelIdentificators, + pub pdu: T, +} + +impl Frame for SendPduDataFrame +where + T: PduParsing, + RdpError: From<::Error>, +{ + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let send_data_context = ironrdp_core::mcs::SendDataContext { + channel_id: self.channel_ids.channel_id, + initiator_id: self.channel_ids.initiator_id, + pdu_length: self.pdu.buffer_length(), + }; + + let mut buf_writer = BytesMut::with_capacity(self.pdu.buffer_length()).writer(); + self.pdu.to_buffer(&mut buf_writer)?; + let buf = buf_writer.into_inner(); + + McsFrame { + pdu: ironrdp_core::McsPdu::SendDataRequest(send_data_context), + data: buf.freeze(), + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let mcs_frame = McsFrame::decode(stream)?; + + let channel_ids = match mcs_frame.pdu { + ironrdp_core::McsPdu::SendDataIndication(send_data_context) => ChannelIdentificators { + initiator_id: send_data_context.initiator_id, + channel_id: send_data_context.channel_id, + }, + ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { + return Err(RdpError::UnexpectedDisconnection(format!( + "Server disconnection reason - {:?}", + disconnect_reason + ))) + } + _ => { + return Err(RdpError::UnexpectedPdu(format!( + "Expected Send Data Context PDU, got {:?}", + mcs_frame.pdu.as_short_name() + ))) + } + }; + + let pdu = T::from_buffer(mcs_frame.data.reader())?; + + Ok(Self { channel_ids, pdu }) + } +} + +#[derive(Clone, Debug)] +pub struct StaticVirtualChannelFrame { + pub channel_ids: ChannelIdentificators, + pub data: Bytes, +} + +impl Frame for StaticVirtualChannelFrame { + fn encode(self, mut stream: impl io::Write) -> Result<(), RdpError> { + let channel_header = vc::ChannelPduHeader { + total_length: self.data.len() as u32, + flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, + }; + + let mut buf_writer = BytesMut::with_capacity(channel_header.buffer_length() + self.data.len()).writer(); + channel_header.to_buffer(&mut buf_writer)?; + let mut buf = buf_writer.into_inner(); + buf.extend_from_slice(&self.data); + + let info_frame = SendDataInfoFrame { + channel_ids: self.channel_ids, + data: buf.freeze(), + }; + + info_frame.encode(&mut stream) + } + + fn decode(stream: impl io::Read) -> Result { + let info_frame = SendDataInfoFrame::decode(stream)?; + + let mut remaining_reader = info_frame.data.reader(); + let channel_header = vc::ChannelPduHeader::from_buffer(&mut remaining_reader)?; + let remaining = remaining_reader.into_inner(); + debug_assert_eq!(remaining.len(), channel_header.total_length as usize); + + Ok(Self { + channel_ids: info_frame.channel_ids, + data: remaining, + }) + } +} + +pub struct DynamicVirtualChannelServerFrame { + pub channel_ids: ChannelIdentificators, + pub dvc_pdu: vc::dvc::ServerPdu, + pub extra_data: Bytes, +} + +impl DynamicVirtualChannelServerFrame { + pub fn drdynvc_id(&self) -> u16 { + self.channel_ids.channel_id + } +} + +impl Frame for DynamicVirtualChannelServerFrame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let mut buf_writer = BytesMut::with_capacity(self.dvc_pdu.buffer_length() + self.extra_data.len()).writer(); + self.dvc_pdu.to_buffer(&mut buf_writer)?; + let mut buf = buf_writer.into_inner(); + buf.extend_from_slice(&self.extra_data); + + StaticVirtualChannelFrame { + channel_ids: self.channel_ids, + data: buf.freeze(), + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let channel_frame = StaticVirtualChannelFrame::decode(stream)?; + let channel_ids = channel_frame.channel_ids; + let dvc_data_size = channel_frame.data.len(); + + let mut remaining_reader = channel_frame.data.reader(); + let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(&mut remaining_reader, dvc_data_size)?; + let remaining = remaining_reader.into_inner(); + + Ok(Self { + channel_ids, + dvc_pdu: dvc_server_pdu, + extra_data: remaining, + }) + } +} + +pub struct DynamicVirtualChannelClientFrame { + pub channel_ids: ChannelIdentificators, + pub dvc_pdu: vc::dvc::ClientPdu, + pub extra_data: Bytes, +} + +impl DynamicVirtualChannelClientFrame { + pub fn drdynvc_id(&self) -> u16 { + self.channel_ids.channel_id + } +} + +impl Frame for DynamicVirtualChannelClientFrame { + fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { + let mut buf_writer = BytesMut::with_capacity(self.dvc_pdu.buffer_length() + self.extra_data.len()).writer(); + self.dvc_pdu.to_buffer(&mut buf_writer)?; + let mut buf = buf_writer.into_inner(); + buf.extend_from_slice(&self.extra_data); + + StaticVirtualChannelFrame { + channel_ids: self.channel_ids, + data: buf.freeze(), + } + .encode(stream) + } + + fn decode(stream: impl io::Read) -> Result { + let channel_frame = StaticVirtualChannelFrame::decode(stream)?; + let channel_ids = channel_frame.channel_ids; + let dvc_data_size = channel_frame.data.len(); + + let mut remaining_reader = channel_frame.data.reader(); + let dvc_server_pdu = vc::dvc::ClientPdu::from_buffer(&mut remaining_reader, dvc_data_size)?; + let remaining = remaining_reader.into_inner(); + + Ok(Self { + channel_ids, + dvc_pdu: dvc_server_pdu, + extra_data: remaining, + }) + } +} diff --git a/ironrdp-session/src/codecs.rs b/ironrdp-session/src/framed.rs similarity index 83% rename from ironrdp-session/src/codecs.rs rename to ironrdp-session/src/framed.rs index 74167337..f6f92e2e 100644 --- a/ironrdp-session/src/codecs.rs +++ b/ironrdp-session/src/framed.rs @@ -8,7 +8,7 @@ use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _} use ironrdp_core::Action; use num_traits::FromPrimitive; -use crate::transport::{Decoder as TransportDecoder, Encoder as TransportEncoder}; +use crate::frame::Frame; pub type ErasedWriter = Pin>; @@ -44,6 +44,20 @@ where (self.reader, self.buf) } + pub fn into_inner_no_leftover(self) -> R { + let (reader, leftover) = self.into_inner(); + debug_assert_eq!(leftover.len(), 0, "unexpected leftover"); + reader + } + + pub fn get_inner(&self) -> (&R, &BytesMut) { + (&self.reader, &self.buf) + } + + pub fn get_inner_mut(&mut self) -> (&mut R, &mut BytesMut) { + (&mut self.reader, &mut self.buf) + } + pub async fn read_frame(&mut self) -> Result, ironrdp_core::RdpError> where R: Unpin, @@ -67,10 +81,9 @@ where } } - pub async fn decode_next_frame(&mut self, decoder: &mut D) -> Result + pub(crate) async fn decode_next_frame(&mut self) -> Result where - D: TransportDecoder, - D::Error: Into, + F: Frame, R: Unpin, { let frame = self @@ -78,22 +91,22 @@ where .await? .ok_or(crate::RdpError::UnexpectedStreamTermination)?; - let item = decoder.decode(&frame[..]).map_err(Into::into)?; + let item = F::decode(&frame[..])?; Ok(item) } } -pub async fn encode_next_frame(writer: &mut W, encoder: &mut E, item: E::Item) -> Result<(), crate::RdpError> +pub(crate) async fn encode_next_frame(writer: &mut W, frame: F) -> Result<(), crate::RdpError> where W: AsyncWrite + Unpin, - E: TransportEncoder, - E::Error: Into, + F: Frame, { let mut buf = BytesMut::new(); let buf_writer = (&mut buf).writer(); - encoder.encode(item, buf_writer).map_err(Into::into)?; + frame.encode(buf_writer)?; writer.write_all(&buf).await?; + writer.flush().await?; Ok(()) } @@ -112,6 +125,7 @@ fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp_core } /// Attempts to decode a frame from the provided buffer of bytes. +// TODO: try `&mut Bytes` fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp_core::RdpError> { let mut stream = buf.as_ref(); if stream.is_empty() { diff --git a/ironrdp-session/src/lib.rs b/ironrdp-session/src/lib.rs index 49371fbe..6f4ab383 100644 --- a/ironrdp-session/src/lib.rs +++ b/ironrdp-session/src/lib.rs @@ -1,21 +1,20 @@ #[macro_use] extern crate log; -mod codecs; -mod errors; - pub mod active_session; pub mod connection_sequence; +pub mod frame; pub mod image; -pub mod transport; pub mod utils; -use ironrdp_core::{gcc, nego}; +mod errors; +mod framed; + +use ironrdp_core::gcc; pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor, GfxHandler}; -pub use crate::codecs::{ErasedWriter, FramedReader}; -pub use crate::connection_sequence::{process_connection_sequence, ConnectionSequenceResult, UpgradedStream}; pub use crate::errors::RdpError; +pub use crate::framed::{ErasedWriter, FramedReader}; #[derive(Debug, Clone)] pub struct GraphicsConfig { @@ -29,7 +28,7 @@ pub struct GraphicsConfig { #[derive(Debug, Clone)] pub struct InputConfig { pub credentials: sspi::AuthIdentity, - pub security_protocol: nego::SecurityProtocol, + pub security_protocol: ironrdp_core::SecurityProtocol, pub keyboard_type: gcc::KeyboardType, pub keyboard_subtype: u32, pub keyboard_functional_keys_count: u32, @@ -37,7 +36,13 @@ pub struct InputConfig { pub dig_product_id: String, pub width: u16, pub height: u16, - pub global_channel_name: String, - pub user_channel_name: String, + pub global_channel_name: String, // FIXME: <- should be removed (no stringified name actually exist in the spec) + pub user_channel_name: String, // FIXME: <- should be removed (no stringified name actually exist in the spec) pub graphics_config: Option, } + +#[derive(Copy, Clone, Debug)] +pub struct ChannelIdentificators { + pub initiator_id: u16, + pub channel_id: u16, +} diff --git a/ironrdp-session/src/transport.rs b/ironrdp-session/src/transport.rs deleted file mode 100644 index c5cc90ab..00000000 --- a/ironrdp-session/src/transport.rs +++ /dev/null @@ -1,535 +0,0 @@ -mod channels; -mod connection; - -use std::io; -use std::marker::PhantomData; - -use bytes::BytesMut; -use ironrdp_core::rdp::SERVER_CHANNEL_ID; -use ironrdp_core::{PduParsing, RdpPdu}; - -pub use self::channels::{ChannelIdentificators, DynamicVirtualChannelTransport, StaticVirtualChannelTransport}; -pub use self::connection::{connect, EarlyUserAuthResult, TsRequestTransport}; -use crate::RdpError; - -pub trait Encoder { - type Item; - type Error; // FIXME: this bound type should probably be removed for the sake of simplicity - - fn encode(&mut self, item: Self::Item, stream: impl io::Write) -> Result<(), Self::Error>; -} - -pub trait Decoder { - type Item; - type Error; // FIXME: this bound type should probably be removed for the sake of simplicity - - fn decode(&mut self, stream: impl io::Read) -> Result; -} - -// FIXME: is "transport" a good naming for these structs? - -#[derive(Copy, Clone, Debug)] -pub struct DataTransport { - data_length: usize, - state: TransportState, -} - -impl Default for DataTransport { - fn default() -> Self { - Self::new() - } -} - -impl DataTransport { - pub fn new() -> Self { - Self { - data_length: 0, - state: TransportState::ToDecode, - } - } - - pub fn set_decoded_context(&mut self, data_length: usize) { - self.data_length = data_length; - self.state = TransportState::Decoded; - } -} - -impl Encoder for DataTransport { - type Item = BytesMut; - type Error = RdpError; - - fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - ironrdp_core::Data::new(data.len()).to_buffer(&mut stream)?; - stream.write_all(data.as_ref())?; - stream.flush()?; - - Ok(()) - } -} - -impl Decoder for DataTransport { - type Item = usize; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - match self.state { - TransportState::ToDecode => { - let data_pdu = ironrdp_core::Data::from_buffer(&mut stream)?; - - Ok(data_pdu.data_length) - } - TransportState::Decoded => Ok(self.data_length), - } - } -} - -pub struct X224DataTransport { - _marker1: PhantomData, - _marker2: PhantomData, -} - -impl Default for X224DataTransport { - fn default() -> Self { - Self { - _marker1: PhantomData::default(), - _marker2: PhantomData::default(), - } - } -} - -impl Encoder for X224DataTransport -where - E: PduParsing, - ::Error: From, - ::Error: From, -{ - type Item = E; - type Error = ::Error; - - fn encode(&mut self, data: Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { - ironrdp_core::Data::new(data.buffer_length()) - .to_buffer(&mut stream) - .map_err(ironrdp_core::RdpError::X224Error)?; - data.to_buffer(&mut stream)?; - Ok(()) - } -} - -impl Decoder for X224DataTransport -where - D: PduParsing, - ::Error: From, - ::Error: From, -{ - type Item = D; - type Error = ::Error; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let data = ironrdp_core::Data::from_buffer(&mut stream).map_err(ironrdp_core::RdpError::X224Error)?; - let length = data.data_length; - let item = D::from_buffer(&mut stream)?; - let remaining = length - item.buffer_length(); - if remaining > 0 { - let mut remaining = vec![0u8; remaining]; - stream.read_exact(&mut remaining)?; - } - Ok(item) - } -} - -#[derive(Copy, Clone, Debug)] -pub struct McsTransport(pub DataTransport); - -impl McsTransport { - pub fn new(transport: DataTransport) -> Self { - Self(transport) - } - - pub fn prepare_data_to_encode( - mcs_pdu: ironrdp_core::McsPdu, - extra_data: Option>, - ) -> Result { - let mut mcs_pdu_buff = BytesMut::with_capacity(mcs_pdu.buffer_length()); - mcs_pdu_buff.resize(mcs_pdu.buffer_length(), 0x00); - mcs_pdu.to_buffer(mcs_pdu_buff.as_mut()).map_err(RdpError::McsError)?; - - if let Some(data) = extra_data { - mcs_pdu_buff.extend_from_slice(&data); - } - - Ok(mcs_pdu_buff) - } -} - -impl Encoder for McsTransport { - type Item = BytesMut; - type Error = RdpError; - - fn encode(&mut self, mcs_pdu_buff: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - self.0.encode(mcs_pdu_buff, &mut stream) - } -} - -impl Decoder for McsTransport { - type Item = ironrdp_core::McsPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - self.0.decode(&mut stream)?; - let mcs_pdu = ironrdp_core::McsPdu::from_buffer(&mut stream).map_err(RdpError::McsError)?; - - Ok(mcs_pdu) - } -} - -#[derive(Clone, Debug)] -pub struct SendDataContextTransport { - pub mcs_transport: McsTransport, - state: TransportState, - channel_ids: ChannelIdentificators, -} - -impl SendDataContextTransport { - pub fn new(mcs_transport: McsTransport, initiator_id: u16, channel_id: u16) -> Self { - Self { - mcs_transport, - channel_ids: ChannelIdentificators { - initiator_id, - channel_id, - }, - state: TransportState::ToDecode, - } - } - - pub fn set_channel_ids(&mut self, channel_ids: ChannelIdentificators) { - self.channel_ids = channel_ids; - } - - pub fn set_decoded_context(&mut self, channel_ids: ChannelIdentificators) { - self.set_channel_ids(channel_ids); - self.state = TransportState::Decoded; - } -} - -impl Default for SendDataContextTransport { - fn default() -> Self { - Self { - mcs_transport: McsTransport::new(DataTransport::default()), - channel_ids: ChannelIdentificators { - initiator_id: 0, - channel_id: 0, - }, - state: TransportState::ToDecode, - } - } -} - -impl Encoder for SendDataContextTransport { - type Item = Vec; - type Error = RdpError; - - fn encode(&mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let send_data_context = ironrdp_core::mcs::SendDataContext { - channel_id: self.channel_ids.channel_id, - initiator_id: self.channel_ids.initiator_id, - pdu_length: send_data_context_pdu.len(), - }; - - self.mcs_transport.encode( - McsTransport::prepare_data_to_encode( - ironrdp_core::McsPdu::SendDataRequest(send_data_context), - Some(send_data_context_pdu), - )?, - &mut stream, - ) - } -} - -impl Decoder for SendDataContextTransport { - type Item = ChannelIdentificators; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - match self.state { - TransportState::ToDecode => { - let mcs_pdu = self.mcs_transport.decode(&mut stream)?; - - match mcs_pdu { - ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { - initiator_id: send_data_context.initiator_id, - channel_id: send_data_context.channel_id, - }), - ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { - Err(RdpError::UnexpectedDisconnection(format!( - "Server disconnection reason - {:?}", - disconnect_reason - ))) - } - _ => Err(RdpError::UnexpectedPdu(format!( - "Expected Send Data Context PDU, got {:?}", - mcs_pdu.as_short_name() - ))), - } - } - TransportState::Decoded => Ok(self.channel_ids), - } - } -} - -pub struct ShareControlHeaderTransport { - global_channel_id: u16, - share_id: u32, - pdu_source: u16, - send_data_context_transport: SendDataContextTransport, -} - -impl ShareControlHeaderTransport { - pub fn new(send_data_context_transport: SendDataContextTransport, pdu_source: u16, global_channel_id: u16) -> Self { - Self { - global_channel_id, - send_data_context_transport, - pdu_source, - share_id: 0, - } - } -} - -impl Encoder for ShareControlHeaderTransport { - type Item = ironrdp_core::ShareControlPdu; - type Error = RdpError; - - fn encode(&mut self, share_control_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let share_control_header = ironrdp_core::ShareControlHeader { - share_control_pdu, - pdu_source: self.pdu_source, - share_id: self.share_id, - }; - - let mut pdu = Vec::with_capacity(share_control_header.buffer_length()); - share_control_header - .to_buffer(&mut pdu) - .map_err(RdpError::ShareControlHeaderError)?; - - self.send_data_context_transport.encode(pdu, &mut stream) - } -} - -impl Decoder for ShareControlHeaderTransport { - type Item = ironrdp_core::ShareControlPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let channel_ids = self.send_data_context_transport.decode(&mut stream)?; - if channel_ids.channel_id != self.global_channel_id { - return Err(RdpError::InvalidResponse(format!( - "Unexpected Send Data Context channel ID ({})", - channel_ids.channel_id, - ))); - } - - let share_control_header = - ironrdp_core::ShareControlHeader::from_buffer(&mut stream).map_err(RdpError::ShareControlHeaderError)?; - self.share_id = share_control_header.share_id; - - if share_control_header.pdu_source != SERVER_CHANNEL_ID { - warn!( - "Invalid Share Control Header pdu source: expected ({}) != actual ({})", - SERVER_CHANNEL_ID, share_control_header.pdu_source - ); - } - - Ok(share_control_header.share_control_pdu) - } -} - -pub struct ShareDataHeaderTransport(ShareControlHeaderTransport); - -impl ShareDataHeaderTransport { - pub fn new(transport: ShareControlHeaderTransport) -> Self { - Self(transport) - } -} - -impl Encoder for ShareDataHeaderTransport { - type Item = ironrdp_core::ShareDataPdu; - type Error = RdpError; - - fn encode(&mut self, share_data_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let share_data_header = ironrdp_core::ShareDataHeader { - share_data_pdu, - stream_priority: ironrdp_core::rdp::StreamPriority::Medium, - compression_flags: ironrdp_core::rdp::CompressionFlags::empty(), - compression_type: ironrdp_core::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() - }; - - self.0 - .encode(ironrdp_core::ShareControlPdu::Data(share_data_header), &mut stream) - } -} - -impl Decoder for ShareDataHeaderTransport { - type Item = ironrdp_core::ShareDataPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let share_control_pdu = self.0.decode(&mut stream)?; - - if let ironrdp_core::ShareControlPdu::Data(share_data_header) = share_control_pdu { - Ok(share_data_header.share_data_pdu) - } else { - Err(RdpError::UnexpectedPdu(format!( - "Expected Share Data Header, got: {:?}", - share_control_pdu.as_short_name() - ))) - } - } -} - -#[derive(Copy, Clone, Debug)] -pub enum TransportState { - ToDecode, - Decoded, -} - -#[derive(Debug, Copy, Clone)] -pub struct RdpTransport; - -impl Decoder for RdpTransport { - type Item = RdpPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - RdpPdu::from_buffer(&mut stream).map_err(RdpError::from) - } -} - -impl Encoder for RdpTransport { - type Item = (RdpPdu, BytesMut); - type Error = RdpError; - - fn encode(&mut self, (item, data): Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { - match item { - RdpPdu::X224(data) => { - data.to_buffer(&mut stream)?; - } - RdpPdu::FastPath(fast_path) => { - fast_path.to_buffer(&mut stream)?; - } - } - - stream.write_all(data.as_ref())?; - stream.flush()?; - - Ok(()) - } -} - -#[derive(Clone, Debug)] -pub struct SendPduDataContextTransport { - pub mcs_transport: McsTransport, - channel_ids: Option, - _marker1: PhantomData, - _marker2: PhantomData, -} - -impl SendPduDataContextTransport { - pub fn new(mcs_transport: McsTransport, channel_ids: Option) -> Self { - Self { - mcs_transport, - channel_ids, - _marker1: PhantomData::default(), - _marker2: PhantomData::default(), - } - } - - pub fn set_channel_ids(&mut self, channel_ids: ChannelIdentificators) { - self.channel_ids = Some(channel_ids); - } - - pub fn set_decoded_context(&mut self, channel_ids: ChannelIdentificators) { - self.set_channel_ids(channel_ids); - } - - pub fn map_context(self) -> SendPduDataContextTransport - where - U: PduParsing, - V: PduParsing, - { - SendPduDataContextTransport::new(self.mcs_transport, self.channel_ids) - } -} - -impl Default for SendPduDataContextTransport { - fn default() -> Self { - Self { - mcs_transport: McsTransport::new(DataTransport::default()), - channel_ids: None, - _marker1: PhantomData::default(), - _marker2: PhantomData::default(), - } - } -} - -impl Encoder for SendPduDataContextTransport -where - E: PduParsing, - RdpError: From<::Error>, -{ - type Item = E; - type Error = RdpError; - - fn encode(&mut self, send_data_context_pdu: Self::Item, mut stream: impl io::Write) -> Result<(), Self::Error> { - if let Some(channel_ids) = self.channel_ids.as_ref() { - let mut pdu_data = Vec::new(); - send_data_context_pdu.to_buffer(&mut pdu_data)?; - - let send_data_context = ironrdp_core::mcs::SendDataContext { - channel_id: channel_ids.channel_id, - initiator_id: channel_ids.initiator_id, - pdu_length: pdu_data.len(), - }; - - self.mcs_transport.encode( - McsTransport::prepare_data_to_encode( - ironrdp_core::McsPdu::SendDataRequest(send_data_context), - Some(pdu_data), - )?, - &mut stream, - ) - } else { - Err(RdpError::AccessToNonExistingChannelName( - "Channel not connected".to_string(), - )) - } - } -} - -impl Decoder for SendPduDataContextTransport -where - D: PduParsing, - RdpError: From<::Error>, -{ - type Item = (ChannelIdentificators, D); - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let mcs_pdu = self.mcs_transport.decode(&mut stream)?; - - let channel_ids = match mcs_pdu { - ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(ChannelIdentificators { - initiator_id: send_data_context.initiator_id, - channel_id: send_data_context.channel_id, - }), - ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( - RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {:?}", disconnect_reason)), - ), - _ => Err(RdpError::UnexpectedPdu(format!( - "Expected Send Data Context PDU, got {:?}", - mcs_pdu.as_short_name() - ))), - }?; - - let data = D::from_buffer(&mut stream)?; - Ok((channel_ids, data)) - } -} diff --git a/ironrdp-session/src/transport/channels.rs b/ironrdp-session/src/transport/channels.rs deleted file mode 100644 index 11727255..00000000 --- a/ironrdp-session/src/transport/channels.rs +++ /dev/null @@ -1,116 +0,0 @@ -use std::io; - -use ironrdp_core::rdp::vc; -use ironrdp_core::PduParsing; - -use super::{Decoder, Encoder, SendDataContextTransport}; -use crate::RdpError; - -#[derive(Copy, Clone, Debug)] -pub struct ChannelIdentificators { - pub initiator_id: u16, - pub channel_id: u16, -} - -#[derive(Clone, Debug)] -pub struct StaticVirtualChannelTransport { - channel_ids: ChannelIdentificators, - transport: SendDataContextTransport, -} - -impl StaticVirtualChannelTransport { - pub fn new(transport: SendDataContextTransport) -> Self { - Self { - channel_ids: ChannelIdentificators { - channel_id: 0, - initiator_id: 0, - }, - transport, - } - } -} - -impl Encoder for StaticVirtualChannelTransport { - type Item = Vec; - type Error = RdpError; - - fn encode(&mut self, mut channel_data_buffer: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - let channel_header = vc::ChannelPduHeader { - total_length: channel_data_buffer.len() as u32, - flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, - }; - - let mut channel_buffer = Vec::with_capacity(channel_header.buffer_length() + channel_data_buffer.len()); - channel_header.to_buffer(&mut channel_buffer)?; - channel_buffer.append(&mut channel_data_buffer); - - self.transport.set_channel_ids(self.channel_ids); - self.transport.encode(channel_buffer, &mut stream) - } -} - -impl Decoder for StaticVirtualChannelTransport { - type Item = (u16, usize); - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let channel_ids = self.transport.decode(&mut stream)?; - self.channel_ids = channel_ids; - let channel_header = vc::ChannelPduHeader::from_buffer(&mut stream)?; - - Ok((channel_ids.channel_id, channel_header.total_length as usize)) - } -} - -pub struct DynamicVirtualChannelTransport { - transport: StaticVirtualChannelTransport, - drdynvc_id: u16, -} - -impl DynamicVirtualChannelTransport { - pub fn new(transport: StaticVirtualChannelTransport, drdynvc_id: u16) -> Self { - Self { transport, drdynvc_id } - } - - pub fn prepare_data_to_encode( - dvc_pdu: vc::dvc::ClientPdu, - extra_data: Option>, - ) -> Result, RdpError> { - let mut full_data_buff = Vec::with_capacity(dvc_pdu.buffer_length()); - dvc_pdu.to_buffer(&mut full_data_buff)?; - - if let Some(mut extra_data) = extra_data { - full_data_buff.append(&mut extra_data); - } - - Ok(full_data_buff) - } -} - -impl Encoder for DynamicVirtualChannelTransport { - type Item = Vec; - type Error = RdpError; - - fn encode(&mut self, client_pdu_buff: Self::Item, mut stream: impl io::Write) -> Result<(), RdpError> { - self.transport.encode(client_pdu_buff, &mut stream) - } -} - -impl Decoder for DynamicVirtualChannelTransport { - type Item = vc::dvc::ServerPdu; - type Error = RdpError; - - fn decode(&mut self, mut stream: impl io::Read) -> Result { - let (channel_id, dvc_data_size) = self.transport.decode(&mut stream)?; - if self.drdynvc_id != channel_id { - return Err(RdpError::InvalidChannelIdError(format!( - "Expected drdynvc {} ID, got: {} ID", - self.drdynvc_id, channel_id, - ))); - } - - let dvc_server_pdu = vc::dvc::ServerPdu::from_buffer(&mut stream, dvc_data_size)?; - - Ok(dvc_server_pdu) - } -} diff --git a/ironrdp-session/src/transport/connection.rs b/ironrdp-session/src/transport/connection.rs deleted file mode 100644 index 0ac3327a..00000000 --- a/ironrdp-session/src/transport/connection.rs +++ /dev/null @@ -1,126 +0,0 @@ -use bytes::BytesMut; -use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; -use ironrdp_core::{nego, PduParsing}; -use log::debug; -use sspi::internal::credssp; - -use crate::codecs::FramedReader; -use crate::RdpError; - -const MAX_TS_REQUEST_LENGTH_BUFFER_SIZE: usize = 4; - -#[derive(Default)] -pub struct TsRequestTransport; - -impl TsRequestTransport { - pub async fn encode( - &mut self, - ts_request: credssp::TsRequest, - mut stream: impl AsyncWrite + Unpin, - ) -> Result<(), RdpError> { - let mut buf = BytesMut::with_capacity(ts_request.buffer_len() as usize); - buf.resize(ts_request.buffer_len() as usize, 0x00); - - ts_request - .encode_ts_request(buf.as_mut()) - .map_err(RdpError::TsRequestError)?; - - stream.write_all(buf.as_ref()).await?; - stream.flush().await?; - - Ok(()) - } - - pub async fn decode(&mut self, mut stream: impl AsyncRead + Unpin) -> Result { - let mut buf = BytesMut::with_capacity(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE); - buf.resize(MAX_TS_REQUEST_LENGTH_BUFFER_SIZE, 0x00); - stream.read_exact(&mut buf).await?; - - let ts_request_buffer_length = credssp::TsRequest::read_length(buf.as_ref())?; - buf.resize(ts_request_buffer_length, 0x00); - stream.read_exact(&mut buf[MAX_TS_REQUEST_LENGTH_BUFFER_SIZE..]).await?; - - let ts_request = credssp::TsRequest::from_buffer(buf.as_ref()).map_err(RdpError::TsRequestError)?; - - Ok(ts_request) - } -} - -pub struct EarlyUserAuthResult; - -impl EarlyUserAuthResult { - pub async fn read(mut stream: impl AsyncRead + Unpin) -> Result { - let mut buf = BytesMut::with_capacity(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE); - buf.resize(credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE, 0x00); - stream.read_exact(&mut buf).await?; - let early_user_auth_result = - credssp::EarlyUserAuthResult::from_buffer(buf.as_ref()).map_err(RdpError::EarlyUserAuthResultError)?; - - Ok(early_user_auth_result) - } -} - -pub async fn connect( - reader: &mut FramedReader, - writer: W, - security_protocol: nego::SecurityProtocol, - username: String, -) -> Result { - process_negotiation( - reader, - writer, - Some(nego::NegoData::Cookie(username)), - security_protocol, - nego::RequestFlags::empty(), - 0, - ) - .await -} - -async fn process_negotiation( - reader: &mut FramedReader, - mut writer: W, - nego_data: Option, - protocol: nego::SecurityProtocol, - flags: nego::RequestFlags, - src_ref: u16, -) -> Result { - let connection_request = nego::Request { - nego_data, - flags, - protocol, - src_ref, - }; - debug!("Send X.224 Connection Request PDU: {:?}", connection_request); - let mut buffer = Vec::new(); - connection_request.to_buffer(&mut buffer)?; - writer.write_all(&buffer).await?; - writer.flush().await?; - - let data = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; - let connection_response = nego::Response::from_buffer(data.as_ref())?; - if let Some(nego::ResponseData::Response { - flags, - protocol: selected_protocol, - }) = connection_response.response - { - debug!( - "Got X.224 Connection Confirm PDU: selected protocol ({:?}), response flags ({:?})", - selected_protocol, flags - ); - - if protocol.contains(selected_protocol) { - Ok(selected_protocol) - } else { - Err(RdpError::InvalidResponse(format!( - "Got unexpected security protocol: {:?} while was expected one of {:?}", - selected_protocol, protocol - ))) - } - } else { - Err(RdpError::InvalidResponse(format!( - "Got unexpected X.224 Connection Response: {:?}", - connection_response.response - ))) - } -} From 3b1f969afa3769e6eb3311a3853b9d6852435c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 17:04:29 -0500 Subject: [PATCH 0101/1273] feat: Devolutions Gateway RDP extension Issue: ARC-109 --- ironrdp-devolutions-gateway/Cargo.toml | 7 + ironrdp-devolutions-gateway/src/lib.rs | 305 +++++++++++++++++++++ ironrdp-session/Cargo.toml | 4 + ironrdp-session/src/connection_sequence.rs | 255 ++++++++++++++--- ironrdp-session/src/framed.rs | 18 ++ 5 files changed, 545 insertions(+), 44 deletions(-) diff --git a/ironrdp-devolutions-gateway/Cargo.toml b/ironrdp-devolutions-gateway/Cargo.toml index 9b696633..25112657 100644 --- a/ironrdp-devolutions-gateway/Cargo.toml +++ b/ironrdp-devolutions-gateway/Cargo.toml @@ -9,3 +9,10 @@ repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] [dependencies] +der = { version = "0.6.0", features = ["alloc", "derive"] } +bytes = "1.3.0" + +[dev-dependencies] +rstest = "0.15.0" +hex = "0.4.3" +pretty_assertions = "1.3.0" diff --git a/ironrdp-devolutions-gateway/src/lib.rs b/ironrdp-devolutions-gateway/src/lib.rs index 8b137891..6aa2831d 100644 --- a/ironrdp-devolutions-gateway/src/lib.rs +++ b/ironrdp-devolutions-gateway/src/lib.rs @@ -1 +1,306 @@ +// Re-export der crate for convenience +pub use der; +use der::asn1::OctetString; + +pub const BASE_VERSION: u64 = 3389; +pub const VERSION_1: u64 = BASE_VERSION + 1; + +#[derive(Clone, Debug, Eq, PartialEq, der::Sequence)] +#[asn1(tag_mode = "EXPLICIT")] +pub struct RDCleanPathErr { + #[asn1(context_specific = "0")] + pub error_code: u16, + #[asn1(context_specific = "1", optional = "true")] + pub http_status_code: Option, + #[asn1(context_specific = "2", optional = "true")] + pub wsa_last_error: Option, + #[asn1(context_specific = "3", optional = "true")] + pub tls_alert_code: Option, +} + +#[derive(Clone, Debug, Eq, PartialEq, der::Sequence)] +#[asn1(tag_mode = "EXPLICIT")] +pub struct RDCleanPathPdu { + #[asn1(context_specific = "0")] + pub version: u64, + #[asn1(context_specific = "1", optional = "true")] + pub error: Option, + #[asn1(context_specific = "2", optional = "true")] + pub destination: Option, + #[asn1(context_specific = "3", optional = "true")] + pub proxy_auth: Option, + #[asn1(context_specific = "4", optional = "true")] + pub server_auth: Option, + #[asn1(context_specific = "5", optional = "true")] + pub preconnection_blob: Option, + #[asn1(context_specific = "6", optional = "true")] + pub x224_connection_pdu: Option, + #[asn1(context_specific = "7", optional = "true")] + pub server_cert_chain: Option>, + //#[asn1(context_specific = "8", optional = "true")] + //pub ocsp_response: Option, + /// IPv4 or IPv6 address of the server resolved by the Devolutions Gateway + #[asn1(context_specific = "9", optional = "true")] + pub server_addr: Option, +} + +impl Default for RDCleanPathPdu { + fn default() -> Self { + Self { + version: VERSION_1, + error: None, + destination: None, + proxy_auth: None, + server_auth: None, + preconnection_blob: None, + x224_connection_pdu: None, + server_cert_chain: None, + server_addr: None, + } + } +} + +pub enum DetectionResult { + Detected(u64), + NotEnoughBytes, + Failed, +} + +impl RDCleanPathPdu { + /// Try to parse first few bytes to detect a RDCleanPathPdu + pub fn detect(src: &[u8]) -> DetectionResult { + use der::Decode as _; + + #[derive(der::Sequence)] + #[asn1(tag_mode = "EXPLICIT")] + pub struct PartialRDCleanPathPdu { + #[asn1(context_specific = "0")] + pub version: u64, + } + + match PartialRDCleanPathPdu::from_der(src) { + Ok(pdu) => match pdu.version { + VERSION_1 => DetectionResult::Detected(pdu.version), + _ => DetectionResult::Failed, + }, + Err(e) => match e.kind() { + der::ErrorKind::Incomplete { .. } => DetectionResult::NotEnoughBytes, + _ => DetectionResult::Failed, + }, + } + } + + /// Attempts to decode a RDCleanPathPDU from the provided buffer of bytes. + pub fn decode(src: &mut bytes::BytesMut) -> der::Result> { + use bytes::Buf as _; + use der::{Decode as _, Encode as _}; + + match RDCleanPathPdu::from_der(src) { + Ok(pdu) => { + let len = usize::try_from(pdu.encoded_len()?).expect("u32 to usize conversion"); + src.advance(len); + Ok(Some(pdu)) + } + Err(e) => match e.kind() { + der::ErrorKind::Incomplete { + expected_len, + actual_len: _, + } => { + let expected_len = usize::try_from(expected_len).expect("u32 to usize conversion"); + src.reserve(expected_len - src.len()); + Ok(None) + } + _ => Err(e), + }, + } + } + + pub fn new_request( + x224_pdu: Vec, + destination: String, + proxy_auth: String, + pcb: Option, + ) -> der::Result { + Ok(Self { + version: VERSION_1, + destination: Some(destination), + proxy_auth: Some(proxy_auth), + preconnection_blob: pcb, + x224_connection_pdu: Some(OctetString::new(x224_pdu)?), + ..Self::default() + }) + } + + pub fn new_response( + server_addr: String, + x224_pdu: Vec, + x509_chain: impl IntoIterator>, + ) -> der::Result { + Ok(Self { + version: VERSION_1, + x224_connection_pdu: Some(OctetString::new(x224_pdu)?), + server_cert_chain: Some( + x509_chain + .into_iter() + .map(OctetString::new) + .collect::>()?, + ), + server_addr: Some(server_addr), + ..Self::default() + }) + } + + pub fn new_general_error() -> Self { + Self { + version: VERSION_1, + error: Some(RDCleanPathErr { + error_code: 1, + http_status_code: None, + wsa_last_error: None, + tls_alert_code: None, + }), + ..Self::default() + } + } + + pub fn new_http_error(status_code: u16) -> Self { + Self { + version: VERSION_1, + error: Some(RDCleanPathErr { + error_code: 1, + http_status_code: Some(status_code), + wsa_last_error: None, + tls_alert_code: None, + }), + ..Self::default() + } + } + + pub fn new_wsa_error(wsa_error_code: u16) -> Self { + Self { + version: VERSION_1, + error: Some(RDCleanPathErr { + error_code: 1, + http_status_code: None, + wsa_last_error: Some(wsa_error_code), + tls_alert_code: None, + }), + ..Self::default() + } + } + + pub fn new_tls_error(alert_code: u8) -> Self { + Self { + version: VERSION_1, + error: Some(RDCleanPathErr { + error_code: 1, + http_status_code: None, + wsa_last_error: None, + tls_alert_code: Some(alert_code), + }), + ..Self::default() + } + } + + pub fn to_der(&self) -> der::Result> { + der::Encode::to_vec(self) + } +} + +#[cfg(test)] +mod tests { + use der::Decode as _; + use rstest::rstest; + + use super::*; + + fn request() -> RDCleanPathPdu { + RDCleanPathPdu::new_request( + vec![0xDE, 0xAD, 0xBE, 0xFF], + "destination".to_owned(), + "proxy auth".to_owned(), + Some("PCB".to_owned()), + ) + .unwrap() + } + + const REQUEST_DER: &[u8] = &[ + 0x30, 0x32, 0xA0, 0x4, 0x2, 0x2, 0xD, 0x3E, 0xA2, 0xD, 0xC, 0xB, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0xA3, 0xC, 0xC, 0xA, 0x70, 0x72, 0x6F, 0x78, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0xA5, + 0x5, 0xC, 0x3, 0x50, 0x43, 0x42, 0xA6, 0x6, 0x4, 0x4, 0xDE, 0xAD, 0xBE, 0xFF, + ]; + + fn response_success() -> RDCleanPathPdu { + RDCleanPathPdu::new_response( + "192.168.7.95".to_owned(), + vec![0xDE, 0xAD, 0xBE, 0xFF], + [ + vec![0xDE, 0xAD, 0xBE, 0xFF], + vec![0xDE, 0xAD, 0xBE, 0xFF], + vec![0xDE, 0xAD, 0xBE, 0xFF], + ], + ) + .unwrap() + } + + const RESPONSE_SUCCESS_DER: &[u8] = &[ + 0x30, 0x34, 0xA0, 0x4, 0x2, 0x2, 0xD, 0x3E, 0xA6, 0x6, 0x4, 0x4, 0xDE, 0xAD, 0xBE, 0xFF, 0xA7, 0x14, 0x30, + 0x12, 0x4, 0x4, 0xDE, 0xAD, 0xBE, 0xFF, 0x4, 0x4, 0xDE, 0xAD, 0xBE, 0xFF, 0x4, 0x4, 0xDE, 0xAD, 0xBE, 0xFF, + 0xA9, 0xE, 0xC, 0xC, 0x31, 0x39, 0x32, 0x2E, 0x31, 0x36, 0x38, 0x2E, 0x37, 0x2E, 0x39, 0x35, + ]; + + fn response_http_error() -> RDCleanPathPdu { + RDCleanPathPdu::new_http_error(500) + } + + const RESPONSE_HTTP_ERROR_DER: &[u8] = &[ + 0x30, 0x15, 0xA0, 0x4, 0x2, 0x2, 0xD, 0x3E, 0xA1, 0xD, 0x30, 0xB, 0xA0, 0x3, 0x2, 0x1, 0x1, 0xA1, 0x4, 0x2, + 0x2, 0x1, 0xF4, + ]; + + fn response_tls_error() -> RDCleanPathPdu { + RDCleanPathPdu::new_tls_error(48) + } + + const RESPONSE_TLS_ERROR_DER: &[u8] = &[ + 0x30, 0x14, 0xA0, 0x04, 0x02, 0x02, 0x0D, 0x3E, 0xA1, 0x0C, 0x30, 0x0A, 0xA0, 0x03, 0x02, 0x01, 0x01, 0xA3, + 0x03, 0x02, 0x01, 0x30, + ]; + + #[rstest] + #[case(request())] + #[case(response_success())] + #[case(response_http_error())] + #[case(response_tls_error())] + fn smoke(#[case] message: RDCleanPathPdu) { + let encoded = message.to_der().unwrap(); + let decoded = RDCleanPathPdu::from_der(&encoded).unwrap(); + assert_eq!(message, decoded); + } + + macro_rules! assert_serialization { + ($left:expr, $right:expr) => {{ + if $left != $right { + let left = hex::encode(&$left); + let right = hex::encode(&$right); + let comparison = pretty_assertions::StrComparison::new(&left, &right); + panic!( + "assertion failed: `({} == {})`\n\n{comparison}", + stringify!($left), + stringify!($right), + ); + } + }}; + } + + #[rstest] + #[case(request(), REQUEST_DER)] + #[case(response_success(), RESPONSE_SUCCESS_DER)] + #[case(response_http_error(), RESPONSE_HTTP_ERROR_DER)] + #[case(response_tls_error(), RESPONSE_TLS_ERROR_DER)] + fn serialization(#[case] message: RDCleanPathPdu, #[case] expected_der: &[u8]) { + let encoded = message.to_der().unwrap(); + assert_serialization!(encoded, expected_der); + } +} diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index 37741ca3..f6016f72 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -8,6 +8,10 @@ homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] +[features] +default = [] +dgw_ext = [] + [dependencies] ironrdp-core = { path = "../ironrdp-core" } ironrdp-graphics = { path = "../ironrdp-graphics" } diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 2d79e9df..114e2ceb 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -60,12 +60,15 @@ impl Address { } // TODO: convert to a state machine and wrap into a future in ironrdp-session-async +// The ultimate goal is to remove the `dgw_ext` feature flag. pub async fn process_connection_sequence( stream: S, - addr: &Address, + #[cfg(not(feature = "dgw_ext"))] addr: &Address, + #[cfg(feature = "dgw_ext")] fqdn: &str, + #[cfg(feature = "dgw_ext")] proxy_auth_token: String, config: &InputConfig, - upgrade_stream: UpgradeFn, + #[cfg(not(feature = "dgw_ext"))] upgrade_stream: UpgradeFn, network_client_factory: Box, ) -> Result<(ConnectionSequenceResult, FramedReader, ErasedWriter), RdpError> where @@ -77,55 +80,103 @@ where let (reader, mut writer) = stream.split(); let mut reader = FramedReader::new(reader); - //== Connection Initiation ==// - // Exchange supported security protocols and a few other connection flags. + #[cfg(not(feature = "dgw_ext"))] + let (selected_protocol, mut reader, mut writer, server_addr) = { + //== Connection Initiation ==// + // Exchange supported security protocols and a few other connection flags. - trace!("Connection Initiation"); + trace!("Connection Initiation"); - let selected_protocol = connection_initiation( - &mut reader, - &mut writer, - config.security_protocol, - config.credentials.username.clone(), - ) - .await?; - - info!("Selected security protocol: {selected_protocol:?}"); - - //== Upgrade to Enhanced RDP Security ==// - // NOTE: we assume the selected protocol is never the standard RDP security (RC4). - - let reader = reader.into_inner_no_leftover(); - let stream = reader.reunite(writer).unwrap(); - - let UpgradedStream { - mut stream, - server_public_key, - } = upgrade_stream(stream).await?; - - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) - || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) - { - process_cred_ssp( - &mut stream, - config.credentials.clone(), - server_public_key, - &addr.hostname, - network_client_factory, + let selected_protocol = connection_initiation( + &mut reader, + &mut writer, + config.security_protocol, + config.credentials.username.clone(), ) .await?; - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { - let data = read_early_user_auth_result(&mut stream).await?; - if let credssp::EarlyUserAuthResult::AccessDenied = data { - return Err(RdpError::AccessDenied); + info!("Selected security protocol: {selected_protocol:?}"); + + //== Upgrade to Enhanced RDP Security ==// + // NOTE: we assume the selected protocol is never the standard RDP security (RC4). + + let reader = reader.into_inner_no_leftover(); + let stream = reader.reunite(writer).unwrap(); + + let UpgradedStream { + mut stream, + server_public_key, + } = upgrade_stream(stream).await?; + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + { + process_cred_ssp( + &mut stream, + config.credentials.clone(), + server_public_key, + &addr.hostname, + network_client_factory, + ) + .await?; + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + let data = read_early_user_auth_result(&mut stream).await?; + if let credssp::EarlyUserAuthResult::AccessDenied = data { + return Err(RdpError::AccessDenied); + } } } - } - let (reader, writer) = stream.split(); - let mut reader = FramedReader::new(reader).into_erased(); - let mut writer = Box::pin(writer) as ErasedWriter; + let (reader, writer) = stream.split(); + let reader = FramedReader::new(reader).into_erased(); + let writer = Box::pin(writer) as ErasedWriter; + + (selected_protocol, reader, writer, addr.sock) + }; + + #[cfg(feature = "dgw_ext")] + let (selected_protocol, mut reader, mut writer, server_addr) = { + let (selected_protocol, server_public_key, server_addr) = connection_initiation( + &mut reader, + &mut writer, + proxy_auth_token, + config.security_protocol, + config.credentials.username.clone(), + ) + .await?; + + let (reader, leftover) = reader.into_inner(); + debug_assert_eq!(leftover.len(), 0, "no leftover is expected after connection initiation"); + + let mut stream = reader.reunite(writer).unwrap(); + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + { + process_cred_ssp( + &mut stream, + config.credentials.clone(), + server_public_key, + fqdn, + network_client_factory, + ) + .await?; + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + let data = read_early_user_auth_result(&mut stream).await?; + if let credssp::EarlyUserAuthResult::AccessDenied = data { + return Err(RdpError::AccessDenied); + } + } + } + + let (reader, writer) = stream.split(); + let reader = FramedReader::new(reader).into_erased(); + let writer = Box::pin(writer) as ErasedWriter; + + (selected_protocol, reader, writer, server_addr) + }; //== Basic Settings Exchange ==// // Exchange basic settings including Core Data, Security Data and Network Data. @@ -169,7 +220,7 @@ where initiator_id, channel_id: global_channel_id, }; - settings_exchange(&mut writer, global_channel_ids, config, &addr.sock).await?; + settings_exchange(&mut writer, global_channel_ids, config, &server_addr).await?; //== Optional Connect-Time Auto-Detection ==// // NOTE: IronRDP is not expecting the Auto-Detect Request PDU from server. @@ -744,6 +795,7 @@ pub async fn read_early_user_auth_result( Ok(early_user_auth_result) } +#[cfg(not(feature = "dgw_ext"))] pub async fn connection_initiation( reader: &mut FramedReader, mut writer: W, @@ -785,6 +837,121 @@ pub async fn connection_initiation( } } +// FIXME: extract this function into another crate later +// TODO: clarify output type (currently the Vec is the server public key only) +// TODO: returns the whole certification chain in final version +#[cfg(feature = "dgw_ext")] +pub async fn connection_initiation( + reader: &mut FramedReader, + mut writer: W, + proxy_auth_token: String, + security_protocol: ironrdp_core::SecurityProtocol, + username: String, +) -> Result<(ironrdp_core::SecurityProtocol, Vec, std::net::SocketAddr), RdpError> { + use ironrdp_devolutions_gateway::RDCleanPathPdu; + use x509_cert::der::Decode as _; + + let connection_request = build_connection_request_with_username(security_protocol, username); + + let mut x224_pdu = Vec::new(); + connection_request.to_buffer(&mut x224_pdu)?; + + // FIXME: replace "10.10.0.6" by the actual destination host (found in the proxy auth token) + let rdp_clean_path = RDCleanPathPdu::new_request(x224_pdu, "10.10.0.6".into(), proxy_auth_token, None) + .map_err(|e| RdpError::ServerError(e.to_string()))?; + debug!("Send RDCleanPath PDU request: {:?}", connection_request); + + let request_bytes = rdp_clean_path.to_der().map_err(|e| { + RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + format!("couldn’t encode cleanpath request into der: {}", e), + )) + })?; + writer.write_all(&request_bytes).await?; + + writer.flush().await?; + + let (reader, buf) = reader.get_inner_mut(); + + let cleanpath_pdu = loop { + if let Some(pdu) = RDCleanPathPdu::decode(buf).map_err(|e| RdpError::ServerError(e.to_string()))? { + break pdu; + } + + let mut read_bytes = [0u8; 1024]; + let len = reader.read(&mut read_bytes[..]).await?; + buf.extend_from_slice(&read_bytes[..len]); + + if len == 0 { + return Err(RdpError::InvalidResponse("EOF when reading RDCleanPathPdu".to_owned())); + } + }; + + debug!("Received RDCleanPath PDU response: {:?}", cleanpath_pdu); + + let x224_pdu = cleanpath_pdu.x224_connection_pdu.ok_or(RdpError::AccessDenied)?; + let connection_response = ironrdp_core::Response::from_buffer(x224_pdu.as_bytes())?; + if let Some(ironrdp_core::ResponseData::Confirm { + flags, + protocol: selected_protocol, + }) = connection_response.response + { + debug!( + "Got X.224 Connection Confirm PDU: selected protocol ({:?}), response flags ({:?})", + selected_protocol, flags + ); + + if security_protocol.contains(selected_protocol) { + let cert_der = cleanpath_pdu + .server_cert_chain + .and_then(|chain| chain.into_iter().next()) + .ok_or_else(|| { + RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + "cleanpath response is missing the server cert chain", + )) + })?; + + let cert = x509_cert::Certificate::from_der(cert_der.as_bytes()).map_err(|e| { + RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + format!("couldn’t decode x509 certificate sent by Devolutions Gateway: {}", e), + )) + })?; + + let server_public_key = cert.tbs_certificate.subject_public_key_info.subject_public_key.to_vec(); + + let server_addr = cleanpath_pdu + .server_addr + .ok_or_else(|| { + RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + "cleanpath response is missing the server address", + )) + })? + .parse() + .map_err(|e| { + RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + format!("couldn’t parse server address sent by Devolutions Gateway: {}", e), + )) + })?; + + Ok((selected_protocol, server_public_key, server_addr)) + } else { + Err(RdpError::InvalidResponse(format!( + "Got unexpected security protocol: {:?} while was expected one of {:?}", + selected_protocol, security_protocol + ))) + } + } else { + Err(RdpError::InvalidResponse(format!( + "Got unexpected X.224 Connection Response: {:?}", + connection_response.response + ))) + } +} + fn build_connection_request_with_username( security_protocol: ironrdp_core::SecurityProtocol, username: String, diff --git a/ironrdp-session/src/framed.rs b/ironrdp-session/src/framed.rs index f6f92e2e..d6a3510e 100644 --- a/ironrdp-session/src/framed.rs +++ b/ironrdp-session/src/framed.rs @@ -10,9 +10,15 @@ use num_traits::FromPrimitive; use crate::frame::Frame; +#[cfg(not(feature = "dgw_ext"))] pub type ErasedWriter = Pin>; +#[cfg(feature = "dgw_ext")] +pub type ErasedWriter = Pin>; +#[cfg(not(feature = "dgw_ext"))] pub type ErasedReader = Pin>; +#[cfg(feature = "dgw_ext")] +pub type ErasedReader = Pin>; pub struct FramedReader { reader: R, @@ -30,6 +36,7 @@ where } } + #[cfg(not(feature = "dgw_ext"))] pub fn into_erased(self) -> FramedReader where R: Send + 'static, @@ -40,6 +47,17 @@ where } } + #[cfg(feature = "dgw_ext")] + pub fn into_erased(self) -> FramedReader + where + R: 'static, + { + FramedReader { + reader: Box::pin(self.reader), + buf: self.buf, + } + } + pub fn into_inner(self) -> (R, BytesMut) { (self.reader, self.buf) } From 7a744a217e013856582c01695bd7efb032f7e3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 21:27:32 -0500 Subject: [PATCH 0102/1273] feat: initial WASM module --- ffi/wasm/.cargo/config.toml | 2 + ffi/wasm/Cargo.toml | 50 +- ffi/wasm/check.ps1 | 23 + ffi/wasm/rust-toolchain.toml | 3 + ffi/wasm/src/lib.rs | 515 ++++++++++++++++++++- ffi/wasm/tests/web.rs | 13 - ironrdp-session/src/connection_sequence.rs | 263 +++++++---- 7 files changed, 732 insertions(+), 137 deletions(-) create mode 100644 ffi/wasm/.cargo/config.toml create mode 100755 ffi/wasm/check.ps1 create mode 100644 ffi/wasm/rust-toolchain.toml delete mode 100644 ffi/wasm/tests/web.rs diff --git a/ffi/wasm/.cargo/config.toml b/ffi/wasm/.cargo/config.toml new file mode 100644 index 00000000..f4e8c002 --- /dev/null +++ b/ffi/wasm/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target = "wasm32-unknown-unknown" diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index 9971c08c..ac77888f 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -1,24 +1,43 @@ [package] -name = "ironrdp-wasm" +name = "ironrdp" version = "0.1.0" -authors = ["Benoît CORTIER "] -edition = "2018" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] [lib] -name = "ironrdp" -crate-type = ["cdylib", "rlib"] +crate-type = ["cdylib"] [features] -default = ["console_error_panic_hook"] +default = ["panic_hook"] +panic_hook = ["dep:console_error_panic_hook"] [workspace] members = ["."] +[profile.release] +# Tell `rustc` to optimize for small code size. +opt-level = "s" + [dependencies] + +# RDP protocol +ironrdp = { path = "../../ironrdp" } +ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # TODO: secret feature until session state machine is done +sspi = "0.6" + +# Wasm wasm-bindgen = "0.2.83" wasm-bindgen-futures = "0.4.33" -lazy_static = "1.4.0" -ironrdp = { path = "../../ironrdp" } +js-sys = "0.3.60" +gloo-net = "0.2.4" + +# Enable WebAssembly support for a few crates +getrandom = { version = "*", features = ["js"] } +chrono = { version = "0.4", features = ["wasmbind"] } # The `console_error_panic_hook` crate provides better debugging of panics by # logging them with `console.error`. This is great for development, but requires @@ -26,12 +45,13 @@ ironrdp = { path = "../../ironrdp" } # code size when deploying. console_error_panic_hook = { version = "0.1.7", optional = true } -# Enable WebAssembly support for getrandom -getrandom = { version = "*", features = ["js"] } +# Async +futures-util = { version = "0.3", features = ["sink", "io"] } -[dev-dependencies] -wasm-bindgen-test = "0.3.33" +# Logging +console_log = "0.2.0" +log = "0.4.17" -[profile.release] -# Tell `rustc` to optimize for small code size. -opt-level = "s" +# Utils +anyhow = "1" +parking_lot = "0.12.1" diff --git a/ffi/wasm/check.ps1 b/ffi/wasm/check.ps1 new file mode 100755 index 00000000..2d563428 --- /dev/null +++ b/ffi/wasm/check.ps1 @@ -0,0 +1,23 @@ +#!/bin/env pwsh + +$ErrorActionPreference = "Stop" + +Push-Location -Path $PSScriptRoot + +try { + cargo build + + if ($LastExitCode -ne 0) { + throw "Compilation failed" + } + + $undefinedSymbols = wasm2wat ./target/wasm32-unknown-unknown/debug/ironrdp.wasm | Select-String -Pattern 'import "env"' + + if (-Not [string]::IsNullOrEmpty($undefinedSymbols)) { + throw "Found undefined symbols in generated wasm file: $undefinedSymbols" + } + + Write-Host "Looks WASM-compatible to me!" +} finally { + Pop-Location +} diff --git a/ffi/wasm/rust-toolchain.toml b/ffi/wasm/rust-toolchain.toml new file mode 100644 index 00000000..962290a7 --- /dev/null +++ b/ffi/wasm/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +targets = ["wasm32-unknown-unknown"] +profile = "minimal" diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index 4820d9ff..db21238c 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -1,35 +1,508 @@ +#[macro_use] +extern crate log; + mod utils; +use core::sync::atomic::AtomicBool; +use std::cell::RefCell; +use std::io; +use std::pin::Pin; +use std::rc::Rc; +use std::task::{Context, Poll}; + +use anyhow::Context as _; +use futures_util::{pin_mut, ready, AsyncRead, AsyncWrite, AsyncWriteExt, Sink, Stream}; +use gloo_net::websocket::futures::WebSocket; +use gloo_net::websocket::{Message as WebSocketMessage, WebSocketError}; +use ironrdp::geometry::Rectangle; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult}; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; +use parking_lot::Mutex; +use sspi::network_client::{NetworkClient, NetworkClientFactory}; +use sspi::AuthIdentity; use wasm_bindgen::prelude::*; -#[wasm_bindgen] -pub async fn update_mouse( - session_id: usize, - mouse_x: u16, - mouse_y: u16, - left_click: bool, -) -> Result<(), String> { - let _ = session_id; // TODO - let _ = mouse_x; // TODO - let _ = mouse_y; // TODO - let _ = left_click; // TODO +// TODO: proper error reporting - Err("Unimplemented".to_string()) +// NOTE: #[wasm_bindgen(start)] didn’t work last time I tried +#[wasm_bindgen] +pub fn ironrdp_init() { + utils::set_panic_hook(); + console_log::init_with_level(log::Level::Debug).unwrap(); } #[wasm_bindgen] -pub fn connect(username: String, password: String, address: String) -> Result<(), String> { - let _ = username; // TODO - let _ = address; // TODO +#[derive(Clone, Default)] +pub struct SessionBuilder(Rc>); - if password == "abc" { - Ok(()) - } else { - Err("Something wrong happened".to_string()) +#[derive(Default)] +struct SessionBuilderInner { + username: Option, + password: Option, + address: Option, + auth_token: Option, + update_callback: Option, + update_callback_context: Option, +} + +#[wasm_bindgen] +impl SessionBuilder { + pub fn new() -> SessionBuilder { + Self(Rc::new(RefCell::new(SessionBuilderInner::default()))) + } + + pub fn username(&self, username: String) -> SessionBuilder { + self.0.borrow_mut().username = Some(username); + self.clone() + } + + pub fn password(&self, password: String) -> SessionBuilder { + self.0.borrow_mut().password = Some(password); + self.clone() + } + + pub fn address(&self, address: String) -> SessionBuilder { + self.0.borrow_mut().address = Some(address); + self.clone() + } + + pub fn auth_token(&self, token: String) -> SessionBuilder { + self.0.borrow_mut().auth_token = Some(token); + self.clone() + } + + pub fn update_callback(&self, callback: js_sys::Function) -> SessionBuilder { + self.0.borrow_mut().update_callback = Some(callback); + self.clone() + } + + pub fn update_callback_context(&self, context: JsValue) -> SessionBuilder { + self.0.borrow_mut().update_callback_context = Some(context); + self.clone() + } + + pub async fn connect(&self) -> Result { + let (username, password, address, auth_token, update_callback, update_callback_context); + + { + let inner = self.0.borrow(); + username = inner.username.clone().expect("username"); + password = inner.password.clone().expect("password"); + address = inner.address.clone().expect("address"); + auth_token = inner.auth_token.clone().expect("auth_token"); + update_callback = inner.update_callback.clone().expect("update_callback"); + update_callback_context = inner.update_callback_context.clone().expect("update_callback_context"); + } + + info!("Connect to RDP host"); + + let input_config = build_input_config(username, password, None); + + let ws = WebSocketCompat::new(WebSocket::open(&address).map_err(|e| e.to_string())?); + + let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( + ws, + "MY-FQDN", + auth_token, + &input_config, + Box::new(PlaceholderNetworkClientFactory), + ) + .await + .map_err(|e| anyhow::Error::new(e).to_string())?; + + info!("Connected!"); + + Ok(Session { + input_config, + connection_sequence_result, + update_callback, + update_callback_context, + was_down: AtomicBool::new(false), + rdp_reader: Mutex::new(rdp_reader), + rdp_writer: Mutex::new(rdp_writer), + }) } } #[wasm_bindgen] -pub fn init() { - utils::set_panic_hook(); +#[derive(Clone)] +pub struct DesktopSize { + pub width: u16, + pub height: u16, +} + +struct WebSocketCompat { + read_buf: Option>, + inner: WebSocket, +} + +impl WebSocketCompat { + fn new(ws: WebSocket) -> Self { + Self { + read_buf: None, + inner: ws, + } + } +} + +impl AsyncRead for WebSocketCompat { + fn poll_read(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll> { + let this = self.get_mut(); + let read_buf = &mut this.read_buf; + let inner = &mut this.inner; + pin_mut!(inner); + + let mut data = if let Some(data) = read_buf.take() { + data + } else { + match ready!(inner.as_mut().poll_next(cx)) { + Some(Ok(m)) => match m { + WebSocketMessage::Text(s) => s.into_bytes(), + WebSocketMessage::Bytes(data) => data, + }, + Some(Err(e)) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), + None => return Poll::Ready(Ok(0)), + } + }; + + let bytes_to_copy = std::cmp::min(buf.len(), data.len()); + buf[..bytes_to_copy].copy_from_slice(&data[..bytes_to_copy]); + + if data.len() > bytes_to_copy { + data.drain(..bytes_to_copy); + *read_buf = Some(data); + } + + Poll::Ready(Ok(bytes_to_copy)) + } +} + +impl AsyncWrite for WebSocketCompat { + fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { + macro_rules! try_in_poll { + ($expr:expr) => {{ + match $expr { + Ok(o) => o, + // When using `AsyncWriteExt::write_all`, `io::ErrorKind::WriteZero` will be raised. + // In this case it means "attempted to write on a closed socket". + Err(WebSocketError::ConnectionClose(_)) => return Poll::Ready(Ok(0)), + Err(e) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), + } + }}; + } + + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + + // try flushing preemptively + let _ = inner.as_mut().poll_flush(cx); + + // make sure sink is ready to send + try_in_poll!(ready!(inner.as_mut().poll_ready(cx))); + + // actually submit new item + try_in_poll!(inner.as_mut().start_send(WebSocketMessage::Bytes(buf.to_vec()))); + // ^ if no error occurred, message is accepted and queued when calling `start_send` + // (that is: `to_vec` is called only once) + + Poll::Ready(Ok(buf.len())) + } + + fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + let res = ready!(inner.poll_flush(cx)); + Poll::Ready(websocket_to_io_result(res)) + } + + fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + let res = ready!(inner.poll_close(cx)); + Poll::Ready(websocket_to_io_result(res)) + } +} + +fn websocket_to_io_result(res: Result<(), WebSocketError>) -> io::Result<()> { + match res { + Ok(()) => Ok(()), + Err(WebSocketError::ConnectionClose(_)) => Ok(()), + Err(e) => Err(io::Error::new(io::ErrorKind::Other, e.to_string())), + } +} + +enum ButtonState { + Unchanged, + Pressed, + Released, +} + +#[wasm_bindgen] +pub struct Session { + input_config: InputConfig, + connection_sequence_result: ConnectionSequenceResult, + update_callback: js_sys::Function, + update_callback_context: JsValue, + was_down: AtomicBool, + rdp_reader: Mutex, + rdp_writer: Mutex, +} + +#[wasm_bindgen] +impl Session { + pub async fn run(&self) -> Result<(), String> { + info!("Start RDP session"); + + let mut image = DecodedImage::new( + PixelFormat::RgbA32, + u32::from(self.connection_sequence_result.desktop_size.width), + u32::from(self.connection_sequence_result.desktop_size.height), + ); + + let mut active_stage = + ActiveStageProcessor::new(self.input_config.clone(), None, self.connection_sequence_result.clone()); + let mut frame_id = 0; + + 'outer: loop { + let frame = self + .rdp_reader + .lock() + .read_frame() + .await + .map_err(|e| e.to_string())? + .ok_or_else(|| RdpError::AccessDenied.to_string())? + .freeze(); + + let outputs = active_stage.process(&mut image, frame).map_err(|e| e.to_string())?; + + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => { + let mut writer = self.rdp_writer.lock(); + writer.write_all(&frame).await.map_err(|e| e.to_string())?; + writer.flush().await.map_err(|e| e.to_string())?; + } + ActiveStageOutput::GraphicsUpdate(updated_region) => { + let partial_image = extract_partial_image(&image, &updated_region); + + send_update_rectangle( + &self.update_callback, + &self.update_callback_context, + frame_id, + updated_region, + partial_image, + ) + .context("Failed to send update rectangle") + .map_err(|e| e.to_string())?; + + frame_id += 1; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } + + info!("RPD session terminated"); + + Ok(()) + } + + pub fn desktop_size(&self) -> DesktopSize { + let desktop_width = self.connection_sequence_result.desktop_size.width; + let desktop_height = self.connection_sequence_result.desktop_size.height; + + DesktopSize { + width: desktop_width, + height: desktop_height, + } + } + + /// Returns previous state + fn toggle_down(&self, currently_down: bool) -> anyhow::Result { + let was_down = self.was_down.swap(currently_down, core::sync::atomic::Ordering::SeqCst); + + match (currently_down, was_down) { + (true, false) => Ok(ButtonState::Pressed), + (false, true) => Ok(ButtonState::Released), + _ => Ok(ButtonState::Unchanged), + } + } + + pub async fn update_mouse(&self, mouse_x: u16, mouse_y: u16, left_click: bool) -> Result<(), String> { + use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent}; + use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; + use ironrdp::core::input::MousePdu; + use ironrdp::core::PduParsing; + + let mut inputs = vec![]; + + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + + let button_state = self.toggle_down(left_click).map_err(|e| e.to_string())?; + + match button_state { + ButtonState::Pressed => { + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + } + ButtonState::Released => { + inputs.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: mouse_x, + y_position: mouse_y, + })); + } + ButtonState::Unchanged => {} + } + + let fastpath_input = FastPathInput(inputs); + + let mut frame = Vec::new(); + fastpath_input.to_buffer(&mut frame).map_err(|e| e.to_string())?; + + let mut writer = self.rdp_writer.lock(); + writer.write_all(&frame).await.map_err(|e| e.to_string())?; + writer.flush().await.map_err(|e| e.to_string())?; + + Ok(()) + } +} + +fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { + const DEFAULT_WIDTH: u16 = 1280; + const DEFAULT_HEIGHT: u16 = 720; + const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; + const USER_CHANNEL_NAME: &str = "USER"; + + InputConfig { + credentials: AuthIdentity { + username, + password, + domain, + }, + security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, + keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, + keyboard_subtype: 0, + keyboard_functional_keys_count: 12, + ime_file_name: String::new(), + dig_product_id: String::new(), + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_owned(), + user_channel_name: USER_CHANNEL_NAME.to_owned(), + graphics_config: None, + } +} + +fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { + let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); + + let image_width = usize::try_from(image.width()).unwrap(); + + let region_top = usize::from(region.top); + let region_left = usize::from(region.left); + let region_width = usize::from(region.width()); + let region_height = usize::from(region.height()); + + let dst_buf_size = region_width * region_height * pixel_size; + let mut dst = vec![0; dst_buf_size]; + + let src = image.data(); + + let image_stride = image_width * pixel_size; + let region_stride = region_width * pixel_size; + + for row in 0..region_height { + let src_begin = image_stride * (region_top + row) + region_left * pixel_size; + let src_end = src_begin + region_stride; + let src_slice = &src[src_begin..src_end]; + + let target_begin = region_stride * row; + let target_end = target_begin + region_stride; + let target_slice = &mut dst[target_begin..target_end]; + + target_slice.copy_from_slice(src_slice); + } + + dst +} + +#[wasm_bindgen] +pub struct RectInfo { + pub frame_id: usize, + pub top: u16, + pub left: u16, + pub right: u16, + pub bottom: u16, + pub width: u16, + pub height: u16, +} + +fn send_update_rectangle( + update_callback: &js_sys::Function, + callback_context: &JsValue, + frame_id: usize, + region: Rectangle, + buffer: Vec, +) -> anyhow::Result<()> { + use js_sys::Uint8ClampedArray; + + let top = region.top; + let left = region.left; + let right = region.right; + let bottom = region.bottom; + let width = region.width(); + let height = region.height(); + + let update_rect = RectInfo { + frame_id, + top, + left, + right, + bottom, + width, + height, + }; + let update_rect = JsValue::from(update_rect); + + let js_array = Uint8ClampedArray::new_with_length(buffer.len() as u32); + js_array.copy_from(&buffer); + let js_array = JsValue::from(js_array); + + let _ret = update_callback + .call2(callback_context, &update_rect, &js_array) + .map_err(|e| anyhow::Error::msg(format!("update callback failed: {:?}", e)))?; + + Ok(()) +} + +#[derive(Debug, Clone)] +struct PlaceholderNetworkClientFactory; + +impl NetworkClientFactory for PlaceholderNetworkClientFactory { + fn network_client(&self) -> Box { + unimplemented!() + } + + fn clone(&self) -> Box { + Box::new(Clone::clone(self)) + } } diff --git a/ffi/wasm/tests/web.rs b/ffi/wasm/tests/web.rs deleted file mode 100644 index de5c1daf..00000000 --- a/ffi/wasm/tests/web.rs +++ /dev/null @@ -1,13 +0,0 @@ -//! Test suite for the Web and headless browsers. - -#![cfg(target_arch = "wasm32")] - -extern crate wasm_bindgen_test; -use wasm_bindgen_test::*; - -wasm_bindgen_test_configure!(run_in_browser); - -#[wasm_bindgen_test] -fn pass() { - assert_eq!(1 + 1, 2); -} diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 114e2ceb..d89ec6af 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -1,7 +1,6 @@ mod user_info; use std::collections::HashMap; -use std::future::Future; use std::net::SocketAddr; use std::{io, iter}; @@ -62,121 +61,209 @@ impl Address { // TODO: convert to a state machine and wrap into a future in ironrdp-session-async // The ultimate goal is to remove the `dgw_ext` feature flag. +#[cfg(not(feature = "dgw_ext"))] pub async fn process_connection_sequence( stream: S, - #[cfg(not(feature = "dgw_ext"))] addr: &Address, - #[cfg(feature = "dgw_ext")] fqdn: &str, - #[cfg(feature = "dgw_ext")] proxy_auth_token: String, + addr: &Address, config: &InputConfig, - #[cfg(not(feature = "dgw_ext"))] upgrade_stream: UpgradeFn, + upgrade_stream: UpgradeFn, network_client_factory: Box, ) -> Result<(ConnectionSequenceResult, FramedReader, ErasedWriter), RdpError> where S: AsyncRead + AsyncWrite + Unpin + 'static, UpgradeFn: FnOnce(S) -> FnRes, - FnRes: Future, RdpError>>, + FnRes: std::future::Future, RdpError>>, UpgradedS: AsyncRead + AsyncWrite + Unpin + Send + 'static, { let (reader, mut writer) = stream.split(); let mut reader = FramedReader::new(reader); - #[cfg(not(feature = "dgw_ext"))] - let (selected_protocol, mut reader, mut writer, server_addr) = { - //== Connection Initiation ==// - // Exchange supported security protocols and a few other connection flags. + //== Connection Initiation ==// + // Exchange supported security protocols and a few other connection flags. - trace!("Connection Initiation"); + trace!("Connection Initiation"); - let selected_protocol = connection_initiation( - &mut reader, - &mut writer, - config.security_protocol, - config.credentials.username.clone(), - ) - .await?; + let selected_protocol = connection_initiation( + &mut reader, + &mut writer, + config.security_protocol, + config.credentials.username.clone(), + ) + .await?; - info!("Selected security protocol: {selected_protocol:?}"); + info!("Selected security protocol: {selected_protocol:?}"); - //== Upgrade to Enhanced RDP Security ==// - // NOTE: we assume the selected protocol is never the standard RDP security (RC4). + //== Upgrade to Enhanced RDP Security ==// + // NOTE: we assume the selected protocol is never the standard RDP security (RC4). - let reader = reader.into_inner_no_leftover(); - let stream = reader.reunite(writer).unwrap(); + let reader = reader.into_inner_no_leftover(); + let stream = reader.reunite(writer).unwrap(); - let UpgradedStream { - mut stream, + let UpgradedStream { + mut stream, + server_public_key, + } = upgrade_stream(stream).await?; + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + { + process_cred_ssp( + &mut stream, + config.credentials.clone(), server_public_key, - } = upgrade_stream(stream).await?; - - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) - || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) - { - process_cred_ssp( - &mut stream, - config.credentials.clone(), - server_public_key, - &addr.hostname, - network_client_factory, - ) - .await?; - - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { - let data = read_early_user_auth_result(&mut stream).await?; - if let credssp::EarlyUserAuthResult::AccessDenied = data { - return Err(RdpError::AccessDenied); - } - } - } - - let (reader, writer) = stream.split(); - let reader = FramedReader::new(reader).into_erased(); - let writer = Box::pin(writer) as ErasedWriter; - - (selected_protocol, reader, writer, addr.sock) - }; - - #[cfg(feature = "dgw_ext")] - let (selected_protocol, mut reader, mut writer, server_addr) = { - let (selected_protocol, server_public_key, server_addr) = connection_initiation( - &mut reader, - &mut writer, - proxy_auth_token, - config.security_protocol, - config.credentials.username.clone(), + &addr.hostname, + network_client_factory, ) .await?; - let (reader, leftover) = reader.into_inner(); - debug_assert_eq!(leftover.len(), 0, "no leftover is expected after connection initiation"); - - let mut stream = reader.reunite(writer).unwrap(); - - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) - || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) - { - process_cred_ssp( - &mut stream, - config.credentials.clone(), - server_public_key, - fqdn, - network_client_factory, - ) - .await?; - - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { - let data = read_early_user_auth_result(&mut stream).await?; - if let credssp::EarlyUserAuthResult::AccessDenied = data { - return Err(RdpError::AccessDenied); - } + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + let data = read_early_user_auth_result(&mut stream).await?; + if let credssp::EarlyUserAuthResult::AccessDenied = data { + return Err(RdpError::AccessDenied); } } + } - let (reader, writer) = stream.split(); - let reader = FramedReader::new(reader).into_erased(); - let writer = Box::pin(writer) as ErasedWriter; + let (reader, writer) = stream.split(); + let mut reader = FramedReader::new(reader).into_erased(); + let mut writer = Box::pin(writer) as ErasedWriter; - (selected_protocol, reader, writer, server_addr) + //== Basic Settings Exchange ==// + // Exchange basic settings including Core Data, Security Data and Network Data. + + trace!("Basic Settings Exchange"); + + let static_channels = basic_settings_exchange(&mut reader, &mut writer, config, selected_protocol).await?; + + //== Channel Connection ==// + // Connect every individual channel. + + trace!("Channel Connection"); + + let joined_static_channels = channel_connection(&mut reader, &mut writer, static_channels, config).await?; + debug!("Joined static active_session: {:?}", joined_static_channels); + + let global_channel_id = *joined_static_channels + .get(config.global_channel_name.as_str()) + .expect("global channel must be added"); + let initiator_id = *joined_static_channels + .get(config.user_channel_name.as_str()) + .expect("user channel must be added"); + + //== RDP Security Commencement ==// + // When using standard RDP security (RC4), a Security Exchange PDU is sent at this point. + // NOTE: IronRDP is only supporting extended security (TLS…). + + if selected_protocol == ironrdp_core::SecurityProtocol::RDP { + return Err(RdpError::ConnectionError(io::Error::new( + io::ErrorKind::Other, + "Standard RDP Security (RC4 encryption) is not supported", + ))); + } + + //== Secure Settings Exchange ==// + // Send Client Info PDU (information about supported types of compression, username, password, etc). + + trace!("Secure Settings Exchange"); + + let global_channel_ids = ChannelIdentificators { + initiator_id, + channel_id: global_channel_id, }; + settings_exchange(&mut writer, global_channel_ids, config, &addr.sock).await?; + + //== Optional Connect-Time Auto-Detection ==// + // NOTE: IronRDP is not expecting the Auto-Detect Request PDU from server. + + //== Licensing ==// + // Server is sending information regarding licensing. + // Typically useful when support for more than two simultaneous connections is required (terminal server). + + trace!("Licensing"); + + server_licensing_exchange(&mut reader, &mut writer, config, global_channel_id).await?; + + //== Optional Multitransport Bootstrapping ==// + // NOTE: our implemention is not expecting the Auto-Detect Request PDU from server + + //== Capabilities Exchange ==/ + // The server sends the set of capabilities it supports to the client. + + trace!("Capabilities Exchange"); + + let desktop_size = capabilities_exchange(&mut reader, &mut writer, global_channel_ids, config).await?; + + //== Connection Finalization ==// + // Client and server exchange a few PDUs in order to finalize the connection. + // Client may send PDUs one after the other without waiting for a response in order to speed up the process. + + trace!("Connection finalization"); + + connection_finalization(&mut reader, &mut writer, global_channel_ids).await?; + + Ok(( + ConnectionSequenceResult { + desktop_size, + joined_static_channels, + global_channel_id, + initiator_id, + }, + reader, + writer, + )) +} + +#[cfg(feature = "dgw_ext")] +pub async fn process_connection_sequence( + stream: S, + fqdn: &str, + proxy_auth_token: String, + config: &InputConfig, + network_client_factory: Box, +) -> Result<(ConnectionSequenceResult, FramedReader, ErasedWriter), RdpError> +where + S: AsyncRead + AsyncWrite + Unpin + 'static, +{ + let (reader, mut writer) = stream.split(); + let mut reader = FramedReader::new(reader); + + let (selected_protocol, server_public_key, server_addr) = connection_initiation( + &mut reader, + &mut writer, + proxy_auth_token, + config.security_protocol, + config.credentials.username.clone(), + ) + .await?; + + let (reader, leftover) = reader.into_inner(); + debug_assert_eq!(leftover.len(), 0, "no leftover is expected after connection initiation"); + + let mut stream = reader.reunite(writer).unwrap(); + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + { + process_cred_ssp( + &mut stream, + config.credentials.clone(), + server_public_key, + fqdn, + network_client_factory, + ) + .await?; + + if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + let data = read_early_user_auth_result(&mut stream).await?; + if let credssp::EarlyUserAuthResult::AccessDenied = data { + return Err(RdpError::AccessDenied); + } + } + } + + let (reader, writer) = stream.split(); + let mut reader = FramedReader::new(reader).into_erased(); + let mut writer = Box::pin(writer) as ErasedWriter; //== Basic Settings Exchange ==// // Exchange basic settings including Core Data, Security Data and Network Data. From e01d3263d978434292ea58d30fe07355a3502abf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 21:28:23 -0500 Subject: [PATCH 0103/1273] ci: check compilation for wasm module and Tauri app --- .github/workflows/ci.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e06de82..88b4c1d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,22 @@ jobs: - uses: actions/checkout@v3 - name: Check clippy - run: cargo clippy --workspace --all-features -- -D warnings + run: cargo clippy --workspace -- -D warnings + + wasm: + name: WASM target + runs-on: ubuntu-latest + needs: formatting + + steps: + - uses: actions/checkout@v3 + + - name: Prepare runner + run: sudo apt install wabt + + - name: Check + shell: pwsh + run: ./ffi/wasm/check.ps1 tests: name: Tests [${{ matrix.os }}] @@ -55,4 +70,4 @@ jobs: - uses: actions/checkout@v3 - name: Test [${{ matrix.os }}] - run: cargo test --workspace --all-features + run: cargo test --workspace From 898fb8d40a3c8495e22c1a08c9e9401d3ba0a199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 26 Jan 2023 21:37:34 -0500 Subject: [PATCH 0104/1273] refactor: fix clippy warnings --- ffi/wasm/src/lib.rs | 2 +- ironrdp-cli/src/main.rs | 4 ++-- ironrdp-core/src/basic_output/fast_path.rs | 2 +- .../src/basic_output/fast_path/test.rs | 6 ++--- ironrdp-core/src/connection_initiation.rs | 24 +++++++++---------- ironrdp-core/src/crypto/rc4.rs | 2 +- ironrdp-core/src/crypto/rsa.rs | 8 +++---- ironrdp-core/src/gcc/conference_create.rs | 2 +- ironrdp-core/src/gcc/security_data/test.rs | 4 ++-- ironrdp-core/src/mcs.rs | 2 +- ironrdp-core/src/per.rs | 4 ++-- ironrdp-core/src/rdp.rs | 2 +- .../rdp/capability_sets/bitmap_codecs/test.rs | 2 +- ironrdp-core/src/rdp/headers.rs | 3 +-- ironrdp-core/src/rdp/server_error_info.rs | 2 +- ironrdp-core/src/rdp/server_license.rs | 8 +++---- .../server_license_request/cert.rs | 6 ++--- .../server_license/server_upgrade_license.rs | 2 +- ironrdp-core/src/rdp/session_info/tests.rs | 18 +++++++------- ironrdp-core/src/rdp/vc.rs | 2 +- .../src/rdp/vc/dvc/capabilities/tests.rs | 4 ++-- ironrdp-core/src/rdp/vc/dvc/data/tests.rs | 2 +- .../src/rdp/vc/dvc/data_first/tests.rs | 4 ++-- ironrdp-core/src/rdp/vc/dvc/tests.rs | 6 ++--- ironrdp-core/src/rdp/vc/tests.rs | 2 +- ironrdp-core/src/utils.rs | 2 +- ironrdp-graphics/src/image_processing.rs | 2 +- ironrdp-graphics/src/rlgr.rs | 12 +++++----- ironrdp-graphics/src/zgfx/mod.rs | 4 ++-- ironrdp-gui-client/src/main.rs | 2 +- ironrdp-renderer/src/draw.rs | 8 +++---- ironrdp-session/src/connection_sequence.rs | 23 +++++++----------- ironrdp-session/src/frame.rs | 5 ++-- 33 files changed, 87 insertions(+), 94 deletions(-) diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index db21238c..dc44699f 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -489,7 +489,7 @@ fn send_update_rectangle( let _ret = update_callback .call2(callback_context, &update_rect, &js_array) - .map_err(|e| anyhow::Error::msg(format!("update callback failed: {:?}", e)))?; + .map_err(|e| anyhow::Error::msg(format!("update callback failed: {e:?}")))?; Ok(()) } diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs index 9dea945d..d3a575ab 100644 --- a/ironrdp-cli/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -66,7 +66,7 @@ async fn main() { error!("{:#}", e); println!("The server has terminated the RDP session"); - println!("{:?}", e); + println!("{e:?}"); exitcode::NOHOST } @@ -79,7 +79,7 @@ async fn main() { let e = anyhow::Error::from(e); error!("{:#}", e); - println!("{:?}", e); + println!("{e:?}"); exit_code } diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs index f1691f09..0c624dc6 100644 --- a/ironrdp-core/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -35,7 +35,7 @@ impl FastPathHeader { } let data_length = length as usize - sizeof_length - 1; // Detect case, when received packet has non-optimal packet length packing - let forced_long_length = per::sizeof_length(length as u16) != sizeof_length; + let forced_long_length = per::sizeof_length(length) != sizeof_length; Ok(FastPathHeader { flags, diff --git a/ironrdp-core/src/basic_output/fast_path/test.rs b/ironrdp-core/src/basic_output/fast_path/test.rs index 204b6349..5c5c97ba 100644 --- a/ironrdp-core/src/basic_output/fast_path/test.rs +++ b/ironrdp-core/src/basic_output/fast_path/test.rs @@ -50,7 +50,7 @@ fn to_buffer_correctly_serializes_fast_path_header_with_short_length() { let mut buffer = vec![0; expected.len()]; FAST_PATH_HEADER_WITH_SHORT_LEN_PDU - .to_buffer(&mut buffer.as_mut_slice()) + .to_buffer(buffer.as_mut_slice()) .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -77,7 +77,7 @@ fn to_buffer_correctly_serializes_fast_path_header_with_long_length() { let mut buffer = vec![0; expected.len()]; FAST_PATH_HEADER_WITH_LONG_LEN_PDU - .to_buffer(&mut buffer.as_mut_slice()) + .to_buffer(buffer.as_mut_slice()) .unwrap(); assert_eq!(expected, buffer.as_slice()); } @@ -104,7 +104,7 @@ fn to_buffer_correctly_serializes_fast_path_header_with_forced_long_length() { let mut buffer = vec![0; expected.len()]; FAST_PATH_HEADER_WITH_FORCED_LONG_LEN_PDU - .to_buffer(&mut buffer.as_mut_slice()) + .to_buffer(buffer.as_mut_slice()) .unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp-core/src/connection_initiation.rs b/ironrdp-core/src/connection_initiation.rs index 76353e63..c22ba309 100644 --- a/ironrdp-core/src/connection_initiation.rs +++ b/ironrdp-core/src/connection_initiation.rs @@ -106,7 +106,7 @@ pub enum NegotiationError { impl From for io::Error { fn from(e: NegotiationError) -> io::Error { - io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {}", e)) + io::Error::new(io::ErrorKind::Other, format!("Negotiation error: {e}")) } } @@ -197,15 +197,15 @@ impl PduParsing for Request { stream.write_u8(0)?; // class match &self.nego_data { - Some(NegoData::Cookie(s)) => writeln!(&mut stream, "{}{}\r", COOKIE_PREFIX, s)?, - Some(NegoData::RoutingToken(s)) => writeln!(&mut stream, "{}{}\r", ROUTING_TOKEN_PREFIX, s)?, + Some(NegoData::Cookie(s)) => writeln!(&mut stream, "{COOKIE_PREFIX}{s}\r")?, + Some(NegoData::RoutingToken(s)) => writeln!(&mut stream, "{ROUTING_TOKEN_PREFIX}{s}\r")?, None => (), } if self.protocol.bits() > SecurityProtocol::RDP.bits() { stream.write_u8(Message::Request.to_u8().unwrap())?; stream.write_u8(self.flags.bits())?; - stream.write_u16::(RDP_NEG_DATA_LENGTH as u16)?; + stream.write_u16::(RDP_NEG_DATA_LENGTH)?; stream.write_u32::(self.protocol.bits())?; } @@ -541,7 +541,7 @@ mod tests { match Response::from_buffer(buffer.as_ref()) { Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -570,7 +570,7 @@ mod tests { match Response::from_buffer(buffer.as_ref()) { Err(NegotiationError::ResponseFailure(e)) if e == FailureCode::SSLWithUserAuthRequiredByServer => {} - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -615,7 +615,7 @@ mod tests { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -629,7 +629,7 @@ mod tests { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -642,7 +642,7 @@ mod tests { match read_string_with_cr_lf(&mut request.as_ref(), COOKIE_PREFIX) { Err(ref e) if e.kind() == io::ErrorKind::UnexpectedEof => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -768,7 +768,7 @@ mod tests { match Request::from_buffer(request.as_ref()) { Err(NegotiationError::IOError(ref e)) if e.kind() == io::ErrorKind::InvalidData => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } @@ -953,7 +953,7 @@ mod tests { match Response::from_buffer(expected.as_ref()) { Err(NegotiationError::ResponseFailure(_)) => (), - Err(e) => panic!("invalid error type: {}", e), + Err(e) => panic!("invalid error type: {e}"), Ok(_) => panic!("error expected"), } } @@ -1052,7 +1052,7 @@ mod tests { match Request::from_buffer(request.as_ref()) { Err(NegotiationError::TpktVersionError) => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } diff --git a/ironrdp-core/src/crypto/rc4.rs b/ironrdp-core/src/crypto/rc4.rs index 70848f07..b4c0dcb7 100644 --- a/ironrdp-core/src/crypto/rc4.rs +++ b/ironrdp-core/src/crypto/rc4.rs @@ -31,7 +31,7 @@ impl Rc4 { self.j = (self.j + self.state[self.i] as usize) % 256; self.state.swap(self.i, self.j); let idx_k = (self.state[self.i] as usize + self.state[self.j] as usize) % 256; - let k = self.state[idx_k as usize]; + let k = self.state[idx_k]; let idx_msg = output.len(); output.push(k ^ message[idx_msg]); } diff --git a/ironrdp-core/src/crypto/rsa.rs b/ironrdp-core/src/crypto/rsa.rs index 971d5b81..edc90747 100644 --- a/ironrdp-core/src/crypto/rsa.rs +++ b/ironrdp-core/src/crypto/rsa.rs @@ -7,14 +7,14 @@ pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Res let (_, der_object) = parse_der(public_key_der).map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to parse public key from der: {:?}", err), + format!("Unable to parse public key from der: {err:?}"), ) })?; let der_object_sequence = der_object.as_sequence().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to extract a sequence from the der object. Error: {:?}", err), + format!("Unable to extract a sequence from the der object. Error: {err:?}"), ) })?; @@ -28,14 +28,14 @@ pub fn encrypt_with_public_key(message: &[u8], public_key_der: &[u8]) -> io::Res let n = der_object_sequence[0].as_slice().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to extract a slice from public key modulus sequence: {:?}", err), + format!("Unable to extract a slice from public key modulus sequence: {err:?}"), ) })?; let e = der_object_sequence[1].as_slice().map_err(|err| { io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to extract a slice from public key exponent sequence: {:?}", err), + format!("Unable to extract a slice from public key exponent sequence: {err:?}"), ) })?; diff --git a/ironrdp-core/src/gcc/conference_create.rs b/ironrdp-core/src/gcc/conference_create.rs index dca9eea3..85ffd922 100644 --- a/ironrdp-core/src/gcc/conference_create.rs +++ b/ironrdp-core/src/gcc/conference_create.rs @@ -241,7 +241,7 @@ impl PduParsing for ConferenceCreateResponse { per::write_octet_string( &mut stream, CONFERENCE_REQUEST_SERVER_TO_CLIENT_H221_NON_STANDARD, - H221_NON_STANDARD_MIN_LENGTH as usize, + H221_NON_STANDARD_MIN_LENGTH, )?; // H221NonStandardIdentifier (octet string) per::write_length(&mut stream, gcc_blocks_buffer_length as u16)?; diff --git a/ironrdp-core/src/gcc/security_data/test.rs b/ironrdp-core/src/gcc/security_data/test.rs index 7cb9599c..e1af878f 100644 --- a/ironrdp-core/src/gcc/security_data/test.rs +++ b/ironrdp-core/src/gcc/security_data/test.rs @@ -145,7 +145,7 @@ fn from_buffer_server_security_data_fails_with_invalid_server_random_length() { match ServerSecurityData::from_buffer(buffer.as_slice()) { Err(SecurityDataError::InvalidServerRandomLen(_)) => (), - res => panic!("Expected the invalid server random length error, got: {:?}", res), + res => panic!("Expected the invalid server random length error, got: {res:?}"), }; } @@ -178,7 +178,7 @@ fn to_buffer_server_security_data_fails_on_mismatch_of_required_and_optional_fie let mut buff = Vec::new(); match security_data.to_buffer(&mut buff) { Err(SecurityDataError::InvalidInput(_)) => (), - res => panic!("Expected the invalid input error, got: {:?}", res), + res => panic!("Expected the invalid input error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/mcs.rs b/ironrdp-core/src/mcs.rs index 76107ee2..6bc7b9e9 100644 --- a/ironrdp-core/src/mcs.rs +++ b/ironrdp-core/src/mcs.rs @@ -360,6 +360,6 @@ pub enum McsError { impl From for io::Error { fn from(e: McsError) -> io::Error { - io::Error::new(io::ErrorKind::Other, format!("MCS Connection Sequence error: {}", e)) + io::Error::new(io::ErrorKind::Other, format!("MCS Connection Sequence error: {e}")) } } diff --git a/ironrdp-core/src/per.rs b/ironrdp-core/src/per.rs index 481f54ff..8d4f9859 100644 --- a/ironrdp-core/src/per.rs +++ b/ironrdp-core/src/per.rs @@ -114,7 +114,7 @@ pub fn read_u32(mut stream: impl io::Read) -> io::Result { 4 => stream.read_u32::(), _ => Err(io::Error::new( io::ErrorKind::InvalidData, - format!("Invalid PER length: {}", length), + format!("Invalid PER length: {length}"), )), } } @@ -162,7 +162,7 @@ pub fn read_enum(mut stream: impl io::Read, count: u8) -> io::Result { if u16::from(enumerated) + 1 > u16::from(count) { Err(io::Error::new( io::ErrorKind::InvalidData, - format!("Enumerated value ({}) does not fall within expected range", enumerated), + format!("Enumerated value ({enumerated}) does not fall within expected range"), )) } else { Ok(enumerated) diff --git a/ironrdp-core/src/rdp.rs b/ironrdp-core/src/rdp.rs index 20f34825..2a9fccc7 100644 --- a/ironrdp-core/src/rdp.rs +++ b/ironrdp-core/src/rdp.rs @@ -111,6 +111,6 @@ pub enum RdpError { impl From for io::Error { fn from(e: RdpError) -> io::Error { - io::Error::new(io::ErrorKind::Other, format!("RDP Connection Sequence error: {}", e)) + io::Error::new(io::ErrorKind::Other, format!("RDP Connection Sequence error: {e}")) } } diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs b/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs index 7f744424..3d4455ba 100644 --- a/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs +++ b/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs @@ -479,7 +479,7 @@ fn codec_with_invalid_property_length_handles_correctly() { match Codec::from_buffer(codec_buffer.as_ref()) { Err(CapabilitySetsError::InvalidPropertyLength) => (), - Err(e) => panic!("wrong error type: {}", e), + Err(e) => panic!("wrong error type: {e}"), _ => panic!("error expected"), } } diff --git a/ironrdp-core/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs index 7d373916..d7a3f5bf 100644 --- a/ironrdp-core/src/rdp/headers.rs +++ b/ironrdp-core/src/rdp/headers.rs @@ -79,8 +79,7 @@ impl PduParsing for ShareControlHeader { let pdu_version = pdu_type_with_version & !SHARE_CONTROL_HEADER_MASK; if pdu_version != PROTOCOL_VERSION { return Err(RdpError::InvalidShareControlHeader(format!( - "Invalid PDU version: {}", - pdu_version + "Invalid PDU version: {pdu_version}" ))); } diff --git a/ironrdp-core/src/rdp/server_error_info.rs b/ironrdp-core/src/rdp/server_error_info.rs index 8592aff4..ae357d66 100644 --- a/ironrdp-core/src/rdp/server_error_info.rs +++ b/ironrdp-core/src/rdp/server_error_info.rs @@ -416,7 +416,7 @@ mod tests { let expected = SERVER_SET_ERROR_INFO_BUFFER.as_ref(); let mut buffer = vec![0; expected.len()]; - SERVER_SET_ERROR_INFO.to_buffer(&mut buffer.as_mut_slice()).unwrap(); + SERVER_SET_ERROR_INFO.to_buffer(buffer.as_mut_slice()).unwrap(); assert_eq!(expected, buffer.as_slice()); } diff --git a/ironrdp-core/src/rdp/server_license.rs b/ironrdp-core/src/rdp/server_license.rs index bb0e0ee8..6ee2ab21 100644 --- a/ironrdp-core/src/rdp/server_license.rs +++ b/ironrdp-core/src/rdp/server_license.rs @@ -66,7 +66,7 @@ impl PduParsing for LicenseHeader { let security_header = BasicSecurityHeader::from_buffer(&mut stream).map_err(|err| { ServerLicenseError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to read License Header from buffer. Error: {}", err), + format!("Unable to read License Header from buffer. Error: {err}"), )) })?; @@ -83,8 +83,8 @@ impl PduParsing for LicenseHeader { let preamble_flags = PreambleFlags::from_bits(flags_with_version & !PROTOCOL_VERSION_MASK) .ok_or_else(|| ServerLicenseError::InvalidPreamble(String::from("Got invalid flags field")))?; - let preamble_version = PreambleVersion::from_u8((flags_with_version & PROTOCOL_VERSION_MASK) as u8) - .ok_or_else(|| { + let preamble_version = + PreambleVersion::from_u8(flags_with_version & PROTOCOL_VERSION_MASK).ok_or_else(|| { ServerLicenseError::InvalidPreamble(String::from("Got invalid version in the flags field")) })?; @@ -101,7 +101,7 @@ impl PduParsing for LicenseHeader { self.security_header.to_buffer(&mut stream).map_err(|err| { ServerLicenseError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to write License Header to buffer. Error: {}", err), + format!("Unable to write License Header to buffer. Error: {err}"), )) })?; diff --git a/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs b/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs index e25a4b6f..ccdbc462 100644 --- a/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs +++ b/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs @@ -66,7 +66,7 @@ impl PduParsing for X509CertificateChain { stream.write_all(certificate)?; } - let padding_len = (8 + 4 * self.certificate_array.len()) as usize; // MSDN: A byte array of the length 8 + 4*NumCertBlobs + let padding_len = 8 + 4 * self.certificate_array.len(); // MSDN: A byte array of the length 8 + 4*NumCertBlobs let padding = vec![0u8; padding_len]; stream.write_all(padding.as_slice())?; @@ -115,8 +115,8 @@ impl PduParsing for ProprietaryCertificate { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - stream.write_u32::(SIGNATURE_ALGORITHM_RSA as u32)?; - stream.write_u32::(KEY_EXCHANGE_ALGORITHM_RSA as u32)?; + stream.write_u32::(SIGNATURE_ALGORITHM_RSA)?; + stream.write_u32::(KEY_EXCHANGE_ALGORITHM_RSA)?; BlobHeader::new(BlobType::RsaKey, self.public_key.buffer_length()).write_to_buffer(&mut stream)?; self.public_key.to_buffer(&mut stream)?; diff --git a/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs b/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs index 15c496a7..c059b8de 100644 --- a/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs +++ b/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs @@ -56,7 +56,7 @@ impl PduParsing for ServerUpgradeLicense { let encrypted_license_info_blob = BlobHeader::read_from_buffer(BlobType::EncryptedData, &mut stream)?; - let mut encrypted_license_info = vec![0u8; encrypted_license_info_blob.length as usize]; + let mut encrypted_license_info = vec![0u8; encrypted_license_info_blob.length]; stream.read_exact(&mut encrypted_license_info)?; let mut mac_data = vec![0u8; MAC_SIZE]; diff --git a/ironrdp-core/src/rdp/session_info/tests.rs b/ironrdp-core/src/rdp/session_info/tests.rs index 7c4e69e3..33bd02a2 100644 --- a/ironrdp-core/src/rdp/session_info/tests.rs +++ b/ironrdp-core/src/rdp/session_info/tests.rs @@ -330,7 +330,7 @@ fn buffer_length_is_correct_for_extended_info() { fn from_buffer_parsing_with_invalid_session_info_type_fails() { match SaveSessionInfoPdu::from_buffer(INVALID_SESSION_INFO_TYPE_BUFFER.as_ref()) { Err(SessionError::InvalidSaveSessionInfoType) => (), - res => panic!("Expected InvalidSaveSessionInfoType error, got: {:?}", res), + res => panic!("Expected InvalidSaveSessionInfoType error, got: {res:?}"), }; } @@ -338,7 +338,7 @@ fn from_buffer_parsing_with_invalid_session_info_type_fails() { fn from_buffer_parsing_with_invalid_domain_size_fails() { match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_DOMAIN_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidDomainNameSize) => (), - res => panic!("Expected InvalidDomainNameSize error, got: {:?}", res), + res => panic!("Expected InvalidDomainNameSize error, got: {res:?}"), }; } @@ -346,7 +346,7 @@ fn from_buffer_parsing_with_invalid_domain_size_fails() { fn from_buffer_parsing_with_invalid_user_name_size_fails() { match LogonInfoVersion1::from_buffer(LOGON_INFO_V1_WITH_INVALID_USER_NAME_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidUserNameSize) => (), - res => panic!("Expected InvalidUserNameSize error, got: {:?}", res), + res => panic!("Expected InvalidUserNameSize error, got: {res:?}"), }; } @@ -354,7 +354,7 @@ fn from_buffer_parsing_with_invalid_user_name_size_fails() { fn from_buffer_parsing_with_invalid_logon_version_fails() { match LogonInfoVersion2::from_buffer(LOGON_INFO_V2_WITH_INVALID_LOGON_VERSION_BUFFER.as_ref()) { Err(SessionError::InvalidLogonVersion2) => (), - res => panic!("Expected InvalidLogonVersion2 error, got: {:?}", res), + res => panic!("Expected InvalidLogonVersion2 error, got: {res:?}"), }; } @@ -362,7 +362,7 @@ fn from_buffer_parsing_with_invalid_logon_version_fails() { fn from_buffer_parsing_with_invalid_logon_infov2_size_fails() { match LogonInfoVersion2::from_buffer(LOGON_INFO_V2_WITH_INVALID_LOGON_INFO_V2_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidLogonVersion2Size) => (), - res => panic!("Expected InvalidLogonVersion2Size error, got: {:?}", res), + res => panic!("Expected InvalidLogonVersion2Size error, got: {res:?}"), }; } @@ -370,7 +370,7 @@ fn from_buffer_parsing_with_invalid_logon_infov2_size_fails() { fn from_buffer_parsing_with_invalid_reconnect_packet_size_fails() { match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_RECONNECT_PACKET_SIZE_BUFFER.as_ref()) { Err(SessionError::InvalidAutoReconnectPacketSize) => (), - res => panic!("Expected InvalidAutoReconnectPacketSize error, got: {:?}", res), + res => panic!("Expected InvalidAutoReconnectPacketSize error, got: {res:?}"), }; } @@ -378,7 +378,7 @@ fn from_buffer_parsing_with_invalid_reconnect_packet_size_fails() { fn from_buffer_parsing_with_invalid_reconnect_version_fails() { match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_RECONNECT_VERSION_BUFFER.as_ref()) { Err(SessionError::InvalidAutoReconnectVersion) => (), - res => panic!("Expected InvalidAutoReconnectVersion error, got: {:?}", res), + res => panic!("Expected InvalidAutoReconnectVersion error, got: {res:?}"), }; } @@ -386,7 +386,7 @@ fn from_buffer_parsing_with_invalid_reconnect_version_fails() { fn from_buffer_parsing_with_invalid_logon_error_type_fails() { match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER.as_ref()) { Err(SessionError::InvalidLogonErrorType) => (), - res => panic!("Expected InvalidLogonErrorType error, got: {:?}", res), + res => panic!("Expected InvalidLogonErrorType error, got: {res:?}"), }; } @@ -394,6 +394,6 @@ fn from_buffer_parsing_with_invalid_logon_error_type_fails() { fn from_buffer_parsing_with_invalid_logon_error_data_fails() { match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER.as_ref()) { Err(SessionError::InvalidLogonErrorData) => (), - res => panic!("Expected InvalidLogonErrorData error, got: {:?}", res), + res => panic!("Expected InvalidLogonErrorData error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/rdp/vc.rs b/ironrdp-core/src/rdp/vc.rs index ba34c112..d58a7859 100644 --- a/ironrdp-core/src/rdp/vc.rs +++ b/ironrdp-core/src/rdp/vc.rs @@ -85,6 +85,6 @@ pub enum ChannelError { impl From for io::Error { fn from(e: ChannelError) -> io::Error { - io::Error::new(io::ErrorKind::Other, format!("Virtual channel error: {}", e)) + io::Error::new(io::ErrorKind::Other, format!("Virtual channel error: {e}")) } } diff --git a/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs b/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs index d1394fe8..73259110 100644 --- a/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs +++ b/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs @@ -27,7 +27,7 @@ fn from_buffer_parsing_for_dvc_caps_request_pdu_with_invalid_caps_version_fails( let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; match CapabilitiesRequestPdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), - res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {:?}", res), + res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {res:?}"), }; } @@ -92,7 +92,7 @@ fn from_buffer_parsing_for_dvc_caps_response_pdu_with_invalid_caps_version_fails let buffer_with_invalid_caps_version = vec![0x00, 0x01, 0x01]; match CapabilitiesResponsePdu::from_buffer(buffer_with_invalid_caps_version.as_slice()) { Err(ChannelError::InvalidDvcCapabilitiesVersion) => (), - res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {:?}", res), + res => panic!("Expected InvalidDvcCapabilitiesVersion error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/rdp/vc/dvc/data/tests.rs b/ironrdp-core/src/rdp/vc/dvc/data/tests.rs index 73fdd08b..03cc95ad 100644 --- a/ironrdp-core/src/rdp/vc/dvc/data/tests.rs +++ b/ironrdp-core/src/rdp/vc/dvc/data/tests.rs @@ -34,7 +34,7 @@ fn from_buffer_parsing_for_dvc_data_pdu_with_invalid_message_size_fails() { PDU_WITH_DATA_MAX_SIZE, ) { Err(ChannelError::InvalidDvcMessageSize) => (), - res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), + res => panic!("Expected InvalidDvcMessageSize error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs b/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs index 1079d0cf..0251e291 100644 --- a/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs +++ b/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs @@ -145,7 +145,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_message_size_fails() PDU_WITH_DATA_MAX_SIZE, ) { Err(ChannelError::InvalidDvcMessageSize) => (), - res => panic!("Expected InvalidDvcMessageSize error, got: {:?}", res), + res => panic!("Expected InvalidDvcMessageSize error, got: {res:?}"), }; } @@ -158,7 +158,7 @@ fn from_buffer_parsing_for_dvc_data_first_pdu_with_invalid_total_message_size_fa DVC_DATA_FIRST_WITH_INVALID_TOTAL_MESSAGE_SIZE_BUFFER_SIZE, ) { Err(ChannelError::InvalidDvcTotalMessageSize { .. }) => (), - res => panic!("Expected InvalidDvcTotalMessageSize error, got: {:?}", res), + res => panic!("Expected InvalidDvcTotalMessageSize error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/rdp/vc/dvc/tests.rs b/ironrdp-core/src/rdp/vc/dvc/tests.rs index faf03db0..93a29ff0 100644 --- a/ironrdp-core/src/rdp/vc/dvc/tests.rs +++ b/ironrdp-core/src/rdp/vc/dvc/tests.rs @@ -21,7 +21,7 @@ fn from_buffer_parsing_for_dvc_header_with_invalid_pdu_type_fails() { let invalid_header: u8 = 0xA0; match Header::from_buffer([invalid_header].as_ref()) { Err(ChannelError::InvalidDvcPduType) => (), - res => panic!("Expected InvalidDvcPduType error, got: {:?}", res), + res => panic!("Expected InvalidDvcPduType error, got: {res:?}"), }; } @@ -57,7 +57,7 @@ fn buffer_length_is_correct_for_dvc_header() { fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { match ClientPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), HEADER_SIZE) { Err(ChannelError::InvalidDVChannelIdLength) => (), - res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), + res => panic!("Expected InvalidDVChannelIdLength error, got: {res:?}"), }; } @@ -65,7 +65,7 @@ fn from_buffer_parsing_for_client_dvc_pdu_with_invalid_id_length_type_fails() { fn from_buffer_parsing_for_server_dvc_pdu_with_invalid_id_length_type_fails() { match ServerPdu::from_buffer(DVC_HEADER_WITH_INVALID_ID_LENGTH_TYPE_BUFFER.as_ref(), HEADER_SIZE) { Err(ChannelError::InvalidDVChannelIdLength) => (), - res => panic!("Expected InvalidDVChannelIdLength error, got: {:?}", res), + res => panic!("Expected InvalidDVChannelIdLength error, got: {res:?}"), }; } diff --git a/ironrdp-core/src/rdp/vc/tests.rs b/ironrdp-core/src/rdp/vc/tests.rs index 8db82e7a..0c1e5552 100644 --- a/ironrdp-core/src/rdp/vc/tests.rs +++ b/ironrdp-core/src/rdp/vc/tests.rs @@ -7,7 +7,7 @@ const CHANNEL_PDU_HEADER_BUFFER: [u8; CHANNEL_PDU_HEADER_SIZE] = [0x40, 0x06, 0x lazy_static! { static ref CHANNEL_PDU_HEADER: ChannelPduHeader = ChannelPduHeader { - total_length: CHANNEL_CHUNK_LENGTH_DEFAULT as u32, + total_length: CHANNEL_CHUNK_LENGTH_DEFAULT, flags: ChannelControlFlags::FLAG_FIRST, }; } diff --git a/ironrdp-core/src/utils.rs b/ironrdp-core/src/utils.rs index 533180b0..62b509b0 100644 --- a/ironrdp-core/src/utils.rs +++ b/ironrdp-core/src/utils.rs @@ -44,7 +44,7 @@ pub(crate) fn read_string( let result = match character_set { CharacterSet::Unicode => from_utf16_bytes(buffer.as_slice()), CharacterSet::Ansi => String::from_utf8(buffer) - .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("the string is not utf8: {}", e)))?, + .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, format!("the string is not utf8: {e}")))?, }; Ok(result.trim_end_matches('\0').into()) diff --git a/ironrdp-graphics/src/image_processing.rs b/ironrdp-graphics/src/image_processing.rs index 94980bf8..839da24c 100644 --- a/ironrdp-graphics/src/image_processing.rs +++ b/ironrdp-graphics/src/image_processing.rs @@ -23,7 +23,7 @@ pub struct ImageRegion<'a> { } impl<'a> ImageRegion<'a> { - pub fn copy_to<'b>(&self, other: &mut ImageRegionMut<'b>) -> io::Result<()> { + pub fn copy_to(&self, other: &mut ImageRegionMut<'_>) -> io::Result<()> { let width = usize::from(other.region.width()); let height = usize::from(other.region.height()); diff --git a/ironrdp-graphics/src/rlgr.rs b/ironrdp-graphics/src/rlgr.rs index 70ff0153..596ec0e4 100644 --- a/ironrdp-graphics/src/rlgr.rs +++ b/ironrdp-graphics/src/rlgr.rs @@ -145,8 +145,8 @@ fn count_run(number_of_zeros: usize, k: &mut u32, kp: &mut u32) -> u32 { (0..number_of_zeros) .map(|_| { let run = 1 << *k; - *kp = min(*kp + UP_GR as u32, KP_MAX as u32); - *k = (*kp >> LS_GR as u32) as u32; + *kp = min(*kp + UP_GR, KP_MAX); + *k = *kp >> LS_GR; run }) @@ -163,13 +163,13 @@ fn compute_rl_magnitude(sign_bit: u8, code_remainder: u32) -> i16 { fn compute_rlgr1_magnitude(code_remainder: u32, k: &mut u32, kp: &mut u32) -> i16 { if code_remainder == 0 { - *kp = min(*kp + UQ_GR as u32, KP_MAX as u32); - *k = (*kp >> LS_GR as u32) as u32; + *kp = min(*kp + UQ_GR, KP_MAX); + *k = *kp >> LS_GR; 0 } else { - *kp = kp.saturating_sub(DQ_GR as u32); - *k = (*kp >> LS_GR as u32) as u32; + *kp = kp.saturating_sub(DQ_GR); + *k = *kp >> LS_GR; if code_remainder % 2 != 0 { -(((code_remainder + 1) >> 1) as i16) diff --git a/ironrdp-graphics/src/zgfx/mod.rs b/ironrdp-graphics/src/zgfx/mod.rs index 0278cabb..42761ded 100644 --- a/ironrdp-graphics/src/zgfx/mod.rs +++ b/ironrdp-graphics/src/zgfx/mod.rs @@ -497,7 +497,7 @@ mod tests { for (i, (encode, decode)) in pairs.enumerate() { let bytes_written = zgfx.decompress(encode.as_ref(), &mut decompressed).unwrap(); assert_eq!(decode.len(), bytes_written); - assert_eq!(decompressed, *decode, "Failed to decompress encoded PDU #{}", i); + assert_eq!(decompressed, *decode, "Failed to decompress encoded PDU #{i}"); decompressed.clear(); } } @@ -617,7 +617,7 @@ mod tests { let mut decompressed = Vec::with_capacity(expected.len()); let bytes_written = zgfx.decompress(buffer.as_ref(), &mut decompressed).unwrap(); assert_eq!(expected.len(), bytes_written); - assert_eq!(decompressed, expected, "\n{:x?} != \n{:x?}", decompressed, expected); + assert_eq!(decompressed, expected, "\n{decompressed:x?} != \n{expected:x?}"); } #[test] diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-gui-client/src/main.rs index 9f744ca0..21770079 100644 --- a/ironrdp-gui-client/src/main.rs +++ b/ironrdp-gui-client/src/main.rs @@ -72,7 +72,7 @@ async fn main() { } Err(ref e) => { error!("{}", e); - println!("RDP failed because of {}", e); + println!("RDP failed because of {e}"); match e { RdpError::IOError(_) => exitcode::IOERR, diff --git a/ironrdp-renderer/src/draw.rs b/ironrdp-renderer/src/draw.rs index 1c5cae99..c7dceae4 100644 --- a/ironrdp-renderer/src/draw.rs +++ b/ironrdp-renderer/src/draw.rs @@ -180,7 +180,7 @@ impl ShaderType { for (shader_type, shader_source) in shader_sources.iter() { let shader = gl.create_shader(*shader_type)?; - gl.shader_source(shader, &format!("{}\n{}", shader_version, shader_source)); + gl.shader_source(shader, &format!("{shader_version}\n{shader_source}")); gl.compile_shader(shader); if !gl.get_shader_compile_status(shader) { return Err(crate::Error::from(gl.get_shader_info_log(shader))); @@ -298,8 +298,8 @@ impl TextureShaderProgram { gl.bind_vertex_array(Some(vertex_array)); gl.bind_buffer(ARRAY_BUFFER, Some(vertex_buffer)); - gl.enable_vertex_attrib_array(a_tex_coord as u32); - gl.enable_vertex_attrib_array(a_position as u32); + gl.enable_vertex_attrib_array(a_tex_coord); + gl.enable_vertex_attrib_array(a_position); gl.buffer_data_u8_slice(ARRAY_BUFFER, cast_as_bytes(data.as_ref()), DYNAMIC_DRAW); gl.vertex_attrib_pointer_f32(a_position, 2, FLOAT, false, 16, 0); @@ -394,7 +394,7 @@ impl AvcShaderProgram { gl.bind_buffer(ARRAY_BUFFER, Some(self.vertex_buffer)); gl.bind_vertex_array(Some(self.vertex_array)); - gl.enable_vertex_attrib_array(self.a_position as u32); + gl.enable_vertex_attrib_array(self.a_position); gl.buffer_data_u8_slice(ARRAY_BUFFER, cast_as_bytes(data.as_ref()), DYNAMIC_DRAW); gl.vertex_attrib_pointer_f32(self.a_position, 2, FLOAT, false, 8, 0); diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index d89ec6af..ea53ed52 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -359,7 +359,7 @@ pub async fn process_cred_ssp( ) -> Result<(), RdpError> { use sspi::ntlm::NtlmConfig; - let service_principal_name = format!("TERMSRV/{}", addr); + let service_principal_name = format!("TERMSRV/{addr}"); let mut cred_ssp_client = credssp::CredSspClient::new( server_public_key, @@ -576,10 +576,7 @@ pub async fn server_licensing_exchange( .map_err(|err| { RdpError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!( - "Unable to generate Client New License Request from Server License Request: {}", - err - ), + format!("Unable to generate Client New License Request from Server License Request: {err}"), )) })? } @@ -618,7 +615,7 @@ pub async fn server_licensing_exchange( .map_err(|err| { RdpError::ServerLicenseError(rdp::RdpError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!("Unable to generate Client Platform Challenge Response {}", err), + format!("Unable to generate Client Platform Challenge Response {err}"), ))) })?; @@ -659,7 +656,7 @@ pub async fn server_licensing_exchange( upgrade_license.verify_server_license(&encryption_data).map_err(|err| { RdpError::ServerLicenseError(rdp::RdpError::IOError(io::Error::new( io::ErrorKind::InvalidData, - format!("License verification failed: {:?}", err), + format!("License verification failed: {err:?}"), ))) })?; @@ -912,8 +909,7 @@ pub async fn connection_initiation( Ok(selected_protocol) } else { Err(RdpError::InvalidResponse(format!( - "Got unexpected security protocol: {:?} while was expected one of {:?}", - selected_protocol, security_protocol + "Got unexpected security protocol: {selected_protocol:?} while was expected one of {security_protocol:?}" ))) } } else { @@ -951,7 +947,7 @@ pub async fn connection_initiation( let request_bytes = rdp_clean_path.to_der().map_err(|e| { RdpError::ConnectionError(io::Error::new( io::ErrorKind::Other, - format!("couldn’t encode cleanpath request into der: {}", e), + format!("couldn’t encode cleanpath request into der: {e}"), )) })?; writer.write_all(&request_bytes).await?; @@ -1002,7 +998,7 @@ pub async fn connection_initiation( let cert = x509_cert::Certificate::from_der(cert_der.as_bytes()).map_err(|e| { RdpError::ConnectionError(io::Error::new( io::ErrorKind::Other, - format!("couldn’t decode x509 certificate sent by Devolutions Gateway: {}", e), + format!("couldn’t decode x509 certificate sent by Devolutions Gateway: {e}"), )) })?; @@ -1020,15 +1016,14 @@ pub async fn connection_initiation( .map_err(|e| { RdpError::ConnectionError(io::Error::new( io::ErrorKind::Other, - format!("couldn’t parse server address sent by Devolutions Gateway: {}", e), + format!("couldn’t parse server address sent by Devolutions Gateway: {e}"), )) })?; Ok((selected_protocol, server_public_key, server_addr)) } else { Err(RdpError::InvalidResponse(format!( - "Got unexpected security protocol: {:?} while was expected one of {:?}", - selected_protocol, security_protocol + "Got unexpected security protocol: {selected_protocol:?} while was expected one of {security_protocol:?}" ))) } } else { diff --git a/ironrdp-session/src/frame.rs b/ironrdp-session/src/frame.rs index 459c09e2..f73f5a6d 100644 --- a/ironrdp-session/src/frame.rs +++ b/ironrdp-session/src/frame.rs @@ -131,7 +131,7 @@ impl Frame for SendDataInfoFrame { data: mcs_frame.data, }), ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( - RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {:?}", disconnect_reason)), + RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {disconnect_reason:?}")), ), _ => Err(RdpError::UnexpectedPdu(format!( "Expected Send Data Context PDU, got {:?}", @@ -289,8 +289,7 @@ where }, ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { return Err(RdpError::UnexpectedDisconnection(format!( - "Server disconnection reason - {:?}", - disconnect_reason + "Server disconnection reason - {disconnect_reason:?}" ))) } _ => { From 80f7b6d0329b96a7821ebca106bfa28dda886e9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 27 Jan 2023 12:14:26 -0500 Subject: [PATCH 0105/1273] fix(wasm): do not send partial images to frontend Slower, but workaround the issue we have when finding the largest region changed on a new frame. This should be fixed later. --- ffi/wasm/src/lib.rs | 16 ++++++++++++---- ironrdp-session/src/active_session/codecs/rfx.rs | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index dc44699f..984e15e1 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -284,15 +284,21 @@ impl Session { writer.write_all(&frame).await.map_err(|e| e.to_string())?; writer.flush().await.map_err(|e| e.to_string())?; } - ActiveStageOutput::GraphicsUpdate(updated_region) => { - let partial_image = extract_partial_image(&image, &updated_region); + ActiveStageOutput::GraphicsUpdate(_updated_region) => { + // FIXME: atm sending a partial is not working + // let partial_image = extract_partial_image(&image, &updated_region); send_update_rectangle( &self.update_callback, &self.update_callback_context, frame_id, - updated_region, - partial_image, + Rectangle { + left: 0, + top: 0, + right: image.width() as u16, + bottom: image.height() as u16, + }, + image.data().to_vec(), ) .context("Failed to send update rectangle") .map_err(|e| e.to_string())?; @@ -412,6 +418,8 @@ fn build_input_config(username: String, password: String, domain: Option } } +// FIXME: is it broken? Investigate again +#[allow(dead_code)] fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); diff --git a/ironrdp-session/src/active_session/codecs/rfx.rs b/ironrdp-session/src/active_session/codecs/rfx.rs index 374c84b0..a2c17dfc 100644 --- a/ironrdp-session/src/active_session/codecs/rfx.rs +++ b/ironrdp-session/src/active_session/codecs/rfx.rs @@ -103,8 +103,9 @@ impl DecodingContext { destination: &Rectangle, input: &mut &[u8], ) -> Result<(FrameId, Rectangle), RdpError> { - let width = self.channels.0.first().unwrap().width as u16; - let height = self.channels.0.first().unwrap().height as u16; + let channel = self.channels.0.first().unwrap(); + let width = channel.width as u16; + let height = channel.height as u16; let entropy_algorithm = self.context.entropy_algorithm; let frame_begin = rfx::FrameBeginPdu::from_buffer_consume(input)?; @@ -113,7 +114,6 @@ impl DecodingContext { let _frame_end = rfx::FrameEndPdu::from_buffer_consume(input)?; if region.rectangles.is_empty() { - let channel = self.channels.0.first().unwrap(); region.rectangles = vec![RfxRectangle { x: 0, y: 0, From 9d57b63a97c80572795456e13668a63055399580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Mon, 6 Feb 2023 18:08:38 -0500 Subject: [PATCH 0106/1273] feat: basic input system (ASCII) Issue: ARC-111 --- ffi/wasm/Cargo.toml | 4 +- ffi/wasm/src/image.rs | 49 ++ ffi/wasm/src/input.rs | 53 ++ ffi/wasm/src/lib.rs | 515 +----------------- ffi/wasm/src/network_client.rs | 14 + ffi/wasm/src/session.rs | 291 ++++++++++ ffi/wasm/src/websocket.rs | 107 ++++ ironrdp-core/src/input.rs | 2 + ironrdp-core/src/input/fast_path.rs | 4 + ironrdp-core/src/input/mouse.rs | 1 - ironrdp-input/Cargo.toml | 8 + ironrdp-input/src/lib.rs | 263 +++++++++ ironrdp-input/tests/fastpath_packets.rs | 168 ++++++ ironrdp-input/tests/smoke.rs | 124 +++++ .../src/active_session/codecs/rfx.rs | 10 +- .../src/active_session/fast_path.rs | 6 +- ironrdp-session/src/frame.rs | 6 +- 17 files changed, 1115 insertions(+), 510 deletions(-) create mode 100644 ffi/wasm/src/image.rs create mode 100644 ffi/wasm/src/input.rs create mode 100644 ffi/wasm/src/network_client.rs create mode 100644 ffi/wasm/src/session.rs create mode 100644 ffi/wasm/src/websocket.rs create mode 100644 ironrdp-input/tests/fastpath_packets.rs create mode 100644 ironrdp-input/tests/smoke.rs diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index ac77888f..9bbc93a1 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -26,7 +26,8 @@ opt-level = "s" # RDP protocol ironrdp = { path = "../../ironrdp" } -ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # TODO: secret feature until session state machine is done +ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # FIXME: secret feature until session state machine is done +ironrdp-input = { path = "../../ironrdp-input" } sspi = "0.6" # Wasm @@ -55,3 +56,4 @@ log = "0.4.17" # Utils anyhow = "1" parking_lot = "0.12.1" +smallvec = "1.10.0" diff --git a/ffi/wasm/src/image.rs b/ffi/wasm/src/image.rs new file mode 100644 index 00000000..3e9ceb3b --- /dev/null +++ b/ffi/wasm/src/image.rs @@ -0,0 +1,49 @@ +use ironrdp::geometry::Rectangle; +use ironrdp::session::image::DecodedImage; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub struct RectInfo { + pub frame_id: usize, + pub top: u16, + pub left: u16, + pub right: u16, + pub bottom: u16, + pub width: u16, + pub height: u16, +} + +// FIXME: is it broken? Investigate again +#[allow(dead_code)] +fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { + let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); + + let image_width = usize::try_from(image.width()).unwrap(); + + let region_top = usize::from(region.top); + let region_left = usize::from(region.left); + let region_width = usize::from(region.width()); + let region_height = usize::from(region.height()); + + let dst_buf_size = region_width * region_height * pixel_size; + let mut dst = vec![0; dst_buf_size]; + + let src = image.data(); + + let image_stride = image_width * pixel_size; + let region_stride = region_width * pixel_size; + + for row in 0..region_height { + let src_begin = image_stride * (region_top + row) + region_left * pixel_size; + let src_end = src_begin + region_stride; + let src_slice = &src[src_begin..src_end]; + + let target_begin = region_stride * row; + let target_end = target_begin + region_stride; + let target_slice = &mut dst[target_begin..target_end]; + + target_slice.copy_from_slice(src_slice); + } + + dst +} diff --git a/ffi/wasm/src/input.rs b/ffi/wasm/src/input.rs new file mode 100644 index 00000000..518f1bc4 --- /dev/null +++ b/ffi/wasm/src/input.rs @@ -0,0 +1,53 @@ +use ironrdp_input::{MouseButton, MousePosition, Operation, Scancode}; +use smallvec::SmallVec; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +#[derive(Clone)] +pub struct DeviceEvent(pub(crate) Operation); + +#[wasm_bindgen] +impl DeviceEvent { + pub fn new_mouse_button_pressed(button: u8) -> Self { + Self(Operation::MouseButtonPressed(MouseButton::from(button))) + } + + pub fn new_mouse_button_released(button: u8) -> Self { + Self(Operation::MouseButtonReleased(MouseButton::from(button))) + } + + pub fn new_mouse_move(x: u16, y: u16) -> Self { + Self(Operation::MouseMove(MousePosition { x, y })) + } + + pub fn new_key_pressed(scancode: u8) -> Self { + Self(Operation::KeyPressed(Scancode::from(scancode))) + } + + pub fn new_key_released(scancode: u8) -> Self { + Self(Operation::KeyReleased(Scancode::from(scancode))) + } +} + +#[wasm_bindgen] +pub struct InputTransaction(pub(crate) SmallVec<[Operation; 3]>); + +#[wasm_bindgen] +impl InputTransaction { + pub fn new() -> Self { + Self(SmallVec::new()) + } + + pub fn add_event(&mut self, event: DeviceEvent) { + self.0.push(event.0); + } +} + +impl IntoIterator for InputTransaction { + type IntoIter = smallvec::IntoIter<[Operation; 3]>; + type Item = Operation; + + fn into_iter(self) -> Self::IntoIter { + self.0.into_iter() + } +} diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index 984e15e1..4c32da6a 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -1,129 +1,34 @@ +#![allow(clippy::drop_non_drop)] // there are false positives in this file +#![allow(clippy::new_without_default)] // Default trait can’t be used by wasm consumer anyway + #[macro_use] extern crate log; -mod utils; +mod image; +mod input; +mod network_client; +mod session; +mod websocket; -use core::sync::atomic::AtomicBool; -use std::cell::RefCell; -use std::io; -use std::pin::Pin; -use std::rc::Rc; -use std::task::{Context, Poll}; - -use anyhow::Context as _; -use futures_util::{pin_mut, ready, AsyncRead, AsyncWrite, AsyncWriteExt, Sink, Stream}; -use gloo_net::websocket::futures::WebSocket; -use gloo_net::websocket::{Message as WebSocketMessage, WebSocketError}; -use ironrdp::geometry::Rectangle; -use ironrdp::graphics::image_processing::PixelFormat; -use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult}; -use ironrdp::session::image::DecodedImage; -use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; -use parking_lot::Mutex; -use sspi::network_client::{NetworkClient, NetworkClientFactory}; -use sspi::AuthIdentity; use wasm_bindgen::prelude::*; // TODO: proper error reporting // NOTE: #[wasm_bindgen(start)] didn’t work last time I tried #[wasm_bindgen] -pub fn ironrdp_init() { - utils::set_panic_hook(); - console_log::init_with_level(log::Level::Debug).unwrap(); -} +pub fn ironrdp_init(debug: bool) { + // When the `console_error_panic_hook` feature is enabled, we can call the + // `set_panic_hook` function at least once during initialization, and then + // we will get better error messages if our code ever panics. + // + // For more details see + // https://github.com/rustwasm/console_error_panic_hook#readme + #[cfg(feature = "console_error_panic_hook")] + console_error_panic_hook::set_once(); -#[wasm_bindgen] -#[derive(Clone, Default)] -pub struct SessionBuilder(Rc>); + let log_level = if debug { log::Level::Debug } else { log::Level::Info }; -#[derive(Default)] -struct SessionBuilderInner { - username: Option, - password: Option, - address: Option, - auth_token: Option, - update_callback: Option, - update_callback_context: Option, -} - -#[wasm_bindgen] -impl SessionBuilder { - pub fn new() -> SessionBuilder { - Self(Rc::new(RefCell::new(SessionBuilderInner::default()))) - } - - pub fn username(&self, username: String) -> SessionBuilder { - self.0.borrow_mut().username = Some(username); - self.clone() - } - - pub fn password(&self, password: String) -> SessionBuilder { - self.0.borrow_mut().password = Some(password); - self.clone() - } - - pub fn address(&self, address: String) -> SessionBuilder { - self.0.borrow_mut().address = Some(address); - self.clone() - } - - pub fn auth_token(&self, token: String) -> SessionBuilder { - self.0.borrow_mut().auth_token = Some(token); - self.clone() - } - - pub fn update_callback(&self, callback: js_sys::Function) -> SessionBuilder { - self.0.borrow_mut().update_callback = Some(callback); - self.clone() - } - - pub fn update_callback_context(&self, context: JsValue) -> SessionBuilder { - self.0.borrow_mut().update_callback_context = Some(context); - self.clone() - } - - pub async fn connect(&self) -> Result { - let (username, password, address, auth_token, update_callback, update_callback_context); - - { - let inner = self.0.borrow(); - username = inner.username.clone().expect("username"); - password = inner.password.clone().expect("password"); - address = inner.address.clone().expect("address"); - auth_token = inner.auth_token.clone().expect("auth_token"); - update_callback = inner.update_callback.clone().expect("update_callback"); - update_callback_context = inner.update_callback_context.clone().expect("update_callback_context"); - } - - info!("Connect to RDP host"); - - let input_config = build_input_config(username, password, None); - - let ws = WebSocketCompat::new(WebSocket::open(&address).map_err(|e| e.to_string())?); - - let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( - ws, - "MY-FQDN", - auth_token, - &input_config, - Box::new(PlaceholderNetworkClientFactory), - ) - .await - .map_err(|e| anyhow::Error::new(e).to_string())?; - - info!("Connected!"); - - Ok(Session { - input_config, - connection_sequence_result, - update_callback, - update_callback_context, - was_down: AtomicBool::new(false), - rdp_reader: Mutex::new(rdp_reader), - rdp_writer: Mutex::new(rdp_writer), - }) - } + console_log::init_with_level(log_level).unwrap(); } #[wasm_bindgen] @@ -132,385 +37,3 @@ pub struct DesktopSize { pub width: u16, pub height: u16, } - -struct WebSocketCompat { - read_buf: Option>, - inner: WebSocket, -} - -impl WebSocketCompat { - fn new(ws: WebSocket) -> Self { - Self { - read_buf: None, - inner: ws, - } - } -} - -impl AsyncRead for WebSocketCompat { - fn poll_read(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll> { - let this = self.get_mut(); - let read_buf = &mut this.read_buf; - let inner = &mut this.inner; - pin_mut!(inner); - - let mut data = if let Some(data) = read_buf.take() { - data - } else { - match ready!(inner.as_mut().poll_next(cx)) { - Some(Ok(m)) => match m { - WebSocketMessage::Text(s) => s.into_bytes(), - WebSocketMessage::Bytes(data) => data, - }, - Some(Err(e)) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), - None => return Poll::Ready(Ok(0)), - } - }; - - let bytes_to_copy = std::cmp::min(buf.len(), data.len()); - buf[..bytes_to_copy].copy_from_slice(&data[..bytes_to_copy]); - - if data.len() > bytes_to_copy { - data.drain(..bytes_to_copy); - *read_buf = Some(data); - } - - Poll::Ready(Ok(bytes_to_copy)) - } -} - -impl AsyncWrite for WebSocketCompat { - fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { - macro_rules! try_in_poll { - ($expr:expr) => {{ - match $expr { - Ok(o) => o, - // When using `AsyncWriteExt::write_all`, `io::ErrorKind::WriteZero` will be raised. - // In this case it means "attempted to write on a closed socket". - Err(WebSocketError::ConnectionClose(_)) => return Poll::Ready(Ok(0)), - Err(e) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), - } - }}; - } - - let inner = &mut self.get_mut().inner; - pin_mut!(inner); - - // try flushing preemptively - let _ = inner.as_mut().poll_flush(cx); - - // make sure sink is ready to send - try_in_poll!(ready!(inner.as_mut().poll_ready(cx))); - - // actually submit new item - try_in_poll!(inner.as_mut().start_send(WebSocketMessage::Bytes(buf.to_vec()))); - // ^ if no error occurred, message is accepted and queued when calling `start_send` - // (that is: `to_vec` is called only once) - - Poll::Ready(Ok(buf.len())) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let inner = &mut self.get_mut().inner; - pin_mut!(inner); - let res = ready!(inner.poll_flush(cx)); - Poll::Ready(websocket_to_io_result(res)) - } - - fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - let inner = &mut self.get_mut().inner; - pin_mut!(inner); - let res = ready!(inner.poll_close(cx)); - Poll::Ready(websocket_to_io_result(res)) - } -} - -fn websocket_to_io_result(res: Result<(), WebSocketError>) -> io::Result<()> { - match res { - Ok(()) => Ok(()), - Err(WebSocketError::ConnectionClose(_)) => Ok(()), - Err(e) => Err(io::Error::new(io::ErrorKind::Other, e.to_string())), - } -} - -enum ButtonState { - Unchanged, - Pressed, - Released, -} - -#[wasm_bindgen] -pub struct Session { - input_config: InputConfig, - connection_sequence_result: ConnectionSequenceResult, - update_callback: js_sys::Function, - update_callback_context: JsValue, - was_down: AtomicBool, - rdp_reader: Mutex, - rdp_writer: Mutex, -} - -#[wasm_bindgen] -impl Session { - pub async fn run(&self) -> Result<(), String> { - info!("Start RDP session"); - - let mut image = DecodedImage::new( - PixelFormat::RgbA32, - u32::from(self.connection_sequence_result.desktop_size.width), - u32::from(self.connection_sequence_result.desktop_size.height), - ); - - let mut active_stage = - ActiveStageProcessor::new(self.input_config.clone(), None, self.connection_sequence_result.clone()); - let mut frame_id = 0; - - 'outer: loop { - let frame = self - .rdp_reader - .lock() - .read_frame() - .await - .map_err(|e| e.to_string())? - .ok_or_else(|| RdpError::AccessDenied.to_string())? - .freeze(); - - let outputs = active_stage.process(&mut image, frame).map_err(|e| e.to_string())?; - - for out in outputs { - match out { - ActiveStageOutput::ResponseFrame(frame) => { - let mut writer = self.rdp_writer.lock(); - writer.write_all(&frame).await.map_err(|e| e.to_string())?; - writer.flush().await.map_err(|e| e.to_string())?; - } - ActiveStageOutput::GraphicsUpdate(_updated_region) => { - // FIXME: atm sending a partial is not working - // let partial_image = extract_partial_image(&image, &updated_region); - - send_update_rectangle( - &self.update_callback, - &self.update_callback_context, - frame_id, - Rectangle { - left: 0, - top: 0, - right: image.width() as u16, - bottom: image.height() as u16, - }, - image.data().to_vec(), - ) - .context("Failed to send update rectangle") - .map_err(|e| e.to_string())?; - - frame_id += 1; - } - ActiveStageOutput::Terminate => break 'outer, - } - } - } - - info!("RPD session terminated"); - - Ok(()) - } - - pub fn desktop_size(&self) -> DesktopSize { - let desktop_width = self.connection_sequence_result.desktop_size.width; - let desktop_height = self.connection_sequence_result.desktop_size.height; - - DesktopSize { - width: desktop_width, - height: desktop_height, - } - } - - /// Returns previous state - fn toggle_down(&self, currently_down: bool) -> anyhow::Result { - let was_down = self.was_down.swap(currently_down, core::sync::atomic::Ordering::SeqCst); - - match (currently_down, was_down) { - (true, false) => Ok(ButtonState::Pressed), - (false, true) => Ok(ButtonState::Released), - _ => Ok(ButtonState::Unchanged), - } - } - - pub async fn update_mouse(&self, mouse_x: u16, mouse_y: u16, left_click: bool) -> Result<(), String> { - use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent}; - use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; - use ironrdp::core::input::MousePdu; - use ironrdp::core::PduParsing; - - let mut inputs = vec![]; - - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - - let button_state = self.toggle_down(left_click).map_err(|e| e.to_string())?; - - match button_state { - ButtonState::Pressed => { - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - } - ButtonState::Released => { - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - } - ButtonState::Unchanged => {} - } - - let fastpath_input = FastPathInput(inputs); - - let mut frame = Vec::new(); - fastpath_input.to_buffer(&mut frame).map_err(|e| e.to_string())?; - - let mut writer = self.rdp_writer.lock(); - writer.write_all(&frame).await.map_err(|e| e.to_string())?; - writer.flush().await.map_err(|e| e.to_string())?; - - Ok(()) - } -} - -fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { - const DEFAULT_WIDTH: u16 = 1280; - const DEFAULT_HEIGHT: u16 = 720; - const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; - const USER_CHANNEL_NAME: &str = "USER"; - - InputConfig { - credentials: AuthIdentity { - username, - password, - domain, - }, - security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, - keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, - keyboard_subtype: 0, - keyboard_functional_keys_count: 12, - ime_file_name: String::new(), - dig_product_id: String::new(), - width: DEFAULT_WIDTH, - height: DEFAULT_HEIGHT, - global_channel_name: GLOBAL_CHANNEL_NAME.to_owned(), - user_channel_name: USER_CHANNEL_NAME.to_owned(), - graphics_config: None, - } -} - -// FIXME: is it broken? Investigate again -#[allow(dead_code)] -fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { - let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); - - let image_width = usize::try_from(image.width()).unwrap(); - - let region_top = usize::from(region.top); - let region_left = usize::from(region.left); - let region_width = usize::from(region.width()); - let region_height = usize::from(region.height()); - - let dst_buf_size = region_width * region_height * pixel_size; - let mut dst = vec![0; dst_buf_size]; - - let src = image.data(); - - let image_stride = image_width * pixel_size; - let region_stride = region_width * pixel_size; - - for row in 0..region_height { - let src_begin = image_stride * (region_top + row) + region_left * pixel_size; - let src_end = src_begin + region_stride; - let src_slice = &src[src_begin..src_end]; - - let target_begin = region_stride * row; - let target_end = target_begin + region_stride; - let target_slice = &mut dst[target_begin..target_end]; - - target_slice.copy_from_slice(src_slice); - } - - dst -} - -#[wasm_bindgen] -pub struct RectInfo { - pub frame_id: usize, - pub top: u16, - pub left: u16, - pub right: u16, - pub bottom: u16, - pub width: u16, - pub height: u16, -} - -fn send_update_rectangle( - update_callback: &js_sys::Function, - callback_context: &JsValue, - frame_id: usize, - region: Rectangle, - buffer: Vec, -) -> anyhow::Result<()> { - use js_sys::Uint8ClampedArray; - - let top = region.top; - let left = region.left; - let right = region.right; - let bottom = region.bottom; - let width = region.width(); - let height = region.height(); - - let update_rect = RectInfo { - frame_id, - top, - left, - right, - bottom, - width, - height, - }; - let update_rect = JsValue::from(update_rect); - - let js_array = Uint8ClampedArray::new_with_length(buffer.len() as u32); - js_array.copy_from(&buffer); - let js_array = JsValue::from(js_array); - - let _ret = update_callback - .call2(callback_context, &update_rect, &js_array) - .map_err(|e| anyhow::Error::msg(format!("update callback failed: {e:?}")))?; - - Ok(()) -} - -#[derive(Debug, Clone)] -struct PlaceholderNetworkClientFactory; - -impl NetworkClientFactory for PlaceholderNetworkClientFactory { - fn network_client(&self) -> Box { - unimplemented!() - } - - fn clone(&self) -> Box { - Box::new(Clone::clone(self)) - } -} diff --git a/ffi/wasm/src/network_client.rs b/ffi/wasm/src/network_client.rs new file mode 100644 index 00000000..b5f1a5a1 --- /dev/null +++ b/ffi/wasm/src/network_client.rs @@ -0,0 +1,14 @@ +use sspi::network_client::{NetworkClient, NetworkClientFactory}; + +#[derive(Debug, Clone)] +pub(crate) struct PlaceholderNetworkClientFactory; + +impl NetworkClientFactory for PlaceholderNetworkClientFactory { + fn network_client(&self) -> Box { + unimplemented!() + } + + fn clone(&self) -> Box { + Box::new(Clone::clone(self)) + } +} diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs new file mode 100644 index 00000000..63029f0d --- /dev/null +++ b/ffi/wasm/src/session.rs @@ -0,0 +1,291 @@ +use core::cell::RefCell; +use std::rc::Rc; + +use anyhow::Context as _; +use futures_util::{AsyncWriteExt}; +use gloo_net::websocket::futures::WebSocket; +use ironrdp::geometry::Rectangle; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult}; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; +use parking_lot::Mutex; +use sspi::AuthIdentity; +use wasm_bindgen::prelude::*; + +use crate::network_client::PlaceholderNetworkClientFactory; +use crate::DesktopSize; +use crate::image::RectInfo; +use crate::websocket::WebSocketCompat; +use crate::input::InputTransaction; + +#[wasm_bindgen] +#[derive(Clone, Default)] +pub struct SessionBuilder(Rc>); + +#[derive(Default)] +struct SessionBuilderInner { + username: Option, + password: Option, + address: Option, + auth_token: Option, + update_callback: Option, + update_callback_context: Option, +} + +#[wasm_bindgen] +impl SessionBuilder { + pub fn new() -> SessionBuilder { + Self(Rc::new(RefCell::new(SessionBuilderInner::default()))) + } + + pub fn username(&self, username: String) -> SessionBuilder { + self.0.borrow_mut().username = Some(username); + self.clone() + } + + pub fn password(&self, password: String) -> SessionBuilder { + self.0.borrow_mut().password = Some(password); + self.clone() + } + + pub fn address(&self, address: String) -> SessionBuilder { + self.0.borrow_mut().address = Some(address); + self.clone() + } + + pub fn auth_token(&self, token: String) -> SessionBuilder { + self.0.borrow_mut().auth_token = Some(token); + self.clone() + } + + pub fn update_callback(&self, callback: js_sys::Function) -> SessionBuilder { + self.0.borrow_mut().update_callback = Some(callback); + self.clone() + } + + pub fn update_callback_context(&self, context: JsValue) -> SessionBuilder { + self.0.borrow_mut().update_callback_context = Some(context); + self.clone() + } + + pub async fn connect(&self) -> Result { + let (username, password, address, auth_token, update_callback, update_callback_context); + + { + let inner = self.0.borrow(); + username = inner.username.clone().expect("username"); + password = inner.password.clone().expect("password"); + address = inner.address.clone().expect("address"); + auth_token = inner.auth_token.clone().expect("auth_token"); + update_callback = inner.update_callback.clone().expect("update_callback"); + update_callback_context = inner.update_callback_context.clone().expect("update_callback_context"); + } + + info!("Connect to RDP host"); + + let input_config = build_input_config(username, password, None); + + let ws = WebSocketCompat::new(WebSocket::open(&address).map_err(|e| e.to_string())?); + + let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( + ws, + "MY-FQDN", + auth_token, + &input_config, + Box::new(PlaceholderNetworkClientFactory), + ) + .await + .map_err(|e| anyhow::Error::new(e).to_string())?; + + info!("Connected!"); + + Ok(Session { + input_config, + connection_sequence_result, + update_callback, + update_callback_context, + input_database: Mutex::new(ironrdp_input::Database::new()), + rdp_reader: Mutex::new(rdp_reader), + rdp_writer: Mutex::new(rdp_writer), + }) + } +} + +#[wasm_bindgen] +pub struct Session { + input_config: InputConfig, + connection_sequence_result: ConnectionSequenceResult, + update_callback: js_sys::Function, + update_callback_context: JsValue, + input_database: Mutex, + rdp_reader: Mutex, + rdp_writer: Mutex, +} + +#[wasm_bindgen] +impl Session { + #[allow(clippy::await_holding_lock)] // exclusive access to the writer until frame is fully written is desirable (we also assume the future is run to completion) + pub async fn run(&self) -> Result<(), String> { + info!("Start RDP session"); + + let mut image = DecodedImage::new( + PixelFormat::RgbA32, + u32::from(self.connection_sequence_result.desktop_size.width), + u32::from(self.connection_sequence_result.desktop_size.height), + ); + + let mut active_stage = + ActiveStageProcessor::new(self.input_config.clone(), None, self.connection_sequence_result.clone()); + let mut frame_id = 0; + + 'outer: loop { + let outputs = { + let frame = self + .rdp_reader + .lock() + .read_frame() + .await + .map_err(|e| e.to_string())? + .ok_or_else(|| RdpError::AccessDenied.to_string())? + .freeze(); + + active_stage.process(&mut image, frame).map_err(|e| e.to_string())? + }; + + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => { + let mut writer = self.rdp_writer.lock(); + writer.write_all(&frame).await.map_err(|e| e.to_string())?; + writer.flush().await.map_err(|e| e.to_string())?; + } + ActiveStageOutput::GraphicsUpdate(_updated_region) => { + // FIXME: atm sending a partial is not working + // let partial_image = extract_partial_image(&image, &updated_region); + + send_update_rectangle( + &self.update_callback, + &self.update_callback_context, + frame_id, + Rectangle { + left: 0, + top: 0, + right: image.width() as u16, + bottom: image.height() as u16, + }, + image.data().to_vec(), + ) + .context("Failed to send update rectangle") + .map_err(|e| e.to_string())?; + + frame_id += 1; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } + + info!("RPD session terminated"); + + Ok(()) + } + + pub fn desktop_size(&self) -> DesktopSize { + let desktop_width = self.connection_sequence_result.desktop_size.width; + let desktop_height = self.connection_sequence_result.desktop_size.height; + + DesktopSize { + width: desktop_width, + height: desktop_height, + } + } + + #[allow(clippy::await_holding_lock)] // exclusive access to the writer until frame is fully written is desirable (we also assume the future is run to completion) + pub async fn apply_inputs(&self, transaction: InputTransaction) -> Result<(), String> { + use ironrdp::core::input::fast_path::FastPathInput; + use ironrdp::core::PduParsing as _; + + info!("transaction: {:?}", transaction.0); + let inputs = self.input_database.lock().apply(transaction); + info!("inputs: {inputs:?}"); + + if !inputs.is_empty() { + let fastpath_input = FastPathInput(inputs.into_vec()); // PERF: unnecessary copy + + let mut frame = Vec::new(); + fastpath_input.to_buffer(&mut frame).map_err(|e| e.to_string())?; + + let mut writer = self.rdp_writer.lock(); + writer.write_all(&frame).await.map_err(|e| e.to_string())?; + writer.flush().await.map_err(|e| e.to_string())?; + } + + Ok(()) + } +} + +fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { + const DEFAULT_WIDTH: u16 = 1280; + const DEFAULT_HEIGHT: u16 = 720; + const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; + const USER_CHANNEL_NAME: &str = "USER"; + + InputConfig { + credentials: AuthIdentity { + username, + password, + domain, + }, + security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, + keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, + keyboard_subtype: 0, + keyboard_functional_keys_count: 12, + ime_file_name: String::new(), + dig_product_id: String::new(), + width: DEFAULT_WIDTH, + height: DEFAULT_HEIGHT, + global_channel_name: GLOBAL_CHANNEL_NAME.to_owned(), + user_channel_name: USER_CHANNEL_NAME.to_owned(), + graphics_config: None, + } + +} + +fn send_update_rectangle( + update_callback: &js_sys::Function, + callback_context: &JsValue, + frame_id: usize, + region: Rectangle, + buffer: Vec, +) -> anyhow::Result<()> { + use js_sys::Uint8ClampedArray; + + let top = region.top; + let left = region.left; + let right = region.right; + let bottom = region.bottom; + let width = region.width(); + let height = region.height(); + + let update_rect = RectInfo { + frame_id, + top, + left, + right, + bottom, + width, + height, + }; + let update_rect = JsValue::from(update_rect); + + let js_array = Uint8ClampedArray::new_with_length(buffer.len() as u32); + js_array.copy_from(&buffer); + let js_array = JsValue::from(js_array); + + let _ret = update_callback + .call2(callback_context, &update_rect, &js_array) + .map_err(|e| anyhow::Error::msg(format!("update callback failed: {e:?}")))?; + + Ok(()) +} diff --git a/ffi/wasm/src/websocket.rs b/ffi/wasm/src/websocket.rs new file mode 100644 index 00000000..6f9203c6 --- /dev/null +++ b/ffi/wasm/src/websocket.rs @@ -0,0 +1,107 @@ +use core::pin::Pin; +use core::task::{Context, Poll}; +use std::io; + +use futures_util::{pin_mut, ready, AsyncRead, AsyncWrite, Sink, Stream}; +use gloo_net::websocket::futures::WebSocket; +use gloo_net::websocket::{Message as WebSocketMessage, WebSocketError}; + +pub(crate) struct WebSocketCompat { + read_buf: Option>, + inner: WebSocket, +} + +impl WebSocketCompat { + pub(crate) fn new(ws: WebSocket) -> Self { + Self { + read_buf: None, + inner: ws, + } + } +} + +impl AsyncRead for WebSocketCompat { + fn poll_read(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll> { + let this = self.get_mut(); + let read_buf = &mut this.read_buf; + let inner = &mut this.inner; + pin_mut!(inner); + + let mut data = if let Some(data) = read_buf.take() { + data + } else { + match ready!(inner.as_mut().poll_next(cx)) { + Some(Ok(m)) => match m { + WebSocketMessage::Text(s) => s.into_bytes(), + WebSocketMessage::Bytes(data) => data, + }, + Some(Err(e)) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), + None => return Poll::Ready(Ok(0)), + } + }; + + let bytes_to_copy = std::cmp::min(buf.len(), data.len()); + buf[..bytes_to_copy].copy_from_slice(&data[..bytes_to_copy]); + + if data.len() > bytes_to_copy { + data.drain(..bytes_to_copy); + *read_buf = Some(data); + } + + Poll::Ready(Ok(bytes_to_copy)) + } +} + +impl AsyncWrite for WebSocketCompat { + fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { + macro_rules! try_in_poll { + ($expr:expr) => {{ + match $expr { + Ok(o) => o, + // When using `AsyncWriteExt::write_all`, `io::ErrorKind::WriteZero` will be raised. + // In this case it means "attempted to write on a closed socket". + Err(WebSocketError::ConnectionClose(_)) => return Poll::Ready(Ok(0)), + Err(e) => return Poll::Ready(Err(io::Error::new(io::ErrorKind::Other, e.to_string()))), + } + }}; + } + + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + + // try flushing preemptively + let _ = inner.as_mut().poll_flush(cx); + + // make sure sink is ready to send + try_in_poll!(ready!(inner.as_mut().poll_ready(cx))); + + // actually submit new item + try_in_poll!(inner.as_mut().start_send(WebSocketMessage::Bytes(buf.to_vec()))); + // ^ if no error occurred, message is accepted and queued when calling `start_send` + // (that is: `to_vec` is called only once) + + Poll::Ready(Ok(buf.len())) + } + + fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + let res = ready!(inner.poll_flush(cx)); + Poll::Ready(websocket_to_io_result(res)) + } + + fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let inner = &mut self.get_mut().inner; + pin_mut!(inner); + let res = ready!(inner.poll_close(cx)); + Poll::Ready(websocket_to_io_result(res)) + } +} + +fn websocket_to_io_result(res: Result<(), WebSocketError>) -> io::Result<()> { + match res { + Ok(()) => Ok(()), + Err(WebSocketError::ConnectionClose(_)) => Ok(()), + Err(e) => Err(io::Error::new(io::ErrorKind::Other, e.to_string())), + } +} diff --git a/ironrdp-core/src/input.rs b/ironrdp-core/src/input.rs index f36e36c7..46776200 100644 --- a/ironrdp-core/src/input.rs +++ b/ironrdp-core/src/input.rs @@ -151,4 +151,6 @@ pub enum InputEventError { KeyboardFlagsUnsupported(u8), #[error("Synchronize flags not supported {0}")] SynchronizeFlagsUnsupported(u8), + #[error("FastPathInput PDU is empty")] + EmptyFastPathInput, } diff --git a/ironrdp-core/src/input/fast_path.rs b/ironrdp-core/src/input/fast_path.rs index 4b89cdc0..83b87a3d 100644 --- a/ironrdp-core/src/input/fast_path.rs +++ b/ironrdp-core/src/input/fast_path.rs @@ -211,6 +211,10 @@ impl PduParsing for FastPathInput { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { + if self.0.is_empty() { + return Err(InputEventError::EmptyFastPathInput); + } + let data_length = self.0.iter().map(PduParsing::buffer_length).sum::(); let header = FastPathInputHeader { num_events: self.0.len() as u8, diff --git a/ironrdp-core/src/input/mouse.rs b/ironrdp-core/src/input/mouse.rs index ac8282a2..fad3d3b6 100644 --- a/ironrdp-core/src/input/mouse.rs +++ b/ironrdp-core/src/input/mouse.rs @@ -91,6 +91,5 @@ bitflags! { const LEFT_BUTTON = 0x1000; const RIGHT_BUTTON = 0x2000; const MIDDLE_BUTTON_OR_WHEEL = 0x4000; - } } diff --git a/ironrdp-input/Cargo.toml b/ironrdp-input/Cargo.toml index e7b54a36..b31a8562 100644 --- a/ironrdp-input/Cargo.toml +++ b/ironrdp-input/Cargo.toml @@ -9,3 +9,11 @@ repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] [dependencies] +bitvec = "1.0.1" +ironrdp-core = { path = "../ironrdp-core" } +smallvec = "1.10.0" + +[dev-dependencies] +proptest = "1.1.0" +anyhow = "1" +rstest = "0.16.0" diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 8b137891..3d4bf104 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -1 +1,264 @@ +use bitvec::array::BitArray; +use bitvec::BitArr; +use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; +use ironrdp_core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use ironrdp_core::input::mouse_x::PointerFlags; +use ironrdp_core::input::{MousePdu, MouseXPdu}; +use smallvec::SmallVec; +// TODO: sync event +// TODO: mouse wheel + +/// Number associated to a mouse button. +/// +/// Based on the MouseEvent.button property found in browsers APIs: +/// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button#value +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct MouseButton(u8); + +impl MouseButton { + const LEFT_VAL: u8 = 0; + const MIDDLE_VAL: u8 = 1; + const RIGHT_VAL: u8 = 2; + const X1_VAL: u8 = 3; + const X2_VAL: u8 = 4; + + pub const LEFT: Self = Self(Self::LEFT_VAL); + pub const MIDDLE: Self = Self(Self::MIDDLE_VAL); + pub const RIGHT: Self = Self(Self::RIGHT_VAL); + pub const X1: Self = Self(Self::X1_VAL); + pub const X2: Self = Self(Self::X2_VAL); + + pub fn is_unknown(&self) -> bool { + self.0 > Self::X2.0 + } +} + +impl From for MouseButton { + fn from(value: u8) -> Self { + Self(value) + } +} + +impl From for u8 { + fn from(value: MouseButton) -> Self { + value.0 + } +} + +impl From for usize { + fn from(value: MouseButton) -> Self { + usize::from(value.0) + } +} + +/// Keyboard scan code. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct Scancode(u8); + +impl From for Scancode { + fn from(value: u8) -> Self { + Self(value) + } +} + +impl From for u8 { + fn from(value: Scancode) -> Self { + value.0 + } +} + +impl From for usize { + fn from(value: Scancode) -> Self { + usize::from(value.0) + } +} + +/// Cursor position for a mouse device. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct MousePosition { + pub x: u16, + pub y: u16, +} + +#[derive(Debug, Clone)] +pub enum Operation { + MouseButtonPressed(MouseButton), + MouseButtonReleased(MouseButton), + MouseMove(MousePosition), + KeyPressed(Scancode), + KeyReleased(Scancode), +} + +pub type KeyboardState = BitArr!(for 256); +pub type MouseButtonsState = BitArr!(for 5); + +/// In-memory database for maintaining the current keyboard and mouse state. +pub struct Database { + keyboard: KeyboardState, + mouse_buttons: MouseButtonsState, + mouse_position: MousePosition, +} + +impl Default for Database { + fn default() -> Self { + Self::new() + } +} + +impl Database { + pub fn new() -> Self { + Self { + keyboard: BitArray::ZERO, + mouse_buttons: BitArray::ZERO, + mouse_position: MousePosition { x: 0, y: 0 }, + } + } + + pub fn is_key_pressed(&self, code: Scancode) -> bool { + self.keyboard + .get(usize::from(code)) + .as_deref() + .copied() + .unwrap_or(false) + } + + pub fn is_mouse_button_pressed(&self, code: MouseButton) -> bool { + self.mouse_buttons + .get(usize::from(code)) + .as_deref() + .copied() + .unwrap_or(false) + } + + pub fn mouse_position(&self) -> MousePosition { + self.mouse_position + } + + pub fn keyboard_state(&self) -> &KeyboardState { + &self.keyboard + } + + pub fn mouse_buttons_state(&self) -> &MouseButtonsState { + &self.mouse_buttons + } + + /// Apply a transaction (list of operations) and returns a list of RDP input events to send. + /// + /// Operations that would cause no state change are ignored. + pub fn apply(&mut self, transaction: impl IntoIterator) -> SmallVec<[FastPathInputEvent; 2]> { + let mut events = SmallVec::new(); + + for operation in transaction { + match operation { + Operation::MouseButtonPressed(button) => { + if button.is_unknown() { + continue; + } + + let was_pressed = self.mouse_buttons.replace(usize::from(button), true); + + if !was_pressed { + let event = match MouseButtonFlags::from(button) { + MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::DOWN | flags, + number_of_wheel_rotations: 0, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + MouseButtonFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { + flags: PointerFlags::DOWN | flags, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + }; + + events.push(event) + } + } + Operation::MouseButtonReleased(button) => { + if button.is_unknown() { + continue; + } + + let was_pressed = self.mouse_buttons.replace(usize::from(button), false); + + if was_pressed { + let event = match MouseButtonFlags::from(button) { + MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: flags, + number_of_wheel_rotations: 0, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + MouseButtonFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { + flags, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + }; + + events.push(event) + } + } + Operation::MouseMove(position) => { + if position != self.mouse_position { + self.mouse_position = position; + events.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::MOVE, + button_events: ButtonEvents::empty(), + number_of_wheel_rotations: 0, + x_position: position.x, + y_position: position.y, + })) + } + } + Operation::KeyPressed(scancode) => { + let was_pressed = self.keyboard.replace(usize::from(scancode), true); + + if !was_pressed { + events.push(FastPathInputEvent::KeyboardEvent( + KeyboardFlags::empty(), + u8::from(scancode), + )); + } + } + Operation::KeyReleased(scancode) => { + let was_pressed = self.keyboard.replace(usize::from(scancode), false); + + if was_pressed { + events.push(FastPathInputEvent::KeyboardEvent( + KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + u8::from(scancode), + )); + } + } + } + } + + events + } +} + +enum MouseButtonFlags { + Button(ButtonEvents), + Pointer(PointerFlags), +} + +impl From for MouseButtonFlags { + fn from(value: MouseButton) -> Self { + match value.0 { + MouseButton::LEFT_VAL => Self::Button(ButtonEvents::LEFT_BUTTON), + MouseButton::MIDDLE_VAL => Self::Button(ButtonEvents::MIDDLE_BUTTON_OR_WHEEL), + MouseButton::RIGHT_VAL => Self::Button(ButtonEvents::RIGHT_BUTTON), + MouseButton::X1_VAL => Self::Pointer(PointerFlags::BUTTON1), + MouseButton::X2_VAL => Self::Pointer(PointerFlags::BUTTON2), + _ => Self::Button(ButtonEvents::empty()), + } + } +} diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs new file mode 100644 index 00000000..398d1cac --- /dev/null +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -0,0 +1,168 @@ +use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; +use ironrdp_core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use ironrdp_core::input::mouse_x::PointerFlags; +use ironrdp_core::input::{MousePdu, MouseXPdu}; +use ironrdp_input::*; +use rstest::rstest; + +enum MouseFlags { + Button(ButtonEvents), + Pointer(PointerFlags), +} + +#[rstest] +#[case::left(MouseButton::LEFT, MouseFlags::Button(ButtonEvents::LEFT_BUTTON))] +#[case::middle(MouseButton::MIDDLE, MouseFlags::Button(ButtonEvents::MIDDLE_BUTTON_OR_WHEEL))] +#[case::right(MouseButton::RIGHT, MouseFlags::Button(ButtonEvents::RIGHT_BUTTON))] +#[case::x1(MouseButton::X1, MouseFlags::Pointer(PointerFlags::BUTTON1))] +#[case::x2(MouseButton::X2, MouseFlags::Pointer(PointerFlags::BUTTON2))] +fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) { + let mut db = Database::default(); + + { + let packets = db.apply(std::iter::once(Operation::MouseButtonPressed(button))); + let packet = packets.into_iter().next().expect("one input event"); + + let expected_input_event = match expected_flag { + MouseFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: flags | ButtonEvents::DOWN, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + MouseFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { + flags: flags | PointerFlags::DOWN, + x_position: 0, + y_position: 0, + }), + }; + + assert_eq!(packet, expected_input_event); + } + + { + let packets = db.apply(std::iter::once(Operation::MouseButtonReleased(button))); + let packet = packets.into_iter().next().expect("one input event"); + + let expected_input_event = match expected_flag { + MouseFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: flags, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + MouseFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { + flags, + x_position: 0, + y_position: 0, + }), + }; + + assert_eq!(packet, expected_input_event); + } +} + +#[test] +fn keyboard() { + let mut db = Database::default(); + + { + let to_press = [ + Operation::KeyPressed(Scancode::from(0)), + Operation::KeyPressed(Scancode::from(23)), + Operation::KeyPressed(Scancode::from(39)), + Operation::KeyPressed(Scancode::from(19)), + Operation::KeyPressed(Scancode::from(20)), + Operation::KeyPressed(Scancode::from(90)), + ]; + + let expected_inputs = [ + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 23), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 39), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), + ]; + + let mut expected_keyboard_state = KeyboardState::ZERO; + expected_keyboard_state.set(0, true); + expected_keyboard_state.set(23, true); + expected_keyboard_state.set(39, true); + expected_keyboard_state.set(19, true); + expected_keyboard_state.set(20, true); + expected_keyboard_state.set(90, true); + + let actual_inputs = db.apply(to_press); + let actual_keyboard_state = db.keyboard_state(); + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); + assert_eq!(*actual_keyboard_state, expected_keyboard_state); + } + + { + let to_press = [ + Operation::KeyReleased(Scancode::from(0)), + Operation::KeyReleased(Scancode::from(2)), + Operation::KeyReleased(Scancode::from(3)), + Operation::KeyReleased(Scancode::from(19)), + Operation::KeyReleased(Scancode::from(20)), + Operation::KeyReleased(Scancode::from(100)), + ]; + + let expected_inputs = [ + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 20), + ]; + + let mut expected_keyboard_state = KeyboardState::ZERO; + expected_keyboard_state.set(23, true); + expected_keyboard_state.set(39, true); + expected_keyboard_state.set(90, true); + + let actual_inputs = db.apply(to_press); + let actual_keyboard_state = db.keyboard_state(); + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); + assert_eq!(*actual_keyboard_state, expected_keyboard_state); + } +} + +#[test] +fn no_duplicate() { + let mut db = Database::default(); + + let to_press = [ + Operation::KeyPressed(Scancode::from(0)), + Operation::KeyPressed(Scancode::from(0)), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::KeyPressed(Scancode::from(0)), + Operation::KeyPressed(Scancode::from(20)), + Operation::KeyPressed(Scancode::from(90)), + Operation::KeyPressed(Scancode::from(90)), + Operation::MouseButtonPressed(MouseButton::LEFT), + ]; + + let expected_inputs = [ + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::LEFT_BUTTON | ButtonEvents::DOWN, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), + ]; + + let actual_inputs = db.apply(to_press); + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); +} diff --git a/ironrdp-input/tests/smoke.rs b/ironrdp-input/tests/smoke.rs new file mode 100644 index 00000000..a3e1ebcb --- /dev/null +++ b/ironrdp-input/tests/smoke.rs @@ -0,0 +1,124 @@ +use anyhow::{bail, ensure}; +use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; +use ironrdp_input::*; +use proptest::collection::vec; +use proptest::prelude::*; + +fn mouse_button() -> impl Strategy { + // Generate a few "out of bounds" buttons + (0..10u8).prop_map(MouseButton::from) +} + +fn mouse_button_op() -> impl Strategy { + prop_oneof![ + mouse_button().prop_map(Operation::MouseButtonPressed), + mouse_button().prop_map(Operation::MouseButtonReleased), + ] +} + +fn scancode() -> impl Strategy { + any::().prop_map(Scancode::from) +} + +fn key_op() -> impl Strategy { + prop_oneof![ + scancode().prop_map(Operation::KeyPressed), + scancode().prop_map(Operation::KeyReleased), + ] +} + +fn mouse_position() -> impl Strategy { + (any::(), any::()).prop_map(|(x, y)| MousePosition { x, y }) +} + +#[test] +fn smoke_mouse_buttons() { + let test_impl = |ops: Vec| -> anyhow::Result<()> { + let mut db = Database::default(); + + for op in ops { + db.apply(std::iter::once(op.clone())); + + match op { + Operation::MouseButtonPressed(button) if !button.is_unknown() => { + ensure!(db.is_mouse_button_pressed(button)) + } + Operation::MouseButtonPressed(button) if button.is_unknown() => { + ensure!(!db.is_mouse_button_pressed(button)) + } + Operation::MouseButtonReleased(button) => ensure!(!db.is_mouse_button_pressed(button)), + _ => bail!("unexpected case"), + } + } + + Ok(()) + }; + + proptest!(|(ops in vec(mouse_button_op(), 1..5))| { + test_impl(ops).map_err(|e| TestCaseError::fail(format!("{e:#}")))?; + }); +} + +#[test] +fn smoke_mouse_position() { + let test_impl = |ops: Vec| -> anyhow::Result<()> { + let mut db = Database::default(); + + db.apply(ops.iter().cloned().map(Operation::MouseMove)); + + let last_position = ops.last().unwrap(); + ensure!(db.mouse_position().eq(last_position)); + + Ok(()) + }; + + proptest!(|(ops in vec(mouse_position(), 1..3))| { + test_impl(ops).map_err(|e| TestCaseError::fail(format!("{e:#}")))?; + }); +} + +#[test] +fn smoke_keyboard() { + let test_impl = |ops: Vec| -> anyhow::Result<()> { + let mut db = Database::default(); + + for op in ops { + let packets = db.apply(std::iter::once(op.clone())); + let packet = packets.into_iter().next(); + + match op { + Operation::KeyPressed(key) => { + ensure!(db.is_key_pressed(key)); + + if let Some(packet) = packet { + if let FastPathInputEvent::KeyboardEvent(flags, scancode) = packet { + ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(scancode == u8::from(key)) + } else { + bail!("unexpected packet emitted"); + } + } + } + Operation::KeyReleased(key) => { + ensure!(!db.is_key_pressed(key)); + + if let Some(packet) = packet { + if let FastPathInputEvent::KeyboardEvent(flags, scancode) = packet { + ensure!(flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(scancode == u8::from(key)) + } else { + bail!("unexpected packet emitted"); + } + } + } + _ => bail!("unexpected case"), + } + } + + Ok(()) + }; + + proptest!(|(ops in vec(key_op(), 1..5))| { + test_impl(ops).map_err(|e| TestCaseError::fail(format!("{e:#}")))?; + }); +} diff --git a/ironrdp-session/src/active_session/codecs/rfx.rs b/ironrdp-session/src/active_session/codecs/rfx.rs index a2c17dfc..9dec465c 100644 --- a/ironrdp-session/src/active_session/codecs/rfx.rs +++ b/ironrdp-session/src/active_session/codecs/rfx.rs @@ -124,13 +124,13 @@ impl DecodingContext { let region = region; debug!("Frame #{}: ", frame_begin.index); - debug!("Destination rectangle: {:?}", destination); - debug!("Context: {:?}", self.context); - debug!("Channels: {:?}", self.channels); - debug!("Region: {:?}", region); + trace!("Destination rectangle: {:?}", destination); + trace!("Context: {:?}", self.context); + trace!("Channels: {:?}", self.channels); + trace!("Region: {:?}", region); let clipping_rectangles = clipping_rectangles(region.rectangles.as_slice(), destination, width, height); - debug!("Clipping rectangles: {:?}", clipping_rectangles); + trace!("Clipping rectangles: {:?}", clipping_rectangles); for (update_rectangle, tile_data) in tiles_to_rectangles(tile_set.tiles.as_slice(), destination) .zip(map_tiles_data(tile_set.tiles.as_slice(), tile_set.quants.as_slice())) diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index d504bca8..bd2ba1ab 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -49,7 +49,7 @@ impl Processor { match update { Ok(FastPathUpdate::SurfaceCommands(surface_commands)) => { - info!("Received Surface Commands: {} pieces", surface_commands.len()); + trace!("Received Surface Commands: {} pieces", surface_commands.len()); let update_region = self.process_surface_commands(image, &mut output, surface_commands)?; Ok(Some(update_region)) } @@ -85,7 +85,7 @@ impl Processor { for command in surface_commands { match command { SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { - info!("Surface bits"); + trace!("Surface bits"); let codec_id = CodecId::from_u8(bits.extended_bitmap_data.codec_id) .ok_or(RdpError::UnexpectedCodecId(bits.extended_bitmap_data.codec_id))?; match codec_id { @@ -101,7 +101,7 @@ impl Processor { } } SurfaceCommand::FrameMarker(marker) => { - info!( + trace!( "Frame marker: action {:?} with ID #{}", marker.frame_action, marker.frame_id.unwrap_or(0) diff --git a/ironrdp-session/src/frame.rs b/ironrdp-session/src/frame.rs index f73f5a6d..36c59a3f 100644 --- a/ironrdp-session/src/frame.rs +++ b/ironrdp-session/src/frame.rs @@ -1,12 +1,10 @@ use std::io; use bytes::{Buf as _, BufMut as _, Bytes, BytesMut}; -use ironrdp_core::rdp::vc; -use ironrdp_core::rdp::SERVER_CHANNEL_ID; +use ironrdp_core::rdp::{vc, SERVER_CHANNEL_ID}; use ironrdp_core::PduParsing; -use crate::ChannelIdentificators; -use crate::RdpError; +use crate::{ChannelIdentificators, RdpError}; pub(crate) trait Frame { fn encode(self, stream: impl io::Write) -> Result<(), RdpError>; From 2f78175c6769900755f381c0e57bede8899644db Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Mon, 6 Feb 2023 18:12:51 -0500 Subject: [PATCH 0107/1273] feat: IronRDP GUI WebComponent Issue: DPS-7619 --- iron-remote-gui/.gitignore | 27 + iron-remote-gui/.vscode/extensions.json | 3 + iron-remote-gui/README.md | 47 + iron-remote-gui/index.html | 20 + iron-remote-gui/package-lock.json | 4445 ++++ iron-remote-gui/package.json | 32 + iron-remote-gui/pre-build.js | 22 + iron-remote-gui/public/package.json | 18 + iron-remote-gui/public/test.html | 19 + iron-remote-gui/src/iron-remote-gui.svelte | 316 + iron-remote-gui/src/main.ts | 4 + .../src/services/logging.service.ts | 17 + .../src/services/server-bridge.service.ts | 58 + .../src/services/services-injector.ts | 19 + .../src/services/tauri-bridge.service.ts | 74 + .../src/services/user-interaction-service.ts | 119 + .../src/services/wasm-bridge.service.ts | 287 + iron-remote-gui/src/vite-env.d.ts | 2 + iron-remote-gui/svelte.config.js | 10 + iron-remote-gui/tsconfig.json | 20 + iron-remote-gui/tsconfig.node.json | 8 + iron-remote-gui/vite.config.ts | 22 + iron-svelte-client/.gitignore | 1 + iron-svelte-client/package-lock.json | 11543 ++++----- iron-svelte-client/package.json | 91 +- iron-svelte-client/pre-build.js | 61 + iron-svelte-client/src/app.html | 5 +- iron-svelte-client/src/lib/login/login.svelte | 169 +- .../lib/remote-screen/remote-screen.svelte | 110 +- .../src/routes/session/+page.svelte | 15 +- .../src/services/session.service.ts | 9 +- iron-web-client/.browserslistrc | 16 - iron-web-client/.editorconfig | 16 - iron-web-client/.gitignore | 42 - iron-web-client/.vscode/extensions.json | 4 - iron-web-client/.vscode/launch.json | 20 - iron-web-client/.vscode/tasks.json | 42 - iron-web-client/README.md | 27 - iron-web-client/angular.json | 165 - iron-web-client/karma.conf.js | 44 - iron-web-client/package-lock.json | 20422 ---------------- iron-web-client/package.json | 46 - .../src/app/add-tab/add-tab.component.html | 5 - .../src/app/add-tab/add-tab.component.scss | 6 - .../src/app/add-tab/add-tab.component.ts | 16 - iron-web-client/src/app/app.component.html | 1 - iron-web-client/src/app/app.component.scss | 0 iron-web-client/src/app/app.component.spec.ts | 31 - iron-web-client/src/app/app.component.ts | 11 - iron-web-client/src/app/app.module.ts | 48 - iron-web-client/src/app/app.routing.module.ts | 18 - .../src/app/application.service.ts | 27 - .../src/app/login/login.component.html | 21 - .../src/app/login/login.component.scss | 19 - .../src/app/login/login.component.ts | 41 - .../screen-renderer.component.html | 5 - .../screen-renderer.component.scss | 25 - .../screen-renderer.component.ts | 70 - .../src/app/services/command.service.ts | 0 .../src/app/services/server-bridge.service.ts | 43 - .../src/app/services/session.service.ts | 57 - .../src/app/services/tauri-bridge.service.ts | 63 - .../app/services/user-interaction.service.ts | 32 - .../src/app/services/wasm-bridge.service.ts | 45 - .../src/app/session/session.component.html | 2 - .../src/app/session/session.component.scss | 0 .../src/app/session/session.component.ts | 17 - .../src/app/session/session.module.ts | 42 - .../src/app/session/session.routing.module.ts | 16 - .../splash-screen/splashscreen.component.html | 5 - .../splash-screen/splashscreen.component.scss | 26 - .../splash-screen/splashscreen.component.ts | 17 - .../src/app/tabs/tabs.component.html | 14 - .../src/app/tabs/tabs.component.scss | 0 .../src/app/tabs/tabs.component.ts | 32 - iron-web-client/src/assets/.gitignore | 1 - iron-web-client/src/assets/.gitkeep | 0 .../src/assets/images/iron-logo.png | Bin 193571 -> 0 bytes iron-web-client/src/assets/ironrdp-fake.js | 0 .../environments/environment-tauri.prod.ts | 8 - .../src/environments/environment-tauri.ts | 8 - .../src/environments/environment.prod.ts | 4 - .../src/environments/environment.ts | 8 - iron-web-client/src/favicon.ico | Bin 948 -> 0 bytes iron-web-client/src/index.html | 16 - iron-web-client/src/main.ts | 12 - iron-web-client/src/models/desktop-size.ts | 4 - iron-web-client/src/models/rect.ts | 7 - iron-web-client/src/models/session.ts | 15 - iron-web-client/src/models/tab.ts | 11 - iron-web-client/src/polyfills.ts | 53 - iron-web-client/src/styles.scss | 4 - iron-web-client/src/test.ts | 26 - iron-web-client/tsconfig.app.json | 15 - iron-web-client/tsconfig.json | 36 - iron-web-client/tsconfig.spec.json | 18 - 96 files changed, 11656 insertions(+), 27782 deletions(-) create mode 100644 iron-remote-gui/.gitignore create mode 100644 iron-remote-gui/.vscode/extensions.json create mode 100644 iron-remote-gui/README.md create mode 100644 iron-remote-gui/index.html create mode 100644 iron-remote-gui/package-lock.json create mode 100644 iron-remote-gui/package.json create mode 100644 iron-remote-gui/pre-build.js create mode 100644 iron-remote-gui/public/package.json create mode 100644 iron-remote-gui/public/test.html create mode 100644 iron-remote-gui/src/iron-remote-gui.svelte create mode 100644 iron-remote-gui/src/main.ts create mode 100644 iron-remote-gui/src/services/logging.service.ts create mode 100644 iron-remote-gui/src/services/server-bridge.service.ts create mode 100644 iron-remote-gui/src/services/services-injector.ts create mode 100644 iron-remote-gui/src/services/tauri-bridge.service.ts create mode 100644 iron-remote-gui/src/services/user-interaction-service.ts create mode 100644 iron-remote-gui/src/services/wasm-bridge.service.ts create mode 100644 iron-remote-gui/src/vite-env.d.ts create mode 100644 iron-remote-gui/svelte.config.js create mode 100644 iron-remote-gui/tsconfig.json create mode 100644 iron-remote-gui/tsconfig.node.json create mode 100644 iron-remote-gui/vite.config.ts create mode 100644 iron-svelte-client/pre-build.js delete mode 100644 iron-web-client/.browserslistrc delete mode 100644 iron-web-client/.editorconfig delete mode 100644 iron-web-client/.gitignore delete mode 100644 iron-web-client/.vscode/extensions.json delete mode 100644 iron-web-client/.vscode/launch.json delete mode 100644 iron-web-client/.vscode/tasks.json delete mode 100644 iron-web-client/README.md delete mode 100644 iron-web-client/angular.json delete mode 100644 iron-web-client/karma.conf.js delete mode 100644 iron-web-client/package-lock.json delete mode 100644 iron-web-client/package.json delete mode 100644 iron-web-client/src/app/add-tab/add-tab.component.html delete mode 100644 iron-web-client/src/app/add-tab/add-tab.component.scss delete mode 100644 iron-web-client/src/app/add-tab/add-tab.component.ts delete mode 100644 iron-web-client/src/app/app.component.html delete mode 100644 iron-web-client/src/app/app.component.scss delete mode 100644 iron-web-client/src/app/app.component.spec.ts delete mode 100644 iron-web-client/src/app/app.component.ts delete mode 100644 iron-web-client/src/app/app.module.ts delete mode 100644 iron-web-client/src/app/app.routing.module.ts delete mode 100644 iron-web-client/src/app/application.service.ts delete mode 100644 iron-web-client/src/app/login/login.component.html delete mode 100644 iron-web-client/src/app/login/login.component.scss delete mode 100644 iron-web-client/src/app/login/login.component.ts delete mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.html delete mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.scss delete mode 100644 iron-web-client/src/app/screen-renderer/screen-renderer.component.ts delete mode 100644 iron-web-client/src/app/services/command.service.ts delete mode 100644 iron-web-client/src/app/services/server-bridge.service.ts delete mode 100644 iron-web-client/src/app/services/session.service.ts delete mode 100644 iron-web-client/src/app/services/tauri-bridge.service.ts delete mode 100644 iron-web-client/src/app/services/user-interaction.service.ts delete mode 100644 iron-web-client/src/app/services/wasm-bridge.service.ts delete mode 100644 iron-web-client/src/app/session/session.component.html delete mode 100644 iron-web-client/src/app/session/session.component.scss delete mode 100644 iron-web-client/src/app/session/session.component.ts delete mode 100644 iron-web-client/src/app/session/session.module.ts delete mode 100644 iron-web-client/src/app/session/session.routing.module.ts delete mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.html delete mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.scss delete mode 100644 iron-web-client/src/app/splash-screen/splashscreen.component.ts delete mode 100644 iron-web-client/src/app/tabs/tabs.component.html delete mode 100644 iron-web-client/src/app/tabs/tabs.component.scss delete mode 100644 iron-web-client/src/app/tabs/tabs.component.ts delete mode 100644 iron-web-client/src/assets/.gitignore delete mode 100644 iron-web-client/src/assets/.gitkeep delete mode 100644 iron-web-client/src/assets/images/iron-logo.png delete mode 100644 iron-web-client/src/assets/ironrdp-fake.js delete mode 100644 iron-web-client/src/environments/environment-tauri.prod.ts delete mode 100644 iron-web-client/src/environments/environment-tauri.ts delete mode 100644 iron-web-client/src/environments/environment.prod.ts delete mode 100644 iron-web-client/src/environments/environment.ts delete mode 100644 iron-web-client/src/favicon.ico delete mode 100644 iron-web-client/src/index.html delete mode 100644 iron-web-client/src/main.ts delete mode 100644 iron-web-client/src/models/desktop-size.ts delete mode 100644 iron-web-client/src/models/rect.ts delete mode 100644 iron-web-client/src/models/session.ts delete mode 100644 iron-web-client/src/models/tab.ts delete mode 100644 iron-web-client/src/polyfills.ts delete mode 100644 iron-web-client/src/styles.scss delete mode 100644 iron-web-client/src/test.ts delete mode 100644 iron-web-client/tsconfig.app.json delete mode 100644 iron-web-client/tsconfig.json delete mode 100644 iron-web-client/tsconfig.spec.json diff --git a/iron-remote-gui/.gitignore b/iron-remote-gui/.gitignore new file mode 100644 index 00000000..c903f2bb --- /dev/null +++ b/iron-remote-gui/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/iron-remote-gui/.vscode/extensions.json b/iron-remote-gui/.vscode/extensions.json new file mode 100644 index 00000000..bdef8201 --- /dev/null +++ b/iron-remote-gui/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["svelte.svelte-vscode"] +} diff --git a/iron-remote-gui/README.md b/iron-remote-gui/README.md new file mode 100644 index 00000000..e6cd94fc --- /dev/null +++ b/iron-remote-gui/README.md @@ -0,0 +1,47 @@ +# Svelte + TS + Vite + +This template should help get you started developing with Svelte and TypeScript in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). + +## Need an official Svelte framework? + +Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. + +## Technical considerations + +**Why use this over SvelteKit?** + +- It brings its own routing solution which might not be preferable for some users. +- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. + +This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. + +Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. + +**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** + +Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. + +**Why include `.vscode/extensions.json`?** + +Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. + +**Why enable `allowJs` in the TS template?** + +While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. + +**Why is HMR not preserving my local component state?** + +HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). + +If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. + +```ts +// store.ts +// An extremely simple external store +import { writable } from 'svelte/store' +export default writable(0) +``` diff --git a/iron-remote-gui/index.html b/iron-remote-gui/index.html new file mode 100644 index 00000000..e2223d5f --- /dev/null +++ b/iron-remote-gui/index.html @@ -0,0 +1,20 @@ + + + + + + Vite + Svelte + TS + + + + + + + + diff --git a/iron-remote-gui/package-lock.json b/iron-remote-gui/package-lock.json new file mode 100644 index 00000000..a61f3be3 --- /dev/null +++ b/iron-remote-gui/package-lock.json @@ -0,0 +1,4445 @@ +{ + "name": "iron-remote-gui", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "iron-remote-gui", + "version": "0.0.0", + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.0.0", + "@tauri-apps/api": "^1.2.0", + "@tsconfig/svelte": "^3.0.0", + "rxjs": "^6.6.7", + "svelte": "^3.54.0", + "svelte-check": "^2.10.0", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "vite": "^4.0.0", + "vite-plugin-dts": "^1.7.1", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", + "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", + "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", + "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", + "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", + "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", + "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", + "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", + "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", + "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", + "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", + "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", + "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", + "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", + "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", + "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", + "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", + "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", + "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", + "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", + "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", + "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", + "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.33.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.33.7.tgz", + "integrity": "sha512-fQT2v/j/55DhvMFiopLtth66E7xTFNhnumMKgKY14SaG6qU/V1W0e4nOAgbA+SmLakQjAd1Evu06ofaVaxBPbA==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.25.3", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.53.3", + "@rushstack/rig-package": "0.3.17", + "@rushstack/ts-command-line": "4.13.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "source-map": "~0.6.1", + "typescript": "~4.8.4" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.3.tgz", + "integrity": "sha512-WWxBUq77p2iZ+5VF7Nmrm3y/UtqCh5bYV8ii3khwq3w99+fXWpvfsAhgSLsC7k8XDQc6De4ssMxH6He/qe1pzg==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.53.3" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library": { + "version": "3.53.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.3.tgz", + "integrity": "sha512-H0+T5koi5MFhJUd5ND3dI3bwLhvlABetARl78L3lWftJVQEPyzcgTStvTTRiIM5mCltyTM8VYm6BuCtNUuxD0Q==", + "dev": true, + "dependencies": { + "@types/node": "12.20.24", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "z-schema": "~5.0.2" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/@types/node": { + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", + "dev": true + }, + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.17.tgz", + "integrity": "sha512-nxvAGeIMnHl1LlZSQmacgcRV4y1EYtgcDIrw6KkeVjudOMonlxO482PhDj3LVZEp6L7emSf6YSO2s5JkHlwfZA==", + "dev": true, + "dependencies": { + "resolve": "~1.17.0", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/rig-package/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.1.tgz", + "integrity": "sha512-UTQMRyy/jH1IS2U+6pyzyn9xQ2iMcoUKkTcZUzOP/aaMiKlWLwCTDiBVwhw/M1crDx6apF9CwyjuWO9r1SBdJQ==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", + "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.27.0", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.3" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.54.0", + "vite": "^4.0.0" + } + }, + "node_modules/@swc/core": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.25.tgz", + "integrity": "sha512-wqzvM/wu6OsTVYPMStOpm7kIQcPX3GoZ0sC85qzDdsCxmJ1rmItLAD91sXPUmmdk0XqPYjLgT9MRDEIP5woz4g==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.25", + "@swc/core-darwin-x64": "1.3.25", + "@swc/core-linux-arm-gnueabihf": "1.3.25", + "@swc/core-linux-arm64-gnu": "1.3.25", + "@swc/core-linux-arm64-musl": "1.3.25", + "@swc/core-linux-x64-gnu": "1.3.25", + "@swc/core-linux-x64-musl": "1.3.25", + "@swc/core-win32-arm64-msvc": "1.3.25", + "@swc/core-win32-ia32-msvc": "1.3.25", + "@swc/core-win32-x64-msvc": "1.3.25" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.25.tgz", + "integrity": "sha512-8PWAVcjTJyj2VrqPBFOIi2w2P0Z8kOCbzHW3+pe+bSXxfGMG0MKPl5U2IXhsEL0ovm4xSFlqW0yygpoP3MmRPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.25.tgz", + "integrity": "sha512-5DHGiMYFEj5aa208tCjo7Sn5tiG4xPz+4gUiWVlglxqXFptkNim5xu/1G6VYm5Zk7dI5jJkjTU76GQG7IRvPug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.25.tgz", + "integrity": "sha512-YNfLxv9PhZk+jrJbpR1mMrYBUkufo0hiFv3S1OrX3l8edsIP4wPND5w9ZH0Oi898f6Jg9DBrY2zXJMQ+gWkbvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.25.tgz", + "integrity": "sha512-kS+spM5/xQ6QvWF1ms3byfjnhUlpjTfFwgCyHnIKgjvsYkDa+vkAIhKq6HuEdaTPaCRCjts0Zarhub1nClUU0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.25.tgz", + "integrity": "sha512-vM3D7LWmjotUAJ2D4F+L+dspFeWrcPNVh0o8TCoTOYCt8DPD5YsUKTpIgOsZ+gReeWUAnNTh0Btx5pGGVfajGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.25.tgz", + "integrity": "sha512-xUCLLMDlYa/zB8BftVa4SrxuVpcDxkltCfmBg5r2pZPVskhC5ZJsQZ/AvWNChoAB11shRhjTaWDlmxJEsa7TIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.25.tgz", + "integrity": "sha512-QzHU3BIaUVRSFNsUn3Qxx1vgtF/f5NqsFMAAPSq9Y8Yq5nrlc2t7cNuOROxHLbUqE+NPUp6+RglleJMoeWz5mA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.25.tgz", + "integrity": "sha512-77VSVtneVOAUL4zkRyQZ6pWVpTsVVdqwly/DKnRnloglGKxYuk5DG5MUBsL72Nnfv4OCHjZ27eI3NUrpLsUb2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.25.tgz", + "integrity": "sha512-kz0v3K3H6OPEZR3ry72Ad/6C5GrZBRRUk69K58LORQ8tZXQD3UGl85pUbQqyHl8fR5NU76Muxgovj9CI9iTHGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.25.tgz", + "integrity": "sha512-nmQOAzIpNRRnupWzkenJmW4i+h1M76cVNUqEU2MjmtesEkRZEGqv//jefXiyCP2zcbeLNLKiB2ptVJhpd1BvRA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true, + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", + "integrity": "sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "minimatch": "^5.1.0", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tsconfig/svelte": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", + "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", + "dev": true + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/code-block-writer": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "dev": true + }, + "node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", + "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.16", + "@esbuild/android-arm64": "0.16.16", + "@esbuild/android-x64": "0.16.16", + "@esbuild/darwin-arm64": "0.16.16", + "@esbuild/darwin-x64": "0.16.16", + "@esbuild/freebsd-arm64": "0.16.16", + "@esbuild/freebsd-x64": "0.16.16", + "@esbuild/linux-arm": "0.16.16", + "@esbuild/linux-arm64": "0.16.16", + "@esbuild/linux-ia32": "0.16.16", + "@esbuild/linux-loong64": "0.16.16", + "@esbuild/linux-mips64el": "0.16.16", + "@esbuild/linux-ppc64": "0.16.16", + "@esbuild/linux-riscv64": "0.16.16", + "@esbuild/linux-s390x": "0.16.16", + "@esbuild/linux-x64": "0.16.16", + "@esbuild/netbsd-x64": "0.16.16", + "@esbuild/openbsd-x64": "0.16.16", + "@esbuild/sunos-x64": "0.16.16", + "@esbuild/win32-arm64": "0.16.16", + "@esbuild/win32-ia32": "0.16.16", + "@esbuild/win32-x64": "0.16.16" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/punycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", + "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", + "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", + "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-morph": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-16.0.0.tgz", + "integrity": "sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==", + "dev": true, + "dependencies": { + "@ts-morph/common": "~0.17.0", + "code-block-writer": "^11.0.3" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", + "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.3", + "postcss": "^8.4.20", + "resolve": "^1.22.1", + "rollup": "^3.7.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-1.7.1.tgz", + "integrity": "sha512-2oGMnAjcrZN7jM1TloiS1b1mCn42s3El04ix2RFhId5P1WfMigF8WAwsqT6a6jk0Yso8t7AeZsBkkxYShR0hBQ==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor": "^7.33.5", + "@rollup/pluginutils": "^5.0.2", + "@rushstack/node-core-library": "^3.53.2", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "kolorist": "^1.6.0", + "ts-morph": "^16.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": ">=2.9.0" + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.10" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.1.tgz", + "integrity": "sha512-m1Y2QKWVNRXOfVyT6E/VcaL1yugq1nqGgFMRUIUS8S3rstFjdMxClyzG65casCQo7O9bGcUB3NU0n/RBgDMqGQ==", + "dev": true, + "dependencies": { + "vite": "^3" + } + }, + "node_modules/vite-plugin-wasm/node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-plugin-wasm/node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-plugin-wasm/node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "node_modules/vite-plugin-wasm/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-wasm/node_modules/vite": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", + "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", + "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + } + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", + "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", + "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", + "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", + "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", + "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", + "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", + "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", + "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", + "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", + "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", + "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", + "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", + "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", + "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", + "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", + "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", + "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", + "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", + "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", + "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", + "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", + "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", + "dev": true, + "optional": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@microsoft/api-extractor": { + "version": "7.33.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.33.7.tgz", + "integrity": "sha512-fQT2v/j/55DhvMFiopLtth66E7xTFNhnumMKgKY14SaG6qU/V1W0e4nOAgbA+SmLakQjAd1Evu06ofaVaxBPbA==", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "7.25.3", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.53.3", + "@rushstack/rig-package": "0.3.17", + "@rushstack/ts-command-line": "4.13.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "source-map": "~0.6.1", + "typescript": "~4.8.4" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + } + } + }, + "@microsoft/api-extractor-model": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.3.tgz", + "integrity": "sha512-WWxBUq77p2iZ+5VF7Nmrm3y/UtqCh5bYV8ii3khwq3w99+fXWpvfsAhgSLsC7k8XDQc6De4ssMxH6He/qe1pzg==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.53.3" + } + }, + "@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@rushstack/node-core-library": { + "version": "3.53.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.3.tgz", + "integrity": "sha512-H0+T5koi5MFhJUd5ND3dI3bwLhvlABetARl78L3lWftJVQEPyzcgTStvTTRiIM5mCltyTM8VYm6BuCtNUuxD0Q==", + "dev": true, + "requires": { + "@types/node": "12.20.24", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "z-schema": "~5.0.2" + }, + "dependencies": { + "@types/node": { + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@rushstack/rig-package": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.17.tgz", + "integrity": "sha512-nxvAGeIMnHl1LlZSQmacgcRV4y1EYtgcDIrw6KkeVjudOMonlxO482PhDj3LVZEp6L7emSf6YSO2s5JkHlwfZA==", + "dev": true, + "requires": { + "resolve": "~1.17.0", + "strip-json-comments": "~3.1.1" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rushstack/ts-command-line": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.1.tgz", + "integrity": "sha512-UTQMRyy/jH1IS2U+6pyzyn9xQ2iMcoUKkTcZUzOP/aaMiKlWLwCTDiBVwhw/M1crDx6apF9CwyjuWO9r1SBdJQ==", + "dev": true, + "requires": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", + "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.27.0", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.3" + } + }, + "@swc/core": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.25.tgz", + "integrity": "sha512-wqzvM/wu6OsTVYPMStOpm7kIQcPX3GoZ0sC85qzDdsCxmJ1rmItLAD91sXPUmmdk0XqPYjLgT9MRDEIP5woz4g==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.25", + "@swc/core-darwin-x64": "1.3.25", + "@swc/core-linux-arm-gnueabihf": "1.3.25", + "@swc/core-linux-arm64-gnu": "1.3.25", + "@swc/core-linux-arm64-musl": "1.3.25", + "@swc/core-linux-x64-gnu": "1.3.25", + "@swc/core-linux-x64-musl": "1.3.25", + "@swc/core-win32-arm64-msvc": "1.3.25", + "@swc/core-win32-ia32-msvc": "1.3.25", + "@swc/core-win32-x64-msvc": "1.3.25" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.25.tgz", + "integrity": "sha512-8PWAVcjTJyj2VrqPBFOIi2w2P0Z8kOCbzHW3+pe+bSXxfGMG0MKPl5U2IXhsEL0ovm4xSFlqW0yygpoP3MmRPw==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.25.tgz", + "integrity": "sha512-5DHGiMYFEj5aa208tCjo7Sn5tiG4xPz+4gUiWVlglxqXFptkNim5xu/1G6VYm5Zk7dI5jJkjTU76GQG7IRvPug==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.25.tgz", + "integrity": "sha512-YNfLxv9PhZk+jrJbpR1mMrYBUkufo0hiFv3S1OrX3l8edsIP4wPND5w9ZH0Oi898f6Jg9DBrY2zXJMQ+gWkbvA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.25.tgz", + "integrity": "sha512-kS+spM5/xQ6QvWF1ms3byfjnhUlpjTfFwgCyHnIKgjvsYkDa+vkAIhKq6HuEdaTPaCRCjts0Zarhub1nClUU0g==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.25.tgz", + "integrity": "sha512-vM3D7LWmjotUAJ2D4F+L+dspFeWrcPNVh0o8TCoTOYCt8DPD5YsUKTpIgOsZ+gReeWUAnNTh0Btx5pGGVfajGA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.25.tgz", + "integrity": "sha512-xUCLLMDlYa/zB8BftVa4SrxuVpcDxkltCfmBg5r2pZPVskhC5ZJsQZ/AvWNChoAB11shRhjTaWDlmxJEsa7TIg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.25.tgz", + "integrity": "sha512-QzHU3BIaUVRSFNsUn3Qxx1vgtF/f5NqsFMAAPSq9Y8Yq5nrlc2t7cNuOROxHLbUqE+NPUp6+RglleJMoeWz5mA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.25.tgz", + "integrity": "sha512-77VSVtneVOAUL4zkRyQZ6pWVpTsVVdqwly/DKnRnloglGKxYuk5DG5MUBsL72Nnfv4OCHjZ27eI3NUrpLsUb2Q==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.25.tgz", + "integrity": "sha512-kz0v3K3H6OPEZR3ry72Ad/6C5GrZBRRUk69K58LORQ8tZXQD3UGl85pUbQqyHl8fR5NU76Muxgovj9CI9iTHGA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.25", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.25.tgz", + "integrity": "sha512-nmQOAzIpNRRnupWzkenJmW4i+h1M76cVNUqEU2MjmtesEkRZEGqv//jefXiyCP2zcbeLNLKiB2ptVJhpd1BvRA==", + "dev": true, + "optional": true + }, + "@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true + }, + "@ts-morph/common": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", + "integrity": "sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "minimatch": "^5.1.0", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@tsconfig/svelte": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", + "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", + "dev": true + }, + "@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "code-block-writer": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", + "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", + "dev": true + }, + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "esbuild": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", + "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.16.16", + "@esbuild/android-arm64": "0.16.16", + "@esbuild/android-x64": "0.16.16", + "@esbuild/darwin-arm64": "0.16.16", + "@esbuild/darwin-x64": "0.16.16", + "@esbuild/freebsd-arm64": "0.16.16", + "@esbuild/freebsd-x64": "0.16.16", + "@esbuild/linux-arm": "0.16.16", + "@esbuild/linux-arm64": "0.16.16", + "@esbuild/linux-ia32": "0.16.16", + "@esbuild/linux-loong64": "0.16.16", + "@esbuild/linux-mips64el": "0.16.16", + "@esbuild/linux-ppc64": "0.16.16", + "@esbuild/linux-riscv64": "0.16.16", + "@esbuild/linux-s390x": "0.16.16", + "@esbuild/linux-x64": "0.16.16", + "@esbuild/netbsd-x64": "0.16.16", + "@esbuild/openbsd-x64": "0.16.16", + "@esbuild/sunos-x64": "0.16.16", + "@esbuild/win32-arm64": "0.16.16", + "@esbuild/win32-ia32": "0.16.16", + "@esbuild/win32-x64": "0.16.16" + } + }, + "esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "dev": true, + "optional": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "kolorist": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "punycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", + "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", + "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svelte": { + "version": "3.55.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", + "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", + "dev": true + }, + "svelte-check": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", + "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + } + }, + "svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-morph": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-16.0.0.tgz", + "integrity": "sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==", + "dev": true, + "requires": { + "@ts-morph/common": "~0.17.0", + "code-block-writer": "^11.0.3" + } + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "dev": true + }, + "vite": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", + "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "dev": true, + "requires": { + "esbuild": "^0.16.3", + "fsevents": "~2.3.2", + "postcss": "^8.4.20", + "resolve": "^1.22.1", + "rollup": "^3.7.0" + } + }, + "vite-plugin-dts": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-1.7.1.tgz", + "integrity": "sha512-2oGMnAjcrZN7jM1TloiS1b1mCn42s3El04ix2RFhId5P1WfMigF8WAwsqT6a6jk0Yso8t7AeZsBkkxYShR0hBQ==", + "dev": true, + "requires": { + "@microsoft/api-extractor": "^7.33.5", + "@rollup/pluginutils": "^5.0.2", + "@rushstack/node-core-library": "^3.53.2", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "kolorist": "^1.6.0", + "ts-morph": "^16.0.0" + } + }, + "vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "requires": { + "@swc/core": "^1.3.10" + } + }, + "vite-plugin-wasm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.1.tgz", + "integrity": "sha512-m1Y2QKWVNRXOfVyT6E/VcaL1yugq1nqGgFMRUIUS8S3rstFjdMxClyzG65casCQo7O9bGcUB3NU0n/RBgDMqGQ==", + "dev": true, + "requires": { + "vite": "^3" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "vite": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", + "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "dev": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + } + } + }, + "vitefu": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", + "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "dev": true, + "requires": {} + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "requires": { + "commander": "^9.4.1", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + } + } + } +} diff --git a/iron-remote-gui/package.json b/iron-remote-gui/package.json new file mode 100644 index 00000000..c1f76177 --- /dev/null +++ b/iron-remote-gui/package.json @@ -0,0 +1,32 @@ +{ + "name": "@devolutions/iron-remote-gui", + "author": "Nicolas Girot", + "email": "ngirot@devolutions.net", + "contributors": ["Benoit Cortier", "Zacharia Ellaham"], + "description": "Web Component providing agnostic implementation for Iron Wasm base client.", + "version": "0.1.0", + "type": "module", + "private": true, + "scripts": { + "dev": "npm run pre-build && vite", + "build": "npm run pre-build && vite build", + "build-alone": "vite build", + "pre-build": "node ./pre-build.js", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.json" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.0.0", + "@tauri-apps/api": "^1.2.0", + "@tsconfig/svelte": "^3.0.0", + "rxjs": "^6.6.7", + "svelte": "^3.54.0", + "svelte-check": "^2.10.0", + "tslib": "^2.4.1", + "typescript": "^4.9.3", + "vite": "^4.0.0", + "vite-plugin-dts": "^1.7.1", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + } +} diff --git a/iron-remote-gui/pre-build.js b/iron-remote-gui/pre-build.js new file mode 100644 index 00000000..46bd2b66 --- /dev/null +++ b/iron-remote-gui/pre-build.js @@ -0,0 +1,22 @@ +import {spawn} from "child_process"; + +let run = async function (command, cwd) { + return new Promise(resolve => { + const buildCommand = spawn(command, {stdio: "pipe", shell: true, cwd: cwd}); + + buildCommand.stdout.on('data', (data) => { + console.log(`${data}`); + }); + + buildCommand.stderr.on('data', (data) => { + console.error(`${data}`); + }); + + buildCommand.on('close', (code) => { + console.log(`child process exited with code ${code}`); + resolve(); + }); + }) +} + +await run('wasm-pack build --target web', '../ffi/wasm'); diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json new file mode 100644 index 00000000..9f95a4f8 --- /dev/null +++ b/iron-remote-gui/public/package.json @@ -0,0 +1,18 @@ +{ + "name": "@devolutions/iron-remote-gui", + "author": "Nicolas Girot", + "email": "ngirot@devolutions.net", + "contributors": [ + "Benoit Cortier", + "Zacharia Ellaham" + ], + "description": "Web Component providing agnostic implementation for Iron Wasm base client.", + "version": "0.1.0", + "main": "iron-remote-gui.umd.cjs", + "types": "main.d.ts", + "files": [ + "iron-remote-gui.umd.cjs", + "enums", + "services" + ] +} diff --git a/iron-remote-gui/public/test.html b/iron-remote-gui/public/test.html new file mode 100644 index 00000000..c5666638 --- /dev/null +++ b/iron-remote-gui/public/test.html @@ -0,0 +1,19 @@ + + + + + + Test + + + + + + + + \ No newline at end of file diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte new file mode 100644 index 00000000..4341a6b1 --- /dev/null +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -0,0 +1,316 @@ + + + + +
      +
      + setMouseButtonState(event, true)} + on:mouseup={(event) => setMouseButtonState(event, false)} + on:mouseleave={(event) => { + setMouseButtonState(event, false); + setMouseOut(); + } + } + on:mouseenter={(event) => { + setMouseIn(); + } + } + on:contextmenu={(event) => event.preventDefault()} + id="renderer" + /> +
      +
      + + diff --git a/iron-remote-gui/src/main.ts b/iron-remote-gui/src/main.ts new file mode 100644 index 00000000..bdfe35e2 --- /dev/null +++ b/iron-remote-gui/src/main.ts @@ -0,0 +1,4 @@ +import IronRemoteGui from './iron-remote-gui.svelte'; + +export * from './services/user-interaction-service'; +export type {NewSessionInfo, ResizeEvent, ServerRect, DesktopSize} from './services/server-bridge.service'; diff --git a/iron-remote-gui/src/services/logging.service.ts b/iron-remote-gui/src/services/logging.service.ts new file mode 100644 index 00000000..c89f884d --- /dev/null +++ b/iron-remote-gui/src/services/logging.service.ts @@ -0,0 +1,17 @@ +export class LoggingService { + verbose: boolean; + + info(description: string) { + if (this.verbose) { + console.log(description); + } + } + + error(description: string, object?: any) { + if (this.verbose) { + console.error(description, object); + } + } +} + +export let loggingService = new LoggingService(); \ No newline at end of file diff --git a/iron-remote-gui/src/services/server-bridge.service.ts b/iron-remote-gui/src/services/server-bridge.service.ts new file mode 100644 index 00000000..876ce827 --- /dev/null +++ b/iron-remote-gui/src/services/server-bridge.service.ts @@ -0,0 +1,58 @@ +import type {Observable} from "rxjs"; + +export interface ServerRect { + free(): void; + + clone_buffer(): Uint8Array; + + bottom: number; + left: number; + right: number; + top: number; +} + +export interface NewSessionInfo { + session_id: number, + websocket_port: number, + initial_desktop_size: DesktopSize, +} + +export interface DesktopSize { + width: number, + height: number +} + +export interface ResizeEvent { + session_id: number, + desktop_size: DesktopSize, +} + +export enum MouseButton { + LEFT = 0, + MIDDLE = 1, + RIGHT = 2, + BROWSER_BACK = 3, + BROWSER_FORWARD = 4 +} + +export enum MouseButtonState { + MOUSE_DOWN, + MOUSE_UP +} + +export abstract class ServerBridgeService { + abstract init(debug: boolean): void; + + abstract connect(username: string, password: string, address: string, authToken?: string): Observable; + + abstract resize: Observable; + + abstract updateImage: Observable; + + abstract mouseButtonState(mouse_button: MouseButton, state: MouseButtonState): void; + + abstract updateMousePosition(mouse_x: number, mouse_y: number): void; + + abstract sendKeyboard(evt: any): void; +} + diff --git a/iron-remote-gui/src/services/services-injector.ts b/iron-remote-gui/src/services/services-injector.ts new file mode 100644 index 00000000..93d5012c --- /dev/null +++ b/iron-remote-gui/src/services/services-injector.ts @@ -0,0 +1,19 @@ +import type {ServerBridgeService} from './server-bridge.service'; +import {loggingService} from "./logging.service"; + +export let serverBridge: ServerBridgeService; + +export async function initServerBridge(mode: 'native' | 'web' = 'web', debug: boolean) { + if (serverBridge === undefined || serverBridge === null) { + if (mode === 'native') { + loggingService.info('Initialize native bridge...'); + const module = await import("./tauri-bridge.service"); + serverBridge = new module.TauriBridgeService(); + } else { + loggingService.info('Initialize web bridge'); + const module = await import("./wasm-bridge.service"); + serverBridge = new module.WasmBridgeService(); + await serverBridge.init(debug); + } + } +} diff --git a/iron-remote-gui/src/services/tauri-bridge.service.ts b/iron-remote-gui/src/services/tauri-bridge.service.ts new file mode 100644 index 00000000..d4ee2fcb --- /dev/null +++ b/iron-remote-gui/src/services/tauri-bridge.service.ts @@ -0,0 +1,74 @@ +import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; +import {invoke} from "@tauri-apps/api"; +import {from, Observable, Subject} from "rxjs"; +import {listen} from "@tauri-apps/api/event"; +import {loggingService} from "./logging.service"; +import {tap} from "rxjs/operators"; +import type {MouseButton, MouseButtonState} from './server-bridge.service'; + +export class TauriBridgeService implements ServerBridgeService { + + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + private lastImageInformations = ''; + + resize: Observable; + updateImage: Observable; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + + this.initTauriListener(); + loggingService.info('Native bridge initialized.'); + } + + init(): void { + //Nothing to do + } + + connect(username: string, password: string, address: string): Observable { + return from(invoke("connect", {username, password, address}) as Promise).pipe( + tap((newSessionInfo: NewSessionInfo) => { + this.initSocket(newSessionInfo.websocket_port); + })); + } + + initSocket(port: any) { + const socket = new WebSocket(`ws://127.0.0.1:${port}`); + socket.addEventListener("message", this.onSocketMessage.bind(this)); + } + + updateMouse(mouseX: number, mouseY: number, clickState: number) { + const leftClick = clickState === 0; + invoke("update_mouse", {sessionId: 0, mouseX, mouseY, leftClick}); + } + + async onSocketMessage(event: any) { + if (typeof event.data === "string") { + this.lastImageInformations = event.data; + } else { + const obj = { + pixels: event.data.arrayBuffer(), + infos: JSON.parse(this.lastImageInformations) + } + this._updateImage.next(obj); + } + } + + private async initTauriListener() { + const unlisten1 = await listen("resize", (evt: any) => { + this._resize.next(evt.payload); + }) + } + + sendKeyboard(evt: any): void { + } + + mouseButtonState(mouse_button: MouseButton, state: MouseButtonState): void { + } + + updateMousePosition(mouse_x: number, mouse_y: number): void { + } +} diff --git a/iron-remote-gui/src/services/user-interaction-service.ts b/iron-remote-gui/src/services/user-interaction-service.ts new file mode 100644 index 00000000..e2990854 --- /dev/null +++ b/iron-remote-gui/src/services/user-interaction-service.ts @@ -0,0 +1,119 @@ +import {BehaviorSubject, Observable, Subject} from 'rxjs'; +import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; +import {MouseButton, MouseButtonState} from './server-bridge.service'; +import {loggingService} from "./logging.service"; + + +export interface MousePosition { + x: number; + y: number; +} + +export enum ScreenScale { + Fit = 1, + Full = 2, + Real = 3 +} + +export interface IRGUserInteraction { + setMousePosition(position: MousePosition); + + setMouseButtonState(event: MouseEvent, isDown: boolean); + + setVisibility(state: boolean); + + setScale(scale: ScreenScale); + + connect(username: string, password: string, host: string, authtoken: string): Observable; + + sessionListener: Observable; +} + +export class UserInteractionService { + private mousePosition: BehaviorSubject = new BehaviorSubject({ + x: 0, + y: 0 + }); + mousePositionObservable: Observable = this.mousePosition.asObservable(); + + private changeVisibility: Subject = new Subject(); + changeVisibilityObservable: Observable = this.changeVisibility.asObservable(); + + private sessionEvent: Subject = new Subject(); + sessionObserver: Observable = this.sessionEvent.asObservable(); + + private serverBridge: ServerBridgeService; + + private scale: BehaviorSubject = new BehaviorSubject(ScreenScale.Fit); + scaleObserver: Observable = this.scale.asObservable(); + + private canvas: HTMLCanvasElement; + + private keyboardActive: boolean; + + setServerBridge(serverBridge: ServerBridgeService) { + this.serverBridge = serverBridge; + } + + setCanvas(canvas: HTMLCanvasElement) { + this.canvas = canvas; + } + + connect(username: string, password: string, host: string, authtoken: string): Observable { + loggingService.info('Initializing connection.'); + return this.serverBridge.connect(username, password, host, authtoken); + } + + mouseIn() { + this.keyboardActive = true; + console.log("mouse in"); + } + + mouseOut() { + this.keyboardActive = false; + console.log("mouse out"); + } + + setMousePosition(position: MousePosition) { + if (!this.keyboardActive) { + this.keyboardActive = true; + } + this.serverBridge?.updateMousePosition(position.x, position.y); + this.mousePosition.next(position); + }; + + setMouseButtonState(event: MouseEvent, isDown: boolean) { + event.preventDefault(); // prevent default behavior (context menu, etc) + this.serverBridge?.mouseButtonState(event.button, isDown ? MouseButtonState.MOUSE_DOWN : MouseButtonState.MOUSE_UP); + } + + sendKeyboardEvent(evt: KeyboardEvent) { + if (this.keyboardActive) { + this.serverBridge.sendKeyboard(evt); + } + } + + setVisibility(state: boolean) { + loggingService.info(`Change component visibility to: ${state}`); + this.changeVisibility.next(state); + } + + setScale(scale: ScreenScale) { + this.scale.next(scale); + } + + raiseSessionEvent(event: any) { + this.sessionEvent.next(event); + } + + exposedFunctions: IRGUserInteraction = { + setMousePosition: this.setMousePosition.bind(this), + setMouseButtonState: this.setMouseButtonState.bind(this), + setVisibility: this.setVisibility.bind(this), + connect: this.connect.bind(this), + setScale: this.setScale.bind(this), + sessionListener: this.sessionObserver + } +} + +export let userInteractionService: UserInteractionService = new UserInteractionService(); diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/iron-remote-gui/src/services/wasm-bridge.service.ts new file mode 100644 index 00000000..6afe4753 --- /dev/null +++ b/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -0,0 +1,287 @@ +import type {NewSessionInfo, ResizeEvent, ServerBridgeService} from './server-bridge.service'; +import {MouseButton, MouseButtonState} from './server-bridge.service'; +import {from, Observable, of, Subject} from 'rxjs'; +import init, {DeviceEvent, InputTransaction, ironrdp_init, Session, SessionBuilder} from "../../../ffi/wasm/pkg/ironrdp"; +import {loggingService} from "./logging.service"; +import {catchError, filter, map} from "rxjs/operators"; +import {userInteractionService} from "./user-interaction-service"; + +const modifierKey = { + SHIFT: 16, + CTRL: 17, + ALT: 18, + META: 91 +}; +const modifierKeyArray = [modifierKey.ALT, modifierKey.CTRL, modifierKey.ALT, modifierKey.META]; + +export class WasmBridgeService implements ServerBridgeService { + private _resize: Subject = new Subject(); + private _updateImage: Subject = new Subject(); + + resize: Observable; + updateImage: Observable; + + session?: Session; + + constructor() { + this.resize = this._resize.asObservable(); + this.updateImage = this._updateImage.asObservable(); + loggingService.info('Web bridge initialized.'); + } + + async init(debug: boolean) { + loggingService.info('Loading wasm file.'); + await init(); + loggingService.info('Initializing IronRDP.'); + ironrdp_init(debug); + } + + mouseButtonState(mouse_button: MouseButton, state: MouseButtonState) { + const transaction = InputTransaction.new(); + let mouseFnc = state === MouseButtonState.MOUSE_DOWN ? DeviceEvent.new_mouse_button_pressed : DeviceEvent.new_mouse_button_released; + transaction.add_event(mouseFnc(mouse_button)); + this.session?.apply_inputs(transaction); + } + + updateMousePosition(mouse_x: number, mouse_y: number) { + const transaction = InputTransaction.new(); + transaction.add_event(DeviceEvent.new_mouse_move(mouse_x, mouse_y)); + this.session?.apply_inputs(transaction); + } + + sendKeyboard(evt: KeyboardEvent) { + let keyEvent; + + if (evt.type === 'keypress') { + keyEvent = DeviceEvent.new_key_pressed; + } else if (evt.type === 'keyup') { + keyEvent = DeviceEvent.new_key_released; + } + + if (keyEvent) { + const transaction = InputTransaction.new(); + + // NOTE: There is no keypress event for alt, ctrl, shift and meta keys, so we check manually. + // TODO: Support for right side + // TODO: Support for meta key (also called os key) + if (evt.altKey && evt.code !== "AltLeft") { + transaction.add_event(DeviceEvent.new_key_pressed(0x38)); + } + if (evt.ctrlKey && evt.code !== "ControlLeft") { + transaction.add_event(DeviceEvent.new_key_pressed(0x1D)); + } + if (evt.shiftKey && evt.code !== "ShiftLeft") { + transaction.add_event(DeviceEvent.new_key_pressed(0x2A)); + } + + // NOTE: We only receive a keyup event for Backspace + if (evt.code === "Backspace") { + transaction.add_event(DeviceEvent.new_key_pressed(0x0E)); + } + + const scancode = this.convertToScancode(evt.code); + transaction.add_event(keyEvent(scancode)); + + this.session?.apply_inputs(transaction); + } + } + + // Temporary workaround for scancode + convertToScancode(code: string): number { + // From: https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values + switch (code) { + case "Escape": + return 0x01; + case "Digit1": + return 0x02; + case "Digit2": + return 0x03; + case "Digit3": + return 0x04; + case "Digit4": + return 0x05; + case "Digit5": + return 0x06; + case "Digit6": + return 0x07; + case "Digit7": + return 0x08; + case "Digit8": + return 0x09; + case "Digit9": + return 0x0A; + case "Digit0": + return 0x0B; + case "Minus": + return 0x0C; + case "Equal": + return 0x0D; + case "Backspace": + return 0x0E; + case "Tab": + return 0x0F; + case "KeyQ": + return 0x10; + case "KeyW": + return 0x11; + case "KeyE": + return 0x12; + case "KeyR": + return 0x13; + case "KeyT": + return 0x14; + case "KeyY": + return 0x15; + case "KeyU": + return 0x16; + case "KeyI": + return 0x17; + case "KeyO": + return 0x18; + case "KeyP": + return 0x19; + case "BracketLeft": + return 0x1A; + case "BracketRight": + return 0x1B; + case "Enter": + return 0x1C; + case "ControlLeft": + return 0x1D; + case "KeyA": + return 0x1E; + case "KeyS": + return 0x1F; + case "KeyD": + return 0x20; + case "KeyF": + return 0x21; + case "KeyG": + return 0x22; + case "KeyH": + return 0x23; + case "KeyJ": + return 0x24; + case "KeyK": + return 0x25; + case "KeyL": + return 0x26; + case "Semicolon": + return 0x27; + case "Quote": + return 0x28; + case "Backquote": + return 0x29; + case "ShiftLeft": + return 0x2A; + case "Backslash": + return 0x2B; + case "KeyZ": + return 0x2C; + case "KeyX": + return 0x2D; + case "KeyC": + return 0x2E; + case "KeyV": + return 0x2F; + case "KeyB": + return 0x30; + case "KeyN": + return 0x31; + case "KeyM": + return 0x32; + case "Comma": + return 0x33; + case "Period": + return 0x34; + case "Slash": + return 0x35; + case "ShiftRight": + return 0x36; + case "NumpadMultiply": + return 0x37; + case "AltLeft": + return 0x38; + case "Space": + return 0x39; + case "CapsLock": + return 0x3A; + case "F1": + return 0x3B; + case "F2": + return 0x3C; + case "F3": + return 0x3D; + case "F4": + return 0x3E; + case "F5": + return 0x3F; + case "F6": + return 0x40; + case "F7": + return 0x41; + case "F8": + return 0x42; + case "F9": + return 0x43; + case "F10": + return 0x44; + case "Pause": + return 0x45; + case "ScrollLock": + return 0x46; + default: + return 0x00; + } + } + + updateImageCallback(metadata, buffer) { + this._updateImage.next({ + pixels: buffer, + infos: metadata + }); + } + + connect(username: string, password: string, address: string, authToken: string): Observable { + const sessionBuilder = SessionBuilder.new(); + sessionBuilder.address(address); + sessionBuilder.password(password); + sessionBuilder.auth_token(authToken); + sessionBuilder.username(username); + sessionBuilder.update_callback_context(this); + sessionBuilder.update_callback(this.updateImageCallback); + + return from(sessionBuilder.connect()).pipe( + catchError(err => { + loggingService.error("error:", err); + userInteractionService.raiseSessionEvent(err); + return of(err); + }), + filter(result => result instanceof Session), + map((session: Session) => { + from(session.run()).pipe( + catchError(err => { + userInteractionService.raiseSessionEvent(err); + return of(err); + }) + ).subscribe(() => { + userInteractionService.raiseSessionEvent("Session was terminated."); + }); + return session; + }), + map((session: Session) => { + loggingService.info('Session started.') + this.session = session; + this._resize.next({ + desktop_size: session.desktop_size(), + session_id: 0 + }); + return { + session_id: 0, + initial_desktop_size: session.desktop_size(), + websocket_port: 0 + } + }), + ); + } +} diff --git a/iron-remote-gui/src/vite-env.d.ts b/iron-remote-gui/src/vite-env.d.ts new file mode 100644 index 00000000..4078e747 --- /dev/null +++ b/iron-remote-gui/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/iron-remote-gui/svelte.config.js b/iron-remote-gui/svelte.config.js new file mode 100644 index 00000000..fb1bfdb4 --- /dev/null +++ b/iron-remote-gui/svelte.config.js @@ -0,0 +1,10 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + compilerOptions: { + customElement: true + }, + preprocess: vitePreprocess(), +} diff --git a/iron-remote-gui/tsconfig.json b/iron-remote-gui/tsconfig.json new file mode 100644 index 00000000..c4e1c5fe --- /dev/null +++ b/iron-remote-gui/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true + }, + "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/iron-remote-gui/tsconfig.node.json b/iron-remote-gui/tsconfig.node.json new file mode 100644 index 00000000..65dbdb96 --- /dev/null +++ b/iron-remote-gui/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node" + }, + "include": ["vite.config.ts"] +} diff --git a/iron-remote-gui/vite.config.ts b/iron-remote-gui/vite.config.ts new file mode 100644 index 00000000..186b9725 --- /dev/null +++ b/iron-remote-gui/vite.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' +import wasm from "vite-plugin-wasm"; +import topLevelAwait from "vite-plugin-top-level-await"; +import dtsPlugin from "vite-plugin-dts"; + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + lib: { + entry: './src/main.ts', + name: 'IronRemoteGui', + formats: ["umd", "es"], + } + }, + server: { + fs: { + strict: false + } + }, + plugins: [svelte(), wasm(), topLevelAwait(), dtsPlugin()], +}) diff --git a/iron-svelte-client/.gitignore b/iron-svelte-client/.gitignore index 6635cf55..39b0b1ab 100644 --- a/iron-svelte-client/.gitignore +++ b/iron-svelte-client/.gitignore @@ -8,3 +8,4 @@ node_modules !.env.example vite.config.js.timestamp-* vite.config.ts.timestamp-* +/static/iron-remote-gui diff --git a/iron-svelte-client/package-lock.json b/iron-svelte-client/package-lock.json index 303c1892..8f349145 100644 --- a/iron-svelte-client/package-lock.json +++ b/iron-svelte-client/package-lock.json @@ -1,5731 +1,5816 @@ { - "name": "iron-svelte-client", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "iron-svelte-client", - "version": "0.0.1", - "devDependencies": { - "@material-design-icons/font": "^0.14.2", - "@rollup/plugin-replace": "^5.0.1", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-static": "^1.0.0-next.48", - "@sveltejs/kit": "next", - "@tauri-apps/api": "^1.2.0", - "@typescript-eslint/eslint-plugin": "^5.27.0", - "@typescript-eslint/parser": "^5.27.0", - "beercss": "^2.3.0", - "cross-env": "7.0.3", - "eslint": "^8.16.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-svelte3": "^4.0.0", - "guid-typescript": "^1.0.9", - "prettier": "^2.6.2", - "prettier-plugin-svelte": "^2.7.0", - "rxjs": "^7.5.7", - "svelte": "^3.44.0", - "svelte-check": "^2.7.1", - "svelte-preprocess": "^4.10.6", - "tslib": "^2.3.1", - "typescript": "^4.7.4", - "vite": "^3.1.0", - "vite-plugin-top-level-await": "^1.2.2", - "vite-plugin-wasm": "^3.1.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@material-design-icons/font": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", - "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "node_modules/@rollup/plugin-replace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", - "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.26.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0-next.89", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", - "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", - "dev": true, - "dependencies": { - "import-meta-resolve": "^2.1.0" - } - }, - "node_modules/@sveltejs/adapter-static": { - "version": "1.0.0-next.48", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", - "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", - "dev": true - }, - "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.561", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", - "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.3.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.2.0", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.5.1", - "sirv": "^2.0.2", - "tiny-glob": "^0.2.9", - "undici": "5.12.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "svelte": "^3.44.0", - "vite": "^3.2.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", - "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.2" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "diff-match-patch": "^1.0.5", - "svelte": "^3.44.0", - "vite": "^3.0.0" - }, - "peerDependenciesMeta": { - "diff-match-patch": { - "optional": true - } - } - }, - "node_modules/@swc/core": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", - "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", - "dev": true, - "hasInstallScript": true, - "bin": { - "swcx": "run_swcx.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.20", - "@swc/core-darwin-x64": "1.3.20", - "@swc/core-linux-arm-gnueabihf": "1.3.20", - "@swc/core-linux-arm64-gnu": "1.3.20", - "@swc/core-linux-arm64-musl": "1.3.20", - "@swc/core-linux-x64-gnu": "1.3.20", - "@swc/core-linux-x64-musl": "1.3.20", - "@swc/core-win32-arm64-msvc": "1.3.20", - "@swc/core-win32-ia32-msvc": "1.3.20", - "@swc/core-win32-x64-msvc": "1.3.20" - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", - "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", - "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", - "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", - "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", - "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", - "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", - "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", - "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", - "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", - "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", - "dev": true, - "engines": { - "node": ">= 14.6.0", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "node_modules/@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", - "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", - "dev": true, - "dependencies": { - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/reactivity-transform/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", - "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", - "dev": true, - "dependencies": { - "@vue/reactivity": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", - "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", - "dev": true, - "dependencies": { - "@vue/runtime-core": "3.2.45", - "@vue/shared": "3.2.45", - "csstype": "^2.6.8" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", - "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.2.45", - "@vue/shared": "3.2.45" - }, - "peerDependencies": { - "vue": "3.2.45" - } - }, - "node_modules/@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/beercss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", - "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", - "dev": true, - "dependencies": { - "material-dynamic-colors": "^0.0.10", - "sass": "^1.49.9", - "uuid": "^8.3.2", - "vue": "^3.2.31" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-svelte3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", - "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", - "dev": true, - "peerDependencies": { - "eslint": ">=8.0.0", - "svelte": "^3.2.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-meta-resolve": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", - "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/material-dynamic-colors": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", - "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-svelte": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", - "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", - "dev": true, - "peerDependencies": { - "prettier": "^1.16.4 || ^2.0.0", - "svelte": "^3.2.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "node_modules/sander/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - }, - "bin": { - "sorcery": "bin/index.js" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svelte": { - "version": "3.53.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", - "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-check": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", - "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "peerDependencies": { - "svelte": "^3.24.0" - } - }, - "node_modules/svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": ">=3.19.0" - } - }, - "node_modules/svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 9.11.2" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0", - "svelte": "^3.23.0", - "typescript": "^3.9.5 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-preprocess/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undici": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", - "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", - "dev": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=12.18" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", - "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", - "dev": true, - "dependencies": { - "@swc/core": "^1.3.10" - }, - "peerDependencies": { - "vite": ">=2.8" - } - }, - "node_modules/vite-plugin-wasm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", - "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", - "dev": true, - "dependencies": { - "vite": "^3" - } - }, - "node_modules/vitefu": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", - "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", - "dev": true, - "peerDependencies": { - "vite": "^3.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", - "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-sfc": "3.2.45", - "@vue/runtime-dom": "3.2.45", - "@vue/server-renderer": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@material-design-icons/font": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", - "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "@rollup/plugin-replace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", - "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.26.4" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@sveltejs/adapter-auto": { - "version": "1.0.0-next.89", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", - "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", - "dev": true, - "requires": { - "import-meta-resolve": "^2.1.0" - } - }, - "@sveltejs/adapter-static": { - "version": "1.0.0-next.48", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", - "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", - "dev": true - }, - "@sveltejs/kit": { - "version": "1.0.0-next.561", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", - "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", - "dev": true, - "requires": { - "@sveltejs/vite-plugin-svelte": "^1.3.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.2.0", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.5.1", - "sirv": "^2.0.2", - "tiny-glob": "^0.2.9", - "undici": "5.12.0" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", - "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.2" - } - }, - "@swc/core": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", - "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", - "dev": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.20", - "@swc/core-darwin-x64": "1.3.20", - "@swc/core-linux-arm-gnueabihf": "1.3.20", - "@swc/core-linux-arm64-gnu": "1.3.20", - "@swc/core-linux-arm64-musl": "1.3.20", - "@swc/core-linux-x64-gnu": "1.3.20", - "@swc/core-linux-x64-musl": "1.3.20", - "@swc/core-win32-arm64-msvc": "1.3.20", - "@swc/core-win32-ia32-msvc": "1.3.20", - "@swc/core-win32-x64-msvc": "1.3.20" - } - }, - "@swc/core-darwin-arm64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", - "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", - "dev": true, - "optional": true - }, - "@swc/core-darwin-x64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", - "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", - "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", - "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", - "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", - "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", - "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", - "dev": true, - "optional": true - }, - "@swc/core-win32-arm64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", - "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", - "dev": true, - "optional": true - }, - "@swc/core-win32-ia32-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", - "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", - "dev": true, - "optional": true - }, - "@swc/core-win32-x64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", - "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", - "dev": true, - "optional": true - }, - "@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", - "dev": true - }, - "@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", - "dev": true - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", - "dev": true, - "requires": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/reactivity": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", - "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", - "dev": true, - "requires": { - "@vue/shared": "3.2.45" - } - }, - "@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "@vue/runtime-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", - "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", - "dev": true, - "requires": { - "@vue/reactivity": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/runtime-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", - "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", - "dev": true, - "requires": { - "@vue/runtime-core": "3.2.45", - "@vue/shared": "3.2.45", - "csstype": "^2.6.8" - } - }, - "@vue/server-renderer": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", - "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", - "dev": true, - "requires": { - "@vue/compiler-ssr": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", - "dev": true - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "beercss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", - "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", - "dev": true, - "requires": { - "material-dynamic-colors": "^0.0.10", - "sass": "^1.49.9", - "uuid": "^8.3.2", - "vue": "^3.2.31" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" - } - }, - "esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-plugin-svelte3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", - "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-meta-resolve": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", - "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "material-dynamic-colors": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", - "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true - }, - "prettier-plugin-svelte": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", - "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", - "dev": true, - "requires": {} - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "requires": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svelte": { - "version": "3.53.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", - "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", - "dev": true - }, - "svelte-check": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", - "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - } - }, - "svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", - "dev": true, - "requires": {} - }, - "svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true - }, - "undici": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", - "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", - "dev": true, - "requires": { - "busboy": "^1.6.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "vite": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", - "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - }, - "vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", - "dev": true, - "requires": { - "@swc/core": "^1.3.10" - } - }, - "vite-plugin-wasm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", - "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", - "dev": true, - "requires": { - "vite": "^3" - } - }, - "vitefu": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", - "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", - "dev": true, - "requires": {} - }, - "vue": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", - "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-sfc": "3.2.45", - "@vue/runtime-dom": "3.2.45", - "@vue/server-renderer": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } + "name": "iron-svelte-client", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "iron-svelte-client", + "version": "0.0.1", + "devDependencies": { + "@material-design-icons/font": "^0.14.2", + "@rollup/plugin-replace": "^5.0.1", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.48", + "@sveltejs/kit": "next", + "@tauri-apps/api": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "beercss": "^2.3.0", + "cross-env": "7.0.3", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^4.0.0", + "fs-extra": "^11.1.0", + "guid-typescript": "^1.0.9", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "rxjs": "^6.6.7", + "svelte": "^3.44.0", + "svelte-check": "^2.7.1", + "svelte-preprocess": "^4.10.6", + "tslib": "^2.3.1", + "typescript": "^4.7.4", + "vite": "^3.1.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + } + }, + "../iron-remote-gui/dist": { + "name": "@devolutions/iron-remote-gui", + "version": "0.1.0", + "extraneous": true + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", + "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", + "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@material-design-icons/font": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", + "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "1.0.0-next.89", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", + "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^2.1.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.48", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", + "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", + "dev": true + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.561", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", + "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.3.1", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^4.2.0", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "mime": "^3.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.5.1", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "5.12.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "svelte": "^3.44.0", + "vite": "^3.2.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", + "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.2" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@swc/core": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", + "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", + "dev": true, + "hasInstallScript": true, + "bin": { + "swcx": "run_swcx.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.20", + "@swc/core-darwin-x64": "1.3.20", + "@swc/core-linux-arm-gnueabihf": "1.3.20", + "@swc/core-linux-arm64-gnu": "1.3.20", + "@swc/core-linux-arm64-musl": "1.3.20", + "@swc/core-linux-x64-gnu": "1.3.20", + "@swc/core-linux-x64-musl": "1.3.20", + "@swc/core-win32-arm64-msvc": "1.3.20", + "@swc/core-win32-ia32-msvc": "1.3.20", + "@swc/core-win32-x64-msvc": "1.3.20" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", + "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", + "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", + "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", + "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", + "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", + "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", + "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", + "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", + "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", + "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true, + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "node_modules/@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + }, + "peerDependencies": { + "vue": "3.2.45" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/beercss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", + "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", + "dev": true, + "dependencies": { + "material-dynamic-colors": "^0.0.10", + "sass": "^1.49.9", + "uuid": "^8.3.2", + "vue": "^3.2.31" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", + "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", + "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.15", + "@esbuild/linux-loong64": "0.15.15", + "esbuild-android-64": "0.15.15", + "esbuild-android-arm64": "0.15.15", + "esbuild-darwin-64": "0.15.15", + "esbuild-darwin-arm64": "0.15.15", + "esbuild-freebsd-64": "0.15.15", + "esbuild-freebsd-arm64": "0.15.15", + "esbuild-linux-32": "0.15.15", + "esbuild-linux-64": "0.15.15", + "esbuild-linux-arm": "0.15.15", + "esbuild-linux-arm64": "0.15.15", + "esbuild-linux-mips64le": "0.15.15", + "esbuild-linux-ppc64le": "0.15.15", + "esbuild-linux-riscv64": "0.15.15", + "esbuild-linux-s390x": "0.15.15", + "esbuild-netbsd-64": "0.15.15", + "esbuild-openbsd-64": "0.15.15", + "esbuild-sunos-64": "0.15.15", + "esbuild-windows-32": "0.15.15", + "esbuild-windows-64": "0.15.15", + "esbuild-windows-arm64": "0.15.15" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", + "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", + "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", + "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", + "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", + "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", + "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", + "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", + "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", + "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", + "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", + "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", + "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", + "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", + "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", + "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", + "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", + "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", + "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", + "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", + "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", + "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", + "dev": true, + "peerDependencies": { + "eslint": ">=8.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", + "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/material-dynamic-colors": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", + "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", + "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", + "dev": true, + "peerDependencies": { + "prettier": "^1.16.4 || ^2.0.0", + "svelte": "^3.2.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + }, + "bin": { + "sorcery": "bin/index.js" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-check": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.24.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 9.11.2" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0", + "svelte": "^3.23.0", + "typescript": "^3.9.5 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-preprocess/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.10" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", + "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", + "dev": true, + "dependencies": { + "vite": "^3" + } + }, + "node_modules/vitefu": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", + "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", + "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", + "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@material-design-icons/font": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", + "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@sveltejs/adapter-auto": { + "version": "1.0.0-next.89", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", + "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", + "dev": true, + "requires": { + "import-meta-resolve": "^2.1.0" + } + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.48", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", + "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", + "dev": true + }, + "@sveltejs/kit": { + "version": "1.0.0-next.561", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", + "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.3.1", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^4.2.0", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "mime": "^3.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.5.1", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "5.12.0" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", + "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.7", + "svelte-hmr": "^0.15.1", + "vitefu": "^0.2.2" + } + }, + "@swc/core": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", + "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.20", + "@swc/core-darwin-x64": "1.3.20", + "@swc/core-linux-arm-gnueabihf": "1.3.20", + "@swc/core-linux-arm64-gnu": "1.3.20", + "@swc/core-linux-arm64-musl": "1.3.20", + "@swc/core-linux-x64-gnu": "1.3.20", + "@swc/core-linux-x64-musl": "1.3.20", + "@swc/core-win32-arm64-msvc": "1.3.20", + "@swc/core-win32-ia32-msvc": "1.3.20", + "@swc/core-win32-x64-msvc": "1.3.20" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", + "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", + "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", + "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", + "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", + "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", + "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", + "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", + "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", + "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", + "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", + "dev": true, + "optional": true + }, + "@tauri-apps/api": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", + "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", + "dev": true + }, + "@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true + }, + "@types/pug": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", + "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "dev": true + }, + "@types/sass": { + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", + "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", + "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/type-utils": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", + "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", + "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", + "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/utils": "5.44.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", + "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", + "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/visitor-keys": "5.44.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", + "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.44.0", + "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/typescript-estree": "5.44.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", + "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.44.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dev": true, + "requires": { + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dev": true, + "requires": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "dev": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "beercss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", + "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", + "dev": true, + "requires": { + "material-dynamic-colors": "^0.0.10", + "sass": "^1.49.9", + "uuid": "^8.3.2", + "vue": "^3.2.31" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "devalue": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", + "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "esbuild": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", + "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.15", + "@esbuild/linux-loong64": "0.15.15", + "esbuild-android-64": "0.15.15", + "esbuild-android-arm64": "0.15.15", + "esbuild-darwin-64": "0.15.15", + "esbuild-darwin-arm64": "0.15.15", + "esbuild-freebsd-64": "0.15.15", + "esbuild-freebsd-arm64": "0.15.15", + "esbuild-linux-32": "0.15.15", + "esbuild-linux-64": "0.15.15", + "esbuild-linux-arm": "0.15.15", + "esbuild-linux-arm64": "0.15.15", + "esbuild-linux-mips64le": "0.15.15", + "esbuild-linux-ppc64le": "0.15.15", + "esbuild-linux-riscv64": "0.15.15", + "esbuild-linux-s390x": "0.15.15", + "esbuild-netbsd-64": "0.15.15", + "esbuild-openbsd-64": "0.15.15", + "esbuild-sunos-64": "0.15.15", + "esbuild-windows-32": "0.15.15", + "esbuild-windows-64": "0.15.15", + "esbuild-windows-arm64": "0.15.15" + } + }, + "esbuild-android-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", + "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", + "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", + "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", + "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", + "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", + "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", + "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", + "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", + "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", + "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", + "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", + "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", + "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", + "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", + "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", + "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", + "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", + "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", + "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", + "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-svelte3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", + "integrity": "sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "guid-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", + "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-meta-resolve": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", + "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "material-dynamic-colors": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", + "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true + }, + "prettier-plugin-svelte": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.8.1.tgz", + "integrity": "sha512-KA3K1J3/wKDnCxW7ZDRA/QL2Q67N7Xs3gOERqJ5X1qFjq1DdnN3K1R29scSKwh+kA8FF67pXbYytUpvN/i3iQw==", + "dev": true, + "requires": {} + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "requires": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "sass": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0", + "sourcemap-codec": "^1.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svelte": { + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", + "dev": true + }, + "svelte-check": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", + "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.9", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^4.0.0", + "typescript": "*" + } + }, + "svelte-hmr": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", + "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "dev": true, + "requires": {} + }, + "svelte-preprocess": { + "version": "4.10.7", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", + "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", + "dev": true, + "requires": { + "@types/pug": "^2.0.4", + "@types/sass": "^1.16.0", + "detect-indent": "^6.0.0", + "magic-string": "^0.25.7", + "sorcery": "^0.10.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true + }, + "undici": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vite": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", + "dev": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + }, + "vite-plugin-top-level-await": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", + "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "dev": true, + "requires": { + "@swc/core": "^1.3.10" + } + }, + "vite-plugin-wasm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", + "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", + "dev": true, + "requires": { + "vite": "^3" + } + }, + "vitefu": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", + "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", + "dev": true, + "requires": {} + }, + "vue": { + "version": "3.2.45", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } } diff --git a/iron-svelte-client/package.json b/iron-svelte-client/package.json index 16d76f21..4a50ae0f 100644 --- a/iron-svelte-client/package.json +++ b/iron-svelte-client/package.json @@ -1,44 +1,49 @@ { - "name": "iron-svelte-client", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "dev-tauri": "cross-env MODE=tauri npm run dev", - "build": "vite build", - "build-tauri": "cross-env MODE=tauri npm run build", - "preview": "vite preview", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "devDependencies": { - "@material-design-icons/font": "^0.14.2", - "@rollup/plugin-replace": "^5.0.1", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-static": "^1.0.0-next.48", - "@sveltejs/kit": "next", - "@tauri-apps/api": "^1.2.0", - "@typescript-eslint/eslint-plugin": "^5.27.0", - "@typescript-eslint/parser": "^5.27.0", - "beercss": "^2.3.0", - "cross-env": "7.0.3", - "eslint": "^8.16.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-svelte3": "^4.0.0", - "guid-typescript": "^1.0.9", - "prettier": "^2.6.2", - "prettier-plugin-svelte": "^2.7.0", - "rxjs": "^7.5.7", - "svelte": "^3.44.0", - "svelte-check": "^2.7.1", - "svelte-preprocess": "^4.10.6", - "tslib": "^2.3.1", - "typescript": "^4.7.4", - "vite": "^3.1.0", - "vite-plugin-top-level-await": "^1.2.2", - "vite-plugin-wasm": "^3.1.0" - }, - "type": "module" -} \ No newline at end of file + "name": "iron-svelte-client", + "version": "0.0.1", + "private": true, + "scripts": { + "pre-build": "node ./pre-build.js", + "pre-build-no-wasm": "node ./pre-build.js no-wasm", + "dev": "vite dev", + "dev-all": "npm run pre-build && vite dev", + "dev-no-wasm": "npm run pre-build-no-wasm && vite dev", + "dev-tauri": "npm run pre-build && cross-env MODE=tauri npm run dev", + "build": "npm run pre-build && vite build", + "build-tauri": "npm run pre-build && cross-env MODE=tauri npm run build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@material-design-icons/font": "^0.14.2", + "@rollup/plugin-replace": "^5.0.1", + "@sveltejs/adapter-auto": "next", + "@sveltejs/adapter-static": "^1.0.0-next.48", + "@sveltejs/kit": "next", + "@tauri-apps/api": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "beercss": "^2.3.0", + "cross-env": "7.0.3", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-svelte3": "^4.0.0", + "fs-extra": "^11.1.0", + "guid-typescript": "^1.0.9", + "prettier": "^2.6.2", + "prettier-plugin-svelte": "^2.7.0", + "rxjs": "^6.6.7", + "svelte": "^3.44.0", + "svelte-check": "^2.7.1", + "svelte-preprocess": "^4.10.6", + "tslib": "^2.3.1", + "typescript": "^4.7.4", + "vite": "^3.1.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + }, + "type": "module" +} diff --git a/iron-svelte-client/pre-build.js b/iron-svelte-client/pre-build.js new file mode 100644 index 00000000..e2c4f656 --- /dev/null +++ b/iron-svelte-client/pre-build.js @@ -0,0 +1,61 @@ +import * as fs from 'fs-extra'; +import {spawn} from 'child_process'; +import * as path from 'path'; +import {fileURLToPath} from 'url'; +import { argv } from 'node:process'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +let noWasm = false; + +let assetIronRemoteGuiFolder = './static/iron-remote-gui'; + +argv.forEach((val, index) => { + if (index === 2 && val === 'no-wasm') { + noWasm = true; + } +}); + +let run = async function (command, cwd) { + return new Promise(resolve => { + const buildCommand = spawn(command, {stdio: "pipe", shell: true, cwd: cwd}); + + buildCommand.stdout.on('data', (data) => { + console.log(`${data}`); + }); + + buildCommand.stderr.on('data', (data) => { + console.error(`${data}`); + }); + + buildCommand.on('close', (code) => { + console.log(`child process exited with code ${code}`); + resolve(); + }); + }) +} +let copyCoreFiles = async function () { + await fs.remove(assetIronRemoteGuiFolder); + return new Promise(resolve => { + let source = '../iron-remote-gui/dist'; + let destination = assetIronRemoteGuiFolder; + + fs.copy(source, destination, function (err) { + if (err) { + console.log('An error occured while copying folder.'); + return console.error(err); + } + console.log('Core files was copied successfully'); + resolve(); + }); + }) +} + +let buildCommand = 'npm run build'; +if (noWasm) { + buildCommand = 'npm run build-alone'; +} + +await run(buildCommand, '../iron-remote-gui'); +await copyCoreFiles(); diff --git a/iron-svelte-client/src/app.html b/iron-svelte-client/src/app.html index c6fdc597..be13e048 100644 --- a/iron-svelte-client/src/app.html +++ b/iron-svelte-client/src/app.html @@ -1,5 +1,5 @@ - + @@ -9,10 +9,11 @@ + %sveltekit.head% - +
      %sveltekit.body%
      diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte index 9cac4e06..228906b4 100644 --- a/iron-svelte-client/src/lib/login/login.svelte +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -1,77 +1,116 @@ -
      -
      -
      -
      -
      -
      -
      Login
      -
      -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - -
      -
      -
      -
      +
      +
      +
      +
      +
      +
      Login
      +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + +
      +
      +
      +
      - info - {toastMessage} + info + {toastMessage} +
      + +
      + Error + {toastMessage}
      diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index edafe839..d08d7392 100644 --- a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -1,95 +1,25 @@ - -
      -
      - setMouseState(1)} - on:mouseup={() => setMouseState(0)} - on:mouseleave={() => setMouseState(0)} - id="renderer" - /> -
      -
      - - +
      +
      + + + +
      + +
      \ No newline at end of file diff --git a/iron-svelte-client/src/routes/session/+page.svelte b/iron-svelte-client/src/routes/session/+page.svelte index 7b313344..4cd5f2dd 100644 --- a/iron-svelte-client/src/routes/session/+page.svelte +++ b/iron-svelte-client/src/routes/session/+page.svelte @@ -1,10 +1,15 @@ -{#if !$currentSession?.active} - -{:else} + {#if showLogin} + + {/if} -{/if} diff --git a/iron-svelte-client/src/services/session.service.ts b/iron-svelte-client/src/services/session.service.ts index 5da921b6..010cd34a 100644 --- a/iron-svelte-client/src/services/session.service.ts +++ b/iron-svelte-client/src/services/session.service.ts @@ -1,7 +1,10 @@ -import type { Guid } from "guid-typescript"; -import { writable } from "svelte/store"; -import { Session } from "../models/session"; +import type {Guid} from "guid-typescript"; +import type {Writable} from "svelte/store"; +import {writable} from "svelte/store"; +import {Session} from "../models/session"; +import type {IRGUserInteraction} from '../../static/iron-remote-gui'; +export const userInteractionService: Writable = writable(); export const currentSession = writable(new Session('New Session')); let sessions: Session[] = new Array(); let sessionCounter = 0; diff --git a/iron-web-client/.browserslistrc b/iron-web-client/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/iron-web-client/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/iron-web-client/.editorconfig b/iron-web-client/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/iron-web-client/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/iron-web-client/.gitignore b/iron-web-client/.gitignore deleted file mode 100644 index 0711527e..00000000 --- a/iron-web-client/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# Compiled output -/dist -/tmp -/out-tsc -/bazel-out - -# Node -/node_modules -npm-debug.log -yarn-error.log - -# IDEs and editors -.idea/ -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# Visual Studio Code -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# Miscellaneous -/.angular/cache -.sass-cache/ -/connect.lock -/coverage -/libpeerconnection.log -testem.log -/typings - -# System files -.DS_Store -Thumbs.db diff --git a/iron-web-client/.vscode/extensions.json b/iron-web-client/.vscode/extensions.json deleted file mode 100644 index 77b37457..00000000 --- a/iron-web-client/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 - "recommendations": ["angular.ng-template"] -} diff --git a/iron-web-client/.vscode/launch.json b/iron-web-client/.vscode/launch.json deleted file mode 100644 index 740e35a0..00000000 --- a/iron-web-client/.vscode/launch.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "ng serve", - "type": "pwa-chrome", - "request": "launch", - "preLaunchTask": "npm: start", - "url": "http://localhost:4200/" - }, - { - "name": "ng test", - "type": "chrome", - "request": "launch", - "preLaunchTask": "npm: test", - "url": "http://localhost:9876/debug.html" - } - ] -} diff --git a/iron-web-client/.vscode/tasks.json b/iron-web-client/.vscode/tasks.json deleted file mode 100644 index a298b5bd..00000000 --- a/iron-web-client/.vscode/tasks.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558 - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "start", - "isBackground": true, - "problemMatcher": { - "owner": "typescript", - "pattern": "$tsc", - "background": { - "activeOnStart": true, - "beginsPattern": { - "regexp": "(.*?)" - }, - "endsPattern": { - "regexp": "bundle generation complete" - } - } - } - }, - { - "type": "npm", - "script": "test", - "isBackground": true, - "problemMatcher": { - "owner": "typescript", - "pattern": "$tsc", - "background": { - "activeOnStart": true, - "beginsPattern": { - "regexp": "(.*?)" - }, - "endsPattern": { - "regexp": "bundle generation complete" - } - } - } - } - ] -} diff --git a/iron-web-client/README.md b/iron-web-client/README.md deleted file mode 100644 index 4eaa2167..00000000 --- a/iron-web-client/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# IronWebClient - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.8. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/iron-web-client/angular.json b/iron-web-client/angular.json deleted file mode 100644 index 1eb0129b..00000000 --- a/iron-web-client/angular.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "iron-web-client": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/iron-web-client", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/normalize.css/normalize.css", - "./node_modules/@angular/material/prebuilt-themes/purple-green.css", - "./node_modules/@devolutions/icons/scss/devolutions-icons.scss", - "src/styles.scss" - ], - "scripts": [] - }, - "configurations": { - "tauri-dev": { - "outputPath": "dist/iron-tauri-client", - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment-tauri.prod.ts" - }, - { - "replace": "src/assets/pkg/ironrdp.js", - "with": "src/assets/ironrdp-fake.js" - } - ], - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - }, - "tauri-prod": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "outputPath": "dist/iron-tauri-client", - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment-tauri.prod.ts" - }, - { - "replace": "src/assets/pkg/ironrdp.js", - "with": "src/assets/ironrdp-fake.js" - } - ], - "outputHashing": "all" - }, - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "iron-web-client:build:production" - }, - "development": { - "browserTarget": "iron-web-client:build:development" - }, - "tauri-dev": { - "browserTarget": "iron-web-client:build:tauri-dev" - }, - "tauri-prod": { - "browserTarget": "iron-web-client:build:tauri-prod" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "iron-web-client:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/purple-green.css", - "src/styles.scss" - ], - "scripts": [] - } - } - } - } - }, - "cli": { - "analytics": false - } -} diff --git a/iron-web-client/karma.conf.js b/iron-web-client/karma.conf.js deleted file mode 100644 index 457a2914..00000000 --- a/iron-web-client/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/iron-web-client'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/iron-web-client/package-lock.json b/iron-web-client/package-lock.json deleted file mode 100644 index dbaa7b6c..00000000 --- a/iron-web-client/package-lock.json +++ /dev/null @@ -1,20422 +0,0 @@ -{ - "name": "iron-web-client", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "iron-web-client", - "version": "0.0.0", - "dependencies": { - "@angular/animations": "^14.2.0", - "@angular/cdk": "^14.2.6", - "@angular/common": "^14.2.0", - "@angular/compiler": "^14.2.0", - "@angular/core": "^14.2.0", - "@angular/forms": "^14.2.0", - "@angular/material": "^14.2.6", - "@angular/platform-browser": "^14.2.0", - "@angular/platform-browser-dynamic": "^14.2.0", - "@angular/router": "^14.2.0", - "@devolutions/icons": "^3.3.2", - "@tauri-apps/api": "^1.2.0", - "guid-typescript": "^1.0.9", - "normalize.css": "^8.0.1", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.2.8", - "@angular/cli": "~14.2.8", - "@angular/compiler-cli": "^14.2.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.3.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.0.0", - "typescript": "~4.7.2" - } - }, - "node_modules/@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", - "dev": true - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/architect": { - "version": "0.1402.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.9.tgz", - "integrity": "sha512-I0KTpmtukxq447CkdzKonFpIytRnvC77WuwnX4Sef32EM9KqmeNvfy/gZwm08Lqi4mOAC/iTCajXH1TN/4xllA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.2.9", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/architect/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.9.tgz", - "integrity": "sha512-/6ul4JLpiKLB4+PJzDF7twgZf28GNHxxJKsheymrxC+ZRMGoMsJCzoU/dmOXE2YY8yGxAFnrTAVIJYomn+QnZQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.9", - "@angular-devkit/build-webpack": "0.1402.9", - "@angular-devkit/core": "14.2.9", - "@babel/core": "7.18.10", - "@babel/generator": "7.18.12", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.10", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.10", - "@babel/preset-env": "7.18.10", - "@babel/runtime": "7.18.9", - "@babel/template": "7.18.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.9", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.2", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild-wasm": "0.15.5", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.0.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.6.1", - "minimatch": "5.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.16", - "postcss-import": "15.0.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.8.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.54.4", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.59.0", - "stylus-loader": "7.0.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.4.0", - "webpack": "5.74.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.11.0", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "optionalDependencies": { - "esbuild": "0.15.5" - }, - "peerDependencies": { - "@angular/compiler-cli": "^14.0.0", - "@angular/localize": "^14.0.0", - "@angular/service-worker": "^14.0.0", - "karma": "^6.3.0", - "ng-packagr": "^14.0.0", - "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.6.2 <4.9" - }, - "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "karma": { - "optional": true - }, - "ng-packagr": { - "optional": true - }, - "protractor": { - "optional": true - }, - "tailwindcss": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.9.tgz", - "integrity": "sha512-J+bseVpEqHAfxvTKYNoo6B+5TmnkQmEn9aNMEiQ+hv8pQyuW3DCWZ6jOQrfCpJzCYMBdrQALfaRpsQuB92UPVw==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1402.9", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular-devkit/core": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.9.tgz", - "integrity": "sha512-+e2OmzH/0gjNNH96xJDgshbuIM/NPSwE0NQlgU/KRb8TZt+7ooTmZJ1vk25HKV2YS99BEYzUSqvVAaJtxX/6Qw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular-devkit/schematics": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.9.tgz", - "integrity": "sha512-E7muTIbDqysjQld5r9AGXiW8vKHadkHaGe+0QONpmr8TMAtTMqBFxBXRG9vajiUzt/GcFL9dbGGEwM/1dc7VPQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.2.9", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@angular/animations": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.10.tgz", - "integrity": "sha512-t3ntvZvEI3lFrsJOC2qcF4ZCD04rVXWt8769YfearACBMsAXF0OAsLFcFHSDxcJelLGvQlXtBhjhe4IFAnQiZw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.10" - } - }, - "node_modules/@angular/cdk": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", - "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^5.0.0" - }, - "peerDependencies": { - "@angular/common": "^14.0.0 || ^15.0.0", - "@angular/core": "^14.0.0 || ^15.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/cli": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.9.tgz", - "integrity": "sha512-1cQE7mRrPyzk1sg2UwpbQ/sXQyPukPKdN69o4Bn59Scfl/4wUh53WRPAAHXNudgPYT2ZT3s9Jj2E1cdhi+gxyQ==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1402.9", - "@angular-devkit/core": "14.2.9", - "@angular-devkit/schematics": "14.2.9", - "@schematics/angular": "14.2.9", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "npm-package-arg": "9.1.0", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.6.2", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - }, - "bin": { - "ng": "bin/ng.js" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/common": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.10.tgz", - "integrity": "sha512-uXtopPVKq1in/wcyMUYNk9uVDJ1ArlZ0wkfZEE1EMFaIZXR4p1fkbH1zMukUK+ldRlyqkuT1btZUq15incsKcg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.10", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.10.tgz", - "integrity": "sha512-CvZTJNKCNqU3Lr0La60U3XXZfpQbba/eb5YWTgygpoP0kjwOcNOsVou9TrGm57hT5ODy8281JOjWTrKspmYt5w==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.10" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } - } - }, - "node_modules/@angular/compiler-cli": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.10.tgz", - "integrity": "sha512-1GY1jdHqMpTBapjb0l61vQp0kPo9fryltOwQdm+zElODVFQWl/kvtq1VuMPr+E2qMfNSYg+ffrSixN7nG/E2ww==", - "dev": true, - "dependencies": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/main-ngcc.js" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/compiler": "14.2.10", - "typescript": ">=4.6.2 <4.9" - } - }, - "node_modules/@angular/core": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.10.tgz", - "integrity": "sha512-3XN+c0+tAtcUc8o7sQ41RLcSFPMt8krCfKFpDUOQwKjm90OOBcoG0LfmRfYBFNAenQh4glQQGOaYvLY98bTFTw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4 || ~0.12.0" - } - }, - "node_modules/@angular/forms": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.10.tgz", - "integrity": "sha512-6Wa7Knx+dbVS9+Z05m86pErRb1f3uG9gQ30+nRenjJW1d3HCyFPj6gteqQPUAOhtc4zN4L33pR52UuKoHUYJOQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.10", - "@angular/core": "14.2.10", - "@angular/platform-browser": "14.2.10", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/material": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", - "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.2.7", - "@angular/common": "^14.0.0 || ^15.0.0", - "@angular/core": "^14.0.0 || ^15.0.0", - "@angular/forms": "^14.0.0 || ^15.0.0", - "@angular/platform-browser": "^14.0.0 || ^15.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.10.tgz", - "integrity": "sha512-oYd5UMuGt4bocGFEaNYhQ7vzZFygLzCVM+SYxgfOHcgzeofZOjdaZgb84ANKgca5jguZg2ZGo1iklAbvfMrk2A==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/animations": "14.2.10", - "@angular/common": "14.2.10", - "@angular/core": "14.2.10" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.10.tgz", - "integrity": "sha512-K6hCCECGtjLsx9+fNOR7nx6oIqyIlLQnpv/u/L4bw/gL5Usr6t6R15lu0Rg+AT2MxDX1ELG7BG0ZKalLjSaquw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.10", - "@angular/compiler": "14.2.10", - "@angular/core": "14.2.10", - "@angular/platform-browser": "14.2.10" - } - }, - "node_modules/@angular/router": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.10.tgz", - "integrity": "sha512-Pnyy+j6WGh+VlvdsfqWCumlwCrYH5HgcJcrvmjhohTf/dtexfwTGmuqFU+6/d4vRugG84xsLH3wIlnW6P7WEXw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.10", - "@angular/core": "14.2.10", - "@angular/platform-browser": "14.2.10", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", - "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "node_modules/@devolutions/icons": { - "version": "3.3.2", - "resolved": "https://devolutions.jfrog.io/devolutions/api/npm/npm/@devolutions/icons/-/icons-3.3.2.tgz", - "integrity": "sha1-fJYnY48Bm0APrqB3qOqNe3qrkyY=", - "peerDependencies": { - "@types/react": ">= 16.8.6", - "react": ">= 17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", - "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@ngtools/webpack": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.9.tgz", - "integrity": "sha512-P2zgvsfSpN4BkNzZWnPKUVOzv3y/SUWdnx/nhAG5gsQkLBp0Vf2evwQnbPUKuCrbMpYd1V/5SHb48+0B6FbUtQ==", - "dev": true, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^14.0.0", - "typescript": ">=4.6.2 <4.9", - "webpack": "^5.54.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", - "dev": true, - "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", - "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@schematics/angular": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.9.tgz", - "integrity": "sha512-pt/eN+D9a6JeOjgqEdWP8lU6VQIoo3F8RcoVEVXHhjXzF2mIe1a3ZJTwY3ssdemKV4mZgseTJBG99/jxrHK0XQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.2.9", - "@angular-devkit/schematics": "14.2.9", - "jsonc-parser": "3.1.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", - "engines": { - "node": ">= 14.6.0", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", - "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - } - }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/critters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/critters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/critters/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", - "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", - "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", - "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", - "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", - "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", - "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", - "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", - "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", - "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", - "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", - "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", - "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", - "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", - "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", - "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", - "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", - "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", - "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-wasm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", - "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", - "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", - "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", - "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "dependencies": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "node_modules/hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", - "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jasmine-core": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", - "integrity": "sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg==", - "dev": true - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", - "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, - "bin": { - "karma": "bin/karma" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/karma-coverage/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma-coverage/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/karma-jasmine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", - "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", - "dev": true, - "dependencies": { - "jasmine-core": "^4.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", - "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", - "dev": true, - "peerDependencies": { - "jasmine-core": "^4.0.0", - "karma": "^6.0.0", - "karma-jasmine": "^5.0.0" - } - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/karma/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/karma/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/karma/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", - "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", - "dev": true, - "dependencies": { - "klona": "^2.0.4" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", - "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.22 || ^14.13 || >=16" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-package-arg": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", - "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dev": true, - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist/node_modules/npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", - "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", - "dev": true, - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "node_modules/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "dependencies": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0" - }, - "optionalDependencies": { - "nice-napi": "^1.0.2" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-import": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", - "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-loader": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", - "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], - "engines": { - "node": "^12 || ^14 || >=16" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8" - } - }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", - "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", - "dev": true, - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.0.5", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.8", - "browserslist": "^4.21.3", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.10", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" - } - }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-package-json": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", - "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", - "dev": true, - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sass": { - "version": "1.54.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", - "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sass-loader": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", - "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", - "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.72.1" - } - }, - "node_modules/source-map-loader/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylus": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", - "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", - "dev": true, - "dependencies": { - "@adobe/css-tools": "^4.0.1", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://opencollective.com/stylus" - } - }, - "node_modules/stylus-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", - "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" - } - }, - "node_modules/stylus/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylus/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", - "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", - "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "dependencies": { - "typed-assert": "^1.0.8" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", - "webpack": "^5.12.0" - }, - "peerDependenciesMeta": { - "html-webpack-plugin": { - "optional": true - } - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "dependencies": { - "tslib": "^2.3.0" - } - } - }, - "dependencies": { - "@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1402.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.9.tgz", - "integrity": "sha512-I0KTpmtukxq447CkdzKonFpIytRnvC77WuwnX4Sef32EM9KqmeNvfy/gZwm08Lqi4mOAC/iTCajXH1TN/4xllA==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.9", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/build-angular": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.9.tgz", - "integrity": "sha512-/6ul4JLpiKLB4+PJzDF7twgZf28GNHxxJKsheymrxC+ZRMGoMsJCzoU/dmOXE2YY8yGxAFnrTAVIJYomn+QnZQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.9", - "@angular-devkit/build-webpack": "0.1402.9", - "@angular-devkit/core": "14.2.9", - "@babel/core": "7.18.10", - "@babel/generator": "7.18.12", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.10", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.10", - "@babel/preset-env": "7.18.10", - "@babel/runtime": "7.18.9", - "@babel/template": "7.18.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.9", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.2", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.15.5", - "esbuild-wasm": "0.15.5", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.0.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.6.1", - "minimatch": "5.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.16", - "postcss-import": "15.0.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.8.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.54.4", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.59.0", - "stylus-loader": "7.0.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.4.0", - "webpack": "5.74.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.11.0", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1402.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.9.tgz", - "integrity": "sha512-J+bseVpEqHAfxvTKYNoo6B+5TmnkQmEn9aNMEiQ+hv8pQyuW3DCWZ6jOQrfCpJzCYMBdrQALfaRpsQuB92UPVw==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.9", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.9.tgz", - "integrity": "sha512-+e2OmzH/0gjNNH96xJDgshbuIM/NPSwE0NQlgU/KRb8TZt+7ooTmZJ1vk25HKV2YS99BEYzUSqvVAaJtxX/6Qw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular-devkit/schematics": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.9.tgz", - "integrity": "sha512-E7muTIbDqysjQld5r9AGXiW8vKHadkHaGe+0QONpmr8TMAtTMqBFxBXRG9vajiUzt/GcFL9dbGGEwM/1dc7VPQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.9", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular/animations": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.10.tgz", - "integrity": "sha512-t3ntvZvEI3lFrsJOC2qcF4ZCD04rVXWt8769YfearACBMsAXF0OAsLFcFHSDxcJelLGvQlXtBhjhe4IFAnQiZw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", - "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - } - }, - "@angular/cli": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.9.tgz", - "integrity": "sha512-1cQE7mRrPyzk1sg2UwpbQ/sXQyPukPKdN69o4Bn59Scfl/4wUh53WRPAAHXNudgPYT2ZT3s9Jj2E1cdhi+gxyQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.9", - "@angular-devkit/core": "14.2.9", - "@angular-devkit/schematics": "14.2.9", - "@schematics/angular": "14.2.9", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "npm-package-arg": "9.1.0", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.6.2", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - } - }, - "@angular/common": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.10.tgz", - "integrity": "sha512-uXtopPVKq1in/wcyMUYNk9uVDJ1ArlZ0wkfZEE1EMFaIZXR4p1fkbH1zMukUK+ldRlyqkuT1btZUq15incsKcg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.10.tgz", - "integrity": "sha512-CvZTJNKCNqU3Lr0La60U3XXZfpQbba/eb5YWTgygpoP0kjwOcNOsVou9TrGm57hT5ODy8281JOjWTrKspmYt5w==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.10.tgz", - "integrity": "sha512-1GY1jdHqMpTBapjb0l61vQp0kPo9fryltOwQdm+zElODVFQWl/kvtq1VuMPr+E2qMfNSYg+ffrSixN7nG/E2ww==", - "dev": true, - "requires": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - } - }, - "@angular/core": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.10.tgz", - "integrity": "sha512-3XN+c0+tAtcUc8o7sQ41RLcSFPMt8krCfKFpDUOQwKjm90OOBcoG0LfmRfYBFNAenQh4glQQGOaYvLY98bTFTw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.10.tgz", - "integrity": "sha512-6Wa7Knx+dbVS9+Z05m86pErRb1f3uG9gQ30+nRenjJW1d3HCyFPj6gteqQPUAOhtc4zN4L33pR52UuKoHUYJOQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material": { - "version": "14.2.7", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", - "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.10.tgz", - "integrity": "sha512-oYd5UMuGt4bocGFEaNYhQ7vzZFygLzCVM+SYxgfOHcgzeofZOjdaZgb84ANKgca5jguZg2ZGo1iklAbvfMrk2A==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.10.tgz", - "integrity": "sha512-K6hCCECGtjLsx9+fNOR7nx6oIqyIlLQnpv/u/L4bw/gL5Usr6t6R15lu0Rg+AT2MxDX1ELG7BG0ZKalLjSaquw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.2.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.10.tgz", - "integrity": "sha512-Pnyy+j6WGh+VlvdsfqWCumlwCrYH5HgcJcrvmjhohTf/dtexfwTGmuqFU+6/d4vRugG84xsLH3wIlnW6P7WEXw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true - }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", - "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "requires": {} - }, - "@devolutions/icons": { - "version": "3.3.2", - "resolved": "https://devolutions.jfrog.io/devolutions/api/npm/npm/@devolutions/icons/-/icons-3.3.2.tgz", - "integrity": "sha1-fJYnY48Bm0APrqB3qOqNe3qrkyY=", - "requires": {} - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", - "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", - "dev": true, - "optional": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "@ngtools/webpack": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.9.tgz", - "integrity": "sha512-P2zgvsfSpN4BkNzZWnPKUVOzv3y/SUWdnx/nhAG5gsQkLBp0Vf2evwQnbPUKuCrbMpYd1V/5SHb48+0B6FbUtQ==", - "dev": true, - "requires": {} - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", - "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@schematics/angular": { - "version": "14.2.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.9.tgz", - "integrity": "sha512-pt/eN+D9a6JeOjgqEdWP8lU6VQIoo3F8RcoVEVXHhjXzF2mIe1a3ZJTwY3ssdemKV4mZgseTJBG99/jxrHK0XQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.9", - "@angular-devkit/schematics": "14.2.9", - "jsonc-parser": "3.1.0" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==" - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", - "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - } - }, - "css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - } - }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", - "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", - "dev": true, - "optional": true, - "requires": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" - } - }, - "esbuild-android-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", - "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", - "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", - "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", - "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", - "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", - "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", - "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", - "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", - "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", - "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", - "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", - "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", - "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", - "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", - "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", - "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", - "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", - "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", - "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", - "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", - "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", - "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", - "dev": true - }, - "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz", - "integrity": "sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true - }, - "karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "karma-jasmine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", - "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", - "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", - "dev": true, - "requires": {} - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", - "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", - "dev": true - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", - "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, - "node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-package-arg": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", - "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^2.0.0" - } - }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true - } - } - }, - "npm-pick-manifest": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", - "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", - "dev": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-registry-fetch": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", - "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "dependencies": { - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} - }, - "postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "requires": {} - }, - "postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-import": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", - "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "requires": {} - }, - "postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-loader": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", - "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" - } - }, - "postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "requires": {} - }, - "postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "requires": {} - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true - }, - "postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "requires": {} - }, - "postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-preset-env": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", - "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.5", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.8", - "browserslist": "^4.21.3", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.10", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "requires": {} - }, - "postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - } - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "read-package-json": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", - "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.54.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", - "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", - "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", - "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "stylus": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", - "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", - "dev": true, - "requires": { - "@adobe/css-tools": "^4.0.1", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "stylus-loader": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", - "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", - "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", - "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/iron-web-client/package.json b/iron-web-client/package.json deleted file mode 100644 index 4f276dac..00000000 --- a/iron-web-client/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "iron-web-client", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve --host 0.0.0.0", - "start-tauri": "ng serve --configuration tauri-dev", - "build": "ng build", - "build-tauri": "ng build --configuration tauri-prod", - "watch": "ng build --watch --configuration development", - "test": "ng test" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.2.0", - "@angular/cdk": "^14.2.6", - "@angular/common": "^14.2.0", - "@angular/compiler": "^14.2.0", - "@angular/core": "^14.2.0", - "@angular/forms": "^14.2.0", - "@angular/material": "^14.2.6", - "@angular/platform-browser": "^14.2.0", - "@angular/platform-browser-dynamic": "^14.2.0", - "@angular/router": "^14.2.0", - "@devolutions/icons": "^3.3.2", - "@tauri-apps/api": "^1.2.0", - "guid-typescript": "^1.0.9", - "normalize.css": "^8.0.1", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.2.8", - "@angular/cli": "~14.2.8", - "@angular/compiler-cli": "^14.2.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.3.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.0.0", - "typescript": "~4.7.2" - } -} diff --git a/iron-web-client/src/app/add-tab/add-tab.component.html b/iron-web-client/src/app/add-tab/add-tab.component.html deleted file mode 100644 index 529b323b..00000000 --- a/iron-web-client/src/app/add-tab/add-tab.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
      - -
      diff --git a/iron-web-client/src/app/add-tab/add-tab.component.scss b/iron-web-client/src/app/add-tab/add-tab.component.scss deleted file mode 100644 index 07c55cff..00000000 --- a/iron-web-client/src/app/add-tab/add-tab.component.scss +++ /dev/null @@ -1,6 +0,0 @@ -.add-button { - top: 5px; - right: 0; - position: fixed; - z-index: 99999; -} diff --git a/iron-web-client/src/app/add-tab/add-tab.component.ts b/iron-web-client/src/app/add-tab/add-tab.component.ts deleted file mode 100644 index 63d203cc..00000000 --- a/iron-web-client/src/app/add-tab/add-tab.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {SessionService} from "../services/session.service"; - -@Component({ - selector: 'app-add-tab', - templateUrl: './add-tab.component.html', - styleUrls: ['./add-tab.component.scss'] -}) -export class AddTabComponent { - - constructor(public sessionService: SessionService) { } - - addSession(){ - this.sessionService.addSession('New Session') - } -} diff --git a/iron-web-client/src/app/app.component.html b/iron-web-client/src/app/app.component.html deleted file mode 100644 index 0680b43f..00000000 --- a/iron-web-client/src/app/app.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/iron-web-client/src/app/app.component.scss b/iron-web-client/src/app/app.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/app/app.component.spec.ts b/iron-web-client/src/app/app.component.spec.ts deleted file mode 100644 index 413aa61c..00000000 --- a/iron-web-client/src/app/app.component.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'iron-web-client'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app.title).toEqual('iron-web-client'); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('.content span')?.textContent).toContain('iron-web-client app is running!'); - }); -}); diff --git a/iron-web-client/src/app/app.component.ts b/iron-web-client/src/app/app.component.ts deleted file mode 100644 index e84ab6ae..00000000 --- a/iron-web-client/src/app/app.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Component} from '@angular/core'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'] -}) -export class AppComponent { - title = 'iron-web-client'; -} - diff --git a/iron-web-client/src/app/app.module.ts b/iron-web-client/src/app/app.module.ts deleted file mode 100644 index c729f963..00000000 --- a/iron-web-client/src/app/app.module.ts +++ /dev/null @@ -1,48 +0,0 @@ -import {NgModule} from '@angular/core'; -import {BrowserModule} from '@angular/platform-browser'; -import {AppComponent} from './app.component'; -import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; -import {TabsComponent} from './tabs/tabs.component'; -import {MatTabsModule} from "@angular/material/tabs"; -import {AddTabComponent} from './add-tab/add-tab.component'; -import {MatIconModule} from "@angular/material/icon"; -import {AppRoutingModule} from "./app.routing.module"; -import {SplashscreenComponent} from "./splash-screen/splashscreen.component"; -import {RouterModule} from "@angular/router"; -import {ServerBridgeService} from "./services/server-bridge.service"; -import {environment} from "../environments/environment"; -import {TauriBridgeService} from "./services/tauri-bridge.service"; -import {WasmBridgeService} from "./services/wasm-bridge.service"; -import {UserInteractionService} from "./services/user-interaction.service"; -import {MatProgressBarModule} from '@angular/material/progress-bar'; - -@NgModule({ - declarations: [ - AppComponent, - TabsComponent, - AddTabComponent, - SplashscreenComponent - ], - imports: [ - BrowserModule, - AppRoutingModule, - RouterModule, - BrowserAnimationsModule, - MatIconModule, - MatTabsModule, - MatProgressBarModule - ], - bootstrap: [AppComponent], - providers: [ - UserInteractionService, - { - provide: ServerBridgeService, - useFactory: () => { - return environment.tauri ? new TauriBridgeService() : new WasmBridgeService(); - } - }, - ] -}) - -export class AppModule { -} diff --git a/iron-web-client/src/app/app.routing.module.ts b/iron-web-client/src/app/app.routing.module.ts deleted file mode 100644 index 17d7655a..00000000 --- a/iron-web-client/src/app/app.routing.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {RouterModule, Routes} from "@angular/router"; -import {NgModule} from "@angular/core"; -import {AppComponent} from "./app.component"; -import {SplashscreenComponent} from "./splash-screen/splashscreen.component"; - -const routes: Routes = [ - {path: 'iron-gui', component: AppComponent}, - {path: 'session', loadChildren: () => import('./session/session.module').then(m => m.SessionModule)}, - {path: 'splashscreen', component: SplashscreenComponent}, - {path: '', redirectTo: 'iron-gui', pathMatch: 'full'} -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes)], - exports: [RouterModule] -}) -export class AppRoutingModule { -} diff --git a/iron-web-client/src/app/application.service.ts b/iron-web-client/src/app/application.service.ts deleted file mode 100644 index 948864f7..00000000 --- a/iron-web-client/src/app/application.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import {Injectable} from "@angular/core"; -import {BehaviorSubject, Observable, Subject} from "rxjs"; -import {invoke} from "@tauri-apps/api"; -import {environment} from "../environments/environment"; - -@Injectable({ - providedIn: 'root' -}) -export class ApplicationService { - splashScreenReady$: Observable; - splashScreenReady: BehaviorSubject = new BehaviorSubject(false); - - constructor() { - this.splashScreenReady$ = this.splashScreenReady.asObservable() - } - - setSplashScreenReady(value: boolean) { - console.log("set splash ready to ", value); - this.splashScreenReady.next(value); - } - - closeSplashscreen() { - if (environment.tauri) { - invoke('close_splashscreen'); - } - } -} diff --git a/iron-web-client/src/app/login/login.component.html b/iron-web-client/src/app/login/login.component.html deleted file mode 100644 index e68bc1c0..00000000 --- a/iron-web-client/src/app/login/login.component.html +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/iron-web-client/src/app/login/login.component.scss b/iron-web-client/src/app/login/login.component.scss deleted file mode 100644 index 79dcb971..00000000 --- a/iron-web-client/src/app/login/login.component.scss +++ /dev/null @@ -1,19 +0,0 @@ -.login-wrapper{ - text-align: -webkit-center; -} - -.box{ - top: 80px; - width: 40%; - height: 400px; -} - -.form { - min-width: 150px; - max-width: 500px; - width: 100%; -} - -.full-width { - width: 100%; -} diff --git a/iron-web-client/src/app/login/login.component.ts b/iron-web-client/src/app/login/login.component.ts deleted file mode 100644 index 69cdbd47..00000000 --- a/iron-web-client/src/app/login/login.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {Component, OnInit} from '@angular/core'; -import {FormControl, FormGroup} from "@angular/forms"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {ServerBridgeService} from "../services/server-bridge.service"; -import {Session} from "../../models/session"; -import {SessionService} from "../services/session.service"; - -@Component({ - selector: 'app-login', - templateUrl: './login.component.html', - styleUrls: ['./login.component.scss'] -}) -export class LoginComponent { - - currentSession: Session; - - form = new FormGroup({ - host: new FormControl(''), - username: new FormControl(''), - password: new FormControl(''), - }) - - constructor(private snackBar: MatSnackBar, private serverBridge: ServerBridgeService, private sessionService: SessionService) { - this.sessionService.currentSession$.subscribe(session => this.currentSession = session); - } - - connect() { - this.snackBar.open('Connection in progress...', '', {duration: 1000}); - - this.serverBridge.connect(this.form.value.username as string, this.form.value.password as string, this.form.value.host as string).subscribe(start_info => { - if (start_info.websocket_port && start_info.websocket_port > 0) { - this.snackBar.open('success', '', {duration: 1000}); - this.currentSession.sessionId = start_info.session_id; - this.currentSession.desktopSize = start_info.initial_desktop_size; - this.currentSession.active = true; - } else { - this.snackBar.open('failure', '', {duration: 1000}); - } - }) - } -} diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.html b/iron-web-client/src/app/screen-renderer/screen-renderer.component.html deleted file mode 100644 index 34ea2188..00000000 --- a/iron-web-client/src/app/screen-renderer/screen-renderer.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
      -
      - -
      -
      diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss b/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss deleted file mode 100644 index 1bf6c10d..00000000 --- a/iron-web-client/src/app/screen-renderer/screen-renderer.component.scss +++ /dev/null @@ -1,25 +0,0 @@ -$screen-padding: 30px; - -.screen-wrapper { - position: relative; - width: calc(100% - #{$screen-padding * 2}); - height: calc(100% - #{$screen-padding * 2}); - padding-left: $screen-padding; - padding-top: $screen-padding; - max-height: 100%; - - &.scale-fit { - canvas { - width: 100%; - } - } - - .screen-viewer { - width: 100%; - height: 100%; - overflow: auto; - text-align: center; - } -} - - diff --git a/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts b/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts deleted file mode 100644 index 818be34e..00000000 --- a/iron-web-client/src/app/screen-renderer/screen-renderer.component.ts +++ /dev/null @@ -1,70 +0,0 @@ -import {AfterViewInit, Component, Input, OnInit} from "@angular/core"; -import {MousePosition, UserInteractionService} from "../services/user-interaction.service"; -import {DesktopSize, ResizeEvent, ServerBridgeService} from "../services/server-bridge.service"; -import {SessionService} from "../services/session.service"; -import {Session} from "../../models/session"; -import {count, throttleTime} from "rxjs"; - -@Component({ - selector: 'app-screen-renderer', - templateUrl: 'screen-renderer.component.html', - styleUrls: ['screen-renderer.component.scss'] -}) -export class ScreenRendererComponent implements OnInit, AfterViewInit { - @Input() scale: 'full' | 'fit' = 'full'; - - currentSession: Session; - - canvas: HTMLCanvasElement; - canvasCtx: any; - - constructor(private serverService: ServerBridgeService, private userInteractionService: UserInteractionService, private sessionService: SessionService) { - } - - ngOnInit() { - this.serverService.init(); - } - - ngAfterViewInit() { - this.canvas = document.getElementById("renderer") as HTMLCanvasElement; - this.canvasCtx = this.canvas?.getContext("2d", { alpha: false }); - - this.sessionService.currentSession$.subscribe(session => { - this.currentSession = session; - this.canvas.width = session.desktopSize.width; - this.canvas.height = session.desktopSize.height; - }); - - this.serverService.resize.subscribe((desktopSize: ResizeEvent) => { - this.canvas.width = desktopSize.desktop_size.width; - this.canvas.height = desktopSize.desktop_size.height; - }); - this.serverService.updateImage.pipe(throttleTime(1000 / 60)).subscribe(({pixels, infos}) => { - this.draw(pixels, infos); - }) - } - - getMousePos(evt: any) { - const rect = this.canvas.getBoundingClientRect(), - scaleX = this.canvas.width / rect.width, - scaleY = this.canvas.height / rect.height; - - const coord: MousePosition = { - x: Math.round((evt.clientX - rect.left) * scaleX), - y: Math.round((evt.clientY - rect.top) * scaleY) - } - - this.userInteractionService.setMousePosition(coord); - } - - setMouseState(state: number) { - this.userInteractionService.setMouseLeftClickState(state); - } - - async draw(bytesArray: any, imageInfo: any) { - const pixels = new Uint8ClampedArray(await bytesArray); - const imageData = new ImageData(pixels, imageInfo.width, imageInfo.height); - this.canvasCtx?.putImageData(imageData, imageInfo.left, imageInfo.top); - } - -} diff --git a/iron-web-client/src/app/services/command.service.ts b/iron-web-client/src/app/services/command.service.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/app/services/server-bridge.service.ts b/iron-web-client/src/app/services/server-bridge.service.ts deleted file mode 100644 index 9d17e29e..00000000 --- a/iron-web-client/src/app/services/server-bridge.service.ts +++ /dev/null @@ -1,43 +0,0 @@ -import {Injectable} from "@angular/core"; -import {Observable, Subject} from "rxjs"; - -export interface ServerRect { - free(): void; - - clone_buffer(): Uint8Array; - - bottom: number; - left: number; - right: number; - top: number; -} - -export interface NewSessionInfo { - session_id: number, - websocket_port: number, - initial_desktop_size: DesktopSize, -} - -export interface DesktopSize { - width: number, - height: number -} - -export interface ResizeEvent { - session_id: number, - desktop_size: DesktopSize, -} - -@Injectable() -export abstract class ServerBridgeService { - abstract init(): void; - - abstract connect(username: string, password: string, address: string): Observable; - - abstract resize: Observable; - - abstract updateImage: Observable; - - abstract updateMouse(mouse_x: number, mouse_y: number, click_state: number): void; -} - diff --git a/iron-web-client/src/app/services/session.service.ts b/iron-web-client/src/app/services/session.service.ts deleted file mode 100644 index 314beca6..00000000 --- a/iron-web-client/src/app/services/session.service.ts +++ /dev/null @@ -1,57 +0,0 @@ -import {Injectable} from '@angular/core'; -import {Tab} from "../../models/tab"; -import {Session} from "../../models/session"; -import {BehaviorSubject, Observable, Subject} from "rxjs"; -import {Guid} from "guid-typescript"; - -@Injectable({ - providedIn: 'root' -}) -export class SessionService { - sessionCounter = 0; - currentSession$: Observable; - sessions: Session[] = new Array(); - tabs$: Observable - - private _currentSession: BehaviorSubject = new BehaviorSubject(new Session("New Session")); - private _tabs: BehaviorSubject = new BehaviorSubject([]); - - constructor() { - this.tabs$ = this._tabs.asObservable(); - this.currentSession$ = this._currentSession.asObservable(); - } - - public getSessionsTabs() { - const tabs = this.sessions.map(session => new Tab(session.id, session.name)) - this._tabs.next(tabs); - } - - public setCurrentSession(session: Session) { - this._currentSession.next(session); - this.getSessionsTabs(); - } - - public setCurrentSessionById(id: Guid) { - const session = this.sessions.find(session => session.id.equals(id)); - if (session) { - this.setCurrentSession(session); - } - } - - public addSession(name: string) { - this.sessionCounter++; - const newSession = new Session(name); - this.sessions.push(newSession); - if (this.sessionCounter == 1) { - this.setCurrentSession(newSession); - } - } - - public closeSession(id: Guid) { - this.sessionCounter--; - this.sessions = this.sessions.filter(session => !session.id.equals(id)); - if (this.sessionCounter == 1) { - this.setCurrentSession(this.sessions[0]); - } - } -} diff --git a/iron-web-client/src/app/services/tauri-bridge.service.ts b/iron-web-client/src/app/services/tauri-bridge.service.ts deleted file mode 100644 index feb1c3bf..00000000 --- a/iron-web-client/src/app/services/tauri-bridge.service.ts +++ /dev/null @@ -1,63 +0,0 @@ -import {Injectable} from "@angular/core"; -import {NewSessionInfo, ServerBridgeService, ServerRect} from "./server-bridge.service"; -import {invoke} from "@tauri-apps/api"; -import {from, Observable, Subject, tap} from "rxjs"; -import {listen} from "@tauri-apps/api/event"; - -@Injectable() -export class TauriBridgeService implements ServerBridgeService { - - private _resize: Subject = new Subject(); - private _updateImage: Subject = new Subject(); - - private lastImageInformations: string; - - resize: Observable; - updateImage: Observable; - - constructor() { - this.resize = this._resize.asObservable(); - this.updateImage = this._updateImage.asObservable(); - - this.initTauriListener(); - } - - init(): void { - } - - connect(username: string, password: string, address: string): Observable { - return from(invoke("connect", {username, password, address}) as Promise).pipe(tap((newSessionInfo: NewSessionInfo) => { - this.initSocket(newSessionInfo.websocket_port); - })); - } - - initSocket(port: any) { - const socket = new WebSocket(`ws://127.0.0.1:${port}`); - socket.addEventListener("message", this.onSocketMessage.bind(this)); - } - - updateMouse(mouseX: number, mouseY:number, clickState:number) { - let leftClick = clickState === 0 ? false : true; - invoke("update_mouse", {sessionId: 0, mouseX, mouseY, leftClick}); - } - - async onSocketMessage(event: any) { - if (typeof event.data === "string") { - this.lastImageInformations = event.data; - } else { - let obj = { - pixels: event.data.arrayBuffer(), - infos: JSON.parse(this.lastImageInformations) - } - this._updateImage.next(obj); - } - } - - private async initTauriListener() { - let unlisten1 = await listen("resize", (evt: any) => { - this._resize.next(evt.payload); - }) - } - - -} diff --git a/iron-web-client/src/app/services/user-interaction.service.ts b/iron-web-client/src/app/services/user-interaction.service.ts deleted file mode 100644 index 61c08706..00000000 --- a/iron-web-client/src/app/services/user-interaction.service.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {Injectable} from "@angular/core"; -import {BehaviorSubject, Observable, Subject} from "rxjs"; -import {ServerBridgeService} from "./server-bridge.service"; - -export interface MousePosition { - x: number, - y: number -} - -@Injectable() -export class UserInteractionService { - - mouseLeftClickObservable: Observable; - private mouseLeftClick: BehaviorSubject = new BehaviorSubject(0); - mousePositionObservable: Observable; - private mousePosition: BehaviorSubject = new BehaviorSubject({x: 0, y: 0}); - - constructor(private serverBridge: ServerBridgeService) { - this.mousePositionObservable = this.mousePosition.asObservable(); - this.mouseLeftClickObservable = this.mouseLeftClick.asObservable(); - } - - setMousePosition(position: MousePosition) { - this.serverBridge.updateMouse(position.x, position.y, this.mouseLeftClick.value); - this.mousePosition.next(position); - } - - setMouseLeftClickState(state: number) { - this.serverBridge.updateMouse(this.mousePosition.value.x, this.mousePosition.value.y, state); - this.mouseLeftClick.next(state); - } -} diff --git a/iron-web-client/src/app/services/wasm-bridge.service.ts b/iron-web-client/src/app/services/wasm-bridge.service.ts deleted file mode 100644 index 687de0d0..00000000 --- a/iron-web-client/src/app/services/wasm-bridge.service.ts +++ /dev/null @@ -1,45 +0,0 @@ -import {Injectable} from "@angular/core"; -import {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; -import * as IronWasm from "../../assets/pkg/ironrdp"; -import {Observable, of, Subject} from "rxjs"; - -@Injectable() -export class WasmBridgeService implements ServerBridgeService { - private wasmBridge = IronWasm; - - private _resize: Subject = new Subject(); - private _updateImage: Subject = new Subject(); - - resize: Observable; - updateImage: Observable; - - constructor() { - this.resize = this._resize.asObservable(); - this.updateImage = this._updateImage.asObservable(); - } - - init(): void { - this.wasmBridge.init(); - } - - // connect(username: string, password: string, address: string): Observable { - // this.wasmBridge.connect(username, password, address); - // return of(0); - // } - - updateMouse(mouse_x: number, mouse_y: number, click_state: number): void { - } - - connect(username: string, password: string, address: string): Observable { - this.wasmBridge.connect(username, password, address); - return of({ - session_id: 0, - initial_desktop_size: { - height: 0, - width: 0 - }, - websocket_port: 0 - }); - ; - } -} diff --git a/iron-web-client/src/app/session/session.component.html b/iron-web-client/src/app/session/session.component.html deleted file mode 100644 index 7361f338..00000000 --- a/iron-web-client/src/app/session/session.component.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/iron-web-client/src/app/session/session.component.scss b/iron-web-client/src/app/session/session.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/app/session/session.component.ts b/iron-web-client/src/app/session/session.component.ts deleted file mode 100644 index ae10cac8..00000000 --- a/iron-web-client/src/app/session/session.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {Component} from "@angular/core"; -import {Session} from "../../models/session"; -import {SessionService} from "../services/session.service"; - -@Component({ - selector: 'app-session', - templateUrl: 'session.component.html', - styleUrls: ['session.component.scss'] -}) -export class SessionComponent { - currentSession: Session; - connected = false; - - constructor(public sessionService: SessionService) { - this.sessionService.currentSession$.subscribe(session => this.currentSession = session); - } -} diff --git a/iron-web-client/src/app/session/session.module.ts b/iron-web-client/src/app/session/session.module.ts deleted file mode 100644 index 9eed3176..00000000 --- a/iron-web-client/src/app/session/session.module.ts +++ /dev/null @@ -1,42 +0,0 @@ -import {NgModule} from "@angular/core"; -import {SessionComponent} from "./session.component"; -import {CommonModule} from "@angular/common"; -import {SessionRoutingModule} from "./session.routing.module"; -import {LoginComponent} from "../login/login.component"; -import {ScreenRendererComponent} from "../screen-renderer/screen-renderer.component"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatCardModule} from "@angular/material/card"; -import {MatButtonModule} from "@angular/material/button"; -import {MatInputModule} from "@angular/material/input"; -import {FormsModule, ReactiveFormsModule} from "@angular/forms"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MatTabsModule} from "@angular/material/tabs"; -import {MatIconModule} from "@angular/material/icon"; -import {ServerBridgeService} from "../services/server-bridge.service"; -import {environment} from "../../environments/environment"; -import {TauriBridgeService} from "../services/tauri-bridge.service"; -import {WasmBridgeService} from "../services/wasm-bridge.service"; -import {UserInteractionService} from "../services/user-interaction.service"; - -@NgModule({ - imports: [ - CommonModule, - SessionRoutingModule, - MatButtonModule, - MatFormFieldModule, - MatInputModule, - MatCardModule, - FormsModule, - ReactiveFormsModule, - MatSnackBarModule, - MatTabsModule, - MatIconModule - ], - declarations: [ - SessionComponent, - LoginComponent, - ScreenRendererComponent, - ], -}) -export class SessionModule { -} diff --git a/iron-web-client/src/app/session/session.routing.module.ts b/iron-web-client/src/app/session/session.routing.module.ts deleted file mode 100644 index dc376654..00000000 --- a/iron-web-client/src/app/session/session.routing.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import {SessionComponent} from "./session.component"; - -const routes: Routes = [ - { - path: '', - component: SessionComponent - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class SessionRoutingModule { } diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.html b/iron-web-client/src/app/splash-screen/splashscreen.component.html deleted file mode 100644 index dab18cac..00000000 --- a/iron-web-client/src/app/splash-screen/splashscreen.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
      - - -
      IronRdp GUI
      -
      diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.scss b/iron-web-client/src/app/splash-screen/splashscreen.component.scss deleted file mode 100644 index bf8ac9e7..00000000 --- a/iron-web-client/src/app/splash-screen/splashscreen.component.scss +++ /dev/null @@ -1,26 +0,0 @@ -:host { - display: block; - height: 100%; - width: 100%; - background: rgb(255,255,255); - background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(158,158,158,1) 45%, rgba(125,125,125,1) 100%); -} - -img { - max-width: 300px; - margin-bottom: 15px; -} - -.splash { - position: absolute; - left: 50%; - top: 50%; - transform: translateX(-50%) translateY(-50%); -} - -.title { - text-align: center; - line-height: 55px; - font-size: 55px; - margin-top: 15px; -} diff --git a/iron-web-client/src/app/splash-screen/splashscreen.component.ts b/iron-web-client/src/app/splash-screen/splashscreen.component.ts deleted file mode 100644 index 747672ee..00000000 --- a/iron-web-client/src/app/splash-screen/splashscreen.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {AfterViewInit, Component} from "@angular/core"; -import {ApplicationService} from "../application.service"; - -@Component({ - selector: 'app-splashscreen', - templateUrl: 'splashscreen.component.html', - styleUrls: ['splashscreen.component.scss'] -}) -export class SplashscreenComponent implements AfterViewInit { - - constructor(private applicationService: ApplicationService) { - } - - ngAfterViewInit() { - this.applicationService.setSplashScreenReady(true); - } -} diff --git a/iron-web-client/src/app/tabs/tabs.component.html b/iron-web-client/src/app/tabs/tabs.component.html deleted file mode 100644 index b72c6c17..00000000 --- a/iron-web-client/src/app/tabs/tabs.component.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - -
      {{tab.name}}
      - -
      -
      -
      -
      - - diff --git a/iron-web-client/src/app/tabs/tabs.component.scss b/iron-web-client/src/app/tabs/tabs.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/app/tabs/tabs.component.ts b/iron-web-client/src/app/tabs/tabs.component.ts deleted file mode 100644 index 5f36061a..00000000 --- a/iron-web-client/src/app/tabs/tabs.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {Component, Inject, OnInit, QueryList} from '@angular/core'; -import {MatTab, MatTabGroup} from "@angular/material/tabs"; -import {SessionService} from "../services/session.service"; -import {Tab} from "../../models/tab"; -import {Guid} from "guid-typescript"; - - -@Component({ - selector: 'app-tabs', - templateUrl: './tabs.component.html', - styleUrls: ['./tabs.component.scss'] -}) -export class TabsComponent implements OnInit { - public tabGroup: MatTabGroup; - public tabNodes: QueryList; - public tabs : Array; - - constructor(public sessionService: SessionService) { - } - - ngOnInit(): void { - this.sessionService.tabs$.subscribe(tabs => this.tabs = tabs); - } - - closeSession(id: Guid){ - this.sessionService.closeSession(id); - } - - setCurrentSession(id:Guid){ - this.sessionService.setCurrentSessionById(id); - } -} diff --git a/iron-web-client/src/assets/.gitignore b/iron-web-client/src/assets/.gitignore deleted file mode 100644 index 5fff1d9c..00000000 --- a/iron-web-client/src/assets/.gitignore +++ /dev/null @@ -1 +0,0 @@ -pkg diff --git a/iron-web-client/src/assets/.gitkeep b/iron-web-client/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/assets/images/iron-logo.png b/iron-web-client/src/assets/images/iron-logo.png deleted file mode 100644 index d29c616e45ba7d15bc4f98a8ed500aac97f452dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193571 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

      -
      +
      +
      + +
      -
      \ No newline at end of file From c270b1a23906995511f82c32ef11ebefdfb91652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Feb 2023 16:56:12 -0500 Subject: [PATCH 0113/1273] =?UTF-8?q?docs:=20elaborate=20web=20client=20se?= =?UTF-8?q?tup=20steps=20(gateway,=20token=E2=80=A6)=20(#67)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +++++ iron-remote-gui/README.md | 66 +++++++++++-------- iron-svelte-client/README.md | 124 ++++++++++++++++++++++++++++++----- ironrdp-cli/README.md | 12 +--- ironrdp-gui-client/README.md | 1 + 5 files changed, 164 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index f6d40041..3240858b 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,23 @@ A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on - `iron-tauri-client`: a native client built with Tauri. Frontend is using the `iron-web-client`/`iron-svelte-client` component. - `ffi/wasm`: WebAssembly high-level bindings targeting web browsers. +## Video Codec Support + +Currently, only Microsoft RemoteFX (RFX) is supported. + +In order to enable RemoteFX: + +1. Run `gpedit.msc`. + +2. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/RemoteFX for Windows Server 2008 R2/Configure RemoteFX` + +3. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008 R2 SP1` + +4. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Limit maximum color depth` + +5. Reboot. + + ## Demonstration https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4 diff --git a/iron-remote-gui/README.md b/iron-remote-gui/README.md index 7aabccf2..14e61b31 100644 --- a/iron-remote-gui/README.md +++ b/iron-remote-gui/README.md @@ -1,6 +1,6 @@ -# Iron Remote Gui +# Iron Remote GUI -This is the core of the web client. Written with Svelte and build as Web-component. +This is the core of the web client written on top of Svelte and built as a reusable Web Component. ## Development @@ -12,55 +12,67 @@ Run `npm run build` ## Usage -As Devolutions team member, you can import the web-component as an Artifactory package. Just run `npm install @devolutions/iron-remote-gui`. -Otherwise you can make an npm install targeting the /dist folder. +As member of the Devolutions organization, you can import the Web Component from JFrog Artifactory by running the following npm command: -Import the `iron-remote-gui.umd.cjs` from node_modules folder. +```shell +$ npm install @devolutions/iron-remote-gui +``` -Then use the html tag `` in your page. +Otherwise, you can run `npm install` targeting the `dist/` folder directly. -In your code add a listener on the `ready` event on the iron-remote-gui html element. -Get `evt.detail.irgUserInteraction` from the promise. This object is of type `UserInteractionService`. -After that you need to call, at least, `connect` from the `UserInteractionService`. +Import the `iron-remote-gui.umd.cjs` from `node_modules/` folder. + +Then use the HTML tag `` in your page. + +In your code add a listener for the `ready` event on the `iron-remote-gui` HTML element. +Get `evt.detail.irgUserInteraction` from the `Promise`, a property whose type is `UserInteractionService`. +Call the `connect` method on this object. ## Limitations For now, we didn't make the enums used by some method directly available (I didn't find the good way to export them directly with the component.). -You need to recreate them on your application for now (it will be improve in futur version); +You need to recreate them on your application for now (it will be improved in future version); -Also even if the connection to RDP work there is still a lot of improvement to do. -At now you can expect, mouse movement and click (4 buttons) - no scroll, Keyboard for at least the standard. Windows and CTRL+ALT+DEL can be called by method on UserInteractionService. +Also, even if the connection to RDP work there is still a lot of improvement to do. +As of now, you can expect, mouse movement and click (4 buttons) - no scroll, Keyboard for at least the standard. +Windows and CTRL+ALT+DEL can be called by method on `UserInteractionService`. Lock keys (like caps lock), have a partial support. Other advanced functionalities (sharing / copy past...) are not implemented yet. -## IronRemoteGui parameters +## Component parameters -You can add some parameters for default initialisation on the component . -> Note that due to a limitation of the framework all parameters need to be in minuscule -- `scale`: The scaling behavior of the distant screen. Can be 'fit', 'real' or 'full'. Default is 'real'; -- `targetplatform`: Can be 'web' or 'native'. Default is 'web'. -- `verbose`: Show logs from iron-remote-gui. 'true' or 'false'. Default is 'false'. -- `debugwasm`: Show debug info from web assembly. Can be "OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". Default is 'OFF'. -- `flexcentre`: Helper to force iron-remote-gui a flex and centering the content automatically. Otherwise you need to manage manually. Default is 'true'. +You can add some parameters for default initialization on the component ``. -## UserInteractionService methods ->`connect(username: string, password: string, host: string, authtoken: string): Observable` +> Note that due to a limitation of the framework all parameters need to be lower-cased. + +- `scale`: The scaling behavior of the distant screen. Can be `fit`, `real` or `full`. Default is `real`; +- `targetplatform`: Can be `web` or `native`. Default is `web`. +- `verbose`: Show logs from `iron-remote-gui`. `true` or `false`. Default is `false`. +- `debugwasm`: Show debug info from web assembly. Can be `"OFF"`, `"ERROR"`, `"WARN"`, `"INFO"`, `"DEBUG"`, `"TRACE"`. Default is `"OFF"`. +- `flexcentre`: Helper to force `iron-remote-gui` a flex and centering the content automatically. Otherwise, you need to manage manually. Default is `true`. + +## `UserInteractionService` methods + +> `connect(username: string, password: string, host: string, authtoken: string): Observable` > -> username and password are the credentials use to connect on the remote. Host is the jet server of the gateway. Authtoken is the gateway token. +> `username` and `password` are the credentials to use on the remote host. +> `host` refers to the Devolutions Gateway hostname and port. +> `authtoken` is the authentication token to send to the Devolutions Gateway. > `ctrlAltDel()` > -> Send the ctrl+alt+del key to server. +> Sends the ctrl+alt+del key to server. > `metaKey()` > -> Send the metakey to server (like windows key). +> Sends the meta key event to remote host (i.e.: Windows key). > `setVisibility(value: bool)` > -> Show or Hide canvas. +> Shows or hides rendering canvas. > `setScale(scale: ScreenScale)` > -> Set the scale behavior of the canvas. (please take a look on the [ScreenScale](src/services/user-interaction-service.ts) enum) +> Sets the scale behavior of the canvas. +> See the [ScreenScale](src/services/user-interaction-service.ts) enum for possible values. diff --git a/iron-svelte-client/README.md b/iron-svelte-client/README.md index ff9f6b84..d8003e7f 100644 --- a/iron-svelte-client/README.md +++ b/iron-svelte-client/README.md @@ -1,27 +1,115 @@ -# SvelteKit UI for IronRDP. +# SvelteKit UI for IronRDP -The ui is used both for Tauri Desktop App and Browser App. +The UI is used both for Tauri Desktop App and Browser App. ## Tauri -Please [read the Readme](../iron-tauri-client/) from `iron-tauri-client` +Please read the [README](../iron-tauri-client/) from `iron-tauri-client` -## Web Client +## Web client -> WebClient is build with [SvelteKit](https://kit.svelte.dev/). -> It's a simple wrapper around Iron-Remote-Gui to demo the usage of the API. -> The core of the WebClient is in iron-remote-gui folder who's built as web-component. +Web client is built on top of [SvelteKit](https://kit.svelte.dev/). +It's a simple wrapper around `iron-remote-gui` demonstrating how to use the API. +The core of the web client is to be found in `iron-remote-gui` folder provided as a Web Component. -### Requirement -You need to run npm install in [iron-remote-gui](../iron-remote-gui/) before going further. -### Run in dev -- Run `npm install` -- Run dev server with all require build by `npm run dev-all` -- Build dist files by `npm run build` +### Requirements -Files are builded in `./iron-svelte-client/build/browser` +- A remote machine ready to receive RDP connections using RemoteFX (see top-level [README](../README.md) on that matter). +- A Devolutions Gateway with network access to this machine up and running +- A token signed using the provisioner key the Devolutions Gateway is expecting -You can start the dev server with three different command: -- `dev` - Run only the application. -- `dev-all` - Build wasm and iron-remote-gui before starting. -- `dev-no-wasm` - Build only iron-remote-gui before starting. \ No newline at end of file +#### Devolutions Gateway setup + +Web client is using a special extension to RDP protocol that is only supported in the latest Devolutions Gateway builds. + +You can either: + +- Download a binary prebuilt from master such as [this one](https://devolutions.sharepoint.com/:f:/s/Prereleases/Ei4GzG25BWhKtmrJiurIjDEBkd8j1VWy4fzaWR42ew4f8g?e=H3bFFM). +- Build [master](https://github.com/Devolutions/devolutions-gateway/tree/master) yourself. + Simply [install the Rust toolchain](https://rustup.rs/) and run `cargo build --release`. Binary will be found in the `./target/release` folder. + +Create a new folder somewhere on your system. For instance `/home/david/Documents/gateway-config`. +We’ll store Devolutions Gateway configuration inside this folder. + +Set the `DGATEWAY_CONFIG_PATH` environment variable to this path. + +PowerShell: + +```pwsh +$ $Env:DGATEWAY_CONFIG_PATH = "/home/david/Documents/gateway-config" +``` + +bash / zsh /other bash-like shells: + +```bash +$ export DGATEWAY_CONFIG_PATH=/home/david/Documents/gateway-config +``` + +Generate a default configuration using the Devolutions Gateway executable: + +```shell +$ ./DevolutionsGateway --config-init-only # Linux / macOS +$ ./DevolutionsGateway.exe --config-init-only # Windows +``` + +For convenience, modify the freshly generated `gateway.json` like so: + +```json +{ + // -- snip -- // + "__debug__": { + "disable_token_validation": true + } +} +``` + +That way, you can later reuse the same token multiple times (convenient at development time). + +Notice that the configuration file refers to a public (provisioner) key file called `provisioner.pem`. +We need to generate this file. + +You can generate an RSA key pair using `openssl` by running the following commands: + +```shell +$ openssl genrsa -out provisioner.key 2048 +$ openssl rsa -in provisioner.key -outform PEM -pubout -out provisioner.pem +``` + +Where `provisioner.key` is our private key and `provisioner.pem` the public counterpart. + +Congratulations, your Devolutions Gateway setup is complete. +Assuming the environment variable is properly set, you can run the executable: + +```shell +$ ./DevolutionsGateway # Linux / macOS +$ ./DevolutionsGateway.exe # Windows +``` + +#### Token generation + +The most straightforward way of generating a token if you don’t have a Rust toolchain installed is +the PowerShell package. + +```pwsh +$ Install-Module -Name DevolutionsGateway +``` + +You can then run the following: + +```pwsh +$ New-DGatewayToken -Type ASSOCIATION -PrivateKeyFile -DestinationHost -ApplicationProtocol rdp +``` + +### Run in dev mode + +First, run `npm install` in the [iron-remote-gui](../iron-remote-gui/) folder, +and then `npm install` in [iron-svelte-client](./) folder. + +You can then start the dev server with either: + +- `npm run dev` - Runs only the final application. +- `npm run dev-all` - Builds WASM module and `iron-remote-gui` prior to starting the dev server. +- `npm run dev-no-wasm` - Only builds `iron-remote-gui` prior to starting the dev server. + +You can build distribution files with `npm run build`. +Files are to be found in `./iron-svelte-client/build/browser` diff --git a/ironrdp-cli/README.md b/ironrdp-cli/README.md index 16aa96dd..1aa55898 100644 --- a/ironrdp-cli/README.md +++ b/ironrdp-cli/README.md @@ -6,17 +6,7 @@ an error. ## Prerequisites -Before connection to a Windows 10 RDP server please enable RFX feature: - -1. Run `gpedit.msc`. - -2. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/RemoteFX for Windows Server 2008 R2/Configure RemoteFX` - -3. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008 R2 SP1` - -4. Enable `Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Limit maximum color depth` - -5. Reboot. +You need to enable RemoteFX on the target machine (see top-level [README](../README.md)). ## Command-line Interface diff --git a/ironrdp-gui-client/README.md b/ironrdp-gui-client/README.md index 2192776c..df2473fe 100644 --- a/ironrdp-gui-client/README.md +++ b/ironrdp-gui-client/README.md @@ -1,4 +1,5 @@ # GUI client + 1. An experimental GUI based of glutin and glow library. 2. Sample command to run the ui client: ``` From 42ce3f88b4791de9d25fbe5d9337ddf29d3c91c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Feb 2023 11:25:11 -0500 Subject: [PATCH 0114/1273] feat(input): horizontal and vertical mouse wheel rotations (#68) Issue: ARC-131 --- ffi/wasm/src/input.rs | 9 +++- ironrdp-core/src/input/mouse.rs | 15 +++--- ironrdp-core/src/input/tests.rs | 12 ++--- ironrdp-gui-client/src/gui/input.rs | 4 +- ironrdp-input/src/lib.rs | 29 +++++++++-- ironrdp-input/tests/fastpath_packets.rs | 67 ++++++++++++++++++++++--- 6 files changed, 107 insertions(+), 29 deletions(-) diff --git a/ffi/wasm/src/input.rs b/ffi/wasm/src/input.rs index f070eb42..507b1eb2 100644 --- a/ffi/wasm/src/input.rs +++ b/ffi/wasm/src/input.rs @@ -1,4 +1,4 @@ -use ironrdp_input::{MouseButton, MousePosition, Operation, Scancode}; +use ironrdp_input::{MouseButton, MousePosition, Operation, Scancode, WheelRotations}; use smallvec::SmallVec; use wasm_bindgen::prelude::*; @@ -20,6 +20,13 @@ impl DeviceEvent { Self(Operation::MouseMove(MousePosition { x, y })) } + pub fn new_wheel_rotations(vertical: bool, rotation_units: i16) -> Self { + Self(Operation::WheelRotations(WheelRotations { + is_vertical: vertical, + rotation_units, + })) + } + pub fn new_key_pressed(scancode: u16) -> Self { Self(Operation::KeyPressed(Scancode::from(scancode))) } diff --git a/ironrdp-core/src/input/mouse.rs b/ironrdp-core/src/input/mouse.rs index fad3d3b6..01a0ab92 100644 --- a/ironrdp-core/src/input/mouse.rs +++ b/ironrdp-core/src/input/mouse.rs @@ -13,7 +13,7 @@ pub struct MousePdu { pub wheel_events: WheelEvents, pub movement_events: MovementEvents, pub button_events: ButtonEvents, - pub number_of_wheel_rotations: i16, + pub number_of_wheel_rotation_units: i16, pub x_position: u16, pub y_position: u16, } @@ -27,9 +27,10 @@ impl PduParsing for MousePdu { let wheel_events = WheelEvents::from_bits_truncate(pointer_flags); let movement_events = MovementEvents::from_bits_truncate(pointer_flags); let button_events = ButtonEvents::from_bits_truncate(pointer_flags); - let mut number_of_wheel_rotations = (pointer_flags & WHEEL_ROTATION_MASK) as i16; + + let mut number_of_wheel_rotation_units = i16::try_from(pointer_flags & WHEEL_ROTATION_MASK).unwrap(); if wheel_events.contains(WheelEvents::WHEEL_NEGATIVE) { - number_of_wheel_rotations *= -1; + number_of_wheel_rotation_units *= -1; } let x_position = stream.read_u16::()?; @@ -39,25 +40,25 @@ impl PduParsing for MousePdu { wheel_events, movement_events, button_events, - number_of_wheel_rotations, + number_of_wheel_rotation_units, x_position, y_position, }) } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - let wheel_negative_flag = if self.number_of_wheel_rotations < 0 { + let wheel_negative_flag = if self.number_of_wheel_rotation_units < 0 { WheelEvents::WHEEL_NEGATIVE } else { WheelEvents::empty() }; - let number_of_wheel_rotations = self.number_of_wheel_rotations as u16 & !WHEEL_ROTATION_MASK; + let number_of_wheel_rotation_units = self.number_of_wheel_rotation_units as u16 & !WHEEL_ROTATION_MASK; let flags = self.wheel_events.bits() | self.movement_events.bits() | self.button_events.bits() | wheel_negative_flag.bits() - | number_of_wheel_rotations; + | number_of_wheel_rotation_units; stream.write_u16::(flags)?; stream.write_u16::(self.x_position)?; diff --git a/ironrdp-core/src/input/tests.rs b/ironrdp-core/src/input/tests.rs index 45e4894c..2c24c8d7 100644 --- a/ironrdp-core/src/input/tests.rs +++ b/ironrdp-core/src/input/tests.rs @@ -17,7 +17,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 26, y_position: 1062 }), @@ -25,7 +25,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 27, y_position: 1062 }), @@ -33,7 +33,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 27, y_position: 1062 }), @@ -41,7 +41,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 26, y_position: 1063 }), @@ -49,7 +49,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 25, y_position: 1063 }), @@ -57,7 +57,7 @@ lazy_static! { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 25, y_position: 1064 }) diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs index 5589ba47..aefced70 100644 --- a/ironrdp-gui-client/src/gui/input.rs +++ b/ironrdp-gui-client/src/gui/input.rs @@ -68,7 +68,7 @@ pub fn translate_input_event( wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, }; Some(FastPathInputEvent::MouseEvent(pdu)) @@ -85,7 +85,7 @@ pub fn translate_input_event( wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, }; Some(FastPathInputEvent::MouseEvent(pdu)) diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 99d6cca7..f3fd480d 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -6,7 +6,6 @@ use ironrdp_core::input::mouse_x::PointerFlags; use ironrdp_core::input::{MousePdu, MouseXPdu}; use smallvec::SmallVec; -// TODO: mouse wheel // TODO: unicode keyboard event support /// Number associated to a mouse button. @@ -104,11 +103,19 @@ pub struct MousePosition { pub y: u16, } +/// Mouse wheel rotations. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct WheelRotations { + pub is_vertical: bool, + pub rotation_units: i16, // NOTE: max value is 0x01FF +} + #[derive(Debug, Clone)] pub enum Operation { MouseButtonPressed(MouseButton), MouseButtonReleased(MouseButton), MouseMove(MousePosition), + WheelRotations(WheelRotations), KeyPressed(Scancode), KeyReleased(Scancode), } @@ -187,7 +194,7 @@ impl Database { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::DOWN | flags, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, }), @@ -214,7 +221,7 @@ impl Database { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: flags, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, }), @@ -235,12 +242,24 @@ impl Database { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::MOVE, button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: position.x, y_position: position.y, })) } } + Operation::WheelRotations(rotations) => events.push(FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: if rotations.is_vertical { + WheelEvents::VERTICAL_WHEEL + } else { + WheelEvents::HORIZONTAL_WHEEL + }, + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::empty(), + number_of_wheel_rotation_units: rotations.rotation_units, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + })), Operation::KeyPressed(scancode) => { let was_pressed = self.keyboard.replace(scancode.as_idx(), true); @@ -290,7 +309,7 @@ impl Database { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: flags, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, }), diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index 68a2d8e0..ed01833f 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -28,7 +28,7 @@ fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: flags | ButtonEvents::DOWN, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -51,7 +51,7 @@ fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: flags, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -192,7 +192,7 @@ fn mouse_button_no_duplicate() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::LEFT_BUTTON | ButtonEvents::DOWN, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -200,7 +200,7 @@ fn mouse_button_no_duplicate() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -208,7 +208,7 @@ fn mouse_button_no_duplicate() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::RIGHT_BUTTON, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -216,7 +216,7 @@ fn mouse_button_no_duplicate() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -255,7 +255,7 @@ fn release_all() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -263,7 +263,7 @@ fn release_all() { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), button_events: ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, - number_of_wheel_rotations: 0, + number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), @@ -299,3 +299,54 @@ fn sync_lock_keys( assert_eq!(actual_flags, expected_flags); } + +#[test] +fn wheel_rotations() { + let mut db = Database::default(); + + let ops = [ + Operation::WheelRotations(WheelRotations { + is_vertical: false, + rotation_units: 2, + }), + Operation::WheelRotations(WheelRotations { + is_vertical: true, + rotation_units: -1, + }), + Operation::WheelRotations(WheelRotations { + is_vertical: false, + rotation_units: -1, + }), + ]; + + let actual_inputs = db.apply(ops); + + let expected_inputs = [ + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::HORIZONTAL_WHEEL, + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::empty(), + number_of_wheel_rotation_units: 2, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::VERTICAL_WHEEL, + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::empty(), + number_of_wheel_rotation_units: -1, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::HORIZONTAL_WHEEL, + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::empty(), + number_of_wheel_rotation_units: -1, + x_position: 0, + y_position: 0, + }), + ]; + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); +} From 145c905fc2f1ad62085127466c211dfdb9b8f351 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Mon, 13 Feb 2023 12:05:05 -0500 Subject: [PATCH 0115/1273] feat(web): add Kana modifier and use the sync lock key function (#70) --- iron-remote-gui/src/enums/LockKey.ts | 6 +- .../src/services/wasm-bridge.service.ts | 56 +++---------------- 2 files changed, 12 insertions(+), 50 deletions(-) diff --git a/iron-remote-gui/src/enums/LockKey.ts b/iron-remote-gui/src/enums/LockKey.ts index f5d1be4b..11fe34ee 100644 --- a/iron-remote-gui/src/enums/LockKey.ts +++ b/iron-remote-gui/src/enums/LockKey.ts @@ -1,8 +1,10 @@ export enum LockKey { CAPS_LOCK = "CapsLock", - NUMS_LOCK = "NumsLock", + NUM_LOCK = "NumLock", SCROLL_LOCK = "ScrollLock", + KANA_MODE = "KanaMode", "CapsLock" = CAPS_LOCK, "ScrollLock" = SCROLL_LOCK, - "NumsLock" = NUMS_LOCK, + "NumLock" = NUM_LOCK, + "KanaMode" = KANA_MODE } \ No newline at end of file diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/iron-remote-gui/src/services/wasm-bridge.service.ts index 3177b635..3efe8b93 100644 --- a/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -20,7 +20,6 @@ export class WasmBridgeService implements ServerBridgeService { session?: Session; modifierKeyPressed: ModifierKey[] = []; - lockKeyPressed: LockKey[] = []; constructor() { this.resize = this._resize.asObservable(); @@ -65,7 +64,7 @@ export class WasmBridgeService implements ServerBridgeService { } if (LockKey[evt.code]) { - this.updateLockKeyState(evt); + this.syncModifier(evt); } if (!evt.repeat || (!ModifierKey[evt.code] && !LockKey[evt.code])) { @@ -137,44 +136,13 @@ export class WasmBridgeService implements ServerBridgeService { syncModifier(evt: any): void { const mouseEvent = evt as MouseEvent; - const events = []; - - let syncCapsLock_On = mouseEvent.getModifierState(LockKey.CAPS_LOCK) && this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK) === -1; - let syncCapsLock_Off = !mouseEvent.getModifierState(LockKey.CAPS_LOCK) && this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK) > -1; - let syncNumsLock_On = mouseEvent.getModifierState(LockKey.NUMS_LOCK) && this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK) === -1; - let syncNumsLock_Off = !mouseEvent.getModifierState(LockKey.NUMS_LOCK) && this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK) > -1; - let syncScrollLock_On = mouseEvent.getModifierState(LockKey.SCROLL_LOCK) && this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK) === -1; - let syncScrollLock_Off = !mouseEvent.getModifierState(LockKey.SCROLL_LOCK) && this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK) > -1; - - if (syncCapsLock_On || syncCapsLock_Off) { - events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.CAPS_LOCK, OS.WINDOWS))); - events.push(DeviceEvent.new_key_released(scanCode(LockKey.CAPS_LOCK, OS.WINDOWS))); - if (syncCapsLock_On) { - this.lockKeyPressed.push(LockKey.CAPS_LOCK); - } else { - this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK), 1); - } - } - if (syncNumsLock_On || syncNumsLock_Off) { - events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.NUMS_LOCK, OS.WINDOWS))); - events.push(DeviceEvent.new_key_released(scanCode(LockKey.NUMS_LOCK, OS.WINDOWS))); - if (syncNumsLock_On) { - this.lockKeyPressed.push(LockKey.NUMS_LOCK); - } else { - this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK), 1); - } - } - if (syncScrollLock_On || syncScrollLock_Off) { - events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.SCROLL_LOCK, OS.WINDOWS))); - events.push(DeviceEvent.new_key_released(scanCode(LockKey.SCROLL_LOCK, OS.WINDOWS))); - if (syncScrollLock_On) { - this.lockKeyPressed.push(LockKey.SCROLL_LOCK); - } else { - this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK), 1); - } - } - - this.doTransactionFromDeviceEvents(events); + + let syncCapsLockActive = mouseEvent.getModifierState(LockKey.CAPS_LOCK); + let syncNumsLockActive = mouseEvent.getModifierState(LockKey.NUM_LOCK); + let syncScrollLockActive = mouseEvent.getModifierState(LockKey.SCROLL_LOCK); + let syncKanaModeActive = mouseEvent.getModifierState(LockKey.KANA_MODE); + + this.session.synchronize_lock_keys(syncScrollLockActive, syncNumsLockActive, syncCapsLockActive, syncKanaModeActive); } private updateModifierKeyState(evt) { @@ -185,14 +153,6 @@ export class WasmBridgeService implements ServerBridgeService { } } - private updateLockKeyState(evt) { - if (this.lockKeyPressed.indexOf(LockKey[evt.code]) === -1) { - this.lockKeyPressed.push(LockKey[evt.code]); - } else if (evt.type === 'keyup' && !evt.getModifierState(evt.code)) { - this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey[evt.code]), 1); - } - } - private doTransactionFromDeviceEvents(deviceEvents: DeviceEvent[]) { const transaction = InputTransaction.new(); deviceEvents.forEach(event => transaction.add_event(event)); From 053bec42ef6d6ed985cdefacee69a82d984ca332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Feb 2023 16:12:17 -0500 Subject: [PATCH 0116/1273] fix(input): MousePdu wheel rotation units encoding (#71) --- ffi/wasm/src/session.rs | 2 + ironrdp-core/src/input/mouse.rs | 60 ++++++++--------------- ironrdp-core/src/input/mouse_x.rs | 6 +-- ironrdp-core/src/input/tests.rs | 26 +++------- ironrdp-gui-client/src/gui/input.rs | 22 ++++----- ironrdp-input/src/lib.rs | 48 ++++++++----------- ironrdp-input/tests/fastpath_packets.rs | 64 ++++++++----------------- 7 files changed, 82 insertions(+), 146 deletions(-) diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index ab92aef7..c6e53fe9 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -227,6 +227,8 @@ impl Session { use ironrdp::core::input::fast_path::FastPathInput; use ironrdp::core::PduParsing as _; + trace!("Inputs: {inputs:?}"); + if !inputs.is_empty() { // PERF: unnecessary copy let fastpath_input = FastPathInput(inputs.into_vec()); diff --git a/ironrdp-core/src/input/mouse.rs b/ironrdp-core/src/input/mouse.rs index 01a0ab92..bb52d1dd 100644 --- a/ironrdp-core/src/input/mouse.rs +++ b/ironrdp-core/src/input/mouse.rs @@ -6,13 +6,9 @@ use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use super::InputEventError; use crate::PduParsing; -const WHEEL_ROTATION_MASK: u16 = 0x00FF; - #[derive(Debug, Clone, PartialEq, Eq)] pub struct MousePdu { - pub wheel_events: WheelEvents, - pub movement_events: MovementEvents, - pub button_events: ButtonEvents, + pub flags: PointerFlags, pub number_of_wheel_rotation_units: i16, pub x_position: u16, pub y_position: u16, @@ -22,24 +18,23 @@ impl PduParsing for MousePdu { type Error = InputEventError; fn from_buffer(mut stream: impl io::Read) -> Result { - let pointer_flags = stream.read_u16::()?; + let flags_raw = stream.read_u16::()?; - let wheel_events = WheelEvents::from_bits_truncate(pointer_flags); - let movement_events = MovementEvents::from_bits_truncate(pointer_flags); - let button_events = ButtonEvents::from_bits_truncate(pointer_flags); + let flags = PointerFlags::from_bits_truncate(flags_raw); - let mut number_of_wheel_rotation_units = i16::try_from(pointer_flags & WHEEL_ROTATION_MASK).unwrap(); - if wheel_events.contains(WheelEvents::WHEEL_NEGATIVE) { - number_of_wheel_rotation_units *= -1; - } + let wheel_rotations_bits = flags_raw as u8; // truncate + + let number_of_wheel_rotation_units = if flags.contains(PointerFlags::WHEEL_NEGATIVE) { + -i16::from(wheel_rotations_bits) + } else { + i16::from(wheel_rotations_bits) + }; let x_position = stream.read_u16::()?; let y_position = stream.read_u16::()?; Ok(Self { - wheel_events, - movement_events, - button_events, + flags, number_of_wheel_rotation_units, x_position, y_position, @@ -47,18 +42,15 @@ impl PduParsing for MousePdu { } fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { - let wheel_negative_flag = if self.number_of_wheel_rotation_units < 0 { - WheelEvents::WHEEL_NEGATIVE + let wheel_negative_bit = if self.number_of_wheel_rotation_units < 0 { + PointerFlags::WHEEL_NEGATIVE.bits() } else { - WheelEvents::empty() + PointerFlags::empty().bits() }; - let number_of_wheel_rotation_units = self.number_of_wheel_rotation_units as u16 & !WHEEL_ROTATION_MASK; - let flags = self.wheel_events.bits() - | self.movement_events.bits() - | self.button_events.bits() - | wheel_negative_flag.bits() - | number_of_wheel_rotation_units; + let wheel_rotations_bits = u16::from(self.number_of_wheel_rotation_units as u8); // truncate + + let flags = self.flags.bits() | wheel_negative_bit | wheel_rotations_bits; stream.write_u16::(flags)?; stream.write_u16::(self.x_position)?; @@ -73,24 +65,14 @@ impl PduParsing for MousePdu { } bitflags! { - pub struct WheelEvents: u16 { - const HORIZONTAL_WHEEL = 0x0400; - const VERTICAL_WHEEL = 0x0200; + pub struct PointerFlags: u16 { const WHEEL_NEGATIVE = 0x0100; - } -} - -bitflags! { - pub struct MovementEvents: u16 { + const VERTICAL_WHEEL = 0x0200; + const HORIZONTAL_WHEEL = 0x0400; const MOVE = 0x0800; - } -} - -bitflags! { - pub struct ButtonEvents: u16 { - const DOWN = 0x8000; const LEFT_BUTTON = 0x1000; const RIGHT_BUTTON = 0x2000; const MIDDLE_BUTTON_OR_WHEEL = 0x4000; + const DOWN = 0x8000; } } diff --git a/ironrdp-core/src/input/mouse_x.rs b/ironrdp-core/src/input/mouse_x.rs index 3e85dc52..91607fc0 100644 --- a/ironrdp-core/src/input/mouse_x.rs +++ b/ironrdp-core/src/input/mouse_x.rs @@ -8,7 +8,7 @@ use crate::PduParsing; #[derive(Debug, Clone, PartialEq, Eq)] pub struct MouseXPdu { - pub flags: PointerFlags, + pub flags: PointerXFlags, pub x_position: u16, pub y_position: u16, } @@ -17,7 +17,7 @@ impl PduParsing for MouseXPdu { type Error = InputEventError; fn from_buffer(mut stream: impl io::Read) -> Result { - let flags = PointerFlags::from_bits_truncate(stream.read_u16::()?); + let flags = PointerXFlags::from_bits_truncate(stream.read_u16::()?); let x_position = stream.read_u16::()?; let y_position = stream.read_u16::()?; @@ -42,7 +42,7 @@ impl PduParsing for MouseXPdu { } bitflags! { - pub struct PointerFlags: u16 { + pub struct PointerXFlags: u16 { const DOWN = 0x8000; const BUTTON1 = 0x0001; const BUTTON2 = 0x0002; diff --git a/ironrdp-core/src/input/tests.rs b/ironrdp-core/src/input/tests.rs index 2c24c8d7..a1020484 100644 --- a/ironrdp-core/src/input/tests.rs +++ b/ironrdp-core/src/input/tests.rs @@ -1,7 +1,7 @@ use lazy_static::lazy_static; use super::fast_path::{FastPathInput, FastPathInputEvent}; -use crate::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use crate::input::mouse::PointerFlags; use crate::input::MousePdu; use crate::PduParsing; @@ -14,49 +14,37 @@ const FASTPATH_INPUT_MESSAGE: [u8; 44] = [ lazy_static! { pub static ref FASTPATH_INPUT: FastPathInput = FastPathInput(vec![ FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, + flags: PointerFlags::DOWN | PointerFlags::LEFT_BUTTON, number_of_wheel_rotation_units: 0, x_position: 26, y_position: 1062 }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, x_position: 27, y_position: 1062 }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::LEFT_BUTTON, + flags: PointerFlags::LEFT_BUTTON, number_of_wheel_rotation_units: 0, x_position: 27, y_position: 1062 }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, x_position: 26, y_position: 1063 }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, x_position: 25, y_position: 1063 }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, x_position: 25, y_position: 1064 diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs index aefced70..42b930c1 100644 --- a/ironrdp-gui-client/src/gui/input.rs +++ b/ironrdp-gui-client/src/gui/input.rs @@ -5,7 +5,7 @@ use futures_util::AsyncWriteExt; use glutin::dpi::PhysicalPosition; use glutin::event::{ElementState, Event, WindowEvent}; use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; -use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; +use ironrdp::core::input::mouse::PointerFlags; use ironrdp::core::input::MousePdu; use ironrdp::core::PduParsing; use ironrdp::session::ErasedWriter; @@ -52,22 +52,20 @@ pub fn translate_input_event( WindowEvent::MouseInput { state, button, .. } => { if let Some(position) = last_position.as_ref() { let button = match button { - glutin::event::MouseButton::Left => ButtonEvents::LEFT_BUTTON, - glutin::event::MouseButton::Right => ButtonEvents::RIGHT_BUTTON, - glutin::event::MouseButton::Middle => ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, - glutin::event::MouseButton::Other(_) => ButtonEvents::empty(), + glutin::event::MouseButton::Left => PointerFlags::LEFT_BUTTON, + glutin::event::MouseButton::Right => PointerFlags::RIGHT_BUTTON, + glutin::event::MouseButton::Middle => PointerFlags::MIDDLE_BUTTON_OR_WHEEL, + glutin::event::MouseButton::Other(_) => PointerFlags::empty(), }; let button_events = button | match state { - ElementState::Pressed => ButtonEvents::DOWN, - ElementState::Released => ButtonEvents::empty(), + ElementState::Pressed => PointerFlags::DOWN, + ElementState::Released => PointerFlags::empty(), }; let pdu = MousePdu { x_position: position.x as u16, y_position: position.y as u16, - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events, + flags: button_events, number_of_wheel_rotation_units: 0, }; @@ -82,9 +80,7 @@ pub fn translate_input_event( let pdu = MousePdu { x_position: position.x as u16, y_position: position.y as u16, - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, }; diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index f3fd480d..1c660e73 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -1,8 +1,8 @@ use bitvec::array::BitArray; use bitvec::BitArr; use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; -use ironrdp_core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; -use ironrdp_core::input::mouse_x::PointerFlags; +use ironrdp_core::input::mouse::PointerFlags; +use ironrdp_core::input::mouse_x::PointerXFlags; use ironrdp_core::input::{MousePdu, MouseXPdu}; use smallvec::SmallVec; @@ -107,7 +107,7 @@ pub struct MousePosition { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct WheelRotations { pub is_vertical: bool, - pub rotation_units: i16, // NOTE: max value is 0x01FF + pub rotation_units: i16, } #[derive(Debug, Clone)] @@ -191,15 +191,13 @@ impl Database { if !was_pressed { let event = match MouseButtonFlags::from(button) { MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::DOWN | flags, + flags: PointerFlags::DOWN | flags, number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, }), MouseButtonFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { - flags: PointerFlags::DOWN | flags, + flags: PointerXFlags::DOWN | flags, x_position: self.mouse_position.x, y_position: self.mouse_position.y, }), @@ -218,9 +216,7 @@ impl Database { if was_pressed { let event = match MouseButtonFlags::from(button) { MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: flags, + flags, number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, @@ -239,9 +235,7 @@ impl Database { if position != self.mouse_position { self.mouse_position = position; events.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), + flags: PointerFlags::MOVE, number_of_wheel_rotation_units: 0, x_position: position.x, y_position: position.y, @@ -249,13 +243,11 @@ impl Database { } } Operation::WheelRotations(rotations) => events.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: if rotations.is_vertical { - WheelEvents::VERTICAL_WHEEL + flags: if rotations.is_vertical { + PointerFlags::VERTICAL_WHEEL } else { - WheelEvents::HORIZONTAL_WHEEL + PointerFlags::HORIZONTAL_WHEEL }, - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::empty(), number_of_wheel_rotation_units: rotations.rotation_units, x_position: self.mouse_position.x, y_position: self.mouse_position.y, @@ -306,9 +298,7 @@ impl Database { let event = match MouseButtonFlags::from(MouseButton::from(button_id)) { MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: flags, + flags, number_of_wheel_rotation_units: 0, x_position: self.mouse_position.x, y_position: self.mouse_position.y, @@ -372,19 +362,19 @@ pub fn synchronize_event(scroll_lock: bool, num_lock: bool, caps_lock: bool, kan } enum MouseButtonFlags { - Button(ButtonEvents), - Pointer(PointerFlags), + Button(PointerFlags), + Pointer(PointerXFlags), } impl From for MouseButtonFlags { fn from(value: MouseButton) -> Self { match value.0 { - MouseButton::LEFT_VAL => Self::Button(ButtonEvents::LEFT_BUTTON), - MouseButton::MIDDLE_VAL => Self::Button(ButtonEvents::MIDDLE_BUTTON_OR_WHEEL), - MouseButton::RIGHT_VAL => Self::Button(ButtonEvents::RIGHT_BUTTON), - MouseButton::X1_VAL => Self::Pointer(PointerFlags::BUTTON1), - MouseButton::X2_VAL => Self::Pointer(PointerFlags::BUTTON2), - _ => Self::Button(ButtonEvents::empty()), + MouseButton::LEFT_VAL => Self::Button(PointerFlags::LEFT_BUTTON), + MouseButton::MIDDLE_VAL => Self::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL), + MouseButton::RIGHT_VAL => Self::Button(PointerFlags::RIGHT_BUTTON), + MouseButton::X1_VAL => Self::Pointer(PointerXFlags::BUTTON1), + MouseButton::X2_VAL => Self::Pointer(PointerXFlags::BUTTON2), + _ => Self::Button(PointerFlags::empty()), } } } diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index ed01833f..3eb21c58 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -1,21 +1,21 @@ use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags, SynchronizeFlags}; -use ironrdp_core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; -use ironrdp_core::input::mouse_x::PointerFlags; +use ironrdp_core::input::mouse::PointerFlags; +use ironrdp_core::input::mouse_x::PointerXFlags; use ironrdp_core::input::{MousePdu, MouseXPdu}; use ironrdp_input::*; use rstest::rstest; enum MouseFlags { - Button(ButtonEvents), - Pointer(PointerFlags), + Button(PointerFlags), + Pointer(PointerXFlags), } #[rstest] -#[case::left(MouseButton::LEFT, MouseFlags::Button(ButtonEvents::LEFT_BUTTON))] -#[case::middle(MouseButton::MIDDLE, MouseFlags::Button(ButtonEvents::MIDDLE_BUTTON_OR_WHEEL))] -#[case::right(MouseButton::RIGHT, MouseFlags::Button(ButtonEvents::RIGHT_BUTTON))] -#[case::x1(MouseButton::X1, MouseFlags::Pointer(PointerFlags::BUTTON1))] -#[case::x2(MouseButton::X2, MouseFlags::Pointer(PointerFlags::BUTTON2))] +#[case::left(MouseButton::LEFT, MouseFlags::Button(PointerFlags::LEFT_BUTTON))] +#[case::middle(MouseButton::MIDDLE, MouseFlags::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL))] +#[case::right(MouseButton::RIGHT, MouseFlags::Button(PointerFlags::RIGHT_BUTTON))] +#[case::x1(MouseButton::X1, MouseFlags::Pointer(PointerXFlags::BUTTON1))] +#[case::x2(MouseButton::X2, MouseFlags::Pointer(PointerXFlags::BUTTON2))] fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) { let mut db = Database::default(); @@ -25,15 +25,13 @@ fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) let expected_input_event = match expected_flag { MouseFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: flags | ButtonEvents::DOWN, + flags: flags | PointerFlags::DOWN, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), MouseFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { - flags: flags | PointerFlags::DOWN, + flags: flags | PointerXFlags::DOWN, x_position: 0, y_position: 0, }), @@ -48,9 +46,7 @@ fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) let expected_input_event = match expected_flag { MouseFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: flags, + flags, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, @@ -189,33 +185,25 @@ fn mouse_button_no_duplicate() { let expected_inputs = [ FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::LEFT_BUTTON | ButtonEvents::DOWN, + flags: PointerFlags::LEFT_BUTTON | PointerFlags::DOWN, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, + flags: PointerFlags::RIGHT_BUTTON | PointerFlags::DOWN, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::RIGHT_BUTTON, + flags: PointerFlags::RIGHT_BUTTON, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, + flags: PointerFlags::RIGHT_BUTTON | PointerFlags::DOWN, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, @@ -252,17 +240,13 @@ fn release_all() { let expected_inputs = [ FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::LEFT_BUTTON, + flags: PointerFlags::LEFT_BUTTON, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, + flags: PointerFlags::MIDDLE_BUTTON_OR_WHEEL, number_of_wheel_rotation_units: 0, x_position: 0, y_position: 0, @@ -323,25 +307,19 @@ fn wheel_rotations() { let expected_inputs = [ FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::HORIZONTAL_WHEEL, - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::empty(), + flags: PointerFlags::HORIZONTAL_WHEEL, number_of_wheel_rotation_units: 2, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::VERTICAL_WHEEL, - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::empty(), + flags: PointerFlags::VERTICAL_WHEEL, number_of_wheel_rotation_units: -1, x_position: 0, y_position: 0, }), FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::HORIZONTAL_WHEEL, - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::empty(), + flags: PointerFlags::HORIZONTAL_WHEEL, number_of_wheel_rotation_units: -1, x_position: 0, y_position: 0, From d9e2de84e68621afc52c47ab5bd8c6394d933e8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Feb 2023 16:17:08 -0500 Subject: [PATCH 0117/1273] docs: update svelte README (#69) --- iron-svelte-client/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/iron-svelte-client/README.md b/iron-svelte-client/README.md index d8003e7f..cdb343e4 100644 --- a/iron-svelte-client/README.md +++ b/iron-svelte-client/README.md @@ -20,11 +20,13 @@ The core of the web client is to be found in `iron-remote-gui` folder provided a #### Devolutions Gateway setup -Web client is using a special extension to RDP protocol that is only supported in the latest Devolutions Gateway builds. +Web client is using a special extension to RDP protocol. +This extension is available starting Devolutions Gateway v2023.1.1. +However, this version not yet officially published. -You can either: +Therefore, you need to either: -- Download a binary prebuilt from master such as [this one](https://devolutions.sharepoint.com/:f:/s/Prereleases/Ei4GzG25BWhKtmrJiurIjDEBkd8j1VWy4fzaWR42ew4f8g?e=H3bFFM). +- Download a binary prebuilt from master such as [this one](https://devolutions.sharepoint.com/:f:/s/Prereleases/En3Y3T3OIuFFpYknTZYZfIYBXo_OpCubXBKd8wpjZ7Qrtg?e=MBVz53). - Build [master](https://github.com/Devolutions/devolutions-gateway/tree/master) yourself. Simply [install the Rust toolchain](https://rustup.rs/) and run `cargo build --release`. Binary will be found in the `./target/release` folder. From 236f42ec5cd653d397772e04f108983245453dfb Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Mon, 13 Feb 2023 16:50:03 -0500 Subject: [PATCH 0118/1273] feat(web): mouse wheel support (#72) --- iron-remote-gui/src/enums/SessionEventType.ts | 5 ++++ .../src/interfaces/session-event.model.ts | 6 ++++ iron-remote-gui/src/iron-remote-gui.svelte | 14 ++++++++- iron-remote-gui/src/main.ts | 2 ++ .../src/services/server-bridge.service.ts | 2 ++ .../src/services/tauri-bridge.service.ts | 4 +++ .../src/services/user-interaction-service.ts | 14 ++++++--- .../src/services/wasm-bridge.service.ts | 30 +++++++++++++++---- iron-svelte-client/src/lib/login/login.svelte | 11 ++++--- .../lib/remote-screen/remote-screen.svelte | 13 ++++++-- 10 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 iron-remote-gui/src/enums/SessionEventType.ts create mode 100644 iron-remote-gui/src/interfaces/session-event.model.ts diff --git a/iron-remote-gui/src/enums/SessionEventType.ts b/iron-remote-gui/src/enums/SessionEventType.ts new file mode 100644 index 00000000..3cf24383 --- /dev/null +++ b/iron-remote-gui/src/enums/SessionEventType.ts @@ -0,0 +1,5 @@ +export enum SessionEventType { + STARTED, + TERMINATED, + ERROR +} diff --git a/iron-remote-gui/src/interfaces/session-event.model.ts b/iron-remote-gui/src/interfaces/session-event.model.ts new file mode 100644 index 00000000..e3a96967 --- /dev/null +++ b/iron-remote-gui/src/interfaces/session-event.model.ts @@ -0,0 +1,6 @@ +import type {SessionEventType} from '../enums/SessionEventType'; + +export interface SessionEvent { + type: SessionEventType, + data?: any +} diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte index 22c5812f..c72e789b 100644 --- a/iron-remote-gui/src/iron-remote-gui.svelte +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -16,6 +16,7 @@ export let flexcenter = 'true'; let isVisible = false; + let capturingInputs = false; let currentComponent = get_current_component(); let canvas; let canvasCtx; @@ -208,11 +209,17 @@ userInteractionService.setMouseButtonState(state, isDown); } + function mouseWheel(evt) { + userInteractionService.mouseWheel(evt); + } + function setMouseIn(evt) { + capturingInputs = true; userInteractionService.mouseIn(evt); } function setMouseOut(evt) { + capturingInputs = false; userInteractionService.mouseOut(evt); } @@ -273,7 +280,7 @@ }); -
      event.preventDefault()} + on:wheel={mouseWheel} id="renderer" />
      @@ -299,6 +307,10 @@ .screen-wrapper { position: relative; } + + .capturing-inputs { + border: solid rgba(0,97,166,.7) 1px; + } canvas { width: 100%; diff --git a/iron-remote-gui/src/main.ts b/iron-remote-gui/src/main.ts index bdfe35e2..a1b0b43f 100644 --- a/iron-remote-gui/src/main.ts +++ b/iron-remote-gui/src/main.ts @@ -2,3 +2,5 @@ import IronRemoteGui from './iron-remote-gui.svelte'; export * from './services/user-interaction-service'; export type {NewSessionInfo, ResizeEvent, ServerRect, DesktopSize} from './services/server-bridge.service'; +export type {SessionEvent} from './interfaces/session-event.model'; +export type {SessionEventType} from './enums/SessionEventType'; \ No newline at end of file diff --git a/iron-remote-gui/src/services/server-bridge.service.ts b/iron-remote-gui/src/services/server-bridge.service.ts index 9e30dae1..2938116e 100644 --- a/iron-remote-gui/src/services/server-bridge.service.ts +++ b/iron-remote-gui/src/services/server-bridge.service.ts @@ -66,5 +66,7 @@ export abstract class ServerBridgeService { abstract sendSpecialCombination(specialCombination: SpecialCombination):void; abstract syncModifier(evt: any): void; + + abstract mouseWheel(vertical: boolean, rotation: number): void; } diff --git a/iron-remote-gui/src/services/tauri-bridge.service.ts b/iron-remote-gui/src/services/tauri-bridge.service.ts index 340e96df..ef0f12ce 100644 --- a/iron-remote-gui/src/services/tauri-bridge.service.ts +++ b/iron-remote-gui/src/services/tauri-bridge.service.ts @@ -24,6 +24,10 @@ export class TauriBridgeService implements ServerBridgeService { loggingService.info('Native bridge initialized.'); } + mouseWheel(vertical: boolean, rotation: number): void { + throw new Error("Method not implemented."); + } + sendSpecialCombination(specialCombination: SpecialCombination): void { throw new Error("Method not implemented."); } diff --git a/iron-remote-gui/src/services/user-interaction-service.ts b/iron-remote-gui/src/services/user-interaction-service.ts index 963ad176..960b5e99 100644 --- a/iron-remote-gui/src/services/user-interaction-service.ts +++ b/iron-remote-gui/src/services/user-interaction-service.ts @@ -2,7 +2,7 @@ import {BehaviorSubject, Observable, Subject} from 'rxjs'; import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; import {MouseButtonState, SpecialCombination} from './server-bridge.service'; import {loggingService} from "./logging.service"; - +import type {SessionEvent} from '../interfaces/session-event.model'; export interface MousePosition { x: number; @@ -43,8 +43,8 @@ export class UserInteractionService { private changeVisibility: Subject = new Subject(); changeVisibilityObservable: Observable = this.changeVisibility.asObservable(); - private sessionEvent: Subject = new Subject(); - sessionObserver: Observable = this.sessionEvent.asObservable(); + private sessionEvent: Subject = new Subject(); + sessionObserver: Observable = this.sessionEvent.asObservable(); private serverBridge: ServerBridgeService; @@ -118,10 +118,16 @@ export class UserInteractionService { this.scale.next(scale); } - raiseSessionEvent(event: any) { + raiseSessionEvent(event: SessionEvent) { this.sessionEvent.next(event); } + mouseWheel(event) { + let vertical = event.deltaY !== 0; + let rotations = vertical ? event.deltaY : event.deltaX; + this.serverBridge.mouseWheel(vertical, -rotations); + } + exposedFunctions: IRGUserInteraction = { setMousePosition: this.setMousePosition.bind(this), setMouseButtonState: this.setMouseButtonState.bind(this), diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/iron-remote-gui/src/services/wasm-bridge.service.ts index 3efe8b93..7f1127e6 100644 --- a/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -10,6 +10,7 @@ import {LogType} from '../enums/LogType'; import {OS} from '../enums/OS'; import {ModifierKey} from '../enums/ModifierKey'; import {LockKey} from '../enums/LockKey'; +import {SessionEventType} from '../enums/SessionEventType'; export class WasmBridgeService implements ServerBridgeService { private _resize: Subject = new Subject(); @@ -92,28 +93,41 @@ export class WasmBridgeService implements ServerBridgeService { return from(sessionBuilder.connect()).pipe( catchError(err => { loggingService.error("error:", err); - userInteractionService.raiseSessionEvent(err); + userInteractionService.raiseSessionEvent({ + type: SessionEventType.ERROR, + data: err + }); return of(err); }), filter(result => result instanceof Session), map((session: Session) => { from(session.run()).pipe( catchError(err => { - userInteractionService.raiseSessionEvent(err); + userInteractionService.raiseSessionEvent({ + type: SessionEventType.ERROR, + data: err + }); return of(err); }) ).subscribe(() => { - userInteractionService.raiseSessionEvent("Session was terminated."); + userInteractionService.raiseSessionEvent({ + type: SessionEventType.TERMINATED, + data: "Session was terminated." + }); }); return session; }), map((session: Session) => { - loggingService.info('Session started.') + loggingService.info('Session started.'); this.session = session; this._resize.next({ desktop_size: session.desktop_size(), session_id: 0 }); + userInteractionService.raiseSessionEvent({ + type: SessionEventType.STARTED, + data: 'Session started' + }); return { session_id: 0, initial_desktop_size: session.desktop_size(), @@ -136,15 +150,19 @@ export class WasmBridgeService implements ServerBridgeService { syncModifier(evt: any): void { const mouseEvent = evt as MouseEvent; - + let syncCapsLockActive = mouseEvent.getModifierState(LockKey.CAPS_LOCK); let syncNumsLockActive = mouseEvent.getModifierState(LockKey.NUM_LOCK); let syncScrollLockActive = mouseEvent.getModifierState(LockKey.SCROLL_LOCK); let syncKanaModeActive = mouseEvent.getModifierState(LockKey.KANA_MODE); - + this.session.synchronize_lock_keys(syncScrollLockActive, syncNumsLockActive, syncCapsLockActive, syncKanaModeActive); } + mouseWheel(vertical: boolean, rotation: number) { + this.doTransactionFromDeviceEvents([DeviceEvent.new_wheel_rotations(vertical, rotation)]); + } + private updateModifierKeyState(evt) { if (this.modifierKeyPressed.indexOf(ModifierKey[evt.code]) === -1) { this.modifierKeyPressed.push(ModifierKey[evt.code]); diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte index 228906b4..5079e4b1 100644 --- a/iron-svelte-client/src/lib/login/login.svelte +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -21,9 +21,9 @@ }); const initListeners = () => { - userInteraction.sessionListener.subscribe(error => { - console.error(`Iron-Remote-Gui Error: `, error); - toastMessage = error; + userInteraction.sessionListener.subscribe(event => { + console.error(`Iron-Remote-Gui Error: `, event); + toastMessage = event.data; ui('#toast-error'); }); } @@ -33,7 +33,8 @@ userInteraction.connect(username, password, host, authtoken) .pipe( catchError(err => { - console.error(err); + toastMessage = err; + ui('#toast'); return of(null); }), filter(result => !!result) @@ -48,7 +49,6 @@ desktopSize: start_info.initial_desktop_size, active: true })); - userInteraction.setVisibility(true); } else if (start_info.initial_desktop_size !== null) { //Browser toastMessage = 'Success'; ui('#toast'); @@ -57,7 +57,6 @@ desktopSize: start_info.initial_desktop_size, active: true })); - userInteraction.setVisibility(true); } else { toastMessage = 'Failure'; ui('#toast'); diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index 99e518ca..6c10d31b 100644 --- a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -1,10 +1,19 @@ - + +
      + info + {toastMessage} +
      + +
      + Error + {toastMessage} +
      diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index 6c10d31b..128cc4b7 100644 --- a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -1,6 +1,10 @@ -
      +
      - +
      - -
      \ No newline at end of file +
      + + \ No newline at end of file diff --git a/iron-svelte-client/src/routes/session/+page.svelte b/iron-svelte-client/src/routes/session/+page.svelte index 4cd5f2dd..109efb80 100644 --- a/iron-svelte-client/src/routes/session/+page.svelte +++ b/iron-svelte-client/src/routes/session/+page.svelte @@ -1,15 +1,15 @@ - - {#if showLogin} - - {/if} - + +{#if $showLogin} + +{/if} + + + + diff --git a/iron-svelte-client/src/services/session.service.ts b/iron-svelte-client/src/services/session.service.ts index 010cd34a..b5769295 100644 --- a/iron-svelte-client/src/services/session.service.ts +++ b/iron-svelte-client/src/services/session.service.ts @@ -5,22 +5,38 @@ import {Session} from "../models/session"; import type {IRGUserInteraction} from '../../static/iron-remote-gui'; export const userInteractionService: Writable = writable(); -export const currentSession = writable(new Session('New Session')); +export const currentSession: Writable = writable(); + +let _currentSession: Session = new Session('NewSession'); let sessions: Session[] = new Array(); let sessionCounter = 0; +addSession('NewSession'); + function setCurrentSession(session: Session) { currentSession.set(session); + _currentSession = session; } -function setCurrentSessionById(id: Guid) { +export function getCurrentSession(): Session { + return _currentSession; +} + +export function setCurrentSessionActive(active: boolean) { + currentSession.update(session => { + session.active = true; + return session; + }); +} + +export function setCurrentSessionById(id: Guid) { const session = sessions.find(session => session.id.equals(id)); if (session) { setCurrentSession(session); } } -function addSession(name: string) { +export function addSession(name: string) { sessionCounter++; const newSession = new Session(name); sessions.push(newSession); @@ -29,7 +45,7 @@ function addSession(name: string) { } } -function closeSession(id: Guid) { +export function closeSession(id: Guid) { sessionCounter--; sessions = sessions.filter(session => !session.id.equals(id)); if (sessionCounter == 1) { From e2ee180f7ea20dc51530be4d77c7275d12121f02 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Tue, 14 Feb 2023 15:11:18 -0500 Subject: [PATCH 0121/1273] chore(iron-remote-gui): bump version to 0.3.0 (#75) --- iron-remote-gui/package.json | 2 +- iron-remote-gui/public/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iron-remote-gui/package.json b/iron-remote-gui/package.json index cefe83c0..926616a8 100644 --- a/iron-remote-gui/package.json +++ b/iron-remote-gui/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.1.0", + "version": "0.3.0", "type": "module", "private": true, "scripts": { diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 9e30193d..7bbf7624 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.2.0", + "version": "0.3.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 5d987265f19ab76caad2ae23f005eb24df9db7ee Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Fri, 24 Feb 2023 16:25:58 +0200 Subject: [PATCH 0122/1273] fix: build with native-tls feature (#77) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Building with native-tls is essential cause rustls can’t connect to Windows 7 and 8.1 using enhanced SSL cipher suites. --- ironrdp-cli/Cargo.toml | 4 ++-- ironrdp-cli/src/main.rs | 4 ++-- ironrdp-devolutions-gateway/src/lib.rs | 1 - ironrdp-gui-client/Cargo.toml | 4 ++-- ironrdp-gui-client/src/main.rs | 4 ++-- ironrdp-session/Cargo.toml | 4 ++++ ironrdp-session/src/errors.rs | 21 ++++++++++----------- ironrdp/Cargo.toml | 5 +++++ 8 files changed, 27 insertions(+), 20 deletions(-) diff --git a/ironrdp-cli/Cargo.toml b/ironrdp-cli/Cargo.toml index b47d6d72..38d1e5ac 100644 --- a/ironrdp-cli/Cargo.toml +++ b/ironrdp-cli/Cargo.toml @@ -11,8 +11,8 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:tokio-rustls"] -native-tls = ["dep:async-native-tls"] +rustls = ["dep:tokio-rustls", "ironrdp/rustls"] +native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] [dependencies] diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs index e5f69901..cbafd16d 100644 --- a/ironrdp-cli/src/main.rs +++ b/ironrdp-cli/src/main.rs @@ -160,7 +160,7 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< // domain is an empty string because client accepts IP address in the cli match connector.connect("", stream).await { Ok(tls) => tls, - Err(err) => return Err(RdpError::TlsHandshakeError(err)), + Err(err) => return Err(RdpError::TlsHandshake(err)), } }; @@ -184,7 +184,7 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< let server_public_key = { let cert = tls_stream .peer_certificate() - .map_err(RdpError::TlsConnectorError)? + .map_err(RdpError::TlsConnector)? .ok_or(RdpError::MissingPeerCertificate)?; get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? }; diff --git a/ironrdp-devolutions-gateway/src/lib.rs b/ironrdp-devolutions-gateway/src/lib.rs index 6aa2831d..976b7b45 100644 --- a/ironrdp-devolutions-gateway/src/lib.rs +++ b/ironrdp-devolutions-gateway/src/lib.rs @@ -1,6 +1,5 @@ // Re-export der crate for convenience pub use der; - use der::asn1::OctetString; pub const BASE_VERSION: u64 = 3389; diff --git a/ironrdp-gui-client/Cargo.toml b/ironrdp-gui-client/Cargo.toml index 7226e7b2..ef960ae3 100644 --- a/ironrdp-gui-client/Cargo.toml +++ b/ironrdp-gui-client/Cargo.toml @@ -11,8 +11,8 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:tokio-rustls"] -native-tls = ["dep:async-native-tls"] +rustls = ["dep:tokio-rustls", "ironrdp/rustls"] +native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] [dependencies] diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-gui-client/src/main.rs index 0319ba75..27387683 100644 --- a/ironrdp-gui-client/src/main.rs +++ b/ironrdp-gui-client/src/main.rs @@ -196,7 +196,7 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< // domain is an empty string because client accepts IP address in the cli match connector.connect("", stream).await { Ok(tls) => tls, - Err(err) => return Err(RdpError::TlsHandshakeError(err)), + Err(err) => return Err(RdpError::TlsHandshake(err)), } }; @@ -220,7 +220,7 @@ async fn establish_tls(stream: tokio_util::compat::Compat) -> Result< let server_public_key = { let cert = tls_stream .peer_certificate() - .map_err(RdpError::TlsConnectorError)? + .map_err(RdpError::TlsConnector)? .ok_or(RdpError::MissingPeerCertificate)?; get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? }; diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index f6016f72..63558668 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -10,6 +10,8 @@ authors = ["Devolutions Inc. "] [features] default = [] +rustls = ["dep:tokio-rustls"] +native-tls = ["dep:async-native-tls"] dgw_ext = [] [dependencies] @@ -31,3 +33,5 @@ futures-util = "0.3" thiserror = "1.0.37" rand_core = "0.6.4" x509-cert = "0.1.0" # TODO: consider removing dependency on this one in `ironrdp-session` +async-native-tls = { version = "0.4", default-features = false, optional = true } +tokio-rustls = { version = "0.23", default-features = false, optional = true } diff --git a/ironrdp-session/src/errors.rs b/ironrdp-session/src/errors.rs index 55833557..26d460b7 100644 --- a/ironrdp-session/src/errors.rs +++ b/ironrdp-session/src/errors.rs @@ -27,16 +27,16 @@ pub enum RdpError { InvalidResponse(String), #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[error("TLS connector error")] - TlsConnector(#[source] native_tls::Error), + TlsConnector(#[source] async_native_tls::Error), #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[error("TLS handshake error")] - TlsHandshake(#[source] native_tls::Error), + TlsHandshake(#[source] async_native_tls::Error), #[cfg(feature = "rustls")] #[error("TLS connector error")] - TlsConnector(#[source] rustls::Error), + TlsConnector(#[source] tokio_rustls::rustls::Error), #[cfg(feature = "rustls")] #[error("TLS handshake error")] - TlsHandshake(#[source] rustls::Error), + TlsHandshake(#[source] tokio_rustls::rustls::Error), #[error("CredSSP error")] CredSsp(#[from] sspi::Error), #[error("CredSSP TSRequest error")] @@ -109,17 +109,16 @@ pub enum RdpError { LockPoisoned, #[cfg(all(feature = "native-tls", not(feature = "rustls")))] #[error("Invalid DER structure")] - DerEncode(#[source] native_tls::Error), + DerEncode(#[source] async_native_tls::Error), } #[cfg(feature = "rustls")] -impl From for RdpError { - fn from(e: rustls::Error) -> Self { +impl From for RdpError { + fn from(e: tokio_rustls::rustls::Error) -> Self { match e { - rustls::Error::InappropriateHandshakeMessage { .. } | rustls::Error::HandshakeNotComplete => { - RdpError::TlsHandshakeError(e) - } - _ => RdpError::TlsConnectorError(e), + tokio_rustls::rustls::Error::InappropriateHandshakeMessage { .. } + | tokio_rustls::rustls::Error::HandshakeNotComplete => RdpError::TlsHandshake(e), + _ => RdpError::TlsConnector(e), } } } diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml index ae8825ee..206575d5 100644 --- a/ironrdp/Cargo.toml +++ b/ironrdp/Cargo.toml @@ -10,6 +10,11 @@ authors = ["Devolutions Inc. "] description = "A Rust implementation of the Microsoft Remote Desktop Protocol" keywords = ["rdp", "remote", "desktop", "protocol"] +[features] +default = [] +rustls = ["ironrdp-session/rustls"] +native-tls = ["ironrdp-session/native-tls"] + [dependencies] ironrdp-core = { path = "../ironrdp-core" } ironrdp-session = { path = "../ironrdp-session" } From 137c9789973fae6aa49a49e0e02417983f1ded19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 27 Feb 2023 16:23:59 -0500 Subject: [PATCH 0123/1273] feat: compressed RLE bitmap codec (#78) Issue: ARC-112 --- iron-remote-gui/src/iron-remote-gui.svelte | 2 +- ironrdp-core/src/basic_output/bitmap.rs | 63 +- ironrdp-core/src/basic_output/bitmap/tests.rs | 9 +- ironrdp-core/src/basic_output/fast_path.rs | 6 +- ironrdp-core/src/gcc/core_data/client.rs | 16 +- ironrdp-core/src/gcc/core_data/client/test.rs | 4 +- ironrdp-core/src/lib.rs | 22 + ironrdp-graphics/Cargo.toml | 3 + ironrdp-graphics/src/image_processing.rs | 2 +- ironrdp-graphics/src/lib.rs | 1 + ironrdp-graphics/src/rle.rs | 702 ++++++++++++++++++ ironrdp-graphics/tests/rle.rs | 46 ++ .../src/active_session/fast_path.rs | 64 +- ironrdp-session/src/connection_sequence.rs | 2 +- .../src/connection_sequence/user_info.rs | 8 +- ironrdp-session/src/image.rs | 28 + 16 files changed, 919 insertions(+), 59 deletions(-) create mode 100644 ironrdp-graphics/src/rle.rs create mode 100644 ironrdp-graphics/tests/rle.rs diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte index c72e789b..441bef07 100644 --- a/iron-remote-gui/src/iron-remote-gui.svelte +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -78,7 +78,7 @@ canvas.height = evt.desktop_size.height; scaleSession(scale); }); - serverBridge.updateImage.pipe(throttleTime(1000 / 60)).subscribe(({pixels, infos}) => { + serverBridge.updateImage.subscribe(({pixels, infos}) => { draw(pixels, infos); }); } diff --git a/ironrdp-core/src/basic_output/bitmap.rs b/ironrdp-core/src/basic_output/bitmap.rs index e8b5d551..793ae0cb 100644 --- a/ironrdp-core/src/basic_output/bitmap.rs +++ b/ironrdp-core/src/basic_output/bitmap.rs @@ -16,13 +16,13 @@ pub const COMPRESSED_DATA_HEADER_SIZE: usize = 8; pub const BITMAP_DATA_MAIN_DATA_SIZE: usize = 12; pub const FIRST_ROW_SIZE_VALUE: u16 = 0; +/// TS_UPDATE_BITMAP_DATA #[derive(Debug, Clone, PartialEq, Eq)] -pub struct Bitmap<'a> { - pub rectangles_number: usize, +pub struct BitmapUpdateData<'a> { pub rectangles: Vec>, } -impl<'a> PduBufferParsing<'a> for Bitmap<'a> { +impl<'a> PduBufferParsing<'a> for BitmapUpdateData<'a> { type Error = BitmapError; fn from_buffer_consume(buffer: &mut &'a [u8]) -> Result { @@ -38,15 +38,12 @@ impl<'a> PduBufferParsing<'a> for Bitmap<'a> { rectangles.push(BitmapData::from_buffer_consume(buffer)?); } - Ok(Bitmap { - rectangles_number, - rectangles, - }) + Ok(BitmapUpdateData { rectangles }) } fn to_buffer_consume(&self, buffer: &mut &mut [u8]) -> Result<(), Self::Error> { buffer.write_u16::(BitmapFlags::BITMAP_UPDATE_TYPE.bits())?; - buffer.write_u16::(self.rectangles_number as u16)?; + buffer.write_u16::(u16::try_from(self.rectangles.len()).unwrap())?; for bitmap_data in self.rectangles.iter() { bitmap_data.to_buffer_consume(buffer)?; } @@ -59,6 +56,7 @@ impl<'a> PduBufferParsing<'a> for Bitmap<'a> { } } +/// TS_BITMAP_DATA #[derive(Clone, PartialEq, Eq)] pub struct BitmapData<'a> { pub rectangle: Rectangle, @@ -81,7 +79,11 @@ impl<'a> PduBufferParsing<'a> for BitmapData<'a> { let height = buffer.read_u16::()?; let bits_per_pixel = buffer.read_u16::()?; - let compression_flags = Compression::from_bits_truncate(buffer.read_u16::()?); + + let flags = buffer.read_u16::()?; + let compression_flags = Compression::from_bits_truncate(flags); + + // A 16-bit, unsigned integer. The size in bytes of the data in the bitmapComprHdr and bitmapDataStream fields. let bitmap_data_length = buffer.read_u16::()? as usize; if buffer.len() < bitmap_data_length { @@ -91,18 +93,22 @@ impl<'a> PduBufferParsing<'a> for BitmapData<'a> { }); } - let compressed_data_header = if !compression_flags.contains(Compression::NOT_COMPRESSED) { + let compressed_data_header = if compression_flags.contains(Compression::BITMAP_COMPRESSION) + && !compression_flags.contains(Compression::NO_BITMAP_COMPRESSION_HDR) + { Some(CompressedDataHeader::from_buffer_consume(buffer)?) } else { None }; - let bitmap_data = if compressed_data_header.is_some() { - buffer.split_to(bitmap_data_length - COMPRESSED_DATA_HEADER_SIZE) + let rest_length = if compressed_data_header.is_some() { + bitmap_data_length - COMPRESSED_DATA_HEADER_SIZE } else { - buffer.split_to(bitmap_data_length) + bitmap_data_length }; + let bitmap_data = buffer.split_to(rest_length); + Ok(BitmapData { rectangle, width, @@ -137,26 +143,19 @@ impl<'a> PduBufferParsing<'a> for BitmapData<'a> { impl Debug for BitmapData<'_> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "BitmapData:[{:?}, - width - {}, - height - {}, - bits_per_pixel - {}, - compression_flags - ({:?}), - compressed_data_header - {:?} - \nReceived Bitmap data buffer with length - {}\n]", - self.rectangle, - self.width, - self.height, - self.bits_per_pixel, - self.compression_flags, - self.compressed_data_header, - self.bitmap_data.len() - ) + f.debug_struct("BitmapData") + .field("rectangle", &self.rectangle) + .field("width", &self.width) + .field("height", &self.height) + .field("bits_per_pixel", &self.bits_per_pixel) + .field("compression_flags", &self.compression_flags) + .field("compressed_data_header", &self.compressed_data_header) + .field("bitmap_data.len()", &self.bitmap_data.len()) + .finish() } } +/// TS_CD_HEADER #[derive(Debug, Clone, PartialEq, Eq)] pub struct CompressedDataHeader { pub main_body_size: u16, @@ -212,8 +211,8 @@ bitflags! { bitflags! { pub struct Compression: u16 { - const COMPRESSED_HDR = 0x0001; - const NOT_COMPRESSED = 0x0400; + const BITMAP_COMPRESSION = 0x0001; + const NO_BITMAP_COMPRESSION_HDR = 0x0400; } } diff --git a/ironrdp-core/src/basic_output/bitmap/tests.rs b/ironrdp-core/src/basic_output/bitmap/tests.rs index f02082a9..9cf718d8 100644 --- a/ironrdp-core/src/basic_output/bitmap/tests.rs +++ b/ironrdp-core/src/basic_output/bitmap/tests.rs @@ -31,8 +31,7 @@ const BITMAP_BUFFER: [u8; 114] = [ ]; lazy_static! { - static ref BITMAP: Bitmap<'static> = Bitmap { - rectangles_number: 1, + static ref BITMAP: BitmapUpdateData<'static> = BitmapUpdateData { rectangles: { let vec = vec![BitmapData { rectangle: Rectangle { @@ -44,7 +43,7 @@ lazy_static! { width: 64, height: 56, bits_per_pixel: 16, - compression_flags: Compression::COMPRESSED_HDR, + compression_flags: Compression::BITMAP_COMPRESSION, bitmap_data_length: 92, compressed_data_header: Some(CompressedDataHeader { main_body_size: 80, @@ -60,7 +59,7 @@ lazy_static! { #[test] fn from_buffer_bitmap_data_parsses_correctly() { - let actual = Bitmap::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); + let actual = BitmapUpdateData::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); assert_eq!(*BITMAP, actual); } @@ -74,7 +73,7 @@ fn to_buffer_bitmap_data_serializes_correcly() { #[test] fn bitmap_data_length_is_correct() { - let actual = Bitmap::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); + let actual = BitmapUpdateData::from_buffer(BITMAP_BUFFER.as_ref()).unwrap(); let actual = actual.rectangles.get(0).unwrap().bitmap_data.len(); assert_eq!(BITMAP_BUFFER[30..].len(), actual) } diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs index 0c624dc6..23fd29fb 100644 --- a/ironrdp-core/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -10,7 +10,7 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use thiserror::Error; -use super::bitmap::{Bitmap, BitmapError}; +use super::bitmap::{BitmapError, BitmapUpdateData}; use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; use crate::utils::SplitTo; use crate::{per, PduBufferParsing, PduParsing}; @@ -143,7 +143,7 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { #[derive(Debug, Clone, PartialEq, Eq)] pub enum FastPathUpdate<'a> { SurfaceCommands(Vec>), - Bitmap(Bitmap<'a>), + Bitmap(BitmapUpdateData<'a>), } impl<'a> FastPathUpdate<'a> { @@ -162,7 +162,7 @@ impl<'a> FastPathUpdate<'a> { Ok(Self::SurfaceCommands(commands)) } UpdateCode::Bitmap => { - let bitmap = Bitmap::from_buffer_consume(buffer).map_err(FastPathError::BitmapError)?; + let bitmap = BitmapUpdateData::from_buffer_consume(buffer).map_err(FastPathError::BitmapError)?; Ok(Self::Bitmap(bitmap)) } _ => Err(FastPathError::UnsupportedFastPathUpdate(code)), diff --git a/ironrdp-core/src/gcc/core_data/client.rs b/ironrdp-core/src/gcc/core_data/client.rs index c84a8769..bc1fe4ee 100644 --- a/ironrdp-core/src/gcc/core_data/client.rs +++ b/ironrdp-core/src/gcc/core_data/client.rs @@ -41,11 +41,13 @@ const DESKTOP_ORIENTATION_SIZE: usize = 2; const DESKTOP_SCALE_FACTOR_SIZE: usize = 4; const DEVICE_SCALE_FACTOR_SIZE: usize = 4; +/// TS_UD_CS_CORE (required part) #[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientCoreData { pub version: RdpVersion, pub desktop_width: u16, pub desktop_height: u16, + /// The requested color depth. Values in this field MUST be ignored if the postBeta2ColorDepth field is present. pub color_depth: ColorDepth, pub sec_access_sequence: SecureAccessSequence, pub keyboard_layout: u32, @@ -70,7 +72,7 @@ impl ClientCoreData { } else { From::from(high_color_depth) } - } else if let Some(post_beta_color_depth) = self.optional_data.post_beta_color_depth { + } else if let Some(post_beta_color_depth) = self.optional_data.post_beta2_color_depth { From::from(post_beta_color_depth) } else { From::from(self.color_depth) @@ -175,12 +177,16 @@ impl PduParsing for ClientCoreData { } } +/// TS_UD_CS_CORE (optional part) #[derive(Debug, Clone, Default, PartialEq, Eq)] pub struct ClientCoreOptionalData { - pub post_beta_color_depth: Option, + /// The requested color depth. Values in this field MUST be ignored if the highColorDepth field is present. + pub post_beta2_color_depth: Option, pub client_product_id: Option, pub serial_number: Option, + /// The requested color depth. pub high_color_depth: Option, + /// Specifies the high color depths that the client is capable of supporting. pub supported_color_depths: Option, pub early_capability_flags: Option, pub dig_product_id: Option, @@ -199,7 +205,7 @@ impl PduParsing for ClientCoreOptionalData { fn from_buffer(mut buffer: impl io::Read) -> Result { let mut optional_data = Self::default(); - optional_data.post_beta_color_depth = Some( + optional_data.post_beta2_color_depth = Some( ColorDepth::from_u16(try_read_optional!(buffer.read_u16::(), optional_data)) .ok_or(CoreDataError::InvalidPostBetaColorDepth)?, ); @@ -259,7 +265,7 @@ impl PduParsing for ClientCoreOptionalData { } fn to_buffer(&self, mut buffer: impl io::Write) -> Result<(), Self::Error> { - try_write_optional!(self.post_beta_color_depth, |value: &ColorDepth| { + try_write_optional!(self.post_beta2_color_depth, |value: &ColorDepth| { buffer.write_u16::(value.to_u16().unwrap()) }); @@ -319,7 +325,7 @@ impl PduParsing for ClientCoreOptionalData { fn buffer_length(&self) -> usize { let mut size = 0; - if self.post_beta_color_depth.is_some() { + if self.post_beta2_color_depth.is_some() { size += POST_BETA_COLOR_DEPTH_SIZE; } if self.client_product_id.is_some() { diff --git a/ironrdp-core/src/gcc/core_data/client/test.rs b/ironrdp-core/src/gcc/core_data/client/test.rs index a057cda7..a4ad80b0 100644 --- a/ironrdp-core/src/gcc/core_data/client/test.rs +++ b/ironrdp-core/src/gcc/core_data/client/test.rs @@ -70,7 +70,7 @@ lazy_static! { }; pub static ref CLIENT_OPTIONAL_CORE_DATA_TO_HIGH_COLOR_DEPTH: ClientCoreData = { let mut data = CLIENT_CORE_DATA_WITHOUT_OPTIONAL_FIELDS.clone(); - data.optional_data.post_beta_color_depth = Some(ColorDepth::Bpp8); + data.optional_data.post_beta2_color_depth = Some(ColorDepth::Bpp8); data.optional_data.client_product_id = Some(1); data.optional_data.serial_number = Some(0); @@ -248,7 +248,7 @@ fn client_color_depth_is_post_beta_color_depth_if_high_color_depth_is_absent() { let core_data = ClientCoreData::from_buffer(buffer.as_slice()).unwrap(); let expected_client_color_depth: ClientColorDepth = - From::from(core_data.optional_data.post_beta_color_depth.unwrap()); + From::from(core_data.optional_data.post_beta2_color_depth.unwrap()); assert_eq!(expected_client_color_depth, core_data.client_color_depth()); } diff --git a/ironrdp-core/src/lib.rs b/ironrdp-core/src/lib.rs index 4183237c..faab9d7c 100644 --- a/ironrdp-core/src/lib.rs +++ b/ironrdp-core/src/lib.rs @@ -41,6 +41,28 @@ pub trait PduParsing { fn buffer_length(&self) -> usize; } +/// Blanket implementation for references to types implementing PduParsing. Only encoding is supported. +/// +/// This helps removing a few copies. +impl PduParsing for &T { + type Error = T::Error; + + fn from_buffer(_: impl std::io::Read) -> Result + where + Self: Sized, + { + panic!("Can’t return a reference to a local value") + } + + fn to_buffer(&self, stream: impl std::io::Write) -> Result<(), Self::Error> { + T::to_buffer(self, stream) + } + + fn buffer_length(&self) -> usize { + T::buffer_length(self) + } +} + pub trait PduBufferParsing<'a>: Sized { type Error; // FIXME: this bound type should probably be removed for the sake of simplicity diff --git a/ironrdp-graphics/Cargo.toml b/ironrdp-graphics/Cargo.toml index f5ddc061..ce281bd2 100644 --- a/ironrdp-graphics/Cargo.toml +++ b/ironrdp-graphics/Cargo.toml @@ -18,7 +18,10 @@ bitvec = "1.0.1" bit_field = "0.10.1" bitflags = "1.3.2" lazy_static = "1.4.0" +bytes = "1.4.0" [dev-dependencies] hex-literal = "0.3.4" proptest = "1.0.0" +rdp-rs = { git = "https://github.com/citronneur/rdp-rs", rev = "7ac880d7efb7f05efef3c84476f7c24f4053e0ea" } +rstest = "0.16.0" diff --git a/ironrdp-graphics/src/image_processing.rs b/ironrdp-graphics/src/image_processing.rs index 839da24c..d047ba4a 100644 --- a/ironrdp-graphics/src/image_processing.rs +++ b/ironrdp-graphics/src/image_processing.rs @@ -121,7 +121,7 @@ impl PixelFormat { if buffer.len() < 4 { Err(io::Error::new( io::ErrorKind::InvalidInput, - "The input buffer is not large enoght", + "The input buffer is not large enough", )) } else { let color = &buffer[..4]; diff --git a/ironrdp-graphics/src/lib.rs b/ironrdp-graphics/src/lib.rs index 7672b4b0..69d161a8 100644 --- a/ironrdp-graphics/src/lib.rs +++ b/ironrdp-graphics/src/lib.rs @@ -3,6 +3,7 @@ pub mod dwt; pub mod image_processing; pub mod quantization; pub mod rectangle_processing; +pub mod rle; pub mod rlgr; pub mod subband_reconstruction; pub mod zgfx; diff --git a/ironrdp-graphics/src/rle.rs b/ironrdp-graphics/src/rle.rs new file mode 100644 index 00000000..f4317853 --- /dev/null +++ b/ironrdp-graphics/src/rle.rs @@ -0,0 +1,702 @@ +//! Interleaved Run-Length Encoding (RLE) Bitmap Codec +//! +//! ### References +//! +//! - Microsoft Learn: +//! - [RLE_BITMAP_STREAM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/b3b60873-16a8-4cbc-8aaa-5f0a93083280) +//! - [Pseudo-code](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/b6a3f5c2-0804-4c10-9d25-a321720fd23e) +//! +//! - FreeRDP: +//! - [interleaved.c](https://github.com/FreeRDP/FreeRDP/blob/db98f16e5bce003c898e8c85eb7af964f22a16a8/libfreerdp/codec/interleaved.c#L3) +//! - [bitmap.c](https://github.com/FreeRDP/FreeRDP/blob/3a8dce07ea0262b240025bd68b63801578ca63f0/libfreerdp/codec/include/bitmap.c) + +use bytes::BytesMut; +use core::fmt; +use std::ops::BitXor; + +// TODO: error handling + +/// Decompress an RLE compressed bitmap. +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `width`: decompressed bitmap width +/// `height`: decompressed bitmap height +/// `bpp`: bits per pixel +pub fn decompress( + src: &[u8], + dst: &mut BytesMut, + width: impl Into, + height: impl Into, + bpp: impl Into, +) { + match bpp.into() { + Mode24Bpp::BPP => decompress_24_bpp(src, dst, width, height), + Mode16Bpp::BPP => decompress_16_bpp(src, dst, width, height), + Mode15Bpp::BPP => decompress_15_bpp(src, dst, width, height), + Mode8Bpp::BPP => decompress_8_bpp(src, dst, width, height), + _ => todo!("return error"), + } +} + +/// Decompress a 24-bpp RLE compressed bitmap. +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `width`: decompressed bitmap width +/// `height`: decompressed bitmap height +pub fn decompress_24_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { + decompress_helper::(src, dst, width.into(), height.into()) +} + +/// Decompress a 16-bpp RLE compressed bitmap. +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `width`: decompressed bitmap width +/// `height`: decompressed bitmap height +pub fn decompress_16_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { + decompress_helper::(src, dst, width.into(), height.into()) +} + +/// Decompress a 15-bpp RLE compressed bitmap. +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `width`: decompressed bitmap width +/// `height`: decompressed bitmap height +pub fn decompress_15_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { + decompress_helper::(src, dst, width.into(), height.into()) +} + +/// Decompress a 8-bpp RLE compressed bitmap. +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `width`: decompressed bitmap width +/// `height`: decompressed bitmap height +pub fn decompress_8_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { + decompress_helper::(src, dst, width.into(), height.into()) +} + +fn decompress_helper(src: &[u8], dst: &mut BytesMut, width: usize, height: usize) { + let row_delta = Mode::COLOR_DEPTH * width; + dst.resize(row_delta * height, 0); + decompress_impl::(src, dst, row_delta); +} + +/// RLE decompression implementation +/// +/// `src`: source buffer containing compressed bitmap +/// `dst`: destination buffer +/// `row_delta`: scanline length in bytes +fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize) { + // FIXME: some bounds checks should be inserted + + let mut src = Buf::new(src); + let mut dst = BufMut::new(dst); + + let mut fg_pel = Mode::WHITE_PIXEL; + let mut insert_fg_pel = false; + let mut is_first_line = true; + + while !src.eof() { + // Watch out for the end of the first scanline. + if is_first_line && dst.pos >= row_delta { + is_first_line = false; + insert_fg_pel = false; + } + + let header = src.read_u8(); + + // Extract the compression order code ID from the compression order header. + let code = Code::decode(header); + + // Extract run length + let run_length = code.extract_run_length(header, &mut src); + + // Handle Background Run Orders. + if code == Code::REGULAR_BG_RUN || code == Code::MEGA_MEGA_BG_RUN { + if is_first_line { + let num_iterations = if insert_fg_pel { + Mode::write_pixel(&mut dst, fg_pel); + run_length - 1 + } else { + run_length + }; + + for _ in 0..num_iterations { + Mode::write_pixel(&mut dst, Mode::BLACK_PIXEL); + } + } else { + let num_iterations = if insert_fg_pel { + let pixel_above = dst.read_pixel_above::(row_delta); + let xored = pixel_above ^ fg_pel; + Mode::write_pixel(&mut dst, xored); + run_length - 1 + } else { + run_length + }; + + for _ in 0..num_iterations { + let pixel_above = dst.read_pixel_above::(row_delta); + Mode::write_pixel(&mut dst, pixel_above); + } + } + + // A follow-on background run order will need a foreground pel inserted. + insert_fg_pel = true; + + continue; + } + + // For any of the other run-types a follow-on background run + // order does not need a foreground pel inserted. + insert_fg_pel = false; + + if code == Code::REGULAR_FG_RUN + || code == Code::MEGA_MEGA_FG_RUN + || code == Code::LITE_SET_FG_FG_RUN + || code == Code::MEGA_MEGA_SET_FG_RUN + { + // Handle Foreground Run Orders. + + if code == Code::LITE_SET_FG_FG_RUN || code == Code::MEGA_MEGA_SET_FG_RUN { + fg_pel = Mode::read_pixel(&mut src); + } + + for _ in 0..run_length { + if is_first_line { + Mode::write_pixel(&mut dst, fg_pel); + } else { + let pixel_above = dst.read_pixel_above::(row_delta); + let xored = pixel_above ^ fg_pel; + Mode::write_pixel(&mut dst, xored); + } + } + } else if code == Code::LITE_DITHERED_RUN || code == Code::MEGA_MEGA_DITHERED_RUN { + // Handle Dithered Run Orders. + + let pixel_a = Mode::read_pixel(&mut src); + let pixel_b = Mode::read_pixel(&mut src); + + for _ in 0..run_length { + Mode::write_pixel(&mut dst, pixel_a); + Mode::write_pixel(&mut dst, pixel_b); + } + } else if code == Code::REGULAR_COLOR_RUN || code == Code::MEGA_MEGA_COLOR_RUN { + // Handle Color Run Orders. + + let pixel = Mode::read_pixel(&mut src); + + for _ in 0..run_length { + Mode::write_pixel(&mut dst, pixel); + } + } else if code == Code::REGULAR_FGBG_IMAGE + || code == Code::MEGA_MEGA_FGBG_IMAGE + || code == Code::LITE_SET_FG_FGBG_IMAGE + || code == Code::MEGA_MEGA_SET_FGBG_IMAGE + { + // Handle Foreground/Background Image Orders. + + if code == Code::LITE_SET_FG_FGBG_IMAGE || code == Code::MEGA_MEGA_SET_FGBG_IMAGE { + fg_pel = Mode::read_pixel(&mut src); + } + + let mut number_to_read = run_length; + + while number_to_read > 0 { + let c_bits = std::cmp::min(8, number_to_read); + + let bitmask = src.read_u8(); + + if is_first_line { + write_first_line_fg_bg_image::(&mut dst, bitmask, fg_pel, c_bits); + } else { + write_fg_bg_image::(&mut dst, row_delta, bitmask, fg_pel, c_bits); + } + + number_to_read -= c_bits; + } + } else if code == Code::REGULAR_COLOR_IMAGE || code == Code::MEGA_MEGA_COLOR_IMAGE { + // Handle Color Image Orders. + + let byte_count = run_length * Mode::COLOR_DEPTH; + + for _ in 0..byte_count { + dst.write_u8(src.read_u8()); + } + } else if code == Code::SPECIAL_FGBG_1 { + // Handle Special Order 1. + + const MASK_SPECIAL_FG_BG_1: u8 = 0x03; + + if is_first_line { + write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_1, fg_pel, 8); + } else { + write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_1, fg_pel, 8); + } + } else if code == Code::SPECIAL_FGBG_2 { + // Handle Special Order 2. + + const MASK_SPECIAL_FG_BG_2: u8 = 0x05; + + if is_first_line { + write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_2, fg_pel, 8); + } else { + write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_2, fg_pel, 8); + } + } else if code == Code::SPECIAL_WHITE { + // Handle White Order. + + Mode::write_pixel(&mut dst, Mode::WHITE_PIXEL); + } else if code == Code::SPECIAL_BLACK { + // Handle Black Order. + + Mode::write_pixel(&mut dst, Mode::BLACK_PIXEL); + } else { + todo!("return unknown order error"); + } + } +} + +#[derive(Clone, Copy, PartialEq, Eq)] +struct Code(u8); + +impl fmt::Debug for Code { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let name = match *self { + Self::REGULAR_BG_RUN => "REGULAR_BG_RUN", + Self::REGULAR_FG_RUN => "REGULAR_FG_RUN", + Self::REGULAR_COLOR_RUN => "REGULAR_COLOR_RUN", + Self::REGULAR_FGBG_IMAGE => "REGULAR_FGBG_IMAGE", + Self::REGULAR_COLOR_IMAGE => "REGULAR_COLOR_IMAGE", + + Self::MEGA_MEGA_BG_RUN => "MEGA_MEGA_BG_RUN", + Self::MEGA_MEGA_FG_RUN => "MEGA_MEGA_FG_RUN", + Self::MEGA_MEGA_SET_FG_RUN => "MEGA_MEGA_SET_FG_RUN", + Self::MEGA_MEGA_DITHERED_RUN => "MEGA_MEGA_DITHERED_RUN", + Self::MEGA_MEGA_COLOR_RUN => "MEGA_MEGA_COLOR_RUN", + Self::MEGA_MEGA_FGBG_IMAGE => "MEGA_MEGA_FGBG_IMAGE", + Self::MEGA_MEGA_SET_FGBG_IMAGE => "MEGA_MEGA_SET_FGBG_IMAGE", + Self::MEGA_MEGA_COLOR_IMAGE => "MEGA_MEGA_COLOR_IMAGE", + + Self::LITE_SET_FG_FG_RUN => "LITE_SET_FG_FG_RUN", + Self::LITE_DITHERED_RUN => "LITE_DITHERED_RUN", + Self::LITE_SET_FG_FGBG_IMAGE => "LITE_SET_FG_FGBG_IMAGE", + + Self::SPECIAL_FGBG_1 => "SPECIAL_FGBG_1", + Self::SPECIAL_FGBG_2 => "SPECIAL_FGBG_2", + Self::SPECIAL_WHITE => "SPECIAL_WHITE", + Self::SPECIAL_BLACK => "SPECIAL_BLACK", + + _ => "UNKNOWN", + }; + + write!(f, "Code(0x{:02X}-{name})", self.0) + } +} + +impl Code { + const REGULAR_BG_RUN: Code = Code(0x00); + const REGULAR_FG_RUN: Code = Code(0x01); + const REGULAR_COLOR_RUN: Code = Code(0x03); + const REGULAR_FGBG_IMAGE: Code = Code(0x02); + const REGULAR_COLOR_IMAGE: Code = Code(0x04); + + const MEGA_MEGA_BG_RUN: Code = Code(0xF0); + const MEGA_MEGA_FG_RUN: Code = Code(0xF1); + const MEGA_MEGA_SET_FG_RUN: Code = Code(0xF6); + const MEGA_MEGA_DITHERED_RUN: Code = Code(0xF8); + const MEGA_MEGA_COLOR_RUN: Code = Code(0xF3); + const MEGA_MEGA_FGBG_IMAGE: Code = Code(0xF2); + const MEGA_MEGA_SET_FGBG_IMAGE: Code = Code(0xF7); + const MEGA_MEGA_COLOR_IMAGE: Code = Code(0xF4); + + const LITE_SET_FG_FG_RUN: Code = Code(0x0C); + const LITE_DITHERED_RUN: Code = Code(0x0E); + const LITE_SET_FG_FGBG_IMAGE: Code = Code(0x0D); + + const SPECIAL_FGBG_1: Code = Code(0xF9); + const SPECIAL_FGBG_2: Code = Code(0xFA); + const SPECIAL_WHITE: Code = Code(0xFD); + const SPECIAL_BLACK: Code = Code(0xFE); + + fn decode(header: u8) -> Self { + if (header & 0xC0) != 0xC0 { + // REGULAR orders + // (000x xxxx, 001x xxxx, 010x xxxx, 011x xxxx, 100x xxxx) + Code(header >> 5) + } else if (header & 0xF0) == 0xF0 { + // MEGA and SPECIAL orders (0xF*) + Code(header) + } else { + // LITE orders + // (1100 xxxx, 1101 xxxx, 1110 xxxx) + Code(header >> 4) + } + } + + /// Extract the run length of a compression order. + pub fn extract_run_length(self, header: u8, src: &mut Buf) -> usize { + match self { + Self::REGULAR_FGBG_IMAGE => extract_run_length_regular_fg_bg(header, src), + + Self::LITE_SET_FG_FGBG_IMAGE => extract_run_length_lite_fg_bg(header, src), + + Self::REGULAR_BG_RUN | Self::REGULAR_FG_RUN | Self::REGULAR_COLOR_RUN | Self::REGULAR_COLOR_IMAGE => { + extract_run_length_regular(header, src) + } + + Self::LITE_SET_FG_FG_RUN | Self::LITE_DITHERED_RUN => extract_run_length_lite(header, src), + + Self::MEGA_MEGA_BG_RUN + | Self::MEGA_MEGA_FG_RUN + | Self::MEGA_MEGA_SET_FG_RUN + | Self::MEGA_MEGA_DITHERED_RUN + | Self::MEGA_MEGA_COLOR_RUN + | Self::MEGA_MEGA_FGBG_IMAGE + | Self::MEGA_MEGA_SET_FGBG_IMAGE + | Self::MEGA_MEGA_COLOR_IMAGE => extract_run_length_mega_mega(src), + + Self::SPECIAL_FGBG_1 | Self::SPECIAL_FGBG_2 | Self::SPECIAL_WHITE | Self::SPECIAL_BLACK => 0, + + _ => 0, + } + } +} + +const MASK_REGULAR_RUN_LENGTH: u8 = 0x1F; +const MASK_LITE_RUN_LENGTH: u8 = 0x0F; + +/// Extract the run length of a Regular-Form Foreground/Background Image Order +fn extract_run_length_regular_fg_bg(header: u8, src: &mut Buf) -> usize { + match header & MASK_REGULAR_RUN_LENGTH { + 0 => usize::from(src.read_u8()) + 1, + run_length => usize::from(run_length) * 8, + } +} + +/// Extract the run length of a Lite-Form Foreground/Background Image Order. +fn extract_run_length_lite_fg_bg(header: u8, src: &mut Buf) -> usize { + match header & MASK_LITE_RUN_LENGTH { + 0 => usize::from(src.read_u8()) + 1, + run_length => usize::from(run_length) * 8, + } +} + +/// Extract the run length of a regular-form compression order. +fn extract_run_length_regular(header: u8, src: &mut Buf) -> usize { + match header & MASK_REGULAR_RUN_LENGTH { + // An extended (MEGA) run. + 0 => usize::from(src.read_u8()) + 32, + run_length => usize::from(run_length), + } +} + +fn extract_run_length_lite(header: u8, src: &mut Buf) -> usize { + match header & MASK_LITE_RUN_LENGTH { + // An extended (MEGA) run. + 0 => usize::from(src.read_u8()) + 16, + run_length => usize::from(run_length), + } +} + +fn extract_run_length_mega_mega(src: &mut Buf) -> usize { + usize::from(src.read_u16()) +} + +struct Buf<'a> { + inner: &'a [u8], + pos: usize, +} + +impl<'a> Buf<'a> { + fn new(bytes: &'a [u8]) -> Self { + Self { inner: bytes, pos: 0 } + } + + fn read(&mut self) -> [u8; N] { + let bytes = &self.inner[self.pos..self.pos + N]; + self.pos += N; + bytes.try_into().expect("N-elements array") + } + + fn read_u8(&mut self) -> u8 { + u8::from_le_bytes(self.read::<1>()) + } + + fn read_u16(&mut self) -> u16 { + u16::from_le_bytes(self.read::<2>()) + } + + fn read_u24(&mut self) -> u32 { + let bytes = self.read::<3>(); + u32::from_le_bytes([bytes[0], bytes[1], bytes[2], 0]) + } + + fn rewinded(&'a self, len: usize) -> Buf<'a> { + Buf { + inner: self.inner, + pos: self.pos - len, + } + } + + fn eof(&self) -> bool { + self.pos == self.inner.len() + } +} + +struct BufMut<'a> { + inner: &'a mut [u8], + pos: usize, +} + +impl<'a> BufMut<'a> { + fn new(bytes: &'a mut [u8]) -> Self { + Self { inner: bytes, pos: 0 } + } + + fn write(&mut self, bytes: &[u8]) { + self.inner[self.pos..self.pos + bytes.len()].copy_from_slice(bytes); + self.pos += bytes.len(); + } + + fn write_u8(&mut self, value: u8) { + self.write(&[value]); + } + + fn write_u16(&mut self, value: u16) { + self.write(&value.to_le_bytes()); + } + + fn write_u24(&mut self, value: u32) { + self.write(&value.to_le_bytes()[..3]); + } + + fn read_pixel_above(&self, row_delta: usize) -> Mode::Pixel { + let read_buf = Buf { + inner: self.inner, + pos: self.pos, + }; + let mut read_buf = read_buf.rewinded(row_delta); + Mode::read_pixel(&mut read_buf) + } +} + +trait DepthMode { + type Pixel: Copy + BitXor; + + /// The color depth (in bytes per pixel) for this mode + const COLOR_DEPTH: usize; + + /// Bits per pixel + const BPP: usize; + + /// The black pixel value + const BLACK_PIXEL: Self::Pixel; + + /// The white pixel value + const WHITE_PIXEL: Self::Pixel; + + /// Writes a pixel to the specified buffer + fn write_pixel(dst: &mut BufMut, pixel: Self::Pixel); + + /// Reads a pixel from the specified buffer + fn read_pixel(src: &mut Buf) -> Self::Pixel; +} + +struct Mode8Bpp; + +impl DepthMode for Mode8Bpp { + type Pixel = u8; + + const COLOR_DEPTH: usize = 1; + + const BPP: usize = 8; + + const BLACK_PIXEL: Self::Pixel = 0x00; + + const WHITE_PIXEL: Self::Pixel = 0xFF; + + fn write_pixel(dst: &mut BufMut, pixel: Self::Pixel) { + dst.write_u8(pixel); + } + + fn read_pixel(src: &mut Buf) -> Self::Pixel { + src.read_u8() + } +} + +struct Mode15Bpp; + +impl DepthMode for Mode15Bpp { + type Pixel = u16; + + const COLOR_DEPTH: usize = 2; + + const BPP: usize = 15; + + const BLACK_PIXEL: Self::Pixel = 0x0000; + + // 5 bits per RGB component: + // 0111 1111 1111 1111 (binary) + const WHITE_PIXEL: Self::Pixel = 0x7FFF; + + fn write_pixel(dst: &mut BufMut, pixel: Self::Pixel) { + dst.write_u16(pixel); + } + + fn read_pixel(src: &mut Buf) -> Self::Pixel { + src.read_u16() + } +} + +struct Mode16Bpp; + +impl DepthMode for Mode16Bpp { + type Pixel = u16; + + const COLOR_DEPTH: usize = 2; + + const BPP: usize = 16; + + const BLACK_PIXEL: Self::Pixel = 0x0000; + + // 5 bits for red, 6 bits for green, 5 bits for green: + // 1111 1111 1111 1111 (binary) + const WHITE_PIXEL: Self::Pixel = 0xFFFF; + + fn write_pixel(dst: &mut BufMut, pixel: Self::Pixel) { + dst.write_u16(pixel); + } + + fn read_pixel(src: &mut Buf) -> Self::Pixel { + src.read_u16() + } +} + +struct Mode24Bpp; + +impl DepthMode for Mode24Bpp { + type Pixel = u32; + + const COLOR_DEPTH: usize = 3; + + const BPP: usize = 24; + + const BLACK_PIXEL: Self::Pixel = 0x000000; + + // 8 bits per RGB component: + // 1111 1111 1111 1111 1111 1111 (binary) + const WHITE_PIXEL: Self::Pixel = 0xFFFFFF; + + fn write_pixel(dst: &mut BufMut, pixel: Self::Pixel) { + dst.write_u24(pixel); + } + + fn read_pixel(src: &mut Buf) -> Self::Pixel { + src.read_u24() + } +} + +/// Writes a foreground/background image to a destination buffer. +fn write_fg_bg_image( + dst: &mut BufMut, + row_delta: usize, + bitmask: u8, + fg_pel: Mode::Pixel, + mut c_bits: usize, +) { + let mut mask = 0x01; + + repeat::<8>(|| { + let above_pixel = dst.read_pixel_above::(row_delta); + + if bitmask & mask != 0 { + Mode::write_pixel(dst, above_pixel ^ fg_pel); + } else { + Mode::write_pixel(dst, above_pixel); + } + + c_bits -= 1; + mask <<= 1; + + c_bits == 0 + }) +} + +/// Writes a foreground/background image to a destination buffer +fn write_first_line_fg_bg_image( + dst: &mut BufMut, + bitmask: u8, + fg_pel: Mode::Pixel, + mut c_bits: usize, +) { + let mut mask = 0x01; + + repeat::<8>(|| { + if bitmask & mask != 0 { + Mode::write_pixel(dst, fg_pel); + } else { + Mode::write_pixel(dst, Mode::BLACK_PIXEL); + } + + c_bits -= 1; + mask <<= 1; + + c_bits == 0 + }) +} + +fn repeat(mut op: impl FnMut() -> bool) { + for _ in 0..N { + let stop = op(); + + if stop { + return; + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + macro_rules! test_buf_mut { + ($mode:ident) => {{ + let row_delta = 4 * $mode::COLOR_DEPTH; + let mut buf = vec![0; row_delta * 2]; + let mut dst = BufMut::new(buf.as_mut_slice()); + + $mode::write_pixel(&mut dst, 0xDEAD); + $mode::write_pixel(&mut dst, 0xBEEF); + $mode::write_pixel(&mut dst, 0xFADE); + $mode::write_pixel(&mut dst, 0xFEED); + + assert_eq!(dst.read_pixel_above::<$mode>(row_delta), 0xDEAD); + $mode::write_pixel(&mut dst, $mode::WHITE_PIXEL); + assert_eq!(dst.read_pixel_above::<$mode>(row_delta), 0xBEEF); + $mode::write_pixel(&mut dst, $mode::WHITE_PIXEL); + assert_eq!(dst.read_pixel_above::<$mode>(row_delta), 0xFADE); + $mode::write_pixel(&mut dst, $mode::WHITE_PIXEL); + assert_eq!(dst.read_pixel_above::<$mode>(row_delta), 0xFEED); + $mode::write_pixel(&mut dst, $mode::WHITE_PIXEL); + }}; + } + + #[test] + fn buf_mut_16_bpp() { + test_buf_mut!(Mode16Bpp); + } + + #[test] + fn buf_mut_15_bpp() { + test_buf_mut!(Mode15Bpp); + } + + #[test] + fn buf_mut_24_bpp() { + test_buf_mut!(Mode24Bpp); + } +} diff --git a/ironrdp-graphics/tests/rle.rs b/ironrdp-graphics/tests/rle.rs new file mode 100644 index 00000000..8595f39d --- /dev/null +++ b/ironrdp-graphics/tests/rle.rs @@ -0,0 +1,46 @@ +use rstest::rstest; + +/// Decompress bitmap and compares result with rdp-rs crate +#[rstest] +#[case::xc0(&[0xC0, 0x1B, 0x85, 0x00, 0x95, 0xA5, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0xA5, 0x00, 0x00, 0x0C, 0x6D, 0xA5, 0x00, 0x00, 0x18, 0xF7, 0x80, 0x01, 0x20, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x10, 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, 0x00, 0x00, 0x00, 0xC0, 0x6B, 0xA5, 0x00, 0x00, 0x10, 0x2D, 0xF0, 0xB3, 0x01, 0x70, 0xA5, 0x00, 0x00, 0x7B, 0x34, 0x00, 0x56, 0x2D, 0x00, 0x09, 0x77, 0x85, 0x00, 0xF0, 0x74, 0x01, 0x7A, 0xA5, 0x00, 0x00, 0x06, 0x29, 0x00, 0x31, 0x4E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x20, 0x60, 0x12, 0x85, 0x00, 0xF0, 0x41, 0x01, 0x2C, 0x00, 0x13, 0x84, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0xA5, 0x00, 0x60, 0x1F, 0x85, 0x00, 0x00, 0x02, 0x3B, 0x03, 0x60, 0x02, 0x85, 0x00, 0x11, 0x60, 0x0F, 0x85, 0x00, 0x00, 0x3E, 0x00, 0xFB, 0x43, 0x03, 0x00, 0x00, 0x6E, 0xA5, 0x00, 0x00, 0x3A, 0x67, 0x85, 0x00, 0x00, 0x1C, 0x60, 0x07, 0xA5, 0x00, 0x06, 0x27, 0x00, 0xD3, 0x6D, 0xA5, 0x00, 0x00, 0x2C, 0x20, 0x06, 0x00, 0xE6, 0x88, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00])] +#[case::xcc(&[0xCC, 0x8C, 0x01, 0xC0, 0x03, 0xAC, 0x01, 0x81, 0xAD, 0x01, 0xC0, 0x05, 0xCD, 0x01, 0xC7, 0xAD, 0x01, 0x84, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAC, 0x01, 0x0B, 0x74, 0xAC, 0x01, 0x00, 0x00, 0x82, 0xAD, 0x01, 0x8C, 0x01, 0x6D, 0xAC, 0x01, 0x85, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x00, 0x02, 0xC7, 0x60, 0x00, 0x00, 0x24, 0x6C, 0xAC, 0x01, 0x6E, 0xAD, 0x01, 0x03, 0x82, 0xAD, 0x01, 0xAD, 0x01, 0x1D, 0x82, 0xCD, 0x01, 0xCD, 0x01, 0x0D, 0x94, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x60, 0x00, 0xCD, 0x01, 0x00, 0x28, 0x67, 0xAD, 0x01, 0x60, 0x12, 0xCD, 0x01, 0x8C, 0xAD, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x78, 0xCD, 0x01, 0x84, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xD0, 0x58, 0x23, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xAD, 0x01, 0x00, 0x3A, 0xD0, 0x43, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x79, 0x03, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x66, 0xEE, 0x01, 0x04, 0x82, 0xCE, 0x01, 0xCE, 0x01, 0x71, 0xCD, 0x01, 0x00, 0x0F, 0x84, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0x13, 0x81, 0xCD, 0x01, 0x06, 0x16, 0x7B, 0xCE, 0x01, 0x00, 0x22, 0x89, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x7D, 0xCD, 0x01, 0x04, 0xCA, 0x20, 0x00, 0x0A, 0x81, 0xCE, 0x01, 0x60, 0x0A, 0xCD, 0x01, 0x0B, 0x00, 0x61, 0x2A, 0x00, 0x0B, 0x40, 0x25, 0x03, 0x00, 0x00, 0x00, 0x00, 0x82, 0xEE, 0x01, 0xEE, 0x01, 0x00, 0x0D, 0xC0, 0x01, 0x03, 0x00, 0x02, 0x00, 0x0D, 0xD6, 0x20, 0x00, 0x0F, 0x80, 0x01, 0x00, 0x00, 0xE0, 0x27, 0x0D, 0x84, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0x06, 0x6E, 0xEE, 0x01, 0xD0, 0x6E, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x74, 0xEE, 0x01, 0x02, 0x7F, 0xCE, 0x01, 0x08, 0x77, 0xEE, 0x01, 0x00, 0xA0, 0xDB, 0x20, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x60, 0x10, 0xEE, 0x01, 0x00, 0x18, 0x8C, 0xCE, 0x01, 0xCE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0x75, 0xEE, 0x01, 0xD8, 0x01, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x67, 0xEF, 0x01, 0x17, 0x60, 0x01, 0xEE, 0x01, 0xD8, 0xE0, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x68, 0x0F, 0x02, 0x00, 0x20, 0xC6, 0xE1, 0x03, 0xD0, 0x30, 0x01, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x2F, 0x02, 0x2F, 0x02, 0x2F, 0x02, 0x2F, 0x02, 0x0F, 0x40, 0x2C, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x2F, 0x02, 0x2F, 0x02, 0x2F, 0x02, 0x2F, 0x02, 0x0D, 0x67, 0xEF, 0x01, 0x00, 0x08, 0x84, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0xD6, 0xE0, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x50, 0x02, 0x6A, 0x30, 0x02, 0x83, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x6C, 0x0F, 0x02, 0x02, 0x83, 0xEF, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0x00, 0x02, 0x82, 0x50, 0x02, 0x50, 0x02, 0x69, 0x30, 0x02, 0x02, 0x0C, 0x82, 0x0F, 0x02, 0x0F, 0x02, 0x00, 0x04, 0x85, 0x51, 0x02, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x50, 0x02, 0x6C, 0x30, 0x02, 0x81, 0x10, 0x02, 0x6D, 0x0F, 0x02, 0x00, 0x03, 0x85, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x0B, 0x00, 0x0E, 0x8B, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x50, 0x02, 0x50, 0x02, 0x68, 0x30, 0x02, 0x81, 0x10, 0x02, 0x0B, 0xD5, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x91, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x31, 0x02, 0x31, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x68, 0x0F, 0x02, 0x44, 0x01, 0x00, 0x00, 0x00, 0x81, 0x72, 0x02, 0x0B, 0x81, 0x51, 0x02, 0x14, 0x44, 0x07, 0x00, 0x00, 0x00, 0x8F, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x31, 0x02, 0x6A, 0x30, 0x02, 0x82, 0x2F, 0x02, 0x2F, 0x02, 0x68, 0x0F, 0x02, 0x89, 0xEF, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0x13, 0x89, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x69, 0x51, 0x02, 0x81, 0x50, 0x02, 0x69, 0x30, 0x02, 0x81, 0x2F, 0x02, 0x69, 0x0F, 0x02, 0x05, 0x8A, 0x0F, 0x02, 0x0F, 0x02, 0xEF, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0x0B, 0x8B, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x68, 0x51, 0x02, 0x81, 0x50, 0x02, 0x69, 0x30, 0x02, 0x09, 0x83, 0x0F, 0x02, 0xEF, 0x01, 0xEF, 0x01, 0x07, 0x82, 0xEF, 0x01, 0xEF, 0x01, 0x0E, 0x8C, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x68, 0x51, 0x02, 0x02, 0x82, 0x50, 0x02, 0x50, 0x02, 0x11, 0x43, 0x03, 0x00, 0x00, 0x8E, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x69, 0x51, 0x02, 0x87, 0x50, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x6E, 0x0F, 0x02, 0x16, 0x8E, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x68, 0x51, 0x02, 0x88, 0x50, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0x02, 0x10, 0x02, 0x6D, 0x0F, 0x02, 0x07, 0x2B, 0x90, 0xB4, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x09, 0x8A, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0x02, 0x10, 0x02, 0x1D, 0x80, 0x04, 0xD4, 0x02, 0xB4, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0x02, 0x10, 0x81, 0x0F, 0x02, 0x0C, 0x9E, 0xD4, 0x02, 0xD4, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x50, 0x02, 0x50, 0x02, 0x50, 0x02, 0x68, 0x30, 0x02, 0x07, 0x72, 0x0F, 0x02, 0x03, 0x9B, 0xD4, 0x02, 0xD4, 0x02, 0xB4, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x09, 0x83, 0x30, 0x02, 0x10, 0x02, 0x10, 0x02, 0x16, 0x8E, 0xF5, 0x02, 0xD5, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x06, 0x81, 0x72, 0x02, 0x09, 0x00, 0x03, 0x80, 0x00, 0xF5, 0x02, 0xF5, 0x02, 0xF5, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xD4, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0xB3, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x93, 0x02, 0x92, 0x02, 0x92, 0x02, 0x92, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x72, 0x02, 0x71, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x31, 0x02, 0x69, 0x30, 0x02, 0x84, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x0E, 0x84, 0x0F, 0x02, 0x0F, 0x02, 0x0F, 0x02, 0x0F, 0x02])] +#[case::xc9(&[0xC9, 0xAC, 0x01, 0x84, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x28, 0xC7, 0x8C, 0x01, 0xC0, 0x02, 0x8B, 0x01, 0xCE, 0x6B, 0x01, 0x84, 0x6B, 0x01, 0x6B, 0x01, 0x6B, 0x01, 0x6B, 0x01, 0x75, 0xAC, 0x01, 0x03, 0x82, 0xAC, 0x01, 0xAC, 0x01, 0x68, 0x8C, 0x01, 0x0C, 0xC9, 0xE0, 0x00, 0x1E, 0x83, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0x0A, 0xCA, 0x07, 0x00, 0x02, 0x25, 0x03, 0x68, 0x6B, 0x01, 0x82, 0x8B, 0x01, 0x8B, 0x01, 0xDD, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xAC, 0x01, 0x6A, 0x8C, 0x01, 0x03, 0x8A, 0x8B, 0x01, 0x8B, 0x01, 0x8B, 0x01, 0x6B, 0x01, 0x6B, 0x01, 0x8B, 0x01, 0x8B, 0x01, 0x8B, 0x01, 0x8B, 0x01, 0x8B, 0x01, 0x6A, 0xAD, 0x01, 0x10, 0xC8, 0x20, 0x00, 0x04, 0x85, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0x6E, 0x8C, 0x01, 0x67, 0x8B, 0x01, 0x00, 0x02, 0x00, 0x03, 0x73, 0xAC, 0x01, 0x85, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x71, 0xAC, 0x01, 0x00, 0x06, 0x69, 0xAD, 0x01, 0x11, 0x84, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0x6C, 0x8C, 0x01, 0x02, 0x81, 0xCD, 0x01, 0x13, 0x81, 0xAC, 0x01, 0x1D, 0x00, 0x38, 0x81, 0xAD, 0x01, 0xD5, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x20, 0x00, 0x05, 0x83, 0x8C, 0x01, 0x8C, 0x01, 0xCD, 0x01, 0x6B, 0xAD, 0x01, 0x08, 0x69, 0xAD, 0x01, 0x12, 0x84, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x68, 0xAC, 0x01, 0x00, 0x35, 0x6E, 0xAD, 0x01, 0x15, 0xC6, 0x01, 0x00, 0x02, 0x87, 0xAC, 0x01, 0xAC, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0x7D, 0xAD, 0x01, 0x1E, 0x81, 0xAC, 0x01, 0x13, 0xC6, 0x60, 0x00, 0x00, 0x07, 0xD0, 0x43, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xCD, 0x01, 0xCD, 0x01, 0x73, 0xAD, 0x01, 0x81, 0xCD, 0x01, 0x68, 0xAD, 0x01, 0x0F, 0x88, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x69, 0xAC, 0x01, 0x81, 0xCE, 0x01, 0x17, 0x8B, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x00, 0x01, 0x89, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x70, 0xCD, 0x01, 0x00, 0x0C, 0x75, 0xCD, 0x01, 0xD8, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x6B, 0xAC, 0x01, 0x04, 0x82, 0xAD, 0x01, 0xAD, 0x01, 0xD0, 0x2E, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xAD, 0x01, 0xD0, 0x38, 0x01, 0x00, 0x07, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xCD, 0x01, 0x6B, 0xAD, 0x01, 0x00, 0x15, 0x85, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0x0C, 0x86, 0xAC, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAC, 0x01, 0x07, 0x88, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0x1F, 0x86, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0xAD, 0x01, 0x40, 0x29, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x03, 0x00, 0x00, 0x02, 0x66, 0xCE, 0x01, 0x72, 0xCD, 0x01, 0x06, 0x0D, 0x82, 0xCD, 0x01, 0xCD, 0x01, 0x15, 0x76, 0xCD, 0x01, 0x07, 0x0F, 0x72, 0xAC, 0x01, 0x01, 0x66, 0xCD, 0x01, 0xC6, 0x60, 0x00, 0x08, 0x8B, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xCE, 0x01, 0xD0, 0x64, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x01, 0x07, 0x83, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0x68, 0xCE, 0x01, 0x6D, 0xCD, 0x01, 0x01, 0x81, 0xAD, 0x01, 0x13, 0x75, 0xAD, 0x01, 0x01, 0x75, 0xCD, 0x01, 0x02, 0xC7, 0x01, 0x00, 0x40, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x03, 0x00, 0x00, 0x00, 0x81, 0xAD, 0x01, 0x11, 0x77, 0xAD, 0x01, 0x00, 0x02, 0x6E, 0xAD, 0x01, 0x2A, 0x08, 0x83, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0x60, 0x01, 0xAD, 0x01, 0x78, 0xAC, 0x01, 0x82, 0x8C, 0x01, 0x8C, 0x01, 0x00, 0x02, 0x74, 0xAC, 0x01, 0x91, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0xEE, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0xCD, 0x01, 0x00, 0x01, 0x72, 0x8C, 0x01, 0x07, 0x81, 0xCE, 0x01, 0x6C, 0xCD, 0x01, 0x10, 0x67, 0xAC, 0x01, 0x7B, 0x8C, 0x01, 0x01, 0x82, 0xEE, 0x01, 0xEE, 0x01, 0xD8, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xEE, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0xCE, 0x01, 0x6A, 0xCD, 0x01, 0x0C, 0x68, 0xAC, 0x01, 0xD0, 0xAB, 0x20, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x34, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x40, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x83, 0xCE, 0x01, 0xCE, 0x01, 0xCE, 0x01, 0x6E, 0xCD, 0x01, 0x0D, 0x43, 0x07, 0x00, 0x00, 0xF2, 0x4D, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x82, 0xCE, 0x01, 0xCE, 0x01, 0x00, 0x01, 0x40, 0x2A, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x44, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xAD, 0x01, 0xAD, 0x01, 0x00, 0x0A, 0x81, 0xEE, 0x01, 0x15, 0x81, 0xAD, 0x01, 0x00, 0x0A, 0x83, 0xEE, 0x01, 0xEE, 0x01, 0xCE, 0x01, 0x6E, 0xCD, 0x01, 0x1F, 0x66, 0xAC, 0x01, 0x0D, 0x81, 0xCE, 0x01, 0x12, 0x82, 0xAD, 0x01, 0xAD, 0x01, 0x1E, 0x86, 0xEF, 0x01, 0xEF, 0x01, 0xEF, 0x01, 0xEE, 0x01, 0xEE, 0x01, 0x0E, 0x02, 0x08, 0x81, 0xCE, 0x01, 0x6E, 0xCD, 0x01, 0x05, 0x81, 0xAD, 0x01, 0x1D, 0x85, 0x0F, 0x02, 0x0F, 0x02, 0x0F, 0x02, 0x0F, 0x02, 0x0E, 0x02, 0xD0, 0x3E, 0x20, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x0F, 0x02, 0x0F, 0x02, 0x0E, 0x02, 0x69, 0xEE, 0x01, 0x0D, 0x81, 0xCD, 0x01, 0x1B, 0x67, 0xAC, 0x01, 0x00, 0x27, 0x82, 0x0E, 0x02, 0x0E, 0x02, 0x68, 0xEE, 0x01, 0x82, 0xCE, 0x01, 0xCE, 0x01, 0x6C, 0xCD, 0x01, 0x13, 0x0A, 0x84, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01, 0xAC, 0x01])] +#[case::xcf(&[0xCF, 0xC6, 0x00, 0x85, 0xC7, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xCD, 0xC7, 0x00, 0xC0, 0x01, 0xE7, 0x00, 0xCA, 0xC7, 0x00, 0x84, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x00, 0x2C, 0xD0, 0x86, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x70, 0x87, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x60, 0x03, 0xE7, 0x00, 0x00, 0x39, 0xF7, 0xF0, 0x01, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x76, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x0F, 0x82, 0xE7, 0x00, 0xE7, 0x00, 0x00, 0x0A, 0x6A, 0xC6, 0x00, 0x00, 0xF0, 0x60, 0x06, 0xE7, 0x00, 0x00, 0x60, 0x25, 0x11, 0x60, 0x0A, 0xE7, 0x00, 0x00, 0x29, 0x68, 0xC7, 0x00, 0x60, 0x0F, 0xE7, 0x00, 0x05, 0x84, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x60, 0x17, 0xE7, 0x00, 0xF0, 0x50, 0x02, 0xDB, 0x20, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0xC0, 0x05, 0xE0, 0x01, 0x00, 0x72, 0x81, 0xC7, 0x00, 0x18, 0x35, 0x00, 0xB2, 0x81, 0xE7, 0x00, 0x18, 0x35, 0x00, 0x8B, 0x2B, 0x12, 0x81, 0xE7, 0x00, 0x0A, 0x72, 0xE7, 0x00, 0x5A, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2B, 0x00, 0xAB, 0x82, 0xC7, 0x00, 0xC7, 0x00, 0xD5, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x07, 0x01, 0x00, 0x3A, 0xD9, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x71, 0xE7, 0x00, 0x00, 0x0A, 0x20, 0x03, 0x8A, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x72, 0xE7, 0x00, 0x77, 0xE8, 0x00, 0x00, 0x69, 0x84, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01])] +#[case::xca(&[0xCA, 0xC7, 0x00, 0xCA, 0xE7, 0x00, 0xCC, 0xC7, 0x00, 0xC0, 0x0C, 0xE7, 0x00, 0x84, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0x00, 0xB4, 0x60, 0x0C, 0xE7, 0x00, 0x00, 0x6D, 0xF7, 0x00, 0x01, 0x20, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x13, 0xE7, 0x00, 0x00, 0x54, 0x46, 0x03, 0x00, 0x20, 0x00, 0x00, 0xF8, 0x72, 0xC7, 0x00, 0x0A, 0xF2, 0x70, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7C, 0xE7, 0x00, 0x12, 0x2B, 0x06, 0x7D, 0xE7, 0x00, 0x00, 0x20, 0xF3, 0xEA, 0x03, 0xE7, 0x00, 0xF7, 0x88, 0x02, 0xE0, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x18, 0x0E, 0xC0, 0xC3, 0x01, 0x32, 0x06, 0x73, 0x07, 0x01, 0x00, 0x3C, 0x71, 0xE7, 0x00, 0x05, 0x2B, 0x15, 0x7B, 0xE7, 0x00, 0x07, 0xC9, 0x0F, 0x00, 0x00, 0xB5, 0xCA, 0xE0, 0x01, 0x17, 0x6A, 0xE8, 0x00, 0x00, 0x2D, 0x60, 0x09, 0xE7, 0x00, 0x16, 0x9D, 0xE8, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0x07, 0x83, 0xE8, 0x00, 0xE8, 0x00, 0xE7, 0x00, 0x6D, 0xE8, 0x00, 0xCC, 0x0F, 0x00, 0x01, 0x70, 0xE8, 0x00, 0x85, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x6E, 0xE8, 0x00, 0x85, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x0E, 0xC0, 0x0A, 0xE0, 0x01, 0x05, 0x76, 0x08, 0x01, 0x00, 0x64, 0x84, 0xE8, 0x00, 0xE8, 0x00, 0xE8, 0x00, 0xE8, 0x00])] +#[case::x18(&[0x18, 0xC0, 0x05, 0x01, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xC0, 0x00, 0x20, 0x00, 0xF0, 0x26, 0x01, 0x40, 0x6E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x21, 0x00, 0xC6, 0x01, 0x00, 0x04, 0x28, 0x75, 0x21, 0x00, 0x81, 0x01, 0x00, 0x43, 0x03, 0x00, 0x00, 0xC6, 0x20, 0x00, 0x84, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x21, 0x00, 0x02, 0xC0, 0x00, 0x01, 0x00, 0x00, 0x0E, 0x81, 0x21, 0x00, 0x0E, 0xD0, 0x4E, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x21, 0x00, 0x82, 0xFF, 0xFF, 0x21, 0x00, 0x6B, 0xFF, 0xFF, 0x00, 0x15, 0xC9, 0xDE, 0xFF, 0x81, 0x01, 0x00, 0x0D, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x82, 0x9E, 0xF7, 0x0C, 0x63, 0x08, 0x82, 0x0C, 0x63, 0x9E, 0xF7, 0x0E, 0x29, 0x0E, 0x82, 0x01, 0x00, 0x01, 0x00, 0x0D, 0x83, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x06, 0x83, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x0E, 0x81, 0x9A, 0xD6, 0x0A, 0xFD, 0x1A, 0x8B, 0x21, 0x00, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x6B, 0x21, 0x00, 0x86, 0x86, 0x31, 0x1C, 0xE7, 0xFF, 0xFF, 0x1C, 0xE7, 0x08, 0x3A, 0x9A, 0xD6, 0x11, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0xFF, 0xFF, 0x71, 0x21, 0x00, 0x88, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x21, 0x00, 0x21, 0x00, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x6C, 0x21, 0x00, 0x86, 0x1C, 0xE7, 0x9E, 0xF7, 0x0C, 0x63, 0x9E, 0xF7, 0x1C, 0xE7, 0x8A, 0x52, 0x12, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x21, 0x00, 0x86, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x0C, 0x63, 0xFF, 0xFF, 0x0C, 0x63, 0x6D, 0x21, 0x00, 0x86, 0xFF, 0xFF, 0x86, 0x31, 0x21, 0x00, 0x86, 0x31, 0xFF, 0xFF, 0x04, 0x21, 0x09, 0x68, 0x01, 0x00, 0x02, 0x83, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x11, 0x85, 0x21, 0x00, 0x0C, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x63, 0x6E, 0x21, 0x00, 0x01, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0xFF, 0xFF, 0x69, 0x21, 0x00, 0x01, 0x69, 0x21, 0x00, 0x02, 0x14, 0x83, 0x21, 0x00, 0x0C, 0x63, 0x0C, 0x63, 0x6F, 0x21, 0x00, 0x01, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x21, 0x00, 0x69, 0xFF, 0xFF, 0x0A, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x72, 0x21, 0x00, 0x01, 0x82, 0x21, 0x00, 0xFF, 0xFF, 0x74, 0x21, 0x00, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x01, 0xF3, 0x44, 0x03, 0x21, 0x00, 0x85, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xCB, 0xE7, 0x00, 0xC7, 0xE6, 0x00, 0xC0, 0x08, 0xE7, 0x00, 0x81, 0xC7, 0x00, 0x2E, 0x67, 0xC7, 0x00, 0xF7, 0x1D, 0x01, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x80, 0x03, 0x00, 0x06, 0x1F, 0x07, 0x00, 0x1E, 0x88, 0xC7, 0x00, 0xC7, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x06, 0x26, 0x0B, 0xC9, 0x20, 0x00, 0x02, 0x85, 0xC7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0x07, 0x69, 0xC7, 0x00, 0x98, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x17, 0x76, 0xC7, 0x00, 0x4D, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x77, 0xC7, 0x00, 0x67, 0xE7, 0x00, 0x00, 0x01, 0x74, 0xC7, 0x00, 0x75, 0xE7, 0x00, 0x03, 0xC7, 0x01, 0x00, 0x15, 0x82, 0xE7, 0x00, 0xE7, 0x00, 0x06, 0x7C, 0xE7, 0x00, 0x00, 0x3B, 0x60, 0x05, 0xE7, 0x00, 0x1A, 0x60, 0x06, 0xE7, 0x00, 0x00, 0x23, 0x84, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00])] +#[case::xcd(&[0xCD, 0x01, 0x00, 0xC0, 0x1E, 0x21, 0x00, 0x85, 0x4D, 0x63, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x2C, 0x60, 0x0F, 0x21, 0x00, 0x00, 0x25, 0xC8, 0x20, 0x00, 0x00, 0x98, 0x83, 0xBE, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x3C, 0x31, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x45, 0x29, 0x21, 0x00, 0x45, 0x29, 0x5D, 0xEF, 0xD0, 0x3B, 0xEA, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x79, 0xCE, 0xD0, 0x3D, 0xDB, 0xD6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x84, 0xBE, 0xF7, 0x40, 0x3B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x55, 0xAD, 0xFF, 0xFF, 0x79, 0xCE, 0x60, 0x18, 0x21, 0x00, 0x05, 0x84, 0x21, 0x00, 0x21, 0x00, 0x10, 0x84, 0x79, 0xCE, 0x1A, 0x82, 0x14, 0xA5, 0x14, 0xA5, 0x00, 0x02, 0x83, 0x45, 0x29, 0x1C, 0xE7, 0x45, 0x29, 0x18, 0x84, 0x14, 0xA5, 0x9E, 0xF7, 0x9E, 0xF7, 0x14, 0xA5, 0x1F, 0x84, 0x2D, 0x63, 0x21, 0x00, 0xCB, 0x52, 0x5D, 0xEF, 0x18, 0x86, 0x14, 0xA5, 0x9E, 0xF7, 0x86, 0x31, 0x86, 0x31, 0x9E, 0xF7, 0x14, 0xA5, 0x1E, 0x84, 0xFB, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x84, 0x73, 0x21, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xF7, 0x86, 0x31, 0x21, 0x00, 0x21, 0x00, 0x86, 0x31, 0x9E, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x77, 0x21, 0x00, 0x01, 0x6E, 0x21, 0x00, 0xF0, 0xB2, 0x02, 0x6F, 0xFF, 0xFF, 0x00, 0x10, 0x60, 0x04, 0x21, 0x00, 0xF0, 0xC5, 0x02, 0x85, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC0, 0x0E, 0xE6, 0x00, 0x84, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0x34, 0x85, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0xC7, 0x00, 0x18, 0x70, 0xE7, 0x00, 0x06, 0xCA, 0x20, 0x00, 0x00, 0x50, 0x52, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0E, 0x60, 0x12, 0xE7, 0x00, 0xF0, 0xC4, 0x01, 0x6A, 0xC7, 0x00, 0x00, 0x4E, 0x84, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00, 0xE7, 0x00])] +#[case::x00(&[0x00, 0x1C, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xC0, 0x09, 0xC6, 0xA5, 0x00, 0xC0, 0x04, 0xA6, 0x00, 0xC0, 0x09, 0xA5, 0x00, 0xCD, 0xA6, 0x00, 0x00, 0xA3, 0x7A, 0xA6, 0x00, 0x00, 0x20, 0xCA, 0x03, 0x00, 0x19, 0x60, 0x07, 0xA6, 0x00, 0x02, 0x60, 0x1E, 0xA6, 0x00, 0xF0, 0x15, 0x02, 0x84, 0xA6, 0x00, 0xA6, 0x00, 0xA6, 0x00, 0xA6, 0x00])] +#[case::x00(&[0x00, 0x1C, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x4B, 0x01, 0xD8, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x1E, 0x60, 0x19, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x00, 0x00, 0xF2, 0xFF, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])] +#[case::x80(&[0x80, 0x40, 0xE1, 0x30, 0x42, 0x41, 0x82, 0x41, 0xA3, 0x49, 0x24, 0x5A, 0x43, 0x62, 0xE2, 0x59, 0x02, 0x5A, 0x02, 0x5A, 0xE2, 0x59, 0x23, 0x62, 0x40, 0x39, 0x21, 0x39, 0x01, 0x31, 0x80, 0x18, 0xA1, 0x18, 0x80, 0x18, 0xC1, 0x20, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xA0, 0x20, 0xA3, 0x49, 0xC0, 0x28, 0x80, 0x20, 0xA1, 0x20, 0x61, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x08, 0x40, 0x08, 0x20, 0x08, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x40, 0x10, 0x61, 0x18, 0x61, 0x18, 0x61, 0x18, 0x61, 0x18, 0x61, 0x18, 0x60, 0x18, 0x60, 0x18, 0x22, 0x39, 0x83, 0x49, 0xA0, 0x28, 0xE0, 0x30, 0x61, 0x41, 0xE2, 0x51, 0x44, 0x62, 0x03, 0x5A, 0x64, 0x6A, 0x84, 0x72, 0xE1, 0x59, 0x20, 0x39, 0xC0, 0x30, 0x41, 0x39, 0x02, 0x31, 0xE2, 0x28, 0x02, 0x29, 0xA0, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x60, 0x18, 0xC0, 0x28, 0x24, 0x5A, 0x82, 0x49, 0x83, 0x41, 0x80, 0x20, 0x81, 0x18, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x08, 0x69, 0x40, 0x10, 0x02, 0x83, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x6A, 0x61, 0x18, 0xF4, 0x34, 0x01, 0x80, 0x28, 0x42, 0x39, 0xC0, 0x30, 0xC0, 0x30, 0xE0, 0x30, 0x80, 0x28, 0xA0, 0x30, 0xC0, 0x30, 0x44, 0x62, 0xE5, 0x7A, 0x63, 0x6A, 0x43, 0x62, 0x60, 0x41, 0xC0, 0x30, 0x60, 0x28, 0x81, 0x20, 0x80, 0x18, 0x80, 0x18, 0xA0, 0x20, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x82, 0x41, 0x04, 0x52, 0x24, 0x5A, 0x01, 0x31, 0xA0, 0x20, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x61, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0x61, 0x18, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0x81, 0x18, 0x61, 0x18, 0x81, 0x18, 0x21, 0x39, 0xE0, 0x30, 0x62, 0x41, 0x20, 0x39, 0x21, 0x39, 0x80, 0x28, 0x60, 0x28, 0x21, 0x41, 0xC2, 0x51, 0x02, 0x5A, 0xA0, 0x51, 0xA0, 0x51, 0x63, 0x6A, 0x44, 0x62, 0xA3, 0x51, 0x80, 0x28, 0x80, 0x20, 0x80, 0x20, 0x60, 0x18, 0x60, 0x18, 0xA1, 0x20, 0x80, 0x18, 0xA0, 0x20, 0x62, 0x39, 0x03, 0x52, 0xA2, 0x49, 0x01, 0x39, 0x80, 0x20, 0xA1, 0x20, 0x61, 0x10, 0x20, 0x08, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x08, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0xA1, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE3, 0x51, 0x41, 0x39, 0xE3, 0x51, 0xE3, 0x51, 0xC2, 0x51, 0x20, 0x39, 0xE0, 0x30, 0x41, 0x41, 0x20, 0x39, 0x81, 0x49, 0x85, 0x6A, 0x03, 0x5A, 0x23, 0x62, 0x22, 0x62, 0x43, 0x6A, 0x81, 0x51, 0x20, 0x39, 0x80, 0x20, 0x80, 0x20, 0x80, 0x20, 0x60, 0x18, 0x80, 0x18, 0xC0, 0x20, 0x00, 0x31, 0x81, 0x41, 0x20, 0x39, 0x62, 0x41, 0xA0, 0x28, 0xE2, 0x28, 0x81, 0x18, 0x61, 0x10, 0x81, 0x10, 0x40, 0x10, 0x40, 0x10, 0x41, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0x81, 0x18, 0x80, 0x18, 0x60, 0x10, 0x60, 0x10, 0x82, 0x49, 0x40, 0x41, 0xC3, 0x51, 0x82, 0x49, 0x03, 0x5A, 0x24, 0x5A, 0x20, 0x39, 0xA2, 0x49, 0x61, 0x41, 0xC0, 0x30, 0x03, 0x5A, 0x24, 0x62, 0xA1, 0x51, 0xA1, 0x51, 0x63, 0x6A, 0x64, 0x6A, 0x03, 0x5A, 0x21, 0x39, 0x63, 0x41, 0xC1, 0x28, 0x80, 0x20, 0xA0, 0x20, 0xE0, 0x28, 0xC3, 0x49, 0xA2, 0x49, 0x81, 0x49, 0x62, 0x41, 0xC0, 0x28, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x40, 0x08, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x18, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x80, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x41, 0xC3, 0x51, 0xE0, 0x38, 0x00, 0x39, 0x04, 0x5A, 0x24, 0x62, 0x65, 0x6A, 0xA6, 0x6A, 0x65, 0x62, 0x81, 0x41, 0x24, 0x5A, 0x85, 0x6A, 0x03, 0x5A, 0xA2, 0x51, 0xC2, 0x59, 0xE2, 0x59, 0x65, 0x6A, 0xC3, 0x51, 0xC4, 0x51, 0xA0, 0x28, 0xE1, 0x28, 0xC0, 0x28, 0x00, 0x29, 0x44, 0x5A, 0x03, 0x5A, 0xA2, 0x51, 0xA2, 0x51, 0xE0, 0x30, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x69, 0x60, 0x10, 0xF4, 0xEF, 0x02, 0x80, 0x10, 0x80, 0x18, 0x81, 0x18, 0xE3, 0x51, 0x04, 0x5A, 0xE4, 0x59, 0xA3, 0x51, 0x62, 0x49, 0xE0, 0x38, 0x00, 0x39, 0x20, 0x39, 0x61, 0x41, 0xE0, 0x30, 0xE0, 0x30, 0xE3, 0x51, 0x65, 0x6A, 0x03, 0x5A, 0xE2, 0x59, 0x43, 0x6A, 0x64, 0x6A, 0xE3, 0x59, 0xE4, 0x59, 0xC0, 0x30, 0x21, 0x31, 0x21, 0x31, 0xC3, 0x41, 0xA6, 0x6A, 0x85, 0x6A, 0x85, 0x6A, 0x24, 0x62, 0x04, 0x5A, 0x21, 0x39, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0x01, 0x31, 0x21, 0x39, 0xA3, 0x51, 0xA2, 0x51, 0x20, 0x41, 0x61, 0x49, 0xE0, 0x38, 0x62, 0x49, 0xC4, 0x51, 0x01, 0x39, 0xA0, 0x28, 0xE0, 0x30, 0x85, 0x6A, 0x43, 0x62, 0x43, 0x62, 0x84, 0x6A, 0xE2, 0x59, 0x44, 0x62, 0x04, 0x5A, 0x21, 0x39, 0x21, 0x31, 0x00, 0x31, 0xC2, 0x49, 0x85, 0x62, 0x23, 0x62, 0x85, 0x72, 0x68, 0x8B, 0xA6, 0x72, 0x66, 0x62, 0xE4, 0x49, 0x80, 0x20, 0x80, 0x20, 0x60, 0x18, 0xC1, 0x20, 0xA0, 0x20, 0x02, 0x29, 0xC1, 0x28, 0x43, 0x39, 0xE5, 0x49, 0xC1, 0x28, 0x60, 0x18, 0x40, 0x10, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x61, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x18, 0x61, 0x18, 0x40, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x18, 0x81, 0x18, 0x80, 0x10, 0xE1, 0x30, 0x01, 0x31, 0x82, 0x41, 0x03, 0x5A, 0xE3, 0x59, 0x82, 0x49, 0x61, 0x49, 0xA2, 0x51, 0x04, 0x5A, 0x21, 0x39, 0xA0, 0x28, 0x41, 0x41, 0xA5, 0x6A, 0x63, 0x62, 0x02, 0x5A, 0x84, 0x6A, 0xA5, 0x72, 0x64, 0x6A, 0x81, 0x49, 0xA0, 0x28, 0xE0, 0x30, 0x82, 0x41, 0x85, 0x62, 0x24, 0x5A, 0x85, 0x6A, 0xC2, 0x59, 0x65, 0x6A, 0xC6, 0x72, 0xE4, 0x51, 0xE4, 0x51, 0xA0, 0x20, 0x63, 0x39, 0xA4, 0x41, 0xC5, 0x49, 0xE1, 0x28, 0xA0, 0x20, 0x80, 0x20, 0xA0, 0x20, 0xC5, 0x49, 0x63, 0x39, 0xA0, 0x20, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x10, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0x61, 0x10, 0x40, 0x10, 0x60, 0x10, 0x81, 0x18, 0x61, 0x18, 0x61, 0x18, 0x60, 0x10, 0x60, 0x10, 0xC0, 0x28, 0xC0, 0x20, 0xE0, 0x30, 0xE4, 0x51, 0xE3, 0x51, 0x65, 0x6A, 0x85, 0x6A, 0x03, 0x5A, 0xE2, 0x51, 0xA2, 0x51, 0xE3, 0x59, 0xE2, 0x51, 0x23, 0x62, 0x84, 0x6A, 0xC1, 0x51, 0x02, 0x5A, 0x02, 0x5A, 0xE6, 0x7A, 0xA6, 0x72, 0x41, 0x41, 0xE0, 0x30, 0xE0, 0x30, 0xA2, 0x41, 0x04, 0x52, 0xA2, 0x51, 0x81, 0x49, 0xA2, 0x51, 0xC2, 0x51, 0xA2, 0x49, 0xE4, 0x51, 0x42, 0x39, 0xE0, 0x28, 0xC0, 0x28, 0x42, 0x39, 0x67, 0x5A, 0xA4, 0x49, 0xA0, 0x20, 0xA0, 0x20, 0x43, 0x39, 0xC5, 0x49, 0xE1, 0x28, 0x80, 0x20, 0xA1, 0x20, 0x23, 0x31, 0xE2, 0x28, 0x60, 0x18, 0x20, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x60, 0x18, 0x40, 0x10, 0xE0, 0x28, 0xA0, 0x20, 0x80, 0x20, 0x60, 0x18, 0x80, 0x28, 0xA3, 0x49, 0x65, 0x62, 0x44, 0x62, 0xA1, 0x51, 0x23, 0x62, 0x44, 0x62, 0x23, 0x62, 0xA1, 0x51, 0xE2, 0x59, 0x84, 0x6A, 0x63, 0x6A, 0x02, 0x5A, 0x84, 0x6A, 0x85, 0x6A, 0x81, 0x49, 0xA2, 0x49, 0x62, 0x41, 0xE0, 0x30, 0x62, 0x41, 0xA2, 0x49, 0x86, 0x6A, 0x04, 0x5A, 0xC0, 0x30, 0xA3, 0x49, 0x45, 0x5A, 0xE4, 0x51, 0x01, 0x31, 0x80, 0x20, 0xA0, 0x20, 0x01, 0x29, 0xC4, 0x49, 0xA3, 0x41, 0x80, 0x20, 0x01, 0x29, 0xE5, 0x49, 0x22, 0x31, 0x22, 0x31, 0x43, 0x31, 0x43, 0x31, 0x02, 0x29, 0xA1, 0x20, 0x60, 0x18, 0x40, 0x10, 0x60, 0x18, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x18, 0x61, 0x18, 0x81, 0x18, 0x60, 0x18, 0x80, 0x18, 0x40, 0x10, 0x60, 0x18, 0xC3, 0x49, 0x01, 0x29, 0x80, 0x20, 0x80, 0x20, 0x80, 0x20, 0x22, 0x39, 0xA3, 0x51, 0xA2, 0x49, 0xA2, 0x51, 0x24, 0x62, 0x23, 0x62, 0x03, 0x5A, 0x82, 0x51, 0x23, 0x62, 0xE6, 0x7A, 0x06, 0x7B, 0x84, 0x6A, 0x43, 0x62, 0x43, 0x62, 0x81, 0x49, 0x20, 0x39, 0x00, 0x31, 0xC0, 0x28, 0x21, 0x39, 0x01, 0x39, 0x62, 0x41, 0xA3, 0x49, 0xC0, 0x28, 0xC0, 0x28, 0xA4, 0x41, 0x26, 0x5A, 0x05, 0x52, 0xA4, 0x41, 0x01, 0x31, 0x60, 0x18, 0x80, 0x18, 0xC0, 0x20, 0xA1, 0x20, 0x60, 0x18, 0xA0, 0x20, 0x40, 0x10, 0x60, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x18, 0x60, 0x10, 0x61, 0x18, 0x81, 0x18, 0x81, 0x18, 0xA1, 0x18, 0xA1, 0x20, 0xA0, 0x20, 0xC1, 0x20, 0xE1, 0x28, 0x60, 0x18, 0x60, 0x18, 0x62, 0x41, 0x21, 0x39, 0xA0, 0x28, 0x23, 0x39, 0xE1, 0x30, 0xC0, 0x28, 0x41, 0x39, 0xA3, 0x51, 0x81, 0x49, 0x24, 0x62, 0x61, 0x49, 0x03, 0x62, 0x04, 0x62, 0x44, 0x62, 0xE5, 0x7A, 0xE5, 0x7A, 0x27, 0x7B, 0x06, 0x7B, 0xE6, 0x7A, 0x64, 0x62, 0x00, 0x39, 0x80, 0x28, 0xA0, 0x28, 0xC1, 0x28, 0xE1, 0x30, 0x42, 0x39, 0x22, 0x31, 0x80, 0x20, 0xA0, 0x20, 0x22, 0x31, 0x42, 0x39, 0x01, 0x31, 0x22, 0x31, 0xE2, 0x28, 0x80, 0x20, 0x80, 0x18, 0x20, 0x10, 0x60, 0x10, 0x80, 0x18, 0x60, 0x10, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x81, 0x18, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x18, 0xA1, 0x20, 0xC1, 0x20, 0xE2, 0x28, 0xC1, 0x20, 0xE1, 0x28, 0xE1, 0x28, 0xA0, 0x20, 0xC1, 0x28, 0x01, 0x39, 0x83, 0x49, 0x42, 0x41, 0x42, 0x41, 0x05, 0x52, 0x82, 0x41, 0x82, 0x49, 0x03, 0x5A, 0x03, 0x5A, 0xC2, 0x51, 0xA2, 0x51, 0x45, 0x6A, 0x64, 0x6A, 0x84, 0x6A, 0xC5, 0x72, 0x67, 0x83, 0x27, 0x7B, 0x48, 0x83, 0xE6, 0x7A, 0xA5, 0x72, 0xA2, 0x49, 0x42, 0x41, 0xC1, 0x28, 0x80, 0x20, 0x80, 0x20, 0x22, 0x31, 0x02, 0x31, 0x80, 0x18, 0xA1, 0x18, 0xC1, 0x20, 0x43, 0x39, 0x02, 0x31, 0xC1, 0x28, 0xE2, 0x28, 0x60, 0x18, 0x40, 0x10, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0xA1, 0x18, 0x61, 0x10, 0x81, 0x18, 0x61, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x80, 0x18, 0xA1, 0x20, 0x80, 0x18, 0xE1, 0x28, 0x22, 0x31, 0x63, 0x39, 0xE0, 0x28, 0xA0, 0x28, 0x63, 0x41, 0xA3, 0x51, 0x62, 0x49, 0xA2, 0x51, 0x82, 0x49, 0x41, 0x39, 0x82, 0x49, 0xC2, 0x51, 0xE3, 0x51, 0xE3, 0x51, 0x82, 0x49, 0x24, 0x62, 0x24, 0x62, 0x03, 0x5A, 0x64, 0x62, 0xE5, 0x72, 0xC5, 0x72, 0x68, 0x83, 0x48, 0x83, 0xE6, 0x7A, 0xC6, 0x72, 0x24, 0x62, 0x66, 0x62, 0x83, 0x49, 0x63, 0x41, 0x22, 0x39, 0x01, 0x31, 0xC1, 0x20, 0xA1, 0x20, 0xA1, 0x20, 0xA1, 0x20, 0x80, 0x18, 0x01, 0x29, 0xC1, 0x20, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x61, 0x18, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0xA1, 0x18, 0x60, 0x18, 0xA0, 0x20, 0xC0, 0x28, 0xC4, 0x49, 0xC4, 0x49, 0x21, 0x31, 0xE0, 0x28, 0xA2, 0x51, 0xE3, 0x59, 0x03, 0x5A, 0x24, 0x5A, 0xC3, 0x51, 0x82, 0x49, 0xC3, 0x51, 0x41, 0x41, 0x41, 0x41, 0x85, 0x6A, 0x45, 0x62, 0x03, 0x5A, 0x64, 0x62, 0x03, 0x5A, 0x23, 0x5A, 0x03, 0x5A, 0x27, 0x7B, 0x69, 0x83, 0xA6, 0x72, 0x69, 0x83, 0xE7, 0x72, 0xE3, 0x59, 0xA2, 0x49, 0x62, 0x49, 0x62, 0x41, 0x67, 0x62, 0xE1, 0x28, 0x81, 0x20, 0x80, 0x18, 0x80, 0x18, 0xA0, 0x18, 0xA4, 0x39, 0x22, 0x29, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x80, 0x18, 0x80, 0x18, 0xA0, 0x20, 0xA0, 0x28, 0x63, 0x41, 0x42, 0x39, 0x62, 0x41, 0xE3, 0x59, 0x24, 0x62, 0xE3, 0x59, 0x44, 0x62, 0x65, 0x6A, 0x45, 0x62, 0xA2, 0x51, 0x41, 0x41, 0x20, 0x39, 0x82, 0x49, 0x45, 0x62, 0xA6, 0x72, 0xE6, 0x72, 0x24, 0x5A, 0x23, 0x5A, 0xC6, 0x6A, 0xA5, 0x6A, 0xE7, 0x72, 0x86, 0x6A, 0x08, 0x7B, 0x07, 0x7B, 0xA6, 0x72, 0xA1, 0x51, 0x61, 0x41, 0x61, 0x41, 0x83, 0x41, 0xC1, 0x28, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x80, 0x10, 0x06, 0x42, 0xA4, 0x39, 0xA1, 0x20, 0x60, 0x18, 0x60, 0x18, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x81, 0x10, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x20, 0x10, 0x81, 0x18, 0x60, 0x18, 0x80, 0x20, 0xE1, 0x28, 0x63, 0x39, 0x21, 0x39, 0xA3, 0x41, 0x23, 0x62, 0x24, 0x62, 0xC2, 0x51, 0xC2, 0x51, 0xE3, 0x59, 0x65, 0x6A, 0x24, 0x5A, 0x82, 0x49, 0xE3, 0x59, 0x81, 0x49, 0x41, 0x41, 0x24, 0x5A, 0x85, 0x6A, 0x85, 0x6A, 0x44, 0x62, 0xC6, 0x72, 0x65, 0x62, 0x07, 0x7B, 0x03, 0x5A, 0xE7, 0x72, 0x07, 0x7B, 0x07, 0x7B, 0xA6, 0x72, 0xE3, 0x59, 0x82, 0x49, 0x83, 0x49, 0xE1, 0x30, 0x60, 0x20, 0x60, 0x18, 0x60, 0x18, 0x80, 0x10, 0xA0, 0x18, 0x84, 0x39, 0xA5, 0x41, 0x23, 0x29, 0x60, 0x18, 0x60, 0x10, 0x61, 0x10, 0x20, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x18, 0x61, 0x18, 0x61, 0x18, 0x07, 0xF4, 0x4D, 0x0B, 0x80, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x18, 0x81, 0x18, 0xA1, 0x20, 0xC1, 0x20, 0xC1, 0x28, 0x02, 0x31, 0x01, 0x31, 0x42, 0x39, 0x24, 0x62, 0xC2, 0x51, 0xA2, 0x51, 0xC2, 0x51, 0x04, 0x5A, 0x44, 0x62, 0x04, 0x5A, 0x61, 0x41, 0x03, 0x5A, 0x82, 0x49, 0x65, 0x62, 0x45, 0x62, 0xA6, 0x6A, 0x65, 0x6A, 0x44, 0x62, 0xE6, 0x72, 0xC6, 0x6A, 0xC6, 0x72, 0xC6, 0x72, 0x28, 0x7B, 0xE7, 0x7A, 0xE7, 0x7A, 0x44, 0x62, 0xE3, 0x51, 0x41, 0x41, 0x25, 0x5A, 0x02, 0x31, 0x80, 0x20, 0xA1, 0x20, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0xA1, 0x20, 0x81, 0x18, 0x40, 0x10, 0x20, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x10, 0x61, 0x18, 0x61, 0x18, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x61, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x61, 0x18, 0x61, 0x18, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x85, 0x6A, 0x64, 0x6A, 0x23, 0x62, 0xE3, 0x59, 0x24, 0x62, 0x03, 0x5A, 0x24, 0x5A, 0x04, 0x5A, 0xA3, 0x51, 0xC3, 0x51, 0x24, 0x5A, 0x85, 0x6A, 0x65, 0x62, 0xE3, 0x51, 0x03, 0x5A, 0xA5, 0x6A, 0x06, 0x73, 0x06, 0x73, 0xA6, 0x6A, 0x07, 0x7B, 0x28, 0x83, 0xE7, 0x7A, 0xC6, 0x72, 0x44, 0x62, 0x41, 0x41, 0x04, 0x5A, 0x25, 0x5A, 0x43, 0x39, 0x80, 0x18, 0x60, 0x10, 0x60, 0x10, 0x61, 0x10, 0x61, 0x18, 0x60, 0x18, 0x61, 0x18, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x81, 0x18, 0x61, 0x18, 0x61, 0x10, 0x40, 0x10, 0x40, 0x10, 0x61, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x81, 0x18, 0x61, 0x10, 0x81, 0x18, 0x81, 0x18, 0x60, 0x18, 0x81, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x23, 0x62, 0x85, 0x6A, 0x64, 0x6A, 0x23, 0x62, 0xA2, 0x51, 0xC2, 0x51, 0x44, 0x62, 0x45, 0x62, 0xE3, 0x51, 0x20, 0x39, 0x24, 0x5A, 0x24, 0x62, 0x45, 0x62, 0x24, 0x5A, 0x65, 0x6A, 0xA5, 0x6A, 0x27, 0x7B, 0x48, 0x83, 0x07, 0x7B, 0xC6, 0x72, 0x28, 0x7B, 0x07, 0x7B, 0xE6, 0x72, 0xC6, 0x72, 0x85, 0x6A, 0x85, 0x62, 0x25, 0x5A, 0xE1, 0x28, 0x60, 0x18, 0x60, 0x18, 0x61, 0x18, 0x81, 0x18, 0x61, 0x18, 0x60, 0x18, 0x60, 0x18, 0x40, 0x10, 0xA1, 0x18, 0xE2, 0x20, 0xC1, 0x20, 0xA1, 0x18, 0x81, 0x18, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0x61, 0x10, 0x61, 0x10, 0x81, 0x18, 0x61, 0x18, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0xA5, 0x72, 0x64, 0x6A, 0x84, 0x6A, 0x64, 0x62, 0xC2, 0x51, 0xE3, 0x59, 0x65, 0x62, 0x24, 0x5A, 0x04, 0x5A, 0x65, 0x62, 0x24, 0x5A, 0x03, 0x5A, 0x86, 0x6A, 0xA6, 0x6A, 0x24, 0x62, 0xA5, 0x6A, 0x23, 0x5A, 0xC6, 0x6A, 0x28, 0x7B, 0x07, 0x7B, 0x28, 0x7B, 0xC6, 0x72, 0x65, 0x62, 0x85, 0x6A, 0xA6, 0x6A, 0xE3, 0x51, 0x21, 0x39, 0x80, 0x20, 0x60, 0x18, 0x40, 0x18, 0x81, 0x18, 0x61, 0x18, 0x61, 0x18, 0x60, 0x18, 0x40, 0x10, 0x80, 0x18, 0x64, 0x31, 0xA5, 0x39, 0xA0, 0x18, 0xA0, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x18, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x80, 0x10, 0x60, 0x10, 0x81, 0x18, 0x61, 0x10, 0x81, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x61, 0x18, 0x40, 0x10, 0xC5, 0x72, 0xA5, 0x72, 0xE6, 0x7A, 0x23, 0x62, 0xE3, 0x59, 0x24, 0x5A, 0x24, 0x5A, 0xC2, 0x51, 0x61, 0x41, 0x24, 0x5A, 0x08, 0x7B, 0xA6, 0x6A, 0x65, 0x62, 0xC6, 0x72, 0xA6, 0x72, 0xE7, 0x7A, 0x23, 0x5A, 0x64, 0x62, 0xA6, 0x6A, 0x27, 0x7B, 0x48, 0x83, 0x07, 0x7B, 0x85, 0x6A, 0x64, 0x62, 0xA5, 0x6A, 0xE6, 0x72, 0xE3, 0x51, 0xA0, 0x28, 0x60, 0x18, 0x80, 0x20, 0x40, 0x18, 0x61, 0x18, 0x61, 0x18, 0x40, 0x10, 0x80, 0x18, 0xA1, 0x18, 0xA0, 0x18, 0xC4, 0x39, 0x22, 0x29, 0x80, 0x18, 0x60, 0x10, 0x60, 0x10, 0x80, 0x18, 0x81, 0x18, 0x81, 0x18, 0x60, 0x18, 0x60, 0x10, 0x80, 0x18, 0x61, 0x18, 0x61, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x80, 0x10, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x61, 0x10, 0xA1, 0x18, 0x81, 0x18, 0x81, 0x18, 0x60, 0x10, 0x60, 0x18, 0x84, 0x6A, 0xE6, 0x7A, 0xE6, 0x7A, 0x85, 0x6A, 0x03, 0x5A, 0x85, 0x6A, 0x65, 0x62, 0x40, 0x39, 0xE3, 0x51, 0x65, 0x62, 0x44, 0x62, 0xA2, 0x49, 0xA2, 0x49, 0x65, 0x6A, 0xA6, 0x6A, 0xC6, 0x72, 0x65, 0x62, 0x44, 0x62, 0x65, 0x62, 0x07, 0x7B, 0xA6, 0x6A, 0x07, 0x7B, 0xA6, 0x72, 0xE6, 0x72, 0xC6, 0x72, 0xC6, 0x72, 0xC6, 0x6A, 0xC3, 0x49, 0xA0, 0x28, 0x80, 0x20, 0x60, 0x18, 0x60, 0x18, 0x61, 0x18, 0x40, 0x10, 0x80, 0x18, 0xA1, 0x20, 0x02, 0x29, 0x02, 0x29, 0xC1, 0x20, 0xA0, 0x18, 0xC1, 0x20, 0x60, 0x18, 0xA1, 0x20, 0x43, 0x31, 0xA1, 0x20, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0x60, 0x10, 0xA2, 0x20, 0x81, 0x18, 0x60, 0x10, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x81, 0x18, 0x81, 0x18, 0x44, 0x31, 0x03, 0x29, 0xC2, 0x20, 0x40, 0x10, 0x60, 0x10, 0x23, 0x62, 0xC5, 0x7A, 0x23, 0x62, 0x44, 0x6A, 0xC6, 0x72, 0xA5, 0x6A, 0xE7, 0x72, 0xE3, 0x51, 0xC3, 0x51, 0x86, 0x6A, 0xE7, 0x72, 0xC6, 0x72, 0x85, 0x6A, 0x03, 0x5A, 0xE3, 0x59, 0x24, 0x62, 0x24, 0x5A, 0xA6, 0x6A, 0xC6, 0x72, 0x28, 0x7B, 0x07, 0x7B, 0x85, 0x6A, 0x85, 0x6A, 0x03, 0x5A, 0xC6, 0x72, 0xE6, 0x72, 0x07, 0x73, 0x44, 0x5A, 0x24, 0x5A, 0xA3, 0x49, 0x83, 0x41, 0x02, 0x31, 0xA1, 0x20, 0x80, 0x20, 0x81, 0x20, 0xA0, 0x20, 0x80, 0x18, 0xA0, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x18, 0xC1, 0x20, 0xE2, 0x28, 0x23, 0x31, 0xE2, 0x28, 0x80, 0x18, 0x60, 0x18, 0xE2, 0x28, 0xC2, 0x20, 0x40, 0x10, 0x60, 0x10, 0xE2, 0x20, 0xE2, 0x20, 0x80, 0x10, 0x80, 0x10, 0x60, 0x10, 0x40, 0x10, 0x81, 0x18, 0x60, 0x18, 0xA1, 0x18, 0x60, 0x10, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0xC5, 0x72, 0x06, 0x7B, 0xC5, 0x72, 0xE2, 0x59, 0xA5, 0x6A, 0xC6, 0x72, 0xC6, 0x72, 0xA5, 0x6A, 0xA6, 0x6A, 0xC6, 0x72, 0xC6, 0x72, 0xE7, 0x72, 0x07, 0x7B, 0xA6, 0x72, 0x65, 0x62, 0xE3, 0x51, 0x41, 0x41, 0xE3, 0x51, 0x65, 0x62, 0x48, 0x83, 0xE6, 0x72, 0xC6, 0x72, 0xA5, 0x72, 0xA5, 0x6A, 0x64, 0x6A, 0xA5, 0x6A, 0x84, 0x62, 0x07, 0x7B, 0xA6, 0x6A, 0x45, 0x62, 0xE4, 0x51, 0x46, 0x5A, 0x43, 0x39, 0xC1, 0x28, 0xC1, 0x28, 0xE2, 0x28, 0xE1, 0x28, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xA1, 0x20, 0xA1, 0x20, 0x23, 0x31, 0x64, 0x39, 0xE2, 0x28, 0x60, 0x18, 0x40, 0x10, 0x60, 0x18, 0x60, 0x10, 0x81, 0x18, 0xA1, 0x18, 0x81, 0x18, 0x81, 0x18, 0x80, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x10, 0xA5, 0x72, 0xE6, 0x7A, 0xE6, 0x7A, 0x43, 0x62, 0x85, 0x6A, 0xC5, 0x72, 0x85, 0x6A, 0xE2, 0x59, 0x85, 0x6A, 0xA6, 0x72, 0xE7, 0x7A, 0xE6, 0x72, 0xE7, 0x72, 0xA6, 0x72, 0xA6, 0x72, 0x44, 0x62, 0xA2, 0x49, 0x24, 0x5A, 0xA6, 0x6A, 0xE6, 0x72, 0xE6, 0x72, 0xC6, 0x72, 0xE6, 0x7A, 0xC6, 0x72, 0x06, 0x7B, 0xE6, 0x7A, 0x27, 0x7B, 0xA5, 0x6A, 0xA6, 0x6A, 0x44, 0x5A, 0x04, 0x5A, 0x46, 0x62, 0xC4, 0x49, 0x42, 0x39, 0xA0, 0x28, 0x22, 0x39, 0xC1, 0x28, 0x80, 0x20, 0x81, 0x20, 0xC1, 0x28, 0xA1, 0x20, 0xC1, 0x28, 0xA1, 0x20, 0x80, 0x20, 0x40, 0x18, 0x40, 0x18, 0x81, 0x20, 0xA1, 0x20, 0x60, 0x10, 0xA1, 0x18, 0x60, 0x18, 0x60, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x60, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x18, 0x02, 0x29, 0x64, 0x39, 0x85, 0x6A, 0xC5, 0x72, 0xA5, 0x72, 0x84, 0x72, 0x85, 0x72, 0xC5, 0x72, 0xA5, 0x72, 0x85, 0x6A, 0x84, 0x6A, 0x44, 0x62, 0xA5, 0x72, 0xE6, 0x7A, 0xC6, 0x72, 0xA6, 0x6A, 0xA6, 0x6A, 0xA6, 0x6A, 0xA6, 0x6A, 0xC3, 0x51, 0xE7, 0x72, 0x07, 0x7B, 0xC5, 0x72, 0xC5, 0x72, 0x06, 0x7B, 0xC6, 0x72, 0x07, 0x7B, 0x06, 0x7B, 0xE6, 0x7A, 0xE6, 0x72, 0xC6, 0x72, 0xE6, 0x72, 0x45, 0x62, 0x04, 0x5A, 0x45, 0x62, 0x46, 0x62, 0x42, 0x41, 0x01, 0x39, 0xC1, 0x28, 0xC1, 0x28, 0x23, 0x39, 0xA1, 0x28, 0x02, 0x31, 0xE1, 0x28, 0x40, 0x18, 0x80, 0x20, 0x80, 0x20, 0x80, 0x20, 0x40, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x10, 0xA5, 0x39, 0x85, 0x39, 0xA1, 0x18, 0x23, 0x29, 0x81, 0x18, 0x40, 0x10, 0x40, 0x10, 0x60, 0x10, 0x60, 0x10, 0x81, 0x18, 0x60, 0x18, 0x60, 0x10, 0xA1, 0x20, 0x02, 0x29, 0x23, 0x5A, 0x06, 0x7B, 0x84, 0x6A, 0xC5, 0x72, 0xC5, 0x72, 0x84, 0x6A, 0xE6, 0x7A, 0xC5, 0x72, 0x84, 0x6A, 0x85, 0x6A, 0xA5, 0x72, 0xA6, 0x72, 0xE6, 0x72, 0xC6, 0x72, 0x85, 0x6A, 0x07, 0x7B, 0x08, 0x7B, 0xE7, 0x72, 0x64, 0x62, 0x07, 0x7B, 0xC5, 0x72, 0x84, 0x6A, 0xA5, 0x6A, 0x07, 0x7B, 0xE6, 0x7A, 0x07, 0x7B, 0xC6, 0x72, 0x06, 0x7B, 0x06, 0x7B, 0xE6, 0x72, 0xA5, 0x72, 0x44, 0x62, 0xC2, 0x51, 0x03, 0x5A, 0x04, 0x5A, 0xC4, 0x51, 0xA4, 0x49, 0xC1, 0x30, 0x84, 0x41, 0xA4, 0x41, 0x63, 0x41, 0x62, 0x41, 0x21, 0x31, 0xA3, 0x41, 0xA4, 0x49, 0x43, 0x39, 0xA0, 0x20, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE1, 0x20, 0x43, 0x31, 0xE2, 0x28, 0x84, 0x39, 0xC6, 0x41, 0x60, 0x18, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x60, 0x18, 0x60, 0x10, 0x60, 0x10, 0x60, 0x18, 0x80, 0x18, 0x23, 0x62, 0xC5, 0x72, 0x84, 0x6A, 0xE2, 0x59, 0x43, 0x6A, 0xA5, 0x72, 0x64, 0x6A, 0x63, 0x6A, 0xC5, 0x72, 0x23, 0x62, 0xC6, 0x72, 0xE6, 0x7A, 0x85, 0x6A, 0xC6, 0x72, 0x07, 0x7B, 0x65, 0x62, 0xE7, 0x72, 0x69, 0x83, 0xE6, 0x72, 0xC5, 0x72, 0x84, 0x6A, 0x84, 0x6A, 0xC5, 0x72, 0xA5, 0x72, 0xA6, 0x72, 0x27, 0x83, 0x06, 0x7B, 0xE6, 0x72, 0xC6, 0x72, 0x84, 0x6A, 0xC5, 0x72, 0xC5, 0x72, 0x23, 0x62, 0x43, 0x62, 0xC2, 0x51, 0x41, 0x41, 0x21, 0x41, 0x42, 0x41, 0xA3, 0x49, 0xE4, 0x51, 0x45, 0x62, 0x25, 0x5A, 0x41, 0x39, 0x41, 0x39, 0xC3, 0x49, 0x05, 0x52, 0x22, 0x39, 0x40, 0x18, 0x40, 0x18, 0x60, 0x18, 0x40, 0x18, 0xA1, 0x20, 0xC1, 0x28, 0xC1, 0x20, 0xE2, 0x28, 0x40, 0x10, 0x40, 0x10, 0x61, 0x18, 0x81, 0x18, 0xA2, 0x20, 0x81, 0x18, 0x60, 0x10, 0x60, 0x10, 0x80, 0x18, 0x65, 0x6A, 0xE6, 0x7A, 0xE6, 0x7A, 0xE2, 0x59, 0x63, 0x6A, 0xC5, 0x72, 0xE6, 0x7A, 0xA5, 0x72, 0x23, 0x62, 0x64, 0x6A, 0xA5, 0x72, 0xA5, 0x6A, 0xE6, 0x7A, 0xA6, 0x72, 0x07, 0x7B, 0xE6, 0x72, 0xA6, 0x6A, 0xE7, 0x72, 0x27, 0x7B, 0x27, 0x7B, 0x84, 0x6A, 0xE1, 0x59, 0x84, 0x6A, 0x23, 0x62, 0x44, 0x62, 0xA5, 0x72, 0xE6, 0x7A, 0x07, 0x7B, 0x06, 0x7B, 0x23, 0x62, 0xA1, 0x49, 0x02, 0x5A, 0x43, 0x62, 0x64, 0x6A, 0x65, 0x6A, 0x03, 0x5A, 0x61, 0x41, 0x41, 0x41, 0x41, 0x41, 0x05, 0x5A, 0x24, 0x5A, 0xA2, 0x49, 0xA2, 0x49, 0xC3, 0x49, 0x61, 0x41, 0x82, 0x41, 0xE5, 0x51, 0x42, 0x39, 0xA0, 0x20, 0x80, 0x18, 0x80, 0x20, 0xA0, 0x20, 0x23, 0x31, 0xA1, 0x20, 0x40, 0x10, 0x40, 0x18, 0x60, 0x18, 0x40, 0x18, 0x61, 0x18, 0xC2, 0x20, 0xE2, 0x20, 0x81, 0x18, 0x60, 0x18, 0x60, 0x10, 0xC2, 0x51, 0x64, 0x6A, 0x64, 0x6A, 0xC5, 0x72, 0xA5, 0x72, 0xE6, 0x7A, 0x84, 0x6A, 0x64, 0x62, 0xA6, 0x72, 0xA6, 0x6A, 0xE7, 0x72, 0xC6, 0x72, 0xC6, 0x72, 0xC6, 0x7A, 0x07, 0x7B, 0xC5, 0x72, 0x07, 0x7B, 0x07, 0x7B, 0x85, 0x6A, 0xE6, 0x7A, 0x85, 0x6A, 0x44, 0x62, 0xA5, 0x72, 0x03, 0x5A, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, 0xA5, 0x72, 0xC6, 0x72, 0xE6, 0x7A, 0xC2, 0x51, 0xA2, 0x51, 0xC2, 0x51, 0x44, 0x62, 0x04, 0x5A, 0x24, 0x62, 0x03, 0x5A, 0x04, 0x5A, 0xC3, 0x51, 0xA3, 0x51, 0xC3, 0x51, 0xA2, 0x51, 0x82, 0x49, 0x62, 0x49, 0xC3, 0x51, 0x82, 0x49, 0x42, 0x41, 0x83, 0x49, 0x21, 0x31, 0xE4, 0x49, 0x01, 0x31, 0xA0, 0x20, 0x02, 0x31, 0x44, 0x39, 0x81, 0x18, 0x40, 0x10, 0x61, 0x18, 0xC2, 0x20, 0x02, 0x29, 0x80, 0x18, 0x80, 0x18, 0xC2, 0x20, 0xC1, 0x20, 0xC2, 0x20, 0x04, 0x5A, 0x45, 0x62, 0x65, 0x6A, 0xE3, 0x59, 0x44, 0x62, 0xC5, 0x72, 0x64, 0x62, 0x44, 0x62, 0x65, 0x62, 0x65, 0x62, 0x86, 0x6A, 0xE8, 0x7A, 0xC7, 0x72, 0x85, 0x72, 0xC6, 0x72, 0x06, 0x7B, 0xE7, 0x7A, 0x28, 0x83, 0x48, 0x83, 0xE7, 0x7A, 0x85, 0x6A, 0x24, 0x62, 0xC6, 0x72, 0x85, 0x6A, 0x85, 0x6A, 0xE6, 0x72, 0xA5, 0x72, 0x64, 0x6A, 0x27, 0x7B, 0xE6, 0x72, 0x03, 0x5A, 0xA1, 0x49, 0xE3, 0x59, 0xA2, 0x51, 0xA3, 0x51, 0xA2, 0x51, 0xC2, 0x51, 0xC2, 0x51, 0x24, 0x62, 0x24, 0x5A, 0x81, 0x49, 0xA2, 0x51, 0xE3, 0x51, 0xA3, 0x49, 0xC3, 0x51, 0xA3, 0x51, 0x62, 0x49, 0x41, 0x41, 0x41, 0x39, 0xC3, 0x49, 0x42, 0x39, 0x40, 0x18, 0x40, 0x18, 0x81, 0x20, 0xE2, 0x28, 0x40, 0x10, 0x80, 0x18, 0xA1, 0x20, 0x02, 0x29, 0xC1, 0x20, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x62, 0x41, 0x41, 0x39, 0xC3, 0x51, 0x82, 0x49, 0xA2, 0x51, 0x07, 0x7B, 0x85, 0x6A, 0x23, 0x62, 0x81, 0x49, 0xA2, 0x51, 0xC4, 0x51, 0x66, 0x6A, 0xA7, 0x72, 0xC7, 0x72, 0x85, 0x6A, 0x44, 0x62, 0xC6, 0x72, 0xE6, 0x72, 0xE6, 0x7A, 0xC6, 0x72, 0x64, 0x6A, 0xE2, 0x59, 0x23, 0x62, 0x43, 0x62, 0xC6, 0x72, 0xC6, 0x72, 0xC6, 0x72, 0x44, 0x62, 0xA5, 0x72, 0x03, 0x5A, 0x07, 0x7B, 0x61, 0x49, 0xE3, 0x59, 0x62, 0x49, 0xA3, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0xE3, 0x51, 0x04, 0x5A, 0x04, 0x5A, 0xC3, 0x51, 0xA2, 0x49, 0x04, 0x5A, 0x45, 0x62, 0x04, 0x5A, 0x04, 0x5A, 0xA3, 0x51, 0x00, 0x39, 0xE0, 0x30, 0x25, 0x52, 0x01, 0x31, 0x40, 0x18, 0x40, 0x18, 0x40, 0x18, 0xE2, 0x28, 0x43, 0x31, 0xA0, 0x20, 0xA0, 0x20, 0xE2, 0x28, 0x80, 0x18, 0x60, 0x18, 0x40, 0x10, 0x40, 0x10, 0x61, 0x18, 0x01, 0x31, 0x25, 0x5A, 0x21, 0x39, 0x00, 0x31, 0x41, 0x41, 0xA6, 0x72, 0x64, 0x6A, 0x03, 0x5A, 0x24, 0x62, 0xA2, 0x51, 0x62, 0x49, 0x22, 0x41, 0xE5, 0x59, 0x25, 0x5A, 0x86, 0x6A, 0x24, 0x5A, 0xC6, 0x72, 0xE6, 0x72, 0xE6, 0x7A, 0xE6, 0x7A, 0x43, 0x62, 0x60, 0x49, 0xE2, 0x59, 0xA5, 0x72, 0x85, 0x6A, 0xC5, 0x72, 0xE6, 0x72, 0xC6, 0x72, 0xA5, 0x72, 0x85, 0x6A, 0xC6, 0x72, 0xC2, 0x51, 0xA2, 0x51, 0xA2, 0x49, 0x82, 0x49, 0x62, 0x49, 0xE3, 0x51, 0x24, 0x62, 0xE4, 0x59, 0xC3, 0x51, 0x24, 0x5A, 0x82, 0x49, 0x82, 0x49, 0x24, 0x5A, 0x03, 0x5A, 0x24, 0x62, 0x03, 0x5A, 0x41, 0x41, 0x62, 0x41, 0x42, 0x39, 0x83, 0x41, 0xE1, 0x30, 0x60, 0x20, 0x60, 0x18, 0x80, 0x20, 0xE1, 0x28, 0xA0, 0x20, 0xA0, 0x20, 0x26, 0x4A, 0x22, 0x31, 0x40, 0x10, 0x60, 0x18, 0x40, 0x18, 0x40, 0x10, 0xA0, 0x20, 0x22, 0x31, 0x22, 0x31, 0xA3, 0x49, 0x62, 0x41, 0x86, 0x6A, 0x65, 0x6A, 0x03, 0x5A, 0x04, 0x62, 0x25, 0x62, 0xA4, 0x51, 0xC0, 0x30, 0xA0, 0x28, 0xA3, 0x49, 0x86, 0x62, 0x65, 0x62, 0x85, 0x6A, 0xA5, 0x6A, 0x85, 0x6A, 0x84, 0x6A, 0xA5, 0x72, 0xC2, 0x51, 0x03, 0x62, 0x03, 0x62, 0x44, 0x62, 0xC6, 0x72, 0x85, 0x6A, 0xE6, 0x7A, 0x27, 0x7B, 0xE6, 0x7A, 0xA5, 0x72, 0xE3, 0x59, 0x61, 0x49, 0xA2, 0x49, 0x41, 0x41, 0xE0, 0x38, 0x62, 0x49, 0x04, 0x5A, 0xC3, 0x51, 0xA3, 0x49, 0xA2, 0x49, 0x24, 0x62, 0xC3, 0x51, 0x24, 0x62, 0x03, 0x5A, 0xE3, 0x59, 0xE3, 0x59, 0xE3, 0x51, 0xA3, 0x49, 0x62, 0x41, 0x01, 0x31, 0x42, 0x39, 0x43, 0x39, 0x84, 0x41, 0xC1, 0x28, 0xA0, 0x20, 0x80, 0x20, 0xC0, 0x20, 0x22, 0x31, 0x43, 0x31, 0xC1, 0x20, 0x40, 0x10, 0x81, 0x18, 0x81, 0x18, 0xA1, 0x20, 0xA0, 0x20, 0xA0, 0x20, 0x62, 0x39, 0x04, 0x5A, 0x04, 0x5A, 0x24, 0x5A, 0x04, 0x5A, 0xE4, 0x59, 0xA3, 0x51, 0x41, 0x41, 0x21, 0x39, 0x01, 0x39, 0x05, 0x52, 0x05, 0x52, 0x45, 0x5A, 0xA6, 0x6A, 0x85, 0x6A, 0x02, 0x5A, 0x03, 0x5A, 0x64, 0x6A, 0x23, 0x62, 0x84, 0x6A, 0x64, 0x6A, 0x85, 0x6A, 0x43, 0x62, 0xE6, 0x72, 0x85, 0x6A, 0x06, 0x7B, 0xE6, 0x7A, 0xC6, 0x72, 0x44, 0x62, 0x81, 0x49, 0xC3, 0x51, 0x82, 0x49, 0xC0, 0x30, 0x61, 0x41, 0x25, 0x62, 0x45, 0x62, 0xA3, 0x49, 0xE3, 0x59, 0x03, 0x5A, 0xC3, 0x51, 0x65, 0x6A, 0x44, 0x62, 0x64, 0x62, 0x64, 0x6A, 0xC2, 0x51, 0xC3, 0x51, 0xA3, 0x49, 0x46, 0x62, 0x25, 0x5A, 0xC4, 0x49, 0x22, 0x39, 0x01, 0x31, 0x22, 0x39, 0xE1, 0x30, 0xC0, 0x28, 0xC0, 0x28, 0x02, 0x31, 0x02, 0x31, 0x23, 0x31, 0x60, 0x18, 0xA0, 0x20, 0xA1, 0x18, 0xA1, 0x20, 0xC0, 0x20, 0xE0, 0x28, 0x45, 0x5A, 0x24, 0x5A, 0x62, 0x41, 0x62, 0x49, 0x83, 0x49, 0x62, 0x41, 0xA3, 0x49, 0x00, 0x31, 0x82, 0x41, 0x82, 0x41, 0xC4, 0x49, 0x25, 0x5A, 0xA6, 0x6A, 0x44, 0x62, 0xA2, 0x51, 0x03, 0x5A, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, 0x85, 0x6A, 0x64, 0x6A, 0x64, 0x6A, 0x85, 0x6A, 0xC6, 0x72, 0x07, 0x7B, 0x06, 0x7B, 0x06, 0x7B, 0xC5, 0x72, 0x23, 0x5A, 0xC3, 0x51, 0x41, 0x41, 0x00, 0x39, 0xA2, 0x49, 0x82, 0x49, 0xC3, 0x51, 0xE4, 0x51, 0xA2, 0x49, 0x03, 0x5A, 0xA2, 0x51, 0xA2, 0x51, 0x85, 0x6A, 0x85, 0x6A, 0x23, 0x62, 0x23, 0x5A, 0xE3, 0x59, 0xC3, 0x51, 0x82, 0x49, 0x45, 0x62, 0x05, 0x5A, 0xA4, 0x49, 0x62, 0x41, 0xC0, 0x30, 0x42, 0x39, 0x01, 0x31, 0x21, 0x31, 0xE0, 0x28, 0x80, 0x20, 0x42, 0x39, 0x63, 0x41, 0xE1, 0x28, 0x81, 0x20, 0xA0, 0x20, 0xC0, 0x20, 0xC3, 0x49, 0x65, 0x5A, 0xE4, 0x51, 0x41, 0x39, 0x01, 0x39, 0xE1, 0x30, 0x01, 0x31, 0x82, 0x41, 0x21, 0x39, 0xC3, 0x49, 0x62, 0x41, 0x21, 0x31, 0xE4, 0x51, 0x86, 0x6A, 0x03, 0x5A, 0xC2, 0x51, 0xA2, 0x51, 0xE3, 0x59, 0xE3, 0x59, 0xE3, 0x59, 0x44, 0x62, 0x44, 0x62, 0x03, 0x5A, 0x23, 0x5A, 0xA5, 0x72, 0x06, 0x7B, 0x06, 0x7B, 0x06, 0x7B, 0xE6, 0x7A, 0x85, 0x6A, 0xE7, 0x72, 0x24, 0x5A, 0x41, 0x41, 0xC3, 0x51, 0xA2, 0x49, 0x62, 0x49, 0x62, 0x41, 0x82, 0x49, 0xE3, 0x51, 0x24, 0x62, 0xC3, 0x51, 0x85, 0x6A, 0xC6, 0x72, 0x64, 0x6A, 0xA1, 0x51, 0x03, 0x5A, 0x04, 0x5A, 0x82, 0x49, 0xA3, 0x51, 0x62, 0x49, 0x04, 0x5A, 0xC3, 0x51, 0xA3, 0x49, 0xE4, 0x51, 0xE3, 0x51, 0xA2, 0x49, 0x21, 0x39, 0x83, 0x41, 0xE0, 0x30, 0x21, 0x39, 0x42, 0x39, 0xC1, 0x20, 0xA0, 0x20, 0x62, 0x39, 0xA3, 0x41, 0xA3, 0x41, 0xC4, 0x49, 0x22, 0x39, 0x43, 0x39, 0x22, 0x39, 0x01, 0x31, 0x62, 0x39, 0x62, 0x41, 0xA2, 0x41, 0x62, 0x41, 0x62, 0x41, 0xE4, 0x51, 0x25, 0x5A, 0xE4, 0x51, 0xE3, 0x51, 0x82, 0x49, 0x61, 0x49, 0xA2, 0x49, 0x81, 0x49, 0x24, 0x62, 0x24, 0x62, 0x03, 0x5A, 0x64, 0x62, 0x64, 0x62, 0xE6, 0x7A, 0x06, 0x7B, 0xC5, 0x7A, 0xE6, 0x7A, 0x07, 0x7B, 0x27, 0x7B, 0xE7, 0x72, 0xC6, 0x72, 0x03, 0x5A, 0xE3, 0x51, 0x41, 0x41, 0xC3, 0x51, 0xA2, 0x51, 0xA2, 0x49, 0x24, 0x62, 0x24, 0x62, 0x24, 0x62, 0x24, 0x62, 0x23, 0x62, 0xA2, 0x51, 0xA2, 0x51, 0xA2, 0x51, 0xC3, 0x51, 0xC3, 0x51, 0xE3, 0x59, 0x44, 0x62, 0x65, 0x6A, 0x44, 0x62, 0x03, 0x5A, 0x44, 0x62, 0xA6, 0x6A, 0xA2, 0x49, 0xC3, 0x51, 0xC3, 0x51, 0x83, 0x49, 0x42, 0x41, 0xC1, 0x28, 0xC1, 0x28, 0x25, 0x52, 0xE4, 0x49, 0x83, 0x41, 0xE5, 0x51, 0x22, 0x31, 0x80, 0x20, 0x80, 0x20, 0xE1, 0x28, 0x63, 0x39, 0xE4, 0x49, 0xE4, 0x51, 0xE0, 0x30, 0x62, 0x41, 0x25, 0x5A, 0x46, 0x62, 0x45, 0x62, 0x82, 0x49, 0x82, 0x49, 0xA3, 0x51, 0xA3, 0x51, 0x04, 0x5A, 0x03, 0x5A, 0x03, 0x5A, 0x44, 0x62, 0xA5, 0x72, 0x85, 0x6A, 0x06, 0x7B, 0x27, 0x83, 0xC5, 0x7A, 0xA5, 0x72, 0xC5, 0x72, 0x06, 0x7B, 0x07, 0x7B, 0x07, 0x7B, 0x07, 0x7B, 0x65, 0x62, 0x61, 0x41, 0x41, 0x41, 0x82, 0x49, 0xC3, 0x51, 0x04, 0x5A, 0xC3, 0x51, 0x03, 0x5A, 0x24, 0x62, 0xC3, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0xC3, 0x59, 0x82, 0x51, 0xC2, 0x59, 0x03, 0x5A, 0x64, 0x62, 0x43, 0x62, 0x84, 0x6A, 0xE5, 0x72, 0x43, 0x62, 0x43, 0x62, 0x23, 0x62, 0xE3, 0x51, 0xC3, 0x51, 0x24, 0x5A, 0xE4, 0x51, 0xC4, 0x49, 0x63, 0x41, 0x63, 0x41, 0x22, 0x39, 0xA0, 0x28, 0xC1, 0x28, 0x84, 0x41, 0xA1, 0x20, 0x60, 0x18, 0x60, 0x18, 0x02, 0x29, 0x84, 0x41, 0xE1, 0x30, 0x21, 0x39, 0x01, 0x39, 0x01, 0x39, 0x42, 0x41, 0xE0, 0x30, 0xC0, 0x30, 0x21, 0x41, 0x62, 0x41, 0x83, 0x49, 0x25, 0x5A, 0xE4, 0x59, 0xC3, 0x51, 0x85, 0x6A, 0xA5, 0x6A, 0xC6, 0x72, 0xE6, 0x7A, 0xA4, 0x72, 0xE5, 0x7A, 0xE6, 0x7A, 0x63, 0x62, 0xC5, 0x72, 0x28, 0x83, 0x27, 0x7B, 0x07, 0x7B, 0x44, 0x62, 0xA2, 0x49, 0xA3, 0x51, 0xA2, 0x49, 0xC3, 0x51, 0x25, 0x62, 0xA3, 0x51, 0xA2, 0x51, 0xE3, 0x59, 0xA2, 0x51, 0xE3, 0x59, 0xA2, 0x51, 0xA2, 0x51, 0x24, 0x62, 0xA2, 0x51, 0x23, 0x62, 0x03, 0x5A, 0x43, 0x62, 0x02, 0x5A, 0x43, 0x62, 0xC5, 0x72, 0x64, 0x6A, 0x23, 0x62, 0x03, 0x5A, 0xC2, 0x51, 0xA2, 0x51, 0x61, 0x49, 0xE4, 0x51, 0xA3, 0x49, 0x01, 0x31, 0xA0, 0x28, 0xA0, 0x28, 0x60, 0x20, 0xA1, 0x28, 0x02, 0x29, 0x80, 0x18, 0x40, 0x10, 0x60, 0x18, 0xC1, 0x28, 0x22, 0x39, 0xC4, 0x49, 0x25, 0x5A, 0x42, 0x39, 0x80, 0x28, 0x60, 0x20, 0x60, 0x20, 0x42, 0x41, 0xE4, 0x51, 0x83, 0x49, 0xA3, 0x51, 0x82, 0x49, 0x82, 0x49, 0x24, 0x5A, 0x85, 0x6A, 0xA5, 0x6A, 0xC5, 0x72, 0x06, 0x7B, 0xE6, 0x7A, 0xE5, 0x7A, 0x43, 0x62, 0x23, 0x5A, 0x23, 0x62, 0x64, 0x62, 0x27, 0x7B, 0xA5, 0x6A, 0x41, 0x41, 0x41, 0x41, 0x61, 0x49, 0xA2, 0x49, 0xC3, 0x51, 0xC4, 0x51, 0xC3, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0x45, 0x62, 0x24, 0x5A, 0x03, 0x5A, 0x44, 0x62, 0x03, 0x5A, 0x81, 0x49, 0xA5, 0x72, 0x84, 0x6A, 0x84, 0x6A, 0x63, 0x6A, 0x63, 0x6A, 0x84, 0x6A, 0x43, 0x62, 0x02, 0x62, 0x64, 0x6A, 0x84, 0x6A, 0xA1, 0x51, 0x24, 0x5A, 0xE4, 0x51, 0x22, 0x39, 0xC1, 0x30, 0x80, 0x20, 0x60, 0x20, 0xA0, 0x28, 0x22, 0x31, 0x43, 0x31, 0x60, 0x18, 0x60, 0x18, 0xC1, 0x28, 0x02, 0x31, 0x83, 0x41, 0xA7, 0x6A, 0x25, 0x5A, 0x21, 0x39, 0x80, 0x28, 0x42, 0x39, 0xA3, 0x49, 0xA3, 0x49, 0x83, 0x49, 0x42, 0x41, 0x62, 0x41, 0x41, 0x41, 0x82, 0x49, 0x03, 0x52, 0x85, 0x6A, 0xA5, 0x6A, 0xA5, 0x72, 0xA5, 0x72, 0x64, 0x6A, 0xA4, 0x72, 0x23, 0x62, 0xE2, 0x51, 0xE2, 0x51, 0x64, 0x62, 0xA5, 0x6A, 0x20, 0x39, 0x20, 0x39, 0x81, 0x41, 0x82, 0x49, 0x62, 0x41, 0x41, 0x41, 0xA3, 0x51, 0xE3, 0x51, 0xA3, 0x51, 0x45, 0x62, 0x03, 0x5A, 0x65, 0x6A, 0x44, 0x62, 0x85, 0x6A, 0xC2, 0x51, 0x60, 0x41, 0x85, 0x72, 0x44, 0x6A, 0xA5, 0x72, 0xA5, 0x72, 0xE5, 0x7A, 0x84, 0x72, 0xA4, 0x72, 0x83, 0x6A, 0x42, 0x6A, 0xA4, 0x72, 0xA6, 0x6A, 0x04, 0x5A, 0xE4, 0x59, 0x83, 0x49, 0x02, 0x39, 0x63, 0x41, 0x43, 0x39, 0x43, 0x39, 0x22, 0x31, 0xE1, 0x28, 0xA1, 0x20, 0xA0, 0x20, 0xE2, 0x30, 0x22, 0x39, 0x42, 0x39, 0xC3, 0x49, 0xE0, 0x30, 0x62, 0x41, 0xE4, 0x51, 0x26, 0x5A, 0xC4, 0x51, 0x01, 0x39, 0xE0, 0x30, 0xC0, 0x30, 0x41, 0x41, 0xE0, 0x30, 0xC3, 0x51, 0x44, 0x62, 0x85, 0x6A, 0x85, 0x6A, 0x23, 0x62, 0x85, 0x6A, 0xE6, 0x7A, 0xE6, 0x7A, 0x85, 0x6A, 0x23, 0x62, 0x43, 0x62, 0xC6, 0x72, 0x61, 0x41, 0xA2, 0x49, 0xE3, 0x51, 0xA2, 0x49, 0x82, 0x41, 0x21, 0x39, 0x41, 0x41, 0xA2, 0x49, 0x62, 0x41, 0xC3, 0x51, 0x25, 0x62, 0xE3, 0x51, 0xA2, 0x49, 0x24, 0x5A, 0x24, 0x62, 0xA1, 0x51, 0x43, 0x62, 0x64, 0x6A, 0xA5, 0x72, 0x43, 0x6A, 0x84, 0x72, 0x63, 0x6A, 0xC4, 0x7A, 0xA4, 0x72, 0x42, 0x62, 0xC4, 0x72, 0x24, 0x5A, 0x65, 0x62, 0x04, 0x5A, 0xC3, 0x51, 0xC4, 0x51, 0xA4, 0x49, 0x83, 0x41, 0x42, 0x39, 0x63, 0x39, 0x43, 0x39, 0x01, 0x31, 0x80, 0x20, 0xC0, 0x28, 0xE1, 0x30, 0xC4, 0x49, 0xE4, 0x51, 0x21, 0x31, 0x01, 0x31, 0xE4, 0x51, 0x25, 0x5A, 0x62, 0x41, 0x62, 0x41, 0x83, 0x49, 0x62, 0x41, 0x41, 0x41, 0x61, 0x41, 0xC3, 0x51, 0x03, 0x52, 0xA6, 0x6A, 0x07, 0x7B, 0xA5, 0x72, 0x85, 0x6A, 0x02, 0x5A, 0xE6, 0x7A, 0xC6, 0x7A, 0x85, 0x6A, 0x85, 0x6A, 0x85, 0x6A, 0x20, 0x39, 0xA2, 0x49, 0x24, 0x5A, 0x44, 0x5A, 0x82, 0x49, 0xC3, 0x51, 0x82, 0x41, 0x41, 0x41, 0xC4, 0x51, 0x42, 0x41, 0xC3, 0x51, 0x82, 0x49, 0xA2, 0x49, 0x24, 0x5A, 0x64, 0x62, 0x03, 0x5A, 0x23, 0x5A, 0x43, 0x62, 0xE2, 0x59, 0x43, 0x6A, 0xC5, 0x7A, 0xC4, 0x72, 0xC4, 0x72, 0xC4, 0x7A, 0x83, 0x6A, 0x42, 0x62, 0xE3, 0x59, 0x04, 0x5A, 0xA6, 0x6A, 0xE4, 0x59, 0x83, 0x49, 0xE5, 0x51, 0xE4, 0x51, 0x42, 0x39, 0xC4, 0x49, 0xC4, 0x49, 0xE5, 0x49, 0x42, 0x39, 0x80, 0x20, 0xC0, 0x28, 0x41, 0x39, 0x04, 0x52, 0xA3, 0x49, 0x41, 0x39, 0xE4, 0x51, 0xC4, 0x51, 0xA0, 0x28, 0xE0, 0x30, 0x62, 0x41, 0xC3, 0x51, 0xA3, 0x49, 0xC3, 0x51, 0xE3, 0x51, 0x61, 0x41, 0x03, 0x5A, 0x65, 0x6A, 0x44, 0x62, 0x85, 0x6A, 0xC6, 0x72, 0x85, 0x6A, 0xA5, 0x72, 0xC6, 0x72, 0x64, 0x6A, 0x85, 0x6A, 0x44, 0x62, 0xE3, 0x51, 0x65, 0x62, 0x44, 0x62, 0xE3, 0x51, 0x03, 0x5A, 0xC3, 0x51, 0xA2, 0x49, 0x41, 0x41, 0x21, 0x39, 0xA0, 0x28, 0xA0, 0x28, 0x82, 0x41, 0x65, 0x62, 0x65, 0x62, 0xA5, 0x6A, 0xA5, 0x6A, 0x84, 0x6A, 0xE1, 0x59, 0x84, 0x6A, 0x63, 0x6A, 0x83, 0x6A, 0x83, 0x6A, 0xC5, 0x7A, 0xE5, 0x7A, 0x63, 0x6A, 0xA2, 0x51, 0x65, 0x62, 0x85, 0x6A, 0x65, 0x62, 0x21, 0x39, 0x83, 0x49, 0x26, 0x5A, 0xE4, 0x49, 0xA3, 0x49, 0xC4, 0x49, 0x83, 0x41, 0x25, 0x5A, 0xA3, 0x49, 0x82, 0x49, 0xC3, 0x51, 0xA3, 0x49, 0xE3, 0x51, 0xE3, 0x51, 0x25, 0x5A, 0x05, 0x5A, 0xA3, 0x49, 0x01, 0x39, 0x42, 0x41, 0x04, 0x5A, 0x62, 0x49, 0xC3, 0x51, 0xC3, 0x51, 0xA2, 0x51, 0xA2, 0x49, 0x24, 0x5A, 0x04, 0x5A, 0x03, 0x5A, 0x02, 0x5A, 0x64, 0x62, 0x85, 0x6A, 0x24, 0x62, 0xE3, 0x59, 0xE3, 0x51, 0x85, 0x6A, 0xC6, 0x72, 0xA5, 0x6A, 0x84, 0x6A, 0x84, 0x6A, 0x84, 0x6A, 0x64, 0x6A, 0x23, 0x5A, 0xE3, 0x51, 0xC0, 0x30, 0x60, 0x20, 0x80, 0x20, 0xC0, 0x28, 0x21, 0x31, 0xC3, 0x49, 0x04, 0x52, 0x44, 0x5A, 0xC5, 0x6A, 0x22, 0x5A, 0x84, 0x6A, 0xC4, 0x72, 0x22, 0x62, 0xE5, 0x7A, 0xC5, 0x7A, 0x84, 0x72, 0x83, 0x6A, 0x20, 0x41, 0x24, 0x62, 0x45, 0x62, 0xE3, 0x51, 0x01, 0x39, 0xA3, 0x49, 0xE5, 0x51, 0xC4, 0x49, 0xE4, 0x51, 0x46, 0x5A, 0xA3, 0x49, 0x01, 0x31, 0xA3, 0x49, 0xC3, 0x51, 0xE4, 0x51, 0xE4, 0x51, 0x45, 0x62, 0x24, 0x5A, 0xA3, 0x49, 0xE4, 0x51, 0xC4, 0x51, 0x83, 0x49, 0x42, 0x41, 0x62, 0x49, 0xE4, 0x59, 0xE3, 0x51, 0x04, 0x5A, 0x03, 0x5A, 0x24, 0x5A, 0xA2, 0x49, 0xA2, 0x49, 0xE3, 0x51, 0x23, 0x5A, 0x23, 0x5A, 0x03, 0x5A, 0x04, 0x5A, 0xE3, 0x51, 0x82, 0x49, 0x03, 0x5A, 0xE6, 0x7A, 0xE6, 0x7A, 0x06, 0x7B, 0xC5, 0x72, 0xC5, 0x72, 0xE5, 0x72, 0xC5, 0x72, 0xA6, 0x72, 0xE3, 0x51, 0xE0, 0x30, 0x01, 0x31, 0xA0, 0x20, 0xA0, 0x20, 0xC0, 0x28, 0xA3, 0x49, 0x04, 0x52, 0x03, 0x5A, 0xA1, 0x49, 0xC1, 0x51, 0x02, 0x62, 0x84, 0x72, 0x43, 0x6A, 0xC5, 0x7A, 0xC5, 0x7A, 0x01, 0x5A, 0x20, 0x41, 0xE2, 0x51, 0x03, 0x5A, 0xC3, 0x51, 0x21, 0x39, 0x46, 0x62, 0x26, 0x5A, 0xA4, 0x49, 0xA3, 0x49, 0x00, 0x31, 0xC4, 0x49, 0x62, 0x41, 0xE0, 0x30, 0xE4, 0x51, 0x01, 0x39, 0xA3, 0x49, 0x62, 0x41, 0xC3, 0x51, 0x21, 0x41, 0xA3, 0x49, 0xC3, 0x51, 0xE4, 0x51, 0x04, 0x5A, 0x82, 0x41, 0x24, 0x5A, 0xE3, 0x51, 0x03, 0x5A, 0x24, 0x5A, 0x03, 0x5A, 0x41, 0x41, 0x00, 0x39, 0xC3, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0x82, 0x49, 0x25, 0x5A, 0xC3, 0x51, 0xA3, 0x51, 0x82, 0x49, 0x85, 0x6A, 0xC6, 0x72, 0x06, 0x7B, 0xC5, 0x72, 0xE5, 0x7A, 0xA4, 0x72, 0xA5, 0x72, 0xE5, 0x72, 0xC5, 0x72, 0xC6, 0x6A, 0x03, 0x52, 0x00, 0x31, 0xA0, 0x28, 0x80, 0x20, 0xA3, 0x49, 0x25, 0x5A, 0x04, 0x5A, 0x03, 0x5A, 0x02, 0x5A, 0x63, 0x6A, 0x63, 0x6A, 0x63, 0x6A, 0xA4, 0x72, 0xC5, 0x72, 0x84, 0x6A, 0xE2, 0x51, 0xE2, 0x51, 0xC3, 0x51, 0x82, 0x49, 0xC3, 0x51, 0xE4, 0x51, 0xC4, 0x49, 0x62, 0x41, 0x83, 0x41, 0x41, 0x39, 0xC0, 0x28, 0x21, 0x31, 0xA3, 0x49, 0x66, 0x62, 0xA4, 0x49, 0xE5, 0x51, 0x66, 0x6A, 0x45, 0x62, 0x41, 0x41, 0x82, 0x49, 0xE3, 0x51, 0xA3, 0x49, 0xE3, 0x51, 0xE3, 0x51, 0x41, 0x41, 0xE3, 0x51, 0x03, 0x52, 0xC6, 0x72, 0x24, 0x62, 0x62, 0x49, 0xC3, 0x51, 0xC3, 0x51, 0xA3, 0x51, 0xA3, 0x51, 0x82, 0x49, 0xA3, 0x51, 0x05, 0x5A, 0x62, 0x41, 0x41, 0x41, 0x24, 0x5A, 0xA6, 0x72, 0x06, 0x7B, 0xE5, 0x72, 0xC5, 0x72, 0xC5, 0x72, 0x84, 0x6A, 0x84, 0x6A, 0x84, 0x6A, 0xC5, 0x6A, 0xC6, 0x6A, 0x04, 0x52, 0x82, 0x49, 0x80, 0x28, 0xA3, 0x49, 0xE4, 0x51, 0x04, 0x5A, 0xA2, 0x51, 0x85, 0x6A, 0x83, 0x6A, 0x22, 0x62, 0xA4, 0x72, 0x63, 0x62, 0xC5, 0x72, 0x84, 0x6A, 0xE6, 0x7A, 0x85, 0x6A, 0xA2, 0x51, 0x41, 0x41, 0x41, 0x41, 0xA3, 0x49, 0x83, 0x49, 0x01, 0x39, 0x21, 0x39, 0xE0, 0x30, 0x62, 0x41, 0xA3, 0x41, 0x42, 0x39, 0xE1, 0x30, 0x01, 0x31, 0x62, 0x39, 0xC4, 0x51, 0xC3, 0x51, 0x82, 0x49, 0x82, 0x49, 0xA2, 0x49, 0x41, 0x39, 0x61, 0x41, 0x04, 0x52, 0xA2, 0x49, 0x20, 0x39, 0x82, 0x41, 0xE4, 0x51, 0xE3, 0x51, 0x25, 0x62, 0x45, 0x6A, 0xE4, 0x59, 0x04, 0x5A, 0xE4, 0x59, 0x25, 0x5A, 0x45, 0x62, 0xA7, 0x6A, 0x41, 0x39, 0x21, 0x39, 0xA3, 0x49, 0xE3, 0x51, 0x24, 0x62, 0x03, 0x5A, 0xE2, 0x51, 0xE2, 0x51, 0x23, 0x5A, 0xE3, 0x59, 0x23, 0x62, 0x43, 0x62, 0x23, 0x5A, 0x24, 0x5A, 0x04, 0x5A, 0xC4, 0x51, 0xA3, 0x49, 0x83, 0x49, 0x41, 0x41, 0xC2, 0x51, 0x23, 0x5A, 0x84, 0x6A, 0x84, 0x6A, 0x63, 0x6A, 0x63, 0x62, 0xA4, 0x6A, 0xC5, 0x72, 0x85, 0x6A, 0x07, 0x7B, 0x45, 0x62, 0x00, 0x39, 0x82, 0x49, 0x20, 0x39, 0x00, 0x39, 0xE0, 0x30, 0xE0, 0x30, 0x42, 0x39, 0x82, 0x41, 0x25, 0x52, 0xC0, 0x28, 0xA0, 0x20, 0x01, 0x31, 0xA0, 0x20, 0x01, 0x31, 0x21, 0x39, 0xA3, 0x49, 0xA3, 0x49, 0xC7, 0x6A, 0x08, 0x73, 0x20, 0x39, 0x62, 0x41, 0x62, 0x41, 0xE0, 0x30, 0x21, 0x39, 0xE4, 0x51, 0x82, 0x49, 0xA2, 0x49, 0xA2, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0xE4, 0x51, 0xA3, 0x49, 0xA2, 0x49, 0xE4, 0x51, 0xC3, 0x49, 0x82, 0x41, 0x82, 0x41, 0xA3, 0x49, 0x82, 0x49, 0xC3, 0x51, 0xA3, 0x51, 0x24, 0x5A, 0xE3, 0x51, 0xC3, 0x51, 0xE3, 0x59, 0x03, 0x5A, 0x44, 0x62, 0xC3, 0x51, 0xC3, 0x51, 0x04, 0x5A, 0x86, 0x6A, 0xE4, 0x51, 0x61, 0x41, 0x81, 0x49, 0xA5, 0x72, 0xC5, 0x72, 0xC5, 0x72, 0x63, 0x6A, 0xA0, 0x49, 0xE1, 0x51, 0xA5, 0x72, 0xE3, 0x51, 0x86, 0x6A, 0xE7, 0x72, 0xA7, 0x72, 0x45, 0x62, 0xA2, 0x51, 0x21, 0x41, 0x62, 0x41, 0xA3, 0x49, 0x82, 0x49, 0x21, 0x39, 0x45, 0x5A, 0x83, 0x41, 0x83, 0x41, 0x21, 0x31, 0x80, 0x20, 0xC0, 0x28, 0xE1, 0x28, 0x62, 0x39, 0xE4, 0x51, 0xA3, 0x49, 0x62, 0x41, 0x04, 0x52, 0xE4, 0x51, 0xE0, 0x30, 0xA0, 0x28, 0xC0, 0x30, 0xA3, 0x49, 0xA3, 0x49, 0xC3, 0x49, 0x61, 0x41, 0x04, 0x52, 0x03, 0x52, 0x45, 0x62, 0x86, 0x62, 0xA3, 0x49, 0x82, 0x41, 0x82, 0x41, 0xC3, 0x49, 0x83, 0x41, 0x42, 0x39, 0x42, 0x41, 0xC0, 0x30, 0x63, 0x49, 0x42, 0x41, 0xE4, 0x59, 0xE4, 0x51, 0x25, 0x5A, 0x45, 0x62, 0x65, 0x62, 0x24, 0x5A, 0xC3, 0x51, 0xC3, 0x51, 0xA2, 0x49, 0xA2, 0x49, 0xE3, 0x59, 0x24, 0x62, 0x24, 0x62, 0x44, 0x62, 0xE2, 0x59, 0x23, 0x62, 0x84, 0x6A, 0xA5, 0x6A, 0x84, 0x6A, 0xC3, 0x51, 0xE3, 0x51, 0x86, 0x6A, 0xA6, 0x6A, 0xE7, 0x72, 0x28, 0x83, 0x86, 0x6A, 0xE3, 0x59, 0x82, 0x49, 0x82, 0x49, 0x62, 0x41, 0xE0, 0x30, 0xA3, 0x49, 0x83, 0x41, 0xE0, 0x28, 0x80, 0x20, 0x60, 0x18, 0xC1, 0x20, 0xC4, 0x41, 0x62, 0x39, 0x62, 0x39, 0x21, 0x39, 0x21, 0x39, 0x83, 0x41, 0x42, 0x41, 0x63, 0x41, 0x80, 0x28, 0x01, 0x39, 0xC4, 0x49, 0x21, 0x31, 0x41, 0x39, 0x82, 0x41, 0xA2, 0x41, 0x82, 0x41, 0xA3, 0x49, 0xA3, 0x41, 0x21, 0x31, 0xE0, 0x28, 0x42, 0x39, 0x42, 0x39, 0x42, 0x39, 0xA4, 0x49, 0x83, 0x41, 0xC0, 0x30, 0xC0, 0x30, 0xA0, 0x28, 0x05, 0x5A, 0xE4, 0x51, 0x82, 0x49, 0xC3, 0x51, 0xA3, 0x49, 0xC3, 0x51, 0xC2, 0x51, 0xE3, 0x51, 0xE3, 0x51, 0x65, 0x62, 0x04, 0x5A, 0x24, 0x62, 0x24, 0x62, 0x03, 0x5A, 0x44, 0x62, 0x02, 0x5A, 0x23, 0x5A, 0xA4, 0x6A, 0x21, 0x39, 0x21, 0x39, 0xA2, 0x49, 0x04, 0x5A, 0xE3, 0x59, 0xC3, 0x51, 0x65, 0x6A, 0x65, 0x6A, 0x24, 0x62, 0x82, 0x49, 0xE4, 0x59, 0xA3, 0x51, 0xC3, 0x49, 0xA3, 0x49, 0x62, 0x41, 0x40, 0x18, 0x60, 0x18, 0x60, 0x18, 0xC1, 0x20, 0x63, 0x39, 0x62, 0x39, 0x42, 0x39, 0x83, 0x41, 0xA3, 0x49, 0x42, 0x41, 0xC1, 0x30, 0x02, 0x31, 0x02, 0x31, 0xE1, 0x28, 0xC0, 0x28, 0x01, 0x31, 0x01, 0x31, 0x62, 0x39, 0x21, 0x31, 0x80, 0x20, 0xA0, 0x20, 0x01, 0x29, 0x21, 0x31, 0xE4, 0x49, 0xA0, 0x20, 0x80, 0x20, 0xE1, 0x28, 0x01, 0x31, 0xE1, 0x30, 0xE0, 0x30, 0x83, 0x41, 0x21, 0x39, 0x00, 0x31, 0x21, 0x39, 0x21, 0x39, 0x41, 0x39, 0xA2, 0x49, 0x61, 0x41, 0x00, 0x31, 0x41, 0x41, 0xA2, 0x49, 0x61, 0x41, 0x20, 0x41, 0xA2, 0x51, 0xC3, 0x51, 0xA1, 0x49, 0x23, 0x5A, 0x44, 0x62, 0x02, 0x5A, 0xA0, 0x28, 0x21, 0x39, 0x20, 0x39, 0xA3, 0x49, 0xC3, 0x51, 0x62, 0x49, 0x24, 0x62, 0x03, 0x5A, 0x45, 0x62, 0xA2, 0x51, 0xC3, 0x51, 0xE4, 0x51, 0xE4, 0x59, 0xE3, 0x51, 0xC0, 0x30, 0x42, 0x39, 0x80, 0x20, 0x81, 0x18, 0x80, 0x18, 0x80, 0x18, 0xA0, 0x20, 0xA0, 0x20, 0xC0, 0x28, 0xE1, 0x30, 0x22, 0x39, 0x02, 0x31, 0x22, 0x39, 0xE1, 0x28, 0xE1, 0x28, 0x01, 0x31, 0xE1, 0x28, 0xE1, 0x28, 0xC1, 0x28, 0xA0, 0x20, 0x80, 0x20, 0x60, 0x18, 0xA0, 0x20, 0x63, 0x39, 0x63, 0x39, 0x01, 0x29, 0xA0, 0x20, 0xE1, 0x28, 0x01, 0x31, 0x42, 0x39, 0x80, 0x20, 0x82, 0x41, 0x41, 0x39, 0x41, 0x39, 0xE0, 0x28, 0x42, 0x39, 0x41, 0x39, 0x01, 0x31, 0xE4, 0x51, 0x41, 0x39, 0x82, 0x41, 0x41, 0x39, 0x62, 0x41, 0x82, 0x41, 0xA3, 0x49, 0x82, 0x49, 0x61, 0x41, 0x40, 0x41, 0xA1, 0x49, 0xA1, 0x49, 0x80, 0x20, 0x63, 0x41, 0x25, 0x5A, 0x82, 0x41, 0x01, 0x39, 0x82, 0x49, 0xC3, 0x51, 0x45, 0x62, 0xE3, 0x59, 0x82, 0x49, 0x62, 0x49, 0x83, 0x49, 0x82, 0x49, 0xA3, 0x49, 0x41, 0x41, 0x63, 0x41, 0x02, 0x31, 0xA1, 0x20, 0x60, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x10, 0x80, 0x18, 0x60, 0x18, 0x80, 0x20, 0x80, 0x20, 0x81, 0x20, 0x80, 0x20, 0xC1, 0x28, 0x01, 0x29, 0x01, 0x31, 0x63, 0x39, 0x02, 0x31, 0xE2, 0x28, 0x80, 0x20, 0x40, 0x10, 0x60, 0x18, 0x43, 0x31, 0x43, 0x39, 0x43, 0x39, 0xC0, 0x20, 0x01, 0x31, 0x22, 0x31, 0x41, 0x39, 0x41, 0x31, 0x21, 0x31, 0x82, 0x41, 0x83, 0x41, 0x21, 0x31, 0x01, 0x29, 0x21, 0x31, 0x42, 0x39, 0x42, 0x39, 0x01, 0x31, 0xA0, 0x28, 0xC0, 0x28, 0x01, 0x31, 0x83, 0x41, 0xA3, 0x49, 0x04, 0x52, 0xC3, 0x51, 0x81, 0x49, 0x81, 0x49, 0x61, 0x41, 0x02, 0x31, 0x22, 0x31, 0x05, 0x52, 0xE4, 0x51, 0x01, 0x31, 0x21, 0x39, 0xA3, 0x51, 0xA2, 0x49, 0x82, 0x49, 0x41, 0x41, 0x01, 0x39, 0xA4, 0x51, 0xC4, 0x51, 0x82, 0x49, 0xA3, 0x49, 0x83, 0x41, 0xC1, 0x28, 0xC1, 0x28, 0xC1, 0x20, 0x80, 0x18, 0x40, 0x10, 0x60, 0x18, 0x60, 0x10, 0x60, 0x18, 0x81, 0x18, 0xC1, 0x20, 0x80, 0x18, 0x80, 0x20, 0xE1, 0x28, 0x63, 0x39, 0x22, 0x31, 0x01, 0x31, 0x43, 0x31, 0x02, 0x29, 0x80, 0x20, 0x80, 0x18, 0x80, 0x18, 0x60, 0x18, 0xA0, 0x20, 0xC0, 0x20, 0x01, 0x29, 0x42, 0x39, 0x21, 0x31, 0x01, 0x31, 0x01, 0x31, 0x21, 0x31, 0x42, 0x31, 0x42, 0x31, 0x01, 0x29, 0xA0, 0x20, 0xC0, 0x20, 0x63, 0x39, 0x42, 0x39, 0xA0, 0x28, 0x01, 0x31, 0xE1, 0x28, 0xA0, 0x28, 0xE1, 0x28, 0x62, 0x39, 0x62, 0x39, 0x62, 0x41, 0x21, 0x39, 0xE4, 0x51, 0xA2, 0x49, 0xC1, 0x28, 0xE1, 0x28, 0x22, 0x31, 0xA3, 0x41, 0x83, 0x41, 0x01, 0x31, 0xA3, 0x49, 0x62, 0x41, 0xA0, 0x28, 0x01, 0x39, 0x22, 0x39, 0x42, 0x39, 0x42, 0x39, 0x62, 0x41, 0x42, 0x39, 0x46, 0x5A, 0xA4, 0x41, 0xA1, 0x20, 0x43, 0x39, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0xA1, 0x20, 0x80, 0x18, 0x60, 0x18, 0xE2, 0x28, 0xA0, 0x20, 0xA0, 0x20, 0x60, 0x18, 0xA0, 0x20, 0xA0, 0x20, 0xA0, 0x20, 0x22, 0x31, 0x22, 0x31, 0xC1, 0x28, 0xC1, 0x20, 0x40, 0x18, 0x60, 0x18, 0x80, 0x20, 0xC1, 0x28, 0x83, 0x41, 0x63, 0x39, 0x01, 0x31, 0x01, 0x31, 0xA0, 0x20, 0x84, 0x41, 0x02, 0x29, 0x80, 0x18, 0x80, 0x18, 0x60, 0x18, 0x60, 0x18, 0xE1, 0x28, 0x43, 0x39, 0x02, 0x31, 0x63, 0x39, 0xC1, 0x28, 0xA0, 0x20, 0xA0, 0x20, 0xC1, 0x28, 0x22, 0x31, 0x21, 0x31, 0x62, 0x39, 0x42, 0x41, 0x21, 0x39, 0x80, 0x20, 0x80, 0x20, 0xA0, 0x20, 0x01, 0x31, 0xC4, 0x49, 0x83, 0x41, 0x01, 0x31, 0x01, 0x31, 0x42, 0x39, 0xE1, 0x30, 0xE5, 0x51, 0x06, 0x52, 0x43, 0x39, 0xC1, 0x28, 0xE1, 0x28, 0x63, 0x39, 0x02, 0x31, 0xA1, 0x20, 0xA0, 0x20, 0x23, 0x31, 0xC1, 0x20, 0x80, 0x18, 0x80, 0x18, 0xC1, 0x20, 0x43, 0x31, 0x42, 0x31, 0xC0, 0x20, 0xC0, 0x20, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x21, 0x31, 0x83, 0x39, 0xE1, 0x28, 0x63, 0x39, 0x80, 0x20, 0xA0, 0x20, 0x80, 0x20, 0xC0, 0x28, 0x01, 0x31, 0x42, 0x39, 0xE0, 0x28, 0xA0, 0x20, 0x60, 0x18, 0x60, 0x18, 0x81, 0x20, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0x80, 0x18, 0x22, 0x31, 0x22, 0x31, 0x60, 0x18, 0x60, 0x18, 0x80, 0x18, 0xC1, 0x20, 0x80, 0x18, 0xA0, 0x20, 0x60, 0x18, 0x80, 0x20, 0x01, 0x31, 0xA1, 0x20, 0x60, 0x18, 0xE2, 0x28, 0xC5, 0x41, 0x83, 0x41, 0x22, 0x31, 0xC0, 0x28, 0x80, 0x20, 0xC1, 0x28, 0xE1, 0x28, 0x22, 0x31, 0xC1, 0x28, 0xE2, 0x28, 0xA0, 0x20, 0x80, 0x18, 0x60, 0x18, 0x40, 0x10, 0x61, 0x18, 0x81, 0x18, 0x80, 0x18, 0x80, 0x18, 0x60, 0x18, 0xC4, 0x49, 0xC3, 0x49, 0x21, 0x31, 0x41, 0x31, 0x21, 0x31, 0xC0, 0x20, 0x80, 0x20, 0x60, 0x18, 0x60, 0x18, 0x81, 0x18, 0xA0, 0x20, 0xC3, 0x41, 0x21, 0x31, 0xE1, 0x28, 0x60, 0x18, 0x22, 0x39, 0x43, 0x39, 0x22, 0x39, 0x63, 0x41, 0xA4, 0x49, 0xC0, 0x28, 0x80, 0x20, 0x80, 0x20, 0x40, 0x18, 0x61, 0x18, 0x61, 0x18, 0x61, 0x10, 0x61, 0x18, 0x60, 0x10, 0x80, 0x18, 0xA0, 0x20, 0x01, 0x29, 0x42, 0x31, 0x80, 0x18, 0x60, 0x18, 0x80, 0x18, 0x60, 0x10, 0x60, 0x18, 0x40, 0x10, 0x80, 0x18, 0x40, 0x18, 0x02, 0x31, 0x60, 0x18, 0x81, 0x18, 0x81, 0x18, 0xE2, 0x28, 0x02, 0x29, 0x42, 0x31, 0x60, 0x18, 0x80, 0x18, 0xA1, 0x20, 0xE2, 0x28, 0xA1, 0x20, 0xA1, 0x20, 0x60, 0x18, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x61, 0x10, 0x81, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x42, 0x39, 0xA3, 0x41, 0x44, 0x5A, 0xA5, 0x62, 0x03, 0x52, 0xE3, 0x49, 0x21, 0x31, 0x63, 0x39, 0xC1, 0x20, 0x61, 0x18, 0xA1, 0x20, 0xA0, 0x20, 0x00, 0x31, 0x83, 0x41, 0xE1, 0x28, 0xA0, 0x28, 0xA0, 0x28, 0x80, 0x20, 0x83, 0x41, 0xA3, 0x49, 0xE4, 0x51, 0x04, 0x52, 0x21, 0x31, 0x80, 0x20, 0x80, 0x20, 0x40, 0x10, 0x20, 0x10, 0x61, 0x10, 0x41, 0x10, 0x60, 0x18, 0x60, 0x18, 0x62, 0x39, 0x04, 0x4A, 0x21, 0x31, 0xC0, 0x28, 0x80, 0x20, 0x60, 0x18, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0xA1, 0x20, 0xA1, 0x20, 0xE1, 0x28])] +#[case::x8c(&[0x8C, 0xAF, 0x53, 0x8F, 0x53, 0xAF, 0x53, 0xAF, 0x53, 0xAF, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0xAF, 0x53, 0xAF, 0x53, 0xAF, 0x53, 0xAF, 0x53, 0xC0, 0x20, 0x8F, 0x53, 0x84, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0xD0, 0x30, 0x20, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x8F, 0x4B, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x4B, 0x11, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x86, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x4B, 0x8F, 0x4B, 0x0B, 0x6D, 0x8F, 0x53, 0x40, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x82, 0x8F, 0x4B, 0x8F, 0x4B, 0x1A, 0x60, 0x01, 0x8F, 0x53, 0x70, 0x8F, 0x4B, 0x00, 0xD0, 0x84, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x0B, 0xD0, 0x33, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x8F, 0x4B, 0x00, 0x13, 0x6D, 0x8F, 0x4B, 0x00, 0x0E, 0x87, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x4B, 0x8F, 0x4B, 0x40, 0x36, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x43, 0x00, 0x18, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x87, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0xD9, 0xE0, 0x00, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0D, 0x04, 0x01, 0x00, 0x14, 0xD0, 0x34, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x6F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x6F, 0x53, 0x6F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x6F, 0x4B, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0xD0, 0xEF, 0xE0, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x78, 0x08, 0x01, 0x00, 0x00, 0x80, 0x21, 0x86, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x53, 0x6F, 0x53, 0x6F, 0x4B, 0x6F, 0x4B, 0x49, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x18, 0x01, 0x00, 0x03, 0x89, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x7E, 0x6F, 0x4B, 0x19, 0x84, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x4B, 0x8F, 0x4B, 0x40, 0x22, 0x1F, 0x00, 0xC0, 0x00, 0x00, 0xC8, 0x00, 0x18, 0x03, 0x8E, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x79, 0x6F, 0x4B, 0x84, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x14, 0x0E, 0x60, 0x08, 0x6F, 0x4B, 0x78, 0x6F, 0x53, 0x01, 0x27, 0x00, 0x10, 0x07, 0x57, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x82, 0x6F, 0x53, 0x6F, 0x53, 0x4E, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x66, 0x6F, 0x4B, 0x88, 0x8F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0xF3, 0x2F, 0x02, 0x6F, 0x4B, 0xD0, 0xC8, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x1F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x6F, 0x4B, 0xD0, 0xC7, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0xC0, 0x01, 0x00, 0x01, 0x85, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x28, 0x00, 0x00, 0x73, 0x6F, 0x4B, 0x09, 0x0C, 0x81, 0x70, 0x4B, 0x00, 0x09, 0x84, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x07, 0x83, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x69, 0x6F, 0x4B, 0x44, 0x03, 0x00, 0x00, 0xC0, 0x27, 0x01, 0x66, 0x4F, 0x4B, 0x11, 0x84, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x0C, 0x28, 0x05, 0x7B, 0x4F, 0x4B, 0x08, 0x82, 0x6F, 0x4B, 0x6F, 0x4B, 0x76, 0x4F, 0x4B, 0x02, 0x7F, 0x4F, 0x4B, 0x08, 0x05, 0x82, 0x4F, 0x43, 0x4F, 0x43, 0x60, 0x18, 0x4F, 0x4B, 0x81, 0x4F, 0x43, 0xD0, 0x36, 0x00, 0x08, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x2E, 0x03, 0x2B, 0x01, 0x28, 0x03, 0x29, 0x02, 0x81, 0x4F, 0x4B, 0x06, 0x81, 0x4F, 0x4B, 0x28, 0x0B, 0x6E, 0x4F, 0x43, 0x15, 0x92, 0x4F, 0x43, 0x4F, 0x43, 0x50, 0x4B, 0x50, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x50, 0x4B, 0x50, 0x4B, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x50, 0x4B, 0x50, 0x4B, 0x08, 0x11, 0x77, 0x4F, 0x43, 0x68, 0x4F, 0x4B, 0x02, 0x86, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x60, 0x18, 0x4F, 0x43, 0x50, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1A, 0x4F, 0x43, 0xD0, 0x3D, 0x1F, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])] +#[case::x84(&[0x84, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0x8F, 0x53, 0xCC, 0x8F, 0x4B, 0xC0, 0x19, 0x6F, 0x4B, 0x8A, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x8F, 0x4B, 0x8F, 0x4B, 0x8F, 0x4B, 0x0D, 0xD5, 0xE0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x43, 0x02, 0x83, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x70, 0x8F, 0x4B, 0x00, 0x0A, 0x81, 0x4F, 0x43, 0x0F, 0x40, 0x2E, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x6F, 0x4B, 0x6C, 0x8F, 0x4B, 0x01, 0x6A, 0x6F, 0x4B, 0x81, 0x8F, 0x4B, 0x1C, 0x66, 0x6F, 0x43, 0x85, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x68, 0x8F, 0x4B, 0x40, 0x31, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x4F, 0x43, 0x40, 0x34, 0x03, 0x04, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x83, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x68, 0x4F, 0x43, 0x40, 0x4A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x00, 0x60, 0x09, 0x6F, 0x4B, 0x8D, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x8F, 0x4B, 0x40, 0x31, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x6F, 0x43, 0x06, 0x66, 0x4F, 0x43, 0x40, 0x36, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x4F, 0x43, 0x06, 0x60, 0x0B, 0x6F, 0x4B, 0x84, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6B, 0x4F, 0x43, 0x04, 0x60, 0x0C, 0x6F, 0x4B, 0x84, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6F, 0x43, 0x6C, 0x4F, 0x43, 0x00, 0x13, 0x6D, 0x4F, 0x43, 0x00, 0x52, 0x6E, 0x4F, 0x43, 0x00, 0x05, 0x81, 0x4F, 0x4B, 0x06, 0x84, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x43, 0x4F, 0x43, 0xD0, 0xFC, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x4F, 0x43, 0x00, 0x80, 0x00, 0x20, 0x8C, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x4F, 0x43, 0x4F, 0x43, 0x6F, 0x4B, 0x6F, 0x4B, 0x74, 0x4F, 0x43, 0x00, 0x08, 0xD0, 0x3A, 0x20, 0x08, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x40, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x43, 0x08, 0xD0, 0x7A, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x76, 0x4F, 0x43, 0x00, 0x00, 0x82, 0x6F, 0x4B, 0x6F, 0x4B, 0x06, 0x78, 0x4F, 0x43, 0x1F, 0x08, 0xD0, 0x33, 0x20, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x7C, 0x4F, 0x43, 0x1E, 0xD8, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0x4F, 0x4B, 0xD0, 0x78, 0x20, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x4F, 0x4B, 0x01, 0x1D, 0x81, 0x2F, 0x43, 0x19, 0x68, 0x4F, 0x4B, 0x02, 0x7B, 0x4F, 0x43, 0x81, 0x2F, 0x43, 0x00, 0x01, 0x7D, 0x4F, 0x43, 0x81, 0x2F, 0x43, 0x13, 0xD8, 0x20, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x68, 0x4F, 0x4B, 0x85, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x4B, 0x79, 0x4F, 0x43, 0x89, 0x2F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x0E, 0x6B, 0x4F, 0x4B, 0x00, 0x00, 0x67, 0x2F, 0x43, 0x10, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x68, 0x2F, 0x43, 0x08, 0x81, 0x4F, 0x4B, 0x48, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x2F, 0x43, 0x0C, 0x08, 0x84, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x1B, 0x6D, 0x2F, 0x43, 0x02, 0x84, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x0E, 0xD0, 0x35, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6B, 0x4F, 0x4B, 0x03, 0x00, 0x04, 0x90, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x6F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x4F, 0x4B, 0x60, 0x01, 0x4F, 0x43, 0x6F, 0x2F, 0x43, 0x04, 0x6C, 0x4F, 0x4B, 0x00, 0x10, 0xD6, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x2F, 0x43, 0x00, 0x20, 0x70, 0x4F, 0x4B, 0x00, 0x3B, 0x81, 0x2F, 0x43, 0x19, 0x82, 0x4F, 0x43, 0x4F, 0x43, 0xD5, 0x00, 0x08, 0xF1, 0x01, 0x00, 0x00, 0x00, 0x71, 0x2F, 0x43, 0x40, 0x29, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x81, 0x2F, 0x43, 0x17, 0x60, 0x01, 0x4F, 0x43, 0x7D, 0x2F, 0x43, 0x00, 0x3E, 0x84, 0x2F, 0x43, 0x2F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x7B, 0x2F, 0x43, 0x83, 0x2F, 0x3B, 0x2F, 0x3B, 0x2F, 0x3B, 0x00, 0x00, 0x7C, 0x2F, 0x43, 0x81, 0x2F, 0x3B, 0x00, 0x01, 0x82, 0x4F, 0x43, 0x4F, 0x43, 0x16, 0xDC, 0x00, 0x78, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x86, 0x2F, 0x43, 0x2F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x7C, 0x2F, 0x43, 0x68, 0x2F, 0x3B, 0x15, 0x85, 0x2F, 0x43, 0x2F, 0x43, 0x2F, 0x43, 0x4F, 0x43, 0x4F, 0x43, 0x7C, 0x2F, 0x43, 0x66, 0x2F, 0x3B, 0x84, 0x2F, 0x3B, 0x2F, 0x3B, 0x2F, 0x3B, 0x2F, 0x3B])] +fn decompress_bpp_16(#[case] src: &[u8]) { + const WIDTH: usize = 64; + const HEIGHT: usize = 64; + + let rdp_rs_out = { + // rdp-rs + + let mut out = [0; WIDTH * HEIGHT]; + rdp::codec::rle::rle_16_decompress(src, WIDTH, HEIGHT, &mut out).expect("rdp-rs decompress"); + + // rle_16_decompress output bitmap is already flipped vertically. + // Flip it back so it matches with ironrdp. + + out.chunks_exact(WIDTH) + .rev() + .flat_map(|row| row.iter().flat_map(|pixel| pixel.to_le_bytes())) + .collect::() + }; + + let ironrdp_out = { + // IronRDP + + let mut ironrdp_out = bytes::BytesMut::new(); + ironrdp_graphics::rle::decompress_16_bpp(src, &mut ironrdp_out, WIDTH, HEIGHT); + + ironrdp_out.freeze() + }; + + assert_eq!(ironrdp_out, rdp_rs_out); +} diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index bd2ba1ab..a7f3711f 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -1,5 +1,6 @@ use std::io; +use bytes::BytesMut; use ironrdp_core::codecs::rfx::FrameAcknowledgePdu; use ironrdp_core::fast_path::{ FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, @@ -7,7 +8,6 @@ use ironrdp_core::fast_path::{ use ironrdp_core::geometry::Rectangle; use ironrdp_core::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; use ironrdp_core::{PduBufferParsing, ShareDataPdu}; -use log::{debug, info, warn}; use num_traits::FromPrimitive; use super::codecs::rfx; @@ -53,9 +53,63 @@ impl Processor { let update_region = self.process_surface_commands(image, &mut output, surface_commands)?; Ok(Some(update_region)) } - Ok(FastPathUpdate::Bitmap(bitmap)) => { - info!("Received Bitmap: {:?}", bitmap); - Ok(None) + Ok(FastPathUpdate::Bitmap(bitmap_update)) => { + trace!("Received bitmap update"); + + let mut buf = BytesMut::new(); + let mut update_rectangle: Option = None; + + for update in bitmap_update.rectangles { + trace!("{update:?}"); + buf.clear(); + + // Bitmap data is either compressed or uncompressed, depending + // on whether the BITMAP_COMPRESSION flag is present in the + // flags field. + if update + .compression_flags + .contains(ironrdp_core::bitmap::Compression::BITMAP_COMPRESSION) + { + if update.bits_per_pixel == 32 { + // Compressed bitmaps at a color depth of 32 bpp are compressed using RDP 6.0 + // Bitmap Compression and stored inside an RDP 6.0 Bitmap Compressed Stream + // structure ([MS-RDPEGDI] section 2.2.2.5.1). + trace!("32 bpp compressed RDP6_BITMAP_STREAM"); + warn!("RDP6_BITMAP_STREAM is not yet supported"); + } else { + // Compressed bitmaps not in 32 bpp format are compressed using Interleaved + // RLE and encapsulated in an RLE Compressed Bitmap Stream structure (section + // 2.2.9.1.1.3.1.2.4). + trace!("Non-32 bpp compressed RLE_BITMAP_STREAM"); + + ironrdp_graphics::rle::decompress( + update.bitmap_data, + &mut buf, + update.width, + update.height, + update.bits_per_pixel, + ); + + // TODO: support other pixel formats… + image.apply_rgb16_bitmap(&buf, &update.rectangle); + } + } else { + // Uncompressed bitmap data is formatted as a bottom-up, left-to-right series of + // pixels. Each pixel is a whole number of bytes. Each row contains a multiple of + // four bytes (including up to three bytes of padding, as necessary). + trace!("Uncompressed raw bitmap"); + + // TODO: support other pixel formats… + image.apply_rgb16_bitmap(update.bitmap_data, &update.rectangle); + } + + match update_rectangle { + Some(current) => update_rectangle = Some(current.union(&update.rectangle)), + None => update_rectangle = Some(update.rectangle), + } + } + + Ok(update_rectangle) } Err(FastPathError::UnsupportedFastPathUpdate(code)) if code == UpdateCode::Orders || code == UpdateCode::Palette => @@ -63,7 +117,7 @@ impl Processor { Err(RdpError::UnexpectedFastPathUpdate(code)) } Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { - warn!("Received unsupported Fast-Path update: {:?}", update_code); + debug!("Received unsupported Fast-Path update: {:?}", update_code); Ok(None) } Err(FastPathError::BitmapError(error)) => { diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index b8dd6392..0c1fa4d8 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -407,7 +407,7 @@ pub async fn basic_settings_exchange( let connect_initial = ironrdp_core::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); - encode_next_frame(writer, X224Frame(connect_initial.clone())).await?; + encode_next_frame(writer, X224Frame(&connect_initial)).await?; let connect_response: ironrdp_core::ConnectResponse = reader.decode_next_frame::>().await?.0; debug!("Got MCS Connect Response PDU: {:?}", connect_response); diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs index aabf91d2..ce8635fd 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -129,13 +129,13 @@ fn create_core_data(config: &InputConfig, selected_protocol: SecurityProtocol) - version: RdpVersion::V5_PLUS, desktop_width: config.width, desktop_height: config.height, - color_depth: ColorDepth::Bpp4, // ignored + color_depth: ColorDepth::Bpp4, // ignored because we use the optional core data below sec_access_sequence: SecureAccessSequence::Del, keyboard_layout: 0, // the server SHOULD use the default active input locale identifier client_build: semver::Version::parse(env!("CARGO_PKG_VERSION")) .map(|version| version.major * 100 + version.minor * 10 + version.patch) .unwrap_or(0) as u32, - client_name: whoami::hostname(), // FIXME: probably not wasm-friendly + client_name: whoami::hostname(), // FIXME: not wasm-friendly keyboard_type: config.keyboard_type, keyboard_subtype: config.keyboard_subtype, keyboard_functional_keys_count: config.keyboard_functional_keys_count, @@ -156,11 +156,11 @@ fn create_optional_core_data( } Ok(ClientCoreOptionalData { - post_beta_color_depth: Some(ColorDepth::Bpp4), // ignored + post_beta2_color_depth: Some(ColorDepth::Bpp4), // ignored because we set high_color_depth client_product_id: Some(1), serial_number: Some(0), high_color_depth: Some(HighColorDepth::Bpp24), - supported_color_depths: Some(SupportedColorDepths::all()), + supported_color_depths: Some(SupportedColorDepths::BPP16), early_capability_flags: Some(early_capability_flags), dig_product_id: Some(config.dig_product_id.clone()), connection_type: Some(ConnectionType::Lan), diff --git a/ironrdp-session/src/image.rs b/ironrdp-session/src/image.rs index 5ec259e3..b99a6ff4 100644 --- a/ironrdp-session/src/image.rs +++ b/ironrdp-session/src/image.rs @@ -85,4 +85,32 @@ impl DecodedImage { Ok(()) } + + pub(crate) fn apply_rgb16_bitmap(&mut self, rgb16: &[u8], update_rectangle: &Rectangle) { + const SRC_COLOR_DEPTH: usize = 2; + const DST_COLOR_DEPTH: usize = 4; + + let image_width = self.width as usize; + let rectangle_width = usize::from(update_rectangle.width()) + 1; + let top = usize::from(update_rectangle.top); + let left = usize::from(update_rectangle.left); + + rgb16 + .chunks_exact(rectangle_width * SRC_COLOR_DEPTH) + .rev() + .enumerate() + .for_each(|(row_idx, row)| { + row.chunks_exact(SRC_COLOR_DEPTH) + .enumerate() + .for_each(|(col_idx, src_pixel)| { + let rgb16_value = u16::from_le_bytes(src_pixel.try_into().unwrap()); + let dst_idx = ((top + row_idx) * image_width + left + col_idx) * DST_COLOR_DEPTH; + + self.data[dst_idx] = (((((rgb16_value >> 11) & 0x1f) * 527) + 23) >> 6) as u8; + self.data[dst_idx + 1] = (((((rgb16_value >> 5) & 0x3f) * 259) + 33) >> 6) as u8; + self.data[dst_idx + 2] = ((((rgb16_value & 0x1f) * 527) + 23) >> 6) as u8; + self.data[dst_idx + 3] = 0xff; + }) + }); + } } From a7e30ca6176fb192cb1413c5ef38cde2b219fd25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 28 Feb 2023 09:48:03 -0500 Subject: [PATCH 0124/1273] fix: bad width and height for Rectangle (#80) Issue: ARC-135 --- ffi/wasm/src/image.rs | 48 ++++++++++++++++--- ffi/wasm/src/session.rs | 15 ++---- .../basic_output/surface_commands/tests.rs | 6 +-- ironrdp-core/src/codecs/rfx/tests.rs | 4 +- ironrdp-core/src/geometry.rs | 4 +- .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 4 +- ironrdp-graphics/tests/image_processing.rs | 24 +++++----- ironrdp-renderer/src/surface.rs | 4 +- .../src/active_session/codecs/rfx.rs | 8 ++-- .../src/active_session/codecs/rfx/tests.rs | 4 +- ironrdp-session/src/image.rs | 2 +- 11 files changed, 76 insertions(+), 47 deletions(-) diff --git a/ffi/wasm/src/image.rs b/ffi/wasm/src/image.rs index 3e9ceb3b..9990276e 100644 --- a/ffi/wasm/src/image.rs +++ b/ffi/wasm/src/image.rs @@ -13,26 +13,33 @@ pub struct RectInfo { pub height: u16, } -// FIXME: is it broken? Investigate again -#[allow(dead_code)] -fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { +pub fn extract_partial_image(image: &DecodedImage, region: Rectangle) -> (Rectangle, Vec) { + // PERF: needs actual benchmark to find a better heuristic + if region.height() > 64 || region.width() > 512 { + extract_whole_rows(image, region) + } else { + extract_smallest_rectangle(image, region) + } +} + +// Faster for low-height and smaller images +fn extract_smallest_rectangle(image: &DecodedImage, region: Rectangle) -> (Rectangle, Vec) { let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); let image_width = usize::try_from(image.width()).unwrap(); + let image_stride = image_width * pixel_size; let region_top = usize::from(region.top); let region_left = usize::from(region.left); let region_width = usize::from(region.width()); let region_height = usize::from(region.height()); + let region_stride = region_width * pixel_size; let dst_buf_size = region_width * region_height * pixel_size; let mut dst = vec![0; dst_buf_size]; let src = image.data(); - let image_stride = image_width * pixel_size; - let region_stride = region_width * pixel_size; - for row in 0..region_height { let src_begin = image_stride * (region_top + row) + region_left * pixel_size; let src_end = src_begin + region_stride; @@ -45,5 +52,32 @@ fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { target_slice.copy_from_slice(src_slice); } - dst + (region, dst) +} + +// Faster for high-height and bigger images +fn extract_whole_rows(image: &DecodedImage, region: Rectangle) -> (Rectangle, Vec) { + let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); + + let image_width = usize::try_from(image.width()).unwrap(); + let image_stride = image_width * pixel_size; + + let region_top = usize::from(region.top); + let region_bottom = usize::from(region.bottom); + + let src = image.data(); + + let src_begin = region_top * image_stride; + let src_end = (region_bottom + 1) * image_stride; + + let dst = src[src_begin..src_end].to_vec(); + + let wider_region = Rectangle { + left: 0, + top: region.top, + right: u16::try_from(image.width() - 1).unwrap(), + bottom: region.bottom, + }; + + (wider_region, dst) } diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index 8e65df3e..0ab646fb 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -14,6 +14,7 @@ use sspi::AuthIdentity; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::spawn_local; +use crate::image::extract_partial_image; use crate::error::IronRdpError; use crate::image::RectInfo; use crate::input::InputTransaction; @@ -171,21 +172,15 @@ impl Session { .unbounded_send(frame.to_vec()) .context("Send frame to writer task")?; } - ActiveStageOutput::GraphicsUpdate(_updated_region) => { - // FIXME: atm sending a partial is not working - // let partial_image = extract_partial_image(&image, &updated_region); + ActiveStageOutput::GraphicsUpdate(updated_region) => { + let (partial_image_rectangle, partial_image) = extract_partial_image(&image, updated_region); send_update_rectangle( &self.update_callback, &self.update_callback_context, frame_id, - Rectangle { - left: 0, - top: 0, - right: image.width() as u16, - bottom: image.height() as u16, - }, - image.data().to_vec(), + partial_image_rectangle, + partial_image, ) .context("Failed to send update rectangle")?; diff --git a/ironrdp-core/src/basic_output/surface_commands/tests.rs b/ironrdp-core/src/basic_output/surface_commands/tests.rs index 8181df89..69e5f728 100644 --- a/ironrdp-core/src/basic_output/surface_commands/tests.rs +++ b/ironrdp-core/src/basic_output/surface_commands/tests.rs @@ -5,7 +5,7 @@ use super::*; const FRAME_MARKER_BUFFER: [u8; 8] = [0x4, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0]; const SURFACE_BITS_BUFFER: [u8; 1217] = [ - 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7, 0x38, 0x4, 0x20, 0x0, 0x0, 0x3, 0x80, 0x7, 0x38, 0x4, 0xab, 0x4, 0x0, 0x0, + 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7F, 0x7, 0x37, 0x4, 0x20, 0x0, 0x0, 0x3, 0x80, 0x7, 0x38, 0x4, 0xab, 0x4, 0x0, 0x0, 0xc4, 0xcc, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x0, 0x1, 0x0, 0xc6, 0xcc, 0x17, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x70, 0x7, 0xa0, 0x0, 0x10, 0x0, 0xc0, 0x0, 0xc1, 0xca, 0x1, 0x0, 0xc7, 0xcc, 0x7e, 0x4, 0x0, 0x0, 0x1, 0x0, 0xc2, 0xca, 0x0, 0x0, 0x51, 0x50, 0x1, 0x40, 0x4, 0x0, 0x63, 0x4, 0x0, 0x0, 0x66, 0x66, 0x77, 0x88, 0x98, @@ -79,8 +79,8 @@ lazy_static! { destination: Rectangle { left: 0, top: 0, - right: 1920, - bottom: 1080, + right: 1919, + bottom: 1079, }, extended_bitmap_data: ExtendedBitmapDataPdu { bpp: 32, diff --git a/ironrdp-core/src/codecs/rfx/tests.rs b/ironrdp-core/src/codecs/rfx/tests.rs index c510aa4e..47b5f49e 100644 --- a/ironrdp-core/src/codecs/rfx/tests.rs +++ b/ironrdp-core/src/codecs/rfx/tests.rs @@ -243,13 +243,13 @@ lazy_static! { x: 0, y: 0, width: 64, - height: 64 + height: 64, }, RfxRectangle { x: 64, y: 64, width: 0xff, - height: 0xff + height: 0xff, }, ] }; diff --git a/ironrdp-core/src/geometry.rs b/ironrdp-core/src/geometry.rs index e5343615..6ede1e53 100644 --- a/ironrdp-core/src/geometry.rs +++ b/ironrdp-core/src/geometry.rs @@ -22,11 +22,11 @@ impl Rectangle { } pub fn width(&self) -> u16 { - self.right - self.left + self.right - self.left + 1 } pub fn height(&self) -> u16 { - self.bottom - self.top + self.bottom - self.top + 1 } pub fn union_all(rectangles: &[Self]) -> Self { diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs index 3d9cf672..ba9684c1 100644 --- a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs +++ b/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs @@ -434,12 +434,12 @@ lazy_static! { left: 1792, top: 1056, right: 1808, - bottom: 1072 + bottom: 1072, }], quant_qual_vals: vec![QuantQuality { quantization_parameter: 22, progressive: false, - quality: 100 + quality: 100, }], data: &AVC_444_MESSAGE_CORRECT_LEN[18..] }, diff --git a/ironrdp-graphics/tests/image_processing.rs b/ironrdp-graphics/tests/image_processing.rs index edfbb9a6..24c42fb4 100644 --- a/ironrdp-graphics/tests/image_processing.rs +++ b/ironrdp-graphics/tests/image_processing.rs @@ -25,8 +25,8 @@ fn image_region_copy_bgra32_to_rgba32() { region: Rectangle { left: 0, top: 0, - right: 8, - bottom: 8, + right: 7, + bottom: 7, }, step: 32, pixel_format: PixelFormat::BgrA32, @@ -38,8 +38,8 @@ fn image_region_copy_bgra32_to_rgba32() { region: Rectangle { left: 0, top: 0, - right: 8, - bottom: 8, + right: 7, + bottom: 7, }, step: 32, pixel_format: PixelFormat::RgbA32, @@ -61,8 +61,8 @@ fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() region: Rectangle { left: 0, top: 0, - right: 64, - bottom: 64, + right: 63, + bottom: 63, }, step: 256, pixel_format: PixelFormat::BgrX32, @@ -72,8 +72,8 @@ fn image_region_correctly_writes_image_with_different_formats_with_same_sizes() region: Rectangle { left: 0, top: 0, - right: 64, - bottom: 64, + right: 63, + bottom: 63, }, step: 256, pixel_format: PixelFormat::XRgb32, @@ -91,8 +91,8 @@ fn image_region_correctly_writes_image_with_same_formats_and_different_sizes() { region: Rectangle { left: 8, top: 8, - right: 64, - bottom: 64, + right: 63, + bottom: 63, }, step: 256, pixel_format: PixelFormat::BgrX32, @@ -102,8 +102,8 @@ fn image_region_correctly_writes_image_with_same_formats_and_different_sizes() { region: Rectangle { left: 8, top: 8, - right: 40, - bottom: 24, + right: 39, + bottom: 23, }, step: 256, pixel_format: PixelFormat::BgrX32, diff --git a/ironrdp-renderer/src/surface.rs b/ironrdp-renderer/src/surface.rs index 430b2738..df5c6fb9 100644 --- a/ironrdp-renderer/src/surface.rs +++ b/ironrdp-renderer/src/surface.rs @@ -242,8 +242,8 @@ impl Surface { Rectangle { top: 0, left: 0, - right: self.width, - bottom: self.height, + right: self.width - 1, + bottom: self.height - 1, } }; diff --git a/ironrdp-session/src/active_session/codecs/rfx.rs b/ironrdp-session/src/active_session/codecs/rfx.rs index 9dec465c..a6cdd46f 100644 --- a/ironrdp-session/src/active_session/codecs/rfx.rs +++ b/ironrdp-session/src/active_session/codecs/rfx.rs @@ -219,10 +219,10 @@ fn clipping_rectangles(rectangles: &[RfxRectangle], destination: &Rectangle, wid rectangles .iter() .map(|r| Rectangle { - left: min(destination.left + r.x, width), - top: min(destination.top + r.y, height), - right: min(destination.left + r.x + r.width, width), - bottom: min(destination.top + r.y + r.height, height), + left: min(destination.left + r.x, width - 1), + top: min(destination.top + r.y, height - 1), + right: min(destination.left + r.x + r.width, width - 1), + bottom: min(destination.top + r.y + r.height, height - 1), }) .for_each(|r| clipping_rectangles.union_rectangle(r)); diff --git a/ironrdp-session/src/active_session/codecs/rfx/tests.rs b/ironrdp-session/src/active_session/codecs/rfx/tests.rs index 4c5447f4..76199b0a 100644 --- a/ironrdp-session/src/active_session/codecs/rfx/tests.rs +++ b/ironrdp-session/src/active_session/codecs/rfx/tests.rs @@ -10,8 +10,8 @@ fn decode_decodes_valid_sequence_of_messages() { let destination = Rectangle { left: 0, top: 0, - right: IMAGE_WIDTH as u16, - bottom: IMAGE_HEIGHT as u16, + right: IMAGE_WIDTH as u16 - 1, + bottom: IMAGE_HEIGHT as u16 - 1, }; let mut data = ENCODED_MESSAGES.as_ref(); let expected = DECODED_IMAGE.as_ref(); diff --git a/ironrdp-session/src/image.rs b/ironrdp-session/src/image.rs index b99a6ff4..09f9beb7 100644 --- a/ironrdp-session/src/image.rs +++ b/ironrdp-session/src/image.rs @@ -91,7 +91,7 @@ impl DecodedImage { const DST_COLOR_DEPTH: usize = 4; let image_width = self.width as usize; - let rectangle_width = usize::from(update_rectangle.width()) + 1; + let rectangle_width = usize::from(update_rectangle.width()); let top = usize::from(update_rectangle.top); let left = usize::from(update_rectangle.left); From 744445da68be07e17f8e59e43cd37d1067ddb683 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Tue, 28 Feb 2023 09:51:43 -0500 Subject: [PATCH 0125/1273] chore(iron-remote-gui): bump version (#79) --- iron-remote-gui/public/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 7bbf7624..7c9bd045 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.3.0", + "version": "0.4.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 5b36fc42b5c761a01403d55ad93f1709bcc40f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 28 Feb 2023 10:56:08 -0500 Subject: [PATCH 0126/1273] docs: update section about supported codecs (#81) --- README.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3240858b..81fb06dc 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,22 @@ A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on ## Video Codec Support -Currently, only Microsoft RemoteFX (RFX) is supported. +Supported codecs: -In order to enable RemoteFX: +- Uncompressed raw bitmap +- Interleaved Run-Length Encoding (RLE) Bitmap Codec +- Microsoft RemoteFX (RFX) + +### How to enable RemoteFX on server + +Run the following PowerShell commands, and reboot. + +```pwsh +Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'ColorDepth' -Type DWORD -Value 5 +Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'fEnableVirtualizedGraphics' -Type DWORD -Value 1 +``` + +Alternatively, you may change a few group policies using `gpedit.msc`: 1. Run `gpedit.msc`. @@ -37,7 +50,6 @@ In order to enable RemoteFX: 5. Reboot. - ## Demonstration https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4 From 5dd0382e438b60ab639216a3efb64434994f2027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 28 Feb 2023 14:27:13 -0500 Subject: [PATCH 0127/1273] fix: do not returns an error when compression is used (#82) Sometimes the FastPathUpdatePdu header has the COMPRESSION_USED bit flipped and it returns an error. It should not. --- ironrdp-core/src/basic_output/fast_path.rs | 6 +++--- ironrdp-core/src/basic_output/fast_path/test.rs | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs index 23fd29fb..7184124c 100644 --- a/ironrdp-core/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -87,6 +87,7 @@ impl PduParsing for FastPathHeader { pub struct FastPathUpdatePdu<'a> { pub fragmentation: Fragmentation, pub update_code: UpdateCode, + pub compression: Compression, pub data: &'a [u8], } @@ -104,9 +105,6 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { Fragmentation::from_u8(fragmentation).ok_or(FastPathError::InvalidFragmentation(fragmentation))?; let compression = Compression::from_bits_truncate(header.get_bits(6..8)); - if compression.contains(Compression::COMPRESSION_USED) { - return Err(FastPathError::CompressionNotSupported); - } let data_length = usize::from(buffer.read_u16::()?); if buffer.len() < data_length { @@ -120,6 +118,7 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { Ok(Self { fragmentation, update_code, + compression, data, }) } @@ -128,6 +127,7 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { let mut header = 0u8; header.set_bits(0..4, self.update_code.to_u8().unwrap()); header.set_bits(4..6, self.fragmentation.to_u8().unwrap()); + header.set_bits(6..8, self.compression.bits); buffer.write_u8(header)?; buffer.write_u16::(self.data.len() as u16)?; buffer.write_all(self.data)?; diff --git a/ironrdp-core/src/basic_output/fast_path/test.rs b/ironrdp-core/src/basic_output/fast_path/test.rs index 5c5c97ba..e456e516 100644 --- a/ironrdp-core/src/basic_output/fast_path/test.rs +++ b/ironrdp-core/src/basic_output/fast_path/test.rs @@ -32,6 +32,7 @@ lazy_static! { static ref FAST_PATH_UPDATE_PDU: FastPathUpdatePdu<'static> = FastPathUpdatePdu { fragmentation: Fragmentation::Single, update_code: UpdateCode::SurfaceCommands, + compression: Compression::empty(), data: &FAST_PATH_UPDATE_PDU_BUFFER[3..], }; } From 631bf82fece02a6b0517f7d85b35913570d3ac14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 28 Feb 2023 16:45:36 -0500 Subject: [PATCH 0128/1273] fix: more resilient fast-path update handling (#83) --- iron-svelte-client/src/lib/login/login.svelte | 24 +++++++++---- ironrdp-core/src/basic_output/fast_path.rs | 34 +++++++++++++++---- .../src/basic_output/fast_path/test.rs | 3 +- .../src/basic_output/surface_commands.rs | 2 +- ironrdp-core/src/codecs/rfx.rs | 2 +- ironrdp-core/src/rdp.rs | 1 + ironrdp-core/src/rdp/headers.rs | 4 ++- ironrdp-graphics/src/zgfx/circular_buffer.rs | 4 +-- .../src/active_session/fast_path.rs | 8 +++-- 9 files changed, 60 insertions(+), 22 deletions(-) diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte index bfcde963..c9ba4ed0 100644 --- a/iron-svelte-client/src/lib/login/login.svelte +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -24,12 +24,22 @@ const initListeners = () => { userInteraction.sessionListener.subscribe(event => { - toast.set({ - type: 'error', - message: event.data.backtrace() - }); + if (event.type === 2) { + console.log("Error event", event.data); + + toast.set({ + type: 'error', + message: event.data, + }); + } else { + toast.set({ + type: 'info', + message: event.data || "No info", + }); + } }); } + const StartSession = () => { toast.set({ type: 'info', @@ -62,18 +72,18 @@ } else if (start_info.initial_desktop_size !== null) { //Browser toast.set({ type: 'info', - message: 'Success' + message: 'Success', }); currentSession.update(session => Object.assign(session, { sessionId: start_info.session_id, desktopSize: start_info.initial_desktop_size, - active: true + active: true, })); showLogin.set(false); } else { toast.set({ type: 'error', - message: 'Failure' + message: 'Failure', }); } }); diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs index 7184124c..d97f0f96 100644 --- a/ironrdp-core/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -12,6 +12,7 @@ use thiserror::Error; use super::bitmap::{BitmapError, BitmapUpdateData}; use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; +use crate::rdp::{CompressionFlags, CompressionType, SHARE_DATA_HEADER_MASK}; use crate::utils::SplitTo; use crate::{per, PduBufferParsing, PduParsing}; @@ -87,7 +88,9 @@ impl PduParsing for FastPathHeader { pub struct FastPathUpdatePdu<'a> { pub fragmentation: Fragmentation, pub update_code: UpdateCode, - pub compression: Compression, + pub compression_flags: Option, + // NOTE: always Some when compression flags is Some + pub compression_type: Option, pub data: &'a [u8], } @@ -104,7 +107,18 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { let fragmentation = Fragmentation::from_u8(fragmentation).ok_or(FastPathError::InvalidFragmentation(fragmentation))?; - let compression = Compression::from_bits_truncate(header.get_bits(6..8)); + let (compression_flags, compression_type) = + if Compression::from_bits_truncate(header.get_bits(6..8)).contains(Compression::COMPRESSION_USED) { + let compression_flags_with_type = buffer.read_u8()?; + let compression_flags = + CompressionFlags::from_bits_truncate(compression_flags_with_type & SHARE_DATA_HEADER_MASK); + let compression_type = CompressionType::from_u8(compression_flags_with_type & !SHARE_DATA_HEADER_MASK) + .ok_or_else(|| FastPathError::InvalidShareDataHeader(String::from("Invalid compression type")))?; + + (Some(compression_flags), Some(compression_type)) + } else { + (None, None) + }; let data_length = usize::from(buffer.read_u16::()?); if buffer.len() < data_length { @@ -118,7 +132,8 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { Ok(Self { fragmentation, update_code, - compression, + compression_flags, + compression_type, data, }) } @@ -127,7 +142,12 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { let mut header = 0u8; header.set_bits(0..4, self.update_code.to_u8().unwrap()); header.set_bits(4..6, self.fragmentation.to_u8().unwrap()); - header.set_bits(6..8, self.compression.bits); + + if self.compression_flags.is_some() { + header.set_bits(6..8, Compression::COMPRESSION_USED.bits); + todo!("encode compressionFlags (optional)"); // TODO: compressionFlags encoding + } + buffer.write_u8(header)?; buffer.write_u16::(self.data.len() as u16)?; buffer.write_all(self.data)?; @@ -262,10 +282,10 @@ pub enum FastPathError { InvalidUpdateCode(u8), #[error("Received invalid fragmentation: {0}")] InvalidFragmentation(u8), - #[error("Received compressed Fast-Path package")] - CompressionNotSupported, - #[error("Input buffer is shorter then the data length: {} < {}", actual, expected)] + #[error("Input buffer is shorter than the data length: {} < {}", actual, expected)] InvalidDataLength { expected: usize, actual: usize }, #[error("Received unsupported Fast-Path Update: {0:?}")] UnsupportedFastPathUpdate(UpdateCode), + #[error("Invalid RDP Share Data Header: {0}")] + InvalidShareDataHeader(String), } diff --git a/ironrdp-core/src/basic_output/fast_path/test.rs b/ironrdp-core/src/basic_output/fast_path/test.rs index e456e516..2cf46e34 100644 --- a/ironrdp-core/src/basic_output/fast_path/test.rs +++ b/ironrdp-core/src/basic_output/fast_path/test.rs @@ -32,7 +32,8 @@ lazy_static! { static ref FAST_PATH_UPDATE_PDU: FastPathUpdatePdu<'static> = FastPathUpdatePdu { fragmentation: Fragmentation::Single, update_code: UpdateCode::SurfaceCommands, - compression: Compression::empty(), + compression_flags: None, + compression_type: None, data: &FAST_PATH_UPDATE_PDU_BUFFER[3..], }; } diff --git a/ironrdp-core/src/basic_output/surface_commands.rs b/ironrdp-core/src/basic_output/surface_commands.rs index 5c655072..ddf732aa 100644 --- a/ironrdp-core/src/basic_output/surface_commands.rs +++ b/ironrdp-core/src/basic_output/surface_commands.rs @@ -279,6 +279,6 @@ pub enum SurfaceCommandsError { InvalidSurfaceCommandType(u16), #[error("Invalid Frame Marker action: {0}")] InvalidFrameAction(u16), - #[error("Input buffer is shorter then the data length: {actual} < {expected}")] + #[error("Input buffer is shorter than the data length: {actual} < {expected}")] InvalidDataLength { expected: usize, actual: usize }, } diff --git a/ironrdp-core/src/codecs/rfx.rs b/ironrdp-core/src/codecs/rfx.rs index a26707a8..edad25f2 100644 --- a/ironrdp-core/src/codecs/rfx.rs +++ b/ironrdp-core/src/codecs/rfx.rs @@ -238,7 +238,7 @@ pub enum RfxError { InvalidEntropyAlgorithm(u16), #[error("Got invalid quantization type: {0}")] InvalidQuantizationType(u16), - #[error("Input buffer is shorter then the data length: {actual} < {expected}")] + #[error("Input buffer is shorter than the data length: {actual} < {expected}")] InvalidDataLength { expected: usize, actual: usize }, #[error("Got invalid Region LRF: {0}")] InvalidLrf(bool), diff --git a/ironrdp-core/src/rdp.rs b/ironrdp-core/src/rdp.rs index 2a9fccc7..2f029e3b 100644 --- a/ironrdp-core/src/rdp.rs +++ b/ironrdp-core/src/rdp.rs @@ -35,6 +35,7 @@ pub use self::finalization_messages::{ pub use self::headers::{ BasicSecurityHeader, BasicSecurityHeaderFlags, CompressionFlags, ShareControlHeader, ShareControlPdu, ShareControlPduType, ShareDataHeader, ShareDataPdu, ShareDataPduType, StreamPriority, BASIC_SECURITY_HEADER_SIZE, + SHARE_DATA_HEADER_MASK, }; pub use self::server_error_info::{ ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, diff --git a/ironrdp-core/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs index d7a3f5bf..f2729ca9 100644 --- a/ironrdp-core/src/rdp/headers.rs +++ b/ironrdp-core/src/rdp/headers.rs @@ -16,8 +16,8 @@ use crate::rdp::session_info::SaveSessionInfoPdu; use crate::PduParsing; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; +pub const SHARE_DATA_HEADER_MASK: u8 = 0xf; const SHARE_CONTROL_HEADER_MASK: u16 = 0xf; -const SHARE_DATA_HEADER_MASK: u8 = 0xf; const SHARE_CONTROL_HEADER_SIZE: usize = 2 * 3 + 4; const PROTOCOL_VERSION: u16 = 0x10; @@ -311,6 +311,7 @@ impl ShareDataPdu { | ShareDataPduType::StatusInfoPdu => Err(RdpError::UnexpectedShareDataPdu(share_type)), } } + pub fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), RdpError> { match self { ShareDataPdu::Synchronize(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), @@ -325,6 +326,7 @@ impl ShareDataPdu { ShareDataPdu::Input(pdu) => pdu.to_buffer(&mut stream).map_err(RdpError::from), } } + pub fn buffer_length(&self) -> usize { match self { ShareDataPdu::Synchronize(pdu) => pdu.buffer_length(), diff --git a/ironrdp-graphics/src/zgfx/circular_buffer.rs b/ironrdp-graphics/src/zgfx/circular_buffer.rs index a55e3bd4..b68d2fbf 100644 --- a/ironrdp-graphics/src/zgfx/circular_buffer.rs +++ b/ironrdp-graphics/src/zgfx/circular_buffer.rs @@ -17,8 +17,8 @@ impl FixedCircularBuffer { pub fn read_with_offset(&self, offset: usize, length: usize, mut output: impl io::Write) -> io::Result<()> { let position = (self.buffer.len() + self.position - offset) % self.buffer.len(); - // will take the offset if the destination length is greater then the offset, - // i.e. greater then the current buffer position. + // will take the offset if the destination length is greater than the offset, + // i.e. greater than the current buffer position. let dst_length = min(offset, length); let mut written = 0; diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index a7f3711f..57b9b7be 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -80,7 +80,10 @@ impl Processor { // Compressed bitmaps not in 32 bpp format are compressed using Interleaved // RLE and encapsulated in an RLE Compressed Bitmap Stream structure (section // 2.2.9.1.1.3.1.2.4). - trace!("Non-32 bpp compressed RLE_BITMAP_STREAM"); + trace!( + "Non-32 bpp compressed RLE_BITMAP_STREAM (bpp: {})", + update.bits_per_pixel + ); ironrdp_graphics::rle::decompress( update.bitmap_data, @@ -114,7 +117,8 @@ impl Processor { Err(FastPathError::UnsupportedFastPathUpdate(code)) if code == UpdateCode::Orders || code == UpdateCode::Palette => { - Err(RdpError::UnexpectedFastPathUpdate(code)) + warn!("Received unsupported Fast-Path update: {code:?}"); + Ok(None) } Err(FastPathError::UnsupportedFastPathUpdate(update_code)) => { debug!("Received unsupported Fast-Path update: {:?}", update_code); From 9819b9a97632474fcac56ed287701ae1b4a120ec Mon Sep 17 00:00:00 2001 From: Zacharia Ellaham <64048120+zachariaellaham@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:01:25 -0500 Subject: [PATCH 0129/1273] chore(iron-remote-gui): bump version (0.4.3) (#84) --- iron-remote-gui/public/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 7c9bd045..31e65d5f 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.4.0", + "version": "0.4.3", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 68ebc674a526e7488ccd6d694c460f7eaec4fe31 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Mon, 6 Mar 2023 11:02:00 -0500 Subject: [PATCH 0130/1273] fix(iron-remote-gui): border on hover and fit scale function (#85) --- iron-remote-gui/src/iron-remote-gui.svelte | 7 ++++--- iron-svelte-client/src/lib/login/login.svelte | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte index 441bef07..02ae8097 100644 --- a/iron-remote-gui/src/iron-remote-gui.svelte +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -151,7 +151,7 @@ setViewerStyle(`${height}px`, `${width}px`, true); } - function fitResize() { + function fitResize(realSizeLimit = false) { const windowSize = getWindowSize(); const wrapperBoundingBox = wrapper.getBoundingClientRect(); @@ -161,7 +161,7 @@ let width = canvas.width; let height = canvas.height; - if (containerWidth < canvas.width || containerHeight < canvas.height) { + if (!realSizeLimit || containerWidth < canvas.width || containerHeight < canvas.height) { const ratio = Math.min(containerWidth / canvas.width, containerHeight / canvas.height); width = width * ratio; height = height * ratio; @@ -309,7 +309,8 @@ } .capturing-inputs { - border: solid rgba(0,97,166,.7) 1px; + outline: 1px solid rgba(0,97,166,.7); + outline-offset: -1px; } canvas { diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte index c9ba4ed0..55678d16 100644 --- a/iron-svelte-client/src/lib/login/login.svelte +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -29,7 +29,7 @@ toast.set({ type: 'error', - message: event.data, + message: event.data.backtrace ? event.data.backtrace() : event.data, }); } else { toast.set({ From c949f5b46cbb911e264d2e1fc30aea617e58106a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 7 Mar 2023 07:01:22 -0500 Subject: [PATCH 0131/1273] fix(graphics): harden RLE implementation (#86) Mostly added bound checks in case an invalid RLE-compressed bitmap is received. Implementation have been fuzzed for a few hours in order to find blind spots. --- .github/workflows/ci.yml | 61 ++++ fuzz/.gitignore | 3 + fuzz/Cargo.toml | 29 ++ .../fuzz_targets/pdu_decoding.rs | 13 +- fuzz/fuzz_targets/rle_decompression.rs | 20 ++ fuzz/rust-toolchain.toml | 3 + ironrdp-core/fuzz/.gitignore | 4 - ironrdp-core/fuzz/Cargo.toml | 20 -- ironrdp-core/src/connection_initiation.rs | 6 + ironrdp-core/src/rdp.rs | 2 + ironrdp-core/src/rdp/headers.rs | 8 + ironrdp-core/src/rdp/server_license.rs | 2 + .../server_license/server_license_request.rs | 3 + ironrdp-graphics/src/rle.rs | 271 ++++++++++++++---- ironrdp-graphics/tests/rle.rs | 2 +- .../src/active_session/fast_path.rs | 24 +- 16 files changed, 376 insertions(+), 95 deletions(-) create mode 100644 fuzz/.gitignore create mode 100644 fuzz/Cargo.toml rename ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs => fuzz/fuzz_targets/pdu_decoding.rs (91%) create mode 100644 fuzz/fuzz_targets/rle_decompression.rs create mode 100644 fuzz/rust-toolchain.toml delete mode 100644 ironrdp-core/fuzz/.gitignore delete mode 100644 ironrdp-core/fuzz/Cargo.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71c6be31..40eb62a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,15 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry/ + ~/.cargo/git/ + ./target/ + key: ${{ runner.os }}-${{ hashFiles('Cargo.lock') }} + - name: Check clippy run: cargo clippy --workspace -- -D warnings @@ -45,6 +54,15 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry/ + ~/.cargo/git/ + ./ffi/wasm/target/ + key: ${{ runner.os }}-wasm-${{ hashFiles('Cargo.lock') }} + - name: Prepare runner run: sudo apt install wabt @@ -69,5 +87,48 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry/ + ~/.cargo/git/ + ./target/ + key: ${{ runner.os }}-${{ hashFiles('Cargo.lock') }} + - name: Test [${{ matrix.os }}] run: cargo test --workspace + + fuzz: + name: Fuzzing + runs-on: ubuntu-20.04 + needs: formatting + + steps: + - uses: actions/checkout@v3 + + - name: Fuzz build cache + uses: actions/cache@v3 + with: + path: | + ./fuzz/target/ + ./artifacts/ + key: ${{ runner.os }}-fuzz-${{ hashFiles('./fuzz/Cargo.lock') }} + + - name: Fuzz corpus cache + uses: actions/cache@v3 + with: + path: | + ./fuzz/corpus/ + key: fuzz-corpus-cache + + - name: Prepare runner + run: | + cd ./fuzz/ + cargo install cargo-fuzz + rustup install nightly --profile=minimal + + - name: Fuzz + run: | + rustup run nightly cargo fuzz run pdu_decoding -- -max_total_time=3s + rustup run nightly cargo fuzz run rle_decompression -- -max_total_time=3s diff --git a/fuzz/.gitignore b/fuzz/.gitignore new file mode 100644 index 00000000..80e257d5 --- /dev/null +++ b/fuzz/.gitignore @@ -0,0 +1,3 @@ +/target +/artifacts +/corpus diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml new file mode 100644 index 00000000..d90b76a1 --- /dev/null +++ b/fuzz/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "ironrdp-fuzz" +version = "0.0.0" +publish = false +edition = "2021" + +[package.metadata] +cargo-fuzz = true + +[workspace] +members = ["."] + +[profile.release] +debug = 1 + +[dependencies] +ironrdp-core = { path = "../ironrdp-core" } +ironrdp-graphics = { path = "../ironrdp-graphics" } +libfuzzer-sys = "0.4" +arbitrary = { version = "1", features = ["derive"] } +bytes = "1.4.0" + +[[bin]] +name = "pdu_decoding" +path = "fuzz_targets/pdu_decoding.rs" + +[[bin]] +name = "rle_decompression" +path = "fuzz_targets/rle_decompression.rs" diff --git a/ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs b/fuzz/fuzz_targets/pdu_decoding.rs similarity index 91% rename from ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs rename to fuzz/fuzz_targets/pdu_decoding.rs index 03f9d336..f61245d6 100644 --- a/ironrdp-core/fuzz/fuzz_targets/fuzz_pdu.rs +++ b/fuzz/fuzz_targets/pdu_decoding.rs @@ -1,10 +1,8 @@ #![no_main] -#[macro_use] -extern crate libfuzzer_sys; -extern crate ironrdp; -use ironrdp::rdp::*; -use ironrdp::*; +use ironrdp_core::rdp::*; +use ironrdp_core::*; +use libfuzzer_sys::fuzz_target; fuzz_target!(|data: &[u8]| { let _ = Request::from_buffer(data); @@ -35,10 +33,7 @@ fuzz_target!(|data: &[u8]| { let _ = fast_path::FastPathHeader::from_buffer(data); let _ = fast_path::FastPathUpdatePdu::from_buffer(data); - let _ = fast_path::FastPathUpdate::from_buffer_with_code( - data, - fast_path::UpdateCode::SurfaceCommands, - ); + let _ = fast_path::FastPathUpdate::from_buffer_with_code(data, fast_path::UpdateCode::SurfaceCommands); let _ = surface_commands::SurfaceCommand::from_buffer(data); let _ = surface_commands::SurfaceBitsPdu::from_buffer(data); diff --git a/fuzz/fuzz_targets/rle_decompression.rs b/fuzz/fuzz_targets/rle_decompression.rs new file mode 100644 index 00000000..e8c7f5e7 --- /dev/null +++ b/fuzz/fuzz_targets/rle_decompression.rs @@ -0,0 +1,20 @@ +#![no_main] + +use bytes::BytesMut; +use libfuzzer_sys::fuzz_target; + +#[derive(arbitrary::Arbitrary, Debug)] +struct Input<'a> { + src: &'a [u8], + width: u8, + height: u8, +} + +fuzz_target!(|input: Input<'_>| { + let mut out = BytesMut::new(); + + let _ = ironrdp_graphics::rle::decompress_24_bpp(input.src, &mut out, input.width, input.height); + let _ = ironrdp_graphics::rle::decompress_16_bpp(input.src, &mut out, input.width, input.height); + let _ = ironrdp_graphics::rle::decompress_15_bpp(input.src, &mut out, input.width, input.height); + let _ = ironrdp_graphics::rle::decompress_8_bpp(input.src, &mut out, input.width, input.height); +}); diff --git a/fuzz/rust-toolchain.toml b/fuzz/rust-toolchain.toml new file mode 100644 index 00000000..67d9a53d --- /dev/null +++ b/fuzz/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "nightly" +profile = "minimal" diff --git a/ironrdp-core/fuzz/.gitignore b/ironrdp-core/fuzz/.gitignore deleted file mode 100644 index 572e03bd..00000000 --- a/ironrdp-core/fuzz/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ - -target -corpus -artifacts diff --git a/ironrdp-core/fuzz/Cargo.toml b/ironrdp-core/fuzz/Cargo.toml deleted file mode 100644 index ffa4076f..00000000 --- a/ironrdp-core/fuzz/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "ironrdp-fuzz" -version = "0.0.1" -authors = ["Automatically generated"] -publish = false - -[[bin]] -name = "fuzz_pdu" -path = "fuzz_targets/fuzz_pdu.rs" - -[package.metadata] -cargo-fuzz = true - -# Prevent this from interfering with workspaces -[workspace] -members = ["."] - -[dependencies] -ironrdp = { path = ".." } -libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git" } diff --git a/ironrdp-core/src/connection_initiation.rs b/ironrdp-core/src/connection_initiation.rs index c22ba309..634ae380 100644 --- a/ironrdp-core/src/connection_initiation.rs +++ b/ironrdp-core/src/connection_initiation.rs @@ -102,6 +102,8 @@ pub enum NegotiationError { ResponseFailure(FailureCode), #[error("Invalid tpkt header version")] TpktVersionError, + #[error("Not enough bytes")] + NotEnoughBytes, } impl From for io::Error { @@ -138,6 +140,10 @@ impl PduParsing for Request { read_and_check_class(&mut stream, 0)?; + if tpkt.length < TPDU_REQUEST_LENGTH { + return Err(NegotiationError::NotEnoughBytes); + } + let mut buffer = vec![0u8; tpkt.length - TPDU_REQUEST_LENGTH]; stream.read_exact(buffer.as_mut_slice())?; diff --git a/ironrdp-core/src/rdp.rs b/ironrdp-core/src/rdp.rs index 2f029e3b..35f906f4 100644 --- a/ironrdp-core/src/rdp.rs +++ b/ironrdp-core/src/rdp.rs @@ -108,6 +108,8 @@ pub enum RdpError { ServerSetErrorInfoError(#[from] ServerSetErrorInfoError), #[error("Input event PDU error")] InputEventError(#[from] InputEventError), + #[error("Not enough bytes")] + NotEnoughBytes, } impl From for io::Error { diff --git a/ironrdp-core/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs index f2729ca9..79070c8d 100644 --- a/ironrdp-core/src/rdp/headers.rs +++ b/ironrdp-core/src/rdp/headers.rs @@ -89,12 +89,18 @@ impl PduParsing for ShareControlHeader { pdu_source, share_id, }; + if pdu_type == ShareControlPduType::DataPdu { // Some windows version have an issue where PDU // there is some padding not part of the inner unit. // Consume that data let header_length = header.buffer_length(); + if header_length != total_length { + if total_length < header_length { + return Err(RdpError::NotEnoughBytes); + } + let padding = total_length - header_length; let mut data = vec![0u8; padding]; stream.read_exact(data.as_mut())?; @@ -103,6 +109,7 @@ impl PduParsing for ShareControlHeader { Ok(header) } + fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { let pdu_type_with_version = PROTOCOL_VERSION | self.share_control_pdu.share_header_type().to_u16().unwrap(); @@ -114,6 +121,7 @@ impl PduParsing for ShareControlHeader { self.share_control_pdu.to_buffer(&mut stream) } + fn buffer_length(&self) -> usize { SHARE_CONTROL_HEADER_SIZE + self.share_control_pdu.buffer_length() } diff --git a/ironrdp-core/src/rdp/server_license.rs b/ironrdp-core/src/rdp/server_license.rs index 6ee2ab21..78f409b5 100644 --- a/ironrdp-core/src/rdp/server_license.rs +++ b/ironrdp-core/src/rdp/server_license.rs @@ -228,6 +228,8 @@ pub enum ServerLicenseError { InvalidScopeCount(u32), #[error("Received invalid sertificate length: {0}")] InvalidCertificateLength(u32), + #[error("Blob too small")] + BlobTooSmall, } pub struct BlobHeader { diff --git a/ironrdp-core/src/rdp/server_license/server_license_request.rs b/ironrdp-core/src/rdp/server_license/server_license_request.rs index 2e11feb5..4092251e 100644 --- a/ironrdp-core/src/rdp/server_license/server_license_request.rs +++ b/ironrdp-core/src/rdp/server_license/server_license_request.rs @@ -231,6 +231,9 @@ impl PduParsing for Scope { fn from_buffer(mut stream: impl io::Read) -> Result { let blob_header = BlobHeader::read_from_buffer(BlobType::Scope, &mut stream)?; + if blob_header.length < UTF8_NULL_TERMINATOR_SIZE { + return Err(ServerLicenseError::BlobTooSmall); + } let mut blob_data = vec![0u8; blob_header.length]; stream.read_exact(&mut blob_data)?; blob_data.resize(blob_data.len() - UTF8_NULL_TERMINATOR_SIZE, 0); diff --git a/ironrdp-graphics/src/rle.rs b/ironrdp-graphics/src/rle.rs index f4317853..eefc1266 100644 --- a/ironrdp-graphics/src/rle.rs +++ b/ironrdp-graphics/src/rle.rs @@ -14,7 +14,13 @@ use bytes::BytesMut; use core::fmt; use std::ops::BitXor; -// TODO: error handling +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum RlePixelFormat { + Rgb24, + Rgb16, + Rgb15, + Rgb8, +} /// Decompress an RLE compressed bitmap. /// @@ -29,13 +35,13 @@ pub fn decompress( width: impl Into, height: impl Into, bpp: impl Into, -) { +) -> Result { match bpp.into() { Mode24Bpp::BPP => decompress_24_bpp(src, dst, width, height), Mode16Bpp::BPP => decompress_16_bpp(src, dst, width, height), Mode15Bpp::BPP => decompress_15_bpp(src, dst, width, height), Mode8Bpp::BPP => decompress_8_bpp(src, dst, width, height), - _ => todo!("return error"), + invalid => Err(RleError::InvalidBpp { bpp: invalid }), } } @@ -45,7 +51,12 @@ pub fn decompress( /// `dst`: destination buffer /// `width`: decompressed bitmap width /// `height`: decompressed bitmap height -pub fn decompress_24_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { +pub fn decompress_24_bpp( + src: &[u8], + dst: &mut BytesMut, + width: impl Into, + height: impl Into, +) -> Result { decompress_helper::(src, dst, width.into(), height.into()) } @@ -55,7 +66,12 @@ pub fn decompress_24_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into /// `dst`: destination buffer /// `width`: decompressed bitmap width /// `height`: decompressed bitmap height -pub fn decompress_16_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { +pub fn decompress_16_bpp( + src: &[u8], + dst: &mut BytesMut, + width: impl Into, + height: impl Into, +) -> Result { decompress_helper::(src, dst, width.into(), height.into()) } @@ -65,7 +81,12 @@ pub fn decompress_16_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into /// `dst`: destination buffer /// `width`: decompressed bitmap width /// `height`: decompressed bitmap height -pub fn decompress_15_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { +pub fn decompress_15_bpp( + src: &[u8], + dst: &mut BytesMut, + width: impl Into, + height: impl Into, +) -> Result { decompress_helper::(src, dst, width.into(), height.into()) } @@ -75,14 +96,91 @@ pub fn decompress_15_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into /// `dst`: destination buffer /// `width`: decompressed bitmap width /// `height`: decompressed bitmap height -pub fn decompress_8_bpp(src: &[u8], dst: &mut BytesMut, width: impl Into, height: impl Into) { +pub fn decompress_8_bpp( + src: &[u8], + dst: &mut BytesMut, + width: impl Into, + height: impl Into, +) -> Result { decompress_helper::(src, dst, width.into(), height.into()) } -fn decompress_helper(src: &[u8], dst: &mut BytesMut, width: usize, height: usize) { +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum RleError { + InvalidBpp { + bpp: usize, + }, + BadOrderCode, + NotEnoughBytes { + expected: usize, + actual: usize, + }, + InvalidImageSize { + maximum_additional: usize, + required_additional: usize, + }, + EmptyImage, + UnexpectedZeroLength, +} + +impl fmt::Display for RleError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + RleError::InvalidBpp { bpp } => write!(f, "invalid bytes per pixel: {bpp}"), + RleError::BadOrderCode => write!(f, "bad RLE order code"), + RleError::NotEnoughBytes { expected, actual } => { + write!(f, "not enough bytes: expected {expected} bytes, but got {actual}") + } + RleError::InvalidImageSize { + maximum_additional, + required_additional, + } => { + write!( + f, + "invalid image size advertised: output buffer can only receive at most {maximum_additional} additional bytes, but {required_additional} bytes are required" + ) + } + RleError::EmptyImage => write!(f, "height or width is zero"), + RleError::UnexpectedZeroLength => write!(f, "unexpected zero-length"), + } + } +} + +fn decompress_helper( + src: &[u8], + dst: &mut BytesMut, + width: usize, + height: usize, +) -> Result { + if width == 0 || height == 0 { + return Err(RleError::EmptyImage); + } + let row_delta = Mode::COLOR_DEPTH * width; dst.resize(row_delta * height, 0); - decompress_impl::(src, dst, row_delta); + decompress_impl::(src, dst, row_delta)?; + + Ok(Mode::PIXEL_FORMAT) +} + +macro_rules! ensure_size { + (from: $buf:ident, size: $expected:expr) => {{ + let actual = $buf.remaining_len(); + let expected = $expected; + if expected > actual { + return Err(RleError::NotEnoughBytes { expected, actual }); + } + }}; + (into: $buf:ident, size: $required_additional:expr) => {{ + let maximum_additional = $buf.remaining_len(); + let required_additional = $required_additional; + if required_additional > maximum_additional { + return Err(RleError::InvalidImageSize { + maximum_additional, + required_additional, + }); + } + }}; } /// RLE decompression implementation @@ -90,9 +188,7 @@ fn decompress_helper(src: &[u8], dst: &mut BytesMut, width: usi /// `src`: source buffer containing compressed bitmap /// `dst`: destination buffer /// `row_delta`: scanline length in bytes -fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize) { - // FIXME: some bounds checks should be inserted - +fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize) -> Result<(), RleError> { let mut src = Buf::new(src); let mut dst = BufMut::new(dst); @@ -107,16 +203,20 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize insert_fg_pel = false; } + ensure_size!(from: src, size: 1); + let header = src.read_u8(); // Extract the compression order code ID from the compression order header. let code = Code::decode(header); // Extract run length - let run_length = code.extract_run_length(header, &mut src); + let run_length = code.extract_run_length(header, &mut src)?; // Handle Background Run Orders. if code == Code::REGULAR_BG_RUN || code == Code::MEGA_MEGA_BG_RUN { + ensure_size!(into: dst, size: run_length * Mode::COLOR_DEPTH); + if is_first_line { let num_iterations = if insert_fg_pel { Mode::write_pixel(&mut dst, fg_pel); @@ -161,14 +261,20 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize { // Handle Foreground Run Orders. + ensure_size!(from: src, size: Mode::COLOR_DEPTH); + if code == Code::LITE_SET_FG_FG_RUN || code == Code::MEGA_MEGA_SET_FG_RUN { fg_pel = Mode::read_pixel(&mut src); } - for _ in 0..run_length { - if is_first_line { + ensure_size!(into: dst, size: run_length * Mode::COLOR_DEPTH); + + if is_first_line { + for _ in 0..run_length { Mode::write_pixel(&mut dst, fg_pel); - } else { + } + } else { + for _ in 0..run_length { let pixel_above = dst.read_pixel_above::(row_delta); let xored = pixel_above ^ fg_pel; Mode::write_pixel(&mut dst, xored); @@ -177,9 +283,13 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize } else if code == Code::LITE_DITHERED_RUN || code == Code::MEGA_MEGA_DITHERED_RUN { // Handle Dithered Run Orders. + ensure_size!(from: src, size: 2 * Mode::COLOR_DEPTH); + let pixel_a = Mode::read_pixel(&mut src); let pixel_b = Mode::read_pixel(&mut src); + ensure_size!(into: dst, size: run_length * 2 * Mode::COLOR_DEPTH); + for _ in 0..run_length { Mode::write_pixel(&mut dst, pixel_a); Mode::write_pixel(&mut dst, pixel_b); @@ -187,8 +297,12 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize } else if code == Code::REGULAR_COLOR_RUN || code == Code::MEGA_MEGA_COLOR_RUN { // Handle Color Run Orders. + ensure_size!(from: src, size: Mode::COLOR_DEPTH); + let pixel = Mode::read_pixel(&mut src); + ensure_size!(into: dst, size: run_length * Mode::COLOR_DEPTH); + for _ in 0..run_length { Mode::write_pixel(&mut dst, pixel); } @@ -200,6 +314,7 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize // Handle Foreground/Background Image Orders. if code == Code::LITE_SET_FG_FGBG_IMAGE || code == Code::MEGA_MEGA_SET_FGBG_IMAGE { + ensure_size!(from: src, size: Mode::COLOR_DEPTH); fg_pel = Mode::read_pixel(&mut src); } @@ -208,12 +323,13 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize while number_to_read > 0 { let c_bits = std::cmp::min(8, number_to_read); + ensure_size!(from: src, size: 1); let bitmask = src.read_u8(); if is_first_line { - write_first_line_fg_bg_image::(&mut dst, bitmask, fg_pel, c_bits); + write_first_line_fg_bg_image::(&mut dst, bitmask, fg_pel, c_bits)?; } else { - write_fg_bg_image::(&mut dst, row_delta, bitmask, fg_pel, c_bits); + write_fg_bg_image::(&mut dst, row_delta, bitmask, fg_pel, c_bits)?; } number_to_read -= c_bits; @@ -223,6 +339,9 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize let byte_count = run_length * Mode::COLOR_DEPTH; + ensure_size!(from: src, size: byte_count); + ensure_size!(into: dst, size: byte_count); + for _ in 0..byte_count { dst.write_u8(src.read_u8()); } @@ -232,9 +351,9 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize const MASK_SPECIAL_FG_BG_1: u8 = 0x03; if is_first_line { - write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_1, fg_pel, 8); + write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_1, fg_pel, 8)?; } else { - write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_1, fg_pel, 8); + write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_1, fg_pel, 8)?; } } else if code == Code::SPECIAL_FGBG_2 { // Handle Special Order 2. @@ -242,22 +361,28 @@ fn decompress_impl(src: &[u8], dst: &mut [u8], row_delta: usize const MASK_SPECIAL_FG_BG_2: u8 = 0x05; if is_first_line { - write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_2, fg_pel, 8); + write_first_line_fg_bg_image::(&mut dst, MASK_SPECIAL_FG_BG_2, fg_pel, 8)?; } else { - write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_2, fg_pel, 8); + write_fg_bg_image::(&mut dst, row_delta, MASK_SPECIAL_FG_BG_2, fg_pel, 8)?; } } else if code == Code::SPECIAL_WHITE { // Handle White Order. + ensure_size!(into: dst, size: Mode::COLOR_DEPTH); + Mode::write_pixel(&mut dst, Mode::WHITE_PIXEL); } else if code == Code::SPECIAL_BLACK { // Handle Black Order. + ensure_size!(into: dst, size: Mode::COLOR_DEPTH); + Mode::write_pixel(&mut dst, Mode::BLACK_PIXEL); } else { - todo!("return unknown order error"); + return Err(RleError::BadOrderCode); } } + + Ok(()) } #[derive(Clone, Copy, PartialEq, Eq)] @@ -338,11 +463,11 @@ impl Code { } /// Extract the run length of a compression order. - pub fn extract_run_length(self, header: u8, src: &mut Buf) -> usize { + pub fn extract_run_length(self, header: u8, src: &mut Buf) -> Result { match self { - Self::REGULAR_FGBG_IMAGE => extract_run_length_regular_fg_bg(header, src), + Self::REGULAR_FGBG_IMAGE => extract_run_length_fg_bg(header, MASK_REGULAR_RUN_LENGTH, src), - Self::LITE_SET_FG_FGBG_IMAGE => extract_run_length_lite_fg_bg(header, src), + Self::LITE_SET_FG_FGBG_IMAGE => extract_run_length_fg_bg(header, MASK_LITE_RUN_LENGTH, src), Self::REGULAR_BG_RUN | Self::REGULAR_FG_RUN | Self::REGULAR_COLOR_RUN | Self::REGULAR_COLOR_IMAGE => { extract_run_length_regular(header, src) @@ -359,9 +484,9 @@ impl Code { | Self::MEGA_MEGA_SET_FGBG_IMAGE | Self::MEGA_MEGA_COLOR_IMAGE => extract_run_length_mega_mega(src), - Self::SPECIAL_FGBG_1 | Self::SPECIAL_FGBG_2 | Self::SPECIAL_WHITE | Self::SPECIAL_BLACK => 0, + Self::SPECIAL_FGBG_1 | Self::SPECIAL_FGBG_2 | Self::SPECIAL_WHITE | Self::SPECIAL_BLACK => Ok(0), - _ => 0, + _ => Ok(0), } } } @@ -369,41 +494,50 @@ impl Code { const MASK_REGULAR_RUN_LENGTH: u8 = 0x1F; const MASK_LITE_RUN_LENGTH: u8 = 0x0F; -/// Extract the run length of a Regular-Form Foreground/Background Image Order -fn extract_run_length_regular_fg_bg(header: u8, src: &mut Buf) -> usize { - match header & MASK_REGULAR_RUN_LENGTH { - 0 => usize::from(src.read_u8()) + 1, - run_length => usize::from(run_length) * 8, - } -} - -/// Extract the run length of a Lite-Form Foreground/Background Image Order. -fn extract_run_length_lite_fg_bg(header: u8, src: &mut Buf) -> usize { - match header & MASK_LITE_RUN_LENGTH { - 0 => usize::from(src.read_u8()) + 1, - run_length => usize::from(run_length) * 8, +/// Extract the run length of a Foreground/Background Image Order. +fn extract_run_length_fg_bg(header: u8, length_mask: u8, src: &mut Buf) -> Result { + match header & length_mask { + 0 => { + ensure_size!(from: src, size: 1); + Ok(usize::from(src.read_u8()) + 1) + } + run_length => Ok(usize::from(run_length) * 8), } } /// Extract the run length of a regular-form compression order. -fn extract_run_length_regular(header: u8, src: &mut Buf) -> usize { +fn extract_run_length_regular(header: u8, src: &mut Buf) -> Result { match header & MASK_REGULAR_RUN_LENGTH { - // An extended (MEGA) run. - 0 => usize::from(src.read_u8()) + 32, - run_length => usize::from(run_length), + 0 => { + // An extended (MEGA) run. + ensure_size!(from: src, size: 1); + Ok(usize::from(src.read_u8()) + 32) + } + run_length => Ok(usize::from(run_length)), } } -fn extract_run_length_lite(header: u8, src: &mut Buf) -> usize { +fn extract_run_length_lite(header: u8, src: &mut Buf) -> Result { match header & MASK_LITE_RUN_LENGTH { - // An extended (MEGA) run. - 0 => usize::from(src.read_u8()) + 16, - run_length => usize::from(run_length), + 0 => { + // An extended (MEGA) run. + ensure_size!(from: src, size: 1); + Ok(usize::from(src.read_u8()) + 16) + } + run_length => Ok(usize::from(run_length)), } } -fn extract_run_length_mega_mega(src: &mut Buf) -> usize { - usize::from(src.read_u16()) +fn extract_run_length_mega_mega(src: &mut Buf) -> Result { + ensure_size!(from: src, size: 2); + + let run_length = usize::from(src.read_u16()); + + if run_length == 0 { + Err(RleError::UnexpectedZeroLength) + } else { + Ok(run_length) + } } struct Buf<'a> { @@ -416,6 +550,10 @@ impl<'a> Buf<'a> { Self { inner: bytes, pos: 0 } } + fn remaining_len(&self) -> usize { + self.inner.len() - self.pos + } + fn read(&mut self) -> [u8; N] { let bytes = &self.inner[self.pos..self.pos + N]; self.pos += N; @@ -457,6 +595,10 @@ impl<'a> BufMut<'a> { Self { inner: bytes, pos: 0 } } + fn remaining_len(&self) -> usize { + self.inner.len() - self.pos + } + fn write(&mut self, bytes: &[u8]) { self.inner[self.pos..self.pos + bytes.len()].copy_from_slice(bytes); self.pos += bytes.len(); @@ -493,6 +635,9 @@ trait DepthMode { /// Bits per pixel const BPP: usize; + /// Pixel format for this depth mode + const PIXEL_FORMAT: RlePixelFormat; + /// The black pixel value const BLACK_PIXEL: Self::Pixel; @@ -515,6 +660,8 @@ impl DepthMode for Mode8Bpp { const BPP: usize = 8; + const PIXEL_FORMAT: RlePixelFormat = RlePixelFormat::Rgb8; + const BLACK_PIXEL: Self::Pixel = 0x00; const WHITE_PIXEL: Self::Pixel = 0xFF; @@ -537,6 +684,8 @@ impl DepthMode for Mode15Bpp { const BPP: usize = 15; + const PIXEL_FORMAT: RlePixelFormat = RlePixelFormat::Rgb15; + const BLACK_PIXEL: Self::Pixel = 0x0000; // 5 bits per RGB component: @@ -561,6 +710,8 @@ impl DepthMode for Mode16Bpp { const BPP: usize = 16; + const PIXEL_FORMAT: RlePixelFormat = RlePixelFormat::Rgb16; + const BLACK_PIXEL: Self::Pixel = 0x0000; // 5 bits for red, 6 bits for green, 5 bits for green: @@ -585,6 +736,8 @@ impl DepthMode for Mode24Bpp { const BPP: usize = 24; + const PIXEL_FORMAT: RlePixelFormat = RlePixelFormat::Rgb24; + const BLACK_PIXEL: Self::Pixel = 0x000000; // 8 bits per RGB component: @@ -607,7 +760,9 @@ fn write_fg_bg_image( bitmask: u8, fg_pel: Mode::Pixel, mut c_bits: usize, -) { +) -> Result<(), RleError> { + ensure_size!(into: dst, size: c_bits * Mode::COLOR_DEPTH); + let mut mask = 0x01; repeat::<8>(|| { @@ -623,7 +778,9 @@ fn write_fg_bg_image( mask <<= 1; c_bits == 0 - }) + }); + + Ok(()) } /// Writes a foreground/background image to a destination buffer @@ -632,7 +789,9 @@ fn write_first_line_fg_bg_image( bitmask: u8, fg_pel: Mode::Pixel, mut c_bits: usize, -) { +) -> Result<(), RleError> { + ensure_size!(into: dst, size: c_bits * Mode::COLOR_DEPTH); + let mut mask = 0x01; repeat::<8>(|| { @@ -646,7 +805,9 @@ fn write_first_line_fg_bg_image( mask <<= 1; c_bits == 0 - }) + }); + + Ok(()) } fn repeat(mut op: impl FnMut() -> bool) { diff --git a/ironrdp-graphics/tests/rle.rs b/ironrdp-graphics/tests/rle.rs index 8595f39d..592559a3 100644 --- a/ironrdp-graphics/tests/rle.rs +++ b/ironrdp-graphics/tests/rle.rs @@ -37,7 +37,7 @@ fn decompress_bpp_16(#[case] src: &[u8]) { // IronRDP let mut ironrdp_out = bytes::BytesMut::new(); - ironrdp_graphics::rle::decompress_16_bpp(src, &mut ironrdp_out, WIDTH, HEIGHT); + ironrdp_graphics::rle::decompress_16_bpp(src, &mut ironrdp_out, WIDTH, HEIGHT).expect("ironrdp decompress"); ironrdp_out.freeze() }; diff --git a/ironrdp-session/src/active_session/fast_path.rs b/ironrdp-session/src/active_session/fast_path.rs index 57b9b7be..01576cf2 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/ironrdp-session/src/active_session/fast_path.rs @@ -8,6 +8,7 @@ use ironrdp_core::fast_path::{ use ironrdp_core::geometry::Rectangle; use ironrdp_core::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; use ironrdp_core::{PduBufferParsing, ShareDataPdu}; +use ironrdp_graphics::rle::RlePixelFormat; use num_traits::FromPrimitive; use super::codecs::rfx; @@ -85,16 +86,24 @@ impl Processor { update.bits_per_pixel ); - ironrdp_graphics::rle::decompress( + match ironrdp_graphics::rle::decompress( update.bitmap_data, &mut buf, update.width, update.height, update.bits_per_pixel, - ); + ) { + Ok(RlePixelFormat::Rgb16) => { + image.apply_rgb16_bitmap(&buf, &update.rectangle); + } - // TODO: support other pixel formats… - image.apply_rgb16_bitmap(&buf, &update.rectangle); + // TODO: support other pixel formats… + Ok(format @ (RlePixelFormat::Rgb8 | RlePixelFormat::Rgb15 | RlePixelFormat::Rgb24)) => { + warn!("Received RLE-compressed bitmap with unsupported color depth: {format:?}"); + } + + Err(e) => warn!("Invalid RLE-compressed bitmap: {e}"), + } } } else { // Uncompressed bitmap data is formatted as a bottom-up, left-to-right series of @@ -102,8 +111,11 @@ impl Processor { // four bytes (including up to three bytes of padding, as necessary). trace!("Uncompressed raw bitmap"); - // TODO: support other pixel formats… - image.apply_rgb16_bitmap(update.bitmap_data, &update.rectangle); + match update.bits_per_pixel { + 16 => image.apply_rgb16_bitmap(update.bitmap_data, &update.rectangle), + // TODO: support other pixel formats… + unsupported => warn!("Invalid raw bitmap with {unsupported} bytes per pixels"), + } } match update_rectangle { From 1f6ad789de0118ebee24451ad9c6269e7d6b89ad Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Wed, 8 Mar 2023 08:37:12 -0500 Subject: [PATCH 0132/1273] Bump version 0.4.4 (#87) --- iron-remote-gui/public/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 31e65d5f..25a8d83c 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.4.3", + "version": "0.4.4", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 4471253e6aa3469de845d38bbdd29ae8e7ecc980 Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Fri, 10 Mar 2023 16:46:24 +0200 Subject: [PATCH 0133/1273] build: bump sspi dependency to 0.7 (#88) --- ffi/wasm/Cargo.toml | 2 +- ffi/wasm/src/session.rs | 2 +- iron-tauri-client/src-tauri/Cargo.toml | 2 +- iron-tauri-client/src-tauri/src/main.rs | 4 ++-- ironrdp-cli/Cargo.toml | 2 +- ironrdp-cli/src/config.rs | 2 +- ironrdp-gui-client/Cargo.toml | 2 +- ironrdp-gui-client/src/config.rs | 2 +- ironrdp-session/Cargo.toml | 4 ++-- ironrdp-session/src/connection_sequence.rs | 2 +- ironrdp-session/src/connection_sequence/user_info.rs | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index 33967b22..c1e66e56 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -28,7 +28,7 @@ opt-level = "s" ironrdp = { path = "../../ironrdp" } ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # FIXME: secret feature until session state machine is done ironrdp-input = { path = "../../ironrdp-input" } -sspi = "0.6" +sspi = "0.7" # Wasm wasm-bindgen = "0.2.83" diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index 0ab646fb..d7c39177 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -273,7 +273,7 @@ fn build_input_config(username: String, password: String, domain: Option InputConfig { credentials: AuthIdentity { username, - password, + password: password.into(), domain, }, security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml index af151fd7..1f25b102 100644 --- a/iron-tauri-client/src-tauri/Cargo.toml +++ b/iron-tauri-client/src-tauri/Cargo.toml @@ -21,7 +21,7 @@ custom-protocol = [ "tauri/custom-protocol" ] # Protocol ironrdp = { path = "../../ironrdp" } -sspi = { version = "0.6", features = ["network_client"] } +sspi = { version = "0.7", features = ["network_client"] } serde = { version = "1.0", features = ["derive"] } # SSL diff --git a/iron-tauri-client/src-tauri/src/main.rs b/iron-tauri-client/src-tauri/src/main.rs index a8597ffd..37ce323d 100644 --- a/iron-tauri-client/src-tauri/src/main.rs +++ b/iron-tauri-client/src-tauri/src/main.rs @@ -239,7 +239,7 @@ async fn connect( let tcp_stream = TcpStream::connect(addr.sock) .await - .map_err(RdpError::ConnectionError) + .map_err(RdpError::Connection) .map_err(|e| e.to_string())?; let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( @@ -289,7 +289,7 @@ fn build_input_config(username: String, password: String, domain: Option InputConfig { credentials: AuthIdentity { username, - password, + password: password.into(), domain, }, security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, diff --git a/ironrdp-cli/Cargo.toml b/ironrdp-cli/Cargo.toml index 38d1e5ac..bf0c2be3 100644 --- a/ironrdp-cli/Cargo.toml +++ b/ironrdp-cli/Cargo.toml @@ -18,7 +18,7 @@ native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] # Protocol ironrdp = { path = "../ironrdp" } -sspi = { version = "0.6", features = ["network_client"] } # TODO: enable dns_resolver at some point +sspi = { version = "0.7", features = ["network_client"] } # TODO: enable dns_resolver at some point # CLI clap = { version = "4.0", features = ["derive", "cargo"] } diff --git a/ironrdp-cli/src/config.rs b/ironrdp-cli/src/config.rs index d679269f..12af56f9 100644 --- a/ironrdp-cli/src/config.rs +++ b/ironrdp-cli/src/config.rs @@ -155,7 +155,7 @@ impl Config { let input = InputConfig { credentials: AuthIdentity { username: args.username, - password: args.password, + password: args.password.into(), domain: args.domain, }, security_protocol: SecurityProtocol::parse(args.security_protocol), diff --git a/ironrdp-gui-client/Cargo.toml b/ironrdp-gui-client/Cargo.toml index ef960ae3..d50a9004 100644 --- a/ironrdp-gui-client/Cargo.toml +++ b/ironrdp-gui-client/Cargo.toml @@ -18,7 +18,7 @@ native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] # Protocol ironrdp = { path = "../ironrdp" } -sspi = { version = "0.6", features = ["network_client"] } +sspi = { version = "0.7", features = ["network_client"] } # CLI clap = { version = "4.0", features = ["derive", "cargo"] } diff --git a/ironrdp-gui-client/src/config.rs b/ironrdp-gui-client/src/config.rs index 158d00f5..f879ac25 100644 --- a/ironrdp-gui-client/src/config.rs +++ b/ironrdp-gui-client/src/config.rs @@ -160,7 +160,7 @@ impl Config { let input = InputConfig { credentials: AuthIdentity { username: args.username, - password: args.password, + password: args.password.into(), domain: args.domain, }, security_protocol: SecurityProtocol::parse(args.security_protocol), diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index 63558668..d15ace48 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -18,7 +18,7 @@ dgw_ext = [] ironrdp-core = { path = "../ironrdp-core" } ironrdp-graphics = { path = "../ironrdp-graphics" } ironrdp-devolutions-gateway = { path = "../ironrdp-devolutions-gateway" } # FIXME: Quick and dirty approach, this should not be here -sspi = "0.6" +sspi = "0.7" bytes = "1" log = "0.4" whoami = "1" @@ -33,5 +33,5 @@ futures-util = "0.3" thiserror = "1.0.37" rand_core = "0.6.4" x509-cert = "0.1.0" # TODO: consider removing dependency on this one in `ironrdp-session` -async-native-tls = { version = "0.4", default-features = false, optional = true } +async-native-tls = { version = "0.4", features = ["runtime-tokio"], default-features = false, optional = true } tokio-rustls = { version = "0.23", default-features = false, optional = true } diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 0c1fa4d8..60cddae8 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -366,7 +366,7 @@ pub async fn process_cred_ssp( credentials, credssp::CredSspMode::WithCredentials, credssp::ClientMode::Negotiate(NegotiateConfig { - protocol_config: Box::new(NtlmConfig), + protocol_config: Box::::default(), package_list: None, hostname: addr.to_owned(), network_client_factory, diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/ironrdp-session/src/connection_sequence/user_info.rs index ce8635fd..24109dc8 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/ironrdp-session/src/connection_sequence/user_info.rs @@ -326,7 +326,7 @@ fn create_bitmap_codes_capability_set() -> CapabilitySet { fn auth_identity_to_credentials(auth_identity: sspi::AuthIdentity) -> Credentials { Credentials { username: auth_identity.username, - password: auth_identity.password, + password: auth_identity.password.as_ref().clone(), domain: auth_identity.domain, } } From 6d376a115fea1227f083f10e900d2ae32c5acccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 10 Mar 2023 10:32:02 -0500 Subject: [PATCH 0134/1273] fix(core): bad compression flags and type decoding --- ironrdp-core/Cargo.toml | 1 + ironrdp-core/src/basic_output/fast_path.rs | 24 ++++++++++++---------- ironrdp-core/src/rdp.rs | 2 +- ironrdp-core/src/rdp/headers.rs | 10 +++++---- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/ironrdp-core/Cargo.toml b/ironrdp-core/Cargo.toml index b39b2934..f2dd465d 100644 --- a/ironrdp-core/Cargo.toml +++ b/ironrdp-core/Cargo.toml @@ -25,3 +25,4 @@ num-traits = "0.2.15" sha1 = "0.10.5" x509-parser = "0.14" tap = "1.0.1" +log = "0.4" diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/ironrdp-core/src/basic_output/fast_path.rs index d97f0f96..8e7a4789 100644 --- a/ironrdp-core/src/basic_output/fast_path.rs +++ b/ironrdp-core/src/basic_output/fast_path.rs @@ -12,7 +12,7 @@ use thiserror::Error; use super::bitmap::{BitmapError, BitmapUpdateData}; use super::surface_commands::{SurfaceCommand, SurfaceCommandsError, SURFACE_COMMAND_HEADER_SIZE}; -use crate::rdp::{CompressionFlags, CompressionType, SHARE_DATA_HEADER_MASK}; +use crate::rdp::{CompressionFlags, CompressionType, SHARE_DATA_HEADER_COMPRESSION_MASK}; use crate::utils::SplitTo; use crate::{per, PduBufferParsing, PduParsing}; @@ -107,18 +107,20 @@ impl<'a> PduBufferParsing<'a> for FastPathUpdatePdu<'a> { let fragmentation = Fragmentation::from_u8(fragmentation).ok_or(FastPathError::InvalidFragmentation(fragmentation))?; - let (compression_flags, compression_type) = - if Compression::from_bits_truncate(header.get_bits(6..8)).contains(Compression::COMPRESSION_USED) { - let compression_flags_with_type = buffer.read_u8()?; - let compression_flags = - CompressionFlags::from_bits_truncate(compression_flags_with_type & SHARE_DATA_HEADER_MASK); - let compression_type = CompressionType::from_u8(compression_flags_with_type & !SHARE_DATA_HEADER_MASK) + let (compression_flags, compression_type) = if Compression::from_bits_truncate(header.get_bits(6..8)) + .contains(Compression::COMPRESSION_USED) + { + let compression_flags_with_type = buffer.read_u8()?; + let compression_flags = + CompressionFlags::from_bits_truncate(compression_flags_with_type & !SHARE_DATA_HEADER_COMPRESSION_MASK); + let compression_type = + CompressionType::from_u8(compression_flags_with_type & SHARE_DATA_HEADER_COMPRESSION_MASK) .ok_or_else(|| FastPathError::InvalidShareDataHeader(String::from("Invalid compression type")))?; - (Some(compression_flags), Some(compression_type)) - } else { - (None, None) - }; + (Some(compression_flags), Some(compression_type)) + } else { + (None, None) + }; let data_length = usize::from(buffer.read_u16::()?); if buffer.len() < data_length { diff --git a/ironrdp-core/src/rdp.rs b/ironrdp-core/src/rdp.rs index 35f906f4..828b5f49 100644 --- a/ironrdp-core/src/rdp.rs +++ b/ironrdp-core/src/rdp.rs @@ -35,7 +35,7 @@ pub use self::finalization_messages::{ pub use self::headers::{ BasicSecurityHeader, BasicSecurityHeaderFlags, CompressionFlags, ShareControlHeader, ShareControlPdu, ShareControlPduType, ShareDataHeader, ShareDataPdu, ShareDataPduType, StreamPriority, BASIC_SECURITY_HEADER_SIZE, - SHARE_DATA_HEADER_MASK, + SHARE_DATA_HEADER_COMPRESSION_MASK, }; pub use self::server_error_info::{ ErrorInfo, ProtocolIndependentCode, ProtocolIndependentConnectionBrokerCode, ProtocolIndependentLicensingCode, diff --git a/ironrdp-core/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs index 79070c8d..fe0c7f63 100644 --- a/ironrdp-core/src/rdp/headers.rs +++ b/ironrdp-core/src/rdp/headers.rs @@ -16,8 +16,8 @@ use crate::rdp::session_info::SaveSessionInfoPdu; use crate::PduParsing; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; -pub const SHARE_DATA_HEADER_MASK: u8 = 0xf; -const SHARE_CONTROL_HEADER_MASK: u16 = 0xf; +pub const SHARE_DATA_HEADER_COMPRESSION_MASK: u8 = 0xF; +const SHARE_CONTROL_HEADER_MASK: u16 = 0xF; const SHARE_CONTROL_HEADER_SIZE: usize = 2 * 3 + 4; const PROTOCOL_VERSION: u16 = 0x10; @@ -200,10 +200,12 @@ impl PduParsing for ShareDataHeader { .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid pdu type")))?; let compression_flags_with_type = stream.read_u8()?; + log::info!("{compression_flags_with_type:02X}"); + let compression_flags = - CompressionFlags::from_bits_truncate(compression_flags_with_type & SHARE_DATA_HEADER_MASK); + CompressionFlags::from_bits_truncate(compression_flags_with_type & !SHARE_DATA_HEADER_COMPRESSION_MASK); let compression_type = - client_info::CompressionType::from_u8(compression_flags_with_type & !SHARE_DATA_HEADER_MASK) + client_info::CompressionType::from_u8(compression_flags_with_type & SHARE_DATA_HEADER_COMPRESSION_MASK) .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid compression type")))?; let _compressed_length = stream.read_u16::()?; From 0f3849999fcd38a82f490737fd8946bfdb26a290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 10 Mar 2023 10:34:55 -0500 Subject: [PATCH 0135/1273] chore(iron-remote-gui): bump version (0.4.5) --- iron-remote-gui/public/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 25a8d83c..39bba795 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -1,4 +1,4 @@ -{ +{ "name": "@devolutions/iron-remote-gui", "author": "Nicolas Girot", "email": "ngirot@devolutions.net", @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.4.4", + "version": "0.4.5", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 89e791c727d3086c3fb65b51e7b4701423d3cac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Mar 2023 11:19:05 -0500 Subject: [PATCH 0136/1273] fix(core): remove info log forgotten previously (#90) --- ironrdp-core/Cargo.toml | 1 - ironrdp-core/src/rdp/headers.rs | 2 -- 2 files changed, 3 deletions(-) diff --git a/ironrdp-core/Cargo.toml b/ironrdp-core/Cargo.toml index f2dd465d..b39b2934 100644 --- a/ironrdp-core/Cargo.toml +++ b/ironrdp-core/Cargo.toml @@ -25,4 +25,3 @@ num-traits = "0.2.15" sha1 = "0.10.5" x509-parser = "0.14" tap = "1.0.1" -log = "0.4" diff --git a/ironrdp-core/src/rdp/headers.rs b/ironrdp-core/src/rdp/headers.rs index fe0c7f63..7e1020ed 100644 --- a/ironrdp-core/src/rdp/headers.rs +++ b/ironrdp-core/src/rdp/headers.rs @@ -200,8 +200,6 @@ impl PduParsing for ShareDataHeader { .ok_or_else(|| RdpError::InvalidShareDataHeader(String::from("Invalid pdu type")))?; let compression_flags_with_type = stream.read_u8()?; - log::info!("{compression_flags_with_type:02X}"); - let compression_flags = CompressionFlags::from_bits_truncate(compression_flags_with_type & !SHARE_DATA_HEADER_COMPRESSION_MASK); let compression_type = From 7d3796710624005c689439b29f4cac3c32e6affa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 10 Mar 2023 12:31:08 -0500 Subject: [PATCH 0137/1273] build: update Rust toolchain to 1.68.0 --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b42ddcf0..b2cf8c5f 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.67.0" +channel = "1.68.0" components = ["rustfmt", "clippy"] From 85b07450ae711d22e718fa90645831a59eff35f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 10 Mar 2023 12:31:29 -0500 Subject: [PATCH 0138/1273] ci: use azure account storage to store fuzzing corpus --- .github/workflows/ci.yml | 52 +- .gitignore | 7 +- Cargo.lock | 4666 ++++++++++++++++++++++++ ffi/wasm/.gitignore | 7 +- ffi/wasm/Cargo.lock | 2117 +++++++++++ fuzz/Cargo.lock | 569 +++ iron-tauri-client/src-tauri/.gitignore | 1 + 7 files changed, 7399 insertions(+), 20 deletions(-) create mode 100644 Cargo.lock create mode 100644 ffi/wasm/Cargo.lock create mode 100644 fuzz/Cargo.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40eb62a8..6eb3c40c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,9 @@ on: types: [ opened, synchronize, reopened ] workflow_dispatch: +env: + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + jobs: formatting: name: Check formatting @@ -41,7 +44,7 @@ jobs: ~/.cargo/registry/ ~/.cargo/git/ ./target/ - key: ${{ runner.os }}-${{ hashFiles('Cargo.lock') }} + key: ${{ runner.os }}-lints-${{ hashFiles('Cargo.lock') }} - name: Check clippy run: cargo clippy --workspace -- -D warnings @@ -61,7 +64,7 @@ jobs: ~/.cargo/registry/ ~/.cargo/git/ ./ffi/wasm/target/ - key: ${{ runner.os }}-wasm-${{ hashFiles('Cargo.lock') }} + key: ${{ runner.os }}-wasm-${{ hashFiles('ffi/wasm/Cargo.lock') }} - name: Prepare runner run: sudo apt install wabt @@ -94,7 +97,7 @@ jobs: ~/.cargo/registry/ ~/.cargo/git/ ./target/ - key: ${{ runner.os }}-${{ hashFiles('Cargo.lock') }} + key: ${{ runner.os }}-tests-${{ hashFiles('Cargo.lock') }} - name: Test [${{ matrix.os }}] run: cargo test --workspace @@ -103,6 +106,8 @@ jobs: name: Fuzzing runs-on: ubuntu-20.04 needs: formatting + env: + AZURE_STORAGE_KEY: ${{ secrets.CORPUS_AZURE_STORAGE_KEY }} steps: - uses: actions/checkout@v3 @@ -111,24 +116,45 @@ jobs: uses: actions/cache@v3 with: path: | + ~/.cargo/registry/ + ~/.cargo/git/ + ~/.cargo/bin/ ./fuzz/target/ - ./artifacts/ - key: ${{ runner.os }}-fuzz-${{ hashFiles('./fuzz/Cargo.lock') }} + key: ${{ runner.os }}-fuzz-${{ hashFiles('fuzz/Cargo.lock') }} - - name: Fuzz corpus cache + - name: Fuzz subcommand installation cache uses: actions/cache@v3 with: - path: | - ./fuzz/corpus/ - key: fuzz-corpus-cache + path: ~/.cargo/bin/cargo-fuzz + key: ${{ runner.os }}-binary-cargo-fuzz - name: Prepare runner + shell: pwsh run: | - cd ./fuzz/ - cargo install cargo-fuzz + if (-Not (Test-Path -Path ~/.cargo/bin/cargo-fuzz -PathType Leaf)) { + # Installed in debug because it's faster to compile and we don't need execution speed anyway + cargo +stable install --debug --locked cargo-fuzz + } + rustup install nightly --profile=minimal + Set-Location -Path ./fuzz/ + + - name: Download fuzzing corpus + run: | + az storage blob download-batch --account-name fuzzingcorpus --source ironrdp --destination fuzz --output none + - name: Fuzz run: | - rustup run nightly cargo fuzz run pdu_decoding -- -max_total_time=3s - rustup run nightly cargo fuzz run rle_decompression -- -max_total_time=3s + rustup run nightly cargo fuzz run pdu_decoding -- -max_total_time=5s + rustup run nightly cargo fuzz run rle_decompression -- -max_total_time=5s + + - name: Minimize corpus + run: | + rustup run nightly cargo fuzz cmin pdu_decoding + rustup run nightly cargo fuzz cmin rle_decompression + + - name: Upload fuzzing corpus + run: | + az storage blob sync --account-name fuzzingcorpus --container ironrdp --source fuzz/corpus --destination corpus --delete-destination true --output none + az storage blob sync --account-name fuzzingcorpus --container ironrdp --source fuzz/artifacts --destination artifacts --delete-destination true --output none diff --git a/.gitignore b/.gitignore index 29948552..0f32155f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ -Cargo.lock -target/ +/target *.log # Editor/IDE files *~ -tags -.idea/ \ No newline at end of file +/tags +/.idea \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..48f8d25f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4666 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +dependencies = [ + "cfg-if 1.0.0", + "cipher", + "cpufeatures", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "asn1-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom 7.1.1", + "num-traits", + "rusticata-macros 4.1.0", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "async-dnssd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98efc05996cc8d660e88841fcffb75aa71be5339c9ae559a8c8016c048420b82" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-util", + "libc", + "log", + "pin-utils", + "pkg-config", + "tokio", + "winapi", +] + +[[package]] +name = "async-native-tls" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" +dependencies = [ + "native-tls", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64ct" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding 0.1.5", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.6", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array 0.14.6", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "block-padding" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" +dependencies = [ + "generic-array 0.14.6", +] + +[[package]] +name = "bufstream" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "bytemuck" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "calloop" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19457a0da465234abd76134a5c2a910c14bd3c5558463e4396ab9a37a328e465" +dependencies = [ + "log", + "nix 0.25.1", + "slotmap", + "thiserror", + "vec_map", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "chrono" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0acbd8d28a0a60d7108d7ae850af6ba34cf2d1257fc646980e5f97ce14275966" +dependencies = [ + "bitflags", + "clap_derive", + "clap_lex", + "is-terminal", + "once_cell", + "strsim", + "termcolor", +] + +[[package]] +name = "clap_derive" +version = "4.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "clap_lex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "cmake" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +dependencies = [ + "cc", +] + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types 0.3.2", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation", + "core-graphics-types", + "foreign-types 0.3.2", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "const-oid" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types 0.3.2", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types 0.3.2", + "libc", +] + +[[package]] +name = "core-text" +version = "19.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" +dependencies = [ + "core-foundation", + "core-graphics", + "foreign-types 0.3.2", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset 0.7.1", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossfont" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21fd3add36ea31aba1520aa5288714dd63be506106753226d0eb387a93bc9c45" +dependencies = [ + "cocoa", + "core-foundation", + "core-foundation-sys", + "core-graphics", + "core-text", + "dwrote", + "foreign-types 0.5.0", + "freetype-rs", + "libc", + "log", + "objc", + "once_cell", + "pkg-config", + "servo-fontconfig", + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d88231face754cdb045c1b65912a0f4ff78ca24bf371e30a4a8cfa993b3897" +dependencies = [ + "crypto-common", +] + +[[package]] +name = "crypto-bigint" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" +dependencies = [ + "generic-array 0.14.6", + "subtle 2.4.1", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.6", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +dependencies = [ + "generic-array 0.12.4", + "subtle 1.0.0", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array 0.14.6", + "subtle 2.4.1", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "cxx" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2 1.0.47", + "quote 1.0.21", + "scratch", + "syn 1.0.104", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2 1.0.47", + "quote 1.0.21", + "strsim", + "syn 1.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid 0.7.1", + "crypto-bigint", + "pem-rfc7468", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid 0.9.1", + "der_derive", + "flagset", +] + +[[package]] +name = "der-parser" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51f64dcdf1cdc550d21d73dc959726c7dbeeab4a01481d08084a7736956464e" +dependencies = [ + "nom 5.1.2", + "num-bigint 0.2.6", + "rusticata-macros 2.1.0", +] + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom 7.1.1", + "num-bigint 0.4.3", + "num-traits", + "rusticata-macros 4.1.0", +] + +[[package]] +name = "der_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ef71ddb5b3a1f53dee24817c8f70dfa1cb29e804c18d88c228d4bc9c86ee3b9" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "des" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +dependencies = [ + "cipher", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.6", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer 0.10.3", + "crypto-common", + "subtle 2.4.1", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "dwrote" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +dependencies = [ + "lazy_static", + "libc", + "serde", + "serde_derive", + "winapi", + "wio", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "exitcode" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193" + +[[package]] +name = "expat-sys" +version = "2.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" +dependencies = [ + "cmake", + "pkg-config", +] + +[[package]] +name = "exr" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "smallvec", + "threadpool", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fern" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdd7b0849075e79ee9a1836df22c717d1eba30451796fdc631b04565dd11e2a" +dependencies = [ + "log", +] + +[[package]] +name = "flagset" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda653ca797810c02f7ca4b804b40b8b95ae046eb989d356bce17919a8c25499" + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin 0.9.4", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "freetype-rs" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" +dependencies = [ + "bitflags", + "freetype-sys", + "libc", +] + +[[package]] +name = "freetype-sys" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" +dependencies = [ + "cmake", + "libc", + "pkg-config", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444c9ad294fdcaf20ccf6726b78f380b5450275540c9b68ab62f49726ad1c713" +dependencies = [ + "cgl", + "cocoa", + "core-foundation", + "glutin_egl_sys", + "glutin_gles2_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "log", + "objc", + "once_cell", + "osmesa-sys", + "parking_lot", + "raw-window-handle 0.5.0", + "wayland-client", + "wayland-egl", + "winapi", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68900f84b471f31ea1d1355567eb865a2cf446294f06cef8d653ed7bcf5f013d" +dependencies = [ + "gl_generator", + "winapi", +] + +[[package]] +name = "glutin_gles2_sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" +dependencies = [ + "gl_generator", + "objc", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93d0575865098580c5b3a423188cd959419912ea60b1e48e8b3b526f6d02468" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "h2" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" + +[[package]] +name = "hmac" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +dependencies = [ + "crypto-mac 0.7.0", + "digest 0.8.1", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac 0.11.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.6", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d" +dependencies = [ + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding 0.3.2", + "generic-array 0.14.6", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +dependencies = [ + "libc", + "windows-sys 0.42.0", +] + +[[package]] +name = "ipnet" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" + +[[package]] +name = "ironrdp" +version = "0.4.2" +dependencies = [ + "ironrdp-core", + "ironrdp-graphics", + "ironrdp-input", + "ironrdp-session", +] + +[[package]] +name = "ironrdp-cli" +version = "0.4.2" +dependencies = [ + "anyhow", + "async-native-tls", + "chrono", + "clap", + "exitcode", + "fern", + "futures-util", + "image", + "ironrdp", + "log", + "sspi", + "tokio", + "tokio-rustls", + "tokio-util", + "whoami", + "x509-parser 0.14.0", +] + +[[package]] +name = "ironrdp-core" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "byteorder", + "der-parser 8.1.0", + "lazy_static", + "log", + "md-5 0.10.5", + "num-bigint 0.4.3", + "num-derive 0.3.3", + "num-integer", + "num-traits", + "sha1", + "tap", + "thiserror", + "x509-parser 0.14.0", +] + +[[package]] +name = "ironrdp-devolutions-gateway" +version = "0.1.0" +dependencies = [ + "bytes", + "der 0.6.1", + "hex", + "pretty_assertions", + "rstest 0.15.0", +] + +[[package]] +name = "ironrdp-graphics" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "bitvec", + "byteorder", + "bytes", + "hex-literal", + "ironrdp-core", + "lazy_static", + "num-derive 0.3.3", + "num-traits", + "proptest", + "rdp-rs", + "rstest 0.16.0", + "thiserror", +] + +[[package]] +name = "ironrdp-gui-client" +version = "0.4.2" +dependencies = [ + "async-native-tls", + "chrono", + "clap", + "exitcode", + "fern", + "futures-util", + "glutin", + "image", + "ironrdp", + "ironrdp-renderer", + "log", + "sspi", + "tokio", + "tokio-rustls", + "tokio-util", + "x509-parser 0.14.0", +] + +[[package]] +name = "ironrdp-input" +version = "0.1.0" +dependencies = [ + "anyhow", + "bitvec", + "ironrdp-core", + "proptest", + "rstest 0.16.0", + "smallvec", +] + +[[package]] +name = "ironrdp-renderer" +version = "0.1.0" +dependencies = [ + "glow", + "glutin", + "ironrdp", + "log", + "openh264", + "thiserror", +] + +[[package]] +name = "ironrdp-replay-client" +version = "0.4.2" +dependencies = [ + "clap", + "glutin", + "ironrdp", + "ironrdp-renderer", + "log", + "simplelog", +] + +[[package]] +name = "ironrdp-session" +version = "0.1.0" +dependencies = [ + "async-native-tls", + "bit_field", + "bitflags", + "byteorder", + "bytes", + "futures-util", + "ironrdp-core", + "ironrdp-devolutions-gateway", + "ironrdp-graphics", + "lazy_static", + "log", + "num-derive 0.3.3", + "num-traits", + "rand_core 0.6.4", + "semver", + "sspi", + "thiserror", + "tokio-rustls", + "whoami", + "x509-cert", +] + +[[package]] +name = "ironrdp-session-async" +version = "0.1.0" +dependencies = [ + "bit_field", + "byteorder", + "bytes", + "futures-util", + "ironrdp-core", + "ironrdp-graphics", + "num-traits", +] + +[[package]] +name = "ironrdp-tls" +version = "0.1.0" + +[[package]] +name = "is-terminal" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae5bc6e2eb41c9def29a3e0f1306382807764b9b53112030eff57435667352d" +dependencies = [ + "hermit-abi 0.2.6", + "io-lifetimes", + "rustix", + "windows-sys 0.42.0", +] + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "lexical-core" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +dependencies = [ + "arrayvec", + "bitflags", + "cfg-if 1.0.0", + "ryu", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" + +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "md-5" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18af3dcaf2b0219366cdb4e2af65a6101457b415c3d1a5c71dd9c2b7c77b9c8" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "opaque-debug 0.2.3", +] + +[[package]] +name = "md-5" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.6", +] + +[[package]] +name = "md4" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4030c65cf2aab7ada769cae7d1e7159f8d034d6ded4f39afba037f094bfd9a1" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "md4" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd1a7931601ee6a560262a1dc9a8369949f5b7ae20b2bbf029c74fbd6d1b09e2" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memmap2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.42.0", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "nasm-rs" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce095842aee9aa3ecbda7a5d2a4df680375fd128a8596b6b56f8e497e231f483" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum 0.5.7", + "raw-window-handle 0.5.0", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" +dependencies = [ + "libc", + "log", + "ndk", + "ndk-context", + "ndk-macro", + "ndk-sys", + "once_cell", + "parking_lot", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate 1.2.1", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "ndk-sys" +version = "0.4.1+23.1.7779620" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +dependencies = [ + "autocfg", + "bitflags", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "lexical-core", + "memchr", + "version_check", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "serde", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +dependencies = [ + "hermit-abi 0.1.19", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive 0.4.3", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive 0.5.7", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate 1.2.1", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "oid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2" +dependencies = [ + "serde", +] + +[[package]] +name = "oid-registry" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d4bda43fd1b844cbc6e6e54b5444e2b1bc7838bce59ad205902cccbb26d6761" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openh264" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f435bf69d12c662493235cd8348f0f4bcf1044844dd63636ce5a258c73f47e8" +dependencies = [ + "openh264-sys2", +] + +[[package]] +name = "openh264-sys2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b4dbf4c810df4cab1b8dcf249f24bf6aa0f150768ceae9b4bb87bb346ffd99" +dependencies = [ + "cc", + "nasm-rs", + "walkdir", +] + +[[package]] +name = "openssl" +version = "0.10.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020433887e44c27ff16365eaa2d380547a94544ad509aff6eb5b6e3e0b27b376" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07d5c8cb6e57b3a3612064d7b18b117912b4ce70955c2504d4b741c9e244b132" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" + +[[package]] +name = "osmesa-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" +dependencies = [ + "shared_library", +] + +[[package]] +name = "output_vt100" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" +dependencies = [ + "winapi", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.42.0", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle 2.4.1", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.6", + "hmac 0.12.1", + "password-hash", + "sha-1", + "sha2 0.10.6", +] + +[[package]] +name = "pem-rfc7468" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01de5d978f34aa4b2296576379fcc416034702fd94117c56ffd8a1a767cefb30" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "picky" +version = "7.0.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c80faad111028a7dc724b220316209af32d3db6b4a3251d2b8b94277d2af5c" +dependencies = [ + "base64 0.13.1", + "digest 0.10.6", + "md-5 0.10.5", + "num-bigint-dig", + "oid", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "rand 0.8.5", + "rsa", + "serde", + "sha-1", + "sha2 0.10.6", + "sha3", + "thiserror", +] + +[[package]] +name = "picky-asn1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47530ada7dc2327eba0200cfbdbb8d7f7751856bef43a01c20afa9bd00f54c76" +dependencies = [ + "chrono", + "oid", + "serde", + "serde_bytes", + "zeroize", +] + +[[package]] +name = "picky-asn1-der" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47267a46f4ea246b772381970b8ed3f15963dd3e15ffc2c3f4ac3bc2d77384b" +dependencies = [ + "picky-asn1", + "serde", + "serde_bytes", +] + +[[package]] +name = "picky-asn1-x509" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb51541f90aa99f2fa7191c8daebc224d500cd5963c6ca3e6cede9645a1b2e1" +dependencies = [ + "base64 0.13.1", + "num-bigint-dig", + "oid", + "picky-asn1", + "picky-asn1-der", + "serde", + "widestring", + "zeroize", +] + +[[package]] +name = "picky-krb" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ce6e874e53f3a7375000c959adebeee4f419f1340280cfd59fb8962bfe6edf" +dependencies = [ + "aes", + "byteorder", + "cbc", + "crypto", + "des", + "hmac 0.12.1", + "num-bigint-dig", + "oid", + "pbkdf2", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "rand 0.8.5", + "serde", + "sha1", + "thiserror", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs1" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78f66c04ccc83dd4486fd46c33896f4e17b24a7a3a6400dedc48ed0ddd72320" +dependencies = [ + "der 0.5.1", + "pkcs8", + "zeroize", +] + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der 0.5.1", + "spki 0.5.4", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty_assertions" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +dependencies = [ + "ctor", + "diff", + "output_vt100", + "yansi", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f1b898011ce9595050a68e60f90bad083ff2987a695a42357134c8381fba70" +dependencies = [ + "bit-set", + "bitflags", + "byteorder", + "lazy_static", + "num-traits", + "quick-error 2.0.1", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2 1.0.47", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + +[[package]] +name = "rayon" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" +dependencies = [ + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rdp-rs" +version = "0.1.0" +source = "git+https://github.com/citronneur/rdp-rs?rev=7ac880d7efb7f05efef3c84476f7c24f4053e0ea#7ac880d7efb7f05efef3c84476f7c24f4053e0ea" +dependencies = [ + "bufstream", + "byteorder", + "hmac 0.7.1", + "indexmap", + "md-5 0.8.0", + "md4 0.8.0", + "native-tls", + "num-bigint 0.2.6", + "num_enum 0.4.3", + "rand 0.7.3", + "x509-parser 0.6.5", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" +dependencies = [ + "base64 0.13.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rsa" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf22754c49613d2b3b119f0e5d46e34a2c628a937e3024b8762de4e7d8c710b" +dependencies = [ + "byteorder", + "digest 0.10.6", + "num-bigint-dig", + "num-integer", + "num-iter", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "smallvec", + "subtle 2.4.1", + "zeroize", +] + +[[package]] +name = "rstest" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c9dc66cc29792b663ffb5269be669f1613664e69ad56441fdb895c2347b930" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros 0.14.0", + "rustc_version", +] + +[[package]] +name = "rstest" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f2d176c472198ec1e6551dc7da28f1c089652f66a7b722676c2238ebc0edf" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros 0.16.0", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5015e68a0685a95ade3eee617ff7101ab6a3fc689203101ca16ebc16f2b89c66" +dependencies = [ + "cfg-if 1.0.0", + "proc-macro2 1.0.47", + "quote 1.0.21", + "rustc_version", + "syn 1.0.104", +] + +[[package]] +name = "rstest_macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7229b505ae0706e64f37ffc54a9c163e11022a6636d58fe1f3f52018257ff9f7" +dependencies = [ + "cfg-if 1.0.0", + "proc-macro2 1.0.47", + "quote 1.0.21", + "rustc_version", + "syn 1.0.104", + "unicode-ident", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a9050636e8a1b487ba1fbe99114021cd7594dde3ce6ed95bfc1691e5b5367b" +dependencies = [ + "nom 5.1.2", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom 7.1.1", +] + +[[package]] +name = "rustix" +version = "0.36.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b1fbb4dfc4eb1d390c02df47760bb19a84bb80b301ecc947ab5406394d8223e" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.42.0", +] + +[[package]] +name = "rustls" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error 1.2.3", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "safe_arch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys 0.36.1", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sctk-adwaita" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" +dependencies = [ + "crossfont", + "log", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cdd151213925e7f1ab45a9bbfb129316bd00799784b174b7cc7bcd16961c49e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc80d722935453bcafdc2c9a73cd6fac4dc1938f0346035d84bf99fa9e33217" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "servo-fontconfig" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e3e22fe5fd73d04ebf0daa049d3efe3eae55369ce38ab16d07ddd9ac5c217c" +dependencies = [ + "libc", + "servo-fontconfig-sys", +] + +[[package]] +name = "servo-fontconfig-sys" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36b879db9892dfa40f95da1c38a835d41634b825fbd8c4c418093d53c24b388" +dependencies = [ + "expat-sys", + "freetype-sys", + "pkg-config", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha3" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +dependencies = [ + "digest 0.10.6", + "keccak", +] + +[[package]] +name = "shared_library" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +dependencies = [ + "lazy_static", + "libc", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "simplelog" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786" +dependencies = [ + "log", + "termcolor", + "time 0.3.17", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smithay-client-toolkit" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +dependencies = [ + "bitflags", + "calloop", + "dlib", + "lazy_static", + "log", + "memmap2", + "nix 0.24.3", + "pkg-config", + "wayland-client", + "wayland-cursor", + "wayland-protocols", +] + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der 0.5.1", +] + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "der 0.6.1", +] + +[[package]] +name = "sspi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e676b09028bca74185041e073a467e71112c19e4032fc290df82a4ad10c390e" +dependencies = [ + "async-dnssd", + "bitflags", + "byteorder", + "cfg-if 0.1.10", + "chrono", + "crypto-mac 0.11.1", + "futures", + "hmac 0.11.0", + "lazy_static", + "md-5 0.9.1", + "md4 0.9.0", + "num-bigint-dig", + "num-derive 0.2.5", + "num-traits", + "oid", + "picky", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "picky-krb", + "portpicker", + "rand 0.8.5", + "reqwest", + "serde", + "serde_derive", + "sha1", + "sha2 0.9.9", + "tokio", + "tracing", + "url", + "uuid", + "winapi", + "windows", + "windows-sys 0.42.0", + "winreg", + "zeroize", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "unicode-xid 0.2.4", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tiff" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17def29300a156c19ae30814710d9c63cd50288a49c6fd3a10ccfbe4cf886fd" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + +[[package]] +name = "tiny-skia" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if 1.0.0", + "png", + "safe_arch", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c114d32f0c2ee43d585367cb013dfaba967ab9f62b90d9af0d696e955e70fa6c" +dependencies = [ + "arrayref", + "bytemuck", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +dependencies = [ + "getrandom 0.2.8", + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote 1.0.21", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "wayland-client" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +dependencies = [ + "bitflags", + "downcast-rs", + "libc", + "nix 0.24.3", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +dependencies = [ + "nix 0.24.3", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +dependencies = [ + "nix 0.24.3", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-egl" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402de949f81a012926d821a2d659f930694257e76dd92b6e0042ceb27be4107d" +dependencies = [ + "wayland-client", + "wayland-sys", +] + +[[package]] +name = "wayland-protocols" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +dependencies = [ + "bitflags", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +dependencies = [ + "dlib", + "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be" +dependencies = [ + "webpki", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "whoami" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6631b6a2fd59b1841b622e8f1a7ad241ef0a46f2d580464ce8140ac94cbd571" +dependencies = [ + "bumpalo", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +dependencies = [ + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", +] + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "winit" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation", + "core-graphics", + "dispatch", + "instant", + "libc", + "log", + "mio", + "ndk", + "ndk-glue", + "objc", + "once_cell", + "parking_lot", + "percent-encoding", + "raw-window-handle 0.4.3", + "raw-window-handle 0.5.0", + "sctk-adwaita", + "smithay-client-toolkit", + "wasm-bindgen", + "wayland-client", + "wayland-protocols", + "web-sys", + "windows-sys 0.36.1", + "x11-dl", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x11-dl" +version = "2.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1536d6965a5d4e573c7ef73a2c15ebcd0b2de3347bdf526c34c297c00ac40f0" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "x509-cert" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d224a125dec5adda27d0346b9cae9794830279c4f9c27e4ab0b6c408d54012" +dependencies = [ + "const-oid 0.9.1", + "der 0.6.1", + "flagset", + "spki 0.6.0", +] + +[[package]] +name = "x509-parser" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99bbe736dd2b422d66e4830f4a06f34387c9814c027efcbda5c2f86463e8e5b0" +dependencies = [ + "base64 0.11.0", + "der-parser 3.0.4", + "nom 5.1.2", + "num-bigint 0.2.6", + "rusticata-macros 2.1.0", + "time 0.1.45", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser 8.1.0", + "lazy_static", + "nom 7.1.1", + "oid-registry", + "rusticata-macros 4.1.0", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "xcursor" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom 7.1.1", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yasna" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de7bff972b4f2a06c85f6d8454b09df153af7e3a4ec2aac81db1b105b684ddb" + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "synstructure", +] diff --git a/ffi/wasm/.gitignore b/ffi/wasm/.gitignore index 1109c337..572d527f 100644 --- a/ffi/wasm/.gitignore +++ b/ffi/wasm/.gitignore @@ -1,3 +1,4 @@ -bin/ -pkg/ -wasm-pack.log +/target +/bin +/pkg +/wasm-pack.log diff --git a/ffi/wasm/Cargo.lock b/ffi/wasm/Cargo.lock new file mode 100644 index 00000000..3e77effe --- /dev/null +++ b/ffi/wasm/Cargo.lock @@ -0,0 +1,2117 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aes" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +dependencies = [ + "cfg-if 1.0.0", + "cipher", + "cpufeatures", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "asn1-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "async-dnssd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98efc05996cc8d660e88841fcffb75aa71be5339c9ae559a8c8016c048420b82" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-util", + "libc", + "log", + "pin-utils", + "pkg-config", + "tokio", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64ct" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" + +[[package]] +name = "bit_field" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cc" +version = "1.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "const-oid" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d88231face754cdb045c1b65912a0f4ff78ca24bf371e30a4a8cfa993b3897" +dependencies = [ + "crypto-common", +] + +[[package]] +name = "crypto-bigint" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "cxx" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2 1.0.47", + "quote 1.0.21", + "scratch", + "syn 1.0.104", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid 0.7.1", + "crypto-bigint", + "pem-rfc7468", +] + +[[package]] +name = "der" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" +dependencies = [ + "const-oid 0.9.1", + "der_derive", + "flagset", +] + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e0925824edd2cc2de26da32852c7cd30844011dbf4956c12c88ad2f42d910" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "des" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +dependencies = [ + "cipher", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer 0.10.3", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "flagset" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda653ca797810c02f7ca4b804b40b8b95ae046eb989d356bce17919a8c25499" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gloo-net" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec897194fb9ac576c708f63d35604bc58f2a262b8cec0fabfed26f3991255f21" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-utils" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40913a05c8297adca04392f707b1e73b12ba7b8eab7244a4961580b1fd34063c" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.6", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "ironrdp" +version = "0.1.0" +dependencies = [ + "anyhow", + "chrono", + "console_error_panic_hook", + "console_log", + "futures-channel", + "futures-util", + "getrandom", + "gloo-net", + "ironrdp 0.4.2", + "ironrdp-input", + "ironrdp-session", + "js-sys", + "log", + "smallvec", + "sspi", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "ironrdp" +version = "0.4.2" +dependencies = [ + "ironrdp-core", + "ironrdp-graphics", + "ironrdp-input", + "ironrdp-session", +] + +[[package]] +name = "ironrdp-core" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "byteorder", + "der-parser", + "lazy_static", + "log", + "md-5 0.10.5", + "num-bigint", + "num-derive 0.3.3", + "num-integer", + "num-traits", + "sha1", + "tap", + "thiserror", + "x509-parser", +] + +[[package]] +name = "ironrdp-devolutions-gateway" +version = "0.1.0" +dependencies = [ + "bytes", + "der 0.6.0", +] + +[[package]] +name = "ironrdp-graphics" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "bitvec", + "byteorder", + "bytes", + "ironrdp-core", + "lazy_static", + "num-derive 0.3.3", + "num-traits", + "thiserror", +] + +[[package]] +name = "ironrdp-input" +version = "0.1.0" +dependencies = [ + "bitvec", + "ironrdp-core", + "smallvec", +] + +[[package]] +name = "ironrdp-session" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "byteorder", + "bytes", + "futures-util", + "ironrdp-core", + "ironrdp-devolutions-gateway", + "ironrdp-graphics", + "lazy_static", + "log", + "num-derive 0.3.3", + "num-traits", + "rand_core", + "semver", + "sspi", + "thiserror", + "whoami", + "x509-cert", +] + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "libm" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" + +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "md-5" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.6", +] + +[[package]] +name = "md4" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd1a7931601ee6a560262a1dc9a8369949f5b7ae20b2bbf029c74fbd6d1b09e2" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "serde", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "oid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2" +dependencies = [ + "serde", +] + +[[package]] +name = "oid-registry" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d4bda43fd1b844cbc6e6e54b5444e2b1bc7838bce59ad205902cccbb26d6761" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.6", + "hmac 0.12.1", + "password-hash", + "sha-1", + "sha2 0.10.6", +] + +[[package]] +name = "pem-rfc7468" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01de5d978f34aa4b2296576379fcc416034702fd94117c56ffd8a1a767cefb30" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "picky" +version = "7.0.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c80faad111028a7dc724b220316209af32d3db6b4a3251d2b8b94277d2af5c" +dependencies = [ + "base64", + "digest 0.10.6", + "md-5 0.10.5", + "num-bigint-dig", + "oid", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "rand", + "rsa", + "serde", + "sha-1", + "sha2 0.10.6", + "sha3", + "thiserror", +] + +[[package]] +name = "picky-asn1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47530ada7dc2327eba0200cfbdbb8d7f7751856bef43a01c20afa9bd00f54c76" +dependencies = [ + "chrono", + "oid", + "serde", + "serde_bytes", + "zeroize", +] + +[[package]] +name = "picky-asn1-der" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47267a46f4ea246b772381970b8ed3f15963dd3e15ffc2c3f4ac3bc2d77384b" +dependencies = [ + "picky-asn1", + "serde", + "serde_bytes", +] + +[[package]] +name = "picky-asn1-x509" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb51541f90aa99f2fa7191c8daebc224d500cd5963c6ca3e6cede9645a1b2e1" +dependencies = [ + "base64", + "num-bigint-dig", + "oid", + "picky-asn1", + "picky-asn1-der", + "serde", + "widestring", + "zeroize", +] + +[[package]] +name = "picky-krb" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ce6e874e53f3a7375000c959adebeee4f419f1340280cfd59fb8962bfe6edf" +dependencies = [ + "aes", + "byteorder", + "cbc", + "crypto", + "des", + "hmac 0.12.1", + "num-bigint-dig", + "oid", + "pbkdf2", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "rand", + "serde", + "sha1", + "thiserror", + "uuid", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs1" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78f66c04ccc83dd4486fd46c33896f4e17b24a7a3a6400dedc48ed0ddd72320" +dependencies = [ + "der 0.5.1", + "pkcs8", + "zeroize", +] + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der 0.5.1", + "spki 0.5.4", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2 1.0.47", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rsa" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf22754c49613d2b3b119f0e5d46e34a2c628a937e3024b8762de4e7d8c710b" +dependencies = [ + "byteorder", + "digest 0.10.6", + "num-bigint-dig", + "num-integer", + "num-iter", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "smallvec", + "subtle", + "zeroize", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cdd151213925e7f1ab45a9bbfb129316bd00799784b174b7cc7bcd16961c49e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc80d722935453bcafdc2c9a73cd6fac4dc1938f0346035d84bf99fa9e33217" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.6", +] + +[[package]] +name = "sha3" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +dependencies = [ + "digest 0.10.6", + "keccak", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der 0.5.1", +] + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "der 0.6.0", +] + +[[package]] +name = "sspi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e676b09028bca74185041e073a467e71112c19e4032fc290df82a4ad10c390e" +dependencies = [ + "async-dnssd", + "bitflags", + "byteorder", + "cfg-if 0.1.10", + "chrono", + "crypto-mac", + "futures", + "hmac 0.11.0", + "lazy_static", + "md-5 0.9.1", + "md4", + "num-bigint-dig", + "num-derive 0.2.5", + "num-traits", + "oid", + "picky", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "picky-krb", + "rand", + "serde", + "serde_derive", + "sha1", + "sha2 0.9.9", + "tokio", + "tracing", + "url", + "uuid", + "winapi", + "windows", + "windows-sys", + "winreg", + "zeroize", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "unicode-xid 0.2.4", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" +dependencies = [ + "autocfg", + "libc", + "mio", + "pin-project-lite", + "socket2", + "winapi", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote 1.0.21", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6631b6a2fd59b1841b622e8f1a7ad241ef0a46f2d580464ce8140ac94cbd571" +dependencies = [ + "bumpalo", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +dependencies = [ + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x509-cert" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd27a832a85efcf56cad058e4e3256d1781b927e113a9e37d96916d639e4af7" +dependencies = [ + "const-oid 0.9.1", + "der 0.6.0", + "flagset", + "spki 0.6.0", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.104", + "synstructure", +] diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock new file mode 100644 index 00000000..204dfc98 --- /dev/null +++ b/fuzz/Cargo.lock @@ -0,0 +1,569 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arbitrary" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e90af4de65aa7b293ef2d09daff88501eb254f58edde2e1ac02c82d873eadad" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "asn1-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-encoding" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "derive_arbitrary" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8beee4701e2e229e8098bbdecdca12449bc3e322f137d269182fa1291e20bd00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "ironrdp-core" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "byteorder", + "der-parser", + "lazy_static", + "log", + "md-5", + "num-bigint", + "num-derive", + "num-integer", + "num-traits", + "sha1", + "tap", + "thiserror", + "x509-parser", +] + +[[package]] +name = "ironrdp-fuzz" +version = "0.0.0" +dependencies = [ + "arbitrary", + "bytes", + "ironrdp-core", + "ironrdp-graphics", + "libfuzzer-sys", +] + +[[package]] +name = "ironrdp-graphics" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "bitvec", + "byteorder", + "bytes", + "ironrdp-core", + "lazy_static", + "num-derive", + "num-traits", + "thiserror", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb09950ae85a0a94b27676cccf37da5ff13f27076aa1adbc6545dd0d0e1bd4e" +dependencies = [ + "arbitrary", + "cc", + "once_cell", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "proc-macro2" +version = "1.0.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "serde" +version = "1.0.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "thiserror" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +dependencies = [ + "time-core", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] diff --git a/iron-tauri-client/src-tauri/.gitignore b/iron-tauri-client/src-tauri/.gitignore index aba21e24..cdf41c85 100644 --- a/iron-tauri-client/src-tauri/.gitignore +++ b/iron-tauri-client/src-tauri/.gitignore @@ -1,3 +1,4 @@ # Generated by Cargo # will have compiled files and executables /target/ +/Cargo.lock From 407cb241214cd903580abf610a89d136405bf5d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Mar 2023 15:38:45 -0500 Subject: [PATCH 0139/1273] ci: fix cargo-fuzz installation (#92) --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6eb3c40c..44a3e3af 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,8 +132,8 @@ jobs: shell: pwsh run: | if (-Not (Test-Path -Path ~/.cargo/bin/cargo-fuzz -PathType Leaf)) { - # Installed in debug because it's faster to compile and we don't need execution speed anyway - cargo +stable install --debug --locked cargo-fuzz + # Install in debug because it's faster to compile and we don't need execution speed anyway + cargo install --debug --locked cargo-fuzz } rustup install nightly --profile=minimal From 33b7fe72d03dcdf1d2cd01dd8524b47784629bfc Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Fri, 10 Mar 2023 15:34:16 -0500 Subject: [PATCH 0140/1273] Bump iron-remote-gui version --- iron-remote-gui/public/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 39bba795..b6718b85 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.4.5", + "version": "0.4.6", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 89b4f736fd079226b904e1e7b34a87a140cadbcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Thu, 16 Mar 2023 17:36:27 -0400 Subject: [PATCH 0141/1273] refactor: rename ironrdp-gui-client to ironrdp-client-glutin --- .../Cargo.toml | 0 .../README.md | 0 .../src/config.rs | 0 .../src/gui.rs | 0 .../src/gui/input.rs | 0 .../src/main.rs | 21 +++---------------- 6 files changed, 3 insertions(+), 18 deletions(-) rename {ironrdp-gui-client => ironrdp-client-glutin}/Cargo.toml (100%) rename {ironrdp-gui-client => ironrdp-client-glutin}/README.md (100%) rename {ironrdp-gui-client => ironrdp-client-glutin}/src/config.rs (100%) rename {ironrdp-gui-client => ironrdp-client-glutin}/src/gui.rs (100%) rename {ironrdp-gui-client => ironrdp-client-glutin}/src/gui/input.rs (100%) rename {ironrdp-gui-client => ironrdp-client-glutin}/src/main.rs (92%) diff --git a/ironrdp-gui-client/Cargo.toml b/ironrdp-client-glutin/Cargo.toml similarity index 100% rename from ironrdp-gui-client/Cargo.toml rename to ironrdp-client-glutin/Cargo.toml diff --git a/ironrdp-gui-client/README.md b/ironrdp-client-glutin/README.md similarity index 100% rename from ironrdp-gui-client/README.md rename to ironrdp-client-glutin/README.md diff --git a/ironrdp-gui-client/src/config.rs b/ironrdp-client-glutin/src/config.rs similarity index 100% rename from ironrdp-gui-client/src/config.rs rename to ironrdp-client-glutin/src/config.rs diff --git a/ironrdp-gui-client/src/gui.rs b/ironrdp-client-glutin/src/gui.rs similarity index 100% rename from ironrdp-gui-client/src/gui.rs rename to ironrdp-client-glutin/src/gui.rs diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-client-glutin/src/gui/input.rs similarity index 100% rename from ironrdp-gui-client/src/gui/input.rs rename to ironrdp-client-glutin/src/gui/input.rs diff --git a/ironrdp-gui-client/src/main.rs b/ironrdp-client-glutin/src/main.rs similarity index 92% rename from ironrdp-gui-client/src/main.rs rename to ironrdp-client-glutin/src/main.rs index 27387683..3c7f0aaa 100644 --- a/ironrdp-gui-client/src/main.rs +++ b/ironrdp-client-glutin/src/main.rs @@ -118,8 +118,8 @@ async fn run(config: Config) -> Result<(), RdpError> { let writer = Arc::new(Mutex::new(writer)); let image = DecodedImage::new( PixelFormat::RgbA32, - u32::from(connection_sequence_result.desktop_size.width), - u32::from(connection_sequence_result.desktop_size.height), + connection_sequence_result.desktop_size.width, + connection_sequence_result.desktop_size.height, ); launch_client(config, connection_sequence_result, image, reader, writer).await @@ -160,7 +160,6 @@ async fn process_active_stage( mut image: DecodedImage, writer: Arc>, ) -> Result<(), RdpError> { - let mut frame_id = 0; 'outer: loop { let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?.freeze(); let outputs = active_stage.process(&mut image, frame)?; @@ -170,12 +169,7 @@ async fn process_active_stage( let mut writer = writer.lock().await; writer.write_all(&frame).await? } - ActiveStageOutput::GraphicsUpdate(_region) => { - // TODO: control this with CLI argument - dump_image(&image, frame_id); - - frame_id += 1; - } + ActiveStageOutput::GraphicsUpdate(_region) => {} ActiveStageOutput::Terminate => break 'outer, } } @@ -249,12 +243,3 @@ pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { Ok(public_key.data.to_vec()) } - -pub fn dump_image(image: &DecodedImage, frame_id: usize) { - debug_assert_eq!(image.pixel_format(), PixelFormat::RgbA32); - - image::RgbaImage::from_raw(image.width(), image.height(), image.data().to_vec()) - .unwrap() - .save(format!("frame.{frame_id}.jpg")) - .unwrap(); -} From db78d7e5d7987b2a1e48abe00add9123e0dd8c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Mon, 6 Mar 2023 15:11:06 -0500 Subject: [PATCH 0142/1273] feat: softbuffer-based frontend Issue: ARC-140 --- Cargo.lock | 790 +++++++++++------- Cargo.toml | 4 +- README.md | 4 +- ffi/wasm/src/input.rs | 20 +- ffi/wasm/src/session.rs | 4 +- ironrdp-cli/src/main.rs | 224 ----- ironrdp-client-glutin/Cargo.toml | 1 - {ironrdp-cli => ironrdp-client}/Cargo.toml | 10 +- {ironrdp-cli => ironrdp-client}/README.md | 0 {ironrdp-cli => ironrdp-client}/src/config.rs | 43 +- ironrdp-client/src/gui.rs | 250 ++++++ ironrdp-client/src/lib.rs | 7 + ironrdp-client/src/main.rs | 61 ++ ironrdp-client/src/rdp.rs | 164 ++++ ironrdp-client/src/tls.rs | 107 +++ ironrdp-graphics/src/rle.rs | 3 +- ironrdp-input/src/lib.rs | 150 ++-- ironrdp-input/tests/fastpath_packets.rs | 98 +-- ironrdp-input/tests/smoke.rs | 16 +- .../src/active_session/codecs/rfx/tests.rs | 6 +- ironrdp-session/src/errors.rs | 6 +- ironrdp-session/src/image.rs | 15 +- 22 files changed, 1310 insertions(+), 673 deletions(-) delete mode 100644 ironrdp-cli/src/main.rs rename {ironrdp-cli => ironrdp-client}/Cargo.toml (88%) rename {ironrdp-cli => ironrdp-client}/README.md (100%) rename {ironrdp-cli => ironrdp-client}/src/config.rs (84%) create mode 100644 ironrdp-client/src/gui.rs create mode 100644 ironrdp-client/src/lib.rs create mode 100644 ironrdp-client/src/main.rs create mode 100644 ironrdp-client/src/rdp.rs create mode 100644 ironrdp-client/src/tls.rs diff --git a/Cargo.lock b/Cargo.lock index 48f8d25f..b123a1c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,22 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ab_glyph" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + [[package]] name = "adler" version = "1.0.2" @@ -19,6 +35,30 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "android-activity" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6" +dependencies = [ + "android-properties", + "bitflags", + "cc", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum 0.5.7", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -46,6 +86,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + [[package]] name = "asn1-rs" version = "0.5.1" @@ -233,6 +279,25 @@ dependencies = [ "generic-array 0.14.6", ] +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys", + "objc2-encode", +] + [[package]] name = "bufstream" version = "0.1.4" @@ -312,6 +377,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "cgl" version = "0.3.2" @@ -433,12 +504,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "const-oid" version = "0.7.1" @@ -522,49 +587,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" -dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "crossbeam-utils", - "memoffset 0.7.1", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" -dependencies = [ - "cfg-if 1.0.0", -] - [[package]] name = "crossfont" version = "0.5.1" @@ -589,10 +611,29 @@ dependencies = [ ] [[package]] -name = "crunchy" -version = "0.2.2" +name = "crossterm" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" +dependencies = [ + "winapi", +] [[package]] name = "crypto" @@ -905,10 +946,10 @@ dependencies = [ ] [[package]] -name = "either" -version = "1.8.0" +name = "dyn-clone" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" [[package]] name = "encoding_rs" @@ -956,21 +997,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "exr" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" -dependencies = [ - "bit_field", - "flume", - "half", - "lebe", - "miniz_oxide", - "smallvec", - "threadpool", -] - [[package]] name = "fake-simd" version = "0.1.2" @@ -1011,19 +1037,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "flume" -version = "0.10.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", - "spin 0.9.4", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1223,6 +1236,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -1241,20 +1264,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", - "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gif" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" -dependencies = [ - "color_quant", - "weezl", ] [[package]] @@ -1300,10 +1311,10 @@ dependencies = [ "osmesa-sys", "parking_lot", "raw-window-handle 0.5.0", - "wayland-client", + "wayland-client 0.29.5", "wayland-egl", "winapi", - "winit", + "winit 0.27.5", ] [[package]] @@ -1364,15 +1375,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "half" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554" -dependencies = [ - "crunchy", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1555,25 +1557,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "image" -version = "0.24.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "exr", - "gif", - "jpeg-decoder", - "num-rational", - "num-traits", - "png", - "scoped_threadpool", - "tiff", -] - [[package]] name = "indexmap" version = "1.9.2" @@ -1594,6 +1577,22 @@ dependencies = [ "generic-array 0.14.6", ] +[[package]] +name = "inquire" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a94f0659efe59329832ba0452d3ec753145fc1fb12a8e1d60de4ccf99f5364" +dependencies = [ + "bitflags", + "crossterm", + "dyn-clone", + "lazy_static", + "newline-converter", + "thiserror", + "unicode-segmentation", + "unicode-width", +] + [[package]] name = "instant" version = "0.1.12" @@ -1633,7 +1632,7 @@ dependencies = [ ] [[package]] -name = "ironrdp-cli" +name = "ironrdp-client" version = "0.4.2" dependencies = [ "anyhow", @@ -1643,14 +1642,18 @@ dependencies = [ "exitcode", "fern", "futures-util", - "image", + "inquire", "ironrdp", + "ironrdp-input", "log", + "smallvec", + "softbuffer", "sspi", "tokio", "tokio-rustls", "tokio-util", "whoami", + "winit 0.28.2", "x509-parser 0.14.0", ] @@ -1663,7 +1666,6 @@ dependencies = [ "byteorder", "der-parser 8.1.0", "lazy_static", - "log", "md-5 0.10.5", "num-bigint 0.4.3", "num-derive 0.3.3", @@ -1717,7 +1719,6 @@ dependencies = [ "fern", "futures-util", "glutin", - "image", "ironrdp", "ironrdp-renderer", "log", @@ -1840,15 +1841,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" -dependencies = [ - "rayon", -] - [[package]] name = "js-sys" version = "0.3.60" @@ -1879,22 +1871,16 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin 0.5.2", + "spin", ] -[[package]] -name = "lebe" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" - [[package]] name = "lexical-core" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ - "arrayvec", + "arrayvec 0.5.2", "bitflags", "cfg-if 1.0.0", "ryu", @@ -2086,15 +2072,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.8", -] - [[package]] name = "nasm-rs" version = "0.2.4" @@ -2177,6 +2154,15 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "newline-converter" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "nix" version = "0.24.3" @@ -2202,6 +2188,20 @@ dependencies = [ "memoffset 0.6.5", ] +[[package]] +name = "nix" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", + "memoffset 0.7.1", + "pin-utils", + "static_assertions", +] + [[package]] name = "nom" version = "5.1.2" @@ -2306,17 +2306,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.15" @@ -2398,6 +2387,32 @@ dependencies = [ "malloc_buf", ] +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe31e5425d3d0b89a15982c024392815da40689aceb34bad364d58732bcfd649" +dependencies = [ + "block2", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys", +] + [[package]] name = "oid" version = "0.2.1" @@ -2499,6 +2514,18 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "orbclient" +version = "0.3.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "974465c5e83cf9df05c1e4137b271d29035c902e39e5ad4c1939837e22160af8" +dependencies = [ + "cfg-if 1.0.0", + "redox_syscall 0.2.16", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "os_str_bytes" version = "6.4.1" @@ -2523,6 +2550,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "owned_ttf_parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" +dependencies = [ + "ttf-parser", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2541,7 +2577,7 @@ checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "windows-sys 0.42.0", ] @@ -2673,26 +2709,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "pin-project" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" -dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", - "syn 1.0.104", -] - [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2867,6 +2883,15 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" +[[package]] +name = "quick-xml" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "0.6.13" @@ -2989,29 +3014,6 @@ dependencies = [ "cty", ] -[[package]] -name = "rayon" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" -dependencies = [ - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - [[package]] name = "rdp-rs" version = "0.1.0" @@ -3040,6 +3042,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "regex-syntax" version = "0.6.28" @@ -3104,7 +3115,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin 0.5.2", + "spin", "untrusted", "web-sys", "winapi", @@ -3307,12 +3318,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" -[[package]] -name = "scoped_threadpool" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - [[package]] name = "scopeguard" version = "1.1.0" @@ -3344,7 +3349,20 @@ dependencies = [ "crossfont", "log", "smithay-client-toolkit", - "tiny-skia", + "tiny-skia 0.7.0", +] + +[[package]] +name = "sctk-adwaita" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc56402866c717f54e48b122eb93c69f709bc5a6359c403598992fd92f017931" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia 0.8.3", ] [[package]] @@ -3515,6 +3533,27 @@ dependencies = [ "libc", ] +[[package]] +name = "signal-hook" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + [[package]] name = "signal-hook-registry" version = "1.4.0" @@ -3573,7 +3612,7 @@ dependencies = [ "memmap2", "nix 0.24.3", "pkg-config", - "wayland-client", + "wayland-client 0.29.5", "wayland-cursor", "wayland-protocols", ] @@ -3588,21 +3627,40 @@ dependencies = [ "winapi", ] +[[package]] +name = "softbuffer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3177eca2c15033e254b9b70c4915150200b1cf6fa777de18be9977ae5850077f" +dependencies = [ + "bytemuck", + "cfg_aliases", + "cocoa", + "core-graphics", + "fastrand", + "foreign-types 0.3.2", + "log", + "nix 0.26.2", + "objc", + "raw-window-handle 0.5.0", + "redox_syscall 0.3.5", + "thiserror", + "wasm-bindgen", + "wayland-backend", + "wayland-client 0.30.1", + "wayland-sys 0.30.1", + "web-sys", + "windows-sys 0.42.0", + "x11-dl", + "x11rb", +] + [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "spin" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" -dependencies = [ - "lock_api", -] - [[package]] name = "spki" version = "0.5.4" @@ -3672,6 +3730,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strict-num" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df65f20698aeed245efdde3628a6b559ea1239bbb871af1b6e3b58c413b2bd1" + [[package]] name = "strsim" version = "0.10.0" @@ -3739,7 +3803,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "remove_dir_all", "winapi", ] @@ -3773,26 +3837,6 @@ dependencies = [ "syn 1.0.104", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "tiff" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17def29300a156c19ae30814710d9c63cd50288a49c6fd3a10ccfbe4cf886fd" -dependencies = [ - "flate2", - "jpeg-decoder", - "weezl", -] - [[package]] name = "time" version = "0.1.45" @@ -3840,12 +3884,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "bytemuck", "cfg-if 1.0.0", "png", "safe_arch", - "tiny-skia-path", + "tiny-skia-path 0.7.0", +] + +[[package]] +name = "tiny-skia" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfef3412c6975196fdfac41ef232f910be2bb37b9dd3313a49a1a6bc815a5bdb" +dependencies = [ + "arrayref", + "arrayvec 0.7.2", + "bytemuck", + "cfg-if 1.0.0", + "png", + "tiny-skia-path 0.8.3", ] [[package]] @@ -3858,6 +3916,17 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "tiny-skia-path" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b5edac058fc98f51c935daea4d805b695b38e2f151241cad125ade2a2ac20d" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -3983,6 +4052,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "ttf-parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" + [[package]] name = "typenum" version = "1.15.0" @@ -4016,6 +4091,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + [[package]] name = "unicode-width" version = "0.1.10" @@ -4193,6 +4274,21 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +[[package]] +name = "wayland-backend" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79ebd48bfc1178c9190c7ff80cc822b3335ffc83141e9aa723168f377257623e" +dependencies = [ + "cc", + "downcast-rs", + "io-lifetimes", + "nix 0.26.2", + "scoped-tls", + "smallvec", + "wayland-sys 0.30.1", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -4205,8 +4301,20 @@ dependencies = [ "nix 0.24.3", "scoped-tls", "wayland-commons", - "wayland-scanner", - "wayland-sys", + "wayland-scanner 0.29.5", + "wayland-sys 0.29.5", +] + +[[package]] +name = "wayland-client" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bde68449abab1a808e5227b6e295f4ae3680911eb7711b4a2cb90141edb780" +dependencies = [ + "bitflags", + "nix 0.26.2", + "wayland-backend", + "wayland-scanner 0.30.0", ] [[package]] @@ -4218,7 +4326,7 @@ dependencies = [ "nix 0.24.3", "once_cell", "smallvec", - "wayland-sys", + "wayland-sys 0.29.5", ] [[package]] @@ -4228,7 +4336,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ "nix 0.24.3", - "wayland-client", + "wayland-client 0.29.5", "xcursor", ] @@ -4238,8 +4346,8 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402de949f81a012926d821a2d659f930694257e76dd92b6e0042ceb27be4107d" dependencies = [ - "wayland-client", - "wayland-sys", + "wayland-client 0.29.5", + "wayland-sys 0.29.5", ] [[package]] @@ -4249,9 +4357,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ "bitflags", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", ] [[package]] @@ -4265,6 +4373,17 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "wayland-scanner" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4834c14b3edf1d9986c83ca79b1e7e3afbe9874c7c144702f6467063259ce45d" +dependencies = [ + "proc-macro2 1.0.47", + "quick-xml", + "quote 1.0.21", +] + [[package]] name = "wayland-sys" version = "0.29.5" @@ -4276,6 +4395,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" +dependencies = [ + "dlib", + "lazy_static", + "log", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.60" @@ -4305,12 +4436,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "weezl" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" - [[package]] name = "whoami" version = "1.2.3" @@ -4353,6 +4478,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4392,19 +4526,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_msvc" @@ -4420,9 +4578,9 @@ checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" @@ -4438,9 +4596,9 @@ checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" @@ -4456,9 +4614,9 @@ checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" @@ -4474,15 +4632,15 @@ checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" @@ -4498,9 +4656,9 @@ checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "winit" @@ -4525,16 +4683,51 @@ dependencies = [ "percent-encoding", "raw-window-handle 0.4.3", "raw-window-handle 0.5.0", - "sctk-adwaita", + "sctk-adwaita 0.4.3", "smithay-client-toolkit", "wasm-bindgen", - "wayland-client", + "wayland-client 0.29.5", "wayland-protocols", "web-sys", "windows-sys 0.36.1", "x11-dl", ] +[[package]] +name = "winit" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d38e7dc904dda347b54dbec3b2d4bf534794f4fb4e6df0be91a264f4f2ed1cf" +dependencies = [ + "android-activity", + "bitflags", + "cfg_aliases", + "core-foundation", + "core-graphics", + "dispatch", + "instant", + "libc", + "log", + "mio", + "ndk", + "objc2", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle 0.5.0", + "redox_syscall 0.3.5", + "sctk-adwaita 0.5.3", + "smithay-client-toolkit", + "wasm-bindgen", + "wayland-client 0.29.5", + "wayland-commons", + "wayland-protocols", + "wayland-scanner 0.29.5", + "web-sys", + "windows-sys 0.45.0", + "x11-dl", +] + [[package]] name = "winreg" version = "0.10.1" @@ -4573,6 +4766,31 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617" +dependencies = [ + "gethostname", + "libc", + "libloading", + "nix 0.25.1", + "once_cell", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0b1513b141123073ce54d5bb1d33f801f17508fbd61e02060b1214e96d39c56" +dependencies = [ + "nix 0.25.1", +] + [[package]] name = "x509-cert" version = "0.1.1" diff --git a/Cargo.toml b/Cargo.toml index cf4d1970..59f71203 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ "ironrdp-tls", "ironrdp-devolutions-gateway", "ironrdp-renderer", - "ironrdp-cli", - "ironrdp-gui-client", + "ironrdp-client", + "ironrdp-client-glutin", "ironrdp-replay-client", ] diff --git a/README.md b/README.md index 81fb06dc..6c498097 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on - `ironrdp-tls`: TLS boilerplate common with most IronRDP clients. - `ironrdp-devolutions-gateway`: Devolutions Gateway extensions. - `ironrdp-renderer`: `glutin` primitives for OpenGL rendering. -- `ironrdp-cli`: basic command-line client mostly for debugging purposes. -- `ironrdp-gui-client`: basic GUI client for IronRDP. +- `ironrdp-client`: Portable RDP client without GPU acceleration using softbuffer and winit for windowing. +- `ironrdp-client-glutin`: GPU-accelerated RDP client using glutin. - `ironrdp-replay-client`: utility tool to replay RDP graphics pipeline for debugging purposes. - `iron-remote-gui`: core frontend ui used by both, iron-svelte-client and iron-tauri-client. - `iron-svelte-client`: web-based frontend using `Svelte` and `Material` frameworks). diff --git a/ffi/wasm/src/input.rs b/ffi/wasm/src/input.rs index 507b1eb2..719e6d95 100644 --- a/ffi/wasm/src/input.rs +++ b/ffi/wasm/src/input.rs @@ -9,11 +9,23 @@ pub struct DeviceEvent(pub(crate) Operation); #[wasm_bindgen] impl DeviceEvent { pub fn new_mouse_button_pressed(button: u8) -> Self { - Self(Operation::MouseButtonPressed(MouseButton::from(button))) + match MouseButton::from_web_button(button) { + Some(button) => Self(Operation::MouseButtonPressed(button)), + None => { + warn!("Unknown mouse button ID: {button}"); + Self(Operation::MouseButtonPressed(MouseButton::Left)) + } + } } pub fn new_mouse_button_released(button: u8) -> Self { - Self(Operation::MouseButtonReleased(MouseButton::from(button))) + match MouseButton::from_web_button(button) { + Some(button) => Self(Operation::MouseButtonReleased(button)), + None => { + warn!("Unknown mouse button ID: {button}"); + Self(Operation::MouseButtonReleased(MouseButton::Left)) + } + } } pub fn new_mouse_move(x: u16, y: u16) -> Self { @@ -28,11 +40,11 @@ impl DeviceEvent { } pub fn new_key_pressed(scancode: u16) -> Self { - Self(Operation::KeyPressed(Scancode::from(scancode))) + Self(Operation::KeyPressed(Scancode::from_u16(scancode))) } pub fn new_key_released(scancode: u16) -> Self { - Self(Operation::KeyReleased(Scancode::from(scancode))) + Self(Operation::KeyReleased(Scancode::from_u16(scancode))) } } diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index d7c39177..b3d84622 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -142,8 +142,8 @@ impl Session { let mut image = DecodedImage::new( PixelFormat::RgbA32, - u32::from(self.connection_sequence_result.desktop_size.width), - u32::from(self.connection_sequence_result.desktop_size.height), + self.connection_sequence_result.desktop_size.width, + self.connection_sequence_result.desktop_size.height, ); let mut active_stage = diff --git a/ironrdp-cli/src/main.rs b/ironrdp-cli/src/main.rs deleted file mode 100644 index cbafd16d..00000000 --- a/ironrdp-cli/src/main.rs +++ /dev/null @@ -1,224 +0,0 @@ -#[macro_use] -extern crate log; - -mod config; - -use std::io; - -use futures_util::io::AsyncWriteExt as _; -use ironrdp::graphics::image_processing::PixelFormat; -use ironrdp::session::connection_sequence::{process_connection_sequence, UpgradedStream}; -use ironrdp::session::image::DecodedImage; -use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, RdpError}; -use sspi::network_client::reqwest_network_client::RequestClientFactory; -use tokio::io::AsyncWriteExt as _; -use tokio::net::TcpStream; -use tokio_util::compat::TokioAsyncReadCompatExt as _; -use x509_parser::prelude::{FromDer as _, X509Certificate}; - -use crate::config::Config; - -#[cfg(feature = "rustls")] -type TlsStream = tokio_util::compat::Compat>; - -#[cfg(all(feature = "native-tls", not(feature = "rustls")))] -type TlsStream = tokio_util::compat::Compat>; - -#[cfg(feature = "rustls")] -mod danger { - use std::time::SystemTime; - - use tokio_rustls::rustls::client::ServerCertVerified; - use tokio_rustls::rustls::{Certificate, Error, ServerName}; - - pub struct NoCertificateVerification; - - impl tokio_rustls::rustls::client::ServerCertVerifier for NoCertificateVerification { - fn verify_server_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _server_name: &ServerName, - _scts: &mut dyn Iterator, - _ocsp_response: &[u8], - _now: SystemTime, - ) -> Result { - Ok(tokio_rustls::rustls::client::ServerCertVerified::assertion()) - } - } -} - -#[tokio::main] -async fn main() { - let config = Config::parse_args(); - setup_logging(config.log_file.as_str()).expect("failed to initialize logging"); - - let exit_code = match run(config).await { - Ok(_) => { - println!("RDP successfully finished"); - exitcode::OK - } - Err(RdpError::Io(e)) - if e.kind() == io::ErrorKind::UnexpectedEof || e.kind() == io::ErrorKind::ConnectionReset => - { - let e = anyhow::Error::from(e); - - error!("{:#}", e); - - println!("The server has terminated the RDP session"); - println!("{e:?}"); - - exitcode::NOHOST - } - Err(e) => { - let exit_code = match e { - RdpError::Io(_) => exitcode::IOERR, - RdpError::Connection(_) => exitcode::NOHOST, - _ => exitcode::PROTOCOL, - }; - - let e = anyhow::Error::from(e); - error!("{:#}", e); - println!("{e:?}"); - - exit_code - } - }; - - std::process::exit(exit_code); -} - -fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { - fern::Dispatch::new() - .format(|out, message, record| { - out.finish(format_args!( - "{}[{}] {}", - chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S:%6f]"), - record.level(), - message - )) - }) - .chain(fern::log_file(log_file)?) - .apply()?; - - Ok(()) -} - -async fn run(config: Config) -> Result<(), RdpError> { - let addr = ironrdp::session::connection_sequence::Address::lookup_addr(config.addr)?; - - let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::Connection)?; - - let (connection_sequence_result, mut reader, mut writer) = process_connection_sequence( - stream.compat(), - &addr, - &config.input, - establish_tls, - Box::new(RequestClientFactory), - ) - .await?; - - let mut image = DecodedImage::new( - PixelFormat::RgbA32, - u32::from(connection_sequence_result.desktop_size.width), - u32::from(connection_sequence_result.desktop_size.height), - ); - - let mut active_stage = ActiveStageProcessor::new(config.input, None, connection_sequence_result); - let mut frame_id = 0; - - 'outer: loop { - let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?.freeze(); - let outputs = active_stage.process(&mut image, frame)?; - for out in outputs { - match out { - ActiveStageOutput::ResponseFrame(frame) => writer.write_all(&frame).await?, - ActiveStageOutput::GraphicsUpdate(_region) => { - // TODO: control this with CLI argument - dump_image(&image, frame_id); - - frame_id += 1; - } - ActiveStageOutput::Terminate => break 'outer, - } - } - } - - Ok(()) -} - -// TODO: this can be refactored into a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) -async fn establish_tls(stream: tokio_util::compat::Compat) -> Result, RdpError> { - let stream = stream.into_inner(); - - #[cfg(all(feature = "native-tls", not(feature = "rustls")))] - let mut tls_stream = { - let connector = async_native_tls::TlsConnector::new() - .danger_accept_invalid_certs(true) - .use_sni(false); - - // domain is an empty string because client accepts IP address in the cli - match connector.connect("", stream).await { - Ok(tls) => tls, - Err(err) => return Err(RdpError::TlsHandshake(err)), - } - }; - - #[cfg(feature = "rustls")] - let mut tls_stream = { - let mut client_config = tokio_rustls::rustls::client::ClientConfig::builder() - .with_safe_defaults() - .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) - .with_no_client_auth(); - // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) - client_config.key_log = std::sync::Arc::new(tokio_rustls::rustls::KeyLogFile::new()); - let rc_config = std::sync::Arc::new(client_config); - let example_com = "stub_string".try_into().unwrap(); - let connector = tokio_rustls::TlsConnector::from(rc_config); - connector.connect(example_com, stream).await? - }; - - tls_stream.flush().await?; - - #[cfg(all(feature = "native-tls", not(feature = "rustls")))] - let server_public_key = { - let cert = tls_stream - .peer_certificate() - .map_err(RdpError::TlsConnector)? - .ok_or(RdpError::MissingPeerCertificate)?; - get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? - }; - - #[cfg(feature = "rustls")] - let server_public_key = { - let cert = tls_stream - .get_ref() - .1 - .peer_certificates() - .ok_or(RdpError::MissingPeerCertificate)?[0] - .as_ref(); - get_tls_peer_pubkey(cert.to_vec())? - }; - - Ok(UpgradedStream { - stream: tls_stream.compat(), - server_public_key, - }) -} - -pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { - let res = X509Certificate::from_der(&cert[..]) - .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; - let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; - - Ok(public_key.data.to_vec()) -} - -pub fn dump_image(image: &DecodedImage, frame_id: usize) { - debug_assert_eq!(image.pixel_format(), PixelFormat::RgbA32); - - image::RgbaImage::from_raw(image.width(), image.height(), image.data().to_vec()) - .unwrap() - .save(format!("frame.{frame_id}.jpg")) - .unwrap(); -} diff --git a/ironrdp-client-glutin/Cargo.toml b/ironrdp-client-glutin/Cargo.toml index d50a9004..3c8365aa 100644 --- a/ironrdp-client-glutin/Cargo.toml +++ b/ironrdp-client-glutin/Cargo.toml @@ -40,7 +40,6 @@ futures-util = "0.3" # Utils chrono = "0.4.23" -image = "0.24.5" # GUI glutin = "0.29" diff --git a/ironrdp-cli/Cargo.toml b/ironrdp-client/Cargo.toml similarity index 88% rename from ironrdp-cli/Cargo.toml rename to ironrdp-client/Cargo.toml index bf0c2be3..ae2706ee 100644 --- a/ironrdp-cli/Cargo.toml +++ b/ironrdp-client/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp-cli" +name = "ironrdp-client" version = "0.4.2" edition = "2021" readme = "README.md" @@ -18,11 +18,17 @@ native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] # Protocol ironrdp = { path = "../ironrdp" } +ironrdp-input = { path = "../ironrdp-input" } sspi = { version = "0.7", features = ["network_client"] } # TODO: enable dns_resolver at some point +# GUI +softbuffer = "0.2.0" +winit = "0.28.2" + # CLI clap = { version = "4.0", features = ["derive", "cargo"] } exitcode = "1.1.2" +inquire = "0.5.3" # logging log = "0.4" @@ -41,5 +47,5 @@ futures-util = "0.3" # Utils chrono = "0.4.23" whoami = "1.2.3" -image = "0.24.5" anyhow = "1.0.68" +smallvec = "1.10.0" diff --git a/ironrdp-cli/README.md b/ironrdp-client/README.md similarity index 100% rename from ironrdp-cli/README.md rename to ironrdp-client/README.md diff --git a/ironrdp-cli/src/config.rs b/ironrdp-client/src/config.rs similarity index 84% rename from ironrdp-cli/src/config.rs rename to ironrdp-client/src/config.rs index 12af56f9..05db1e7f 100644 --- a/ironrdp-cli/src/config.rs +++ b/ironrdp-client/src/config.rs @@ -1,5 +1,6 @@ use std::num::ParseIntError; +use anyhow::Context as _; use clap::clap_derive::ValueEnum; use clap::{crate_name, Parser}; use ironrdp::session::{GraphicsConfig, InputConfig}; @@ -10,6 +11,7 @@ const DEFAULT_HEIGHT: u16 = 1080; const GLOBAL_CHANNEL_NAME: &str = "GLOBAL"; const USER_CHANNEL_NAME: &str = "USER"; +#[derive(Clone)] pub struct Config { pub log_file: String, pub addr: String, @@ -76,11 +78,11 @@ struct Args { log_file: String, /// An address on which the client will connect. - addr: String, + addr: Option, /// A target RDP server user name #[clap(short, long, value_parser)] - username: String, + username: Option, /// An optional target RDP server domain name #[clap(short, long, value_parser)] @@ -88,7 +90,7 @@ struct Args { /// A target RDP server user password #[clap(short, long, value_parser)] - password: String, + password: Option, /// Specify the security protocols to use #[clap(long, value_enum, value_parser, default_value_t = SecurityProtocol::HybridEx)] @@ -137,9 +139,32 @@ struct Args { } impl Config { - pub fn parse_args() -> Self { + pub fn parse_args() -> anyhow::Result { let args = Args::parse(); + let addr = if let Some(addr) = args.addr { + addr + } else { + inquire::Text::new("Server address:") + .prompt() + .context("Address prompt")? + }; + + let username = if let Some(username) = args.username { + username + } else { + inquire::Text::new("Username:").prompt().context("Username prompt")? + }; + + let password = if let Some(password) = args.password { + password + } else { + inquire::Password::new("Password:") + .without_confirmation() + .prompt() + .context("Password prompt")? + }; + let graphics_config = if args.avc444 || args.h264 { Some(GraphicsConfig { avc444: args.avc444, @@ -154,8 +179,8 @@ impl Config { let input = InputConfig { credentials: AuthIdentity { - username: args.username, - password: args.password.into(), + username, + password: password.into(), domain: args.domain, }, security_protocol: SecurityProtocol::parse(args.security_protocol), @@ -171,10 +196,10 @@ impl Config { graphics_config, }; - Self { + Ok(Self { log_file: args.log_file, - addr: args.addr, + addr, input, - } + }) } } diff --git a/ironrdp-client/src/gui.rs b/ironrdp-client/src/gui.rs new file mode 100644 index 00000000..21d86aec --- /dev/null +++ b/ironrdp-client/src/gui.rs @@ -0,0 +1,250 @@ +use anyhow::Context as _; +use ironrdp::session::RdpError; +use softbuffer::GraphicsContext; +use tokio::sync::mpsc; +use winit::event::{self, Event, WindowEvent}; +use winit::event_loop::{ControlFlow, EventLoop, EventLoopBuilder}; +use winit::window::{Window, WindowBuilder}; + +use crate::rdp::{RdpInputEvent, RdpOutputEvent}; + +pub struct GuiContext { + pub window: Window, + pub event_loop: EventLoop, + pub graphics_context: GraphicsContext, +} + +impl GuiContext { + pub fn init() -> anyhow::Result { + let event_loop = EventLoopBuilder::::with_user_event().build(); + + let window = WindowBuilder::new() + .with_title("IronRDP") + .build(&event_loop) + .context("Unable to create winit Window")?; + + let graphics_context = unsafe { GraphicsContext::new(&window, &window) } + .map_err(|e| anyhow::Error::msg(format!("Unable to initialize graphics context: {e}")))?; + + Ok(Self { + window, + event_loop, + graphics_context, + }) + } + + pub fn run(self, input_event_sender: mpsc::UnboundedSender) -> ! { + use std::io; + + let Self { + window, + event_loop, + mut graphics_context, + } = self; + + let (mut image_width, mut image_height) = { + let window_size = window.inner_size(); + ( + u16::try_from(window_size.width).unwrap(), + u16::try_from(window_size.height).unwrap(), + ) + }; + let mut image_buffer = vec![0; usize::from(image_width) * usize::from(image_height)]; + + let mut input_database = ironrdp_input::Database::new(); + + event_loop.run(move |event, _, control_flow| { + *control_flow = ControlFlow::Wait; + + let image_width = &mut image_width; + let image_height = &mut image_height; + let image_buffer = &mut image_buffer; + + match event { + Event::WindowEvent { window_id, event } if window_id == window.id() => match event { + WindowEvent::Resized(size) => { + input_event_sender + .send(RdpInputEvent::Resize { + width: u16::try_from(size.width).unwrap(), + height: u16::try_from(size.height).unwrap(), + }) + .expect("at least one GUI event listener"); + } + WindowEvent::CloseRequested => { + control_flow.set_exit(); + } + WindowEvent::DroppedFile(_) => { + // TODO: File upload + } + WindowEvent::ReceivedCharacter(_) => { + // TODO: Unicode mode + } + WindowEvent::KeyboardInput { input, .. } => { + let scancode = ironrdp_input::Scancode::from_u16(u16::try_from(input.scancode).unwrap()); + + let operation = match input.state { + event::ElementState::Pressed => ironrdp_input::Operation::KeyPressed(scancode), + event::ElementState::Released => ironrdp_input::Operation::KeyReleased(scancode), + }; + + let input_events = input_database.apply(std::iter::once(operation)); + + send_fast_path_events(&input_event_sender, input_events); + } + WindowEvent::ModifiersChanged(state) => { + const SHIFT_LEFT: ironrdp_input::Scancode = ironrdp_input::Scancode::from_u8(false, 0x2A); + const CONTROL_LEFT: ironrdp_input::Scancode = ironrdp_input::Scancode::from_u8(false, 0x1D); + const ALT_LEFT: ironrdp_input::Scancode = ironrdp_input::Scancode::from_u8(false, 0x38); + const LOGO_LEFT: ironrdp_input::Scancode = ironrdp_input::Scancode::from_u8(true, 0x5B); + + let mut operations = smallvec::SmallVec::<[ironrdp_input::Operation; 4]>::new(); + + let mut add_operation = |pressed: bool, scancode: ironrdp_input::Scancode| { + let operation = if pressed { + ironrdp_input::Operation::KeyPressed(scancode) + } else { + ironrdp_input::Operation::KeyReleased(scancode) + }; + operations.push(operation); + }; + + add_operation(state.shift(), SHIFT_LEFT); + add_operation(state.ctrl(), CONTROL_LEFT); + add_operation(state.alt(), ALT_LEFT); + add_operation(state.logo(), LOGO_LEFT); + + let input_events = input_database.apply(operations); + + send_fast_path_events(&input_event_sender, input_events); + } + WindowEvent::CursorMoved { position, .. } => { + let operation = ironrdp_input::Operation::MouseMove(ironrdp_input::MousePosition { + x: position.x as u16, + y: position.y as u16, + }); + + let input_events = input_database.apply(std::iter::once(operation)); + + send_fast_path_events(&input_event_sender, input_events); + } + WindowEvent::MouseWheel { delta, .. } => { + let mut operations = smallvec::SmallVec::<[ironrdp_input::Operation; 2]>::new(); + + match delta { + event::MouseScrollDelta::LineDelta(delta_x, delta_y) => { + if delta_x.abs() > 0.001 { + operations.push(ironrdp_input::Operation::WheelRotations( + ironrdp_input::WheelRotations { + is_vertical: false, + rotation_units: (delta_x * 100.) as i16, + }, + )); + } + + if delta_y.abs() > 0.001 { + operations.push(ironrdp_input::Operation::WheelRotations( + ironrdp_input::WheelRotations { + is_vertical: true, + rotation_units: (delta_y * 100.) as i16, + }, + )); + } + } + event::MouseScrollDelta::PixelDelta(_) => { + todo!() + } + }; + + let input_events = input_database.apply(operations); + + send_fast_path_events(&input_event_sender, input_events); + } + WindowEvent::MouseInput { state, button, .. } => { + let mouse_button = match button { + event::MouseButton::Left => ironrdp_input::MouseButton::Left, + event::MouseButton::Right => ironrdp_input::MouseButton::Right, + event::MouseButton::Middle => ironrdp_input::MouseButton::Middle, + event::MouseButton::Other(native_button) => { + if let Some(button) = ironrdp_input::MouseButton::from_native_button(native_button) { + button + } else { + return; + } + } + }; + + let operation = match state { + event::ElementState::Pressed => ironrdp_input::Operation::MouseButtonPressed(mouse_button), + event::ElementState::Released => { + ironrdp_input::Operation::MouseButtonReleased(mouse_button) + } + }; + + let input_events = input_database.apply(std::iter::once(operation)); + + send_fast_path_events(&input_event_sender, input_events); + } + _ => {} + }, + Event::RedrawRequested(window_id) if window_id == window.id() => { + graphics_context.set_buffer(image_buffer, *image_width, *image_height); + } + Event::UserEvent(RdpOutputEvent::Image { buffer, width, height }) => { + *image_buffer = buffer; + *image_width = width; + *image_height = height; + + graphics_context.set_buffer(image_buffer, width, height); + } + Event::UserEvent(RdpOutputEvent::Terminated(result)) => { + let exit_code = match result { + Ok(()) => { + println!("RDP successfully finished"); + exitcode::OK + } + Err(RdpError::Io(e)) + if e.kind() == io::ErrorKind::UnexpectedEof + || e.kind() == io::ErrorKind::ConnectionReset => + { + let e = anyhow::Error::from(e); + + error!("{:#}", e); + + println!("The server has terminated the RDP session"); + println!("{e:?}"); + + exitcode::NOHOST + } + Err(e) => { + let exit_code = match e { + RdpError::Io(_) => exitcode::IOERR, + RdpError::Connection(_) => exitcode::NOHOST, + _ => exitcode::PROTOCOL, + }; + + let e = anyhow::Error::from(e); + error!("{:#}", e); + println!("{e:?}"); + + exit_code + } + }; + + control_flow.set_exit_with_code(exit_code); + } + _ => {} + } + }) + } +} + +fn send_fast_path_events( + input_event_sender: &mpsc::UnboundedSender, + input_events: smallvec::SmallVec<[ironrdp::core::input::fast_path::FastPathInputEvent; 2]>, +) { + if !input_events.is_empty() { + input_event_sender + .send(RdpInputEvent::FastPath(input_events)) + .expect("at least one GUI event listener"); + } +} diff --git a/ironrdp-client/src/lib.rs b/ironrdp-client/src/lib.rs new file mode 100644 index 00000000..d17149b1 --- /dev/null +++ b/ironrdp-client/src/lib.rs @@ -0,0 +1,7 @@ +#[macro_use] +extern crate log; + +pub mod config; +pub mod gui; +pub mod rdp; +pub mod tls; diff --git a/ironrdp-client/src/main.rs b/ironrdp-client/src/main.rs new file mode 100644 index 00000000..a23d754e --- /dev/null +++ b/ironrdp-client/src/main.rs @@ -0,0 +1,61 @@ +#[macro_use] +extern crate log; + +use anyhow::Context as _; +use ironrdp_client::config::Config; +use ironrdp_client::gui::GuiContext; +use ironrdp_client::rdp::{RdpClient, RdpInputEvent}; +use tokio::runtime; + +fn main() -> anyhow::Result<()> { + let mut config = Config::parse_args().context("CLI arguments parsing")?; + + setup_logging(config.log_file.as_str()).context("Unable to initialize logging")?; + + debug!("Initialize GUI context"); + let gui = GuiContext::init().context("Unable to initialize GUI context")?; + debug!("GUI context initialized"); + + let window_size = gui.window.inner_size(); + config.input.width = u16::try_from(window_size.width).unwrap(); + config.input.height = u16::try_from(window_size.height).unwrap(); + + let event_loop_proxy = gui.event_loop.create_proxy(); + + let rt = runtime::Builder::new_multi_thread() + .enable_all() + .build() + .context("Unable to create tokio runtime")?; + + let (input_event_sender, input_event_receiver) = RdpInputEvent::create_channel(); + + let client = RdpClient { + config, + event_loop_proxy, + input_event_receiver, + }; + + debug!("Start RDP thread"); + std::thread::spawn(move || { + rt.block_on(client.run()); + }); + + debug!("Run GUI"); + gui.run(input_event_sender); +} + +fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { + fern::Dispatch::new() + .format(|out, message, record| { + out.finish(format_args!( + "{}[{}] {}", + chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S:%6f]"), + record.level(), + message + )) + }) + .chain(fern::log_file(log_file)?) + .apply()?; + + Ok(()) +} diff --git a/ironrdp-client/src/rdp.rs b/ironrdp-client/src/rdp.rs new file mode 100644 index 00000000..7c479ac0 --- /dev/null +++ b/ironrdp-client/src/rdp.rs @@ -0,0 +1,164 @@ +use futures_util::io::AsyncWriteExt as _; +use ironrdp::core::input::fast_path::FastPathInputEvent; +use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::session::connection_sequence::{process_connection_sequence, Address}; +use ironrdp::session::image::DecodedImage; +use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, RdpError}; +use smallvec::SmallVec; +use sspi::network_client::reqwest_network_client::RequestClientFactory; +use tokio::net::TcpStream; +use tokio::sync::mpsc; +use tokio_util::compat::TokioAsyncReadCompatExt as _; +use winit::event_loop::EventLoopProxy; + +use crate::config::Config; +use crate::tls::establish_tls; + +#[derive(Debug)] +pub enum RdpOutputEvent { + Image { buffer: Vec, width: u16, height: u16 }, + Terminated(Result<(), RdpError>), +} + +#[derive(Debug)] +pub enum RdpInputEvent { + Resize { width: u16, height: u16 }, + FastPath(SmallVec<[FastPathInputEvent; 2]>), +} + +impl RdpInputEvent { + pub fn create_channel() -> (mpsc::UnboundedSender, mpsc::UnboundedReceiver) { + mpsc::unbounded_channel() + } +} + +pub struct RdpClient { + pub config: Config, + pub event_loop_proxy: EventLoopProxy, + pub input_event_receiver: mpsc::UnboundedReceiver, +} + +impl RdpClient { + pub async fn run(mut self) { + loop { + match run_impl(&self.config, &self.event_loop_proxy, &mut self.input_event_receiver).await { + Ok(RdpControlFlow::ReconnectWithNewSize { width, height }) => { + self.config.input.width = width; + self.config.input.height = height; + } + Ok(RdpControlFlow::TerminatedGracefully) => { + let _ = self.event_loop_proxy.send_event(RdpOutputEvent::Terminated(Ok(()))); + } + Err(e) => { + let _ = self.event_loop_proxy.send_event(RdpOutputEvent::Terminated(Err(e))); + } + } + } + } +} + +enum RdpControlFlow { + ReconnectWithNewSize { width: u16, height: u16 }, + TerminatedGracefully, +} + +async fn run_impl( + config: &Config, + event_loop_proxy: &EventLoopProxy, + input_event_receiver: &mut mpsc::UnboundedReceiver, +) -> Result { + let addr = Address::lookup_addr(config.addr.clone())?; + + let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::Connection)?; + + let (connection_sequence_result, mut reader, mut writer) = process_connection_sequence( + stream.compat(), + &addr, + &config.input, + establish_tls, + Box::new(RequestClientFactory), + ) + .await?; + + let mut image = DecodedImage::new( + PixelFormat::RgbA32, + connection_sequence_result.desktop_size.width, + connection_sequence_result.desktop_size.height, + ); + + let mut active_stage = ActiveStageProcessor::new(config.input.clone(), None, connection_sequence_result); + + 'outer: loop { + tokio::select! { + frame = reader.read_frame() => { + let frame = frame?.ok_or(RdpError::AccessDenied)?.freeze(); + let outputs = active_stage.process(&mut image, frame)?; + for out in outputs { + match out { + ActiveStageOutput::ResponseFrame(frame) => writer.write_all(&frame).await?, + ActiveStageOutput::GraphicsUpdate(_region) => { + let buffer: Vec = image + .data() + .chunks_exact(4) + .map(|pixel| { + let r = pixel[0]; + let g = pixel[1]; + let b = pixel[2]; + u32::from_be_bytes([0, r, g, b]) + }) + .collect(); + + event_loop_proxy + .send_event(RdpOutputEvent::Image { + buffer, + width: image.width(), + height: image.height(), + }) + .map_err(|_| RdpError::Send("event_loop_proxy".to_owned()))?; + } + ActiveStageOutput::Terminate => break 'outer, + } + } + } + input_event = input_event_receiver.recv() => { + let input_event = input_event.ok_or_else(|| RdpError::Receive("gui_event_receiver".to_owned()))?; + + match input_event { + RdpInputEvent::Resize { mut width, mut height } => { + // TODO: Add support for Display Update Virtual Channel Extension + // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpedisp/d2954508-f487-48bc-8731-39743e0854a9 + // One approach when this extension is not available is to perform a connection from scratch again. + + // Find the last resize event + while let Ok(newer_event) = input_event_receiver.try_recv() { + if let RdpInputEvent::Resize { width: newer_width, height: newer_height } = newer_event { + width = newer_width; + height = newer_height; + } + } + + return Ok(RdpControlFlow::ReconnectWithNewSize { width, height }) + }, + RdpInputEvent::FastPath(events) => { + use ironrdp::core::input::fast_path::FastPathInput; + use ironrdp::core::PduParsing as _; + + trace!("Inputs: {events:?}"); + + // PERF: unnecessary copy + let fastpath_input = FastPathInput(events.into_vec()); + + let mut frame = Vec::new(); + fastpath_input + .to_buffer(&mut frame) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, format!("Unable to encode FastPathInput: {e}")))?; + + writer.write_all(&frame).await?; + } + } + } + } + } + + Ok(RdpControlFlow::TerminatedGracefully) +} diff --git a/ironrdp-client/src/tls.rs b/ironrdp-client/src/tls.rs new file mode 100644 index 00000000..7a6c7152 --- /dev/null +++ b/ironrdp-client/src/tls.rs @@ -0,0 +1,107 @@ +use std::io; + +use ironrdp::session::connection_sequence::UpgradedStream; +use ironrdp::session::RdpError; +use tokio::io::AsyncWriteExt as _; +use tokio::net::TcpStream; +use tokio_util::compat::TokioAsyncReadCompatExt as _; +use x509_parser::prelude::{FromDer as _, X509Certificate}; + +#[cfg(feature = "rustls")] +type TlsStream = tokio_util::compat::Compat>; + +#[cfg(all(feature = "native-tls", not(feature = "rustls")))] +type TlsStream = tokio_util::compat::Compat>; + +// TODO: this can be refactored into a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) +pub async fn establish_tls( + stream: tokio_util::compat::Compat, +) -> Result, RdpError> { + let stream = stream.into_inner(); + + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let mut tls_stream = { + let connector = async_native_tls::TlsConnector::new() + .danger_accept_invalid_certs(true) + .use_sni(false); + + // domain is an empty string because client accepts IP address in the cli + match connector.connect("", stream).await { + Ok(tls) => tls, + Err(err) => return Err(RdpError::TlsHandshake(err)), + } + }; + + #[cfg(feature = "rustls")] + let mut tls_stream = { + let mut client_config = tokio_rustls::rustls::client::ClientConfig::builder() + .with_safe_defaults() + .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) + .with_no_client_auth(); + // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) + client_config.key_log = std::sync::Arc::new(tokio_rustls::rustls::KeyLogFile::new()); + let rc_config = std::sync::Arc::new(client_config); + let example_com = "stub_string".try_into().unwrap(); + let connector = tokio_rustls::TlsConnector::from(rc_config); + connector.connect(example_com, stream).await? + }; + + tls_stream.flush().await?; + + #[cfg(all(feature = "native-tls", not(feature = "rustls")))] + let server_public_key = { + let cert = tls_stream + .peer_certificate() + .map_err(RdpError::TlsConnector)? + .ok_or(RdpError::MissingPeerCertificate)?; + get_tls_peer_pubkey(cert.to_der().map_err(RdpError::DerEncode)?)? + }; + + #[cfg(feature = "rustls")] + let server_public_key = { + let cert = tls_stream + .get_ref() + .1 + .peer_certificates() + .ok_or(RdpError::MissingPeerCertificate)?[0] + .as_ref(); + get_tls_peer_pubkey(cert.to_vec())? + }; + + Ok(UpgradedStream { + stream: tls_stream.compat(), + server_public_key, + }) +} + +fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { + let res = X509Certificate::from_der(&cert[..]) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; + let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; + + Ok(public_key.data.to_vec()) +} + +#[cfg(feature = "rustls")] +mod danger { + use std::time::SystemTime; + + use tokio_rustls::rustls::client::ServerCertVerified; + use tokio_rustls::rustls::{Certificate, Error, ServerName}; + + pub struct NoCertificateVerification; + + impl tokio_rustls::rustls::client::ServerCertVerifier for NoCertificateVerification { + fn verify_server_cert( + &self, + _end_entity: &Certificate, + _intermediates: &[Certificate], + _server_name: &ServerName, + _scts: &mut dyn Iterator, + _ocsp_response: &[u8], + _now: SystemTime, + ) -> Result { + Ok(tokio_rustls::rustls::client::ServerCertVerified::assertion()) + } + } +} diff --git a/ironrdp-graphics/src/rle.rs b/ironrdp-graphics/src/rle.rs index eefc1266..55118c87 100644 --- a/ironrdp-graphics/src/rle.rs +++ b/ironrdp-graphics/src/rle.rs @@ -10,10 +10,11 @@ //! - [interleaved.c](https://github.com/FreeRDP/FreeRDP/blob/db98f16e5bce003c898e8c85eb7af964f22a16a8/libfreerdp/codec/interleaved.c#L3) //! - [bitmap.c](https://github.com/FreeRDP/FreeRDP/blob/3a8dce07ea0262b240025bd68b63801578ca63f0/libfreerdp/codec/include/bitmap.c) -use bytes::BytesMut; use core::fmt; use std::ops::BitXor; +use bytes::BytesMut; + #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum RlePixelFormat { Rgb24, diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 1c660e73..74423bc7 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -8,44 +8,55 @@ use smallvec::SmallVec; // TODO: unicode keyboard event support -/// Number associated to a mouse button. -/// -/// Based on the MouseEvent.button property found in browsers APIs: -/// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button#value #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct MouseButton(u8); +#[repr(u8)] +pub enum MouseButton { + Left = 0, + Middle = 1, + Right = 2, + /// Typically Browser Back button + X1 = 3, + /// Typically Browser Forward button + X2 = 4, +} impl MouseButton { - const LEFT_VAL: u8 = 0; - const MIDDLE_VAL: u8 = 1; - const RIGHT_VAL: u8 = 2; - const X1_VAL: u8 = 3; - const X2_VAL: u8 = 4; - - pub const LEFT: Self = Self(Self::LEFT_VAL); - pub const MIDDLE: Self = Self(Self::MIDDLE_VAL); - pub const RIGHT: Self = Self(Self::RIGHT_VAL); - pub const X1: Self = Self(Self::X1_VAL); - pub const X2: Self = Self(Self::X2_VAL); - - pub fn is_unknown(self) -> bool { - self.0 > Self::X2.0 - } - pub fn as_idx(self) -> usize { - usize::from(self.0) + self as usize } -} -impl From for MouseButton { - fn from(value: u8) -> Self { - Self(value) + pub fn from_idx(idx: usize) -> Option { + match idx { + 0 => Some(Self::Left), + 1 => Some(Self::Middle), + 2 => Some(Self::Right), + 3 => Some(Self::X1), + 4 => Some(Self::X2), + _ => None, + } } -} -impl From for u8 { - fn from(value: MouseButton) -> Self { - value.0 + pub fn from_web_button(value: u8) -> Option { + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button#value + match value { + 0 => Some(Self::Left), + 1 => Some(Self::Middle), + 2 => Some(Self::Right), + 3 => Some(Self::X1), + 4 => Some(Self::X2), + _ => None, + } + } + + pub fn from_native_button(value: u16) -> Option { + match value { + 1 => Some(Self::Left), + 2 => Some(Self::Middle), + 3 => Some(Self::Right), + 8 => Some(Self::X1), + 9 => Some(Self::X2), + _ => None, + } } } @@ -57,6 +68,16 @@ pub struct Scancode { } impl Scancode { + pub const fn from_u8(extended: bool, code: u8) -> Self { + Self { code, extended } + } + + pub const fn from_u16(scancode: u16) -> Self { + let extended = scancode & 0xE000 == 0xE000; + let code = scancode as u8; + Self { code, extended } + } + pub fn as_idx(self) -> usize { if self.extended { usize::from(self.code) + 256 @@ -64,35 +85,29 @@ impl Scancode { usize::from(self.code) } } + + pub fn as_u8(self) -> (bool, u8) { + (self.extended, self.code) + } + + pub fn as_u16(self) -> u16 { + if self.extended { + u16::from(self.code) | 0xE000 + } else { + u16::from(self.code) + } + } } -impl From<(u8, bool)> for Scancode { - fn from((code, extended): (u8, bool)) -> Self { - Self { code, extended } +impl From<(bool, u8)> for Scancode { + fn from((extended, code): (bool, u8)) -> Self { + Self::from_u8(extended, code) } } impl From for Scancode { fn from(code: u16) -> Self { - let extended = code & 0xE000 == 0xE000; - let code = code as u8; - Self { code, extended } - } -} - -impl From for u8 { - fn from(value: Scancode) -> Self { - value.code - } -} - -impl From for u16 { - fn from(value: Scancode) -> Self { - if value.extended { - u16::from(value.code) | 0xE000 - } else { - u16::from(value.code) - } + Self::from_u16(code) } } @@ -182,10 +197,6 @@ impl Database { for operation in transaction { match operation { Operation::MouseButtonPressed(button) => { - if button.is_unknown() { - continue; - } - let was_pressed = self.mouse_buttons.replace(button.as_idx(), true); if !was_pressed { @@ -207,10 +218,6 @@ impl Database { } } Operation::MouseButtonReleased(button) => { - if button.is_unknown() { - continue; - } - let was_pressed = self.mouse_buttons.replace(button.as_idx(), false); if was_pressed { @@ -264,11 +271,11 @@ impl Database { if was_pressed { events.push(FastPathInputEvent::KeyboardEvent( flags | KeyboardFlags::RELEASE, - u8::from(scancode), + scancode.code, )); } - events.push(FastPathInputEvent::KeyboardEvent(flags, u8::from(scancode))); + events.push(FastPathInputEvent::KeyboardEvent(flags, scancode.code)); } Operation::KeyReleased(scancode) => { let was_pressed = self.keyboard.replace(scancode.as_idx(), false); @@ -280,7 +287,7 @@ impl Database { }; if was_pressed { - events.push(FastPathInputEvent::KeyboardEvent(flags, u8::from(scancode))); + events.push(FastPathInputEvent::KeyboardEvent(flags, scancode.code)); } } } @@ -294,9 +301,9 @@ impl Database { let mut events = SmallVec::new(); for idx in self.mouse_buttons.iter_ones() { - let button_id = u8::try_from(idx).unwrap(); + let button = MouseButton::from_idx(idx).expect("in-range index"); - let event = match MouseButtonFlags::from(MouseButton::from(button_id)) { + let event = match MouseButtonFlags::from(button) { MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { flags, number_of_wheel_rotation_units: 0, @@ -368,13 +375,12 @@ enum MouseButtonFlags { impl From for MouseButtonFlags { fn from(value: MouseButton) -> Self { - match value.0 { - MouseButton::LEFT_VAL => Self::Button(PointerFlags::LEFT_BUTTON), - MouseButton::MIDDLE_VAL => Self::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL), - MouseButton::RIGHT_VAL => Self::Button(PointerFlags::RIGHT_BUTTON), - MouseButton::X1_VAL => Self::Pointer(PointerXFlags::BUTTON1), - MouseButton::X2_VAL => Self::Pointer(PointerXFlags::BUTTON2), - _ => Self::Button(PointerFlags::empty()), + match value { + MouseButton::Left => Self::Button(PointerFlags::LEFT_BUTTON), + MouseButton::Middle => Self::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL), + MouseButton::Right => Self::Button(PointerFlags::RIGHT_BUTTON), + MouseButton::X1 => Self::Pointer(PointerXFlags::BUTTON1), + MouseButton::X2 => Self::Pointer(PointerXFlags::BUTTON2), } } } diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index 3eb21c58..7f247d65 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -11,9 +11,9 @@ enum MouseFlags { } #[rstest] -#[case::left(MouseButton::LEFT, MouseFlags::Button(PointerFlags::LEFT_BUTTON))] -#[case::middle(MouseButton::MIDDLE, MouseFlags::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL))] -#[case::right(MouseButton::RIGHT, MouseFlags::Button(PointerFlags::RIGHT_BUTTON))] +#[case::left(MouseButton::Left, MouseFlags::Button(PointerFlags::LEFT_BUTTON))] +#[case::middle(MouseButton::Middle, MouseFlags::Button(PointerFlags::MIDDLE_BUTTON_OR_WHEEL))] +#[case::right(MouseButton::Right, MouseFlags::Button(PointerFlags::RIGHT_BUTTON))] #[case::x1(MouseButton::X1, MouseFlags::Pointer(PointerXFlags::BUTTON1))] #[case::x2(MouseButton::X2, MouseFlags::Pointer(PointerXFlags::BUTTON2))] fn mouse_buttons(#[case] button: MouseButton, #[case] expected_flag: MouseFlags) { @@ -68,12 +68,12 @@ fn keyboard() { { let to_press = [ - Operation::KeyPressed(Scancode::from((0, false))), - Operation::KeyPressed(Scancode::from((23, false))), - Operation::KeyPressed(Scancode::from((39, false))), - Operation::KeyPressed(Scancode::from((19, true))), - Operation::KeyPressed(Scancode::from((20, true))), - Operation::KeyPressed(Scancode::from((90, false))), + Operation::KeyPressed(Scancode::from_u8(false, 0)), + Operation::KeyPressed(Scancode::from_u8(false, 23)), + Operation::KeyPressed(Scancode::from_u8(false, 39)), + Operation::KeyPressed(Scancode::from_u8(true, 19)), + Operation::KeyPressed(Scancode::from_u8(true, 20)), + Operation::KeyPressed(Scancode::from_u8(false, 90)), ]; let expected_inputs = [ @@ -102,12 +102,12 @@ fn keyboard() { { let to_press = [ - Operation::KeyReleased(Scancode::from((0, false))), - Operation::KeyReleased(Scancode::from((2, false))), - Operation::KeyReleased(Scancode::from((3, false))), - Operation::KeyReleased(Scancode::from((19, true))), - Operation::KeyReleased(Scancode::from((20, true))), - Operation::KeyReleased(Scancode::from((100, false))), + Operation::KeyReleased(Scancode::from_u8(false, 0)), + Operation::KeyReleased(Scancode::from_u8(false, 2)), + Operation::KeyReleased(Scancode::from_u8(false, 3)), + Operation::KeyReleased(Scancode::from_u8(true, 19)), + Operation::KeyReleased(Scancode::from_u8(true, 20)), + Operation::KeyReleased(Scancode::from_u8(false, 100)), ]; let expected_inputs = [ @@ -134,17 +134,17 @@ fn keyboard_repeat() { let mut db = Database::default(); let to_press = [ - Operation::KeyPressed(Scancode::from((0, false))), - Operation::KeyPressed(Scancode::from((0, false))), - Operation::KeyPressed(Scancode::from((0, false))), - Operation::KeyPressed(Scancode::from((20, false))), - Operation::KeyPressed(Scancode::from((90, false))), - Operation::KeyPressed(Scancode::from((90, false))), - Operation::KeyReleased(Scancode::from((90, false))), - Operation::KeyReleased(Scancode::from((90, false))), - Operation::KeyPressed(Scancode::from((20, false))), - Operation::KeyReleased(Scancode::from((120, false))), - Operation::KeyReleased(Scancode::from((90, false))), + Operation::KeyPressed(Scancode::from_u8(false, 0)), + Operation::KeyPressed(Scancode::from_u8(false, 0)), + Operation::KeyPressed(Scancode::from_u8(false, 0)), + Operation::KeyPressed(Scancode::from_u8(false, 20)), + Operation::KeyPressed(Scancode::from_u8(false, 90)), + Operation::KeyPressed(Scancode::from_u8(false, 90)), + Operation::KeyReleased(Scancode::from_u8(false, 90)), + Operation::KeyReleased(Scancode::from_u8(false, 90)), + Operation::KeyPressed(Scancode::from_u8(false, 20)), + Operation::KeyReleased(Scancode::from_u8(false, 120)), + Operation::KeyReleased(Scancode::from_u8(false, 90)), ]; let expected_inputs = [ @@ -172,15 +172,15 @@ fn mouse_button_no_duplicate() { let mut db = Database::default(); let to_press = [ - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::RIGHT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::RIGHT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonReleased(MouseButton::RIGHT), - Operation::MouseButtonPressed(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Right), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Right), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonReleased(MouseButton::Right), + Operation::MouseButtonPressed(MouseButton::Right), ]; let expected_inputs = [ @@ -220,20 +220,20 @@ fn release_all() { let mut db = Database::default(); let ops = [ - Operation::KeyPressed(Scancode::from((0, false))), - Operation::KeyPressed(Scancode::from((23, false))), - Operation::KeyPressed(Scancode::from((39, false))), - Operation::KeyPressed(Scancode::from((19, true))), - Operation::KeyPressed(Scancode::from((20, true))), - Operation::KeyPressed(Scancode::from((90, false))), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::RIGHT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonPressed(MouseButton::MIDDLE), - Operation::MouseButtonPressed(MouseButton::RIGHT), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::MouseButtonReleased(MouseButton::RIGHT), + Operation::KeyPressed(Scancode::from_u8(false, 0)), + Operation::KeyPressed(Scancode::from_u8(false, 23)), + Operation::KeyPressed(Scancode::from_u8(false, 39)), + Operation::KeyPressed(Scancode::from_u8(true, 19)), + Operation::KeyPressed(Scancode::from_u8(true, 20)), + Operation::KeyPressed(Scancode::from_u8(false, 90)), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Right), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonPressed(MouseButton::Middle), + Operation::MouseButtonPressed(MouseButton::Right), + Operation::MouseButtonPressed(MouseButton::Left), + Operation::MouseButtonReleased(MouseButton::Right), ]; let _ = db.apply(ops); diff --git a/ironrdp-input/tests/smoke.rs b/ironrdp-input/tests/smoke.rs index c77d4492..4c9625be 100644 --- a/ironrdp-input/tests/smoke.rs +++ b/ironrdp-input/tests/smoke.rs @@ -5,8 +5,13 @@ use proptest::collection::vec; use proptest::prelude::*; fn mouse_button() -> impl Strategy { - // Generate a few "out of bounds" buttons - (0..10u8).prop_map(MouseButton::from) + prop_oneof![ + Just(MouseButton::Left), + Just(MouseButton::Middle), + Just(MouseButton::Right), + Just(MouseButton::X1), + Just(MouseButton::X2), + ] } fn mouse_button_op() -> impl Strategy { @@ -17,7 +22,7 @@ fn mouse_button_op() -> impl Strategy { } fn scancode() -> impl Strategy { - (any::(), any::()).prop_map(Scancode::from) + (any::(), any::()).prop_map(Scancode::from) } fn key_op() -> impl Strategy { @@ -40,12 +45,9 @@ fn smoke_mouse_buttons() { db.apply(std::iter::once(op.clone())); match op { - Operation::MouseButtonPressed(button) if !button.is_unknown() => { + Operation::MouseButtonPressed(button) => { ensure!(db.is_mouse_button_pressed(button)) } - Operation::MouseButtonPressed(button) if button.is_unknown() => { - ensure!(!db.is_mouse_button_pressed(button)) - } Operation::MouseButtonReleased(button) => ensure!(!db.is_mouse_button_pressed(button)), _ => bail!("unexpected case"), } diff --git a/ironrdp-session/src/active_session/codecs/rfx/tests.rs b/ironrdp-session/src/active_session/codecs/rfx/tests.rs index 76199b0a..1f685c66 100644 --- a/ironrdp-session/src/active_session/codecs/rfx/tests.rs +++ b/ironrdp-session/src/active_session/codecs/rfx/tests.rs @@ -16,7 +16,11 @@ fn decode_decodes_valid_sequence_of_messages() { let mut data = ENCODED_MESSAGES.as_ref(); let expected = DECODED_IMAGE.as_ref(); - let mut image = DecodedImage::new(PixelFormat::BgrX32, IMAGE_WIDTH as u32, IMAGE_HEIGHT as u32); + let mut image = DecodedImage::new( + PixelFormat::BgrX32, + IMAGE_WIDTH.try_into().unwrap(), + IMAGE_HEIGHT.try_into().unwrap(), + ); let mut handler = DecodingContext::default(); diff --git a/ironrdp-session/src/errors.rs b/ironrdp-session/src/errors.rs index 26d460b7..b5475186 100644 --- a/ironrdp-session/src/errors.rs +++ b/ironrdp-session/src/errors.rs @@ -103,8 +103,8 @@ pub enum RdpError { UnexpectedStreamTermination, #[error("Unable to send message on channel {0}")] Send(String), - #[error("Unable to recieve message on channel {0}")] - Recieve(String), + #[error("Unable to receive message on channel {0}")] + Receive(String), #[error("Lock poisoned")] LockPoisoned, #[cfg(all(feature = "native-tls", not(feature = "rustls")))] @@ -131,7 +131,7 @@ impl From> for RdpError { impl From for RdpError { fn from(e: RecvError) -> Self { - RdpError::Recieve(e.to_string()) + RdpError::Receive(e.to_string()) } } diff --git a/ironrdp-session/src/image.rs b/ironrdp-session/src/image.rs index 09f9beb7..290e6529 100644 --- a/ironrdp-session/src/image.rs +++ b/ironrdp-session/src/image.rs @@ -11,15 +11,13 @@ const SOURCE_STRIDE: u16 = TILE_SIZE * SOURCE_PIXEL_FORMAT.bytes_per_pixel() as pub struct DecodedImage { pixel_format: PixelFormat, data: Vec, - width: u32, - height: u32, + width: u16, + height: u16, } impl DecodedImage { - pub fn new(pixel_format: PixelFormat, width: u32, height: u32) -> Self { - let len = usize::try_from(width).unwrap() - * usize::try_from(height).unwrap() - * usize::from(pixel_format.bytes_per_pixel()); + pub fn new(pixel_format: PixelFormat, width: u16, height: u16) -> Self { + let len = usize::from(width) * usize::from(height) * usize::from(pixel_format.bytes_per_pixel()); Self { pixel_format, @@ -37,11 +35,11 @@ impl DecodedImage { &self.data } - pub fn width(&self) -> u32 { + pub fn width(&self) -> u16 { self.width } - pub fn height(&self) -> u32 { + pub fn height(&self) -> u16 { self.height } @@ -86,6 +84,7 @@ impl DecodedImage { Ok(()) } + // FIXME: this assumes PixelFormat::RgbA32 pub(crate) fn apply_rgb16_bitmap(&mut self, rgb16: &[u8], update_rectangle: &Rectangle) { const SRC_COLOR_DEPTH: usize = 2; const DST_COLOR_DEPTH: usize = 4; From 095322770029cfbd09e721ca75d88d973636329f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 17 Mar 2023 14:13:35 -0400 Subject: [PATCH 0143/1273] fix(client): better address / hostname handling (#95) --- ironrdp-client-glutin/src/main.rs | 2 +- ironrdp-client/src/config.rs | 6 +++++- ironrdp-client/src/gui.rs | 5 +++++ ironrdp-client/src/rdp.rs | 9 ++++++++- ironrdp-session/src/connection_sequence.rs | 17 ++++++++++------- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/ironrdp-client-glutin/src/main.rs b/ironrdp-client-glutin/src/main.rs index 3c7f0aaa..7639e974 100644 --- a/ironrdp-client-glutin/src/main.rs +++ b/ironrdp-client-glutin/src/main.rs @@ -102,7 +102,7 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { } async fn run(config: Config) -> Result<(), RdpError> { - let addr = ironrdp::session::connection_sequence::Address::lookup_addr(config.addr.clone())?; + let addr = ironrdp::session::connection_sequence::Address::lookup_addr(&config.addr)?; let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::Connection)?; diff --git a/ironrdp-client/src/config.rs b/ironrdp-client/src/config.rs index 05db1e7f..7815ffb5 100644 --- a/ironrdp-client/src/config.rs +++ b/ironrdp-client/src/config.rs @@ -142,7 +142,7 @@ impl Config { pub fn parse_args() -> anyhow::Result { let args = Args::parse(); - let addr = if let Some(addr) = args.addr { + let mut addr = if let Some(addr) = args.addr { addr } else { inquire::Text::new("Server address:") @@ -150,6 +150,10 @@ impl Config { .context("Address prompt")? }; + if addr.find(':').is_none() { + addr.push_str(":3389"); + } + let username = if let Some(username) = args.username { username } else { diff --git a/ironrdp-client/src/gui.rs b/ironrdp-client/src/gui.rs index 21d86aec..7d4fc69a 100644 --- a/ironrdp-client/src/gui.rs +++ b/ironrdp-client/src/gui.rs @@ -232,6 +232,11 @@ impl GuiContext { control_flow.set_exit_with_code(exit_code); } + Event::LoopDestroyed => { + input_event_sender + .send(RdpInputEvent::Close) + .expect("at least one GUI event listener"); + } _ => {} } }) diff --git a/ironrdp-client/src/rdp.rs b/ironrdp-client/src/rdp.rs index 7c479ac0..506b0ebb 100644 --- a/ironrdp-client/src/rdp.rs +++ b/ironrdp-client/src/rdp.rs @@ -24,6 +24,7 @@ pub enum RdpOutputEvent { pub enum RdpInputEvent { Resize { width: u16, height: u16 }, FastPath(SmallVec<[FastPathInputEvent; 2]>), + Close, } impl RdpInputEvent { @@ -48,9 +49,11 @@ impl RdpClient { } Ok(RdpControlFlow::TerminatedGracefully) => { let _ = self.event_loop_proxy.send_event(RdpOutputEvent::Terminated(Ok(()))); + break; } Err(e) => { let _ = self.event_loop_proxy.send_event(RdpOutputEvent::Terminated(Err(e))); + break; } } } @@ -67,7 +70,7 @@ async fn run_impl( event_loop_proxy: &EventLoopProxy, input_event_receiver: &mut mpsc::UnboundedReceiver, ) -> Result { - let addr = Address::lookup_addr(config.addr.clone())?; + let addr = Address::lookup_addr(&config.addr)?; let stream = TcpStream::connect(addr.sock).await.map_err(RdpError::Connection)?; @@ -155,6 +158,10 @@ async fn run_impl( writer.write_all(&frame).await?; } + RdpInputEvent::Close => { + // TODO: should we send a connection close to server? + break 'outer; + } } } } diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 60cddae8..610dcfac 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -48,9 +48,12 @@ pub struct Address { } impl Address { - pub fn lookup_addr(hostname: String) -> io::Result { + // TODO: use a custom type holding a hostname and a port explicitely similar to a (String, u16) tuple + pub fn lookup_addr(addr: &str) -> io::Result { use std::net::ToSocketAddrs as _; - let sockaddr = hostname.to_socket_addrs()?.next().unwrap(); + let sockaddr = addr.to_socket_addrs()?.next().unwrap(); + let port_segment_idx = addr.rfind(':').unwrap(); // there must be a port + let hostname = addr[..port_segment_idx].to_owned(); Ok(Self { hostname, sock: sockaddr, @@ -111,7 +114,7 @@ where &mut stream, config.credentials.clone(), server_public_key, - &addr.hostname, + addr.hostname.clone(), network_client_factory, ) .await?; @@ -248,7 +251,7 @@ where &mut stream, config.credentials.clone(), server_public_key, - fqdn, + fqdn.to_owned(), network_client_factory, ) .await?; @@ -354,12 +357,12 @@ pub async fn process_cred_ssp( mut stream: impl AsyncRead + AsyncWrite + Unpin, credentials: sspi::AuthIdentity, server_public_key: Vec, - addr: &str, + hostname: String, network_client_factory: Box, ) -> Result<(), RdpError> { use sspi::ntlm::NtlmConfig; - let service_principal_name = format!("TERMSRV/{addr}"); + let service_principal_name = format!("TERMSRV/{hostname}"); let mut cred_ssp_client = credssp::CredSspClient::new( server_public_key, @@ -368,7 +371,7 @@ pub async fn process_cred_ssp( credssp::ClientMode::Negotiate(NegotiateConfig { protocol_config: Box::::default(), package_list: None, - hostname: addr.to_owned(), + hostname, network_client_factory, }), service_principal_name, From 2a842540b61530991a31f9e6d1411a9681040766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 20 Mar 2023 14:44:20 -0400 Subject: [PATCH 0144/1273] feat(wasm): API to provide target hostname and domain (#96) --- ffi/wasm/Cargo.lock | 1 - ffi/wasm/src/session.rs | 30 ++++++++++++++++------ ironrdp-session/src/connection_sequence.rs | 4 +-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/ffi/wasm/Cargo.lock b/ffi/wasm/Cargo.lock index 3e77effe..49876eaf 100644 --- a/ffi/wasm/Cargo.lock +++ b/ffi/wasm/Cargo.lock @@ -730,7 +730,6 @@ dependencies = [ "byteorder", "der-parser", "lazy_static", - "log", "md-5 0.10.5", "num-bigint", "num-derive 0.3.3", diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index b3d84622..22dfc637 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -29,8 +29,10 @@ pub struct SessionBuilder(Rc>); #[derive(Default)] struct SessionBuilderInner { username: Option, + hostname: Option, + domain: Option, password: Option, - address: Option, + gateway_address: Option, auth_token: Option, update_callback: Option, update_callback_context: Option, @@ -47,13 +49,23 @@ impl SessionBuilder { self.clone() } + pub fn hostname(&self, hostname: String) -> SessionBuilder { + self.0.borrow_mut().hostname = Some(hostname); + self.clone() + } + + pub fn domain(&self, domain: String) -> SessionBuilder { + self.0.borrow_mut().domain = Some(domain); + self.clone() + } + pub fn password(&self, password: String) -> SessionBuilder { self.0.borrow_mut().password = Some(password); self.clone() } - pub fn address(&self, address: String) -> SessionBuilder { - self.0.borrow_mut().address = Some(address); + pub fn gateway_address(&self, address: String) -> SessionBuilder { + self.0.borrow_mut().gateway_address = Some(address); self.clone() } @@ -73,13 +85,15 @@ impl SessionBuilder { } pub async fn connect(&self) -> Result { - let (username, password, address, auth_token, update_callback, update_callback_context); + let (username, hostname, domain, password, gateway_address, auth_token, update_callback, update_callback_context); { let inner = self.0.borrow(); username = inner.username.clone().expect("username"); + hostname = inner.hostname.clone().expect("hostname"); + domain = inner.domain.clone(); password = inner.password.clone().expect("password"); - address = inner.address.clone().expect("address"); + gateway_address = inner.gateway_address.clone().expect("gateway_address"); auth_token = inner.auth_token.clone().expect("auth_token"); update_callback = inner.update_callback.clone().expect("update_callback"); update_callback_context = inner.update_callback_context.clone().expect("update_callback_context"); @@ -87,13 +101,13 @@ impl SessionBuilder { info!("Connect to RDP host"); - let input_config = build_input_config(username, password, None); + let input_config = build_input_config(username, password, domain); - let ws = WebSocketCompat::new(WebSocket::open(&address).context("Couldn’t open WebSocket")?); + let ws = WebSocketCompat::new(WebSocket::open(&gateway_address).context("Couldn’t open WebSocket")?); let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( ws, - "MY-FQDN", + hostname, auth_token, &input_config, Box::new(PlaceholderNetworkClientFactory), diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 610dcfac..723ab1c7 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -219,7 +219,7 @@ where #[cfg(feature = "dgw_ext")] pub async fn process_connection_sequence( stream: S, - fqdn: &str, + target_hostname: String, proxy_auth_token: String, config: &InputConfig, network_client_factory: Box, @@ -251,7 +251,7 @@ where &mut stream, config.credentials.clone(), server_public_key, - fqdn.to_owned(), + target_hostname, network_client_factory, ) .await?; From 39ecb06da0a0bd3c00033befc35fe979bfb018d5 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Tue, 21 Mar 2023 08:55:15 -0400 Subject: [PATCH 0145/1273] Use the new api for hostname and domain (#97) * Modify calls to use the new api * Bump version --- iron-remote-gui/package.json | 2 +- iron-remote-gui/public/package.json | 2 +- iron-remote-gui/src/iron-remote-gui.svelte | 16 ++++----- .../src/services/server-bridge.service.ts | 18 +++++----- .../src/services/user-interaction-service.ts | 36 +++++++++---------- .../src/services/wasm-bridge.service.ts | 6 ++-- iron-svelte-client/src/lib/login/login.svelte | 18 +++++++--- 7 files changed, 55 insertions(+), 43 deletions(-) diff --git a/iron-remote-gui/package.json b/iron-remote-gui/package.json index 926616a8..9dc1c9d5 100644 --- a/iron-remote-gui/package.json +++ b/iron-remote-gui/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.3.0", + "version": "0.5.0", "type": "module", "private": true, "scripts": { diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index b6718b85..29c6570b 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.4.6", + "version": "0.5.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte index 02ae8097..19665047 100644 --- a/iron-remote-gui/src/iron-remote-gui.svelte +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -7,7 +7,6 @@ import {ScreenScale, userInteractionService} from "./services/user-interaction-service"; import {loggingService} from "./services/logging.service"; import type {ResizeEvent} from "./services/server-bridge.service"; - import {throttleTime} from "rxjs/operators"; export let scale = 'real'; export let targetplatform: 'web' | 'native' = 'web'; @@ -30,7 +29,7 @@ function initListeners() { serverBridgeListeners(); userInteractionListeners(); - + window.addEventListener('keydown', keyboardEvent, false); window.addEventListener('keyup', keyboardEvent, false); } @@ -208,11 +207,11 @@ function setMouseButtonState(state, isDown) { userInteractionService.setMouseButtonState(state, isDown); } - + function mouseWheel(evt) { userInteractionService.mouseWheel(evt); } - + function setMouseIn(evt) { capturingInputs = true; userInteractionService.mouseIn(evt); @@ -222,7 +221,7 @@ capturingInputs = false; userInteractionService.mouseOut(evt); } - + function keyboardEvent(evt) { userInteractionService.sendKeyboardEvent(evt); } @@ -280,7 +279,8 @@ }); -
      ; + abstract connect(username: string, password: string, hostname: string, gatewayAddress: string, domain: string, authToken: string): Observable; abstract resize: Observable; abstract updateImage: Observable; abstract mouseButtonState(mouse_button: MouseButton, state: MouseButtonState): void; - + abstract updateMousePosition(mouse_x: number, mouse_y: number): void; - + abstract sendKeyboard(evt: any): void; - - abstract releaseAllInputs():void; - - abstract sendSpecialCombination(specialCombination: SpecialCombination):void; - + + abstract releaseAllInputs(): void; + + abstract sendSpecialCombination(specialCombination: SpecialCombination): void; + abstract syncModifier(evt: any): void; - + abstract mouseWheel(vertical: boolean, rotation: number): void; } diff --git a/iron-remote-gui/src/services/user-interaction-service.ts b/iron-remote-gui/src/services/user-interaction-service.ts index 960b5e99..0d0cff6e 100644 --- a/iron-remote-gui/src/services/user-interaction-service.ts +++ b/iron-remote-gui/src/services/user-interaction-service.ts @@ -21,13 +21,13 @@ export interface IRGUserInteraction { setMouseButtonState(event: MouseEvent, isDown: boolean); setVisibility(state: boolean); - + setScale(scale: ScreenScale); - connect(username: string, password: string, host: string, authtoken: string): Observable; + connect(username: string, password: string, hostname: string, gatewayAddress: string, domain: string, authToken: string): Observable; ctrlAltDel(); - + metaKey(); sessionListener: Observable; @@ -42,37 +42,37 @@ export class UserInteractionService { private changeVisibility: Subject = new Subject(); changeVisibilityObservable: Observable = this.changeVisibility.asObservable(); - + private sessionEvent: Subject = new Subject(); sessionObserver: Observable = this.sessionEvent.asObservable(); private serverBridge: ServerBridgeService; - + private scale: BehaviorSubject = new BehaviorSubject(ScreenScale.Fit); scaleObserver: Observable = this.scale.asObservable(); - + private canvas: HTMLCanvasElement; - + private keyboardActive: boolean; setServerBridge(serverBridge: ServerBridgeService) { this.serverBridge = serverBridge; } - + setCanvas(canvas: HTMLCanvasElement) { this.canvas = canvas; } - - connect(username: string, password: string, host: string, authtoken: string): Observable { + + connect(username: string, password: string, hostname: string, gatewayAddress: string, domain: string, authToken: string): Observable { loggingService.info('Initializing connection.'); - return this.serverBridge.connect(username, password, host, authtoken); + return this.serverBridge.connect(username, password, hostname, gatewayAddress, domain, authToken); } - + mouseIn(event: MouseEvent) { this.serverBridge.syncModifier(event); this.keyboardActive = true; } - + mouseOut(event: MouseEvent) { this.keyboardActive = false; this.serverBridge?.releaseAllInputs(); @@ -96,15 +96,15 @@ export class UserInteractionService { this.serverBridge.sendKeyboard(evt); } } - + ctrlAltDel() { this.sendSpecialCombination(SpecialCombination.CTRL_ALT_DEL); } - + metaKey() { this.sendSpecialCombination(SpecialCombination.META); } - + private sendSpecialCombination(combination: SpecialCombination) { this.serverBridge.sendSpecialCombination(combination); } @@ -121,13 +121,13 @@ export class UserInteractionService { raiseSessionEvent(event: SessionEvent) { this.sessionEvent.next(event); } - + mouseWheel(event) { let vertical = event.deltaY !== 0; let rotations = vertical ? event.deltaY : event.deltaX; this.serverBridge.mouseWheel(vertical, -rotations); } - + exposedFunctions: IRGUserInteraction = { setMousePosition: this.setMousePosition.bind(this), setMouseButtonState: this.setMouseButtonState.bind(this), diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/iron-remote-gui/src/services/wasm-bridge.service.ts index 4f012b58..4a64fe09 100644 --- a/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -81,9 +81,11 @@ export class WasmBridgeService implements ServerBridgeService { }); } - connect(username: string, password: string, address: string, authToken: string): Observable { + connect(username: string, password: string, hostname: string, gatewayAddress: string, domain: string, authToken: string): Observable { const sessionBuilder = SessionBuilder.new(); - sessionBuilder.address(address); + sessionBuilder.gateway_address(gatewayAddress); + sessionBuilder.hostname(hostname); + sessionBuilder.domain(domain); sessionBuilder.password(password); sessionBuilder.auth_token(authToken); sessionBuilder.username(username); diff --git a/iron-svelte-client/src/lib/login/login.svelte b/iron-svelte-client/src/lib/login/login.svelte index 55678d16..f05e1ba0 100644 --- a/iron-svelte-client/src/lib/login/login.svelte +++ b/iron-svelte-client/src/lib/login/login.svelte @@ -8,7 +8,9 @@ let username = "Administrator"; let password = "DevoLabs123!"; - let host = "ws://localhost:7172/jet/rdp"; //"10.10.0.3:3389"; + let gatewayAddress = "ws://localhost:7172/jet/rdp"; + let hostname = "10.10.0.3:3389"; + let domain = ""; let authtoken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkFTU09DSUFUSU9OIn0.eyJkc3RfaHN0IjoiMTAuMTAuMC4zIiwiZXhwIjoxNjcxMTIwNjE0LCJqZXRfYWlkIjoiOWMwODAwNTktMDMzOS00MjJhLTgxODgtODEzNGJjOTc3MzczIiwiamV0X2FwIjoicmRwIiwiamV0X2NtIjoiZndkIiwianRpIjoiOTAzMDNlMDUtMzg5MC00OGQ3LTgxMTYtYWJmYzAwYWNlMTUxIiwibmJmIjoxNjcxMTE5NzE0fQ.JdT4KSyB2Zf3OcEA44Hmmc59cqx6KApXrFoJf_gIQwU8VqYWMnSMqENMyYw4CLDKj31tgUlSjWkHLj2wELZCOWFtsbONJqTWIc8mkCpnlbGVWIaNm7MISZXAS2p1LF1nsv9kzCJNvWK2AgfjsiZ4TBIUrhLa1dCRfuLsNaABotjcTJFvVCZUaadejeFDA6S2YbvQQHOjztIKJsg3zKkvTOpB_cZvRv9yDSgW09wXS0MOsnLqzmiLMd-9IPEkkwQ4oe9e6-AJI3OXZogkJDTcE0xdHlMSUG6JVwowt9FHervTn1n3nuN1ZKARvDbEsHJsLxPI1w2eqlZvPkqfKw5oqA"; let toastMessage: string; @@ -45,7 +47,7 @@ type: 'info', message: 'Connection in progress...' }); - userInteraction.connect(username, password, host, authtoken) + userInteraction.connect(username, password, hostname, gatewayAddress, domain, authtoken) .pipe( catchError(err => { toast.set({ @@ -100,8 +102,12 @@
      - - + + +
      +
      + +
      @@ -111,6 +117,10 @@
      +
      + + +
      From 46c8602563bd4125f62d2d882c96c063b70b78a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 21 Mar 2023 12:22:05 -0400 Subject: [PATCH 0146/1273] fix(wasm): treat empty domain name as None value --- ffi/wasm/src/session.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index 22dfc637..bf014c21 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -55,7 +55,11 @@ impl SessionBuilder { } pub fn domain(&self, domain: String) -> SessionBuilder { - self.0.borrow_mut().domain = Some(domain); + self.0.borrow_mut().domain = if domain.is_empty() { + None + } else { + Some(domain) + }; self.clone() } From ef1c191fc8f9f7ea9cf49fb1ba4e7d3551310791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 21 Mar 2023 12:26:46 -0400 Subject: [PATCH 0147/1273] docs(ironrdp-devolutions-gateway): rustdoc for RDCleanPath structure --- ironrdp-devolutions-gateway/src/lib.rs | 28 +++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ironrdp-devolutions-gateway/src/lib.rs b/ironrdp-devolutions-gateway/src/lib.rs index 976b7b45..a34b37a0 100644 --- a/ironrdp-devolutions-gateway/src/lib.rs +++ b/ironrdp-devolutions-gateway/src/lib.rs @@ -21,25 +21,47 @@ pub struct RDCleanPathErr { #[derive(Clone, Debug, Eq, PartialEq, der::Sequence)] #[asn1(tag_mode = "EXPLICIT")] pub struct RDCleanPathPdu { + /// RDCleanPathPdu packet version. #[asn1(context_specific = "0")] pub version: u64, + /// The proxy error. + /// + /// From proxy to client only. #[asn1(context_specific = "1", optional = "true")] pub error: Option, + /// The RDP server address itself. + /// + /// From client to proxy only. #[asn1(context_specific = "2", optional = "true")] pub destination: Option, + /// Arbitrary string for authorization on proxy side. + /// + /// From client to proxy only. #[asn1(context_specific = "3", optional = "true")] pub proxy_auth: Option, + /// Currently unused. Could be used by a custom RDP server eventually. #[asn1(context_specific = "4", optional = "true")] pub server_auth: Option, + /// The RDP PCB forwarded by the proxy to the RDP server. + /// + /// From client to proxy only. #[asn1(context_specific = "5", optional = "true")] pub preconnection_blob: Option, + /// Either the client handshake or the server handshake response. + /// + /// Both client and proxy will set this field. #[asn1(context_specific = "6", optional = "true")] pub x224_connection_pdu: Option, + /// The RDP server TLS chain. + /// + /// From proxy to client only. #[asn1(context_specific = "7", optional = "true")] pub server_cert_chain: Option>, - //#[asn1(context_specific = "8", optional = "true")] - //pub ocsp_response: Option, - /// IPv4 or IPv6 address of the server resolved by the Devolutions Gateway + // #[asn1(context_specific = "8", optional = "true")] + // pub ocsp_response: Option, + /// IPv4 or IPv6 address of the server found by resolving the destination field on proxy side. + /// + /// Sent from proxy to client only. #[asn1(context_specific = "9", optional = "true")] pub server_addr: Option, } From 843342b0a7683eaea1f9096588fc5d4b3848fc72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 21 Mar 2023 12:33:57 -0400 Subject: [PATCH 0148/1273] refactor(rdcleanpath): clarify RDCleanPath code - Renames ironrdp-devolutions-gateway -> ironrdp-rdcleanpath - Adds a RDCleanPath helper enum to simplify user code --- Cargo.lock | 24 +-- Cargo.toml | 2 +- ffi/wasm/Cargo.lock | 18 +- ironrdp-devolutions-gateway/README.md | 3 - .../Cargo.toml | 2 +- ironrdp-rdcleanpath/README.md | 3 + .../src/lib.rs | 162 ++++++++++++++++-- ironrdp-session/Cargo.toml | 2 +- ironrdp-session/src/connection_sequence.rs | 74 ++++---- 9 files changed, 218 insertions(+), 72 deletions(-) delete mode 100644 ironrdp-devolutions-gateway/README.md rename {ironrdp-devolutions-gateway => ironrdp-rdcleanpath}/Cargo.toml (92%) create mode 100644 ironrdp-rdcleanpath/README.md rename {ironrdp-devolutions-gateway => ironrdp-rdcleanpath}/src/lib.rs (67%) diff --git a/Cargo.lock b/Cargo.lock index b123a1c8..5caec781 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1677,17 +1677,6 @@ dependencies = [ "x509-parser 0.14.0", ] -[[package]] -name = "ironrdp-devolutions-gateway" -version = "0.1.0" -dependencies = [ - "bytes", - "der 0.6.1", - "hex", - "pretty_assertions", - "rstest 0.15.0", -] - [[package]] name = "ironrdp-graphics" version = "0.1.0" @@ -1741,6 +1730,17 @@ dependencies = [ "smallvec", ] +[[package]] +name = "ironrdp-rdcleanpath" +version = "0.1.0" +dependencies = [ + "bytes", + "der 0.6.1", + "hex", + "pretty_assertions", + "rstest 0.15.0", +] + [[package]] name = "ironrdp-renderer" version = "0.1.0" @@ -1776,8 +1776,8 @@ dependencies = [ "bytes", "futures-util", "ironrdp-core", - "ironrdp-devolutions-gateway", "ironrdp-graphics", + "ironrdp-rdcleanpath", "lazy_static", "log", "num-derive 0.3.3", diff --git a/Cargo.toml b/Cargo.toml index 59f71203..acdcc011 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = [ "ironrdp-session", "ironrdp-session-async", "ironrdp-tls", - "ironrdp-devolutions-gateway", + "ironrdp-rdcleanpath", "ironrdp-renderer", "ironrdp-client", "ironrdp-client-glutin", diff --git a/ffi/wasm/Cargo.lock b/ffi/wasm/Cargo.lock index 49876eaf..6bdb2d67 100644 --- a/ffi/wasm/Cargo.lock +++ b/ffi/wasm/Cargo.lock @@ -741,14 +741,6 @@ dependencies = [ "x509-parser", ] -[[package]] -name = "ironrdp-devolutions-gateway" -version = "0.1.0" -dependencies = [ - "bytes", - "der 0.6.0", -] - [[package]] name = "ironrdp-graphics" version = "0.1.0" @@ -774,6 +766,14 @@ dependencies = [ "smallvec", ] +[[package]] +name = "ironrdp-rdcleanpath" +version = "0.1.0" +dependencies = [ + "bytes", + "der 0.6.0", +] + [[package]] name = "ironrdp-session" version = "0.1.0" @@ -784,8 +784,8 @@ dependencies = [ "bytes", "futures-util", "ironrdp-core", - "ironrdp-devolutions-gateway", "ironrdp-graphics", + "ironrdp-rdcleanpath", "lazy_static", "log", "num-derive 0.3.3", diff --git a/ironrdp-devolutions-gateway/README.md b/ironrdp-devolutions-gateway/README.md deleted file mode 100644 index 708346d3..00000000 --- a/ironrdp-devolutions-gateway/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# IronRDP Devolutions Gateway - -Devolutions Gateway extensions for IronRDP. diff --git a/ironrdp-devolutions-gateway/Cargo.toml b/ironrdp-rdcleanpath/Cargo.toml similarity index 92% rename from ironrdp-devolutions-gateway/Cargo.toml rename to ironrdp-rdcleanpath/Cargo.toml index 25112657..78c5a5c3 100644 --- a/ironrdp-devolutions-gateway/Cargo.toml +++ b/ironrdp-rdcleanpath/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp-devolutions-gateway" +name = "ironrdp-rdcleanpath" version = "0.1.0" edition = "2021" readme = "README.md" diff --git a/ironrdp-rdcleanpath/README.md b/ironrdp-rdcleanpath/README.md new file mode 100644 index 00000000..dbddc686 --- /dev/null +++ b/ironrdp-rdcleanpath/README.md @@ -0,0 +1,3 @@ +# IronRDP RDCleanPath + +RDCleanPath PDU structure used by IronRDP and Devolutions Gateway. diff --git a/ironrdp-devolutions-gateway/src/lib.rs b/ironrdp-rdcleanpath/src/lib.rs similarity index 67% rename from ironrdp-devolutions-gateway/src/lib.rs rename to ironrdp-rdcleanpath/src/lib.rs index a34b37a0..8b8c2cdb 100644 --- a/ironrdp-devolutions-gateway/src/lib.rs +++ b/ironrdp-rdcleanpath/src/lib.rs @@ -1,10 +1,15 @@ -// Re-export der crate for convenience -pub use der; +use core::fmt; + use der::asn1::OctetString; pub const BASE_VERSION: u64 = 3389; pub const VERSION_1: u64 = BASE_VERSION + 1; +pub const GENERAL_ERROR_CODE: u16 = 1; + +// Re-export der crate for convenience +pub use der; + #[derive(Clone, Debug, Eq, PartialEq, der::Sequence)] #[asn1(tag_mode = "EXPLICIT")] pub struct RDCleanPathErr { @@ -18,6 +23,28 @@ pub struct RDCleanPathErr { pub tls_alert_code: Option, } +impl fmt::Display for RDCleanPathErr { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "RDCleanPath error (code {})", self.error_code)?; + + if let Some(http_status_code) = self.http_status_code { + write!(f, " [HTTP status = {http_status_code}]")?; + } + + if let Some(wsa_last_error) = self.wsa_last_error { + write!(f, " [WSA last error = {wsa_last_error}]")?; + } + + if let Some(tls_alert_code) = self.tls_alert_code { + write!(f, " [TLS alert = {tls_alert_code}]")?; + } + + Ok(()) + } +} + +impl std::error::Error for RDCleanPathErr {} + #[derive(Clone, Debug, Eq, PartialEq, der::Sequence)] #[asn1(tag_mode = "EXPLICIT")] pub struct RDCleanPathPdu { @@ -26,17 +53,17 @@ pub struct RDCleanPathPdu { pub version: u64, /// The proxy error. /// - /// From proxy to client only. + /// Sent from proxy to client only. #[asn1(context_specific = "1", optional = "true")] pub error: Option, /// The RDP server address itself. /// - /// From client to proxy only. + /// Sent from client to proxy only. #[asn1(context_specific = "2", optional = "true")] pub destination: Option, /// Arbitrary string for authorization on proxy side. /// - /// From client to proxy only. + /// Sent from client to proxy only. #[asn1(context_specific = "3", optional = "true")] pub proxy_auth: Option, /// Currently unused. Could be used by a custom RDP server eventually. @@ -44,7 +71,7 @@ pub struct RDCleanPathPdu { pub server_auth: Option, /// The RDP PCB forwarded by the proxy to the RDP server. /// - /// From client to proxy only. + /// Sent from client to proxy only. #[asn1(context_specific = "5", optional = "true")] pub preconnection_blob: Option, /// Either the client handshake or the server handshake response. @@ -54,7 +81,7 @@ pub struct RDCleanPathPdu { pub x224_connection_pdu: Option, /// The RDP server TLS chain. /// - /// From proxy to client only. + /// Sent from proxy to client only. #[asn1(context_specific = "7", optional = "true")] pub server_cert_chain: Option>, // #[asn1(context_specific = "8", optional = "true")] @@ -89,7 +116,7 @@ pub enum DetectionResult { } impl RDCleanPathPdu { - /// Try to parse first few bytes to detect a RDCleanPathPdu + /// Try to parse first few bytes in order to detect a RDCleanPath PDU pub fn detect(src: &[u8]) -> DetectionResult { use der::Decode as _; @@ -112,7 +139,7 @@ impl RDCleanPathPdu { } } - /// Attempts to decode a RDCleanPathPDU from the provided buffer of bytes. + /// Attempts to decode a RDCleanPath PDU from the provided buffer of bytes. pub fn decode(src: &mut bytes::BytesMut) -> der::Result> { use bytes::Buf as _; use der::{Decode as _, Encode as _}; @@ -176,7 +203,7 @@ impl RDCleanPathPdu { Self { version: VERSION_1, error: Some(RDCleanPathErr { - error_code: 1, + error_code: GENERAL_ERROR_CODE, http_status_code: None, wsa_last_error: None, tls_alert_code: None, @@ -189,7 +216,7 @@ impl RDCleanPathPdu { Self { version: VERSION_1, error: Some(RDCleanPathErr { - error_code: 1, + error_code: GENERAL_ERROR_CODE, http_status_code: Some(status_code), wsa_last_error: None, tls_alert_code: None, @@ -202,7 +229,7 @@ impl RDCleanPathPdu { Self { version: VERSION_1, error: Some(RDCleanPathErr { - error_code: 1, + error_code: GENERAL_ERROR_CODE, http_status_code: None, wsa_last_error: Some(wsa_error_code), tls_alert_code: None, @@ -215,7 +242,7 @@ impl RDCleanPathPdu { Self { version: VERSION_1, error: Some(RDCleanPathErr { - error_code: 1, + error_code: GENERAL_ERROR_CODE, http_status_code: None, wsa_last_error: None, tls_alert_code: Some(alert_code), @@ -227,6 +254,115 @@ impl RDCleanPathPdu { pub fn to_der(&self) -> der::Result> { der::Encode::to_vec(self) } + + pub fn into_enum(self) -> Result { + RDCleanPath::try_from(self) + } +} + +/// Helper enum to leverage Rust pattern matching feature. +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum RDCleanPath { + Request { + destination: String, + proxy_auth: String, + server_auth: Option, + preconnection_blob: Option, + x224_connection_request: OctetString, + }, + Response { + x224_connection_response: OctetString, + server_cert_chain: Vec, + server_addr: String, + }, + Err(RDCleanPathErr), +} + +impl RDCleanPath { + pub fn into_pdu(self) -> RDCleanPathPdu { + RDCleanPathPdu::from(self) + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct MissingRDCleanPathField(&'static str); + +impl fmt::Display for MissingRDCleanPathField { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "RDCleanPath is missing {} field", self.0) + } +} + +impl std::error::Error for MissingRDCleanPathField {} + +impl TryFrom for RDCleanPath { + type Error = MissingRDCleanPathField; + + fn try_from(pdu: RDCleanPathPdu) -> Result { + let rdcleanpath = if let Some(destination) = pdu.destination { + Self::Request { + destination, + proxy_auth: pdu.proxy_auth.ok_or(MissingRDCleanPathField("proxy_auth"))?, + server_auth: pdu.server_auth, + preconnection_blob: pdu.preconnection_blob, + x224_connection_request: pdu + .x224_connection_pdu + .ok_or(MissingRDCleanPathField("x224_connection_pdu"))?, + } + } else if let Some(server_addr) = pdu.server_auth { + Self::Response { + x224_connection_response: pdu + .x224_connection_pdu + .ok_or(MissingRDCleanPathField("x224_connection_pdu"))?, + server_cert_chain: pdu + .server_cert_chain + .ok_or(MissingRDCleanPathField("server_cert_chain"))?, + server_addr, + } + } else { + Self::Err(pdu.error.ok_or(MissingRDCleanPathField("error"))?) + }; + + Ok(rdcleanpath) + } +} + +impl From for RDCleanPathPdu { + fn from(value: RDCleanPath) -> Self { + match value { + RDCleanPath::Request { + destination, + proxy_auth, + server_auth, + preconnection_blob, + x224_connection_request, + } => Self { + version: VERSION_1, + destination: Some(destination), + proxy_auth: Some(proxy_auth), + server_auth, + preconnection_blob, + x224_connection_pdu: Some(x224_connection_request), + ..Default::default() + }, + RDCleanPath::Response { + x224_connection_response, + server_cert_chain, + server_addr, + } => Self { + version: VERSION_1, + x224_connection_pdu: Some(x224_connection_response), + server_cert_chain: Some(server_cert_chain), + server_addr: Some(server_addr), + ..Default::default() + }, + RDCleanPath::Err(error) => Self { + version: VERSION_1, + error: Some(error), + ..Default::default() + }, + } + } } #[cfg(test)] diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index d15ace48..3049e299 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -17,7 +17,7 @@ dgw_ext = [] [dependencies] ironrdp-core = { path = "../ironrdp-core" } ironrdp-graphics = { path = "../ironrdp-graphics" } -ironrdp-devolutions-gateway = { path = "../ironrdp-devolutions-gateway" } # FIXME: Quick and dirty approach, this should not be here +ironrdp-rdcleanpath = { path = "../ironrdp-rdcleanpath" } # FIXME: Quick and dirty approach, this should not be here sspi = "0.7" bytes = "1" log = "0.4" diff --git a/ironrdp-session/src/connection_sequence.rs b/ironrdp-session/src/connection_sequence.rs index 723ab1c7..5f5de6ff 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/ironrdp-session/src/connection_sequence.rs @@ -236,6 +236,7 @@ where proxy_auth_token, config.security_protocol, config.credentials.username.clone(), + target_hostname.clone(), ) .await?; @@ -931,8 +932,9 @@ pub async fn connection_initiation( proxy_auth_token: String, security_protocol: ironrdp_core::SecurityProtocol, username: String, + hostname: String, ) -> Result<(ironrdp_core::SecurityProtocol, Vec, std::net::SocketAddr), RdpError> { - use ironrdp_devolutions_gateway::RDCleanPathPdu; + use ironrdp_rdcleanpath::{RDCleanPath, RDCleanPathPdu}; use x509_cert::der::Decode as _; let connection_request = build_connection_request_with_username(security_protocol, username); @@ -940,8 +942,7 @@ pub async fn connection_initiation( let mut x224_pdu = Vec::new(); connection_request.to_buffer(&mut x224_pdu)?; - // FIXME: replace "10.10.0.6" by the actual destination host (found in the proxy auth token) - let rdp_clean_path = RDCleanPathPdu::new_request(x224_pdu, "10.10.0.6".into(), proxy_auth_token, None) + let rdp_clean_path = RDCleanPathPdu::new_request(x224_pdu, hostname, proxy_auth_token, None) .map_err(|e| RdpError::Server(e.to_string()))?; debug!("Send RDCleanPath PDU request: {:?}", connection_request); @@ -967,14 +968,35 @@ pub async fn connection_initiation( buf.extend_from_slice(&read_bytes[..len]); if len == 0 { - return Err(RdpError::InvalidResponse("EOF when reading RDCleanPathPdu".to_owned())); + return Err(RdpError::InvalidResponse("EOF when reading RDCleanPath PDU".to_owned())); } }; - debug!("Received RDCleanPath PDU response: {:?}", cleanpath_pdu); + debug!("Received RDCleanPath PDU: {:?}", cleanpath_pdu); + + let (x224_connection_response, server_cert_chain, server_addr) = match cleanpath_pdu + .into_enum() + .map_err(|e| RdpError::InvalidResponse(format!("Invalid RDCleanPath: {e}")))? + { + RDCleanPath::Request { .. } => { + return Err(RdpError::InvalidResponse( + "Received an unexpected RDCleanPath request".to_owned(), + )); + } + RDCleanPath::Response { + x224_connection_response, + server_cert_chain, + server_addr, + } => (x224_connection_response, server_cert_chain, server_addr), + RDCleanPath::Err(error) => { + return Err(RdpError::InvalidResponse(format!( + "Received an RDCleanPath error: {error}" + ))); + } + }; + + let connection_response = ironrdp_core::Response::from_buffer(x224_connection_response.as_bytes())?; - let x224_pdu = cleanpath_pdu.x224_connection_pdu.ok_or(RdpError::AccessDenied)?; - let connection_response = ironrdp_core::Response::from_buffer(x224_pdu.as_bytes())?; if let Some(ironrdp_core::ResponseData::Confirm { flags, protocol: selected_protocol, @@ -986,17 +1008,14 @@ pub async fn connection_initiation( ); if security_protocol.contains(selected_protocol) { - let cert_der = cleanpath_pdu - .server_cert_chain - .and_then(|chain| chain.into_iter().next()) - .ok_or_else(|| { - RdpError::Connection(io::Error::new( - io::ErrorKind::Other, - "cleanpath response is missing the server cert chain", - )) - })?; + let server_cert = server_cert_chain.into_iter().next().ok_or_else(|| { + RdpError::Connection(io::Error::new( + io::ErrorKind::Other, + "cleanpath response is missing the server cert chain", + )) + })?; - let cert = x509_cert::Certificate::from_der(cert_der.as_bytes()).map_err(|e| { + let cert = x509_cert::Certificate::from_der(server_cert.as_bytes()).map_err(|e| { RdpError::Connection(io::Error::new( io::ErrorKind::Other, format!("couldn’t decode x509 certificate sent by Devolutions Gateway: {e}"), @@ -1005,21 +1024,12 @@ pub async fn connection_initiation( let server_public_key = cert.tbs_certificate.subject_public_key_info.subject_public_key.to_vec(); - let server_addr = cleanpath_pdu - .server_addr - .ok_or_else(|| { - RdpError::Connection(io::Error::new( - io::ErrorKind::Other, - "cleanpath response is missing the server address", - )) - })? - .parse() - .map_err(|e| { - RdpError::Connection(io::Error::new( - io::ErrorKind::Other, - format!("couldn’t parse server address sent by Devolutions Gateway: {e}"), - )) - })?; + let server_addr = server_addr.parse().map_err(|e| { + RdpError::Connection(io::Error::new( + io::ErrorKind::Other, + format!("couldn’t parse server address sent by Devolutions Gateway: {e}"), + )) + })?; Ok((selected_protocol, server_public_key, server_addr)) } else { From 93bcea67ca51e191cbc33bee10fd866fa9c3c06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 21 Mar 2023 19:07:14 -0400 Subject: [PATCH 0149/1273] fix(client): graceful exit when RDP thread terminates --- ironrdp-client/src/gui.rs | 22 ++++++++++------------ ironrdp-client/src/rdp.rs | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ironrdp-client/src/gui.rs b/ironrdp-client/src/gui.rs index 7d4fc69a..1a0f8e08 100644 --- a/ironrdp-client/src/gui.rs +++ b/ironrdp-client/src/gui.rs @@ -63,12 +63,10 @@ impl GuiContext { match event { Event::WindowEvent { window_id, event } if window_id == window.id() => match event { WindowEvent::Resized(size) => { - input_event_sender - .send(RdpInputEvent::Resize { - width: u16::try_from(size.width).unwrap(), - height: u16::try_from(size.height).unwrap(), - }) - .expect("at least one GUI event listener"); + let _ = input_event_sender.send(RdpInputEvent::Resize { + width: u16::try_from(size.width).unwrap(), + height: u16::try_from(size.height).unwrap(), + }); } WindowEvent::CloseRequested => { control_flow.set_exit(); @@ -233,12 +231,14 @@ impl GuiContext { control_flow.set_exit_with_code(exit_code); } Event::LoopDestroyed => { - input_event_sender - .send(RdpInputEvent::Close) - .expect("at least one GUI event listener"); + let _ = input_event_sender.send(RdpInputEvent::Close); } _ => {} } + + if input_event_sender.is_closed() { + control_flow.set_exit(); + } }) } } @@ -248,8 +248,6 @@ fn send_fast_path_events( input_events: smallvec::SmallVec<[ironrdp::core::input::fast_path::FastPathInputEvent; 2]>, ) { if !input_events.is_empty() { - input_event_sender - .send(RdpInputEvent::FastPath(input_events)) - .expect("at least one GUI event listener"); + let _ = input_event_sender.send(RdpInputEvent::FastPath(input_events)); } } diff --git a/ironrdp-client/src/rdp.rs b/ironrdp-client/src/rdp.rs index 506b0ebb..450a8c66 100644 --- a/ironrdp-client/src/rdp.rs +++ b/ironrdp-client/src/rdp.rs @@ -124,7 +124,7 @@ async fn run_impl( } } input_event = input_event_receiver.recv() => { - let input_event = input_event.ok_or_else(|| RdpError::Receive("gui_event_receiver".to_owned()))?; + let input_event = input_event.ok_or_else(|| RdpError::Receive("input_event_receiver".to_owned()))?; match input_event { RdpInputEvent::Resize { mut width, mut height } => { From 0bbb518c69a9329848c353cd363de323bb7a4c1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 21 Mar 2023 19:10:16 -0400 Subject: [PATCH 0150/1273] fix(core): LogonErrorsInfo parsing The "ErrorNotificationData" may contain the session identifier instead of an error code. --- ironrdp-core/src/rdp/session_info.rs | 4 +-- .../src/rdp/session_info/logon_extended.rs | 33 ++++++++++++++++--- ironrdp-core/src/rdp/session_info/tests.rs | 16 +-------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/ironrdp-core/src/rdp/session_info.rs b/ironrdp-core/src/rdp/session_info.rs index 6a5c2057..128b7d30 100644 --- a/ironrdp-core/src/rdp/session_info.rs +++ b/ironrdp-core/src/rdp/session_info.rs @@ -14,8 +14,8 @@ mod logon_extended; mod logon_info; pub use self::logon_extended::{ - LogonErrorNotificationData, LogonErrorNotificationType, LogonErrorsInfo, LogonExFlags, LogonInfoExtended, - ServerAutoReconnect, + LogonErrorNotificationData, LogonErrorNotificationDataErrorCode, LogonErrorNotificationType, LogonErrorsInfo, + LogonExFlags, LogonInfoExtended, ServerAutoReconnect, }; pub use self::logon_info::{LogonInfo, LogonInfoVersion1, LogonInfoVersion2}; diff --git a/ironrdp-core/src/rdp/session_info/logon_extended.rs b/ironrdp-core/src/rdp/session_info/logon_extended.rs index d22fae61..8ba4c983 100644 --- a/ironrdp-core/src/rdp/session_info/logon_extended.rs +++ b/ironrdp-core/src/rdp/session_info/logon_extended.rs @@ -129,6 +129,9 @@ impl PduParsing for ServerAutoReconnect { } } +/// TS_LOGON_ERRORS_INFO +/// +/// [Doc](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/845eb789-6edf-453a-8b0e-c976823d1f72) #[derive(Debug, Clone, PartialEq, Eq)] pub struct LogonErrorsInfo { pub error_type: LogonErrorNotificationType, @@ -142,8 +145,11 @@ impl PduParsing for LogonErrorsInfo { let _data_length = stream.read_u32::()?; let error_type = LogonErrorNotificationType::from_u32(stream.read_u32::()?) .ok_or(SessionError::InvalidLogonErrorType)?; - let error_data = LogonErrorNotificationData::from_u32(stream.read_u32::()?) - .ok_or(SessionError::InvalidLogonErrorData)?; + + let error_notification_data = stream.read_u32::()?; + let error_data = LogonErrorNotificationDataErrorCode::from_u32(error_notification_data) + .map(LogonErrorNotificationData::ErrorCode) + .unwrap_or(LogonErrorNotificationData::SessionId(error_notification_data)); Ok(Self { error_type, error_data }) } @@ -151,7 +157,7 @@ impl PduParsing for LogonErrorsInfo { fn to_buffer(&self, mut stream: impl io::Write) -> Result<(), Self::Error> { stream.write_u32::(LOGON_ERRORS_INFO_SIZE as u32)?; stream.write_u32::(self.error_type.to_u32().unwrap())?; - stream.write_u32::(self.error_data.to_u32().unwrap())?; + stream.write_u32::(self.error_data.to_u32())?; Ok(()) } @@ -171,19 +177,36 @@ bitflags! { #[repr(u32)] #[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum LogonErrorNotificationType { - DisconnectRefuse = 0xFFFF_FFF9, + SessionBusyOptions = 0xFFFF_FFF8, + DisconnectRefused = 0xFFFF_FFF9, NoPermission = 0xFFFF_FFFA, BumpOptions = 0xFFFF_FFFB, ReconnectOptions = 0xFFFF_FFFC, SessionTerminate = 0xFFFF_FFFD, SessionContinue = 0xFFFF_FFFE, + AccessDenied = 0xFFFF_FFFF, } #[repr(u32)] #[derive(Debug, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)] -pub enum LogonErrorNotificationData { +pub enum LogonErrorNotificationDataErrorCode { FailedBadPassword = 0x0000_0000, FailedUpdatePassword = 0x0000_0001, FailedOther = 0x0000_0002, Warning = 0x0000_0003, } + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum LogonErrorNotificationData { + ErrorCode(LogonErrorNotificationDataErrorCode), + SessionId(u32), +} + +impl LogonErrorNotificationData { + pub fn to_u32(&self) -> u32 { + match self { + LogonErrorNotificationData::ErrorCode(code) => code.to_u32().unwrap(), + LogonErrorNotificationData::SessionId(id) => *id, + } + } +} diff --git a/ironrdp-core/src/rdp/session_info/tests.rs b/ironrdp-core/src/rdp/session_info/tests.rs index 33bd02a2..217eae06 100644 --- a/ironrdp-core/src/rdp/session_info/tests.rs +++ b/ironrdp-core/src/rdp/session_info/tests.rs @@ -167,12 +167,6 @@ const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_TYPE_BUFFER: [u8; 46] = [ 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, ]; -const LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER: [u8; 50] = [ - 0x32, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0xa8, 0x02, 0xe7, 0x25, 0xe2, 0x4c, 0x82, 0xb7, 0x52, 0xa5, 0x53, 0x50, 0x34, 0x98, 0xa1, 0xa8, - 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, -]; - const DOMAIN_NAME: &str = "NTDEV"; const USER_NAME: &str = "eltons"; const SESSION_ID: u32 = 0x02; @@ -202,7 +196,7 @@ lazy_static! { }), errors_info: Some(LogonErrorsInfo { error_type: LogonErrorNotificationType::NoPermission, - error_data: LogonErrorNotificationData::FailedOther, + error_data: LogonErrorNotificationData::ErrorCode(LogonErrorNotificationDataErrorCode::FailedOther), }), }; static ref SESSION_PLAIN_NOTIFY: SaveSessionInfoPdu = SaveSessionInfoPdu { @@ -389,11 +383,3 @@ fn from_buffer_parsing_with_invalid_logon_error_type_fails() { res => panic!("Expected InvalidLogonErrorType error, got: {res:?}"), }; } - -#[test] -fn from_buffer_parsing_with_invalid_logon_error_data_fails() { - match LogonInfoExtended::from_buffer(LOGON_EXTENDED_WITH_INVALID_LOGON_ERROR_DATA_BUFFER.as_ref()) { - Err(SessionError::InvalidLogonErrorData) => (), - res => panic!("Expected InvalidLogonErrorData error, got: {res:?}"), - }; -} From eba943d812a2b5f27144461091aaf06e088396ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Wed, 22 Mar 2023 15:13:28 -0400 Subject: [PATCH 0151/1273] feat(client): support for PixelDelta window event (#99) --- ironrdp-client/src/gui.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ironrdp-client/src/gui.rs b/ironrdp-client/src/gui.rs index 1a0f8e08..b4eca3de 100644 --- a/ironrdp-client/src/gui.rs +++ b/ironrdp-client/src/gui.rs @@ -148,8 +148,24 @@ impl GuiContext { )); } } - event::MouseScrollDelta::PixelDelta(_) => { - todo!() + event::MouseScrollDelta::PixelDelta(delta) => { + if delta.x.abs() > 0.001 { + operations.push(ironrdp_input::Operation::WheelRotations( + ironrdp_input::WheelRotations { + is_vertical: false, + rotation_units: delta.x as i16, + }, + )); + } + + if delta.y.abs() > 0.001 { + operations.push(ironrdp_input::Operation::WheelRotations( + ironrdp_input::WheelRotations { + is_vertical: true, + rotation_units: delta.y as i16, + }, + )); + } } }; From 4ad13df49903a5ada692ef80dab7c537b1181d08 Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Thu, 30 Mar 2023 01:34:07 +0300 Subject: [PATCH 0152/1273] feat(ironrdp-client): add ability to collect sspi-rs logs (#100) --- Cargo.lock | 104 ++++++++++++++++++++++++- ffi/wasm/Cargo.toml | 2 +- iron-tauri-client/src-tauri/Cargo.toml | 2 +- ironrdp-client-glutin/Cargo.toml | 2 +- ironrdp-client/Cargo.toml | 4 +- ironrdp-client/src/main.rs | 29 +++++++ ironrdp-session/Cargo.toml | 2 +- 7 files changed, 138 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5caec781..db7a7691 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1652,6 +1652,8 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", + "tracing", + "tracing-subscriber", "whoami", "winit 0.28.2", "x509-parser 0.14.0", @@ -1952,6 +1954,15 @@ dependencies = [ "libc", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + [[package]] name = "md-5" version = "0.8.0" @@ -2223,6 +2234,16 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.2.6" @@ -2550,6 +2571,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owned_ttf_parser" version = "0.18.1" @@ -3051,6 +3078,24 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.6.28" @@ -3523,6 +3568,15 @@ dependencies = [ "keccak", ] +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + [[package]] name = "shared_library" version = "0.1.9" @@ -3682,9 +3736,9 @@ dependencies = [ [[package]] name = "sspi" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e676b09028bca74185041e073a467e71112c19e4032fc290df82a4ad10c390e" +checksum = "f820e38002148b97ce7e90eb4c77fb81023c304b87a74f396893157d8a6521c9" dependencies = [ "async-dnssd", "bitflags", @@ -3837,6 +3891,16 @@ dependencies = [ "syn 1.0.104", ] +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + [[package]] name = "time" version = "0.1.45" @@ -4044,6 +4108,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -4142,6 +4236,12 @@ dependencies = [ "serde", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vcpkg" version = "0.2.15" diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index c1e66e56..ce74f669 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -28,7 +28,7 @@ opt-level = "s" ironrdp = { path = "../../ironrdp" } ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # FIXME: secret feature until session state machine is done ironrdp-input = { path = "../../ironrdp-input" } -sspi = "0.7" +sspi = "0.8" # Wasm wasm-bindgen = "0.2.83" diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml index 1f25b102..2c047e94 100644 --- a/iron-tauri-client/src-tauri/Cargo.toml +++ b/iron-tauri-client/src-tauri/Cargo.toml @@ -21,7 +21,7 @@ custom-protocol = [ "tauri/custom-protocol" ] # Protocol ironrdp = { path = "../../ironrdp" } -sspi = { version = "0.7", features = ["network_client"] } +sspi = { version = "0.8", features = ["network_client"] } serde = { version = "1.0", features = ["derive"] } # SSL diff --git a/ironrdp-client-glutin/Cargo.toml b/ironrdp-client-glutin/Cargo.toml index 3c8365aa..54854a8e 100644 --- a/ironrdp-client-glutin/Cargo.toml +++ b/ironrdp-client-glutin/Cargo.toml @@ -18,7 +18,7 @@ native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] # Protocol ironrdp = { path = "../ironrdp" } -sspi = { version = "0.7", features = ["network_client"] } +sspi = { version = "0.8", features = ["network_client"] } # CLI clap = { version = "4.0", features = ["derive", "cargo"] } diff --git a/ironrdp-client/Cargo.toml b/ironrdp-client/Cargo.toml index ae2706ee..6a130e92 100644 --- a/ironrdp-client/Cargo.toml +++ b/ironrdp-client/Cargo.toml @@ -19,7 +19,7 @@ native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] # Protocol ironrdp = { path = "../ironrdp" } ironrdp-input = { path = "../ironrdp-input" } -sspi = { version = "0.7", features = ["network_client"] } # TODO: enable dns_resolver at some point +sspi = { version = "0.8.0", features = ["network_client"] } # TODO: enable dns_resolver at some point # GUI softbuffer = "0.2.0" @@ -49,3 +49,5 @@ chrono = "0.4.23" whoami = "1.2.3" anyhow = "1.0.68" smallvec = "1.10.0" +tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } +tracing = "0.1.37" diff --git a/ironrdp-client/src/main.rs b/ironrdp-client/src/main.rs index a23d754e..135011e0 100644 --- a/ironrdp-client/src/main.rs +++ b/ironrdp-client/src/main.rs @@ -1,11 +1,15 @@ #[macro_use] extern crate log; +use std::fs::OpenOptions; + use anyhow::Context as _; use ironrdp_client::config::Config; use ironrdp_client::gui::GuiContext; use ironrdp_client::rdp::{RdpClient, RdpInputEvent}; use tokio::runtime; +use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; +use tracing_subscriber::EnvFilter; fn main() -> anyhow::Result<()> { let mut config = Config::parse_args().context("CLI arguments parsing")?; @@ -57,5 +61,30 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { .chain(fern::log_file(log_file)?) .apply()?; + // sspi-rs logging + if let Ok(path) = std::env::var("SSPI_LOG_FILE") { + let file = match OpenOptions::new().read(true).append(true).open(path) { + Ok(file) => file, + Err(e) => { + warn!("Can not open sspi-rs log file: {:?}", e); + + return Ok(()); + } + }; + + let fmt_layer = tracing_subscriber::fmt::layer() + .pretty() + .with_thread_names(true) + .with_writer(file); + + let reg = tracing_subscriber::registry() + .with(fmt_layer) + .with(EnvFilter::from_env("SSPI_LOG_LEVEL")); + + if let Err(err) = tracing::subscriber::set_global_default(reg) { + warn!("Can not set sspi-rs logger: {:?}", err); + } + } + Ok(()) } diff --git a/ironrdp-session/Cargo.toml b/ironrdp-session/Cargo.toml index 3049e299..018df07d 100644 --- a/ironrdp-session/Cargo.toml +++ b/ironrdp-session/Cargo.toml @@ -18,7 +18,7 @@ dgw_ext = [] ironrdp-core = { path = "../ironrdp-core" } ironrdp-graphics = { path = "../ironrdp-graphics" } ironrdp-rdcleanpath = { path = "../ironrdp-rdcleanpath" } # FIXME: Quick and dirty approach, this should not be here -sspi = "0.7" +sspi = "0.8" bytes = "1" log = "0.4" whoami = "1" From 710a51f24aa1f36c97ad46bde3c0559c1060eef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Wed, 29 Mar 2023 19:09:15 -0400 Subject: [PATCH 0153/1273] refactor: re-organize workspace (#101) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove Tauri client. It was useful when initially prototyping the Web Component, but now it’s more of a maintenance burden. It’s notably not convenient to check in CI. Since we now have another native alternative that does not require any GPU (`ironrdp-client`), it’s probably a good time to part ways. - Move wasm package into the workspace. - Move Rust crates into a `crates` subfolder. - Introduce `xtask` crate for free-form automation. --- .cargo/config.toml | 2 + .github/workflows/ci.yml | 13 +- .gitignore | 6 + Cargo.lock | 486 ++++++++++----- Cargo.toml | 52 +- README.md | 57 +- .../client-glutin}/Cargo.toml | 13 +- .../client-glutin}/README.md | 0 .../client-glutin}/src/config.rs | 24 +- .../client-glutin}/src/gui.rs | 6 +- .../client-glutin}/src/gui/input.rs | 8 +- .../client-glutin}/src/main.rs | 2 +- {ironrdp-client => crates/client}/Cargo.toml | 21 +- {ironrdp-client => crates/client}/README.md | 0 .../client}/src/config.rs | 24 +- {ironrdp-client => crates/client}/src/gui.rs | 2 +- {ironrdp-client => crates/client}/src/lib.rs | 0 {ironrdp-client => crates/client}/src/main.rs | 9 +- {ironrdp-client => crates/client}/src/rdp.rs | 8 +- {ironrdp-client => crates/client}/src/tls.rs | 0 .../glutin-renderer}/Cargo.toml | 7 +- .../glutin-renderer}/shaders/avc.vert | 14 +- .../glutin-renderer}/shaders/avc420.frag | 68 +-- .../glutin-renderer}/shaders/avc444.frag | 152 ++--- .../glutin-renderer}/shaders/avc444v2.frag | 156 ++--- .../shaders/texture_shader.frag | 16 +- .../shaders/texture_shader.vert | 18 +- .../glutin-renderer}/src/draw.rs | 2 +- .../glutin-renderer}/src/lib.rs | 0 .../glutin-renderer}/src/renderer.rs | 8 +- .../glutin-renderer}/src/surface.rs | 12 +- .../graphics}/Cargo.toml | 2 +- .../graphics}/README.md | 0 .../graphics}/src/color_conversion.rs | 0 .../graphics}/src/dwt.rs | 2 +- .../graphics}/src/image_processing.rs | 2 +- .../graphics}/src/lib.rs | 0 .../graphics}/src/quantization.rs | 2 +- .../graphics}/src/rectangle_processing.rs | 2 +- .../graphics}/src/rle.rs | 0 .../graphics}/src/rlgr.rs | 2 +- .../graphics}/src/subband_reconstruction.rs | 0 .../graphics}/src/utils.rs | 0 .../graphics}/src/zgfx/circular_buffer.rs | 0 .../graphics}/src/zgfx/control_messages.rs | 0 .../graphics}/src/zgfx/mod.rs | 0 .../graphics}/tests/color_conversion.rs | 0 .../graphics}/tests/dwt.rs | 0 .../graphics}/tests/image_processing.rs | 2 +- .../graphics}/tests/rle.rs | 0 .../graphics}/tests/rlgr.rs | 2 +- {ironrdp-input => crates/input}/Cargo.toml | 2 +- {ironrdp-input => crates/input}/README.md | 0 {ironrdp-input => crates/input}/src/lib.rs | 10 +- .../input}/tests/fastpath_packets.rs | 8 +- .../input}/tests/smoke.rs | 2 +- crates/pdu-generators/Cargo.toml | 9 + crates/pdu-generators/src/lib.rs | 14 + {ironrdp-core => crates/pdu}/Cargo.toml | 2 +- {ironrdp-core => crates/pdu}/README.md | 0 .../pdu}/src/basic_output.rs | 0 .../pdu}/src/basic_output/bitmap.rs | 0 .../pdu}/src/basic_output/bitmap/tests.rs | 0 .../pdu}/src/basic_output/fast_path.rs | 0 .../pdu}/src/basic_output/fast_path/test.rs | 0 .../pdu}/src/basic_output/surface_commands.rs | 0 .../basic_output/surface_commands/tests.rs | 0 {ironrdp-core => crates/pdu}/src/ber.rs | 0 {ironrdp-core => crates/pdu}/src/ber/tests.rs | 0 {ironrdp-core => crates/pdu}/src/codecs.rs | 0 .../pdu}/src/codecs/rfx.rs | 0 .../pdu}/src/codecs/rfx/data_messages.rs | 0 .../pdu}/src/codecs/rfx/header_messages.rs | 0 .../pdu}/src/codecs/rfx/tests.rs | 0 .../pdu}/src/connection_initiation.rs | 0 {ironrdp-core => crates/pdu}/src/crypto.rs | 0 .../pdu}/src/crypto/rc4.rs | 0 .../pdu}/src/crypto/rsa.rs | 0 {ironrdp-core => crates/pdu}/src/gcc.rs | 0 .../pdu}/src/gcc/cluster_data.rs | 0 .../pdu}/src/gcc/cluster_data/test.rs | 0 .../pdu}/src/gcc/conference_create.rs | 0 .../pdu}/src/gcc/conference_create/test.rs | 0 .../pdu}/src/gcc/core_data.rs | 0 .../pdu}/src/gcc/core_data/client.rs | 0 .../pdu}/src/gcc/core_data/client/test.rs | 0 .../pdu}/src/gcc/core_data/server.rs | 0 .../pdu}/src/gcc/core_data/server/test.rs | 0 .../pdu}/src/gcc/message_channel_data.rs | 0 .../pdu}/src/gcc/message_channel_data/test.rs | 0 .../pdu}/src/gcc/monitor_data.rs | 0 .../pdu}/src/gcc/monitor_data/test.rs | 0 .../pdu}/src/gcc/monitor_extended_data.rs | 0 .../src/gcc/monitor_extended_data/test.rs | 0 .../src/gcc/multi_transport_channel_data.rs | 0 .../gcc/multi_transport_channel_data/test.rs | 0 .../pdu}/src/gcc/network_data.rs | 0 .../pdu}/src/gcc/network_data/test.rs | 0 .../pdu}/src/gcc/security_data.rs | 0 .../pdu}/src/gcc/security_data/test.rs | 0 {ironrdp-core => crates/pdu}/src/gcc/tests.rs | 0 {ironrdp-core => crates/pdu}/src/geometry.rs | 0 {ironrdp-core => crates/pdu}/src/input.rs | 0 .../pdu}/src/input/fast_path.rs | 0 .../pdu}/src/input/mouse.rs | 0 .../pdu}/src/input/mouse_x.rs | 0 .../pdu}/src/input/scan_code.rs | 0 .../pdu}/src/input/sync.rs | 0 .../pdu}/src/input/tests.rs | 0 .../pdu}/src/input/unicode.rs | 0 .../pdu}/src/input/unused.rs | 0 {ironrdp-core => crates/pdu}/src/lib.rs | 0 {ironrdp-core => crates/pdu}/src/macros.rs | 0 {ironrdp-core => crates/pdu}/src/mcs.rs | 0 .../pdu}/src/mcs/connect_initial.rs | 0 .../pdu}/src/mcs/connect_initial/test.rs | 0 {ironrdp-core => crates/pdu}/src/mcs/tests.rs | 0 {ironrdp-core => crates/pdu}/src/per.rs | 0 {ironrdp-core => crates/pdu}/src/per/test.rs | 0 .../pdu}/src/preconnection.rs | 0 {ironrdp-core => crates/pdu}/src/rdp.rs | 0 .../pdu}/src/rdp/capability_sets.rs | 0 .../pdu}/src/rdp/capability_sets/bitmap.rs | 0 .../src/rdp/capability_sets/bitmap/test.rs | 0 .../src/rdp/capability_sets/bitmap_cache.rs | 0 .../rdp/capability_sets/bitmap_cache/test.rs | 0 .../src/rdp/capability_sets/bitmap_codecs.rs | 0 .../rdp/capability_sets/bitmap_codecs/test.rs | 0 .../pdu}/src/rdp/capability_sets/brush.rs | 0 .../src/rdp/capability_sets/brush/test.rs | 0 .../rdp/capability_sets/frame_acknowledge.rs | 0 .../pdu}/src/rdp/capability_sets/general.rs | 0 .../src/rdp/capability_sets/general/test.rs | 0 .../src/rdp/capability_sets/glyph_cache.rs | 0 .../rdp/capability_sets/glyph_cache/test.rs | 0 .../pdu}/src/rdp/capability_sets/input.rs | 0 .../src/rdp/capability_sets/input/test.rs | 0 .../src/rdp/capability_sets/large_pointer.rs | 0 .../capability_sets/multifragment_update.rs | 0 .../capability_sets/offscreen_bitmap_cache.rs | 0 .../offscreen_bitmap_cache/test.rs | 0 .../pdu}/src/rdp/capability_sets/order.rs | 0 .../src/rdp/capability_sets/order/test.rs | 0 .../pdu}/src/rdp/capability_sets/pointer.rs | 0 .../src/rdp/capability_sets/pointer/test.rs | 0 .../pdu}/src/rdp/capability_sets/sound.rs | 0 .../src/rdp/capability_sets/sound/test.rs | 0 .../rdp/capability_sets/surface_commands.rs | 0 .../capability_sets/surface_commands/test.rs | 0 .../pdu}/src/rdp/capability_sets/test.rs | 0 .../rdp/capability_sets/virtual_channel.rs | 0 .../capability_sets/virtual_channel/test.rs | 0 .../pdu}/src/rdp/client_info.rs | 0 .../pdu}/src/rdp/client_info/test.rs | 0 .../pdu}/src/rdp/finalization_messages.rs | 0 .../pdu}/src/rdp/headers.rs | 0 .../pdu}/src/rdp/server_error_info.rs | 0 .../pdu}/src/rdp/server_license.rs | 0 .../client_new_license_request.rs | 0 .../client_new_license_request/test.rs | 0 .../client_platform_challenge_response.rs | 0 .../test.rs | 0 .../server_license/licensing_error_message.rs | 0 .../licensing_error_message/test.rs | 0 .../server_license/server_license_request.rs | 0 .../server_license_request/cert.rs | 0 .../server_license_request/test.rs | 0 .../server_platform_challenge.rs | 0 .../server_platform_challenge/test.rs | 0 .../server_license/server_upgrade_license.rs | 0 .../server_upgrade_license/test.rs | 0 .../pdu}/src/rdp/server_license/test.rs | 0 .../pdu}/src/rdp/session_info.rs | 0 .../src/rdp/session_info/logon_extended.rs | 0 .../pdu}/src/rdp/session_info/logon_info.rs | 0 .../pdu}/src/rdp/session_info/tests.rs | 0 {ironrdp-core => crates/pdu}/src/rdp/test.rs | 0 {ironrdp-core => crates/pdu}/src/rdp/vc.rs | 0 .../pdu}/src/rdp/vc/dvc.rs | 0 .../pdu}/src/rdp/vc/dvc/capabilities.rs | 0 .../pdu}/src/rdp/vc/dvc/capabilities/tests.rs | 0 .../pdu}/src/rdp/vc/dvc/close.rs | 0 .../pdu}/src/rdp/vc/dvc/close/tests.rs | 0 .../pdu}/src/rdp/vc/dvc/create.rs | 0 .../pdu}/src/rdp/vc/dvc/create/tests.rs | 0 .../pdu}/src/rdp/vc/dvc/data.rs | 0 .../pdu}/src/rdp/vc/dvc/data/tests.rs | 0 .../pdu}/src/rdp/vc/dvc/data_first.rs | 0 .../pdu}/src/rdp/vc/dvc/data_first/tests.rs | 0 .../pdu}/src/rdp/vc/dvc/display.rs | 0 .../pdu}/src/rdp/vc/dvc/gfx.rs | 0 .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 0 .../dvc/gfx/graphics_messages/avc_messages.rs | 0 .../vc/dvc/gfx/graphics_messages/client.rs | 0 .../vc/dvc/gfx/graphics_messages/server.rs | 0 .../rdp/vc/dvc/gfx/graphics_messages/test.rs | 0 .../pdu}/src/rdp/vc/dvc/gfx/test.rs | 0 .../pdu}/src/rdp/vc/dvc/tests.rs | 0 .../pdu}/src/rdp/vc/tests.rs | 0 {ironrdp-core => crates/pdu}/src/utils.rs | 0 {ironrdp-core => crates/pdu}/src/x224.rs | 0 .../pdu}/src/x224/tests.rs | 0 .../rdcleanpath}/Cargo.toml | 0 .../rdcleanpath}/README.md | 0 .../rdcleanpath}/src/lib.rs | 2 +- .../replay-client}/Cargo.toml | 4 +- .../replay-client}/README.md | 0 .../replay-client}/scripts/runtests.ps1 | 6 +- .../replay-client}/src/main.rs | 6 +- .../replay-client}/test_data/README.md | 4 +- .../test_data/sample1_avc444.data | Bin .../test_data/sample1_avc444v2.data | Bin .../test_data/sample2_avc444.data | Bin .../test_data/sample2_avc444v2.data | Bin crates/session-async/Cargo.toml | 25 + .../session-async}/README.md | 0 crates/session-async/src/lib.rs | 4 + crates/session-generators/Cargo.toml | 10 + crates/session-generators/src/lib.rs | 14 + .../session}/Cargo.toml | 8 +- {ironrdp-session => crates/session}/README.md | 0 .../session}/src/active_session.rs | 12 +- .../session}/src/active_session/codecs.rs | 0 .../session}/src/active_session/codecs/rfx.rs | 6 +- .../src/active_session/codecs/rfx/tests.rs | 0 .../session}/src/active_session/fast_path.rs | 14 +- .../session}/src/active_session/x224.rs | 8 +- .../src/active_session/x224/display.rs | 4 +- .../session}/src/active_session/x224/gfx.rs | 6 +- .../session}/src/connection_sequence.rs | 84 +-- .../src/connection_sequence/user_info.rs | 10 +- .../session}/src/errors.rs | 14 +- .../session}/src/frame.rs | 54 +- .../session}/src/framed.rs | 10 +- .../session}/src/image.rs | 2 +- .../session}/src/lib.rs | 4 +- .../session}/src/utils.rs | 0 {ironrdp-tls => crates/tls}/Cargo.toml | 0 {ironrdp-tls => crates/tls}/README.md | 0 {ironrdp-tls => crates/tls}/src/lib.rs | 0 {ffi/wasm => crates/web}/.gitignore | 0 {ffi/wasm => crates/web}/Cargo.lock | 0 {ffi/wasm => crates/web}/Cargo.toml | 23 +- crates/web/README.md | 7 + {ffi/wasm => crates/web}/rust-toolchain.toml | 0 {ffi/wasm => crates/web}/src/error.rs | 2 +- {ffi/wasm => crates/web}/src/image.rs | 2 +- {ffi/wasm => crates/web}/src/input.rs | 2 +- {ffi/wasm => crates/web}/src/lib.rs | 0 .../wasm => crates/web}/src/network_client.rs | 0 {ffi/wasm => crates/web}/src/session.rs | 42 +- {ffi/wasm => crates/web}/src/utils.rs | 0 {ffi/wasm => crates/web}/src/websocket.rs | 0 ffi/wasm/.cargo/config.toml | 2 - ffi/wasm/README.md | 19 - ffi/wasm/check.ps1 | 23 - fuzz/Cargo.lock | 54 +- fuzz/Cargo.toml | 11 +- fuzz/fuzz_targets/pdu_decoding.rs | 4 +- iron-tauri-client/.gitignore | 1 - iron-tauri-client/README.md | 27 - iron-tauri-client/app-icon.png | Bin 424063 -> 0 bytes iron-tauri-client/package-lock.json | 265 --------- iron-tauri-client/package.json | 9 - iron-tauri-client/src-tauri/.gitignore | 4 - iron-tauri-client/src-tauri/Cargo.toml | 50 -- iron-tauri-client/src-tauri/build.rs | 3 - iron-tauri-client/src-tauri/icons/128x128.png | Bin 14404 -> 0 bytes .../src-tauri/icons/128x128@2x.png | Bin 43117 -> 0 bytes iron-tauri-client/src-tauri/icons/32x32.png | Bin 1979 -> 0 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 10884 -> 0 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 16821 -> 0 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 18345 -> 0 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 51051 -> 0 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 1787 -> 0 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 58732 -> 0 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 3026 -> 0 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 5918 -> 0 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 8355 -> 0 bytes .../src-tauri/icons/StoreLogo.png | Bin 3576 -> 0 bytes iron-tauri-client/src-tauri/icons/icon.icns | Bin 824054 -> 0 bytes iron-tauri-client/src-tauri/icons/icon.ico | Bin 57152 -> 0 bytes iron-tauri-client/src-tauri/icons/icon.png | Bin 135327 -> 0 bytes iron-tauri-client/src-tauri/src/main.rs | 560 ------------------ iron-tauri-client/src-tauri/tauri.conf.json | 68 --- ironrdp-session-async/Cargo.toml | 18 - ironrdp-session-async/src/lib.rs | 1 - ironrdp/Cargo.toml | 22 - ironrdp/README.md | 3 - ironrdp/src/lib.rs | 3 - rust-toolchain.toml | 2 +- src/lib.rs | 6 + .../iron-remote-gui}/.gitignore | 0 .../iron-remote-gui}/.vscode/extensions.json | 0 .../iron-remote-gui}/README.md | 2 +- .../iron-remote-gui}/index.html | 0 .../iron-remote-gui}/package-lock.json | 4 +- .../iron-remote-gui}/package.json | 0 .../iron-remote-gui}/pre-build.js | 4 +- .../iron-remote-gui}/public/package.json | 0 .../iron-remote-gui}/public/test.html | 0 .../iron-remote-gui}/src/enums/LockKey.ts | 0 .../iron-remote-gui}/src/enums/LogType.ts | 0 .../iron-remote-gui}/src/enums/ModifierKey.ts | 0 .../iron-remote-gui}/src/enums/OS.ts | 0 .../src/enums/SessionEventType.ts | 0 .../src/interfaces/session-event.model.ts | 0 .../src/iron-remote-gui.svelte | 0 .../iron-remote-gui}/src/lib/scancodes.ts | 0 .../iron-remote-gui}/src/main.ts | 0 .../src/services/logging.service.ts | 0 .../src/services/server-bridge.service.ts | 0 .../src/services/services-injector.ts | 0 .../src/services/tauri-bridge.service.ts | 0 .../src/services/user-interaction-service.ts | 0 .../src/services/wasm-bridge.service.ts | 2 +- .../iron-remote-gui}/src/vite-env.d.ts | 0 .../iron-remote-gui}/svelte.config.js | 0 .../iron-remote-gui}/tsconfig.json | 0 .../iron-remote-gui}/tsconfig.node.json | 0 .../iron-remote-gui}/vite.config.ts | 0 .../iron-svelte-client}/.eslintignore | 0 .../iron-svelte-client}/.eslintrc.cjs | 0 .../iron-svelte-client}/.gitignore | 0 .../iron-svelte-client}/.npmrc | 0 .../iron-svelte-client}/.prettierignore | 0 .../iron-svelte-client}/.prettierrc | 0 .../iron-svelte-client}/README.md | 23 +- .../iron-svelte-client}/env.development | 0 .../iron-svelte-client}/env.tauri | 0 .../iron-svelte-client}/package-lock.json | 0 .../iron-svelte-client}/package.json | 0 .../iron-svelte-client}/pre-build.js | 0 .../iron-svelte-client}/src/app.d.ts | 0 .../iron-svelte-client}/src/app.html | 0 .../src/lib/login/login-store.ts | 0 .../src/lib/login/login.css | 0 .../src/lib/login/login.svelte | 0 .../src/lib/messages/message-store.ts | 0 .../src/lib/messages/message.svelte | 0 .../lib/remote-screen/remote-screen.svelte | 0 .../src/models/desktop-size.ts | 0 .../iron-svelte-client}/src/models/rect.ts | 0 .../iron-svelte-client}/src/models/session.ts | 0 .../iron-svelte-client}/src/routes/+layout.ts | 0 .../src/routes/+page.svelte | 0 .../src/routes/session/+page.svelte | 0 .../src/services/server-bridge.service.ts | 0 .../src/services/services-injector.ts | 0 .../src/services/session.service.ts | 0 .../src/services/tauri-bridge.service.ts | 0 .../src/services/user-interaction-service.ts | 0 .../src/services/wasm-bridge.service.ts | 2 +- .../static/beercss/beer.min.css | 0 .../static/beercss/beer.min.js | 0 .../iron-svelte-client}/static/favicon.png | Bin .../static/material-icons/LICENSE | 0 .../static/material-icons/filled.css | 0 .../static/material-icons/index.css | 0 .../material-icons-outlined.woff2 | Bin .../material-icons/material-icons-round.woff2 | Bin .../material-icons/material-icons-sharp.woff2 | Bin .../material-icons-two-tone.woff2 | Bin .../material-icons/material-icons.woff2 | Bin .../static/material-icons/outlined.css | 0 .../static/material-icons/round.css | 0 .../static/material-icons/sharp.css | 0 .../static/material-icons/two-tone.css | 0 .../iron-svelte-client}/static/theme.css | 0 .../iron-svelte-client}/svelte.config.js | 0 .../iron-svelte-client}/tsconfig.json | 0 .../iron-svelte-client}/vite.config.ts | 0 xtask/Cargo.toml | 10 + xtask/README.md | 3 + xtask/src/cli.rs | 77 +++ xtask/src/main.rs | 55 ++ xtask/src/section.rs | 30 + xtask/src/tasks.rs | 233 ++++++++ 378 files changed, 1424 insertions(+), 1814 deletions(-) create mode 100644 .cargo/config.toml rename {ironrdp-client-glutin => crates/client-glutin}/Cargo.toml (77%) rename {ironrdp-client-glutin => crates/client-glutin}/README.md (100%) rename {ironrdp-client-glutin => crates/client-glutin}/src/config.rs (83%) rename {ironrdp-client-glutin => crates/client-glutin}/src/gui.rs (97%) rename {ironrdp-client-glutin => crates/client-glutin}/src/gui/input.rs (94%) rename {ironrdp-client-glutin => crates/client-glutin}/src/main.rs (99%) rename {ironrdp-client => crates/client}/Cargo.toml (74%) rename {ironrdp-client => crates/client}/README.md (100%) rename {ironrdp-client => crates/client}/src/config.rs (84%) rename {ironrdp-client => crates/client}/src/gui.rs (99%) rename {ironrdp-client => crates/client}/src/lib.rs (100%) rename {ironrdp-client => crates/client}/src/main.rs (95%) rename {ironrdp-client => crates/client}/src/rdp.rs (95%) rename {ironrdp-client => crates/client}/src/tls.rs (100%) rename {ironrdp-renderer => crates/glutin-renderer}/Cargo.toml (81%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/avc.vert (95%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/avc420.frag (97%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/avc444.frag (97%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/avc444v2.frag (97%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/texture_shader.frag (95%) rename {ironrdp-renderer => crates/glutin-renderer}/shaders/texture_shader.vert (95%) rename {ironrdp-renderer => crates/glutin-renderer}/src/draw.rs (99%) rename {ironrdp-renderer => crates/glutin-renderer}/src/lib.rs (100%) rename {ironrdp-renderer => crates/glutin-renderer}/src/renderer.rs (97%) rename {ironrdp-renderer => crates/glutin-renderer}/src/surface.rs (96%) rename {ironrdp-graphics => crates/graphics}/Cargo.toml (93%) rename {ironrdp-graphics => crates/graphics}/README.md (100%) rename {ironrdp-graphics => crates/graphics}/src/color_conversion.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/dwt.rs (98%) rename {ironrdp-graphics => crates/graphics}/src/image_processing.rs (99%) rename {ironrdp-graphics => crates/graphics}/src/lib.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/quantization.rs (99%) rename {ironrdp-graphics => crates/graphics}/src/rectangle_processing.rs (99%) rename {ironrdp-graphics => crates/graphics}/src/rle.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/rlgr.rs (99%) rename {ironrdp-graphics => crates/graphics}/src/subband_reconstruction.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/utils.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/zgfx/circular_buffer.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/zgfx/control_messages.rs (100%) rename {ironrdp-graphics => crates/graphics}/src/zgfx/mod.rs (100%) rename {ironrdp-graphics => crates/graphics}/tests/color_conversion.rs (100%) rename {ironrdp-graphics => crates/graphics}/tests/dwt.rs (100%) rename {ironrdp-graphics => crates/graphics}/tests/image_processing.rs (99%) rename {ironrdp-graphics => crates/graphics}/tests/rle.rs (100%) rename {ironrdp-graphics => crates/graphics}/tests/rlgr.rs (99%) rename {ironrdp-input => crates/input}/Cargo.toml (90%) rename {ironrdp-input => crates/input}/README.md (100%) rename {ironrdp-input => crates/input}/src/lib.rs (97%) rename {ironrdp-input => crates/input}/tests/fastpath_packets.rs (98%) rename {ironrdp-input => crates/input}/tests/smoke.rs (98%) create mode 100644 crates/pdu-generators/Cargo.toml create mode 100644 crates/pdu-generators/src/lib.rs rename {ironrdp-core => crates/pdu}/Cargo.toml (96%) rename {ironrdp-core => crates/pdu}/README.md (100%) rename {ironrdp-core => crates/pdu}/src/basic_output.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/bitmap.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/bitmap/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/fast_path.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/fast_path/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/surface_commands.rs (100%) rename {ironrdp-core => crates/pdu}/src/basic_output/surface_commands/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/ber.rs (100%) rename {ironrdp-core => crates/pdu}/src/ber/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/codecs.rs (100%) rename {ironrdp-core => crates/pdu}/src/codecs/rfx.rs (100%) rename {ironrdp-core => crates/pdu}/src/codecs/rfx/data_messages.rs (100%) rename {ironrdp-core => crates/pdu}/src/codecs/rfx/header_messages.rs (100%) rename {ironrdp-core => crates/pdu}/src/codecs/rfx/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/connection_initiation.rs (100%) rename {ironrdp-core => crates/pdu}/src/crypto.rs (100%) rename {ironrdp-core => crates/pdu}/src/crypto/rc4.rs (100%) rename {ironrdp-core => crates/pdu}/src/crypto/rsa.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/cluster_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/cluster_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/conference_create.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/conference_create/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/core_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/core_data/client.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/core_data/client/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/core_data/server.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/core_data/server/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/message_channel_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/message_channel_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/monitor_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/monitor_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/monitor_extended_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/monitor_extended_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/multi_transport_channel_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/multi_transport_channel_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/network_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/network_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/security_data.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/security_data/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/gcc/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/geometry.rs (100%) rename {ironrdp-core => crates/pdu}/src/input.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/fast_path.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/mouse.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/mouse_x.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/scan_code.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/sync.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/unicode.rs (100%) rename {ironrdp-core => crates/pdu}/src/input/unused.rs (100%) rename {ironrdp-core => crates/pdu}/src/lib.rs (100%) rename {ironrdp-core => crates/pdu}/src/macros.rs (100%) rename {ironrdp-core => crates/pdu}/src/mcs.rs (100%) rename {ironrdp-core => crates/pdu}/src/mcs/connect_initial.rs (100%) rename {ironrdp-core => crates/pdu}/src/mcs/connect_initial/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/mcs/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/per.rs (100%) rename {ironrdp-core => crates/pdu}/src/per/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/preconnection.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap_cache.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap_cache/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap_codecs.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/bitmap_codecs/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/brush.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/brush/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/frame_acknowledge.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/general.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/general/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/glyph_cache.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/glyph_cache/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/input.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/input/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/large_pointer.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/multifragment_update.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/offscreen_bitmap_cache.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/order.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/order/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/pointer.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/pointer/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/sound.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/sound/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/surface_commands.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/surface_commands/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/virtual_channel.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/capability_sets/virtual_channel/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/client_info.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/client_info/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/finalization_messages.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/headers.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_error_info.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/client_new_license_request.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/client_new_license_request/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/client_platform_challenge_response.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/client_platform_challenge_response/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/licensing_error_message.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/licensing_error_message/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_license_request.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_license_request/cert.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_license_request/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_platform_challenge.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_platform_challenge/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_upgrade_license.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/server_upgrade_license/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/server_license/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/session_info.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/session_info/logon_extended.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/session_info/logon_info.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/session_info/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/capabilities.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/capabilities/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/close.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/close/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/create.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/create/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/data.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/data/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/data_first.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/data_first/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/display.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/graphics_messages.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/graphics_messages/client.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/graphics_messages/server.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/graphics_messages/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/gfx/test.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/dvc/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/rdp/vc/tests.rs (100%) rename {ironrdp-core => crates/pdu}/src/utils.rs (100%) rename {ironrdp-core => crates/pdu}/src/x224.rs (100%) rename {ironrdp-core => crates/pdu}/src/x224/tests.rs (100%) rename {ironrdp-rdcleanpath => crates/rdcleanpath}/Cargo.toml (100%) rename {ironrdp-rdcleanpath => crates/rdcleanpath}/README.md (100%) rename {ironrdp-rdcleanpath => crates/rdcleanpath}/src/lib.rs (99%) rename {ironrdp-replay-client => crates/replay-client}/Cargo.toml (83%) rename {ironrdp-replay-client => crates/replay-client}/README.md (100%) rename {ironrdp-replay-client => crates/replay-client}/scripts/runtests.ps1 (99%) rename {ironrdp-replay-client => crates/replay-client}/src/main.rs (96%) rename {ironrdp-replay-client => crates/replay-client}/test_data/README.md (99%) rename {ironrdp-replay-client => crates/replay-client}/test_data/sample1_avc444.data (100%) rename {ironrdp-replay-client => crates/replay-client}/test_data/sample1_avc444v2.data (100%) rename {ironrdp-replay-client => crates/replay-client}/test_data/sample2_avc444.data (100%) rename {ironrdp-replay-client => crates/replay-client}/test_data/sample2_avc444v2.data (100%) create mode 100644 crates/session-async/Cargo.toml rename {ironrdp-session-async => crates/session-async}/README.md (100%) create mode 100644 crates/session-async/src/lib.rs create mode 100644 crates/session-generators/Cargo.toml create mode 100644 crates/session-generators/src/lib.rs rename {ironrdp-session => crates/session}/Cargo.toml (79%) rename {ironrdp-session => crates/session}/README.md (100%) rename {ironrdp-session => crates/session}/src/active_session.rs (93%) rename {ironrdp-session => crates/session}/src/active_session/codecs.rs (100%) rename {ironrdp-session => crates/session}/src/active_session/codecs/rfx.rs (97%) rename {ironrdp-session => crates/session}/src/active_session/codecs/rfx/tests.rs (100%) rename {ironrdp-session => crates/session}/src/active_session/fast_path.rs (96%) rename {ironrdp-session => crates/session}/src/active_session/x224.rs (98%) rename {ironrdp-session => crates/session}/src/active_session/x224/display.rs (86%) rename {ironrdp-session => crates/session}/src/active_session/x224/gfx.rs (99%) rename {ironrdp-session => crates/session}/src/connection_sequence.rs (91%) rename {ironrdp-session => crates/session}/src/connection_sequence/user_info.rs (98%) rename {ironrdp-session => crates/session}/src/errors.rs (93%) rename {ironrdp-session => crates/session}/src/frame.rs (85%) rename {ironrdp-session => crates/session}/src/framed.rs (95%) rename {ironrdp-session => crates/session}/src/image.rs (99%) rename {ironrdp-session => crates/session}/src/lib.rs (93%) rename {ironrdp-session => crates/session}/src/utils.rs (100%) rename {ironrdp-tls => crates/tls}/Cargo.toml (100%) rename {ironrdp-tls => crates/tls}/README.md (100%) rename {ironrdp-tls => crates/tls}/src/lib.rs (100%) rename {ffi/wasm => crates/web}/.gitignore (100%) rename {ffi/wasm => crates/web}/Cargo.lock (100%) rename {ffi/wasm => crates/web}/Cargo.toml (70%) create mode 100644 crates/web/README.md rename {ffi/wasm => crates/web}/rust-toolchain.toml (100%) rename {ffi/wasm => crates/web}/src/error.rs (99%) rename {ffi/wasm => crates/web}/src/image.rs (98%) rename {ffi/wasm => crates/web}/src/input.rs (95%) rename {ffi/wasm => crates/web}/src/lib.rs (100%) rename {ffi/wasm => crates/web}/src/network_client.rs (100%) rename {ffi/wasm => crates/web}/src/session.rs (91%) rename {ffi/wasm => crates/web}/src/utils.rs (100%) rename {ffi/wasm => crates/web}/src/websocket.rs (100%) delete mode 100644 ffi/wasm/.cargo/config.toml delete mode 100644 ffi/wasm/README.md delete mode 100755 ffi/wasm/check.ps1 delete mode 100644 iron-tauri-client/.gitignore delete mode 100644 iron-tauri-client/README.md delete mode 100644 iron-tauri-client/app-icon.png delete mode 100644 iron-tauri-client/package-lock.json delete mode 100644 iron-tauri-client/package.json delete mode 100644 iron-tauri-client/src-tauri/.gitignore delete mode 100644 iron-tauri-client/src-tauri/Cargo.toml delete mode 100644 iron-tauri-client/src-tauri/build.rs delete mode 100644 iron-tauri-client/src-tauri/icons/128x128.png delete mode 100644 iron-tauri-client/src-tauri/icons/128x128@2x.png delete mode 100644 iron-tauri-client/src-tauri/icons/32x32.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square107x107Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square142x142Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square150x150Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square284x284Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square30x30Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square310x310Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square44x44Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square71x71Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/Square89x89Logo.png delete mode 100644 iron-tauri-client/src-tauri/icons/StoreLogo.png delete mode 100644 iron-tauri-client/src-tauri/icons/icon.icns delete mode 100644 iron-tauri-client/src-tauri/icons/icon.ico delete mode 100644 iron-tauri-client/src-tauri/icons/icon.png delete mode 100644 iron-tauri-client/src-tauri/src/main.rs delete mode 100644 iron-tauri-client/src-tauri/tauri.conf.json delete mode 100644 ironrdp-session-async/Cargo.toml delete mode 100644 ironrdp-session-async/src/lib.rs delete mode 100644 ironrdp/Cargo.toml delete mode 100644 ironrdp/README.md delete mode 100644 ironrdp/src/lib.rs create mode 100644 src/lib.rs rename {iron-remote-gui => web-client/iron-remote-gui}/.gitignore (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/.vscode/extensions.json (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/README.md (96%) rename {iron-remote-gui => web-client/iron-remote-gui}/index.html (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/package-lock.json (99%) rename {iron-remote-gui => web-client/iron-remote-gui}/package.json (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/pre-build.js (83%) rename {iron-remote-gui => web-client/iron-remote-gui}/public/package.json (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/public/test.html (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/enums/LockKey.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/enums/LogType.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/enums/ModifierKey.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/enums/OS.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/enums/SessionEventType.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/interfaces/session-event.model.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/iron-remote-gui.svelte (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/lib/scancodes.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/main.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/logging.service.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/server-bridge.service.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/services-injector.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/tauri-bridge.service.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/user-interaction-service.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/services/wasm-bridge.service.ts (99%) rename {iron-remote-gui => web-client/iron-remote-gui}/src/vite-env.d.ts (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/svelte.config.js (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/tsconfig.json (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/tsconfig.node.json (100%) rename {iron-remote-gui => web-client/iron-remote-gui}/vite.config.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.eslintignore (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.eslintrc.cjs (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.gitignore (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.npmrc (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.prettierignore (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/.prettierrc (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/README.md (85%) rename {iron-svelte-client => web-client/iron-svelte-client}/env.development (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/env.tauri (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/package-lock.json (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/package.json (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/pre-build.js (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/app.d.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/app.html (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/login/login-store.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/login/login.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/login/login.svelte (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/messages/message-store.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/messages/message.svelte (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/lib/remote-screen/remote-screen.svelte (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/models/desktop-size.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/models/rect.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/models/session.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/routes/+layout.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/routes/+page.svelte (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/routes/session/+page.svelte (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/server-bridge.service.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/services-injector.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/session.service.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/tauri-bridge.service.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/user-interaction-service.ts (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/src/services/wasm-bridge.service.ts (93%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/beercss/beer.min.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/beercss/beer.min.js (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/favicon.png (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/LICENSE (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/filled.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/index.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/material-icons-outlined.woff2 (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/material-icons-round.woff2 (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/material-icons-sharp.woff2 (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/material-icons-two-tone.woff2 (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/material-icons.woff2 (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/outlined.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/round.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/sharp.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/material-icons/two-tone.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/static/theme.css (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/svelte.config.js (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/tsconfig.json (100%) rename {iron-svelte-client => web-client/iron-svelte-client}/vite.config.ts (100%) create mode 100644 xtask/Cargo.toml create mode 100644 xtask/README.md create mode 100644 xtask/src/cli.rs create mode 100644 xtask/src/main.rs create mode 100644 xtask/src/section.rs create mode 100644 xtask/src/tasks.rs diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..35049cbc --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[alias] +xtask = "run --package xtask --" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44a3e3af..8436d9ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: if ($LastExitCode -eq 1) { throw "Bad formatting, please run 'cargo +stable fmt --all'" } - + lints: name: Lints runs-on: ubuntu-20.04 @@ -47,7 +47,8 @@ jobs: key: ${{ runner.os }}-lints-${{ hashFiles('Cargo.lock') }} - name: Check clippy - run: cargo clippy --workspace -- -D warnings + # FIXME: run: cargo clippy --workspace -- -D warnings + run: cargo clippy -- -D warnings wasm: name: WASM target @@ -63,15 +64,14 @@ jobs: path: | ~/.cargo/registry/ ~/.cargo/git/ - ./ffi/wasm/target/ + ./target/ key: ${{ runner.os }}-wasm-${{ hashFiles('ffi/wasm/Cargo.lock') }} - name: Prepare runner run: sudo apt install wabt - name: Check - shell: pwsh - run: ./ffi/wasm/check.ps1 + run: cargo xtask check wasm tests: name: Tests [${{ matrix.os }}] @@ -100,7 +100,8 @@ jobs: key: ${{ runner.os }}-tests-${{ hashFiles('Cargo.lock') }} - name: Test [${{ matrix.os }}] - run: cargo test --workspace + # FIXME: run: cargo test --workspace + run: cargo test fuzz: name: Fuzzing diff --git a/.gitignore b/.gitignore index 0f32155f..05146457 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,12 @@ +# Build artifacts /target + +# Log files *.log +# Coverage +/docs + # Editor/IDE files *~ /tags diff --git a/Cargo.lock b/Cargo.lock index db7a7691..646a6b38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,8 +114,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "synstructure", ] @@ -126,8 +126,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -440,8 +440,8 @@ checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -504,6 +504,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + [[package]] name = "const-oid" version = "0.7.1" @@ -690,7 +710,7 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.104", ] @@ -721,8 +741,8 @@ dependencies = [ "cc", "codespan-reporting", "once_cell", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "scratch", "syn 1.0.104", ] @@ -739,8 +759,8 @@ version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -762,8 +782,8 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "strsim", "syn 1.0.104", ] @@ -775,7 +795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", - "quote 1.0.21", + "quote 1.0.26", "syn 1.0.104", ] @@ -839,8 +859,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ef71ddb5b3a1f53dee24817c8f70dfa1cb29e804c18d88c228d4bc9c86ee3b9" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -850,8 +870,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -911,8 +931,8 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -1068,8 +1088,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -1139,9 +1159,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" dependencies = [ "futures-core", "futures-sink", @@ -1149,9 +1169,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" [[package]] name = "futures-executor" @@ -1166,32 +1186,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" [[package]] name = "futures-timer" @@ -1201,9 +1221,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" dependencies = [ "futures-channel", "futures-core", @@ -1264,8 +1284,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1279,6 +1301,39 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "gloo-net" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-utils" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "glow" version = "0.11.2" @@ -1623,11 +1678,11 @@ checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" [[package]] name = "ironrdp" -version = "0.4.2" +version = "0.5.0" dependencies = [ - "ironrdp-core", "ironrdp-graphics", "ironrdp-input", + "ironrdp-pdu", "ironrdp-session", ] @@ -1645,6 +1700,7 @@ dependencies = [ "inquire", "ironrdp", "ironrdp-input", + "ironrdp-session", "log", "smallvec", "softbuffer", @@ -1660,7 +1716,73 @@ dependencies = [ ] [[package]] -name = "ironrdp-core" +name = "ironrdp-client-glutin" +version = "0.4.2" +dependencies = [ + "async-native-tls", + "chrono", + "clap", + "exitcode", + "fern", + "futures-util", + "glutin", + "ironrdp", + "ironrdp-glutin-renderer", + "ironrdp-session", + "log", + "sspi", + "tokio", + "tokio-rustls", + "tokio-util", + "x509-parser 0.14.0", +] + +[[package]] +name = "ironrdp-glutin-renderer" +version = "0.1.0" +dependencies = [ + "glow", + "glutin", + "ironrdp", + "log", + "openh264", + "thiserror", +] + +[[package]] +name = "ironrdp-graphics" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "bitvec", + "byteorder", + "bytes", + "hex-literal", + "ironrdp-pdu", + "lazy_static", + "num-derive 0.3.3", + "num-traits", + "proptest", + "rdp-rs", + "rstest 0.16.0", + "thiserror", +] + +[[package]] +name = "ironrdp-input" +version = "0.1.0" +dependencies = [ + "anyhow", + "bitvec", + "ironrdp-pdu", + "proptest", + "rstest 0.16.0", + "smallvec", +] + +[[package]] +name = "ironrdp-pdu" version = "0.1.0" dependencies = [ "bit_field", @@ -1680,56 +1802,11 @@ dependencies = [ ] [[package]] -name = "ironrdp-graphics" -version = "0.1.0" +name = "ironrdp-pdu-generators" +version = "0.0.0" dependencies = [ - "bit_field", - "bitflags", - "bitvec", - "byteorder", - "bytes", - "hex-literal", - "ironrdp-core", - "lazy_static", - "num-derive 0.3.3", - "num-traits", + "ironrdp-pdu", "proptest", - "rdp-rs", - "rstest 0.16.0", - "thiserror", -] - -[[package]] -name = "ironrdp-gui-client" -version = "0.4.2" -dependencies = [ - "async-native-tls", - "chrono", - "clap", - "exitcode", - "fern", - "futures-util", - "glutin", - "ironrdp", - "ironrdp-renderer", - "log", - "sspi", - "tokio", - "tokio-rustls", - "tokio-util", - "x509-parser 0.14.0", -] - -[[package]] -name = "ironrdp-input" -version = "0.1.0" -dependencies = [ - "anyhow", - "bitvec", - "ironrdp-core", - "proptest", - "rstest 0.16.0", - "smallvec", ] [[package]] @@ -1743,18 +1820,6 @@ dependencies = [ "rstest 0.15.0", ] -[[package]] -name = "ironrdp-renderer" -version = "0.1.0" -dependencies = [ - "glow", - "glutin", - "ironrdp", - "log", - "openh264", - "thiserror", -] - [[package]] name = "ironrdp-replay-client" version = "0.4.2" @@ -1762,7 +1827,7 @@ dependencies = [ "clap", "glutin", "ironrdp", - "ironrdp-renderer", + "ironrdp-glutin-renderer", "log", "simplelog", ] @@ -1777,8 +1842,8 @@ dependencies = [ "byteorder", "bytes", "futures-util", - "ironrdp-core", "ironrdp-graphics", + "ironrdp-pdu", "ironrdp-rdcleanpath", "lazy_static", "log", @@ -1801,15 +1866,48 @@ dependencies = [ "byteorder", "bytes", "futures-util", - "ironrdp-core", - "ironrdp-graphics", + "ironrdp-pdu", + "ironrdp-session", "num-traits", + "tokio", + "tokio-util", +] + +[[package]] +name = "ironrdp-session-generators" +version = "0.0.0" +dependencies = [ + "ironrdp-pdu-generators", + "ironrdp-session", + "proptest", ] [[package]] name = "ironrdp-tls" version = "0.1.0" +[[package]] +name = "ironrdp-web" +version = "0.1.0" +dependencies = [ + "anyhow", + "chrono", + "console_error_panic_hook", + "console_log", + "futures-channel", + "futures-util", + "getrandom 0.2.8", + "gloo-net", + "ironrdp", + "ironrdp-session", + "js-sys", + "log", + "smallvec", + "sspi", + "wasm-bindgen", + "wasm-bindgen-futures", +] + [[package]] name = "is-terminal" version = "0.4.0" @@ -1891,9 +1989,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.137" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "libloading" @@ -2151,8 +2249,8 @@ checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" dependencies = [ "darling", "proc-macro-crate 1.2.1", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -2301,8 +2399,8 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -2373,8 +2471,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" dependencies = [ "proc-macro-crate 0.1.5", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -2385,8 +2483,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" dependencies = [ "proc-macro-crate 1.2.1", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -2511,8 +2609,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -2736,6 +2834,32 @@ dependencies = [ "uuid", ] +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2 1.0.54", + "quote 1.0.26", + "syn 1.0.104", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2842,8 +2966,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "version_check", ] @@ -2854,8 +2978,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "version_check", ] @@ -2870,9 +2994,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" dependencies = [ "unicode-ident", ] @@ -2930,11 +3054,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ - "proc-macro2 1.0.47", + "proc-macro2 1.0.54", ] [[package]] @@ -3217,8 +3341,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5015e68a0685a95ade3eee617ff7101ab6a3fc689203101ca16ebc16f2b89c66" dependencies = [ "cfg-if 1.0.0", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "rustc_version", "syn 1.0.104", ] @@ -3230,8 +3354,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7229b505ae0706e64f37ffc54a9c163e11022a6636d58fe1f3f52018257ff9f7" dependencies = [ "cfg-if 1.0.0", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "rustc_version", "syn 1.0.104", "unicode-ident", @@ -3463,8 +3587,8 @@ version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fc80d722935453bcafdc2c9a73cd6fac4dc1938f0346035d84bf99fa9e33217" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -3673,9 +3797,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -3825,8 +3949,19 @@ version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" +dependencies = [ + "proc-macro2 1.0.54", + "quote 1.0.26", "unicode-ident", ] @@ -3836,8 +3971,8 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "unicode-xid 0.2.4", ] @@ -3886,8 +4021,8 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -4008,14 +4143,13 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.22.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg", "bytes", "libc", - "memchr", "mio", "num_cpus", "parking_lot", @@ -4023,18 +4157,18 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "winapi", + "windows-sys 0.45.0", ] [[package]] name = "tokio-macros" -version = "1.8.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", - "syn 1.0.104", + "proc-macro2 1.0.54", + "quote 1.0.26", + "syn 2.0.11", ] [[package]] @@ -4050,9 +4184,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ "bytes", "futures-core", @@ -4096,8 +4230,8 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", ] @@ -4327,8 +4461,8 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "wasm-bindgen-shared", ] @@ -4351,7 +4485,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ - "quote 1.0.21", + "quote 1.0.26", "wasm-bindgen-macro-support", ] @@ -4361,8 +4495,8 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -4468,8 +4602,8 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "xml-rs", ] @@ -4479,9 +4613,9 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4834c14b3edf1d9986c83ca79b1e7e3afbe9874c7c144702f6467063259ce45d" dependencies = [ - "proc-macro2 1.0.47", + "proc-macro2 1.0.54", "quick-xml", - "quote 1.0.21", + "quote 1.0.26", ] [[package]] @@ -4950,6 +5084,30 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +[[package]] +name = "xshell" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962c039b3a7b16cf4e9a4248397c6585c07547412e7d6a6e035389a802dcfe90" +dependencies = [ + "xshell-macros", +] + +[[package]] +name = "xshell-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dbabb1cbd15a1d6d12d9ed6b35cc6777d4af87ab3ba155ea37215f20beab80c" + +[[package]] +name = "xtask" +version = "0.0.0" +dependencies = [ + "anyhow", + "pico-args", + "xshell", +] + [[package]] name = "yansi" version = "0.5.1" @@ -4977,8 +5135,8 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" dependencies = [ - "proc-macro2 1.0.47", - "quote 1.0.21", + "proc-macro2 1.0.54", + "quote 1.0.26", "syn 1.0.104", "synstructure", ] diff --git a/Cargo.toml b/Cargo.toml index acdcc011..19a5cdd3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,15 +1,43 @@ +[package] +name = "ironrdp" +version = "0.5.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] +description = "A Rust implementation of the Microsoft Remote Desktop Protocol (RDP)" +keywords = ["rdp", "remote", "desktop", "protocol"] + [workspace] members = [ - "ironrdp", - "ironrdp-core", - "ironrdp-graphics", - "ironrdp-input", - "ironrdp-session", - "ironrdp-session-async", - "ironrdp-tls", - "ironrdp-rdcleanpath", - "ironrdp-renderer", - "ironrdp-client", - "ironrdp-client-glutin", - "ironrdp-replay-client", + "crates/*", + "xtask", ] +default-members = [ + "crates/pdu", + "crates/session", + "crates/graphics", + "crates/input", + "crates/session-async", + "crates/client", +] + +[profile.production] +inherits = "release" +lto = true + +[profile.production-wasm] +inherits = "release" +opt-level = "s" +lto = true + +[features] +default = [] + +[dependencies] +ironrdp-pdu = { path = "crates/pdu" } +ironrdp-session = { path = "crates/session" } +ironrdp-graphics = { path = "crates/graphics" } +ironrdp-input = { path = "crates/input" } diff --git a/README.md b/README.md index 6c498097..22dd5231 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,10 @@ # IronRDP -A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on security. +A collection of Rust crates providing an implementation of the Microsoft Remote Desktop Protocol, with a focus on security. -## Architecture (Work In Progress…) +## Demonstration -- `ironrdp`: meta crate re-exporting important crates -- `ironrdp-core`: core, RDP protocol packets encoding and decoding. -- `ironrdp-graphics`: image processing primitives and algorithms (ZGFX, DWT…). -- `ironrdp-input`: helpers to build FastPathInput packets. -- `ironrdp-session`: abstract state machine on top of `ironrdp-graphics`. -- `ironrdp-session-async`: `Future`s built on top of `ironrdp-session`. -- `ironrdp-tls`: TLS boilerplate common with most IronRDP clients. -- `ironrdp-devolutions-gateway`: Devolutions Gateway extensions. -- `ironrdp-renderer`: `glutin` primitives for OpenGL rendering. -- `ironrdp-client`: Portable RDP client without GPU acceleration using softbuffer and winit for windowing. -- `ironrdp-client-glutin`: GPU-accelerated RDP client using glutin. -- `ironrdp-replay-client`: utility tool to replay RDP graphics pipeline for debugging purposes. -- `iron-remote-gui`: core frontend ui used by both, iron-svelte-client and iron-tauri-client. -- `iron-svelte-client`: web-based frontend using `Svelte` and `Material` frameworks). -- `iron-tauri-client`: a native client built with Tauri. Frontend is using the `iron-web-client`/`iron-svelte-client` component. -- `ffi/wasm`: WebAssembly high-level bindings targeting web browsers. +https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4 ## Video Codec Support @@ -50,7 +35,39 @@ Alternatively, you may change a few group policies using `gpedit.msc`: 5. Reboot. -## Demonstration +## Architecture (Work In Progress…) -https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4 +- `ironrdp` (root package): meta crate re-exporting important crates, +- `ironrdp-pdu` (`crates/pdu`): PDU encoding and decoding (no I/O, trivial to fuzz), +- `ironrdp-graphics` (`crates/graphics`): image processing primitives (no I/O, trivial to fuzz), +- `ironrdp-session` (`crates/session`): state machine to drive a complete VNC session (no I/O, not _too_ hard to fuzz), +- `ironrdp-input` (`crates/input`): utilities to manage and build input packets (no I/O), +- `ironrdp-session-async` (`crates/session-async`): provides `Future`s wrapping the session state machine conveniently, +- `ironrdp-tls` (`crates/tls`): TLS boilerplate common with most IronRDP clients, +- `ironrdp-rdcleanpath` (`crates/rdcleanpath`): RDCleanPath PDU structure used by IronRDP web client and Devolutions Gateway, +- `ironrdp-client` (`crates/client`): Portable RDP client without GPU acceleration using softbuffer and winit for windowing, +- `ironrdp-web` (`crates/web`): WebAssembly high-level bindings targeting web browsers, +- `ironrdp-glutin-renderer` (`crates/glutin-renderer`): `glutin` primitives for OpenGL rendering, +- `ironrdp-client-glutin` (`crates/client-glutin`): GPU-accelerated RDP client using glutin, +- `ironrdp-replay-client` (`crates/replay-client`): utility tool to replay RDP graphics pipeline for debugging purposes, +- `ironrdp-pdu-generators` (`crates/pdu-generators`): `proptest` generators for `ironrdp-pdu` types, +- `ironrdp-session-generators` (`crates/session-generators`): `proptest` generators for `ironrdp-session` types, +- `iron-remote-gui` (`web-client/iron-remote-gui`): core frontend UI used by `iron-svelte-client` as a Web Component, +- `iron-svelte-client` (`web-client/iron-svelte-client`): web-based frontend using `Svelte` and `Material` frameworks, +- and finally, `ironrdp-fuzz` (`fuzz`): fuzz targets for core crates. +## General design + +- Avoid I/O wherever possible +- Dependency injection when runtime information is necessary in core crates (no system call such as `gethostname`) +- Keep non-portable code out of core crates +- Make crate `no_std`-compatible wherever possible +- Facilitate fuzzing +- In libraries, provide concrete error types either hand-crafted or using `thiserror` crate +- In binaries, use the convenient catch-all error type `anyhow::Error` +- Free-form automation a-la `make` following [`cargo xtask`](https://github.com/matklad/cargo-xtask) specification + +## Continuous integration + +We use GitHub action and our workflows simply run `cargo xtask`. +The expectation is that, if `cargo xtask ci` passes locally, the CI will be green as well. diff --git a/ironrdp-client-glutin/Cargo.toml b/crates/client-glutin/Cargo.toml similarity index 77% rename from ironrdp-client-glutin/Cargo.toml rename to crates/client-glutin/Cargo.toml index 54854a8e..2c197b44 100644 --- a/ironrdp-client-glutin/Cargo.toml +++ b/crates/client-glutin/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp-gui-client" +name = "ironrdp-client-glutin" version = "0.4.2" edition = "2021" readme = "README.md" @@ -11,13 +11,14 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:tokio-rustls", "ironrdp/rustls"] -native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] +rustls = ["dep:tokio-rustls", "ironrdp-session/rustls"] +native-tls = ["dep:async-native-tls", "ironrdp-session/native-tls"] [dependencies] -# Protocol -ironrdp = { path = "../ironrdp" } +# Protocols +ironrdp = { path = "../.." } +ironrdp-session = { path = "../session" } sspi = { version = "0.8", features = ["network_client"] } # CLI @@ -43,4 +44,4 @@ chrono = "0.4.23" # GUI glutin = "0.29" -ironrdp-renderer = { path = "../ironrdp-renderer"} \ No newline at end of file +ironrdp-glutin-renderer = { path = "../glutin-renderer"} \ No newline at end of file diff --git a/ironrdp-client-glutin/README.md b/crates/client-glutin/README.md similarity index 100% rename from ironrdp-client-glutin/README.md rename to crates/client-glutin/README.md diff --git a/ironrdp-client-glutin/src/config.rs b/crates/client-glutin/src/config.rs similarity index 83% rename from ironrdp-client-glutin/src/config.rs rename to crates/client-glutin/src/config.rs index f879ac25..64e58723 100644 --- a/ironrdp-client-glutin/src/config.rs +++ b/crates/client-glutin/src/config.rs @@ -26,11 +26,11 @@ enum SecurityProtocol { } impl SecurityProtocol { - fn parse(security_protocol: SecurityProtocol) -> ironrdp::core::SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::pdu::SecurityProtocol { match security_protocol { - SecurityProtocol::Ssl => ironrdp::core::SecurityProtocol::SSL, - SecurityProtocol::Hybrid => ironrdp::core::SecurityProtocol::HYBRID, - SecurityProtocol::HybridEx => ironrdp::core::SecurityProtocol::HYBRID_EX, + SecurityProtocol::Ssl => ironrdp::pdu::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::pdu::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::pdu::SecurityProtocol::HYBRID_EX, } } } @@ -47,15 +47,15 @@ enum KeyboardType { } impl KeyboardType { - fn parse(keyboard_type: KeyboardType) -> ironrdp::gcc::KeyboardType { + fn parse(keyboard_type: KeyboardType) -> ironrdp::pdu::gcc::KeyboardType { match keyboard_type { - KeyboardType::IbmEnhanced => ironrdp::gcc::KeyboardType::IbmEnhanced, - KeyboardType::IbmPcAt => ironrdp::gcc::KeyboardType::IbmPcAt, - KeyboardType::IbmPcXt => ironrdp::gcc::KeyboardType::IbmPcXt, - KeyboardType::OlivettiIco => ironrdp::gcc::KeyboardType::OlivettiIco, - KeyboardType::Nokia1050 => ironrdp::gcc::KeyboardType::Nokia1050, - KeyboardType::Nokia9140 => ironrdp::gcc::KeyboardType::Nokia9140, - KeyboardType::Japanese => ironrdp::gcc::KeyboardType::Japanese, + KeyboardType::IbmEnhanced => ironrdp::pdu::gcc::KeyboardType::IbmEnhanced, + KeyboardType::IbmPcAt => ironrdp::pdu::gcc::KeyboardType::IbmPcAt, + KeyboardType::IbmPcXt => ironrdp::pdu::gcc::KeyboardType::IbmPcXt, + KeyboardType::OlivettiIco => ironrdp::pdu::gcc::KeyboardType::OlivettiIco, + KeyboardType::Nokia1050 => ironrdp::pdu::gcc::KeyboardType::Nokia1050, + KeyboardType::Nokia9140 => ironrdp::pdu::gcc::KeyboardType::Nokia9140, + KeyboardType::Japanese => ironrdp::pdu::gcc::KeyboardType::Japanese, } } } diff --git a/ironrdp-client-glutin/src/gui.rs b/crates/client-glutin/src/gui.rs similarity index 97% rename from ironrdp-client-glutin/src/gui.rs rename to crates/client-glutin/src/gui.rs index 66b8799c..44197320 100644 --- a/ironrdp-client-glutin/src/gui.rs +++ b/crates/client-glutin/src/gui.rs @@ -6,9 +6,9 @@ use std::sync::{self, Arc}; use glutin::dpi::PhysicalPosition; use glutin::event::{Event, WindowEvent}; use glutin::event_loop::ControlFlow; -use ironrdp::dvc::gfx::ServerPdu; +use ironrdp::pdu::dvc::gfx::ServerPdu; use ironrdp::session::{ErasedWriter, GfxHandler}; -use ironrdp_renderer::renderer::Renderer; +use ironrdp_glutin_renderer::renderer::Renderer; use tokio::sync::Mutex; use self::input::{handle_input_events, translate_input_event}; @@ -28,7 +28,7 @@ impl MessagePassingGfxHandler { } impl GfxHandler for MessagePassingGfxHandler { - fn on_message(&self, message: ServerPdu) -> Result, RdpError> { + fn on_message(&self, message: ServerPdu) -> Result, RdpError> { self.channel.send(message).map_err(|e| RdpError::Send(e.to_string()))?; Ok(None) } diff --git a/ironrdp-client-glutin/src/gui/input.rs b/crates/client-glutin/src/gui/input.rs similarity index 94% rename from ironrdp-client-glutin/src/gui/input.rs rename to crates/client-glutin/src/gui/input.rs index 42b930c1..baaea0aa 100644 --- a/ironrdp-client-glutin/src/gui/input.rs +++ b/crates/client-glutin/src/gui/input.rs @@ -4,10 +4,10 @@ use std::sync::Arc; use futures_util::AsyncWriteExt; use glutin::dpi::PhysicalPosition; use glutin::event::{ElementState, Event, WindowEvent}; -use ironrdp::core::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; -use ironrdp::core::input::mouse::PointerFlags; -use ironrdp::core::input::MousePdu; -use ironrdp::core::PduParsing; +use ironrdp::pdu::input::fast_path::{FastPathInput, FastPathInputEvent, KeyboardFlags}; +use ironrdp::pdu::input::mouse::PointerFlags; +use ironrdp::pdu::input::MousePdu; +use ironrdp::pdu::PduParsing; use ironrdp::session::ErasedWriter; use tokio::sync::Mutex; diff --git a/ironrdp-client-glutin/src/main.rs b/crates/client-glutin/src/main.rs similarity index 99% rename from ironrdp-client-glutin/src/main.rs rename to crates/client-glutin/src/main.rs index 7639e974..d1fc53fb 100644 --- a/ironrdp-client-glutin/src/main.rs +++ b/crates/client-glutin/src/main.rs @@ -9,8 +9,8 @@ use std::{io, process}; use futures_util::io::AsyncWriteExt as _; use gui::MessagePassingGfxHandler; -use ironrdp::dvc::gfx::ServerPdu; use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::pdu::dvc::gfx::ServerPdu; use ironrdp::session::connection_sequence::{process_connection_sequence, UpgradedStream}; use ironrdp::session::image::DecodedImage; use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, RdpError}; diff --git a/ironrdp-client/Cargo.toml b/crates/client/Cargo.toml similarity index 74% rename from ironrdp-client/Cargo.toml rename to crates/client/Cargo.toml index 6a130e92..67186cdf 100644 --- a/ironrdp-client/Cargo.toml +++ b/crates/client/Cargo.toml @@ -11,15 +11,16 @@ keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [features] default = ["rustls"] -rustls = ["dep:tokio-rustls", "ironrdp/rustls"] -native-tls = ["dep:async-native-tls", "ironrdp/native-tls"] +rustls = ["dep:tokio-rustls", "ironrdp-session/rustls"] +native-tls = ["dep:async-native-tls", "ironrdp-session/native-tls"] [dependencies] -# Protocol -ironrdp = { path = "../ironrdp" } -ironrdp-input = { path = "../ironrdp-input" } -sspi = { version = "0.8.0", features = ["network_client"] } # TODO: enable dns_resolver at some point +# Protocols +ironrdp = { path = "../.." } +ironrdp-input = { path = "../input" } +ironrdp-session = { path = "../session" } +sspi = { version = "0.8", features = ["network_client"] } # TODO: enable dns_resolver at some point # GUI softbuffer = "0.2.0" @@ -30,16 +31,18 @@ clap = { version = "4.0", features = ["derive", "cargo"] } exitcode = "1.1.2" inquire = "0.5.3" -# logging +# Logging log = "0.4" fern = "0.6" +tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } +tracing = "0.1.37" # SSL x509-parser = "0.14" async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ], optional = true } tokio-rustls = { version = "0.23", features = ["dangerous_configuration"], optional = true } -# async, futures +# Async, futures tokio = { version = "1", features = ["full"]} tokio-util = { version = "0.7.4", features = ["compat"] } futures-util = "0.3" @@ -49,5 +52,3 @@ chrono = "0.4.23" whoami = "1.2.3" anyhow = "1.0.68" smallvec = "1.10.0" -tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } -tracing = "0.1.37" diff --git a/ironrdp-client/README.md b/crates/client/README.md similarity index 100% rename from ironrdp-client/README.md rename to crates/client/README.md diff --git a/ironrdp-client/src/config.rs b/crates/client/src/config.rs similarity index 84% rename from ironrdp-client/src/config.rs rename to crates/client/src/config.rs index 7815ffb5..34b6b3df 100644 --- a/ironrdp-client/src/config.rs +++ b/crates/client/src/config.rs @@ -26,11 +26,11 @@ enum SecurityProtocol { } impl SecurityProtocol { - fn parse(security_protocol: SecurityProtocol) -> ironrdp::core::SecurityProtocol { + fn parse(security_protocol: SecurityProtocol) -> ironrdp::pdu::SecurityProtocol { match security_protocol { - SecurityProtocol::Ssl => ironrdp::core::SecurityProtocol::SSL, - SecurityProtocol::Hybrid => ironrdp::core::SecurityProtocol::HYBRID, - SecurityProtocol::HybridEx => ironrdp::core::SecurityProtocol::HYBRID_EX, + SecurityProtocol::Ssl => ironrdp::pdu::SecurityProtocol::SSL, + SecurityProtocol::Hybrid => ironrdp::pdu::SecurityProtocol::HYBRID, + SecurityProtocol::HybridEx => ironrdp::pdu::SecurityProtocol::HYBRID_EX, } } } @@ -47,15 +47,15 @@ enum KeyboardType { } impl KeyboardType { - fn parse(keyboard_type: KeyboardType) -> ironrdp::gcc::KeyboardType { + fn parse(keyboard_type: KeyboardType) -> ironrdp::pdu::gcc::KeyboardType { match keyboard_type { - KeyboardType::IbmEnhanced => ironrdp::gcc::KeyboardType::IbmEnhanced, - KeyboardType::IbmPcAt => ironrdp::gcc::KeyboardType::IbmPcAt, - KeyboardType::IbmPcXt => ironrdp::gcc::KeyboardType::IbmPcXt, - KeyboardType::OlivettiIco => ironrdp::gcc::KeyboardType::OlivettiIco, - KeyboardType::Nokia1050 => ironrdp::gcc::KeyboardType::Nokia1050, - KeyboardType::Nokia9140 => ironrdp::gcc::KeyboardType::Nokia9140, - KeyboardType::Japanese => ironrdp::gcc::KeyboardType::Japanese, + KeyboardType::IbmEnhanced => ironrdp::pdu::gcc::KeyboardType::IbmEnhanced, + KeyboardType::IbmPcAt => ironrdp::pdu::gcc::KeyboardType::IbmPcAt, + KeyboardType::IbmPcXt => ironrdp::pdu::gcc::KeyboardType::IbmPcXt, + KeyboardType::OlivettiIco => ironrdp::pdu::gcc::KeyboardType::OlivettiIco, + KeyboardType::Nokia1050 => ironrdp::pdu::gcc::KeyboardType::Nokia1050, + KeyboardType::Nokia9140 => ironrdp::pdu::gcc::KeyboardType::Nokia9140, + KeyboardType::Japanese => ironrdp::pdu::gcc::KeyboardType::Japanese, } } } diff --git a/ironrdp-client/src/gui.rs b/crates/client/src/gui.rs similarity index 99% rename from ironrdp-client/src/gui.rs rename to crates/client/src/gui.rs index b4eca3de..e7563573 100644 --- a/ironrdp-client/src/gui.rs +++ b/crates/client/src/gui.rs @@ -261,7 +261,7 @@ impl GuiContext { fn send_fast_path_events( input_event_sender: &mpsc::UnboundedSender, - input_events: smallvec::SmallVec<[ironrdp::core::input::fast_path::FastPathInputEvent; 2]>, + input_events: smallvec::SmallVec<[ironrdp::pdu::input::fast_path::FastPathInputEvent; 2]>, ) { if !input_events.is_empty() { let _ = input_event_sender.send(RdpInputEvent::FastPath(input_events)); diff --git a/ironrdp-client/src/lib.rs b/crates/client/src/lib.rs similarity index 100% rename from ironrdp-client/src/lib.rs rename to crates/client/src/lib.rs diff --git a/ironrdp-client/src/main.rs b/crates/client/src/main.rs similarity index 95% rename from ironrdp-client/src/main.rs rename to crates/client/src/main.rs index 135011e0..adfed714 100644 --- a/ironrdp-client/src/main.rs +++ b/crates/client/src/main.rs @@ -1,15 +1,11 @@ #[macro_use] extern crate log; -use std::fs::OpenOptions; - use anyhow::Context as _; use ironrdp_client::config::Config; use ironrdp_client::gui::GuiContext; use ironrdp_client::rdp::{RdpClient, RdpInputEvent}; use tokio::runtime; -use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; -use tracing_subscriber::EnvFilter; fn main() -> anyhow::Result<()> { let mut config = Config::parse_args().context("CLI arguments parsing")?; @@ -63,6 +59,11 @@ fn setup_logging(log_file: &str) -> Result<(), fern::InitError> { // sspi-rs logging if let Ok(path) = std::env::var("SSPI_LOG_FILE") { + use std::fs::OpenOptions; + + use tracing_subscriber::prelude::*; + use tracing_subscriber::EnvFilter; + let file = match OpenOptions::new().read(true).append(true).open(path) { Ok(file) => file, Err(e) => { diff --git a/ironrdp-client/src/rdp.rs b/crates/client/src/rdp.rs similarity index 95% rename from ironrdp-client/src/rdp.rs rename to crates/client/src/rdp.rs index 450a8c66..f92303a0 100644 --- a/ironrdp-client/src/rdp.rs +++ b/crates/client/src/rdp.rs @@ -1,6 +1,6 @@ use futures_util::io::AsyncWriteExt as _; -use ironrdp::core::input::fast_path::FastPathInputEvent; use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::pdu::input::fast_path::FastPathInputEvent; use ironrdp::session::connection_sequence::{process_connection_sequence, Address}; use ironrdp::session::image::DecodedImage; use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, RdpError}; @@ -143,8 +143,8 @@ async fn run_impl( return Ok(RdpControlFlow::ReconnectWithNewSize { width, height }) }, RdpInputEvent::FastPath(events) => { - use ironrdp::core::input::fast_path::FastPathInput; - use ironrdp::core::PduParsing as _; + use ironrdp::pdu::input::fast_path::FastPathInput; + use ironrdp::pdu::PduParsing as _; trace!("Inputs: {events:?}"); @@ -159,7 +159,7 @@ async fn run_impl( writer.write_all(&frame).await?; } RdpInputEvent::Close => { - // TODO: should we send a connection close to server? + // TODO: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 break 'outer; } } diff --git a/ironrdp-client/src/tls.rs b/crates/client/src/tls.rs similarity index 100% rename from ironrdp-client/src/tls.rs rename to crates/client/src/tls.rs diff --git a/ironrdp-renderer/Cargo.toml b/crates/glutin-renderer/Cargo.toml similarity index 81% rename from ironrdp-renderer/Cargo.toml rename to crates/glutin-renderer/Cargo.toml index ad945aac..e2efe3f0 100644 --- a/ironrdp-renderer/Cargo.toml +++ b/crates/glutin-renderer/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp-renderer" +name = "ironrdp-glutin-renderer" version = "0.1.0" edition = "2021" readme = "README.md" @@ -8,13 +8,10 @@ homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] -[lib] -path = "src/lib.rs" - [dependencies] +ironrdp = { path = "../.." } glow = "0.11" log = "0.4" thiserror = "1.0.38" -ironrdp = { path = "../ironrdp" } glutin = { version = "0.29" } openh264 = { version = "0.3" } diff --git a/ironrdp-renderer/shaders/avc.vert b/crates/glutin-renderer/shaders/avc.vert similarity index 95% rename from ironrdp-renderer/shaders/avc.vert rename to crates/glutin-renderer/shaders/avc.vert index 12aa17d5..2477588c 100644 --- a/ironrdp-renderer/shaders/avc.vert +++ b/crates/glutin-renderer/shaders/avc.vert @@ -1,8 +1,8 @@ -precision mediump float; - -uniform mat4 u_projection; -attribute vec2 a_position; - -void main(){ - gl_Position = u_projection * vec4(a_position, 0.0, 1.0); +precision mediump float; + +uniform mat4 u_projection; +attribute vec2 a_position; + +void main(){ + gl_Position = u_projection * vec4(a_position, 0.0, 1.0); } \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc420.frag b/crates/glutin-renderer/shaders/avc420.frag similarity index 97% rename from ironrdp-renderer/shaders/avc420.frag rename to crates/glutin-renderer/shaders/avc420.frag index 1e68d41a..639873c2 100644 --- a/ironrdp-renderer/shaders/avc420.frag +++ b/crates/glutin-renderer/shaders/avc420.frag @@ -1,35 +1,35 @@ -precision lowp float; - -uniform vec2 screen_size; -uniform vec2 stride_scale; -uniform sampler2D main_y_texture; -uniform sampler2D main_u_texture; -uniform sampler2D main_v_texture; - -uniform sampler2D aux_y_texture; -uniform sampler2D aux_u_texture; -uniform sampler2D aux_v_texture; - -// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js -const mat4 conversion = mat4( - 1.16438, 0.00000, 1.79274, -0.97295, - 1.16438, -0.21325, -0.53291, 0.30148, - 1.16438, 2.11240, 0.00000, -1.13340, - 0, 0, 0, 1 -); - -void main(void) { - // Inverted image - vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); - - // Scale from [0..width, 0..height] to [0..1.0, 0..1.0] range and - // then scale to eliminate the stride padding - vec2 tex_coord = ((coordinates) / screen_size) * stride_scale; - - float main_y_channel = texture2D(main_y_texture, tex_coord).x; - float main_u_channel = texture2D(main_u_texture, tex_coord).x; - float main_v_channel = texture2D(main_v_texture, tex_coord).x; - - vec4 channels = vec4(main_y_channel, main_u_channel, main_v_channel, 1.0); - gl_FragColor = channels * conversion; +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +void main(void) { + // Inverted image + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); + + // Scale from [0..width, 0..height] to [0..1.0, 0..1.0] range and + // then scale to eliminate the stride padding + vec2 tex_coord = ((coordinates) / screen_size) * stride_scale; + + float main_y_channel = texture2D(main_y_texture, tex_coord).x; + float main_u_channel = texture2D(main_u_texture, tex_coord).x; + float main_v_channel = texture2D(main_v_texture, tex_coord).x; + + vec4 channels = vec4(main_y_channel, main_u_channel, main_v_channel, 1.0); + gl_FragColor = channels * conversion; } \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc444.frag b/crates/glutin-renderer/shaders/avc444.frag similarity index 97% rename from ironrdp-renderer/shaders/avc444.frag rename to crates/glutin-renderer/shaders/avc444.frag index 1b55e93b..9851b8b2 100644 --- a/ironrdp-renderer/shaders/avc444.frag +++ b/crates/glutin-renderer/shaders/avc444.frag @@ -1,77 +1,77 @@ -precision lowp float; - -uniform vec2 screen_size; -uniform vec2 stride_scale; -uniform sampler2D main_y_texture; -uniform sampler2D main_u_texture; -uniform sampler2D main_v_texture; - -uniform sampler2D aux_y_texture; -uniform sampler2D aux_u_texture; -uniform sampler2D aux_v_texture; - -const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); - -// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js -const mat4 conversion = mat4( - 1.16438, 0.00000, 1.79274, -0.97295, - 1.16438, -0.21325, -0.53291, 0.30148, - 1.16438, 2.11240, 0.00000, -1.13340, - 0, 0, 0, 1 -); - -const vec2 half_offset = vec2(0.5, 0.5); - -void main(void) { - vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y) ; - vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; - // Query the main view - float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; - float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; - float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; - - coordinates = coordinates - half_offset; - - float offset = floor(mod(coordinates.y, 16.0) * 0.5); - float start_y = offset + floor(coordinates.y / 16.0) * 16.0; - // Auxiliary view - vec2 aux_tex_coord = vec2(coordinates.x, start_y) + half_offset; - vec2 aux_tex_coord_next = aux_tex_coord + vec2(1.0, 0.0); - - vec2 top_half = aux_tex_coord/screen_size * stride_scale; - vec2 top_half_next = aux_tex_coord_next/screen_size * stride_scale; - vec2 bottom_half = (aux_tex_coord + vec2(0.0, 8.0))/screen_size * stride_scale; - vec2 bottom_half_next = (aux_tex_coord_next + vec2(0.0, 8.0))/screen_size * stride_scale; - - float aux_b4 = texture2D(aux_y_texture, top_half).x; - float aux_b5 = texture2D(aux_y_texture, bottom_half).x; - float next_u = texture2D(aux_y_texture, top_half_next).x; - float next_v = texture2D(aux_y_texture, bottom_half_next).x; - vec2 aux_uv_additional = vec2(next_u, next_v); - - float aux_b6 = texture2D(aux_u_texture, main_tex_coord).x; - float aux_b7 = texture2D(aux_v_texture, main_tex_coord).x; - - float is_x_odd = mod(coordinates.x, 2.0); - float is_y_odd = mod(coordinates.y, 2.0); - float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); - - vec2 aux_uv_main = vec2(aux_b4, aux_b5); - vec2 aux_uv_secondary = vec2(aux_b6, aux_b7); - - vec2 uv_channels = is_y_odd * aux_uv_main + (1.0 - is_y_odd) * is_x_odd * aux_uv_secondary; - - // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule - vec2 main_uv=vec2(main_u_channel, main_v_channel); - vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_secondary - aux_uv_additional, vec2(0.0, 0.0), vec2(1.0, 1.0)); - vec2 uv_diff = abs(uv_augmented - main_uv); - bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); - vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); - vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); - - vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; - - vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); - vec3 rgb = (channels * conversion).xyz; - gl_FragColor = vec4(rgb, 1.0); +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +const vec2 half_offset = vec2(0.5, 0.5); + +void main(void) { + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y) ; + vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; + // Query the main view + float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; + float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; + float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; + + coordinates = coordinates - half_offset; + + float offset = floor(mod(coordinates.y, 16.0) * 0.5); + float start_y = offset + floor(coordinates.y / 16.0) * 16.0; + // Auxiliary view + vec2 aux_tex_coord = vec2(coordinates.x, start_y) + half_offset; + vec2 aux_tex_coord_next = aux_tex_coord + vec2(1.0, 0.0); + + vec2 top_half = aux_tex_coord/screen_size * stride_scale; + vec2 top_half_next = aux_tex_coord_next/screen_size * stride_scale; + vec2 bottom_half = (aux_tex_coord + vec2(0.0, 8.0))/screen_size * stride_scale; + vec2 bottom_half_next = (aux_tex_coord_next + vec2(0.0, 8.0))/screen_size * stride_scale; + + float aux_b4 = texture2D(aux_y_texture, top_half).x; + float aux_b5 = texture2D(aux_y_texture, bottom_half).x; + float next_u = texture2D(aux_y_texture, top_half_next).x; + float next_v = texture2D(aux_y_texture, bottom_half_next).x; + vec2 aux_uv_additional = vec2(next_u, next_v); + + float aux_b6 = texture2D(aux_u_texture, main_tex_coord).x; + float aux_b7 = texture2D(aux_v_texture, main_tex_coord).x; + + float is_x_odd = mod(coordinates.x, 2.0); + float is_y_odd = mod(coordinates.y, 2.0); + float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); + + vec2 aux_uv_main = vec2(aux_b4, aux_b5); + vec2 aux_uv_secondary = vec2(aux_b6, aux_b7); + + vec2 uv_channels = is_y_odd * aux_uv_main + (1.0 - is_y_odd) * is_x_odd * aux_uv_secondary; + + // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule + vec2 main_uv=vec2(main_u_channel, main_v_channel); + vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_secondary - aux_uv_additional, vec2(0.0, 0.0), vec2(1.0, 1.0)); + vec2 uv_diff = abs(uv_augmented - main_uv); + bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); + vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); + vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); + + vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; + + vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); + vec3 rgb = (channels * conversion).xyz; + gl_FragColor = vec4(rgb, 1.0); } \ No newline at end of file diff --git a/ironrdp-renderer/shaders/avc444v2.frag b/crates/glutin-renderer/shaders/avc444v2.frag similarity index 97% rename from ironrdp-renderer/shaders/avc444v2.frag rename to crates/glutin-renderer/shaders/avc444v2.frag index 6e72bfcc..872e206d 100644 --- a/ironrdp-renderer/shaders/avc444v2.frag +++ b/crates/glutin-renderer/shaders/avc444v2.frag @@ -1,79 +1,79 @@ -precision lowp float; - -uniform vec2 screen_size; -uniform vec2 stride_scale; -uniform sampler2D main_y_texture; -uniform sampler2D main_u_texture; -uniform sampler2D main_v_texture; - -uniform sampler2D aux_y_texture; -uniform sampler2D aux_u_texture; -uniform sampler2D aux_v_texture; - -const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); - -// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js -const mat4 conversion = mat4( - 1.16438, 0.00000, 1.79274, -0.97295, - 1.16438, -0.21325, -0.53291, 0.30148, - 1.16438, 2.11240, 0.00000, -1.13340, - 0, 0, 0, 1 -); - -const vec2 half_offset = vec2(0.5, 0.5); - -void main(void) { - - vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); - - // Query the main view - vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; - float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; - float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; - float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; - - coordinates = coordinates - half_offset; - float left_x = coordinates.x * 0.5; - float right_x = (screen_size.x + coordinates.x) * 0.5; - - // Auxiliary view - // Left - vec2 left_half = (vec2(left_x, coordinates.y) + half_offset)/screen_size * stride_scale; - float aux_ub4 = texture2D(aux_y_texture, left_half).x; - float aux_ub6 = texture2D(aux_u_texture, left_half).x; - float aux_ub8 = texture2D(aux_v_texture, left_half).x; - - // Right - vec2 right_half = (vec2(right_x, coordinates.y) + half_offset)/screen_size * stride_scale; - float aux_vb5 = texture2D(aux_y_texture, right_half).x; - float aux_vb7 = texture2D(aux_u_texture, right_half).x; - float aux_vb9 = texture2D(aux_v_texture, right_half).x; - - // Create aux view - vec2 aux_uv_main = vec2(aux_ub4, aux_vb5); - vec2 aux_uv_left = vec2(aux_ub6, aux_vb7); - vec2 aux_uv_right = vec2(aux_ub8, aux_vb9); - - float is_x_odd = mod(coordinates.x, 2.0); - float is_y_odd = mod(coordinates.y, 2.0); - float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); - float is_x_mod_4 = float(mod(coordinates.x, 4.0) < 1.0); - - // If x is odd then b4,b5 have data - // else if y is odd then b6,b7 have data when x is divisible by 4 - // else b8,b9 have data - vec2 uv_channels = is_x_odd * aux_uv_main + (1.0 - is_x_odd) * is_y_odd * (is_x_mod_4 * aux_uv_left + (1.0 - is_x_mod_4) * aux_uv_right); - - // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule - vec2 main_uv=vec2(main_u_channel, main_v_channel); - vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_left - aux_uv_right, vec2(0.0, 0.0), vec2(1.0, 1.0)); - vec2 uv_diff = abs(uv_augmented - main_uv); - bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); - vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); - vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); - - vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; - vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); - vec3 rgb = (channels * conversion).xyz; - gl_FragColor = vec4(rgb, 1.0); +precision lowp float; + +uniform vec2 screen_size; +uniform vec2 stride_scale; +uniform sampler2D main_y_texture; +uniform sampler2D main_u_texture; +uniform sampler2D main_v_texture; + +uniform sampler2D aux_y_texture; +uniform sampler2D aux_u_texture; +uniform sampler2D aux_v_texture; + +const vec2 CUTOFF = vec2(30.0/255.0, 30.0/255.0); + +// YUV to RGB conversion matrix from https://github.com/mbebenita/Broadway/blob/master/Player/YUVCanvas.js +const mat4 conversion = mat4( + 1.16438, 0.00000, 1.79274, -0.97295, + 1.16438, -0.21325, -0.53291, 0.30148, + 1.16438, 2.11240, 0.00000, -1.13340, + 0, 0, 0, 1 +); + +const vec2 half_offset = vec2(0.5, 0.5); + +void main(void) { + + vec2 coordinates = vec2(gl_FragCoord.x, screen_size.y - gl_FragCoord.y); + + // Query the main view + vec2 main_tex_coord = (coordinates / screen_size) * stride_scale; + float main_y_channel = texture2D(main_y_texture, main_tex_coord).x; + float main_u_channel = texture2D(main_u_texture, main_tex_coord).x; + float main_v_channel = texture2D(main_v_texture, main_tex_coord).x; + + coordinates = coordinates - half_offset; + float left_x = coordinates.x * 0.5; + float right_x = (screen_size.x + coordinates.x) * 0.5; + + // Auxiliary view + // Left + vec2 left_half = (vec2(left_x, coordinates.y) + half_offset)/screen_size * stride_scale; + float aux_ub4 = texture2D(aux_y_texture, left_half).x; + float aux_ub6 = texture2D(aux_u_texture, left_half).x; + float aux_ub8 = texture2D(aux_v_texture, left_half).x; + + // Right + vec2 right_half = (vec2(right_x, coordinates.y) + half_offset)/screen_size * stride_scale; + float aux_vb5 = texture2D(aux_y_texture, right_half).x; + float aux_vb7 = texture2D(aux_u_texture, right_half).x; + float aux_vb9 = texture2D(aux_v_texture, right_half).x; + + // Create aux view + vec2 aux_uv_main = vec2(aux_ub4, aux_vb5); + vec2 aux_uv_left = vec2(aux_ub6, aux_vb7); + vec2 aux_uv_right = vec2(aux_ub8, aux_vb9); + + float is_x_odd = mod(coordinates.x, 2.0); + float is_y_odd = mod(coordinates.y, 2.0); + float is_xy_even = (1.0 - is_x_odd) * (1.0 - is_y_odd); + float is_x_mod_4 = float(mod(coordinates.x, 4.0) < 1.0); + + // If x is odd then b4,b5 have data + // else if y is odd then b6,b7 have data when x is divisible by 4 + // else b8,b9 have data + vec2 uv_channels = is_x_odd * aux_uv_main + (1.0 - is_x_odd) * is_y_odd * (is_x_mod_4 * aux_uv_left + (1.0 - is_x_mod_4) * aux_uv_right); + + // Apply the reverse filter when both (x, y) are even based on [MS-RDPEGFX] rule + vec2 main_uv=vec2(main_u_channel, main_v_channel); + vec2 uv_augmented = clamp(main_uv * 4.0 - aux_uv_main - aux_uv_left - aux_uv_right, vec2(0.0, 0.0), vec2(1.0, 1.0)); + vec2 uv_diff = abs(uv_augmented - main_uv); + bvec2 uv_is_greater = greaterThan(uv_diff, CUTOFF); + vec2 uv_is_greater_vec = vec2(uv_is_greater.x, uv_is_greater.y); + vec2 uv_touse = uv_augmented * uv_is_greater_vec + main_uv * (vec2(1.0, 1.0) - uv_is_greater_vec); + + vec2 final_uv_channels = is_xy_even * uv_touse + (1.0 - is_xy_even) * uv_channels; + vec4 channels = vec4(main_y_channel, final_uv_channels.x, final_uv_channels.y, 1.0); + vec3 rgb = (channels * conversion).xyz; + gl_FragColor = vec4(rgb, 1.0); } \ No newline at end of file diff --git a/ironrdp-renderer/shaders/texture_shader.frag b/crates/glutin-renderer/shaders/texture_shader.frag similarity index 95% rename from ironrdp-renderer/shaders/texture_shader.frag rename to crates/glutin-renderer/shaders/texture_shader.frag index bbbb22d2..bf62522f 100644 --- a/ironrdp-renderer/shaders/texture_shader.frag +++ b/crates/glutin-renderer/shaders/texture_shader.frag @@ -1,9 +1,9 @@ -precision lowp float; - -varying vec2 v_texCoord; -uniform sampler2D screen_texture; - -void main(void) { - vec4 color = texture2D(screen_texture, v_texCoord); - gl_FragColor = color; +precision lowp float; + +varying vec2 v_texCoord; +uniform sampler2D screen_texture; + +void main(void) { + vec4 color = texture2D(screen_texture, v_texCoord); + gl_FragColor = color; } \ No newline at end of file diff --git a/ironrdp-renderer/shaders/texture_shader.vert b/crates/glutin-renderer/shaders/texture_shader.vert similarity index 95% rename from ironrdp-renderer/shaders/texture_shader.vert rename to crates/glutin-renderer/shaders/texture_shader.vert index f9acb74e..cfcf6a18 100644 --- a/ironrdp-renderer/shaders/texture_shader.vert +++ b/crates/glutin-renderer/shaders/texture_shader.vert @@ -1,10 +1,10 @@ -precision mediump float; - -attribute vec2 a_position; -attribute vec2 a_tex_coord; -varying vec2 v_texCoord; - -void main(){ - v_texCoord = a_tex_coord; - gl_Position = vec4(a_position, 0.0, 1.0); +precision mediump float; + +attribute vec2 a_position; +attribute vec2 a_tex_coord; +varying vec2 v_texCoord; + +void main(){ + v_texCoord = a_tex_coord; + gl_Position = vec4(a_position, 0.0, 1.0); } \ No newline at end of file diff --git a/ironrdp-renderer/src/draw.rs b/crates/glutin-renderer/src/draw.rs similarity index 99% rename from ironrdp-renderer/src/draw.rs rename to crates/glutin-renderer/src/draw.rs index c7dceae4..17da9c08 100644 --- a/ironrdp-renderer/src/draw.rs +++ b/crates/glutin-renderer/src/draw.rs @@ -4,7 +4,7 @@ use std::slice::from_raw_parts; use std::sync::Arc; use glow::*; -use ironrdp::geometry::Rectangle; +use ironrdp::pdu::geometry::Rectangle; fn cast_as_bytes(input: &[T]) -> &[u8] { unsafe { from_raw_parts(input.as_ptr() as *const u8, input.len() * size_of::()) } diff --git a/ironrdp-renderer/src/lib.rs b/crates/glutin-renderer/src/lib.rs similarity index 100% rename from ironrdp-renderer/src/lib.rs rename to crates/glutin-renderer/src/lib.rs diff --git a/ironrdp-renderer/src/renderer.rs b/crates/glutin-renderer/src/renderer.rs similarity index 97% rename from ironrdp-renderer/src/renderer.rs rename to crates/glutin-renderer/src/renderer.rs index dc70c557..532d8310 100644 --- a/ironrdp-renderer/src/renderer.rs +++ b/crates/glutin-renderer/src/renderer.rs @@ -7,10 +7,10 @@ use std::thread; use std::thread::JoinHandle; use glutin::dpi::PhysicalSize; -use ironrdp::dvc::gfx; -use ironrdp::dvc::gfx::{Codec1Type, ServerPdu}; -use ironrdp::geometry::Rectangle; -use ironrdp::PduParsing; +use ironrdp::pdu::dvc::gfx; +use ironrdp::pdu::dvc::gfx::{Codec1Type, ServerPdu}; +use ironrdp::pdu::geometry::Rectangle; +use ironrdp::pdu::PduParsing; use log::info; use thiserror::Error; diff --git a/ironrdp-renderer/src/surface.rs b/crates/glutin-renderer/src/surface.rs similarity index 96% rename from ironrdp-renderer/src/surface.rs rename to crates/glutin-renderer/src/surface.rs index df5c6fb9..9eee6ded 100644 --- a/ironrdp-renderer/src/surface.rs +++ b/crates/glutin-renderer/src/surface.rs @@ -3,12 +3,12 @@ use std::fmt::Debug; use std::sync::Arc; use glow::Context; -use ironrdp::core::dvc::gfx::{ +use ironrdp::pdu::dvc::gfx::{ Avc420BitmapStream, Avc444BitmapStream, Codec1Type, CreateSurfacePdu, Encoding, GraphicsPipelineError, PixelFormat, WireToSurface1Pdu, }; -use ironrdp::core::PduBufferParsing; -use ironrdp::geometry::Rectangle; +use ironrdp::pdu::geometry::Rectangle; +use ironrdp::pdu::PduBufferParsing; use log::error; use openh264::decoder::{DecodedYUV, Decoder}; @@ -58,7 +58,7 @@ impl SurfaceDecoders { .get_mut(&pdu.surface_id) .ok_or(RendererError::InvalidSurfaceId(pdu.surface_id))?; match pdu.codec_id { - ironrdp::dvc::gfx::Codec1Type::Avc420 => { + ironrdp::pdu::dvc::gfx::Codec1Type::Avc420 => { let packet = Avc420BitmapStream::from_buffer_consume(&mut pdu.bitmap_data.as_slice()) .map_err(GraphicsPipelineError::from)?; let yuv = decoder.decode(packet.data)?.ok_or(RendererError::DecodeError)?; @@ -77,7 +77,7 @@ impl SurfaceDecoders { dimensions, }) } - ironrdp::dvc::gfx::Codec1Type::Avc444 | ironrdp::dvc::gfx::Codec1Type::Avc444v2 => { + ironrdp::pdu::dvc::gfx::Codec1Type::Avc444 | ironrdp::pdu::dvc::gfx::Codec1Type::Avc444v2 => { let packet = Avc444BitmapStream::from_buffer_consume(&mut pdu.bitmap_data.as_slice()) .map_err(GraphicsPipelineError::from)?; let yuv = decoder.decode(packet.stream1.data)?.ok_or(RendererError::DecodeError)?; @@ -304,7 +304,7 @@ impl Surfaces { pub(crate) fn map_surface_to_scaled_output( &mut self, - pdu: ironrdp::dvc::gfx::MapSurfaceToScaledOutputPdu, + pdu: ironrdp::pdu::dvc::gfx::MapSurfaceToScaledOutputPdu, ) -> Result<()> { let surface = self.get_surface(pdu.surface_id)?; surface.set_location(Rectangle { diff --git a/ironrdp-graphics/Cargo.toml b/crates/graphics/Cargo.toml similarity index 93% rename from ironrdp-graphics/Cargo.toml rename to crates/graphics/Cargo.toml index ce281bd2..214717e0 100644 --- a/ironrdp-graphics/Cargo.toml +++ b/crates/graphics/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] [dependencies] -ironrdp-core = { path = "../ironrdp-core" } +ironrdp-pdu = { path = "../pdu" } num-traits = "0.2.15" num-derive = "0.3.3" byteorder = "1.4.3" diff --git a/ironrdp-graphics/README.md b/crates/graphics/README.md similarity index 100% rename from ironrdp-graphics/README.md rename to crates/graphics/README.md diff --git a/ironrdp-graphics/src/color_conversion.rs b/crates/graphics/src/color_conversion.rs similarity index 100% rename from ironrdp-graphics/src/color_conversion.rs rename to crates/graphics/src/color_conversion.rs diff --git a/ironrdp-graphics/src/dwt.rs b/crates/graphics/src/dwt.rs similarity index 98% rename from ironrdp-graphics/src/dwt.rs rename to crates/graphics/src/dwt.rs index 44d87843..bc8d988c 100644 --- a/ironrdp-graphics/src/dwt.rs +++ b/crates/graphics/src/dwt.rs @@ -1,4 +1,4 @@ -use ironrdp_core::utils::SplitTo as _; +use ironrdp_pdu::utils::SplitTo as _; pub fn decode(buffer: &mut [i16], temp_buffer: &mut [i16]) { decode_block(&mut buffer[3840..], temp_buffer, 8); diff --git a/ironrdp-graphics/src/image_processing.rs b/crates/graphics/src/image_processing.rs similarity index 99% rename from ironrdp-graphics/src/image_processing.rs rename to crates/graphics/src/image_processing.rs index d047ba4a..1e6b2b50 100644 --- a/ironrdp-graphics/src/image_processing.rs +++ b/crates/graphics/src/image_processing.rs @@ -1,7 +1,7 @@ use std::io; use byteorder::WriteBytesExt; -use ironrdp_core::geometry::Rectangle; +use ironrdp_pdu::geometry::Rectangle; use num_derive::ToPrimitive; use num_traits::ToPrimitive as _; diff --git a/ironrdp-graphics/src/lib.rs b/crates/graphics/src/lib.rs similarity index 100% rename from ironrdp-graphics/src/lib.rs rename to crates/graphics/src/lib.rs diff --git a/ironrdp-graphics/src/quantization.rs b/crates/graphics/src/quantization.rs similarity index 99% rename from ironrdp-graphics/src/quantization.rs rename to crates/graphics/src/quantization.rs index 3e512ad0..cfb353ea 100644 --- a/ironrdp-graphics/src/quantization.rs +++ b/crates/graphics/src/quantization.rs @@ -1,4 +1,4 @@ -use ironrdp_core::codecs::rfx::Quant; +use ironrdp_pdu::codecs::rfx::Quant; const FIRST_LEVEL_SIZE: usize = 1024; const SECOND_LEVEL_SIZE: usize = 256; diff --git a/ironrdp-graphics/src/rectangle_processing.rs b/crates/graphics/src/rectangle_processing.rs similarity index 99% rename from ironrdp-graphics/src/rectangle_processing.rs rename to crates/graphics/src/rectangle_processing.rs index 8829585f..24ff1e14 100644 --- a/ironrdp-graphics/src/rectangle_processing.rs +++ b/crates/graphics/src/rectangle_processing.rs @@ -1,6 +1,6 @@ use std::cmp::{max, min}; -use ironrdp_core::geometry::Rectangle; +use ironrdp_pdu::geometry::Rectangle; #[derive(Debug, Clone, PartialEq, Eq)] pub struct Region { diff --git a/ironrdp-graphics/src/rle.rs b/crates/graphics/src/rle.rs similarity index 100% rename from ironrdp-graphics/src/rle.rs rename to crates/graphics/src/rle.rs diff --git a/ironrdp-graphics/src/rlgr.rs b/crates/graphics/src/rlgr.rs similarity index 99% rename from ironrdp-graphics/src/rlgr.rs rename to crates/graphics/src/rlgr.rs index 596ec0e4..5e41a023 100644 --- a/ironrdp-graphics/src/rlgr.rs +++ b/crates/graphics/src/rlgr.rs @@ -4,7 +4,7 @@ use std::io; use bitvec::field::BitField as _; use bitvec::order::Msb0; use bitvec::slice::BitSlice; -use ironrdp_core::codecs::rfx::EntropyAlgorithm; +use ironrdp_pdu::codecs::rfx::EntropyAlgorithm; use thiserror::Error; use crate::utils::Bits; diff --git a/ironrdp-graphics/src/subband_reconstruction.rs b/crates/graphics/src/subband_reconstruction.rs similarity index 100% rename from ironrdp-graphics/src/subband_reconstruction.rs rename to crates/graphics/src/subband_reconstruction.rs diff --git a/ironrdp-graphics/src/utils.rs b/crates/graphics/src/utils.rs similarity index 100% rename from ironrdp-graphics/src/utils.rs rename to crates/graphics/src/utils.rs diff --git a/ironrdp-graphics/src/zgfx/circular_buffer.rs b/crates/graphics/src/zgfx/circular_buffer.rs similarity index 100% rename from ironrdp-graphics/src/zgfx/circular_buffer.rs rename to crates/graphics/src/zgfx/circular_buffer.rs diff --git a/ironrdp-graphics/src/zgfx/control_messages.rs b/crates/graphics/src/zgfx/control_messages.rs similarity index 100% rename from ironrdp-graphics/src/zgfx/control_messages.rs rename to crates/graphics/src/zgfx/control_messages.rs diff --git a/ironrdp-graphics/src/zgfx/mod.rs b/crates/graphics/src/zgfx/mod.rs similarity index 100% rename from ironrdp-graphics/src/zgfx/mod.rs rename to crates/graphics/src/zgfx/mod.rs diff --git a/ironrdp-graphics/tests/color_conversion.rs b/crates/graphics/tests/color_conversion.rs similarity index 100% rename from ironrdp-graphics/tests/color_conversion.rs rename to crates/graphics/tests/color_conversion.rs diff --git a/ironrdp-graphics/tests/dwt.rs b/crates/graphics/tests/dwt.rs similarity index 100% rename from ironrdp-graphics/tests/dwt.rs rename to crates/graphics/tests/dwt.rs diff --git a/ironrdp-graphics/tests/image_processing.rs b/crates/graphics/tests/image_processing.rs similarity index 99% rename from ironrdp-graphics/tests/image_processing.rs rename to crates/graphics/tests/image_processing.rs index 24c42fb4..a7ef141f 100644 --- a/ironrdp-graphics/tests/image_processing.rs +++ b/crates/graphics/tests/image_processing.rs @@ -1,7 +1,7 @@ use std::io; -use ironrdp_core::geometry::Rectangle; use ironrdp_graphics::image_processing::*; +use ironrdp_pdu::geometry::Rectangle; use proptest::prelude::*; fn bgra_to_rgba(input: &[u8], mut output: &mut [u8]) -> io::Result<()> { diff --git a/ironrdp-graphics/tests/rle.rs b/crates/graphics/tests/rle.rs similarity index 100% rename from ironrdp-graphics/tests/rle.rs rename to crates/graphics/tests/rle.rs diff --git a/ironrdp-graphics/tests/rlgr.rs b/crates/graphics/tests/rlgr.rs similarity index 99% rename from ironrdp-graphics/tests/rlgr.rs rename to crates/graphics/tests/rlgr.rs index 1a71019e..87a07c7f 100644 --- a/ironrdp-graphics/tests/rlgr.rs +++ b/crates/graphics/tests/rlgr.rs @@ -1,5 +1,5 @@ -use ironrdp_core::codecs::rfx::EntropyAlgorithm; use ironrdp_graphics::rlgr::*; +use ironrdp_pdu::codecs::rfx::EntropyAlgorithm; #[test] fn decode_works_with_rlgr3() { diff --git a/ironrdp-input/Cargo.toml b/crates/input/Cargo.toml similarity index 90% rename from ironrdp-input/Cargo.toml rename to crates/input/Cargo.toml index b31a8562..67cfe05a 100644 --- a/ironrdp-input/Cargo.toml +++ b/crates/input/Cargo.toml @@ -9,8 +9,8 @@ repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] [dependencies] +ironrdp-pdu = { path = "../pdu" } bitvec = "1.0.1" -ironrdp-core = { path = "../ironrdp-core" } smallvec = "1.10.0" [dev-dependencies] diff --git a/ironrdp-input/README.md b/crates/input/README.md similarity index 100% rename from ironrdp-input/README.md rename to crates/input/README.md diff --git a/ironrdp-input/src/lib.rs b/crates/input/src/lib.rs similarity index 97% rename from ironrdp-input/src/lib.rs rename to crates/input/src/lib.rs index 74423bc7..dda534ac 100644 --- a/ironrdp-input/src/lib.rs +++ b/crates/input/src/lib.rs @@ -1,9 +1,9 @@ use bitvec::array::BitArray; use bitvec::BitArr; -use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; -use ironrdp_core::input::mouse::PointerFlags; -use ironrdp_core::input::mouse_x::PointerXFlags; -use ironrdp_core::input::{MousePdu, MouseXPdu}; +use ironrdp_pdu::input::fast_path::{FastPathInputEvent, KeyboardFlags}; +use ironrdp_pdu::input::mouse::PointerFlags; +use ironrdp_pdu::input::mouse_x::PointerXFlags; +use ironrdp_pdu::input::{MousePdu, MouseXPdu}; use smallvec::SmallVec; // TODO: unicode keyboard event support @@ -345,7 +345,7 @@ impl Database { /// Returns the RDP input event to send in order to synchronize lock keys. pub fn synchronize_event(scroll_lock: bool, num_lock: bool, caps_lock: bool, kana_lock: bool) -> FastPathInputEvent { - use ironrdp_core::input::fast_path::SynchronizeFlags; + use ironrdp_pdu::input::fast_path::SynchronizeFlags; let mut flags = SynchronizeFlags::empty(); diff --git a/ironrdp-input/tests/fastpath_packets.rs b/crates/input/tests/fastpath_packets.rs similarity index 98% rename from ironrdp-input/tests/fastpath_packets.rs rename to crates/input/tests/fastpath_packets.rs index 7f247d65..98984c2a 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/crates/input/tests/fastpath_packets.rs @@ -1,8 +1,8 @@ -use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags, SynchronizeFlags}; -use ironrdp_core::input::mouse::PointerFlags; -use ironrdp_core::input::mouse_x::PointerXFlags; -use ironrdp_core::input::{MousePdu, MouseXPdu}; use ironrdp_input::*; +use ironrdp_pdu::input::fast_path::{FastPathInputEvent, KeyboardFlags, SynchronizeFlags}; +use ironrdp_pdu::input::mouse::PointerFlags; +use ironrdp_pdu::input::mouse_x::PointerXFlags; +use ironrdp_pdu::input::{MousePdu, MouseXPdu}; use rstest::rstest; enum MouseFlags { diff --git a/ironrdp-input/tests/smoke.rs b/crates/input/tests/smoke.rs similarity index 98% rename from ironrdp-input/tests/smoke.rs rename to crates/input/tests/smoke.rs index 4c9625be..8dfef14e 100644 --- a/ironrdp-input/tests/smoke.rs +++ b/crates/input/tests/smoke.rs @@ -1,6 +1,6 @@ use anyhow::{bail, ensure}; -use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; use ironrdp_input::*; +use ironrdp_pdu::input::fast_path::{FastPathInputEvent, KeyboardFlags}; use proptest::collection::vec; use proptest::prelude::*; diff --git a/crates/pdu-generators/Cargo.toml b/crates/pdu-generators/Cargo.toml new file mode 100644 index 00000000..524882c5 --- /dev/null +++ b/crates/pdu-generators/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "ironrdp-pdu-generators" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies] +ironrdp-pdu = { path = "../pdu" } +proptest = "1.1.0" diff --git a/crates/pdu-generators/src/lib.rs b/crates/pdu-generators/src/lib.rs new file mode 100644 index 00000000..7d12d9af --- /dev/null +++ b/crates/pdu-generators/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/ironrdp-core/Cargo.toml b/crates/pdu/Cargo.toml similarity index 96% rename from ironrdp-core/Cargo.toml rename to crates/pdu/Cargo.toml index b39b2934..bbd4fd50 100644 --- a/ironrdp-core/Cargo.toml +++ b/crates/pdu/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp-core" +name = "ironrdp-pdu" version = "0.1.0" edition = "2021" readme = "README.md" diff --git a/ironrdp-core/README.md b/crates/pdu/README.md similarity index 100% rename from ironrdp-core/README.md rename to crates/pdu/README.md diff --git a/ironrdp-core/src/basic_output.rs b/crates/pdu/src/basic_output.rs similarity index 100% rename from ironrdp-core/src/basic_output.rs rename to crates/pdu/src/basic_output.rs diff --git a/ironrdp-core/src/basic_output/bitmap.rs b/crates/pdu/src/basic_output/bitmap.rs similarity index 100% rename from ironrdp-core/src/basic_output/bitmap.rs rename to crates/pdu/src/basic_output/bitmap.rs diff --git a/ironrdp-core/src/basic_output/bitmap/tests.rs b/crates/pdu/src/basic_output/bitmap/tests.rs similarity index 100% rename from ironrdp-core/src/basic_output/bitmap/tests.rs rename to crates/pdu/src/basic_output/bitmap/tests.rs diff --git a/ironrdp-core/src/basic_output/fast_path.rs b/crates/pdu/src/basic_output/fast_path.rs similarity index 100% rename from ironrdp-core/src/basic_output/fast_path.rs rename to crates/pdu/src/basic_output/fast_path.rs diff --git a/ironrdp-core/src/basic_output/fast_path/test.rs b/crates/pdu/src/basic_output/fast_path/test.rs similarity index 100% rename from ironrdp-core/src/basic_output/fast_path/test.rs rename to crates/pdu/src/basic_output/fast_path/test.rs diff --git a/ironrdp-core/src/basic_output/surface_commands.rs b/crates/pdu/src/basic_output/surface_commands.rs similarity index 100% rename from ironrdp-core/src/basic_output/surface_commands.rs rename to crates/pdu/src/basic_output/surface_commands.rs diff --git a/ironrdp-core/src/basic_output/surface_commands/tests.rs b/crates/pdu/src/basic_output/surface_commands/tests.rs similarity index 100% rename from ironrdp-core/src/basic_output/surface_commands/tests.rs rename to crates/pdu/src/basic_output/surface_commands/tests.rs diff --git a/ironrdp-core/src/ber.rs b/crates/pdu/src/ber.rs similarity index 100% rename from ironrdp-core/src/ber.rs rename to crates/pdu/src/ber.rs diff --git a/ironrdp-core/src/ber/tests.rs b/crates/pdu/src/ber/tests.rs similarity index 100% rename from ironrdp-core/src/ber/tests.rs rename to crates/pdu/src/ber/tests.rs diff --git a/ironrdp-core/src/codecs.rs b/crates/pdu/src/codecs.rs similarity index 100% rename from ironrdp-core/src/codecs.rs rename to crates/pdu/src/codecs.rs diff --git a/ironrdp-core/src/codecs/rfx.rs b/crates/pdu/src/codecs/rfx.rs similarity index 100% rename from ironrdp-core/src/codecs/rfx.rs rename to crates/pdu/src/codecs/rfx.rs diff --git a/ironrdp-core/src/codecs/rfx/data_messages.rs b/crates/pdu/src/codecs/rfx/data_messages.rs similarity index 100% rename from ironrdp-core/src/codecs/rfx/data_messages.rs rename to crates/pdu/src/codecs/rfx/data_messages.rs diff --git a/ironrdp-core/src/codecs/rfx/header_messages.rs b/crates/pdu/src/codecs/rfx/header_messages.rs similarity index 100% rename from ironrdp-core/src/codecs/rfx/header_messages.rs rename to crates/pdu/src/codecs/rfx/header_messages.rs diff --git a/ironrdp-core/src/codecs/rfx/tests.rs b/crates/pdu/src/codecs/rfx/tests.rs similarity index 100% rename from ironrdp-core/src/codecs/rfx/tests.rs rename to crates/pdu/src/codecs/rfx/tests.rs diff --git a/ironrdp-core/src/connection_initiation.rs b/crates/pdu/src/connection_initiation.rs similarity index 100% rename from ironrdp-core/src/connection_initiation.rs rename to crates/pdu/src/connection_initiation.rs diff --git a/ironrdp-core/src/crypto.rs b/crates/pdu/src/crypto.rs similarity index 100% rename from ironrdp-core/src/crypto.rs rename to crates/pdu/src/crypto.rs diff --git a/ironrdp-core/src/crypto/rc4.rs b/crates/pdu/src/crypto/rc4.rs similarity index 100% rename from ironrdp-core/src/crypto/rc4.rs rename to crates/pdu/src/crypto/rc4.rs diff --git a/ironrdp-core/src/crypto/rsa.rs b/crates/pdu/src/crypto/rsa.rs similarity index 100% rename from ironrdp-core/src/crypto/rsa.rs rename to crates/pdu/src/crypto/rsa.rs diff --git a/ironrdp-core/src/gcc.rs b/crates/pdu/src/gcc.rs similarity index 100% rename from ironrdp-core/src/gcc.rs rename to crates/pdu/src/gcc.rs diff --git a/ironrdp-core/src/gcc/cluster_data.rs b/crates/pdu/src/gcc/cluster_data.rs similarity index 100% rename from ironrdp-core/src/gcc/cluster_data.rs rename to crates/pdu/src/gcc/cluster_data.rs diff --git a/ironrdp-core/src/gcc/cluster_data/test.rs b/crates/pdu/src/gcc/cluster_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/cluster_data/test.rs rename to crates/pdu/src/gcc/cluster_data/test.rs diff --git a/ironrdp-core/src/gcc/conference_create.rs b/crates/pdu/src/gcc/conference_create.rs similarity index 100% rename from ironrdp-core/src/gcc/conference_create.rs rename to crates/pdu/src/gcc/conference_create.rs diff --git a/ironrdp-core/src/gcc/conference_create/test.rs b/crates/pdu/src/gcc/conference_create/test.rs similarity index 100% rename from ironrdp-core/src/gcc/conference_create/test.rs rename to crates/pdu/src/gcc/conference_create/test.rs diff --git a/ironrdp-core/src/gcc/core_data.rs b/crates/pdu/src/gcc/core_data.rs similarity index 100% rename from ironrdp-core/src/gcc/core_data.rs rename to crates/pdu/src/gcc/core_data.rs diff --git a/ironrdp-core/src/gcc/core_data/client.rs b/crates/pdu/src/gcc/core_data/client.rs similarity index 100% rename from ironrdp-core/src/gcc/core_data/client.rs rename to crates/pdu/src/gcc/core_data/client.rs diff --git a/ironrdp-core/src/gcc/core_data/client/test.rs b/crates/pdu/src/gcc/core_data/client/test.rs similarity index 100% rename from ironrdp-core/src/gcc/core_data/client/test.rs rename to crates/pdu/src/gcc/core_data/client/test.rs diff --git a/ironrdp-core/src/gcc/core_data/server.rs b/crates/pdu/src/gcc/core_data/server.rs similarity index 100% rename from ironrdp-core/src/gcc/core_data/server.rs rename to crates/pdu/src/gcc/core_data/server.rs diff --git a/ironrdp-core/src/gcc/core_data/server/test.rs b/crates/pdu/src/gcc/core_data/server/test.rs similarity index 100% rename from ironrdp-core/src/gcc/core_data/server/test.rs rename to crates/pdu/src/gcc/core_data/server/test.rs diff --git a/ironrdp-core/src/gcc/message_channel_data.rs b/crates/pdu/src/gcc/message_channel_data.rs similarity index 100% rename from ironrdp-core/src/gcc/message_channel_data.rs rename to crates/pdu/src/gcc/message_channel_data.rs diff --git a/ironrdp-core/src/gcc/message_channel_data/test.rs b/crates/pdu/src/gcc/message_channel_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/message_channel_data/test.rs rename to crates/pdu/src/gcc/message_channel_data/test.rs diff --git a/ironrdp-core/src/gcc/monitor_data.rs b/crates/pdu/src/gcc/monitor_data.rs similarity index 100% rename from ironrdp-core/src/gcc/monitor_data.rs rename to crates/pdu/src/gcc/monitor_data.rs diff --git a/ironrdp-core/src/gcc/monitor_data/test.rs b/crates/pdu/src/gcc/monitor_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/monitor_data/test.rs rename to crates/pdu/src/gcc/monitor_data/test.rs diff --git a/ironrdp-core/src/gcc/monitor_extended_data.rs b/crates/pdu/src/gcc/monitor_extended_data.rs similarity index 100% rename from ironrdp-core/src/gcc/monitor_extended_data.rs rename to crates/pdu/src/gcc/monitor_extended_data.rs diff --git a/ironrdp-core/src/gcc/monitor_extended_data/test.rs b/crates/pdu/src/gcc/monitor_extended_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/monitor_extended_data/test.rs rename to crates/pdu/src/gcc/monitor_extended_data/test.rs diff --git a/ironrdp-core/src/gcc/multi_transport_channel_data.rs b/crates/pdu/src/gcc/multi_transport_channel_data.rs similarity index 100% rename from ironrdp-core/src/gcc/multi_transport_channel_data.rs rename to crates/pdu/src/gcc/multi_transport_channel_data.rs diff --git a/ironrdp-core/src/gcc/multi_transport_channel_data/test.rs b/crates/pdu/src/gcc/multi_transport_channel_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/multi_transport_channel_data/test.rs rename to crates/pdu/src/gcc/multi_transport_channel_data/test.rs diff --git a/ironrdp-core/src/gcc/network_data.rs b/crates/pdu/src/gcc/network_data.rs similarity index 100% rename from ironrdp-core/src/gcc/network_data.rs rename to crates/pdu/src/gcc/network_data.rs diff --git a/ironrdp-core/src/gcc/network_data/test.rs b/crates/pdu/src/gcc/network_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/network_data/test.rs rename to crates/pdu/src/gcc/network_data/test.rs diff --git a/ironrdp-core/src/gcc/security_data.rs b/crates/pdu/src/gcc/security_data.rs similarity index 100% rename from ironrdp-core/src/gcc/security_data.rs rename to crates/pdu/src/gcc/security_data.rs diff --git a/ironrdp-core/src/gcc/security_data/test.rs b/crates/pdu/src/gcc/security_data/test.rs similarity index 100% rename from ironrdp-core/src/gcc/security_data/test.rs rename to crates/pdu/src/gcc/security_data/test.rs diff --git a/ironrdp-core/src/gcc/tests.rs b/crates/pdu/src/gcc/tests.rs similarity index 100% rename from ironrdp-core/src/gcc/tests.rs rename to crates/pdu/src/gcc/tests.rs diff --git a/ironrdp-core/src/geometry.rs b/crates/pdu/src/geometry.rs similarity index 100% rename from ironrdp-core/src/geometry.rs rename to crates/pdu/src/geometry.rs diff --git a/ironrdp-core/src/input.rs b/crates/pdu/src/input.rs similarity index 100% rename from ironrdp-core/src/input.rs rename to crates/pdu/src/input.rs diff --git a/ironrdp-core/src/input/fast_path.rs b/crates/pdu/src/input/fast_path.rs similarity index 100% rename from ironrdp-core/src/input/fast_path.rs rename to crates/pdu/src/input/fast_path.rs diff --git a/ironrdp-core/src/input/mouse.rs b/crates/pdu/src/input/mouse.rs similarity index 100% rename from ironrdp-core/src/input/mouse.rs rename to crates/pdu/src/input/mouse.rs diff --git a/ironrdp-core/src/input/mouse_x.rs b/crates/pdu/src/input/mouse_x.rs similarity index 100% rename from ironrdp-core/src/input/mouse_x.rs rename to crates/pdu/src/input/mouse_x.rs diff --git a/ironrdp-core/src/input/scan_code.rs b/crates/pdu/src/input/scan_code.rs similarity index 100% rename from ironrdp-core/src/input/scan_code.rs rename to crates/pdu/src/input/scan_code.rs diff --git a/ironrdp-core/src/input/sync.rs b/crates/pdu/src/input/sync.rs similarity index 100% rename from ironrdp-core/src/input/sync.rs rename to crates/pdu/src/input/sync.rs diff --git a/ironrdp-core/src/input/tests.rs b/crates/pdu/src/input/tests.rs similarity index 100% rename from ironrdp-core/src/input/tests.rs rename to crates/pdu/src/input/tests.rs diff --git a/ironrdp-core/src/input/unicode.rs b/crates/pdu/src/input/unicode.rs similarity index 100% rename from ironrdp-core/src/input/unicode.rs rename to crates/pdu/src/input/unicode.rs diff --git a/ironrdp-core/src/input/unused.rs b/crates/pdu/src/input/unused.rs similarity index 100% rename from ironrdp-core/src/input/unused.rs rename to crates/pdu/src/input/unused.rs diff --git a/ironrdp-core/src/lib.rs b/crates/pdu/src/lib.rs similarity index 100% rename from ironrdp-core/src/lib.rs rename to crates/pdu/src/lib.rs diff --git a/ironrdp-core/src/macros.rs b/crates/pdu/src/macros.rs similarity index 100% rename from ironrdp-core/src/macros.rs rename to crates/pdu/src/macros.rs diff --git a/ironrdp-core/src/mcs.rs b/crates/pdu/src/mcs.rs similarity index 100% rename from ironrdp-core/src/mcs.rs rename to crates/pdu/src/mcs.rs diff --git a/ironrdp-core/src/mcs/connect_initial.rs b/crates/pdu/src/mcs/connect_initial.rs similarity index 100% rename from ironrdp-core/src/mcs/connect_initial.rs rename to crates/pdu/src/mcs/connect_initial.rs diff --git a/ironrdp-core/src/mcs/connect_initial/test.rs b/crates/pdu/src/mcs/connect_initial/test.rs similarity index 100% rename from ironrdp-core/src/mcs/connect_initial/test.rs rename to crates/pdu/src/mcs/connect_initial/test.rs diff --git a/ironrdp-core/src/mcs/tests.rs b/crates/pdu/src/mcs/tests.rs similarity index 100% rename from ironrdp-core/src/mcs/tests.rs rename to crates/pdu/src/mcs/tests.rs diff --git a/ironrdp-core/src/per.rs b/crates/pdu/src/per.rs similarity index 100% rename from ironrdp-core/src/per.rs rename to crates/pdu/src/per.rs diff --git a/ironrdp-core/src/per/test.rs b/crates/pdu/src/per/test.rs similarity index 100% rename from ironrdp-core/src/per/test.rs rename to crates/pdu/src/per/test.rs diff --git a/ironrdp-core/src/preconnection.rs b/crates/pdu/src/preconnection.rs similarity index 100% rename from ironrdp-core/src/preconnection.rs rename to crates/pdu/src/preconnection.rs diff --git a/ironrdp-core/src/rdp.rs b/crates/pdu/src/rdp.rs similarity index 100% rename from ironrdp-core/src/rdp.rs rename to crates/pdu/src/rdp.rs diff --git a/ironrdp-core/src/rdp/capability_sets.rs b/crates/pdu/src/rdp/capability_sets.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets.rs rename to crates/pdu/src/rdp/capability_sets.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap.rs b/crates/pdu/src/rdp/capability_sets/bitmap.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap.rs rename to crates/pdu/src/rdp/capability_sets/bitmap.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap/test.rs b/crates/pdu/src/rdp/capability_sets/bitmap/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap/test.rs rename to crates/pdu/src/rdp/capability_sets/bitmap/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap_cache.rs b/crates/pdu/src/rdp/capability_sets/bitmap_cache.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap_cache.rs rename to crates/pdu/src/rdp/capability_sets/bitmap_cache.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap_cache/test.rs b/crates/pdu/src/rdp/capability_sets/bitmap_cache/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap_cache/test.rs rename to crates/pdu/src/rdp/capability_sets/bitmap_cache/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap_codecs.rs b/crates/pdu/src/rdp/capability_sets/bitmap_codecs.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap_codecs.rs rename to crates/pdu/src/rdp/capability_sets/bitmap_codecs.rs diff --git a/ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs b/crates/pdu/src/rdp/capability_sets/bitmap_codecs/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/bitmap_codecs/test.rs rename to crates/pdu/src/rdp/capability_sets/bitmap_codecs/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/brush.rs b/crates/pdu/src/rdp/capability_sets/brush.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/brush.rs rename to crates/pdu/src/rdp/capability_sets/brush.rs diff --git a/ironrdp-core/src/rdp/capability_sets/brush/test.rs b/crates/pdu/src/rdp/capability_sets/brush/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/brush/test.rs rename to crates/pdu/src/rdp/capability_sets/brush/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/frame_acknowledge.rs b/crates/pdu/src/rdp/capability_sets/frame_acknowledge.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/frame_acknowledge.rs rename to crates/pdu/src/rdp/capability_sets/frame_acknowledge.rs diff --git a/ironrdp-core/src/rdp/capability_sets/general.rs b/crates/pdu/src/rdp/capability_sets/general.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/general.rs rename to crates/pdu/src/rdp/capability_sets/general.rs diff --git a/ironrdp-core/src/rdp/capability_sets/general/test.rs b/crates/pdu/src/rdp/capability_sets/general/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/general/test.rs rename to crates/pdu/src/rdp/capability_sets/general/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/glyph_cache.rs b/crates/pdu/src/rdp/capability_sets/glyph_cache.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/glyph_cache.rs rename to crates/pdu/src/rdp/capability_sets/glyph_cache.rs diff --git a/ironrdp-core/src/rdp/capability_sets/glyph_cache/test.rs b/crates/pdu/src/rdp/capability_sets/glyph_cache/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/glyph_cache/test.rs rename to crates/pdu/src/rdp/capability_sets/glyph_cache/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/input.rs b/crates/pdu/src/rdp/capability_sets/input.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/input.rs rename to crates/pdu/src/rdp/capability_sets/input.rs diff --git a/ironrdp-core/src/rdp/capability_sets/input/test.rs b/crates/pdu/src/rdp/capability_sets/input/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/input/test.rs rename to crates/pdu/src/rdp/capability_sets/input/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/large_pointer.rs b/crates/pdu/src/rdp/capability_sets/large_pointer.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/large_pointer.rs rename to crates/pdu/src/rdp/capability_sets/large_pointer.rs diff --git a/ironrdp-core/src/rdp/capability_sets/multifragment_update.rs b/crates/pdu/src/rdp/capability_sets/multifragment_update.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/multifragment_update.rs rename to crates/pdu/src/rdp/capability_sets/multifragment_update.rs diff --git a/ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache.rs b/crates/pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache.rs rename to crates/pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs diff --git a/ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs b/crates/pdu/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs rename to crates/pdu/src/rdp/capability_sets/offscreen_bitmap_cache/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/order.rs b/crates/pdu/src/rdp/capability_sets/order.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/order.rs rename to crates/pdu/src/rdp/capability_sets/order.rs diff --git a/ironrdp-core/src/rdp/capability_sets/order/test.rs b/crates/pdu/src/rdp/capability_sets/order/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/order/test.rs rename to crates/pdu/src/rdp/capability_sets/order/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/pointer.rs b/crates/pdu/src/rdp/capability_sets/pointer.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/pointer.rs rename to crates/pdu/src/rdp/capability_sets/pointer.rs diff --git a/ironrdp-core/src/rdp/capability_sets/pointer/test.rs b/crates/pdu/src/rdp/capability_sets/pointer/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/pointer/test.rs rename to crates/pdu/src/rdp/capability_sets/pointer/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/sound.rs b/crates/pdu/src/rdp/capability_sets/sound.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/sound.rs rename to crates/pdu/src/rdp/capability_sets/sound.rs diff --git a/ironrdp-core/src/rdp/capability_sets/sound/test.rs b/crates/pdu/src/rdp/capability_sets/sound/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/sound/test.rs rename to crates/pdu/src/rdp/capability_sets/sound/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/surface_commands.rs b/crates/pdu/src/rdp/capability_sets/surface_commands.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/surface_commands.rs rename to crates/pdu/src/rdp/capability_sets/surface_commands.rs diff --git a/ironrdp-core/src/rdp/capability_sets/surface_commands/test.rs b/crates/pdu/src/rdp/capability_sets/surface_commands/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/surface_commands/test.rs rename to crates/pdu/src/rdp/capability_sets/surface_commands/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/test.rs b/crates/pdu/src/rdp/capability_sets/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/test.rs rename to crates/pdu/src/rdp/capability_sets/test.rs diff --git a/ironrdp-core/src/rdp/capability_sets/virtual_channel.rs b/crates/pdu/src/rdp/capability_sets/virtual_channel.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/virtual_channel.rs rename to crates/pdu/src/rdp/capability_sets/virtual_channel.rs diff --git a/ironrdp-core/src/rdp/capability_sets/virtual_channel/test.rs b/crates/pdu/src/rdp/capability_sets/virtual_channel/test.rs similarity index 100% rename from ironrdp-core/src/rdp/capability_sets/virtual_channel/test.rs rename to crates/pdu/src/rdp/capability_sets/virtual_channel/test.rs diff --git a/ironrdp-core/src/rdp/client_info.rs b/crates/pdu/src/rdp/client_info.rs similarity index 100% rename from ironrdp-core/src/rdp/client_info.rs rename to crates/pdu/src/rdp/client_info.rs diff --git a/ironrdp-core/src/rdp/client_info/test.rs b/crates/pdu/src/rdp/client_info/test.rs similarity index 100% rename from ironrdp-core/src/rdp/client_info/test.rs rename to crates/pdu/src/rdp/client_info/test.rs diff --git a/ironrdp-core/src/rdp/finalization_messages.rs b/crates/pdu/src/rdp/finalization_messages.rs similarity index 100% rename from ironrdp-core/src/rdp/finalization_messages.rs rename to crates/pdu/src/rdp/finalization_messages.rs diff --git a/ironrdp-core/src/rdp/headers.rs b/crates/pdu/src/rdp/headers.rs similarity index 100% rename from ironrdp-core/src/rdp/headers.rs rename to crates/pdu/src/rdp/headers.rs diff --git a/ironrdp-core/src/rdp/server_error_info.rs b/crates/pdu/src/rdp/server_error_info.rs similarity index 100% rename from ironrdp-core/src/rdp/server_error_info.rs rename to crates/pdu/src/rdp/server_error_info.rs diff --git a/ironrdp-core/src/rdp/server_license.rs b/crates/pdu/src/rdp/server_license.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license.rs rename to crates/pdu/src/rdp/server_license.rs diff --git a/ironrdp-core/src/rdp/server_license/client_new_license_request.rs b/crates/pdu/src/rdp/server_license/client_new_license_request.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/client_new_license_request.rs rename to crates/pdu/src/rdp/server_license/client_new_license_request.rs diff --git a/ironrdp-core/src/rdp/server_license/client_new_license_request/test.rs b/crates/pdu/src/rdp/server_license/client_new_license_request/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/client_new_license_request/test.rs rename to crates/pdu/src/rdp/server_license/client_new_license_request/test.rs diff --git a/ironrdp-core/src/rdp/server_license/client_platform_challenge_response.rs b/crates/pdu/src/rdp/server_license/client_platform_challenge_response.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/client_platform_challenge_response.rs rename to crates/pdu/src/rdp/server_license/client_platform_challenge_response.rs diff --git a/ironrdp-core/src/rdp/server_license/client_platform_challenge_response/test.rs b/crates/pdu/src/rdp/server_license/client_platform_challenge_response/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/client_platform_challenge_response/test.rs rename to crates/pdu/src/rdp/server_license/client_platform_challenge_response/test.rs diff --git a/ironrdp-core/src/rdp/server_license/licensing_error_message.rs b/crates/pdu/src/rdp/server_license/licensing_error_message.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/licensing_error_message.rs rename to crates/pdu/src/rdp/server_license/licensing_error_message.rs diff --git a/ironrdp-core/src/rdp/server_license/licensing_error_message/test.rs b/crates/pdu/src/rdp/server_license/licensing_error_message/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/licensing_error_message/test.rs rename to crates/pdu/src/rdp/server_license/licensing_error_message/test.rs diff --git a/ironrdp-core/src/rdp/server_license/server_license_request.rs b/crates/pdu/src/rdp/server_license/server_license_request.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_license_request.rs rename to crates/pdu/src/rdp/server_license/server_license_request.rs diff --git a/ironrdp-core/src/rdp/server_license/server_license_request/cert.rs b/crates/pdu/src/rdp/server_license/server_license_request/cert.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_license_request/cert.rs rename to crates/pdu/src/rdp/server_license/server_license_request/cert.rs diff --git a/ironrdp-core/src/rdp/server_license/server_license_request/test.rs b/crates/pdu/src/rdp/server_license/server_license_request/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_license_request/test.rs rename to crates/pdu/src/rdp/server_license/server_license_request/test.rs diff --git a/ironrdp-core/src/rdp/server_license/server_platform_challenge.rs b/crates/pdu/src/rdp/server_license/server_platform_challenge.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_platform_challenge.rs rename to crates/pdu/src/rdp/server_license/server_platform_challenge.rs diff --git a/ironrdp-core/src/rdp/server_license/server_platform_challenge/test.rs b/crates/pdu/src/rdp/server_license/server_platform_challenge/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_platform_challenge/test.rs rename to crates/pdu/src/rdp/server_license/server_platform_challenge/test.rs diff --git a/ironrdp-core/src/rdp/server_license/server_upgrade_license.rs b/crates/pdu/src/rdp/server_license/server_upgrade_license.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_upgrade_license.rs rename to crates/pdu/src/rdp/server_license/server_upgrade_license.rs diff --git a/ironrdp-core/src/rdp/server_license/server_upgrade_license/test.rs b/crates/pdu/src/rdp/server_license/server_upgrade_license/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/server_upgrade_license/test.rs rename to crates/pdu/src/rdp/server_license/server_upgrade_license/test.rs diff --git a/ironrdp-core/src/rdp/server_license/test.rs b/crates/pdu/src/rdp/server_license/test.rs similarity index 100% rename from ironrdp-core/src/rdp/server_license/test.rs rename to crates/pdu/src/rdp/server_license/test.rs diff --git a/ironrdp-core/src/rdp/session_info.rs b/crates/pdu/src/rdp/session_info.rs similarity index 100% rename from ironrdp-core/src/rdp/session_info.rs rename to crates/pdu/src/rdp/session_info.rs diff --git a/ironrdp-core/src/rdp/session_info/logon_extended.rs b/crates/pdu/src/rdp/session_info/logon_extended.rs similarity index 100% rename from ironrdp-core/src/rdp/session_info/logon_extended.rs rename to crates/pdu/src/rdp/session_info/logon_extended.rs diff --git a/ironrdp-core/src/rdp/session_info/logon_info.rs b/crates/pdu/src/rdp/session_info/logon_info.rs similarity index 100% rename from ironrdp-core/src/rdp/session_info/logon_info.rs rename to crates/pdu/src/rdp/session_info/logon_info.rs diff --git a/ironrdp-core/src/rdp/session_info/tests.rs b/crates/pdu/src/rdp/session_info/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/session_info/tests.rs rename to crates/pdu/src/rdp/session_info/tests.rs diff --git a/ironrdp-core/src/rdp/test.rs b/crates/pdu/src/rdp/test.rs similarity index 100% rename from ironrdp-core/src/rdp/test.rs rename to crates/pdu/src/rdp/test.rs diff --git a/ironrdp-core/src/rdp/vc.rs b/crates/pdu/src/rdp/vc.rs similarity index 100% rename from ironrdp-core/src/rdp/vc.rs rename to crates/pdu/src/rdp/vc.rs diff --git a/ironrdp-core/src/rdp/vc/dvc.rs b/crates/pdu/src/rdp/vc/dvc.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc.rs rename to crates/pdu/src/rdp/vc/dvc.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/capabilities.rs b/crates/pdu/src/rdp/vc/dvc/capabilities.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/capabilities.rs rename to crates/pdu/src/rdp/vc/dvc/capabilities.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs b/crates/pdu/src/rdp/vc/dvc/capabilities/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/capabilities/tests.rs rename to crates/pdu/src/rdp/vc/dvc/capabilities/tests.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/close.rs b/crates/pdu/src/rdp/vc/dvc/close.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/close.rs rename to crates/pdu/src/rdp/vc/dvc/close.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/close/tests.rs b/crates/pdu/src/rdp/vc/dvc/close/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/close/tests.rs rename to crates/pdu/src/rdp/vc/dvc/close/tests.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/create.rs b/crates/pdu/src/rdp/vc/dvc/create.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/create.rs rename to crates/pdu/src/rdp/vc/dvc/create.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/create/tests.rs b/crates/pdu/src/rdp/vc/dvc/create/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/create/tests.rs rename to crates/pdu/src/rdp/vc/dvc/create/tests.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/data.rs b/crates/pdu/src/rdp/vc/dvc/data.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/data.rs rename to crates/pdu/src/rdp/vc/dvc/data.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/data/tests.rs b/crates/pdu/src/rdp/vc/dvc/data/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/data/tests.rs rename to crates/pdu/src/rdp/vc/dvc/data/tests.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/data_first.rs b/crates/pdu/src/rdp/vc/dvc/data_first.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/data_first.rs rename to crates/pdu/src/rdp/vc/dvc/data_first.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs b/crates/pdu/src/rdp/vc/dvc/data_first/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/data_first/tests.rs rename to crates/pdu/src/rdp/vc/dvc/data_first/tests.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/display.rs b/crates/pdu/src/rdp/vc/dvc/display.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/display.rs rename to crates/pdu/src/rdp/vc/dvc/display.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx.rs b/crates/pdu/src/rdp/vc/dvc/gfx.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx.rs rename to crates/pdu/src/rdp/vc/dvc/gfx.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages.rs b/crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs b/crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/client.rs b/crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/client.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/server.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs b/crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/test.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/graphics_messages/test.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/graphics_messages/test.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/gfx/test.rs b/crates/pdu/src/rdp/vc/dvc/gfx/test.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/gfx/test.rs rename to crates/pdu/src/rdp/vc/dvc/gfx/test.rs diff --git a/ironrdp-core/src/rdp/vc/dvc/tests.rs b/crates/pdu/src/rdp/vc/dvc/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/dvc/tests.rs rename to crates/pdu/src/rdp/vc/dvc/tests.rs diff --git a/ironrdp-core/src/rdp/vc/tests.rs b/crates/pdu/src/rdp/vc/tests.rs similarity index 100% rename from ironrdp-core/src/rdp/vc/tests.rs rename to crates/pdu/src/rdp/vc/tests.rs diff --git a/ironrdp-core/src/utils.rs b/crates/pdu/src/utils.rs similarity index 100% rename from ironrdp-core/src/utils.rs rename to crates/pdu/src/utils.rs diff --git a/ironrdp-core/src/x224.rs b/crates/pdu/src/x224.rs similarity index 100% rename from ironrdp-core/src/x224.rs rename to crates/pdu/src/x224.rs diff --git a/ironrdp-core/src/x224/tests.rs b/crates/pdu/src/x224/tests.rs similarity index 100% rename from ironrdp-core/src/x224/tests.rs rename to crates/pdu/src/x224/tests.rs diff --git a/ironrdp-rdcleanpath/Cargo.toml b/crates/rdcleanpath/Cargo.toml similarity index 100% rename from ironrdp-rdcleanpath/Cargo.toml rename to crates/rdcleanpath/Cargo.toml diff --git a/ironrdp-rdcleanpath/README.md b/crates/rdcleanpath/README.md similarity index 100% rename from ironrdp-rdcleanpath/README.md rename to crates/rdcleanpath/README.md diff --git a/ironrdp-rdcleanpath/src/lib.rs b/crates/rdcleanpath/src/lib.rs similarity index 99% rename from ironrdp-rdcleanpath/src/lib.rs rename to crates/rdcleanpath/src/lib.rs index 8b8c2cdb..13f26894 100644 --- a/ironrdp-rdcleanpath/src/lib.rs +++ b/crates/rdcleanpath/src/lib.rs @@ -309,7 +309,7 @@ impl TryFrom for RDCleanPath { .x224_connection_pdu .ok_or(MissingRDCleanPathField("x224_connection_pdu"))?, } - } else if let Some(server_addr) = pdu.server_auth { + } else if let Some(server_addr) = pdu.server_addr { Self::Response { x224_connection_response: pdu .x224_connection_pdu diff --git a/ironrdp-replay-client/Cargo.toml b/crates/replay-client/Cargo.toml similarity index 83% rename from ironrdp-replay-client/Cargo.toml rename to crates/replay-client/Cargo.toml index 811ee7ad..889d4b5c 100644 --- a/ironrdp-replay-client/Cargo.toml +++ b/crates/replay-client/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/Devolutions/IronRDP" keywords = ["rdp", "client", "remote", "desktop", "protocol", "gfx", "rfx"] [dependencies] -ironrdp = { path = "../ironrdp" } +ironrdp = { path = "../.." } +ironrdp-glutin-renderer = { path = "../glutin-renderer" } clap = { version = "4.0", features = ["derive", "cargo"] } glutin = { version = "0.29" } -ironrdp-renderer = { path = "../ironrdp-renderer" } simplelog = "0.12" log = "0.4" \ No newline at end of file diff --git a/ironrdp-replay-client/README.md b/crates/replay-client/README.md similarity index 100% rename from ironrdp-replay-client/README.md rename to crates/replay-client/README.md diff --git a/ironrdp-replay-client/scripts/runtests.ps1 b/crates/replay-client/scripts/runtests.ps1 similarity index 99% rename from ironrdp-replay-client/scripts/runtests.ps1 rename to crates/replay-client/scripts/runtests.ps1 index 4221d431..cc4503a0 100644 --- a/ironrdp-replay-client/scripts/runtests.ps1 +++ b/crates/replay-client/scripts/runtests.ps1 @@ -1,4 +1,4 @@ -cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444.data && ` -cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample2_avc444.data && ` -cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444v2.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample2_avc444.data && ` +cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample1_avc444v2.data && ` cargo run --bin ironrdp-replay-client -- --close --frame-rate=30 --data-file $PSScriptRoot/../test_data/sample2_avc444v2.data \ No newline at end of file diff --git a/ironrdp-replay-client/src/main.rs b/crates/replay-client/src/main.rs similarity index 96% rename from ironrdp-replay-client/src/main.rs rename to crates/replay-client/src/main.rs index efd37705..d411e99d 100644 --- a/ironrdp-replay-client/src/main.rs +++ b/crates/replay-client/src/main.rs @@ -10,9 +10,9 @@ use clap::Parser; use glutin::dpi::PhysicalSize; use glutin::event::{Event, WindowEvent}; use glutin::event_loop::ControlFlow; -use ironrdp::dvc::gfx::{GraphicsPipelineError, ServerPdu}; -use ironrdp::PduParsing; -use ironrdp_renderer::renderer::Renderer; +use ironrdp::pdu::dvc::gfx::{GraphicsPipelineError, ServerPdu}; +use ironrdp::pdu::PduParsing; +use ironrdp_glutin_renderer::renderer::Renderer; use log::LevelFilter; use simplelog::{Config, SimpleLogger}; diff --git a/ironrdp-replay-client/test_data/README.md b/crates/replay-client/test_data/README.md similarity index 99% rename from ironrdp-replay-client/test_data/README.md rename to crates/replay-client/test_data/README.md index 492535d6..13bb571c 100644 --- a/ironrdp-replay-client/test_data/README.md +++ b/crates/replay-client/test_data/README.md @@ -1,3 +1,3 @@ -Data generated using a custom parser and data file from [Here](https://github.com/microsoft/WindowsProtocolTestSuites/tree/main/TestSuites/RDP/Client/src/TestSuite/RDPEGFX/H264TestData) - +Data generated using a custom parser and data file from [Here](https://github.com/microsoft/WindowsProtocolTestSuites/tree/main/TestSuites/RDP/Client/src/TestSuite/RDPEGFX/H264TestData) + Some data generated using custom code in FreeRDP GFX pipeline to dump stream to file. \ No newline at end of file diff --git a/ironrdp-replay-client/test_data/sample1_avc444.data b/crates/replay-client/test_data/sample1_avc444.data similarity index 100% rename from ironrdp-replay-client/test_data/sample1_avc444.data rename to crates/replay-client/test_data/sample1_avc444.data diff --git a/ironrdp-replay-client/test_data/sample1_avc444v2.data b/crates/replay-client/test_data/sample1_avc444v2.data similarity index 100% rename from ironrdp-replay-client/test_data/sample1_avc444v2.data rename to crates/replay-client/test_data/sample1_avc444v2.data diff --git a/ironrdp-replay-client/test_data/sample2_avc444.data b/crates/replay-client/test_data/sample2_avc444.data similarity index 100% rename from ironrdp-replay-client/test_data/sample2_avc444.data rename to crates/replay-client/test_data/sample2_avc444.data diff --git a/ironrdp-replay-client/test_data/sample2_avc444v2.data b/crates/replay-client/test_data/sample2_avc444v2.data similarity index 100% rename from ironrdp-replay-client/test_data/sample2_avc444v2.data rename to crates/replay-client/test_data/sample2_avc444v2.data diff --git a/crates/session-async/Cargo.toml b/crates/session-async/Cargo.toml new file mode 100644 index 00000000..6d36bc55 --- /dev/null +++ b/crates/session-async/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "ironrdp-session-async" +version = "0.1.0" +edition = "2021" +readme = "README.md" +license = "MIT/Apache-2.0" +homepage = "https://github.com/Devolutions/IronRDP" +repository = "https://github.com/Devolutions/IronRDP" +authors = ["Devolutions Inc. "] + +[features] +default = ["tokio"] +tokio = ["dep:tokio", "dep:tokio-util"] +futures = ["dep:futures-util"] + +[dependencies] +ironrdp-pdu = { path = "../pdu" } +ironrdp-session = { path = "../session" } +bytes = "1" +num-traits = "0.2.15" +bit_field = "0.10.1" +byteorder = "1.4.3" +tokio = { version = "1.25.0", features = ["io-util"], optional = true } +tokio-util = { version = "0.7.7", features = ["codec"], optional = true } +futures-util = { version = "0.3.26", features = ["io"], optional = true } diff --git a/ironrdp-session-async/README.md b/crates/session-async/README.md similarity index 100% rename from ironrdp-session-async/README.md rename to crates/session-async/README.md diff --git a/crates/session-async/src/lib.rs b/crates/session-async/src/lib.rs new file mode 100644 index 00000000..4304f273 --- /dev/null +++ b/crates/session-async/src/lib.rs @@ -0,0 +1,4 @@ +// pub mod framed; + +#[cfg(all(feature = "tokio", feature = "futures"))] +compile_error!("Only \"tokio\" or \"futures\" should be enabled at a time."); diff --git a/crates/session-generators/Cargo.toml b/crates/session-generators/Cargo.toml new file mode 100644 index 00000000..e5c7eeda --- /dev/null +++ b/crates/session-generators/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "ironrdp-session-generators" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies] +ironrdp-session = { path = "../session" } +ironrdp-pdu-generators = { path = "../pdu-generators" } +proptest = "1.1.0" diff --git a/crates/session-generators/src/lib.rs b/crates/session-generators/src/lib.rs new file mode 100644 index 00000000..7d12d9af --- /dev/null +++ b/crates/session-generators/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/ironrdp-session/Cargo.toml b/crates/session/Cargo.toml similarity index 79% rename from ironrdp-session/Cargo.toml rename to crates/session/Cargo.toml index 018df07d..d0747cbe 100644 --- a/ironrdp-session/Cargo.toml +++ b/crates/session/Cargo.toml @@ -15,9 +15,9 @@ native-tls = ["dep:async-native-tls"] dgw_ext = [] [dependencies] -ironrdp-core = { path = "../ironrdp-core" } -ironrdp-graphics = { path = "../ironrdp-graphics" } -ironrdp-rdcleanpath = { path = "../ironrdp-rdcleanpath" } # FIXME: Quick and dirty approach, this should not be here +ironrdp-pdu = { path = "../pdu" } +ironrdp-graphics = { path = "../graphics" } +ironrdp-rdcleanpath = { path = "../rdcleanpath" } # FIXME: Quick and dirty approach, this should not be here sspi = "0.8" bytes = "1" log = "0.4" @@ -29,7 +29,7 @@ lazy_static = "1.4" bitflags = "1" bit_field = "0.10.1" # TODO: will be unused once the framed module is moved byteorder = "1.4.3" -futures-util = "0.3" +futures-util = { version = "0.3", features = ["sink", "io"] } thiserror = "1.0.37" rand_core = "0.6.4" x509-cert = "0.1.0" # TODO: consider removing dependency on this one in `ironrdp-session` diff --git a/ironrdp-session/README.md b/crates/session/README.md similarity index 100% rename from ironrdp-session/README.md rename to crates/session/README.md diff --git a/ironrdp-session/src/active_session.rs b/crates/session/src/active_session.rs similarity index 93% rename from ironrdp-session/src/active_session.rs rename to crates/session/src/active_session.rs index 61d57e2c..14a234d6 100644 --- a/ironrdp-session/src/active_session.rs +++ b/crates/session/src/active_session.rs @@ -3,9 +3,9 @@ mod fast_path; mod x224; use bytes::{BufMut as _, Bytes, BytesMut}; -use ironrdp_core::fast_path::FastPathError; -use ironrdp_core::geometry::Rectangle; -use ironrdp_core::{PduHeader, PduParsing as _}; +use ironrdp_pdu::fast_path::FastPathError; +use ironrdp_pdu::geometry::Rectangle; +use ironrdp_pdu::{PduHeader, PduParsing as _}; pub use self::x224::GfxHandler; use crate::connection_sequence::ConnectionSequenceResult; @@ -56,11 +56,7 @@ impl ActiveStageProcessor { // TODO: async version? /// Send a pdu on the static global channel. Typically used to send input events - pub fn send_static( - &self, - stream: impl std::io::Write, - message: ironrdp_core::ShareDataPdu, - ) -> Result<(), RdpError> { + pub fn send_static(&self, stream: impl std::io::Write, message: ironrdp_pdu::ShareDataPdu) -> Result<(), RdpError> { self.x224_processor.send_static(stream, message) } diff --git a/ironrdp-session/src/active_session/codecs.rs b/crates/session/src/active_session/codecs.rs similarity index 100% rename from ironrdp-session/src/active_session/codecs.rs rename to crates/session/src/active_session/codecs.rs diff --git a/ironrdp-session/src/active_session/codecs/rfx.rs b/crates/session/src/active_session/codecs/rfx.rs similarity index 97% rename from ironrdp-session/src/active_session/codecs/rfx.rs rename to crates/session/src/active_session/codecs/rfx.rs index a6cdd46f..8545049d 100644 --- a/ironrdp-session/src/active_session/codecs/rfx.rs +++ b/crates/session/src/active_session/codecs/rfx.rs @@ -3,13 +3,13 @@ mod tests; use std::cmp::min; -use ironrdp_core::codecs::rfx::{self, EntropyAlgorithm, Headers, Quant, RfxRectangle, Tile}; -use ironrdp_core::geometry::Rectangle; -use ironrdp_core::PduBufferParsing; use ironrdp_graphics::color_conversion::{self, YCbCrBuffer}; use ironrdp_graphics::image_processing::PixelFormat; use ironrdp_graphics::rectangle_processing::Region; use ironrdp_graphics::{dwt, quantization, rlgr, subband_reconstruction}; +use ironrdp_pdu::codecs::rfx::{self, EntropyAlgorithm, Headers, Quant, RfxRectangle, Tile}; +use ironrdp_pdu::geometry::Rectangle; +use ironrdp_pdu::PduBufferParsing; use lazy_static::lazy_static; use log::debug; diff --git a/ironrdp-session/src/active_session/codecs/rfx/tests.rs b/crates/session/src/active_session/codecs/rfx/tests.rs similarity index 100% rename from ironrdp-session/src/active_session/codecs/rfx/tests.rs rename to crates/session/src/active_session/codecs/rfx/tests.rs diff --git a/ironrdp-session/src/active_session/fast_path.rs b/crates/session/src/active_session/fast_path.rs similarity index 96% rename from ironrdp-session/src/active_session/fast_path.rs rename to crates/session/src/active_session/fast_path.rs index 01576cf2..1ce76e87 100644 --- a/ironrdp-session/src/active_session/fast_path.rs +++ b/crates/session/src/active_session/fast_path.rs @@ -1,14 +1,14 @@ use std::io; use bytes::BytesMut; -use ironrdp_core::codecs::rfx::FrameAcknowledgePdu; -use ironrdp_core::fast_path::{ +use ironrdp_graphics::rle::RlePixelFormat; +use ironrdp_pdu::codecs::rfx::FrameAcknowledgePdu; +use ironrdp_pdu::fast_path::{ FastPathError, FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation, UpdateCode, }; -use ironrdp_core::geometry::Rectangle; -use ironrdp_core::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; -use ironrdp_core::{PduBufferParsing, ShareDataPdu}; -use ironrdp_graphics::rle::RlePixelFormat; +use ironrdp_pdu::geometry::Rectangle; +use ironrdp_pdu::surface_commands::{FrameAction, FrameMarkerPdu, SurfaceCommand}; +use ironrdp_pdu::{PduBufferParsing, ShareDataPdu}; use num_traits::FromPrimitive; use super::codecs::rfx; @@ -69,7 +69,7 @@ impl Processor { // flags field. if update .compression_flags - .contains(ironrdp_core::bitmap::Compression::BITMAP_COMPRESSION) + .contains(ironrdp_pdu::bitmap::Compression::BITMAP_COMPRESSION) { if update.bits_per_pixel == 32 { // Compressed bitmaps at a color depth of 32 bpp are compressed using RDP 6.0 diff --git a/ironrdp-session/src/active_session/x224.rs b/crates/session/src/active_session/x224.rs similarity index 98% rename from ironrdp-session/src/active_session/x224.rs rename to crates/session/src/active_session/x224.rs index d9fcc12c..04027bd6 100644 --- a/ironrdp-session/src/active_session/x224.rs +++ b/crates/session/src/active_session/x224.rs @@ -5,10 +5,10 @@ use std::collections::HashMap; use std::{cmp, io}; use bytes::{BufMut as _, Bytes, BytesMut}; -use ironrdp_core::dvc::FieldType; -use ironrdp_core::rdp::vc::{self, dvc}; -use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; -use ironrdp_core::ShareDataPdu; +use ironrdp_pdu::dvc::FieldType; +use ironrdp_pdu::rdp::vc::{self, dvc}; +use ironrdp_pdu::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu}; +use ironrdp_pdu::ShareDataPdu; pub use self::gfx::GfxHandler; use crate::frame::{ diff --git a/ironrdp-session/src/active_session/x224/display.rs b/crates/session/src/active_session/x224/display.rs similarity index 86% rename from ironrdp-session/src/active_session/x224/display.rs rename to crates/session/src/active_session/x224/display.rs index 1218cbb1..ca7a869b 100644 --- a/ironrdp-session/src/active_session/x224/display.rs +++ b/crates/session/src/active_session/x224/display.rs @@ -1,5 +1,5 @@ -use ironrdp_core::dvc::display::ServerPdu; -use ironrdp_core::PduParsing; +use ironrdp_pdu::dvc::display::ServerPdu; +use ironrdp_pdu::PduParsing; use super::DynamicChannelDataHandler; use crate::RdpError; diff --git a/ironrdp-session/src/active_session/x224/gfx.rs b/crates/session/src/active_session/x224/gfx.rs similarity index 99% rename from ironrdp-session/src/active_session/x224/gfx.rs rename to crates/session/src/active_session/x224/gfx.rs index 29be978a..175d5f94 100644 --- a/ironrdp-session/src/active_session/x224/gfx.rs +++ b/crates/session/src/active_session/x224/gfx.rs @@ -1,11 +1,11 @@ use bitflags::bitflags; -use ironrdp_core::dvc::gfx::{ +use ironrdp_graphics::zgfx; +use ironrdp_pdu::dvc::gfx::{ CapabilitiesAdvertisePdu, CapabilitiesV103Flags, CapabilitiesV104Flags, CapabilitiesV107Flags, CapabilitiesV10Flags, CapabilitiesV81Flags, CapabilitiesV8Flags, CapabilitySet, ClientPdu, FrameAcknowledgePdu, QueueDepth, ServerPdu, }; -use ironrdp_core::PduParsing; -use ironrdp_graphics::zgfx; +use ironrdp_pdu::PduParsing; use log::debug; use super::DynamicChannelDataHandler; diff --git a/ironrdp-session/src/connection_sequence.rs b/crates/session/src/connection_sequence.rs similarity index 91% rename from ironrdp-session/src/connection_sequence.rs rename to crates/session/src/connection_sequence.rs index 5f5de6ff..5e8d4144 100644 --- a/ironrdp-session/src/connection_sequence.rs +++ b/crates/session/src/connection_sequence.rs @@ -6,13 +6,13 @@ use std::{io, iter}; use bytes::{BufMut as _, Bytes, BytesMut}; use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; -use ironrdp_core::rdp::capability_sets::CapabilitySet; -use ironrdp_core::rdp::server_license::{ +use ironrdp_pdu::rdp::capability_sets::CapabilitySet; +use ironrdp_pdu::rdp::server_license::{ ClientNewLicenseRequest, ClientPlatformChallengeResponse, InitialMessageType, InitialServerLicenseMessage, ServerPlatformChallenge, ServerUpgradeLicense, PREMASTER_SECRET_SIZE, RANDOM_NUMBER_SIZE, }; -use ironrdp_core::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; -use ironrdp_core::{rdp, PduParsing}; +use ironrdp_pdu::rdp::{ErrorInfo, ProtocolIndependentCode, ServerSetErrorInfoPdu, SERVER_CHANNEL_ID}; +use ironrdp_pdu::{rdp, PduParsing}; use rand_core::{OsRng, RngCore}; use sspi::network_client::NetworkClientFactory; use sspi::{credssp, NegotiateConfig}; @@ -107,8 +107,8 @@ where server_public_key, } = upgrade_stream(stream).await?; - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) - || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + if selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID_EX) { process_cred_ssp( &mut stream, @@ -119,7 +119,7 @@ where ) .await?; - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + if selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID_EX) { let data = read_early_user_auth_result(&mut stream).await?; if let credssp::EarlyUserAuthResult::AccessDenied = data { return Err(RdpError::AccessDenied); @@ -157,7 +157,7 @@ where // When using standard RDP security (RC4), a Security Exchange PDU is sent at this point. // NOTE: IronRDP is only supporting extended security (TLS…). - if selected_protocol == ironrdp_core::SecurityProtocol::RDP { + if selected_protocol == ironrdp_pdu::SecurityProtocol::RDP { return Err(RdpError::Connection(io::Error::new( io::ErrorKind::Other, "Standard RDP Security (RC4 encryption) is not supported", @@ -245,8 +245,8 @@ where let mut stream = reader.reunite(writer).unwrap(); - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID) - || selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) + if selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID) + || selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID_EX) { process_cred_ssp( &mut stream, @@ -257,7 +257,7 @@ where ) .await?; - if selected_protocol.contains(ironrdp_core::SecurityProtocol::HYBRID_EX) { + if selected_protocol.contains(ironrdp_pdu::SecurityProtocol::HYBRID_EX) { let data = read_early_user_auth_result(&mut stream).await?; if let credssp::EarlyUserAuthResult::AccessDenied = data { return Err(RdpError::AccessDenied); @@ -295,7 +295,7 @@ where // When using standard RDP security (RC4), a Security Exchange PDU is sent at this point. // NOTE: IronRDP is only supporting extended security (TLS…). - if selected_protocol == ironrdp_core::SecurityProtocol::RDP { + if selected_protocol == ironrdp_pdu::SecurityProtocol::RDP { return Err(RdpError::Connection(io::Error::new( io::ErrorKind::Other, "Standard RDP Security (RC4 encryption) is not supported", @@ -406,19 +406,19 @@ pub async fn basic_settings_exchange( reader: &mut FramedReader, writer: &mut ErasedWriter, config: &InputConfig, - selected_protocol: ironrdp_core::SecurityProtocol, + selected_protocol: ironrdp_pdu::SecurityProtocol, ) -> Result { let connect_initial = - ironrdp_core::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); + ironrdp_pdu::ConnectInitial::with_gcc_blocks(user_info::create_gcc_blocks(config, selected_protocol)?); debug!("Send MCS Connect Initial PDU: {:?}", connect_initial); encode_next_frame(writer, X224Frame(&connect_initial)).await?; - let connect_response: ironrdp_core::ConnectResponse = reader.decode_next_frame::>().await?.0; + let connect_response: ironrdp_pdu::ConnectResponse = reader.decode_next_frame::>().await?.0; debug!("Got MCS Connect Response PDU: {:?}", connect_response); let gcc_blocks = connect_response.conference_create_response.gcc_blocks; if connect_initial.conference_create_request.gcc_blocks.security - == ironrdp_core::gcc::ClientSecurityData::no_security() - && gcc_blocks.security != ironrdp_core::gcc::ServerSecurityData::no_security() + == ironrdp_pdu::gcc::ClientSecurityData::no_security() + && gcc_blocks.security != ironrdp_pdu::gcc::ServerSecurityData::no_security() { return Err(RdpError::InvalidResponse(String::from( "The server demands a security, while the client requested 'no security'", @@ -452,7 +452,7 @@ pub async fn channel_connection( mut static_channels: StaticChannels, config: &InputConfig, ) -> Result { - let erect_domain_request = ironrdp_core::mcs::ErectDomainPdu { + let erect_domain_request = ironrdp_pdu::mcs::ErectDomainPdu { sub_height: 0, sub_interval: 0, }; @@ -460,15 +460,15 @@ pub async fn channel_connection( debug!("Send MCS Erect Domain Request PDU: {:?}", erect_domain_request); encode_next_frame( writer, - X224Frame(ironrdp_core::McsPdu::ErectDomainRequest(erect_domain_request)), + X224Frame(ironrdp_pdu::McsPdu::ErectDomainRequest(erect_domain_request)), ) .await?; debug!("Send MCS Attach User Request PDU"); - encode_next_frame(writer, X224Frame(ironrdp_core::McsPdu::AttachUserRequest)).await?; + encode_next_frame(writer, X224Frame(ironrdp_pdu::McsPdu::AttachUserRequest)).await?; let mcs_pdu = stream.decode_next_frame::>().await?.0; - let initiator_id = if let ironrdp_core::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { + let initiator_id = if let ironrdp_pdu::McsPdu::AttachUserConfirm(attach_user_confirm) = mcs_pdu { debug!("Got MCS Attach User Confirm PDU: {:?}", attach_user_confirm); static_channels.insert(config.user_channel_name.clone(), attach_user_confirm.initiator_id); @@ -482,19 +482,19 @@ pub async fn channel_connection( }; for (_, id) in static_channels.iter() { - let channel_join_request = ironrdp_core::mcs::ChannelJoinRequestPdu { + let channel_join_request = ironrdp_pdu::mcs::ChannelJoinRequestPdu { initiator_id, channel_id: *id, }; debug!("Send MCS Channel Join Request PDU: {:?}", channel_join_request); encode_next_frame( writer, - X224Frame(ironrdp_core::McsPdu::ChannelJoinRequest(channel_join_request)), + X224Frame(ironrdp_pdu::McsPdu::ChannelJoinRequest(channel_join_request)), ) .await?; let mcs_pdu = stream.decode_next_frame::>().await?.0; - if let ironrdp_core::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { + if let ironrdp_pdu::McsPdu::ChannelJoinConfirm(channel_join_confirm) = mcs_pdu { debug!("Got MCS Channel Join Confirm PDU: {:?}", channel_join_confirm); if channel_join_confirm.initiator_id != initiator_id @@ -683,7 +683,7 @@ pub async fn capabilities_exchange( } let capability_sets = - if let ironrdp_core::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_frame.pdu { + if let ironrdp_pdu::ShareControlPdu::ServerDemandActive(server_demand_active) = share_control_frame.pdu { debug!("Got Server Demand Active PDU: {:?}", server_demand_active.pdu); server_demand_active.pdu.capability_sets } else { @@ -708,7 +708,7 @@ pub async fn capabilities_exchange( height: config.height, }); - let client_confirm_active = ironrdp_core::ShareControlPdu::ClientConfirmActive( + let client_confirm_active = ironrdp_pdu::ShareControlPdu::ClientConfirmActive( user_info::create_client_confirm_active(config, capability_sets)?, ); debug!("Send Client Confirm Active PDU: {:?}", client_confirm_active); @@ -731,7 +731,7 @@ pub async fn connection_finalization( writer: &mut ErasedWriter, global_channel_ids: ChannelIdentificators, ) -> Result<(), RdpError> { - use ironrdp_core::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; + use ironrdp_pdu::rdp::{ControlAction, ControlPdu, FontPdu, SequenceFlags, ShareDataPdu, SynchronizePdu}; #[derive(Copy, Clone, PartialEq, Debug)] enum FinalizationOrder { @@ -787,7 +787,7 @@ pub async fn connection_finalization( ( FinalizationOrder::ControlCooperate, ShareDataPdu::Control(ControlPdu { - action: ironrdp_core::ControlAction::Cooperate, + action: ironrdp_pdu::ControlAction::Cooperate, grant_id: 0, control_id: 0, }), @@ -795,7 +795,7 @@ pub async fn connection_finalization( ( FinalizationOrder::RequestControl, ShareDataPdu::Control(ControlPdu { - action: ironrdp_core::ControlAction::GrantedControl, + action: ironrdp_pdu::ControlAction::GrantedControl, grant_id, control_id, }), @@ -885,9 +885,9 @@ pub async fn read_early_user_auth_result( pub async fn connection_initiation( reader: &mut FramedReader, mut writer: W, - security_protocol: ironrdp_core::SecurityProtocol, + security_protocol: ironrdp_pdu::SecurityProtocol, username: String, -) -> Result { +) -> Result { let connection_request = build_connection_request_with_username(security_protocol, username); let mut buffer = Vec::new(); connection_request.to_buffer(&mut buffer)?; @@ -896,8 +896,8 @@ pub async fn connection_initiation( writer.flush().await?; let frame = reader.read_frame().await?.ok_or(RdpError::AccessDenied)?; - let connection_response = ironrdp_core::Response::from_buffer(frame.as_ref())?; - if let Some(ironrdp_core::ResponseData::Confirm { + let connection_response = ironrdp_pdu::Response::from_buffer(frame.as_ref())?; + if let Some(ironrdp_pdu::ResponseData::Confirm { flags, protocol: selected_protocol, }) = connection_response.response @@ -930,10 +930,10 @@ pub async fn connection_initiation( reader: &mut FramedReader, mut writer: W, proxy_auth_token: String, - security_protocol: ironrdp_core::SecurityProtocol, + security_protocol: ironrdp_pdu::SecurityProtocol, username: String, hostname: String, -) -> Result<(ironrdp_core::SecurityProtocol, Vec, std::net::SocketAddr), RdpError> { +) -> Result<(ironrdp_pdu::SecurityProtocol, Vec, std::net::SocketAddr), RdpError> { use ironrdp_rdcleanpath::{RDCleanPath, RDCleanPathPdu}; use x509_cert::der::Decode as _; @@ -995,9 +995,9 @@ pub async fn connection_initiation( } }; - let connection_response = ironrdp_core::Response::from_buffer(x224_connection_response.as_bytes())?; + let connection_response = ironrdp_pdu::Response::from_buffer(x224_connection_response.as_bytes())?; - if let Some(ironrdp_core::ResponseData::Confirm { + if let Some(ironrdp_pdu::ResponseData::Confirm { flags, protocol: selected_protocol, }) = connection_response.response @@ -1046,12 +1046,12 @@ pub async fn connection_initiation( } fn build_connection_request_with_username( - security_protocol: ironrdp_core::SecurityProtocol, + security_protocol: ironrdp_pdu::SecurityProtocol, username: String, -) -> ironrdp_core::Request { - ironrdp_core::Request { - nego_data: Some(ironrdp_core::NegoData::Cookie(username)), - flags: ironrdp_core::RequestFlags::empty(), +) -> ironrdp_pdu::Request { + ironrdp_pdu::Request { + nego_data: Some(ironrdp_pdu::NegoData::Cookie(username)), + flags: ironrdp_pdu::RequestFlags::empty(), protocol: security_protocol, src_ref: 0, } diff --git a/ironrdp-session/src/connection_sequence/user_info.rs b/crates/session/src/connection_sequence/user_info.rs similarity index 98% rename from ironrdp-session/src/connection_sequence/user_info.rs rename to crates/session/src/connection_sequence/user_info.rs index 24109dc8..c5091bb5 100644 --- a/ironrdp-session/src/connection_sequence/user_info.rs +++ b/crates/session/src/connection_sequence/user_info.rs @@ -1,12 +1,12 @@ use std::str::FromStr; use std::{env, net}; -use ironrdp_core::gcc::{ +use ironrdp_pdu::gcc::{ Channel, ChannelOptions, ClientCoreData, ClientCoreOptionalData, ClientEarlyCapabilityFlags, ClientGccBlocks, ClientNetworkData, ClientSecurityData, ColorDepth, ConnectionType, HighColorDepth, RdpVersion, SecureAccessSequence, SupportedColorDepths, }; -use ironrdp_core::rdp::capability_sets::{ +use ironrdp_pdu::rdp::capability_sets::{ Bitmap, BitmapCache, BitmapCodecs, BitmapDrawingFlags, Brush, CacheDefinition, CacheEntry, CaptureFlags, CmdFlags, Codec, CodecProperty, EntropyBits, FrameAcknowledge, General, GeneralExtraFlags, GlyphCache, GlyphSupportLevel, Input, InputFlags, LargePointer, LargePointerSupportFlags, MajorPlatformType, MinorPlatformType, @@ -14,11 +14,11 @@ use ironrdp_core::rdp::capability_sets::{ RfxCaps, RfxCapset, RfxClientCapsContainer, RfxICap, RfxICapFlags, Sound, SoundFlags, SupportLevel, SurfaceCommands, VirtualChannel, VirtualChannelFlags, BITMAP_CACHE_ENTRIES_NUM, GLYPH_CACHE_NUM, }; -use ironrdp_core::rdp::{ +use ironrdp_pdu::rdp::{ AddressFamily, BasicSecurityHeader, BasicSecurityHeaderFlags, ClientInfo, ClientInfoFlags, ClientInfoPdu, CompressionType, Credentials, ExtendedClientInfo, ExtendedClientOptionalInfo, SERVER_CHANNEL_ID, }; -use ironrdp_core::{CapabilitySet, ClientConfirmActive, SecurityProtocol}; +use ironrdp_pdu::{CapabilitySet, ClientConfirmActive, SecurityProtocol}; use num_traits::ToPrimitive; use crate::utils::CodecId; @@ -117,7 +117,7 @@ pub fn create_client_confirm_active( Ok(ClientConfirmActive { originator_id: SERVER_CHANNEL_ID, - pdu: ironrdp_core::DemandActive { + pdu: ironrdp_pdu::DemandActive { source_descriptor: SOURCE_DESCRIPTOR.to_string(), capability_sets: server_capability_sets, }, diff --git a/ironrdp-session/src/errors.rs b/crates/session/src/errors.rs similarity index 93% rename from ironrdp-session/src/errors.rs rename to crates/session/src/errors.rs index b5475186..59875b20 100644 --- a/ironrdp-session/src/errors.rs +++ b/crates/session/src/errors.rs @@ -2,11 +2,11 @@ use std::io; use std::sync::mpsc::{RecvError, SendError}; use std::sync::PoisonError; -use ironrdp_core::dvc::{display, gfx}; -use ironrdp_core::fast_path::FastPathError; -use ironrdp_core::rdp::server_license::ServerLicenseError; -use ironrdp_core::{codecs, rdp, McsError}; use ironrdp_graphics::{rlgr, zgfx}; +use ironrdp_pdu::dvc::{display, gfx}; +use ironrdp_pdu::fast_path::FastPathError; +use ironrdp_pdu::rdp::server_license::ServerLicenseError; +use ironrdp_pdu::{codecs, rdp, McsError}; use thiserror::Error; #[derive(Debug, Error)] @@ -18,7 +18,7 @@ pub enum RdpError { #[error("X.224 error")] X224(#[source] io::Error), #[error("negotiation error")] - Negotiation(#[from] ironrdp_core::NegotiationError), + Negotiation(#[from] ironrdp_pdu::NegotiationError), #[error("unexpected PDU: {0}")] UnexpectedPdu(String), #[error("Unexpected disconnection: {0}")] @@ -72,7 +72,7 @@ pub enum RdpError { #[error("Fast-Path error")] FastPath(#[from] FastPathError), #[error("RDP error")] - Rdp(#[from] ironrdp_core::RdpError), + Rdp(#[from] ironrdp_pdu::RdpError), #[error("access to the non-existing channel: {0}")] AccessToNonExistingChannel(u32), #[error("access to the non-existing channel name: {0}")] @@ -90,7 +90,7 @@ pub enum RdpError { #[error("absence of RFX channels")] NoRfxChannelsAnnounced, #[error("the server that started working using the inconsistent protocol: {0:?}")] - UnexpectedFastPathUpdate(ironrdp_core::fast_path::UpdateCode), + UnexpectedFastPathUpdate(ironrdp_pdu::fast_path::UpdateCode), #[error("server error: {0}")] Server(String), #[error("Missing peer certificate")] diff --git a/ironrdp-session/src/frame.rs b/crates/session/src/frame.rs similarity index 85% rename from ironrdp-session/src/frame.rs rename to crates/session/src/frame.rs index 84013b43..4a4bb69d 100644 --- a/ironrdp-session/src/frame.rs +++ b/crates/session/src/frame.rs @@ -1,8 +1,8 @@ use std::io; use bytes::{Buf as _, BufMut as _, Bytes, BytesMut}; -use ironrdp_core::rdp::{vc, SERVER_CHANNEL_ID}; -use ironrdp_core::PduParsing; +use ironrdp_pdu::rdp::{vc, SERVER_CHANNEL_ID}; +use ironrdp_pdu::PduParsing; use crate::{ChannelIdentificators, RdpError}; @@ -24,9 +24,9 @@ where RdpError: From<::Error>, { fn encode(self, mut stream: impl io::Write) -> Result<(), RdpError> { - ironrdp_core::DataHeader::new(self.0.buffer_length()) + ironrdp_pdu::DataHeader::new(self.0.buffer_length()) .to_buffer(&mut stream) - .map_err(ironrdp_core::RdpError::X224Error)?; + .map_err(ironrdp_pdu::RdpError::X224Error)?; self.0.to_buffer(&mut stream)?; stream.flush()?; Ok(()) @@ -34,7 +34,7 @@ where fn decode(mut stream: impl io::Read) -> Result { let data_header = - ironrdp_core::DataHeader::from_buffer(&mut stream).map_err(ironrdp_core::RdpError::X224Error)?; + ironrdp_pdu::DataHeader::from_buffer(&mut stream).map_err(ironrdp_pdu::RdpError::X224Error)?; let length = data_header.data_length; let item = T::from_buffer(&mut stream)?; let remaining = length - item.buffer_length(); @@ -48,13 +48,13 @@ where #[derive(Clone, Debug)] pub struct McsFrame { - pub pdu: ironrdp_core::McsPdu, + pub pdu: ironrdp_pdu::McsPdu, pub data: Bytes, } impl Frame for McsFrame { fn encode(self, mut stream: impl io::Write) -> Result<(), RdpError> { - let data_header = ironrdp_core::DataHeader::new(self.pdu.buffer_length() + self.data.len()); + let data_header = ironrdp_pdu::DataHeader::new(self.pdu.buffer_length() + self.data.len()); data_header.to_buffer(&mut stream)?; self.pdu.to_buffer(&mut stream)?; @@ -66,9 +66,9 @@ impl Frame for McsFrame { } fn decode(mut stream: impl io::Read) -> Result { - let data_header = ironrdp_core::DataHeader::from_buffer(&mut stream)?; + let data_header = ironrdp_pdu::DataHeader::from_buffer(&mut stream)?; - let mcs_pdu = ironrdp_core::McsPdu::from_buffer(&mut stream)?; + let mcs_pdu = ironrdp_pdu::McsPdu::from_buffer(&mut stream)?; let remaining = data_header.data_length - mcs_pdu.buffer_length(); let mut data = BytesMut::zeroed(remaining); @@ -104,14 +104,14 @@ impl SendDataInfoFrame { impl Frame for SendDataInfoFrame { fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { - let send_data_context = ironrdp_core::mcs::SendDataContext { + let send_data_context = ironrdp_pdu::mcs::SendDataContext { channel_id: self.channel_ids.channel_id, initiator_id: self.channel_ids.initiator_id, pdu_length: self.data.len(), }; McsFrame { - pdu: ironrdp_core::McsPdu::SendDataRequest(send_data_context), + pdu: ironrdp_pdu::McsPdu::SendDataRequest(send_data_context), data: self.data, } .encode(stream) @@ -121,14 +121,14 @@ impl Frame for SendDataInfoFrame { let mcs_frame = McsFrame::decode(stream)?; match mcs_frame.pdu { - ironrdp_core::McsPdu::SendDataIndication(send_data_context) => Ok(Self { + ironrdp_pdu::McsPdu::SendDataIndication(send_data_context) => Ok(Self { channel_ids: ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, }, data: mcs_frame.data, }), - ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( + ironrdp_pdu::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => Err( RdpError::UnexpectedDisconnection(format!("Server disconnection reason - {disconnect_reason:?}")), ), _ => Err(RdpError::UnexpectedPdu(format!( @@ -143,13 +143,13 @@ pub struct ShareControlFrame { pub channel_ids: ChannelIdentificators, pub share_id: u32, pub pdu_source: u16, // NOTE: looks like this is always equal to channel_ids.initiatior_id - pub pdu: ironrdp_core::ShareControlPdu, + pub pdu: ironrdp_pdu::ShareControlPdu, pub data: Bytes, } impl Frame for ShareControlFrame { fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { - let share_control_header = ironrdp_core::ShareControlHeader { + let share_control_header = ironrdp_pdu::ShareControlHeader { share_control_pdu: self.pdu, pdu_source: self.pdu_source, share_id: self.share_id, @@ -175,7 +175,7 @@ impl Frame for ShareControlFrame { let channel_ids = info_frame.channel_ids; let mut remaining_reader = info_frame.data.reader(); - let share_control_header = ironrdp_core::ShareControlHeader::from_buffer(&mut remaining_reader) + let share_control_header = ironrdp_pdu::ShareControlHeader::from_buffer(&mut remaining_reader) .map_err(RdpError::ShareControlHeader)?; let pdu = share_control_header.share_control_pdu; let pdu_source = share_control_header.pdu_source; @@ -204,23 +204,23 @@ pub struct ShareDataFrame { pub channel_ids: ChannelIdentificators, pub share_id: u32, pub pdu_source: u16, // NOTE: looks like this is always equal to channel_ids.initiatior_id - pub pdu: ironrdp_core::ShareDataPdu, + pub pdu: ironrdp_pdu::ShareDataPdu, } impl Frame for ShareDataFrame { fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { - let share_data_header = ironrdp_core::ShareDataHeader { + let share_data_header = ironrdp_pdu::ShareDataHeader { share_data_pdu: self.pdu, - stream_priority: ironrdp_core::rdp::StreamPriority::Medium, - compression_flags: ironrdp_core::rdp::CompressionFlags::empty(), - compression_type: ironrdp_core::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() + stream_priority: ironrdp_pdu::rdp::StreamPriority::Medium, + compression_flags: ironrdp_pdu::rdp::CompressionFlags::empty(), + compression_type: ironrdp_pdu::rdp::CompressionType::K8, // ignored if CompressionFlags::empty() }; ShareControlFrame { channel_ids: self.channel_ids, share_id: self.share_id, pdu_source: self.pdu_source, - pdu: ironrdp_core::ShareControlPdu::Data(share_data_header), + pdu: ironrdp_pdu::ShareControlPdu::Data(share_data_header), data: Bytes::new(), } .encode(stream) @@ -229,7 +229,7 @@ impl Frame for ShareDataFrame { fn decode(stream: impl io::Read) -> Result { let frame = ShareControlFrame::decode(stream)?; - if let ironrdp_core::ShareControlPdu::Data(share_data_header) = frame.pdu { + if let ironrdp_pdu::ShareControlPdu::Data(share_data_header) = frame.pdu { Ok(Self { channel_ids: frame.channel_ids, share_id: frame.share_id, @@ -260,7 +260,7 @@ where RdpError: From<::Error>, { fn encode(self, stream: impl io::Write) -> Result<(), RdpError> { - let send_data_context = ironrdp_core::mcs::SendDataContext { + let send_data_context = ironrdp_pdu::mcs::SendDataContext { channel_id: self.channel_ids.channel_id, initiator_id: self.channel_ids.initiator_id, pdu_length: self.pdu.buffer_length(), @@ -271,7 +271,7 @@ where let buf = buf_writer.into_inner(); McsFrame { - pdu: ironrdp_core::McsPdu::SendDataRequest(send_data_context), + pdu: ironrdp_pdu::McsPdu::SendDataRequest(send_data_context), data: buf.freeze(), } .encode(stream) @@ -281,11 +281,11 @@ where let mcs_frame = McsFrame::decode(stream)?; let channel_ids = match mcs_frame.pdu { - ironrdp_core::McsPdu::SendDataIndication(send_data_context) => ChannelIdentificators { + ironrdp_pdu::McsPdu::SendDataIndication(send_data_context) => ChannelIdentificators { initiator_id: send_data_context.initiator_id, channel_id: send_data_context.channel_id, }, - ironrdp_core::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { + ironrdp_pdu::McsPdu::DisconnectProviderUltimatum(disconnect_reason) => { return Err(RdpError::UnexpectedDisconnection(format!( "Server disconnection reason - {disconnect_reason:?}" ))) diff --git a/ironrdp-session/src/framed.rs b/crates/session/src/framed.rs similarity index 95% rename from ironrdp-session/src/framed.rs rename to crates/session/src/framed.rs index d6a3510e..8105920b 100644 --- a/ironrdp-session/src/framed.rs +++ b/crates/session/src/framed.rs @@ -5,7 +5,7 @@ use bit_field::BitField; use byteorder::{BigEndian, ReadBytesExt}; use bytes::{BufMut, BytesMut}; use futures_util::{AsyncRead, AsyncReadExt as _, AsyncWrite, AsyncWriteExt as _}; -use ironrdp_core::Action; +use ironrdp_pdu::Action; use num_traits::FromPrimitive; use crate::frame::Frame; @@ -76,7 +76,7 @@ where (&mut self.reader, &mut self.buf) } - pub async fn read_frame(&mut self) -> Result, ironrdp_core::RdpError> + pub async fn read_frame(&mut self) -> Result, ironrdp_pdu::RdpError> where R: Unpin, { @@ -129,7 +129,7 @@ where } /// Function to call when there are no more bytes available to be read from the underlying I/O. -fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp_core::RdpError> { +fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp_pdu::RdpError> { match decode_frame(buf)? { Some(frame) => Ok(Some(frame)), None => { @@ -144,14 +144,14 @@ fn decode_frame_eof(buf: &mut BytesMut) -> Result, ironrdp_core /// Attempts to decode a frame from the provided buffer of bytes. // TODO: try `&mut Bytes` -fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp_core::RdpError> { +fn decode_frame(buf: &mut BytesMut) -> Result, ironrdp_pdu::RdpError> { let mut stream = buf.as_ref(); if stream.is_empty() { return Ok(None); } let header = stream.read_u8()?; let action = header.get_bits(0..2); - let action = Action::from_u8(action).ok_or(ironrdp_core::RdpError::InvalidActionCode(action))?; + let action = Action::from_u8(action).ok_or(ironrdp_pdu::RdpError::InvalidActionCode(action))?; let length = match action { Action::X224 if stream.len() >= 3 => { diff --git a/ironrdp-session/src/image.rs b/crates/session/src/image.rs similarity index 99% rename from ironrdp-session/src/image.rs rename to crates/session/src/image.rs index 290e6529..0231e21b 100644 --- a/ironrdp-session/src/image.rs +++ b/crates/session/src/image.rs @@ -1,6 +1,6 @@ -use ironrdp_core::geometry::Rectangle; use ironrdp_graphics::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; use ironrdp_graphics::rectangle_processing::Region; +use ironrdp_pdu::geometry::Rectangle; use crate::RdpError; diff --git a/ironrdp-session/src/lib.rs b/crates/session/src/lib.rs similarity index 93% rename from ironrdp-session/src/lib.rs rename to crates/session/src/lib.rs index 6f4ab383..2bedad19 100644 --- a/ironrdp-session/src/lib.rs +++ b/crates/session/src/lib.rs @@ -10,7 +10,7 @@ pub mod utils; mod errors; mod framed; -use ironrdp_core::gcc; +use ironrdp_pdu::gcc; pub use crate::active_session::{ActiveStageOutput, ActiveStageProcessor, GfxHandler}; pub use crate::errors::RdpError; @@ -28,7 +28,7 @@ pub struct GraphicsConfig { #[derive(Debug, Clone)] pub struct InputConfig { pub credentials: sspi::AuthIdentity, - pub security_protocol: ironrdp_core::SecurityProtocol, + pub security_protocol: ironrdp_pdu::SecurityProtocol, pub keyboard_type: gcc::KeyboardType, pub keyboard_subtype: u32, pub keyboard_functional_keys_count: u32, diff --git a/ironrdp-session/src/utils.rs b/crates/session/src/utils.rs similarity index 100% rename from ironrdp-session/src/utils.rs rename to crates/session/src/utils.rs diff --git a/ironrdp-tls/Cargo.toml b/crates/tls/Cargo.toml similarity index 100% rename from ironrdp-tls/Cargo.toml rename to crates/tls/Cargo.toml diff --git a/ironrdp-tls/README.md b/crates/tls/README.md similarity index 100% rename from ironrdp-tls/README.md rename to crates/tls/README.md diff --git a/ironrdp-tls/src/lib.rs b/crates/tls/src/lib.rs similarity index 100% rename from ironrdp-tls/src/lib.rs rename to crates/tls/src/lib.rs diff --git a/ffi/wasm/.gitignore b/crates/web/.gitignore similarity index 100% rename from ffi/wasm/.gitignore rename to crates/web/.gitignore diff --git a/ffi/wasm/Cargo.lock b/crates/web/Cargo.lock similarity index 100% rename from ffi/wasm/Cargo.lock rename to crates/web/Cargo.lock diff --git a/ffi/wasm/Cargo.toml b/crates/web/Cargo.toml similarity index 70% rename from ffi/wasm/Cargo.toml rename to crates/web/Cargo.toml index ce74f669..affabe5a 100644 --- a/ffi/wasm/Cargo.toml +++ b/crates/web/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ironrdp" +name = "ironrdp-web" version = "0.1.0" edition = "2021" readme = "README.md" @@ -7,30 +7,23 @@ license = "MIT/Apache-2.0" homepage = "https://github.com/Devolutions/IronRDP" repository = "https://github.com/Devolutions/IronRDP" authors = ["Devolutions Inc. "] +publish = false [lib] -crate-type = ["cdylib"] +crate-type = ["cdylib", "rlib"] [features] default = ["panic_hook"] panic_hook = ["dep:console_error_panic_hook"] -[workspace] -members = ["."] - -[profile.release] -# Tell `rustc` to optimize for small code size. -opt-level = "s" - [dependencies] -# RDP protocol -ironrdp = { path = "../../ironrdp" } -ironrdp-session = { path = "../../ironrdp-session", features = ["dgw_ext"] } # FIXME: secret feature until session state machine is done -ironrdp-input = { path = "../../ironrdp-input" } +# Protocols +ironrdp = { path = "../.." } +ironrdp-session = { path = "../session", features = ["dgw_ext"] } # FIXME: secret feature until session state machine is done sspi = "0.8" -# Wasm +# WASM wasm-bindgen = "0.2.83" wasm-bindgen-futures = "0.4.33" js-sys = "0.3.60" @@ -38,7 +31,7 @@ gloo-net = "0.2.4" # Enable WebAssembly support for a few crates getrandom = { version = "*", features = ["js"] } -chrono = { version = "0.4", features = ["wasmbind"] } +chrono = { version = "*", features = ["wasmbind"] } # The `console_error_panic_hook` crate provides better debugging of panics by # logging them with `console.error`. This is great for development, but requires diff --git a/crates/web/README.md b/crates/web/README.md new file mode 100644 index 00000000..a0516f0b --- /dev/null +++ b/crates/web/README.md @@ -0,0 +1,7 @@ +# WASM bindings for web + +## 🛠️ Build with `wasm-pack build` + +``` +wasm-pack build +``` diff --git a/ffi/wasm/rust-toolchain.toml b/crates/web/rust-toolchain.toml similarity index 100% rename from ffi/wasm/rust-toolchain.toml rename to crates/web/rust-toolchain.toml diff --git a/ffi/wasm/src/error.rs b/crates/web/src/error.rs similarity index 99% rename from ffi/wasm/src/error.rs rename to crates/web/src/error.rs index 9bf20f05..2408235a 100644 --- a/ffi/wasm/src/error.rs +++ b/crates/web/src/error.rs @@ -18,7 +18,7 @@ impl IronRdpError { pub fn backtrace(&self) -> String { format!("{:?}", self.source) } - + pub fn kind(&self) -> IronRdpErrorKind { self.kind } diff --git a/ffi/wasm/src/image.rs b/crates/web/src/image.rs similarity index 98% rename from ffi/wasm/src/image.rs rename to crates/web/src/image.rs index 9990276e..32ca552b 100644 --- a/ffi/wasm/src/image.rs +++ b/crates/web/src/image.rs @@ -1,4 +1,4 @@ -use ironrdp::geometry::Rectangle; +use ironrdp::pdu::geometry::Rectangle; use ironrdp::session::image::DecodedImage; use wasm_bindgen::prelude::*; diff --git a/ffi/wasm/src/input.rs b/crates/web/src/input.rs similarity index 95% rename from ffi/wasm/src/input.rs rename to crates/web/src/input.rs index 719e6d95..361e3cdd 100644 --- a/ffi/wasm/src/input.rs +++ b/crates/web/src/input.rs @@ -1,4 +1,4 @@ -use ironrdp_input::{MouseButton, MousePosition, Operation, Scancode, WheelRotations}; +use ironrdp::input::{MouseButton, MousePosition, Operation, Scancode, WheelRotations}; use smallvec::SmallVec; use wasm_bindgen::prelude::*; diff --git a/ffi/wasm/src/lib.rs b/crates/web/src/lib.rs similarity index 100% rename from ffi/wasm/src/lib.rs rename to crates/web/src/lib.rs diff --git a/ffi/wasm/src/network_client.rs b/crates/web/src/network_client.rs similarity index 100% rename from ffi/wasm/src/network_client.rs rename to crates/web/src/network_client.rs diff --git a/ffi/wasm/src/session.rs b/crates/web/src/session.rs similarity index 91% rename from ffi/wasm/src/session.rs rename to crates/web/src/session.rs index bf014c21..4e2858c1 100644 --- a/ffi/wasm/src/session.rs +++ b/crates/web/src/session.rs @@ -5,8 +5,8 @@ use anyhow::Context as _; use futures_channel::mpsc; use futures_util::{AsyncWriteExt as _, StreamExt as _}; use gloo_net::websocket::futures::WebSocket; -use ironrdp::geometry::Rectangle; use ironrdp::graphics::image_processing::PixelFormat; +use ironrdp::pdu::geometry::Rectangle; use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult}; use ironrdp::session::image::DecodedImage; use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; @@ -14,9 +14,8 @@ use sspi::AuthIdentity; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::spawn_local; -use crate::image::extract_partial_image; use crate::error::IronRdpError; -use crate::image::RectInfo; +use crate::image::{extract_partial_image, RectInfo}; use crate::input::InputTransaction; use crate::network_client::PlaceholderNetworkClientFactory; use crate::websocket::WebSocketCompat; @@ -55,11 +54,7 @@ impl SessionBuilder { } pub fn domain(&self, domain: String) -> SessionBuilder { - self.0.borrow_mut().domain = if domain.is_empty() { - None - } else { - Some(domain) - }; + self.0.borrow_mut().domain = if domain.is_empty() { None } else { Some(domain) }; self.clone() } @@ -89,7 +84,16 @@ impl SessionBuilder { } pub async fn connect(&self) -> Result { - let (username, hostname, domain, password, gateway_address, auth_token, update_callback, update_callback_context); + let ( + username, + hostname, + domain, + password, + gateway_address, + auth_token, + update_callback, + update_callback_context, + ); { let inner = self.0.borrow(); @@ -129,7 +133,7 @@ impl SessionBuilder { connection_sequence_result, update_callback, update_callback_context, - input_database: RefCell::new(ironrdp_input::Database::new()), + input_database: RefCell::new(ironrdp::input::Database::new()), rdp_reader: RefCell::new(Some(rdp_reader)), writer_tx, }) @@ -142,7 +146,7 @@ pub struct Session { connection_sequence_result: ConnectionSequenceResult, update_callback: js_sys::Function, update_callback_context: JsValue, - input_database: RefCell, + input_database: RefCell, rdp_reader: RefCell>, writer_tx: mpsc::UnboundedSender>, } @@ -236,10 +240,10 @@ impl Session { fn h_send_inputs( &self, - inputs: smallvec::SmallVec<[ironrdp::core::input::fast_path::FastPathInputEvent; 2]>, + inputs: smallvec::SmallVec<[ironrdp::pdu::input::fast_path::FastPathInputEvent; 2]>, ) -> Result<(), IronRdpError> { - use ironrdp::core::input::fast_path::FastPathInput; - use ironrdp::core::PduParsing as _; + use ironrdp::pdu::input::fast_path::FastPathInput; + use ironrdp::pdu::PduParsing as _; trace!("Inputs: {inputs:?}"); @@ -265,10 +269,10 @@ impl Session { caps_lock: bool, kana_lock: bool, ) -> Result<(), IronRdpError> { - use ironrdp::core::input::fast_path::FastPathInput; - use ironrdp::core::PduParsing as _; + use ironrdp::pdu::input::fast_path::FastPathInput; + use ironrdp::pdu::PduParsing as _; - let event = ironrdp_input::synchronize_event(scroll_lock, num_lock, caps_lock, kana_lock); + let event = ironrdp::input::synchronize_event(scroll_lock, num_lock, caps_lock, kana_lock); let fastpath_input = FastPathInput(vec![event]); let mut frame = Vec::new(); @@ -294,8 +298,8 @@ fn build_input_config(username: String, password: String, domain: Option password: password.into(), domain, }, - security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, - keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, + security_protocol: ironrdp::pdu::SecurityProtocol::HYBRID_EX, + keyboard_type: ironrdp::pdu::gcc::KeyboardType::IbmEnhanced, keyboard_subtype: 0, keyboard_functional_keys_count: 12, ime_file_name: String::new(), diff --git a/ffi/wasm/src/utils.rs b/crates/web/src/utils.rs similarity index 100% rename from ffi/wasm/src/utils.rs rename to crates/web/src/utils.rs diff --git a/ffi/wasm/src/websocket.rs b/crates/web/src/websocket.rs similarity index 100% rename from ffi/wasm/src/websocket.rs rename to crates/web/src/websocket.rs diff --git a/ffi/wasm/.cargo/config.toml b/ffi/wasm/.cargo/config.toml deleted file mode 100644 index f4e8c002..00000000 --- a/ffi/wasm/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[build] -target = "wasm32-unknown-unknown" diff --git a/ffi/wasm/README.md b/ffi/wasm/README.md deleted file mode 100644 index f7dedbba..00000000 --- a/ffi/wasm/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# WASM bindings - -## 🛠️ Build with `wasm-pack build` - -``` -wasm-pack build -``` - -## 🔬 Test in Headless Browsers with `wasm-pack test` - -``` -wasm-pack test --headless --firefox -``` - -## 🎁 Publish to NPM with `wasm-pack publish` - -``` -wasm-pack publish -``` diff --git a/ffi/wasm/check.ps1 b/ffi/wasm/check.ps1 deleted file mode 100755 index 2d563428..00000000 --- a/ffi/wasm/check.ps1 +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/env pwsh - -$ErrorActionPreference = "Stop" - -Push-Location -Path $PSScriptRoot - -try { - cargo build - - if ($LastExitCode -ne 0) { - throw "Compilation failed" - } - - $undefinedSymbols = wasm2wat ./target/wasm32-unknown-unknown/debug/ironrdp.wasm | Select-String -Pattern 'import "env"' - - if (-Not [string]::IsNullOrEmpty($undefinedSymbols)) { - throw "Found undefined symbols in generated wasm file: $undefinedSymbols" - } - - Write-Host "Looks WASM-compatible to me!" -} finally { - Pop-Location -} diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 204dfc98..84784bcb 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -209,35 +209,14 @@ dependencies = [ "version_check", ] -[[package]] -name = "ironrdp-core" -version = "0.1.0" -dependencies = [ - "bit_field", - "bitflags", - "byteorder", - "der-parser", - "lazy_static", - "log", - "md-5", - "num-bigint", - "num-derive", - "num-integer", - "num-traits", - "sha1", - "tap", - "thiserror", - "x509-parser", -] - [[package]] name = "ironrdp-fuzz" version = "0.0.0" dependencies = [ "arbitrary", "bytes", - "ironrdp-core", "ironrdp-graphics", + "ironrdp-pdu", "libfuzzer-sys", ] @@ -250,13 +229,33 @@ dependencies = [ "bitvec", "byteorder", "bytes", - "ironrdp-core", + "ironrdp-pdu", "lazy_static", "num-derive", "num-traits", "thiserror", ] +[[package]] +name = "ironrdp-pdu" +version = "0.1.0" +dependencies = [ + "bit_field", + "bitflags", + "byteorder", + "der-parser", + "lazy_static", + "md-5", + "num-bigint", + "num-derive", + "num-integer", + "num-traits", + "sha1", + "tap", + "thiserror", + "x509-parser", +] + [[package]] name = "itoa" version = "1.0.6" @@ -295,15 +294,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - [[package]] name = "md-5" version = "0.10.5" diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index d90b76a1..506830eb 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" [package.metadata] cargo-fuzz = true +# Prevent this from interfering with workspaces [workspace] members = ["."] @@ -14,16 +15,20 @@ members = ["."] debug = 1 [dependencies] -ironrdp-core = { path = "../ironrdp-core" } -ironrdp-graphics = { path = "../ironrdp-graphics" } +ironrdp-pdu = { path = "../crates/pdu" } +ironrdp-graphics = { path = "../crates/graphics" } +bytes = "1.4.0" libfuzzer-sys = "0.4" arbitrary = { version = "1", features = ["derive"] } -bytes = "1.4.0" [[bin]] name = "pdu_decoding" path = "fuzz_targets/pdu_decoding.rs" +test = false +doc = false [[bin]] name = "rle_decompression" path = "fuzz_targets/rle_decompression.rs" +test = false +doc = false diff --git a/fuzz/fuzz_targets/pdu_decoding.rs b/fuzz/fuzz_targets/pdu_decoding.rs index f61245d6..411163ad 100644 --- a/fuzz/fuzz_targets/pdu_decoding.rs +++ b/fuzz/fuzz_targets/pdu_decoding.rs @@ -1,7 +1,7 @@ #![no_main] -use ironrdp_core::rdp::*; -use ironrdp_core::*; +use ironrdp_pdu::rdp::*; +use ironrdp_pdu::*; use libfuzzer_sys::fuzz_target; fuzz_target!(|data: &[u8]| { diff --git a/iron-tauri-client/.gitignore b/iron-tauri-client/.gitignore deleted file mode 100644 index 7094b042..00000000 --- a/iron-tauri-client/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules \ No newline at end of file diff --git a/iron-tauri-client/README.md b/iron-tauri-client/README.md deleted file mode 100644 index 08dcf510..00000000 --- a/iron-tauri-client/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Tauri GUI Client - -## How to build - -> Gui client is still in early stage development and everything can change (mostly the framework use on web side) - -### Prerequisites - -- Node.js (npm): https://nodejs.org/en/ -- wasm-pack: https://rustwasm.github.io/wasm-pack/installer/ -- rust... : https://www.rust-lang.org/tools/install - -### Steps - -#### Dev - -- run `wasm-pack build` in `./ffi/wasm` folder -- run `npm install` in `./iron-svelte-client` folder -- run `npm run build-tauri` in `./iron-svelte-client` folder -- run `npm install` in `./iron-tauri-client` folder -- finally, run `npm run tauri dev` in `./iron-tauri-client` folder - -#### Build executable - -To build the executable, run the step detailed in Dev section then, instead the last one, -- run `npm run tauri build`. -- You can execute the application directly from `./iron-tauri-client/src-tauri/target/release` or you can install it on your computer by executing the msi file from `./iron-tauri-client/src-tauri/target/release/bundle/msi` \ No newline at end of file diff --git a/iron-tauri-client/app-icon.png b/iron-tauri-client/app-icon.png deleted file mode 100644 index 986a8b16169d849230ca81f0d766c90b9f2afe3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424063 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

      (8Fkaz$yV#lG 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�MVKXHwJ7ItH{erKLoaF|%*esnyj-q4^LnP2 z|Lo?+RB(4BQ$~NNF-RRZhf^Q1+5gN*IPJdN=F-S%y1aj=Uer%TacRu{z9UF%QE&;4 zx(h?fk7i3NW$Dd!1Vo)nVJC7kNInsogwKSWPOj389+{W!N_Dv=P|-+}(;|^W97q40 z*Ld^6zt$?dUbf(_9M+)G!Zc#@lzSH^=(Xyu=ehV-5Ssly@sY1sF4ZpHda4RvDukEX zUA2hLxX{ppI|qt5+}~0OFqr5(JEySdaKx`*OyZ_i!^ zC)(Y85}ATj3bG$a-`lLzWm9XBAK+vgACGmCK#=Yawe|~<{*dxaUcD^qkbeRuO05gNC{th>q)&}Ga0)bK=3t5qK zhz9!2QlQx!CX;1Zl)k(D^eY^Azf^*7k-3A&K2UscvybjPF{&xR){@6kD^}TP4MfT= z`jXJP4;=zM9!OAx&OTMBs0lt=*PwFBV{>^wu;gB^+;`YOvBB@9R5#4?HeOk#)LTch ze$NuaGvg&6&vZ9%TTe>o`Hk58&T#l0YweSER5+$Q&*pK*N5)tOmrd#q3(f_@;I#;D zN-$r5ZfGEwNb#}A=?`(a_q7E?X`D^+6Oz@4UbhekIQX&E3G7=@qY^X4`ACxiQJ+}L zUyQK>A5tMBEiYyZ~v1k0<9~T5G`N=Gawt&mx?}Ca+ zoNqk}iw?Eg!kccrU*JvrM_6be ztA$Iy$?=k6kmREmNh2{T+Xk0)DBlh-?podjVBMHZY#fKHfl2@-+6=808aC7UDsMmk z%`l4ty^QbSEXKx63Po`0H}gCmG9NO@ak#_M@N`O~B-c9hf}<*wJI#}VDt4d3ylbpJ zS@nV+xu0>;gs+<(-9%`nU{}j3_Va3CC|SwKYP;PL%}N3I{D-UV_qPrxDhx%rUO^sQ^pN#i2Y1O?bsMDap zZrMQ`EuXo2+aHLUQ8@!by#PTIwo;m(pbu_Qfp>B_Y5|ax!Az{w3DP4l;kd9p?@KCx z(FwBI2z`s5$(sFdgh2Abvpi}HWLH%mQSkDJx zyTgS7?3=0tmv=uQXW`Zp1oljSk3!1PD{7$8xosc@pl{CEz}8y0it>9$ZD1tVNR2X! z+H%R)*QncowJ@)bHJ^@LJ{hVP?OPN>>22>>?A9z@`1EDzxqf~Aw+P>z1FZRMX8G#Z zbgX!3j-R7u|J+_2kX9zKMl@;N=3hEW@#S1D%$*h+1(;!3$6Wob-nrD)#dv* znEw8M52WGWIoZ?*IqDqRwVO<=K0D)<$=0Ojt)QlUo>C97d?T*?$<^vphsdawG|0aD z^G4D~zQ;XVhFfQD@Pyu_Hw9sY${88{LhpOz@WIXk8im4_l>w^qgKUDC=uPunY)t*g zOJE8i`&aDJ2wAaIzxsQN1K!D#4$?LVDAps3WVdbBZ^Hvwd+^U$_G$u@#kHZZFtZ(V z;JW%ABI%H-JL@#;`4f;|12FbPMlD;gs~-| z`}z_;pRieUP=$Ed+>efp+Q+RzaF?7w8syP*`BY8&r{y!+I-x?_kHgp9VrdJ55ZTR(c|da~C;LQl8L zuok60e{7>Bx9Yro z$kA701X;r=%9!Gt4>}G6F5)44xQwwU5}7iZSvSz?a0-y_1mp%8Db$L(sH7jwO*sD= zIw9+9xIHr$S>N$#UF0G~QkkjK!h_vJ<^-*E#`tT&a?3=Rw=QdUt%KCg`akv6pG2lo z{W(?xz)z%$=W8_bL$iYO;NokVZGM<8VmL6xnG9hip{K&GKbAeeT31j@cW% zcTL?p_d-DDe{gTdY@k(ddXU+bdsj8auADx-MaIcQ9sZgRU(McHTxN>HIdg@E{F6b@ zw%uN&lhA;?`j%aFLzrrA4yQrjNqzsG9Y!sPd5!;N=}1nPfWE&1a`zb8waF#oVw9Gz z3A5#q`x`0f7xIgHM+CpTQY*C|;aSjl*ob&nadQhUF~;yESsG6tPaHC637A}~zxEBJ zQjxa%P~Vl%zy8xO?(yqwE-~k~qZpWFS!c{q!efDd3w0t7wkf}8b+eBHux%MmV}uKD ziEfbF>r98sr#TVwY6$tHk_-|1ey8k9l;;_YFCA+Qq%6%th6yNfUI<7QNHoJySiF#wQ5p@_Kbw z7BjSUY1foDUf+6(e{3~ygC^Q=6MO+}Cc-%qgM1=B4++D#!m&=W^oIg)dXQ)}H5DfnZ z9Y5qf$V`~WSV8H7wKOvC7*h5LT?8P?uVFMoG#ihxv?EN0msyt>(kJ07kHk-q1kq$GgFv~Hx%M0jlfYqQvqkFa>hA0}fOlSm@g*rm zs1wgL$n0#<#qw_@^m137c{{53CGn#d=*77O1+P>35!WJ`JvAZKk^I*xEO?s0q5fYx z@cKwRjk$d!veo_`r#y;3})B)d6yBnrgizcdT8A}k3u#`)!l6O zq0>$Y(n$>}xc4a~|MGB0Lf2C#zlIA$=+?C9NuFL~uYP%oBXb=1955wFKx!A6|BFGkAzL zZmGJaROjFLW)sJxYHr%B;aW{|VxE3SywYC8wDL-mL)B*Oc)jKgG6fFAa_*mr5kl24x&#O=*S@sS7xMV)Rzy?4wvo8svEgRThfN?&1)t|Gt*kcY@2i z3P9NqQb17{z5>Y=s3DLE~`pGrrQIpFn9Y;R_#ZX zn-~7!durpdT@l49?ImM(IRYI^!K)nMf99CYv{?xKS@cph7H8U5Zgz^e%;c(zhT5xj0#os=ia3 zvF~*6b^p99oTK#ax1u;6gGj*Fv6xX*pPc^FZC#vYRR8yL>HoDaD2f?%Iu)aq&B$aBz68$$V-R z_oe*FtSjY5@mWg8OQ&d&X;L*(HcvEOl6Jsa2iuFn?pY-Rs0GjNE z*3|^#CsAXCRg`7bl*Sg&N{^5lXeWaY!0EM^=D?_R!+4{wvZ2n_(s_adf#m*s$UdU$ z*%0Py0^#)9_A3zL*bu4dOi?dE4|`f&_STzIn3%Tl!SBQ92c4?|?^L(my}FhNwkI=EqQf8ormiX? zT;xze6P?RS#(&6n1fEL>kA17!Q$FA^m8$&n10os#oWLsN8J+TBOFEbp*`t{w9MA)x zkucS6)J6Z+W}=!c=}C+fyw4i8`W@?m+=!{=c^~6jag3*up&qQ15agMXY97Hp(jr}x zHjH3C^nCwsMN&%Ovw?`N6Z^fWAd(Z}flU!KQ@iU=W^HbL4+x2NY`KKz`c^VXnkBoM z@o$#jOtLYw=+n9nCu0N}q1|{{0_R#q)9*VH0E?XYaPZKq!URn|oaBEn@ifzeiZ8i` zK=x%hJs2x!Rz`hWstTR>FPt{;PZc}Q^Alxd+lXVQ90=}38lUk5j91AW_3^_RzU_J6 z#tV=A6(l?TgO%j;>7NV&X}l|DHxQm&%w)wjLNezMTfm?K&aE3DV;|+GEO^KZwXY7V z-#TnF9CiGi9f?=k|cwnZo@=n z)l(xf_rL+xy(QO4uw23kh=TzB?(P>EjnPbC-%#mj@lT!+oZI^BUbfI1LlniCGrx?!iKQm9OFZ6pS1bn146$DC?{Ge? z1&_@%oVPq7?ETc{(8xszE~o+4aFab#|KgezwTp(Y-7QcMY38g6R0ze14;b~`Dwj=g zA$bvGWfhNDpMOQZKfPOy)QiZux+!CQNaIK`h8bBET`>hxNt+~qi3a;@cvyROK`5b) z{9fSs3^}gsR=KU^e>6KVG4;wY`;VbX8L#%v_=bX z_FdBbLyG~nBHIKWT;yT$4$?kf;?kEst3T@qW}4f^k$ImkTsGd2JN>uz(rP|vYX3{3 z)g==49nh}MHLf$mgB}3uqv7-94BDbhT1T<0Br#*{9t(2OzQUxiarddDuK%krn0As? zk8 z+g%)#a`5sMrGtO)^eB~Bi8ij+=i_yqcHRs=Jt}h|%@do-SyBD0bSB-eWWHm;d?0I! z%B>HE&V7`cYP~!apmQmZ!@sTmL@Xz^H>6$=-B|F$ z+L)YXNMw2b;@ijOzK!3ni*VPN{nJE@Jp`_+scM}!fPF|yq2ox0Ab)y znX#Np*B?YoN^J?Zmctt7-nFW_w0OZ@y~g^6CxEmo&8Mm(8&z*ift>usJK-cb-m!*_D) z`Eu*->pOo16Vh1}UoapV3EP+G(K*pkCy+>P3SHFidf}t}%zIC!m5R#a2Nyd?@sU0@NQK5?~}bDDzBMQaZ%zZBa}CH`SWK$?JIHS$<3n zcWe!F5N(8u_=4PDE3H`g+OOLqV~`{w^X$$K&D;+v!hKUasJF|sC{>W8o0>MF-+Ay^ zIpIWBMQsKH(q6+B63NO8YOYWiVOX~XNLqy*g_^UKRJo7#s>d^VV4($I5!S0OMkF&$Ik@Y#KOZ#26B%e>wM!8Dev;?N{dP zo-AbZFHCgr&!^@vAaSFtr{Nq`J6>w|+^7rN3B|+O|BVQDRZ^H?*13ue6f*`if0l2y zezmw!k3`Erok1h@DuD*s>bOOa>U~%-U1HX$|J^uId0Q_q9zneaa!gu0;tuwG+8?l( z8>zAySKZg}XP09g=Hxv97o3bs1fv&@d}GDll-`P|^96im1R2rFrR~UsX5x1z_cbkr z;(zx?ahX)T%Nj)C?CW6o`Ol4#Qa~Q4YHiS6&$cVu7j>)F4E%K`dRR`BMa7FkjUJM| zM%T3F%n0?Ep1PR=>888B`soLYBUu!MRSy4F=YFcL!szW6Jl)W}1XB5yU37jH40+{u zjlD+>0u_|%GDx9Vscn36P~Gh)&eYSWEz1!Vn*FMQK?Nb34yX2i_1R0eSMOrp1T!1C za)m$xl)_((YSkB}Ew;hKX*k7wyYldct9B(IL?-}Gz$~2`Av=RU8|9oUlE+SvSYSdn z$3h0=Z`~#Gzq$($W^SPm{J;b7=o#@r)L?Uccz5+Fwa`d);m5g-AD8sZdhxFv2dK9)gd{YsiqF9|i`z;-&X${9aybt} zLlrnUFD!Tue9wKybo1Mf+#hq=4)3lY3Tf}v-0WGP99A&QQT@Yq& z4{T37bhhkILNi2*DU$bn^#<{bv1bgnWnYq5FRtl5(d)1-a044_Wn+KjoFQ$@^Bz0I z!fWg8)jR6w>-PS*a_0-*UkLQ*y9{7=FAkuu;=0CL38Cpbk3>-vCN#gLAxNs=vm1QW zHvI;+^C7HA)`d38xo+Lab(HV^3DqO#!SdrR8FWQ=aaK4`L@*B$Qc;zqbB zUJ)Zj;jFK!S0m3j;153O=VN#Mg*Ozsi+(4!nkw#cLRt*>mctb^Sqpv&Mpaw9oRStT zN{%_0pUg`49n~9r*OK!)0)&SiF2i{>R3)!btG?MpVLYVTIOF+7xD7ZC)HGT zJBQZJR{6D$mx-bn8OBvKV#%+C1Ib@)o%A0y0$c5;V?V2NGc$+x^H#6JMqaBvo_^Qy zI0-NWFUawCFRAu875U!$eNqodS{e!?C^jPF=@$R~*Nh|+I;b-57Xd8%XSu$qK+#wU_6EAwd zEd^;zJmFfl{>{nzRJd-<`;f15o8})a9=*3H{dZ|ymy8Rm;>(n)@EZQT)23>43=hLPKsN%O*B{}FS1g-wLo;Ti&ubhSh9H@z0-|)*B8qBj zub<>24F-@Uw0Esq_YxL@t`br$qD~rq;YTme-^UbS>Cz>Oob`DR9t^Vauo#|Lo=-+WL|y4gfVqKRC18w5qm;I85KXunckf2$ho=W$2X3{H0N{F0qHo} zu1Feg-JkAD4AkN51E(7EjChy-6TrFtugd!q@fvHTw_y23`dX|#bB-VN@z(hLKdYrd9WVgw%jxA8U$j2dz zTXB5(txvrs>-*;lkKrPT=Ps0mRmM*AiZ1TgNHS7e8JoGM7*I~Ztvb}iFb2$9B~IN! zg=y=o;SX*p_ov>E=-_ShA9=455%ao#8wA*qSPaU$ zpKHP~bsy%EEB);j1jJdx6tY)q~!0Z%ZzBbv{+XhVIL(KWNZq2?LRYt6j@5C&< zIc@7DtaDc2l-S4=H{*3fT>Hnhdqnp)_#lD*Dy=?|l`F?&>;m#a&H2);vrE@&sz>kO zl4tCwPmltp4?Ut8eb>JVUoQM=QYBIV(|@L58LJ?a9&CHT&5iE$J3^nbr}lD0COnk& zt=@ZQK_l#eZ`OO9g*IPS5-<8DS~CW(|WmHH*h0`;NDY&4xOCM#02Q-re%&>TN@#D+;r4p^MYL|(XvjexJvKr2gcf09|CeTM)tFlAjw*FOd!keok0axjAg z{|@(4<#Hjb)|q@lArA?}-LX0H(a+YyTw8`C+0x?_ zGr~!uBD&Hz5(lbp5W0>(p-stHf&Ilnc)vs zzS>(3x<|6%3ALY(sIZ)h3G?|?e|+U;V!7m>QCxCxs4eCd#Bm@nl4C(b4^hMr|MrWi zW4xi2lGs%{^1{aY2g{M49U4=FU2@Ju-8iL|HG9f_0!MJ0BAgUwEg^EehF`$Cqi6s0 z{bT=1uQ|Z(s z7iCuc1;ft1e@f;QR-ugc2ttu7&Y-k4xk4?bn*MCndw>7V@~s5j8nOT2DC#qa)$tG@ zEfz0a8A;DKZ!CA-;(9OGQ@nnWhA>q;d2gI+dhL-Se6Lrfzs!DsYiauzT8cjL)ssya z46{jo^i=Wg!)&D#lw@W`_&QsI!?L9$>9el%6Vh(X1G5Ef)T~RxazqYjvw2DC$8xfC zt9tSgvUi`&G@(Ujm#q%hfasVeKHtxK4{1WYL2cqI7gdhULwg!hz^jzxCKHoHZxQt{AT!wVF=$sgHVGnt~=_Df6f-;+vwcE#otIri3NH_H0G^fLyo*maSsaqSzY&w~5+8NyKU-0u)UVT3unm215 zTve{RPPafYC>HBfQ-I;#&kkMzbkt%2NA7Ix)r7!dI_Zt7RE4=mN1>7^7@A-;Cfa!^ zdvqCCBu9R)#Y{90QsP?ucz&xEP?AE>ZIZ ztkKHE(<*p(mFzqNYK_m_4O&B;Rq&IrKTDbxu+EMD(68`N0Y%l70r!8^p}-FZc+Hh% z^y4yaafkS&Gw057yqSJaZ{3hd-1*j;I2p1d4MQUsW$l53%tybzYCo2S5XDZ;ODsuf z99Al4(V^T~b(siqmV15jX<{btvj1MrgP`5$&VJ0!HSbh~ia1gC%Q++FM$HD4cHH%j9DK!9d8(=T5#xI{Xq-3Z#x3MO`~^>ESn;zTNe?K2e4 z$qZE+cC5_56gt~C_b$aCyD70^Bx1Bn9(DuHKsZw&ffomBRDM(ojYH-fM!=KST^kNl zCE{W6TIz7`ZRma1U76?8RP4+hIxx{+4&TSFXfsu+(D+^$*RxAp|53OqrSJO7oM~*V z3-aK2+5fIC#c+F!H59uTp3rpYFb0M@j&47UrN=u9MG4i94S%w3IXkH&a-N)MM*TzQ zQ0S;9+gw|k&&M|pOC@X>cCsxkqLS;ej7HEyo8S%KssGNjUC?jTplh64`Al?;-#}*L z<(go5{S9OD%GToqva@@VHTLKGI)q2B8Nukon$PX}7}>ON)$6ZO5L+-#AcO2$su zb29DY(Fczy+{`hoAzc-itG@l|+PzG^kUVYSsIQlT08ol3H!<@7dNI1*8aP=T3;1e+ zqz37C)Vy6=p!m=MsX2pXtOuLiDYL+HZxonVq+dHLFtBz;pg>1PQK)Yl?((hM=6uyM@#&w7ye&wy z4U6iW4w1Z<)?8OQwDkbCQwFs>@=PR)zSHVMo0Z_DWZOdh>n!Wl(TuUmn(JK4SG0(E z(VYT4wW{9m=hyh(HYQAc45=%F1)geO>r?Q?-gOsxkx$DITOmIYnM}`X6ce=fLU46Unom z9CI8)_sz65;*eyyvYnc+;lOc0B%#j6@K}-BncRe@=HIlbpI(@Fk%FIwm^sMrF&ikD z9(@V8%hdfi()k!&G1Lz8b(DRMNU{;@wWbX=F=DtP{`4ZUz4ujW=O@j&AN;#v?O!XJ zk3p8PRZ=U9@n}p`|3~r93b*vc#p*cRSjk0t$y3mkn^S6aW@ZP2$ zEg!?H=hj`7!8V}DOCrsdtYcevqamLel>&3tqz!hseG{W~qZVEl|JDDuCg(>E zo5aE`%vEh!QO+;=1PjGV-P#Dejr&;&;=_{LiC}&-ipbxd-G3~%f|}0L38vy%b}*?I zMlurYV4{EOtI&*x=fS^A7UEOE;+Br1f|z)*I94A@Y??vsY-nWUrD~@`X0SMR7RT= zkCRT?&56DMY`y*~U>DBT%*PLp!%=7Y3#)#8Qe`{2E~BHYdD`KBV>$|QOv}d{B?shr zH?l9b5wal*8JtX_s4(dyjRxfNed4+uT~}NnCbKX1HLQK~AK8;m>Ip<{a@|ZQOucnv zt_w+9o_fC&`|~%jxk2&moQ%*)SLuXbeppXaDHYQZf9E|9oI6`^$vAIX zu0nk9@vNL6&MfK*uwppwOGUc#zMI##W8D9pnIArw})#XitewIe3+6SXa& zO7bwICz^2>{PXu?N5Or0JpEAig_2{sK^zG+oYC{W-+7<=i3mo2{E9}&4s+e7Bb$lN_XDkmxmFzSrYbf9)>)LEE3nwf6e?B*YUJ#HhfVA@ zyQBT~R)QADOhBVH0J=<%^D9?Z>kABX%kw}^cVgict9Y!KS_A!Ook%68gBIX<*ha^`f~T_5RalY7o!i(rfnM-uW;ay&G=!#fG`rkU2N9^?P4+3VL%Fx_(l$k6hGOltzEDh7mB z=eO80QJmxOF7n>2$%E}H?tlUPJ=2*DQ0>1YUnf?76E?RG!7q(Yi_br_@08xP)IM2P`c|qH|5yfF@GlrC=X5bMD3#aH3{9=N0%a%k(lP?j?FLHi{f16L!$TQM(HxLtM(EL2hRS78g-aIhd08w7K zI8(!|n;I__LyTx_T3X~tRfuyOocL}lhxFo;pk=^|ed_(E5+ch5KSk1XAOcgLKn=2(5~R-CQtl(JVYg>!31dW*n( ze@cDj+jwo1@bLyZ;R zWfa^hHol;At)wo*j=0*JG;wEx6}=O<-<-};Do!x@tndm0(C#H?en@~RDgf&Kz+h)X z$!xZWwaUoAy7df&`Pl62t((#hQ7!R)LeXB`5mg&HLM!FR1nm>oA~Hv_>n>#FYOV|PFUud}04+59Cw`S`XTBUz}eR2kt{#kY?q_lH|UJh=O zN=0RpmpPbHP{hMA_{0?B4jzy)_=$0V-__uIr*w4Ir6`VD_L*KMm)8ic*A>C8LV$#$ zc`Wj?6F7$~&ExGe-Kut3yABvO+48)#wn&g98Hky@vD95L< zOF{@%xGp9>@zYVVS?baZLg3;t8!`l*YN_7?THbC(g)Qem#TJ)OD z7-(Gi#PDc^Q*QP39sq#C%6RkrTR!)+FN`Tji}&ji{%QX6UAxMsAMmBVT^)Pid*j%E zXOS|qT9rJV)dBOG#%mZjk70q)#PBbodm%x=D{E$>$0AfGA@1A{i5As0ZUn_f^a_DSS z9}W0_!tLiwa6!RpvzB(-SE^LtxIz`?lk++O%PEkYxDrxRO<2@BPTR;g>sBF9mpUOIiT zAK9AfI7btOjo5>_MJ9MF2w^*(Vu3oE8sR#SJp7;H&drkH` z_{X`{?)Zw;o80Fasvxi@*LN9%M$+y6(YsUYyNmE%%rkS}20!o(pShU*Gi?%T$1G!ahnPJ$1IDb3qW%Z$vABhr znB*i*rqdFi6Q(1@Y50^vf(3QxkI&LP8_XOlGgPAH*57%LEF5*T2Qi7{2jw;ZTLu1~ z#>c~~#?@)(ik)?-b2>U?PdHUH0zF;S+oDIztkrs9p>)(#&is^E-Hf_wN0NA|fCK7k zXYNt>Ik$LBg;D?15CJo-Kok74jiF%JmHFQ`KAVU z%)P1MD#1u;=te}j>*^0{!IvDvt%X~E*qi}7=3hbV){C_;w!+d;2crwDnvgXjlC@?l zG-IYHt4fVkwhi~EnHn>zK?^Fno&?=-TF5;VHM5|wA8U3T-9GY;j~ zzPcvWGS>OaHkhVcHE>5l#P}Kdb5c2@C70-SwG<}78hq+ZOFhm(HnJZJymB>fp@cS4 z2Gb))JJ;da$ES-HVcJ1=&;w1euPxP~O8O_=Ia;(lp%#uh<>MhfW!nhBfg&l1C1*K+oOx-Wt!5F3g>wZ9dPSUuyX8LcIADoeMb^;p=-YYhO=u% z1Kj7{zd%;I9WVsodns?EuN23*B`Ek(dv&d!0SqL4rBz=rwc$jb{N3vPLBjI92An+; z*!4zDIdp72P22O9X}YR9K!{2KS=Wys+T3@y9YdsLel;1Y= z{nA}I|DBq~Y@)g0E=H-{x5`RkY4v~qTOTFe%W6i#hCTPN%;=a z=t+tbE%;bXC(CIHyw7148YBeI;pw7{-7BB%#2n463(OnvQE6h&X-vbxt#e0!+5$#t@SZsr#8`|yg$2K{Tr;-%H% zNz)sEf*ZRGqDS)A?ggf2&8dNYS?6_q*H`B5hVvKO)X`WpEH*hMNiy45&=JFXr{vvO zpae6$Y|~gUTYD}^QVO0OJfKNM^x`tn8tZ$e)xv*nT`VqL-816=woz9q>Yq$oQ-)f2 z>rj*JDtPT&`neiF%Dn4WK(%9S8$^E)JszShlQ`M;iE=6D+=OH}_Xd2n{5Oao%I;D} zYk>n1m@^UIeomjxWef#ti5;KkT0=wu0>>cZx?WNqgqSe+otRYOp_p)ipSyE|##r1g zs_V!(WEwpP5Z3DrEkCA0NPLSS`9OA@h=@Z6=-xOwy^5wdkPow0W#7J(k+)d}lt?L1|Pw zyYj66N4qb22=dxSrMUo}r^9Pg!#m0)OD`gDkMv&yH)U8n?psOrWZLA73dY3L5al9j zmh`!wTFY#nW>{5`0Ix)6vjPYK&5~Bit-A|V;#!f*#a!p59C~xXklH{UC6@(@P|KzS zN55(om+k}c%COWO(fuNc>8|MY8TQ<|-)Du6{_rZjB4wm=FE1oIY%fYblfAzkcDJI| z?G!w3?W@*<;mjRV`iUR69!a>F=jpJh`weOP>wcr`-JQ5uarIos?!|h^^qeCS)$?!)oa?eaHuGr8n*x26y-|1;~dLqdKO#6gp}0-KZ0TTOMz(fS5w% z*8|AscTT3c7zYRBo!KqVcG3&74BX zXFLEpVLsn}X+(f>!Dl+x2iJu_e?30@ew3!`XXwYwZ@)@7V<$PS)-wfyJ_$kOshG}u z9_?|VF1NP-8i(XolC=X5BTf)@V#0yfzaU@S!!oK72q9icmGkinxTh5W5O&20sX{+y z_B#^%1ow}7QI5ih7>ArVKHL~ll`TMidO!IZ_bW&O<_hxQa>m2iF<)|dxY2{YU46Gs zR2BB`(CTVwK@5U(Rbb^)LuGMx=j?R&%ukT9Tkm-`^!G1pKAMe`J*NS-Pi-+SLbzQ7 zmYq&4qz5(H`?^kK4C<}0td_QX^gwG2Zl#H~u&Eh?iN?*{Dag9|2GO?=Q>Tn$5!-#C zi9yvC{kjF02e(npBGpOnrj-_?zW27sk02ayqh1|~XP3mXlphS*3Z*26pV zenVu>JWB7?j%YrfE~_Iqb*GHrkaz&uUQIIQb{l7#s;BKA^Auv|jj&q#rWKS4!d%?G zuymg~>whVq8ZKLq10kv{qoXa;Qyk1^#rMb>kcTTIczYS0i1&yr{RKdTXD5Bf8UZzqbat~A1#1(uJ`%;qcZT2dp_MYQ%O^vCu z6YZP=N28tGN4-~Dl#{_D@1q}x2`Za-RE}aL#Rn%V1n^Gr^DV(|kU3z44V+dDT=d#U z9RMb5agW0u&YteWy$%GbGQfz|u}Oo+ZI4xyCtv#P%1Y|u8%CF*&by(xpEh3q8E-?* zcRchfL>D4S*7Q?lh)(B~lI*0*&1$7>b_pQbqVZn6*&CG@c1T-MY9_ABH~RDY9`(o%1+% z+V%V4J)(QMXT2SW=G9&U`S*Er4}KIE(c9zai_jkMJ_4qG+jW0lbUX|p$@6p%$f(va zUTS^p?95R1+-M&dUual4nb-Bq9}4Q{a{$N=#Z{8VM{(9S3z;b8`T?M&*Lh( zZ#gL0a8cE*wGFYp#1^>&ITF1a1OTb<~xP4n+ED3wt`9(Dyd{q-z`GP``|; zkp>DrjsGErNG!8Sdek3Rnnax2cZA*-0k|XC+)$^wHxy5#X8VOgcQS$@p|A{A*{Qx1 zi}$(P{InH4EBtsPVL;bctIB2z6LK!u8KnRcL7%*uDAZ5xA`#fRY!SnY#yMnFc>nf( zLxd}QWf`7?s0NlSz#;kasiTq!xiIaOeyc^R5pc-;ebxl~95J7+YBym;gs1#hd&@nd zOQ~)=s{@#q?{!ZW3AV~SG;Pz%xF`71PEh}}Af9>4N!!m`U{LO6qahE>`F(FWeT3m8 z7NT;;qr+1rOc5PULN{UFFS>Z+NZZwvJFN+k1q5#P0}|D{|!VMk?6r^`GdT{9_# zr?@`7-LVmwk}my;*Cm)9pA6Z4)>Q59ad%WXDY8e$@~w=|F)LX;2?5wZ*%?hZH}=Oc^3ssFuW-P1bi;5T{bcXSqG-&!j57G;R#=3GZzPV|={ApHu5 z5v@uhFbNQcc{9i2y9wnnk>|Wk0LS=u6LZ*P0T@_INm6c+Cm0;<^L2A9-SHQ#7vd?U zhEjkZ2?k(UPUt4cBMGAB%IM_EyCyqBBmNd9DA`T|yaT3Bvc0lv3h>VEK!;*>uC!=U9(HKrs`x=1H} z)^_&Awd85ZjquZ)lyZKq%W=MVjcFcQoG<2u4i}>lLuE-+PlfXS7(SV*6A4+gEcQ-+ z=3wT7C!H(&f?aZ|wE7G+IUnon^$+B$2#WVT_bZ{}^e9}l0bT)Ef&L`442X=*-rJ$zZI}fmB=8_WgpMNX=#VQh zEmsh(!M0O~1r_%{gZZlaBolXLnv1IU-2(e7N53K#-bL5$&an-Jn8JZ)$*8gG(n5uq z$1qb@)7Rny*Y58p{3y)k^Ikb;4S5W&Y_pw1H5_B>E6GOdvmWR_F_`lQ{Wc^C*KjA$ z05WKi!M<~)%pd@8TT1Yfto_1gOPKisgt{}&QRV&btwg3juk;I>U+XC&UNfgUa_iKU z-`8E-CEOPs$*fB0@pdbTy9A9r^D0tD*Y+AQ$On8tVtZzJ^ot-{oCecdi7KJ4Y`g$Q8m)gPm}iq7p%o(!Zw0KRs@=XWG?n+^O}Wj{Ym`0~7t)bA=Ei zNqhHes??(3)*6wW@~IXGspq;KR8(SK(lM>dh@JJk@!3;S;p@%RhnK5DX#)mFdcKSz z#%mbgqtQ+7v)7x$;1Wsj8232x=jeD6yT5$}Jb9xfTJcDJCZ7+xW7hY(J{+=I)ak36 zCl^S&q}%!9h|QjhnH3SJU|>uIh%$^C!7?`b7_nTP9BJ)=q00<@S09>TdmFj>8{sr5 zgt6smvHHe38s2pZf#($+X_5_v!z2@BG&^ote=O?b7+sZ?6E42ylmsO|nbn1^`^(Al z)--Iz(6pGAJMB~_a$JxhCh^J1^=F?_MtA~C4s%IiEf>bjj#t66EP*!Mzi$@dDF`K$ zb~$})DH?*(2rv4EJkX)WCxMO`DT$UL#WiGwEosJyc0R3c&W)gU!a;?CN|FgOPqI(Qe9wKWL~03+ zM_!P@z(M#X5Ph;azGexlZFoL8Q3HV7IQv zwV%Uf7)R3A?yvKp@agxBF%=Lm(uUDq?G{oJu;Qhx%kv^ox5zLJhW+{vU}%UI!)CNyMV0LNw3i#S`m;dc)T=LZ#xq6evIXG(&wwT zK9>J^2}3(9T$ZOSmCSghuvp)|^+}!>(Kub_>Xsd{=@4N@uEnK)F~2Ph9S30PqfU)w zn=l}n2nn62T8?f3V8Zh+DNy&__et*CMeW?fDldnwt9*5fCTCPc?BL1ngzdxy#e-f? zls*N4?pJC!e?ajw_GsWr0#pcP&~D2WpmK9U*v>eZ5nN50s1!v2JhVH4%m#oB@_v@$ z0uC}_V-kdqlm9{L1|9|l8OJi@DKjqYte?yK8YSfVZOftUc1<>xe_hy@izAvn-Ztc( zaU1d%Y$fSS!oA9cmlef9efvwQSpUfAHR-d4C=Fb4r;c}n`~~~7+=*MLrZ!07q~c?r z<=-^*VvQJRkX5cV51}}J24mTDGvUj&_9QQ!K*n1>Dh&&$&6_xPzCk=!Q&VES35-u3 z-Lj4z(7gj?@C6<^=oE;?yiy1=aK%PIayo&v06hS(9xQnKx;HCLi!>4~Y~E?w7p$HM z7%u3yp8Uhk+A61bN_%_=($@i&pk zN5W&|>UH|=9hD%%I*I~A4Z9=8apt+~MakKpm6W0{3y5wVbIEqhmgyJBk9I-Ww45{C zmBChHj%7vZ=ynKcaat0y($F!0^l^|uixBv`Pic~rYSld(%D(OGSWSNrFrkv(FaK9j zM-Y|gvTSAT-bA@yCE&8 z&1dn4>dVot8HbFdVXyxP{Xg3jS}dkd8)VhXnitexA>`NV5u{v2y;AO<7Bw$>(J%WW z$xuzC=T&x(Rco7N={Gn2goM2^QNDc;{O)OK`C%2!O7UuEi32a-|-#x3h~{Io!$yMTMOk)2+>k0&Tovz`!W zt+WQ>{yOrLwvQ0=b!9I1K(cQi2h4HYpw3yPl{&t?x5`i~dO0F%mbAkk&N?;OnlE~z zlH4pDWY{PiEX=g_BZA;iIUGJJ?v%LB=t z@x8WI_jMSdh;4Ze)L#0cwYne#{V!@q04+P0w+paExcNDTmPHbBxjBeF3^mNcoAU() z#{%Iw4*r6BTRU=$lG&i|kOQ3RQt=}|^~Cq?t*p~)G? zBTKoT>q;S!0)+4=>!xYI$y{NGtc);B8U5MJBl`?}AzZ2mEZSBKWICPJE>u~#H|80% zGS;FMZR(e+S|Lj~-7G^8bC&Elt*)Xhp=p50(=+H*u|GND!$UIVUp#hy7{tFP3(Qi= zR6l*B@N`1sAt}D;(ZsM;2yq{hJCprn>w#^!J~Yn*-m+bFSKbLB8D6?W2Qmuh8w`E{ zpN`wx8Bae;HX;tOzW`}Mn2#(#+7?RK`iOI0`HNN(B+I?j)q_+Kl|616J&=7ct+ZDE zAjDp@(-?OT+9Y!Fr}GC+9uCC8F7R7(a$E11Y{5ZE709os9%1|;utNcr<~%|}~5*?xr5^P7I8 zUV4*JOi1Xw<3nN@3@?~IKL%(3I#TMRI&z1lO{Xo%%RBi6H$IHM_aD#aX2%OQLG+GU zQa`e?ZqKr;-BG_4FZVQHqPGyBh^~L)a_U__^9c_)2VRWe{RgUBK z%>A~G&#>q^7!>bS=_-%foo8x0r?q?3jlj@8CcCe&CNo*5mRs#aOJ7wa+Zd6)4BWDn za|31v?sUfdD&q*6kPMm6T=1E%dc8HD*=UwZFCl$NuFLGjc~s7Cdxy9muJEgRE#;|x z(COO$F@9u#WE}Y4%X;Wr=?OZKmK!2`{K9A1W53uR9)JDn^s!%-4h|VF!8h3rPrP{8 z{}^ruhZpGIn=Y-W9MPt>wlf3~?cqOgjGu0w!t8Z1_$-4TzQt!K+T@ALjPO@pdT=F_ zO7%{t>8x!M$hMDkBd%9z;~dR2@VkzV zXfH#EXZ>Vgno(^p#G*zF-wF*SbcwV=GyE)G?|eJym)Mh=V0@ze+~X~#GcZN z`Cq-06pv4!Mfb+?!aww}TnG?vht zQ_Pk{gie(0?7nL7;d%ab+u*Xh~ zt@1119`LH5zJnlgCMWyLsGi`18F4PAkIjHCgy37fCMvOS!0rt!%VmuyTZ=KCo^|-|+p>>%pc=R3b@Vl=VfSG&gnE70w11MCa z+939DpYNnFPpOWb;gtoEKwcuY`B%1%8~Njox(3vz8#ci4u_(${8VK|G!jRe)QGFU% zR`V?)JYBfJ;?@ok;X2dUm7VgD@KiFo@1pi#B)5NP)ZO4{1JqgW4a|GGp7XbdZ$P>& zB(f@Zec`XXeB4g6fIkMoe|^2C5%jdVk``tm1?(!2dsVs zxu=z2;UJ{&BT~;YEJ@=rO@KaOPPf4(5B~@%4=0DU^AqG{rqbu{56}moipnz&(-lt& z`}=gUj(xRJz}6m%S2w=!sMIW{5k7+4)&1~r>Qva{-!0}7qR|7a-0WafUIN^T36DZK zPP!+0Ij_0yjUvR(@w7IK+K)CrSfzoj)aqgtvvg%1x>9s8ZB^ljRUx{adFnaowvz*E z2lAY*t-HdxY&0gUL-pVYY0(nkl5-dkBQvcD4Q|_xDZ+#C@j6W9cZ)7ds2E>gFd}4S za8i8Gb>$0+GAu;{pc9^JYxh93>T&mK33Paih_Bzf*?cbM_U%A}q3+!+AA#q-e1m@A zv0{vu67X@HU&R4uS;opompTpyJi5LMohdj>S&y#$H%_!lW#;vv`ANl@nhOVbe?{=# zr@e)#;++eRIy4DpuxQHsyP&RN@5t7uczvJ zFGo*Da}yZK;AWM-G1LlO*PKKC2(5#M1$Sm9vBS+Bzr%wF%2jJD5W;A3a;4fx~_X-a`R(QZmDDP+07_sZ$FN*vd_nNEVLj_v|QK`^$ zARnr0;wJj2zZWA#z2iU0oh>f(=Gn9fFC|mO%MT2-q|PD$mTr8!vA}lRO41(4QVyK=`_%9v zcWI$$v*QnZZ{9GQ>@k!B2G?740I8_Id9H|Gx4rk~ispvt&zSa%yenK2^vJK$9!q;( zC!e4+9xtD7p+^r>?rYiIQLtPNQlx382*|#Clq2hQ;dW| zwZ8}o3(qQVeHs4y#C-v;wy^Pm>@k9!Np{&iQZATXhYs469PN?T%Kd6>&!RQ&CQ<-| z4j{Lzydio?L&80p&`rOC^htr`br)0u}cb|tZ1 z>xc=|!Q30k!`+|D0TI`^Cr;5C6uVf%qZg7|PL35n<87&1TDSIV&RG5H+%VO~$V;aSW zJo@9(chq0DI<79yrMyYjNtw=H)2m9Rr#egTX$kQ?PW7bdK24i2uW0R+_dIwasQ-0! z1LDz}2$xo9BkT6~`vBY6d?JaKG51P&;*^2dp-rW9BoTbG1X>VDZK zJBL^oC2)`#I8leG6d6khK=iVonE`b>#eHyd}cHtyLS4u#2nV zdaq*^Qj0qh)|MH+UcXT~?B%*Mi$OKgedZ)lT=R8H?I(Zu4uy;Z4K#(Y+zQ>9@|LYo zGuOjfB4eKwTa~bNG^7U$D91;;76av{z^34pzp-}{5iYJi$fUXbqiSgaZY|E>=8mgm z>N~pT!!)+s!l$~&A=X5jkrkf75(Ax=C8Zw<71`>UA2}Ot>)7dD1ve3cMss$SN93Ns z%c*yQ0W+VGzNq|2T08jP?Z334LXU}h@A39jN!<)^i$7D{Hcs5o8**zlTZ;NBQ#d%$ zr&=X2^Lq+^{y@!ldi2^1y&b;3%B9;xqKXwhwu!~=z?Cd-!lgj+mw%jpzEjdyi-L-a zYl2M1B&al{tx$|kgNUq6sDL~TruiTok#a8n1$cPaYNxiyV~ymS9QO%qk?1wg#Q_xj zqtsPlVoj*wks)r2!jj3)YS8)=#yf6dVr(^=L>-=xpaTd010}*S#5#HiqZLD)$S8`8 zHh-TpYb|rharYsmIZy!Is>+)CMEQLPOd)@aR$+^O{2eysdH88NoOvGyN2Z6^M3 zJyBp)q+f(DMQMlpr3Lx0&&;In%P7DUE0^qF_>x)B3m1e+Q!ff*1O@{zezgr(4y2ol ziEPpE7K7;~EYaO>@|y$fs4C_*x)Hl&LK|Rx^;AY-ec8^rBTO~3!f}@`Ii~)&bxaK>4zD1rLpI1i(^yQBb5*I3yeD!Leqo#7M25Mhw4{NW2GleJ_I!C zJ5{KVgSSY-AF2J)7ppsT4v@Hu2Yzd}J3e^b4L^)7Uw1kn%={@G0pn{LHK%skprcz2 zPeY=&hi2y6oM(D*j?$GjH=v<>$1e2f26$3mlOA-Q+YVa$?3f9D|MauBW0$~SF*#k% zg77v3GD942s=;(>UR?f!8OYUEvl#?FOS8dkkJlk#U9G4UI<|wbn`iQq7#Ue3c5$g} zUy;2sQv9;4h~-~xqdZX--F|MlTp6^~jGA_=wHitF8Q5%Nw7R+`-;;SUaR;d;vbxJG z^a^J0ED_aWO;T(H?2W2RU&Vdn{td3F88MMOm75*9(!-MSBd}whwgb~ta^I*Ef*nG6 ztt3w*gn7EM7wrp6QZc+}&ZkHN`T|Y@X%F3>h(r|iBD?hrBgdw>p9wAUxNsCVan=l| zHQz|mQry+im{sWv14JsbL1oKZERnnEA2A_J+iZ|d1Ke(2T{*z_nLAK=-@rzLY4!`+ zvLtvTRp@+a(47-@FTQp?;Zlnr?XKn^5VFVWBQ_*H1VQ|L`Z<?c|Az5{nXL9Y zKk2u3x4A|F=yA-}soWT{_{dD>GiG?b{=sy0bTK>QQzh2?sCO#oP|1PSKm6(Uxb?9q zs70n!arR6BY5GmWOjr$Y_9cX_+Qry?YTzZzfC!U9gOd{!%B#R80U&KTIFX;YrHF$j zZ_ak~GUX^`bu0w^YSmEv36IUIVVze58&F!uQ+cp!EQ!t=U8la@(Jmzeoji_Te~ZEl zoAe8=dRr?xHC+}_v`_15LAz{VJicP~Ml1|GFVDi;?6a+WtZc1Hr+EnTAH3{yt@h%g zfS+_xcTL;vi|;<#BmDI0?Gk`wYtvrZ>pg?)CjN zJSKHVooZrorx*2x0B5=|R-c6V6^(m%dAY|QL~61L-Z}p_k7GjHsSgl%@AWG90sA>4wjPG`)lh>G7jQTzCCwkd3G zaE#TTyxCRi+Vf*{G6WpNJxHav0FTze^=19dW@hYzmVl|?nzyr&YX(ZzqqObPBwNwe=4oxu*(D$y=LDNj*dnJ409C9q8~i6B&8q4r&##9RAmB zx7y#VgU&U~i0+>(6~XTW?waXmH$?v$anL$yZYXv*qZJTOrk`SeGndI$d(f zDQV?9Ya)GOISwGrl`lhT|MOmB_BZ=XBZXie_zJt-<8GP36C{$fSR+p>RnHh={fYOv z;0&4l4{`~~$7b!+ha%DoXOWgN zLYL$Z%7({AyzyKcA!~R^X*A}bRz;ReFT#S1@+~6QD_vLT+U6cPcVE&(r@&*V@1^-i z9dfcMJ1o~P>nms%Cq41?!HyhE;6mO6Quf3c*LR(CepvhDAV*pK`NHWlcmhW=Mb`-n ze$;uIw!Q61jH+vI^gjnn5ewhVN4mGk^-$?!>bE4Xd%PJo8_OYWhCO!BTatX_6*V?F zo{E;x)ys%J5V(~h0ZfYQBrlQ8p6{(U{X?2oQy^ipB`2kulvCP{?zGh$-G0^PomWnU zFda{#XM!qvCIBjgY*Vbg_;EX4n(hR6P`vtj0Kl83+WL9{-AGYkyNhT|(DF|R^Gccv z2m!o?sUnd=VEnL%FAI#ov0y4(w0ooO)hA#o4pn)@-0Q6INvj`QsKZv9e(VU{^$1h{ zFXK#&m&wEtHb&lXk9UStv9_F>Kk|lfFs^b(1m3l0Q}7ma_+kNPvWt}mix*@hW5u6$$3yOH#6!$#1zdu5)jc?Xy=uNT8~#FE{ax z*-maqE*uYhH?hU5cQ-Bgm`YaXO_-lf^q06W*^8E|9CU#NsbH?VNcvTu$pdx6NW|h4 zfHCxGqUb2&sPO>?vTg*eX42E24-EUvRW6+Ibawmk<;kp=e2J|is9$wCA*EaSa_=?s zD>^ThDP)O9UP!@D=Xk+xT zY=;hHu74xrk%%PqbwdYWF2))bfEK`yG&uNjq8q({LkG;5f0lu;;kyhfi{QB=4w> zJ03Bct;2=FzeQsl_v~BCfPOkA%m;fgC!7lmsA3)k1ndMhh1m`$RO=pTIj8O%3G+(J zvy4Tw(3e^#_|w={F!Df+R(iIK#cj&A9_Mm5k{Gh)O20T|cHEptcP_wzea5F;77j=Y zECa5wzx#kP`@?M>nCDGCXO!~q#&rl(!#{<-4HTrm-rOwq3fI;u4$HY3x|_uN^%#il z&$Ke5&wb`q-)QJHD*FXQ%Ey#z$v$S+v@4XVm)}c#NPaJczmR3|miAsJL-zJv7a4K= z=)t(V*2`PbGt1>EJgG`flgHo6%3t`CYAkj~JdiD|OfU@@3twH&)$|lHtqM%37rb7) zgaqZP%R1y(RhoAMCBHTn5%DV=c=Wl1gC*%^bVlxxKqsli^yFZFE@czgrxJ_{p>zv) z<{^R}ua*%yl`AyP`hm1I*1{r4o(A>NLZ^jXxGon?jRYr8Af0Virfa{b>97343C8J! zAq{oZ7a@U z)gfkU$E%%?F*CW>S(;L>{gK;d|R8UEy!RP$7Kz=v(@LO{|B8=)UZTHR?|7zLH_+6bHZ1;tO z_IEb~-27(p6hsc^oB>=SefngNSt;PK?Yozr@Da^dn&U$5+JhvHg(?_y-bUw=zj@4+ z{>n*!GtX>46qFC~)f)Wv^rrToMKNFT_-$r(`|q(aZ|t*Rb6wR$*Ogz(;QRqmx8Ly+ zplFq+pXY>+2L_wr&!ZTW^sz|uN)1Hm!WCG;L)ZL!v&EdIFt*;6%1 zg)m+juvbRZM2i&1g21rYn8yu*tkj@= zKLqHkXnfa{Np>*b`xJFN&%nn~IBcRsyR5J#U4nsIs_)vm8!ilAU3Ia+91OEbI=1S2 zIR~^p<4OI9St#e)9UHp7@bcTV`*K@*&~*1jObUWBdYln12 zi9~!DYSS_k)dpO$77neGaBFfQsQg5xEr|JX)PYP(peVuu%q0wCkhM4$3z(A$7&uDoeQ!VmRMCxLFeeW{3*Ft~0pkU}j{N57mtKurqucpK zu1SlzurK)(mnmZS8V7voy>&`?4?jsJrmowAT;&sfLFRG0o7dyAdY|@DXUx{FkamFH zoUTR;6P)lU$US$bft*q3umF*P=Q#u&9UhA=ymu!3s*{ROJ9mP|wa)bAAUjJ(z#+7b z2|3g)^gH9pVfyEhBZj-fNcQx5doZOOS$dG=c0Wy?R(Q+d`(+_3kmf;moS8%8(2?Y+ ze81ZWQJQ}hfTCWRR4y1n8t zKdGA$QALHRvFK$h6Djp!Z{doYAgKDL;$yZNA&}8eXgVY}5oq~3@8v;}wx$w5)m*tl zF@LK4A1V7*E!$}gCI5~GPOFg~UaPucdOjL@C#XE%p)&r2ms(zP_+|Y_la|z|OVfqL zdn7ZiJKXCKrX)WY;Q^;9u`^SAa3mj;3q}Cg9HZFc2OWh5`#E~x+_2bk;NG(mN8twk zh6r?{I$9JkzYV(Z&XD=vC>O!p4kzi{Oz>~Jeo(}96Up2o8=!BI!z!cZ2@FmSQ7FW~ zCZBr)tns0%?VpdN)O{^3V(NRlFY*8T@hK#FETNX+^TA)-{^K)o1--D~)!DHH&+-gs zXA&zPioC_3;MFQyDwpDe97>m=@$>97#Oh>Y0O!9x2Sph^EzRWGA`k$-;$ITaX_@@Q zeSJX>mu0Ulm$@2s8O1%k zhBD^KQzL*$9(piUy6);0p1xy>2waSCt=cSue1r(toRSx=zUw0(g3|XT)CW z&iR7W{1)EJ1d_o*Y)-y;PiAdvj9xaOt!0eIq~Y_On#(lA`3w2_%PvV~S6V0|VPn6n zzASsB1Xsf!b=}g+b6mEXKf^`0wy>zwkrV`#{Bl~jSxuT@d)XkeGT|v{7aIa@C5?EM zEq1C?OQHkuAXb#GIwITm16)jq-Trs&TAjtoX^vU3RFq_r?kx6TrI`Sqs4rKIaBH-` z8V;KZT6j7ZI@28yJoz$WGi!8na$u)#GBLGpX-ChgLbt%GGG9T)T!|!7t&Fp8Js1xi zVBPYINBV*gYAb`4wWAKB5JWS&i3fDRcM8u7K}Z%Az)_U1U|twD9yt2>XrohXcr_pk zzXD|8i3N?P&}@tFmwyfJ|7`Axd=L<@6xgIu0S(~y-FqFX%ylS{xfWF{AYm*V{v2W% zcQs&dDbCZrz)E0C#5dsQGpNe|2lZ2FWq7j;l8~znrz<+t%iHv@vSgeF0VNmb46qIK zACJ|nN(e~n=O%P>4|9k@l)7h+wQi9DLAu9ZB{)tl>v4M*9%+fdg@dq#ecC95iF0#G zAxI;y6!vZ+8ZAi$3yBb4h5U3r)B6SxiWTSWSIcYrMrQ#`MMmwwRylG^Tk`EWRbN??Z*!hcv7@8S->NOGcZr*ET}V)d`oq@g5|@oiBzM zA7746`GnbFL0^e$Y5<69sZ5J?A>N1EsoD40hKCJ&8yjK=>Nc7Af*wpIadR%_{l>Qr zRZ8s!(+m1ecLF<(s%^N}&*W0qjdXa?RQh0LvnXN|gz!Dz%&6cR=7j~k&2r=)6t@`= zXJbBdsDf*u$y=XkZ=r+XWI=!~O;cKn0}L+0ARE4}!JdAVd;KSvd21GEonu8&ln2|} z+jj>Pe9E_D)wCEpD_-zUHhD-D=A-oD*MvU5YwDm7&da z#BRr8?*0bU9WQWT#Ra=237$Xuf44jqzrN1G<&k_UOhn6ktGEOtp8qHI*LAz&dP$1* zC*HnJ6R1);|sbB=ce4n~GKP z_{enDZP-t)vhjk+vGUXbuE|J8b=lj;ny;&S0Vb@z(22Jy=pP|J>-mcXP1!eE(FtN6 zZYMvpE!Na*A>C%4(j${JeXz#XUh|1!i2T;y>)YYgDmBCa)IdG3R~eepsfZs9;sVXP zTu;&Mbgbn@m+y$A@#x`{zjw&hdE^=06oGB+6=9qwA(ay=l7~)xAs57FZ~Do( znbUm=Q1vSHj|x*;QcM`|l_8vD4dHOViP()?Yr$}%Qp{Y?W;(jfAVh&NTQ5p%VAp}^ z)KRHgX!M140_sj+Qn&}XzU-f2b6-Dou&^yI*Fy==|2HG(dK7uHPWZmp^Uqo z)oeXoT=hR%uNXAs*N@Yx?l<_vuF4}VH23a2CjV?lTeztV$~xyacsvbw&{ZO>Ma3q> ztjBvRF%`M4ZYgzv9wM6AmjC)Lb$KJI4?b4Wwd^~seoHpt1)(yl7r55LWWEge{(^oT zkmQpXaGU{N#1B>rzMTpHAWnmDbi(^dS}nRTCFG~xRl;P)>qQJ5t-8x9agjukd<*yn zgDjiMefv&<9`o9A#KhY{$-8fbX_`D$$VzoYmRdQeh90t(&L}X37}m;+oW0jajCp@I zP*-O~_q$g4Z}uMWSiSB@_a=9Jh>33C&lr5THcIe$VX(;o3HgfKtxuT&|5b13@lQ9s zzZqjs&N_|`%Oi#{qA?wIcB?oHrBs$O+3+BX%s_m3{z3KOmxS8Tm>K(+wX!D9@mc$z z>8}y)lfSisSMm0H-Rn*N&gE&tT&1W#Iuxeu0&edV>5f31TU1;M*0-cgcWzFa=SE6f z`&E-FaH0s{#m;8unhNM(m4mqpWQzD`{A1^NU;(ZHO;k@4gH5 ztUXsf*d&=P;a<(Tz~R04>#!_`V23Z@p0thdUXzL2l4O>hLJhb zNE-2$C?Q@Qp|c=a(6J()sMVZ_fGgmrf50@asHZcV&m9ID*oT+3{n@cpFTVO?9@dwl;`@ zlRlTME0JqTY!nDL*l=|A_GO$R)w-U0;yREkL^yE~yLr2p69mw$-6;uqMx8E`S011@ zR~SLGK||FCp^f%>jTVaUhZKAsI!Ta8%;d&!za)zeofBl}e$@W8j4&>yV%I@_=uunw z+u8O@)BXOYJAs15d-;BHlg9=vLf^R1lt9d=H%K53&rV~(5P)-L`39K@V#<;W!ewD9 zTjzWLNx&r!MX8da0arUaMjXWf=q9l-IU)1Ff4oEMg{H>fgGj&+tZ58y!{dur{?=Y4 z2_D*+&K$bu%`d}8;)M)fgI;sUY}H(`P!>f$h?VV;9Nb#;2U*dT0ByNaTr{*Y#VM61 zG2L_8W|BLu|MPB-sB3O4Qo%c%f&fsPc7JGwQ>;(ux zq&D=6)j@5yM>W^8zps3gew*{_*+$%j3&O82^nNSefI1&;5aGsnuc3M%e!0}kskJ6{s;0?xDr`D!j5VAQ zaYUPY-?}}dWl_EcLS)RwIOf{aU7FtUH`{q>leQ#hue{g1YEQw6lERw zKgWwA)IiXJMHh9Hi>swmG3wAq6v8Y4wo^dNmk6{bJ58lg3Y`grlz0YnhS~5JQ7%D( zOajn<{J@1UhhleujLZ937xpi3b69{NYd->zjmr@+`>|dJ1TOqxkM{;!6|@}gD2u&;SLUgQw$sc>BWLS&_S)rS4B)k1Clmej(C@90~`bgSkzW2V5c6_hgw zeH)Dr8D-{_fu!>_gcrdLgwGj#vEM7aj!2^f=ya>5P$4PKmhae9xu&rlo$UJguiGAxb)0m z<8?_68mpZ4KN*=K0aM{!1}^^BU^8$L&@K{qFZfA|qqv}4SkOVo_p>pa=*ggG=UI-P=Sw#+L?O z?P?w#t8K`vt1m>;0rf^?G^hWhN}32?6fi2X2~c4?QS;wc9ZsK1qcM=tdQ?F^woV8f zd^sa*wO@Wpf)_VNXN`9l1WyObL@?luc(!s>1v=$hYE+Vr*`-Ih*{=rer)(K(^JALm z=lr?bPWJU#RcF_x_HczoYPY7qol0r9JH`AaEXU(~5MStOjSGAFH64W*_QJU2aWCM0Kl@XA@Et1JZBpd?$4_cuE8pWBs*{`xHdnOQ7NdY=!aQA+ z5GU88^c8}AO}Wiy!g)xVMYPV|ck;)=k4XMDuAh-J!GiH@KUnhiWUACe zQ!dBNuR#}j&1RPw=R1TfseY5pXj7mnc^djLTrq1#lQgBS9rt&t34ph5{z!40Zw*N4 zO-Jg#oYTZ8rO(C~wG_D8@H}rlH$8$i+es9R3cLhRgJ1!vF0^|bG&Am(zC7qmlVApL ziFf_)fWOB_OCF!hIYtBYe+3Ta9fv9$7h1EJ3(*QjWZiGa90PPc_i8*6Ey}%a2FO5% zZDy-$rxHKoJ|ZwJThQ3&e=A8|nha3OXK6P(!n$%GM_}!3q|()cM&n}xm?Kl2bcf))Rf5)Qdg(Ue-ox!zB^BroM$MaUipdE;-rlg*l% zj2rrBO4q6?Jl5JH@rUXAJo{&S{L7!Y^tXv{>zVRVPBCLafGS9xd%=hleOk$KDX2bJ zamsoR`j_MFZf-+_08zdJBrCuU5L<8m{O~^TD&nKs#it1cZ=+xt6OUKganJ_1V4TMX z6I8FcVCd1|UnQUY^DQ=|YYze>au(c>G;Y)5g)9E{E-t%8h>(n@!7EGP4yAHt`h`vYK-OkOpJ+@V+-1|%Cg8Uh{3z54seEFiGuIL@`t z0lRez%;*Fxo{nJBdpQQ6@5?vbQ7Wp;#ki>BqDO^5Bst!Ok9Wm@2e7e~8vBbQ)#n#F zMV^#c85*y-rlF!{2*%$*NUPXQr-`HCXU}%?f49EfgRF}myB><`>G$%VJJv6)D|wey z0rUdh7&%iswPq#}8dK-h2j6`#30yxizQg4lf0h&Z+jN85XE_vaWIAl7t)a+ltEh1o zFD%Gx*0syCo^+Z#PWAVeyr>TRi=DR5Gi2Hu`_a1o=?(xQ#5ESYw& zdTyParc8dtsTVEpgUbTNFTgIeD`OcIXn5a(QjiRrVCt^tTa3ogzRc9Hkqs&=WyVST zqueMP%Y?txL>fLGX$Y0=AaRmSvJxBH0;eyw<((RHUz(?-5ivJ9o9z(~+ZONv}VgrgiQ?O6b- zcVRQ4ZDb?^P~G(fiftTU<3yI=4O2(n#vH6J(ti~3G>y6|xyxc$o19Ti6nWY&=LICaBjK9-imrn_Y}(rpSY;t!vHe7hVEpulU9^Me&qPLV4^o=crN){EBa_(s1A9-Eju( z^-B14`yvsgXPNs0#P0P)r9BOhuB}#Ij#@Bl)>wKFBKs|i65-}7LYlajd-1uU>B@_T z<8g$-1=w>?CbHXi%I^+!W#e&C2YsF5E!+KY%s@}3c_0@g(NWjh%yDuTShH@jo+289 z4O)bDmK;|2QvN{bF$9jXt&bl38A2iKN&IVp#W6u@xiPCq|nFZ+)T=QK#15 z_CWz8Q%mKF5L+eNjPFgL2!72+XUpbfMsa#ZkMg^AGggoCJ)o%Cqx@L_i95;{1*!>> z0E9lej0Yk$+IquqIk8w53q#H>B!Nn!{e^8Lya9wN65jD(R5BW;17UOmh&>2J_pcZL zSQ@|y5dv^)bl{a8mu;V$m*B%ve4GDg1#d7lC{YVAOMSZ%a}HudB__ypmZhmD6Sx@?!KiZ zT*De?{SI?_7xiqTq3jF@sY#rT5YeB3WTw=c6lsN7wH0tMUtonOF-OEZbhFyqNZCYp z$QOg(GHPlKP4~QFTMx!~+RYD%eL%D=UJJ*$vV@+`O#pe_l8GQA&VwKK zEeQU#%r5b1b(rBkf;>VZg%GLR^~NjPGQc(5zfK+ynQI#D-0n`&d#k6D`>wEtrODm9 zo_j0e=*gpw5Jto$0E*$1?Au}CWCa)ph&#GB5VuNzD?zmP_C=2OA+R)iF>Wh}bj*;v z3}h>baRtF7Ft1@B(%2h~vrC$A(NZ1w4K$5`7{Fzq|LDuigcAqzC&kRrb#*XEO2A5g zH%>3F$1?+`-V%rFEE}(^g7jj~%@6yT4|o%=COhDfx9)k~{UK*5FOQg<)}@*oA%%`Ye^PGr-P#Siu5dv`qw7te`+~^UqSp{gk>N4JHo16Z%m6S0Oud zC4lDYoRj-pT$fHx+yiu}uB@+&_(v$!*iMsa@+=Z_v0l2M%G!1?CK?jODQwv%wuU3Yz@%a)Cx>@N;sWjILZdJ zc}Wt^ZQZx?O=0m-X&6`AuVTOj(1y$IwHq9e-q8=Iq1X;ppx4aZj&wx5pDY=U7-fPM>Ivo;9NKr6bC$%6-!tL$-;^trQ>;p?Auz|Y`Eg3@+ef~YiSDLHPa9!tmupbAuSkrnA%9R%IV^mubZ?C9I*{U-bfs7?SS7U(QQ$7eTJuG ztt4ugoJT=Gk#EtBO0{H#!Fi!T=x1UyCSjP9yzgkuC)|ceIgHsJt5D&b48o80t;=NS zw*{^1=ZN$YMY~~h>9YoP!?xVy4U6SVdcAY}^#z7db$=#FI}2XRgPz^yOZn<2tb zKY*nHW}?{>ATCf*tBj*hHarBAYIiPy|Kc^@{{4IjP$%+{{(#HP_vMZ&g9+kxsl>H{T7s@>&$cfG- zEX>MSIaogh>t8cdNJQ!&rAv&Tp9cHt{-v7@EiC+&TO^)I7fBYW0SROcz6&{tB7VY+ ziVTna?nId>X!PJX65qcbiqFp&e_TbchyB8Qj%Cfa*DCb(br7?vuR~{lAQl~hPtIeH zQ-{B-29tQTZprC)6%KknGWI$tcNN}%zM_MVkq`?!uiDy}0Buq7D(~$}@3LX)iDiNY z=PUAZn{&-_U)h*s8ylmDK?`Zk;J0aRxG=qYOO&W-iHXs>C690IIVgg+UNemki>rSf zRA!PG=EWXT`oZ!GQTk~Ij^#{hCvJ~+9AIj1#u4$E6H(ejBgD;jO&2+1#$SickJbCTzyvAF#91y;P}j*B z{x#+tqy=lm+<|E9sC1_vtOr4{4aImT-pth=UYZ-wt4DtjP6;_%2SlapX-kwRJPeAD zHw9Juq2+@}ghPSFeBtD)cQcqRu!Tc8{JTm5d%PR@tAZ9ca+aY*LcQ*{9itc|ZA z>OOQG{tc5t3Xz^$mU+m5lJ7ubmcQQO1YB`8Y{R{g64p5pDi?4Z=JxTyIMhpToLCR9 zWDF|vDHn1tqgCtmC9wWJt84L0T{8)dp0jRQv|JxBPcQ@l4u#eR*gKVIr{3`z!%cGtq&52&T-W@ryY7&D~PT1_+Shm$Il5xm)xf!1)bCINT3f=ycLu-9VA63CSp>NQ$3wWNsJ-SeZpH^8 zvNQm=A^?$w7}o%&13+@eu(Tu+=?6C3rW?2#fPoJHX{fo`VP|k*093c#n}Cgy7|5Y| z`co0|n~qL@KKIlt#Q26_&pE5%;NQVGWC<=o+v!mR*oxwrd@H;9wYR*8#L4gTtV(N} zgPEl)W{_IHQ{vGok*{}RsB{O{?Q!8j*c_xb*Cer(6UDDLi|zA^WYF;Bd-YcmKkW6vsE1-w><96kRfWL;N3;&vlM7)=L#w8+Xe+ z#FFLLa(9=4Zpq{g_PyE@aA8P7L%2%7ZLo%Cl!(wy-n%+sAZO}g5^qvLw?A1K@g;5Y za5M$qN61qKN-P+x4N(Q?!Kg zGWTaL68+KOUChjI)w^rr3P1qtGp>{ImThsp=O{v~b?Tk3GQU}i_5N3%T^7&OvQ4i0 zNXV~8y%q8cIh$@BO0N^j5ljZ}5=d5yi8Np(aq;vuQoM|wfnvhKfsWag7k8G|TYGO9 zP8Z}KneL=kee;&jdSM!75TJVGhKgoWyR00$Y5tV_83(LD-K4#(02xg>V)5NaG9;=`S?;8G>lTaPlqFnsXYQG1`*|)O7-B=v|=vGsr?Mo2B{Z98TZOW^t-#mDwTJ~;N9>DiRu_|4-jtMr`cu31aG`qGajnpg5%7Cf>A}?bE9-6=smwYjV zE_BZ|ai;6QbfKjUbS=6MD`}4#wE9qPVH1?UQB`Yeb_v9^r&W-EB#<|mD4&yab#l5k zspU663SL2o!zfMeLewKf2BnHsYgtfxjF!x<_^c_n-TB*j!eY@jAOd8vr%hC>av9TS z)M-PtrdWUC6?NYeqWiKzAwJ6wIFZpo4ny~r4n-6*A;Gfe<9s+*2Z&?W?VJyYx9&-V zeG+WjbLDaCXDNVor7Yj#{ay;(_|6VzlM>w-JZ}qlu-Mc3t#`rEf1K)aF7xBWWKP1q z68G=GH^8MGUP6Qb2YW}%ySr=WfRj#uNI+)_fWFPHApL>=@rxsVk|OJ$2U5E%07!?` zow&`>4dckWueG)@6<}m85+7M|!lxdqe?s-ys6EO0k@FtG-nVMb>HYE0@dx+8HQ7)W zsGgRxkkwuJU3k32jlu$iD7OeEg`HAfRn=l&*xe|II|aq;5PB8lb}X+OI=4|z4oVRFgG$Y@vNuDiiG0mFO+{YxaN#vjmni_>&YXbvD>Z#EUzm^X|S;OLGPGnv8VOk}^HY zH}w*7sdX(OcC!T09G@ULdCiB2ST%@a3-ytU!j+)zW}v2bs?Cp zN6;$FJU_GWi~ay=Yc@^b=B;>6;_y-=ITLrVME`{T2i?%{lZ!5%YHu7tsv(Z$Z0(4Z zcMECz750i=$g&NmwDr|>ju7ufLV}$OfvPc+?MA~}12fR6Ewsc}C}2=JFFo7Z(OvdJ zJV)j^PkrH8b{rc4V|Wp@Sp&MBw5)t=O-5BdniMSGXf(F$dmTCYtkpDzG%{9_oN+R$DM`IAL@3_hJk5NP7jCuX2?3_xn_x#jq zAeePD=99Y5IMoI1>rp|?#Y?&W{IVa{&7T?nYZ5c;vd%k-@fT@(^w0&`6q)i`2^S2V z!5UJZg@8hVU|Cg=8Qc_iF!kG=v#HrCeEXGEwY1<#2V81BEZcOK81B5G$46*fEuZfJ z0bdyIFtC~vs?80}=3n{;kkuqgEPQgho8C>qFueYI{4TY;8Y7iL@oIf+p zDDL-CeF3(I&##K6V#$G+`!Vj}rws_;`_}@l-LLLkr&H3C1;p+GUlQN@z>iagk2M8f zLu2rDA^WC@30)VQ<=6PN%HAc~(HFPvb-j_JQGKc5bRvBE7uB`3Q{Ux<$m}Qzn6{hh z_wNns$enXh8&mN&%u@ z;GDCe2}z(%*4Fu^i4cq}^E-x|o}ON3M0dDtlkx`8ub!>`JT9(?hkL|}Af#yX89BNm; zo|6M2iM;A7zD!?qd;iegx-9`F|GhwagdlYMw~^ih@6Ua!$NwS+3iKe=6*~TW7k1nC zSV+PjM%P-7%C_GGnqUW)LxUBCFL}^)=Tn~Tl7T+zvJOfhWv&ICoTF5t2Q!T5nE04A zw4#l{H8DqHRfg4%7(Z;*%01;_)Yo1MQY|$bI^}Rij^l4prnhM6j94$A>W8p0bw1Qd zURv7K$~3yATA#e zIrt*|y#SsQ!Z^SK?q#y$AkLHPGv)tHvRx0<^ zzWcfE|1~DvbkF{P-@8GfUWKL}VV*IraGV3jJLebl?zqdRgneRG^|9HfuDW(VdTM$4 zU3l(KVMy`eLV81D+sI->i7o|Gy6pFk&kaXrOZZ{ceJKJzUke0u8a(ap5GsG-ejJ`^ zooSta1LR{kdu1;-YwvE8vPOw*r|I(tOfJB)Ln2=dNWpoFqN_fZ`x>gO&1)U#|C;9Ec4brW-_gjG>oy~)Fet|Mu6K}%(I3}m23PO(c z%OG9ja_9S3|!#W;tzTMkB`>-;~PHkV5Q@iAdw|H_y{MoArOmFy?a4V=^s(z*cIc{GZP!Su4`E~-WI+F zAM{BBV{#S~nInv`TbAvJ%X+rK%ul4*k@ZxO0_(hrG8=J=U2@_gSbf7O(pV<7p>I6v zTG&Yj1)s~-teC)=XK1hGT)AO~Sl8z?B)=gth$~OB#`r&?WveLk7g-R=}1u3)ympBga-c2KAVQaL22d*ET#x4t`4&=yleqpx)J9fG&Jymdo zA_-(P5d>V%(g2Umi~s|cbV+PBlq>HjM$Vu>Nrs@!oNl9k!{!Idt8+G@nfpcv5nMYd zH-?~m(Xy>OR@Q2+B>*H2np+fcdM^jPy-e@!?j3;9D{Yb=;OUp$3o+?#PVKe(gTQ*e zQ~~B?wB178)%2#-*$mx?-?u}L;49pFRwi`BEYC+AJv?^cZs}OjH&C`?B}vqgS#JbA zy}a3-)_{x3`XPLEBIc%B7E5^IY8*a9D-c_^P!--fN9N234*mexRA+>^`k@q@BW7Gu z-6hkocRec)BkS1qH4TZ(suwKMYCDXLm#zj=6HMW56lVzbOuGiwY)o6>N(%V0XsQe( zfm9|fek?B!`om=;zAVG^M7Pl5nTRNpBJLp(VWI?+q!&goQHne@KHK?)0dlHNLmTQo zTc(sjsg!V=^IZrac)C5;$6Xxm5n;{=R7mF+ZC)g_FR)}5)lnuac2r%{ly!LL!8(?Mz{SWcwT_V6=DK(bN zk`yv4DlP26edoQu9{0A+pnN!JA& ze%e|NcZz{|)ejVY6qhZBdK-hoLB~&2QwyPukn7;Ai7s&J4;b>$Anc!*8;ULki}CK!A9#ou_}GZwFSA++po&APvlj5$ z*SF*As}deLEFa zCx`yJp@ROVo>OxqA#y8%;uHRNS8_f{lzcrp8;fZfn~Or7Kd#_+y-uE1UR|}d@vE4- z0wI?Okogh-mI>OlyAENP1Nih?!2e1I8f zbnhI>Fbe|@^+(f%HrBeVURf7{ol(u29{9xi-CVi7AH0jHgOgfDT~B_<07cgty2kNW z+Nk`?`)XSSexaKJefl3&fIkdNzz#LH&NS=QieOQZhDuUdKOiyhKuLjjS;4|TggH{t zIofWSB1J z5^@}{BHlowgTSPBYs;Z9?nS^|20^(P{#%v}N6C>(8sR9kVvWwbEvFH=jTFY_R8P%z z3|vzo;K~`{Gatf@HaZ=PBhG~y$%r01IP&qeeGBm<>#~R4AL-*j1j!m`Owy|>M0|Ub zKi&oa8`;J81)?HeHNZbcwClbNDD4ofsDwdjyMVx#1g3D(Ee!u?Fm`-l8kD6{wdOP; zvS^i8kvMI&xa0N$c@vi4i^POX*wumSmIREZgj;%&j(m=#MtD?V&!ztUM44s60 zmuNA+FVu)RgUYf5bA64N90e=4Qp|l?4J1{035cTlUi@R_XfWt)cSW4{y9C)3$YuS7 z{s!$#YBr?{{lJ9;*X=tIFX4e&5c!ObYKWrG7VO8Y7fjpQ z3KB5ci2FYC%F{@F;f9glQcaE0vUbVB4!;D+;laDj8+RWhtD|@g3KzvVe~Gs_?Xxpu zAE+MFIBX#^ByP!GRetQ$qzGpadGt8j!u4TzA7=8?9F5s|6$wPCh83(Qw$&-%{7VIq z~G!R zWH+E~qVuEDhfk^j3HLh#NrqAws-dZj2&(a-JRCc5y&3Ndi?96kdDdLSpn42iA)5B6 z_Fg122M<&5xZiBUD&Aaaq-TeAg}yChj-=fCpsYlC$LgefEVc0?#@C_S{TnFSC&2>`o3B@;j22T``9SN)j<{e2<(% zPg3@V>wpQlaK8$AkdZQ<_TZ;uCYYzZ=p=%5EWgaiD9qI_ht{FwHQJ)s0b+lchGL=O zf7*@I+^9jly)pNmcoS3#t41HrH8klh^ji&(sCok^MZt#0S!;hHRY_G;U9DmqCv>7Y z>QvGA>W%014rS&teVRbj!QZrq^?du)QR$xC*#sM`8X9dIolSGRA6;iR_LjZei`l5F zz5)*XU>wc;1cWx501K5CvZ)?GI{ux)Z~aGD2<%>JSQkYFyffI)H5yY? z+DJ>QvMK7#PDmh)y$RuP;yWGYCY0$Pi>{oqn{ceHTaGkD#8qYK_`3+6^U4ne93{Ii zgPc+R(9ohaKOw$tV3bj&xYm?16LRsvXu~n7q;8|iJ@**Ob7qimdl}G+vh?3zXB~>u zwR_A_>!uie)ID+J<3m5!bR`CLs4*@qged*7BZ%jmlYF{6j58UfyyB$f|7n&u?qnxA+xqYQ4OhbK2tqI2$0@Hr@QYVaJSfbQ9mufaVl68uSB zE2}wRHbn66K6vWS`x>A53#WWP107436Khy+O_y3}V}a8vuHRrmZ*xQ$pTq&wqy#`s zmUHK_RmY6|!>hFw*vYM6jHd~7ttVket`xQl*W|c^QF|W7xdNvg(30H8;D#rB^os%T^NcBn#D(9A)zOAMzFHOSePm#x!ta|n4~_&>if zdp90Cl)1C)Gn=kO&+I8OIOl%*cTC0l>g2G3mTZV@z5Wg1lV;(JAm{UEk0%|sq7ZpB z2K%v_K4;vb)8K>_(6Z{mI*3qAKISBOj(ZT^%qDe#mm){>&doL)lRX@S|CsyT-IxC; z1ea0gmmoF)VWY;;B>**|F>3((d9`dN_+>xfE$H zr|l#1UBt6hEA7zpadCNiY&7Y1T0lyX+tQ>BXzkm{&^UuFm zVJpW|P$INzDtLiVua5l89YH}WpdaKJ1I1!S$sx|dwOHqy0judi>{p1mx~_55M!295 zpoX?XTly)A8-PSZWMOZrZZ#iEGI2|-HiI6l2(%Gn8@9(pc=btT><>R%aP6ks&nvs^ zE!S`DHbVu-3dI~bli=X#)w}9fsk#{FWwucNP@AdhX6AT`Gn8;Ado6-M=Lbi*^nG%6 zr=*^V0-run=4RbCQwOf6i94~}=!M@h2gFmod$jf!^=+9?!`goU4)I<68A;lu6E5!E zVXSun0%byr0xV%Uac*s07soZx>~#4rn_2KZW|{M;0b)%jd?C-T++G%Gq~S^BQdanI9bXpSPBN6vp&!n9wySsW-o3{pXM#{76i13pA82W}_`9Jx!2Lex zdX}l!{BLYsVIvxFYCwZAZ7-x`H`kr_Qj4b}#759PxAT z4DjR8MeOp|$Kk!0Db2ZTm9a2CJuBg-xg-Z*^4i5%M;PPA0jwI#0F+}G)dAr4Hr}~{ zv-Xh_EBBHu|D~TaQ9F$DZKUz5Rw5_IeSUz>^64Io9b=YBM-l!iC`haGw7fvq<9%y> zt#Cc$o1II<9l^;D$0cuzG{Pn!fHD{edz*U*7wa03)^J10e!pT)4TYeFhOZl+aIEhg zhQXDSP8N+7&H0&2YP?55DRLkaL!Bz0vbZ|-aW)VVL9?%r{aJjc)rf7_Pi%C{8eVBQ z5@Q<-I;jRLU8Aj;w_TqDg@#|lti*kzjpWoGpz#Z*@5;{ifa;&HmmDXn-fdWZ?@H_@I zk!U=QmQe`1Kog(X{L9-=TnhinJ%aD6X9WDQERVAKh0?^s`&!L!1|d8#f^If#VwpBJ z33Uml6Fwv&*e7cF*V=|f87v(DVZt3G^B<%l-kF$X1P7W)h20!&2)@*?#Z0K-*Xrc9 zeMT|6CC5|P&hi%g$T_(vUm$8Iot;sYRTR6tBFGg7jNM1FJQ;9PnELJ!Zjmf6(Fc71gs#NFP7hX{+qx>0PK7kwYhc&$p!~J;Ko4V z9&y=#hD_Ot+FKvSnb+j$rof_B=7-Xr7u$MW?SjEqt#te!3d%q~P#mDa4hH#IRh|gT z*S8d8E{rC(TbEd;$6Q!@nS7ZYimrk>Nhu}6XztD;9}Kl7Y5RUc7e^7@5z`88O{2oBT6i1{xs2eiTPpl#=#amRACg9Tg8({3k^4(pdfzP{c^ zc1idlMjBWZS8UU}I)EIjruz5gW-i~k3N7-K1q~j)=JtVKL5B931xElGlfLkfSA*7% zi@OUp(-J$|Vq@irPKjp9pyeV4?Rlp+Ic=}PYc)b@vT(Pj@+|FbJSzNk1ShsD6lH!+ zf3w}x52yw7H^>?7g5-JMdUT;#v=Shred`O`HEVGd{S?Y=aNv>08-JG=Hbve~Of@8; zeVjij)6m;lHCupotU;>|PQn;1_nD%l)z(`}tX{2l4 z0T3ok1iTslFR)?@=tcn;MUeXu90-`V#SZLn%6e$PB2WflTeie&+r5nIrXaszj8^1d=zrVe#c0q<=`=Fk3|7@+>*qi$#c7KUoR=b+L zYq{Im0yR`l5O9b&nT(L z)UTpQFAo74WPO6^h!g4wzf%@L3pJnu$Hf8C4^A`4*xX;qe zeMssAc?njg+&oxS>r$tUJkx&0Hf)UqEq_#0Au7HXP|zmoGd{|SAD|?OpzcYx{)1ha zo)IZENeoi_D>c&1)lAqbxeJZ2(u|lWx5&~1qs;7+QoDbFa25;o)ls=>V~(W1emyqN zI&{DKi%osPg|U$mp|3=>aA{s zZ?ufu>VEg-RM>*M9vblO*nZU$VVm-Mq}Vucs-T&Qj9a zC>lUkIxf^+H2XVTS3%o%p*wj4>{xbw)4&4WJeb@w^wvFjQS{8MPEW|Wk=|sdxa|6G znL-j`q3)1}JroH1F}b z7K=^Ycm74QSNro{vwFlQtXshWW#^T%kj{h~c8Q2?(`3bO0}(04gB&P)lnNN=blgs0!t3 z`mlEZZ5R9y0DHN(BAs^TuN(jYvx)=c1Kockw;icaK*PC_6F5226o(%0{q9$@W3Mt= zpE~Pk|55g&^}`Ak@1Au4mHp|naJ4l*`^teZo>Ma(Xs?Uteyc@S$ghLC`(;wW_g+V|vPhH|%W78cyr$II@#V;lGu1pBcXmub z^GR`7cD87#Nc$+nGD2W7;I(|Xh)#~cZ*Sa^O|&X<|AvsjJ(advREbvi`Niesal3B_xEsfanqgf-+9ix`1#&M)6q+@(!4 zUU=y4-LsYU4_Or7c;|f3%Wm8oC`%xROBIkuZf&f=`!>ge=CV(W=@=!kbAeVpUjo2V0sE0YE+vNh z9JKju=T-)Q?(1Mo5CDw_aA*b-yh_OZh#f?&KU3wGc>sQ!bK5zE6Z`bY*E@eLm1Om3{55ihXAbEM2CEc}t zqa;Z!EwVva`GuAhfiQ`4W7m`b_2%P*_>AT=1Yaf9EY|sW!^vCNx{-}#%rDsiaJ2vU zV-%sgQq^?X>>oG!%9>xZ(+Cp<9zXiEK0b5PEta}wPd_e%{LAy>7w=Ii&9~t)2bHI@ zcXJE}t?y#~j(xU^@TKisPR`N$^#=6wO(D!WfYf(e{BfkJ4b{z`O16@L=O5BKc-QlN z%rhZb=o3(TbyN=Wn1<R>nfc)Gf zcw?-|&01=acxCI95a;y~T!N-l^Xgt@I%$xX-6dXvF+wI{CauU@!3O(=Oi_}hJ0s}F zPny;fb6h|;-t=aNbNm`enraoGSC4BT*rbJzfTec!&o7p``^+ao+l6Jj%%SZ_K=iS; zEM1+Ct_|jp)W+5gQ`yf#Gj;Fy`U~OwIc~^tr=2JI?=k(K53~>1ttMe)H?&TUzkR$5 zz4@fZkL5lTuk+#WfCQ2xOMB%m!4OWy+F1S)oafad`5!yfI?j#VwkgDCZu7YgIJFLa zRSLJ3CRrmgoS&(m84ci+Y4`CNK~F9MUwkd4&s15c+lBcuyQdO5TJ%lsGSE$1I!>ve zKO6;JZ*4gmqq1Qp=f+!k9kFuu1A^GAypB}?yHjM{$5*&0%XoO5_41q$e!*HJ#wy;} zSZdO@d!r%s?qWs6vqzTa!k@~i3E-jQIrZudubZQDoZQ7?`)WVQjvM=Sme&P2r zVzCK5C_dR#WPb4lyk74_qeSUEt!{V7Xv?7x>0NZ<2<3)lj%G}=_rQ{NU=d4TYR<`O zdn^R`z(8F1r2X)XUFl!8EdFF#D&NidkABE`RZP8KqExHI>tv_e{_uV=j^y;kkJT7)cXJBkvE8j%R(HC6rc>WQS&=}8JSBvu zm-6?@7ct}80eI;MuW3>nLRj(MP^Ki-0 zo*bLvB$e=iu2r7|@6N5F+AyL_>=?R1b9HKyEL8c0IMF3)nM<#`zh}A09WT;W5SyN( zzy6DZZIb-V`F&YE|L@GEdU-~@=(Q`G2hO~*QY+ej5J*Lmt#x%pQoV-^U&?+j5OrL< zY_2Q*Pu`+tltW{WcXn`yo9+7j1EbzOq(X#56x=^dM8kUWW>C?j=t}yo#pxiqW<;{A z{c3TOi8&RLC%)U{s=>P;zzx5{5OG<3nyv8-$^gl$RA9-L1+wW55*ljsvd6=86~}9d zX4}idYs=o+h3HnLK9U^}`@9iVycJ0=e0#^{e@@iD%E$jbV-ZLy`blps<`1=I>f6JR z=Otg@?MFU%(oT0FusD?j(IXJG%oc7J$IE_d2K_;)tHh&TJ)GK#0fxmk!_)+abM;!oyE+il_Fznxs4`1)*RDpiGfQAjYE z%lgk7v!NSnX4J&B`|3&)k%QUOf9S)BPu>ZIr(Ih7u}@|nN**q7qW<9ttzpU&bWSj; z89Es8hlkU_j*YyZ8%B@l5Qx+uq-_7NWAV$ooWnkpI<%v9FMTYX^K1pM(e&EvL!uE2 zn(`9xYa*3%FB3i|en?o5+tsb^7eftVcB?Oh1ip|TQl0%-b5x>}Eh|PdRu_$0^zhl> zWi!HfADqxYpUbjeVi1rV1)Q)gpSm2>r)$xTWdO0a^nVZ5f5uUO))ga**5G2_ozW}f*_Hxc>yk&x8u`YgaTIP)L~))as6)ZZe}=dVkC zU(cOzDdt?2{8u@H;@%DY#12KB{I=RSF1Hff&ccH@bL=V)yZ5V^htNz4>?0*8xB2po zLcgp~Z-e($?wbRR%EuR@#;}^ElTO~%1Ym~WoLSad!H4Ds(|tK+Mt{CSfAFvf>O%_3 z;b+9hCd*f3L?@JzdUDBoVF-r&P)+|*0Ym}wf7qvLxZQd>US6+1SnVpk(osQzWhZ<& zDunF*3QiU=lL*Iyyo@g+qQwyM{&!lBp4-y@`?lx=HOw4S1FwDgGutj_PKOQlM}91s z@>379^3=y0Cj#ZQAS8mkr?mc^9{qoh)c>9>z*A!HK;JZOD_3oLu}AFn$s)Nt!6e=CPas?D zE}X^Q15CxLn_%XjrD@F?+dZ|zg~#X3%PlZ^+jOC?FuK5(J@Q5dj&`BpXB&{#&whR+ z<`_hru1^b7se4lT5+v#~`);h|q*&05L&s{J-$sj9x!aYnWKeI z(}uU`ITHVoeE;vm`S(L!jm~a{q3G6eZNC#YZd$vO9!r9P(fWx1f8`&=wv;dY159$V_SbG_4E>z9Y=#nOvb zkcZt;fwFtvuSd}pVwTGn?{qol4<)ds?#Vc?BUypHJR@Qkm6UmT)#PyisiJC2Npv z&_bFFVSxkOwak^UToc^Uckf$p7E9f(BA9BkXu z9KM>-(#zRw2TDbXGK?f;#1q<9OO3uyoe-FiyKjK*OoKb#9s|x+RQyQ-%7l*mP2?NB!NHKpQCQK8Bv!q z*09Z83mVh^uSWmB59~S+;tl_I7uS~{i*1_>SS<8zZXXQujmWcjdHz69975qjlAYXp z(Di7sZ&yb?2#&l7f=pQbfHBTL-d)V{H1hbF`cshLE5IHc?YA{wHw4NTHa3>K{|(A$ zp3rJn20}#YszZ;I0@^??orySJ##+eysFS3EjEY{;1qCV4+ycG9JiXbX{GmS@}Q#xsf#aTw>SH?pKS3F1UxkEH@GWf=}8tAg+chA$v z^#Sw)g9qIP@R(=9_^_zoF+vhP?Cg{Y-=5zh*n~Z@EWH)a_*jR)>YUsy=ytXV&g5F4 z!uUuHc*e-+Nd!Ffw}A5D<~LKs-wtP@K+ZlB8P5L%UTd4v z_1`w?ik|yqPh7p06Xe&ssdv^5Upd3dmhB?hRk~d~?Dw${;2n!HKu&K%TM*!Y9m(fa z3XJ7&Ee^0r{#Gj~Zat=)Qij>y+8i?1+dE0BTxP11D97Xxs@%}>G&O)DNE`J?hkNl@+#f554Dj#v10(CUt-W*G@PzF6lrR5 zQ|W9rr{!=K-*8S=c|`!T*=p#tC!^}2lHpLGeocS2>27~X6Nap~WZq{0`~)pZX`?V~ zCZe3Z9z@K3COFT3ofb}(J^=*(7Y#dUdUX&JR@y=+5v+0W=0Z>Q3%QxWLDP4DHD@@a z^?eZe6s-NhEFeEub*xnPJx^+Ab`*z1;KJ4o4TnhsnZaSjzl0-gp5{rwnkpIqv@rxj zHq9xta9Qs);_6FlpV@RgQ;s&1j*c?R7&OFZ4r^AG7C(DvBH9)Y=(}Bi)@s>BH#Puo zJBRI{{+vQ|uB?(Jc+LI4NAgBv=`M2g^_{sAh(rSbm*~R(>;ci5@Et{=yw@?LaqmA! zV=k4kw9!+u)wpM9kLp<~3Z+hXPKP&mmlXe6>3)5>+Fh%4&6e7E<^%uZlgK(65MIP5 zZOOQ$)X~Zut9Q@7d0#3WnP0gLD9D!B^&F43!q6dTQ_=abSgA_|*+6t&*j+jXcgVY@ zB%i$>=^Si-afwF>Zx<+1DIiJU=*%)^qKuW#_}9aR~`)1@l}Wli5*{mhu$kw zyiD7tmZRPEHKyt>oX8-Mc+5of=dgY}dL%!>>T*61cI*&OwgXuA2WM8<4e^KaCAKoS zS7At-I2RE`nCI2NRkyzQkW83Fe5oOzW7;+snki5Gi5w@=&(E*%RJ z0G4GAg|^i~Kc@Eflv4a-)7n+3jd!0Z{TNNn+$!E5K{0*iSz(@x{L?Dk{uHLV67T~yRI&sY^~IVE}asc z67J?Y1rb*tr=Y>5?5@jVXEfD|S}%zopOcE1sNcHS)g8-tv;%J7aND9u;fqiIp3KCQ z1unH{L6=&EGG=v6)CIruk#CmpHG^7KP@)p*)yW&Fo?}V)QN?TP*Y#=^?2f7# zuc1vpH?s3-)%F8_fTATKVxv!I7APu8s)l@u0nqV93l`n^wvG06PD8TOT|({2$LFd~ zb)2S-Q6~+KcA)I;-0bV!G;9sK;kUQp2$Vj4MmM&OjO&D)1meht%W6$i1~o(e3op<< z0K<#sN4Q;UfE&mKJkaFAz{tI7-~)GHypf&?;cNhYRFe3;5;REm8igj87tEm>e(<2( z2vuhYm(LxyhPuq_u%IHerFzg^KwkD(hH!ZeS>F_l`q$Ol6&PPpR5shMrb|Kp8&DF4 zW&x9@Dvg2#2Lc<*WxMa6&hbUKPOntj;G~G@-MqJM`F>Se@jnp$c0JYA?haY`&*1-_ zC_E9d5EzCBkW^M}nk#N|>x{4Dzrb~aYunw-w>TjwF-zoQIugnzx)$QfBW*WLrqCd{ z!**20QU6Cqj$7w3<}BLV7hSF5YOuAZ61M`%+64TMNk|-xau!Q<2v&H@f~!~X{K24t z9{g^i>5|I;3e|aVRu+S!9@x$+78a={a2!xad*VJ`CPc|z0ePt%{~hLG$D610g~zRA zR^oVuoP7VuSMi(mXw!0;8mh^D_2WiQm>a7^f8wh zbpMwFUH7IqGA}z9RKFd$JYbZG1u{D?t^(Zlz#p4R3g`C zOZe^x@>HGkQ7gd0B6{H4pEWYGjXmw<5BEFuDZ8p6k% zN_U&|aJycTAeOj2KYc5d4@v5X1Z3&{L)LUabob-H`wY+k-#CKFhW^L#asXxuVx7|l z6mb|wumoCCAd_ME<#k`uF!4eA&*vl%AtJ2~FzP9>XDCL!#eTSI}^1!Z5 z5)W!9m0`*F40Y6wP%)6i3+p1b=aQB8GfQeGd;H&nJph~5{by42{1|7{u4`}h+K}~7 z$d^)nzQg+bZ60V-#`)<){h-$)qlOZKPB&C+)^U1ra-S8Ot4GTyrW?ob*QTX+C|VxG z0}M^%jTPPNIxh)L-;Dlh3|oJ1s)3 z1$1G{n%x~!vS;90zc?>ueXyq~JT8U9Ja++yMPF}9#bD#FQX_0O2U=YsZ@;H1Sj{)` zAYd>Co!+S8lr)yw0x06Oc!FE)w7pHF(uaSnnwDngToULSvBciJw&(nX?n>+Gp{hQg zSZ$RS{--`pYSt2Q9_0)oGh7_yhj{7A{iG{*nLlKYeMmse!>(Yx#g>2l%GNYd0L zAg%BIe-jU#`@yRrxLv3J=q5?E0NrGO@Bdwyt^Eup@BP&OCxr!QTxiNSKgE@9P3;9| zaF=Q|+-?*Oz4Et!*FBXEudRmNvn1_%f`MyXFUxWU#&EV}K|_hcmF~AG9~y#V>y8x8 zJ_spXK<9PU`>xsXvaSb81}F)N&CA#m;sRTSrL~;pPk?gxQfk-MzxYkR+^@&UcPr{w z?102Op%Q4HYqDHb2fW_>8#2<3p}em#5Qc*W^p#&W3F!kUTJDW*{JJVZb=p~yY67R ztQdVY6bLqz`X3702ij@iAvf~k%Ybe7^M?URt6jfP5U1BskUX`sH;P$RtL?@3NyZg^ za^rb>SDu*oRH!-5coli=8qdRrN6_N2?NUbS8kquHd@PT z>mL3)ZanoC|M0QP5DlXK5xbO{CMa&-+Y*QRN-$H2X89d5AryWCt5-80%f>}QV>heS zIe%$}Q^-gpVrg5WOJ-ns0AMsp>&C2iD=Hp#+>-1fIK>CpE|PX32SB&^|0uPWI)=3d z8J0hDYxKaB!by?c`b!r2mtZPiEgqKK^^94MBs_J`{0UC{svWX4S~&BOdCWrb0DK>c zU_NnfNs*f|Um!t(lq+_pz(WNBA+VpL)Z~ z5?X5+mxhfZAucGGp(^!x zH)G~<^ULOfE^i$Ze3SFCN@Qw6|C=Zb_F3~nNHNJpY%N$^enxSso1GdPU zsFFFHY3)nsq-~h+9{nWrtanOR9+1Q2@2XcI_p?K5@AOX9LGOROiV7M28WyR-=&9fN znbvYEm05L1Z~aL}Pc+xpUQFMG8`NKTqqoX@%HH30>*gr;tl=mxZEB)v_iyoYg(VWH zwMwhSI{_XuDrG+!W|k6~1iGb<7rj zYeD^bwDW5l97b81Ibu7n*uJ)ORMkRkWWPFp0Jz<{sp4D}38eURVDN}l(y~;*AusP1 zNX4M3TawWu+7$ArKV-OzYXcYs~t+V^_v($4ztcv2tT>8R*=R2<1Pc zWyKQYTqo(!O#O{01=<0d4zLA5|!#kPda76EhblVrc;~_W$N=w#vNS)s@DzA7R?(FQ>Aut#8PrURms^p_lHL(rK(O8 zWd!_v7PR1Xw)a)9?IdYJSX{~f;rF=TK|7;h2uC=MmlgJMQUH(QY~`3^D{a;8+K(2#`8u2t?^jF| zh(m$)9o_eruLUw1yP-5E6fK-*blf~45^q3+s*`-c?1H6j*y>6}7qpL-OY|)N3kaKP z1webxu$PDj14QtY9wm~01^<3mH~#hDD+&5dGOQAXSSd9tRpz~icp<^s;fKr)Rf`ZH z5~e-BU!O9iR)f$fzlnNbVXsHsurzp#jbL-NdL*@fD@)eyoRmW@DBYBP2hZ7MU5CVloj{AQNt zn{9S&?1S%>CcHND3fB^a`0UVn^OH-4(-}K`t--rX7o1nFde3kjBs&UYA~^05%#t?5Q}D~8S|B@(cTbTN3w;U zK$gH3zQ0W7rtb&%=}y7C2V(DoTKr{gJjF&*nIb|+IQ4(aYFz1SA057m@g)is=^{yb zo*($#)Ad6Tt9GGFgRx=LM?+!Mwp3CFI}(w;a}N^=t0|6OPchKF3T4J7{;%H?wA0jI zSwOE2%3VcA$F1*vzFlP3YKuu}4x1tEe*nH2Er{apxfwNKfB zcYYoKv7~<1qLF*|9^-b?-a$CIK;BopdWg(8xwQ>w?X7GN2O@R>!o>c zW;cYw_{!%s>p_A8v-(LH)Md|u;~RikfO~MJuDJiJ$Ddd4Mal>bvNes72eGn=)?1Z| zB4P|}YWO~bWT*+xNM&Y>X1x_4#ugNJ4st8XyQs>5mK31dZ#c^Ha5G0=dJsG`Hq>7K z!AT~bM-0>>k%3R-5>N4f`*EH~Eo$eIdFf?G;jB;%p{~&I8`|FMdQ&MqAO_RVY{fum zX;jku=>Bn|2k;pb2*JGsMJ9sj;f^rx$U&66td>l?2q9d4JS+l{j{VM1%!;@>>bB+B zOJh%#DpO;)LG;R%p77Qn3)|M2r$N7)eR@khcLHu8lbUympWDxl`q;U(Hrl!659_Wk zN$S+x!Ju|QXgK@5FtRlSn2&5CtCy)=s!8`9X@JT>xsxOG# zi%`c!lR%*6$E+3*_Pw=FGl=v40uLufOpKf_`iub~Gw^j6KPO+NZRC_Jn+TRt^P`{lEd~Gob*S7rAVAXdA}yGM6R>f9~9Y7Ti>p>>y_W02%qws zHXvBtvKmC4?PM1EDP7Is`*z>{@&E3h%Gz{0eYN?jX_#CIT6gZ%!gEM`@bF_!XJK=)$R8j(NU1bc{@Pr zZt?UEra&0B{O*~-Z`?DB&2}OQi^D!PGqI5m<|+-;lf1srn_p7j;Le8$9axM+0l$Tto5EpPTsu^R&hyn~ zEKsbr zeh`C`eL`YHuJ|}}?KbQP9lKT+rwKm1MS;yi?`GkNv3Y2L-#H^5&5;z~#MRnwnWw??&NR9i2SD4$;P#;|# zdBP+CSR7IuBsUsjox&Rt;ZR~FvpYvd(c4hM3#rd&KOD!GX&2Hc=bI3&Z>SxWIs?tg z*9~Pv0*Wtqf#}nsu3VGrbz$J3y5vG+30r2NuNfF8{kd1M!UkuGyN9&L6V z*7cTz|C~GraItjsRVYC*E45R!o_^ShMc9~YdgVQuU(W@upB1!Wt21bilh$*5s?qnx zrokqy`VM!uq$JSBM<&YM#~}>sqa54|%dWAO{;$jv#)sdn{1;m6^}|?I(9Srp9Q+7) zzjuZ-@Y3W}ne+G<{Y%I)Ob%&3nPKgN1#?>a4&uWl4pBt$0Qbt683$q&$~V`1ckic4T z_M`~j@XvJII?Zse-r)Ba2~l60imqS15F0=ZV;FY|^3J~E)pfBZ4_oSjEHwV+gepr# z{FXag)P1AU6x&yEHMi6g19qQ&AKb5@9!o?t`lqi@*kQ;6Hd{f}I#mt*2>fvJ(JXAu zGsc(DI2A^ob=GFR6EvW!etLHd{7qScOo}rWP*BI+x#fOv(68BOC7kTQ)+}>{g8=R9k?gv5>mm?T4#_<{3U6lWDj))!c=M?l{odUgA< z-lOchE4m6;(!D{1d#&1PPs`kf zZB7%~VJV4EA;WP!X8RooeSveKPPtd4_cgAp^7iMHdXA<%Uv8#kxsxW2)Iy*4KpXw7 z#0�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

      ~qOad=1Cs-3v+i8g7AIkA*t9?sgB& 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�}SaeNNQ+rY&scw&PF^FVv%G_D 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 ViV{iwEWrQ!+rs7s_L^7X{{xz{w6_2N diff --git a/iron-tauri-client/package-lock.json b/iron-tauri-client/package-lock.json deleted file mode 100644 index 39fe4f01..00000000 --- a/iron-tauri-client/package-lock.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "name": "iron-tauri-client", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@tauri-apps/cli": "^1.2.0" - } - }, - "node_modules/@tauri-apps/cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.0.tgz", - "integrity": "sha512-DgUnk4p/atWHq2HUx9Vt+/LuRsx4iFlkzdZIUxtFWvpcZih2k0TzmHJbrhM1evh1/7a+SqiwDawmyf3Hz1HxXA==", - "dev": true, - "bin": { - "tauri": "tauri.js" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - }, - "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "1.2.0", - "@tauri-apps/cli-darwin-x64": "1.2.0", - "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.0", - "@tauri-apps/cli-linux-arm64-gnu": "1.2.0", - "@tauri-apps/cli-linux-arm64-musl": "1.2.0", - "@tauri-apps/cli-linux-x64-gnu": "1.2.0", - "@tauri-apps/cli-linux-x64-musl": "1.2.0", - "@tauri-apps/cli-win32-ia32-msvc": "1.2.0", - "@tauri-apps/cli-win32-x64-msvc": "1.2.0" - } - }, - "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.0.tgz", - "integrity": "sha512-f3LR2RvTU2ulxYdK9Nc3vKaSpDChu52pz0BMWNrSs3dxs4WTVioie98Ufz+GorifkUp3sYXcJte3HzX6wH/QxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.0.tgz", - "integrity": "sha512-m07QZaAZCtyobrjddfz/Rxf9GGutnBOpRMbNqVqCk0qKRJzHG1fIsLqkgZh6+qPv0zHpu7xi/FPcqTec72Cp8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.0.tgz", - "integrity": "sha512-Id9eF1JtthZRFVtXAAVtSlI3uMT8cJ7LYmCSIl3mAXEUeaPBxnUs1i9X6/J+2Ho3yLEuuOxJ7PaJd+4v8wnEeg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.0.tgz", - "integrity": "sha512-NtfPkkpeMPl+i/tB/Fc8ST2rKO2vV8int/RkOvNGLCkhWcl4sbzKBol7tc4q8c8h0X7FXDcF1l/EOuGsZUAA5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.0.tgz", - "integrity": "sha512-tz+mOOVsy/TMdq2WJVIJl/iwW3OCWCyD5Fls3fhyJ4XpLfjn4G+C+oU0awXD/0se0ko81aq4D+r8eDx6oBRi0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.0.tgz", - "integrity": "sha512-FH/wU+OWZjRQvrq/oequScr72I84XgOuRuMEpt/GqGD341cBJ8ithpoyzuiKsvjS6K0qMyRFzy3eyhQ7gwX+4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.0.tgz", - "integrity": "sha512-nLg30aBT9fI83sjIqaGPN7twbtE5LJy2DbKzxIlw59F+GT8HBdiM/2mZdTLB3AQb52yVHuGB1TVtWDsl0JHqCA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.0.tgz", - "integrity": "sha512-eXtgIgY0fawgcOuUjH8Y6PxwPxbK87Zl9XmA7Q0m58T7pIz+gcbgvtH8Bb+liYHoRYItIhQxVm+ui7Y59rI7Cg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.0.tgz", - "integrity": "sha512-egyM66R05AIbkaUDptpHurFTIYp3VM4H5OrRd3O2b0oXf8SoiXiyrHbQsHVHHDYyytKmwkdNqjdy+Vev/Vq25Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - } - }, - "dependencies": { - "@tauri-apps/cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.0.tgz", - "integrity": "sha512-DgUnk4p/atWHq2HUx9Vt+/LuRsx4iFlkzdZIUxtFWvpcZih2k0TzmHJbrhM1evh1/7a+SqiwDawmyf3Hz1HxXA==", - "dev": true, - "requires": { - "@tauri-apps/cli-darwin-arm64": "1.2.0", - "@tauri-apps/cli-darwin-x64": "1.2.0", - "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.0", - "@tauri-apps/cli-linux-arm64-gnu": "1.2.0", - "@tauri-apps/cli-linux-arm64-musl": "1.2.0", - "@tauri-apps/cli-linux-x64-gnu": "1.2.0", - "@tauri-apps/cli-linux-x64-musl": "1.2.0", - "@tauri-apps/cli-win32-ia32-msvc": "1.2.0", - "@tauri-apps/cli-win32-x64-msvc": "1.2.0" - } - }, - "@tauri-apps/cli-darwin-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.0.tgz", - "integrity": "sha512-f3LR2RvTU2ulxYdK9Nc3vKaSpDChu52pz0BMWNrSs3dxs4WTVioie98Ufz+GorifkUp3sYXcJte3HzX6wH/QxQ==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-darwin-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.0.tgz", - "integrity": "sha512-m07QZaAZCtyobrjddfz/Rxf9GGutnBOpRMbNqVqCk0qKRJzHG1fIsLqkgZh6+qPv0zHpu7xi/FPcqTec72Cp8w==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.0.tgz", - "integrity": "sha512-Id9eF1JtthZRFVtXAAVtSlI3uMT8cJ7LYmCSIl3mAXEUeaPBxnUs1i9X6/J+2Ho3yLEuuOxJ7PaJd+4v8wnEeg==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-linux-arm64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.0.tgz", - "integrity": "sha512-NtfPkkpeMPl+i/tB/Fc8ST2rKO2vV8int/RkOvNGLCkhWcl4sbzKBol7tc4q8c8h0X7FXDcF1l/EOuGsZUAA5Q==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-linux-arm64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.0.tgz", - "integrity": "sha512-tz+mOOVsy/TMdq2WJVIJl/iwW3OCWCyD5Fls3fhyJ4XpLfjn4G+C+oU0awXD/0se0ko81aq4D+r8eDx6oBRi0A==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-linux-x64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.0.tgz", - "integrity": "sha512-FH/wU+OWZjRQvrq/oequScr72I84XgOuRuMEpt/GqGD341cBJ8ithpoyzuiKsvjS6K0qMyRFzy3eyhQ7gwX+4Q==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-linux-x64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.0.tgz", - "integrity": "sha512-nLg30aBT9fI83sjIqaGPN7twbtE5LJy2DbKzxIlw59F+GT8HBdiM/2mZdTLB3AQb52yVHuGB1TVtWDsl0JHqCA==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-win32-ia32-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.0.tgz", - "integrity": "sha512-eXtgIgY0fawgcOuUjH8Y6PxwPxbK87Zl9XmA7Q0m58T7pIz+gcbgvtH8Bb+liYHoRYItIhQxVm+ui7Y59rI7Cg==", - "dev": true, - "optional": true - }, - "@tauri-apps/cli-win32-x64-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.0.tgz", - "integrity": "sha512-egyM66R05AIbkaUDptpHurFTIYp3VM4H5OrRd3O2b0oXf8SoiXiyrHbQsHVHHDYyytKmwkdNqjdy+Vev/Vq25Q==", - "dev": true, - "optional": true - } - } -} diff --git a/iron-tauri-client/package.json b/iron-tauri-client/package.json deleted file mode 100644 index b316c98c..00000000 --- a/iron-tauri-client/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "scripts": { - "tauri": "tauri" - }, - - "devDependencies": { - "@tauri-apps/cli": "^1.2.0" - } -} diff --git a/iron-tauri-client/src-tauri/.gitignore b/iron-tauri-client/src-tauri/.gitignore deleted file mode 100644 index cdf41c85..00000000 --- a/iron-tauri-client/src-tauri/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ -/Cargo.lock diff --git a/iron-tauri-client/src-tauri/Cargo.toml b/iron-tauri-client/src-tauri/Cargo.toml deleted file mode 100644 index 2c047e94..00000000 --- a/iron-tauri-client/src-tauri/Cargo.toml +++ /dev/null @@ -1,50 +0,0 @@ -[package] -name = "app" -version = "0.1.0" -description = "A Tauri App" -authors = ["you"] -license = "" -repository = "" -default-run = "app" -edition = "2021" -rust-version = "1.59" - -[features] -# by default Tauri runs in production mode -# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL -default = [ "custom-protocol" ] -# this feature is used for production builds where `devPath` points to the filesystem -# DO NOT remove this -custom-protocol = [ "tauri/custom-protocol" ] - -[dependencies] - -# Protocol -ironrdp = { path = "../../ironrdp" } -sspi = { version = "0.8", features = ["network_client"] } -serde = { version = "1.0", features = ["derive"] } - -# SSL -x509-parser = "0.14" -rustls = { version = "0.20", features = ["dangerous_configuration"] } - -# async, futures -tokio = { version = "1", features = ["full"] } -tokio-rustls = "0.23" -tokio-util = { version = "0.7.4", features = ["compat"] } -tokio-tungstenite = "0.17.2" -futures-util = "0.3.25" - -# utils -anyhow = "1" -bytes = "1" - -# tauri stuff -tauri = { version = "1.2.0", features = [] } - -[workspace] -members = ["."] - -[build-dependencies] -tauri-build = { version = "1.2.0", features = [] } - diff --git a/iron-tauri-client/src-tauri/build.rs b/iron-tauri-client/src-tauri/build.rs deleted file mode 100644 index d860e1e6..00000000 --- a/iron-tauri-client/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/iron-tauri-client/src-tauri/icons/128x128.png b/iron-tauri-client/src-tauri/icons/128x128.png deleted file mode 100644 index 3ef9026b0c9fa19ba045a3d6d60f3349acf7abbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14404 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 >+Qj;Y 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 diff --git a/iron-tauri-client/src-tauri/icons/32x32.png b/iron-tauri-client/src-tauri/icons/32x32.png deleted file mode 100644 index b0adbce9d9cc1dadc072b2d3d5310373c9699f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 zcmV;s2SoUZP)r621|U7qipVIsR)m;@HeW!7*n5%0-G3Z-*!kYC5i~Va&f4rfE1I35EnzS%mM{X+ zA-;C{FEn)@CkX-jM98P#{ebwHl8ki<>rtgRU1Qx!*bmZQ_36t0@T`S(ce15Ymg3Rp zAc8me7?+c`Fz;vB@IOJj_dcFJ7$RKy3I=n#IBsqO%{hoXA+@FiR+TYzk60M;Hevf0 z#+=Epdp)lb2@!ZubIb6_QE8meZ}V7N-#{3CiYFhxhs)v!B7BOslS@cvwjostU2s&% zK6+as=fiSA%q=*9`hF<^Nf^L{A-Olf@i4_gw~Lu(6M3FvacKotUb%rxgqYPs{AA%i z7L#|OgBeSDtcP`q^R~)bZcZ%sy;6dTK-5IjoZ^S(zj*b&K#3kX>7N?hD1?)?3==0j{migHOJB9AZ_yPtu} zzsjl)8EZ(Vy-Xz<g-wPN6 zu+f0wDpCaz@hTO$50Ibqp^keP$Owj&TW~o}CeAU>ZxKO*Wj~pOb?kwO7yL<^#rP(-Y9j;e z$;aq;1wJhT_+;5pZg3QIF!I{Cx3fnPim-a;Z-|XVqt&t=C>t%cXCg*@5ur{?V9nra z0&X0Es>fSjh;q;veu${u_SSGcImWse;2qNQ=j|WCti4#4=3Eyy-}nuBy&l?Yo8u;9 z!$4iIC~}Nwyu|6Kv|d%f4o{SL{1$D#@ zUb_D##M}Qw&|W~R*{}&%f@>@MJ&9xVMnr6m8d-)(>>Ytg2&O0AgoH*K&f=i`4WJdm z%VVhdE>@2pVD!a2_`g}6G$4mjpX{GMxMAnM)EQ(! z2^cicNqX4((=QQ{J6G1$Q4pB3yeJCWo^!ftO4x@-L!300>?C~NaQ4SY^5inC0`r}XL%re0v zlt0rHvx^dima4wegRAPMGYF@?0=r)j?V7}AE zkaB=Qv#J7I2wX*_1VEiF^!tyI?f#%DLv`V4$)E0xl{5I5mQyEf;p*O;Wv>ZrG~(DBx~J^5p!g~}eg!lwjS0$*X!`+e%v4E9{Dj<3dEhsz zIW5pJMvZBElv=or{j=->GFaT)drOnUCpubH@9AxF0c2k zD(lVk;gqnseZ5p2&##?7o{Nf;Jakc4`WdT~GhJMdR#^Z5 N002ovPDHLkV1nS%%nSek diff --git a/iron-tauri-client/src-tauri/icons/Square107x107Logo.png b/iron-tauri-client/src-tauri/icons/Square107x107Logo.png deleted file mode 100644 index 6399af9b7b4a5e75c74698667b855e0ff175a9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10884 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

      dn;pzd1$TFwZObe{!2sKVNkC8G=36`&fy)zk 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 M07*qoM6N<$g1PlYD*ylh diff --git a/iron-tauri-client/src-tauri/icons/Square30x30Logo.png b/iron-tauri-client/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index 34ea920c9ded52cef29aaebab3ace1fb0c59609b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcmVdY*hpI}4EB`9fr0) z0#s)KWv370Qwfw%MG6a9RZcD{V2nmVs)*@Zdc{&TL7SzNfF5Zjpz;Hl{2ZIfhnNk9 z2z7zqsE7FeyGQV5`p5?_VK4d_OnVV3Pn^fBlum(>A=Vfz3-lCNa|xjDlTML^tbEgHi&|Z4OCF ztBot^Hdgf!7O$>Pi-`UuPBE-C?U_RCpM0iOnL=(WJq znwqO9;%~sK-VWCL9R#fwmuWsG{q&(Iu)MT{?#vv{(gJ_~InWQEpb9%sfj72V>t_Jl zsI5V3nl;6QZS=hp40^PZL8Q4(fJHp67b%Jy{r&)2_EDL?tkJKUksgHgd9~FO!KxwB^isUh*`x6RLNXvgKA#J)s+EvW0Ur!jXmy5-euRyMjAw;bc?YbgtkzR$ zBMSI`dKy@} z1riv>Z{b$Bk6Y~oscJFSm<9A_m1n3~dBy7QAA} zEG(^ZBWout_DAJV)!^bYej1j6V2GaL?CqKtE!R%2@`$FM(Di)(NrCEM4y)7rqk*+U%W*j{@Ls@F!|oyGOT zZ!!1DTPWMJ=(ZzEv8$Ao69PXzIcHoj9SLX}ORb=`c(R-|-KGh92GN)84e)f!SV@Iu zvSX~h{V$eWh5q6KvMjSXEr4Qen&rsTbKH;V<4zBXznKX@cRrw>*~OIWHX1ooGGznIptLa%`4{4PoqWr6e46KrQ}9IOFmvQ|%A{)P78#Ehk~ZBCe1 zc;(K&G56#i=C7|IJ&P?f0@_fWrm3a&hcv-n>z4DWF{5Kg7^VTXeRQ&)Hr<7dixwFA z>gBEX(b@hC^XnTd%P}80YMY?4)l4cGBYh`P7_KZcG1w;MyrxB(aj*8LerOieEzN?K zA^O7u%zt$U{yckcA#}RPZGuTGwiS$l;AIJRTQ87i4h!+|xHnrFW9hNQW@M%9qXmI; z1_=LFp4`Rpqdl~{J)0&1+N6xoE8kQ4H_uWWoe#0!UFAM1%`@y-Wp!yda8y^d6RI&N zD*&56eZ(3ZJ>F&Q4pH%$hy;>|1tf58gG}2_I^dt zI>hGT=TKW8@8ZeiYk4@c{-1D3I(KDVAmjJ^=n zjc-N6Chs`nRGhPxuMM!Uv`l}OmR>25jn(qK$AQ55S$te1IF27Xiv>7utgbCq7lFm< zvK&3{ITOSfz=H9l_2qkIZzdbp1VgI{5Ilh!8Z4sb+u=`hsO z^0=Yf8f;t~uvyHPF?x%O1Q|!OfHh*H+Z1j(K0k&@1&Es&a3dBk6q3u8OVY?jB&lN_ zzH<0JR!_gi42Qdtfi|kg6W~I5%I;ON@h_ciq4)7WT`Czp_VMM)b$R%fIlX00@pAqp z4(@$}d-2c~p}}BagQ$t<1~`u6iDIG=su)Y({TGj}{vK6(U}x^>Y1T+vln!qyJ8ai6 zC91T_GqlYiR#%s?YTp!$1fB4) d4z}L;+mG#@*RYt2eV+gT002ovPDHLkV1h~&T*3eV diff --git a/iron-tauri-client/src-tauri/icons/Square310x310Logo.png b/iron-tauri-client/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index c8d279cf230ec5be29a5bda0011d651f85e56692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58732 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

      dSn1ad^e7{Jz(3La)Mgqt_OAXJ-aPl#T=@WKne zR{{KH%FeV3?mzlR|Hy-yYS?sOqC5{XJ;)=VL4%kUihJ8s7^b66+|-4OGs29ttdGGF z>_^vyW1g48alpJqtu$;`&ym3xC6fSF*fuvew#6(tyMcQh;QYBX6F?K@=;g~7WUQy; z{A(3iURac9pugU+OiO~_T1nU*uziY9L2ir0rHjYo2crYE$3OgmJbnGNEcK5_pZeP3 zQWIEo(u8(3KLIj2=rm30@BjV3?~~hAoQrv2O3a>M3Zf?`7m-wRkh`X{Yy-YGod8NO ze*uczhy}~B`3G~AeQ?MLMe|~4(-64ebSfO1f(}PBIeURi4RI1aSRU%gA$rOz6YHVe z5mKpUXXj*T;gXzsoUf9Y<2fIVRA%76=e7smlV+YZ2^+ql!V zy$&{hr{JItL{Se-Sx$ZQQ~At0e<^c411|bm@0JBszYcn>#Gz%pwSJloI%P4(jvbSK z@DKihZ}zN(BDE2Vm2hCNL*Bvi29{2MZE<-bPB7E#aCicnIJm8nZK8J^gSW`c1qmmK&^i$!FLuX+_V|@bSLxnfNiH!M)LiwBu!Blz%uXpNz3hIefrLWnggH}&3gAOn?DYX}YvLh5j)Is?0!w>sHk;>9EFI1U^t^<>jThSp` z6TpH5cYqOC9hVPcy%*<+)(8A>i|NTS43?wlemEjqH3|Fhhry@C0Szvj#J~#X31$k0 z$K}RtnQzXN0HAZw#CG&TWe|N`x^zi~1|9JAACOBQ&eip6%GNaNATLwPZLY@o@83>C zl<^J(x_RRty9#Wb4*sZv9YuGVDJc2aY3}dxUg(T<8Pt?PL}fX2{uTL!kA5gC+T2)s zgf_0FMh?|^{=*;s&{w|I=%)_G8#ivqqmMr7b!sa2(18chE&Ie^B64Oys6PQ5>FiU& z#LZ1u?`CBpw&V|36lXSY4kxoX?#IB2}%GvmLJx&{3l%xs%t zh2_tkb%B`40a@;umi5JVC2}k-9vrRv*LK3h>~ir=H_$2g6(AFN4liBq(FsuOfL_E! zz$s+DCha=Mc8l!0Z9j3o>lGJdda27L%q)P1B?SlxO3t= zi+q=smgUOj^K$r!d*q{=o4%ZU)Hmn?2ctQ=Qtj45`!?@3E_QsCOa#u=$oMum(HY7?R@DtI&(!LJ4ISFGypU?nkkGD7 z=<}cdy!`I({;mf#WghBp2pQAFbvL{xyKIjn;Bxl`DiWII)ip5m&G;25)AgEHB}nsJj3D{yrBCz2XMty6iuG zue@<}$&FCQX!}P}{A)$ADBj^X$;0~c(y!e^!^+OiHxDx_f)6J)3|*rjsHsn_M<%bnD_?)>KRH`!MK*f+9D}QyNeWb|LDP%^Wopox zY0%)8fBBdFOHETm^uTb~2B@BpZw*rR?{6PYC$kWsKN z4Zy<3!~p_;ErJ$YmI#7kE9&LX%m6vX%bq{JXXb|}EBoQNJd@75c;RC?erTV3yx{h; z?pWmTzB;gJ#oV}q;n3+aAvTtqp>?v)xT_ewLtu-#bCz+mb5;k(WtuD_4~yzX1T;tu z^T=E*PzBH`bgk^N-gl;wj*3iQeoMZ6;fJzW-H=r&*9S{f@<65)IG%t0c|Wj_Qlwz> z+rRzW^28HQ$Y1=$U$lr?S)dxKev84%%Q8?QVyf(q(}|$vLevti_W&Z0i@+QOK!EvS zUmRKF9-qkP)CqkJm@&dvrjb`&SC0?-0Yig%33kVQ5x7MlM`-aK9t7;SV>1zmGmcdW5AGA6a5ajL(T00wyqJ+?8u9AH++^o)xQ+e}d1 znXKj3`PjM@L`Wo%2_ToX-(04r^^FxdpOE>OV3tyO?p6fMcW%C>TBT10m#)d*dhb8^ zUIiN^X9mXG)nGLZN;3*{QhgdsrEh-ooATAKepP<-qaU>mSdK#S0A;YlU;L!e`DgW$hY^Z2^ev?}87FqqG1)1|tA9j!yxIJ6N$PN$zwJA;vn+zer&epmz9lxT5D>s%N2HYp zHnzvi2gd^-WFX?^EI1yh`MEG8+Va^tX}SzD65wM)bd-g$05|Rl%FUCx^fzZv0E~44 zm_ZW55mT%WlbdV1X?oh!_=t=gyhlEM{iZWR`|6@xt>}?D#$##oVdZU)*Y*JJJ~`U~ z67Ohdm5z?9D-QM?JIP~dCYhO87G*AxZc@}SM9l9NsjHXK2MKLne;$^Sr#kfva#?{!wj9+?r#w11g$s+Yf9Tzp8a%$T{~o) z1y`yhFCP+#cFRZBWkGCF(8}u@3$m`Aq)A!uON;P^R_F7=w&HrktXh+=p8t^?y7{3j zm-?JfO_wV-S(Y+2upWI^5IcJGsQkUZ_xF64DU=-2cWd%lr#F`YVgTT7Q;2kO4+3Us z07V21bZ{#mZ8r<9HFaQzy=c{vj|!sIKkRHRO4W0KlaaJU}*Ok zs37{~I&0i@3Jej)4wHFhWmV?qZpzc2e^gGNzv+Kl9}QLiT2SWEsfH~s2tIMbvT=@O zk{9hd2P($cqT)Nq6HRQfCNoU1PT5)-155*yOtzOdFp#la(lSYYwl-$BeLh~+;e0Tk zz3@|cV&OxXuM9}3sz6d}mbX^m(#jl%4jpPrDfIil{kQ+N456ugOPYWg-01EFA z-GYU1Dv`gLsQ4qBkK88!%nQtj>y#;TVpfRCwg5ALDojRp>NDVAzhF)PMQ#WK5Jt)t zG9{pMvjEPGUjVQGUv#8`*$qI$1YpNG0L)S6?VWetbsMY7(MP^0fBILi*Q258TT>q! zd;K#RnE|f2LkIjV(3$PFmblUZQsqQAYR%Vi;2`DiB<)+K)MO`SWEPvt16TNs76u()vBqiLkEy{j{?K^!$15(|E}|Opu;SKo{SUN zn>Py;j|5v{a}1LOJOB|Z@WBMRd=LNyK!${Nls^jf8bJF#Fea|iW^2PiqlQQ?GfFnQ zIoN@1a0w+W$Nos2P`8bXOakbjWy4F49jyfQH<+4q(dt=ewlBG8sJ09oc4laAf4T|R zkpMRi-+Nhzb32k6;)M6&z}88=Xx4%S(xjpSSQMI>W-dz#ql|5rsL%mO4)6;F4?;dP zk@U2w&@r{LT=lEfoF8p$;i7!w^0TsDbs*#Z)1(5Jj2bLZP(yD`9i+c^d`&DxTY94IpJo+SdO(~@O3d80{g=9+z^Ew^b9~; zUWhAc;P}~e=4u?=yx4*@(#DV&kNvV)&8b&hEE3F&uc`G9f(5GSedX#k+1gl^^5~SD zdH;fof;L3CKHEV33~_dTXd4J+`N}#Kl|WQAPKAzg9j1@BgtTMZE0V2e`z9IdNAk>?-<%wue~VySFZU8Xt}oKSBD9u z0$i=BhI~zkQNR1$@A}3p>Q{qfp8aCXy4d+{2e?h6Vy4D{2OC+$G8|dNJShGx17lD^ zWKt*iskpBKfDfi7fDWa=aUNXo5dfqQ0A{dU(@iH18Zb~XU~*DDzW~ter_Gs3piK ziUbg%44XKQpDp(?f#YqOqZBNVx?k$1DMrhWepx`)3FxMYWmox$1IJREJ~!~;h^29 zzW(3*io9}hw*C{hn4t+}g5n(p4w6j0IE?`09l`}7wwY;RMNl;E0m)bntg(03lD}e%yhn*^X`b%u)MfG^Q%EHr17^Z9S;G2)*tE0kgV_m#5;GuXaxDFTi3k>E^C%evaC`tr1|Tp% zcE)pwZA3JcrE*RxH;3VJLR_+lb5|`R)9cATHVznBM>3ec8YN zfSg@$V7KC;p<|QI44rglXn%mTBzW`VjAi1Ctc1|KJfv$U+PZFmT--6Rby$l(u^dkU zYL^O{Im`E?Et>`=Ma;Alb{D1j+Zvsv;*vZ%`-U7}z90)#$AaRumdY7wV!r$C zyMBd7V`0}~h&20XJluqtLZY*qrmEYL9!vabp`oE%vM z*s-9P>#~8}aqcI}Gmz7XU;#%p?f#i{a>Ex~6I?f42Q}s}vFVBPTy@8E)A>N3{+s`; zJb(G7UMLqdXqch;o5rz(eP=0wfvgxnVG}eD{pwQlmLw~*!%bCk!C;Xj@j_;376D5L zAcWXeFmRgzHc=;$P2;O;V}VKLXc_}-t)r)5p`YVJ!nr$uL` zCMb6`*TJ`M-#+=wXFlW0ek-Uk+u#AtAY}7G0SH!R0pAtZ`)5%r%t|&lxzrF3e%oZ2 zvlJlY<$7kk93q%ti8v3|sv!pz=ZCyh4g&DGvq{OF-f^9fKWZ}@0B&4ll7-4T=`nrm z9y0nH_U}I`XMXqwnW4kmkW|HOQlyc`I?xpRO8C7HOC5%)jkAOg-+nf0mr zACL>n?z*iw;G3MPo1v8?Gt>_BxO0g|n}01~**Fh7%gfZV%+jI}(YPpM+Zk>Z+fLq$ z`aBs3JMgo`oytCb4_a2c!Dd zFbLrX(w2GJ;P}~RpKYchaff#9$YfjNvF|BVzaPK_vy4qvEW=%(m>I$JVl@3huPx$d%TqEaOSGF%KP_#3EbY0U7G!;Pfg7x=3-YCntBNB>;C71WMZS<_{!^#@Cwo zfsgB)Z1|*4FI#De~0ZTQatKQyedmvPjD@D_hZM zr<$Gs0|m7wpL|jd95~>sdce14dtU-%xWqN9@c}TLQl%41F&NPB4kpJy$B{>_sLO-i zHb=p6*e+I_js-0nKm)!noF{+|rZ_6x;vHa$svex?#SD^tY>2X=ItK?sYy;#bk*Di( z_T!J`-c$F>#pUXD!xnFb_HMJa#7JkHF7=4xWRozKWY#AcW@nn2nq-c4no5-?aL`c& z-HzO81p)}ns`5xbY~Ex_Drc(CDkOT99NTG|m%!Ylh$uLr+DGGt@iL}T#aF|9a`hwU zS1T)Bs5d!o3@{y>Z@>Mvmp3SQp>l@~_AhLUd zD#dKfHb4eovfKiGD4S8h?d@16WjZ|XO=5{=<(`)7w6~Y_%Hpke9xPqmAV6!&pl~JJJf`Vx1P(GACg(l)4g&}~4oVczvn7F0nmH;-rXc{!BCDj7AxdF(S*)!A ze)?a$xg}38y(j%!YqA`-n^LNj*9-#;Tpc(%K<~f*e$UokeDTFLWj}+EO>D};GgM05iCGTBdatQ6VJvz~DhDs7s zizO_|O=4;pW@s!0BcX9||60+e$3<5vUT884obqHK*vLYTNJA39W$M`^8PuY@(NW9v za+dKnRc?ZA(QWAiwn&aG| ziWUC06(F0C9O*=~(>9A~KI0l72quUMzufN>%USk@o(xM1^K$6EhvYwhbXlEs5^MUD zZ`e{w(XM5QaCa~qnfl6A(u&0jvY*~6XD~|{;x1#1~ zTh3+@a|-}b3u_AjWCCk5Y|@t`azHk+a9-|TJR|E`xkCrOY&+_8Kx?!U=90d{_w$W! ze8UeQmSflibN2thi4OD4f&jq7rUWsw!=Pr}7Uky#r^#R{6EIh(w6 z%Nz|Zo51RV(vAcGjFYr$Q9Ynsi{;7nbJADakVS_lWf~k9R3E#@n)V2VSXCK|4!RR3 zPWXA89biibaq174lun#03Sffy#=yuCRzyc3-$1D!Hpy(M9sm$)$N-2|G|a~fKNX^z zI44M4a6H`gN+$$4xRbpeE7k)8wTuhv@pp*mYV{9&;d~*nVN;jOi|anlp8eSQKOdBj z=T`NgBpREp16#SbeK5yK3@c92w#CWjW!!-o+KJ2~uYRrLrZM?4>npjpmDhK+6Fpm= z9mWC16J-f@bDE<;$G#Q)Ca}6xQ`0UR_RB@S)OSUOR&RPSZrs~112rAk)s|8_S{YY; zXlPoZgIEWt1`U**sHTmhh3vq#%6`SQs8)T)DyleHeGQn9E1pE zGFWpEqFgS!jR+>QK4xCl52)+Gl;vt6?EeF6l{4^&YBxK zIyx+?y`wUJ;{%BX1|3_|Xy{-9TT9Weg_uP=#8X%SKazXb5DX;#6;lAK!pSk|hsXK-6p$FxXHtImF9 zY-$Fv4(#yZ!*cxiaj$CwSaCu&mJOtBkNY%fe(XSjnuI%OLeSW_{H$ z>{Dun&aU{p->846F7xp1^%9UE&R}aDYuDnPnW2fSEs1?uzgh;M?$E!M4Q#vNXUmO+ zMa)qN7S~8FFP>EPD4=I+`p68RC7G>36PG0-3A!}}0V&DR)ypy?&TJ|7I6%`Pl5tCa z0j-X!W+)o%>ZF5N*_uuYa_}>8S`Yhx7%XhmliwLYm@zV#aoP~CXUp^;Fu_>{`eFer z_M_(oCWd1KfMEaJo0FLw`^O;DU_T&yi!e)BMglem@h)rlLZ#3d+#s#tYY7&)?ymd# z>Wb{Y_d$8_y{nCAs53#e)4N7PYjF;?Cdt0D+(82=2yQve&?HdK1f`<#j{HCe=1C2uf*Ju#Bxgn=k&(=*u?c^@4 z=}$UoHUZM7bO2&-YtTT=P%xcPKBP4zSv$rREWkj(vN+Pn+hi8UU}@{3ad~cl4uc%~ zlmX@~@SN1jw=8ERc z8!amP=z=+F0V_#b5#{lr#RXVf0z+)^p9R<*9iMkqx}Rcb{kk09yeaE7U8lNzUo@Wl z8Wgy6=~9c{3QdvK6jk3Fs(9EwpPb^v)ibz)2Lk|`R$y3MnunXR04$kx*)%H#C~lz4 zE&14_Lk%+ye6T2(>$ z+$-l7*6U_yU&suNlOv%Wv9%O{%uJ@=MKd&)%%cGA?U=FUWpACzKC;ZwG_h_Tf161# z&n^8(I#$ct0s`CS!lC7eu|eW-V%?dTwRKr?CTT=^GYmv+c&ug={Ax&{dhD^sJh-WT z4Z1UCFOXKSLz^qxat{J_%(KIu9pSd5H~Z1B9cEBqN!XX|s{mkQ=ESBlC+hQlIbYLO z_ho4Ymnc%e$BYjwj&;rLPer*i$M2O_&v7(#WIMQ) z%gNtOww7R8#$Aer7Ls`sU}*&qZU-q<8T~}NZH~6>D`aXWvAT?Gg(TKiA6;SK>Lfsr zz}S2|wCc>sjVsRG68Wkgx*+Sf^lxQr02($OPo6yKK@DI47Q*bt*6Fv*ivh0XS2oV} z$Y|oE-u72yjCLmQ8RLAF~Vv=c?bM{1AM0oV3ri z=fFt0i8FvyT?1UjgdYU6vvbm~#RP_@WbWq0Mv0?#CWaTZ&X9Qw6_ezl^a z+^(CU(y`vHgJv$F?{YL$?z%Z@muHhO0RR(C&J@-bXX(-M2MAgLE^d;!I4aBV#+*#7 z-H_F$_*Giihz=(sZ|1?-IXH)JD|z;<6}fMvfNR~X@3QizMKe1-E<87MJ@y4~ZrLOoBpgTB2sJw3hd zH@hZ>j~$as%g#LASg+@XY6#vb8K0X8dzW>@Uk)l{gG&MMb$gF+&T3-Hw4R z$tm9jb2Lj)k_K=h2~}^CM8E`^O*WRn+CsjzP6Gs_S+nfz=-Oo&lr33yQL;$lHi7ER zn>U-$Iu?;mPEPulW*bTfF$ zM95Q&GK;mPnUMto1nnS5Rdk&hdT8UiZ0bOdN^O269VDt-`jKQ7=3s3} ziSelsPy)yhV~e8}b5yl!y_-uivo+^S6_rHV9QHa$w4I*5YgG?00{yJfP|nX}$Goi* z#sJ4rQkG?a*shfH|ZRdwd8{8O% z6Z^RmuYI=>P0oU_`vKVESRf3>d8yy+{P_zqHa;#3H5WP7hArb$Qd3~_(NJmEtR*rw zyG#z#GL5apDQqoHU{Q&H7Kec_OO%^wj_$0qc%?H$>ykOz0v0J!l0?RrgS7=sQM;_P zvbIpgUI{S4L^c)x-T-@3lQWJ>GPN-){hKSY;b5&y-KPL>n&7U$2Ij$L+tk!lv-&GQ zft}bqcp0?V{Im>Nx$1i*a&2ILy;^=I3YS*qqE_YjM#iXy%NrnW4pity|I2wj9y~ww4-1kmSf{Q2LR=+KTwbT1;17C&?t` zC~1hj)weh8fGw&y-&@IdAWsU5^@23i)z z<|>0F17@hJ6~1GM2zOt{GAP*%aA1bStclzD!6fF2w_JJ%RdMwlb=Pp703QTkm?<*2 zbJY*shMN8yyg<~|n&mi$O?O;<cgp4ApB`%Qivd0AuPpTZ_Z&s|_e~ z1`V>-xdmouXQpVDIhqw6l^nBk2NBW$E`_zVF|wTEUS@VJfrKQJG>x&vzWcXqZODPG zSsxiKQL#ZTd>$)o-^W=qU?l0b`riJjt{lpdROE*oj(<7BhUR^+vj zMmB{32DX7RzT?0IGcNWca{eopg~=W&Ap};Z*AD(XE9B)weK1G9R$TUp0TcULQdhx%h>2^-6VBCgT;UYS4ffEN26#%mcnA_C1X||BZe| z;J`LPu|6*D(#~z|Sju6$pyQp_vCG?%+Pq(8K(^esm7s7M6F|zg;$z0h+B%4B0gfC< z!S+}?2LRKAcP%KOld@t6a&0dNW};xuZ02&=B(QAnU#pfhfmcdH;|}CT>J3|h>?)!A zR48DuD{L)|A;tMXCO1**PHCd<0b4E*OUoUlNMo)bLKj(E949cWC?9JJEuUnPwgdgqOf}`zPWy^lEJjG^JU|%+c%mzr`-57r0z>Bhs9X)$Ruk4~ zer`^t4;+*$3oG?w)$&9zL#;^}1fZ0FK`(z$kb1Ny(Lo&<1b?SX)}=LJ;86G-w$nX&&|#*S9^sxggQznry~pp9jxONC%qw zj`U?sK%LYS<+3|TQBBr`**1Ha&x6$NhnblzI>{iwsam#f8y~;TN99S+hf8%Mx08>7 z^HVLL*=Q?YAMS<9<|Q{vW*-?#IM5V_uL;Xfz|{OYs%_J(h|x*8xwzt6>`9+vg+2YP zAQi`9#+KIv4f@~`0AiqsTzeQF@Y6m;yc>SS)fqH#*Xih6PrPWJ11GD!;Fjp zE@Uop$`gxhSqB&DGs+Ax#P005Gb`k_e7rr*?*uR*Hx;$jILpFlSNE@y#WHR;EcxjLp`5v%L&jmTlG5#l9nQRfel8e!kB)h-)qB zOXzIGW+t0{qobqE($iL`%FA1J#)FalS`2pVAG4;WH7_|eD^%3c`mA`Hp)3S$)5qIk zsRhmzRdWGK407y~w1Ewd60={BOA^^~-(2;Ve+!n4=(6+k^X~7GtVg|4)t(W<<8@P1 zk0CauWE>}_Hzh?u(@aoF0l$#EB+fy<;tqXmxq=2oz;4%pt-~NfVd;nYP?)s^SY~RK zkUS2Jj2@Y$_)5b08^hOyY%ewe) zj^tT$&{p4Sh>#Lx#mijG z5*)#nwU_=#m+_b5k_c z9L;HlrZs)(gtY~i4Va8=@{f>7ngxWGv4z0RtmEtA))`y>){68vV2hC;F4D$kRDf$4 zm%h|Q)ruZ$0`YpB8f2?gu&<8mtXT!VHAw-k+%psa0YG8^v|?WNr&&hHj(<)(hk40h zY)d0Ccyrx3POD;{9D)xpS-}7?kE5HMXs<71dDzC#n6|dGzw4^>k4?$a>PB7Op_Ovg zzh?6?LwYtzV`&9VP|LnjK`;e?y2{oh0Prb`-V(V-kS!&cbxEu(&HUU6Ym4Imph#zd zgrK%96afwR(4qu0wrxMoY;jzz5?AXz-hI!5)`E?!%I87NV8e0)&XHujnr*Pc!2@P5 z%+_qtN%oy_QapEv0$Aa@ByeSB$c&E5jstvf4YUv4>iY&~{O3C@u);2bMUZ`hm3UEQtiQC1mxqW3xCa9zXX2=A*6>Ke+ zAFT_h))mHft5{oVgfyY@M@Z}&GGWt9Qe!^0`Ow--SG(=FB^N)EMw>ksD5z{KYkzmy zY_K>s6=522IuZsym+!&gVphd$#%3%qP}vStAsw6*;{vqsoh^qA(+}%%vlaHi*`NgP z%bJSlV8w+jIY7d}2AjB#>x1hU>d64JpEEbueC7r*=;LZ19x&y#2AgIa#FbuIU)roQ zH6IO)!i*~^SP%lLIIjsB@~@>8lT46cbepa1Vx~ctfh|Y#l#pw!6V{f;6m2U=nHESW zVv^<%`3BirLyYT}Dfvnsv47XkeT`-wj&aoLHQ12I%|K(jN-?ux|CseF>4Y>Pj{dPP z&YF$3V?67`n60tY!^%A{_?bz9`7v|jeRCw#`tWQ;5PWZ|m4wcR`+Wl77z8&Lc8BpH1S<4=BkEmYeNshJUG*W1qou^PEF9X<tdiJUD6$z`uH7#e`O-uc-+^kN zwj@(q^D-i9?up(f!yEImzU2U;QPJbZjT=7iQ+;PFSFrx7WbZ)SQdw3j>mECH%;!X+ z>MrKn2qwR?X3mPawqBjx9buqatUO{F&~nC|WElfHo=_j9jE<@_1h+;Z!#E=hFHXC>Zuj~j6g95>gb zr3Xf8upohbb!vjf9s1O|&DJtYe(wz7x?qa#CTla%&NNfBEdrZmzUF0bd4mM)g(>Sz zT13WH&&y}xbF!~CFFjjpjgIe*?I=%k{+E@NWqIwj*L;^LE5hyQM|HsT-S2+a*J{%| zQw=oOCMLGClx04)oDU0d*|}~_TnjMVYrvX`Tpo#!g?)pNZ>Y58+O=!GQt+KPUAS<; zN2(7UI^-WHJ>^)Qx%YsaJ9}2ny!am_e(8Ue=*S}?KldGp_uuEhZCzUYv?1S`1*;GU zcEtqE;Zxf!-&)clw?*!8%UGLan5p)=B>6`m_z)EMN`AjwlqT99w!)4;l}1>z#^=KRKz%7ttA6jj_ugwW({J~L>b)O+ z_@QUq_doD}KdInP|4=FhM1S zb>;D?b_LVXX?Oj5}GyyC_x<}Tue{Q1tjsKk)%77W*EW0M2ElfDm~rga z!}ddLkQ<(G1l5|K?D)4PtEQ2uw(sq?-`?@H>h^@|qN3`#*;x<7%9IZsIN(2D^X1*E z(*KkHSt{-Uv^3#NQ_V;~0faP0RRpAxOwhLVB!9rbuGBp_{mv?Tu=KD*b(nmkcEFB{IcwpnvbM-vTd+x{9gvCcX(MSW@<5!?x5 zP`SYi4k*)x-FKglriGYIC$CT2)QxMl8!w%ndFC0}w{Ktb;l&k1 zbXr?kl8GL7Kg?YgS)Q%SK+*swDOeCox;dFT4kRHOngfL591Gnhw$^3FmY22V%^^*x zMwzF*Unt`t7{yHRw^=i`h~LeboRzf&7uk0{rCL3Iko{X=8+xPb0MODz>O0CB#LQGe zG6y7q+ivmJFBURAZDB~;kR_BO8p?#Qpkq76hf=GO_QRj8`HPGU7T$&c&&on$MH__qr2V7Fn4S8JcROT_rrMQ#Edq zApVUDvNXwHX>m5tC4$+lV{6?9wp_k8djX>YRdxe`gpd$7F*uP&HX;dtW#k`0zuWc= z5H$yg)CIZH?$1(ZxXKtbACz+vL;flrXci>cN5`U3HhZlj-zKWFvz`a9E&0tlFRO90 zCB?aEjMcHRus8%_7I>|GjC*|A+)>^hbab}O9%m(B8SLA(*5e4S4WMv;39O?%D!%u< z@A>b!%T~*8>HP5OJC3)(9Y)q0bJflC$8|p z*BWVM+*CPCisCw`)v5uLFo%mI)2|lL!X=rl9S00@RPxBmGU&1=rTf6vP1Y7%F^5T- z7$r@RfCRN`ImE#t0dsbH+h91Aa=YrDixcudw;*8~sn~>b3xYO(ln1Fz6AJ0nY!sA_ z#hPL)sO212uoSC_QVsF;u75kv9xoBA) z{^mq|+wj^lhiURTL9CR zKElM=2iBiwyH42@F78i?paQ3lAy1aUh?yUf+-=Z-nHC-rXh_XqjQQ}{;h3@gu=qOA zi7JzoG03EVR2uV&yJUiP8Zg*pwzi9mEeE<4soj>_B+UV4k`vUjz^#7kCa}HO*X7bq z2C6iVLN1n+$Y2Oik|L0t8f6{nA%Nn#Yqmmc2uN+E+7Osn@Z|Gipu@noW_Ad8Eh}aA z80x#g;KOz4IGe&=ca&H{kxVqkvDJqe5_280<1z+g)JG(?QAtT4?3eXlWpQD%0PV@GdE!C{e;b8QkdbUBqj>cSP2g z)_qftP}?@!70NOi%k+{|`k@Q}+tDe>^t6>c_*kq7ius&CA9C_rMrbS9hL~HZgm}n| zZIMefK*O4nNy~;9r2-kE$k3SKJWwu)&l}NZq?(~{Wys6~v$Li$ra|pOAD6s-EouS9 zf-Ec3pOyqjSwh?_6EsdSK~q30*!AiY#n>dHe0Ku)Ss$AO+T-Q*yJfZm4E0Ko3>k=7 zPsAK^{e7|8BWqR9*`yXBhqP5L5PFJRv(lzUSTpa_|s>@%~B#4@VT zHn{szNGF#jDX|4Ad4GHiHj9EmmX8}?XLDq^;AKeG!XU)m*|Dzel^SA_+zFlmkjpV~ ze^i!y0LaiWi+hc-Fq&(?>37;~9*nZbnV=6n`Lz72AHU;1xWG$PZY09z1hrh|V_r~8 zGf8urpm#{X;MM|Ls;ez;MnaNFn&dN+{6U1w+HN*?Gzr|ywn`N_-E)up{K|9nuOb~F z?N0vCzzvz7p(tp`hh~=xIp}R4O9>FTcjUwQn#^6fDy5N8 zsc8o*?}&}tvkW=~wN!9R1GBgT6ZFmq7~EpUmWFOgU*$DPr89q9k)T4TtzQzjHMXH$ zr=oaEuJ<047dIc2CsyCAvw^76DE`q`(rH~GbUSK&N5OyPRKa8<2yI5VRpscR|HM?zLNt^Oz%Np_W+$qa4Ok36)K02<_%RvujfVN9Kcayg@@_2h# zp21n~rXnQ4O-;xbpLs@3JouQrKVOx<{F5K}08`Y{FY)O9M%kh$ zoiQb8((*<#EjUR+W!<)UA+}dg=5dPx2DgE+iKKULPhe|l46bFpP@o_sn2?k^n#I_n zgpx)H@9?+H4Ih`EEDp%n{D(5JH7i5Wru0=xvZ=u1mKk=x!v2w7--eGJ`dUo!^5x6T z1}_XmPd)WivwKshV5IE`r4v|1NIS=1X(N{0ohqcU3ki%Z7&2o@)AF&eD&&K-S~oUx z*%Y+XeY=-kTxwWA7sAy(-=rP1KId!;c zaNGHEPgN%RO8%>;VXkV$k9XgFH+UsA(ORoWXr3vvEz9EU;J5uYnF%IkB3N@XDZpUC zkO7W$WY(X?Y$z>oU?YwpW@teZSrN=CEqGg5ObC?OkEbs!=BZU#c>49<_>NrY*)Qjx ze_cw01CEuK<^A{FZ@qr89{to*v+-%E^$ofEVMavRTHmm=G)YPBv307G$`m- zD;y+XLj#t~PO3%_*(=p)YO7VwsH=Fw}Z(p%OX_TKt&@ECxPTSUO|5`ZSRh<2wD&@@vt zV5+79-0d+zZxdt7GD(w!yIB&DJpMMxDgP)4Y7A}?NQSQuQGwr0%Dv8~;-X-K6P~Tr zyT6Of*CM&J@{%0cx-1(~X_{RJ4jk~nW|@>SHm%aCeGQbgal5%tWRO7$RV-{5cAHPi zb;>LYW1wLs#ZG+&OqhKD9GG}&X0uMrGC2mD5G%F*G!7atQ?pT3n?suf{xCa{m7vF~ ztpG9A8tZ)S%U_c}fAOt)rH(-t446D7GIiALxMzDGo{E=R@8z~$pJ|M$6Hv zmt!%pm6h1eRrYvTo5$GzEE%y;P(BBk%Dh}C>0hIp=qQH!?a09cvfexDSoB*GIYu52 zO^S>;R^BrhU_L4J)pD7OML{iPy*$B!+zjo`FhOrGuoX2)Q~hme%~>Qv4ze5ICg~AV z76LaGtQVrJ%3Nha)=JK?ytVGxodSji2(%cbvIILI)p>23nuMeo3}^s9uogB6ts|aG zAaO;Ekcn!2Z_FHRVMptS!}e`$G+SKL)HZ>v04K*P(Ak2NU~devp(J}gMm{dvot_yPgR+%>aQ!z6oEF$^lo`jYJ~o|H zmu88`@WiB?n_Kh}j=0|e+Q4|bF0CVw>Jq3)0Z@~G*_q1PQY=u3ZyUVaK47!dt%$!Z zHA5jGGeJ5rPbIxocK#!)SwE%OpZ2 zge>c^rLwIg!ZN+2lHJU-Liwa2eHiA2+Ul{t&jvMkzFm(QBWu-c5Cau z7#V0GyJ>D4$K`?o3rnkxN>=Jj&C53mu%*Omwp{|XIKg}j$ukQ3)lv#c-p2kyw-?w# z8n#4#Th79iA#jTmdWB{(I7ulqnG^+0Gf~snTm92!)q#w@Bu?$W3G)d9*H`ML64o%& zLVXFCxmdu$6iRZpnGNg@W9E~@dKg60N}glC763zR&6?S)OS7gZK#KETu^-DI?S7LU z0R90>BedMO^_ca0jdE(#)3Y^^V3XoJnzCF>uOO(UML;uy1$oTQJHrIMLl|2TlhgoR zS}>twaFb-lCPjh+Q8GYE2s9h(IHsmD-I6j2X|JCa`~e#kTWwKC3l^5$SVqI($;^*c z`=R2GESS}a%Y9>C%#@I>WYe;2aKW0?wl4#l%vQS=0yXS|%M;<)_?#H%LiOQ7zs08Z z3XOYp=i3sFL@k{XeUYS@ok5d+YfAoz%5VuRmjhl7u*ueQHj&RDpdxO zWSUxr>IP74UHak;FA0dGHJvInp{Bn2-_U0u)Xj+$kj zwutM{SzxuxTTLAUAdWTUGvf@0P;Uf|z%pp_xnMn8NRs`F_1JxvFn2lA-Fd^vBL` zrit;g?Z;AI8c!JP>U&dQ^WDV*)o2-jtd1>Ibdm!BNWV%G`SKvQx-|v~3t;T5w|+Ei zpIM#F2(VGoX7ahI76L}g4~S64g9TJR9*(Z+wzOJ@jS4T#-;{yLd+NWdZ+y(Il04v+ z)8tGu8*c@uW$M-L2(osE0b6EWwmiXv6jM|ZvJrUr3v>lcroLQ&ZqWz5bASXMrwMql}pxbZ-2et*Dz;qTCjI%qsb9+Xb?@ zY&%R@^V*hBvH;A&-B6}PsP`!vzi?$njG%EG~npO zoZ$7>L!@f zyIbjCRPil<%?eD9A3xqy^Mm17W*5qTWKao#l^*$L0L!hz7MAQ0-&U`zfetI?P3aT@A^6)OG1 z#}jIZVx=7+e;k{W2ukp~6#(NQU;`j5Smt$gIlcDEh*iIabyZi$$D(U5TsbRa{SM65 zmL>A6jk->WWZx@oeM36{wRnf17Uu=B_>Kz}+}Vtce}GORrG?GXG@qLUx>QLBOG zVcAHMIR{3_C5$kiD`?mzGHFTlyqwJpuqI=uj1iY}vVjqto9*6ZD}i9*Km-@65Wv~bR)1!@XW@IaowFJ^2BlCNJq88_PAuB98oW;3KI=0$&$4!660Fb;rlY<;s;S&Er_z*p$VyZ^`iCr)6nvNn~)+SMx}; zJo1>HSuAVEpw>Z(l-zj{&`%bySsz>O{L&7=O_G8Fk~63v=^|d5U;ooN+1=-!%{h6h z_MTKW7G=Ykq$LvOYW3C6e)h96Ha6D6$aG*m@x&AI>Z`A|wa>FW6F@2mM!N}Ww>i1}E?{gSa4TY><^VUz zW1^;+lWC@DJA3m5Cw-q$XWDHp%8A+qIZ-_)eetHO)#{*DBQ~{f-#!m&q0}M;HLmIr zVkDL^g@7!??%2$;zB-$CYHOz@RT<$f?zR-TZGz0;8DgO!6FaGUK3Bc9Sriudt;vrU z`ZEBiA@V)sTmh?&xoLeit@=@QyRP26DAAmAA1qvw_`z>DfIC!=l-8=P0GCI~Q5e+X z4kDdtK$Zq-cQC5m@xW%8S|JlP2e@ScU9b$e1iD$pExNQ2Sl0U)xXZn@CdaGibo{c~|0jNRjW zvU*V-mXBpJo|E;h*aZqIJ`1NJVL_|ShqSEAnxG-@vE8IBpd~rzS;LjpP2Ot3Lg`OQ zpcHB$Xtj4qCbVT*N%^RJJ(4mN`1;#(;Pugdj~m|TJe7c`uT#NIBiTN{x$b;zZ~m!7 z=U$TdpnT?tjW^8HT^=SgNxE`ok zx-4@2ZT;a^J{gQ{H<+8`VQ~_Ua*DK<9U}Io-HN;~%>meS^@2PWeJF#~I-tc~r&jab zschb4sM)dgRk4Z0AYgMHEpUZIuWX`Ob2gNA#GfrQ3N?5RCCf95OEO3JvJ*GPCGva zF$;>8`PxP?_L|!3hV@W7N?#iI(P*j$7W{lIXSBH{a_LQpHdjQ(kJp)oZZDDoPX2{OwU^C0IM%$1$DM3EeLm;VwEQN?@sfau0oWcpm*TdimaMPO`WBM{1WBFlL+79Lkbqf=svfr6R_OS^ z0#Ox2Wg(h-sxQBog4^b*MAzPxNE;|?OUCAn)rsj@1k{QE-X5@ha=@)iOwQ}m9Pu5j z&CAmYYVo>ksf;6P2eTx9TGC**y$M1CPi*-ZY|iWWyQQNTpvhfpf}X-)HJO#w+(;qcyOz3Na@D= zB16+6{o}2@M|U0IKIx!#Hv`+Qf?G0stGnIGQmHP<&&g}jTV0XOxYY2MNZY{9l3Q3a zCM4akWxbRBwu~&TS&LF23fH%d{nj)E=Nsm%eAb&`ze zDSlWJC6$o&tzm*zBe^F!FEcVL%Qg43FF|-K!6&!{nUHM2rW@(R-Pmna+EA~7qzWIF zjfDz3+8SxLT9x&dy{?t|JVB%>hj zbaw$;5Zojn|B&|2Nq|OR=SvF4_3E}Y$Ib?-vvP0mMOo5>Pyf^p`>B!%W)x&%wjiVh zA8V$u9xUXK3NgBnPL2mHmjVaF3iTk60EmZL>R}tUR8S~DVbh~RE%_`kSqX>*aV*Pq z&=ySL)jM$)VwZAKXJ)%{Z4}k8ZFg4(`K*OjjHrtdt1f^XJp}Ipssk@^(@26_svzKxc`AC4q6;D63u90w+(*(vl*xNs&hG8H(%4 zZ2^;_$=C+gDVlL(x{@ow8HS^%a?;r{k+po*4@dZzX#eX-nel?&Ye5w>+gZx z>3L3%4axXmk6gTPUgpnUl<4fwq%`S(?bI(zZTOJ8pqmoZyxp}yg8b9n6%|dVLFTha zwgjXi$7>(R<2@frUu{L!w`v~Dst)w3ajODd2ifbdzuqWW6KDF@x_fHdk+y&S&;PkU zo}c~fXCBlbD76t+4oD>F(n8IWt?w+9O~HU=lgdM8ss%ZlQe|8D!K_siThAG+IQoR% zw|Y)`4$4AN{z!k1%`JDgReEH6a#}Xr@3^+MD)H)^L|0yu((tszeG_7C*iR{_-R*LZ zoq!vCu4{{WB`>;#`xc#sz|>xR@x`VO=XMM*9SDE)M}OoU(a$~i zoHs$We2!&T)^EkY#o)yq(`_9ybaS%Oi;!k7q~Ei;JFD%p`wQvb*rBgrpzNop$$w|v znsrvJ=CwBJffUAH2RFapnXLNTst-;JSq`k6m!9#1vKjYm_f}|(aYD>?0Jtle+TAYq z$bK{?M@$=^efe(3)P`#}@N1Fg{Dszur6HE#X9_US|f2ZY$b_?9pxA(yZAAIV5PB9Og zPx?9Ny`uMw-cRb@Km=HUP0en-r*yfEYE1^?WtpnDdu`sC;giQDF7@nz+NT!SlEAD{ zOi~L$mg6-a{fx@JQi=%#MS{Xu{Ttod^$9yUIVm$UGk(5)uQ#JQi1l58Z#S4*{3*P7 z@3!-2#(M17G5>JHXKtJW;@B|CHVqpH5(F0W=){R*?M_OhVsUmGv8A9c|LlrZU6#X^_G>wrZMG`FwvmnCzVfGOMS`0SJ;w+=FCAOJ?gi0IP zR3ppqY-H1db?CZ>8b4<>O%C4l1TYqS`8Nx7!B5JsWd_H2wcI2c`_X08br53Fc-My? zOKq^-b~;V>?jBRy1GY@|*0@(f{QyFKpR^}>NQs}u@{)W#c2K8vbF!V)leAz-Jr69S zU>0ciY0Xpygd}BuTCF%f&!l5ZDj*R0KGYaF^gCJ+Ggsx{D7dZc%ag8yin-VyTm*Ok z=x1GywSZj1E!24|)mOQPXM4bwcY-i7R5+0bd59T=dQ&DfPT?EYb~8_^+h$ot(je!Y z&=5FSzmXkCTrtD4nh2uQuGzd-3!otr+ZM(IxGM;8c_V9* zV?D4c&e;XaVgL+vmgihr+hWmnf$ zt;P#K8Q2%Vi_Ltv2{;cn)D(w(bD@NNxl5CT_JD1drdll~ty}uQWiv0SoOF^rAjCp! z#fqf<2B8j3Np0&akc0-g9pE-<8#0eVfrij|r)3YYsc1no1W??3IaCohw4adK&pxYA z%Rl6#vRP^UiS~NnUCm9Hq}Er)Oqy9@C`yjsGze;YQ!23SVSW;E^Mj-QSj=KAX^gAw zA)Dgs;cbR|U?C8*^DJv*@Co(Dw9LqsD&ol&iwq6A5Non*HOW85%*tNVP>Po|*EsNj zZCMjP)H4+42H#o|i?*Q74+#Jjvn;LyhYSL)kj(nWv_{&NdGAfxz*gJ44E6?c7pCl< zy0xe&_lW2ww*xP!Lwl0+Ag%SA^}VGrz_k7bmZ^lgO(oSS&4 z`uW#nMF!=?(&uGl>#B^cot5$OstonH0aLEixtbpk?H$T35QP|B5|iWa`3aq*p-N*$ zJh9&v@4a~{?!@=V%?1O&0aG4e}(`pG@z_MEd(wh$2l_z zYvNkwXxB^Xtd+#N7^onP2$esw`w02cLZFe9)?|YZygeKFOk%yEF8MZyV)c1Rov!$| zz%2;1j#s?x9?sZJ15;fze)tV_q&+YpfC6K)Dt|cvr z*&G99y)j#<32^m1)@Jg4OgBCy>^H%n@ig0Bufe|BocDCNI)G){Wzhnp&E#qmt<-&k zWh!ISX2ANLAM~ZhdB@(Q7b6&!=Dq^VR*yw{Zn}HZGv$N_Mx7<9sk(igcpv(?31rPZ zH5&8aH}JmHkWZ`ryH)FL$fVpjr*b)Jp05Vbx52!&{e2WQjs*`D=;5{-{?rKM>gP+q zuGPayttm zHYM>kez_m6+;l<{dn(mG>wxj*OQRx*skYP{*kBrQlf6mZyau~zn!}BKpua<{emrrb zXh3~%HCSPFYkSa1y`Pts8}{3)H9(~S&gI5ftZrc)+3v&IV7n;l=^@>18vx-4e5uux zZDEfJe$}Y?V5r5V<~~Y|@0!nqxPCmf2C5=Jfqd3 zll6@ixwc+sbCG9r8#3n1)-eZkePz#8$W#H_*=i0P3g%Fe->8xP$0V$$K?9ynjHW6 z(sr@BPw%8RrFP}^R3~)XMB8jgBKM@$Yu4-Tyxt*+1}43HCU!t4n=9_MT#wkK>5!tF zD3^CRUIw(H4IHD~n`l|3rBnX)vB*_d#lmaJpNyVqM(nt0s5LBcn|%W$bqNo3-1A(G@VRoBR`GJ zc-v;H0g!Qikjgc0hs$Kn&dJ)N&_IrN<) zWofAu)H5h@>1C0({}|N#F*oN8Wo!!bue+Bb-QSXPKi!gXgO|vu4a(3Aq!zM}_a%tPhx&5@wr+Ua!_Mf><7na#WoLf9ps^0A*=UnXb%4?Ai zHOKMqyEzvW)5?vXOW)7A*J1bitjwR?l&Sm6(l;u1bpz!){)v=|B>DVpQ7%-0L1TDLu-STCT)BoN%vulc9|8MvDe>JeI8kswH zyb)D6D8v8%_RiDj;zhi9@hl#^C|Lgj zPu|3XKM=etcoMOwP+LW*BGk~@Hpa9~8`9nBcV>3eP3XdIvPrYadys5)XLb_Um(R|; zUps8m*!7efM$d5TWWa@m+>XtS*wJ=VsT=GlL-r5Tk72fp*I&ohnC+)WHmxpzQC1Gj z8bxc-W0~KLqSmPJ7|2Ob3Y3Jip&wN&5T6(fMZ5xrx?iF1xCQ^y&j&9QW8e zjFiTSXK5wpP-zKp8x=a;ifwMmhg>tTYZu>SOeaTKx-!T*7iuX}qMg3JkZ=|#sHJfH zE{;5KnN?HMDJY^(c}idFdTqiwM{5g$^0PMWKW0(?0rwe(yfp1P&;`P()2?$A&nJT{ z(LhtGr@Wt~C8DV(HvRi)xihtUXt_h%Q5_TpY#!X+RF|dYqDAwcD>@-AGlGfV9+NHX zr3x|Rx*K+p85gr#G>#b@gDe3s^Hr}&_nT`r_g>l5Dzs7Pb8TvB`8nZ(nv9}-!aY$< z@y=tw#~AR49wakj)6p}1G<3qaUDXV(3OUxEWPz@QH>9>X4*~{fRZP|$S3yffpjl~? zW4-)C#i?ylaZZKSQ|wRsfM$oi+cg3s&*5PE_QwFZaSW#b2g4g3CcSi(`zXL`!NS7Qvtpi_ xL}G=^(lUqFEHE(zm`&pIN7}9xR?nMIvIQMH>l7DL0R#X5002ovPDHLkV1hd{HW&Z^ diff --git a/iron-tauri-client/src-tauri/icons/Square44x44Logo.png b/iron-tauri-client/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index 7d43e08d8356f7534e52439c0efd41261fba9f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3026 zcmV;@3oZ1CP)wWXD9i4e<*bCDBcf(aoMlwSyyCyH18LGl;KZwL>0;{ghaqKe{) z7pRaTNs)vKsRYY$a4gHQquAEfd*7X%p62^{re}IDl2w_iR?n_xdrqG|efs;l1^CL9 zU&GRiuOl}(2`GG%iyKl9=?7q_sc+Vf z!afT9J+$)FX>WqQl2Bm?p+a3JENIZfg#xZsYs7FX!QcP#Ozb6D_AId=x%&~XM$_E z*nSt~JO3cCJz%0tzfIfGZL$*0$Q><5;o{`ezd~V-=87Es0kf$=#>IRcQ8{a;=5-`C^l|l+oxBRPm@gg>BuE>;|N3H zPPKQHcerfK(7P#MbI;#rGBk{RsJ%@zTOE9Bd5OMu;rl(!wnM*PJ-4F4Z*Fel^V?gv zeCZ+kS$XJ+JB1_tcV~LEp#xpF$AV4#GUR*L+Vj;jYwfAu;zk|io zOC(1{C7_=QU0iye!Dgsq%gf8U|F^%~#M-l$an}19ciR%}Y!wcI*amGY9K&+Vuyd$p z9mfLeL^7Zv7;r9+l03k(QxZX@2*2OgjJo6q43vw0hZ8l=a#>tFg=%#X>sLR-(&NwJ z=hZz--~eGJAGPV(nsyG=^f3S%u*@t?whZ5AQ4t+lD?DVg8O>rOgQzgW_Ps~X^?E&2 z7nd+uDdXnGI#wP#kC#t8h^XW??YUy!?>q{yZC!~ZQaK2!!(0Iwe-A$@KZKJlpj0So zXJl4I%!m!vlx#K&zt=|f^f`on6SavCJIyZTNjOP z4=YnHrg9yGj%WF^Ee$cCWhV_}tmW2m1|;Foedy+}h;6)7X`w-2bD4-u1BgL0)9gll znuM%d!?ZmCBZ)Z3>jRW*+`;hg0WcwX7r>eLyyMineqEb&b z@-V>pommQ;xSfLP&_`tf7K3sSsZV>UR}aa;+{eHR@FRwZ;U4KQD?%J(Ca{s6*F)KK zv)G%M!OrqUtlfDZIa-GInqACJPbCx3NP<6y6!_?xaB_I686F4Lu>gw%uo#+nW;lou z{!DuPFkHfF`#LHa3UG*xt**qM3r|6=UZz&)S@L5PO31hNu=?N{w)X2}RT+vca@rx% zxg7!K?}8v8y#tL_J9Y*!5^E|DY7|n62EuXa8*`tryb%i9>odg zU(m?_&u&+QI^($X#oK7#zl%nvODo%g24<|y05ublS?*KpvEKt=|ZjH<<2N zQIkmRj#(D8=GO}I_^Vq5%04hPqlZ!wVuu))`3fGVsBP}*+t_^A#Olh5b_-*1_QlMy zi@2nRcB_FMpI~HjP`%a=z|j!H8~5b^%kgJL^5D!tc+_xyGIALa*-S`UKGD2~^Y8o) z8()2mb5A^($bealoFUXejbHn|PotAXgYwH=rxN9D!};O>o~Uw;pL8nCv`!3oSas4s zU}>^V_Um}=?{8x3)&`z<`WbC|wr&}0s@cB2=Ne>h_YNAUb4n$`W2JYI53Aw8IsQ^v z|1i(R-*JK&Qv6>I+W6jEZ({exI?k(3+fUdu zK<$ZUCZL{hE^uqc(X4oJ*=8)OGT% zP+9e$roCkQYXGbhJ;)8jjPeS^v9yvo%!U;7)ON{}Gbj`aXti3&WHNFv_GO|q6JiPu zfM^$JA0^1b90bKBDj`OuM43@m<0N6r!Lb?U2Iyr$l#1)P!s(;Z*+R3?pv00Q+THBbPuHed*D>@?VbUNsEy9u*K$J_x1U8Ia+VPPTZ06T?8 znThJQu)lMY8feB$2N75sXyQ~D12|zhjDX6B*);s*AqjB9Jq@Q@huhpohxQw0W@a>d z#u2y}&~~vC(|}|mGZbMjUWnh-k0*6JU(5tlqdP#O`x3Uj$kfvGOzwBF?VQ9rQ$NA3 z%;WR*Pj$wSEVq_Z412P%x_+-q?o!9*QiE$i=;q%6guoPplwT4#{q1E9vBK

      oK} z8lI%gW6J5Fa{g%qeSd^aqi1t(IuTi$i`jA>^5Z|Cv+^&Ix z19n=T7qoPaRH^?9?IQ==y1i3^(|+RI##CQaz;XwII+f+*|v%{QAGTg zAVZev#EFi}IO`re+4$JYr5(v`?ICTy(81!f$2nMZqdCfyA+&ajFuIR0V$Xv(e17!2_=%neBt5E&SJ~`I7!x{J_86YQMbCc6|-YH$O(B{Fn6UJmaDd^>a+V z@^6?tBVcE~r?Uv{QivS_BZDA)A6Ko@0Pg<3#Qjg+qfa058BP;0=WzJv7Mj%#q+>rd zV1)5TY=EM0krGn95nG?Q35b-TwR!oU5FnB0AYHI=^+T5cI$_ED7*zPe!lo}D%_+XhJN%@qnB#obOn0nR5!lm~U*nRx(uo#9&JVnbKvEW|Ht3^rTGkaj3h?j(I-NFJ zNMWQ;Vz7P-H*a6TT+KqFe;A@~1f66N=pO}g1GHPxrZx$s>+p^Y08F4_Kzbr`^Um9T zYHYD$fDt}0!~*Ni|6#m&8>0maYwHeN*G0#bNDu(eW;+<1oxy|qS5PXI&{rD9(gLs` z2jJ{F2JAizr1NBw>jaX!0aDLJ5j7~>kMXh|8(2$gi@yjf_}O1XGDY^gjH#8c@zV4G z43AEz9XO7IR4S#I(UBI$rVe8Ik4~Z12A0be92p

      vO#k1K`62Z5blSxD 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�vq=`?(cQB*mSQ;ER5ae_nNL}K_Rsk)-P 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

      4HE4Xv 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 z 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�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

      *CSy9zgj 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

      l>gBkTz^cg@Wyd= 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Ǚ_m&1hg~Fcj%)8DE$^0?m4`C^L$)Bj?$B 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 z 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

        2R4O}|>gs^o`7Gv1lEKvF;uB~X$i zXp$j+hlLh9fmXZm@jm7E7?&myQj>rnifvM~hwX+{C6SgtftSw@dl%3v1Kk9M05ERq z7mz@x3!feVB{ORQ(F^khv?P}vo)$N*srw5qR5)czt4O$X*Qc|`);8vX+f2xSPbW=k ziYI7=TT&D#ArjV-2T*c1djZ^O@&I-(5%3`=0oH*W)Ew)tve78(m=bjGt4KQ1xc|!w z4Mh&{H%6bd8xv=3*tvu^o%M;*EOcnoWuL*Bqgp-3klid zufP8K|H9sXc1e<**TLu$S-!nDGu`7c18)Wx5FQ{15+p%U;7d^gDJ~I<5{*PjAEY1i zez+g*d%xVf?pj*!x-t+Y8h{2QK>z~`FoW^lwC^tOP2AX#xvO?Pbt2+KWMox!PX|!b zRhf||PMpj<`!W03PYxi^^2gr*|6lyYU(BU{Q3}WgIjUQbhm_&@V57`7<)2Ki+w-&Q zd3j&HO))%=wz$y8M@w9&<{=W0d-B}KFln&l(yme9*Pk9g!JJ1&qXEelK~H};PLhNT z&#L#lEc_pO9Pbr?ZuW-VH}jUwt!4n9ZuIuoou!ugx9`nQuMGnIgQqrrd(7l9p*vpiBsxm+KP z=ifK4vZ+xOCHd08!%x@nN$l{UW7b((u(#iQ&E9_NmF(OJx1sR!oD=|WlQcksTz{d$ zU=ugJ%D9N+0qA3OGXi~NMEVs3YTp28ln!WF|3AiCuX~B40;~siZ%K{YOLoi)WowX& zy>|Q&yLSB_?bNw@b0XmE?966ez0Vi&(55$`E`Z7~*3Hrz3u+iBlN#5@riXfdY(fBk zY-k{m0sJBTix4vv`#8qdwP6HwWprOy9I|KUGGhRM)9GwU<{s>|#XWtY>;0pgZnK2W z1G4KP#tpB--#cL=u2TT+g|+5lG8=hOJm z=zy~8+0cj{zp5~*m=28{>H%noo*p&3?rG#e`(7}&&({N_aqxUfDQ{=oZx_>2E(Gs^ zQ4u@`bw-VD;W?%x_#NULxgNZRsyu4t2H(T&-^(=b4>C2GrHU42vw-0td+_1+i6CEK(<7kJT2fof33Av z!1wKg)hp8yK^;pu20WjhKXU%qNJ036F@g?qP>@4e8Gi7b=KMEV;Q2M7s<&j%%%=9r zVkZOt#hmb$=3+WyU7dWi#XWV8*^yIS)x6H|_FVfmfL4#)zn=xa?*RBR@bAOxFZ(QS zO15U}lilCY%A`GT^?6%dThG6btE=mqK%0{C5GoIRD`)Py}{3%mx5*l zfd&EZjbkywr3!vpK|v!xbL;x~SA{?&6>8OrmK6FBzk)QcOM?gZNrM1u#Cy=n4n{ec zw%|Rma)HME@NicIYdrgI3=QM6F>D79Wn*VivJMUV&ChNpuxIwo#M}NkPK(5Q8pgl( zoCgql@*ooa)ng7f8gnlQfb~wSzHm~GoAquW=INT{e@WHclE`cKq5wxu+S{i;Z0D~0 zo!xWcLJkTmD^PnI-egZJ&~k&&O-(&W-N>~GiAt<$#DE(&bB_oc!}G@`2G0?4ugLv> z{p(-PD**s91OP8>3h+nAyoD7o{Wt8@>E$k64@O7Q1Aj>6p1h|A{wFh6bfTB9PfEBS zNr5p}6a0%_SNL25;14{W@1NP)-1pAYc68yE%|iw_OKA*AqZx*bl?bN&7#J2-VW(U# zzUO&Dmlye@edloMuWLF#I#F~av1>Xs0}!Vl{IJK6W+@R6h0`Qy11@XG3&64DPi zI;CZ4btL#&h=JGU0a%OCfI-~bpypHC0N8B;-~jUfP3M-haDPq9|LR<;%4q0S1gzcj z0ef@uWji@Dm3@>t*+zcV&Y!=qO)H-pldAUd(7Nf6LEv@Mb(15wU^7CF7(fAlN7x_d zAngAuzw#@&oa|FiJ+*BkBW?h3gt5iYF>}@g z2vvO45;goVO@uH%`z|QS4WvKx{YU5@DIMm%8MZIZ-!VJylL^PW`H2j_4+ejk`lP+=+>AY2=-0H}gi zdau5QUlj?pt0ns_FjZ0{B1G;2?{9oOd(GHr_PtuOH{W>KZr!|L$B&=1Gxt1Xle6=I zG?|qL0ZP4ib0oJ0C|#%u7=`Kuk2Q#7)X@W|YaG;R4AiInu}?{Wt)Y24!!*wS_c^Jg zLi<07nPeAiy23z*?DEB*vwPnD3%ht=*`}s8?7+m79XNO>mjTssJ%WJ(f$!$0>SElm z)!V0cM*1LC%J;$pdVc+Yy_9+W ztC{DL=isqvqNe`v$*$**pCc!_k5Mmw$MPiAhE!5vq}7T7H2FKuaLh~pR#xrdEcAbN zW!k2*Q0~zq2Q~?21PbP^$+lOyU9Pu+Ds}v^=IF@)V}M>K-_w8bFaAaTJJL#s0;s0F zeqK}^QcLw1`o}?Ul_003q8h^2=z&)=Bv}rT0T39;zK0Wxs)fN+f%Z7SIebp34w@8EQajl?KxRx^CJ%P#bb}-=AKE z0KQ{+)5&3*nYx}CayPRGzk1I{H29> zGgt#)H?)1~Or)v)f6-%=`Tv^i!b(rRpZB1r3vlLPdw%Yk9lH5_JAMA5P0!BQM7GIM z?M-u#UgO`3{3uDuhjq1gI$6=|>W5JOsZ*zNPyyTj7k=Rva@~LA{F$>!IsebV0C3P4@|v#=CCQN%ND@iTU7wVYw*6|{bGq4 zp2HY;|InooC7gIYy=~vvh6aU~e+Iw;lvQksV5?zkRg2UV6M@Zp^)y82`Qmw`F0@BJ zqZ7D3^Z7Ika6TI(F-3sua=t9jqh5g;S4?40R7vakm2^nn0gW0O0@{_6p1g8&_`UO0 z23%+Den^9y{SvezBIl4BU~3!M`dqQ;nQ5CCpU5KuYa3D#W1XF!d++7;l?HHNyW2c~ zR*8TOUf$3C-bW?CaH{}b7&7lu0dU|1K-UHD6e|5s1zcph^XsD9c*`sA{5ByQ)ho3{oyP`Wu zr@RqVX%4=oArPB7C^80Oz`x-8mFu)+QI7lHe#*wKyk?7?EN|We84WF~1S~ym0={xK zRGJn)FwOv;>YcN0{~O=;W z>euKHfl_$~sC1#>sbzi|ZNQ;YyqNRxE^_If#g zwlmfq7`z|t8mK7%FPp8`((>ESQiiI@JnJvcODSJzkbC(!{+S;VRVpxxD!2cVL_At_<#_5Dp(8E^7yn-&7`~Z8T4agtB{E@1HDkZLs=MV+qdUAgJSIhkP`Q`c&)Ky4HjWPYs zX=MQKg>8H_J*U+SGz4@kMnEVwr0dEQ5J-zu?HS})RtG#{%X~d;W1l4dTpD= zMJH|#s|s@uoCi>2jMkz7W%s_$YY`Fe7gN*AZyE|mx_cO@+e}N%Vr&D245Ozl6 znj@#}xeK4Sqc{J-&SzkXFZ&??L$3yUQzu+10km|9K(9T>^>J))&pr2C4j$M*(ZUy- zDIx$M{sHvA{q1jWmTjp*T@GqJveFo6_E+b5L2NL_XVas$I^RLFI&4A zGKHc_d@z8ikHB<;dhE&@U)2O(h zBGOU2|9_qPjL82t9Iomn(6Dy>>?8JL%Qm@de{biqkU7He=g*wZWr8&vspWm#P_SXD zBr7)-)PN(G5A{Ag2gN}!{Gkv3zylBDn;6>sqH&B$()t=|)bo#my}Yz&-=9wH<(WC# zfTzPc|4qVQ2L31R+3xu#Wts^Qtp6YwSCIZfRzjV8e@)=u{Pbqt|LE1%?87&o&pQ_` zuVtVlybXB0Z2W_@$NR>7Fw4gjDCt$gfP4P==ks&H@}~qY&IJ(u_HX}oo)!Rclb*F| z39w|2pB)nIJfoc+vF64x9>dg_H^bn{ekajSKRe8qD*$@^3ME5Q@1G@uo2{gKpM84C zcn(GnBOsJF#yXH;ue=IPwP?Fy&WDBty>V4JRK`9_8mXY@qZ+=C0@q)GpT-al?PPc$ z=lzUGIpC^Yx%8$@9GtQ73>Bt3NCPZyeJ6&07e8j&9pPwBe6>Qg|NT zIdY`<7hXL!b8L*C{p@G+4t@X+YLvs9#5wq#AzBrq8Y4dZeleBNZIU!( zOUn>jnzLJ3n&a5v19s@dhx3x#&Ce&hU0M={^Ht@5{Q`JhMDB}B7(3?@QeeOBfZLkl z;0=I5;CGDZ&3+&N?uYz;f%h9Y@?X$Be=GzfHUv>6h{M#~F3eu=id52fHx3W|y*!;&f&N9LYQcdWY(@FqF&RN%q2H z01s?fzC4Lw<0A@Mc8Ggj&0hQB+`2tGvz|o(=6arePvqzD2_gI)>#F`~6P_KnSOBPH z#J^aNzY_3kfPakFzwPDOJul7M2VeQFt;|l_@=)d>+I9(96_wE{4((E>palScv4#|m zw$-I~4DkHJKm5Zy^pBEGdiFFFnO=aQfv6Awije~vkg5%!ZGV~X*M9bFk4wXW-nph5 z__sbrV0!Vr~ z8|oz$vy9Mkh>qDOZ#QE;eX4pT(Os?VmmjZ5uAy5VQ)(`j>0e_G9 zm%V5AzxgA3VDb%{Ud{5s$>KKYWhICa__d_Y_jADe2VjTyPf{A0^?dJt<2QaI5B>j- z|M5SzdB+S*qm?aL`7|;BybND+E-IR%=_LIZho*@bMPN08k^mL3IVLL+$atr$G@}Eo z(Weok`E(_-sxhUXW0nDOUA1km{-~_B8d_Xm;JD#&cVX5WOSrkZNpa9NwO30`_Tg^^4NWp zVGtNRD1aYCB|sZ`0ksT(ez0*6ud5oP5h*aT%yF*?fMqD(4^LCpAU6VrvQ7E;d3%2N z3pR7@C-#B0OZLvIFWAD_d-K};;hvYm%~8Xa+^Bpxpc)G5h0+MvBtYT3m1TQpe#M@g zGMk#|^&*G&pLw_4u72lwIe&)zB`2B0@-~w4z6!NITS>`zNpUG@Bk)f)cLKEg9lCYJ zKKlCi^8N;6d29A`8<~u3cCzr5`K`Haf(y<=SRa5*(I9%@81I*V`IqgBU;Ltd=R4oo z?9it#4m3=#g_C8gbygs)`?<)0W&!i_mD(Yhg@^ zK(SJS&*6Z_&yI@+hc|L#;Nryx?7@fMZ!f&Gj+^X`x!DT4f*4*T3)}{nwn+qxtvU!9 z@s*VT?wr;u0opZKhHFirR%_b5unY>uEUN%WVr2LB0Rb>6dq3*u|3eqZzvx35SY&zi zOT$mt^yKUI{)Ja9y>ZnRXQ%Ac*?a78wsERNuzHdN7xm(_wpmNSHa~#*hL%0QwqlpF zu>X&yQ@b`jXX!>NEq#x4!T*%7{gWhIsFLi0_g|FvF9QFh0r(dP2W9YK8_O&9fmi>* zjxJ5x^m@MNn_$j-IYZ$DR3CledxG}@_3e;gWBO(51(ijoUi$>7x$xn4?w)%1#X>Ql0x-fzBZNmM~A4Yc*IkId=3`TYanuizds z!+U&e)D9j#mSx$-?db8dc5~*{twun3_pLAcK(`M?wbJ*HR#mi}(0 z8JZXXbwIl?0-iJCU-j7maEt2?GC-h(VdtLBP+&?LL``NK;FWdXC zJZm#6>$y-;N4otn@2o9%DL|toohtZ*@=q%L(F-N`qVD~h-~8rg6$eFm2(AD|cAn#V zO3-4LNey??!&bs4jRG$rt&su(u98Q24!vWF1<@F#C(nbR$+QN3z_cf657%Jif@?(W zf7}a!mJtWvrH}WA1AGG-Q7ju|gn|YErIl%<@Owl40M}Ae6#88wIZ-1EDuTqZwS*A& z!SizC#c=+LU3%wAHosLndE%tq|L7-eYHo3>`!Bw4RNYLfzH>D+^J^0UBSCc6@idaw zUzh#gW>cVA20+r!LJa7L1?quT0PKSC;^&iEI|59;|9xTq0?R||Y360;f;-t4|Bd-k zyR>k`9_ZY%_pD4>GB;!6%ZoOC;GhkUj^$-UP#Ek^HOb{g^AA^VQ`0ag4sK%HM3=L? z|Br93*c&t1rnA1b<#9}8p4qX}UD6-=`2+mD7ozWZQU%&2pl>nxev7CCs399%1N`%K z#Jx}5u+Lxlu^ky7v6Z#ayot+t4>&Z3taafYEC~+ym!+AIz-7HX+4p#l{`o)u=XnI+ zzx}uWwyo{0c92x@8ybWpfilIw9s=}o3E~7icIDG1QUqq^xp@!%Go{2nZCXWQp{nEg zMpiT&cnz&g=;p`|=G+D~2Jpjsq9LJN3k6~o3eu83c>Fk6y2wZh*IyL@netHOMtvVh z^i#!0H6(oHz*cl**rumv^Hjk2q12|QW->rXZ4!jZo(f=U$(8|-bi&_x{ z+Dmg2c6sfHonM@{`&Jh0-i-x2HnDCKU}q0?x|>CB^UG(TuYV?s`18kq_IIG zN-HdwBEa0#C{nVe8V?} zVXp?7)>Q;7GCoSLRYP5{jXnWQ)}db`qQ=;J*bX?^{cH72n2VWvO*;Nw5dbaHpn@kc zmU%0gF_2^)_}u(~%n+Ee*Ox}^_~MeC9$K;UW2<)lK*tV_W*cP&NNCxc^g@P104CO= zGgOHyVDrl!yRx`yKh6@_a|;Vw;Ex*#8sI@5&vTN z02UVsC;@-`x{^%E%7&q?`#D3|TWrOrS*AA31$8*qQfd zJv}-!{;PlWuX6B5GawiT>XDQ5r(UT>0GLYPc$yMox`4n=!vqHjhW<6o^AqG5Huq|P zc)d2QqQ}j-F-(s!$lTXZy9)czh{1WRW+2Cc9Smv6_{tcrlNv`fo@gAAIaeb36n8RXcO~v@L9m=3PQJy?%iI&~UgB zP!+Ci66c!e>N_!^zR}ZzzKXACW z`6T7WPd{1-b*n|H_${S*|2p7L8P@FIg<1Rf8~ynp@Ie?3d})X@sD1z9&7=uoCVC05e7U* z@f#X7d`!#ZI3K*miwALD1Uxk=7;PYfUrBZ}LU0Y9&vj$&oB~5CON>KP0sLLNW>PCd z=c=SVZMLK>g?XzQcc2CW*H{%b`5YqyBp|M>WuK2M0=KxlWK;9mI*)d8LvM0! zC5r~Ec2j{#kBifh6hKsHy&odrE+FfG>gwB>`yjdk4$=T<)o5sGtk%5a0aXA*T{_ur zOT_RX$^?LX{y*ACBjY~%xMW^_iiSJm2P`>w%+kyNNEc>oDf@S6Y2L0aWO@9VY=cY} zZ8&?)fo$Ix$?|I_4rH57GGi+Xb9U;;p*%8>4v*P8bJ^?H*0zL3#(R1H<7d0ak1M*)8tYex7Rf-6e0e&3#cak)>jUIjd`*#1emuzx13ooxPY^(QX8(me&qxVUW zqSt->`gMEisi*SaPn|lId$t5F00u(c|L))YyZo{5fB*aWW2g?GH%||kV5JhmtXpU4 zp?2=}DoEyNMWo$|$BmfiCI1Z}~c#mY&YaPEhhe=5Giby10A0<i6d$_imN9l6j3BH4!;c9->wvc>eDc&GKejvCNQ`)!>A`tx> z0K3_lFKJ)%>gX(;EPRJ;u} zNr15iMQ8vA{t3W8%l;p}^t?U(<`1&aY_>$BS$f5`a{FvV!<;-lZ0-BbTsau;XvBo) zPzMjd)p~dwfAmLxWEU@9wEzC!|NCa{n|1tJtFQTUdYHI2#-R}c&}UkL_52zUAW;zG z;5yVU(As?VFknYz;Hf| z4gxzP7Muguj)1LE3MCEFIHG}qd1#|8ayPurfC?1RNKq9)rb5(kz`^-Ls(WlCv5WVf z%RXCK$VQA(hjH<`VYNFU9~^3{y+D|KiEjNj?*jIhMsmkPz@L3AUHE@OwSe1Bdm*!9^rg+ zwL?i7&I9X@KV-w>T1;_J13)|SF?7!IM`{PCtTEFSjhj>1S2J7B zu_JbCcCnXxX9d8p5O52n`*zCm)~N)j+;h@;1jANR4o!3a>0qukfIvX|DS$S-{C#Oj z^gDh(*G}sJbe&5UhQ?!42c2%caGt-%<~z{^_Ko#!NnaKLND&3VzX1N+2w3m_yU|q} z%Z&kSFv#}<{3i|uLXJ&yI!Rm=fW`I^X!5pJg#H5xf?d{sYVUvbdv^Bb8#bRATcg9N zb!8LMO%IznY_0ibD43yRfc|sOJ=gX2GEe|$;|DeV_yHLF+OPdu&iMb^zx~_%Jofb0 znsfb^I{$1kM6Z~+bk+1H=ux6qne$9v&=_FDB9+r+^nf6Yd2t@B{U_;;EqO_PWci_L z5imu8amky|`g%qf2;3S?V9J5utvxNskziDYQ45yeshAMoBh_XgNHZ0|vP5kpr0SXE zK=23m%W_2;Fe(YGL`dEbH~@zZO=Pbfv4az1ww{dJjp>_PJpl4(pF{v+K&T)5D+2Dc ztS3Ml_}Z_h-n+nV_77;`GQ<5{eV>7JlI*Wrsk&&B3V^;+41pp0tycs{D@+trAdH?!2_5MdEy3)T%8-H9JSF5YoX=DU z4;m;0awYmzMFY^rV2DFpq@Pq4?YKjL^&h7T1Xe8K2kdX&Q*{5$DKp z$n`*^ZWZtA`bw7nKi!Q096D@MS%ztLexdhW>}*8ka=+c!P&EC?e~7~_wv8d-WUJk9L=+<_C7&R%iP#<7vPMD0?$z}BVZEHU?ed2 z&5nTtX$Y#2mMe{E!>jdjSypkbgT zdjxW=p?G`Q3*yQv{ke6CA9GmL;In&!u)KIP)SY#uZy`(XYcj&%#t)Yv2I3jGWMAomF5+qmq&jDe)W08o(Gk5w40brNj3 z3*e6PQ>#{)s~U4Rn2)JNYc<3SU59Mg&)W1evC?wAi12?CE2%1)wVC(F=A76gul=Jv zcI8>Sm4#@BRx+@X{_X@D6_a7(9jy&V&i}R7Udwa*@M!P3=bpTkFFbZM^Z{`E=l}el z^Kt*|&;D#v1D^&0K!XH7RnfyiaHl7)lE18zXZT&i+p6ZLJ@&ONF2POv0BEf~qZ>*l z)KEGfC!phg8ImV&f%BnZqV0vL*^k%27{VHm6F_4|JMZCdjLFbDqZnK_8c1res1e{F zPcD=k3#P{-e#WZRDq@ zgs*mk)6R+n27)y5_^-bDYW_Gt3_myk1~3%R+WFu7n}3sgx8M5KxAJk|y(@wMoEOD>=nX4ilJuvqp)r9Udbsq+87fy#U*(9klOV6FYJ}RYkj4W+kk=$f zfY-n^$)cx50mX_KG0^uT_oSz%H`M{jQP5I7?VX_FJ?zs@1BdIu_0gUMY9wehh};Mo zUMl>ghLmbW;5?**Zrz&923@t0;Vey%y)F0L_o)5NQ!`s_fRXeq)*WZu=c>~ z+!HaN{dEktvWUB~87G68Q=Mz>6VV5LTaWCV%Dinj=su9sNGgM!t0MR z!eU5%vEDzon+zZ)uh^Gg`x{H3sgP~DBLEE{n`r|c92(N50^N^(^rM{gr!u`bSSp9j z|0`elN}l5e_%rOR;yLPR({rVm4gri_H^pmoPRgbyXtKpF+w2k;HSbSmK3V@t0_2!X zOYnCBv??L;9L$+13##Ao{s5FLi=(&Aa6d(WXbh;FuuAP}-M`L3Qy}!pnY&lnUR7bF zLBw@cq93nCk6#rAwSNHRn(^L|o1uhJZAdhfh4^ug<6}wox+8Y%@KGB%c-pQ`KC`_7 z01<$WuKzk@j78Ywm17H^nv%U?8 z2yZ^=;|Ba*lf*Pds-e;t^**#{fQHonR#xq^ul$XjoV{w3X$B0op66g0`c?x#8^0(} zps^2#d<0RJgpufmjsM^N+kb0c`qG#3?tTC`mF2~u`tulr;0sVul{wCZo~9ZkDo{i4 zL1>*_^#D#7kDflqBx9Ws1TBXn&=DYM9582&d_4}<@&nv(&kXO=$l-la3xUQC&V?sW zA|S@|C385mvmYZI46BoPxcRZ|fj6TNYyzZ)7On?FMXM_`dO#1J*P)T1{D@puyQh`F z(nqW{$Do0s&sIX0ru1mKIvf03<)tt<1t zv9@lHJog=Y_{wt`_-A2YfN&?-76#_Os_sV*5ItI-PjyXZG`x&)Gt@(I!1WBY+bmSm&=m z!LU9Q{t)(uwm(RJ02!PQAfw(sn*03nFaL55{+BOb-V93AjTtif$ObY1T_Sd{jaG8Eo;Qus4>IRPEB#BY_N&|5x{A@@IBOP(#zM> zg02B#j3-m)lMUU@rkZX?wui=boCh6>f7$k{Z{nmG)>*u~0d&(3myy|FM?|1_aW4 zlO3D9WM6vquQHEw%2qN1Z**jMbHmk|e|pm-dlBHk^hdcLzyP2IG9Sr)%zs1S?`vQC zn*G&Z{Z(G(#t=Id{0M>s7Uuo6>`u$`I5$40wfxi?z`?vTK%P+s^_B^qT4g}sC=L|Y1zWJv=`Ns;7R;2hlR(&C(r4~-@&l|iS7dfAi2Y?6FHZ@bM!S>^htwjHeKFE zN`*BdETx={#=V>SJFhDI9~dLo`Jb7z&%W>%b~;_Qg#(8ySzX!8ITIAgC?^=QVGjOA z&L5sX^UqqV58%Tl|BY{aBbWL8_P4*CR|XLLw3RMH=-M=gvbCxzNYGY-p%T&vMyjjN zvDMoK=rP)$`EKUQRV`1|0aY#-b5+@2Rk@=FjMpQwK|@M40%$xiN}vpVO)+R!LoKt! zI54(Up^#(Zd;-4K@^c;8G>O^?8WCZ1hbfl)vm*I^B~~)x!FBLumr6L)$WbQ??_a-u z!wyb#?98z&ijaB#$Id=z*Iv0Q1VDuU#|pY}765D76m|CtChkLlpaCDl`xYa2Yfi~- z4w&>eRIL)o78v`3TC1c1<6u6UpsFN6 zf)B&{Dv?W%pLuWc2~;0IOYnFd?SIdTfi1>**C60LwSysnmMI1rC8{Gp5g-~@Y9MfY zmIC7STIHZ^eK|+`3&R5U$*2a_pQ!@Qf%oXin`G^?kq@rN>H&>bkibX-i$ALHr;Ulo z3(zt}jn2@3#ADa4WniDK*@=^#VD!!Ht zfKB&g4*~hMKL((HSZl~#j;JI97&8RMz5*c1hUkX?m^7{^EPG7{0MHq>hhG1lefY}L zHnrC6hoB*B0>3i+m0eEor^kqMnX4wyefra%wtx9A|D`?s^wYWCKgQA$JXP1@bxDS! zkc|R14h1C7QrC9D@M`HfckR6`8C^yPNQUG6YM%hUh6VzOfi#S?R1kA!B?C!zs`jT5 z3>q@pN|&HdFP6DMSBY`v1wF{7G&opezv2 zDL4^;>9PB8zJ{DNH_dCYE}lS3FO$^=+QwHy*S=dJ4GkI#+I3Gu@O+FZ2!JyIjjz>v zQE6XB3KX=JKfvdi{vb&XfQ>^t2=Z_Bs>!pUS5HMmHRSMG5HcCXU`j#9qEW+$0}Ulc zL{!tC_kioL%#UkBgM`KxQ%GDB8aGo@lNr#bc|U-oC(hY3SEpbpSZ6$YA2k2(djLcu zO`G4p9)WNWZGCGu=D9=mw0Z`>yUFcO_SG|aBh4Z!`|c|FxSl%zvK^S4qRn>39eoP zf#G_3@8k?HBB2t;8b;Sj1dU8k*$=Nn+Jr^{4HgwU();DyX%uNgBUMG@d0cB61Z+1< zgGbv0YiB_MIjbWm!K~2@RuX94e^>Yj8VcEcF3sAJ@htL@h5APip0GnDf zfBy4%a~~KA0DldCE7%h}mE6WqyG9?FBH-^dBD8)T2f^x=clwa64Ij5lH!tS` zKsf<0&;O50Tke)h;oeopK3j~WsR6K`XTOi^kAdE2vKLF5?2k3AG(!5E$TmZ5Fwvj9 ztJ>n6eevbLvNJQ6bJ8CguB@)7J2c-399o8lkUzThX$hF74e<9TKlw@f*Z=xo=T!kX z7hWw7t>f3GHUK!yHET_|=E;2rLWY%@gJ#HF^Xw$t5u^a#ydO1M28fHd(}3@ zlp9tP#eVm(@OP9uQ2`6S6P2hI9^oWnN4nrfgS;lYXFXiq5Ast0l&Xk2KTf)cuT z4hOw?diFRd5v;}y8xFyEz(I*(u0viM-%}=JnI9_;@cQG&k8c_qEJvh)r1#GEk87n- z5PJ9u>{^nDgOLsu`|+erB^gqokk_FBsSycY2XnuC`BJX-3$efZAH2_QE)Uz|5_?pCs*fgZDSU+qlgQfPO!m5y+bCgZtPoDS>yT<<@+dob;D@Q}229 zf7?ec{n%#L^ZtIewvp@*Z_yAuHhTa78T|Ax0qP8!vx6Tze}eyyfBfTZHSGiv0uE(w zac$P&<6wT?s}3qb5Qmn>(E!l~J({mp)jz7}k&Ksr^Ljw0-R@Kqfal>J>2Xt=fDs0Y z4zUv-?u{fz_Q9v2L!f5bgV&_tLW6;&eKd;rF9DiBPswEhuXZO?VIt0t0L=SlWWsyz z>fO^Yx z^Dk)h(ZIwpH+RdHmlkYnJTuHjQ#*X>LA(Ci_1wwW6adN%fYIiTM;&JU?XvIe`F-rG zUI2Gd?al_pyNlJ&FbMl^WIrcwyk@`r_TSrD7HdUQ+m3B{gallcWzmbn-^k-5?@w=! zUNS@QIRCSs{cPUTAH+bM&)m3ns-vf_o}!ils_LKe379*kQ9>DC&C}CxAuAtX%Md)T z#fSqAJdgak@(CDqASg04PvB*Q0D!K#`4s$75g`ijF!G_%1%};~mw-cA^L(6yI~pR& z`qwm#>L6$;g=?oReaQ(Rfm8b{XlW(iH{Lt1sU@PkKaG+w%Azfpaj1MTehwU%u<7ZU zY^-HFfBK-k_mTJ6+JVz{<;L?}0iezL|MA_c0Jwv}^>#S!ascigcfq~YS!A1Swuv5k z;~D$aH@{=)`dVK5KRUdn>5s#EYj_;Mj(k5ne*lq6*Ydz?;Q9Z-AN)aH8Gtka73Juy z5*P?nTK>jEbN?z6>kR^JPfGx$2TU)Nd3s)hd3xs5N#3J@1E6QrfWXIV@S2<}jSsFH zNsJm+SKR@oRsCDm1jdzL7VAT3(#b?lF7c4js35W>#$()eyr&U9u{? z|IzV%p8vml+%*919(RxZbmSe7GjQ3+Hu|ft+b_KJch;G?W%D+am-`VoNlGITj)FV@ z7I^Y#>r0tgfC>BN6U@l=hoSJ3pZsJ~PzFGgf1!KEg6}EMQ~;v^%DyL<<2*LRp$E*~ z`|72tM6P!7)3QAcrz@$A&3Kq*AjtC`l_aNLyo%~@E?iRuMFm@est?gC`H&tp4FP!n zSbLTW!Wg)5-MW;Fe4i@##CsD5go1*wFZ<#s49d? zPUPWara#9{U$B38^Ews+ADpi0UsV48?s3-uC_V04j(3lD9G!(%lWzltHy9}$ z3L{2{2#6rvqd|~TT1o+FK^g{ZG%776-6^4jbcoVjBb1OX8989EefxcX!Oq#vdH1}} zec#uGoIJm&kMnvv6msT;drasTtwmt) zL9M!0%0M}Ph*+%Hx5B>63(?hfLk`ktb#g~TRL5&W)fE!Am|}B+`yskIe+FV_?3YYg zzI)#^biCVi+bC_l!dd_xo?WPX@ z_ubD7-W=^}yi+yZl;T#r&KBrWwDi-LNv5xqLNVw+i_g|**3}kO{#56+l*d@@%~0*U z`|X_jrWKTnXhfEtf%GAWGi{{eNuApm-Ctfur`+s>s{V>KyV^dDF!0v+MCV*H{TEV1 zO0`j~1>=qI-Ox-f#mky!&AZp1P|hp^C)Z*a7d}htvXC=#*=^YgGs|a z*vv;!y|bpENpH(EThisF%8uUnZ7h}EW)De-L!Gq_JK{*vBOwy zeZ@IhTi~fN)s5vXJOalXNY_31FW7Ck%fins@zw#LdicRF>G0n>46|(GVGPAhPqvlS zHz7GR^e`z>TOvKUTD{)=uILT<lejo`yl{`Gc z{yRFc0^DDolr^TA6_GtW=$~r$pj?#i|IXP;cW6n%vb-5oH&94*MWnYziJK}#ihI!ICUJ6I5 z)P!3@C9I~*LrQfY!bi55Tl7bX(xA!F`ReRYJuooepl~$&Va`ZPk>1a}sV{7DuP<`Z z9mvNH7k$@LuWPZ^r#S9E)c%V<{01+2m~O4?teH5%KmSB2Zf70z6&}31|5~y%v9v9p z$OF0R?71P*gLL|kYPcdQAM~x z=oRlpV{Py#cFP_600{yNIFm6e#d7HCS)KOTomL?zRpu9i6VwTq_d(LL*SvgsvLF#j zokXJUlP9Umvvd+fe1SjY#1iy+5mE7#m^E`#>Y8+NexRaRB%*QFCYwK9 zU|_pn_0)vK0RLX^lolO#DoZy5DZa&9W0$EC3BR=JG0i{ziPokR06RM~yb3?v1f7gvBih z5}@7^78`Q`iFkK=3A@s7W0vi`_C(P~Kdwq_-4rOd0=9xF;}$SNxbWb>3&yNxvMmOy zEHgAHQc{{jC3XnQDSiPeArE)^9frIeJG#-;y~bd=a2VE`+4VVAu^yUQ>ELVc5H`8! zGd#toh}M|`W#iUS`G@a?RpY-asqW}p>ET<$65U2%N_CB!YlTMl{`4xspqEA=4p>Un zUIQ#589`4^*f?6oJ=r6fpf4+nzY^9`;*OCgCY@NUdm1N`Dn6I20_M$b3*78h4f$!{CC1Vf=ftY z0ZdAX?QGn#(Xq|1iw(QI1{{Rzha5b0V?QAEaOnaZeMa4iE7^r9c<*-H|sM-TrUD)D*lWn)lTmj#;|u(|P}L zYqjxTcCOgMxzxS@NG=p~^q7mGK4bbca`) zrXp#~E;;O¥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∋BO7|Od*wiLJ4ME-Puxk&@J8>~lF#t^ts zMx@8$gn2Fnff%;iw5a%#ZH;dEYz}!pQ=`}0QeUBP9&{j0KcZM_dsnRHfz~Tn4#(XD zwQ8D4eWilI&}it_FFhHj;!ACYTx5}I6b^>i_Sc50i=?hmg{DM&!8+Q1`l2W7=3cOV ze|uHm?)lGkwYcR1Zw|P3gjbIz?4N*}oPjs*)tAF)=fa}O4E~PuU203uW6C#mUf9S~ z-|dW`e?y%Ow<^XPlUxf|*aMsk=6?Dz%k~sgDh2*$@mU+nyjY{o8|%1~_86|Y8mO6e zzn*gcX9?pW9+YFaO?D5=oibSVsMd9u{;z<8V@_6FMQ_=%ZB37QC}eE}-7(d~P)UYN zsxqoEXS@<+3d!J6>X?c7`nS2b4FNGVJOafb`H|<``=O(NT`DDB)!%e4`ST8cFss`I zz4TF1>!{9e)Lna#CFOlt>6CYvSIsE_s?SO!p`~6V*OMWMMw)kejvJ?}?^s71*bnD? zD?1@?4LCBUzOuMRgcAe;=u!Q9L9V|$&EL7kU)uvzcR#*M*xmEQvB)*-Mp0gMWm#H& z6_G!K?Iyg}l1vS%Qv2r4Bz{Hlu>2e1`tqdhEe(gD(GJ;L04U}9`WxbOWJd~dB(=Mb z-`hX51n@14${Ev6iplNn^iI`-#c%41_lapcA{KZHh@J_=+paMl+)LF`Aw4VlgEh2L zN(LLDBP>O6Y-qVRv&g)sT*dh)d3hTC1MZB+YVtpDPwUWHC3VWa?XkZcLcQo6&PCs= zREJr?BrV5GgNt?UAqLl3n)QZ=Q(&JX^VB$Cx)5NV{+FS!d)b4{1-d`C#wyw6U!Ufj zwPPOIpY~jiy{^Gq9T9l{(D=>%c-Md0#e8jPYsJhJmi`l~w4S-s^JT}A@3mBMd~s_Y zu?J?!$!k@t(|i2%KnmZ*kr6ml?QYBJ-QrU599EN)5lWy5#)h%o)5(!=WGT9@C`fO=d;iCcA0zR@-K%yhof{cD=|u_<5#9B?NJDV)o>qB-GT@ z%$zu5zPkJOezkHvUh;%5S2@ev;aW6{zu7X3i*|1S=&%w!cecb?U=V;$Em|a~Y_AP}fn&VZDk%Ldtj zIBB$p1RO`WtRb{q_qboFx!pq@^)e@YD^h=Us-WOT^_?M&ndwbZ$WNHLiP`Yo*S6)u zojEFDYAT1|y8-zCtD$}d$}$xc8BmLaWy>CKWpJ1rWeRBB3mDGPZ#G2E-*MHNr7 z)c)v8ejsUe%ttoI`+2A1_IRsSekZ%|VGFpRUy;g3ddJ)0*~ABIZ@C`-&^ga;C%;Eg zxX->Gjq8>>s>*hD%9VEmh zu>wY=p&P5$?DXu@E70GruK_z@dcivyuFOQObcZ!rq_5{Rz;Rh6wgMqCER@|CWN$(E5K1OpQTn;<pb1lDpo!jVYZM09o7+1+iINP5uosG;0diPrdaZpyAB zIotL^9a9uiv^wZcy zeoH>rdH77L7xR{6KMpnQf4CrH@BY*wnIv~yP04&cJ^iIwR;S(OK=~i|;>e6vs{N~f zFT_$xgR}O zKPkH7ehfctrSF^}xkd{i+^y1shnbAU<8HII%rp+YfM0ye7STNOIA0TfMgven51)f%d@sx-PzRE=`3o*)%tkao{0~Lvu@?I?$%KO|={<$PNhzc&$n#D*m%NS=V z&}$&Z+HMzP9q*kd(LvVjTpqAiKl*_b>UsljU@E8nj?c^XWqq~PPsLmeBy)4qVT5JRmrABhn0sUzp}X{ z(VFoVP)&G=@0d#%yR7xuLSRp@EOg_QZr z$&OU##gP0C;m>}s)LAG{5iB7bGLFB3;O}xdN2R&EB@#$KHr!c}pRnOCrF96DGtDX( zKr~UaY*V(1$Hi_xY8!s^60iO^Gv#S{ZR~I|9e9^D@6SO!G}io9zyS2Q17$5+JgVOf zQQp(rzy*x!0d^lm0~}5O)RV^OEnsYK6wp9yRR^m`b{^OX4gFFcGP@d;E2riN4M65L zH~Y7Gu9yy=WirDYe)9_K9-id7G!UNrAru4Ab@(4=Aj)f+*AB7iYI~q}Y24na;3la) zD}svb#_y@%pj(^qvLa7STgsOBAJe$S1+Ff^#9pntcQ{!Eueghiz~)ND_Yv*As41#6 zN?#-?I9P8b?n=IOwa%C$6UGrHaLGwnLDZ{r22K1wt3gEbND8ifv2!%NrTd8e>-;8A z=r;$chAl;)ru=v*pnGC#(s?4JJQ)0d2r5Ha?xLz>dY&W4>lUNA5x$9_1TI2-h+ZF(Ei88d_!uc9w1Tx~1& zpGtdo=c;#iFveu(2zJr=tyA3HMf$gX+#A+bzaznc&=}TGh5fc89qP4G7|eU^8MP!I z7RYyFD$Qvt8woo5V~@BjL9}QT^ODDaVZ~I^itUf>_PT{=%2r2ti!qh|Y$!CJsXIu? zYU1dp$)rs)diwyq6L{i4g}q!gvUU#$Snx^ZCYTv)+M*tBq8)US^(e(xc0yvQ-RWV@ zvVWE4Qu~37t50Pa@dE2O^B_S8J5H<5@}`<`QJvjH<~CGyqO?%?OFQdRw#lg>LB;R} z_>Fu+Jj`)ahm*Z7asfw<+ZGZ}!4SnBd*QM80~HV#JC|fT>yLBX0Y@Ts{!|&vmEzyN zAKwwTt-3a;75S0)a+)nz>-$vSN=?_QE>G`2g?;804ioPE&0N={^^%2JtAGRDszlpY zR=<^QH_vgL(_fK&z9Bj9km_;*;y|4$@oMl!*fCn=^uNC%|MQ#NVrF|lP2eWw5$MiQ zdUnVR)X)f>rMRP%xAl&1k;RU3Q#oi2xbu9`KyASZI9s_ z1=1D-+*=Q3#y)*gTS*l+idzc= zxPXO2`LzhlEhWGZXVkWU$7}g{DU7oB`RtRpteX-a*J)({ktlU&{+;eu#NcuE*-4uH zTLyQcKVshnTtj*M6d;o26s7kWAUaSFX{mtCKuh=o2Or`^tKGMyEd)VmVNBY2PQ18M zH=VcorK8tjitupF^!raVvzdvXBqd}fckz)Y1HTE>$EyfjC1H^yur&%$_v{=RG@Z4&x$#Duapxg!d-Obt9pFw9h||xj3rDYukV^H zUR1kQKA5=*V0vts^Nqj%#OWccT@dVQnMSI$H^D*e3)8w`*Wf%k{mY|rrV=kqr@NkhsG2r{y2bGjfe~HXzL~qgaBY$ zG@_vZ6#%9f!sQPTOewHc37DUK6(>tv{%)kLb)h6>yG)aZ@x%dHyPYexo9=|(qH-Pj zjd7AyHQ-)-?eQR)>NEpvI@O0W?$+kL4W++<=s~ChJ0H=U;syNaG4J!cF9}C?IO*j?V&u;wBhgd}k07-i)&9N*lcWYP z5~hxTWL^0K)rW^+!-yMQGNFn57}8>dHI9&z3f$dOAJOCN_Hm>|JOAnmlvoD=el{N; z8aYJve6n91PaDN5IB!WDKhqPyer_I_2yvnn70cHQ1iuIvnk6Wazk85vz^@1aL0=yS zOw6rk`ME>MJgA=}Np}=mCKc6~ga5HD-INlm5)fg;(+$qK5Ydb+v?7gkpo#!LzHARH zq~t+U({|`|>c2N#w=#3`4IX&%e!E=_MvspK>Xls8ke?Px0ARbM=y4Lb`mGhCp)$@k z9UhE3f(3v}3zu|=KMQX#erUz;%!Y^_v?6pjs5+DQIis;iE~l)(<2EvEU4koCVDaih zkj*ZmD8S{u+1cm=+m?hknU%HwnlB1$X_ju*9wdV`abvCBoq&+Io8jRpDFRE{3|Tts zIBVCYNnFyY9Sc4`4p5OLXj1YnF@VqIpV*O!nu=6Y27aAMe$j^(lbfV_Z~^&@agf)e z(-R_-eiwmaoOZZf`#N-?0>h?v$h!Y20Ti&@k(jG_o8f^GvJZ|QC|0iz#r&{|HZ5I> z|G0~lrw2DP1+tZqb|6fh`Y@%z;ZEY{QhnmbG0(7i!=x~AUf!k857z%7q>pY?>#i$k z;?_Ww0YU_P8Bqw->?Tl|Z*It+TY7^j?q*0rTtv?#P(EyKc3!SeI_7>XH6CsGjIcy0 zCsGdk%>tu2pcQ-{c}venm+=7WeQRv5AyEt zj9bs|(>kPQ>|fVJ2bRy?cV0{+l_`$+9@N|Hn)!5OuGoQkO`V9VD>eYfmWlc;CN*q^ z139ShjQFGRXIt0L!x(T$PPCUt}n&u%QBIhrNB(QG&;83KC*Y4hczw zKPkGp&MthHEy~N6iub>1?PooYm`l2;{XD`#e&SAx)scc9?jFP2nV(yrg+!KUCO*r# zg>g+sKG96zJiqK_@bx=%#a+&Sll=Vt+Fkg;8eK>Ohr@GJgc2A{ng(JU&QZt=qmqJ0 z3vWT~Uz{|~&@4);Tf-#l%XN8lTY6=38HI$ooNPCKR~{ z$o)^BAJYXLe3hc^mk-Pi(eg^wrN}MY-Sg%7W!$mf}Uf3pnsA-Y6_Lr*q#VPhm5t zC{(1%hAhXNWNq%kbU_4Bk`P+$FMGF3Pwwtl%J@LgKM4=v7p}^n_h-*Mdf=5jN=;G_ zh00R&2?pCP$S5|DZ;SdeKog^g4ay7o;>cUguzq+tw{Kfx(Fos{d)=P^-`(ZxoVZ00 z_=APDA(9AoxhGRu+f#>=@J+jtR_L>q^>Gernz7!WpMmY1{T$3xKH1~t^9bULN`+b) zzpWgY=+oyxWwVy5z1?30%+`Q>0K#x-j1_zczd70Yty^eZGS^?d|I*ZiyPnjyMcF11 z@!yQE>ifcg6v6}0xNg-7Ii`VK)n5M>QV&-X4&o4PGmS=>zZ~vi5+|86&YIyw;eyNW zXVHSn@k?sefNpdWLvaXdOpbA$d%6}H*F#E4%m$6E7lF0EV5B(w_n}R|caV1@QLitU z1p1=>0UbeXe&o5kab&!owLaRTt0*K?C=Y?{#4Va-;(ot8ydg6%g(jN*F@<~4)i6~d>&@icUEfj zF*{l3>)qmVr06kPS7qiLRa5PUkEfB=O6U=xyHl+ldxHP<-0T95B@Gp`vvT&!e;KWk z|1OAGUR=*bEGz^b4Gq-;=J52^b#*W-3Ur!_A4d#GIoBT-rS@X$+%}G58;;l&R2G|c zi(Hfab#ysNL((40n!Z=kdwuWa2|3x|st6iXq_1qO(0w^r0 zvVV~~gnXf#SEwX*a{tdK|9mh*GIL;b1}GyG?Eua_N&tO6@_R@HfqDl~(f zR38y_orN)yK1k==SK{RsWO%j`e%5vNv>$0&6cRN)u$94{!`#SQGCY%*TKqLGSi}d- zviX^S4SSB_Iq8(mqb~rW`37=Re0I0J$HHn2PQ9_b8go#9?;LL&+V77PJCJv7;Yq^8 z*0VA-ZA3P8kp9ufd%_!$WYdSZ)G%0|?l-AjA@{&uoskZkah7wH(|40&uFHl42d}?9 z5kb5?9fx=g(byclUlox@wC%YQPTi$KJ}q>*?NH1ff8CsPZe|stxZMX87!C-+m&Q}~ zqAxwPVWJJnwI&4-h3XM!p6tSyl_P+Zw)?qZNI>~OkBN*qMD7_Y%FJGaqx(!Y!k7yU z;6ZuC7|q06Hhn$|EaQIvslJPv-$#aNoZ0UgFtf%Uj3l90)5zzAs0o%9ma(?qfp7}K zpShB#%0l^73qI__CI}uwXPxWy{OTifLb{5dq>8joRgQAou4*3NXx+dFVdR3gyX+Sl zrCB_BH&&wQ1hVi)>hzCHwC?FW*$v zptbi=@)6{zQ=X`_ zpK%Gy%rq4FleeDep~3rDj?_zgBj5X(Af=aEU``vAF~6u_7w%_+ueiNH3%q83|qA5YQ)DD?sm;N zoZ1Li97+VW#~I#!e<%cisnJVsb!6UffYnS7tuRtMH-Jl2P8$5zUAY3uM~!vb9+3;2 z-sRZRoPe#ez@ztPzo>HZ&E=^*uB#R=h2g6S>N{pP9qBilnFB*!VJ1iuF0S~ElMDIv z5@Gm_6Lf{P4M34r<2zHZUX8Im&mDT($AXq@KmOZb0^}um7O7X;i>W;_U*PQ0e@V!A zj-px9t|kIzN#I25nLU@iWl0$YpZ{g&z4HLL+J=={&~iP}YIt0Q>GcT`Arbz4bCOVF zGFtucUb zbKEM&ry4)qQY$_B2~8A&d}E}`3${#cbdcwp>fjo+j(tOioC5kIjk~LB2Y+uZjQg6p zoQ?;))7uOiSU>$tO55>f`20IJ{CJFJ_n`mIPESBa?iW>&s{US}7^BnmeP=Cq+7tZo zhDYEE>tgMV^Y3@_`UuAbnC@h_`2&M0RHW)70t!C=P7j>SG;R+VN^qVeS{ure?n<}r zc22w<2~r|j3CWRCx!!8_+S3d#h!$0FNdeIB7!5`)$Q6(|{RB+Mj|i0hWn%`X(NGFs zVKdSM_TomFw`eww(inJe3l0tTfq+J=eD}YHUoqvy9n zN@Lm&n6|G9zS20Zwx3ER2YFBM0;x6O!2p}%IaG1KhEdIK1tLiKzI8!XV1mGYCP?B% zCi82%U&3lsmY5Zhrd;z4d*KG0o4k#ch2Lljy`SyNg}1J*N3C7)PWXQt_b0gb^QsiCLoVh!aC=q zaLq7VhA|O1I%(>?b0Q&~k{J z%j=&)iK;C5CF@Tw7=j*cx zzb~Xi1uEPSX6*ZNY@EV4J9^E{cFC2(VlAjyWbzU`wx@=6?8k<)WZ(3k1L2n!T4sx7 z@>d9@AB2{;NmLpSO=m;k36fzkvpf7}+}PH&lNAg1b&TBn?8$aODBOR74pdGx-O4O; z|3-5Fnt!i~`n;hW&10P~YS;rJ%VB!uz*q!4G(}vc1ONSq4mw#&l>8VQJfqIJiJY7i zzA&esdci^ZgHsa^5Utb|s2v|~^E>!*y|906$x$5v%sZ?EQ!~bnW<8R6OVk|7qx^Zt zGbMl7x-X~3q_(7_;?3_ddrFiKoM1;I&t>#f+HpO6$}QmKMOt&Y7~9jXW9DJ6@HGmvgW$V z-Qk;|qDabkdxsLj=E_XIxx{yCOu@3%LIMDJWzA6YPO1TrLF6y|D=(l38H1@>lL2wB zNNrM1lL&x1?OC_}wgoL$bv76rnYjA$f>LcI?3Hk)?rwdl4=ujt;*U!%7F|kJYN!xl zb}@_p=M<5qbzc4MoCn*6vUUFnW-vidQF{oE6`ZUDnqL6GxAE27h|nk#ddh@bK^Wyw za!go6c(F)*u;nkOBv@WiG+Sy<$Z4O6dn(2*%A(!&rih;WLq*U~729hAfU8n(2zTcJ zH^#&4b8<(CjXWk~5dmwauX}M5SMrPY!!gKb9_#Qzj5P#VBVeT}#N($eF(xg^`?Sq| z@YZO#jXKSo3QbO(NwxOe-<>Re-fYWr#FyXrMLN9htpGq1!mJG7U=8%^?hxT}eg2_# z|3Uax9d9J38=;uwK1qG1DIn}c7{syDpL{2K79n3nvh`2PI{_OT}Ur9V9Ty6nCIQIrWs=Ou*W+%?%7VZj|lU6o@jQ8|%B z$Uqp;(V*rQ&yv$#s*-Z;follMm@%=e1o%psYw9*QBpFa71CK3JS|xXWAYo{yup5*Y z=>b$ntf>uwL!@%{E^DN{K_9AXB@g3V<|Xp#%cT z@YN?OrMRvwSN5mta7UIu{p;_+9#81>8(&oM$FI*X3KroezP$cKtXYpjSyO~f?qk4LwcWE1i3z{;NBe) z2_8wrY=o`h8bXyar|vCzx;6z1Mip+7NC=+GTi%Md(NyO5cp2O4>?o^zLgq&k{mhT} z$>hrQ--VORc7-Ni5^iQ7rz`BeE6D0G;7 zgpf(K?LOh7MblZEg_(JS$wJ599|Y1CA|(~x-LMr&B5QUY>)EB(L6F<|n8vkuDKucZ z;bREj4gY|mc+~P$m?us@TqskQ-r%|3IByIsFq&63CHiHC$-W9*trdsTsH+R;pfQ~K zZu?a|<<;(eY-tj)j_zI;DQEp6;d*hT zyGo?v{O_C0mo!8j<5>Z-1L5m&zW?LsEZmxU|2Mv|kun;A(Ip5XsElr;rKB50K9bTM z8y$j#fYRNzwB~&-=b#ud5AuF`|dyqQqDxp!p23 zz0*#E_#?%m{K=OUYvunTlCOjt@|PPM1!sxyAmBSY7#RIv9#r4%uOqP0u4${P#WAVBm!^r-ms48>WJGwc9wt-Y%>QfbZ177L_A^|h# zc~#Y0tfNcNr>ZsocApfY|5)*$4^5Lx^Lp2{oW?;iIY+jwJbwCCY|H||EatSez!@>eUU``Zz0fakhV11z=OQ`@S&4KJ?< zECji4|MA0e1u!4~yaj3yRK-A|M4-u>m%u2+B3&4R&;-DKMVD<1s8soc(a|<=Rg+)| zKbarAw;hr3yT^S7T~}x#-{lzbfI3HYmO<82cb{>GrLR+P#&7_^F!|?kf+Jv4;PFSR z;chJa+z8$v{)uni{%ICt3ku}AF;~;zpKv1qF{5@8K0s=E(Xf5}VW=pF%0E4o`zJ}c z=V*YR0MN1tNum%~*pRScN+xN$B4>O+`J|yW!GMzV_60{_IT@ZXDc<&Nvt?^eGUNR% zxjWmW*z`dkc_FFOY@tBTOg|?o6rH;#Wk;h5dAjAfa|+FVLxbZ^sljtP2Lj}-SUv8C zOJ(ebHu`Fhun8@T*vxfV!k@Z`k!@Mn{<+Qio--BT;|V5pqv-fDg^b9SaFO);-;gM? zY$MlGmre`|5ofR{Kkz2YgSGhnH(Dj8-en~SpX4=par0fHI;1fdWc)`}(mQyY_I7yC ztTE+YMk?hWfRj88C+>dzPd>kwbxaW)^-F}*LiS?brg@QdRH+`prYtvk^b?IndfkBW z4!e;>GC9b{V92G^KJ6XvuBOI0*mdK9)wGkkV$0Yr@}<)+9~LJM?k=*U16Qk!O)Ab#n%KR{0knOTF%-b6bbSJEI-mxDf4`NyE{SEkxd4( z#xap##&{xMs>}<9@f*+TY_uXmG5uz-(dZ{r1!X~G;&xrb7r@Z5{$YaGnJMks6sIqe zUW*6bc{zXiPI)+rmR0pu=s9AJldtn>BA1Xu(~9WDT7cGQn6gMchrC+BD-)f75U!Wi zF;sl^#(+EIf3mE;E4K&jDl3jFH$$v0L67CG!j8yE5&61NT$Gl94D%(rs^-s?S;3ur z_+2~sj7|GNMgZYx>mmV&tS=}ph5!q2`WO<==x6i&lcTH@;*n-X20eLvTr_=Hsn#NU z!J78N?H>{1x9giz-rhmgW+(5L9DAitSs9=71k>N3dWWlhNDCFWFOU0J$4)Wxcg+Ki zZS7QTP2yAgwnQcjXfP3rrHfTp+H#9BRm%HST5v;H7S%n?9eo9gsad4GefbB=th1ATZ~=@Keix!-hZeK}TJL2aB&ATr8V& zqOcw;!~b1b^}xMTMjO(xE+jqo0I!$ih+5)*v7v8zG)x}@zlrv{o|mbeURFXB3xF5O zj9d|#HXO#0-?<&Wzc~o@1vD6h_^?ALY>!gnEku?_uTg$jQgYUupuaLr!QKDWN&9-z zdO<5Z^kf+vU0p{qEBugS#|p&UYxk0pm#&(D!ERDl{hSw{=L8pS*4+i~WT)|i z9k4zUkdR_!P~J#K<|dYq9hlV{_HKn103x^vj<4}2kYkmzAbBV-u+wXZS3mRA=LdJl zz9CJDR(>SE)lX^HbV^+X0$zX3@OosfQS$9IL(Q;dgWyPqorlIyV{J}ESArj)2< zxUX(+-y<;qf9RLc&Hv>lx3LNgiJ5iJw;Q5l6g!{na=1Dyd~pEyzGe{(I2_ZidCe_f zMLSpftm?7R-{2LhuMXaWDX12msaygwWM6$$WcA~}m6z3Ta6<`z{5R3AubqPu{&8WK z@*ySzQCX}I@id6PVAf?3NlYMfJUBiyv9tVj@1`ffyn$Po^QC&Pe)@mvLXQ6|1H>q5 znq`FZQWAbSu0>IjLDfwa)Idb$sr#ZI=C5)5hMwyO7n8EBc9~lvepemu0g3myB7oCh z)TX1@fQ>h@lz>7$z&CmP&gE3VtSDfS5C5APu}(#-XkIWTKocCtJv-y)%n2$AiPlZ6 z(QYo*YqMmxvG$vg5xs3?HqQQW4esf9ml;)!7#yK*4otjm`d;ayq7y#3@;_+*Z5MfP z&Ew-iP38%p!Hu39%e_&EsmJnO8=vb@p#K+%>Jmo!&8Ejs$e> zWZ&-#@!ulUQTSr>{c{cv%}ruU<7hGa?`FTJVeSO_%U^easVfF(D+rHFbvYsa`;z|x z`NEcE`6<7~9_h0BAF#*#XSLqfpg&-%CV}k^UdD*OLrRCRhR!uq)9jcHV*987{Ir0j!&gnb?lpxavhP%#L?;t3qUz3f zhH)&!6APgRuR+NH;H6IHdROd)(?20`sWR=psoqpk> zm3LYd<3`acjH_)EOFOW<(%{9)$8#T&=Q;TCRaSCH<9axM6%s7ALa&!y17Yp@Cc0>i zC6LEoaTh5vgrR}lXoNBV^|EGeTL~&(u%;qpM^K;koB;D%|k?B?{3rKfqjVDAdt}m@bd!NUcb%XEk z1whE_{R@ve!9{nG((e;Vq}U&Whx#$`gb2JI*|h8=9c33PLekJ&>~-#s+kZdD+Hp92 z^v+KtB7e;?v?HzgakN7P+jNf#C!k%%++>@Npm0t{6R=(6W-+)+^<;NL;`iF9yYiPF^0_~1)O5{o0Gi9=Sgi4drU*LBJ5EVwCe?mP;4`09v z91;i3#&74MKPsz=@d#!Q`-PsBzV54lx$Ldd-K**DYgSLoP2u#fo#G;oRoyR4(gOlD|nc5>__i2-W z8&4f5XAS1r2FCgUj)gX;_bc@YPJe15hBtPjTOFc3qabu%nDLuZm1xa}onc|5KEAm+ zcikT2gq``eLG1&d_L``fT5nht7r^gld{O4DPikVvMbJqbp5a@X+NO%@7<1co z{!XFNk>;`=mE5uIpRBq}{P5JN^c6T1c1>5vWFqkju-VF=)K?vHEaFL=55MJmYf9EU zM<~;A%C$=t@Cn`w5^;yGOEifdUZTwyPwPsufTLy*jhU1q1>IMK=I!pkBWqVyPM0s2 zR@!qIK>U@sp(+6W?oR}EKTl0|4T~db{kovtY?5htK%N8Wzpu${aInY06aEfGG2*g_ zq4aZh91w~Y0j18!=f9N7V-}?lP#lE52zXP@6}@+2)cD_1lDx>Ln4H|kv5}5?V~5u1@1eJ6&1Ik8}A3fnRsFI1c_t*%v{dsWgb$dQWj)^ddrW)*dlo{QOl0 zk`?qH_@r~^;2b}-r6hra=PfS@n0-6mwxBN__!F zdL22u!+uc3AmsX|}I(Vk6*)F)o=-3N7S`K)l z`o~mz&Vn1K_4)04fHS2dYfUO|A)7zwLql4vh`%Kf3U&RC7HPe%_{!MmYaojDW z6KCJ!exSa)^!ZreBSH>Of+Ey_W=@W1ck9_FS}_BKxv(TCK9d>ohijw1#6bIq5I*$d zeXBykgMnOlR{&c^yTPXeuR3xom8M+W`!HTRAv1~I9k0LN zNRbTJmczZ0)&u$jj!vgl<4QDqE!tet?k83^#B#>+nFyC9`wW!itFDb+7sd+P_b8;2 zdd0*1f4d!DExB}LWABp^f~S|WEE>#2d48^8v+m{|U=v z%!tP5D0?&1A^L+{x9*%X&0pjcwY6MvV1C~aIAm{=+H?(gHsOw}*J{`DEYRYWeYdNe z47AYz@fQGmiH<~{1j=FO4jkg3eS^;26nd*2nSrj4epBwM3KX zzxKH{Ll)l|Y0QXcBvewJU>XAizxXB{6Thj(JD?kq<&kf6=!ki|+T&;+B+bIZ{`z!R zy;Z+Kc{GHQz$Kh}l%f<^x~T}|yL*zvND*6+7_fRvSf(o%MmYj!bGz@qm9d6j+!&bu zkx*6K%EtC%SpVLP&fu@{GUtZ!Og%4TuVVQ*%M_bKFNcBus9-RCK~youKtWui>EtpX zW@koGHj01g1JnmlYvFj64IC4eJHGy}-{j&TQD7A^kSKE4b@)YG@B| z4YPgBs(>YV#J3*GnsVRuv#%Knz2pu)<7;NG?5l(X5E+|d4>|EoQUBWf@M6;r9t-Vw zrJ7XNcKWk~sGn1ci3&V>_xC4qgZw;yZV;@j`t|YxxwTI#JkYk9F-bJRB>mfu=Br8i z>gi1@3#xQo`RIg!Ie%GZE+q@EgloDV*LW7^DwM5Q=%kXK$y&`1V)x7m%=X6)?vLvO zGHBT|&M}uV{}rleFKM{6A*fpnf{Ac_+5ybU_I)WNWA|k^R*&$HF4eCfu6~~vSXLO8 zO2jG?+*!Z9LaFkRpi_niFH$S|_|EYZ@HXXmFfLYN3jtZqRnEVwy^Sm1|KXp72%TG_ znx`KdZMS8uRm&Vuz-9;P{oVUoVlk7VMD|iqrf#>bQe50BiKg z^U~R0FkzL+5NC9ScSb!RUg_@<;!3IWGk%(^j;)0nmT~4EMgjv5TQI?Nbxt|?{mP5B zFOW}``iz!q*Jy0L(&<{hw{vDy6x+>5v!{i!R%}dk>)FaWO%vTaN*d$)hUSv=Up)I%(W|mh`oRE2k?9Ahk6?VEiw<9W}NRIrMe)(U38H`{D__>*7&nAzmpJd0f zQ&|s+30li|9s8vmWKKv46`-9yc?nhbPXOy6MEpfo&FMYBR)?vp__1X}a`x}4$)_k5 zT@WNuQet#g&Rwi9eTCjUXmZ@^9r3tzyBOcNzc{Szn4cg7p2JdFmeT>`-C;P zFV+q(#q(R*&jaaek#4MkSZWF7Tt$YDmGQh_8ku|Ef89!1vVVLzY?C`}NpB18+!=x4 z>hgIqegM$!0}4(med>3d(tFBmEN05aCMzzuTX?N8JA1f(R_X0_T%pN+nLFQjBEkYq z?%O8amc=|ewW3|4S62RuRl((B&Dm7thkmS|JHMyROVQs^LJ-|SmoK+$!H?4F-CA|_ zEo@^>nYNE%Db-JcMvZ8<>eCZ0L{_2pAP)Rs3v!r({;xFJhkV~FBLOCtSD8$t?Sfnm z&vVBb3bT-nzYS~>+HT8-RSXnY^rHd+%1ZQus9QWv1##L}@kgf9)H;WNK@LX~Zd5fS zRi9LqU+N0l9(98esttWTkon`o0!sGOo>A7V*Ya+3?Bobeb^*A@jrH>SFyufR)54T$ zut{YGHU)}D`MlkJ;ZLQ`QxRZr*E%W8#2?B>WIP0}#WF2z7>|1*dG_0WL6ECZ7 zQ$LABsNSB{1?os1m%n;GcDmovFz3=h)tkTOLd*KLC1hVk+eF$whfvOTC;RlYm#q7W zFZERdGvVp2sfcRLwmH!WCdgpi)-*a#Ya;~x48pgC*O}P0@41{Iv3@JZsho>KDf2&` z-dVd1pX<7{8pE{vt^{42jEHCErhn&hxnHuucHbgrt_1}MmpM3p#R8hi{Ld*dE^moQ zd+HKs01mXfOL~S(Qp7dSg3(muY@Y6nTZo`JFcJk*5*?+77t~Rzg^r-Gzl_}PG0>cPN@^G-F!2RTn zv-9;JMJpfJ{|$$KqUoo;4{jMR$lOTJR5Je@ExxOETqy9rCdnc(<~!c^BX_v6D>GF} zBtqckb7y#Mc2$7Rs~xIn)=x_K()dowN`b{8C|kR8ggX1@0C}}{P$)@@gYm>Xpyo57 zT=&a>7vnV?lscRe4p}FGhh_B7tL?@gcO?elY%la>D&(wulcAbM8# z-Em-@iU%95>%=7Nu&Fe!Fu6O0cKbi=gykQ3=j(EoAFaBV0xjYC*cBt*M9;p{dJr3g zH5HGn9IpaZ<+qzyFLaHk9^5T2m_4TFq_%(Du+Luj=xCMQy<18OmqF|EFlSoMG%5@M zROkCRJH~xCG3g8_aqFqo9?sU~Ea4aSL{j~h>StcPndqFn_{Dd9ph4f(j^I;TKP6S% zeUW=3ZpJL>B-rj(K6jl^1%GkG>a~VtyE4f8Z$dm`5&M${lc0DgB&WRe@TcyN6$D^@ zdn=Ox0DD%e2G4FWZg-SIs6OGpn{3D?DDw?sd?zuY5(n`our}P1P~qeJcQRLR(}_}%iEiMBr3B_&}6Fp5^NKi zHZ~LB`tGY)NLprx5r5H_SJo$9+opbbd)^sZ<08Fa7Ko@LN)q=~7;L=UXD&th6#9mXMVS6byny{z87P?kn5|E~kTqw%ObU>r0g57E#uQ(T1*}{Krf$ zSG@x%yeuJXna&u zz;7`=mZBCSQ@nn+=60bSdN1oiMDNEzj6+7aE+m!XKQvfVU|i>yn5k}ld;)y|>UQ9| zd@Vd6tgGAaHG3j02Uj4UuKp?38l$bLxmYT59bQGMJzt47-~EoQy9}V;>`=7e1Qa9G zfV`1Jr2OcwizDg=Ys~aIlTnG zy`}m9mr87JqD{Aay~xx>^fto$oHZG*$fC14T+$TLU)YrKa-VO{)EX%l}9ByYffra|a8Caf&xvqwoWeVndmgXpD^ zbsQAb>DHRd-uD-HVdoZjRmfUr^kH~$@6X-n5%$ro>|?eVrOg#Ho3H3ENATPV>G)sR zpXpdMQeH_G{PWaSMA75KlG34gtum7-*}7AIz4%39M$<5F=jZqaId8K+Vn;#d(~26+yB4$iEEN%{m~( zc$hM@DJ`1oSw7q7Ywsa{qWB3j+!XGqo$bmeEC>EJ`D!D`zD+E z_m136m+M`8PY8NK2*;x;1d*(hT!0B=w1qem?P7BGwj7PqEnA=Wq&h__E|FFOK1CiA zYjMT-y=Kd~*!HHF>|w>GOr7oecN-t{YC}I zC0J$>y2S_aNJGi)GUMP|uH%wMTA;bi-t;}Dqec1$kGZ$>g!oni2+DrtE0@oY=pggU z`A1_S3ATeP=`h%Jl#Jt0H{rpIhRGHDUD++Od^c+?*5kyAO7Kpv^2~*<6%+gmYj1GX z;e5S{k4_St~o73O~0=_6Ml_5 znOsU&&AGA9&L?Jz^!ksCdLj=(^)Jp^_@kyicz|tvG5xzQ0tavGtyszaVsS{*#s6;? zC7#&&TP8-x70Z=M914Sd%W#ZCQiBHV{hrh;)RtF}s7z#01LRF%H*5dcKp}WKmo z!h6BL$wycn(SzKN*tnQ0Z4kPHDCA>YgfLb81CM*y+x`1`fu}GqhcJo5hMOMQOS7+5 zXnYVA-rkg6f*Oc-{&yNkXMbZyM~$S+MjNAvVNnvFJS_?dbX1Iq%(I$Gjdjs%1(X;*q2rvBAE+}q zLI*TiW|;(8W|_wlO(mOXyUzaeVZ*ZH0n%4>h7AAC!=k>iK;sE;j%w0G#wKLLT(YnL zr#@2e9GucTc57I`>@m1^U%9qs06J%BeVY%3wYn%1)RZ`t4^cF{-|=W?TH;?je#QcJ ztwN*dGZxu%L)ZqzkEPjubb}h*9~(30Ni*<*s;+}``f3%FUp2Atv3?_nb0MrM(7!W+ zvDbg6u^Q_qnge<$#X9)=56a-qS?BlWDFZeJ&sz@!|4w6Mr=0=d3+%R~ZcG+;r%B1J zRo$^RHM$;lh$YHn^1bRHueIS<9+JaJGqhVDlKhzA$=jJ0DGJXl0`ieYOSIxu0!B?Q zVF+HiH@0DpKg{(X(l=Q)9=^|f^On47rPgL3LlgNvbFX(%L?O%Hw4x?zTvp_jf15tm zW`lw02+(y$_?V&>uT33dKs_Af6+$&ZwEAZpHe8+AZp43PikH(<8W&8?wrBs@h$4A+ z<}5t)a|ui9pPKDI#MWmS;wrH;lw7+5CrngiihFSteq()KA5IK{t695O7d>P0RGERx zoXZ-Yl#+8vh|8-(2f3z*CU}7|tio&*N^b`d9y(;S&y8f?IbVv@JmoyN6MZ<2ap}4hBtfBdF#Jat{#1}n62Ehz?8?U@ z_~v!IT(HofTzC9-(wW;^PGrZhNdnt3Z7PV23qs*2cP3Au|GlRzw;B79mkIHy3c_Hw4?Sl` z`ukRny9TWh$cez8GQFJBxw)w86M6s8cF$K!{S_@)m-WPkq~(s{*%dd>`o^ZCw+9&H z^XG;KiJzbD-mgpPo7LR148)$7JZCfoJnT$U=GB zoN8AYGI;16e#i=>a(3=#P^>aUtnSlNoZtUv1>F0`|2VOnh2p~3nI1%Q&3>G)_+W4x zCH>q8c^KJ{!LcHygq0h*(}yMJQpW2a2W|gp4dogOdxJX=>KvDbl#G2IAz<{3yDr_KU59`Jz)ngWu2O4>9umbb|SQ~ES z+N>pR?F2(Kr~tm5y?fAGA?~Mj6E$)wAi7t?(8ak8HvT#-^iiVlyIPC#;9SLV5|+4b%T*Zgyk(TpdeR=w z>6JYKBUaQ!ibzzD-Djrf2fMob$GFgv1)cN#kcYU-%0vQt5G^x@$1*jeTGP_aUQuR` zI%G*t12H%K0gl_L_l8HdGOUgFhmNX{KR-DxY&)UVH@WZf+Pp<_Xo$_9eDSc}jNbo- zPJn_J<#lBr#A%hMg?6w&o{XySv*FYr1l@O`xHf#ijCHs zLNlI>%BYua4&Iz{0O`2UdeAd>oM9>c$eM|d#2q63C?ZJ8D#ZWZ;nmR#`7TaP=_4Q3 zL!FIN)BmPfBz!wZWv`;|@3of?f?bX*7N#*OsE&!67u2zM^N2RALTd&4EVUx$qapLM zw06rma7uoxe1u3YGfknMYL#sgK*{2pXhiYxx9z)5s0VM)Nm?O53Bj5nm$D4!O&$+= zBI^~@{j_MxTgsw7efU;|l}#|SlHFb=>a~oo#*^J&k6tN>_=nHiB~?ZO5gy+k>)C5E zEDWw2ZMX5=udQxC*~dF}DJvwh-_PF$oH&OCJ1)`QKvj%mO7Pja@38kgIf8Ovbu%kqwUOYJs{$T;T+qgqf9W%B|od6$Bi{v>- z{eko}!P4}15Fqi_Qz)| zdI~_F_{7yLOdkpoI3tLj1>4QD@iubRXwk44GS^i1xNPXlUAA(ao=xFwxYm!Cb|!N? ztBaTDk8^0XJLPjy)~vIJ$O0-VB3D@bHj`RUSL()OehO?>;p~zMVPWiMkn4&*#=*AR zGKA6mX}EmV@6tCLTOn=vc}WyjwsJ_L(|;MV@6%a;DJX}}9PxpPyk!nC5~4U@{BRlf zCmb-!4<Fxl_hPPki_?PQE^D=_-6&jYa${_yow8ZACDM^muRdEeE_@pHZZTiCdY-`K1bH17!s1;>+Kgpa3qwuzO~O^Ys~<#O7vsVbiH_g{Ib5)!@KJR89esLWsEC#z47-(G7_wu0>iCEy*xI{$fQJk`+x z%YS9}iM_gNn2g5f2iDWpk#HSjht9tH14GjV}2PIBpY-74CPj%cYB=lje$Y`_+r zliF+%yY_OAamyeAoipMS0euZjtPKhaCiUg!0RyaqBAp%&jA}Il7i#0& zEUC)aiV)>~K8cvszmn77qh=3}{;I9&YH092}4uZWCBcG|8do5<+VZgoFv=|^4 zVvu=!)mp>Ul7M|E9y_-Oo-;=Llb^HEz+Q~0B37wPrJf zS4e+vm`#$HF9Hbl5ItD-?45mqe6$c7PN$ANu@c6H%#}#bc)fU!@<-9Voaa`dCPBkhxQvBhki^nGagxFRPp z$$I-S864F*Q)jqq>s)$}ehM~}DfPm{QSD^uLyclQ`6`FKR((zJ^8|cSTgxp#29lu! zson|Gj&2|Jns13H(DBObGY`C82`o%kq?!GAblUe1ekFbJS7WY@{H^!jcSS>(xg&V; zH0a*Fs6J@xzK@=(Y7Qd`L@kNlt#kl|gbd{N1tB``C7d1bdZLMEh_NcjH!o@O<`ovM z&1K^-^ZE#H%#!M1;6scoto6UT{e|A8g>+6Miq{daaO`e~eS8De`H|or_E@5+_i2rRX(DYwvubir%&i)B48|;8J1DWuZ_c|$R)CBU78|=?E zeb?ZBB_ZgXSID8|P*zq(8RNDnq{0ctFe$%H`O>w&)^OI8s=r&Dc3$_ZwJn)8J@@kF z!K*Jj0hPVEJi)b`Mam`mR=^~#z(^0Z{r$OvyM-6ttJ5X{_dK$DgLjVx3^8!ez>oJ< z(FBy1C+(M*%7Zkb6RWC4tm<*Df*_pk7uLC;<4{?&Q@V=4H6Po180yFiN=sQV3iY=f`Jn ziSt_N;F>F2T53+F4^yL(_sq@Vd zfpydi?+;_k97Fqny_kFbZj}I#@6!k|%@)$#{bhkfui^Tf_UGBgUc%JpX`gXa3q_Z$0_S0FzrcL4FHqQp^ zC(yj*|6p<}?>bd&*!V~&bWO&&NOXvfV3PQa#$#5_^G;SDNgvj2-o*X2@krNukrE}j zD_st*;ra6Bg~3BnxzJ?+X^Yu!VF)jD+vPR^NU^j1_tTIWYBE|U;^*xfnU@7Y#>S`n z%NwKv%MMpoAycSBaY2`|ME%mdZ@a{)jRpg6$Pd68GRn5nZAQ-zQ+Z1XVru_3#OV%Q zoJkCF=FN==e^Tac`b1J9ELMM)=!n*%cW~lWt=mjm^L0?-ok$=^aA*JOzV2v`I5F1* z+53l7RoJWM7vOvN9_6bXG&nL`g$b*k%WmGQaNl)+?l@_%6=HzmiV#~CH%)Yh;jUHq zB`c)=*=C1i?!D|PksPEaUJDcsct$nyk>-$Z0O6GayksNMDI+s}OCyY1>-*;445#{H z6ER8&*n=O1`={P-okd*kB^Q@c+IS8Xr{`P$5;kXl<7daUj261 znW?C5)5fDLjS`X%iVy=xPbG;HZI{D#TZtr z2Q?)QY{9PNDO85tdVcJKj1vS3>~Fbxt<249LDU=G+v{N$qM3VeHRSc!%P;q1v5438 z-+(vv>6c99_p(Chm34%;VOg)IfpI%S;hna$lVEWrdvF!nh;8DO_KZe2aHM^^p)IG?e>&f=@65qq zW*oI)@J4$InpH?OO8@%3c!rVS=IQbfO8SNcH~J_`f@rdrZ3EhzTj@-VkQM%<*wYp% zVIQPrJs<5&Vn>>{dzHb4RZL*Ze^AYJX`%I^Y%rz8`ul`lgfhdKrLj`}es%BD-k-r6 zEz)PJVT}^rnwCp#iADRt(nl0gLRXFh6z*cd#0zZLv-i5c6Fr1)s4mF(($R4?vx zz0Ofj+Qq%>Qop4zASdl=jnLskKh`lEk=Y*k;~5zrpq}{C-rfGnqLb>(KmB{{vAH`p zUWGiQfrzBM7KCDUsB$7-my{2mZ$b-81|xf&%!E?+Zb_>wU&C3bBWoJ2lOsoiqH`~Q zdB)|Gu2x+8j6w)Pl%e(IMkySC&5-?7DW9Y~gre$Of1*{O;R;xTc& zR@qu%5J`$zJ|#75+Rk_6UGA=6(D8$d-uNdRBBCzD+dX%(zp(kU9TR+hhM%wK7SM3f zR&2d$&fJY2X6d`~1T2Vq?EJy-Pil zsHhbJ;|}E~4gsP&wD{OKej{48-+7IGsv27`jg;Lt!Q>8>kfa5F?js+(t|6{V%Vc>1 zH>#1lmn{UE%9KO`fC|#?=#ks!()b#->yGI;kqa=d&g0g4q_&2gUk;uyoV@s%=Ti*S zA;k`3k-8tK1ZsnSsw$F+m*T|&(eaU8_Fs2lZ5QpabV*AgF#Qd3G=GaY-p*RkRLxW{ zR*a&e&(GK=E`qiC<9qaNeW;Zkv33|4? z4s{r1^ucrM*}@%3z|1}J1ar%~utbfPZLmuYH06|CDO>Jv`qns)J!BGS z1XcSMkckV4KqyY0w0)6Lwe6gD?WukVB$*W|c~XOu*Qb&2#`3*P0!{tXsJ%bzzX@el ztG%;ZCi4w=YN6N;hG59hRvv%A8Y?g|IoE%Gnx)>#wfR8uZ^?oOU+8R0hfHX6Rp8}{ zlIdH{`piuo)$t6J9~Tyf4T|efX6gJ6O?b;I_n6Vr>y)-L6ZB9{#R!WYCME~%awnkud#kwBJ z#Mv?j!-!`7@lSlRE@Ek~-EF8q(Bka{O{q?h0NZ>G2@3ga?e zP|n88$@GKLwWt$u2T50%vvxmcse~|l;$&hs>2LV2i5hU;xZ6f|=<>2%g)i*14UjSlKvoI2G$+H#XV!_Gi=yS|e z#xk5)$5|cY$Z5WE;T!N4Kw2v*_xZS@^~^Ldl*2nHelSu(7cnjen>jBa4x!Ax8Qi}X zIJl>Czz(4oO8ou{>J`~hBX_22)J@QpHsAc%HToaY%j#b*)e|ZJkYJe3(Rb-f1f_m` z`_kpi<^64tY%sp~`7AMurD&()ZRL8NHy&5nRjndi8_Lbr#G8x2Ww#U9Jt6Ux9C@=- z8*Yc$$VFfUFz=O*e>2HyMOhzFs38GwnZKgi6j0rNv-wJDwN4(L%N+}KW*_es>miQ^ zB7`AKskGbviBb8HshH{s4tE`Th|X^upVW@RHEW^SeJM4JJC ziTS#r^i#lTh786LLgRn}z(i4dnjSEf07r>slNARc8*C+?;fUM>QWaV(lsci=b5lHQ z-GC!RHMjj9Z8spVv@E9xc|RuuYX2Ueyw)lb61mtw`)$;$%?q;2->jqNrM`VS;;pc$ zDpNY>ZaUfL2-+de;#*;ye0-!HIT(5QONq3U`iMdEDAq^)L@#W}NXk{l>3d}oJ`797eH=Db`HZD3pjeD3;0NQ^n4rwr3^d5R05vkacQLAe4mI&?zv~# zyG7>%$4l#2M~?TyNR9QWj0YN)$aN9(wVe+Oh$9Hp7+51t#Kv&?i>1L|`Vpg*5C=!|9Mm=7#?(cwY`Q8mBQ$LfXlKJ1 zT8kD(Dn}!gk19fL=pn>G5MV#*0`|A-Ux2w45>aMP<=m{Hv*jr617N+q+Yj1lwWAjr zDKL28-%)YZ=W)-p>&Lm*Jr)9G#Gzz8a-$N)?dsTQSqgxCG$|!~^Hzvl*p|%r)%tyf zuJ1k0a>LB>J*JT7V5D><=?<&< zMJd)6zq^8L0m5pa`h4PX0)`s9*0yLo8vj-9-k18q`SJRQ-^W1pNj$a1k#p8Xx9o8{6t?G9?tHB zUVMF@5;EpzJv$vu1t5-gc;W|>f%G|kwTkiQqba(qwz)pT53!s%B&t~ap3vDxAkc_%qq_C3}Nk{}!ZZOKLM?jvxbepF0E3@xjERT^*D;WYq% z7T(=KrvODLGMeT?~iPfvUQNLk|`VLe#3EU z*2HS4FgwQi%d&wR6kh=bc>TlVs)J#6YrBf=5CVi0Z?GjGI=3~>RsWpW1M&UNZ={bC z-bv+D+I}QiWae@q=dKKN(`?)(Gzx|4?YuOCZ@;3DwVSlXLCsxRaxcM#tDp8U-06k{WO(3pZX zm3Hf31VA7W?N(Izq)l|X2sT%vb0WL1aKW=q{@KSF8Waqa(XkHSmcDzsG5Q9$tjytX zR`}6u_;Tc?OMN$>H`ddkVffXS#puM+Iitzky@dd|xj(IQokp(YHDr|gja z$-N4xgqBag+U%aUxfSKqLJ9T;PLKYQwf)N14zqhN2m3#c&cdPT_T9tVsL>$ZEu|9D zIT}GFq#JpW2Bjnhj7AX&1(Y0uGz^eXi49R2=~UU2&e1ito&CE@2}1)BqNB&pE;sj$p(a0cZb1so|YWZ4}j79RZCi3g;-F~XYaDlJo4!7LPz zP~lUad>N_!9NQfp>C0e~B8IW0%Lb5=1UD$#I5B(aO&s^GKh=8cR-6muh6HWmQ|GFO z{SctdRuiy<<+gGqw;NHB%onzkc$2LEzUb=M95dz8A(Z@XvoW-arl}kpKj$SyBGCth z>ccDK-D3J)Z%{&(@C0K!E4`)d%avzy&-^0afnIZy2`1^>S|84p{lDS>V&c1zB(u(;&GEY4^ znrKbIro;Q0ffj7I6Yg#2Pk#Ix4=a(}GA47!ErVTm9s!oqCi!Wl{3~XuuWv>6HCLyL zVY6%a4SC%l2g?sjkpm?KMSC%+vUX+w@LwYIy48JIJMYw0S36-ae5{0qa z4j1ALj6Wvzm4gc zX89*tAg}fGMp(pWv&>tHDsQz0#UlzZ4oq2F20JlPD;BdjtMknF0MF=cUJcKzv~L~FE(@tNYqdpYwr=8mYjq4>L61dbGz|JOYlJdpCS(ts zz@=A{XQ*p`%=yqQVyO`y18>`6az`g6q=YE2l?MnMA?Cxvxfb$(PYP@zw&{;fli{uu zO+Ipi3^O=0>94}<^uf_NL`q&D81^42Xj3EaR^Mj9Mj`QiAAf@)Er95llZtk~{}vWO zhY-9;!K5HO+Hb?*AL{YZG!$gKcyz* z?^3LbZ8@0l~?B{lGG}*Vh$(m-kRQPcGgn5q( zdi()BH~sq^{KTiV-_`9^YJd{a&5$Dk-h8SkL9TDJq-&F2rR#jj(_Eb<<-;9labDt; zp^k#6#8J5#c-Zwo5|Hshf{S(Ime&dd@$YIBWXzKH>IpM=^u=0Sap22ayghe7#G8+G z62bU+NnG7a(YFypVO>PE7G$Tzm2J(n@@J2yB#{-RPU1delb;3bU5>7_5~Y;&sqZW6 z_cTpWd~~Mw;^SRtghbq8#%|`dGG}2Ob)(o3(fEWw3KBAEwlc!!`w{(12yAp zth}}3Y(SekHH0d$q9VkR(t$&fsUD#JwV`AyF`iq(Vf%##MG~s{S!c^Vz%Di5P`rkk zkQ+(N(<9oDFIay^zHB}#K1bRvU&Uf6IsGV3eo+dZoksIhNXXmNil&-!GtE*ibBjeb z%lCy1CjX+N^}26A@S4H1aLbbN^PxBp09cKWo%C!+!Qwbx>VBV{;T8Y_lum> zIz`RWu6y`Cm3Vp-3Cid99lbb+O3TGY12J`cjK^YDOi#z>G#Vtu@^sNZ3>ul0DLo=ng;e2-VFH z%B%40Fv#Pd@-EA+bQV8mMK!O4`+2sVcAFomUNp@zvtm{Dx%GuDP(-PoFTr2F;Y4mZOeG^Fp&i3 z&g1a?>Ad*wa}eM-Od}F-sC@khJ4> z<@2W&^1^-Cr91N@>)TGPD}ww+gRVG1K~H@$qs|-hY7nxtk}kvh-YQS=*8K1P(`kSm zSnzY-RN)Y-xu1NX)$z*u(_!C$|N1(#U2w>TTyUJo$N`IUxRdk7a0Zu3_oB5?$X$`{ z1x-`q4g4bgdK~jXCF$>=Bl`b;5($t1GAU|0=mIIxvt3PQ6V)ZQ9Ly%vBu^E@Yz=(y z{iW2=WpV`yP&1KPitX_Tzd$8@qy@Yg<=OThx2?<9Hyh6PP5y>0`x#k~O22i4Ti)ls zcVIyoa8X{NEG8M1sOLC1Rc^xv*ef2Nzs&0{iQjiTn+jQT0)O|_hN`hc-<& zv-NwvLSbqi)?C1g@u{wcpW_QDa&+B)LjLvdXg-kX;PEvtPf6e=b3wb5GWzTvbGz83 zt}y9$QT7;8LL;2@(Bx{Kul-ycdujn!BkJMPK};2kG+BVubK{-FLP6mh2+lx5&L1iUwssFE(>x*=HbD zH^k`_UyT?i(XbwNdy1wyOO|=+{6sxH3*zS^>0C@llq*1PpK)(OO;8_UhiD0>(*ER~ zX`1n`6B0Gd_p0k@(#QuwGrNgjNgsnD(OC}gSOM#2h&wl6g)0a%^~O|-9@5LQO&Irl z{_piN(_;JUo0Rck%B{Hu>Pkfc+dNzg_0Mwwvt%}cHZ5c;t~zN0e9?35;$M0Hg_++U>h0R1jm`@>>{v8Fu(xh?=Nie)JnKFA8#^GW)^}+V|ksitj@RX0je^}g4JGN*fSd(OQF`1B_55rtZ zrRtR{?Yfil1&x|Ne_Z+L|2Tg(@fNg>B-bhTcey+A-aYYLYwIHb4q7-oB|hLH`Xq1g zzd!E~&O}S~2ZyxQKJyq%G~kcRQ0vC85xqmueS z0cz!&p90Ga-&~5!nj3^E^;z72x3k)0omf!GeA=N0&&o}N%t9WA_VS2n*h!@gV8V{& zx+wWO@Qnpg&!4_fOz7pQnw@df4p|!-)vH)T#OXoO7fy5auioxOxfFS2*&yO=JG=(kM*M zpOb(F9+i;@&S+aE3EVoFT_g^T;&gys)$jOSC$ zMGMbo-B(T)G<~MqQjn-+i1Cc^y;n5*J-9Mk)|r#^b$r{~NB7=qeZYiV8qlYC-&dtuc^<>gU-S)rQQ|YWJ%o;L#7$g3V_7=H>58nftCL^OF0rV!nJC1=!g;b`(wk z2B#hmnRkE$e{fKUqW%W{AT#mm*khK%2&^1dS(k+K1^wYpA?)Pg7mGLWSc={Q=flqzg6td@!a{3B}4~i*g`);ahvHqN=p+dxN z0&lTZCa65_Xb}#P5`3*^GrR764#u788s35430XkpsE&J4=#s+HV_!ylv zXj%OwC$4MrQ$Lz35++0)xm|9Qxt>kQc`ssr(g^MGX5OVO+mw{Ooq8My5Dn4_2tP{r z$f4yHPLTT~Qq_spgc`o7K-Ik_CuXTHGp54#CP-7@skRZqV|Bu!)({>`q7gV=nJ!Xo zXJ3=7nf{LjE}zJpE5Nue=+zewN7yauH+k{u&l1Hv=S^s05!~vMJx_92Us)VQd)H6= zZtreiz1%#^`5Y;peU9xnMyTJe>5+P3T2+Js+JAY{G>O06D(I*S-G2` zyu8`6jQ&A2$8)=Oyi~i?)OuP4wt_5ZI6gUfMPg6WDkYt+04m>M!9i@xE zYtR39@#u*TsaFxFF;BF1?O>IwjdstNKf^~SyEpeu7^i2%w|>XTC;({E-dang2Dr<7 zFgC-x+E;8znOeIndy=8zqn%Oc!y|SG@FcfazP<^_;|MMQflaMn-}QemjC(8uf>TghKicFT_>PZ?%t=A#&hw?qEB zO_-9w=a3|zcpC;Q?aLvvBQUw=lb8q+qovGTEptLM((T+37KAEC916vZHRH6Xe7z%N z7V=e&%>nAhLIDNCWbdpmh7}E%-yWIPv;!NPq%0JcH+bZ446s&z=w;ZZG30H zWl)1rRK<5?G*tTTI~TOp&&f}D(0`>%{d(G7nmHK(>D+Ua`@&g)YKEo#`eMcddH5er z<=;4~=`U_4#Ha~wsJj6K4KD>gX+K;Q&)_%N{cY5dUqbg-IDnfXgFb;~0ztwTaWwfE zkiT^K)gN&xOs9G=et(IIz4TM5wt~;l(#x@1WehRpru!qB-}sxqY#ct1a*^xW79bp? zo{_E!Io8jfuUuTsBLmSF{mQ|Z0qDC@YZ=?Vo}Tw+63U|wTuiS*Z_Uz6(1`mD6`X$# z^A~Hb>G)r7um$6D%>K=SO()kE^Qtv}Sp5=a!Fc1a6{)R@i5MFl9pz)ZwoVb(BFd^T zQ$tuGbTQaQs;JDQ!XfGZ(A&$XDMCwfhjR>ak zmuFZ()Zu?@Xav!N>>GRd5t$_~#<9h*F9wc=0Z;}S_4n7?Y>&&M*WY^`H8lmk?EFH# zaxv7wKhomF@ zuiWoH-BLzHF-vE%+Z=R?n}-3B-S_3@rA2dhqR&J)UVDUxpE>)HA83Ae5WXEu3LgaS z?7+gbpchX&te8HSe;Ggzm3s}Tk1sC7>*YORj%VF!8Jik{j9~1>)x1>{6mD)e5j^TZ zF9E6niB|bGfY?9okAsQy{Q@vx6HXV>wta|4<88?8o|#?q#VJeDwgxAoY9sTQ&rJp- zYgE#NC{p^RE${5&OIF2VYKomAMzmrgepYgj3XBx}!`F~Xm%Dn)fY{aRbDC>X43q7u z7=6hXz4bBwh?RWMp7ivzW}LG~y*W-vK&Y8N(axYF?YO@Tr`Wdl$h?09pZ5htEjv6h zf>>CV8Qz7`psF-AYJMK`hdRd$!w_C$nuzoXWlPYTH*c^GWUw9TETds+L%^4t3jA17 zXjy|MD=w%h{(SCiVkFLEYv^ux$m)L`-=3U6Y*ni1oILurtvy4UOQKxsiQN4ri=W%N ziBhCF&k4cwwWcNLRW233z5zsM%Y6+i<{950N$&8aHE2?$Ik>O+o0gm*Kw*UA$*xCv z$5G&ukN?U_Z3IK=KV5CaPE#Vxn^PdeFcyEsyZzoy+|C!%5-;mBPNDZ z(+X6Dg0I||NEdynr>pgKxulTE7rBE~{ce9?_;wlTqW6e3N)sW?nOVjCH;ag48HL@Au&@pyfpN%toE_xP73(%dprBaN=ycA{8E zi)q(s@SqQr=LO&LyXH^Dk%g`fV*-!l3#b$l$dqFIpSa<6LOOlG2WsQm#4ZxCT)Q(J z@;p;hn~A#jeC7KKmO_4QVNqFvxgrevDpq?vKQ91!nCGn0?LUq#+M@yU_2(a>Y-pY{ ziFPwV@_}J!Ql=mrX)xNkT@byC$Hr$jDc_8E57VCk+1z%?{jBHUaiMT0lyy2*{_5dAYk)4vGO2iK0U# zwEphU15B@*{*&;ish_U`7AA&^7DrDtguVRg{#fZ~W6=L;d$)L5?>Dpk)6bokSj5$X z6KjRaBRYG!yW)6p${rPaP>n|8!5c4V6*@GY={81`5UTFq0aY>|{4l)KR6F zSAWaIomJ@ce^f*F^?F^x_P-_5ssicwFJgh{PD2zwwA-2MU+1Bl6a|VnWEMO1KQF`B zTgEBiQnNWuA457!+#>5!l52Gj3F)}SrS848sedM>@%zCfMQ@cMRrgJJal0qjuHw_I z!jmAj58BzDag!Vp^13hiJE!Sk@;*!Lp8?IkVM^cd&F2nA@}F(cu!61R1y)FP93&^1 zhokbAeL*XEA&XM;X&c|m04-!aU1(Mz1oU6rS?7SW9_CLJ7NZAeWkVtlzR~`=x?O$o zR{O|M*PcA^@n>mCe^YyMx6A6qL46teEOLOF%8THqJIXW@)pf4Ovbea1OD)5$Zr4*A z=NrvP5r7c1;U!3+0VJ`#$+33nNCM4%^>Dk7hTU|Db~J>=Z`0Y&0k4s zpo5a?_0zpW8GZAfgJhXiZU8t;cy#fs-(gN&(92Rl?QN=^b!5}1^zCUW39@F+A-m$B zSrsAX(ghLGDksrm$M&0Yeiq?qsHOtPL7#-hVwkSq#!#jKwotok$-R2VV-dFys(z|Fx7_)*HUu7)x9$IwvwC6luY|TyHrF~v8e}6FE z+`)R^mh!|#q|HvQl8uw`fgaId+<=9+y?*6k9!rcSMh5{-_$a`z)(%ROazJ}(4L}6m%Zs|u|bMP9`hfa3)@;i&!D&*CTt`B3Mz4cxL9}uH7 zIm&F5;w+wM{Rn;P4@UOx{EIeUCl%s>x***p!W^bBt#-9G=h1ZXM2ur71DIZQ7WDeW;VR4=}3@X2A zdHkj45zuCNqG}2!V^{vw5E7J@;Xl1qdyVyo9?>R#7@uDzckHM@v-cYs0$X!o8ye6K6qN(yB%7?aHl`xY1@c1-JB_i#qo zoBV0h{)!{2-2!~Qt%(~@WZmiZmAT1!l;9Jwsc034Qr@r-(Nm70a1Q)O?i<)|4bq`e zwy(jsJ9<;-VU_K5H4} zsn4hN3l2PbCeql!%`e(7nN{0JK4*<)q1iQ;v+#Tw8NjA&NtWc7?#EnFleUSbjX2@t z81HLZQ&o7}RdKgmcIi)c$m4RjcQ-kdikTW^R^Sl19IdQynf|m{Lc_JZIB0s~@hRas zrz)FrTc$c;FNh326WO>@oFDNyh6R+au_qPOoyN#iJJPYOpf~u^J4bkP1ibK#=#&>a z?e{Qza5XCCB8#D$qnA3~X)v88gGZinCh>%%3FFjSZ3{U*v6ZI>sHEaGiGfzk=e^}EIcB6WV`1^v2Fq%0kucRF@`{? zjMv~~)b`M9#GOiorrk9*jl@dH1QQWAT)q|>^QmbiO(9kCP1dOkQVW6k*Y~xIw`=^F zpQNzzBXpz9@nvnUfaSt5P1K2ZSYRy;xM}`CjbIR4Sok^f&Sp33Dcgi1e7@EVlqD$P zlPK7j7?tM>iAWqc|8qVJ>w2!3&^6zHX;2Mcv$+T*CmFyf4>(=*o>nsJkR@VjQ+P|y zcd+!@if>i!#JZU`obZM6fMeSoPK2m8rFyx zICR^5i7^5`)=_O=4I=UV6D4q;wCEC^cLJFn&1+3a!1i>c+$P*eSTst{mB2mudpVK1 zLla7jM%~XCb9zjRGife(yOkNB3XpEKAbkl;^uOYiF}5`PHLC=*@o!8F7D~auh}r&= z0x;KfG~<3G`1h}-G5SAA)UpVWPU)9|~QHB;iDzamKKnW5C|M z=QK$rP8`F9I61|jai>5DvA=z1G#X1i^KW=msZLupKRF>j2BfNrgC16|HMOioB7{W7 zcqmO?&$Ol|RDoI(x)Z*FK62}6aWwj^^yV(BzleRsKf!cVp~+3_yE+M&%F=Wxx1jbt z{^Stv9x0Y^*<%=Zbe!F)cii60B5^Wlc^4`TgQr9hM)#&}`_$RvA!&$ptyr0o14-DL0ckRQ2@a+GE%V!kP=Is?HC(n?@{ z2|3U@Q4K;xgm-&=Nu85<8#pQ3^182iwp#1vDpjZ8Nj727f+RGwIUz?>UUtBke znOC63{D#;*8Gl#Qn3`=yRs?}Ol81Z$e3EU9=r^N7(x|9i7-zZ~RRU*L=8d_q`F=d~ z1a>k)_F9CsplfbnX3Zg19UHWUab4S+e@HPyj>Eqq;C=$C$!EcEhT`9EnK;QeNu}C{ zLU1Imd5NqHtb?vemJ)%v^#A;s!0j^I_h$FxKwn#%)P0l;Wc=>#IX((oRAn>pn07QtL0A?GXfb}SXsw43?E)SuHKyxw#N zpLBZ?H(pOP9Z`Ph$y7+OdILc!TRXZtfJ=Pn%SvOph+zY5gd;*T%CU;P$@(9fa85X{ z0!}ENc zpVdW+Cb0{dLZoiHb+&?&?JTJ)X{uz=y&p|s#jnNpuXifZ$2iTn^!(Pjc_2Ff<`s^C zSyYp@H4&l>r>Ep>`R2DAKkUAGZd5Z9S+64PLthGhl? zMbzvKw<{w(;#Elmv#8AXiVB-GdyK|Yf#G358R|W&(1=TX+$8zZ%yFh1rIa2qQJ8QV zHr4qXAYrhh1&;qn6F(O$1!s82?p&@j4S#opQfo+~T`zuotQ|3`l!72Jx&7~uvr2g$ z1Dsev=Ry(Vjq|dx@5MQ#H0k1tsPy^z5?^q$(d3YH?bHQSy4~8IP+YLq1IHv*LMR_8 zPG;9*HJ-YWK1ElOiD@H?;762^D+T#S_6;Aa&44Y{*{I7m@2WB5auIwKafpe*=#y-!2ew%%oN71w#di<>inO=K zhHO;6t^CE8`-hw;^|!QTsVj!>3i*jtF8Bf7`mPOdQqY6rW2!(j72$RDxt0lTrn$fX z9-vQqe1<^#(3h}6JNuvfJd1yIa9M$AVGXd640Tb|zl^jjEf@zYNvn3u?+%8Zm$&{!Y!9C+^RcVLo`_8KkW6BZ2?% zP+e+8Njc&#W5&njPk}upx2hs9KKzayOgvRPcKK;HFsVf)q^G;_7h!9YKAzPA`Vcj+ zZJ+w;7IJ;tAQhZU<3zJfh_NIy&fq}!a+r)uWF^`oKqj93?}jO{*H@M5b|=1cJ|D>= zsiOEu9tOlWKmDYO+gidu6ooeuwiw2+JGgIT%oL-vk9Dv9z*VxfUkhjlicm2uP95b~ zZM~J8o)ufqWyZWTA#MX=9~{V#O*?d77bX#CyND8IaaggqAZ;@E1WmQdM;TrCk1A08 zca@qEss;BZE2nC?M6|;z@^^nYwcIn8tas{n4tys3Y_nF%+@A%e3H^IyTx+9uCiJf$ zaJM8^K%TOzV?%`I)@>2*l+a7nClW&KLB%Ms6jH78=!ubd_Z{E}1^H0nC+vV*~Vj1kCP}!=xg!#bSyODZhO&;{A{EN4S8Pq*+_YB!8-tAw&>Bg)b?4UOtULYw?ZAf} zJsn{H?aDc16ScV>D)ThY!-TM%L@2i>Ja^e7p2-3zb-}xL+00FqJ~J3Q(hFmjxq+H0 z9ff-0{$hL`hh<@oZw^`$-hf(yPRap$i`NEtGAMm}RF@W#&zC_jTm?9G7u!Zy;*tN) z$1h@Oe36I67vjAzU%C=_x zlYTB99U%%hO-h-ckAjfC_o^z*T-p9xz#}I!dYV{!-+5jF9DMm5##OE*zTyavVrtv4*stAihQlX zeTmPj{XC3CglDj2^&jOlL%4mm|I{^Gur?oLz`*}%53vT>R;Ka4ft7S8C6f0m){<4` zZ7H9Uyd(!9^-%IIerI_vFR$law#cIq*S6%c#IuzRm!E;&)#rR;ggv^AN!UI*CIOin zG3YZbcO``XczSe-Pa>cxmWg}rfbTazJ4a;0y2Rf6wjrtodp$H#XW|318yh7M+0mzW z=6{t{Y~LA}s_@U37gur(`?O9E^}JQ09k9 zmb7PCuc^7RbAj{()(*DgN&mw0dwkx!GjENL%a1%PIouz3wDR3l$S*G5yj+y13Z_<1 zHo2>3&Ere%>k4p=W(z*rVvl7|^i2pE(wx|-W0lL`3E~8-o*wrq3TJ1gBrEApJu!C@ zXA`oN^m?tTsMvO?oY5{5^Y{3yMuw1pFD2r!{$W0oH}qwi=JXbEcZ)tM<@~*2=|+#) z@9Z_hsMe{*dVD~`^oSP15F9T)h?Z1S9?-@+#BNEmx!pbj-YQ|`EWYVI2|k#mRHsW= z*5g@R*A5#A5V3##r7hAm03wvd(#=Bz6$f^d1+{aL z&*2Lh1L_w~E>v-;CoE@^Uj%*)m3cajXxZ>^%KsT2yE2E`*SQk*DMEBT-Iq;8Ws{DU zgr1d|zu_zXq%3>Q;U6 zjzOQq&=@#|#-ziF+_Az!f_z5v34hp0P$vCig`QugN9 zQp)6Q)}+<<)*3H&OerAFWcnP9PG26+BV5r%)9>$k?b`NSnVubv$4(NETo=SsZLM5` z>*Nb%d3UAo1^>_wg_PCgKiPYcK_Iun$hh=s@MoSYB%ThoAc5*JrBGm{UOIfPAL(W+ zQ5{C=8sGh?nh#(wMD??rO?;z08$4*uc-}ImG;;47lifgnCoqVSr<@6wQ<7t^vjrc= zUbW~bf}xpbOs31vCmuazd`8|S!LYHa*FrN>fH*(@C=`rV%OA%DMjB{do)WD8DgVdG zJkfo>VZ6_;RS$O=4LLsF#%6m|o0MesMD*#?$1|lSrO?F9WX+tA&-ZWa#;i(KjKk@Z zpcUWq1+Qq*viOt5pKQmhTaf=2NsHG^1n%(Av(If)P+0E9s@LA0Nj;l zJ}FG*soxg3*}#g;lD?1XQ7e5%zH~`ZG!bG36cT6#*$N+xbvJzbw`Ta}#l1o&CEO=3#L`{FHEO-e ztEGr2o8!MYkDwy342&`q559txFa9uW=Q*-gz5GK-jJ+2ZP=lZC-~EMLC!Q$-r2JOX z_mYM~YF{Nx&A`}3$Of`N($Zw%)8J~(yV~Mb+zWVRF0M~C&3BdB)cy+^B|TBOTL3%kV3xmuPn68BnPKXBGV663I~{(RrfF#u*k`u+fh^ z`6#o7u+4b>2cuVfrdvc#A9MG=k&yIS5Nnd=FBj?rI@i=L7rye*kW;BhA$xapyRwyq z`P)1T8Jpg$^ABaA8ByMe0&xM$9oWiE`}3%tBYDAh<<4%f2q%d{2 zktYX1L5RsATv_1iq%Woy1V8%$=uqG^S-OI1$~>2jI|6XG*ydayZVr5~B4Hu>%jr{w zBnh%f>?sL&dwlGngj6WpD=`iCks?cH18nxsJ;{nEtmZ6kFgz*rdaQ1B4YsLzSUen; z#qmJeSd-OSHI4w~S2f3~&73~yH5H+AafFH9Rs^vc&!kO+k_JaFO;%<$53Q*T*ys%& zB&f_yWKr6rQ^Kz=*ClGT*2R%F{KW_HQ5Nx zK*Do7Qkka+cnOHc)ByZ`QXOn4OEI?oYm9B+20m%)iaQ?nj=8ee&;_P`*yj&`f%mXt+W!;J2jfxZGi%+i_L4Ss4kMNlfi7CfWvn1CjAeYWx_cmhzIShPlQ9FfK50W5Ar% z7{?JoNHOF(xFo+w-De)xKHH4mwT(OGIU`m7W{op=k)~jgF|`nG@jOX|O)W z<)`A*ySa(GUwC&17|x927Lg+5q&<-({b(lz;Q=QxV+t?_Uq%9dE5z(J0%awxgWl12 z7c)*|u`WE1bR!c%3Dae^JR1$qqol-&ZRNaW`Y_s+%UU?QEuT~T{`nhxXU`J8*YMXL z&%NB;%TKhnyP@sKhRTKOj_B?Mt4w}P-&96{pTQsRCewvzr5FRdh>28;>uodS)M8IB zA0{mSy7T7mDGjXW{VVzI+(Ukv+c--NM0hn|=NCch(I2B*3ZeV6S0~(20X_YQbVC!} zuhaz}4)9>8k$wi91gvhdJW2cd0b74oZ=XVDoPgf3n|^= z9c#)NMbJ^mRhC#|SIS*b@UxtX&PexZ-F*S=t^PSi<=^z2K&svAi9)Ug#QH2~NrjR} zSZO(A!xF%EWZ6wy3yKs&Sr7u~p;9~eJe*@d0RlglCoIHI?t##J3&K8Ij} zkwNKyZ=;eW(3&@1iWG}tKs9m#ndi5%FO`tDmOSfcAP4=)r~Ust^u7dR+GWaeazD}U zZ4ak8JAQs5u2$FnwRzgDZ$0X0bqKn0dpo<4XP?CL*zFS_Jmsf=H+H^e%c-J|yyQQK z$%kNbqf#_SdY*a@@oPTaJKK1Xw0v>k?tkhuQow&1tk__5?wPZ!a%735^U6Qai)%lt82P6i0lf=qB74h1iw)Dk?55@l@K97!6MUQx zf)Y<`$*w(~;g!7bXnRV?o)zSg76d#~_X=jNrTq;IZpZyG5P>Thp=ct2WzF9u7Ib%( zx42X?cw0yGs&+^Fok}P-_Y=3;Gq@!I*Dz1#TuO)v`z!y}2R~ArMH#H-a^7K>hP`$& z+d0?E_*PGrN`5e6^Hd|n@-CrW3B`FGmrPv<-ib?Jebk!^XfmkR5&P$yOz}j1 zVkrofPaX9^q&rU0@IozMZ{)Dmhj9ZzSxm!ssOU@QEv}__;GLGFaN|H`>Oq<=D_1$= z@3>Mvm1jSDh)5)Q?{|JG!RYIkYqEi_{;{w)FYm%#w5$ZMJY!E!{>m?rO1Yd$r_*xoxbFDPRTHPUK#j=gmK5Kgx!s(;F-DUMyl3* za^I%x$Hx>L07}R#5c966s5N^3ix-cojMXD-=TAuq3E0uIQyAMIRMoYbE2~ljN{{^IwN#1&7FR#GQdE->yZRxsY7P>Hh3KOk$gE;RdiHnrMgfarH&^=GZJDe#S z1%4qn19&T9$f5QhltIuHA(ukHcqr}ggKjmq$-@PY%*C-EVV!RyiG#m3mhgiciMP_h zfD8Ghu4+07s*-dx*+Ee4iEUU=GNtb35;LOv%>?naEa2rtw~drw_$Ig<-Xafodu>q@ zufqeh5i;^;AE#~NqfdH?$PGvKEfSQ~gGZmti|@L5E!)h$;e(}QaPZ^(5ZyNR^stTI zVVgfuG6uXL7i^gHVCu=?C2#M*#)RJ3Gh;*A+2vH->$2-kfl|Rnmu{DQ_e0?iE}6;eQ*{4ShnLUA!Jq$?suas(gTko!dhccoWta>!i27I^?dzw;z>wC` zcbxmY8s0w= zxlMX*O__3s6staO$U1mX<;@!rFV21Af@f79O8Lx8Mc_K8eW{JSqe~(C-LD{1pIF-SSGFjfzLQ~qmu~(Of}otw zAK{yeJ2ZkleZ?{s$DST#zCc&YjW#S>*YygyDjV|=A4B@pm2`DA#Czr zPePup4!ZO3^K=Zo|FV2uDZZZAL^PJcqMt`}(PTL)-1^YS=9k1;=0mqI4~VP#s-KaA zRHwjWCCK2czjxkJDy@;7Sa3CY8NzAKTSbD`YvTk-Ivhi@^c8sFi|=pmHct2mXNyuNtE&+dcE`Y-#YHDL9^-* z*J^$j*A=!)1t-L@dAY&-{dwJ?H!grdWWTN8X2{aie3kReQ*$huhe}FHpL9fU8O28y zYr|;~4`h`GM8Kh8&%*kiY;b%niT&Rt*w%lqc7GRMjlJm@Lm}u1J~0P~u?xh#E5A>x z*q^;b^-+LC3#i}-=%5VJHPm^~hO)^3Fn<5_3*VnjHa7eSWb=^e#LzgrzW#J+J>0Ov z8nl_Y-AtuTF?GhK1|ThHUl*co(9BDtp4}3olH$B%YNe|B;0=rF&_ZB6W4n_O?K`I- zHo7I;X4~D;2UinFaYCfX59!0Lu!9nBhLW`?mm;HbrKRVtk(3Id?>ubX#hj^#{98D) zSXe&iT#o5-sR{W?Sk}pD0CeaVX(BYkCV$}Gx|TcJ#q;F6Q?XTSTW>Co$IaCU)Ir_h zhCm@1R*(lpYM7u?{!Tx@uJU!z3r2Gv*H()=-lwym@>c-hde01X-C#UFX&dDBBb(|| zf;SBOM^rs}JKDTnp1kRv->~3!e_P5gjGyXsm}`$Wjt$lldRWcIrwhVe**Sc7%f&)` zzi%q$$`1H#b+aTL)5GDX2kqym@RTz>kovZJ^m}*L_`jDRwb*4T+w}^!I?ptRJEU{V zFm|gm`waQBD@HDd!iK2gtFmB#Mz+GbaqAVEu$Eq*=0DdePG}vfIp6^Cu>)y@LCb87 zKZf9cGUCx+C?U+T1FHnR%w*$uvU`lJ0pxZX?&I~^E|5V9FgG9jI^`yMAygR>%d;I$ z8TwD1ynZ3WHoou8WtZFQlnqUl$OL%HvS#}4V<42T%LH@7-%4p=emwQvf!5={$Ggir zbMnUYZPD;En)tG3r&qkRm>m)7U%;nc2$1GXx{Zgy24bhCHubBEC|k<<2TAr}DjcOz zl-9idz2u(zGaYOUiE-k@dzZyqCo^)))CcIrc-S+*u4A_g*%!3QK?m5x@sF5+Agw zH3j>gj1`1ZP@M*M$7;9=9KF&ji+x~mu?gd5te4&hNi(nR;619nbTG3#Spp2xPvDN+ z_AhCD-I6~DeSNZoMV%j=7n8*_bRk;JJ-#D6jGru`J8jG-BEVbJq?T~zmGL7LRw2uK z?u}(MK%dZWJenGL`T71&qNMup53$GSH)ngI>hYgxDy}He?3d&jy~y|~0Sbbrog01@ zhmOa@dGP=YYGCcg@p5bNVG5w|S@3~ifX(uC)%i8UTu(B6`iHlu_DefK?g`Df4{rh{ z>Ui4O`2R>wS#H3B;UHF>WtRCF9BuPpj6P&%na$rDA`w4&cR8j?eYHqcY2dNA9)%N$ zp6X^CvdW({qi(&DLfnqf^2OZCC`(H^l5FjBtG2iy(7=GTfVl}NqLPW zoq2ErryHEMc`!t<}}s(B~efZQw01UDJuy()EK{U?*5G8uA;n3dkQ8-wJ>Mq z#KA>L`9EHt3rDP8_mgp%gMjqeEQu)<_yyC>=IHYENnV*v7B!if z&}!pE6i-}HU84-5;YOdr`n6Ziyvs0MN^Y`hAwZ|aYc)LXJIy9-nj--BT=N1MeMG?W zlaUNmeoFK--4&$wcP*Q75Da$d)S-bN6|_H?42m{Ek;UCpfcpU#F8V(db2_xQ%{IuC zQYrbj{`RjE1|58`NTHA!O)QijyhMoqOC}H3aCEg_QxmWr6S+5*TGm}cI%PWfTHgf3E-u$5yv zm+hdqI!3~CB?6L`R6;V%$qTbbuZp`_*FBe*%Wa}aq1oPKCB_@RqcDgzm!OF%bC0z4C{Ktz_jsW3w zee0?~!O6UY!qn#-s0hVsr z_$IRqSOCn)q7!-9VK1lJ^nU=uKs>*x@zMLEZZrU_=(Pnqk`xHkQdnriS~F;)q_A0i(Y}&*Tbvl9!dk~>wNEjU$Usz zQJ~{}sKQ_9H42`-jL%0Sw9ej#=d~0uG&a{t-y1JX6l%t#Yv618Lx9cegx(k4Q%G)@ zqC^^f;5m2>eJ6YxfY-a3834=EH|_Y5qqcbUmL(gRk-MHndms+fDFVViwC-EY_s4*J zo1T9K_?K1yv_blNm!SW<$^d9&1T?4&*bO5f2+o1))m0*FniAM%e1z`1JQ|P}8l)R` zWNp&UjV#*2YPLBiJL~ANnFFk702C45lmPhPgAeAdgMBwWo~I#cRn}9_FH|z7&k+O_ zbQEAiZFPNnVtU_R^It>tzKoBDZ@n85-0?)YkkX$5rOuV1Z|~)Y8WeF|wezAkRy=_F z_bpUKpn$6t3Tn7$3c{BSD&K?ROZf&U3V*)j(2vD-)LN~;F);>GO+`F_m9=%7y?)tF zUOa7=@by{Cz#l{xqyqW{!CKw*T5PZr9evo3;Q#I<{k^*l0Kw^~Crc{>_Rt6jfpZ;p zzFC6`0kbGIKM(pAF_)bEzi#*0P3vUg|Md+d0Je91BPfH+haV5jq2t1Z3wHkedHe2n zzq&?YZ&ZHBf#o4@(EtQf)`*GnG$fIUs*YjYya5r+N|B%nX;u7gx%2va69O7 zQ@wffW_14lgCG20{<_J@$zUs7ZND3e3=lB*n3wqth3$O^UPJhy(6<@^h*&UWu4R6{ z98nDq&A}^Zg(?<2DEbCPzVn|Cjcba;8$v!ppz|bnm&yBv*2p(H3h^717og{;@#s4M z@*EZP@iNOHiDa+!poS#x5fvxCNfp=XR`xkObK`A0b>u;N`{tY_t4rNT!01Mg2VfBZ z*hc8R3DbWU!M_CG2U_m;E(8B}uL01A4^UGhU{{R*8Q-kW3IVeqFTh`Wn^9m5qX9_$ zXJE3rX7{aMwga67o6de8>ItX&l00}`AX6!b`h$;y*!HoHeazl@=be0mrq|~?^@VE9 zeGR(@QD0K#=Se`+Ir-4H&Q-hZc@i5H<~&>8>(OgTS}1hwxe4l_7xnO051Yz_KDway zuMrj{T>5Z)s7$XYzpn-h`|s zm&z=#W!EpgVJ8lsv*D3pTU*Z31*?nMVjbEp3)~O!uL|&5A^Qy&{CB`||Mr|NNi-a}!huoL<{rBLluKzRtk|H-A@R8?WKdQH4>o}2RcWukFT#)K-Bpw2zt_<57+zBypXK2=O6gTLMa4YBaTA` zzfY-nIbtP%YNSO!OJ2^{i$#SDDqfSKPcQ%w1t{VI+`2Volq3 z$#ehjPu{Yzl^L7O!vDiVogEuJLGO(>-q_3)7a0H~|NY`G{-RyKemxKWQ@O3EfskHH z$#^stLZGeQuI7EqI`}DocmCR6B$)W(m+28v&8V!M-&D%*ws-&^4Q+1gv>9pl2B5z>m&o>)9s1GHH)>uGsx{ z-R4);^N4@~BmtGR|6o}^{`lj$xDPjIuLY0Cj~+d07cXA4Z-4vS+d$t7$!KkSNcJ}* z@#_`xc&K;o9}lGv^jrdy*W}kSL{ZUIZ)7v0#00K)cT)1 zdCG3xyqSOA{byofIXm~w=WOFh7R@^InAw5j-82A*fC)7L+VZk1LjG0YT=)9B4gQt2 z{#FkD?{56hKWQ&zpVCM2Px_&=iGAdoy*}0NvXv=nFRK8!?J@Uw>0|PTe=Mn(N8$BL zuAS7mX2cwV^Qt$e{B&&0YuRR-uG)pQx9!p7vK<{-wfSXu-Ca#|53K6t0r-y}Kfa^9 z%>x5AapYkU0nq0>(1aSuc#eS1K}CH+bM&Qyp)xgnUdsnVbM#?zKPSCkUm@U0bxL&e z#6JZ%)wnO}cVE#4&sXLyZC&1HM#} z1_TTNtxmvu%E|&9&<2>FpAYIoi;sEzsk+*<+~98{h${1m~S8ywBx)!A^}Y}0A}?FdfxLlt0^R8JEH;l z5Z%`y*KaFxcF)FTdu-&E9ay_**|uua%c*1{cDA0?%^vxGY^WhHS8&m$EoJ@n2?QRn zRI^__*ii5NP_rWcxaSfOaHzls!0`7P5*qT|{`efr*%Z*!lU1&O&dD2FzLZbb*Uzu0 zPeQ24kT=3S0a5SIr(Arm1MkI$=As_F8VRcY$TSM?%@Z&~VoF+dp*@pe?{hTpwjA;w6!_N$`n%xY z_How$C2OLlzqvb}HQhMgIiwUyO1 zTg>;jUjEeO$Q3X=0BMPrJ|9vH^nj|Hy6=^*VRr(DF9!?h-21tN>g>H?K)@$hs;G{J z;kO&`$qvOo-;{{gM>tyN<~a;LM;;Ov^59n_Ld1FdUIig3GsQ zJV!%6A6{R?!`=#zsI9DEG?? z=xtKlzPLpM!QSOlY--u&IKDb*?;pBk_m5BJ8|3VAPn%vg{vsd`J+9KTo)pI4HE-@& z{R%|B3!moIHFvH6tj%ROhSvk|gticgO?%S&5<-HH4{e8l)Dzg$pyByS{PSUS9Y?)z z4}76qeMl=og^)Z+G1S;euOE8vLtO7H*IKR+2)ou z@|ScH+XmW2+U~wg%&WbH!tV-r3N-xPhwptFAe1}yLNFc>y_k@1I8-LI<3(%~l$1yp z>Pw*D7b5NXHTJCjQ0bu>0v^PRbOOB5=B1Lok>TH~qPE5SU4dRne?Dy!>QN9fP_+GT zNKuim^A!R`*X8@8!c6QLpgkNAmEm~cv7l5Cnifb4?D*bcURR&Dg9tb?p@CXUggm?!EZa(L%V}&{g>b#4HilJ+GaT&iZeoQ?-6k_+|cpiff^J|Da z#6j@d03om5uTf}S{QDegq~y~n1Xq7wYB>0`hp*lDo&EgUE15EMf1&mA#-{d_z%`gI zP{V*-1rZUz-_SDHVKkAnb?XgFuD@i-XqFB*aKbjV0ul=YU}IyTPw;PY-Miqwi+GlF z4ah4`WzN|=zofVB8US~k5l{j6Z5RR05MVF=&f0>#KYi6cI(pfL))#xFec1-E(k%Ws^FGP>W?K}zJ@{@qJ*v7qGg&n#J*Gdp~y%MHM0o+e@PZY5wz-|};7FnX#z%XbqpM-6ES2yg~@;mmKkyq_pXDaV^zP8@=_(OnD1Qa1J z+=)Mh?Ly6pHq1;Y-^T2t9Wq zG%wGeC{pk9+WCI1L*8;oyr;;x38f1Bdm1tzLgj}(1;aJ*^1nr&&CvU-fKDTbd47Md zYDjovl==a9Ew}+N8o(Xcx)0&s;IZjTmRx(ml9BN&C2+c=YRUQ!`G-I@2I%)2_}@+X zml^G?oe=rgdaqUJ1K_B3M7ynC-y9PktMnGFlg+fNa zPT;L&1O)X1LZBZq3_{nYjBk<~lOroP?D0=$ouoa?{mREoF3|^=MN7^zHhxZMnZ;484&sOf&!j;+B$cVz(P?3Z)E8F zLMaY?T<5RXQxcrdZ-?3%b3WSiNAE%JH^i;*xqiP^K0Ojj(S-8zp+-MGRT0X=hpwgf z>DS3?Lij2O>Kzck{XOY=^E04iOe*18cEmHZV+_<9vM58{5~_kit%g46)<`Dpb3L!cZg)eF7G z6X|w-%#uRhgNDofb9&#t>5%WQuk#IYEquy@*YZ^n-WUi8B!!HYkj6rh7C=!uVQ=_& zHolVYbS_2X`wE3nip3jr8abjOAPoi1f#OdZ{h@(S)Z7S>0Hg`fSumtbi0>nm1Uolg z>h4R2&TRD(@Flus;2#UF(fR%e@GsKvzYG4mY5?3#0n|N;B!e641oXbBJJJERGxQ%y z2Lz>jd;bYO<~D|^=0<5(&NuJew=`>y4PUm$MlajqN}3b>@|M17I9D6;{(PuA2(FQ9t@n-F-;2z~{?DV5^Y`9{~v& z0(uQizjzfzf89`xyf5!7`z-h-J>KXDh2DKvNN-%}d+14hYWVo{ldcgJ{j?*a8gg3R zr({dc4^qG^3&e9M`O~sMe_h|s`0(Mwxe@TrJMZKK!EMozTo)iaZ*A4=#cx|@aoRQ> z`eHXCfcC0jkeUSukDCF&5>%m@Sc|FjE zbPDvfoU%|Pgp1h! zMLGtdD1my<-U#xBjWYE4dhH+?Y6I-sKcj z0q1n~>{+{f`EqVRY&QbZE%BhYp0s2=GX^pvARRlL4L*tsSg@Z!Kj6O`#J;=WzbnVx z6hJ>mqjZ3KJT~-S^myyMfURG;qGR3PKe+LnU9>AUznX1yX;+#w)OAiht18i-kO+?g zV5lTapAXfwhj<4*-|aW|kfB1bVSRlONl_0a*@Z}eA&=i1MO9H09}ZW;A;c%p^$&3i zv?R_0qMw^L@Vqe)ss`}D8q#F&pAR3|@a2=f>cX!}h#L?pOY{ng|Nr*Btyi||N^7jD zeL44Yd^wKo*p8i8?l|eB-BCxhh(Jh5OAyizBpnbh5g;LWLV^bb{Q^88@zR1n00;?0 z6LohKT52gE6mUm`?nH@69J?Lg<8$nD-RH9JRkeDKIoGKA>f2+ks@l8uIlH#!u$F6| zs&$!buDRy-&2dGI1=pUy>*JWP=j-`NAgRLku^#~zobr+|*)>%gpmhW=MK!pWMK7t1~^v&lOygEkE~6qQ@|;Zy<$LoZyf7yx%*Ya zk;}P&;{x+1u!e`@`|UbjSf!T;2{kULWx+9k+6oOLRp&r81?){4WQ`2%xO+vaFv-`a z)hD2vwoYRTsH^#bf2(6(Zr=j_M~MIw6Tm@bU$q11`#mxEIWvLm-!H&k;A+Z{#ZIc? z_sjB{JW+ihoBc4URYB$KtgyWm9Zu@riYDh6=%sq~O4l;5s(Ci4Sb`rM7wD_N+7B!jY{y##Lv}F5r~)J# zT%ZcCqrdC<9)J9Cxpe7LBm#Tqqe0Tzz5lcDMu%tp%ok*!6TkWeR7*~tktqQ6AS(ad z_j9S#+}RG3o}^+vIp;l` zaJ}-o421Z}_J1yXW9m{~U9zJZCZ+LK{sv%JX%8oGw!<>fL4fywlMC6{aRxXHE}V$R zR-0a&I!6v*pELOwC;sDoY`~7kdaH4+3g{(bYIF4COoMnm&kWO+<F9hJjO#&LAp4K@q zeoRwQ&;WmLTcgK+z@bO$OY;26)_u(;9eD zCAf-5BF9Oea7=h+BXa~r(*))uu<>WU2UNq2tXkL&5SiG34niiBw*UifvqNi5sR?&z9+XY$qQ#Mg-J2x z^A~6Jg#a=scf3tz3?>LbtiH#UnwP1KbLZQtk7K@bj&ZDpHlWUdEg#QGVmz$|11s8h zIYxb!N_;u{yJx1bb6PrI55(|XUeP13zc^&lD>}p(5HaroK4TmgUZErVH#>!5|1kkV zV!+Oz-Z@M=V5NI?<4S?%t#4W#>sR|UQio;*CULmpXR>M)1dTLVB|#$xHoldps57AM z^YFtD$JD`|=&FBnb3@KteMvg!9+cZ^3ea%gl~bdvfd_Hwn+5!*w)YqCF9hH?l7QTA z6UhOAy~y-_0U}eF1e*Wp>D7T~dqaNp>L z2<#JqA$?pEfzv1F5;idzG>sIRCX^7c<0)%YG%`Sa0dC*Eotccn|F`eTiM5~0*11p0 zPOKXcz<+6#q61)#I4~jDFZj2S0x4Df3IRB#Bw*}&Ky8l%?D-x5zw%zDDNF**>FO}y zJXKwihh#0P{tf&QcyoE(S#kw_yts9?|9b^t*zVmH*2e9y$upO12NMK&D}Dq%TM=4z zH`@Kb!`}Q{9nyRQkRX}%z>A#VOq2ZFxg<5061FkN zeijyrsNX;I&_k_}0qdLFBA5S6E}VKmZiF|zw;B5JG`n@nYb}APLJyU>}RyPOOxdJ`o@B7}$cnp|r zwqY;+JC{P3SMk_3w$o$fH=MjVdm!7^`CJIN2ykpKX2-!?0wdNKcq((uREJsYP$i9k zY4?b$To%qBfPMjND{qS!;r=qr|sB+1%f zt9AY4RXREbV!N>~&=18vv9OeVhYpJDi=p?aB;ft`-`_*H?cLtl-jT=q*F{c0ELYZV zj4}o4XKs#?SqVV_|3UzY%t!(Vv1fG-96NlLjDmXk!O*#H5GIIUI<+RJJG)_(pp#s? z3Ys(Q<-)YuO0u>UrSZrE+jrSSz+lZFgaDIU!Lnl+hKG4YYT`@OOyWE_vlfIi>Tzv( z1Z|8;V1ER*@pA>cT>{ZkhzS-<(&$+Kt!ZcH+w3QV64;f<+40y;@t(oH-NI z4yz`>dyjU*e%CL(Bj-}&;-!P1H35Lj`#;7Sgp^3Q!=?EQrRd?-nP>?d__ z+xPU3Df0!GtDpT9Q~dVBYNN9p)crkqeCf8_Uf&w?`u9K-ZO^v)v57b51jnGs4qhHn z@a)K5E`Ea zuAHhj}(;IKsjChPeadC# zn^e9Rfv3G2$5-HO1%Yye!@I75g#!Jfk3Jfct!Qm_o0QcnTqpaSb0FG<5tzKpdY;qU zq`vTc6R_GGXX8T<_6Qc|>d$EyxO^>}S2)BD&&?%~RkVN2X-)eSBLs5hnYQOQDW?Sg z=J}W4`BD4fJ&Q?BeK|tQj)-1ei(E|y@3~>5fSLfba-e1j)X>0Bed<$LQ;(}0p-S>YWb@zl+Cof19OapS^DH)u5GWiGS{L$}8yEdSJe<1)xW+VY3Q-=voA_!BM z1meV_i@)8wa-mw2$5+?oTzyN6YPlZc)*5aZ{3`o+?PSmdeD;%{khQg2^8V#Za`*amsjt5-op-)3ol_4=b@4eFJoe{S*Yj<_@4W1N*f(5?m`xn)aONdK!uGIDy3L^y zkHhn@j|Y3pd!)q6gvdDwu-$fD%&ezksd)9ijc}nhqsacp_Js=dIqCw@LHugfRT-wG@Hf!w;g72ol0oRp+4_tx_s$NUy_$!ep!C-gCE2dl-XF#zRGrTT=9DjV@#m1uP}PS#ExrA zM1)@M9GaH%ZNN!C=P1ZN4cK;evYZqF!r2bZNeylNObB$fs-jM8Ml>I*bBB){-;d*;Rs-OQaS-Nvs`XB!d8LXU5AcBSB z=BDzO;^}{%q*MdEuWzeJyCxv>d#g4eR`Q9e{Z9>kB2Ra($WBo4Z|?NM1l$>}^bIW9 zYUr!H^Ugc+#v5;prN})l@{MnNBZB{TzVjV<>7|#(>fq;U?X!viZlha5!L_!=Y!-_L4W{_RXbywtL0+d?W>`w$@F7%S~@vWF|2ai~0v> zzakkk9|9X=>OY{*CK0m6Ur9;g-D|S4eNC!!PsqR`1iS=7#om9!v8I#*KH3jwR+5k< z0a1Y`pAO*vk@^GKs+Zz}?>Hdhsf0~*Qr4CKn{U3Et$)9mU7han%U}MoeB~=&k#BwL zTT$h&>VLa$FFPIQ!1pQ^=EC(j#LP=R!(okF-Ot+QB`3<+^*y5CCCuTZMV>js`U3B# z%G8JO95cCHNPMuLRSRMzZwm=H_*mCI)xK1dfC4@y8scZ5CV{(m?~eDo`UP#?kdvL= zpr&~wXp#FVlb~WmRZRf@qVhlL1fZAzj)LTz1MTIR(m61x{+H#c!E17Ha9MiY6G6o@ z`n}CgY`@zCpSAz4zXWD7xctG!^2F@kw;Se|;FL;kRp!eE@Bmooa z=y@J|@WGhlzW4$hWLinjM@@Ivu3d`}0+uJh!U&PLDnZatLfv!C}DDu=(Psw+``(63o_r4dwM(@pAy?P0V7~s&s$_ry-ko3X` zy|6RRr|)^&dmzo<=brI21FKt)yi+P~@# zpnvC*YiVr(^&epE%bnY|TO;T3<3nYaA966L4B6{XGaY=%D{V!LW@?b}+f-N`iTJ0uUK|nN8 z;Qg+kZz~6#6f|~Q6XYmCP!oZXfwi@@g|XRUjQ+w5i4WOXd)4oX6e)6VL`{0?_^Jfpo8SCq{LbD)JGYt()PYdFj#b^R<^o+kU;&x?CF<0uDo!(v*u8pk7+DUd ztxYh^HIK4yK(4^kEc+=y>A1p*gLvGueLSh3yef}g21LHL_bl7mn0xkZbsuu~#(kG7 ziLLSf`Yt~E?6Yy@|Lt#oJ4RPv$f>@gSSz6Id0aSmR!*$mPFdypLCe?MPQ`=vloc-E zUkE^vdCsU4OajT~A75(C@9!jtL2vb3)jTE*T+PfT0{o5R=GE4ytA5L z4){7=J_66voF~BC#NM{Qk`o0LGiS6-s(c+UE1sA7*UQ_FleG02r{HCedM_TItM*MQ zrOcTMbM5w$_;`Tift3dsT%#ZF8;|v(O1RRbIi`6@iFj=Dv*3H@%8U%moRh&+U5Uj;hQ-b%IRX|b1fa-1Nr1GP1ma7bGI_@@I6RFf%^V3}0L!I;&4s*SJh*8G zRMbBJfy*mC!$8FoCGM9?gv0HchAiY#_i}r&Eg0+XWyte1C|6Dv2^fm z`m`?#@D~D5@G3H(tyBrz7Ng)ReTx!-UyUHtzTva*zos;O; zCpsnC{vN6ER!-i%U_UTvz||{*B-U%k^Yd|dj|`xk5D43cpoeLDZ696LA<$uedHv1z z&KdaHK;8bvzUTV(Tzb|k2xNVQ*X0#`oRFGIiCk)#Rnwm4C0FmCSMwYKo2z|*6&k>OqO^F9e{-JtqPgZ9tmvN1(|h0Ko_+bDRWn6D&{sxmCQk!sk`no?B{BZL@mX zQ>%O6g_9f?L-E&=XA$@=5)i{ z?+8E)L|(Q?BuZQ(q1*MnzbECNVBp~h6+DLu-!op9Gb^GXfnkl26&*ryf$d`wru*Bu z>^LMC_-vW_rN8h+04QHh$O+z>m_uW%mL~V0VqK} zg#Z+}$0R^TFJ64{Yt8=G*)s{^ufuK1Rh+}~F(C0um{qble*v#XKVFN? z4>=OyksMZ)+dfDl*sg4~lT>yb8v9^vDU5AOkc{CCr2ey|)?Ea+(gbo!iQc zo#B{h@iX!6i#^xz*|P=$NuWovSX09qBy0x*SzCob&*XyygsT)Xf#a3D=bVS<;%CV3 z20Gkv)Q5#6+P>(dry$EFF&qQvD2VoVTg{`>AXnTlt%55 z`9rYp2G?q!H@?iXg#Z*esxqjP6QI4PIPoyR^JLD>KRgNH_n!AX+N*PgZkT|eS~90K z$gSLQayMZWbKBo-HfjWBR&jfwQaFj)xovgL{ukW8o)eaR&))OgHjV&50^}X*h0S^P zcU~zo0b|mDW{2E;=Ex)4u9;YQ#Ai~7VlFbl3!%jRXFmgW*u;0iz#G;1NFK1i(3ub& z0ab->U~a1VI4L(IfgL)rugyn5&uwJSoF(ynWd9Q+%jj3)X>f`Z0#Iauq|*tLLmf8J zNzM1N_kh?FFW%krW}g&V$4Q4gz|Uy_5VUiXIv(R`0CFV2D`m?X0|W|o@M1u*$&+Kj zxxylw40uJ3;BWWT2Kq=sm{>58@yL}25DcbF*7#X^&XEWz9$CURGfBl&F_S%S{CFz# zoL>cx4KBCLZDNmlzF*9#&$e^}SUk5S-NCqjB?1cQb}j^JcGfeZV5@mf=j#y}9?Q0m zkpMI|&Ey1Fq!552M@M29U{$-|o>PCbE!&F+$H^m?EQEn|nyhEJggv=(vtH5@24Dn7 z^w9Qz$J26nE6m)AloKO)+6Yhm%D~L4e$VmJQ@ZKLAW{1B7`*vekNH+w&3tz;hv-Os)=Qv}-j(V3HpV_W!XkwO59ESl63qX6_j3j@q~ z?6a`?)bnol039d#HhXVQt>^(A69I4Kmm?dwOm8_5_ni3f{0OFP{bhgi@m?+l6%GO9 zFv6TKhDR2>Tml@i;5m3AkmZv6@H5O2I0iV+{~{M5f#ZiGBM`K5{w3HJc7|lqh%0`M zmG`s9a9lRrxsjz}jJE0vyNI*IxT_Q6nDVD>XX` z0VuM75rd=EFPoruOfH0!$pR;# zVQmtt?s=7(OJIe$4mh?S_eT{y5=1W{6^?lXb+orLF}7pS=??d?v54bK%kiRfpOS%- zCr=K23e2=%DUvyI0f`D`7tEQ1@I5J2I|~6QvVfBE03$ivYfxqkK3;GBb>K_3a9nFTOw zANC`g*6cZY<_z?!;rs?F<|L@e0$?a*pqDP|p>G@c@KZra8}jPxb4qmU8(3JjXpR-aNMw&4sRUo0))k zPLH|z1xyCGy=a?8LV$^AFl{ZHE^zga6Fr85DFh zz2Ox&*9Ne*d+L18l$P_mV2uve-M4F4f*yFyB-$m@SNiC z`>|6wb^j+h`r$qv*t6;rCwlMvIqii9OiV}+Bv^8*Is`e+oRY!}u5U{dB~NGx*9 zfM3(Y*G=`tVF7u$t0QL}0c6M!iY(CMO@!^e>PgwDSLKY{k<+pvOPx3)g_k=3L!20z ziMf+p1#oGHbuUKWv-5k`iY*fGSUDPSu`53R$UC+Bhsxm8(V)B0&tkd@fD{o3sD7#m3`g zo^z9y!6EE{DvTB4riFYm7fm-5rTj>>3ggGToEJB|6-EOIF}|mmyM6d3qMaU z+9T)i$)KJq5X8lv>^$Zhz$uJkh!2O4+Zg#xGJOQi*_v*M~eSNP)EZg#V#moK) zp7*{9C*8q5Y%2kcg>iCO>zLem8Wj%5WQ~nyB0}3Z=jg}SeI!(#2S00SJS`JvHblof z)->_G@iWEf10;l~MPMgDBaxW;m;2c6*^6)~avZ>+O4yzVfIZ;rI_lpTG6em8>t;ZS z$3|9yA`2rmlPoYXt;)6SZMn9olYCE3FZClCIDfK|Gl2}8T-J#oss!R= zADAy_OFe(DGF}@Yut^5@_cH$F06s?~cwf#w$JOrI$`NB5b5#&?6$`z4@cPS3<;&oi zGZ%Pf83TAej|Yw%=Ej5w0nqcGm{gd^Gn;U1dM-H=lLD`Z5nqqZBe{O%am1ApJzoP3 zh0JMsQ04E9qg=?HnKit;0PKT+&jrmP=-qGWh;1cr8(u4y>CbcCEpn`YLG8X_F?dtP zuwLZ#5dl#5as6&)s~BRORs1vEvVs^8S}c3v;# zFp~xRjf(*>3G;Fv6gfr=Krvmh9kE{IO?}f}4_nZ8Rm)Kcym7sZfW>D3Vb)qo4_%4C z(y3tnX*@uK3Mi6+@Tp{=7f8X)-j3Y76@IIGa%y=HwF4KTcA%0IK|7$%gvoaxeJ1|_ z-<#e8^jWhF;$+(9V26LR*&vqyh#lP+Ts&32cW+*lLe6J^+s$cunNacSpB=Pv84h{E z=gNTWM2F|)l|K>&FWs;Q9G=F-%f9F3NXThVm{{=rdzyq?E(0vklS?M#X^6aW=#{g! zLO)1OPy>RgguR45*mq1+H3<+C39FglMKR!a-s(Q*chi=cvv7k2myPSj2Gk)yZCpQB z0`L=wegO4jai_bNldYgCjvxyR|IHtrv?&>gF`%oBCul!wbYbXyicz1DsT? zt#Lfo=?wKq^Az{1(!WL%o$cO$5dqcMimo|d9VcM$epdh<1D$Hvb5+%8d?M#@m@#ILL)Hxa9@LzuVF0qJXLRu#hhwW=cj8}w1%MLnSz%Bh5@Nk z`c7rRK0`;(PCRBQp0h>(9y$_sQU%E-nN2)yVAbvViAQSNB%MoalWN#U+W&TM+OM&1 zn~ao$rj7Alkrc#z3~Veq#lW|U^(;pHRl^ud&qvH$)m$f@Gh^BrCu1YxS~cdb+U#9J zgsX=A9owz@#_P&(tW;Gq{`KCP(2$8lZt7v1Mm__h{hw4=*sqOky8&gAp?c>Et=GZ z!h58Xwx}Hl$leX8-qrnjjdlPu1VJ;<58GNG1Zy{UVhrhtZXg7!wLB2C1L{n8GU$xD zajF|MlVk#js%z@uh9q%#a5nmJ;a}`s>>DB2GRg# zqcw;-Bvw)zR!L__0um^s-#b+^ad)70LNjru<}|D0M&&V3z!=nHB`SBQD!K)JP3d_K-n%=d~qg&YT{SCT++0^XKG3*s9LuLIM^C4Z?U0&vzr( z|JSd?DJ?uyec*o*w%e8p`1@h|%{V*i#B}@J@bn)^fKc>4i$(Ur<9gtos-F{krfykD{Z_hh)Dt{RfGS3N%>6vN*-BXG6b9BM+k zG6LW3I4BQ^Kxgm7HPSFOCq+AaJ$gpoinS8dPK}S0q3T{Y1w$EW6UN&%8b669H?*(O znn*{6#4>7sng*d($=VlJ?UBTVy#|fuXXR8g-p9iLcl2|&XgdOh6pCD zOIn@xnvUz#-QgII&#W?1r|oFQTb0@q?@+rq{M|isQC@idbMo}l9~+v=i~v+8&dcrF zca?>g$#zjzgSz0m^-f9zR5gPjVg9ff(2LD$vlNfG_DUs>{;HJK|6)Gxx36vQWq~a+ zsF#}wc&X7LFE@J3FyW{cXwU;fkjw>x@OdYYgFAP2qVGV;G6i5-^$BuvaOC|?ZLWmI zV(sidyc;@AP3Nmy`lW_z0Vx=gjU~xD#~xrpw26i%B=lYPtk#O`)+$kYt{Zc@8^)-h!j0Dl~|pM}}}`MA^CTa|2H z4@TbyiWy)5r9Y_AFgS$Etp(R?*-3Z5U^5G99f_endn2@uHh20*Of_3i{<)gsn7TTo=G6N@?g_-DK4{~r z_J6yCpc;{dF)m&C4I4XkwfBL9cX$2n*53A|3S$8^R?;)+E+zGH!G|L%b$UkX{I~X2 z`a)Hi!S)}v?->C|1%X6{h!Av? z5S)mFU|c(}og4}WJITIHDW&T@6VhBD#F+>WfUgWR)!gv;-VuT!000R*%=XsawfAvb z^?oimk6r62j+yet>b7@rpB;Oj2pyZ)P?I+NQx^xzr_*O~8b5;gU#I!{`m1Sx25e1{ju>V2J%e*nV4mmg0Ape^|+5pBs6Q7gTx)lMD;FL zZGeUvmqp?cochD_*|{qL%hMyRYXkFd*;Cao`ptBtUV;BJeD}qu1=zgam8&m{eDv2! zSm0tl{RXV-{T(~gHFRt&N#oW}PI%&*{D;TWKCZ`_b6h=T)0sp}GQCz)^vN{l+nH9k z)&9Caw{Lw^QRF}fJiqhqSKBb_br%r$XKG*aqLk$SQV77&dSqb{wtPzDy&nhL;0;^- ztG(tsVf#Vz!20F`pifYV!0&|Zi^He+-uFcw`Q-xs3oX^Xy;fDVfN)Fms%pmlXSlaL zB;tUkf@#lD9pn*I``@)qV?F7#a|59{m>#CShkCa2R8#Ia)p2$Ht7=A2Ef`v4Zc}k5 zE!^MxzKu5H4Rh7_ekYm z&26XqIN?`QBIP|2bOxNsd;Z|N?QfM&JI-nrC>GTshx$J0>i?w3yWbPJ@)L1a_=zekja3%>tT?A83OaF z3@|SAghX92^+8h{Q19owlfRnk*aG}Tj@-LeC#TGfYa*}we)7#4y?y^EY_G@&>&FOy zWfJ{a*fa^i^MN_^WYFu#_8pOre5N^BApk}0q0H*xzh~Ej0(!O2_Rf9hxgS2?iRT`k zpq|5d?-l6JrEiK9nL(5Qy!zio)<2Ml;SyK>>iG9BC1Lz9M62seDLP!$N#O5?KUZSr zppC0lGzC2H@nQ-na{pvjt$@4xJXZMCKHGjz4mzSz-;+ZQw!(J~Sg`QDA|GNg$G>;~ zINAPF)<4Dgjj;WVu-z2Wmvx=dtB!#|f1nitBL*)F^BBvg1VhRfhC~}`< zKUx8I_jv*NQCZ2~%XhLq0;ic*GM;)4Z7M4MBKJ`g{Fj2=f9=hn!~Z>-4-$5Z{PVE= zp(Jd_6s>y*fDM10Ni;j)uZ8WC0qnIBM@MeH3H|`RLIR51f7ve?a1WXH%D$TOJucd$ zbPrBe&*6LrIY$BgBKQ408>CzeTVa9!lmC*EvMFY#F#m5$vi%Po|E8H*%ueu7*nSkY zCz2=Opev^z6?x$s>4LGMSs?*Mj)?5n_MbhZnp0cmc-}*4&pd(kKr`7PwrNhQ{QK57 zMT&SsvMKhXp#P))Xm>soJn{-=7y0V9LN&WzTHx_l(WCA;PD!Kc9 zate%9s7ho&ks~Vm@fm0Z&1z0tpMl}o%RFA`=2`F;Zv2M3g{O(suI=y%gGe~^6!e=d;@d+tNhKd{gI4n{kYPda2X>3 z|37S3B{B-l@YShh^LiC43_biysUSpg3@oxpG7mz~dU$mY+J4j~rTcJ!dQRspU|(cW zBs%<^5ZPHzHvhG^4g9T$%RdO)f07B{uhO03a)V~S{};BMuzhK$3D~|>$+e(iIQK+~ z4v3WlkMayvq{t*tJ#5Fl@@`Bq!_D;dzRzDkzsN$p7R`XwP`}&nCh$)-e_Q$MenS zp}N4{S`&Hg4@KU2F=+!L_71F|-)~7$`&*jdsosG7%phi0_$y)i&tZEkoTeAf)D4ZQ zqI%-#@Y7?TON>Rs6NW^fkbxq{NbVIWnCIJjXcN_azGwmbBF9E*19*uUc-6n|(w~aF z_1%EHn@xs4Rqw|*|4U)}+hP0PGKI~5UQ>u&=#jAf`>=gEoedbt`KLsl`1MptaA`I9 z2dGwHSOdP0fg;CH?l¬`nm3XOSYuYK+&-r-t^ahkq|Dp0B?q@{9kQZ2oad8C&&h zlApgPDRb}4;D68=3NQFi!uGGib|##15YB2jh{HEQLGaPfCnBJx0lh&D8&p4mdN686 znK+9acPaM&@d@t$KNl&o&||)af9p!W3UJx!rg>odmdK3&{O^TT|J}>YK2@;w>yNeC z_wR)5U&yGo|GvO~96}j+q3L8B8(UeYDa~Ern zff4~#c?=0b3Ck&R%;iIs5U8HZE=7tg_WRzv&k^ve^r;Z4YJCmqyYpUH%fFJs`gZQ5 zw?c7L53Fm8@BiJf{nN0$-JH-(@jKUPXbM3F@)b$N2mWHZLcBz;xq);O8pC+{k!HIn za^iussi`3D-x+n%u_=mPq{uuFuv&mT05jZ6ks`mbz8rhLizNw zw`B(z@GlKR|59z9e=Vt~4`c4WWu9-KF%)AXe=ThPIBZ``zf}p)>$(?12uJ&;HbhUy z)5-o}TbUq=6e&`q$U;k<{NL2{tqy&=>jJ=Dk8rb6;BP>`HZ1)gl2rYF)a=JNdmuRs zgzYwsvm1LsQZ3@Ih3(U$E1UKrdOY@JwA8N-v28_)6e&`q$i0>tJ`>heYWN>wAnyCq zuzfRZe;}zCpW&f`e}A5hI!usdBA|``%MvpQ%ICuNE0U@WuDZ=B@L!}zks?KogVfo7 z1bcv758IE!_QSA!M^eH)@Q|NB@C%&$u*GcuY_B*Mw&%k3OxQGq;L~AyG;A6waG}{& zq__taDN>|Jk;N3nSWTh7)@--J_P(Sdd+NydR@h#Z>; - -fn main() { - tauri::Builder::default() - .invoke_handler(tauri::generate_handler![ - close_splashscreen, - init, - connect, - update_mouse - ]) - .setup(|app| { - if let Some(splashscreen) = app.get_window("splashscreen") { - splashscreen.set_always_on_top(false).unwrap(); - } - app.manage(SessionManager::new()); - Ok(()) - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} - -#[derive(Clone, Serialize)] -struct DesktopSize { - width: u16, - height: u16, -} - -#[derive(Clone, Serialize)] -struct ResizeEvent { - session_id: usize, - desktop_size: DesktopSize, -} - -#[derive(Clone, Serialize)] -struct NewSessionInfo { - session_id: usize, - websocket_port: u16, - initial_desktop_size: DesktopSize, -} - -struct SessionManager { - next_session_id: AtomicUsize, - sessions: Mutex>, -} - -enum ButtonState { - Unchanged, - Pressed, - Released, -} - -impl SessionManager { - fn new() -> Self { - Self { - next_session_id: AtomicUsize::new(0), - sessions: Mutex::new(HashMap::new()), - } - } - - fn send_message(&self, session_id: usize, msg: SessionMessage) -> anyhow::Result<()> { - let sessions = self.sessions.lock().unwrap(); - let session = sessions.get(&session_id).context("session not found")?; - session.msg_tx.send(msg).ok().context("couldn’t send session message")?; - Ok(()) - } - - /// Returns previous state - fn toggle_down(&self, session_id: usize, currently_down: bool) -> anyhow::Result { - let mut sessions = self.sessions.lock().unwrap(); - let mut session = sessions.get_mut(&session_id).context("session not found")?; - - match (currently_down, session.was_down) { - (true, false) => { - session.was_down = true; - Ok(ButtonState::Pressed) - } - (false, true) => { - session.was_down = false; - Ok(ButtonState::Released) - } - _ => Ok(ButtonState::Unchanged), - } - } - - fn register_session(&self, session: Session) -> usize { - let session_id = self.next_session_id.fetch_add(1, Ordering::SeqCst); - self.sessions.lock().unwrap().insert(session_id, session); - session_id - } -} - -type MessageSender = mpsc::UnboundedSender; - -type MessageReceiver = mpsc::UnboundedReceiver; - -struct Session { - msg_tx: MessageSender, - was_down: bool, -} - -impl Session { - fn new() -> (Self, MessageReceiver) { - let (tx, rx) = mpsc::unbounded_channel(); - let session = Self { - msg_tx: tx, - was_down: false, - }; - (session, rx) - } -} - -enum SessionMessage { - Inputs(FastPathInput), - ResponseFrame(BytesMut), -} - -#[tauri::command] -fn init() { - // do nothing for now -} - -#[tauri::command] -async fn close_splashscreen(window: tauri::Window) { - if let Some(splashscreen) = window.get_window("splashscreen") { - splashscreen.close().unwrap(); - window.get_window("main").unwrap().show().unwrap(); - } -} - -#[tauri::command] -#[allow(non_snake_case)] -async fn update_mouse( - sessionId: usize, - mouseX: u16, - mouseY: u16, - leftClick: bool, - session_manager: State<'_, SessionManager>, -) -> Result<(), String> { - use ironrdp::core::input::fast_path::FastPathInputEvent; - use ironrdp::core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; - use ironrdp::core::input::MousePdu; - - let session_id = sessionId; - let mouse_x = mouseX; - let mouse_y = mouseY; - let left_click = leftClick; - - let mut inputs = vec![]; - - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::MOVE, - button_events: ButtonEvents::empty(), - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - - let button_state = session_manager - .toggle_down(session_id, left_click) - .map_err(|e| e.to_string())?; - - match button_state { - ButtonState::Pressed => { - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::DOWN | ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - } - ButtonState::Released => { - inputs.push(FastPathInputEvent::MouseEvent(MousePdu { - wheel_events: WheelEvents::empty(), - movement_events: MovementEvents::empty(), - button_events: ButtonEvents::LEFT_BUTTON, - number_of_wheel_rotations: 0, - x_position: mouse_x, - y_position: mouse_y, - })); - } - ButtonState::Unchanged => {} - } - - let fastpath_input = FastPathInput(inputs); - - session_manager - .send_message(session_id, SessionMessage::Inputs(fastpath_input)) - .unwrap(); - - Ok(()) -} - -#[tauri::command] -async fn connect( - username: String, - password: String, - address: String, - session_manager: State<'_, SessionManager>, -) -> Result { - let input_config = build_input_config(username, password, None); - - let addr = ironrdp::session::connection_sequence::Address::lookup_addr(address).map_err(|e| e.to_string())?; - - println!("Connect to RDP host"); - - let tcp_stream = TcpStream::connect(addr.sock) - .await - .map_err(RdpError::Connection) - .map_err(|e| e.to_string())?; - - let (connection_sequence_result, rdp_reader, rdp_writer) = process_connection_sequence( - tcp_stream.compat(), - &addr, - &input_config, - establish_tls, - Box::new(RequestClientFactory), - ) - .await - .map_err(|e| e.to_string())?; - - let desktop_width = connection_sequence_result.desktop_size.width; - let desktop_height = connection_sequence_result.desktop_size.height; - - let listener = TcpListener::bind("127.0.0.1:0").await.map_err(|e| e.to_string())?; - let websocket_port = listener.local_addr().unwrap().port(); - - let initial_desktop_size = DesktopSize { - width: desktop_width, - height: desktop_height, - }; - - let (session, msg_rx) = Session::new(); - let msg_tx = session.msg_tx.clone(); - let session_id = session_manager.register_session(session); - let new_session_info = NewSessionInfo { - session_id, - websocket_port, - initial_desktop_size, - }; - - start_rdp_session( - msg_tx, - msg_rx, - listener, - rdp_reader, - rdp_writer, - input_config, - connection_sequence_result, - ); - - Ok(new_session_info) -} - -fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { - InputConfig { - credentials: AuthIdentity { - username, - password: password.into(), - domain, - }, - security_protocol: ironrdp::SecurityProtocol::HYBRID_EX, - keyboard_type: ironrdp::gcc::KeyboardType::IbmEnhanced, - keyboard_subtype: 0, - keyboard_functional_keys_count: 12, - ime_file_name: String::new(), - dig_product_id: String::new(), - width: DEFAULT_WIDTH, - height: DEFAULT_HEIGHT, - global_channel_name: GLOBAL_CHANNEL_NAME.to_owned(), - user_channel_name: USER_CHANNEL_NAME.to_owned(), - graphics_config: None, - } -} - -fn start_rdp_session( - msg_tx: MessageSender, - msg_rx: MessageReceiver, - listener: TcpListener, - rdp_reader: FramedReader, - rdp_writer: ErasedWriter, - input_config: InputConfig, - connection_sequence_result: ConnectionSequenceResult, -) { - spawn_task(rdp_session_task( - msg_tx, - listener, - rdp_reader, - input_config, - connection_sequence_result, - )); - spawn_task(message_writer_task(msg_rx, rdp_writer)); -} - -async fn message_writer_task(mut msg_rx: MessageReceiver, mut rdp_writer: ErasedWriter) -> anyhow::Result<()> { - use futures_util::AsyncWriteExt as _; - use ironrdp::PduParsing; - - while let Some(message) = msg_rx.recv().await { - match message { - SessionMessage::ResponseFrame(frame) => { - rdp_writer.write_all(&frame).await?; - rdp_writer.flush().await?; - } - SessionMessage::Inputs(inputs) => { - let mut frame = Vec::new(); - inputs.to_buffer(&mut frame).unwrap(); - rdp_writer.write_all(&frame).await?; - rdp_writer.flush().await?; - } - } - } - - Ok(()) -} - -async fn rdp_session_task( - msg_tx: MessageSender, - listener: TcpListener, - mut rdp_reader: FramedReader, - input_config: InputConfig, - connection_sequence_result: ConnectionSequenceResult, -) -> anyhow::Result<()> { - println!("RDP session task started"); - - // Waiting for frontend to connect via WebSocket - let (tcp_stream, _) = listener.accept().await?; - let mut ws_stream = tokio_tungstenite::accept_async(tcp_stream).await?; - - let mut image = DecodedImage::new( - PixelFormat::RgbA32, - u32::from(connection_sequence_result.desktop_size.width), - u32::from(connection_sequence_result.desktop_size.height), - ); - - let mut active_stage = ActiveStageProcessor::new(input_config, None, connection_sequence_result); - let mut frame_id = 0; - - 'outer: loop { - // FIXME: remove unwraps - let frame = rdp_reader - .read_frame() - .await - .unwrap() - .ok_or(RdpError::AccessDenied) - .unwrap() - .freeze(); - let outputs = active_stage.process(&mut image, frame).unwrap(); - - for out in outputs { - match out { - ActiveStageOutput::ResponseFrame(frame) => { - if msg_tx.send(SessionMessage::ResponseFrame(frame)).is_err() { - println!("writer task is terminated"); - break 'outer; - }; - } - ActiveStageOutput::GraphicsUpdate(updated_region) => { - let partial_image = extract_partial_image(&image, &updated_region); - - send_update_rectangle(&mut ws_stream, frame_id, updated_region, partial_image) - .await - .context("Failed to send update rectangle")?; - - frame_id += 1; - } - ActiveStageOutput::Terminate => break 'outer, - } - } - } - - println!("RPD session terminated"); - - Ok(()) -} - -fn extract_partial_image(image: &DecodedImage, region: &Rectangle) -> Vec { - let pixel_size = usize::from(image.pixel_format().bytes_per_pixel()); - - let image_width = usize::try_from(image.width()).unwrap(); - - let region_top = usize::from(region.top); - let region_left = usize::from(region.left); - let region_width = usize::from(region.width()); - let region_height = usize::from(region.height()); - - let dst_buf_size = region_width * region_height * pixel_size; - let mut dst = vec![0; dst_buf_size]; - - let src = image.data(); - - let image_stride = image_width * pixel_size; - let region_stride = region_width * pixel_size; - - for row in 0..region_height { - let src_begin = image_stride * (region_top + row) + region_left * pixel_size; - let src_end = src_begin + region_stride; - let src_slice = &src[src_begin..src_end]; - - let target_begin = region_stride * row; - let target_end = target_begin + region_stride; - let target_slice = &mut dst[target_begin..target_end]; - - target_slice.copy_from_slice(src_slice); - } - - dst -} - -async fn send_update_rectangle( - stream: &mut tokio_tungstenite::WebSocketStream, - frame_id: usize, - region: Rectangle, - buffer: Vec, -) -> anyhow::Result<()> { - use futures_util::SinkExt as _; - use tokio_tungstenite::tungstenite::Message; - - let top = region.top; - let left = region.left; - let right = region.right; - let bottom = region.bottom; - let width = region.width(); - let height = region.height(); - let msg_len = buffer.len(); - - stream.feed(Message::Text(format!( - r#"{{"top": {top}, "left": {left}, "right": {right}, "bottom": {bottom}, "width": {width}, "height": {height}, "frame_id": {frame_id}, "msg_len": {msg_len}}}"# - ))).await.unwrap(); - - stream.feed(Message::Binary(buffer)).await?; - - Ok(()) -} - -// TODO: this can be refactored in a separate `ironrdp-tls` crate (all native clients will do the same TLS dance) -async fn establish_tls(stream: tokio_util::compat::Compat) -> Result, RdpError> { - let stream = stream.into_inner(); - - let mut tls_stream = { - let mut client_config = rustls::client::ClientConfig::builder() - .with_safe_defaults() - .with_custom_certificate_verifier(std::sync::Arc::new(danger::NoCertificateVerification)) - .with_no_client_auth(); - // This adds support for the SSLKEYLOGFILE env variable (https://wiki.wireshark.org/TLS#using-the-pre-master-secret) - client_config.key_log = std::sync::Arc::new(rustls::KeyLogFile::new()); - let rc_config = std::sync::Arc::new(client_config); - let example_com = "stub_string".try_into().unwrap(); - let connector = tokio_rustls::TlsConnector::from(rc_config); - connector.connect(example_com, stream).await? - }; - - tls_stream.flush().await?; - - let server_public_key = { - let cert = tls_stream - .get_ref() - .1 - .peer_certificates() - .ok_or(RdpError::MissingPeerCertificate)?[0] - .as_ref(); - get_tls_peer_pubkey(cert.to_vec())? - }; - - Ok(UpgradedStream { - stream: tls_stream.compat(), - server_public_key, - }) -} - -pub fn get_tls_peer_pubkey(cert: Vec) -> io::Result> { - let res = X509Certificate::from_der(&cert[..]) - .map_err(|_| io::Error::new(io::ErrorKind::InvalidData, "Invalid der certificate."))?; - let public_key = res.1.tbs_certificate.subject_pki.subject_public_key; - - Ok(public_key.data.to_vec()) -} - -mod danger { - use std::time::SystemTime; - - use rustls::client::ServerCertVerified; - use rustls::{Certificate, Error, ServerName}; - - pub struct NoCertificateVerification; - - impl rustls::client::ServerCertVerifier for NoCertificateVerification { - fn verify_server_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _server_name: &ServerName, - _scts: &mut dyn Iterator, - _ocsp_response: &[u8], - _now: SystemTime, - ) -> Result { - Ok(rustls::client::ServerCertVerified::assertion()) - } - } -} - -fn spawn_task(task: F) -where - F: Future> + Send + 'static, - F::Output: Send + 'static, - T: 'static, -{ - tauri::async_runtime::spawn(async move { - match task.await { - Ok(_) => {} - Err(e) => println!("Task failed: {e:?}"), - } - }); -} - -// TODO: resize event -#[allow(dead_code)] -fn send_resize_event(app: &tauri::AppHandle, session_id: usize, desktop_size: DesktopSize) -> anyhow::Result<()> { - app.emit_all( - "resize", - ResizeEvent { - session_id, - desktop_size, - }, - )?; - Ok(()) -} diff --git a/iron-tauri-client/src-tauri/tauri.conf.json b/iron-tauri-client/src-tauri/tauri.conf.json deleted file mode 100644 index 973af2e4..00000000 --- a/iron-tauri-client/src-tauri/tauri.conf.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "build": { - "beforeBuildCommand": "npm --prefix ../iron-svelte-client run build-tauri", - "beforeDevCommand": "npm --prefix ../iron-svelte-client run dev-tauri", - "devPath": "http://localhost:5173", - "distDir": "../../iron-svelte-client/build/tauri" - }, - "package": { - "productName": "iron-gui", - "version": "0.1.0" - }, - "tauri": { - "allowlist": { - "all": false - }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "deb": { - "depends": [] - }, - "externalBin": [], - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "identifier": "com.devolutions.dev", - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "targets": "all", - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" - } - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, - "windows": [ - { - "fullscreen": false, - "height": 800, - "resizable": true, - "title": "IronRDP GUI", - "url": "/session", - "label": "main", - "width": 1400 - } - ] - } -} diff --git a/ironrdp-session-async/Cargo.toml b/ironrdp-session-async/Cargo.toml deleted file mode 100644 index a48c0447..00000000 --- a/ironrdp-session-async/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "ironrdp-session-async" -version = "0.1.0" -edition = "2021" -readme = "README.md" -license = "MIT/Apache-2.0" -homepage = "https://github.com/Devolutions/IronRDP" -repository = "https://github.com/Devolutions/IronRDP" -authors = ["Devolutions Inc. "] - -[dependencies] -ironrdp-core = { path = "../ironrdp-core" } -ironrdp-graphics = { path = "../ironrdp-graphics" } -bytes = "1" -num-traits = "0.2.15" -bit_field = "0.10.1" -byteorder = "1.4.3" -futures-util = "0.3" diff --git a/ironrdp-session-async/src/lib.rs b/ironrdp-session-async/src/lib.rs deleted file mode 100644 index c68850e5..00000000 --- a/ironrdp-session-async/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -// pub mod framed; diff --git a/ironrdp/Cargo.toml b/ironrdp/Cargo.toml deleted file mode 100644 index 206575d5..00000000 --- a/ironrdp/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "ironrdp" -version = "0.4.2" -edition = "2021" -readme = "../README.md" -license = "MIT/Apache-2.0" -homepage = "https://github.com/Devolutions/IronRDP" -repository = "https://github.com/Devolutions/IronRDP" -authors = ["Devolutions Inc. "] -description = "A Rust implementation of the Microsoft Remote Desktop Protocol" -keywords = ["rdp", "remote", "desktop", "protocol"] - -[features] -default = [] -rustls = ["ironrdp-session/rustls"] -native-tls = ["ironrdp-session/native-tls"] - -[dependencies] -ironrdp-core = { path = "../ironrdp-core" } -ironrdp-session = { path = "../ironrdp-session" } -ironrdp-graphics = { path = "../ironrdp-graphics" } -ironrdp-input = { path = "../ironrdp-input" } diff --git a/ironrdp/README.md b/ironrdp/README.md deleted file mode 100644 index 57a29cb6..00000000 --- a/ironrdp/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# IronRDP - -Meta crate re-exporting other important crates for convenience. diff --git a/ironrdp/src/lib.rs b/ironrdp/src/lib.rs deleted file mode 100644 index 75deb26c..00000000 --- a/ironrdp/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -// TODO: remove glob reexport at some point -pub use ironrdp_core::*; -pub use {ironrdp_core as core, ironrdp_graphics as graphics, ironrdp_input as input, ironrdp_session as session}; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b2cf8c5f..434cca45 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.68.0" +channel = "1.68.2" components = ["rustfmt", "clippy"] diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 00000000..ab0345c6 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +//! Rust implementation of the Remote Desktop Protocol (RDP). +//! +//! This is a meta crate re-exporting ironrdp-pdu, ironrdp-session, ironrdp-graphics +//! and ironrdp-input crates for convenience. + +pub use {ironrdp_graphics as graphics, ironrdp_input as input, ironrdp_pdu as pdu, ironrdp_session as session}; diff --git a/iron-remote-gui/.gitignore b/web-client/iron-remote-gui/.gitignore similarity index 100% rename from iron-remote-gui/.gitignore rename to web-client/iron-remote-gui/.gitignore diff --git a/iron-remote-gui/.vscode/extensions.json b/web-client/iron-remote-gui/.vscode/extensions.json similarity index 100% rename from iron-remote-gui/.vscode/extensions.json rename to web-client/iron-remote-gui/.vscode/extensions.json diff --git a/iron-remote-gui/README.md b/web-client/iron-remote-gui/README.md similarity index 96% rename from iron-remote-gui/README.md rename to web-client/iron-remote-gui/README.md index 14e61b31..92594bc5 100644 --- a/iron-remote-gui/README.md +++ b/web-client/iron-remote-gui/README.md @@ -74,5 +74,5 @@ You can add some parameters for default initialization on the component ` `setScale(scale: ScreenScale)` > > Sets the scale behavior of the canvas. -> See the [ScreenScale](src/services/user-interaction-service.ts) enum for possible values. +> See the [ScreenScale](./src/services/user-interaction-service.ts) enum for possible values. diff --git a/iron-remote-gui/index.html b/web-client/iron-remote-gui/index.html similarity index 100% rename from iron-remote-gui/index.html rename to web-client/iron-remote-gui/index.html diff --git a/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json similarity index 99% rename from iron-remote-gui/package-lock.json rename to web-client/iron-remote-gui/package-lock.json index 90f49582..3aed4206 100644 --- a/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devolutions/iron-remote-gui", - "version": "0.1.0", + "version": "0.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@devolutions/iron-remote-gui", - "version": "0.1.0", + "version": "0.5.0", "dependencies": { "@types/ua-parser-js": "^0.7.36", "ua-parser-js": "^1.0.33" diff --git a/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json similarity index 100% rename from iron-remote-gui/package.json rename to web-client/iron-remote-gui/package.json diff --git a/iron-remote-gui/pre-build.js b/web-client/iron-remote-gui/pre-build.js similarity index 83% rename from iron-remote-gui/pre-build.js rename to web-client/iron-remote-gui/pre-build.js index 46bd2b66..65f0eba6 100644 --- a/iron-remote-gui/pre-build.js +++ b/web-client/iron-remote-gui/pre-build.js @@ -1,4 +1,4 @@ -import {spawn} from "child_process"; +import {spawn} from "child_process"; let run = async function (command, cwd) { return new Promise(resolve => { @@ -19,4 +19,4 @@ let run = async function (command, cwd) { }) } -await run('wasm-pack build --target web', '../ffi/wasm'); +await run('wasm-pack build --target web', '../../crates/web'); diff --git a/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json similarity index 100% rename from iron-remote-gui/public/package.json rename to web-client/iron-remote-gui/public/package.json diff --git a/iron-remote-gui/public/test.html b/web-client/iron-remote-gui/public/test.html similarity index 100% rename from iron-remote-gui/public/test.html rename to web-client/iron-remote-gui/public/test.html diff --git a/iron-remote-gui/src/enums/LockKey.ts b/web-client/iron-remote-gui/src/enums/LockKey.ts similarity index 100% rename from iron-remote-gui/src/enums/LockKey.ts rename to web-client/iron-remote-gui/src/enums/LockKey.ts diff --git a/iron-remote-gui/src/enums/LogType.ts b/web-client/iron-remote-gui/src/enums/LogType.ts similarity index 100% rename from iron-remote-gui/src/enums/LogType.ts rename to web-client/iron-remote-gui/src/enums/LogType.ts diff --git a/iron-remote-gui/src/enums/ModifierKey.ts b/web-client/iron-remote-gui/src/enums/ModifierKey.ts similarity index 100% rename from iron-remote-gui/src/enums/ModifierKey.ts rename to web-client/iron-remote-gui/src/enums/ModifierKey.ts diff --git a/iron-remote-gui/src/enums/OS.ts b/web-client/iron-remote-gui/src/enums/OS.ts similarity index 100% rename from iron-remote-gui/src/enums/OS.ts rename to web-client/iron-remote-gui/src/enums/OS.ts diff --git a/iron-remote-gui/src/enums/SessionEventType.ts b/web-client/iron-remote-gui/src/enums/SessionEventType.ts similarity index 100% rename from iron-remote-gui/src/enums/SessionEventType.ts rename to web-client/iron-remote-gui/src/enums/SessionEventType.ts diff --git a/iron-remote-gui/src/interfaces/session-event.model.ts b/web-client/iron-remote-gui/src/interfaces/session-event.model.ts similarity index 100% rename from iron-remote-gui/src/interfaces/session-event.model.ts rename to web-client/iron-remote-gui/src/interfaces/session-event.model.ts diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/web-client/iron-remote-gui/src/iron-remote-gui.svelte similarity index 100% rename from iron-remote-gui/src/iron-remote-gui.svelte rename to web-client/iron-remote-gui/src/iron-remote-gui.svelte diff --git a/iron-remote-gui/src/lib/scancodes.ts b/web-client/iron-remote-gui/src/lib/scancodes.ts similarity index 100% rename from iron-remote-gui/src/lib/scancodes.ts rename to web-client/iron-remote-gui/src/lib/scancodes.ts diff --git a/iron-remote-gui/src/main.ts b/web-client/iron-remote-gui/src/main.ts similarity index 100% rename from iron-remote-gui/src/main.ts rename to web-client/iron-remote-gui/src/main.ts diff --git a/iron-remote-gui/src/services/logging.service.ts b/web-client/iron-remote-gui/src/services/logging.service.ts similarity index 100% rename from iron-remote-gui/src/services/logging.service.ts rename to web-client/iron-remote-gui/src/services/logging.service.ts diff --git a/iron-remote-gui/src/services/server-bridge.service.ts b/web-client/iron-remote-gui/src/services/server-bridge.service.ts similarity index 100% rename from iron-remote-gui/src/services/server-bridge.service.ts rename to web-client/iron-remote-gui/src/services/server-bridge.service.ts diff --git a/iron-remote-gui/src/services/services-injector.ts b/web-client/iron-remote-gui/src/services/services-injector.ts similarity index 100% rename from iron-remote-gui/src/services/services-injector.ts rename to web-client/iron-remote-gui/src/services/services-injector.ts diff --git a/iron-remote-gui/src/services/tauri-bridge.service.ts b/web-client/iron-remote-gui/src/services/tauri-bridge.service.ts similarity index 100% rename from iron-remote-gui/src/services/tauri-bridge.service.ts rename to web-client/iron-remote-gui/src/services/tauri-bridge.service.ts diff --git a/iron-remote-gui/src/services/user-interaction-service.ts b/web-client/iron-remote-gui/src/services/user-interaction-service.ts similarity index 100% rename from iron-remote-gui/src/services/user-interaction-service.ts rename to web-client/iron-remote-gui/src/services/user-interaction-service.ts diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts similarity index 99% rename from iron-remote-gui/src/services/wasm-bridge.service.ts rename to web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 4a64fe09..b1f41042 100644 --- a/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -1,7 +1,7 @@ import type {NewSessionInfo, ResizeEvent, ServerBridgeService} from './server-bridge.service'; import {MouseButton, MouseButtonState, SpecialCombination} from './server-bridge.service'; import {from, Observable, of, Subject} from 'rxjs'; -import init, {DeviceEvent, InputTransaction, ironrdp_init, IronRdpError, IronRdpErrorKind, Session, SessionBuilder} from "../../../ffi/wasm/pkg/ironrdp"; +import init, {DeviceEvent, InputTransaction, ironrdp_init, IronRdpError, IronRdpErrorKind, Session, SessionBuilder} from "../../../../crates/web/pkg/ironrdp_web"; import {loggingService} from "./logging.service"; import {catchError, filter, finalize, map} from "rxjs/operators"; import {userInteractionService} from "./user-interaction-service"; diff --git a/iron-remote-gui/src/vite-env.d.ts b/web-client/iron-remote-gui/src/vite-env.d.ts similarity index 100% rename from iron-remote-gui/src/vite-env.d.ts rename to web-client/iron-remote-gui/src/vite-env.d.ts diff --git a/iron-remote-gui/svelte.config.js b/web-client/iron-remote-gui/svelte.config.js similarity index 100% rename from iron-remote-gui/svelte.config.js rename to web-client/iron-remote-gui/svelte.config.js diff --git a/iron-remote-gui/tsconfig.json b/web-client/iron-remote-gui/tsconfig.json similarity index 100% rename from iron-remote-gui/tsconfig.json rename to web-client/iron-remote-gui/tsconfig.json diff --git a/iron-remote-gui/tsconfig.node.json b/web-client/iron-remote-gui/tsconfig.node.json similarity index 100% rename from iron-remote-gui/tsconfig.node.json rename to web-client/iron-remote-gui/tsconfig.node.json diff --git a/iron-remote-gui/vite.config.ts b/web-client/iron-remote-gui/vite.config.ts similarity index 100% rename from iron-remote-gui/vite.config.ts rename to web-client/iron-remote-gui/vite.config.ts diff --git a/iron-svelte-client/.eslintignore b/web-client/iron-svelte-client/.eslintignore similarity index 100% rename from iron-svelte-client/.eslintignore rename to web-client/iron-svelte-client/.eslintignore diff --git a/iron-svelte-client/.eslintrc.cjs b/web-client/iron-svelte-client/.eslintrc.cjs similarity index 100% rename from iron-svelte-client/.eslintrc.cjs rename to web-client/iron-svelte-client/.eslintrc.cjs diff --git a/iron-svelte-client/.gitignore b/web-client/iron-svelte-client/.gitignore similarity index 100% rename from iron-svelte-client/.gitignore rename to web-client/iron-svelte-client/.gitignore diff --git a/iron-svelte-client/.npmrc b/web-client/iron-svelte-client/.npmrc similarity index 100% rename from iron-svelte-client/.npmrc rename to web-client/iron-svelte-client/.npmrc diff --git a/iron-svelte-client/.prettierignore b/web-client/iron-svelte-client/.prettierignore similarity index 100% rename from iron-svelte-client/.prettierignore rename to web-client/iron-svelte-client/.prettierignore diff --git a/iron-svelte-client/.prettierrc b/web-client/iron-svelte-client/.prettierrc similarity index 100% rename from iron-svelte-client/.prettierrc rename to web-client/iron-svelte-client/.prettierrc diff --git a/iron-svelte-client/README.md b/web-client/iron-svelte-client/README.md similarity index 85% rename from iron-svelte-client/README.md rename to web-client/iron-svelte-client/README.md index cdb343e4..996fe503 100644 --- a/iron-svelte-client/README.md +++ b/web-client/iron-svelte-client/README.md @@ -1,24 +1,15 @@ # SvelteKit UI for IronRDP -The UI is used both for Tauri Desktop App and Browser App. +Web-based frontend using [`SvelteKit`](https://kit.svelte.dev/) and [`Material`](https://material.io) frameworks. +This is a simple wrapper around the `iron-remote-gui` Web Component demonstrating how to use the API. -## Tauri +## Requirements -Please read the [README](../iron-tauri-client/) from `iron-tauri-client` - -## Web client - -Web client is built on top of [SvelteKit](https://kit.svelte.dev/). -It's a simple wrapper around `iron-remote-gui` demonstrating how to use the API. -The core of the web client is to be found in `iron-remote-gui` folder provided as a Web Component. - -### Requirements - -- A remote machine ready to receive RDP connections using RemoteFX (see top-level [README](../README.md) on that matter). +- A remote machine ready to receive RDP connections using RemoteFX (see top-level [README](../../README.md) on that matter). - A Devolutions Gateway with network access to this machine up and running - A token signed using the provisioner key the Devolutions Gateway is expecting -#### Devolutions Gateway setup +### Devolutions Gateway setup Web client is using a special extension to RDP protocol. This extension is available starting Devolutions Gateway v2023.1.1. @@ -87,7 +78,7 @@ $ ./DevolutionsGateway # Linux / macOS $ ./DevolutionsGateway.exe # Windows ``` -#### Token generation +### Token generation The most straightforward way of generating a token if you don’t have a Rust toolchain installed is the PowerShell package. @@ -102,7 +93,7 @@ You can then run the following: $ New-DGatewayToken -Type ASSOCIATION -PrivateKeyFile -DestinationHost -ApplicationProtocol rdp ``` -### Run in dev mode +## Run in dev mode First, run `npm install` in the [iron-remote-gui](../iron-remote-gui/) folder, and then `npm install` in [iron-svelte-client](./) folder. diff --git a/iron-svelte-client/env.development b/web-client/iron-svelte-client/env.development similarity index 100% rename from iron-svelte-client/env.development rename to web-client/iron-svelte-client/env.development diff --git a/iron-svelte-client/env.tauri b/web-client/iron-svelte-client/env.tauri similarity index 100% rename from iron-svelte-client/env.tauri rename to web-client/iron-svelte-client/env.tauri diff --git a/iron-svelte-client/package-lock.json b/web-client/iron-svelte-client/package-lock.json similarity index 100% rename from iron-svelte-client/package-lock.json rename to web-client/iron-svelte-client/package-lock.json diff --git a/iron-svelte-client/package.json b/web-client/iron-svelte-client/package.json similarity index 100% rename from iron-svelte-client/package.json rename to web-client/iron-svelte-client/package.json diff --git a/iron-svelte-client/pre-build.js b/web-client/iron-svelte-client/pre-build.js similarity index 100% rename from iron-svelte-client/pre-build.js rename to web-client/iron-svelte-client/pre-build.js diff --git a/iron-svelte-client/src/app.d.ts b/web-client/iron-svelte-client/src/app.d.ts similarity index 100% rename from iron-svelte-client/src/app.d.ts rename to web-client/iron-svelte-client/src/app.d.ts diff --git a/iron-svelte-client/src/app.html b/web-client/iron-svelte-client/src/app.html similarity index 100% rename from iron-svelte-client/src/app.html rename to web-client/iron-svelte-client/src/app.html diff --git a/iron-svelte-client/src/lib/login/login-store.ts b/web-client/iron-svelte-client/src/lib/login/login-store.ts similarity index 100% rename from iron-svelte-client/src/lib/login/login-store.ts rename to web-client/iron-svelte-client/src/lib/login/login-store.ts diff --git a/iron-svelte-client/src/lib/login/login.css b/web-client/iron-svelte-client/src/lib/login/login.css similarity index 100% rename from iron-svelte-client/src/lib/login/login.css rename to web-client/iron-svelte-client/src/lib/login/login.css diff --git a/iron-svelte-client/src/lib/login/login.svelte b/web-client/iron-svelte-client/src/lib/login/login.svelte similarity index 100% rename from iron-svelte-client/src/lib/login/login.svelte rename to web-client/iron-svelte-client/src/lib/login/login.svelte diff --git a/iron-svelte-client/src/lib/messages/message-store.ts b/web-client/iron-svelte-client/src/lib/messages/message-store.ts similarity index 100% rename from iron-svelte-client/src/lib/messages/message-store.ts rename to web-client/iron-svelte-client/src/lib/messages/message-store.ts diff --git a/iron-svelte-client/src/lib/messages/message.svelte b/web-client/iron-svelte-client/src/lib/messages/message.svelte similarity index 100% rename from iron-svelte-client/src/lib/messages/message.svelte rename to web-client/iron-svelte-client/src/lib/messages/message.svelte diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte similarity index 100% rename from iron-svelte-client/src/lib/remote-screen/remote-screen.svelte rename to web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte diff --git a/iron-svelte-client/src/models/desktop-size.ts b/web-client/iron-svelte-client/src/models/desktop-size.ts similarity index 100% rename from iron-svelte-client/src/models/desktop-size.ts rename to web-client/iron-svelte-client/src/models/desktop-size.ts diff --git a/iron-svelte-client/src/models/rect.ts b/web-client/iron-svelte-client/src/models/rect.ts similarity index 100% rename from iron-svelte-client/src/models/rect.ts rename to web-client/iron-svelte-client/src/models/rect.ts diff --git a/iron-svelte-client/src/models/session.ts b/web-client/iron-svelte-client/src/models/session.ts similarity index 100% rename from iron-svelte-client/src/models/session.ts rename to web-client/iron-svelte-client/src/models/session.ts diff --git a/iron-svelte-client/src/routes/+layout.ts b/web-client/iron-svelte-client/src/routes/+layout.ts similarity index 100% rename from iron-svelte-client/src/routes/+layout.ts rename to web-client/iron-svelte-client/src/routes/+layout.ts diff --git a/iron-svelte-client/src/routes/+page.svelte b/web-client/iron-svelte-client/src/routes/+page.svelte similarity index 100% rename from iron-svelte-client/src/routes/+page.svelte rename to web-client/iron-svelte-client/src/routes/+page.svelte diff --git a/iron-svelte-client/src/routes/session/+page.svelte b/web-client/iron-svelte-client/src/routes/session/+page.svelte similarity index 100% rename from iron-svelte-client/src/routes/session/+page.svelte rename to web-client/iron-svelte-client/src/routes/session/+page.svelte diff --git a/iron-svelte-client/src/services/server-bridge.service.ts b/web-client/iron-svelte-client/src/services/server-bridge.service.ts similarity index 100% rename from iron-svelte-client/src/services/server-bridge.service.ts rename to web-client/iron-svelte-client/src/services/server-bridge.service.ts diff --git a/iron-svelte-client/src/services/services-injector.ts b/web-client/iron-svelte-client/src/services/services-injector.ts similarity index 100% rename from iron-svelte-client/src/services/services-injector.ts rename to web-client/iron-svelte-client/src/services/services-injector.ts diff --git a/iron-svelte-client/src/services/session.service.ts b/web-client/iron-svelte-client/src/services/session.service.ts similarity index 100% rename from iron-svelte-client/src/services/session.service.ts rename to web-client/iron-svelte-client/src/services/session.service.ts diff --git a/iron-svelte-client/src/services/tauri-bridge.service.ts b/web-client/iron-svelte-client/src/services/tauri-bridge.service.ts similarity index 100% rename from iron-svelte-client/src/services/tauri-bridge.service.ts rename to web-client/iron-svelte-client/src/services/tauri-bridge.service.ts diff --git a/iron-svelte-client/src/services/user-interaction-service.ts b/web-client/iron-svelte-client/src/services/user-interaction-service.ts similarity index 100% rename from iron-svelte-client/src/services/user-interaction-service.ts rename to web-client/iron-svelte-client/src/services/user-interaction-service.ts diff --git a/iron-svelte-client/src/services/wasm-bridge.service.ts b/web-client/iron-svelte-client/src/services/wasm-bridge.service.ts similarity index 93% rename from iron-svelte-client/src/services/wasm-bridge.service.ts rename to web-client/iron-svelte-client/src/services/wasm-bridge.service.ts index 3a2deec0..9e262433 100644 --- a/iron-svelte-client/src/services/wasm-bridge.service.ts +++ b/web-client/iron-svelte-client/src/services/wasm-bridge.service.ts @@ -1,5 +1,5 @@ import type { NewSessionInfo, ServerBridgeService } from './server-bridge.service'; -import * as IronWasm from '../../../ffi/wasm/pkg/ironrdp'; +import * as IronWasm from '../../../ffi/wasm/pkg/ironrdp_web'; import { Observable, of, Subject } from 'rxjs'; export class WasmBridgeService implements ServerBridgeService { diff --git a/iron-svelte-client/static/beercss/beer.min.css b/web-client/iron-svelte-client/static/beercss/beer.min.css similarity index 100% rename from iron-svelte-client/static/beercss/beer.min.css rename to web-client/iron-svelte-client/static/beercss/beer.min.css diff --git a/iron-svelte-client/static/beercss/beer.min.js b/web-client/iron-svelte-client/static/beercss/beer.min.js similarity index 100% rename from iron-svelte-client/static/beercss/beer.min.js rename to web-client/iron-svelte-client/static/beercss/beer.min.js diff --git a/iron-svelte-client/static/favicon.png b/web-client/iron-svelte-client/static/favicon.png similarity index 100% rename from iron-svelte-client/static/favicon.png rename to web-client/iron-svelte-client/static/favicon.png diff --git a/iron-svelte-client/static/material-icons/LICENSE b/web-client/iron-svelte-client/static/material-icons/LICENSE similarity index 100% rename from iron-svelte-client/static/material-icons/LICENSE rename to web-client/iron-svelte-client/static/material-icons/LICENSE diff --git a/iron-svelte-client/static/material-icons/filled.css b/web-client/iron-svelte-client/static/material-icons/filled.css similarity index 100% rename from iron-svelte-client/static/material-icons/filled.css rename to web-client/iron-svelte-client/static/material-icons/filled.css diff --git a/iron-svelte-client/static/material-icons/index.css b/web-client/iron-svelte-client/static/material-icons/index.css similarity index 100% rename from iron-svelte-client/static/material-icons/index.css rename to web-client/iron-svelte-client/static/material-icons/index.css diff --git a/iron-svelte-client/static/material-icons/material-icons-outlined.woff2 b/web-client/iron-svelte-client/static/material-icons/material-icons-outlined.woff2 similarity index 100% rename from iron-svelte-client/static/material-icons/material-icons-outlined.woff2 rename to web-client/iron-svelte-client/static/material-icons/material-icons-outlined.woff2 diff --git a/iron-svelte-client/static/material-icons/material-icons-round.woff2 b/web-client/iron-svelte-client/static/material-icons/material-icons-round.woff2 similarity index 100% rename from iron-svelte-client/static/material-icons/material-icons-round.woff2 rename to web-client/iron-svelte-client/static/material-icons/material-icons-round.woff2 diff --git a/iron-svelte-client/static/material-icons/material-icons-sharp.woff2 b/web-client/iron-svelte-client/static/material-icons/material-icons-sharp.woff2 similarity index 100% rename from iron-svelte-client/static/material-icons/material-icons-sharp.woff2 rename to web-client/iron-svelte-client/static/material-icons/material-icons-sharp.woff2 diff --git a/iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 b/web-client/iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 similarity index 100% rename from iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 rename to web-client/iron-svelte-client/static/material-icons/material-icons-two-tone.woff2 diff --git a/iron-svelte-client/static/material-icons/material-icons.woff2 b/web-client/iron-svelte-client/static/material-icons/material-icons.woff2 similarity index 100% rename from iron-svelte-client/static/material-icons/material-icons.woff2 rename to web-client/iron-svelte-client/static/material-icons/material-icons.woff2 diff --git a/iron-svelte-client/static/material-icons/outlined.css b/web-client/iron-svelte-client/static/material-icons/outlined.css similarity index 100% rename from iron-svelte-client/static/material-icons/outlined.css rename to web-client/iron-svelte-client/static/material-icons/outlined.css diff --git a/iron-svelte-client/static/material-icons/round.css b/web-client/iron-svelte-client/static/material-icons/round.css similarity index 100% rename from iron-svelte-client/static/material-icons/round.css rename to web-client/iron-svelte-client/static/material-icons/round.css diff --git a/iron-svelte-client/static/material-icons/sharp.css b/web-client/iron-svelte-client/static/material-icons/sharp.css similarity index 100% rename from iron-svelte-client/static/material-icons/sharp.css rename to web-client/iron-svelte-client/static/material-icons/sharp.css diff --git a/iron-svelte-client/static/material-icons/two-tone.css b/web-client/iron-svelte-client/static/material-icons/two-tone.css similarity index 100% rename from iron-svelte-client/static/material-icons/two-tone.css rename to web-client/iron-svelte-client/static/material-icons/two-tone.css diff --git a/iron-svelte-client/static/theme.css b/web-client/iron-svelte-client/static/theme.css similarity index 100% rename from iron-svelte-client/static/theme.css rename to web-client/iron-svelte-client/static/theme.css diff --git a/iron-svelte-client/svelte.config.js b/web-client/iron-svelte-client/svelte.config.js similarity index 100% rename from iron-svelte-client/svelte.config.js rename to web-client/iron-svelte-client/svelte.config.js diff --git a/iron-svelte-client/tsconfig.json b/web-client/iron-svelte-client/tsconfig.json similarity index 100% rename from iron-svelte-client/tsconfig.json rename to web-client/iron-svelte-client/tsconfig.json diff --git a/iron-svelte-client/vite.config.ts b/web-client/iron-svelte-client/vite.config.ts similarity index 100% rename from iron-svelte-client/vite.config.ts rename to web-client/iron-svelte-client/vite.config.ts diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml new file mode 100644 index 00000000..4ce561f9 --- /dev/null +++ b/xtask/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "xtask" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies] +anyhow = "1.0.68" +pico-args = "0.5.0" +xshell = "0.2.3" diff --git a/xtask/README.md b/xtask/README.md new file mode 100644 index 00000000..7e8c35a7 --- /dev/null +++ b/xtask/README.md @@ -0,0 +1,3 @@ +# IronRDP project automation + +Free-form automation following [`cargo xtask`](https://github.com/matklad/cargo-xtask) specification. diff --git a/xtask/src/cli.rs b/xtask/src/cli.rs new file mode 100644 index 00000000..110619ca --- /dev/null +++ b/xtask/src/cli.rs @@ -0,0 +1,77 @@ +const HELP: &str = "\ +cargo xtask + +USAGE: + cargo xtask [OPTIONS] [TASK] + +FLAGS: + -h, --help Prints help information + +TASKS: + ci Runs all checks required on CI + check [all] Runs all checks + check fmt Checks formatting + check tests Runs tests + check lints Checks lints + check wasm Ensures wasm module is compatible for the web + fuzz run Fuzz all targets for a few seconds + fuzz corpus-min Minify fuzzing corpus + fuzz corpus-fetch Minify fuzzing corpus + fuzz corpus-push Minify fuzzing corpus + svelte-run Runs SvelteKit-based standalone Web Client + coverage Generate code-coverage data using tests and fuzz targets + clean Clean workspace +"; + +pub fn print_help() { + println!("{HELP}"); +} + +pub enum Action { + ShowHelp, + CheckAll, + CheckFmt, + CheckTests, + CheckLints, + CheckWasm, + FuzzRun, + FuzzCorpusMin, + FuzzCorpusFetch, + FuzzCorpusPush, + SvelteRun, + Coverage, + Clean, +} + +pub fn parse_args() -> anyhow::Result { + let mut args = pico_args::Arguments::from_env(); + + let action = if args.contains(["-h", "--help"]) { + Action::ShowHelp + } else { + match args.subcommand()?.as_deref() { + Some("ci") => Action::CheckAll, + Some("check") => match args.subcommand()?.as_deref() { + Some("fmt") => Action::CheckFmt, + Some("tests") => Action::CheckTests, + Some("lints") => Action::CheckLints, + Some("wasm") => Action::CheckWasm, + Some("all") | None => Action::CheckAll, + Some(_) => anyhow::bail!("Unknown check action"), + }, + Some("fuzz") => match args.subcommand()?.as_deref() { + Some("run") | None => Action::FuzzRun, + Some("corpus-min") => Action::FuzzCorpusMin, + Some("corpus-fetch") => Action::FuzzCorpusFetch, + Some("corpus-push") => Action::FuzzCorpusPush, + Some(_) => anyhow::bail!("Unknown fuzz action"), + }, + Some("clean") => Action::Clean, + Some("svelte-run") => Action::SvelteRun, + Some("coverage") => Action::Coverage, + None | Some(_) => Action::ShowHelp, + } + }; + + Ok(action) +} diff --git a/xtask/src/main.rs b/xtask/src/main.rs new file mode 100644 index 00000000..61283808 --- /dev/null +++ b/xtask/src/main.rs @@ -0,0 +1,55 @@ +mod cli; +mod section; +mod tasks; + +use std::path::{Path, PathBuf}; + +use xshell::Shell; + +use crate::cli::Action; + +fn main() -> anyhow::Result<()> { + let action = match cli::parse_args() { + Ok(action) => action, + Err(e) => { + cli::print_help(); + return Err(e); + } + }; + + let sh = Shell::new()?; + + sh.change_dir(project_root()); + + match action { + Action::ShowHelp => cli::print_help(), + Action::CheckAll => { + tasks::check_formatting(&sh)?; + tasks::run_tests(&sh)?; + tasks::check_lints(&sh)?; + tasks::check_wasm(&sh)?; + tasks::fuzz_run(&sh)?; + } + Action::CheckFmt => tasks::check_formatting(&sh)?, + Action::CheckTests => tasks::run_tests(&sh)?, + Action::CheckLints => tasks::check_lints(&sh)?, + Action::CheckWasm => tasks::check_wasm(&sh)?, + Action::FuzzRun => tasks::fuzz_run(&sh)?, + Action::FuzzCorpusMin => tasks::fuzz_corpus_minify(&sh)?, + Action::FuzzCorpusFetch => tasks::fuzz_corpus_fetch(&sh)?, + Action::FuzzCorpusPush => tasks::fuzz_corpus_push(&sh)?, + Action::SvelteRun => tasks::svelte_run(&sh)?, + Action::Coverage => tasks::report_code_coverage(&sh)?, + Action::Clean => tasks::clean_workspace(&sh)?, + } + + Ok(()) +} + +fn project_root() -> PathBuf { + Path::new(&env!("CARGO_MANIFEST_DIR")) + .ancestors() + .nth(1) + .unwrap() + .to_path_buf() +} diff --git a/xtask/src/section.rs b/xtask/src/section.rs new file mode 100644 index 00000000..347f9ca5 --- /dev/null +++ b/xtask/src/section.rs @@ -0,0 +1,30 @@ +use std::time::Instant; + +pub struct Section { + name: &'static str, + start: Instant, +} + +impl Section { + pub fn new(name: &'static str) -> Section { + flush_all(); + eprintln!("::group::{name}"); + let start = Instant::now(); + Section { name, start } + } +} + +impl Drop for Section { + fn drop(&mut self) { + flush_all(); + eprintln!("{}: {:.2?}", self.name, self.start.elapsed()); + eprintln!("::endgroup::"); + } +} + +fn flush_all() { + use std::io::{self, Write as _}; + + let _ = io::stdout().flush(); + let _ = io::stderr().flush(); +} diff --git a/xtask/src/tasks.rs b/xtask/src/tasks.rs new file mode 100644 index 00000000..db108001 --- /dev/null +++ b/xtask/src/tasks.rs @@ -0,0 +1,233 @@ +use anyhow::Context as _; +use xshell::{cmd, Shell}; + +use crate::section::Section; + +const CARGO: &str = env!("CARGO"); +const WASM_PACKAGES: &[&str] = &["ironrdp-web"]; +const FUZZ_TARGETS: &[&str] = &["pdu_decoding", "rle_decompression"]; + +pub fn check_formatting(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("FORMATTING"); + + let output = cmd!(sh, "{CARGO} fmt --all -- --check").ignore_status().output()?; + + if !output.status.success() { + anyhow::bail!("Bad formatting, please run 'cargo +stable fmt --all'"); + } + + println!("All good!"); + + Ok(()) +} + +pub fn run_tests(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("TESTS"); + cmd!(sh, "{CARGO} test --workspace --locked").run()?; + println!("All good!"); + Ok(()) +} + +pub fn check_lints(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("LINTS"); + cmd!(sh, "{CARGO} clippy --workspace --locked -- -D warnings").run()?; + println!("All good!"); + Ok(()) +} + +pub fn check_wasm(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("WASM-CHECK"); + + cmd!(sh, "rustup target add wasm32-unknown-unknown").run()?; + + for package in WASM_PACKAGES { + println!("Check {package}"); + + cmd!( + sh, + "{CARGO} rustc --locked --target wasm32-unknown-unknown --package {package} --lib --crate-type cdylib" + ) + .run()?; + + // When building a library, `-` in the artifact name are replaced by `_` + let artifact_name = format!("{}.wasm", package.replace('-', "_")); + + let output = cmd!(sh, "wasm2wat ./target/wasm32-unknown-unknown/debug/{artifact_name}").output()?; + let stdout = std::str::from_utf8(&output.stdout).context("wasm2wat output is not valid UTF-8")?; + + if stdout.contains("import \"env\"") { + anyhow::bail!("Found undefined symbols in generated wasm file"); + } + } + + println!("All good!"); + + Ok(()) +} + +pub fn fuzz_run(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("FUZZ-RUN"); + + let _guard = sh.push_dir("./fuzz"); + + for target in FUZZ_TARGETS { + cmd!(sh, "rustup run nightly cargo fuzz run {target} -- -max_total_time=5s").run()?; + } + + println!("All good!"); + + Ok(()) +} + +pub fn fuzz_corpus_minify(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("FUZZ-CORPUS-MINIFY"); + + let _guard = sh.push_dir("./fuzz"); + + for target in FUZZ_TARGETS { + cmd!(sh, "rustup run nightly cargo fuzz cmin {target}").run()?; + } + + Ok(()) +} + +pub fn fuzz_corpus_fetch(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("FUZZ-CORPUS-FETCH"); + + cmd!( + sh, + "az storage blob download-batch --account-name fuzzingcorpus --source ironrdp --destination fuzz --output none" + ) + .run()?; + + Ok(()) +} + +pub fn fuzz_corpus_push(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("FUZZ-CORPUS-PUSH"); + + cmd!( + sh, + "az storage blob sync --account-name fuzzingcorpus --container ironrdp --source fuzz/corpus --destination corpus --delete-destination true --output none" + ) + .run()?; + + cmd!( + sh, + "az storage blob sync --account-name fuzzingcorpus --container ironrdp --source fuzz/artifacts --destination artifacts --delete-destination true --output none" + ) + .run()?; + + Ok(()) +} + +pub fn svelte_run(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("SVELTE-RUN"); + + { + let _guard = sh.push_dir("./web-client/iron-remote-gui"); + cmd!(sh, "npm install").run()?; + } + + { + let _guard = sh.push_dir("./web-client/iron-svelte-client"); + cmd!(sh, "npm install").run()?; + cmd!(sh, "npm run dev-all").run()?; + } + + Ok(()) +} + +pub fn report_code_coverage(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("COVERAGE"); + + println!("Remove leftovers"); + sh.remove_path("./fuzz/coverage/")?; + sh.remove_path("./coverage/")?; + + sh.create_dir("./coverage/binaries")?; + + { + // Fuzz coverage + + let _guard = sh.push_dir("./fuzz"); + + cmd!(sh, "{CARGO} clean").run()?; + + for target in FUZZ_TARGETS { + cmd!(sh, "rustup run nightly cargo fuzz coverage {target}").run()?; + } + + cmd!(sh, "cp -r ./target ../coverage/binaries/").run()?; + } + + { + // Test coverage + + cmd!(sh, "{CARGO} clean").run()?; + + cmd!(sh, "rustup run nightly cargo test --workspace") + .env("CARGO_INCREMENTAL", "0") + .env("RUSTFLAGS", "-C instrument-coverage") + .env("LLVM_PROFILE_FILE", "./coverage/default-%m-%p.profraw") + .run()?; + + cmd!(sh, "cp -r ./target/debug ./coverage/binaries/").run()?; + } + + sh.create_dir("./docs")?; + + cmd!( + sh, + "grcov . ./fuzz + --source-dir . + --binary-path ./coverage/binaries/ + --output-type html + --branch + --ignore-not-existing + --ignore xtask/* + --ignore src/* + --ignore **/tests/* + --ignore crates/*-generators/* + --ignore crates/web/* + --ignore crates/client/* + --ignore crates/glutin-renderer/* + --ignore crates/glutin-client/* + --ignore crates/replay-client/* + --ignore crates/tls/* + --ignore fuzz/fuzz_targets/* + --ignore target/* + --ignore fuzz/target/* + --excl-start begin-no-coverage + --excl-stop end-no-coverage + -o ./docs/coverage" + ) + .run()?; + + println!("Code coverage report available in `./docs/coverage` folder"); + + println!("Clean up"); + + sh.remove_path("./coverage/")?; + sh.remove_path("./fuzz/coverage/")?; + sh.remove_path("./xtask/coverage/")?; + + sh.read_dir("./crates")? + .into_iter() + .try_for_each(|crate_path| -> xshell::Result<()> { + for path in sh.read_dir(crate_path)? { + if path.ends_with("coverage") { + sh.remove_path(path)?; + } + } + Ok(()) + })?; + + Ok(()) +} + +pub fn clean_workspace(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("CLEAN"); + cmd!(sh, "{CARGO} clean").run()?; + Ok(()) +} From f3c06b96dc29b2bcdbdfd578b108a255b67bea92 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Wed, 5 Apr 2023 16:13:30 -0400 Subject: [PATCH 0154/1273] refactor(web-client): remove Tauri abstraction (#102) This patch: - Removes references to Tauri and (now unused) abstraction - Remove Tauri references from package.json --- web-client/iron-remote-gui/package-lock.json | 22 -- web-client/iron-remote-gui/package.json | 3 +- .../iron-remote-gui/public/package.json | 2 +- .../iron-remote-gui/src/enums/MouseButton.ts | 7 + .../src/enums/MouseButtonState.ts | 4 + .../iron-remote-gui/src/enums/ScreenScale.ts | 5 + .../src/enums/SpecialCombination.ts | 4 + .../src/interfaces/DesktopSize.ts | 4 + .../src/interfaces/MousePosition.ts | 4 + .../src/interfaces/NewSessionInfo.ts | 7 + .../src/interfaces/ResizeEvent.ts | 6 + .../src/interfaces/ServerRect.ts | 10 + .../src/interfaces/UserInteraction.ts | 17 ++ ...ession-event.model.ts => session-event.ts} | 0 .../src/iron-remote-gui.svelte | 40 +-- web-client/iron-remote-gui/src/main.ts | 9 +- .../iron-remote-gui/src/services/PublicAPI.ts | 49 ++++ .../src/services/server-bridge.service.ts | 72 ----- .../src/services/services-injector.ts | 20 -- .../src/services/tauri-bridge.service.ts | 88 ------ .../src/services/user-interaction-service.ts | 143 ---------- .../src/services/wasm-bridge.service.ts | 252 +++++++++++------- web-client/iron-svelte-client/env.tauri | 1 - .../iron-svelte-client/package-lock.json | 22 -- web-client/iron-svelte-client/package.json | 3 - 25 files changed, 301 insertions(+), 493 deletions(-) create mode 100644 web-client/iron-remote-gui/src/enums/MouseButton.ts create mode 100644 web-client/iron-remote-gui/src/enums/MouseButtonState.ts create mode 100644 web-client/iron-remote-gui/src/enums/ScreenScale.ts create mode 100644 web-client/iron-remote-gui/src/enums/SpecialCombination.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/DesktopSize.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/MousePosition.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/ServerRect.ts create mode 100644 web-client/iron-remote-gui/src/interfaces/UserInteraction.ts rename web-client/iron-remote-gui/src/interfaces/{session-event.model.ts => session-event.ts} (100%) create mode 100644 web-client/iron-remote-gui/src/services/PublicAPI.ts delete mode 100644 web-client/iron-remote-gui/src/services/server-bridge.service.ts delete mode 100644 web-client/iron-remote-gui/src/services/services-injector.ts delete mode 100644 web-client/iron-remote-gui/src/services/tauri-bridge.service.ts delete mode 100644 web-client/iron-remote-gui/src/services/user-interaction-service.ts delete mode 100644 web-client/iron-svelte-client/env.tauri diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index 3aed4206..79ff8477 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -13,7 +13,6 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.0", - "@tauri-apps/api": "^1.2.0", "@tsconfig/svelte": "^3.0.0", "rxjs": "^6.6.7", "svelte": "^3.54.0", @@ -857,21 +856,6 @@ "node": ">=10" } }, - "node_modules/@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", - "dev": true, - "engines": { - "node": ">= 14.6.0", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, "node_modules/@ts-morph/common": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", @@ -3253,12 +3237,6 @@ "dev": true, "optional": true }, - "@tauri-apps/api": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz", - "integrity": "sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==", - "dev": true - }, "@ts-morph/common": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 9dc1c9d5..3a1579c3 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.5.0", + "version": "0.6.0", "type": "module", "private": true, "scripts": { @@ -20,7 +20,6 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.0", - "@tauri-apps/api": "^1.2.0", "@tsconfig/svelte": "^3.0.0", "rxjs": "^6.6.7", "svelte": "^3.54.0", diff --git a/web-client/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json index 29c6570b..73ad4864 100644 --- a/web-client/iron-remote-gui/public/package.json +++ b/web-client/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.5.0", + "version": "0.6.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ diff --git a/web-client/iron-remote-gui/src/enums/MouseButton.ts b/web-client/iron-remote-gui/src/enums/MouseButton.ts new file mode 100644 index 00000000..4dbcdc3a --- /dev/null +++ b/web-client/iron-remote-gui/src/enums/MouseButton.ts @@ -0,0 +1,7 @@ +export enum MouseButton { + LEFT = 0, + MIDDLE = 1, + RIGHT = 2, + BROWSER_BACK = 3, + BROWSER_FORWARD = 4 +} diff --git a/web-client/iron-remote-gui/src/enums/MouseButtonState.ts b/web-client/iron-remote-gui/src/enums/MouseButtonState.ts new file mode 100644 index 00000000..91c4d6fe --- /dev/null +++ b/web-client/iron-remote-gui/src/enums/MouseButtonState.ts @@ -0,0 +1,4 @@ +export enum MouseButtonState { + MOUSE_DOWN, + MOUSE_UP +} diff --git a/web-client/iron-remote-gui/src/enums/ScreenScale.ts b/web-client/iron-remote-gui/src/enums/ScreenScale.ts new file mode 100644 index 00000000..6ab0a3f7 --- /dev/null +++ b/web-client/iron-remote-gui/src/enums/ScreenScale.ts @@ -0,0 +1,5 @@ +export enum ScreenScale { + Fit = 1, + Full = 2, + Real = 3 +} diff --git a/web-client/iron-remote-gui/src/enums/SpecialCombination.ts b/web-client/iron-remote-gui/src/enums/SpecialCombination.ts new file mode 100644 index 00000000..04a8f133 --- /dev/null +++ b/web-client/iron-remote-gui/src/enums/SpecialCombination.ts @@ -0,0 +1,4 @@ +export enum SpecialCombination { + CTRL_ALT_DEL, + META +} diff --git a/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts b/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts new file mode 100644 index 00000000..3cad8abf --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts @@ -0,0 +1,4 @@ +export interface DesktopSize { + width: number, + height: number +} diff --git a/web-client/iron-remote-gui/src/interfaces/MousePosition.ts b/web-client/iron-remote-gui/src/interfaces/MousePosition.ts new file mode 100644 index 00000000..9a815e0e --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/MousePosition.ts @@ -0,0 +1,4 @@ +export interface MousePosition { + x: number; + y: number; +} diff --git a/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts b/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts new file mode 100644 index 00000000..6ab9e42e --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts @@ -0,0 +1,7 @@ +import type {DesktopSize} from './DesktopSize'; + +export interface NewSessionInfo { + session_id: number, + websocket_port: number, + initial_desktop_size: DesktopSize, +} diff --git a/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts b/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts new file mode 100644 index 00000000..ee8b31ca --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts @@ -0,0 +1,6 @@ +import type {DesktopSize} from './DesktopSize'; + +export interface ResizeEvent { + session_id: number, + desktop_size: DesktopSize, +} diff --git a/web-client/iron-remote-gui/src/interfaces/ServerRect.ts b/web-client/iron-remote-gui/src/interfaces/ServerRect.ts new file mode 100644 index 00000000..a983050c --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/ServerRect.ts @@ -0,0 +1,10 @@ +export interface ServerRect { + free(): void; + + clone_buffer(): Uint8Array; + + bottom: number; + left: number; + right: number; + top: number; +} diff --git a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts new file mode 100644 index 00000000..3629491c --- /dev/null +++ b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts @@ -0,0 +1,17 @@ +import type {ScreenScale} from '../enums/ScreenScale'; +import type {Observable} from 'rxjs'; +import type {NewSessionInfo} from './NewSessionInfo'; + +export interface UserInteraction { + setVisibility(state: boolean); + + setScale(scale: ScreenScale); + + connect(username: string, password: string, hostname: string, gatewayAddress: string, domain: string, authToken: string): Observable; + + ctrlAltDel(); + + metaKey(); + + sessionListener: Observable; +} diff --git a/web-client/iron-remote-gui/src/interfaces/session-event.model.ts b/web-client/iron-remote-gui/src/interfaces/session-event.ts similarity index 100% rename from web-client/iron-remote-gui/src/interfaces/session-event.model.ts rename to web-client/iron-remote-gui/src/interfaces/session-event.ts diff --git a/web-client/iron-remote-gui/src/iron-remote-gui.svelte b/web-client/iron-remote-gui/src/iron-remote-gui.svelte index 19665047..28a11c32 100644 --- a/web-client/iron-remote-gui/src/iron-remote-gui.svelte +++ b/web-client/iron-remote-gui/src/iron-remote-gui.svelte @@ -2,14 +2,15 @@ - + - + diff --git a/web-client/iron-svelte-client/src/routes/session/+page.svelte b/web-client/iron-svelte-client/src/routes/session/+page.svelte index 109efb80..89c34571 100644 --- a/web-client/iron-svelte-client/src/routes/session/+page.svelte +++ b/web-client/iron-svelte-client/src/routes/session/+page.svelte @@ -2,7 +2,7 @@ import Login from '$lib/login/login.svelte'; import RemoteScreen from '$lib/remote-screen/remote-screen.svelte'; import Message from '$lib/messages/message.svelte'; - import {showLogin} from "$lib/login/login-store.ts"; + import {showLogin} from "$lib/login/login-store"; diff --git a/web-client/iron-svelte-client/src/services/session.service.ts b/web-client/iron-svelte-client/src/services/session.service.ts index dd303885..bd838f0d 100644 --- a/web-client/iron-svelte-client/src/services/session.service.ts +++ b/web-client/iron-svelte-client/src/services/session.service.ts @@ -24,7 +24,7 @@ export function getCurrentSession(): Session { export function setCurrentSessionActive(active: boolean) { currentSession.update(session => { - session.active = true; + session.active = active; return session; }); } From dff3f307ebfd24692eca140c46baddb6e034e029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Fri, 3 Nov 2023 23:15:39 -0400 Subject: [PATCH 0298/1273] build(web-client): update npm dependencies --- web-client/iron-remote-gui/package-lock.json | 4306 ++------------- .../iron-svelte-client/package-lock.json | 4664 ++++------------- web-client/iron-svelte-client/package.json | 8 +- web-client/iron-svelte-client/vite.config.ts | 2 +- 4 files changed, 1410 insertions(+), 7570 deletions(-) diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index f69effd1..808e8af2 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -1,7 +1,7 @@ { "name": "@devolutions/iron-remote-gui", "version": "0.8.1", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -43,9 +43,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", - "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -59,9 +59,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", - "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], @@ -75,9 +75,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", - "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], @@ -91,9 +91,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", - "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -107,9 +107,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", - "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], @@ -123,9 +123,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", - "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], @@ -139,9 +139,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", - "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], @@ -155,9 +155,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", - "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], @@ -171,9 +171,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", - "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], @@ -187,9 +187,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", - "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], @@ -203,9 +203,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", - "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -219,9 +219,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", - "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], @@ -235,9 +235,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", - "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], @@ -251,9 +251,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", - "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], @@ -267,9 +267,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", - "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], @@ -283,9 +283,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", - "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], @@ -299,9 +299,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", - "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], @@ -315,9 +315,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", - "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], @@ -331,9 +331,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", - "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], @@ -347,9 +347,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", - "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], @@ -363,9 +363,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", - "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], @@ -379,9 +379,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", - "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], @@ -484,87 +484,75 @@ "dev": true }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@microsoft/api-extractor": { - "version": "7.33.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.33.7.tgz", - "integrity": "sha512-fQT2v/j/55DhvMFiopLtth66E7xTFNhnumMKgKY14SaG6qU/V1W0e4nOAgbA+SmLakQjAd1Evu06ofaVaxBPbA==", + "version": "7.38.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.38.2.tgz", + "integrity": "sha512-JOARuhTwOcOMIU0O2czscoJy3ddVzIRhSA9/7T1ALuZSNphgWsPk+Bv4E7AnBDmTV4pP4lBNLtCxEHjjpWaytQ==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.25.3", + "@microsoft/api-extractor-model": "7.28.2", "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.53.3", - "@rushstack/rig-package": "0.3.17", - "@rushstack/ts-command-line": "4.13.1", + "@rushstack/node-core-library": "3.61.0", + "@rushstack/rig-package": "0.5.1", + "@rushstack/ts-command-line": "4.17.1", "colors": "~1.2.1", "lodash": "~4.17.15", - "resolve": "~1.17.0", - "semver": "~7.3.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", "source-map": "~0.6.1", - "typescript": "~4.8.4" + "typescript": "~5.0.4" }, "bin": { "api-extractor": "bin/api-extractor" } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.3.tgz", - "integrity": "sha512-WWxBUq77p2iZ+5VF7Nmrm3y/UtqCh5bYV8ii3khwq3w99+fXWpvfsAhgSLsC7k8XDQc6De4ssMxH6He/qe1pzg==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.2.tgz", + "integrity": "sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.53.3" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rushstack/node-core-library": "3.61.0" } }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/@microsoft/tsdoc": { @@ -653,10 +641,27 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -667,7 +672,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -676,27 +681,28 @@ } }, "node_modules/@rushstack/node-core-library": { - "version": "3.53.3", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.3.tgz", - "integrity": "sha512-H0+T5koi5MFhJUd5ND3dI3bwLhvlABetARl78L3lWftJVQEPyzcgTStvTTRiIM5mCltyTM8VYm6BuCtNUuxD0Q==", + "version": "3.61.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz", + "integrity": "sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==", "dev": true, "dependencies": { - "@types/node": "12.20.24", "colors": "~1.2.1", "fs-extra": "~7.0.1", "import-lazy": "~4.0.0", "jju": "~1.4.0", - "resolve": "~1.17.0", - "semver": "~7.3.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@rushstack/node-core-library/node_modules/@types/node": { - "version": "12.20.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", - "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", - "dev": true - }, "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -720,18 +726,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@rushstack/node-core-library/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@rushstack/node-core-library/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -742,31 +736,19 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.17.tgz", - "integrity": "sha512-nxvAGeIMnHl1LlZSQmacgcRV4y1EYtgcDIrw6KkeVjudOMonlxO482PhDj3LVZEp6L7emSf6YSO2s5JkHlwfZA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.1.tgz", + "integrity": "sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==", "dev": true, "dependencies": { - "resolve": "~1.17.0", + "resolve": "~1.22.1", "strip-json-comments": "~3.1.1" } }, - "node_modules/@rushstack/rig-package/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@rushstack/ts-command-line": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.1.tgz", - "integrity": "sha512-UTQMRyy/jH1IS2U+6pyzyn9xQ2iMcoUKkTcZUzOP/aaMiKlWLwCTDiBVwhw/M1crDx6apF9CwyjuWO9r1SBdJQ==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", + "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", "dev": true, "dependencies": { "@types/argparse": "1.0.38", @@ -775,33 +757,64 @@ "string-argv": "~0.3.1" } }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", - "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.6.tgz", + "integrity": "sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", "debug": "^4.3.4", - "deepmerge": "^4.2.2", + "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.27.0", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.3" + "magic-string": "^0.30.3", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.4" }, "engines": { "node": "^14.18.0 || >= 16" }, "peerDependencies": { - "svelte": "^3.54.0", + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz", + "integrity": "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.2.0", + "svelte": "^3.54.0 || ^4.0.0", "vite": "^4.0.0" } }, "node_modules/@swc/core": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.25.tgz", - "integrity": "sha512-wqzvM/wu6OsTVYPMStOpm7kIQcPX3GoZ0sC85qzDdsCxmJ1rmItLAD91sXPUmmdk0XqPYjLgT9MRDEIP5woz4g==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.95.tgz", + "integrity": "sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==", "dev": true, "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, "engines": { "node": ">=10" }, @@ -810,22 +823,30 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.25", - "@swc/core-darwin-x64": "1.3.25", - "@swc/core-linux-arm-gnueabihf": "1.3.25", - "@swc/core-linux-arm64-gnu": "1.3.25", - "@swc/core-linux-arm64-musl": "1.3.25", - "@swc/core-linux-x64-gnu": "1.3.25", - "@swc/core-linux-x64-musl": "1.3.25", - "@swc/core-win32-arm64-msvc": "1.3.25", - "@swc/core-win32-ia32-msvc": "1.3.25", - "@swc/core-win32-x64-msvc": "1.3.25" + "@swc/core-darwin-arm64": "1.3.95", + "@swc/core-darwin-x64": "1.3.95", + "@swc/core-linux-arm-gnueabihf": "1.3.95", + "@swc/core-linux-arm64-gnu": "1.3.95", + "@swc/core-linux-arm64-musl": "1.3.95", + "@swc/core-linux-x64-gnu": "1.3.95", + "@swc/core-linux-x64-musl": "1.3.95", + "@swc/core-win32-arm64-msvc": "1.3.95", + "@swc/core-win32-ia32-msvc": "1.3.95", + "@swc/core-win32-x64-msvc": "1.3.95" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.25.tgz", - "integrity": "sha512-8PWAVcjTJyj2VrqPBFOIi2w2P0Z8kOCbzHW3+pe+bSXxfGMG0MKPl5U2IXhsEL0ovm4xSFlqW0yygpoP3MmRPw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz", + "integrity": "sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==", "cpu": [ "arm64" ], @@ -839,9 +860,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.25.tgz", - "integrity": "sha512-5DHGiMYFEj5aa208tCjo7Sn5tiG4xPz+4gUiWVlglxqXFptkNim5xu/1G6VYm5Zk7dI5jJkjTU76GQG7IRvPug==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz", + "integrity": "sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q==", "cpu": [ "x64" ], @@ -855,9 +876,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.25.tgz", - "integrity": "sha512-YNfLxv9PhZk+jrJbpR1mMrYBUkufo0hiFv3S1OrX3l8edsIP4wPND5w9ZH0Oi898f6Jg9DBrY2zXJMQ+gWkbvA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz", + "integrity": "sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ==", "cpu": [ "arm" ], @@ -871,9 +892,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.25.tgz", - "integrity": "sha512-kS+spM5/xQ6QvWF1ms3byfjnhUlpjTfFwgCyHnIKgjvsYkDa+vkAIhKq6HuEdaTPaCRCjts0Zarhub1nClUU0g==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz", + "integrity": "sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng==", "cpu": [ "arm64" ], @@ -887,9 +908,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.25.tgz", - "integrity": "sha512-vM3D7LWmjotUAJ2D4F+L+dspFeWrcPNVh0o8TCoTOYCt8DPD5YsUKTpIgOsZ+gReeWUAnNTh0Btx5pGGVfajGA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz", + "integrity": "sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg==", "cpu": [ "arm64" ], @@ -903,9 +924,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.25.tgz", - "integrity": "sha512-xUCLLMDlYa/zB8BftVa4SrxuVpcDxkltCfmBg5r2pZPVskhC5ZJsQZ/AvWNChoAB11shRhjTaWDlmxJEsa7TIg==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz", + "integrity": "sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw==", "cpu": [ "x64" ], @@ -919,9 +940,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.25.tgz", - "integrity": "sha512-QzHU3BIaUVRSFNsUn3Qxx1vgtF/f5NqsFMAAPSq9Y8Yq5nrlc2t7cNuOROxHLbUqE+NPUp6+RglleJMoeWz5mA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz", + "integrity": "sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg==", "cpu": [ "x64" ], @@ -935,9 +956,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.25.tgz", - "integrity": "sha512-77VSVtneVOAUL4zkRyQZ6pWVpTsVVdqwly/DKnRnloglGKxYuk5DG5MUBsL72Nnfv4OCHjZ27eI3NUrpLsUb2Q==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz", + "integrity": "sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA==", "cpu": [ "arm64" ], @@ -951,9 +972,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.25.tgz", - "integrity": "sha512-kz0v3K3H6OPEZR3ry72Ad/6C5GrZBRRUk69K58LORQ8tZXQD3UGl85pUbQqyHl8fR5NU76Muxgovj9CI9iTHGA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz", + "integrity": "sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ==", "cpu": [ "ia32" ], @@ -967,9 +988,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.25.tgz", - "integrity": "sha512-nmQOAzIpNRRnupWzkenJmW4i+h1M76cVNUqEU2MjmtesEkRZEGqv//jefXiyCP2zcbeLNLKiB2ptVJhpd1BvRA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz", + "integrity": "sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA==", "cpu": [ "x64" ], @@ -982,13 +1003,25 @@ "node": ">=10" } }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, "node_modules/@ts-morph/common": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", - "integrity": "sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.18.1.tgz", + "integrity": "sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==", "dev": true, "dependencies": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.2.12", "minimatch": "^5.1.0", "mkdirp": "^1.0.4", "path-browserify": "^1.0.1" @@ -1004,9 +1037,9 @@ } }, "node_modules/@ts-morph/common/node_modules/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -1040,9 +1073,9 @@ "dev": true }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, "node_modules/@types/json-schema": { @@ -1051,25 +1084,20 @@ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.8.tgz", + "integrity": "sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ==", "dev": true }, "node_modules/@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", + "deprecated": "This is a stub types definition. sass provides its own type definitions, so you do not need this installed.", "dev": true, "dependencies": { - "@types/node": "*" + "sass": "*" } }, "node_modules/@types/semver": { @@ -1079,9 +1107,9 @@ "dev": true }, "node_modules/@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-59CA5oavBEWSNLtS/BChj9xntiWMsIf9IytjxmBo9OuZEYuRzRf3K1ARzFPlXTOz5Zm2wXI38AP9RlLqDYMToQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.9.1", @@ -1118,21 +1146,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/parser": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz", @@ -1246,21 +1259,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz", @@ -1286,21 +1284,6 @@ "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz", @@ -1399,13 +1382,10 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-union": { "version": "2.1.0", @@ -1550,6 +1530,18 @@ "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/code-block-writer": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", @@ -1649,9 +1641,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1743,9 +1735,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", - "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1755,348 +1747,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.16", - "@esbuild/android-arm64": "0.16.16", - "@esbuild/android-x64": "0.16.16", - "@esbuild/darwin-arm64": "0.16.16", - "@esbuild/darwin-x64": "0.16.16", - "@esbuild/freebsd-arm64": "0.16.16", - "@esbuild/freebsd-x64": "0.16.16", - "@esbuild/linux-arm": "0.16.16", - "@esbuild/linux-arm64": "0.16.16", - "@esbuild/linux-ia32": "0.16.16", - "@esbuild/linux-loong64": "0.16.16", - "@esbuild/linux-mips64el": "0.16.16", - "@esbuild/linux-ppc64": "0.16.16", - "@esbuild/linux-riscv64": "0.16.16", - "@esbuild/linux-s390x": "0.16.16", - "@esbuild/linux-x64": "0.16.16", - "@esbuild/netbsd-x64": "0.16.16", - "@esbuild/openbsd-x64": "0.16.16", - "@esbuild/sunos-x64": "0.16.16", - "@esbuild/win32-arm64": "0.16.16", - "@esbuild/win32-ia32": "0.16.16", - "@esbuild/win32-x64": "0.16.16" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/escape-string-regexp": { @@ -2241,21 +1913,6 @@ } } }, - "node_modules/eslint-plugin-svelte/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -2284,18 +1941,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -2412,6 +2057,18 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2487,21 +2144,6 @@ "node": ">=12.0.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/flatted": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", @@ -2529,9 +2171,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -2543,10 +2185,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-stream": { "version": "6.0.1", @@ -2581,15 +2226,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { @@ -2628,9 +2273,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/graphemer": { @@ -2639,18 +2284,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2660,6 +2293,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -2678,6 +2323,12 @@ "node": ">= 4" } }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2741,12 +2392,12 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2887,12 +2538,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -2948,9 +2593,9 @@ "dev": true }, "node_modules/kolorist": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", - "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", "dev": true }, "node_modules/levn": { @@ -3027,12 +2672,12 @@ } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -3100,9 +2745,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3521,9 +3166,9 @@ } }, "node_modules/punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -3562,12 +3207,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -3598,21 +3243,24 @@ } }, "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", - "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -3794,10 +3442,39 @@ "rimraf": "^2.5.2" } }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3892,9 +3569,9 @@ "dev": true }, "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "engines": { "node": ">=0.6.19" @@ -3973,9 +3650,9 @@ } }, "node_modules/svelte": { - "version": "3.55.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", - "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", + "version": "3.59.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", + "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", "dev": true, "engines": { "node": ">= 8" @@ -4031,15 +3708,15 @@ } }, "node_modules/svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", "dev": true, "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, "peerDependencies": { - "svelte": ">=3.19.0" + "svelte": "^3.19.0 || ^4.0.0" } }, "node_modules/svelte-preprocess": { @@ -4176,12 +3853,12 @@ } }, "node_modules/ts-morph": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-16.0.0.tgz", - "integrity": "sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-17.0.1.tgz", + "integrity": "sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==", "dev": true, "dependencies": { - "@ts-morph/common": "~0.17.0", + "@ts-morph/common": "~0.18.0", "code-block-writer": "^11.0.3" } }, @@ -4216,9 +3893,9 @@ } }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4229,9 +3906,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -4240,6 +3917,10 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { @@ -4247,9 +3928,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -4279,25 +3960,37 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true, "engines": { "node": ">= 0.10" } }, "node_modules/vite": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", - "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { - "esbuild": "^0.16.3", - "postcss": "^8.4.20", - "resolve": "^1.22.1", - "rollup": "^3.7.0" + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" }, "bin": { "vite": "bin/vite.js" @@ -4305,12 +3998,16 @@ "engines": { "node": "^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@types/node": ">= 14", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -4323,6 +4020,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -4338,9 +4038,9 @@ } }, "node_modules/vite-plugin-dts": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-1.7.1.tgz", - "integrity": "sha512-2oGMnAjcrZN7jM1TloiS1b1mCn42s3El04ix2RFhId5P1WfMigF8WAwsqT6a6jk0Yso8t7AeZsBkkxYShR0hBQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-1.7.3.tgz", + "integrity": "sha512-u3t45p6fTbzUPMkwYe0ESwuUeiRMlwdPfD3dRyDKUwLe2WmEYcFyVp2o9/ke2EMrM51lQcmNWdV9eLcgjD1/ng==", "dev": true, "dependencies": { "@microsoft/api-extractor": "^7.33.5", @@ -4350,7 +4050,7 @@ "fast-glob": "^3.2.12", "fs-extra": "^10.1.0", "kolorist": "^1.6.0", - "ts-morph": "^16.0.0" + "ts-morph": "17.0.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -4360,166 +4060,35 @@ } }, "node_modules/vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.3.1.tgz", + "integrity": "sha512-55M1h4NAwkrpxPNOJIBzKZFihqLUzIgnElLSmPNPMR2Fn9+JHKaNg3sVX1Fq+VgvuBksQYxiD3OnwQAUu7kaPQ==", "dev": true, "dependencies": { - "@swc/core": "^1.3.10" + "@rollup/plugin-virtual": "^3.0.1", + "@swc/core": "^1.3.10", + "uuid": "^9.0.0" }, "peerDependencies": { "vite": ">=2.8" } }, "node_modules/vite-plugin-wasm": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.1.tgz", - "integrity": "sha512-m1Y2QKWVNRXOfVyT6E/VcaL1yugq1nqGgFMRUIUS8S3rstFjdMxClyzG65casCQo7O9bGcUB3NU0n/RBgDMqGQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.2.2.tgz", + "integrity": "sha512-cdbBUNR850AEoMd5nvLmnyeq63CSfoP1ctD/L2vLk/5+wsgAPlAVAzUK5nGKWO/jtehNlrSSHLteN+gFQw7VOA==", "dev": true, - "dependencies": { - "vite": "^3" - } - }, - "node_modules/vite-plugin-wasm/node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-plugin-wasm/node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-plugin-wasm/node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/vite-plugin-wasm/node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/vite-plugin-wasm/node_modules/vite": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", - "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "vite": "^2 || ^3 || ^4" } }, "node_modules/vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { "vite": { @@ -4595,2902 +4164,5 @@ "commander": "^9.4.1" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.16.tgz", - "integrity": "sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz", - "integrity": "sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.16.tgz", - "integrity": "sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz", - "integrity": "sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz", - "integrity": "sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz", - "integrity": "sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz", - "integrity": "sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz", - "integrity": "sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz", - "integrity": "sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz", - "integrity": "sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz", - "integrity": "sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz", - "integrity": "sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz", - "integrity": "sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz", - "integrity": "sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz", - "integrity": "sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz", - "integrity": "sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz", - "integrity": "sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz", - "integrity": "sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz", - "integrity": "sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz", - "integrity": "sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz", - "integrity": "sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz", - "integrity": "sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@microsoft/api-extractor": { - "version": "7.33.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.33.7.tgz", - "integrity": "sha512-fQT2v/j/55DhvMFiopLtth66E7xTFNhnumMKgKY14SaG6qU/V1W0e4nOAgbA+SmLakQjAd1Evu06ofaVaxBPbA==", - "dev": true, - "requires": { - "@microsoft/api-extractor-model": "7.25.3", - "@microsoft/tsdoc": "0.14.2", - "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.53.3", - "@rushstack/rig-package": "0.3.17", - "@rushstack/ts-command-line": "4.13.1", - "colors": "~1.2.1", - "lodash": "~4.17.15", - "resolve": "~1.17.0", - "semver": "~7.3.0", - "source-map": "~0.6.1", - "typescript": "~4.8.4" - }, - "dependencies": { - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true - } - } - }, - "@microsoft/api-extractor-model": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.3.tgz", - "integrity": "sha512-WWxBUq77p2iZ+5VF7Nmrm3y/UtqCh5bYV8ii3khwq3w99+fXWpvfsAhgSLsC7k8XDQc6De4ssMxH6He/qe1pzg==", - "dev": true, - "requires": { - "@microsoft/tsdoc": "0.14.2", - "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.53.3" - } - }, - "@microsoft/tsdoc": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "dev": true - }, - "@microsoft/tsdoc-config": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", - "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", - "dev": true, - "requires": { - "@microsoft/tsdoc": "0.14.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" - }, - "dependencies": { - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@rushstack/node-core-library": { - "version": "3.53.3", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.3.tgz", - "integrity": "sha512-H0+T5koi5MFhJUd5ND3dI3bwLhvlABetARl78L3lWftJVQEPyzcgTStvTTRiIM5mCltyTM8VYm6BuCtNUuxD0Q==", - "dev": true, - "requires": { - "@types/node": "12.20.24", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "import-lazy": "~4.0.0", - "jju": "~1.4.0", - "resolve": "~1.17.0", - "semver": "~7.3.0", - "z-schema": "~5.0.2" - }, - "dependencies": { - "@types/node": { - "version": "12.20.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", - "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", - "dev": true - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, - "@rushstack/rig-package": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.17.tgz", - "integrity": "sha512-nxvAGeIMnHl1LlZSQmacgcRV4y1EYtgcDIrw6KkeVjudOMonlxO482PhDj3LVZEp6L7emSf6YSO2s5JkHlwfZA==", - "dev": true, - "requires": { - "resolve": "~1.17.0", - "strip-json-comments": "~3.1.1" - }, - "dependencies": { - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "@rushstack/ts-command-line": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.1.tgz", - "integrity": "sha512-UTQMRyy/jH1IS2U+6pyzyn9xQ2iMcoUKkTcZUzOP/aaMiKlWLwCTDiBVwhw/M1crDx6apF9CwyjuWO9r1SBdJQ==", - "dev": true, - "requires": { - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "colors": "~1.2.1", - "string-argv": "~0.3.1" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", - "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.27.0", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.3" - } - }, - "@swc/core": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.25.tgz", - "integrity": "sha512-wqzvM/wu6OsTVYPMStOpm7kIQcPX3GoZ0sC85qzDdsCxmJ1rmItLAD91sXPUmmdk0XqPYjLgT9MRDEIP5woz4g==", - "dev": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.25", - "@swc/core-darwin-x64": "1.3.25", - "@swc/core-linux-arm-gnueabihf": "1.3.25", - "@swc/core-linux-arm64-gnu": "1.3.25", - "@swc/core-linux-arm64-musl": "1.3.25", - "@swc/core-linux-x64-gnu": "1.3.25", - "@swc/core-linux-x64-musl": "1.3.25", - "@swc/core-win32-arm64-msvc": "1.3.25", - "@swc/core-win32-ia32-msvc": "1.3.25", - "@swc/core-win32-x64-msvc": "1.3.25" - } - }, - "@swc/core-darwin-arm64": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.25.tgz", - "integrity": "sha512-8PWAVcjTJyj2VrqPBFOIi2w2P0Z8kOCbzHW3+pe+bSXxfGMG0MKPl5U2IXhsEL0ovm4xSFlqW0yygpoP3MmRPw==", - "dev": true, - "optional": true - }, - "@swc/core-darwin-x64": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.25.tgz", - "integrity": "sha512-5DHGiMYFEj5aa208tCjo7Sn5tiG4xPz+4gUiWVlglxqXFptkNim5xu/1G6VYm5Zk7dI5jJkjTU76GQG7IRvPug==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.25.tgz", - "integrity": "sha512-YNfLxv9PhZk+jrJbpR1mMrYBUkufo0hiFv3S1OrX3l8edsIP4wPND5w9ZH0Oi898f6Jg9DBrY2zXJMQ+gWkbvA==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-gnu": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.25.tgz", - "integrity": "sha512-kS+spM5/xQ6QvWF1ms3byfjnhUlpjTfFwgCyHnIKgjvsYkDa+vkAIhKq6HuEdaTPaCRCjts0Zarhub1nClUU0g==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-musl": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.25.tgz", - "integrity": "sha512-vM3D7LWmjotUAJ2D4F+L+dspFeWrcPNVh0o8TCoTOYCt8DPD5YsUKTpIgOsZ+gReeWUAnNTh0Btx5pGGVfajGA==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-gnu": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.25.tgz", - "integrity": "sha512-xUCLLMDlYa/zB8BftVa4SrxuVpcDxkltCfmBg5r2pZPVskhC5ZJsQZ/AvWNChoAB11shRhjTaWDlmxJEsa7TIg==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-musl": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.25.tgz", - "integrity": "sha512-QzHU3BIaUVRSFNsUn3Qxx1vgtF/f5NqsFMAAPSq9Y8Yq5nrlc2t7cNuOROxHLbUqE+NPUp6+RglleJMoeWz5mA==", - "dev": true, - "optional": true - }, - "@swc/core-win32-arm64-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.25.tgz", - "integrity": "sha512-77VSVtneVOAUL4zkRyQZ6pWVpTsVVdqwly/DKnRnloglGKxYuk5DG5MUBsL72Nnfv4OCHjZ27eI3NUrpLsUb2Q==", - "dev": true, - "optional": true - }, - "@swc/core-win32-ia32-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.25.tgz", - "integrity": "sha512-kz0v3K3H6OPEZR3ry72Ad/6C5GrZBRRUk69K58LORQ8tZXQD3UGl85pUbQqyHl8fR5NU76Muxgovj9CI9iTHGA==", - "dev": true, - "optional": true - }, - "@swc/core-win32-x64-msvc": { - "version": "1.3.25", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.25.tgz", - "integrity": "sha512-nmQOAzIpNRRnupWzkenJmW4i+h1M76cVNUqEU2MjmtesEkRZEGqv//jefXiyCP2zcbeLNLKiB2ptVJhpd1BvRA==", - "dev": true, - "optional": true - }, - "@ts-morph/common": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", - "integrity": "sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "path-browserify": "^1.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "@tsconfig/svelte": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-3.0.0.tgz", - "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", - "dev": true - }, - "@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, - "@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz", - "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/type-utils": "6.9.1", - "@typescript-eslint/utils": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz", - "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==", - "dev": true, - "peer": true, - "requires": { - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz", - "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz", - "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/utils": "6.9.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/types": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz", - "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz", - "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz", - "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz", - "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.9.1", - "eslint-visitor-keys": "^3.4.1" - } - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "requires": { - "big-integer": "^1.6.44" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "requires": { - "run-applescript": "^5.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "code-block-writer": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", - "integrity": "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true - }, - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "requires": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - } - }, - "default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "requires": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - } - }, - "define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "esbuild": { - "version": "0.16.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.16.tgz", - "integrity": "sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.16.16", - "@esbuild/android-arm64": "0.16.16", - "@esbuild/android-x64": "0.16.16", - "@esbuild/darwin-arm64": "0.16.16", - "@esbuild/darwin-x64": "0.16.16", - "@esbuild/freebsd-arm64": "0.16.16", - "@esbuild/freebsd-x64": "0.16.16", - "@esbuild/linux-arm": "0.16.16", - "@esbuild/linux-arm64": "0.16.16", - "@esbuild/linux-ia32": "0.16.16", - "@esbuild/linux-loong64": "0.16.16", - "@esbuild/linux-mips64el": "0.16.16", - "@esbuild/linux-ppc64": "0.16.16", - "@esbuild/linux-riscv64": "0.16.16", - "@esbuild/linux-s390x": "0.16.16", - "@esbuild/linux-x64": "0.16.16", - "@esbuild/netbsd-x64": "0.16.16", - "@esbuild/openbsd-x64": "0.16.16", - "@esbuild/sunos-x64": "0.16.16", - "@esbuild/win32-arm64": "0.16.16", - "@esbuild/win32-ia32": "0.16.16", - "@esbuild/win32-x64": "0.16.16" - } - }, - "esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - } - } - }, - "eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" - } - }, - "eslint-plugin-svelte": { - "version": "2.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.34.1.tgz", - "integrity": "sha512-HnLzYevh9bLL0Rj2d4dmZY9EutN0BL5JsJRHqtJFIyaEmdxxd3ZuY5zNoSjIFhctFMSntsClbd6TwYjgaOY0Xw==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.29.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": ">=0.33.0 <1.0.0" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "requires": { - "is-docker": "^3.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - }, - "dependencies": { - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - } - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - } - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true - }, - "kolorist": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", - "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "requires": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "prettier-plugin-svelte": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz", - "integrity": "sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==", - "dev": true, - "requires": {} - }, - "punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz", - "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "requires": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svelte": { - "version": "3.55.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", - "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", - "dev": true - }, - "svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - } - }, - "svelte-eslint-parser": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", - "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", - "dev": true, - "requires": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.29", - "postcss-scss": "^4.0.8" - } - }, - "svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", - "dev": true, - "requires": {} - }, - "svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dev": true, - "requires": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "requires": {} - }, - "ts-morph": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-16.0.0.tgz", - "integrity": "sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==", - "dev": true, - "requires": { - "@ts-morph/common": "~0.17.0", - "code-block-writer": "^11.0.3" - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "dev": true - }, - "ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==" - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true - }, - "vite": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", - "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", - "dev": true, - "requires": { - "esbuild": "^0.16.3", - "fsevents": "~2.3.2", - "postcss": "^8.4.20", - "resolve": "^1.22.1", - "rollup": "^3.7.0" - } - }, - "vite-plugin-dts": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-1.7.1.tgz", - "integrity": "sha512-2oGMnAjcrZN7jM1TloiS1b1mCn42s3El04ix2RFhId5P1WfMigF8WAwsqT6a6jk0Yso8t7AeZsBkkxYShR0hBQ==", - "dev": true, - "requires": { - "@microsoft/api-extractor": "^7.33.5", - "@rollup/pluginutils": "^5.0.2", - "@rushstack/node-core-library": "^3.53.2", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", - "kolorist": "^1.6.0", - "ts-morph": "^16.0.0" - } - }, - "vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", - "dev": true, - "requires": { - "@swc/core": "^1.3.10" - } - }, - "vite-plugin-wasm": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.1.tgz", - "integrity": "sha512-m1Y2QKWVNRXOfVyT6E/VcaL1yugq1nqGgFMRUIUS8S3rstFjdMxClyzG65casCQo7O9bGcUB3NU0n/RBgDMqGQ==", - "dev": true, - "requires": { - "vite": "^3" - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "dev": true, - "optional": true - }, - "esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "vite": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", - "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - } - } - }, - "vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "dev": true, - "requires": {} - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "z-schema": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", - "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", - "dev": true, - "requires": { - "commander": "^9.4.1", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "validator": "^13.7.0" - } - } } } diff --git a/web-client/iron-svelte-client/package-lock.json b/web-client/iron-svelte-client/package-lock.json index 9d7afebf..516a1833 100644 --- a/web-client/iron-svelte-client/package-lock.json +++ b/web-client/iron-svelte-client/package-lock.json @@ -1,7 +1,7 @@ { "name": "iron-svelte-client", "version": "0.0.1", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -10,9 +10,9 @@ "devDependencies": { "@material-design-icons/font": "^0.14.2", "@rollup/plugin-replace": "^5.0.1", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-static": "^1.0.0-next.48", - "@sveltejs/kit": "next", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/adapter-static": "^2.0.0", + "@sveltejs/kit": "^1.27.0", "@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/parser": "^5.27.0", "beercss": "^2.3.0", @@ -32,20 +32,24 @@ "svelte-preprocess": "^4.10.6", "tslib": "^2.3.1", "typescript": "^4.7.4", - "vite": "^3.2.7", + "vite": "^4.0.0", "vite-plugin-top-level-await": "^1.2.2", "vite-plugin-wasm": "^3.1.0" } }, - "../iron-remote-gui/dist": { - "name": "@devolutions/iron-remote-gui", - "version": "0.1.0", - "extraneous": true + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -55,9 +59,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -70,10 +74,154 @@ "node": ">=12" } }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -86,6 +234,182 @@ "node": ">=12" } }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -101,16 +425,25 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -124,13 +457,31 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/js": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", + "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -152,40 +503,40 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@material-design-icons/font": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", - "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", + "version": "0.14.13", + "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.13.tgz", + "integrity": "sha512-qU5Zms9VUdxxq4oC7lY+Eibz+O6YjmctGZKToUfqQOC4qVkbUNksu+0UizFBdbtx8euERZ3GGcFoN6F9LeXSMw==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -244,25 +595,42 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", "dev": true }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", - "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.26.4" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -271,9 +639,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -284,7 +652,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -293,86 +661,106 @@ } }, "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0-next.89", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", - "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz", + "integrity": "sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==", "dev": true, "dependencies": { - "import-meta-resolve": "^2.1.0" + "import-meta-resolve": "^4.0.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^1.0.0" } }, "node_modules/@sveltejs/adapter-static": { - "version": "1.0.0-next.48", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", - "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.3.tgz", + "integrity": "sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==", + "dev": true, + "peerDependencies": { + "@sveltejs/kit": "^1.5.0" + } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.561", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", - "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", + "version": "1.27.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.3.tgz", + "integrity": "sha512-pd7qwX6ww5noA0/FLk45B0aKUeOXWR+pfZsGTrv3dRmj3lTmnki9UTmTdWzHJGrje+BBkGUZHfgGrsSOQQBQpQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.3.1", + "@sveltejs/vite-plugin-svelte": "^2.4.1", "@types/cookie": "^0.5.1", "cookie": "^0.5.0", - "devalue": "^4.2.0", + "devalue": "^4.3.1", + "esm-env": "^1.0.0", "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "mime": "^3.0.0", + "magic-string": "^0.30.0", + "mrmime": "^1.0.1", "sade": "^1.8.1", - "set-cookie-parser": "^2.5.1", + "set-cookie-parser": "^2.6.0", "sirv": "^2.0.2", "tiny-glob": "^0.2.9", - "undici": "5.12.0" + "undici": "~5.26.2" }, "bin": { "svelte-kit": "svelte-kit.js" }, "engines": { - "node": ">=16.14" + "node": "^16.14 || >=18" }, "peerDependencies": { - "svelte": "^3.44.0", - "vite": "^3.2.0" + "svelte": "^3.54.0 || ^4.0.0-next.0", + "vite": "^4.0.0" } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", - "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.6.tgz", + "integrity": "sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==", "dev": true, "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", "debug": "^4.3.4", - "deepmerge": "^4.2.2", + "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.2" + "magic-string": "^0.30.3", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.4" }, "engines": { "node": "^14.18.0 || >= 16" }, "peerDependencies": { - "diff-match-patch": "^1.0.5", - "svelte": "^3.44.0", - "vite": "^3.0.0" + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.4.tgz", + "integrity": "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" }, - "peerDependenciesMeta": { - "diff-match-patch": { - "optional": true - } + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^2.2.0", + "svelte": "^3.54.0 || ^4.0.0", + "vite": "^4.0.0" } }, "node_modules/@swc/core": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", - "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.95.tgz", + "integrity": "sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==", "dev": true, "hasInstallScript": true, - "bin": { - "swcx": "run_swcx.js" + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" }, "engines": { "node": ">=10" @@ -382,22 +770,30 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.20", - "@swc/core-darwin-x64": "1.3.20", - "@swc/core-linux-arm-gnueabihf": "1.3.20", - "@swc/core-linux-arm64-gnu": "1.3.20", - "@swc/core-linux-arm64-musl": "1.3.20", - "@swc/core-linux-x64-gnu": "1.3.20", - "@swc/core-linux-x64-musl": "1.3.20", - "@swc/core-win32-arm64-msvc": "1.3.20", - "@swc/core-win32-ia32-msvc": "1.3.20", - "@swc/core-win32-x64-msvc": "1.3.20" + "@swc/core-darwin-arm64": "1.3.95", + "@swc/core-darwin-x64": "1.3.95", + "@swc/core-linux-arm-gnueabihf": "1.3.95", + "@swc/core-linux-arm64-gnu": "1.3.95", + "@swc/core-linux-arm64-musl": "1.3.95", + "@swc/core-linux-x64-gnu": "1.3.95", + "@swc/core-linux-x64-musl": "1.3.95", + "@swc/core-win32-arm64-msvc": "1.3.95", + "@swc/core-win32-ia32-msvc": "1.3.95", + "@swc/core-win32-x64-msvc": "1.3.95" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", - "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz", + "integrity": "sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==", "cpu": [ "arm64" ], @@ -411,9 +807,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", - "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz", + "integrity": "sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q==", "cpu": [ "x64" ], @@ -427,9 +823,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", - "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz", + "integrity": "sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ==", "cpu": [ "arm" ], @@ -443,9 +839,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", - "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz", + "integrity": "sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng==", "cpu": [ "arm64" ], @@ -459,9 +855,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", - "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz", + "integrity": "sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg==", "cpu": [ "arm64" ], @@ -475,9 +871,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", - "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz", + "integrity": "sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw==", "cpu": [ "x64" ], @@ -491,9 +887,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", - "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz", + "integrity": "sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg==", "cpu": [ "x64" ], @@ -507,9 +903,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", - "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz", + "integrity": "sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA==", "cpu": [ "arm64" ], @@ -523,9 +919,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", - "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz", + "integrity": "sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ==", "cpu": [ "ia32" ], @@ -539,9 +935,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", - "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", + "version": "1.3.95", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz", + "integrity": "sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA==", "cpu": [ "x64" ], @@ -554,64 +950,72 @@ "node": ">=10" } }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, "node_modules/@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.3.tgz", + "integrity": "sha512-SLg07AS9z1Ab2LU+QxzU8RCmzsja80ywjf/t5oqw+4NSH20gIGlhLOrBDm1L3PBWzPa4+wkgFQVZAjE6Ioj2ug==", "dev": true }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.8.tgz", + "integrity": "sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ==", "dev": true }, "node_modules/@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", + "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", + "deprecated": "This is a stub types definition. sass provides its own type definitions, so you do not need this installed.", "dev": true, "dependencies": { - "@types/node": "*" + "sass": "*" } }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, @@ -633,14 +1037,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { @@ -660,13 +1064,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -677,13 +1081,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -704,9 +1108,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -717,13 +1121,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -744,18 +1148,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "engines": { @@ -770,12 +1174,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -786,140 +1190,128 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", + "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "source-map": "^0.6.1" + "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", + "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", + "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", "dev": true, "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-ssr": "3.3.7", + "@vue/reactivity-transform": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", + "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-dom": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/reactivity": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", - "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", + "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", "dev": true, "dependencies": { - "@vue/shared": "3.2.45" + "@vue/shared": "3.3.7" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", + "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", "dev": true, "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/reactivity-transform/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" + "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", - "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", + "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", "dev": true, "dependencies": { - "@vue/reactivity": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/reactivity": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/runtime-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", - "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", + "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.2.45", - "@vue/shared": "3.2.45", - "csstype": "^2.6.8" + "@vue/runtime-core": "3.3.7", + "@vue/shared": "3.3.7", + "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", - "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", + "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-ssr": "3.3.7", + "@vue/shared": "3.3.7" }, "peerDependencies": { - "vue": "3.2.45" + "vue": "3.3.7" } }, "node_modules/@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", + "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==", "dev": true }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1099,18 +1491,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1253,9 +1633,9 @@ } }, "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", "dev": true }, "node_modules/debug": { @@ -1282,9 +1662,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1346,9 +1726,9 @@ } }, "node_modules/devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", + "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", "dev": true }, "node_modules/dir-glob": { @@ -1449,9 +1829,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1461,348 +1841,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/escape-string-regexp": { @@ -1818,49 +1878,48 @@ } }, "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -1970,46 +2029,22 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -2017,6 +2052,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -2028,15 +2066,21 @@ "node": ">=4.0" } }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2046,9 +2090,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -2187,9 +2231,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -2236,28 +2280,29 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -2275,9 +2320,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -2288,12 +2333,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -2339,9 +2378,9 @@ } }, "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2386,15 +2425,15 @@ "dev": true }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/guid-typescript": { @@ -2403,18 +2442,6 @@ "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2453,18 +2480,18 @@ } }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, "node_modules/import-fresh": { @@ -2484,9 +2511,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", - "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", "dev": true, "funding": { "type": "github", @@ -2530,18 +2557,6 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -2659,16 +2674,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2681,6 +2686,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2705,6 +2716,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -2776,12 +2796,12 @@ } }, "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -2821,18 +2841,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", @@ -2867,9 +2875,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3020,17 +3028,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -3105,12 +3113,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -3297,9 +3299,9 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -3337,35 +3339,6 @@ "node": ">=8.10.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3401,15 +3374,16 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -3597,9 +3571,9 @@ } }, "node_modules/sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -3610,7 +3584,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/semver": { @@ -3629,9 +3603,9 @@ } }, "node_modules/set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, "node_modules/shebang-command": { @@ -3662,9 +3636,9 @@ "dev": true }, "node_modules/sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", "dev": true, "dependencies": { "@polka/url": "^1.0.0-next.20", @@ -3699,15 +3673,6 @@ "sorcery": "bin/index.js" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -3721,17 +3686,9 @@ "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3792,31 +3749,19 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svelte": { - "version": "3.53.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", - "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", + "version": "3.59.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", + "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/svelte-check": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", - "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", + "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.9", @@ -3888,15 +3833,15 @@ } }, "node_modules/svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", "dev": true, "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, "peerDependencies": { - "svelte": ">=3.19.0" + "svelte": "^3.19.0 || ^4.0.0" } }, "node_modules/svelte-preprocess": { @@ -4031,9 +3976,9 @@ } }, "node_modules/totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, "engines": { "node": ">=6" @@ -4091,9 +4036,9 @@ } }, "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4104,21 +4049,21 @@ } }, "node_modules/undici": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", - "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", + "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", "dev": true, "dependencies": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=12.18" + "node": ">=14.0" } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -4158,15 +4103,14 @@ } }, "node_modules/vite": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", - "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" }, "bin": { "vite": "bin/vite.js" @@ -4174,12 +4118,16 @@ "engines": { "node": "^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@types/node": ">= 14", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -4192,6 +4140,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -4207,33 +4158,48 @@ } }, "node_modules/vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.3.1.tgz", + "integrity": "sha512-55M1h4NAwkrpxPNOJIBzKZFihqLUzIgnElLSmPNPMR2Fn9+JHKaNg3sVX1Fq+VgvuBksQYxiD3OnwQAUu7kaPQ==", "dev": true, "dependencies": { - "@swc/core": "^1.3.10" + "@rollup/plugin-virtual": "^3.0.1", + "@swc/core": "^1.3.10", + "uuid": "^9.0.0" }, "peerDependencies": { "vite": ">=2.8" } }, - "node_modules/vite-plugin-wasm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", - "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", + "node_modules/vite-plugin-top-level-await/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, - "dependencies": { - "vite": "^3" + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.2.2.tgz", + "integrity": "sha512-cdbBUNR850AEoMd5nvLmnyeq63CSfoP1ctD/L2vLk/5+wsgAPlAVAzUK5nGKWO/jtehNlrSSHLteN+gFQw7VOA==", + "dev": true, + "peerDependencies": { + "vite": "^2 || ^3 || ^4" } }, "node_modules/vitefu": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", - "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, "peerDependencies": { - "vite": "^3.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { "vite": { @@ -4242,16 +4208,24 @@ } }, "node_modules/vue": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", - "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", + "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-sfc": "3.2.45", - "@vue/runtime-dom": "3.2.45", - "@vue/server-renderer": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-sfc": "3.3.7", + "@vue/runtime-dom": "3.3.7", + "@vue/server-renderer": "3.3.7", + "@vue/shared": "3.3.7" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/which": { @@ -4269,15 +4243,6 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4311,2802 +4276,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@material-design-icons/font": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@material-design-icons/font/-/font-0.14.2.tgz", - "integrity": "sha512-svLx/Q6WidjiSE1rT9joMy241x+gLb0SfNrVR0Kd3GyPyU5HXRmXvjWDj2h2RHzAsgxFqPGez4hL+EmbjZiYSg==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "@rollup/plugin-replace": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", - "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.26.4" - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@sveltejs/adapter-auto": { - "version": "1.0.0-next.89", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.89.tgz", - "integrity": "sha512-S+sASFX4sSZD1xEKmZ3zHxQh2DGxXBUpCGAtUakKkI2MRvFIm+zYIm+7GPekofMLd19FjdFDKkuOjBKPdmA8+w==", - "dev": true, - "requires": { - "import-meta-resolve": "^2.1.0" - } - }, - "@sveltejs/adapter-static": { - "version": "1.0.0-next.48", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.48.tgz", - "integrity": "sha512-Z5Z+QZOav6D0KDeU3ReksGERJg/sX1k5OKWWXyQ11OwGErEEwSXHYRUyjaBmZEPeGzpVVGwwMUK8YWJlG/MKeA==", - "dev": true - }, - "@sveltejs/kit": { - "version": "1.0.0-next.561", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.561.tgz", - "integrity": "sha512-N8HQvS6gcm7R78ADfM4xjhuFS3Ir+Ezce3De8WOnISXQ1tS2npc5LMH9LRHHi14nfosAfJ7vUlcLwLE6N/I7+Q==", - "dev": true, - "requires": { - "@sveltejs/vite-plugin-svelte": "^1.3.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.2.0", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.5.1", - "sirv": "^2.0.2", - "tiny-glob": "^0.2.9", - "undici": "5.12.0" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.3.1.tgz", - "integrity": "sha512-2Uu2sDdIR+XQWF7QWOVSF2jR9EU6Ciw1yWfYnfLYj8HIgnNxkh/8g22Fw2pBUI8QNyW/KxtqJUWBI+8ypamSrQ==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.26.7", - "svelte-hmr": "^0.15.1", - "vitefu": "^0.2.2" - } - }, - "@swc/core": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.20.tgz", - "integrity": "sha512-wSuy5mFTbAPYGlo1DGWkTbXwUubpyYxY2Sf10Y861c4EPtwK7D1nbj35Zg0bsIQvcFG5Y2Q4sXNV5QpsnT0+1A==", - "dev": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.20", - "@swc/core-darwin-x64": "1.3.20", - "@swc/core-linux-arm-gnueabihf": "1.3.20", - "@swc/core-linux-arm64-gnu": "1.3.20", - "@swc/core-linux-arm64-musl": "1.3.20", - "@swc/core-linux-x64-gnu": "1.3.20", - "@swc/core-linux-x64-musl": "1.3.20", - "@swc/core-win32-arm64-msvc": "1.3.20", - "@swc/core-win32-ia32-msvc": "1.3.20", - "@swc/core-win32-x64-msvc": "1.3.20" - } - }, - "@swc/core-darwin-arm64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz", - "integrity": "sha512-ZLk5oVP4v/BAdC3FuBuyB0xpnkZStblIajiyo/kpp/7mq3YbABhOxTCUJGDozISbkaZlIZFXjqvHHnIS42tssw==", - "dev": true, - "optional": true - }, - "@swc/core-darwin-x64": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.20.tgz", - "integrity": "sha512-yM11/3n8PwougalAi9eWkz1r5QRDAg1qdXMSCn7sWlVGr0RvdPL20viKddm38yn+X3FzZzgdoajh7NGfEeqCIQ==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.20.tgz", - "integrity": "sha512-Y8YX7Ma7/xdvCR+hwqhU2lNKF7Qevlx3qZ+eGEpz2fP6k5iu8C5arUBjFWdC2OTY11OuD00TH43TgYfbWpU/Sw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.20.tgz", - "integrity": "sha512-XCjQj4zo2T4QIqxVgzXkKxTLw4adqMgFG2iXBRRu1kOZXJor7Yzc0wH0B4rGtlkcZnh57MBbo+N1TNzH1leSFw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.20.tgz", - "integrity": "sha512-f+fIixoNNaDjmHX0kJn8Lm1Z+CJPHqcYocGaPrXETRAv+8F3Q0rUtxO9FhDKtsG4pI6HRLmS5nBQtBBJWOmfvw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-gnu": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.20.tgz", - "integrity": "sha512-F5TKwsZh3F7CzfYoTAiNwhZazQ02NCgFZSqSwO4lOYbT7RU+zXI3OfLoi2R8f0dzfqh26QSdeeMFPdMb3LpzXg==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-musl": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.20.tgz", - "integrity": "sha512-svbrCeaWU2N9saeg5yKZ2aQh+eYE6vW7y+ptZHgLIriuhnelg38mNqNjKK9emhshUNqOPLFJbW8kA1P+jOyyLw==", - "dev": true, - "optional": true - }, - "@swc/core-win32-arm64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.20.tgz", - "integrity": "sha512-rFrC8JtVlnyfj5wTAIMvNWqPv0KXUA8/TmEKUlg7jgF/IweFPOFvF509tiAstz16Ui2JKL9xaA566/I+XLd+og==", - "dev": true, - "optional": true - }, - "@swc/core-win32-ia32-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.20.tgz", - "integrity": "sha512-xIkBDw0Rd0G0SQ/g9FOUqrcmwcq/Iy7ScBQVV/NzziIGIUlrj9l4nYe3VyoMEH2lwAcyGo9AxwiNB0vq6vDjiQ==", - "dev": true, - "optional": true - }, - "@swc/core-win32-x64-msvc": { - "version": "1.3.20", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.20.tgz", - "integrity": "sha512-1/vxiNasPvpCnVdMxGXEXYhRI65l7yNg/AQ9fYLQn3O5ouWJcd60+6ZoeVrnR5i/R87Fyu/A9fMhOJuOKLHXmA==", - "dev": true, - "optional": true - }, - "@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", - "dev": true - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "@types/sass": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz", - "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.44.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", - "dev": true, - "requires": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/reactivity": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz", - "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", - "dev": true, - "requires": { - "@vue/shared": "3.2.45" - } - }, - "@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "@vue/runtime-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz", - "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", - "dev": true, - "requires": { - "@vue/reactivity": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/runtime-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", - "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", - "dev": true, - "requires": { - "@vue/runtime-core": "3.2.45", - "@vue/shared": "3.2.45", - "csstype": "^2.6.8" - } - }, - "@vue/server-renderer": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz", - "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", - "dev": true, - "requires": { - "@vue/compiler-ssr": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", - "dev": true - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "beercss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/beercss/-/beercss-2.3.0.tgz", - "integrity": "sha512-ZG4wY52Bjd3aY8Mzh/fiOVDQH+Csv9tF2XJETtd7pTWl+/qIhdPxYqb4Nz2UxqgxZu5B8udCyj1EG0EEMEji0A==", - "dev": true, - "requires": { - "material-dynamic-colors": "^0.0.10", - "sass": "^1.49.9", - "uuid": "^8.3.2", - "vue": "^3.2.31" - } - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "requires": { - "big-integer": "^1.6.44" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "requires": { - "run-applescript": "^5.0.0" - } - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "requires": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - } - }, - "default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "requires": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - } - }, - "define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "devalue": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.0.tgz", - "integrity": "sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" - } - }, - "esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "requires": {} - }, - "eslint-plugin-html": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-7.1.0.tgz", - "integrity": "sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==", - "dev": true, - "requires": { - "htmlparser2": "^8.0.1" - } - }, - "eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" - } - }, - "eslint-plugin-svelte": { - "version": "2.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.34.1.tgz", - "integrity": "sha512-HnLzYevh9bLL0Rj2d4dmZY9EutN0BL5JsJRHqtJFIyaEmdxxd3ZuY5zNoSjIFhctFMSntsClbd6TwYjgaOY0Xw==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.29.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": ">=0.33.0 <1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-meta-resolve": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.0.tgz", - "integrity": "sha512-CpPOtiCHxP9HdtDM5F45tNiAe66Cqlv3f5uHoJjt+KlaLrUh9/Wz9vepADZ78SlqEo62aDWZtj9ydMGXV+CPnw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "requires": { - "is-docker": "^3.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - }, - "dependencies": { - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - } - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "material-dynamic-colors": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/material-dynamic-colors/-/material-dynamic-colors-0.0.10.tgz", - "integrity": "sha512-UGgmkqcHfYxHeK4cuZMSw2Ymme4E+GO0jt+0CpQ8Chw+2Aad+n85l0+NK8xHKP4Fb9ATpDVWdCYMxsKngKtIoA==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "requires": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "prettier-plugin-svelte": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz", - "integrity": "sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==", - "dev": true, - "requires": {} - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "requires": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "sass": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", - "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "dev": true, - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svelte": { - "version": "3.53.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", - "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", - "dev": true - }, - "svelte-check": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.2.tgz", - "integrity": "sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - } - }, - "svelte-eslint-parser": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", - "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", - "dev": true, - "requires": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.29", - "postcss-scss": "^4.0.8" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "svelte-hmr": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", - "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", - "dev": true, - "requires": {} - }, - "svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - } - } - }, - "synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dev": true, - "requires": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", - "dev": true - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true - }, - "undici": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", - "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", - "dev": true, - "requires": { - "busboy": "^1.6.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "vite": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", - "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - }, - "vite-plugin-top-level-await": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.2.2.tgz", - "integrity": "sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==", - "dev": true, - "requires": { - "@swc/core": "^1.3.10" - } - }, - "vite-plugin-wasm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.1.0.tgz", - "integrity": "sha512-RzqOR+zMqqNZOhplq7XM9bkFNfW/Cs1VVj7p+aAdOznCBGwxYLqqzLGxuRwTV31HOGtDGjA8nvgcZG3GwmeVZQ==", - "dev": true, - "requires": { - "vite": "^3" - } - }, - "vitefu": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.2.tgz", - "integrity": "sha512-8CKEIWPm4B4DUDN+h+hVJa9pyNi7rzc5MYmbxhs1wcMakueGFNWB5/DL30USm9qU3xUPnL4/rrLEAwwFiD1tag==", - "dev": true, - "requires": {} - }, - "vue": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz", - "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-sfc": "3.2.45", - "@vue/runtime-dom": "3.2.45", - "@vue/server-renderer": "3.2.45", - "@vue/shared": "3.2.45" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } diff --git a/web-client/iron-svelte-client/package.json b/web-client/iron-svelte-client/package.json index 96d92e1e..70155993 100644 --- a/web-client/iron-svelte-client/package.json +++ b/web-client/iron-svelte-client/package.json @@ -38,15 +38,15 @@ "rxjs": "^6.6.7", "svelte": "^3.44.0", "svelte-check": "^2.7.1", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-static": "^1.0.0-next.48", - "@sveltejs/kit": "next", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/adapter-static": "^2.0.0", + "@sveltejs/kit": "^1.27.0", "svelte-preprocess": "^4.10.6", "tslib": "^2.3.1", "typescript": "^4.7.4", "@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/parser": "^5.27.0", - "vite": "^3.2.7", + "vite": "^4.0.0", "vite-plugin-top-level-await": "^1.2.2", "vite-plugin-wasm": "^3.1.0" }, diff --git a/web-client/iron-svelte-client/vite.config.ts b/web-client/iron-svelte-client/vite.config.ts index 37f32e8d..149fe6d9 100644 --- a/web-client/iron-svelte-client/vite.config.ts +++ b/web-client/iron-svelte-client/vite.config.ts @@ -4,7 +4,7 @@ import wasm from 'vite-plugin-wasm'; import topLevelAwait from 'vite-plugin-top-level-await'; const config: UserConfig = { - mode: process.env.MODE || 'development', + mode: 'process.env.MODE' || 'development', plugins: [sveltekit(), wasm(), topLevelAwait()], }; From d4ea558da045d2aaf203ff0bac25c1c5eb5fc9f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Sat, 4 Nov 2023 00:45:10 -0400 Subject: [PATCH 0299/1273] style(web-client): run prettier --- web-client/iron-remote-gui/.eslintrc.yaml | 26 +- web-client/iron-remote-gui/README.md | 17 +- web-client/iron-remote-gui/index.html | 8 +- web-client/iron-remote-gui/package.json | 3 - web-client/iron-remote-gui/pre-build.js | 10 +- web-client/iron-remote-gui/public/test.html | 30 +- .../iron-remote-gui/src/enums/LockKey.ts | 18 +- .../iron-remote-gui/src/enums/LogType.ts | 14 +- .../iron-remote-gui/src/enums/ModifierKey.ts | 26 +- .../iron-remote-gui/src/enums/MouseButton.ts | 2 +- .../src/enums/MouseButtonState.ts | 2 +- web-client/iron-remote-gui/src/enums/OS.ts | 4 +- .../iron-remote-gui/src/enums/ScreenScale.ts | 2 +- .../src/enums/SessionEventType.ts | 2 +- .../src/enums/SpecialCombination.ts | 2 +- .../src/interfaces/DesktopSize.ts | 4 +- .../src/interfaces/NewSessionInfo.ts | 8 +- .../src/interfaces/ResizeEvent.ts | 6 +- .../src/interfaces/UserInteraction.ts | 23 +- .../src/interfaces/session-event.ts | 6 +- .../src/iron-remote-gui.svelte | 102 +- .../iron-remote-gui/src/lib/scancodes.ts | 1586 ++++++++--------- web-client/iron-remote-gui/src/main.ts | 14 +- .../iron-remote-gui/src/services/PublicAPI.ts | 47 +- .../src/services/logging.service.ts | 8 +- .../src/services/wasm-bridge.service.ts | 107 +- web-client/iron-remote-gui/svelte.config.js | 16 +- web-client/iron-remote-gui/tsconfig.json | 2 +- web-client/iron-remote-gui/vite.config.ts | 38 +- web-client/iron-svelte-client/.eslintrc.yaml | 26 +- web-client/iron-svelte-client/README.md | 2 +- web-client/iron-svelte-client/package.json | 3 - web-client/iron-svelte-client/pre-build.js | 14 +- web-client/iron-svelte-client/src/app.d.ts | 8 +- web-client/iron-svelte-client/src/app.html | 36 +- .../src/lib/login/login-store.ts | 4 +- .../src/lib/login/login.css | 6 +- .../src/lib/login/login.svelte | 89 +- .../src/lib/messages/message-store.ts | 10 +- .../src/lib/messages/message.svelte | 5 +- .../lib/remote-screen/remote-screen.svelte | 39 +- .../src/models/desktop-size.ts | 4 +- .../iron-svelte-client/src/models/rect.ts | 10 +- .../iron-svelte-client/src/models/session.ts | 24 +- .../src/routes/+page.svelte | 2 +- .../src/routes/session/+page.svelte | 8 +- .../src/services/server-bridge.service.ts | 37 +- .../src/services/session.service.ts | 22 +- .../iron-svelte-client/static/theme.css | 108 +- .../iron-svelte-client/svelte.config.js | 24 +- web-client/iron-svelte-client/tsconfig.json | 30 +- web-client/iron-svelte-client/vite.config.ts | 4 +- 52 files changed, 1346 insertions(+), 1302 deletions(-) diff --git a/web-client/iron-remote-gui/.eslintrc.yaml b/web-client/iron-remote-gui/.eslintrc.yaml index 3f3207f4..c55f1510 100644 --- a/web-client/iron-remote-gui/.eslintrc.yaml +++ b/web-client/iron-remote-gui/.eslintrc.yaml @@ -12,30 +12,30 @@ root: true plugins: - - "@typescript-eslint" + - '@typescript-eslint' extends: - - "eslint:recommended" - - "plugin:@typescript-eslint/recommended" - - "plugin:svelte/prettier" # Turns off rules that may conflict with Prettier - - "plugin:prettier/recommended" + - 'eslint:recommended' + - 'plugin:@typescript-eslint/recommended' + - 'plugin:svelte/prettier' # Turns off rules that may conflict with Prettier + - 'plugin:prettier/recommended' -parser: "@typescript-eslint/parser" +parser: '@typescript-eslint/parser' parserOptions: project: ./tsconfig.json sourceType: module ecmaVersion: 2020 extraFileExtensions: - - ".svelte" + - '.svelte' ignorePatterns: - - "*.cjs" + - '*.cjs' overrides: - - files: "*.svelte" + - files: '*.svelte' parser: svelte-eslint-parser parserOptions: - parser: "@typescript-eslint/parser" + parser: '@typescript-eslint/parser' env: browser: true @@ -44,10 +44,10 @@ env: rules: strict: 2 - "@typescript-eslint/no-unused-vars": - - "error" + '@typescript-eslint/no-unused-vars': + - 'error' - argsIgnorePattern: '^_' - "@typescript-eslint/strict-boolean-expressions": + '@typescript-eslint/strict-boolean-expressions': - 2 - allowString: false allowNumber: false diff --git a/web-client/iron-remote-gui/README.md b/web-client/iron-remote-gui/README.md index 01c1af3f..23d07046 100644 --- a/web-client/iron-remote-gui/README.md +++ b/web-client/iron-remote-gui/README.md @@ -15,7 +15,7 @@ Run `npm run build` As member of the Devolutions organization, you can import the Web Component from JFrog Artifactory by running the following npm command: ```shell -$ npm install @devolutions/iron-remote-gui +$ npm install @devolutions/iron-remote-gui ``` Otherwise, you can run `npm install` targeting the `dist/` folder directly. @@ -33,10 +33,10 @@ Call the `connect` method on this object. For now, we didn't make the enums used by some method directly available (I didn't find the good way to export them directly with the component.). You need to recreate them on your application for now (it will be improved in future version); -Also, even if the connection to RDP work there is still a lot of improvement to do. +Also, even if the connection to RDP work there is still a lot of improvement to do. As of now, you can expect, mouse movement and click (4 buttons) - no scroll, Keyboard for at least the standard. -Windows and CTRL+ALT+DEL can be called by method on `UserInteractionService`. -Lock keys (like caps lock), have a partial support. +Windows and CTRL+ALT+DEL can be called by method on `UserInteractionService`. +Lock keys (like caps lock), have a partial support. Other advanced functionalities (sharing / copy past...) are not implemented yet. ## Component parameters @@ -59,19 +59,18 @@ You can add some parameters for default initialization on the component ` `authtoken` is the authentication token to send to the Devolutions Gateway. > `ctrlAltDel()` -> +> > Sends the ctrl+alt+del key to server. > `metaKey()` -> +> > Sends the meta key event to remote host (i.e.: Windows key). > `setVisibility(value: bool)` -> +> > Shows or hides rendering canvas. > `setScale(scale: ScreenScale)` -> +> > Sets the scale behavior of the canvas. > See the [ScreenScale](./src/services/user-interaction-service.ts) enum for possible values. - diff --git a/web-client/iron-remote-gui/index.html b/web-client/iron-remote-gui/index.html index 6d50f0dc..11509362 100644 --- a/web-client/iron-remote-gui/index.html +++ b/web-client/iron-remote-gui/index.html @@ -1,4 +1,4 @@ - + @@ -7,12 +7,12 @@ - - + + diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index e5722047..1f796e70 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -16,14 +16,11 @@ "build-alone": "vite build", "pre-build": "node ./pre-build.js", "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "npm run lint:prettier && npm run lint:eslint", "lint:prettier": "prettier . --check", "lint:eslint": "eslint src/**", - "format": "prettier . --write ." }, "devDependencies": { diff --git a/web-client/iron-remote-gui/pre-build.js b/web-client/iron-remote-gui/pre-build.js index e99dce55..7ce00288 100644 --- a/web-client/iron-remote-gui/pre-build.js +++ b/web-client/iron-remote-gui/pre-build.js @@ -1,8 +1,8 @@ -import {spawn} from "child_process"; +import { spawn } from 'child_process'; let run = async function (command, cwd) { - return new Promise(resolve => { - const buildCommand = spawn(command, {stdio: "pipe", shell: true, cwd: cwd}); + return new Promise((resolve) => { + const buildCommand = spawn(command, { stdio: 'pipe', shell: true, cwd: cwd }); buildCommand.stdout.on('data', (data) => { console.log(`${data}`); @@ -16,7 +16,7 @@ let run = async function (command, cwd) { console.log(`child process exited with code ${code}`); resolve(); }); - }) -} + }); +}; await run('wasm-pack build --target web', '../../crates/ironrdp-web'); diff --git a/web-client/iron-remote-gui/public/test.html b/web-client/iron-remote-gui/public/test.html index ae4fc55e..ac176a7e 100644 --- a/web-client/iron-remote-gui/public/test.html +++ b/web-client/iron-remote-gui/public/test.html @@ -1,19 +1,19 @@ - + - - - + + + Test - - - - + + + + - - - \ No newline at end of file + }); + + + diff --git a/web-client/iron-remote-gui/src/enums/LockKey.ts b/web-client/iron-remote-gui/src/enums/LockKey.ts index 11fe34ee..b3550c4d 100644 --- a/web-client/iron-remote-gui/src/enums/LockKey.ts +++ b/web-client/iron-remote-gui/src/enums/LockKey.ts @@ -1,10 +1,10 @@ export enum LockKey { - CAPS_LOCK = "CapsLock", - NUM_LOCK = "NumLock", - SCROLL_LOCK = "ScrollLock", - KANA_MODE = "KanaMode", - "CapsLock" = CAPS_LOCK, - "ScrollLock" = SCROLL_LOCK, - "NumLock" = NUM_LOCK, - "KanaMode" = KANA_MODE -} \ No newline at end of file + CAPS_LOCK = 'CapsLock', + NUM_LOCK = 'NumLock', + SCROLL_LOCK = 'ScrollLock', + KANA_MODE = 'KanaMode', + 'CapsLock' = CAPS_LOCK, + 'ScrollLock' = SCROLL_LOCK, + 'NumLock' = NUM_LOCK, + 'KanaMode' = KANA_MODE, +} diff --git a/web-client/iron-remote-gui/src/enums/LogType.ts b/web-client/iron-remote-gui/src/enums/LogType.ts index bb7c2559..2a1a0c27 100644 --- a/web-client/iron-remote-gui/src/enums/LogType.ts +++ b/web-client/iron-remote-gui/src/enums/LogType.ts @@ -1,8 +1,8 @@ export enum LogType { - OFF = "OFF", - ERROR = "ERROR", - WARN = "WARN", - INFO = "INFO", - DEBUG = "DEBUG", - TRACE = "TRACE" -} \ No newline at end of file + OFF = 'OFF', + ERROR = 'ERROR', + WARN = 'WARN', + INFO = 'INFO', + DEBUG = 'DEBUG', + TRACE = 'TRACE', +} diff --git a/web-client/iron-remote-gui/src/enums/ModifierKey.ts b/web-client/iron-remote-gui/src/enums/ModifierKey.ts index 089f7239..4c6a218c 100644 --- a/web-client/iron-remote-gui/src/enums/ModifierKey.ts +++ b/web-client/iron-remote-gui/src/enums/ModifierKey.ts @@ -1,14 +1,14 @@ export enum ModifierKey { - CTRL_LEFT = "ControlLeft", - SHIFT_LEFT = "ShiftLeft", - SHIFT_RIGHT = "ShiftRight", - ALT_LEFT = "AltLeft", - CTRL_RIGHT = "ControlRight", - ALT_RIGHT = "AltRight", - "ControlLeft" = CTRL_LEFT, - "ShiftLeft" = SHIFT_LEFT, - "ShiftRight" = SHIFT_RIGHT, - "AltLeft" = ALT_LEFT, - "ControlRight" = CTRL_RIGHT, - "AltRight" = ALT_RIGHT, -} \ No newline at end of file + CTRL_LEFT = 'ControlLeft', + SHIFT_LEFT = 'ShiftLeft', + SHIFT_RIGHT = 'ShiftRight', + ALT_LEFT = 'AltLeft', + CTRL_RIGHT = 'ControlRight', + ALT_RIGHT = 'AltRight', + 'ControlLeft' = CTRL_LEFT, + 'ShiftLeft' = SHIFT_LEFT, + 'ShiftRight' = SHIFT_RIGHT, + 'AltLeft' = ALT_LEFT, + 'ControlRight' = CTRL_RIGHT, + 'AltRight' = ALT_RIGHT, +} diff --git a/web-client/iron-remote-gui/src/enums/MouseButton.ts b/web-client/iron-remote-gui/src/enums/MouseButton.ts index 4dbcdc3a..7f83de43 100644 --- a/web-client/iron-remote-gui/src/enums/MouseButton.ts +++ b/web-client/iron-remote-gui/src/enums/MouseButton.ts @@ -3,5 +3,5 @@ MIDDLE = 1, RIGHT = 2, BROWSER_BACK = 3, - BROWSER_FORWARD = 4 + BROWSER_FORWARD = 4, } diff --git a/web-client/iron-remote-gui/src/enums/MouseButtonState.ts b/web-client/iron-remote-gui/src/enums/MouseButtonState.ts index 91c4d6fe..c202cc0e 100644 --- a/web-client/iron-remote-gui/src/enums/MouseButtonState.ts +++ b/web-client/iron-remote-gui/src/enums/MouseButtonState.ts @@ -1,4 +1,4 @@ export enum MouseButtonState { MOUSE_DOWN, - MOUSE_UP + MOUSE_UP, } diff --git a/web-client/iron-remote-gui/src/enums/OS.ts b/web-client/iron-remote-gui/src/enums/OS.ts index 91825a13..0d54712a 100644 --- a/web-client/iron-remote-gui/src/enums/OS.ts +++ b/web-client/iron-remote-gui/src/enums/OS.ts @@ -1,5 +1,5 @@ export enum OS { WINDOWS = 'windows', LINUX = 'linux', - ANDROID = 'android' -} \ No newline at end of file + ANDROID = 'android', +} diff --git a/web-client/iron-remote-gui/src/enums/ScreenScale.ts b/web-client/iron-remote-gui/src/enums/ScreenScale.ts index 6ab0a3f7..16244950 100644 --- a/web-client/iron-remote-gui/src/enums/ScreenScale.ts +++ b/web-client/iron-remote-gui/src/enums/ScreenScale.ts @@ -1,5 +1,5 @@ export enum ScreenScale { Fit = 1, Full = 2, - Real = 3 + Real = 3, } diff --git a/web-client/iron-remote-gui/src/enums/SessionEventType.ts b/web-client/iron-remote-gui/src/enums/SessionEventType.ts index 3cf24383..07418e2a 100644 --- a/web-client/iron-remote-gui/src/enums/SessionEventType.ts +++ b/web-client/iron-remote-gui/src/enums/SessionEventType.ts @@ -1,5 +1,5 @@ export enum SessionEventType { STARTED, TERMINATED, - ERROR + ERROR, } diff --git a/web-client/iron-remote-gui/src/enums/SpecialCombination.ts b/web-client/iron-remote-gui/src/enums/SpecialCombination.ts index 04a8f133..e335f94b 100644 --- a/web-client/iron-remote-gui/src/enums/SpecialCombination.ts +++ b/web-client/iron-remote-gui/src/enums/SpecialCombination.ts @@ -1,4 +1,4 @@ export enum SpecialCombination { CTRL_ALT_DEL, - META + META, } diff --git a/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts b/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts index 3cad8abf..69865b3f 100644 --- a/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts +++ b/web-client/iron-remote-gui/src/interfaces/DesktopSize.ts @@ -1,4 +1,4 @@ export interface DesktopSize { - width: number, - height: number + width: number; + height: number; } diff --git a/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts b/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts index 6ab9e42e..7292e265 100644 --- a/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts +++ b/web-client/iron-remote-gui/src/interfaces/NewSessionInfo.ts @@ -1,7 +1,7 @@ -import type {DesktopSize} from './DesktopSize'; +import type { DesktopSize } from './DesktopSize'; export interface NewSessionInfo { - session_id: number, - websocket_port: number, - initial_desktop_size: DesktopSize, + session_id: number; + websocket_port: number; + initial_desktop_size: DesktopSize; } diff --git a/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts b/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts index ee8b31ca..e03a1313 100644 --- a/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts +++ b/web-client/iron-remote-gui/src/interfaces/ResizeEvent.ts @@ -1,6 +1,6 @@ -import type {DesktopSize} from './DesktopSize'; +import type { DesktopSize } from './DesktopSize'; export interface ResizeEvent { - session_id: number, - desktop_size: DesktopSize, + session_id: number; + desktop_size: DesktopSize; } diff --git a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts index 7f207b18..6ee11bee 100644 --- a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts +++ b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts @@ -1,20 +1,29 @@ -import type {ScreenScale} from '../enums/ScreenScale'; -import type {Observable} from 'rxjs'; -import type {NewSessionInfo} from './NewSessionInfo'; -import type {SessionEvent} from './session-event'; -import type {DesktopSize} from './DesktopSize'; +import type { ScreenScale } from '../enums/ScreenScale'; +import type { Observable } from 'rxjs'; +import type { NewSessionInfo } from './NewSessionInfo'; +import type { SessionEvent } from './session-event'; +import type { DesktopSize } from './DesktopSize'; export interface UserInteraction { setVisibility(state: boolean): void; setScale(scale: ScreenScale): void; - connect(username: string, password: string, destination: string, proxyAddress: string, serverDomain: string, authToken: string, desktopSize?: DesktopSize, preConnectionBlob?: string): Observable; + connect( + username: string, + password: string, + destination: string, + proxyAddress: string, + serverDomain: string, + authToken: string, + desktopSize?: DesktopSize, + preConnectionBlob?: string, + ): Observable; ctrlAltDel(): void; metaKey(): void; - + shutdown(): void; sessionListener: Observable; diff --git a/web-client/iron-remote-gui/src/interfaces/session-event.ts b/web-client/iron-remote-gui/src/interfaces/session-event.ts index e9005789..39fb6748 100644 --- a/web-client/iron-remote-gui/src/interfaces/session-event.ts +++ b/web-client/iron-remote-gui/src/interfaces/session-event.ts @@ -1,7 +1,7 @@ -import type {SessionEventType} from '../enums/SessionEventType'; +import type { SessionEventType } from '../enums/SessionEventType'; import type { IronRdpError } from '../../../../crates/ironrdp-web/pkg/ironrdp_web'; export interface SessionEvent { - type: SessionEventType, - data?: IronRdpError | string + type: SessionEventType; + data?: IronRdpError | string; } diff --git a/web-client/iron-remote-gui/src/iron-remote-gui.svelte b/web-client/iron-remote-gui/src/iron-remote-gui.svelte index abdf3694..ef97f4d9 100644 --- a/web-client/iron-remote-gui/src/iron-remote-gui.svelte +++ b/web-client/iron-remote-gui/src/iron-remote-gui.svelte @@ -1,18 +1,18 @@ - + -
        -
        +
        +
        setMouseButtonState(event, true)} - on:mouseup={(event) => setMouseButtonState(event, false)} - on:mouseleave={(event) => { - setMouseButtonState(event, false); - setMouseOut(event); - } - } - on:mouseenter={(event) => { - setMouseIn(event); - } - } - on:contextmenu={(event) => event.preventDefault()} - on:wheel={mouseWheel} - id="renderer" + on:mousemove={getMousePos} + on:mousedown={(event) => setMouseButtonState(event, true)} + on:mouseup={(event) => setMouseButtonState(event, false)} + on:mouseleave={(event) => { + setMouseButtonState(event, false); + setMouseOut(event); + }} + on:mouseenter={(event) => { + setMouseIn(event); + }} + on:contextmenu={(event) => event.preventDefault()} + on:wheel={mouseWheel} + id="renderer" />
        @@ -294,7 +300,7 @@ } .capturing-inputs { - outline: 1px solid rgba(0, 97, 166, .7); + outline: 1px solid rgba(0, 97, 166, 0.7); outline-offset: -1px; } diff --git a/web-client/iron-remote-gui/src/lib/scancodes.ts b/web-client/iron-remote-gui/src/lib/scancodes.ts index 4e62f8d5..c9c4d69e 100644 --- a/web-client/iron-remote-gui/src/lib/scancodes.ts +++ b/web-client/iron-remote-gui/src/lib/scancodes.ts @@ -1,5 +1,5 @@ import UAParser from 'ua-parser-js'; -import type {OS} from '../enums/OS'; +import type { OS } from '../enums/OS'; /* * Scancode found on: https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values @@ -16,816 +16,816 @@ type CodeMap = Record; export const ScanCodeToCode: CodeMap = { windows: { blink: { - "0x0001": "Escape", - "0x0002": "Digit1", - "0x0003": "Digit2", - "0x0004": "Digit3", - "0x0005": "Digit4", - "0x0006": "Digit5", - "0x0007": "Digit6", - "0x0008": "Digit7", - "0x0009": "Digit8", - "0x000A": "Digit9", - "0x000B": "Digit0", - "0x000C": "Minus", - "0x000D": "Equal", - "0x000E": "Backspace", - "0x000F": "Tab", - "0x0010": "KeyQ", - "0x0011": "KeyW", - "0x0012": "KeyE", - "0x0013": "KeyR", - "0x0014": "KeyT", - "0x0015": "KeyY", - "0x0016": "KeyU", - "0x0017": "KeyI", - "0x0018": "KeyO", - "0x0019": "KeyP", - "0x001A": "BracketLeft", - "0x001B": "BracketRight", - "0x001C": "Enter", - "0x001D": "ControlLeft", - "0x001E": "KeyA", - "0x001F": "KeyS", - "0x0020": "KeyD", - "0x0021": "KeyF", - "0x0022": "KeyG", - "0x0023": "KeyH", - "0x0024": "KeyJ", - "0x0025": "KeyK", - "0x0026": "KeyL", - "0x0027": "Semicolon", - "0x0028": "Quote", - "0x0029": "Backquote", - "0x002A": "ShiftLeft", - "0x002B": "Backslash", - "0x002C": "KeyZ", - "0x002D": "KeyX", - "0x002E": "KeyC", - "0x002F": "KeyV", - "0x0030": "KeyB", - "0x0031": "KeyN", - "0x0032": "KeyM", - "0x0033": "Comma", - "0x0034": "Period", - "0x0035": "Slash", - "0x0036": "ShiftRight", - "0x0037": "NumpadMultiply", - "0x0038": "AltLeft", - "0x0039": "Space", - "0x003A": "CapsLock", - "0x003B": "F1", - "0x003C": "F2", - "0x003D": "F3", - "0x003E": "F4", - "0x003F": "F5", - "0x0040": "F6", - "0x0041": "F7", - "0x0042": "F8", - "0x0043": "F9", - "0x0044": "F10", - "0x0045": "Pause", - "0x0046": "ScrollLock", - "0x0047": "Numpad7", - "0x0048": "Numpad8", - "0x0049": "Numpad9", - "0x004A": "NumpadSubtract", - "0x004B": "Numpad4", - "0x004C": "Numpad5", - "0x004D": "Numpad6", - "0x004E": "NumpadAdd", - "0x004F": "Numpad1", - "0x0050": "Numpad2", - "0x0051": "Numpad3", - "0x0052": "Numpad0", - "0x0053": "NumpadDecimal", - "0x0056": "IntlBackslash", - "0x0057": "F11", - "0x0058": "F12", - "0x0059": "NumpadEqual", - "0x0064": "F13", - "0x0065": "F14", - "0x0066": "F15", - "0x0067": "F16", - "0x0068": "F17", - "0x0069": "F18", - "0x006A": "F19", - "0x006B": "F20", - "0x006C": "F21", - "0x006D": "F22", - "0x006E": "F23", - "0x0070": "KanaMode", - "0x0071": "Lang2", - "0x0072": "Lang1", - "0x0073": "IntlRo", - "0x0076": "F24", - "0x0077": "Lang4", - "0x0078": "Lang3", - "0x0079": "Convert", - "0x007B": "NonConvert", - "0x007D": "IntlYen", - "0x007E": "NumpadComma", - "0xE008": "Undo", - "0xE00A": "Paste", - "0xE010": "MediaTrackPrevious", - "0xE017": "Cut", - "0xE018": "Copy", - "0xE019": "MediaTrackNext", - "0xE01C": "NumpadEnter", - "0xE01D": "ControlRight", - "0xE020": "AudioVolumeMute", - "0xE021": "LaunchApp2", - "0xE022": "MediaPlayPause", - "0xE024": "MediaStop", - "0xE02C": "Eject", - "0xE02E": "AudioVolumeDown", - "0xE030": "AudioVolumeUp", - "0xE032": "BrowserHome", - "0xE035": "NumpadDivide", - "0xE037": "PrintScreen", - "0xE038": "AltRight", - "0xE03B": "Help", - "0xE045": "NumLock", - "0xE046": "Pause", - "0xE047": "Home", - "0xE048": "ArrowUp", - "0xE049": "PageUp", - "0xE04B": "ArrowLeft", - "0xE04D": "ArrowRight", - "0xE04F": "End", - "0xE050": "ArrowDown", - "0xE051": "PageDown", - "0xE052": "Insert", - "0xE053": "Delete", - "0xE05B": "MetaLeft", - "0xE05C": "MetaRight", - "0xE05D": "ContextMenu", - "0xE05E": "Power", - "0xE05F": "Sleep", - "0xE063": "WakeUp", - "0xE065": "BrowserSearch", - "0xE066": "BrowserFavorites", - "0xE067": "BrowserRefresh", - "0xE068": "BrowserStop", - "0xE069": "BrowserForward", - "0xE06A": "BrowserBack", - "0xE06B": "LaunchApp1", - "0xE06C": "LaunchMail", - "0xE06D": "MediaSelect", + '0x0001': 'Escape', + '0x0002': 'Digit1', + '0x0003': 'Digit2', + '0x0004': 'Digit3', + '0x0005': 'Digit4', + '0x0006': 'Digit5', + '0x0007': 'Digit6', + '0x0008': 'Digit7', + '0x0009': 'Digit8', + '0x000A': 'Digit9', + '0x000B': 'Digit0', + '0x000C': 'Minus', + '0x000D': 'Equal', + '0x000E': 'Backspace', + '0x000F': 'Tab', + '0x0010': 'KeyQ', + '0x0011': 'KeyW', + '0x0012': 'KeyE', + '0x0013': 'KeyR', + '0x0014': 'KeyT', + '0x0015': 'KeyY', + '0x0016': 'KeyU', + '0x0017': 'KeyI', + '0x0018': 'KeyO', + '0x0019': 'KeyP', + '0x001A': 'BracketLeft', + '0x001B': 'BracketRight', + '0x001C': 'Enter', + '0x001D': 'ControlLeft', + '0x001E': 'KeyA', + '0x001F': 'KeyS', + '0x0020': 'KeyD', + '0x0021': 'KeyF', + '0x0022': 'KeyG', + '0x0023': 'KeyH', + '0x0024': 'KeyJ', + '0x0025': 'KeyK', + '0x0026': 'KeyL', + '0x0027': 'Semicolon', + '0x0028': 'Quote', + '0x0029': 'Backquote', + '0x002A': 'ShiftLeft', + '0x002B': 'Backslash', + '0x002C': 'KeyZ', + '0x002D': 'KeyX', + '0x002E': 'KeyC', + '0x002F': 'KeyV', + '0x0030': 'KeyB', + '0x0031': 'KeyN', + '0x0032': 'KeyM', + '0x0033': 'Comma', + '0x0034': 'Period', + '0x0035': 'Slash', + '0x0036': 'ShiftRight', + '0x0037': 'NumpadMultiply', + '0x0038': 'AltLeft', + '0x0039': 'Space', + '0x003A': 'CapsLock', + '0x003B': 'F1', + '0x003C': 'F2', + '0x003D': 'F3', + '0x003E': 'F4', + '0x003F': 'F5', + '0x0040': 'F6', + '0x0041': 'F7', + '0x0042': 'F8', + '0x0043': 'F9', + '0x0044': 'F10', + '0x0045': 'Pause', + '0x0046': 'ScrollLock', + '0x0047': 'Numpad7', + '0x0048': 'Numpad8', + '0x0049': 'Numpad9', + '0x004A': 'NumpadSubtract', + '0x004B': 'Numpad4', + '0x004C': 'Numpad5', + '0x004D': 'Numpad6', + '0x004E': 'NumpadAdd', + '0x004F': 'Numpad1', + '0x0050': 'Numpad2', + '0x0051': 'Numpad3', + '0x0052': 'Numpad0', + '0x0053': 'NumpadDecimal', + '0x0056': 'IntlBackslash', + '0x0057': 'F11', + '0x0058': 'F12', + '0x0059': 'NumpadEqual', + '0x0064': 'F13', + '0x0065': 'F14', + '0x0066': 'F15', + '0x0067': 'F16', + '0x0068': 'F17', + '0x0069': 'F18', + '0x006A': 'F19', + '0x006B': 'F20', + '0x006C': 'F21', + '0x006D': 'F22', + '0x006E': 'F23', + '0x0070': 'KanaMode', + '0x0071': 'Lang2', + '0x0072': 'Lang1', + '0x0073': 'IntlRo', + '0x0076': 'F24', + '0x0077': 'Lang4', + '0x0078': 'Lang3', + '0x0079': 'Convert', + '0x007B': 'NonConvert', + '0x007D': 'IntlYen', + '0x007E': 'NumpadComma', + '0xE008': 'Undo', + '0xE00A': 'Paste', + '0xE010': 'MediaTrackPrevious', + '0xE017': 'Cut', + '0xE018': 'Copy', + '0xE019': 'MediaTrackNext', + '0xE01C': 'NumpadEnter', + '0xE01D': 'ControlRight', + '0xE020': 'AudioVolumeMute', + '0xE021': 'LaunchApp2', + '0xE022': 'MediaPlayPause', + '0xE024': 'MediaStop', + '0xE02C': 'Eject', + '0xE02E': 'AudioVolumeDown', + '0xE030': 'AudioVolumeUp', + '0xE032': 'BrowserHome', + '0xE035': 'NumpadDivide', + '0xE037': 'PrintScreen', + '0xE038': 'AltRight', + '0xE03B': 'Help', + '0xE045': 'NumLock', + '0xE046': 'Pause', + '0xE047': 'Home', + '0xE048': 'ArrowUp', + '0xE049': 'PageUp', + '0xE04B': 'ArrowLeft', + '0xE04D': 'ArrowRight', + '0xE04F': 'End', + '0xE050': 'ArrowDown', + '0xE051': 'PageDown', + '0xE052': 'Insert', + '0xE053': 'Delete', + '0xE05B': 'MetaLeft', + '0xE05C': 'MetaRight', + '0xE05D': 'ContextMenu', + '0xE05E': 'Power', + '0xE05F': 'Sleep', + '0xE063': 'WakeUp', + '0xE065': 'BrowserSearch', + '0xE066': 'BrowserFavorites', + '0xE067': 'BrowserRefresh', + '0xE068': 'BrowserStop', + '0xE069': 'BrowserForward', + '0xE06A': 'BrowserBack', + '0xE06B': 'LaunchApp1', + '0xE06C': 'LaunchMail', + '0xE06D': 'MediaSelect', }, gecko: { - "0x0001": "Escape", - "0x0002": "Digit1", - "0x0003": "Digit2", - "0x0004": "Digit3", - "0x0005": "Digit4", - "0x0006": "Digit5", - "0x0007": "Digit6", - "0x0008": "Digit7", - "0x0009": "Digit8", - "0x000A": "Digit9", - "0x000B": "Digit0", - "0x000C": "Minus", - "0x000D": "Equal", - "0x000E": "Backspace", - "0x000F": "Tab", - "0x0010": "KeyQ", - "0x0011": "KeyW", - "0x0012": "KeyE", - "0x0013": "KeyR", - "0x0014": "KeyT", - "0x0015": "KeyY", - "0x0016": "KeyU", - "0x0017": "KeyI", - "0x0018": "KeyO", - "0x0019": "KeyP", - "0x001A": "BracketLeft", - "0x001B": "BracketRight", - "0x001C": "Enter", - "0x001D": "ControlLeft", - "0x001E": "KeyA", - "0x001F": "KeyS", - "0x0020": "KeyD", - "0x0021": "KeyF", - "0x0022": "KeyG", - "0x0023": "KeyH", - "0x0024": "KeyJ", - "0x0025": "KeyK", - "0x0026": "KeyL", - "0x0027": "Semicolon", - "0x0028": "Quote", - "0x0029": "Backquote", - "0x002A": "ShiftLeft", - "0x002B": "Backslash", - "0x002C": "KeyZ", - "0x002D": "KeyX", - "0x002E": "KeyC", - "0x002F": "KeyV", - "0x0030": "KeyB", - "0x0031": "KeyN", - "0x0032": "KeyM", - "0x0033": "Comma", - "0x0034": "Period", - "0x0035": "Slash", - "0x0036": "ShiftRight", - "0x0037": "NumpadMultiply", - "0x0038": "AltLeft", - "0x0039": "Space", - "0x003A": "CapsLock", - "0x003B": "F1", - "0x003C": "F2", - "0x003D": "F3", - "0x003E": "F4", - "0x003F": "F5", - "0x0040": "F6", - "0x0041": "F7", - "0x0042": "F8", - "0x0043": "F9", - "0x0044": "F10", - "0x0045": "Pause", - "0x0046": "ScrollLock", - "0x0047": "Numpad7", - "0x0048": "Numpad8", - "0x0049": "Numpad9", - "0x004A": "NumpadSubtract", - "0x004B": "Numpad4", - "0x004C": "Numpad5", - "0x004D": "Numpad6", - "0x004E": "NumpadAdd", - "0x004F": "Numpad1", - "0x0050": "Numpad2", - "0x0051": "Numpad3", - "0x0052": "Numpad0", - "0x0053": "NumpadDecimal", - "0x0054": "PrintScreen", - "0x0056": "IntlBackslash", - "0x0057": "F11", - "0x0058": "F12", - "0x0059": "NumpadEqual", - "0x0064": "F13", - "0x0065": "F14", - "0x0066": "F15", - "0x0067": "F16", - "0x0068": "F17", - "0x0069": "F18", - "0x006A": "F19", - "0x006B": "F20", - "0x006C": "F21", - "0x006D": "F22", - "0x006E": "F23", - "0x0070": "KanaMode", - "0x0071": "Lang2", - "0x0072": "Lang1", - "0x0073": "IntlRo", - "0x0076": "F24", - "0x0079": "Convert", - "0x007B": "NonConvert", - "0x007D": "IntlYen", - "0x007E": "NumpadComma", - "0xE010": "MediaTrackPrevious", - "0xE019": "MediaTrackNext", - "0xE01C": "NumpadEnter", - "0xE01D": "ControlRight", - "0xE020": "AudioVolumeMute", - "0xE021": "LaunchApp2", - "0xE022": "MediaPlayPause", - "0xE024": "MediaStop", - "0xE02E": "VolumeDown", - "0xE030": "VolumeUp", - "0xE032": "BrowserHome", - "0xE035": "NumpadDivide", - "0xE037": "PrintScreen", - "0xE038": "AltRight", - "0xE045": "NumLock", - "0xE046": "Pause", - "0xE047": "Home", - "0xE048": "ArrowUp", - "0xE049": "PageUp", - "0xE04B": "ArrowLeft", - "0xE04D": "ArrowRight", - "0xE04F": "End", - "0xE050": "ArrowDown", - "0xE051": "PageDown", - "0xE052": "Insert", - "0xE053": "Delete", - "0xE05B": "OSLeft", - "0xE05C": "OSRight", - "0xE05D": "ContextMenu", - "0xE05E": "Power", - "0xE065": "BrowserSearch", - "0xE066": "BrowserFavorites", - "0xE067": "BrowserRefresh", - "0xE068": "BrowserStop", - "0xE069": "BrowserForward", - "0xE06A": "BrowserBack", - "0xE06B": "LaunchApp1", - "0xE06C": "LaunchMail", - "0xE06D": "MediaSelect", - "0xE0F1": "Lang2", - "0xE0F2": "Lang1", - } + '0x0001': 'Escape', + '0x0002': 'Digit1', + '0x0003': 'Digit2', + '0x0004': 'Digit3', + '0x0005': 'Digit4', + '0x0006': 'Digit5', + '0x0007': 'Digit6', + '0x0008': 'Digit7', + '0x0009': 'Digit8', + '0x000A': 'Digit9', + '0x000B': 'Digit0', + '0x000C': 'Minus', + '0x000D': 'Equal', + '0x000E': 'Backspace', + '0x000F': 'Tab', + '0x0010': 'KeyQ', + '0x0011': 'KeyW', + '0x0012': 'KeyE', + '0x0013': 'KeyR', + '0x0014': 'KeyT', + '0x0015': 'KeyY', + '0x0016': 'KeyU', + '0x0017': 'KeyI', + '0x0018': 'KeyO', + '0x0019': 'KeyP', + '0x001A': 'BracketLeft', + '0x001B': 'BracketRight', + '0x001C': 'Enter', + '0x001D': 'ControlLeft', + '0x001E': 'KeyA', + '0x001F': 'KeyS', + '0x0020': 'KeyD', + '0x0021': 'KeyF', + '0x0022': 'KeyG', + '0x0023': 'KeyH', + '0x0024': 'KeyJ', + '0x0025': 'KeyK', + '0x0026': 'KeyL', + '0x0027': 'Semicolon', + '0x0028': 'Quote', + '0x0029': 'Backquote', + '0x002A': 'ShiftLeft', + '0x002B': 'Backslash', + '0x002C': 'KeyZ', + '0x002D': 'KeyX', + '0x002E': 'KeyC', + '0x002F': 'KeyV', + '0x0030': 'KeyB', + '0x0031': 'KeyN', + '0x0032': 'KeyM', + '0x0033': 'Comma', + '0x0034': 'Period', + '0x0035': 'Slash', + '0x0036': 'ShiftRight', + '0x0037': 'NumpadMultiply', + '0x0038': 'AltLeft', + '0x0039': 'Space', + '0x003A': 'CapsLock', + '0x003B': 'F1', + '0x003C': 'F2', + '0x003D': 'F3', + '0x003E': 'F4', + '0x003F': 'F5', + '0x0040': 'F6', + '0x0041': 'F7', + '0x0042': 'F8', + '0x0043': 'F9', + '0x0044': 'F10', + '0x0045': 'Pause', + '0x0046': 'ScrollLock', + '0x0047': 'Numpad7', + '0x0048': 'Numpad8', + '0x0049': 'Numpad9', + '0x004A': 'NumpadSubtract', + '0x004B': 'Numpad4', + '0x004C': 'Numpad5', + '0x004D': 'Numpad6', + '0x004E': 'NumpadAdd', + '0x004F': 'Numpad1', + '0x0050': 'Numpad2', + '0x0051': 'Numpad3', + '0x0052': 'Numpad0', + '0x0053': 'NumpadDecimal', + '0x0054': 'PrintScreen', + '0x0056': 'IntlBackslash', + '0x0057': 'F11', + '0x0058': 'F12', + '0x0059': 'NumpadEqual', + '0x0064': 'F13', + '0x0065': 'F14', + '0x0066': 'F15', + '0x0067': 'F16', + '0x0068': 'F17', + '0x0069': 'F18', + '0x006A': 'F19', + '0x006B': 'F20', + '0x006C': 'F21', + '0x006D': 'F22', + '0x006E': 'F23', + '0x0070': 'KanaMode', + '0x0071': 'Lang2', + '0x0072': 'Lang1', + '0x0073': 'IntlRo', + '0x0076': 'F24', + '0x0079': 'Convert', + '0x007B': 'NonConvert', + '0x007D': 'IntlYen', + '0x007E': 'NumpadComma', + '0xE010': 'MediaTrackPrevious', + '0xE019': 'MediaTrackNext', + '0xE01C': 'NumpadEnter', + '0xE01D': 'ControlRight', + '0xE020': 'AudioVolumeMute', + '0xE021': 'LaunchApp2', + '0xE022': 'MediaPlayPause', + '0xE024': 'MediaStop', + '0xE02E': 'VolumeDown', + '0xE030': 'VolumeUp', + '0xE032': 'BrowserHome', + '0xE035': 'NumpadDivide', + '0xE037': 'PrintScreen', + '0xE038': 'AltRight', + '0xE045': 'NumLock', + '0xE046': 'Pause', + '0xE047': 'Home', + '0xE048': 'ArrowUp', + '0xE049': 'PageUp', + '0xE04B': 'ArrowLeft', + '0xE04D': 'ArrowRight', + '0xE04F': 'End', + '0xE050': 'ArrowDown', + '0xE051': 'PageDown', + '0xE052': 'Insert', + '0xE053': 'Delete', + '0xE05B': 'OSLeft', + '0xE05C': 'OSRight', + '0xE05D': 'ContextMenu', + '0xE05E': 'Power', + '0xE065': 'BrowserSearch', + '0xE066': 'BrowserFavorites', + '0xE067': 'BrowserRefresh', + '0xE068': 'BrowserStop', + '0xE069': 'BrowserForward', + '0xE06A': 'BrowserBack', + '0xE06B': 'LaunchApp1', + '0xE06C': 'LaunchMail', + '0xE06D': 'MediaSelect', + '0xE0F1': 'Lang2', + '0xE0F2': 'Lang1', + }, }, linux: { gecko: { - "0x0009": "Escape", - "0x000A": "Digit1", - "0x000B": "Digit2", - "0x000C": "Digit3", - "0x000D": "Digit4", - "0x000E": "Digit5", - "0x000F": "Digit6", - "0x0010": "Digit7", - "0x0011": "Digit8", - "0x0012": "Digit9", - "0x0013": "Digit0", - "0x0014": "Minus", - "0x0015": "Equal", - "0x0016": "Backspace", - "0x0017": "Tab", - "0x0018": "KeyQ", - "0x0019": "KeyW", - "0x001A": "KeyE", - "0x001B": "KeyR", - "0x001C": "KeyT", - "0x001D": "KeyY", - "0x001E": "KeyU", - "0x001F": "KeyI", - "0x0020": "KeyO", - "0x0021": "KeyP", - "0x0022": "BracketLeft", - "0x0023": "BracketRight", - "0x0024": "Enter", - "0x0025": "ControlLeft", - "0x0026": "KeyA", - "0x0027": "KeyS", - "0x0028": "KeyD", - "0x0029": "KeyF", - "0x002A": "KeyG", - "0x002B": "KeyH", - "0x002C": "KeyJ", - "0x002D": "KeyK", - "0x002E": "KeyL", - "0x002F": "Semicolon", - "0x0030": "Quote", - "0x0031": "Backquote", - "0x0032": "ShiftLeft", - "0x0033": "Backslash", - "0x0034": "KeyZ", - "0x0035": "KeyX", - "0x0036": "KeyC", - "0x0037": "KeyV", - "0x0038": "KeyB", - "0x0039": "KeyN", - "0x003A": "KeyM", - "0x003B": "Comma", - "0x003C": "Period", - "0x003D": "Slash", - "0x003E": "ShiftRight", - "0x003F": "NumpadMultiply", - "0x0040": "AltLeft", - "0x0041": "Space", - "0x0042": "CapsLock", - "0x0043": "F1", - "0x0044": "F2", - "0x0045": "F3", - "0x0046": "F4", - "0x0047": "F5", - "0x0048": "F6", - "0x0049": "F7", - "0x004A": "F8", - "0x004B": "F9", - "0x004C": "F10", - "0x004D": "NumLock", - "0x004E": "ScrollLock", - "0x004F": "Numpad7", - "0x0050": "Numpad8", - "0x0051": "Numpad9", - "0x0052": "NumpadSubtract", - "0x0053": "Numpad4", - "0x0054": "Numpad5", - "0x0055": "Numpad6", - "0x0056": "NumpadAdd", - "0x0057": "Numpad1", - "0x0058": "Numpad2", - "0x0059": "Numpad3", - "0x005A": "Numpad0", - "0x005B": "NumpadDecimal", - "0x005E": "IntlBackslash", - "0x005F": "F11", - "0x0060": "F12", - "0x0061": "IntlRo", - "0x0064": "Convert", - "0x0065": "KanaMode", - "0x0066": "NonConvert", - "0x0068": "NumpadEnter", - "0x0069": "ControlRight", - "0x006A": "NumpadDivide", - "0x006B": "PrintScreen", - "0x006C": "AltRight", - "0x006E": "Home", - "0x006F": "ArrowUp", - "0x0070": "PageUp", - "0x0071": "ArrowLeft", - "0x0072": "ArrowRight", - "0x0073": "End", - "0x0074": "ArrowDown", - "0x0075": "PageDown", - "0x0076": "Insert", - "0x0077": "Delete", - "0x0079": "VolumeMute", - "0x007A": "VolumeDown", - "0x007B": "VolumeUp", - "0x007D": "NumpadEqual", - "0x007F": "Pause", - "0x0081": "NumpadComma", - "0x0082": "Lang1", - "0x0083": "Lang2", - "0x0084": "IntlYen", - "0x0085": "OSLeft", - "0x0086": "OSRight", - "0x0087": "ContextMenu", - "0x0088": "BrowserStop", - "0x0089": "Again", - "0x008A": "Props", - "0x008B": "Undo", - "0x008C": "Select", - "0x008D": "Copy", - "0x008E": "Open", - "0x008F": "Paste", - "0x0090": "Find", - "0x0091": "Cut", - "0x0092": "Help", - "0x0094": "LaunchApp2", - "0x0097": "WakeUp", - "0x0098": "LaunchApp1", - "0x00A3": "LaunchMail", - "0x00A4": "BrowserFavorites", - "0x00A5": "Unidentified", - "0x00A6": "BrowserBack", - "0x00A7": "BrowserForward", - "0x00A9": "Eject", - "0x00AB": "MediaTrackNext", - "0x00AC": "MediaPlayPause", - "0x00AD": "MediaTrackPrevious", - "0x00AE": "MediaStop", - "0x00B3": "MediaSelect", - "0x00B4": "BrowserHome", - "0x00B5": "BrowserRefresh", - "0x00BF": "F13", - "0x00C0": "F14", - "0x00C1": "F15", - "0x00C2": "F16", - "0x00C3": "F17", - "0x00C4": "F18", - "0x00C5": "F19", - "0x00C6": "F20", - "0x00C7": "F21", - "0x00C8": "F22", - "0x00C9": "F23", - "0x00CA": "F24", - "0x00E1": "BrowserSearch", + '0x0009': 'Escape', + '0x000A': 'Digit1', + '0x000B': 'Digit2', + '0x000C': 'Digit3', + '0x000D': 'Digit4', + '0x000E': 'Digit5', + '0x000F': 'Digit6', + '0x0010': 'Digit7', + '0x0011': 'Digit8', + '0x0012': 'Digit9', + '0x0013': 'Digit0', + '0x0014': 'Minus', + '0x0015': 'Equal', + '0x0016': 'Backspace', + '0x0017': 'Tab', + '0x0018': 'KeyQ', + '0x0019': 'KeyW', + '0x001A': 'KeyE', + '0x001B': 'KeyR', + '0x001C': 'KeyT', + '0x001D': 'KeyY', + '0x001E': 'KeyU', + '0x001F': 'KeyI', + '0x0020': 'KeyO', + '0x0021': 'KeyP', + '0x0022': 'BracketLeft', + '0x0023': 'BracketRight', + '0x0024': 'Enter', + '0x0025': 'ControlLeft', + '0x0026': 'KeyA', + '0x0027': 'KeyS', + '0x0028': 'KeyD', + '0x0029': 'KeyF', + '0x002A': 'KeyG', + '0x002B': 'KeyH', + '0x002C': 'KeyJ', + '0x002D': 'KeyK', + '0x002E': 'KeyL', + '0x002F': 'Semicolon', + '0x0030': 'Quote', + '0x0031': 'Backquote', + '0x0032': 'ShiftLeft', + '0x0033': 'Backslash', + '0x0034': 'KeyZ', + '0x0035': 'KeyX', + '0x0036': 'KeyC', + '0x0037': 'KeyV', + '0x0038': 'KeyB', + '0x0039': 'KeyN', + '0x003A': 'KeyM', + '0x003B': 'Comma', + '0x003C': 'Period', + '0x003D': 'Slash', + '0x003E': 'ShiftRight', + '0x003F': 'NumpadMultiply', + '0x0040': 'AltLeft', + '0x0041': 'Space', + '0x0042': 'CapsLock', + '0x0043': 'F1', + '0x0044': 'F2', + '0x0045': 'F3', + '0x0046': 'F4', + '0x0047': 'F5', + '0x0048': 'F6', + '0x0049': 'F7', + '0x004A': 'F8', + '0x004B': 'F9', + '0x004C': 'F10', + '0x004D': 'NumLock', + '0x004E': 'ScrollLock', + '0x004F': 'Numpad7', + '0x0050': 'Numpad8', + '0x0051': 'Numpad9', + '0x0052': 'NumpadSubtract', + '0x0053': 'Numpad4', + '0x0054': 'Numpad5', + '0x0055': 'Numpad6', + '0x0056': 'NumpadAdd', + '0x0057': 'Numpad1', + '0x0058': 'Numpad2', + '0x0059': 'Numpad3', + '0x005A': 'Numpad0', + '0x005B': 'NumpadDecimal', + '0x005E': 'IntlBackslash', + '0x005F': 'F11', + '0x0060': 'F12', + '0x0061': 'IntlRo', + '0x0064': 'Convert', + '0x0065': 'KanaMode', + '0x0066': 'NonConvert', + '0x0068': 'NumpadEnter', + '0x0069': 'ControlRight', + '0x006A': 'NumpadDivide', + '0x006B': 'PrintScreen', + '0x006C': 'AltRight', + '0x006E': 'Home', + '0x006F': 'ArrowUp', + '0x0070': 'PageUp', + '0x0071': 'ArrowLeft', + '0x0072': 'ArrowRight', + '0x0073': 'End', + '0x0074': 'ArrowDown', + '0x0075': 'PageDown', + '0x0076': 'Insert', + '0x0077': 'Delete', + '0x0079': 'VolumeMute', + '0x007A': 'VolumeDown', + '0x007B': 'VolumeUp', + '0x007D': 'NumpadEqual', + '0x007F': 'Pause', + '0x0081': 'NumpadComma', + '0x0082': 'Lang1', + '0x0083': 'Lang2', + '0x0084': 'IntlYen', + '0x0085': 'OSLeft', + '0x0086': 'OSRight', + '0x0087': 'ContextMenu', + '0x0088': 'BrowserStop', + '0x0089': 'Again', + '0x008A': 'Props', + '0x008B': 'Undo', + '0x008C': 'Select', + '0x008D': 'Copy', + '0x008E': 'Open', + '0x008F': 'Paste', + '0x0090': 'Find', + '0x0091': 'Cut', + '0x0092': 'Help', + '0x0094': 'LaunchApp2', + '0x0097': 'WakeUp', + '0x0098': 'LaunchApp1', + '0x00A3': 'LaunchMail', + '0x00A4': 'BrowserFavorites', + '0x00A5': 'Unidentified', + '0x00A6': 'BrowserBack', + '0x00A7': 'BrowserForward', + '0x00A9': 'Eject', + '0x00AB': 'MediaTrackNext', + '0x00AC': 'MediaPlayPause', + '0x00AD': 'MediaTrackPrevious', + '0x00AE': 'MediaStop', + '0x00B3': 'MediaSelect', + '0x00B4': 'BrowserHome', + '0x00B5': 'BrowserRefresh', + '0x00BF': 'F13', + '0x00C0': 'F14', + '0x00C1': 'F15', + '0x00C2': 'F16', + '0x00C3': 'F17', + '0x00C4': 'F18', + '0x00C5': 'F19', + '0x00C6': 'F20', + '0x00C7': 'F21', + '0x00C8': 'F22', + '0x00C9': 'F23', + '0x00CA': 'F24', + '0x00E1': 'BrowserSearch', }, blink: { - "0x0009": "Escape", - "0x000A": "Digit1", - "0x000B": "Digit2", - "0x000C": "Digit3", - "0x000D": "Digit4", - "0x000E": "Digit5", - "0x000F": "Digit6", - "0x0010": "Digit7", - "0x0011": "Digit8", - "0x0012": "Digit9", - "0x0013": "Digit0", - "0x0014": "Minus", - "0x0015": "Equal", - "0x0016": "Backspace", - "0x0017": "Tab", - "0x0018": "KeyQ", - "0x0019": "KeyW", - "0x001A": "KeyE", - "0x001B": "KeyR", - "0x001C": "KeyT", - "0x001D": "KeyY", - "0x001E": "KeyU", - "0x001F": "KeyI", - "0x0020": "KeyO", - "0x0021": "KeyP", - "0x0022": "BracketLeft", - "0x0023": "BracketRight", - "0x0024": "Enter", - "0x0025": "ControlLeft", - "0x0026": "KeyA", - "0x0027": "KeyS", - "0x0028": "KeyD", - "0x0029": "KeyF", - "0x002A": "KeyG", - "0x002B": "KeyH", - "0x002C": "KeyJ", - "0x002D": "KeyK", - "0x002E": "KeyL", - "0x002F": "Semicolon", - "0x0030": "Quote", - "0x0031": "Backquote", - "0x0032": "ShiftLeft", - "0x0033": "Backslash", - "0x0034": "KeyZ", - "0x0035": "KeyX", - "0x0036": "KeyC", - "0x0037": "KeyV", - "0x0038": "KeyB", - "0x0039": "KeyN", - "0x003A": "KeyM", - "0x003B": "Comma", - "0x003C": "Period", - "0x003D": "Slash", - "0x003E": "ShiftRight", - "0x003F": "NumpadMultiply", - "0x0040": "AltLeft", - "0x0041": "Space", - "0x0042": "CapsLock", - "0x0043": "F1", - "0x0044": "F2", - "0x0045": "F3", - "0x0046": "F4", - "0x0047": "F5", - "0x0048": "F6", - "0x0049": "F7", - "0x004A": "F8", - "0x004B": "F9", - "0x004C": "F10", - "0x004D": "NumLock", - "0x004E": "ScrollLock", - "0x004F": "Numpad7", - "0x0050": "Numpad8", - "0x0051": "Numpad9", - "0x0052": "NumpadSubtract", - "0x0053": "Numpad4", - "0x0054": "Numpad5", - "0x0055": "Numpad6", - "0x0056": "NumpadAdd", - "0x0057": "Numpad1", - "0x0058": "Numpad2", - "0x0059": "Numpad3", - "0x005A": "Numpad0", - "0x005B": "NumpadDecimal", - "0x005D": "Lang5", - "0x005E": "IntlBackslash", - "0x005F": "F11", - "0x0060": "F12", - "0x0061": "IntlRo", - "0x0062": "Lang3", - "0x0063": "Lang4", - "0x0064": "Convert", - "0x0065": "KanaMode", - "0x0066": "NonConvert", - "0x0068": "NumpadEnter", - "0x0069": "ControlRight", - "0x006A": "NumpadDivide", - "0x006B": "PrintScreen", - "0x006C": "AltRight", - "0x006E": "Home", - "0x006F": "ArrowUp", - "0x0070": "PageUp", - "0x0071": "ArrowLeft", - "0x0072": "ArrowRight", - "0x0073": "End", - "0x0074": "ArrowDown", - "0x0075": "PageDown", - "0x0076": "Insert", - "0x0077": "Delete", - "0x0079": "AudioVolumeMute", - "0x007A": "AudioVolumeDown", - "0x007B": "AudioVolumeUp", - "0x007C": "Power", - "0x007D": "NumpadEqual", - "0x007F": "Pause", - "0x0081": "NumpadComma", - "0x0082": "Lang1", - "0x0083": "Lang2", - "0x0084": "IntlYen", - "0x0085": "MetaLeft", - "0x0086": "MetaRight", - "0x0087": "ContextMenu", - "0x0088": "BrowserStop", - "0x0089": "Again", - "0x008B": "Undo", - "0x008C": "Select", - "0x008D": "Copy", - "0x008E": "Open", - "0x008F": "Paste", - "0x0090": "Find", - "0x0091": "Cut", - "0x0092": "Help", - "0x0094": "LaunchApp2", - "0x0096": "Sleep", - "0x0097": "WakeUp", - "0x0098": "LaunchApp1", - "0x00A3": "LaunchMail", - "0x00A4": "BrowserFavorites", - "0x00A6": "BrowserBack", - "0x00A7": "BrowserForward", - "0x00A9": "Eject", - "0x00AB": "MediaTrackNext", - "0x00AC": "MediaPlayPause", - "0x00AD": "MediaTrackPrevious", - "0x00AE": "MediaStop", - "0x00B3": "MediaSelect", - "0x00B4": "BrowserHome", - "0x00B5": "BrowserRefresh", - "0x00BB": "NumpadParenLeft", - "0x00BC": "NumpadParenRight", - "0x00BF": "F13", - "0x00C0": "F14", - "0x00C1": "F15", - "0x00C2": "F16", - "0x00C3": "F17", - "0x00C4": "F18", - "0x00C5": "F19", - "0x00C6": "F20", - "0x00C7": "F21", - "0x00C8": "F22", - "0x00C9": "F23", - "0x00CA": "F24", - "0x00E1": "BrowserSearch", - } + '0x0009': 'Escape', + '0x000A': 'Digit1', + '0x000B': 'Digit2', + '0x000C': 'Digit3', + '0x000D': 'Digit4', + '0x000E': 'Digit5', + '0x000F': 'Digit6', + '0x0010': 'Digit7', + '0x0011': 'Digit8', + '0x0012': 'Digit9', + '0x0013': 'Digit0', + '0x0014': 'Minus', + '0x0015': 'Equal', + '0x0016': 'Backspace', + '0x0017': 'Tab', + '0x0018': 'KeyQ', + '0x0019': 'KeyW', + '0x001A': 'KeyE', + '0x001B': 'KeyR', + '0x001C': 'KeyT', + '0x001D': 'KeyY', + '0x001E': 'KeyU', + '0x001F': 'KeyI', + '0x0020': 'KeyO', + '0x0021': 'KeyP', + '0x0022': 'BracketLeft', + '0x0023': 'BracketRight', + '0x0024': 'Enter', + '0x0025': 'ControlLeft', + '0x0026': 'KeyA', + '0x0027': 'KeyS', + '0x0028': 'KeyD', + '0x0029': 'KeyF', + '0x002A': 'KeyG', + '0x002B': 'KeyH', + '0x002C': 'KeyJ', + '0x002D': 'KeyK', + '0x002E': 'KeyL', + '0x002F': 'Semicolon', + '0x0030': 'Quote', + '0x0031': 'Backquote', + '0x0032': 'ShiftLeft', + '0x0033': 'Backslash', + '0x0034': 'KeyZ', + '0x0035': 'KeyX', + '0x0036': 'KeyC', + '0x0037': 'KeyV', + '0x0038': 'KeyB', + '0x0039': 'KeyN', + '0x003A': 'KeyM', + '0x003B': 'Comma', + '0x003C': 'Period', + '0x003D': 'Slash', + '0x003E': 'ShiftRight', + '0x003F': 'NumpadMultiply', + '0x0040': 'AltLeft', + '0x0041': 'Space', + '0x0042': 'CapsLock', + '0x0043': 'F1', + '0x0044': 'F2', + '0x0045': 'F3', + '0x0046': 'F4', + '0x0047': 'F5', + '0x0048': 'F6', + '0x0049': 'F7', + '0x004A': 'F8', + '0x004B': 'F9', + '0x004C': 'F10', + '0x004D': 'NumLock', + '0x004E': 'ScrollLock', + '0x004F': 'Numpad7', + '0x0050': 'Numpad8', + '0x0051': 'Numpad9', + '0x0052': 'NumpadSubtract', + '0x0053': 'Numpad4', + '0x0054': 'Numpad5', + '0x0055': 'Numpad6', + '0x0056': 'NumpadAdd', + '0x0057': 'Numpad1', + '0x0058': 'Numpad2', + '0x0059': 'Numpad3', + '0x005A': 'Numpad0', + '0x005B': 'NumpadDecimal', + '0x005D': 'Lang5', + '0x005E': 'IntlBackslash', + '0x005F': 'F11', + '0x0060': 'F12', + '0x0061': 'IntlRo', + '0x0062': 'Lang3', + '0x0063': 'Lang4', + '0x0064': 'Convert', + '0x0065': 'KanaMode', + '0x0066': 'NonConvert', + '0x0068': 'NumpadEnter', + '0x0069': 'ControlRight', + '0x006A': 'NumpadDivide', + '0x006B': 'PrintScreen', + '0x006C': 'AltRight', + '0x006E': 'Home', + '0x006F': 'ArrowUp', + '0x0070': 'PageUp', + '0x0071': 'ArrowLeft', + '0x0072': 'ArrowRight', + '0x0073': 'End', + '0x0074': 'ArrowDown', + '0x0075': 'PageDown', + '0x0076': 'Insert', + '0x0077': 'Delete', + '0x0079': 'AudioVolumeMute', + '0x007A': 'AudioVolumeDown', + '0x007B': 'AudioVolumeUp', + '0x007C': 'Power', + '0x007D': 'NumpadEqual', + '0x007F': 'Pause', + '0x0081': 'NumpadComma', + '0x0082': 'Lang1', + '0x0083': 'Lang2', + '0x0084': 'IntlYen', + '0x0085': 'MetaLeft', + '0x0086': 'MetaRight', + '0x0087': 'ContextMenu', + '0x0088': 'BrowserStop', + '0x0089': 'Again', + '0x008B': 'Undo', + '0x008C': 'Select', + '0x008D': 'Copy', + '0x008E': 'Open', + '0x008F': 'Paste', + '0x0090': 'Find', + '0x0091': 'Cut', + '0x0092': 'Help', + '0x0094': 'LaunchApp2', + '0x0096': 'Sleep', + '0x0097': 'WakeUp', + '0x0098': 'LaunchApp1', + '0x00A3': 'LaunchMail', + '0x00A4': 'BrowserFavorites', + '0x00A6': 'BrowserBack', + '0x00A7': 'BrowserForward', + '0x00A9': 'Eject', + '0x00AB': 'MediaTrackNext', + '0x00AC': 'MediaPlayPause', + '0x00AD': 'MediaTrackPrevious', + '0x00AE': 'MediaStop', + '0x00B3': 'MediaSelect', + '0x00B4': 'BrowserHome', + '0x00B5': 'BrowserRefresh', + '0x00BB': 'NumpadParenLeft', + '0x00BC': 'NumpadParenRight', + '0x00BF': 'F13', + '0x00C0': 'F14', + '0x00C1': 'F15', + '0x00C2': 'F16', + '0x00C3': 'F17', + '0x00C4': 'F18', + '0x00C5': 'F19', + '0x00C6': 'F20', + '0x00C7': 'F21', + '0x00C8': 'F22', + '0x00C9': 'F23', + '0x00CA': 'F24', + '0x00E1': 'BrowserSearch', + }, }, android: { gecko: { - "0x0001": "Escape", - "0x0002": "Digit1", - "0x0003": "Digit2", - "0x0004": "Digit3", - "0x0005": "Digit4", - "0x0006": "Digit5", - "0x0007": "Digit6", - "0x0008": "Digit7", - "0x0009": "Digit8", - "0x000A": "Digit9", - "0x000B": "Digit0", - "0x000C": "Minus", - "0x000D": "Equal", - "0x000E": "Backspace", - "0x000F": "Tab", - "0x0010": "KeyQ", - "0x0011": "KeyW", - "0x0012": "KeyE", - "0x0013": "KeyR", - "0x0014": "KeyT", - "0x0015": "KeyY", - "0x0016": "KeyU", - "0x0017": "KeyI", - "0x0018": "KeyO", - "0x0019": "KeyP", - "0x001A": "BracketLeft", - "0x001B": "BracketRight", - "0x001C": "Enter", - "0x001D": "ControlLeft", - "0x001E": "KeyA", - "0x001F": "KeyS", - "0x0020": "KeyD", - "0x0021": "KeyF", - "0x0022": "KeyG", - "0x0023": "KeyH", - "0x0024": "KeyJ", - "0x0025": "KeyK", - "0x0026": "KeyL", - "0x0027": "Semicolon", - "0x0028": "Quote", - "0x0029": "Backquote", - "0x002A": "ShiftLeft", - "0x002B": "Backslash", - "0x002C": "KeyZ", - "0x002D": "KeyX", - "0x002E": "KeyC", - "0x002F": "KeyV", - "0x0030": "KeyB", - "0x0031": "KeyN", - "0x0032": "KeyM", - "0x0033": "Comma", - "0x0034": "Period", - "0x0035": "Slash", - "0x0036": "ShiftRight", - "0x0037": "NumpadMultiply", - "0x0038": "AltLeft", - "0x0039": "Space", - "0x003A": "CapsLock", - "0x003B": "F1", - "0x003C": "F2", - "0x003D": "F3", - "0x003E": "F4", - "0x003F": "F5", - "0x0040": "F6", - "0x0041": "F7", - "0x0042": "F8", - "0x0043": "F9", - "0x0044": "F10", - "0x0045": "NumLock", - "0x0046": "ScrollLock", - "0x0047": "Numpad7", - "0x0048": "Numpad8", - "0x0049": "Numpad9", - "0x004A": "NumpadSubtract", - "0x004B": "Numpad4", - "0x004C": "Numpad5", - "0x004D": "Numpad6", - "0x004E": "NumpadAdd", - "0x004F": "Numpad1", - "0x0050": "Numpad2", - "0x0051": "Numpad3", - "0x0052": "Numpad0", - "0x0053": "NumpadDecimal", - "0x0056": "IntlBackslash", - "0x0057": "F11", - "0x0058": "F12", - "0x0059": "IntlRo", - "0x005C": "Convert", - "0x005D": "KanaMode", - "0x005E": "NonConvert", - "0x0060": "NumpadEnter", - "0x0061": "ControlRight", - "0x0062": "NumpadDivide", - "0x0063": "PrintScreen", - "0x0064": "AltRight", - "0x0066": "Home", - "0x0067": "ArrowUp", - "0x0068": "PageUp", - "0x0069": "ArrowLeft", - "0x006A": "ArrowRight", - "0x006B": "End", - "0x006C": "ArrowDown", - "0x006D": "PageDown", - "0x006E": "Insert", - "0x006F": "Delete", - "0x0071": "VolumeMute", - "0x0072": "VolumeDown", - "0x0073": "VolumeUp", - "0x0074": "Power", - "0x0075": "NumpadEqual", - "0x0077": "Pause", - "0x0079": "NumpadComma", - "0x007A": "Lang1", - "0x007B": "Lang2", - "0x007C": "IntlYen", - "0x007D": "OSLeft", - "0x007E": "OSRight", - "0x007F": "ContextMenu", - "0x0080": "BrowserStop", - "0x0081": "Again", - "0x0082": "Props", - "0x0083": "Undo", - "0x0084": "Select", - "0x0085": "Copy", - "0x0086": "Open", - "0x0087": "Paste", - "0x0088": "Find", - "0x0089": "Cut", - "0x008A": "Help", - "0x008E": "Sleep", - "0x008F": "WakeUp", - "0x0090": "LaunchApp1", - "0x009C": "BrowserFavorites", - "0x009E": "BrowserBack", - "0x009F": "BrowserForward", - "0x00A1": "Eject", - "0x00A3": "MediaTrackNext", - "0x00A4": "MediaPlayPause", - "0x00A5": "MediaTrackPrevious", - "0x00A6": "MediaStop", - "0x00AD": "BrowserRefresh", - "0x00B7": "F13", - "0x00B8": "F14", - "0x00B9": "F15", - "0x00BA": "F16", - "0x00BB": "F17", - "0x00BC": "F18", - "0x00BD": "F19", - "0x00BE": "F20", - "0x00BF": "F21", - "0x00C0": "F22", - "0x00C1": "F23", - "0x00C2": "F24", - "0x00D9": "BrowserSearch", - "0x01D0": "Fn", + '0x0001': 'Escape', + '0x0002': 'Digit1', + '0x0003': 'Digit2', + '0x0004': 'Digit3', + '0x0005': 'Digit4', + '0x0006': 'Digit5', + '0x0007': 'Digit6', + '0x0008': 'Digit7', + '0x0009': 'Digit8', + '0x000A': 'Digit9', + '0x000B': 'Digit0', + '0x000C': 'Minus', + '0x000D': 'Equal', + '0x000E': 'Backspace', + '0x000F': 'Tab', + '0x0010': 'KeyQ', + '0x0011': 'KeyW', + '0x0012': 'KeyE', + '0x0013': 'KeyR', + '0x0014': 'KeyT', + '0x0015': 'KeyY', + '0x0016': 'KeyU', + '0x0017': 'KeyI', + '0x0018': 'KeyO', + '0x0019': 'KeyP', + '0x001A': 'BracketLeft', + '0x001B': 'BracketRight', + '0x001C': 'Enter', + '0x001D': 'ControlLeft', + '0x001E': 'KeyA', + '0x001F': 'KeyS', + '0x0020': 'KeyD', + '0x0021': 'KeyF', + '0x0022': 'KeyG', + '0x0023': 'KeyH', + '0x0024': 'KeyJ', + '0x0025': 'KeyK', + '0x0026': 'KeyL', + '0x0027': 'Semicolon', + '0x0028': 'Quote', + '0x0029': 'Backquote', + '0x002A': 'ShiftLeft', + '0x002B': 'Backslash', + '0x002C': 'KeyZ', + '0x002D': 'KeyX', + '0x002E': 'KeyC', + '0x002F': 'KeyV', + '0x0030': 'KeyB', + '0x0031': 'KeyN', + '0x0032': 'KeyM', + '0x0033': 'Comma', + '0x0034': 'Period', + '0x0035': 'Slash', + '0x0036': 'ShiftRight', + '0x0037': 'NumpadMultiply', + '0x0038': 'AltLeft', + '0x0039': 'Space', + '0x003A': 'CapsLock', + '0x003B': 'F1', + '0x003C': 'F2', + '0x003D': 'F3', + '0x003E': 'F4', + '0x003F': 'F5', + '0x0040': 'F6', + '0x0041': 'F7', + '0x0042': 'F8', + '0x0043': 'F9', + '0x0044': 'F10', + '0x0045': 'NumLock', + '0x0046': 'ScrollLock', + '0x0047': 'Numpad7', + '0x0048': 'Numpad8', + '0x0049': 'Numpad9', + '0x004A': 'NumpadSubtract', + '0x004B': 'Numpad4', + '0x004C': 'Numpad5', + '0x004D': 'Numpad6', + '0x004E': 'NumpadAdd', + '0x004F': 'Numpad1', + '0x0050': 'Numpad2', + '0x0051': 'Numpad3', + '0x0052': 'Numpad0', + '0x0053': 'NumpadDecimal', + '0x0056': 'IntlBackslash', + '0x0057': 'F11', + '0x0058': 'F12', + '0x0059': 'IntlRo', + '0x005C': 'Convert', + '0x005D': 'KanaMode', + '0x005E': 'NonConvert', + '0x0060': 'NumpadEnter', + '0x0061': 'ControlRight', + '0x0062': 'NumpadDivide', + '0x0063': 'PrintScreen', + '0x0064': 'AltRight', + '0x0066': 'Home', + '0x0067': 'ArrowUp', + '0x0068': 'PageUp', + '0x0069': 'ArrowLeft', + '0x006A': 'ArrowRight', + '0x006B': 'End', + '0x006C': 'ArrowDown', + '0x006D': 'PageDown', + '0x006E': 'Insert', + '0x006F': 'Delete', + '0x0071': 'VolumeMute', + '0x0072': 'VolumeDown', + '0x0073': 'VolumeUp', + '0x0074': 'Power', + '0x0075': 'NumpadEqual', + '0x0077': 'Pause', + '0x0079': 'NumpadComma', + '0x007A': 'Lang1', + '0x007B': 'Lang2', + '0x007C': 'IntlYen', + '0x007D': 'OSLeft', + '0x007E': 'OSRight', + '0x007F': 'ContextMenu', + '0x0080': 'BrowserStop', + '0x0081': 'Again', + '0x0082': 'Props', + '0x0083': 'Undo', + '0x0084': 'Select', + '0x0085': 'Copy', + '0x0086': 'Open', + '0x0087': 'Paste', + '0x0088': 'Find', + '0x0089': 'Cut', + '0x008A': 'Help', + '0x008E': 'Sleep', + '0x008F': 'WakeUp', + '0x0090': 'LaunchApp1', + '0x009C': 'BrowserFavorites', + '0x009E': 'BrowserBack', + '0x009F': 'BrowserForward', + '0x00A1': 'Eject', + '0x00A3': 'MediaTrackNext', + '0x00A4': 'MediaPlayPause', + '0x00A5': 'MediaTrackPrevious', + '0x00A6': 'MediaStop', + '0x00AD': 'BrowserRefresh', + '0x00B7': 'F13', + '0x00B8': 'F14', + '0x00B9': 'F15', + '0x00BA': 'F16', + '0x00BB': 'F17', + '0x00BC': 'F18', + '0x00BD': 'F19', + '0x00BE': 'F20', + '0x00BF': 'F21', + '0x00C0': 'F22', + '0x00C1': 'F23', + '0x00C2': 'F24', + '0x00D9': 'BrowserSearch', + '0x01D0': 'Fn', }, // There is no code map for blink on Android - blink: null - } -} + blink: null, + }, +}; export const CodeToScanCode: CodeMap = { windows: { blink: {}, - gecko: {} + gecko: {}, }, linux: { gecko: {}, - blink: {} + blink: {}, }, android: { gecko: {}, - blink: null - } + blink: null, + }, }; const mapList: [Record, Record][] = [ @@ -836,13 +836,13 @@ const mapList: [Record, Record][] = [ [ScanCodeToCode.android.gecko, CodeToScanCode.android.gecko], ]; -mapList.forEach(maps => { +mapList.forEach((maps) => { for (const key in maps[0]) { if (Object.prototype.hasOwnProperty.call(maps[0], key)) { maps[1][maps[0][key]] = key; } } -}) +}); const parser = new UAParser(); const parsedUA = parser.getResult(); @@ -851,9 +851,9 @@ const engine = parsedUA.engine.name?.toLowerCase() as EngineName; export const scanCode = function (code: string, targetOs: OS): number { const map = CodeToScanCode[targetOs][engine] || CodeToScanCode.linux.gecko; return parseInt(map[code], 16); -} +}; export const code = function (scanCode: string, targetOs: OS): string { const map = ScanCodeToCode[targetOs][engine] || CodeToScanCode.linux.gecko; return map[scanCode]; -} +}; diff --git a/web-client/iron-remote-gui/src/main.ts b/web-client/iron-remote-gui/src/main.ts index ee9c8ffe..1640ba92 100644 --- a/web-client/iron-remote-gui/src/main.ts +++ b/web-client/iron-remote-gui/src/main.ts @@ -1,9 +1,9 @@ export * as default from './iron-remote-gui.svelte'; -export type {UserInteraction} from './interfaces/UserInteraction'; -export type {ResizeEvent} from './interfaces/ResizeEvent'; -export type {NewSessionInfo} from './interfaces/NewSessionInfo'; -export type {ServerRect} from './interfaces/ServerRect'; -export type {DesktopSize} from './interfaces/DesktopSize'; -export type {SessionEvent} from './interfaces/session-event'; -export type {SessionEventType} from './enums/SessionEventType'; \ No newline at end of file +export type { UserInteraction } from './interfaces/UserInteraction'; +export type { ResizeEvent } from './interfaces/ResizeEvent'; +export type { NewSessionInfo } from './interfaces/NewSessionInfo'; +export type { ServerRect } from './interfaces/ServerRect'; +export type { DesktopSize } from './interfaces/DesktopSize'; +export type { SessionEvent } from './interfaces/session-event'; +export type { SessionEventType } from './enums/SessionEventType'; diff --git a/web-client/iron-remote-gui/src/services/PublicAPI.ts b/web-client/iron-remote-gui/src/services/PublicAPI.ts index 94cb316b..b6507c0b 100644 --- a/web-client/iron-remote-gui/src/services/PublicAPI.ts +++ b/web-client/iron-remote-gui/src/services/PublicAPI.ts @@ -1,11 +1,11 @@ -import {loggingService} from './logging.service'; -import type {NewSessionInfo} from '../interfaces/NewSessionInfo'; -import {SpecialCombination} from '../enums/SpecialCombination'; -import type {WasmBridgeService} from './wasm-bridge.service'; -import type {UserInteraction} from '../interfaces/UserInteraction'; -import type {ScreenScale} from '../enums/ScreenScale'; -import type {Observable} from 'rxjs'; -import type {DesktopSize} from '../interfaces/DesktopSize'; +import { loggingService } from './logging.service'; +import type { NewSessionInfo } from '../interfaces/NewSessionInfo'; +import { SpecialCombination } from '../enums/SpecialCombination'; +import type { WasmBridgeService } from './wasm-bridge.service'; +import type { UserInteraction } from '../interfaces/UserInteraction'; +import type { ScreenScale } from '../enums/ScreenScale'; +import type { Observable } from 'rxjs'; +import type { DesktopSize } from '../interfaces/DesktopSize'; export class PublicAPI { private wasmService: WasmBridgeService; @@ -14,9 +14,27 @@ export class PublicAPI { this.wasmService = wasmService; } - private connect(username: string, password: string, destination: string, proxyAddress: string, serverDomain: string, authToken: string, desktopSize?: DesktopSize, preConnectionBlob?: string): Observable { + private connect( + username: string, + password: string, + destination: string, + proxyAddress: string, + serverDomain: string, + authToken: string, + desktopSize?: DesktopSize, + preConnectionBlob?: string, + ): Observable { loggingService.info('Initializing connection.'); - return this.wasmService.connect(username, password, destination, proxyAddress, serverDomain, authToken, desktopSize, preConnectionBlob); + return this.wasmService.connect( + username, + password, + destination, + proxyAddress, + serverDomain, + authToken, + desktopSize, + preConnectionBlob, + ); } private ctrlAltDel() { @@ -35,8 +53,8 @@ export class PublicAPI { private setScale(scale: ScreenScale) { this.wasmService.setScale(scale); } - - private shutdown() { + + private shutdown() { this.wasmService.shutdown(); } @@ -48,8 +66,7 @@ export class PublicAPI { sessionListener: this.wasmService.sessionObserver, ctrlAltDel: this.ctrlAltDel.bind(this), metaKey: this.metaKey.bind(this), - shutdown: this.shutdown.bind(this) - } + shutdown: this.shutdown.bind(this), + }; } } - diff --git a/web-client/iron-remote-gui/src/services/logging.service.ts b/web-client/iron-remote-gui/src/services/logging.service.ts index ef6d5fd1..dbdb6bc7 100644 --- a/web-client/iron-remote-gui/src/services/logging.service.ts +++ b/web-client/iron-remote-gui/src/services/logging.service.ts @@ -1,12 +1,12 @@ export class LoggingService { verbose: boolean = false; - + info(description: string) { if (this.verbose) { - console.log(description); + console.log(description); } } - + error(description: string, object?: unknown) { if (this.verbose) { console.error(description, object); @@ -14,4 +14,4 @@ } } -export const loggingService = new LoggingService(); \ No newline at end of file +export const loggingService = new LoggingService(); diff --git a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 89e4b129..6d78f8f0 100644 --- a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -1,26 +1,34 @@ -import {BehaviorSubject, from, Observable, of, Subject} from 'rxjs'; -import init, {DesktopSize, DeviceEvent, InputTransaction, ironrdp_init, IronRdpError, Session, SessionBuilder} from '../../../../crates/ironrdp-web/pkg/ironrdp_web'; -import {loggingService} from './logging.service'; -import {catchError, filter, map} from 'rxjs/operators'; -import {scanCode} from '../lib/scancodes'; -import {LogType} from '../enums/LogType'; -import {OS} from '../enums/OS'; -import {ModifierKey} from '../enums/ModifierKey'; -import {LockKey} from '../enums/LockKey'; -import {SessionEventType} from '../enums/SessionEventType'; -import type {NewSessionInfo} from '../interfaces/NewSessionInfo'; -import {SpecialCombination} from '../enums/SpecialCombination'; -import type {ResizeEvent} from '../interfaces/ResizeEvent'; -import {ScreenScale} from '../enums/ScreenScale'; -import type {MousePosition} from '../interfaces/MousePosition'; -import type {SessionEvent} from '../interfaces/session-event'; -import type {DesktopSize as IDesktopSize} from '../interfaces/DesktopSize'; +import { BehaviorSubject, from, Observable, of, Subject } from 'rxjs'; +import init, { + DesktopSize, + DeviceEvent, + InputTransaction, + ironrdp_init, + IronRdpError, + Session, + SessionBuilder, +} from '../../../../crates/ironrdp-web/pkg/ironrdp_web'; +import { loggingService } from './logging.service'; +import { catchError, filter, map } from 'rxjs/operators'; +import { scanCode } from '../lib/scancodes'; +import { LogType } from '../enums/LogType'; +import { OS } from '../enums/OS'; +import { ModifierKey } from '../enums/ModifierKey'; +import { LockKey } from '../enums/LockKey'; +import { SessionEventType } from '../enums/SessionEventType'; +import type { NewSessionInfo } from '../interfaces/NewSessionInfo'; +import { SpecialCombination } from '../enums/SpecialCombination'; +import type { ResizeEvent } from '../interfaces/ResizeEvent'; +import { ScreenScale } from '../enums/ScreenScale'; +import type { MousePosition } from '../interfaces/MousePosition'; +import type { SessionEvent } from '../interfaces/session-event'; +import type { DesktopSize as IDesktopSize } from '../interfaces/DesktopSize'; export class WasmBridgeService { private _resize: Subject = new Subject(); private mousePosition: BehaviorSubject = new BehaviorSubject({ x: 0, - y: 0 + y: 0, }); private changeVisibility: Subject = new Subject(); private sessionEvent: Subject = new Subject(); @@ -82,8 +90,16 @@ export class WasmBridgeService { this.mousePosition.next(position); } - - connect(username: string, password: string, destination: string, proxyAddress: string, serverDomain: string, authToken: string, desktopSize?: IDesktopSize, preConnectionBlob?: string): Observable { + connect( + username: string, + password: string, + destination: string, + proxyAddress: string, + serverDomain: string, + authToken: string, + desktopSize?: IDesktopSize, + preConnectionBlob?: string, + ): Observable { const sessionBuilder = SessionBuilder.new(); sessionBuilder.proxy_address(proxyAddress); sessionBuilder.destination(destination); @@ -114,26 +130,28 @@ export class WasmBridgeService { catchError((err: IronRdpError) => { this.raiseSessionEvent({ type: SessionEventType.ERROR, - data: err + data: err, }); return of(err); }), filter(isSession), map((session: Session) => { - from(session.run()).pipe( - catchError(err => { - this.setVisibility(false); - this.raiseSessionEvent({ - type: SessionEventType.ERROR, - data: err.backtrace() - }); - this.raiseSessionEvent({ - type: SessionEventType.TERMINATED, - data: 'Session was terminated.' - }); - return of(err); - }), - ).subscribe(); + from(session.run()) + .pipe( + catchError((err) => { + this.setVisibility(false); + this.raiseSessionEvent({ + type: SessionEventType.ERROR, + data: err.backtrace(), + }); + this.raiseSessionEvent({ + type: SessionEventType.TERMINATED, + data: 'Session was terminated.', + }); + return of(err); + }), + ) + .subscribe(); return session; }), map((session: Session) => { @@ -141,17 +159,17 @@ export class WasmBridgeService { this.session = session; this._resize.next({ desktop_size: session.desktop_size(), - session_id: 0 + session_id: 0, }); this.raiseSessionEvent({ type: SessionEventType.STARTED, - data: 'Session started' + data: 'Session started', }); return { session_id: 0, initial_desktop_size: session.desktop_size(), - websocket_port: 0 - } + websocket_port: 0, + }; }), ); } @@ -167,14 +185,12 @@ export class WasmBridgeService { } } - mouseWheel(event: WheelEvent) { const vertical = event.deltaY !== 0; const rotation = vertical ? event.deltaY : event.deltaX; this.doTransactionFromDeviceEvents([DeviceEvent.new_wheel_rotations(vertical, -rotation)]); } - setVisibility(state: boolean) { this.changeVisibility.next(state); } @@ -234,7 +250,12 @@ export class WasmBridgeService { const syncScrollLockActive = evt.getModifierState(LockKey.SCROLL_LOCK); const syncKanaModeActive = evt.getModifierState(LockKey.KANA_MODE); - this.session?.synchronize_lock_keys(syncScrollLockActive, syncNumsLockActive, syncCapsLockActive, syncKanaModeActive); + this.session?.synchronize_lock_keys( + syncScrollLockActive, + syncNumsLockActive, + syncCapsLockActive, + syncKanaModeActive, + ); } private raiseSessionEvent(event: SessionEvent) { @@ -253,7 +274,7 @@ export class WasmBridgeService { private doTransactionFromDeviceEvents(deviceEvents: DeviceEvent[]) { const transaction = InputTransaction.new(); - deviceEvents.forEach(event => transaction.add_event(event)); + deviceEvents.forEach((event) => transaction.add_event(event)); this.session?.apply_inputs(transaction); } diff --git a/web-client/iron-remote-gui/svelte.config.js b/web-client/iron-remote-gui/svelte.config.js index fb1bfdb4..f704aeb9 100644 --- a/web-client/iron-remote-gui/svelte.config.js +++ b/web-client/iron-remote-gui/svelte.config.js @@ -1,10 +1,10 @@ -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; export default { - // Consult https://svelte.dev/docs#compile-time-svelte-preprocess - // for more information about preprocessors - compilerOptions: { - customElement: true - }, - preprocess: vitePreprocess(), -} + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + compilerOptions: { + customElement: true, + }, + preprocess: vitePreprocess(), +}; diff --git a/web-client/iron-remote-gui/tsconfig.json b/web-client/iron-remote-gui/tsconfig.json index 4ec11596..ece0f751 100644 --- a/web-client/iron-remote-gui/tsconfig.json +++ b/web-client/iron-remote-gui/tsconfig.json @@ -14,7 +14,7 @@ "allowJs": false, "checkJs": false, "isolatedModules": true, - "strict": true, + "strict": true, "strictNullChecks": true, "noImplicitAny": true }, diff --git a/web-client/iron-remote-gui/vite.config.ts b/web-client/iron-remote-gui/vite.config.ts index 186b9725..fbb31b59 100644 --- a/web-client/iron-remote-gui/vite.config.ts +++ b/web-client/iron-remote-gui/vite.config.ts @@ -1,22 +1,22 @@ -import { defineConfig } from 'vite' -import { svelte } from '@sveltejs/vite-plugin-svelte' -import wasm from "vite-plugin-wasm"; -import topLevelAwait from "vite-plugin-top-level-await"; -import dtsPlugin from "vite-plugin-dts"; +import { defineConfig } from 'vite'; +import { svelte } from '@sveltejs/vite-plugin-svelte'; +import wasm from 'vite-plugin-wasm'; +import topLevelAwait from 'vite-plugin-top-level-await'; +import dtsPlugin from 'vite-plugin-dts'; // https://vitejs.dev/config/ export default defineConfig({ - build: { - lib: { - entry: './src/main.ts', - name: 'IronRemoteGui', - formats: ["umd", "es"], - } - }, - server: { - fs: { - strict: false - } - }, - plugins: [svelte(), wasm(), topLevelAwait(), dtsPlugin()], -}) + build: { + lib: { + entry: './src/main.ts', + name: 'IronRemoteGui', + formats: ['umd', 'es'], + }, + }, + server: { + fs: { + strict: false, + }, + }, + plugins: [svelte(), wasm(), topLevelAwait(), dtsPlugin()], +}); diff --git a/web-client/iron-svelte-client/.eslintrc.yaml b/web-client/iron-svelte-client/.eslintrc.yaml index 705947d6..e278b81f 100644 --- a/web-client/iron-svelte-client/.eslintrc.yaml +++ b/web-client/iron-svelte-client/.eslintrc.yaml @@ -12,31 +12,31 @@ root: true plugins: - - "@typescript-eslint" + - '@typescript-eslint' - 'html' extends: - - "eslint:recommended" - - "plugin:@typescript-eslint/recommended" - - "plugin:svelte/prettier" # Turns off rules that may conflict with Prettier - - "plugin:prettier/recommended" + - 'eslint:recommended' + - 'plugin:@typescript-eslint/recommended' + - 'plugin:svelte/prettier' # Turns off rules that may conflict with Prettier + - 'plugin:prettier/recommended' -parser: "@typescript-eslint/parser" +parser: '@typescript-eslint/parser' parserOptions: project: ./tsconfig.json sourceType: module ecmaVersion: 2020 extraFileExtensions: - - ".svelte" + - '.svelte' ignorePatterns: - - "*.cjs" + - '*.cjs' overrides: - - files: "*.svelte" + - files: '*.svelte' parser: svelte-eslint-parser parserOptions: - parser: "@typescript-eslint/parser" + parser: '@typescript-eslint/parser' env: browser: true @@ -45,10 +45,10 @@ env: rules: strict: 2 - "@typescript-eslint/no-unused-vars": - - "error" + '@typescript-eslint/no-unused-vars': + - 'error' - argsIgnorePattern: '^_' - "@typescript-eslint/strict-boolean-expressions": + '@typescript-eslint/strict-boolean-expressions': - 2 - allowString: false allowNumber: false diff --git a/web-client/iron-svelte-client/README.md b/web-client/iron-svelte-client/README.md index 4084054d..2da3e22b 100644 --- a/web-client/iron-svelte-client/README.md +++ b/web-client/iron-svelte-client/README.md @@ -97,7 +97,7 @@ $ New-DGatewayToken -Type ASSOCIATION -PrivateKeyFile -Destin First, run `npm install` in the [iron-remote-gui](../iron-remote-gui/) folder, and then `npm install` in [iron-svelte-client](./) folder. -You can then start the dev server with either: +You can then start the dev server with either: - `npm run dev` - Runs only the final application. - `npm run dev-all` - Builds WASM module and `iron-remote-gui` prior to starting the dev server. diff --git a/web-client/iron-svelte-client/package.json b/web-client/iron-svelte-client/package.json index 70155993..6d046491 100644 --- a/web-client/iron-svelte-client/package.json +++ b/web-client/iron-svelte-client/package.json @@ -11,14 +11,11 @@ "build": "npm run pre-build && vite build", "build-no-wasm": "npm run pre-build-no-wasm && vite build", "preview": "vite preview", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "npm run lint:prettier && npm run lint:eslint", "lint:prettier": "prettier . --check", "lint:eslint": "eslint src/**", - "format": "prettier . --write ." }, "devDependencies": { diff --git a/web-client/iron-svelte-client/pre-build.js b/web-client/iron-svelte-client/pre-build.js index c359bbde..4fce0188 100644 --- a/web-client/iron-svelte-client/pre-build.js +++ b/web-client/iron-svelte-client/pre-build.js @@ -1,7 +1,7 @@ import * as fs from 'fs-extra'; -import {spawn} from 'child_process'; +import { spawn } from 'child_process'; import * as path from 'path'; -import {fileURLToPath} from 'url'; +import { fileURLToPath } from 'url'; import { argv } from 'node:process'; const __filename = fileURLToPath(import.meta.url); @@ -18,8 +18,8 @@ argv.forEach((val, index) => { }); let run = async function (command, cwd) { - return new Promise(resolve => { - const buildCommand = spawn(command, {stdio: "pipe", shell: true, cwd: cwd}); + return new Promise((resolve) => { + const buildCommand = spawn(command, { stdio: 'pipe', shell: true, cwd: cwd }); buildCommand.stdout.on('data', (data) => { console.log(`${data}`); @@ -39,7 +39,7 @@ let run = async function (command, cwd) { let copyCoreFiles = async function () { console.log('Copying core files…'); await fs.remove(assetIronRemoteGuiFolder); - return new Promise(resolve => { + return new Promise((resolve) => { let source = '../iron-remote-gui/dist'; let destination = assetIronRemoteGuiFolder; @@ -51,8 +51,8 @@ let copyCoreFiles = async function () { console.log('Core files were copied successfully'); resolve(); }); - }) -} + }); +}; let buildCommand = 'npm run build'; if (noWasm) { diff --git a/web-client/iron-svelte-client/src/app.d.ts b/web-client/iron-svelte-client/src/app.d.ts index 8f4d6389..58c4532e 100644 --- a/web-client/iron-svelte-client/src/app.d.ts +++ b/web-client/iron-svelte-client/src/app.d.ts @@ -2,8 +2,8 @@ // for information about these interfaces // and what to do when importing types declare namespace App { - // interface Locals {} - // interface PageData {} - // interface Error {} - // interface Platform {} + // interface Locals {} + // interface PageData {} + // interface Error {} + // interface Platform {} } diff --git a/web-client/iron-svelte-client/src/app.html b/web-client/iron-svelte-client/src/app.html index be13e048..51f2a220 100644 --- a/web-client/iron-svelte-client/src/app.html +++ b/web-client/iron-svelte-client/src/app.html @@ -1,19 +1,19 @@ - - - - - - - - - - - - - - %sveltekit.head% - - -
        %sveltekit.body%
        - + + + + + + + + + + + + + + %sveltekit.head% + + +
        %sveltekit.body%
        + diff --git a/web-client/iron-svelte-client/src/lib/login/login-store.ts b/web-client/iron-svelte-client/src/lib/login/login-store.ts index 2fbc2cd9..65640861 100644 --- a/web-client/iron-svelte-client/src/lib/login/login-store.ts +++ b/web-client/iron-svelte-client/src/lib/login/login-store.ts @@ -1,3 +1,3 @@ -import {writable} from 'svelte/store'; +import { writable } from 'svelte/store'; -export const showLogin = writable(true); \ No newline at end of file +export const showLogin = writable(true); diff --git a/web-client/iron-svelte-client/src/lib/login/login.css b/web-client/iron-svelte-client/src/lib/login/login.css index 2ceb222a..227b42c7 100644 --- a/web-client/iron-svelte-client/src/lib/login/login.css +++ b/web-client/iron-svelte-client/src/lib/login/login.css @@ -1,4 +1,4 @@ .wrapper { - display: flex; - justify-content: center; -} \ No newline at end of file + display: flex; + justify-content: center; +} diff --git a/web-client/iron-svelte-client/src/lib/login/login.svelte b/web-client/iron-svelte-client/src/lib/login/login.svelte index ac994852..3a40bebf 100644 --- a/web-client/iron-svelte-client/src/lib/login/login.svelte +++ b/web-client/iron-svelte-client/src/lib/login/login.svelte @@ -1,27 +1,28 @@
        -
        +
        -
        +
        Login
        -
        +
        - +
        - +
        - +
        - +
        - +
        - +
        - +
        - +
        - +
        @@ -135,11 +139,10 @@
        -
        +
        - diff --git a/web-client/iron-svelte-client/src/lib/messages/message-store.ts b/web-client/iron-svelte-client/src/lib/messages/message-store.ts index 689c309f..9d6bf0a1 100644 --- a/web-client/iron-svelte-client/src/lib/messages/message-store.ts +++ b/web-client/iron-svelte-client/src/lib/messages/message-store.ts @@ -1,8 +1,8 @@ -import type {Writable} from 'svelte/store'; -import {writable} from 'svelte/store'; +import type { Writable } from 'svelte/store'; +import { writable } from 'svelte/store'; type ToastMessage = { - message: string, - type: 'info' | 'error' + message: string; + type: 'info' | 'error'; }; -export const toast: Writable = writable(); \ No newline at end of file +export const toast: Writable = writable(); diff --git a/web-client/iron-svelte-client/src/lib/messages/message.svelte b/web-client/iron-svelte-client/src/lib/messages/message.svelte index f4ad808c..eb1d727e 100644 --- a/web-client/iron-svelte-client/src/lib/messages/message.svelte +++ b/web-client/iron-svelte-client/src/lib/messages/message.svelte @@ -1,9 +1,9 @@ 
        diff --git a/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index 4c184141..25e35090 100644 --- a/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -1,25 +1,22 @@ +
        -
        - +
        \ No newline at end of file + diff --git a/web-client/iron-svelte-client/src/models/desktop-size.ts b/web-client/iron-svelte-client/src/models/desktop-size.ts index fdf2dbc4..e6f61ea9 100644 --- a/web-client/iron-svelte-client/src/models/desktop-size.ts +++ b/web-client/iron-svelte-client/src/models/desktop-size.ts @@ -1,4 +1,4 @@ export class DesktopSize { - width!: number; - height!: number; + width!: number; + height!: number; } diff --git a/web-client/iron-svelte-client/src/models/rect.ts b/web-client/iron-svelte-client/src/models/rect.ts index a108de34..cbd22a27 100644 --- a/web-client/iron-svelte-client/src/models/rect.ts +++ b/web-client/iron-svelte-client/src/models/rect.ts @@ -1,7 +1,7 @@ export class Rect { - top!: number; - left!: number; - width!: number; - height!: number; - buffer!: ArrayBuffer + top!: number; + left!: number; + width!: number; + height!: number; + buffer!: ArrayBuffer; } diff --git a/web-client/iron-svelte-client/src/models/session.ts b/web-client/iron-svelte-client/src/models/session.ts index 2f9c4f7c..245d8868 100644 --- a/web-client/iron-svelte-client/src/models/session.ts +++ b/web-client/iron-svelte-client/src/models/session.ts @@ -1,16 +1,16 @@ -import {Guid} from "guid-typescript"; -import type { DesktopSize } from "./desktop-size"; +import { Guid } from 'guid-typescript'; +import type { DesktopSize } from './desktop-size'; export class Session { - id:Guid; - sessionId!: number; - name?:string; - active!: boolean; - desktopSize!: DesktopSize; + id: Guid; + sessionId!: number; + name?: string; + active!: boolean; + desktopSize!: DesktopSize; - constructor(name?: string) { - this.id = Guid.create(); - this.name = name; - this.active = false; - } + constructor(name?: string) { + this.id = Guid.create(); + this.name = name; + this.active = false; + } } diff --git a/web-client/iron-svelte-client/src/routes/+page.svelte b/web-client/iron-svelte-client/src/routes/+page.svelte index a78d9f10..cd4ae3fd 100644 --- a/web-client/iron-svelte-client/src/routes/+page.svelte +++ b/web-client/iron-svelte-client/src/routes/+page.svelte @@ -1,4 +1,4 @@ diff --git a/web-client/iron-svelte-client/src/routes/session/+page.svelte b/web-client/iron-svelte-client/src/routes/session/+page.svelte index 89c34571..6c4af2fb 100644 --- a/web-client/iron-svelte-client/src/routes/session/+page.svelte +++ b/web-client/iron-svelte-client/src/routes/session/+page.svelte @@ -2,14 +2,12 @@ import Login from '$lib/login/login.svelte'; import RemoteScreen from '$lib/remote-screen/remote-screen.svelte'; import Message from '$lib/messages/message.svelte'; - import {showLogin} from "$lib/login/login-store"; - + import { showLogin } from '$lib/login/login-store'; {#if $showLogin} - + {/if} - + - diff --git a/web-client/iron-svelte-client/src/services/server-bridge.service.ts b/web-client/iron-svelte-client/src/services/server-bridge.service.ts index 5a18d6c0..f2938f3f 100644 --- a/web-client/iron-svelte-client/src/services/server-bridge.service.ts +++ b/web-client/iron-svelte-client/src/services/server-bridge.service.ts @@ -1,39 +1,38 @@ -import type {Observable} from "rxjs"; +import type { Observable } from 'rxjs'; export interface ServerRect { - free(): void; + free(): void; - clone_buffer(): Uint8Array; + clone_buffer(): Uint8Array; - bottom: number; - left: number; - right: number; - top: number; + bottom: number; + left: number; + right: number; + top: number; } export interface NewSessionInfo { - session_id: number, - websocket_port: number, - initial_desktop_size: DesktopSize, + session_id: number; + websocket_port: number; + initial_desktop_size: DesktopSize; } export interface DesktopSize { - width: number, - height: number + width: number; + height: number; } export interface ResizeEvent { - session_id: number, - desktop_size: DesktopSize, + session_id: number; + desktop_size: DesktopSize; } export abstract class ServerBridgeService { - abstract init(): void; + abstract init(): void; - abstract connect(username: string, password: string, address: string): Observable; + abstract connect(username: string, password: string, address: string): Observable; - abstract resize: Observable; + abstract resize: Observable; - abstract updateMouse(mouse_x: number, mouse_y: number, click_state: number): void; + abstract updateMouse(mouse_x: number, mouse_y: number, click_state: number): void; } - diff --git a/web-client/iron-svelte-client/src/services/session.service.ts b/web-client/iron-svelte-client/src/services/session.service.ts index bd838f0d..e91d6181 100644 --- a/web-client/iron-svelte-client/src/services/session.service.ts +++ b/web-client/iron-svelte-client/src/services/session.service.ts @@ -1,8 +1,8 @@ -import type {Guid} from "guid-typescript"; -import type {Writable} from "svelte/store"; -import {writable} from "svelte/store"; -import {Session} from "../models/session"; -import type {UserInteraction} from '../../static/iron-remote-gui'; +import type { Guid } from 'guid-typescript'; +import type { Writable } from 'svelte/store'; +import { writable } from 'svelte/store'; +import { Session } from '../models/session'; +import type { UserInteraction } from '../../static/iron-remote-gui'; export const userInteractionService: Writable = writable(); export const currentSession: Writable = writable(); @@ -23,14 +23,14 @@ export function getCurrentSession(): Session { } export function setCurrentSessionActive(active: boolean) { - currentSession.update(session => { - session.active = active; - return session; - }); + currentSession.update((session) => { + session.active = active; + return session; + }); } export function setCurrentSessionById(id: Guid) { - const session = sessions.find(session => session.id.equals(id)); + const session = sessions.find((session) => session.id.equals(id)); if (session) { setCurrentSession(session); } @@ -47,7 +47,7 @@ export function addSession(name: string) { export function closeSession(id: Guid) { sessionCounter--; - sessions = sessions.filter(session => !session.id.equals(id)); + sessions = sessions.filter((session) => !session.id.equals(id)); if (sessionCounter == 1) { setCurrentSession(sessions[0]); } diff --git a/web-client/iron-svelte-client/static/theme.css b/web-client/iron-svelte-client/static/theme.css index 7ceb610c..affb877f 100644 --- a/web-client/iron-svelte-client/static/theme.css +++ b/web-client/iron-svelte-client/static/theme.css @@ -1,59 +1,59 @@ body.light { - --primary: #0061a6; - --on-primary: #ffffff; - --primary-container: #d0e4ff; - --on-primary-container: #001d36; - --secondary: #535f70; - --on-secondary: #ffffff; - --secondary-container: #d6e3f7; - --on-secondary-container: #101c2b; - --tertiary: #6b5778; - --on-tertiary: #ffffff; - --tertiary-container: #f3daff; - --on-tertiary-container: #251432; - --error: #ba1b1b; - --error-container: #ffdad4; - --on-error: #ffffff; - --on-error-container: #410001; - --background: #fdfcff; - --on-background: #1b1b1b; - --surface: #fdfcff; - --on-surface: #1b1b1b; - --surface-variant: #dfe2eb; - --on-surface-variant: #42474e; - --outline: #73777f; - --inverse-on-surface: #f1f0f4; - --inverse-surface: #2f3033; - --inverse-primary: #9ccaff; - --shadow: #000000; + --primary: #0061a6; + --on-primary: #ffffff; + --primary-container: #d0e4ff; + --on-primary-container: #001d36; + --secondary: #535f70; + --on-secondary: #ffffff; + --secondary-container: #d6e3f7; + --on-secondary-container: #101c2b; + --tertiary: #6b5778; + --on-tertiary: #ffffff; + --tertiary-container: #f3daff; + --on-tertiary-container: #251432; + --error: #ba1b1b; + --error-container: #ffdad4; + --on-error: #ffffff; + --on-error-container: #410001; + --background: #fdfcff; + --on-background: #1b1b1b; + --surface: #fdfcff; + --on-surface: #1b1b1b; + --surface-variant: #dfe2eb; + --on-surface-variant: #42474e; + --outline: #73777f; + --inverse-on-surface: #f1f0f4; + --inverse-surface: #2f3033; + --inverse-primary: #9ccaff; + --shadow: #000000; } body.dark { - --primary: #9ccaff; - --on-primary: #00325a; - --primary-container: #00497f; - --on-primary-container: #d0e4ff; - --secondary: #bbc8db; - --on-secondary: #253140; - --secondary-container: #3c4858; - --on-secondary-container: #d6e3f7; - --tertiary: #d6bee4; - --on-tertiary: #3b2948; - --tertiary-container: #523f5f; - --on-tertiary-container: #f3daff; - --error: #ffb4a9; - --error-container: #930006; - --on-error: #680003; - --on-error-container: #ffdad4; - --background: #1b1b1b; - --on-background: #e2e2e6; - --surface: #1b1b1b; - --on-surface: #e2e2e6; - --surface-variant: #42474e; - --on-surface-variant: #c3c7d0; - --outline: #8d9199; - --inverse-on-surface: #1b1b1b; - --inverse-surface: #e2e2e6; - --inverse-primary: #0061a6; - --shadow: #000000; + --primary: #9ccaff; + --on-primary: #00325a; + --primary-container: #00497f; + --on-primary-container: #d0e4ff; + --secondary: #bbc8db; + --on-secondary: #253140; + --secondary-container: #3c4858; + --on-secondary-container: #d6e3f7; + --tertiary: #d6bee4; + --on-tertiary: #3b2948; + --tertiary-container: #523f5f; + --on-tertiary-container: #f3daff; + --error: #ffb4a9; + --error-container: #930006; + --on-error: #680003; + --on-error-container: #ffdad4; + --background: #1b1b1b; + --on-background: #e2e2e6; + --surface: #1b1b1b; + --on-surface: #e2e2e6; + --surface-variant: #42474e; + --on-surface-variant: #c3c7d0; + --outline: #8d9199; + --inverse-on-surface: #1b1b1b; + --inverse-surface: #e2e2e6; + --inverse-primary: #0061a6; + --shadow: #000000; } diff --git a/web-client/iron-svelte-client/svelte.config.js b/web-client/iron-svelte-client/svelte.config.js index 0cee8050..2fa36334 100644 --- a/web-client/iron-svelte-client/svelte.config.js +++ b/web-client/iron-svelte-client/svelte.config.js @@ -3,19 +3,19 @@ import preprocess from 'svelte-preprocess'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://github.com/sveltejs/svelte-preprocess - // for more information about preprocessors - preprocess: preprocess(), + // Consult https://github.com/sveltejs/svelte-preprocess + // for more information about preprocessors + preprocess: preprocess(), - kit: { - adapter: adapter({ - pages: 'build/browser', - assets: 'build/browser', - fallback: null, - precompress: false, - strict: true - }) - } + kit: { + adapter: adapter({ + pages: 'build/browser', + assets: 'build/browser', + fallback: null, + precompress: false, + strict: true, + }), + }, }; export default config; diff --git a/web-client/iron-svelte-client/tsconfig.json b/web-client/iron-svelte-client/tsconfig.json index c81fa9e1..55f97d44 100644 --- a/web-client/iron-svelte-client/tsconfig.json +++ b/web-client/iron-svelte-client/tsconfig.json @@ -1,19 +1,19 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": false, - "checkJs": false, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": false, + "checkJs": false, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, "strictNullChecks": true, "noImplicitAny": true - }, - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in } diff --git a/web-client/iron-svelte-client/vite.config.ts b/web-client/iron-svelte-client/vite.config.ts index 149fe6d9..d022ccc5 100644 --- a/web-client/iron-svelte-client/vite.config.ts +++ b/web-client/iron-svelte-client/vite.config.ts @@ -4,8 +4,8 @@ import wasm from 'vite-plugin-wasm'; import topLevelAwait from 'vite-plugin-top-level-await'; const config: UserConfig = { - mode: 'process.env.MODE' || 'development', - plugins: [sveltekit(), wasm(), topLevelAwait()], + mode: 'process.env.MODE' || 'development', + plugins: [sveltekit(), wasm(), topLevelAwait()], }; export default config; From 1d0b5fa1eed1ad6e27ae63919dce138fc0aa1217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Sat, 4 Nov 2023 00:57:12 -0400 Subject: [PATCH 0300/1273] chore: check web client for lints and formatting --- xtask/src/web.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xtask/src/web.rs b/xtask/src/web.rs index dace33bb..7d60dc05 100644 --- a/xtask/src/web.rs +++ b/xtask/src/web.rs @@ -55,6 +55,11 @@ pub fn check(sh: &Shell) -> anyhow::Result<()> { build(sh, true)?; + run_cmd_in!(sh, IRON_REMOTE_GUI_PATH, "{NPM} run check")?; + run_cmd_in!(sh, IRON_REMOTE_GUI_PATH, "{NPM} run lint")?; + run_cmd_in!(sh, IRON_SVELTE_CLIENT_PATH, "{NPM} run check")?; + run_cmd_in!(sh, IRON_SVELTE_CLIENT_PATH, "{NPM} run lint")?; + Ok(()) } @@ -75,10 +80,7 @@ fn build(sh: &Shell, wasm_pack_dev: bool) -> anyhow::Result<()> { run_cmd_in!(sh, IRONRDP_WEB_PATH, "wasm-pack build --target web")?; } - run_cmd_in!(sh, IRON_REMOTE_GUI_PATH, "{NPM} run check")?; run_cmd_in!(sh, IRON_REMOTE_GUI_PATH, "{NPM} run build-alone")?; - - // run_cmd_in!(sh, IRON_SVELTE_CLIENT_PREFIX, "{NPM} run check").run()?; // FIXME: failing on master run_cmd_in!(sh, IRON_SVELTE_CLIENT_PATH, "{NPM} run build-no-wasm")?; Ok(()) From 23777d6b8b9da20f575b861cdc36430a9e1c975a Mon Sep 17 00:00:00 2001 From: "irvingouj@Devolutions" <139169536+irvingoujAtDevolution@users.noreply.github.com> Date: Mon, 6 Nov 2023 12:36:40 -0500 Subject: [PATCH 0301/1273] chore(web-client): relax eslint prettier end of line checks (#264) --- web-client/iron-remote-gui/.eslintrc.yaml | 3 +++ web-client/iron-svelte-client/.eslintrc.yaml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/web-client/iron-remote-gui/.eslintrc.yaml b/web-client/iron-remote-gui/.eslintrc.yaml index c55f1510..d62ea3a2 100644 --- a/web-client/iron-remote-gui/.eslintrc.yaml +++ b/web-client/iron-remote-gui/.eslintrc.yaml @@ -51,3 +51,6 @@ rules: - 2 - allowString: false allowNumber: false + 'prettier/prettier': + - 'error' + - endOfLine: auto diff --git a/web-client/iron-svelte-client/.eslintrc.yaml b/web-client/iron-svelte-client/.eslintrc.yaml index e278b81f..f21ec152 100644 --- a/web-client/iron-svelte-client/.eslintrc.yaml +++ b/web-client/iron-svelte-client/.eslintrc.yaml @@ -52,3 +52,6 @@ rules: - 2 - allowString: false allowNumber: false + 'prettier/prettier': + - 'error' + - endOfLine: auto From a9bc51a10c1a7526ca017bb07769b21bd28eb2c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 23:42:50 +0000 Subject: [PATCH 0302/1273] build(deps): bump js-sys from 0.3.64 to 0.3.65 (#266) Bumps [js-sys](https://github.com/rustwasm/wasm-bindgen) from 0.3.64 to 0.3.65. - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: js-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c35d005..1cf38cee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2040,9 +2040,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -4421,9 +4421,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -4431,9 +4431,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", @@ -4458,9 +4458,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote 1.0.33", "wasm-bindgen-macro-support", @@ -4468,9 +4468,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", @@ -4481,9 +4481,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "wayland-backend" From c24e893a5d587485ebb7d0f6db79a2e180a856ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 23:44:00 +0000 Subject: [PATCH 0303/1273] build(deps): bump the patch group with 3 updates (#265) Bumps the patch group with 3 updates: [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen), [wasm-bindgen-futures](https://github.com/rustwasm/wasm-bindgen) and [web-sys](https://github.com/rustwasm/wasm-bindgen). Updates `wasm-bindgen` from 0.2.87 to 0.2.88 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.87...0.2.88) Updates `wasm-bindgen-futures` from 0.4.37 to 0.4.38 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `web-sys` from 0.3.64 to 0.3.65 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: wasm-bindgen dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: wasm-bindgen-futures dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: web-sys dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1cf38cee..cdb869e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4446,9 +4446,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -4610,9 +4610,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", From c666dc5f031843d6b3223d326cdeb6ca35780881 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 20:45:06 -0500 Subject: [PATCH 0304/1273] build(deps): bump the patch group with 2 updates (#267) Bumps the patch group with 2 updates: [wasm-bindgen-futures](https://github.com/rustwasm/wasm-bindgen) and [web-sys](https://github.com/rustwasm/wasm-bindgen). Updates `wasm-bindgen-futures` from 0.4.37 to 0.4.38 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `web-sys` from 0.3.64 to 0.3.65 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) --- updated-dependencies: - dependency-name: wasm-bindgen-futures dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: web-sys dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 2b501496d92330c5e3b80fa3311d30bfa2f6e195 Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Wed, 8 Nov 2023 13:57:21 +0200 Subject: [PATCH 0305/1273] feat: clipboard support for web client (#259) --- Cargo.lock | 12 + Cargo.toml | 1 + crates/ironrdp-cliprdr-format/Cargo.toml | 23 + crates/ironrdp-cliprdr-format/README.md | 7 + crates/ironrdp-cliprdr-format/src/bitmap.rs | 754 ++++++++++++++++++ crates/ironrdp-cliprdr-format/src/html.rs | 149 ++++ crates/ironrdp-cliprdr-format/src/lib.rs | 4 + crates/ironrdp-cliprdr/src/backend.rs | 12 + crates/ironrdp-cliprdr/src/lib.rs | 2 + crates/ironrdp-cliprdr/src/pdu/format_list.rs | 9 +- crates/ironrdp-fuzzing/Cargo.toml | 3 +- crates/ironrdp-fuzzing/src/oracles/mod.rs | 14 + crates/ironrdp-pdu/src/cursor.rs | 6 + crates/ironrdp-pdu/src/lib.rs | 1 + crates/ironrdp-rdpdr/src/backend/mod.rs | 2 +- crates/ironrdp-rdpdr/src/lib.rs | 3 +- crates/ironrdp-testsuite-core/Cargo.toml | 1 + .../test_data/pdu/clipboard/cf_dib.pdu | Bin 0 -> 340 bytes .../test_data/pdu/clipboard/cf_dibv5.pdu | Bin 0 -> 424 bytes .../test_data/pdu/clipboard/cf_html.pdu | Bin 0 -> 892 bytes .../tests/clipboard/format.rs | 55 ++ .../tests/{clipboard.rs => clipboard/mod.rs} | 14 +- crates/ironrdp-web/Cargo.toml | 3 +- crates/ironrdp-web/src/clipboard/mod.rs | 566 +++++++++++++ .../ironrdp-web/src/clipboard/transaction.rs | 110 +++ crates/ironrdp-web/src/lib.rs | 1 + crates/ironrdp-web/src/session.rs | 146 +++- fuzz/fuzz_targets/cliprdr_format.rs | 7 + .../src/iron-remote-gui.svelte | 399 ++++++++- .../src/services/wasm-bridge.service.ts | 48 +- 30 files changed, 2319 insertions(+), 33 deletions(-) create mode 100644 crates/ironrdp-cliprdr-format/Cargo.toml create mode 100644 crates/ironrdp-cliprdr-format/README.md create mode 100644 crates/ironrdp-cliprdr-format/src/bitmap.rs create mode 100644 crates/ironrdp-cliprdr-format/src/html.rs create mode 100644 crates/ironrdp-cliprdr-format/src/lib.rs create mode 100644 crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dib.pdu create mode 100644 crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dibv5.pdu create mode 100644 crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_html.pdu create mode 100644 crates/ironrdp-testsuite-core/tests/clipboard/format.rs rename crates/ironrdp-testsuite-core/tests/{clipboard.rs => clipboard/mod.rs} (96%) create mode 100644 crates/ironrdp-web/src/clipboard/mod.rs create mode 100644 crates/ironrdp-web/src/clipboard/transaction.rs create mode 100644 fuzz/fuzz_targets/cliprdr_format.rs diff --git a/Cargo.lock b/Cargo.lock index cdb869e8..812da4b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1763,6 +1763,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "ironrdp-cliprdr-format" +version = "0.1.0" +dependencies = [ + "ironrdp-pdu", + "png", + "thiserror", +] + [[package]] name = "ironrdp-cliprdr-native" version = "0.1.0" @@ -1816,6 +1825,7 @@ version = "0.0.0" dependencies = [ "arbitrary", "ironrdp-cliprdr", + "ironrdp-cliprdr-format", "ironrdp-graphics", "ironrdp-pdu", "ironrdp-rdpdr", @@ -1952,6 +1962,7 @@ dependencies = [ "expect-test", "hex", "ironrdp-cliprdr", + "ironrdp-cliprdr-format", "ironrdp-connector", "ironrdp-fuzzing", "ironrdp-graphics", @@ -1999,6 +2010,7 @@ dependencies = [ "gloo-net", "gloo-timers", "ironrdp", + "ironrdp-cliprdr-format", "ironrdp-futures", "ironrdp-rdcleanpath", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 78f7aa05..6ffb7432 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,7 @@ ironrdp-async = { version = "0.1", path = "crates/ironrdp-async" } ironrdp-blocking = { version = "0.1", path = "crates/ironrdp-blocking" } ironrdp-cliprdr = { version = "0.1", path = "crates/ironrdp-cliprdr" } ironrdp-cliprdr-native = { version = "0.1", path = "crates/ironrdp-cliprdr-native" } +ironrdp-cliprdr-format = { version = "0.1", path = "crates/ironrdp-cliprdr-format" } ironrdp-connector = { version = "0.1", path = "crates/ironrdp-connector" } ironrdp-dvc = { version = "0.1", path = "crates/ironrdp-dvc" } ironrdp-error = { version = "0.1", path = "crates/ironrdp-error" } diff --git a/crates/ironrdp-cliprdr-format/Cargo.toml b/crates/ironrdp-cliprdr-format/Cargo.toml new file mode 100644 index 00000000..a03eff21 --- /dev/null +++ b/crates/ironrdp-cliprdr-format/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "ironrdp-cliprdr-format" +version = "0.1.0" +readme = "README.md" +description = "CLIPRDR format conversion library" +edition.workspace = true +license.workspace = true + +homepage.workspace = true +repository.workspace = true +authors.workspace = true +keywords.workspace = true +categories.workspace = true + +[lib] +doctest = false +test = false + +[dependencies] +ironrdp-pdu.workspace = true +thiserror.workspace = true + +png = "0.17" \ No newline at end of file diff --git a/crates/ironrdp-cliprdr-format/README.md b/crates/ironrdp-cliprdr-format/README.md new file mode 100644 index 00000000..9666d87f --- /dev/null +++ b/crates/ironrdp-cliprdr-format/README.md @@ -0,0 +1,7 @@ +# IronRDP CLIPRDR formats decoding/encoding library + +This Library provides the conversion logic between RDP-specific clipboard formats and +widely used formats like PNG for images, plain string for HTML etc. + +### INVARIANTS +- This crate expects the target machine's pointer size (usize) to be equal or greater than 32bits \ No newline at end of file diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs new file mode 100644 index 00000000..ecc01f76 --- /dev/null +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -0,0 +1,754 @@ +use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_pdu::{cast_int, ensure_fixed_part_size, invalid_message_err, PduDecode, PduEncode, PduResult}; +use thiserror::Error; + +/// Maximum size of PNG image that could be placed on the clipboard. +const MAX_BUFFER_SIZE: usize = 64 * 1024 * 1024; // 64 MB + +#[derive(Debug, Error)] +pub enum BitmapError { + #[error("Invalid bitmap header")] + InvalidHeader(ironrdp_pdu::PduError), + #[error("Unsupported bitmap: {0}")] + Unsupported(&'static str), + #[error("One of bitmap's dimensions is invalid")] + InvalidSize, + #[error("Buffer size required for allocation is too big")] + BufferTooBig, + #[error("Image width is too big")] + WidthTooBig, + #[error("Image height is too big")] + HeightTooBig, + #[error("PNG encoding error")] + PngEncode(#[from] png::EncodingError), + #[error("PNG decoding error")] + PngDecode(#[from] png::DecodingError), +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +struct BitmapCompression(u32); + +#[allow(dead_code)] +impl BitmapCompression { + const RGB: Self = Self(0x0000); + const RLE8: Self = Self(0x0001); + const RLE4: Self = Self(0x0002); + const BITFIELDS: Self = Self(0x0003); + const JPEG: Self = Self(0x0004); + const PNG: Self = Self(0x0005); + const CMYK: Self = Self(0x000B); + const CMYKRLE8: Self = Self(0x000C); + const CMYKRLE4: Self = Self(0x000D); +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +struct ColorSpace(u32); + +#[allow(dead_code)] +impl ColorSpace { + const CALIBRATED_RGB: Self = Self(0x00000000); + const SRGB: Self = Self(0x73524742); + const WINDOWS: Self = Self(0x57696E20); + const PROFILE_LINKED: Self = Self(0x4C494E4B); + const PROFILE_EMBEDDED: Self = Self(0x4D424544); +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +struct BitmapIntent(u32); + +#[allow(dead_code)] +impl BitmapIntent { + const LCS_GM_ABS_COLORIMETRIC: Self = Self(0x00000008); + const LCS_GM_BUSINESS: Self = Self(0x00000001); + const LCS_GM_GRAPHICS: Self = Self(0x00000002); + const LCS_GM_IMAGES: Self = Self(0x00000004); +} + +type Fxpt2Dot30 = u32; // (LONG) + +#[derive(Default)] +struct Ciexyz { + x: Fxpt2Dot30, + y: Fxpt2Dot30, + z: Fxpt2Dot30, +} + +#[derive(Default)] +struct CiexyzTriple { + red: Ciexyz, + green: Ciexyz, + blue: Ciexyz, +} + +impl CiexyzTriple { + const NAME: &str = "CIEXYZTRIPLE"; + const FIXED_PART_SIZE: usize = 4 * 3 * 3; // 4(LONG) * 3(xyz) * 3(red, green, blue) +} + +impl<'a> PduDecode<'a> for CiexyzTriple { + fn decode(src: &mut ReadCursor<'a>) -> PduResult { + ensure_fixed_part_size!(in: src); + + let red = Ciexyz { + x: src.read_u32(), + y: src.read_u32(), + z: src.read_u32(), + }; + + let green = Ciexyz { + x: src.read_u32(), + y: src.read_u32(), + z: src.read_u32(), + }; + + let blue = Ciexyz { + x: src.read_u32(), + y: src.read_u32(), + z: src.read_u32(), + }; + + Ok(Self { red, green, blue }) + } +} + +impl PduEncode for CiexyzTriple { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { + ensure_fixed_part_size!(in: dst); + + dst.write_u32(self.red.x); + dst.write_u32(self.red.y); + dst.write_u32(self.red.z); + + dst.write_u32(self.green.x); + dst.write_u32(self.green.y); + dst.write_u32(self.green.z); + + dst.write_u32(self.blue.x); + dst.write_u32(self.blue.y); + dst.write_u32(self.blue.z); + + Ok(()) + } + + fn name(&self) -> &'static str { + Self::NAME + } + + fn size(&self) -> usize { + Self::FIXED_PART_SIZE + } +} + +/// Header used in `CF_DIB` formats, part of [BITMAPINFO] +/// +/// We don't use the optional `bmiColors` field, because it is only relevant for bitmaps with +/// bpp < 24, which are not supported yet, therefore only fixed part of the header is implemented. +/// +/// INVARIANT: `width` and `height` magnitudes are less than or equal to `u16::MAX`. +/// INVARIANT: `bit_count` is less than or equal to `32`. +/// +/// [BITMAPINFO]: https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapinfo +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +struct BitmapInfoHeader { + width: i32, + height: i32, + bit_count: u16, + compression: BitmapCompression, + size_image: u32, + x_pels_per_meter: i32, + y_pels_per_meter: i32, + clr_used: u32, + clr_important: u32, +} + +impl BitmapInfoHeader { + const FIXED_PART_SIZE: usize = 4 // biSize (DWORD) + + 4 // biWidth (LONG) + + 4 // biHeight (LONG) + + 2 // biPlanes (WORD) + + 2 // biBitCount (WORD) + + 4 // biCompression (DWORD) + + 4 // biSizeImage (DWORD) + + 4 // biXPelsPerMeter (LONG) + + 4 // biYPelsPerMeter (LONG) + + 4 // biClrUsed (DWORD) + + 4; // biClrImportant (DWORD) + + const NAME: &str = "BITMAPINFOHEADER"; + + fn validate_invariants(&self) -> PduResult<()> { + check_invariant(self.width.abs() <= u16::MAX.into()) + .ok_or_else(|| invalid_message_err!("biWidth", "width is too big"))?; + check_invariant(self.height.abs() <= u16::MAX.into()) + .ok_or_else(|| invalid_message_err!("biHeight", "height is too big"))?; + check_invariant(self.bit_count <= 32).ok_or_else(|| invalid_message_err!("biBitCount", "invalid bit count"))?; + + Ok(()) + } + + fn encode_with_size(&self, dst: &mut WriteCursor<'_>, size: u32) -> PduResult<()> { + ensure_fixed_part_size!(in: dst); + + self.validate_invariants()?; + + dst.write_u32(size); + dst.write_i32(self.width); + dst.write_i32(self.height); + dst.write_u16(1); // biPlanes + dst.write_u16(self.bit_count); + dst.write_u32(self.compression.0); + dst.write_u32(self.size_image); + dst.write_i32(self.x_pels_per_meter); + dst.write_i32(self.y_pels_per_meter); + dst.write_u32(self.clr_used); + dst.write_u32(self.clr_important); + + Ok(()) + } + + fn decode_with_size(src: &mut ReadCursor<'_>) -> PduResult<(Self, u32)> { + ensure_fixed_part_size!(in: src); + + let size = src.read_u32(); + + let width = src.read_i32(); + let height = src.read_i32(); + let planes = src.read_u16(); + if planes != 1 { + return Err(invalid_message_err!("biPlanes", "invalid planes count")); + } + let bit_count = src.read_u16(); + let compression = BitmapCompression(src.read_u32()); + let size_image = src.read_u32(); + let x_pels_per_meter = src.read_i32(); + let y_pels_per_meter = src.read_i32(); + let clr_used = src.read_u32(); + let clr_important = src.read_u32(); + + let header = Self { + width, + height, + bit_count, + compression, + size_image, + x_pels_per_meter, + y_pels_per_meter, + clr_used, + clr_important, + }; + + header.validate_invariants()?; + + Ok((header, size)) + } + + fn width(&self) -> u16 { + // Cast is safe, invariant is checked in `encode_with_size` and `decode_with_size`. + u16::try_from(self.width.abs()).unwrap() + } + + fn height(&self) -> u16 { + // Cast is safe, invariant is checked in `encode_with_size` and `decode_with_size`. + u16::try_from(self.height.abs()).unwrap() + } + + fn flip_vertically(&self) -> bool { + self.height >= 0 + } +} + +impl PduEncode for BitmapInfoHeader { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { + let size = cast_int!("biSize", Self::FIXED_PART_SIZE)?; + self.encode_with_size(dst, size) + } + + fn name(&self) -> &'static str { + Self::NAME + } + + fn size(&self) -> usize { + Self::FIXED_PART_SIZE + } +} + +impl<'a> PduDecode<'a> for BitmapInfoHeader { + fn decode(src: &mut ReadCursor<'a>) -> PduResult { + let (header, size) = Self::decode_with_size(src)?; + let size: usize = cast_int!("biSize", size)?; + + if size != Self::FIXED_PART_SIZE { + return Err(invalid_message_err!("biSize", "invalid V1 bitmap info header size")); + } + + Ok(header) + } +} + +/// Header used in `CF_DIBV5` formats, defined as [BITMAPV5HEADER] +/// +/// [BITMAPV5HEADER]: https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapv5header +struct BitmapV5Header { + header_v1: BitmapInfoHeader, + red_mask: u32, + green_mask: u32, + blue_mask: u32, + alpha_mask: u32, + color_space: ColorSpace, + endpoints: CiexyzTriple, + gamma_red: u32, + gamma_green: u32, + gamma_blue: u32, + intent: BitmapIntent, + profile_data: u32, + profile_size: u32, +} + +impl BitmapV5Header { + const FIXED_PART_SIZE: usize = BitmapInfoHeader::FIXED_PART_SIZE // BITMAPV5HEADER + + 4 // bV5RedMask (DWORD) + + 4 // bV5GreenMask (DWORD) + + 4 // bV5BlueMask (DWORD) + + 4 // bV5AlphaMask (DWORD) + + 4 // bV5CSType (DWORD) + + CiexyzTriple::FIXED_PART_SIZE // bV5Endpoints (CIEXYZTRIPLE) + + 4 // bV5GammaRed (DWORD) + + 4 // bV5GammaGreen (DWORD) + + 4 // bV5GammaBlue (DWORD) + + 4 // bV5Intent (DWORD) + + 4 // bV5ProfileData (DWORD) + + 4 // bV5ProfileSize (DWORD) + + 4; // bV5Reserved (DWORD) + + const NAME: &str = "BITMAPV5HEADER"; +} + +impl PduEncode for BitmapV5Header { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { + ensure_fixed_part_size!(in: dst); + + let size = cast_int!("biSize", Self::FIXED_PART_SIZE)?; + self.header_v1.encode_with_size(dst, size)?; + + dst.write_u32(self.red_mask); + dst.write_u32(self.green_mask); + dst.write_u32(self.blue_mask); + dst.write_u32(self.alpha_mask); + dst.write_u32(self.color_space.0); + self.endpoints.encode(dst)?; + dst.write_u32(self.gamma_red); + dst.write_u32(self.gamma_green); + dst.write_u32(self.gamma_blue); + dst.write_u32(self.intent.0); + dst.write_u32(self.profile_data); + dst.write_u32(self.profile_size); + dst.write_u32(0); + + Ok(()) + } + + fn name(&self) -> &'static str { + Self::NAME + } + + fn size(&self) -> usize { + Self::FIXED_PART_SIZE + } +} + +impl<'a> PduDecode<'a> for BitmapV5Header { + fn decode(src: &mut ReadCursor<'a>) -> PduResult { + ensure_fixed_part_size!(in: src); + + let (header_v1, size) = BitmapInfoHeader::decode_with_size(src)?; + let size: usize = cast_int!("biSize", size)?; + + if size != Self::FIXED_PART_SIZE { + return Err(invalid_message_err!("biSize", "invalid V5 bitmap info header size")); + } + + let red_mask = src.read_u32(); + let green_mask = src.read_u32(); + let blue_mask = src.read_u32(); + let alpha_mask = src.read_u32(); + let color_space_type = ColorSpace(src.read_u32()); + let endpoints = CiexyzTriple::decode(src)?; + let gamma_red = src.read_u32(); + let gamma_green = src.read_u32(); + let gamma_blue = src.read_u32(); + let intent = BitmapIntent(src.read_u32()); + let profile_data = src.read_u32(); + let profile_size = src.read_u32(); + let _reserved = src.read_u32(); + + Ok(Self { + header_v1, + red_mask, + green_mask, + blue_mask, + alpha_mask, + color_space: color_space_type, + endpoints, + gamma_red, + gamma_green, + gamma_blue, + intent, + profile_data, + profile_size, + }) + } +} + +fn validate_v1_header(header: &BitmapInfoHeader) -> Result<(), BitmapError> { + if header.width < 0 { + return Err(BitmapError::Unsupported("negative width")); + } + + if header.width == 0 || header.height == 0 { + return Err(BitmapError::InvalidSize); + } + + // In the modern world bitmaps with bpp < 24 are rare, and it is even more rare for the bitmaps + // which are placed on the clipboard as DIBs, therefore we could safely skip the support for + // such bitmaps. + const SUPPORTED_BIT_COUNT: &[u16] = &[24, 32]; + + if !SUPPORTED_BIT_COUNT.contains(&header.bit_count) { + return Err(BitmapError::Unsupported("unsupported bit count")); + } + + // We support only uncompressed DIB bitmaps as it is the most common case for clipboard-copied + // bitmaps. + const SUPPORTED_COMPRESSION: &[BitmapCompression] = &[BitmapCompression::RGB]; + if !SUPPORTED_COMPRESSION.contains(&header.compression) { + return Err(BitmapError::Unsupported("unsupported compression")); + } + + // This is only relevant for bitmaps with bpp < 24, which are not supported. + if header.clr_used != 0 { + return Err(BitmapError::Unsupported("color table is not supported")); + } + + Ok(()) +} + +fn validate_v5_header(header: &BitmapV5Header) -> Result<(), BitmapError> { + validate_v1_header(&header.header_v1)?; + + const SUPPORTED_COLOR_SPACE: &[ColorSpace] = &[ + ColorSpace::SRGB, + // Assume that Windows color space is sRGB, either way we don't have enough information on + // the clipboard to convert it to other color spaces. + ColorSpace::WINDOWS, + ]; + + if !SUPPORTED_COLOR_SPACE.contains(&header.color_space) { + return Err(BitmapError::Unsupported("not supported color space")); + } + + Ok(()) +} + +struct PngEncoderInput { + frame_buffer: Vec, + width: usize, + height: usize, + color_type: png::ColorType, +} + +/// From MS docs: +/// For uncompressed RGB formats, the minimum stride is always the image width in bytes, rounded +/// up to the nearest DWORD (4 bytes). You can use the following formula to calculate the stride +/// and image size: +/// ``` +/// stride = ((((biWidth * biBitCount) + 31) & ~31) >> 3); +/// biSizeImage = abs(biHeight) * stride; +/// ``` +/// +/// INVARIANT: bit_count <= 32 +#[allow(clippy::arithmetic_side_effects)] +fn bmp_stride(width: u16, bit_count: u16) -> usize { + debug_assert!(bit_count <= 32); + (((usize::from(width) * usize::from(bit_count)) + 31) & !31) >> 3 +} + +fn transform_bitmap( + header: &BitmapInfoHeader, + input: &[u8], + preserve_alpha: bool, +) -> Result { + // If height is positive, DIB is bottom-up, but target PNG format is top-down. + let flip = header.flip_vertically(); + + let width = header.width(); + let height = header.height(); + + let bit_count = header.bit_count; + + let stride = bmp_stride(width, bit_count); + + let input_bytes_per_pixel = usize::from(bit_count / 8); + let color_type = if preserve_alpha { + png::ColorType::Rgba + } else { + png::ColorType::Rgb + }; + + let components = color_type.samples(); + debug_assert!(components <= 4); + + // INVARIANT: height * width * components <= u16::MAX * u16::MAX * 4 < usize::MAX + // This is always true because `components <= 4` is checked above, and width & height + // bounds are validated on PDU encode/decode + #[allow(clippy::arithmetic_side_effects)] + let frame_buffer_len = usize::from(height) * usize::from(width) * components; + + // Prevent allocation of huge frame buffers + check_invariant(frame_buffer_len <= MAX_BUFFER_SIZE).ok_or(BitmapError::BufferTooBig)?; + + let mut frame_buffer = vec![0u8; frame_buffer_len]; + + let mut strides_normal; + let mut strides_reversed; + + let strides: &mut dyn Iterator = if flip { + strides_reversed = input.chunks_exact(stride).rev(); + &mut strides_reversed + } else { + strides_normal = input.chunks_exact(stride); + &mut strides_normal + }; + + // DIB stores color as strided BGRA, PNG require packed RGBA. DIBv1 (CF_DIB) do not have alpha, + // and the fourth byte is always set to 0xFF. DIBv5 (CF_DIBV5) may have alpha, so we should + // preserve it if it is present. + let transform: fn((&mut [u8], &[u8])) = match (header.bit_count, color_type) { + (24 | 32, png::ColorType::Rgb) => |(pixel_out, pixel_in)| { + pixel_out[0] = pixel_in[2]; + pixel_out[1] = pixel_in[1]; + pixel_out[2] = pixel_in[0]; + }, + (24, png::ColorType::Rgba) => |(pixel_out, pixel_in)| { + pixel_out[0] = pixel_in[2]; + pixel_out[1] = pixel_in[1]; + pixel_out[2] = pixel_in[0]; + pixel_out[3] = 0xFF; + }, + (32, png::ColorType::Rgba) => |(pixel_out, pixel_in)| { + pixel_out[0] = pixel_in[2]; + pixel_out[1] = pixel_in[1]; + pixel_out[2] = pixel_in[0]; + pixel_out[3] = pixel_in[3]; + }, + _ => unreachable!("possible values are restricted by header validation and logic above"), + }; + + // INVARIANT: width * components <= u16::MAX * 4 < usize::MAX + // + // + #[allow(clippy::arithmetic_side_effects)] + let dst_chunk_size = usize::from(width) * components; + + frame_buffer + .chunks_exact_mut(dst_chunk_size) + .zip(strides) + .for_each(|(row, stride)| { + let input = stride.chunks_exact(input_bytes_per_pixel); + row.chunks_exact_mut(components).zip(input).for_each(transform); + }); + + Ok(PngEncoderInput { + frame_buffer, + width: width.into(), + height: height.into(), + color_type, + }) +} + +fn encode_png(input: PngEncoderInput) -> Result, BitmapError> { + let mut output: Vec = Vec::new(); + + let width: u32 = cast_int!("PNG encode", "width", input.width).unwrap(); + let height: u32 = cast_int!("PNG encode", "height", input.height).unwrap(); + + let mut encoder = png::Encoder::new(&mut output, width, height); + encoder.set_color(input.color_type); + encoder.set_depth(png::BitDepth::Eight); + + let mut writer = encoder.write_header()?; + writer.write_image_data(&input.frame_buffer)?; + writer.finish()?; + + Ok(output) +} + +/// Convert `CF_DIB` to PNG. +pub fn dib_to_png(input: &[u8]) -> Result, BitmapError> { + let mut src = ReadCursor::new(input); + let header = BitmapInfoHeader::decode(&mut src).map_err(BitmapError::InvalidHeader)?; + + validate_v1_header(&header)?; + + let png_inputs = transform_bitmap(&header, src.remaining(), false)?; + encode_png(png_inputs) +} + +/// Convert `CF_DIB` to PNG. +pub fn dibv5_to_png(input: &[u8]) -> Result, BitmapError> { + let mut src = ReadCursor::new(input); + let header = BitmapV5Header::decode(&mut src).map_err(BitmapError::InvalidHeader)?; + + validate_v5_header(&header)?; + + let png_inputs = transform_bitmap(&header.header_v1, src.remaining(), true)?; + encode_png(png_inputs) +} + +fn transform_png(info: png::OutputInfo, input_buffer: Vec) -> Result<(BitmapInfoHeader, Vec), BitmapError> { + let no_alpha = info.color_type != png::ColorType::Rgba; + + let stride = bmp_stride( + cast_int!("BMP stride", "biWidth", info.width).map_err(|_| BitmapError::InvalidSize)?, + 32, + ); + + let width_unsigned: u16 = u16::try_from(info.width).map_err(|_| BitmapError::WidthTooBig)?; + let height_unsigned: u16 = u16::try_from(info.height).map_err(|_| BitmapError::HeightTooBig)?; + + // INVARIANT: stride * height_unsigned <= usize::MAX. + // + // This never overflows, because stride can't be greater than `width_unsigned * 4`, + // and `width_unsigned * height_unsigned * 4` is guaranteed to be lesser or equal + // to `usize::MAX`. + #[allow(clippy::arithmetic_side_effects)] + let image_size: usize = stride * usize::from(height_unsigned); + + let header = BitmapInfoHeader { + width: width_unsigned.into(), + height: height_unsigned.into(), + bit_count: 32, + compression: BitmapCompression::RGB, + size_image: cast_int!("DIB header", "biImageSize", image_size).map_err(|_| BitmapError::InvalidSize)?, + x_pels_per_meter: 0, + y_pels_per_meter: 0, + clr_used: 0, + clr_important: 0, + }; + + // Row is in RGBA format + // INVARIANT: width_unsigned * 4 <= u16::MAX * 4 < usize::MAX + // This is always true because width_unsigned is validate above to be less or equal to u16::MAX + #[allow(clippy::arithmetic_side_effects)] + let row_size: usize = 4 * usize::from(width_unsigned); + + let mut output_buffer = vec![0; image_size]; + + let rows = input_buffer.chunks_exact(row_size); + + // Reverse strides to draw image bottom-up + let strides = output_buffer.chunks_exact_mut(stride).rev(); + + let transform: fn((&mut [u8], &[u8])) = if no_alpha { + |(pixel_out, pixel_in)| { + pixel_out[0] = pixel_in[2]; + pixel_out[1] = pixel_in[1]; + pixel_out[2] = pixel_in[0]; + pixel_out[3] = 0xFF; + } + } else { + |(pixel_out, pixel_in)| { + pixel_out[0] = pixel_in[2]; + pixel_out[1] = pixel_in[1]; + pixel_out[2] = pixel_in[0]; + pixel_out[3] = pixel_in[3]; + } + }; + + strides.zip(rows).for_each(|(output, input)| { + let input = input.chunks_exact(4); + output.chunks_exact_mut(4).zip(input).for_each(transform); + }); + + Ok((header, output_buffer)) +} + +fn decode_png(mut input: &[u8]) -> Result<(png::OutputInfo, Vec), BitmapError> { + let mut decoder = png::Decoder::new(&mut input); + + // We need to produce 32-bit DIB, so we should expand the palette to 32-bit RGBA. + decoder.set_transformations(png::Transformations::ALPHA | png::Transformations::EXPAND); + + let mut reader = decoder.read_info()?; + let mut buffer = vec![0; reader.output_buffer_size()]; + let info = reader.next_frame(&mut buffer)?; + buffer.truncate(info.buffer_size()); + + Ok((info, buffer)) +} + +/// Convert PNG to `CF_DIB` format. +pub fn png_to_cf_dib(input: &[u8]) -> Result, BitmapError> { + let (info, input_buffer) = decode_png(input)?; + let (header, output_buffer) = transform_png(info, input_buffer)?; + + let dib_buffer_size = header + .size() + .checked_add(output_buffer.len()) + .ok_or(BitmapError::BufferTooBig)?; + + check_invariant(dib_buffer_size <= MAX_BUFFER_SIZE).ok_or(BitmapError::BufferTooBig)?; + + let mut dib_buffer = vec![0; dib_buffer_size]; + { + let mut dst = WriteCursor::new(&mut dib_buffer); + header.encode(&mut dst).map_err(BitmapError::InvalidHeader)?; + dst.write_slice(&output_buffer); + } + + Ok(dib_buffer) +} + +/// Convert PNG to `CF_DIBV5` format. +pub fn png_to_cf_dibv5(input: &[u8]) -> Result, BitmapError> { + let (info, input_buffer) = decode_png(input)?; + let (header_v1, output_buffer) = transform_png(info, input_buffer)?; + + let header = BitmapV5Header { + header_v1, + // Windows sets these masks for 32-bit bitmaps even if BITFIELDS compression is not used. + red_mask: 0x00FF0000, + green_mask: 0x0000FF00, + blue_mask: 0x000000FF, + alpha_mask: 0xFF000000, + color_space: ColorSpace::SRGB, + endpoints: Default::default(), + gamma_red: 0, + gamma_green: 0, + gamma_blue: 0, + intent: BitmapIntent::LCS_GM_IMAGES, + profile_data: 0, + profile_size: 0, + }; + + let dib_buffer_size = header + .size() + .checked_add(output_buffer.len()) + .ok_or(BitmapError::BufferTooBig)?; + + check_invariant(dib_buffer_size <= MAX_BUFFER_SIZE).ok_or(BitmapError::BufferTooBig)?; + + let mut dib_buffer: Vec = vec![0; dib_buffer_size]; + { + let mut dst = WriteCursor::new(&mut dib_buffer); + header.encode(&mut dst).map_err(BitmapError::InvalidHeader)?; + dst.write_slice(&output_buffer); + } + + Ok(dib_buffer) +} + +#[inline] +#[must_use] +fn check_invariant(condition: bool) -> Option<()> { + condition.then_some(()) +} diff --git a/crates/ironrdp-cliprdr-format/src/html.rs b/crates/ironrdp-cliprdr-format/src/html.rs new file mode 100644 index 00000000..cf45252d --- /dev/null +++ b/crates/ironrdp-cliprdr-format/src/html.rs @@ -0,0 +1,149 @@ +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum HtmlError { + #[error("Invalid CF_HTML format")] + InvalidFormat, + #[error("Invalid UTF-8")] + InvalidUtf8(#[from] std::string::FromUtf8Error), + #[error("Failed to parse integer")] + InvalidInteger(#[from] std::num::ParseIntError), + #[error("Invalid integer conversion")] + InvalidConversion, +} + +/// Convert `CF_HTML` format to plain text. +pub fn cf_html_to_text(input: &[u8]) -> Result { + let mut start_fragment = None; + let mut end_fragment = None; + + let mut headers_cursor = input; + + let fragment = loop { + // Line split logic is manual instead of using BufReader::read_line because + // the line ending could be represented as `\r\n`, `\n` or even `\r`. + const ENDLINE_CONTROLS: &[u8] = &[b'\r', b'\n']; + + // Failed to find the end of the line + let end_pos = match headers_cursor.iter().position(|ch| ENDLINE_CONTROLS.contains(ch)) { + Some(pos) => pos, + None => return Err(HtmlError::InvalidFormat), + }; + + let line = String::from_utf8(headers_cursor[..end_pos].to_vec())?; + + let header_value_to_u32 = |value: &str| value.trim_start_matches('0').parse::(); + + match line.split_once(':') { + Some((key, value)) => match key { + "StartFragment" => { + start_fragment = Some(header_value_to_u32(value)?); + } + "EndFragment" => { + end_fragment = Some(header_value_to_u32(value)?); + } + _ => { + // We are not interested in other headers. + } + }, + None => { + if start_fragment.is_none() || end_fragment.is_none() { + // We reached the end of the headers, but we didn't find the required ones, + // so the format is invalid. + return Err(HtmlError::InvalidFormat); + } + } + }; + + if let (Some(start), Some(end)) = (start_fragment, end_fragment) { + let start = usize::try_from(start).map_err(|_| HtmlError::InvalidConversion)?; + let end = usize::try_from(end).map_err(|_| HtmlError::InvalidConversion)?; + + // Extract fragment from the original buffer. + if start > end || end > input.len() { + return Err(HtmlError::InvalidFormat); + } + + break String::from_utf8(input[start..end].to_vec())?; + } + + // INVARIANT: end_pos < headers_cursor.len() - 1 + // This is safe because we already checked above that the line ends with `\r` or `\n`. + #[allow(clippy::arithmetic_side_effects)] + { + // Go to the next line, skipping any leftover `LF` if CRLF was used. + let has_leftover_lf = end_pos + 1 != headers_cursor.len() + && headers_cursor[end_pos] == b'\r' + && headers_cursor[end_pos + 1] == b'\n'; + + if has_leftover_lf { + headers_cursor = &headers_cursor[end_pos + 2..]; + } else { + headers_cursor = &headers_cursor[end_pos + 1..]; + } + } + }; + + Ok(fragment) +} + +/// Convert plain text HTML to `CF_HTML` format. +pub fn text_to_cf_html(fragment: &str) -> Vec { + let mut buffer = Vec::new(); + + // INVARIANT: key.len() + value.len() + ":\r\n".len() < usize::MAX + // This is always true because we know `key` and `value` used in code below are + // short and their sizes are far from `usize::MAX`. + #[allow(clippy::arithmetic_side_effects)] + let mut write_header = |key: &str, value: &str| { + let size = key.len() + value.len() + ":\r\n".len(); + buffer.reserve(size); + + buffer.extend_from_slice(key.as_bytes()); + buffer.extend_from_slice(b":"); + let value_pos = buffer.len(); + buffer.extend_from_slice(value.as_bytes()); + buffer.extend_from_slice(b"\r\n"); + + value_pos + }; + + const POS_PLACEHOLDER: &str = "0000000000"; + + write_header("Version", "0.9"); + let start_html_placeholder_pos = write_header("StartHTML", POS_PLACEHOLDER); + let end_html_placeholder_pos = write_header("EndHTML", POS_PLACEHOLDER); + let start_fragment_placeholder_pos = write_header("StartFragment", POS_PLACEHOLDER); + let end_fragment_placeholder_pos = write_header("EndFragment", POS_PLACEHOLDER); + + let start_html_pos = buffer.len(); + buffer.extend_from_slice(b"\r\n\r\n"); + + let start_fragment_pos = buffer.len(); + buffer.extend_from_slice(fragment.as_bytes()); + + let end_fragment_pos = buffer.len(); + buffer.extend_from_slice(b"\r\n\r\n"); + + let end_html_pos = buffer.len(); + + let start_html_pos_value = format!("{:0>10}", start_html_pos); + let end_html_pos_value = format!("{:0>10}", end_html_pos); + let start_fragment_pos_value = format!("{:0>10}", start_fragment_pos); + let end_fragment_pos_value = format!("{:0>10}", end_fragment_pos); + + // INVARIANT: placeholder_pos + POS_PLACEHOLDER.len() < buffer.len() + // This is always valid because we know that placeholder is always present in the buffer + // fter the header is written and placeholder is within the bounds of the buffer. + #[allow(clippy::arithmetic_side_effects)] + let mut replace_placeholder = |placeholder_pos: usize, placeholder_value: &str| { + buffer[placeholder_pos..placeholder_pos + POS_PLACEHOLDER.len()].copy_from_slice(placeholder_value.as_bytes()); + }; + + replace_placeholder(start_html_placeholder_pos, &start_html_pos_value); + replace_placeholder(end_html_placeholder_pos, &end_html_pos_value); + replace_placeholder(start_fragment_placeholder_pos, &start_fragment_pos_value); + replace_placeholder(end_fragment_placeholder_pos, &end_fragment_pos_value); + + buffer +} diff --git a/crates/ironrdp-cliprdr-format/src/lib.rs b/crates/ironrdp-cliprdr-format/src/lib.rs new file mode 100644 index 00000000..367adc01 --- /dev/null +++ b/crates/ironrdp-cliprdr-format/src/lib.rs @@ -0,0 +1,4 @@ +#![doc = include_str!("../README.md")] + +pub mod bitmap; +pub mod html; diff --git a/crates/ironrdp-cliprdr/src/backend.rs b/crates/ironrdp-cliprdr/src/backend.rs index 3cab6393..c635973c 100644 --- a/crates/ironrdp-cliprdr/src/backend.rs +++ b/crates/ironrdp-cliprdr/src/backend.rs @@ -70,6 +70,18 @@ pub trait CliprdrBackend: AsAny + std::fmt::Debug + Send { /// client's clipboard prior to `CLIPRDR` SVC initialization. fn on_request_format_list(&mut self); + /// Called by [crate::Cliprdr] when copy sequence is finished. + /// This method is called after remote returns format list response. + /// + /// Usefull for the backend implementations which need to know when remote is ready to paste + /// previously advertised formats from the client. E.g. Web client uses this for + /// Firefox-specific logic to delay sending keyboard key events to prevent pasting the old + /// data from the clipboard. + /// + /// This method has default implementation which does nothing because it is not required for + /// most of the backends. + fn on_format_list_received(&mut self) {} + /// Adjusts [crate::Cliprdr] backend capabilities based on capabilities negotiated with a server. /// /// Called by [crate::Cliprdr] when capability negotiation is finished and server capabilities are diff --git a/crates/ironrdp-cliprdr/src/lib.rs b/crates/ironrdp-cliprdr/src/lib.rs index 91c11949..57a2a181 100644 --- a/crates/ironrdp-cliprdr/src/lib.rs +++ b/crates/ironrdp-cliprdr/src/lib.rs @@ -131,6 +131,8 @@ impl Cliprdr { } else { info!("CLIPRDR(clipboard) Remote has received format list successfully"); } + + self.backend.on_format_list_received(); } FormatListResponse::Fail => { return self.handle_error_transition(ClipboardError::FormatListRejected); diff --git a/crates/ironrdp-cliprdr/src/pdu/format_list.rs b/crates/ironrdp-cliprdr/src/pdu/format_list.rs index dbb9ad46..11770d51 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_list.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_list.rs @@ -14,7 +14,7 @@ use crate::pdu::{ClipboardPduFlags, PartialHeader}; /// [Standard clipboard formats](https://learn.microsoft.com/en-us/windows/win32/dataxchg/standard-clipboard-formats) /// defined by Microsoft are available as constants. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ClipboardFormatId(u32); +pub struct ClipboardFormatId(pub u32); impl ClipboardFormatId { /// Text format. Each line ends with a carriage return/linefeed (CR-LF) combination. @@ -150,6 +150,9 @@ impl ClipboardFormatName { /// data with [`crate::pdu::format_data::PackedFileList`] payload. pub const FILE_LIST: Self = Self::new_static("FileGroupDescriptorW"); + /// Special format defined by Windows to store HTML fragment in clipboard. + pub const HTML: Self = Self::new_static("HTML Format"); + pub fn new(name: impl Into>) -> Self { Self(name.into()) } @@ -167,8 +170,8 @@ impl ClipboardFormatName { /// Represents `CLIPRDR_SHORT_FORMAT_NAME` and `CLIPRDR_LONG_FORMAT_NAME` #[derive(Debug, Clone, PartialEq, Eq)] pub struct ClipboardFormat { - id: ClipboardFormatId, - name: Option, + pub id: ClipboardFormatId, + pub name: Option, } impl ClipboardFormat { diff --git a/crates/ironrdp-fuzzing/Cargo.toml b/crates/ironrdp-fuzzing/Cargo.toml index c18ff24f..0151197b 100644 --- a/crates/ironrdp-fuzzing/Cargo.toml +++ b/crates/ironrdp-fuzzing/Cargo.toml @@ -14,4 +14,5 @@ arbitrary = { version = "1", features = ["derive"] } ironrdp-graphics.workspace = true ironrdp-pdu.workspace = true ironrdp-cliprdr.workspace = true -ironrdp-rdpdr.workspace = true \ No newline at end of file +ironrdp-rdpdr.workspace = true +ironrdp-cliprdr-format.workspace = true \ No newline at end of file diff --git a/crates/ironrdp-fuzzing/src/oracles/mod.rs b/crates/ironrdp-fuzzing/src/oracles/mod.rs index 91919ffa..82b02c28 100644 --- a/crates/ironrdp-fuzzing/src/oracles/mod.rs +++ b/crates/ironrdp-fuzzing/src/oracles/mod.rs @@ -118,3 +118,17 @@ pub fn rdp6_decode_bitmap_stream_to_rgb24(input: &BitmapInput<'_>) { input.height as usize, ); } + +pub fn cliprdr_format(input: &[u8]) { + use ironrdp_cliprdr_format::bitmap::{dib_to_png, dibv5_to_png, png_to_cf_dib, png_to_cf_dibv5}; + use ironrdp_cliprdr_format::html::{cf_html_to_text, text_to_cf_html}; + + let _ = png_to_cf_dib(input); + let _ = png_to_cf_dibv5(input); + + let _ = dib_to_png(input); + let _ = dibv5_to_png(input); + + let _ = cf_html_to_text(input); + let _ = text_to_cf_html(String::from_utf8_lossy(input).as_ref()); +} diff --git a/crates/ironrdp-pdu/src/cursor.rs b/crates/ironrdp-pdu/src/cursor.rs index b14251ba..c8776630 100644 --- a/crates/ironrdp-pdu/src/cursor.rs +++ b/crates/ironrdp-pdu/src/cursor.rs @@ -408,6 +408,12 @@ impl<'a> WriteCursor<'a> { self.write_array(value.to_be_bytes()) } + #[inline] + #[track_caller] + pub fn write_i32(&mut self, value: i32) { + self.write_array(value.to_le_bytes()) + } + #[inline] #[track_caller] pub fn write_u64(&mut self, value: u64) { diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 1fa4b17d..1580bfd2 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -7,6 +7,7 @@ use core::fmt; use cursor::WriteCursor; +#[cfg(feature = "alloc")] use write_buf::WriteBuf; use crate::cursor::ReadCursor; diff --git a/crates/ironrdp-rdpdr/src/backend/mod.rs b/crates/ironrdp-rdpdr/src/backend/mod.rs index 9afd067e..8bb4f686 100644 --- a/crates/ironrdp-rdpdr/src/backend/mod.rs +++ b/crates/ironrdp-rdpdr/src/backend/mod.rs @@ -8,7 +8,7 @@ use ironrdp_svc::AsAny; use crate::pdu::efs::{DeviceControlRequest, ServerDeviceAnnounceResponse, ServerDriveIoRequest}; use crate::pdu::esc::{ScardCall, ScardIoCtlCode}; -/// OS-specific device redirection backend inteface. +/// OS-specific device redirection backend interface. pub trait RdpdrBackend: AsAny + fmt::Debug + Send { fn handle_server_device_announce_response(&mut self, pdu: ServerDeviceAnnounceResponse) -> PduResult<()>; fn handle_scard_call(&mut self, req: DeviceControlRequest, call: ScardCall) -> PduResult<()>; diff --git a/crates/ironrdp-rdpdr/src/lib.rs b/crates/ironrdp-rdpdr/src/lib.rs index 67420fd4..18424e26 100644 --- a/crates/ironrdp-rdpdr/src/lib.rs +++ b/crates/ironrdp-rdpdr/src/lib.rs @@ -23,10 +23,9 @@ use pdu::RdpdrPdu; pub mod backend; pub mod pdu; -use crate::pdu::efs::ServerDriveIoRequest; - pub use self::backend::noop::NoopRdpdrBackend; pub use self::backend::RdpdrBackend; +use crate::pdu::efs::ServerDriveIoRequest; /// The RDPDR channel as specified in [\[MS-RDPEFS\]]. /// diff --git a/crates/ironrdp-testsuite-core/Cargo.toml b/crates/ironrdp-testsuite-core/Cargo.toml index 9247f96e..3c25a006 100644 --- a/crates/ironrdp-testsuite-core/Cargo.toml +++ b/crates/ironrdp-testsuite-core/Cargo.toml @@ -25,6 +25,7 @@ paste = "1" png = "0.17" hex = "0.4" ironrdp-cliprdr.workspace = true +ironrdp-cliprdr-format.workspace = true ironrdp-connector.workspace = true ironrdp-fuzzing.workspace = true ironrdp-graphics.workspace = true diff --git a/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dib.pdu b/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dib.pdu new file mode 100644 index 0000000000000000000000000000000000000000..2fd8246bf8d9008b0f950368a6f086f5f0584c0c GIT binary patch literal 340 zcmdO3U|`?}Vpbq#WKaN-3=BGqUW90S9Dphk!| kOcM^hAbl`Qs$Oc?i)<%0H-qG1802Rd8{NM!aS#mx0NK;A=l}o! literal 0 HcmV?d00001 diff --git a/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dibv5.pdu b/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_dibv5.pdu new file mode 100644 index 0000000000000000000000000000000000000000..58bb0306e37b5e177c9aa386f061975df4beaa22 GIT binary patch literal 424 zcmbjmk9VN&%{!(L=Nfo=u+0olzUc^C%y8OBEUFH9UngY*Lc DX<~2E literal 0 HcmV?d00001 diff --git a/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_html.pdu b/crates/ironrdp-testsuite-core/test_data/pdu/clipboard/cf_html.pdu new file mode 100644 index 0000000000000000000000000000000000000000..8500deb0da6cd5631b7c190e20ada357cb274ec3 GIT binary patch literal 892 zcma)5O>f&U4Ba_E{sZe>x`X3*K#Rt3bZPf-Xn~?zdl?2pk(pSCEgCWtBmaK18@m~> z4)MW|$oI%6>gff2W634+*`L0lGB`=Xm{hVFC}T8@w1OP>SdyF>R)=%@KUm|bp*3f>w>fsB*)`~)wOpJ(rf*)?Qbw0qN6xHc z^lNQ!R5b!#tG@x%W}w0t>}4^5A?M_1AWQ9t3z220s&`TxXfHnv4!I@29iTFtS=#Js zu=z4DR?H-K947ND4(H?4B!nKFs8eUU;2mRr>^q1ulonwes9*8#PJ0@O1l8G8Ue1Y0 N#k$ep;i$Lthdnopers").is_err()); + // Out of bounds headers + assert!(cf_html_to_text(b"StartFragment:999\r\nEndFragment:9999\r\nnopers").is_err()); +} + +#[test] +fn test_cf_html_to_text() { + let input = include_bytes!("../../test_data/pdu/clipboard/cf_html.pdu"); + let actual = cf_html_to_text(input).unwrap(); + + // Validate that the output is valid HTML + assert!(actual.starts_with("Remote Desktop Protocol")); + assert!(actual.ends_with("")); + + // Validate roundtrip + let mut cf_html = text_to_cf_html(&actual); + let roundtrip_text_html = cf_html_to_text(&cf_html).unwrap(); + assert_eq!(actual, roundtrip_text_html); + + // Add some padding (CF_HTML is not null-terminated, we need to work with data which is + // potentially padded with arbitrary fill bytes). + cf_html.extend_from_slice(&[0xFFu8; 10]); + + let roundtrip_text_html = cf_html_to_text(&cf_html).unwrap(); + + assert_eq!(actual, roundtrip_text_html); +} diff --git a/crates/ironrdp-testsuite-core/tests/clipboard.rs b/crates/ironrdp-testsuite-core/tests/clipboard/mod.rs similarity index 96% rename from crates/ironrdp-testsuite-core/tests/clipboard.rs rename to crates/ironrdp-testsuite-core/tests/clipboard/mod.rs index f7c9e9b4..a863b4f6 100644 --- a/crates/ironrdp-testsuite-core/tests/clipboard.rs +++ b/crates/ironrdp-testsuite-core/tests/clipboard/mod.rs @@ -1,3 +1,5 @@ +mod format; + use expect_test::expect; use ironrdp_cliprdr::pdu::{ Capabilities, CapabilitySet, ClipboardFormat, ClipboardFormatId, ClipboardFormatName, @@ -135,7 +137,7 @@ encode_decode_test! { #[test] fn client_temp_dir_encode_decode_ms_1() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/client_temp_dir.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/client_temp_dir.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); @@ -154,7 +156,7 @@ fn client_temp_dir_encode_decode_ms_1() { #[test] fn format_list_ms_1() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/format_list.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/format_list.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); @@ -208,7 +210,7 @@ fn format_list_ms_1() { #[test] fn format_list_ms_2() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/format_list_2.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/format_list_2.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); @@ -342,7 +344,7 @@ fn format_list_all_encodings() { #[test] fn metafile_pdu_ms() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/metafile.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/metafile.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); @@ -367,7 +369,7 @@ fn metafile_pdu_ms() { #[test] fn palette_pdu_ms() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/palette.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/palette.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); @@ -393,7 +395,7 @@ fn palette_pdu_ms() { #[test] fn file_list_pdu_ms() { // Test blob from [MS-RDPECLIP] - let input = include_bytes!("../test_data/pdu/clipboard/file_list.pdu"); + let input = include_bytes!("../../test_data/pdu/clipboard/file_list.pdu"); let decoded_pdu: ClipboardPdu = ironrdp_pdu::decode(input).unwrap(); diff --git a/crates/ironrdp-web/Cargo.toml b/crates/ironrdp-web/Cargo.toml index 536bd279..22c81070 100644 --- a/crates/ironrdp-web/Cargo.toml +++ b/crates/ironrdp-web/Cargo.toml @@ -24,7 +24,8 @@ panic_hook = ["dep:console_error_panic_hook"] [dependencies] # Protocols -ironrdp = { workspace = true, features = ["input", "graphics", "dvc"] } +ironrdp = { workspace = true, features = ["input", "graphics", "dvc", "cliprdr", "svc"] } +ironrdp-cliprdr-format = { workspace = true } ironrdp-futures.workspace = true ironrdp-rdcleanpath.workspace = true diff --git a/crates/ironrdp-web/src/clipboard/mod.rs b/crates/ironrdp-web/src/clipboard/mod.rs new file mode 100644 index 00000000..db60696c --- /dev/null +++ b/crates/ironrdp-web/src/clipboard/mod.rs @@ -0,0 +1,566 @@ +//! This module implements browser-based clipboard backend for CLIPRDR SVC + +mod transaction; + +use std::collections::HashMap; + +use futures_channel::mpsc; +use ironrdp::cliprdr::backend::{ClipboardMessage, CliprdrBackend}; +use ironrdp::cliprdr::pdu::{ + ClipboardFormat, ClipboardFormatId, ClipboardFormatName, ClipboardGeneralCapabilityFlags, FileContentsRequest, + FileContentsResponse, FormatDataRequest, FormatDataResponse, LockDataId, +}; +use ironrdp::svc::impl_as_any; +use ironrdp_cliprdr_format::bitmap::{dib_to_png, dibv5_to_png, png_to_cf_dibv5}; +use ironrdp_cliprdr_format::html::{cf_html_to_text, text_to_cf_html}; +pub(crate) use transaction::ClipboardTransaction; +use transaction::{ClipboardContent, ClipboardContentValue}; +use wasm_bindgen::prelude::*; + +use crate::session::RdpInputEvent; + +const MIME_TEXT: &str = "text/plain"; +const MIME_HTML: &str = "text/html"; +const MIME_PNG: &str = "image/png"; + +#[derive(Clone, Copy)] +struct ClientFormatDescriptor { + id: ClipboardFormatId, + name: &'static str, +} + +impl ClientFormatDescriptor { + const fn new(id: ClipboardFormatId, name: &'static str) -> Self { + Self { id, name } + } +} + +impl From for ClipboardFormat { + fn from(descriptor: ClientFormatDescriptor) -> Self { + ClipboardFormat::new(descriptor.id).with_name(ClipboardFormatName::new_static(descriptor.name)) + } +} + +const FORMAT_WIN_HTML_ID: ClipboardFormatId = ClipboardFormatId(0xC001); +const FORMAT_MIME_HTML_ID: ClipboardFormatId = ClipboardFormatId(0xC002); +const FORMAT_PNG_ID: ClipboardFormatId = ClipboardFormatId(0xC003); +const FORMAT_MIME_PNG_ID: ClipboardFormatId = ClipboardFormatId(0xC004); + +const FORMAT_WIN_HTML_NAME: &str = "HTML Format"; +const FORMAT_MIME_HTML_NAME: &str = "text/html"; +const FORMAT_PNG_NAME: &str = "PNG"; +const FORMAT_MIME_PNG_NAME: &str = "image/png"; + +const FORMAT_WIN_HTML: ClientFormatDescriptor = ClientFormatDescriptor::new(FORMAT_WIN_HTML_ID, FORMAT_WIN_HTML_NAME); +const FORMAT_MIME_HTML: ClientFormatDescriptor = + ClientFormatDescriptor::new(FORMAT_MIME_HTML_ID, FORMAT_MIME_HTML_NAME); +const FORMAT_PNG: ClientFormatDescriptor = ClientFormatDescriptor::new(FORMAT_PNG_ID, FORMAT_PNG_NAME); +const FORMAT_MIME_PNG: ClientFormatDescriptor = ClientFormatDescriptor::new(FORMAT_MIME_PNG_ID, FORMAT_MIME_PNG_NAME); + +/// Message proxy used to send clipboard-related messages to the application main event loop +#[derive(Debug, Clone)] +pub(crate) struct WasmClipboardMessageProxy { + tx: mpsc::UnboundedSender, +} + +impl WasmClipboardMessageProxy { + pub(crate) fn new(tx: mpsc::UnboundedSender) -> Self { + Self { tx } + } + + /// Send messages which require action on CLIPRDR SVC + pub(crate) fn send_cliprdr_message(&self, message: ClipboardMessage) { + if self.tx.unbounded_send(RdpInputEvent::Cliprdr(message)).is_err() { + error!("Failed to send os clipboard message, receiver is closed"); + } + } + + /// Send messages which require action on wasm clipboard backend + pub(crate) fn send_backend_message(&self, message: WasmClipboardBackendMessage) { + if self + .tx + .unbounded_send(RdpInputEvent::ClipboardBackend(message)) + .is_err() + { + error!("Failed to send os clipboard message, receiver is closed"); + } + } +} + +/// Messages sent by the JS code or CLIPRDR to the backend implementation. +#[derive(Debug)] +pub(crate) enum WasmClipboardBackendMessage { + LocalClipboardChanged(ClipboardTransaction), + RemoteDataRequest(ClipboardFormatId), + + RemoteClipboardChanged(Vec), + RemoteDataResponse(FormatDataResponse<'static>), + + FormatListReceived, + ForceClipboardUpdate, +} + +/// Clipboard backend implementation for web. This object should be created once per session and +/// kept alive until session is terminated. +pub(crate) struct WasmClipboard { + local_clipboard: Option, + remote_clipborad: ClipboardTransaction, + + remote_mapping: HashMap, + remote_formats_to_read: Vec, + + proxy: WasmClipboardMessageProxy, + js_callbacks: JsClipboardCallbacks, +} + +/// Callbacks, required to interact with JS code from within the backend. +pub(crate) struct JsClipboardCallbacks { + pub(crate) on_remote_clipboard_changed: js_sys::Function, + pub(crate) on_remote_received_format_list: Option, + pub(crate) on_force_clipboard_update: Option, +} + +impl WasmClipboard { + pub(crate) fn new(message_proxy: WasmClipboardMessageProxy, js_callbacks: JsClipboardCallbacks) -> Self { + Self { + local_clipboard: None, + remote_clipborad: ClipboardTransaction::new(), + proxy: message_proxy, + js_callbacks, + + remote_mapping: HashMap::new(), + remote_formats_to_read: Vec::new(), + } + } + + /// Returns CLIPRDR backend implementation + pub(crate) fn backend(&self) -> WasmClipboardBackend { + WasmClipboardBackend { + proxy: self.proxy.clone(), + } + } + + fn handle_local_clipboard_changed( + &mut self, + transaction: ClipboardTransaction, + ) -> anyhow::Result> { + let mut formats = Vec::new(); + transaction.contents().iter().for_each(|content| { + match content.mime_type() { + MIME_TEXT => formats.push(ClipboardFormat::new(ClipboardFormatId::CF_UNICODETEXT)), + MIME_HTML => { + formats.extend([ + // We don't provide CF_TEXT, because it could be synthesized from + // CF_UNICODETEXT on the remote side. + ClipboardFormat::new(ClipboardFormatId::CF_UNICODETEXT), + FORMAT_WIN_HTML.into(), + FORMAT_MIME_HTML.into(), + ]); + } + MIME_PNG => { + formats.extend([ + // We don't provide CF_DIB, because it could be synthesized from + // CF_DIBV5 on the remote side. + ClipboardFormat::new(ClipboardFormatId::CF_DIBV5), + FORMAT_PNG.into(), + FORMAT_MIME_PNG.into(), + ]); + } + _ => {} + }; + }); + + self.local_clipboard = Some(transaction); + + trace!("Sending clipboard formats: {:?}", formats); + + Ok(formats) + } + + fn process_remote_data_request( + &mut self, + format: ClipboardFormatId, + ) -> anyhow::Result> { + // Transaction is not set, bail! + let transaction = if let Some(transaction) = &self.local_clipboard { + transaction + } else { + anyhow::bail!("Local clipboard is empty"); + }; + + let find_content_by_mime = |mime: &str| { + transaction + .contents() + .iter() + .find(|content| content.mime_type() == mime) + }; + + let find_text_content_by_mime = |mime: &str| { + find_content_by_mime(mime) + .and_then(|content| { + if let ClipboardContentValue::Text(text) = content.value() { + Some(text.as_str()) + } else { + None + } + }) + .ok_or_else(|| anyhow::anyhow!("Failed to find `{mime}` in client clipboard")) + }; + + let find_binary_content_by_mime = |mime: &str| { + find_content_by_mime(mime) + .and_then(|content| { + if let ClipboardContentValue::Binary(binary) = content.value() { + Some(binary.as_slice()) + } else { + None + } + }) + .ok_or_else(|| anyhow::anyhow!("Failed to find `{mime}` in client clipboard")) + }; + + let response = match format { + ClipboardFormatId::CF_UNICODETEXT => { + let text = find_text_content_by_mime(MIME_TEXT)?; + FormatDataResponse::new_unicode_string(text) + } + FORMAT_WIN_HTML_ID => { + let text = find_text_content_by_mime(MIME_HTML)?; + let buffer = text_to_cf_html(text); + FormatDataResponse::new_data(buffer) + } + FORMAT_MIME_HTML_ID => { + let text = find_text_content_by_mime(MIME_HTML)?; + FormatDataResponse::new_string(text) + } + ClipboardFormatId::CF_DIBV5 => { + let png_data = find_binary_content_by_mime(MIME_PNG)?; + let buffer = png_to_cf_dibv5(png_data)?; + FormatDataResponse::new_data(buffer) + } + FORMAT_MIME_PNG_ID | FORMAT_PNG_ID => { + let png_data = find_binary_content_by_mime(MIME_PNG)?; + FormatDataResponse::new_data(png_data) + } + _ => { + anyhow::bail!("Unknown format id requested: {}", format.value()); + } + }; + + Ok(response.into_owned()) + } + + fn process_remote_clipboard_changed( + &mut self, + formats: Vec, + ) -> anyhow::Result> { + self.remote_formats_to_read.clear(); + self.remote_clipborad.clear(); + + let is_format_name_equal = |format: &ClipboardFormat, name: &str| { + format + .name() + .map(|actual: &ClipboardFormatName| actual.value() == name) + .unwrap_or(false) + }; + + for format in &formats { + if format.id().is_registrered() { + if let Some(name) = format.name() { + const SUPPORTED_FORMATS: &[&str] = &[ + FORMAT_WIN_HTML.name, + FORMAT_MIME_HTML.name, + FORMAT_PNG.name, + FORMAT_MIME_PNG.name, + ]; + + if !SUPPORTED_FORMATS.iter().any(|supported| *supported == name.value()) { + // Unknown format + continue; + } + + // Skip inferior formats (e.g. raw image/png is better than encoded CF_DIB; + // text/html is better than CF_HTML). + // + // Web client do not have delay-rendering, so we should skip formats that + // are not relevant for transferred over the network. + let skip_win_html = is_format_name_equal(format, FORMAT_WIN_HTML.name) + && formats + .iter() + .any(|format| is_format_name_equal(format, FORMAT_MIME_HTML.name)); + + let skip_mime_png = is_format_name_equal(format, FORMAT_MIME_PNG.name) + && formats + .iter() + .any(|format| is_format_name_equal(format, FORMAT_PNG.name)); + + if skip_win_html || skip_mime_png { + continue; + } + + self.remote_mapping.insert(format.id(), name.value().to_owned()); + } + } else { + const SUPPORTED_FORMATS: &[ClipboardFormatId] = &[ + ClipboardFormatId::CF_UNICODETEXT, + ClipboardFormatId::CF_DIB, + ClipboardFormatId::CF_DIBV5, + ]; + + if !SUPPORTED_FORMATS.iter().any(|supported| *supported == format.id()) { + // Unknown format + continue; + } + + let skip_dib = format.id() == ClipboardFormatId::CF_DIB + && formats.iter().any(|format| { + format.id() == ClipboardFormatId::CF_DIBV5 + || is_format_name_equal(format, FORMAT_MIME_PNG.name) + || is_format_name_equal(format, FORMAT_PNG.name) + }); + + let skip_dibv5 = format.id() == ClipboardFormatId::CF_DIBV5 + && formats.iter().any(|format| { + is_format_name_equal(format, FORMAT_MIME_PNG.name) + || is_format_name_equal(format, FORMAT_PNG.name) + }); + + if skip_dib || skip_dibv5 { + continue; + } + } + + self.remote_formats_to_read.push(format.id()); + } + + Ok(self.remote_formats_to_read.last().copied()) + } + + fn process_remote_data_response(&mut self, response: FormatDataResponse<'_>) -> anyhow::Result<()> { + let pending_format = match self.remote_formats_to_read.pop() { + Some(format) => format, + None => { + warn!("Remote returned format data, but no formats were requested"); + return Ok(()); + } + }; + + if response.is_error() { + // Format is not available anymore + return Ok(()); + } + + let content = match pending_format { + ClipboardFormatId::CF_UNICODETEXT => match response.to_unicode_string() { + Ok(text) => Some(ClipboardContent::new_text(MIME_TEXT, &text)), + Err(err) => { + error!("CF_UNICODETEXT decode error: {}", err); + None + } + }, + ClipboardFormatId::CF_DIB => match dib_to_png(response.data()) { + Ok(png) => Some(ClipboardContent::new_binary(MIME_PNG, &png)), + Err(err) => { + warn!("DIB decode error: {}", err); + None + } + }, + ClipboardFormatId::CF_DIBV5 => match dibv5_to_png(response.data()) { + Ok(png) => Some(ClipboardContent::new_binary(MIME_PNG, &png)), + Err(err) => { + warn!("DIBv5 decode error: {}", err); + None + } + }, + registered => { + let format_name = self.remote_mapping.get(®istered).map(|s| s.as_str()); + match format_name { + Some(FORMAT_WIN_HTML_NAME) => match cf_html_to_text(response.data()) { + Ok(text) => Some(ClipboardContent::new_text(MIME_HTML, &text)), + Err(err) => { + warn!("CF_HTML decode error: {}", err); + None + } + }, + Some(FORMAT_MIME_HTML_NAME) => match response.to_string() { + Ok(text) => Some(ClipboardContent::new_text(MIME_HTML, &text)), + Err(err) => { + warn!("text/html decode error: {}", err); + None + } + }, + Some(FORMAT_MIME_PNG_NAME) | Some(FORMAT_PNG_NAME) => { + Some(ClipboardContent::new_binary(MIME_PNG, response.data())) + } + _ => { + // Not supported format + None + } + } + } + }; + + if let Some(content) = content { + self.remote_clipborad.add_content(content); + } + + // Request next format + if let Some(format) = self.remote_formats_to_read.last() { + // Request next format + self.proxy + .send_cliprdr_message(ClipboardMessage::SendInitiatePaste(*format)); + } else { + // All formats were read, send clipboard to JS + let transaction = std::mem::take(&mut self.remote_clipborad); + if transaction.is_empty() { + return Ok(()); + } + // Set clipboard when all formats were read + self.js_callbacks + .on_remote_clipboard_changed + .call1(&JsValue::NULL, &JsValue::from(transaction)) + .expect("Failed to call JS callback"); + } + Ok(()) + } + + /// Process backend event. This method should be called from the main event loop. + pub(crate) fn process_event(&mut self, event: WasmClipboardBackendMessage) -> anyhow::Result<()> { + match event { + WasmClipboardBackendMessage::LocalClipboardChanged(transaction) => { + match self.handle_local_clipboard_changed(transaction) { + Ok(formats) => { + self.proxy + .send_cliprdr_message(ClipboardMessage::SendInitiateCopy(formats)); + } + Err(err) => { + // Not a critical error, we could skip single clipboard update + error!("Failed to handle local clipboard change: {}", err); + } + } + } + WasmClipboardBackendMessage::RemoteDataRequest(format) => { + let message = match self.process_remote_data_request(format) { + Ok(message) => message, + Err(err) => { + // Not a critical error, but we should notify remote about error + error!("Failed to process remote data request: {}", err); + FormatDataResponse::new_error() + } + }; + self.proxy + .send_cliprdr_message(ClipboardMessage::SendFormatData(message)); + } + WasmClipboardBackendMessage::RemoteClipboardChanged(formats) => { + match self.process_remote_clipboard_changed(formats) { + Ok(Some(format)) => { + // We start querying formats right away. This is due absence of + // delay-rendering in web client. + self.proxy + .send_cliprdr_message(ClipboardMessage::SendInitiatePaste(format)); + } + Ok(None) => { + // No formats to query + } + Err(err) => { + error!("Failed to process remote clipboard change: {}", err); + } + } + } + WasmClipboardBackendMessage::RemoteDataResponse(formats) => { + match self.process_remote_data_response(formats) { + Ok(()) => {} + Err(err) => { + error!("Failed to process remote data response: {}", err); + } + } + } + WasmClipboardBackendMessage::FormatListReceived => { + if let Some(callback) = self.js_callbacks.on_remote_received_format_list.as_mut() { + callback.call0(&JsValue::NULL).expect("Failed to call JS callback"); + } + } + WasmClipboardBackendMessage::ForceClipboardUpdate => { + if let Some(callback) = self.js_callbacks.on_force_clipboard_update.as_mut() { + callback.call0(&JsValue::NULL).expect("Failed to call JS callback"); + } else { + // If no initial clipboard callback was set, send empty format list instead + return self.process_event(WasmClipboardBackendMessage::LocalClipboardChanged( + ClipboardTransaction::new(), + )); + } + } + }; + + Ok(()) + } +} + +/// CLIPRDR backend implementation for web. This object could be instantiated via [`WasmClipboard`] +/// to pass it to CLIPRDR SVC constructor. +#[derive(Debug)] +pub(crate) struct WasmClipboardBackend { + proxy: WasmClipboardMessageProxy, +} + +impl WasmClipboardBackend { + fn send_event(&self, event: WasmClipboardBackendMessage) { + self.proxy.send_backend_message(event); + } +} + +impl_as_any!(WasmClipboardBackend); + +impl CliprdrBackend for WasmClipboardBackend { + fn temporary_directory(&self) -> &str { + ".cliprdr" + } + + fn client_capabilities(&self) -> ClipboardGeneralCapabilityFlags { + // No additional capabilities yet + ClipboardGeneralCapabilityFlags::empty() + } + + fn on_request_format_list(&mut self) { + // Initial clipboard is assumed to be empty on WASM (TODO: This is only relevant for Firefox?) + self.send_event(WasmClipboardBackendMessage::ForceClipboardUpdate); + } + + fn on_format_list_received(&mut self) { + self.send_event(WasmClipboardBackendMessage::FormatListReceived); + } + + fn on_process_negotiated_capabilities(&mut self, _: ClipboardGeneralCapabilityFlags) { + // No additional capabilities yet + } + + fn on_remote_copy(&mut self, available_formats: &[ClipboardFormat]) { + self.send_event(WasmClipboardBackendMessage::RemoteClipboardChanged( + available_formats.to_vec(), + )); + } + + fn on_format_data_request(&mut self, request: FormatDataRequest) { + self.send_event(WasmClipboardBackendMessage::RemoteDataRequest(request.format)); + } + + fn on_format_data_response(&mut self, response: FormatDataResponse<'_>) { + self.send_event(WasmClipboardBackendMessage::RemoteDataResponse(response.into_owned())); + } + + fn on_file_contents_request(&mut self, _request: FileContentsRequest) { + // File transfer not implemented yet + } + + fn on_file_contents_response(&mut self, _response: FileContentsResponse<'_>) { + // File transfer not implemented yet + } + + fn on_lock(&mut self, _data_id: LockDataId) { + // File transfer not implemented yet + } + + fn on_unlock(&mut self, _data_id: LockDataId) { + // File transfer not implemented yet + } +} diff --git a/crates/ironrdp-web/src/clipboard/transaction.rs b/crates/ironrdp-web/src/clipboard/transaction.rs new file mode 100644 index 00000000..a6d5f921 --- /dev/null +++ b/crates/ironrdp-web/src/clipboard/transaction.rs @@ -0,0 +1,110 @@ +use wasm_bindgen::prelude::*; + +/// Object which represents complete clipboard transaction with multiple MIME types. +#[wasm_bindgen] +#[derive(Debug, Default, Clone)] +pub struct ClipboardTransaction { + contents: Vec, +} + +impl ClipboardTransaction { + pub fn contents(&self) -> &[ClipboardContent] { + &self.contents + } + + pub fn clear(&mut self) { + self.contents.clear(); + } +} + +#[wasm_bindgen] +impl ClipboardTransaction { + pub fn new() -> Self { + Self { contents: Vec::new() } + } + + pub fn add_content(&mut self, content: ClipboardContent) { + self.contents.push(content); + } + + pub fn is_empty(&self) -> bool { + self.contents.is_empty() + } + + #[wasm_bindgen(js_name = content)] + pub fn js_contents(&self) -> js_sys::Array { + js_sys::Array::from_iter( + self.contents + .iter() + .map(|content: &ClipboardContent| JsValue::from(content.clone())), + ) + } +} + +impl FromIterator for ClipboardTransaction { + fn from_iter>(iter: T) -> Self { + Self { + contents: iter.into_iter().collect(), + } + } +} + +#[derive(Debug, Clone)] +pub enum ClipboardContentValue { + Text(String), + Binary(Vec), +} + +impl ClipboardContentValue { + pub fn js_value(&self) -> JsValue { + match self { + ClipboardContentValue::Text(text) => JsValue::from_str(text), + ClipboardContentValue::Binary(binary) => js_sys::Uint8Array::from(binary.as_slice()).into(), + } + } +} + +/// Object which represents single clipboard format represented standard MIME type. +#[wasm_bindgen] +#[derive(Debug, Clone)] +pub struct ClipboardContent { + mime_type: String, + value: ClipboardContentValue, +} + +#[wasm_bindgen] +impl ClipboardContent { + pub fn new_text(mime_type: &str, text: &str) -> Self { + Self { + mime_type: mime_type.into(), + value: ClipboardContentValue::Text(text.to_owned()), + } + } + + pub fn new_binary(mime_type: &str, binary: &[u8]) -> Self { + Self { + mime_type: mime_type.into(), + value: ClipboardContentValue::Binary(binary.to_vec()), + } + } + + #[wasm_bindgen(js_name = mime_type)] + pub fn js_mime_type(&self) -> String { + self.mime_type.clone() + } + + #[wasm_bindgen(js_name = value)] + pub fn js_value(&self) -> JsValue { + self.value.js_value() + } +} + +impl ClipboardContent { + pub fn mime_type(&self) -> &str { + &self.mime_type + } + + pub fn value(&self) -> &ClipboardContentValue { + &self.value + } +} diff --git a/crates/ironrdp-web/src/lib.rs b/crates/ironrdp-web/src/lib.rs index ec4b39bf..1c8a8cfe 100644 --- a/crates/ironrdp-web/src/lib.rs +++ b/crates/ironrdp-web/src/lib.rs @@ -11,6 +11,7 @@ extern crate time as _; extern crate tracing; mod canvas; +mod clipboard; mod error; mod image; mod input; diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index 2c88c8c0..e114554d 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -8,6 +8,8 @@ use futures_util::io::{ReadHalf, WriteHalf}; use futures_util::{select, AsyncReadExt as _, AsyncWriteExt as _, FutureExt as _, StreamExt as _}; use gloo_net::websocket; use gloo_net::websocket::futures::WebSocket; +use ironrdp::cliprdr::backend::ClipboardMessage; +use ironrdp::cliprdr::Cliprdr; use ironrdp::connector::{self, ClientConnector, Credentials}; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::pdu::input::fast_path::FastPathInputEvent; @@ -20,12 +22,13 @@ use wasm_bindgen_futures::spawn_local; use web_sys::HtmlCanvasElement; use crate::canvas::Canvas; +use crate::clipboard::{ClipboardTransaction, WasmClipboard, WasmClipboardBackend, WasmClipboardBackendMessage}; use crate::error::{IronRdpError, IronRdpErrorKind}; use crate::image::extract_partial_image; use crate::input::InputTransaction; use crate::network_client::WasmNetworkClientFactory; use crate::websocket::WebSocketCompat; -use crate::DesktopSize; +use crate::{clipboard, DesktopSize}; const DEFAULT_WIDTH: u16 = 1280; const DEFAULT_HEIGHT: u16 = 720; @@ -50,6 +53,9 @@ struct SessionBuilderInner { hide_pointer_callback_context: Option, show_pointer_callback: Option, show_pointer_callback_context: Option, + remote_clipboard_changed_callback: Option, + remote_received_format_list_callback: Option, + force_clipboard_update_callback: Option, } impl Default for SessionBuilderInner { @@ -73,6 +79,9 @@ impl Default for SessionBuilderInner { hide_pointer_callback_context: None, show_pointer_callback: None, show_pointer_callback_context: None, + remote_clipboard_changed_callback: None, + remote_received_format_list_callback: None, + force_clipboard_update_callback: None, } } } @@ -165,6 +174,24 @@ impl SessionBuilder { self.clone() } + /// Optional + pub fn remote_clipboard_changed_callback(&self, callback: js_sys::Function) -> SessionBuilder { + self.0.borrow_mut().remote_clipboard_changed_callback = Some(callback); + self.clone() + } + + /// Optional + pub fn remote_received_format_list_callback(&self, callback: js_sys::Function) -> SessionBuilder { + self.0.borrow_mut().remote_received_format_list_callback = Some(callback); + self.clone() + } + + /// Optional + pub fn force_clipboard_update_callback(&self, callback: js_sys::Function) -> SessionBuilder { + self.0.borrow_mut().force_clipboard_update_callback = Some(callback); + self.clone() + } + pub async fn connect(&self) -> Result { let ( username, @@ -181,6 +208,9 @@ impl SessionBuilder { hide_pointer_callback_context, show_pointer_callback, show_pointer_callback_context, + remote_clipboard_changed_callback, + remote_received_format_list_callback, + force_clipboard_update_callback, ); { @@ -213,12 +243,28 @@ impl SessionBuilder { .show_pointer_callback_context .clone() .context("show_pointer_callback_context missing")?; + remote_clipboard_changed_callback = inner.remote_clipboard_changed_callback.clone(); + remote_received_format_list_callback = inner.remote_received_format_list_callback.clone(); + force_clipboard_update_callback = inner.force_clipboard_update_callback.clone(); } info!("Connect to RDP host"); let config = build_config(username, password, server_domain, client_name, desktop_size); + let (input_events_tx, input_events_rx) = mpsc::unbounded(); + + let clipboard = remote_clipboard_changed_callback.clone().map(|callback| { + WasmClipboard::new( + clipboard::WasmClipboardMessageProxy::new(input_events_tx.clone()), + clipboard::JsClipboardCallbacks { + on_remote_clipboard_changed: callback, + on_remote_received_format_list: remote_received_format_list_callback, + on_force_clipboard_update: force_clipboard_update_callback, + }, + ) + }); + let ws = WebSocket::open(&proxy_address).context("Couldn’t open WebSocket")?; // NOTE: ideally, when the WebSocket can’t be opened, the above call should fail with details on why is that @@ -247,7 +293,15 @@ impl SessionBuilder { let ws = WebSocketCompat::new(ws); - let (connection_result, ws) = connect(ws, config, auth_token, destination, pcb).await?; + let (connection_result, ws) = connect( + ws, + config, + auth_token, + destination, + pcb, + clipboard.as_ref().map(|clip| clip.backend()), + ) + .await?; info!("Connected!"); @@ -255,8 +309,6 @@ impl SessionBuilder { let (writer_tx, writer_rx) = mpsc::unbounded(); - let (input_events_tx, input_events_rx) = mpsc::unbounded(); - spawn_local(writer_task(writer_rx, rdp_writer)); Ok(Session { @@ -274,18 +326,26 @@ impl SessionBuilder { input_events_rx: RefCell::new(Some(input_events_rx)), rdp_reader: RefCell::new(Some(rdp_reader)), connection_result: RefCell::new(Some(connection_result)), + clipboard: RefCell::new(Some(clipboard)), }) } } -type FastPathInputEvents = smallvec::SmallVec<[FastPathInputEvent; 2]>; +pub(crate) type FastPathInputEvents = smallvec::SmallVec<[FastPathInputEvent; 2]>; + +#[derive(Debug)] +pub(crate) enum RdpInputEvent { + Cliprdr(ClipboardMessage), + ClipboardBackend(WasmClipboardBackendMessage), + FastPath(FastPathInputEvents), +} #[wasm_bindgen] pub struct Session { desktop_size: connector::DesktopSize, input_database: RefCell, writer_tx: mpsc::UnboundedSender>, - input_events_tx: mpsc::UnboundedSender, + input_events_tx: mpsc::UnboundedSender, render_canvas: HtmlCanvasElement, hide_pointer_callback: js_sys::Function, @@ -294,9 +354,10 @@ pub struct Session { show_pointer_callback_context: JsValue, // Consumed when `run` is called - input_events_rx: RefCell>>, + input_events_rx: RefCell>>, connection_result: RefCell>, rdp_reader: RefCell>>, + clipboard: RefCell>>, } #[wasm_bindgen] @@ -308,7 +369,7 @@ impl Session { .take() .context("RDP session can be started only once")?; - let mut fastpath_input_events = self + let mut input_events = self .input_events_rx .borrow_mut() .take() @@ -320,6 +381,8 @@ impl Session { .take() .expect("run called only once"); + let mut clipboard = self.clipboard.borrow_mut().take().expect("run called only once"); + let mut framed = ironrdp_futures::SingleThreadedFuturesFramed::new(rdp_reader); debug!("Initialize canvas"); @@ -351,10 +414,54 @@ impl Session { active_stage.process(&mut image, action, &payload)? } - input_events = fastpath_input_events.next() => { - let events = input_events.context("read next fastpath input events")?; + input_events = input_events.next() => { + let event = input_events.context("read next input events")?; - active_stage.process_fastpath_input(&mut image, &events).context("Fast path input events processing")? + match event { + RdpInputEvent::Cliprdr(message) => { + if let Some(cliprdr) = active_stage.get_svc_processor::() { + if let Some(svc_messages) = match message { + ClipboardMessage::SendInitiateCopy(formats) => Some( + cliprdr.initiate_copy(&formats) + .context("CLIPRDR initiate copy")? + ), + ClipboardMessage::SendFormatData(response) => Some( + cliprdr.submit_format_data(response) + .context("CLIPRDR submit format data")? + ), + ClipboardMessage::SendInitiatePaste(format) => Some( + cliprdr.initiate_paste(format) + .context("CLIPRDR initiate paste")? + ), + ClipboardMessage::Error(e) => { + error!("Clipboard backend error: {}", e); + None + } + } { + let frame = active_stage.process_svc_processor_messages(svc_messages)?; + // Send the messages to the server + vec![ActiveStageOutput::ResponseFrame(frame)] + } else { + // No messages to send to the server + Vec::new() + } + } else { + warn!("Clipboard event received, but Cliprdr is not available"); + Vec::new() + } + } + RdpInputEvent::ClipboardBackend(event) => { + if let Some(clipboard) = &mut clipboard { + clipboard.process_event(event)?; + } + // No RDP output frames for backend event processing + Vec::new() + } + RdpInputEvent::FastPath(events) => { + active_stage.process_fastpath_input(&mut image, &events) + .context("Fast path input events processing")? + } + } } }; @@ -417,7 +524,7 @@ impl Session { trace!("Inputs: {inputs:?}"); self.input_events_tx - .unbounded_send(inputs) + .unbounded_send(RdpInputEvent::FastPath(inputs)) .context("Send input events to writer task")?; } @@ -452,6 +559,16 @@ impl Session { // TODO: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 Ok(()) } + + pub async fn on_clipboard_paste(&self, content: ClipboardTransaction) -> Result<(), IronRdpError> { + self.input_events_tx + .unbounded_send(RdpInputEvent::ClipboardBackend( + WasmClipboardBackendMessage::LocalClipboardChanged(content), + )) + .context("Send clipboard backend event")?; + + Ok(()) + } } fn build_config( @@ -522,6 +639,7 @@ async fn connect( proxy_auth_token: String, destination: String, pcb: Option, + clipboard_backend: Option, ) -> Result<(connector::ConnectionResult, WebSocketCompat), IronRdpError> { let mut framed = ironrdp_futures::SingleThreadedFuturesFramed::new(ws); @@ -530,6 +648,10 @@ async fn connect( .with_credssp_network_client(WasmNetworkClientFactory); // .with_static_channel(ironrdp::dvc::Drdynvc::new()); // FIXME: drdynvc is not working + if let Some(clipboard_backend) = clipboard_backend { + connector.attach_static_channel(Cliprdr::new(Box::new(clipboard_backend))); + } + let upgraded = connect_rdcleanpath(&mut framed, &mut connector, destination, proxy_auth_token, pcb).await?; let connection_result = ironrdp_futures::connect_finalize(upgraded, &mut framed, connector).await?; diff --git a/fuzz/fuzz_targets/cliprdr_format.rs b/fuzz/fuzz_targets/cliprdr_format.rs new file mode 100644 index 00000000..375f5495 --- /dev/null +++ b/fuzz/fuzz_targets/cliprdr_format.rs @@ -0,0 +1,7 @@ +#![no_main] + +use libfuzzer_sys::fuzz_target; + +fuzz_target!(|data: &[u8]| { + ironrdp_fuzzing::oracles::cliprdr_format(data); +}); diff --git a/web-client/iron-remote-gui/src/iron-remote-gui.svelte b/web-client/iron-remote-gui/src/iron-remote-gui.svelte index ef97f4d9..d826ab4f 100644 --- a/web-client/iron-remote-gui/src/iron-remote-gui.svelte +++ b/web-client/iron-remote-gui/src/iron-remote-gui.svelte @@ -9,13 +9,14 @@ import type { ResizeEvent } from './interfaces/ResizeEvent'; import { PublicAPI } from './services/PublicAPI'; import { ScreenScale } from './enums/ScreenScale'; + import { ClipboardContent, ClipboardTransaction } from '../../../crates/ironrdp-web/pkg/ironrdp_web'; export let scale = 'real'; export let verbose = 'false'; export let debugwasm: 'OFF' | 'ERROR' | 'WARN' | 'INFO' | 'DEBUG' | 'TRACE' = 'INFO'; export let flexcenter = 'true'; - let isVisible = false; + let isVisible: boolean = false; let capturingInputs = false; let currentComponent = get_current_component(); let canvas: HTMLCanvasElement; @@ -28,12 +29,365 @@ let wasmService = new WasmBridgeService(); let publicAPI = new PublicAPI(wasmService); + // Firefox's clipboard API is very limited, and doesn't support reading from the clipboard + // without changing browser settings via `about:config`. + // + // For firefox, we will use a different approach by marking `screen-wrapper` component + // as `contenteditable=true`, and then using the `onpaste`/`oncopy`/`oncut` events. + let isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + + const CLIPBOARD_MONITORING_INTERVAL = 100; // ms + + let isClipboardApiSupported = false; + let lastClientClipboardItems = new Map(); + let lastClientClipboardTransaction: ClipboardTransaction | null = null; + let lastClipboardMonitorLoopError: Error | null = null; + + /* Firefox-specific BEGIN */ + + // See `ffRemoteClipboardTransaction` variable docs below + const FF_REMOTE_CLIPBOARD_TRANSACTION_SET_RETRY_INTERVAL = 100; // ms + const FF_REMOTE_CLIPBOARD_TRANSACTION_SET_MAX_RETRIES = 30; // 3 seconds (100ms * 30) + // On Firefox, this interval is used to stop delaying the keyboard events if the paste event has + // failed and we haven't received any clipboard data from the remote side. + const FF_LOCAL_CLIPBOARD_COPY_TIMEOUT = 1000; // 1s (For text-only data this should be enough) + + // In Firefox, we need this variable due to fact that `clipboard.writeText()` should only be + // called in scope of user-initiated event processing (e.g. keyboard event), but we receive + // clipboard data from the remote side asynchronously in wasm service callback. therefore we + // set this variable in callback and use its value on the user-initiated copy event. + let ffRemoteClipboardTransaction: ClipboardTransaction | null = null; + // For Firefox we need this variable to perform wait loop for the remote side to finish sending + // clipboard content to the client. + let ffRemoteClipboardTransactionRetriesLeft = 0; + let ffPostponeKeyboardEvents = false; + let ffDelayedKeyboardEvents: KeyboardEvent[] = []; + let ffCnavasFocused = false; + + /* Firefox-specific END */ + + /* Clipboard initialization BEGIN */ + + // Detect if browser supports async Clipboard API + if (!isFirefox && navigator.clipboard != undefined) { + if (navigator.clipboard.read != undefined && navigator.clipboard.write != undefined) { + isClipboardApiSupported = true; + } + } + + if (isFirefox) { + wasmService.setOnRemoteClipboardChanged(ffOnRemoteClipboardChanged); + wasmService.setOnRemoteReceivedFormatList(ffOnRemoteReceivedFormatList); + wasmService.setOnForceClipboardUpdate(onForceClipboardUpdate); + } else if (isClipboardApiSupported) { + wasmService.setOnRemoteClipboardChanged(onRemoteClipboardChanged); + wasmService.setOnForceClipboardUpdate(onForceClipboardUpdate); + + // Start the clipboard monitoring loop + setTimeout(onMonitorClipboard, CLIPBOARD_MONITORING_INTERVAL); + } + + /* Clipboard initialization END */ + + function isCopyKeyboardEvent(evt: KeyboardEvent) { + return ( + (evt.ctrlKey && evt.code === 'KeyC') || + (evt.ctrlKey && evt.code === 'KeyX') || + evt.code == 'Copy' || + evt.code == 'Cut' + ); + } + + function isPasteKeyboardEvent(evt: KeyboardEvent) { + return (evt.ctrlKey && evt.code === 'KeyV') || evt.code == 'Paste'; + } + + // This function is required to covert `ClipboardTransaction` to a object that can be used + // with `ClipboardItem` API. + function clipboardTransactionToRecord(transaction: ClipboardTransaction): Record { + let result = {} as Record; + + for (const item of transaction.content()) { + if (!(item instanceof ClipboardContent)) { + continue; + } + + let mime = item.mime_type(); + let value = new Blob([item.value()], { type: mime }); + result[mime] = value; + } + + return result; + } + + // This callback is required to send initial clipboard state if available. + function onForceClipboardUpdate() { + try { + if (lastClientClipboardTransaction) { + wasmService.onClipboardChanged(lastClientClipboardTransaction); + } else { + wasmService.onClipboardChanged(ClipboardTransaction.new()); + } + } catch (err) { + console.error('Failed to send initial clipboard state: ' + err); + } + } + + // This callback is required to update client clipboard state when remote side has changed. + function onRemoteClipboardChanged(transaction: ClipboardTransaction) { + try { + const mime_formats = clipboardTransactionToRecord(transaction); + const clipboard_item = new ClipboardItem(mime_formats); + navigator.clipboard.write([clipboard_item]); + } catch (err) { + console.error('Failed to set client clipboard: ' + err); + } + } + + // Called periodically to monitor clipboard changes + async function onMonitorClipboard() { + if (!document.hasFocus()) { + setTimeout(onMonitorClipboard, CLIPBOARD_MONITORING_INTERVAL); + return; + } + + try { + var value = await navigator.clipboard.read(); + + // Clipboard is empty + if (value.length == 0) { + return; + } + + // We only support one item at a time + var item = value[0]; + + if (!item.types.some((type) => type.startsWith('text/') || type.startsWith('image/png'))) { + // Unsupported types + return; + } + + var values = new Map(); + var sameValue = true; + + // Saddly, browsers build new `ClipboardItem` object for each `read` call, + // so we can't do reference comparison here :( + // + // For monitoring loop approach we also can't drop this logic, as it will result in + // very frequent network activity. + for (const kind of item.types) { + // Get blob + const blobIsString = kind.startsWith('text/'); + + const blob = await item.getType(kind); + const value = blobIsString ? await blob.text() : new Uint8Array(await blob.arrayBuffer()); + + const is_equal = blobIsString + ? function (a: string | Uint8Array | undefined, b: string | Uint8Array | undefined) { + return a === b; + } + : function (a: string | Uint8Array | undefined, b: string | Uint8Array | undefined) { + if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) { + return false; + } + + return ( + a != undefined && b != undefined && a.length === b.length && a.every((v, i) => v === b[i]) + ); + }; + + const previousValue = lastClientClipboardItems.get(kind); + + if (!is_equal(previousValue, value)) { + // One of mime types has changed, we need to update the clipboard cache + sameValue = false; + } + + values.set(kind, value); + } + + // Clipboard has changed, we need to acknowledge remote side about it. + if (!sameValue) { + lastClientClipboardItems = values; + + let transaction = ClipboardTransaction.new(); + + // Iterate over `Record` type + values.forEach((value: string | Uint8Array, key: string) => { + // skip null/undefined values + if (value == null || value == undefined) { + return; + } + + if (key.startsWith('text/') && typeof value === 'string') { + transaction.add_content(ClipboardContent.new_text(key, value)); + } else if (key.startsWith('image/') && value instanceof Uint8Array) { + transaction.add_content(ClipboardContent.new_binary(key, value)); + } + }); + + if (!transaction.is_empty()) { + lastClientClipboardTransaction = transaction; + wasmService.onClipboardChanged(transaction); + } + } + } catch (err) { + if (err instanceof Error) { + const printError = + lastClipboardMonitorLoopError === null || + lastClipboardMonitorLoopError.toString() !== err.toString(); + // Prevent spamming the console with the same error + if (printError) { + console.error('Clipboard monitoring error: ' + err); + } + lastClipboardMonitorLoopError = err; + } + } finally { + setTimeout(onMonitorClipboard, CLIPBOARD_MONITORING_INTERVAL); + } + } + + /* Firefox-specific BEGIN */ + + function ffOnRemoteReceivedFormatList() { + try { + // We are ready to send delayed Ctrl+V events + ffSimulateDelayedKeyEvents(); + } catch (err) { + console.error('Failed to send delayed keyboard events: ' + err); + } + } + + // Only set variable on callback, the real clipboard update will be performed in keyboard + // callback. (User-initiated event is required for Firefox to allow clipboard write) + function ffOnRemoteClipboardChanged(transaction: ClipboardTransaction) { + ffRemoteClipboardTransaction = transaction; + } + + function ffWaitForRemoteClipboardTransactionSet() { + if (ffRemoteClipboardTransaction) { + try { + let transaction = ffRemoteClipboardTransaction; + ffRemoteClipboardTransaction = null; + for (const content of transaction.content()) { + // Firefox only supports text/plain mime type for clipboard writes :( + if (content.mime_type() === 'text/plain') { + navigator.clipboard.writeText(content.value()); + break; + } + } + } catch (err) { + console.error('Failed to set client clipboard: ' + err); + } + } else if (ffRemoteClipboardTransactionRetriesLeft > 0) { + ffRemoteClipboardTransactionRetriesLeft--; + setTimeout(ffWaitForRemoteClipboardTransactionSet, FF_REMOTE_CLIPBOARD_TRANSACTION_SET_RETRY_INTERVAL); + } + } + + function ffSimulateDelayedKeyEvents() { + if (ffDelayedKeyboardEvents.length > 0) { + for (const evt of ffDelayedKeyboardEvents) { + // simulate consecutive key events + keyboardEvent(evt); + } + ffDelayedKeyboardEvents = []; + } + ffPostponeKeyboardEvents = false; + } + + function ffOnPasteHandler(evt: ClipboardEvent) { + // We don't actually want to paste the clipboard data into the `contenteditable` div. + evt.preventDefault(); + + // `onpaste` events are handled only for Firefox, other browsers we use the clipboard API + // for reading the clipboard. + if (!isFirefox) { + // Prevent processing of the paste event by the browser. + return; + } + + try { + let transaction = ClipboardTransaction.new(); + + if (evt.clipboardData == null) { + return; + } + + for (var clipItem of evt.clipboardData.items) { + let mime = clipItem.type; + + if (mime.startsWith('text/')) { + clipItem.getAsString((str: string) => { + let content = ClipboardContent.new_text(mime, str); + transaction.add_content(content); + + if (!transaction.is_empty()) { + wasmService.onClipboardChanged(transaction); + } + }); + break; + } + + if (mime.startsWith('image/')) { + let file = clipItem.getAsFile(); + if (file == null) { + continue; + } + + file.arrayBuffer().then((buffer: ArrayBuffer) => { + const strict_buffer = new Uint8Array(buffer); + let content = ClipboardContent.new_binary(mime, strict_buffer); + transaction.add_content(content); + + if (!transaction.is_empty()) { + wasmService.onClipboardChanged(transaction); + } + }); + break; + } + } + } catch (err) { + console.error('Failed to update remote clipboard: ' + err); + } + } + + /* Firefox-specific END */ + function initListeners() { serverBridgeListeners(); userInteractionListeners(); - window.addEventListener('keydown', keyboardEvent, false); - window.addEventListener('keyup', keyboardEvent, false); + function captureKeys(evt: KeyboardEvent) { + if (capturingInputs) { + if (ffPostponeKeyboardEvents) { + evt.preventDefault(); + ffDelayedKeyboardEvents.push(evt); + return; + } + + // For Firefox we need to make `onpaste` event still fire even if + // keyboard is being captured. Not capturing `Ctrl + V` should not create any + // side effects, therefore is safe to skip capture for it. + let isFirefoxPaste = isFirefox && isPasteKeyboardEvent(evt); + + if (isFirefoxPaste) { + ffPostponeKeyboardEvents = true; + ffDelayedKeyboardEvents = []; + ffDelayedKeyboardEvents.push(evt); + + // If during the given timeout we weren't able to finish the copy sequence, we need to + // simulate all queued keyboard events. + setTimeout(ffSimulateDelayedKeyEvents, FF_LOCAL_CLIPBOARD_COPY_TIMEOUT); + return; + } + + keyboardEvent(evt); + } + } + + window.addEventListener('keydown', captureKeys, false); + window.addEventListener('keyup', captureKeys, false); } function resetHostStyle() { @@ -208,7 +562,27 @@ } function setMouseButtonState(state: MouseEvent, isDown: boolean) { - wasmService.mouseButtonState(state, isDown); + if (isFirefox) { + let get_canvas_parent = () => { + return currentComponent.shadowRoot.getElementById('renderer').parentElement; + }; + + if (isDown && state.button == 0 && !ffCnavasFocused) { + // Do not capture first mouse down event on Firefox, as we need to transfer focus to the + // canvas first in order to receive paste events. + // wasmService.mouseButtonState(state, isDown, false); + // Focus `contenteditable` element to receive `on_paste` events + get_canvas_parent().focus(); + // Finish the focus sequence on Firefox + ffCnavasFocused = true; + } else { + // This is needed to prevent visible "double click" selection on + // `texteditable` element + get_canvas_parent().blur(); + } + } + + wasmService.mouseButtonState(state, isDown, true); } function mouseWheel(evt: WheelEvent) { @@ -226,7 +600,22 @@ } function keyboardEvent(evt: KeyboardEvent) { + const browserHasClipboardAccess = + navigator.clipboard != undefined && navigator.clipboard.writeText != undefined; + + if (isFirefox && browserHasClipboardAccess && isCopyKeyboardEvent(evt)) { + // Special processing for firefox, as the only way Firefox supports clipboard write is + // only after some user-initiated event (e.g. keyboard event). + // therefore we need to wait here for the clipboard data to be ready. + + ffRemoteClipboardTransactionRetriesLeft = FF_REMOTE_CLIPBOARD_TRANSACTION_SET_MAX_RETRIES; + ffWaitForRemoteClipboardTransactionSet(); + } + wasmService.sendKeyboardEvent(evt); + + // Propagate further + return true; } function getWindowSize() { @@ -275,7 +664,7 @@ class:capturing-inputs={capturingInputs} style={wrapperStyle} > -
        +
        setMouseButtonState(event, true)} diff --git a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 6d78f8f0..9300b34c 100644 --- a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -7,6 +7,7 @@ import init, { IronRdpError, Session, SessionBuilder, + ClipboardTransaction, } from '../../../../crates/ironrdp-web/pkg/ironrdp_web'; import { loggingService } from './logging.service'; import { catchError, filter, map } from 'rxjs/operators'; @@ -24,6 +25,10 @@ import type { MousePosition } from '../interfaces/MousePosition'; import type { SessionEvent } from '../interfaces/session-event'; import type { DesktopSize as IDesktopSize } from '../interfaces/DesktopSize'; +type OnRemoteClipboardChanged = (transaction: ClipboardTransaction) => void; +type OnRemoteReceivedFormatsList = () => void; +type OnForceClipboardUpdate = () => void; + export class WasmBridgeService { private _resize: Subject = new Subject(); private mousePosition: BehaviorSubject = new BehaviorSubject({ @@ -35,6 +40,9 @@ export class WasmBridgeService { private scale: BehaviorSubject = new BehaviorSubject(ScreenScale.Fit as ScreenScale); private canvas?: HTMLCanvasElement; private keyboardActive: boolean = false; + private onRemoteClipboardChanged?: OnRemoteClipboardChanged; + private onRemoteReceivedFormatList?: OnRemoteReceivedFormatsList; + private onForceClipboardUpdate?: OnForceClipboardUpdate; resize: Observable; session?: Session; @@ -56,6 +64,22 @@ export class WasmBridgeService { ironrdp_init(LogType[debug]); } + /// Callback to set the local clipboard content to data received from the remote. + setOnRemoteClipboardChanged(callback: OnRemoteClipboardChanged) { + this.onRemoteClipboardChanged = callback; + } + + /// Callback which is called when the remote sends a list of supported clipboard formats. + setOnRemoteReceivedFormatList(callback: OnRemoteReceivedFormatsList) { + this.onRemoteReceivedFormatList = callback; + } + + /// Callback which is called when the remote requests a forced clipboard update (e.g. on + /// clipboard initialization sequence) + setOnForceClipboardUpdate(callback: OnForceClipboardUpdate) { + this.onForceClipboardUpdate = callback; + } + mouseIn(event: MouseEvent) { this.syncModifier(event); this.keyboardActive = true; @@ -76,8 +100,10 @@ export class WasmBridgeService { this.session?.shutdown(); } - mouseButtonState(event: MouseEvent, isDown: boolean) { - event.preventDefault(); // prevent default behavior (context menu, etc) + mouseButtonState(event: MouseEvent, isDown: boolean, preventDefault: boolean) { + if (preventDefault) { + event.preventDefault(); // prevent default behavior (context menu, etc) + } const mouseFnc = isDown ? DeviceEvent.new_mouse_button_pressed : DeviceEvent.new_mouse_button_released; this.doTransactionFromDeviceEvents([mouseFnc(event.button)]); } @@ -116,6 +142,15 @@ export class WasmBridgeService { if (preConnectionBlob != null) { sessionBuilder.pcb(preConnectionBlob); } + if (this.onRemoteClipboardChanged != null) { + sessionBuilder.remote_clipboard_changed_callback(this.onRemoteClipboardChanged); + } + if (this.onRemoteReceivedFormatList != null) { + sessionBuilder.remote_received_format_list_callback(this.onRemoteReceivedFormatList); + } + if (this.onForceClipboardUpdate != null) { + sessionBuilder.force_clipboard_update_callback(this.onForceClipboardUpdate); + } if (desktopSize != null) { sessionBuilder.desktop_size(DesktopSize.new(desktopSize.width, desktopSize.height)); @@ -203,6 +238,15 @@ export class WasmBridgeService { this.canvas = canvas; } + /// Triggered by the browser when local clipboard is updated. Clipboard backend should + /// cache the content and send it to the server when it is requested. + onClipboardChanged(transaction: ClipboardTransaction): Promise { + const onClipboardChangedPromise = async () => { + await this.session?.on_clipboard_paste(transaction); + }; + return onClipboardChangedPromise(); + } + private releaseAllInputs() { this.session?.release_all_inputs(); } From e10bf4fc384874cdfcb3ae57e7ecd79943653f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 9 Nov 2023 21:53:08 -0500 Subject: [PATCH 0306/1273] ci: check for dirty lock files (#277) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note that we can’t really use the --locked option of cargo, because to run xtask, we need to compile it using cargo, and thus the lock files are already "refreshed" as far as cargo is concerned. Instead, this new task will check for modifications to the lock files using git-status porcelain. The side benefit is that we can check for npm lock files too. --- .github/workflows/ci.yml | 9 ++++ fuzz/Cargo.lock | 89 +++++++++++++++++++++++++++++++++++++--- xtask/src/check.rs | 30 ++++++++++++++ xtask/src/cli.rs | 3 ++ xtask/src/main.rs | 2 + 5 files changed, 128 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f477dca..3d1e73da 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,6 +78,9 @@ jobs: - name: WASM (check) run: cargo xtask wasm check -v + - name: Lock files + run: cargo xtask check locks -v + fuzz: name: Fuzzing runs-on: ubuntu-20.04 @@ -104,6 +107,9 @@ jobs: - name: Fuzz run: cargo xtask fuzz run -v + - name: Lock files + run: cargo xtask check locks -v + web: name: Web Client runs-on: ubuntu-20.04 @@ -126,3 +132,6 @@ jobs: - name: Check run: cargo xtask web check -v + + - name: Lock files + run: cargo xtask check locks -v diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 5b9c1bfa..86648c93 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "arbitrary" version = "1.3.0" @@ -67,6 +73,12 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.3.3" @@ -130,6 +142,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -209,12 +230,31 @@ dependencies = [ "syn 2.0.25", ] +[[package]] +name = "fdeflate" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +dependencies = [ + "simd-adler32", +] + [[package]] name = "flagset" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda653ca797810c02f7ca4b804b40b8b95ae046eb989d356bce17919a8c25499" +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "funty" version = "2.0.0" @@ -235,13 +275,22 @@ dependencies = [ name = "ironrdp-cliprdr" version = "0.1.0" dependencies = [ - "bitflags", + "bitflags 2.3.3", "ironrdp-pdu", "ironrdp-svc", "thiserror", "tracing", ] +[[package]] +name = "ironrdp-cliprdr-format" +version = "0.1.0" +dependencies = [ + "ironrdp-pdu", + "png", + "thiserror", +] + [[package]] name = "ironrdp-error" version = "0.1.0" @@ -260,6 +309,7 @@ version = "0.0.0" dependencies = [ "arbitrary", "ironrdp-cliprdr", + "ironrdp-cliprdr-format", "ironrdp-graphics", "ironrdp-pdu", "ironrdp-rdpdr", @@ -270,7 +320,7 @@ name = "ironrdp-graphics" version = "0.1.0" dependencies = [ "bit_field", - "bitflags", + "bitflags 2.3.3", "bitvec", "byteorder", "ironrdp-error", @@ -286,7 +336,7 @@ name = "ironrdp-pdu" version = "0.1.0" dependencies = [ "bit_field", - "bitflags", + "bitflags 2.3.3", "byteorder", "der-parser", "ironrdp-error", @@ -306,7 +356,7 @@ dependencies = [ name = "ironrdp-rdpdr" version = "0.1.0" dependencies = [ - "bitflags", + "bitflags 2.3.3", "ironrdp-error", "ironrdp-pdu", "ironrdp-svc", @@ -317,7 +367,7 @@ dependencies = [ name = "ironrdp-svc" version = "0.1.0" dependencies = [ - "bitflags", + "bitflags 2.3.3", "ironrdp-pdu", ] @@ -380,6 +430,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + [[package]] name = "nom" version = "7.1.3" @@ -453,6 +513,19 @@ dependencies = [ "spki", ] +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -521,6 +594,12 @@ dependencies = [ "digest", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "spki" version = "0.7.2" diff --git a/xtask/src/check.rs b/xtask/src/check.rs index ee5e17d4..174654d9 100644 --- a/xtask/src/check.rs +++ b/xtask/src/check.rs @@ -116,3 +116,33 @@ pub fn tests_run(sh: &Shell) -> anyhow::Result<()> { println!("All good!"); Ok(()) } + +pub fn lock_files(sh: &Shell) -> anyhow::Result<()> { + let _s = Section::new("CHECK-LOCKS"); + + // Note that we can’t really use the --locked option of cargo, because to + // run xtask, we need to compile it using cargo first, and thus the lock + // files are already "refreshed" as far as cargo is concerned. Instead, + // this task will check for modifications to the lock files using git-status + // porcelain. The side benefit is that we can check for npm lock files too. + + const LOCK_FILES: &[&str] = &[ + "Cargo.lock", + "fuzz/Cargo.lock", + "web-client/iron-remote-gui/package-lock.json", + "web-client/iron-svelte-client/package-lock.json", + ]; + + let output = cmd!(sh, "git status --porcelain --untracked-files=no") + .args(LOCK_FILES) + .read()?; + + if !output.is_empty() { + cmd!(sh, "git status").run()?; + anyhow::bail!("one or more lock files are changed, you should commit those"); + } + + println!("All good!"); + + Ok(()) +} diff --git a/xtask/src/cli.rs b/xtask/src/cli.rs index 5bb2a0f5..9b5f6dc2 100644 --- a/xtask/src/cli.rs +++ b/xtask/src/cli.rs @@ -12,6 +12,7 @@ TASKS: bootstrap Install all requirements for development check fmt Check formatting check lints Check lints + check locks Check for dirty or staged lock files not yet committed check tests [--no-run] Compile tests and, unless specified otherwise, run them ci Run all checks required on CI clean Clean workspace @@ -49,6 +50,7 @@ pub enum Action { Bootstrap, CheckFmt, CheckLints, + CheckLocks, CheckTests { no_run: bool, }, @@ -92,6 +94,7 @@ pub fn parse_args() -> anyhow::Result { Some("check") => match args.subcommand()?.as_deref() { Some("fmt") => Action::CheckFmt, Some("lints") => Action::CheckLints, + Some("locks") => Action::CheckLocks, Some("tests") => Action::CheckTests { no_run: args.contains("--no-run"), }, diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 1c6bbaaa..448137f4 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -51,6 +51,7 @@ fn main() -> anyhow::Result<()> { } Action::CheckFmt => check::fmt(&sh)?, Action::CheckLints => check::lints(&sh)?, + Action::CheckLocks => check::lock_files(&sh)?, Action::CheckTests { no_run } => { if no_run { check::tests_compile(&sh)?; @@ -67,6 +68,7 @@ fn main() -> anyhow::Result<()> { fuzz::run(&sh, None, None)?; web::install(&sh)?; web::check(&sh)?; + check::lock_files(&sh)?; } Action::Clean => clean::workspace(&sh)?, Action::CovGrcov => cov::grcov(&sh)?, From d6e1daccb63a003b103ab42293baf9897c9daee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 9 Nov 2023 21:53:27 -0500 Subject: [PATCH 0307/1273] chore(web-client): fix prettier checks (#270) --- web-client/iron-remote-gui/package.json | 7 ++++--- web-client/iron-remote-gui/src/enums/MouseButton.ts | 7 ------- web-client/iron-remote-gui/src/enums/MouseButtonState.ts | 4 ---- web-client/iron-svelte-client/package.json | 5 +++-- 4 files changed, 7 insertions(+), 16 deletions(-) delete mode 100644 web-client/iron-remote-gui/src/enums/MouseButton.ts delete mode 100644 web-client/iron-remote-gui/src/enums/MouseButtonState.ts diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 1f796e70..64756791 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -6,7 +6,7 @@ "Benoit Cortier", "Zacharia Ellaham" ], - "description": "Web Component providing agnostic implementation for Iron Wasm base client.", + "description": "Web Component providing agnostic implementation for Iron Wasm base client", "version": "0.8.1", "type": "module", "private": true, @@ -19,10 +19,11 @@ "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "npm run lint:prettier && npm run lint:eslint", - "lint:prettier": "prettier . --check", + "lint:prettier": "prettier --check . --plugin prettier-plugin-svelte", "lint:eslint": "eslint src/**", - "format": "prettier . --write ." + "format": "prettier --write . --plugin prettier-plugin-svelte" }, + "//": "FIXME: There's currently an issue with Prettier 3.0 which requires the seemingly redundant --plugin setting. This bug will be fixed in the 3.1, and the extra argument may then be removed", "devDependencies": { "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", diff --git a/web-client/iron-remote-gui/src/enums/MouseButton.ts b/web-client/iron-remote-gui/src/enums/MouseButton.ts deleted file mode 100644 index 7f83de43..00000000 --- a/web-client/iron-remote-gui/src/enums/MouseButton.ts +++ /dev/null @@ -1,7 +0,0 @@ -export enum MouseButton { - LEFT = 0, - MIDDLE = 1, - RIGHT = 2, - BROWSER_BACK = 3, - BROWSER_FORWARD = 4, -} diff --git a/web-client/iron-remote-gui/src/enums/MouseButtonState.ts b/web-client/iron-remote-gui/src/enums/MouseButtonState.ts deleted file mode 100644 index c202cc0e..00000000 --- a/web-client/iron-remote-gui/src/enums/MouseButtonState.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum MouseButtonState { - MOUSE_DOWN, - MOUSE_UP, -} diff --git a/web-client/iron-svelte-client/package.json b/web-client/iron-svelte-client/package.json index 6d046491..aac310d7 100644 --- a/web-client/iron-svelte-client/package.json +++ b/web-client/iron-svelte-client/package.json @@ -14,10 +14,11 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "npm run lint:prettier && npm run lint:eslint", - "lint:prettier": "prettier . --check", + "lint:prettier": "prettier --check . --plugin prettier-plugin-svelte", "lint:eslint": "eslint src/**", - "format": "prettier . --write ." + "format": "prettier --write . --plugin prettier-plugin-svelte" }, + "//": "FIXME: There's currently an issue with Prettier 3.0 which requires the seemingly redundant --plugin setting. This bug will be fixed in the 3.1, and the extra argument may then be removed", "devDependencies": { "beercss": "^2.3.0", "cross-env": "7.0.3", From c025f494bca8dd4553da667f7221edc3b22a6176 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 9 Nov 2023 21:53:46 -0500 Subject: [PATCH 0308/1273] fix(server): enable required tokio feature `net` (#273) --- crates/ironrdp-server/Cargo.toml | 2 +- crates/ironrdp-server/src/server.rs | 61 ++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index 10587bb6..719978b2 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -18,7 +18,7 @@ test = false [dependencies] anyhow = "1.0" bytes = "1" -tokio = { version = "1", features = ["macros"] } +tokio = { version = "1", features = ["net", "macros"] } tokio-rustls = "0.24" async-trait = "0.1" ironrdp-pdu.workspace = true diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 33daeb9a..6c92e9c6 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -46,23 +46,56 @@ impl RdpServerSecurity { /// /// # Example /// -/// ```ignore +/// ``` /// use ironrdp_server::{RdpServer, RdpServerInputHandler, RdpServerDisplay}; /// -/// async fn main() { -/// let tls_acceptor = todo!(); -/// let input_handler = todo!(); -/// let display_handler = todo!(); -/// -/// let mut server = RdpServer::builder() -/// .with_addr(([127, 0, 0, 1], 3389)) -/// .with_tls(tls_acceptor) -/// .with_input_handler(input_handler) -/// .with_display_handler(display_handler) -/// .build(); -/// -/// server.run().await; +///# use ironrdp_server::{DisplayUpdate, DesktopSize, KeyboardEvent, MouseEvent}; +///# use tokio_rustls::TlsAcceptor; +///# struct NoopInputHandler; +///# #[async_trait::async_trait] +///# impl RdpServerInputHandler for NoopInputHandler { +///# async fn keyboard(&mut self, _: KeyboardEvent) {} +///# async fn mouse(&mut self, _: MouseEvent) {} +///# } +///# struct NoopDisplay; +///# #[async_trait::async_trait] +///# impl RdpServerDisplay for NoopDisplay { +///# async fn size(&mut self) -> DesktopSize { +///# todo!() +///# } +///# async fn get_update(&mut self) -> Option { +///# todo!() +///# } +///# } +///# async fn stub() { +/// fn make_tls_acceptor() -> TlsAcceptor { +/// /* snip */ +///# todo!() /// } +/// +/// fn make_input_handler() -> impl RdpServerInputHandler { +/// /* snip */ +///# NoopInputHandler +/// } +/// +/// fn make_display_handler() -> impl RdpServerDisplay { +/// /* snip */ +///# NoopDisplay +/// } +/// +/// let tls_acceptor = make_tls_acceptor(); +/// let input_handler = make_input_handler(); +/// let display_handler = make_display_handler(); +/// +/// let mut server = RdpServer::builder() +/// .with_addr(([127, 0, 0, 1], 3389)) +/// .with_tls(tls_acceptor) +/// .with_input_handler(input_handler) +/// .with_display_handler(display_handler) +/// .build(); +/// +/// server.run().await; +///# } /// ``` pub struct RdpServer { opts: RdpServerOptions, From 52d1accf89e603dd88658900d57ab3cd18279fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Nov 2023 19:27:11 -0500 Subject: [PATCH 0309/1273] fix(connector): always expect STATUS_VALID_CLIENT (#278) Issue: ARC-180 --- .../ironrdp-connector/src/license_exchange.rs | 86 +++++++++++++------ crates/ironrdp-connector/src/server_name.rs | 6 +- crates/ironrdp-fuzzing/src/oracles/mod.rs | 1 - crates/ironrdp-pdu/src/rdp/server_license.rs | 3 + .../client_new_license_request.rs | 3 + .../client_platform_challenge_response.rs | 3 + .../server_license/licensing_error_message.rs | 3 + .../server_license/server_license_request.rs | 15 ++++ .../server_license_request/cert.rs | 6 ++ .../server_platform_challenge.rs | 3 + .../server_license/server_upgrade_license.rs | 3 + 11 files changed, 100 insertions(+), 32 deletions(-) diff --git a/crates/ironrdp-connector/src/license_exchange.rs b/crates/ironrdp-connector/src/license_exchange.rs index 6d7fd2b1..deb839ca 100644 --- a/crates/ironrdp-connector/src/license_exchange.rs +++ b/crates/ironrdp-connector/src/license_exchange.rs @@ -7,7 +7,7 @@ use ironrdp_pdu::PduHint; use rand_core::{OsRng, RngCore as _}; use super::legacy; -use crate::{ConnectorResult, Sequence, State, Written}; +use crate::{ConnectorError, ConnectorResult, ConnectorResultExt as _, Sequence, State, Written}; #[derive(Default, Debug)] #[non_exhaustive] @@ -91,8 +91,9 @@ impl Sequence for LicenseExchangeSequence { LicenseExchangeState::NewLicenseRequest => { let send_data_indication_ctx = legacy::decode_send_data_indication(input)?; - let initial_server_license = - send_data_indication_ctx.decode_user_data::()?; + let initial_server_license = send_data_indication_ctx + .decode_user_data::() + .with_context("decode initial server license PDU")?; debug!(message = ?initial_server_license, "Received"); @@ -164,7 +165,10 @@ impl Sequence for LicenseExchangeSequence { LicenseExchangeState::PlatformChallenge { encryption_data } => { let send_data_indication_ctx = legacy::decode_send_data_indication(input)?; - match send_data_indication_ctx.decode_user_data::() { + match send_data_indication_ctx + .decode_user_data::() + .with_context("decode SERVER_PLATFORM_CHALLENGE") + { Ok(challenge) => { debug!(message = ?challenge, "Received"); @@ -191,38 +195,49 @@ impl Sequence for LicenseExchangeSequence { ) } Err(error) => { - // In some cases, server does not send a platform challenge and a ServerLicenseError PDU - // with the VALID_CLIENT_STATUS flag is received. - if let Some(source) = std::error::Error::source(&error) { - match source.downcast_ref::() { - Some(server_license::ServerLicenseError::ValidClientStatus( - licensing_error_message, - )) => { - debug!(message = ?licensing_error_message, "Received"); - - (Written::Nothing, LicenseExchangeState::LicenseExchanged) - } - _ => return Err(error), - } - } else { - return Err(error); - } + // It appears that in some cases (?), the server does not send a SERVER_PLATFORM_CHALLENGE. + // Instead a SERVER_LICENSE_ERROR with the STATUS_VALID_CLIENT error code is received. + // Note that the specification says this SHOULD happen at the beginning of the Licensing Phase: + // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/7d941d0d-d482-41c5-b728-538faa3efb31 + downcast_if_status_valid_client(error, |licensing_error_message| { + debug!(message = ?licensing_error_message, "Received"); + warn!("STATUS_VALID_CLIENT error code at License Platform Challenge step"); + (Written::Nothing, LicenseExchangeState::LicenseExchanged) + })? } } } LicenseExchangeState::UpgradeLicense { encryption_data } => { let send_data_indication_ctx = legacy::decode_send_data_indication(input)?; - let upgrade_license = - send_data_indication_ctx.decode_user_data::()?; - debug!(message = ?upgrade_license, "Received"); + // FIXME: The ServerUpgradeLicense type is handling both SERVER_UPGRADE_LICENSE and SERVER_NEW_LICENSE PDUs. + // It’s expected that fixing #263 will also lead to a better alternative here. - upgrade_license - .verify_server_license(&encryption_data) - .map_err(|e| custom_err!("license verification", e))?; + match send_data_indication_ctx + .decode_user_data::() + .with_context("decode SERVER_NEW_LICENSE/SERVER_UPGRADE_LICENSE") + { + Ok(upgrade_license) => { + debug!(message = ?upgrade_license, "Received"); - debug!("License verified with success"); + upgrade_license + .verify_server_license(&encryption_data) + .map_err(|e| custom_err!("license verification", e))?; + + debug!("License verified with success"); + } + Err(error) => { + // It appears that in some cases (?), the server does not send a SERVER_NEW_LICENSE/SERVER_UPGRADE_LICENSE. + // Instead a SERVER_LICENSE_ERROR with the STATUS_VALID_CLIENT error code is received. + // Note that the specification says this SHOULD happen at the beginning of the Licensing Phase: + // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/7d941d0d-d482-41c5-b728-538faa3efb31 + downcast_if_status_valid_client(error, |licensing_error_message| { + debug!(message = ?licensing_error_message, "Received"); + warn!("STATUS_VALID_CLIENT error code at Licensing final step"); + })?; + } + } (Written::Nothing, LicenseExchangeState::LicenseExchanged) } @@ -235,3 +250,20 @@ impl Sequence for LicenseExchangeSequence { Ok(written) } } + +// FIXME(#269): server_license::ServerLicenseError should not be retrieved from an error type. +fn downcast_if_status_valid_client(error: ConnectorError, op: Fn) -> ConnectorResult +where + Fn: FnOnce(&server_license::LicensingErrorMessage) -> T, +{ + match std::error::Error::source(&error) + .and_then(|source| source.downcast_ref::()) + { + Some(server_license::ServerLicenseError::ValidClientStatus(licensing_error_message)) + if licensing_error_message.error_code == server_license::LicenseErrorCode::StatusValidClient => + { + Ok(op(licensing_error_message)) + } + _ => Err(error), + } +} diff --git a/crates/ironrdp-connector/src/server_name.rs b/crates/ironrdp-connector/src/server_name.rs index 75953b96..5703ad32 100644 --- a/crates/ironrdp-connector/src/server_name.rs +++ b/crates/ironrdp-connector/src/server_name.rs @@ -3,7 +3,7 @@ pub struct ServerName(String); impl ServerName { pub fn new(name: impl Into) -> Self { - Self(sanitize_server_name(name)) + Self(sanitize_server_name(name.into())) } pub fn as_str(&self) -> &str { @@ -33,9 +33,7 @@ impl From<&str> for ServerName { } } -fn sanitize_server_name(name: impl Into) -> String { - let name = name.into(); - +fn sanitize_server_name(name: String) -> String { if let Some(idx) = name.rfind(':') { if let Ok(sock_addr) = name.parse::() { // A socket address, including a port diff --git a/crates/ironrdp-fuzzing/src/oracles/mod.rs b/crates/ironrdp-fuzzing/src/oracles/mod.rs index 82b02c28..1fc0cd04 100644 --- a/crates/ironrdp-fuzzing/src/oracles/mod.rs +++ b/crates/ironrdp-fuzzing/src/oracles/mod.rs @@ -39,7 +39,6 @@ pub fn pdu_decode(data: &[u8]) { let _ = server_license::ClientPlatformChallengeResponse::from_buffer(data); let _ = server_license::InitialServerLicenseMessage::from_buffer(data); let _ = server_license::ServerLicenseRequest::from_buffer(data); - let _ = server_license::InitialServerLicenseMessage::from_buffer(data); let _ = server_license::ServerPlatformChallenge::from_buffer(data); let _ = vc::ChannelPduHeader::from_buffer(data); diff --git a/crates/ironrdp-pdu/src/rdp/server_license.rs b/crates/ironrdp-pdu/src/rdp/server_license.rs index 55d4b25f..00f345ef 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license.rs @@ -121,6 +121,9 @@ impl PduParsing for LicenseHeader { } } +/// [2.2.1.12.1.1] Licensing Preamble (LICENSE_PREAMBLE) +/// +/// [2.2.1.12.1.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/73170ca2-5f82-4a2d-9d1b-b439f3d8dadc #[repr(u8)] #[derive(Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)] pub enum PreambleType { diff --git a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs index 75990ca1..ebe71197 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs @@ -38,6 +38,9 @@ bitflags! { } } +/// [2.2.2.2] Client New License Request (CLIENT_NEW_LICENSE_REQUEST) +/// +/// [2.2.2.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/c57e4890-9049-421e-9fe8-9a6f9519675a #[derive(Debug, PartialEq, Eq)] pub struct ClientNewLicenseRequest { pub license_header: LicenseHeader, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs b/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs index 1aca2853..cf08370d 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs @@ -22,6 +22,9 @@ const RESPONSE_DATA_STATIC_FIELDS_SIZE: usize = 8; const CLIENT_HARDWARE_IDENTIFICATION_SIZE: usize = 20; +/// [2.2.2.5] Client Platform Challenge Response (CLIENT_PLATFORM_CHALLENGE_RESPONSE) +/// +/// [2.2.2.5]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/f53ab87c-d07d-4bf9-a2ac-79542f7b456c #[derive(Debug, PartialEq, Eq)] pub struct ClientPlatformChallengeResponse { pub license_header: LicenseHeader, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs b/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs index a737e192..2fd30cef 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs @@ -13,6 +13,9 @@ use crate::PduParsing; const ERROR_CODE_SIZE: usize = 4; const STATE_TRANSITION_SIZE: usize = 4; +/// [2.2.1.12.1.3] Licensing Error Message (LICENSE_ERROR_MESSAGE) +/// +/// [2.2.1.12.1.3]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/f18b6c9f-f3d8-4a0e-8398-f9b153233dca #[derive(Debug, PartialEq, Eq)] pub struct LicensingErrorMessage { pub error_code: LicenseErrorCode, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs index 920a22cc..669966f8 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs @@ -34,6 +34,15 @@ pub enum InitialMessageType { StatusValidClient(LicensingErrorMessage), } +// FIXME(#269): this is a helper structure which tries to detect if a +// SERVER_LICENSE_REQUEST PDU is received from the server, or if a +// STATUS_VALID_CLIENT error code is received instead (no need to negotiate +// a license). I think this could be refactored into a more generic struct / enum, +// without trying to be too smart by, e.g., returning errors when a LICENSE_ERROR_MESSAGE +// is received depending on the error code. Parsing code should lend the data received +// from the network without making too much decisions. + +/// Either a SERVER_LICENSE_REQUEST or a LICENSE_ERROR_MESSAGE with the STATUS_VALID_CLIENT code #[derive(Debug, PartialEq, Eq)] pub struct InitialServerLicenseMessage { pub license_header: LicenseHeader, @@ -130,6 +139,9 @@ impl PduParsing for InitialServerLicenseMessage { } } +/// [2.2.2.1] Server License Request (SERVER_LICENSE_REQUEST) +/// +/// [2.2.2.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/e17772e9-9642-4bb6-a2bc-82875dd6da7c #[derive(Debug, PartialEq, Eq)] pub struct ServerLicenseRequest { pub server_random: Vec, @@ -262,6 +274,9 @@ impl PduParsing for Scope { } } +/// [2.2.1.4.3.1] Server Certificate (SERVER_CERTIFICATE) +/// +/// [2.2.1.4.3.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/54e72cc6-3422-404c-a6b4-2486db125342 #[derive(Debug, PartialEq, Eq)] pub struct ServerCertificate { pub issued_permanently: bool, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs index ccdbc462..86e55d69 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs @@ -24,6 +24,9 @@ pub enum CertificateType { X509(X509CertificateChain), } +/// [2.2.1.4.2] X.509 Certificate Chain (X509 _CERTIFICATE_CHAIN) +/// +/// [2.2.1.4.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/bf2cc9cc-2b01-442e-a288-6ddfa3b80d59 #[derive(Debug, PartialEq, Eq)] pub struct X509CertificateChain { pub certificate_array: Vec>, @@ -84,6 +87,9 @@ impl PduParsing for X509CertificateChain { } } +/// [2.2.1.4.3.1.1] Server Proprietary Certificate (PROPRIETARYSERVERCERTIFICATE) +/// +/// [2.2.1.4.3.1.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/a37d449a-73ac-4f00-9b9d-56cefc954634 #[derive(Debug, PartialEq, Eq)] pub struct ProprietaryCertificate { pub public_key: RsaPublicKey, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs index 073e9d12..76dc55eb 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs @@ -13,6 +13,9 @@ use crate::PduParsing; const CONNECT_FLAGS_FIELD_SIZE: usize = 4; +/// [2.2.2.4] Server Platform Challenge (SERVER_PLATFORM_CHALLENGE) +/// +/// [2.2.2.4]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/41e129ad-0f35-43ad-a399-1b10e7d007a9 #[derive(Debug, PartialEq, Eq)] pub struct ServerPlatformChallenge { pub license_header: LicenseHeader, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs index 4f5b4c7d..d4772121 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs @@ -15,6 +15,9 @@ use crate::{utils, PduParsing}; const NEW_LICENSE_INFO_STATIC_FIELDS_SIZE: usize = 20; +/// [2.2.2.6] Server Upgrade License (SERVER_UPGRADE_LICENSE) +/// +/// [2.2.2.6]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/e8339fbd-1fe3-42c2-a599-27c04407166d #[derive(Debug, PartialEq, Eq)] pub struct ServerUpgradeLicense { pub license_header: LicenseHeader, From f1fab22fe01b74489c4c05a0c598a8c1a908586f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Nov 2023 21:35:55 -0500 Subject: [PATCH 0310/1273] fix(connector): STATUS_VALID_CLIENT IS expected (#279) --- .../ironrdp-connector/src/license_exchange.rs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/crates/ironrdp-connector/src/license_exchange.rs b/crates/ironrdp-connector/src/license_exchange.rs index deb839ca..4747263b 100644 --- a/crates/ironrdp-connector/src/license_exchange.rs +++ b/crates/ironrdp-connector/src/license_exchange.rs @@ -46,6 +46,11 @@ impl State for LicenseExchangeState { } } +/// Client licensing sequence +/// +/// Implements the state machine described in MS-RDPELE, section [3.1.5.3.1] Client State Transition. +/// +/// [3.1.5.3.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpele/8f9b860a-3687-401d-b3bc-7e9f5d4f7528 #[derive(Debug)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct LicenseExchangeSequence { @@ -156,7 +161,6 @@ impl Sequence for LicenseExchangeSequence { } server_license::InitialMessageType::StatusValidClient(_) => { info!("Server did not initiate license exchange"); - (Written::Nothing, LicenseExchangeState::LicenseExchanged) } } @@ -195,13 +199,10 @@ impl Sequence for LicenseExchangeSequence { ) } Err(error) => { - // It appears that in some cases (?), the server does not send a SERVER_PLATFORM_CHALLENGE. - // Instead a SERVER_LICENSE_ERROR with the STATUS_VALID_CLIENT error code is received. - // Note that the specification says this SHOULD happen at the beginning of the Licensing Phase: - // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/7d941d0d-d482-41c5-b728-538faa3efb31 + // FIXME(#269): weird control flow pattern downcast_if_status_valid_client(error, |licensing_error_message| { debug!(message = ?licensing_error_message, "Received"); - warn!("STATUS_VALID_CLIENT error code at License Platform Challenge step"); + info!("Client licensing completed"); (Written::Nothing, LicenseExchangeState::LicenseExchanged) })? } @@ -228,13 +229,10 @@ impl Sequence for LicenseExchangeSequence { debug!("License verified with success"); } Err(error) => { - // It appears that in some cases (?), the server does not send a SERVER_NEW_LICENSE/SERVER_UPGRADE_LICENSE. - // Instead a SERVER_LICENSE_ERROR with the STATUS_VALID_CLIENT error code is received. - // Note that the specification says this SHOULD happen at the beginning of the Licensing Phase: - // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/7d941d0d-d482-41c5-b728-538faa3efb31 + // FIXME(#269): weird control flow pattern downcast_if_status_valid_client(error, |licensing_error_message| { debug!(message = ?licensing_error_message, "Received"); - warn!("STATUS_VALID_CLIENT error code at Licensing final step"); + info!("Client licensing completed"); })?; } } From a5845f5c9f8c05eb1a208d049b8e30377b57dce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Nov 2023 10:05:49 -0500 Subject: [PATCH 0311/1273] docs: add STYLE.md document (#275) Based on rust-analyzer document: - https://github.com/rust-lang/rust-analyzer/blob/76633199f4316b9c659d4ec0c102774d693cd940/docs/dev/style.md --- STYLE.md | 367 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 STYLE.md diff --git a/STYLE.md b/STYLE.md new file mode 100644 index 00000000..0ad54603 --- /dev/null +++ b/STYLE.md @@ -0,0 +1,367 @@ +Our approach to "clean code" is two-fold: +- we avoid blocking PRs on style changes, but +- at the same time, the codebase is constantly refactored. + +It is explicitly OK for a reviewer to flag only some nits in the PR, and then send a follow-up cleanup PR for things which are easier to explain by example, cc'ing the original author. +Sending small cleanup PRs (like renaming a single local variable) is encouraged. +These PRs are easy to merge and very welcomed. + +When reviewing pull requests prefer extending this document to leaving non-reusable comments on the pull request itself. + +# Style + +## Formatting for sizes / lengths (e.g.: in `Encode::size()` and `FIXED_PART_SIZE` definitions) + +Use an inline comment for each field of the structure. + +```rust +// GOOD +const FIXED_PART_SIZE: usize = 1 /* Version */ + 1 /* Endianness */ + 2 /* CommonHeaderLength */ + 4 /* Filler */; + +// GOOD +const FIXED_PART_SIZE: usize = 1 // Version + + 1 // Endianness + + 2 // CommonHeaderLength + + 4; // Filler + +// GOOD +fn size(&self) -> usize { + 4 // ReturnCode + + 4 // cBytes + + self.reader_names.size() // mszReaderNames + + 4 // dwState + + 4 // dwProtocol + + self.atr.len() // pbAtr + + 4 // cbAtrLen +} + +// BAD +const FIXED_PART_SIZE: usize = 1 + 1 + 2 + 4; + +// BAD +const FIXED_PART_SIZE: usize = size_of::() + size_of::() + size_of::() + size_of::(); + +// BAD +fn size(&self) -> usize { + size_of::() * 5 + self.reader_names.size() + self.atr.len() +} + +``` + +**Rationale**: boring and readable, having a comment with the name of the field is useful when following along the documentation. +Here is an excerpt illustrating this: + +![Documentation excerpt](https://user-images.githubusercontent.com/3809077/272724889-681a83c9-aa83-4f48-85f4-0721c3148508.png) + +`size_of::()` by itself is not really more useful than writing `1` directly. +The size of `u8` is not going to change, and it’s not hard to predict. +The struct also does not necessarily directly hold a `u8` as-is, and it may be hard to correlate a wrapper type with the corresponding `size_of::()`. +The memory representation of the wrapper type may differ from its network representation, so it’s not possible to always replace with `size_of::()` instead. + +## Error handling + +### Return type + +Use `crate_name::Result` (e.g.: `anyhow::Result`) rather than just `Result`. + +**Rationale:** makes it immediately clear what result that is. + +Exception: it’s not necessary when the type alias is clear enough (e.g.: `ConnectionResult`). + +### Formatting of error messages + +A single sentence which: +- is short and concise, +- does not start by a capital letter, and +- does not contain trailing punctuation. + +This is the convention adopted by the Rust project: +- [Rust API Guidelines][api-guidelines-errors] +- [std::error::Error][std-error-trait] + +```rust +// GOOD +"invalid X.509 certificate" + +// BAD +"Invalid X.509 certificate." +``` + +**Rationale**: it’s easier to compose with other error messages. + +To illustrate with terminal error reports: +``` +// GOOD +Error: invalid server license, caused by invalid X.509 certificate, caused by unexpected ASN.1 DER tag: expected SEQUENCE, got CONTEXT-SPECIFIC [19] (primitive) + +// BAD +Error: Invalid server license., Caused by Invalid X.509 certificate., Caused by Unexpected ASN.1 DER tag: expected SEQUENCE, got CONTEXT-SPECIFIC [19] (primitive) +``` + +The error reporter (e.g.: `ironrdp_error::ErrorReport`) is responsible for adding the punctuation and/or capitalizing the text down the line. + +[api-guidelines-errors]: https://rust-lang.github.io/api-guidelines/interoperability.html#error-types-are-meaningful-and-well-behaved-c-good-err +[std-error-trait]: https://doc.rust-lang.org/stable/std/error/trait.Error.html + +## Logging + +If any, the human-readable message should start with a capital letter and not end with a period. + +```rust +// GOOD +info!("Connect to RDP host"); + +// BAD +info!("connect to RDP host."); +``` + +**Rationale**: consistency. +Log messages are typically not composed together like error messages, so it’s fine to start with a capital letter. + +Use tracing ability to [record structured fields][tracing-fields]. + +```rust +// GOOD +info!(%server_addr, "Looked up server address"); + +// BAD +info!("Looked up server address: {server_addr}"); +``` + +**Rationale**: structured diagnostic information is tracing’s strength. +It’s possible to retrieve the records emitted by tracing in a structured manner. + +Name fields after what already exist consistently as much as possible. +For example, errors are typically recorded as fields named `error`. + +```rust +// GOOD +error!(?error, "Active stage failed"); +error!(error = ?e, "Active stage failed"); +error!(%error, "Active stage failed"); +error!(error = format!("{err:#}"), "Active stage failed"); + +// BAD +error!(?e, "Active stage failed"); +error!(%err, "Active stage failed"); +``` + +**Rationale**: consistency. +We can rely on this to filter and collect diagnostics. + +[tracing-fields]: https://docs.rs/tracing/latest/tracing/index.html#recording-fields + +## Helper functions + +Avoid creating single-use helper functions: + +```rust +// GOOD +let buf = { + let mut buf = WriteBuf::new(); + buf.write_u32(42); + buf +}; + +// BAD +let buf = prepare_buf(42); + +// Somewhere else +fn prepare_buf(value: u32) -> WriteBuf { + let mut buf = WriteBuf::new(); + buf.write_u32(value); + buf +} +``` + +**Rationale:** single-use functions change frequently, adding or removing parameters adds churn. +A block serves just as well to delineate a bit of logic, but has access to all the context. +Re-using originally single-purpose function often leads to bad coupling. + +Exception: if you want to make use of `return` or `?`. + +## Documentation + +### Doc comments should link to reference documents + +Add links to specification and/or other relevant documents in doc comments. +Include verbatim the name of the section or the description of the item from the specification. +Use reference-style links for readability. +Do not make the link too long. + +```rust +// GOOD + +/// [2.2.3.3.8] Server Drive Query Information Request (DR_DRIVE_QUERY_INFORMATION_REQ) +/// +/// The server issues a query information request on a redirected file system device. +/// +/// [2.2.3.3.8]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/e43dcd68-2980-40a9-9238-344b6cf94946 +pub struct ServerDriveQueryInformationRequest { + /* snip */ +} + +// BAD (no doc comment) + +pub struct ServerDriveQueryInformationRequest { + /* snip */ +} + +// BAD (non reference-style links make barely readable, very long lines) + +/// [2.2.3.3.8](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/e43dcd68-2980-40a9-9238-344b6cf94946) Server Drive Query Information Request (DR_DRIVE_QUERY_INFORMATION_REQ) +/// +/// The server issues a query information request on a redirected file system device. +pub struct ServerDriveQueryInformationRequest { + /* snip */ +} + +// BAD (long link) + +/// [2.2.3.3.8 Server Drive Query Information Request (DR_DRIVE_QUERY_INFORMATION_REQ)] +/// +/// The server issues a query information request on a redirected file system device. +/// +/// [2.2.3.3.8 Server Drive Query Information Request (DR_DRIVE_QUERY_INFORMATION_REQ)]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/e43dcd68-2980-40a9-9238-344b6cf94946 +pub struct ServerDriveQueryInformationRequest { + /* snip */ +} +``` + +**Rationale**: consistency. +Easy cross-referencing between code and reference documents. + +### Inline code comments are proper sentences + +Style inline code comments as proper sentences. +Start with a capital letter, end with a dot. + +```rust +// GOOD + +// When building a library, `-` in the artifact name are replaced by `_`. +let artifact_name = format!("{}.wasm", package.replace('-', "_")); + +// BAD + +// when building a library, `-` in the artifact name are replaced by `_` +let artifact_name = format!("{}.wasm", package.replace('-', "_")); +``` + +**Rationale:** writing a sentence (or maybe even a paragraph) rather just "a comment" creates a more appropriate frame of mind. +It tricks you into writing down more of the context you keep in your head while coding. + +### "Sentence per line" style + +For `.md` and `.adoc` files, prefer a sentence-per-line format, don't wrap lines. +If the line is too long, you want to split the sentence in two. + +**Rationale:** much easier to edit the text and read the diff, see [this link][asciidoctor-practices]. + +[asciidoctor-practices]: https://asciidoctor.org/docs/asciidoc-recommended-practices/#one-sentence-per-line + +## Context parameters + +Some parameters are threaded unchanged through many function calls. +They determine the "context" of the operation. +Pass such parameters first, not last. +If there are several context parameters, consider [packing them into a `struct Ctx` and passing it as `&self`][ra-ctx-struct]. + +```rust +// GOOD +fn do_something(connector: &mut ClientConnector, certificate: &[u8]) { + let public_key = extract_public_key(certificate); + do_something_else(connector, public_key, |kind| /* … */); +} + +fn do_something_else(connector: &mut ClientConnector, public_key: &[u8], op: impl Fn(KeyKind) -> bool) { + /* ... */ +} + +// BAD +fn do_something(certificate: &[u8], connector: &mut ClientConnector) { + let public_key = extract_public_key(certificate); + do_something_else(|kind| /* … */, connector, public_key); +} + +fn do_something_else(op: impl Fn(KeyKind) -> bool, connector: &mut ClientConnector, public_key: &[u8]) { + /* ... */ +} +``` + +**Rationale:** consistency. +Context-first works better when non-context parameter is a lambda. + +[ra-ctx-struct]: https://github.com/rust-lang/rust-analyzer/blob/76633199f4316b9c659d4ec0c102774d693cd940/crates/ide-db/src/path_transform.rs#L192-L339 + +# Runtime and compile time performance + +## Avoid allocations + +Avoid writing code which is slower than it needs to be. +Don't allocate a `Vec` where an iterator would do, don't allocate strings needlessly. + +```rust +// GOOD +let second_word = text.split(' ').nth(1)?; + +// BAD +let words: Vec<&str> = text.split(' ').collect(); +let second_word = words.get(1)?; +``` + +**Rationale:** not allocating is almost always faster. + +## Push allocations to the call site + +If allocation is inevitable, let the caller allocate the resource: + +```rust +// GOOD +fn frobnicate(s: String) { + /* snip */ +} + +// BAD +fn frobnicate(s: &str) { + let s = s.to_string(); + /* snip */ +} +``` + +**Rationale:** reveals the costs. +It is also more efficient when the caller already owns the allocation. + +## Avoid monomorphization + +Avoid making a lot of code type parametric, *especially* on the boundaries between crates. + +```rust +// GOOD +fn frobnicate(f: impl FnMut()) { + frobnicate_impl(&mut f) +} +fn frobnicate_impl(f: &mut dyn FnMut()) { + /* lots of code */ +} + +// BAD +fn frobnicate(f: impl FnMut()) { + /* lots of code */ +} +``` + +Avoid `AsRef` polymorphism, it pays back only for widely used libraries: + +```rust +// GOOD +fn frobnicate(f: &Path) { } + +// BAD +fn frobnicate(f: impl AsRef) { } +``` + +**Rationale:** Rust uses monomorphization to compile generic code, meaning that for each instantiation of a generic functions with concrete types, the function is compiled afresh, *per crate*. +This allows for fantastic performance, but leads to increased compile times. +Runtime performance obeys the 80/20 rule (Pareto Principle) — only a small fraction of code is hot. +Compile time **does not** obey this rule — all code has to be compiled. From a5aa8a2ef4aec1bb6dfc74f0f5c982d9ceb91ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Nov 2023 10:06:15 -0500 Subject: [PATCH 0312/1273] chore: review FIXMEs and TODOs (#272) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch also adds issue IDs when appropriate: ```rust // FIXME(#XX): the foo-bar problem // TODO(#XX): add support for feature baz here ``` This way, it’s easier to lookup the places relevant for tackling a specific issue of the tracker, and conversely, it’s easier to know which problem are "properly" tracked and which are not. --- crates/ironrdp-acceptor/src/channel_connection.rs | 2 +- crates/ironrdp-client/src/gui.rs | 4 ++-- crates/ironrdp-client/src/rdp.rs | 8 ++++---- crates/ironrdp-connector/Cargo.toml | 1 + crates/ironrdp-connector/src/channel_connection.rs | 2 +- crates/ironrdp-connector/src/connection.rs | 8 ++++---- crates/ironrdp-dvc/src/lib.rs | 4 ++-- crates/ironrdp-input/src/lib.rs | 2 +- crates/ironrdp-pdu/src/nego.rs | 2 +- crates/ironrdp-pdu/src/rdp/server_license.rs | 8 ++++++++ .../server_license/client_new_license_request/tests.rs | 1 - .../rdp/server_license/server_license_request/tests.rs | 1 - crates/ironrdp-svc/src/lib.rs | 2 +- crates/ironrdp-web/src/session.rs | 2 +- 14 files changed, 27 insertions(+), 20 deletions(-) diff --git a/crates/ironrdp-acceptor/src/channel_connection.rs b/crates/ironrdp-acceptor/src/channel_connection.rs index 61c8913d..a9af43a2 100644 --- a/crates/ironrdp-acceptor/src/channel_connection.rs +++ b/crates/ironrdp-acceptor/src/channel_connection.rs @@ -105,7 +105,7 @@ impl Sequence for ChannelConnectionSequence { ) } - // TODO: support RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN + // TODO(#165): support RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN ChannelConnectionState::WaitChannelJoinRequest { joined } => { let channel_request = ironrdp_pdu::decode::(input).map_err(ConnectorError::pdu)?; diff --git a/crates/ironrdp-client/src/gui.rs b/crates/ironrdp-client/src/gui.rs index 554f8592..38be1e04 100644 --- a/crates/ironrdp-client/src/gui.rs +++ b/crates/ironrdp-client/src/gui.rs @@ -72,10 +72,10 @@ impl GuiContext { control_flow.set_exit(); } WindowEvent::DroppedFile(_) => { - // TODO: File upload + // TODO(#110): File upload } WindowEvent::ReceivedCharacter(_) => { - // TODO: Unicode mode + // TODO(#106): Unicode mode } WindowEvent::KeyboardInput { input, .. } => { let scancode = ironrdp::input::Scancode::from_u16(u16::try_from(input.scancode).unwrap()); diff --git a/crates/ironrdp-client/src/rdp.rs b/crates/ironrdp-client/src/rdp.rs index e916d896..52a78ab0 100644 --- a/crates/ironrdp-client/src/rdp.rs +++ b/crates/ironrdp-client/src/rdp.rs @@ -107,7 +107,7 @@ async fn connect( .with_server_addr(server_addr) .with_server_name(&config.destination) .with_credssp_network_client(RequestClientFactory) - // .with_static_channel(ironrdp::dvc::Drdynvc::new()) // FIXME: drdynvc is not working + // .with_static_channel(ironrdp::dvc::Drdynvc::new()) // FIXME(#61): drdynvc is not working .with_static_channel(rdpsnd::Rdpsnd::new()) .with_static_channel(rdpdr::Rdpdr::new(Box::new(NoopRdpdrBackend {}), "IronRDP".to_owned()).with_smartcard(0)); @@ -168,7 +168,7 @@ async fn active_session( match input_event { RdpInputEvent::Resize { mut width, mut height } => { - // TODO: Add support for Display Update Virtual Channel Extension + // TODO(#105): Add support for Display Update Virtual Channel Extension // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpedisp/d2954508-f487-48bc-8731-39743e0854a9 // One approach when this extension is not available is to perform a connection from scratch again. @@ -180,7 +180,7 @@ async fn active_session( } } - // TODO: use the "auto-reconnect cookie": https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/15b0d1c9-2891-4adb-a45e-deb4aeeeab7c + // TODO(#271): use the "auto-reconnect cookie": https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/15b0d1c9-2891-4adb-a45e-deb4aeeeab7c info!(width, height, "resize event"); @@ -191,7 +191,7 @@ async fn active_session( active_stage.process_fastpath_input(&mut image, &events)? } RdpInputEvent::Close => { - // TODO: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 + // TODO(#115): https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 break 'outer; } RdpInputEvent::Clipboard(event) => { diff --git a/crates/ironrdp-connector/Cargo.toml b/crates/ironrdp-connector/Cargo.toml index b99330cc..84f73a70 100644 --- a/crates/ironrdp-connector/Cargo.toml +++ b/crates/ironrdp-connector/Cargo.toml @@ -29,5 +29,6 @@ tracing.workspace = true # FIXME: sspi-rs forgot to enable the `std` feature for `winapi`. # This workaround should be removed when sspi 0.11 is released. +# NOTE: can be removed after #260 is merged [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["std"] } diff --git a/crates/ironrdp-connector/src/channel_connection.rs b/crates/ironrdp-connector/src/channel_connection.rs index 8c53e957..c6fcd7d1 100644 --- a/crates/ironrdp-connector/src/channel_connection.rs +++ b/crates/ironrdp-connector/src/channel_connection.rs @@ -141,7 +141,7 @@ impl Sequence for ChannelConnectionSequence { ) } - // TODO: send all the join requests in a single batch + // TODO(#112): send all the join requests in a single batch // (RDP 4.0, 5.0, 5.1, 5.2, 6.0, 6.1, 7.0, 7.1, 8.0, 10.2, 10.3, // 10.4, and 10.5 clients send a Channel Join Request to the server only after the // Channel Join Confirm for a previously sent request has been received. RDP 8.1, diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 3024b4ba..a18fe3ed 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -860,7 +860,7 @@ fn create_gcc_blocks<'a>( | ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU | ClientEarlyCapabilityFlags::STRONG_ASYMMETRIC_KEYS; - // TODO: support for ClientEarlyCapabilityFlags::SUPPORT_STATUS_INFO_PDU + // TODO(#136): support for ClientEarlyCapabilityFlags::SUPPORT_STATUS_INFO_PDU if config.graphics.is_some() { early_capability_flags |= ClientEarlyCapabilityFlags::SUPPORT_DYN_VC_GFX_PROTOCOL; @@ -891,12 +891,12 @@ fn create_gcc_blocks<'a>( } else { Some(ClientNetworkData { channels }) }, - // TODO: support for Some(ClientClusterData { flags: RedirectionFlags::REDIRECTION_SUPPORTED, redirection_version: RedirectionVersion::V4, redirected_session_id: 0, }), + // TODO(#139): support for Some(ClientClusterData { flags: RedirectionFlags::REDIRECTION_SUPPORTED, redirection_version: RedirectionVersion::V4, redirected_session_id: 0, }), cluster: None, monitor: None, - // TODO: support for Client Message Channel Data (https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/f50e791c-de03-4b25-b17e-e914c9020bc3) + // TODO(#140): support for Client Message Channel Data (https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/f50e791c-de03-4b25-b17e-e914c9020bc3) message_channel: None, - // TODO: support for Some(MultiTransportChannelData { flags: MultiTransportFlags::empty(), }) + // TODO(#140): support for Some(MultiTransportChannelData { flags: MultiTransportFlags::empty(), }) multi_transport_channel: None, monitor_extended: None, } diff --git a/crates/ironrdp-dvc/src/lib.rs b/crates/ironrdp-dvc/src/lib.rs index 233b4656..f8dface8 100644 --- a/crates/ironrdp-dvc/src/lib.rs +++ b/crates/ironrdp-dvc/src/lib.rs @@ -1,5 +1,5 @@ #![cfg_attr(not(feature = "std"), no_std)] -#![allow(unused)] // FIXME: remove this annotation +#![allow(unused)] // FIXME(#61): remove this annotation // TODO: this crate is WIP @@ -78,7 +78,7 @@ impl Drdynvc { } } - // FIXME: it’s likely we want to enable adding dynamic channels at any point during the session (message passing? other approach?) + // FIXME(#61): it’s likely we want to enable adding dynamic channels at any point during the session (message passing? other approach?) #[must_use] pub fn with_dynamic_channel(mut self, channel: T) -> Self diff --git a/crates/ironrdp-input/src/lib.rs b/crates/ironrdp-input/src/lib.rs index 4d2198ad..4afa1dda 100644 --- a/crates/ironrdp-input/src/lib.rs +++ b/crates/ironrdp-input/src/lib.rs @@ -6,7 +6,7 @@ use ironrdp_pdu::input::mouse_x::PointerXFlags; use ironrdp_pdu::input::{MousePdu, MouseXPdu}; use smallvec::SmallVec; -// TODO: unicode keyboard event support +// TODO(#106): unicode keyboard event support #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] #[repr(u8)] diff --git a/crates/ironrdp-pdu/src/nego.rs b/crates/ironrdp-pdu/src/nego.rs index dcdcb6bf..de649f71 100644 --- a/crates/ironrdp-pdu/src/nego.rs +++ b/crates/ironrdp-pdu/src/nego.rs @@ -245,7 +245,7 @@ impl<'de> X224Pdu<'de> for ConnectionRequest { let flags = RequestFlags::from_bits_truncate(src.read_u8()); if flags.contains(RequestFlags::CORRELATION_INFO_PRESENT) { - // TODO: support for RDP_NEG_CORRELATION_INFO + // TODO(#111): support for RDP_NEG_CORRELATION_INFO return Err(PduError::invalid_message( Self::NAME, "flags", diff --git a/crates/ironrdp-pdu/src/rdp/server_license.rs b/crates/ironrdp-pdu/src/rdp/server_license.rs index 00f345ef..c7c57887 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license.rs @@ -323,6 +323,14 @@ fn read_license_header( ) -> Result { let license_header = LicenseHeader::from_buffer(&mut stream)?; + // FIXME(#269): ERROR_ALERT licensing packets should not be returned as error by the parser. + // Such packets should be handled by the caller, and the caller is responsible for turning + // those into "Result::Err" if necessary. It should be possible to decode a `LICENSE_ERROR_MESSAGE` + // structure like any other PDU. + // Otherwise it requires the caller to match on the error kind in order to check for variants that are + // not actual errors, it makes the flow of control harder to write correctly and less obvious. + // See `ConnectionConfirm` from the `nego` module for prior art. + if license_header.preamble_message_type != required_preamble_message_type { if license_header.preamble_message_type == PreambleType::ErrorAlert { let license_error = LicensingErrorMessage::from_buffer(&mut stream)?; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request/tests.rs b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request/tests.rs index ff3220d9..56cc46ec 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request/tests.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request/tests.rs @@ -282,7 +282,6 @@ fn buffer_length_is_correct_for_client_new_license_request() { } #[test] -#[ignore] // FIXME: unknown/unsupported ASN.1 DER tag: 0x1e at DER byte 186 fn client_new_license_request_creates_correctly() { let (client_new_license_request, encryption_data) = ClientNewLicenseRequest::from_server_license_request( &SERVER_LICENSE_REQUEST, diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/tests.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/tests.rs index ae5708d6..8dd06313 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/tests.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/tests.rs @@ -478,7 +478,6 @@ fn buffer_length_is_correct_for_product_information() { } #[test] -#[ignore] // FIXME: unknown/unsupported ASN.1 DER tag: 0x1e at DER byte 80 fn get_public_key_correctly_gets_key_from_server_certificate() { let public_key: [u8; 270] = [ 0x30, 0x82, 0x1, 0xa, 0x2, 0x82, 0x1, 0x1, 0x0, 0xc8, 0x90, 0x6b, 0xf0, 0xc6, 0x58, 0x81, 0xa6, 0x89, 0x1c, diff --git a/crates/ironrdp-svc/src/lib.rs b/crates/ironrdp-svc/src/lib.rs index 20679e60..29ba7bd4 100644 --- a/crates/ironrdp-svc/src/lib.rs +++ b/crates/ironrdp-svc/src/lib.rs @@ -170,7 +170,7 @@ pub trait StaticVirtualChannelProcessor: AsAny + fmt::Debug + Send { #[doc(hidden)] fn is_drdynvc(&self) -> bool { - // FIXME: temporary method that will be removed once drdynvc is ported to the new API + // FIXME(#61): temporary method that will be removed once drdynvc is ported to the new API false } } diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index e114554d..3390a55c 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -556,7 +556,7 @@ impl Session { #[allow(clippy::unused_self)] // FIXME: not yet implemented pub fn shutdown(&self) -> Result<(), IronRdpError> { - // TODO: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 + // TODO(#115): https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/27915739-8f77-487e-9927-55008af7fd68 Ok(()) } From 76e3a35df1a69151b879f6414b8665db156d920c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Nov 2023 10:06:48 -0500 Subject: [PATCH 0313/1273] style: normalize casing of error messages (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Error messages should start by a lowercase so it’s easier to compose with other error messages and the final casing is left up to the "error reporter" down the line. This is the convention adopted by the Rust project: - https://rust-lang.github.io/api-guidelines/interoperability.html - https://doc.rust-lang.org/stable/std/error/trait.Error.html --- crates/ironrdp-cliprdr-format/Cargo.toml | 3 +- crates/ironrdp-cliprdr-format/src/bitmap.rs | 12 ++--- crates/ironrdp-cliprdr-format/src/html.rs | 8 +-- crates/ironrdp-cliprdr-native/src/windows.rs | 24 ++++----- crates/ironrdp-cliprdr/src/lib.rs | 4 +- .../ironrdp-glutin-renderer/src/renderer.rs | 16 +++--- crates/ironrdp-graphics/src/pointer.rs | 6 +-- .../src/rdp6/bitmap_stream/decoder.rs | 6 +-- .../src/rdp6/bitmap_stream/encoder.rs | 4 +- crates/ironrdp-graphics/src/rdp6/rle.rs | 12 ++--- crates/ironrdp-graphics/src/rlgr.rs | 2 +- crates/ironrdp-graphics/src/zgfx/mod.rs | 8 +-- crates/ironrdp-pdu/src/codecs/rfx.rs | 50 +++++++++--------- crates/ironrdp-pdu/src/gcc.rs | 24 ++++----- crates/ironrdp-pdu/src/gcc/cluster_data.rs | 2 +- crates/ironrdp-pdu/src/gcc/core_data.rs | 20 +++---- crates/ironrdp-pdu/src/gcc/monitor_data.rs | 4 +- .../src/gcc/monitor_extended_data.rs | 6 +-- .../src/gcc/multi_transport_channel_data.rs | 2 +- crates/ironrdp-pdu/src/gcc/network_data.rs | 4 +- crates/ironrdp-pdu/src/gcc/security_data.rs | 10 ++-- crates/ironrdp-pdu/src/input/mod.rs | 12 ++--- crates/ironrdp-pdu/src/lib.rs | 2 +- crates/ironrdp-pdu/src/mcs.rs | 8 +-- crates/ironrdp-pdu/src/rdp.rs | 28 +++++----- crates/ironrdp-pdu/src/rdp/capability_sets.rs | 52 +++++++++---------- crates/ironrdp-pdu/src/rdp/client_info.rs | 8 +-- .../src/rdp/finalization_messages.rs | 14 ++--- .../ironrdp-pdu/src/rdp/server_error_info.rs | 2 +- crates/ironrdp-pdu/src/rdp/server_license.rs | 2 +- crates/ironrdp-pdu/src/rdp/session_info.rs | 18 +++---- crates/ironrdp-pdu/src/rdp/vc.rs | 18 +++---- crates/ironrdp-pdu/src/rdp/vc/dvc/display.rs | 4 +- crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs | 12 ++--- .../src/rdp/vc/dvc/gfx/graphics_messages.rs | 18 +++---- 35 files changed, 212 insertions(+), 213 deletions(-) diff --git a/crates/ironrdp-cliprdr-format/Cargo.toml b/crates/ironrdp-cliprdr-format/Cargo.toml index a03eff21..b52475fe 100644 --- a/crates/ironrdp-cliprdr-format/Cargo.toml +++ b/crates/ironrdp-cliprdr-format/Cargo.toml @@ -19,5 +19,4 @@ test = false [dependencies] ironrdp-pdu.workspace = true thiserror.workspace = true - -png = "0.17" \ No newline at end of file +png = "0.17" diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index ecc01f76..84330d4b 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -7,17 +7,17 @@ const MAX_BUFFER_SIZE: usize = 64 * 1024 * 1024; // 64 MB #[derive(Debug, Error)] pub enum BitmapError { - #[error("Invalid bitmap header")] + #[error("invalid bitmap header")] InvalidHeader(ironrdp_pdu::PduError), - #[error("Unsupported bitmap: {0}")] + #[error("unsupported bitmap: {0}")] Unsupported(&'static str), - #[error("One of bitmap's dimensions is invalid")] + #[error("one of bitmap's dimensions is invalid")] InvalidSize, - #[error("Buffer size required for allocation is too big")] + #[error("buffer size required for allocation is too big")] BufferTooBig, - #[error("Image width is too big")] + #[error("image width is too big")] WidthTooBig, - #[error("Image height is too big")] + #[error("image height is too big")] HeightTooBig, #[error("PNG encoding error")] PngEncode(#[from] png::EncodingError), diff --git a/crates/ironrdp-cliprdr-format/src/html.rs b/crates/ironrdp-cliprdr-format/src/html.rs index cf45252d..4d77070c 100644 --- a/crates/ironrdp-cliprdr-format/src/html.rs +++ b/crates/ironrdp-cliprdr-format/src/html.rs @@ -2,13 +2,13 @@ use thiserror::Error; #[derive(Debug, Error)] pub enum HtmlError { - #[error("Invalid CF_HTML format")] + #[error("invalid CF_HTML format")] InvalidFormat, - #[error("Invalid UTF-8")] + #[error("invalid UTF-8")] InvalidUtf8(#[from] std::string::FromUtf8Error), - #[error("Failed to parse integer")] + #[error("failed to parse integer")] InvalidInteger(#[from] std::num::ParseIntError), - #[error("Invalid integer conversion")] + #[error("invalid integer conversion")] InvalidConversion, } diff --git a/crates/ironrdp-cliprdr-native/src/windows.rs b/crates/ironrdp-cliprdr-native/src/windows.rs index fd26bc97..7983301b 100644 --- a/crates/ironrdp-cliprdr-native/src/windows.rs +++ b/crates/ironrdp-cliprdr-native/src/windows.rs @@ -28,40 +28,40 @@ pub type WinCliprdrResult = Result; #[derive(Debug, Error)] pub enum WinCliprdrError { - #[error("Failed to register clipboard format listener")] + #[error("failed to register clipboard format listener")] AddClipboardFormatListener, - #[error("Failed to enumerate formats available in the current clipboard")] + #[error("failed to enumerate formats available in the current clipboard")] FormatsEnumeration, - #[error("Clipboard is busy")] + #[error("clipboard is busy")] ClipboardAccessDenied, - #[error("Failed to open the clipboard")] + #[error("failed to open the clipboard")] ClipboardOpen, - #[error("Failed to empty the clipboard")] + #[error("failed to empty the clipboard")] ClipboardEmpty, - #[error("Failed to convert UTF-16 string to UTF-8")] + #[error("failed to convert UTF-16 string to UTF-8")] Uft16Conversion, - #[error("Failed to get current clipboard data")] + #[error("failed to get current clipboard data")] ClipboardData, - #[error("Failed to set clipboard data")] + #[error("failed to set clipboard data")] SetClipboardData, - #[error("Failed to subclass window")] + #[error("failed to subclass window")] WindowSubclass, - #[error("Failed to allocate global memory")] + #[error("failed to allocate global memory")] Alloc, - #[error("Failed to receive data from remote clipboard")] + #[error("failed to receive data from remote clipboard")] DataReceiveTimeout, - #[error("Failed to render clipboard format")] + #[error("failed to render clipboard format")] RenderFormat, #[error("WinAPI error")] diff --git a/crates/ironrdp-cliprdr/src/lib.rs b/crates/ironrdp-cliprdr/src/lib.rs index 57a2a181..bd7cb667 100644 --- a/crates/ironrdp-cliprdr/src/lib.rs +++ b/crates/ironrdp-cliprdr/src/lib.rs @@ -30,10 +30,10 @@ pub type CliprdrSvcMessages = SvcProcessorMessages; #[derive(Debug, Error)] enum ClipboardError { - #[error("Received clipboard PDU is not implemented")] + #[error("received clipboard PDU is not implemented")] UnimplementedPdu { pdu: &'static str }, - #[error("Sent format list was rejected")] + #[error("sent format list was rejected")] FormatListRejected, } diff --git a/crates/ironrdp-glutin-renderer/src/renderer.rs b/crates/ironrdp-glutin-renderer/src/renderer.rs index 5da12399..d6817732 100644 --- a/crates/ironrdp-glutin-renderer/src/renderer.rs +++ b/crates/ironrdp-glutin-renderer/src/renderer.rs @@ -168,21 +168,21 @@ impl Renderer { #[derive(Debug, Error)] pub enum RendererError { - #[error("Unable to send message on channel {0}")] + #[error("unable to send message on channel {0}")] SendError(String), - #[error("Unable to receive message on channel {0}")] + #[error("unable to receive message on channel {0}")] ReceiveError(String), - #[error("errored to decode openh264 stream {0}")] + #[error("failed to decode OpenH264 stream {0}")] OpenH264Error(#[from] openh264::Error), - #[error("Graphics pipeline protocol error: {0}")] + #[error("graphics pipeline protocol error: {0}")] GraphicsPipelineError(#[from] gfx::GraphicsPipelineError), - #[error("Invalid surface id: {0}")] + #[error("invalid surface id: {0}")] InvalidSurfaceId(u16), - #[error("Codec not supported: {0:?}")] + #[error("codec not supported: {0:?}")] UnsupportedCodec(Codec1Type), - #[error("errored to decode rdp data")] + #[error("failed to decode rdp data")] DecodeError, - #[error("Lock poisoned")] + #[error("lock poisoned")] LockPoisonedError, } diff --git a/crates/ironrdp-graphics/src/pointer.rs b/crates/ironrdp-graphics/src/pointer.rs index 16fffbe3..c431180b 100644 --- a/crates/ironrdp-graphics/src/pointer.rs +++ b/crates/ironrdp-graphics/src/pointer.rs @@ -27,11 +27,11 @@ use crate::color_conversion::rdp_16bit_to_rgb; #[derive(Debug, Error)] pub enum PointerError { - #[error("Invalid pointer xorMask size. Expected: {expected}, actual: {actual}")] + #[error("invalid pointer xorMask size. Expected: {expected}, actual: {actual}")] InvalidXorMaskSize { expected: usize, actual: usize }, - #[error("Invalid pointer andMask size. Expected: {expected}, actual: {actual}")] + #[error("invalid pointer andMask size. Expected: {expected}, actual: {actual}")] InvalidAndMaskSize { expected: usize, actual: usize }, - #[error("Not supported pointer bpp: {bpp}")] + #[error("not supported pointer bpp: {bpp}")] NotSupportedBpp { bpp: usize }, #[error(transparent)] Pdu(#[from] ironrdp_pdu::PduError), diff --git a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/decoder.rs b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/decoder.rs index 8ff8c1f4..8fca8e1c 100644 --- a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/decoder.rs +++ b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/decoder.rs @@ -7,11 +7,11 @@ use crate::rdp6::rle::{decompress_8bpp_plane, RleDecodeError}; #[derive(Debug, Error)] pub enum BitmapDecodeError { - #[error("Failed to decode RDP6 bitmap stream PDU: {0}")] + #[error("failed to decode RDP6 bitmap stream PDU: {0}")] Pdu(#[from] PduError), - #[error("Failed to perform RLE decompression of RDP6 bitmap stream: {0}")] + #[error("failed to perform RLE decompression of RDP6 bitmap stream: {0}")] Rle(#[from] RleDecodeError), - #[error("Color plane data size provided in PDU is not sufficient to reconstruct the bitmap")] + #[error("color plane data size provided in PDU is not sufficient to reconstruct the bitmap")] InvalidUncompressedDataSize, } diff --git a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs index d9ccd3df..9e619ff3 100644 --- a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs +++ b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs @@ -7,9 +7,9 @@ use crate::rdp6::rle::{compress_8bpp_plane, RleEncodeError}; #[derive(Debug, Error)] pub enum BitmapEncodeError { - #[error("Failed to rle compress")] + #[error("failed to rle compress")] Rle(RleEncodeError), - #[error("Failed to encode pdu")] + #[error("failed to encode pdu")] Pdu(PduError), } diff --git a/crates/ironrdp-graphics/src/rdp6/rle.rs b/crates/ironrdp-graphics/src/rdp6/rle.rs index ba4f5ace..1983edda 100644 --- a/crates/ironrdp-graphics/src/rdp6/rle.rs +++ b/crates/ironrdp-graphics/src/rdp6/rle.rs @@ -10,25 +10,25 @@ const MAX_DECODED_SEGMENT_SIZE: usize = 47; #[derive(Debug, Error)] pub enum RleDecodeError { - #[error("Failed to read RLE-compressed data: {0}")] + #[error("failed to read RLE-compressed data: {0}")] ReadCompressedData(#[source] std::io::Error), - #[error("Failed to write decompressed data: {0}")] + #[error("failed to write decompressed data: {0}")] WriteDecompressedData(#[source] std::io::Error), - #[error("Invalid RLE segment header")] + #[error("invalid RLE segment header")] InvalidSegmentHeader, - #[error("Decoded scanline segments length exceeds scanline length")] + #[error("decoded scanline segments length exceeds scanline length")] SegmentDoNotFitScanline, } #[derive(Debug, Error)] pub enum RleEncodeError { - #[error("Not enough data to compress")] + #[error("not enough data to compress")] NotEnoughBytes, - #[error("Destination buffer is too small")] + #[error("destination buffer is too small")] BufferTooSmall, } diff --git a/crates/ironrdp-graphics/src/rlgr.rs b/crates/ironrdp-graphics/src/rlgr.rs index 5e41a023..cefcc379 100644 --- a/crates/ironrdp-graphics/src/rlgr.rs +++ b/crates/ironrdp-graphics/src/rlgr.rs @@ -229,6 +229,6 @@ impl From for CompressionMode { pub enum RlgrError { #[error("IO error: {0}")] IoError(#[from] io::Error), - #[error("The input tile is empty")] + #[error("the input tile is empty")] EmptyTile, } diff --git a/crates/ironrdp-graphics/src/zgfx/mod.rs b/crates/ironrdp-graphics/src/zgfx/mod.rs index 5b507e91..c3d328e7 100644 --- a/crates/ironrdp-graphics/src/zgfx/mod.rs +++ b/crates/ironrdp-graphics/src/zgfx/mod.rs @@ -430,12 +430,12 @@ lazy_static::lazy_static! { pub enum ZgfxError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid compression type")] + #[error("invalid compression type")] InvalidCompressionType, - #[error("Invalid segmented descriptor")] + #[error("invalid segmented descriptor")] InvalidSegmentedDescriptor, #[error( - "Decompressed size of segments ({}) does not equal to uncompressed size ({})", + "decompressed size of segments ({}) does not equal to uncompressed size ({})", decompressed_size, uncompressed_size )] @@ -443,7 +443,7 @@ pub enum ZgfxError { decompressed_size: usize, uncompressed_size: usize, }, - #[error("Token bits not found")] + #[error("token bits not found")] TokenBitsNotFound, } diff --git a/crates/ironrdp-pdu/src/codecs/rfx.rs b/crates/ironrdp-pdu/src/codecs/rfx.rs index c32c697d..7a1b17b7 100644 --- a/crates/ironrdp-pdu/src/codecs/rfx.rs +++ b/crates/ironrdp-pdu/src/codecs/rfx.rs @@ -208,55 +208,55 @@ pub enum BlockType { pub enum RfxError { #[error("IO error")] IoError(#[from] io::Error), - #[error("Got invalid block type: {0}")] + #[error("got invalid block type: {0}")] InvalidBlockType(u16), - #[error("Got unexpected Block type: expected ({expected:?}) != actual({actual:?})")] + #[error("got unexpected Block type: expected ({expected:?}) != actual({actual:?})")] UnexpectedBlockType { expected: BlockType, actual: BlockType }, - #[error("Got unexpected Block type ({0:?}) while was expected header message")] + #[error("got unexpected Block type ({0:?}) while was expected header message")] InvalidHeaderBlockType(BlockType), - #[error("Got invalid block length: {0}")] + #[error("got invalid block length: {0}")] InvalidBlockLength(usize), - #[error("Got invalid Sync magic number: {0}")] + #[error("got invalid Sync magic number: {0}")] InvalidMagicNumber(u32), - #[error("Got invalid Sync version: {0}")] + #[error("got invalid Sync version: {0}")] InvalidSyncVersion(u16), - #[error("Got invalid codecs number: {0}")] + #[error("got invalid codecs number: {0}")] InvalidCodecsNumber(u8), - #[error("Got invalid codec ID: {0}")] + #[error("got invalid codec ID: {0}")] InvalidCodecId(u8), - #[error("Got invalid codec version: {0}")] + #[error("got invalid codec version: {0}")] InvalidCodecVersion(u16), - #[error("Got invalid channel ID: {0}")] + #[error("got invalid channel ID: {0}")] InvalidChannelId(u8), - #[error("Got invalid context ID: {0}")] + #[error("got invalid context ID: {0}")] InvalidContextId(u8), - #[error("Got invalid context tile size: {0}")] + #[error("got invalid context tile size: {0}")] InvalidTileSize(u16), - #[error("Got invalid conversion transform: {0}")] + #[error("got invalid conversion transform: {0}")] InvalidColorConversionTransform(u16), - #[error("Got invalid DWT: {0}")] + #[error("got invalid DWT: {0}")] InvalidDwt(u16), - #[error("Got invalid entropy algorithm: {0}")] + #[error("got invalid entropy algorithm: {0}")] InvalidEntropyAlgorithm(u16), - #[error("Got invalid quantization type: {0}")] + #[error("got invalid quantization type: {0}")] InvalidQuantizationType(u16), - #[error("Input buffer is shorter than the data length: {actual} < {expected}")] + #[error("input buffer is shorter than the data length: {actual} < {expected}")] InvalidDataLength { expected: usize, actual: usize }, - #[error("Got invalid Region LRF: {0}")] + #[error("got invalid Region LRF: {0}")] InvalidLrf(bool), - #[error("Got invalid Region type: {0}")] + #[error("got invalid Region type: {0}")] InvalidRegionType(u16), - #[error("Got invalid number of tilesets: {0}")] + #[error("got invalid number of tilesets: {0}")] InvalidNumberOfTilesets(u16), - #[error("Got invalid ID of context: {0}")] + #[error("got invalid ID of context: {0}")] InvalidIdOfContext(u16), - #[error("Got invalid TileSet subtype: {0}")] + #[error("got invalid TileSet subtype: {0}")] InvalidSubtype(u16), - #[error("Got invalid IT flag of TileSet: {0}")] + #[error("got invalid IT flag of TileSet: {0}")] InvalidItFlag(bool), - #[error("Got invalid channel width: {0}")] + #[error("got invalid channel width: {0}")] InvalidChannelWidth(i16), - #[error("Got invalid channel height: {0}")] + #[error("got invalid channel height: {0}")] InvalidChannelHeight(i16), } diff --git a/crates/ironrdp-pdu/src/gcc.rs b/crates/ironrdp-pdu/src/gcc.rs index 7c0ba7d8..b8a7eb49 100644 --- a/crates/ironrdp-pdu/src/gcc.rs +++ b/crates/ironrdp-pdu/src/gcc.rs @@ -371,28 +371,28 @@ impl PduParsing for UserDataHeader { pub enum GccError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Core data block error")] + #[error("core data block error")] CoreError(#[from] CoreDataError), - #[error("Security data block error")] + #[error("security data block error")] SecurityError(#[from] SecurityDataError), - #[error("Network data block error")] + #[error("network data block error")] NetworkError(#[from] NetworkDataError), - #[error("Cluster data block error")] + #[error("cluster data block error")] ClusterError(#[from] ClusterDataError), - #[error("Monitor data block error")] + #[error("monitor data block error")] MonitorError(#[from] MonitorDataError), - #[error("Multi-transport channel data block error")] + #[error("multi-transport channel data block error")] MultiTransportChannelError(#[from] MultiTransportChannelDataError), - #[error("Monitor extended data block error")] + #[error("monitor extended data block error")] MonitorExtendedError(#[from] MonitorExtendedDataError), - #[error("Invalid GCC block type")] + #[error("invalid GCC block type")] InvalidGccType, - #[error("Invalid conference create request: {0}")] + #[error("invalid conference create request: {0}")] InvalidConferenceCreateRequest(String), - #[error("Invalid Conference create response: {0}")] + #[error("invalid Conference create response: {0}")] InvalidConferenceCreateResponse(String), - #[error("A server did not send the required GCC data block: {0:?}")] + #[error("a server did not send the required GCC data block: {0:?}")] RequiredClientDataBlockIsAbsent(ClientGccType), - #[error("A client did not send the required GCC data block: {0:?}")] + #[error("a client did not send the required GCC data block: {0:?}")] RequiredServerDataBlockIsAbsent(ServerGccType), } diff --git a/crates/ironrdp-pdu/src/gcc/cluster_data.rs b/crates/ironrdp-pdu/src/gcc/cluster_data.rs index 6c7f5b1e..3a1742ff 100644 --- a/crates/ironrdp-pdu/src/gcc/cluster_data.rs +++ b/crates/ironrdp-pdu/src/gcc/cluster_data.rs @@ -77,6 +77,6 @@ pub enum RedirectionVersion { pub enum ClusterDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid redirection flags field")] + #[error("invalid redirection flags field")] InvalidRedirectionFlags, } diff --git a/crates/ironrdp-pdu/src/gcc/core_data.rs b/crates/ironrdp-pdu/src/gcc/core_data.rs index dc6cafd0..d11b1b84 100644 --- a/crates/ironrdp-pdu/src/gcc/core_data.rs +++ b/crates/ironrdp-pdu/src/gcc/core_data.rs @@ -45,24 +45,24 @@ impl RdpVersion { pub enum CoreDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid version field")] + #[error("invalid version field")] InvalidVersion, - #[error("Invalid color depth field")] + #[error("invalid color depth field")] InvalidColorDepth, - #[error("Invalid post beta color depth field")] + #[error("invalid post beta color depth field")] InvalidPostBetaColorDepth, - #[error("Invalid high color depth field")] + #[error("invalid high color depth field")] InvalidHighColorDepth, - #[error("Invalid supported color depths field")] + #[error("invalid supported color depths field")] InvalidSupportedColorDepths, - #[error("Invalid secure access sequence field")] + #[error("invalid secure access sequence field")] InvalidSecureAccessSequence, - #[error("Invalid keyboard type field")] + #[error("invalid keyboard type field")] InvalidKeyboardType, - #[error("Invalid early capability flags field")] + #[error("invalid early capability flags field")] InvalidEarlyCapabilityFlags, - #[error("Invalid connection type field")] + #[error("invalid connection type field")] InvalidConnectionType, - #[error("Invalid server security protocol field")] + #[error("invalid server security protocol field")] InvalidServerSecurityProtocol, } diff --git a/crates/ironrdp-pdu/src/gcc/monitor_data.rs b/crates/ironrdp-pdu/src/gcc/monitor_data.rs index fa45b7b8..28409582 100644 --- a/crates/ironrdp-pdu/src/gcc/monitor_data.rs +++ b/crates/ironrdp-pdu/src/gcc/monitor_data.rs @@ -104,8 +104,8 @@ bitflags! { pub enum MonitorDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid monitor count field")] + #[error("invalid monitor count field")] InvalidMonitorCount, - #[error("Invalid monitor flags field")] + #[error("invalid monitor flags field")] InvalidMonitorFlags, } diff --git a/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs b/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs index a0eedfb5..9c0db6de 100644 --- a/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs +++ b/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs @@ -118,10 +118,10 @@ pub enum MonitorOrientation { pub enum MonitorExtendedDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid monitor attribute size field")] + #[error("invalid monitor attribute size field")] InvalidMonitorAttributeSize, - #[error("Invalid monitor orientation field")] + #[error("invalid monitor orientation field")] InvalidMonitorOrientation, - #[error("Invalid monitor count field")] + #[error("invalid monitor count field")] InvalidMonitorCount, } diff --git a/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs b/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs index 18495c7c..ec58bd64 100644 --- a/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs +++ b/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs @@ -47,6 +47,6 @@ bitflags! { pub enum MultiTransportChannelDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid flags field")] + #[error("invalid flags field")] InvalidMultiTransportFlags, } diff --git a/crates/ironrdp-pdu/src/gcc/network_data.rs b/crates/ironrdp-pdu/src/gcc/network_data.rs index 591ea9e4..ece239aa 100644 --- a/crates/ironrdp-pdu/src/gcc/network_data.rs +++ b/crates/ironrdp-pdu/src/gcc/network_data.rs @@ -250,8 +250,8 @@ pub enum NetworkDataError { IOError(#[from] io::Error), #[error("UTF-8 error")] Utf8Error(#[from] str::Utf8Error), - #[error("Invalid channel options field")] + #[error("invalid channel options field")] InvalidChannelOptions, - #[error("Invalid channel count field")] + #[error("invalid channel count field")] InvalidChannelCount, } diff --git a/crates/ironrdp-pdu/src/gcc/security_data.rs b/crates/ironrdp-pdu/src/gcc/security_data.rs index b92e81a3..ec2d580d 100644 --- a/crates/ironrdp-pdu/src/gcc/security_data.rs +++ b/crates/ironrdp-pdu/src/gcc/security_data.rs @@ -185,14 +185,14 @@ pub enum EncryptionLevel { pub enum SecurityDataError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid encryption methods field")] + #[error("invalid encryption methods field")] InvalidEncryptionMethod, - #[error("Invalid encryption level field")] + #[error("invalid encryption level field")] InvalidEncryptionLevel, - #[error("Invalid server random length field: {0}")] + #[error("invalid server random length field: {0}")] InvalidServerRandomLen(u32), - #[error("Invalid input: {0}")] + #[error("invalid input: {0}")] InvalidInput(String), - #[error("Invalid server certificate length: {0}")] + #[error("invalid server certificate length: {0}")] InvalidServerCertificateLen(u32), } diff --git a/crates/ironrdp-pdu/src/input/mod.rs b/crates/ironrdp-pdu/src/input/mod.rs index 06d59c18..2320922d 100644 --- a/crates/ironrdp-pdu/src/input/mod.rs +++ b/crates/ironrdp-pdu/src/input/mod.rs @@ -138,16 +138,16 @@ impl From<&InputEvent> for InputEventType { pub enum InputEventError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid Input Event type: {0}")] + #[error("invalid Input Event type: {0}")] InvalidInputEventType(u16), - #[error("Encryption not supported")] + #[error("encryption not supported")] EncryptionNotSupported, - #[error("Event code not supported {0}")] + #[error("event code not supported {0}")] EventCodeUnsupported(u8), - #[error("Keyboard flags not supported {0}")] + #[error("keyboard flags not supported {0}")] KeyboardFlagsUnsupported(u8), - #[error("Synchronize flags not supported {0}")] + #[error("synchronize flags not supported {0}")] SynchronizeFlagsUnsupported(u8), - #[error("FastPathInput PDU is empty")] + #[error("Fast-Path Input Event PDU is empty")] EmptyFastPathInput, } diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 1580bfd2..4342fafa 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -414,7 +414,7 @@ mod legacy { pub enum RdpError { #[error("IO error")] IOError(#[from] std::io::Error), - #[error("Received invalid action code: {0}")] + #[error("received invalid action code: {0}")] InvalidActionCode(u8), } } diff --git a/crates/ironrdp-pdu/src/mcs.rs b/crates/ironrdp-pdu/src/mcs.rs index 8634f457..34699f1c 100644 --- a/crates/ironrdp-pdu/src/mcs.rs +++ b/crates/ironrdp-pdu/src/mcs.rs @@ -1119,13 +1119,13 @@ mod legacy { RdpError(#[from] crate::RdpError), #[error("GCC block error")] GccError(#[from] GccError), - #[error("Invalid disconnect provider ultimatum")] + #[error("invalid disconnect provider ultimatum")] InvalidDisconnectProviderUltimatum, - #[error("Invalid domain MCS PDU")] + #[error("invalid domain MCS PDU")] InvalidDomainMcsPdu, - #[error("Invalid MCS Connection Sequence PDU")] + #[error("invalid MCS Connection Sequence PDU")] InvalidPdu(String), - #[error("Invalid invalid MCS channel id")] + #[error("invalid invalid MCS channel id")] UnexpectedChannelId(String), } diff --git a/crates/ironrdp-pdu/src/rdp.rs b/crates/ironrdp-pdu/src/rdp.rs index 4d22dce4..01ecf5b5 100644 --- a/crates/ironrdp-pdu/src/rdp.rs +++ b/crates/ironrdp-pdu/src/rdp.rs @@ -61,33 +61,33 @@ impl PduParsing for ClientInfoPdu { pub enum RdpError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Client Info PDU error")] + #[error("client Info PDU error")] ClientInfoError(#[from] ClientInfoError), - #[error("Server License PDU error")] + #[error("server License PDU error")] ServerLicenseError(#[from] ServerLicenseError), - #[error("Capability sets error")] + #[error("capability sets error")] CapabilitySetsError(#[from] CapabilitySetsError), - #[error("Finalization PDUs error")] + #[error("finalization PDUs error")] FinalizationMessagesError(#[from] FinalizationMessagesError), - #[error("Invalid RDP security header")] + #[error("invalid RDP security header")] InvalidSecurityHeader, - #[error("Invalid RDP Share Control Header: {0}")] + #[error("invalid RDP Share Control Header: {0}")] InvalidShareControlHeader(String), - #[error("Invalid RDP Share Data Header: {0}")] + #[error("invalid RDP Share Data Header: {0}")] InvalidShareDataHeader(String), - #[error("Invalid RDP Connection Sequence PDU")] + #[error("invalid RDP Connection Sequence PDU")] InvalidPdu(String), - #[error("Unexpected RDP Share Control Header PDU type: {0:?}")] + #[error("unexpected RDP Share Control Header PDU type: {0:?}")] UnexpectedShareControlPdu(ShareControlPduType), - #[error("Unexpected RDP Share Data Header PDU type: {0:?}")] + #[error("unexpected RDP Share Data Header PDU type: {0:?}")] UnexpectedShareDataPdu(ShareDataPduType), - #[error("Save session info PDU error")] + #[error("save session info PDU error")] SaveSessionInfoError(#[from] session_info::SessionError), - #[error("Server set error info PDU error")] + #[error("server set error info PDU error")] ServerSetErrorInfoError(#[from] ServerSetErrorInfoError), - #[error("Input event PDU error")] + #[error("input event PDU error")] InputEventError(#[from] InputEventError), - #[error("Not enough bytes")] + #[error("not enough bytes")] NotEnoughBytes, } diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets.rs b/crates/ironrdp-pdu/src/rdp/capability_sets.rs index 939edc36..24557347 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets.rs @@ -536,56 +536,56 @@ enum CapabilitySetType { pub enum CapabilitySetsError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Utf8 error")] + #[error("UTF-8 error")] Utf8Error(#[from] std::string::FromUtf8Error), - #[error("Invalid type field")] + #[error("invalid type field")] InvalidType, - #[error("Invalid bitmap compression field")] + #[error("invalid bitmap compression field")] InvalidCompressionFlag, - #[error("Invalid multiple rectangle support field")] + #[error("invalid multiple rectangle support field")] InvalidMultipleRectSupport, - #[error("Invalid protocol version field")] + #[error("invalid protocol version field")] InvalidProtocolVersion, - #[error("Invalid compression types field")] + #[error("invalid compression types field")] InvalidCompressionTypes, - #[error("Invalid update capability flags field")] + #[error("invalid update capability flags field")] InvalidUpdateCapFlag, - #[error("Invalid remote unshare flag field")] + #[error("invalid remote unshare flag field")] InvalidRemoteUnshareFlag, - #[error("Invalid compression level field")] + #[error("invalid compression level field")] InvalidCompressionLevel, - #[error("Invalid brush support level field")] + #[error("invalid brush support level field")] InvalidBrushSupportLevel, - #[error("Invalid glyph support level field")] + #[error("invalid glyph support level field")] InvalidGlyphSupportLevel, - #[error("Invalid RemoteFX capability version")] + #[error("invalid RemoteFX capability version")] InvalidRfxICapVersion, - #[error("Invalid RemoteFX capability tile size")] + #[error("invalid RemoteFX capability tile size")] InvalidRfxICapTileSize, - #[error("Invalid RemoteFXICap color conversion bits")] + #[error("invalid RemoteFXICap color conversion bits")] InvalidRfxICapColorConvBits, - #[error("Invalid RemoteFXICap transform bits")] + #[error("invalid RemoteFXICap transform bits")] InvalidRfxICapTransformBits, - #[error("Invalid RemoteFXICap entropy bits field")] + #[error("invalid RemoteFXICap entropy bits field")] InvalidRfxICapEntropyBits, - #[error("Invalid RemoteFX capability set block type")] + #[error("invalid RemoteFX capability set block type")] InvalidRfxCapsetBlockType, - #[error("Invalid RemoteFX capability set type")] + #[error("invalid RemoteFX capability set type")] InvalidRfxCapsetType, - #[error("Invalid RemoteFX capabilities block type")] + #[error("invalid RemoteFX capabilities block type")] InvalidRfxCapsBlockType, - #[error("Invalid RemoteFX capabilities block length")] + #[error("invalid RemoteFX capabilities block length")] InvalidRfxCapsBockLength, - #[error("Invalid number of capability sets in RemoteFX capabilities")] + #[error("invalid number of capability sets in RemoteFX capabilities")] InvalidRfxCapsNumCapsets, - #[error("Invalid codec property field")] + #[error("invalid codec property field")] InvalidCodecProperty, - #[error("Invalid codec ID")] + #[error("invalid codec ID")] InvalidCodecID, - #[error("Invalid channel chunk size field")] + #[error("invalid channel chunk size field")] InvalidChunkSize, - #[error("Invalid codec property length for the current property ID")] + #[error("invalid codec property length for the current property ID")] InvalidPropertyLength, - #[error("Invalid data length")] + #[error("invalid data length")] InvalidLength, } diff --git a/crates/ironrdp-pdu/src/rdp/client_info.rs b/crates/ironrdp-pdu/src/rdp/client_info.rs index 602d7721..be0b577e 100644 --- a/crates/ironrdp-pdu/src/rdp/client_info.rs +++ b/crates/ironrdp-pdu/src/rdp/client_info.rs @@ -585,13 +585,13 @@ pub enum ClientInfoError { IOError(#[from] io::Error), #[error("UTF-8 error")] Utf8Error(#[from] std::string::FromUtf8Error), - #[error("Invalid address family field")] + #[error("invalid address family field")] InvalidAddressFamily, - #[error("Invalid flags field")] + #[error("invalid flags field")] InvalidClientInfoFlags, - #[error("Invalid performance flags field")] + #[error("invalid performance flags field")] InvalidPerformanceFlags, - #[error("Invalid reconnect cookie field")] + #[error("invalid reconnect cookie field")] InvalidReconnectCookie, } diff --git a/crates/ironrdp-pdu/src/rdp/finalization_messages.rs b/crates/ironrdp-pdu/src/rdp/finalization_messages.rs index 8615b1e5..42ab01d3 100644 --- a/crates/ironrdp-pdu/src/rdp/finalization_messages.rs +++ b/crates/ironrdp-pdu/src/rdp/finalization_messages.rs @@ -179,18 +179,18 @@ bitflags! { pub enum FinalizationMessagesError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Monitor Data error")] + #[error("monitor Data error")] MonitorDataError(#[from] gcc::MonitorDataError), - #[error("Invalid message type field in Synchronize PDU")] + #[error("invalid message type field in Synchronize PDU")] InvalidMessageType, - #[error("Invalid control action field in Control PDU")] + #[error("invalid control action field in Control PDU")] InvalidControlAction, - #[error("Invalid grant id field in Control PDU")] + #[error("invalid grant id field in Control PDU")] InvalidGrantId, - #[error("Invalid control id field in Control PDU")] + #[error("invalid control id field in Control PDU")] InvalidControlId, - #[error("Invalid list flags field in Font List PDU")] + #[error("invalid list flags field in Font List PDU")] InvalidListFlags, - #[error("Invalid monitor count field: {0}")] + #[error("invalid monitor count field: {0}")] InvalidMonitorCount(u32), } diff --git a/crates/ironrdp-pdu/src/rdp/server_error_info.rs b/crates/ironrdp-pdu/src/rdp/server_error_info.rs index 383820c9..fd02cbdf 100644 --- a/crates/ironrdp-pdu/src/rdp/server_error_info.rs +++ b/crates/ironrdp-pdu/src/rdp/server_error_info.rs @@ -389,7 +389,7 @@ impl RdpSpecificCode { pub enum ServerSetErrorInfoError { #[error("IO error")] IoError(#[from] io::Error), - #[error("Unexpected info code: {0}")] + #[error("unexpected info code: {0}")] UnexpectedInfoCode(u32), } diff --git a/crates/ironrdp-pdu/src/rdp/server_license.rs b/crates/ironrdp-pdu/src/rdp/server_license.rs index c7c57887..8be3cf3a 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license.rs @@ -219,7 +219,7 @@ pub enum ServerLicenseError { InvalidRsaPublicKeyDataLength, #[error("invalid License Header security flags")] InvalidSecurityFlags, - #[error("ihe server returned unexpected error")] + #[error("the server returned unexpected error: {0:?}")] UnexpectedError(LicensingErrorMessage), #[error("got unexpected license message")] UnexpectedLicenseMessage, diff --git a/crates/ironrdp-pdu/src/rdp/session_info.rs b/crates/ironrdp-pdu/src/rdp/session_info.rs index 128b7d30..263e70f3 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info.rs @@ -104,22 +104,22 @@ pub enum InfoData { pub enum SessionError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid save session info type value")] + #[error("invalid save session info type value")] InvalidSaveSessionInfoType, - #[error("Invalid domain name size value")] + #[error("invalid domain name size value")] InvalidDomainNameSize, - #[error("Invalid user name size value")] + #[error("invalid user name size value")] InvalidUserNameSize, - #[error("Invalid logon version value")] + #[error("invalid logon version value")] InvalidLogonVersion2, - #[error("Invalid logon info version2 size value")] + #[error("invalid logon info version2 size value")] InvalidLogonVersion2Size, - #[error("Invalid server auto-reconnect packet size value")] + #[error("invalid server auto-reconnect packet size value")] InvalidAutoReconnectPacketSize, - #[error("Invalid server auto-reconnect version")] + #[error("invalid server auto-reconnect version")] InvalidAutoReconnectVersion, - #[error("Invalid logon error type value")] + #[error("invalid logon error type value")] InvalidLogonErrorType, - #[error("Invalid logon error data value")] + #[error("invalid logon error data value")] InvalidLogonErrorData, } diff --git a/crates/ironrdp-pdu/src/rdp/vc.rs b/crates/ironrdp-pdu/src/rdp/vc.rs index 92e5ada7..673b4236 100644 --- a/crates/ironrdp-pdu/src/rdp/vc.rs +++ b/crates/ironrdp-pdu/src/rdp/vc.rs @@ -69,23 +69,23 @@ bitflags! { pub enum ChannelError { #[error("IO error")] IOError(#[from] io::Error), - #[error("From UTF8 error: {}", _0)] + #[error("from UTF-8 error")] FromUtf8Error(#[from] std::string::FromUtf8Error), - #[error("Invalid channel PDU header")] + #[error("invalid channel PDU header")] InvalidChannelPduHeader, - #[error("Invalid channel total data length")] + #[error("invalid channel total data length")] InvalidChannelTotalDataLength, - #[error("Invalid DVC PDU type")] + #[error("invalid DVC PDU type")] InvalidDvcPduType, - #[error("Invalid DVC id length value")] + #[error("invalid DVC id length value")] InvalidDVChannelIdLength, - #[error("Invalid DVC data length value")] + #[error("invalid DVC data length value")] InvalidDvcDataLength, - #[error("Invalid DVC capabilities version")] + #[error("invalid DVC capabilities version")] InvalidDvcCapabilitiesVersion, - #[error("Invalid DVC message size")] + #[error("invalid DVC message size")] InvalidDvcMessageSize, - #[error("Invalid DVC total message size: actual ({actual}) > expected ({expected})")] + #[error("invalid DVC total message size: actual ({actual}) > expected ({expected})")] InvalidDvcTotalMessageSize { actual: usize, expected: usize }, } diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/display.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/display.rs index c95cc39f..91a8d240 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/display.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/display.rs @@ -292,9 +292,9 @@ impl<'a> From<&'a ClientPdu> for ClientPduType { pub enum DisplayPipelineError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid Header cmd ID")] + #[error("invalid Header cmd ID")] InvalidCmdId, - #[error("Invalid PDU length: expected ({expected}) != actual ({actual})")] + #[error("invalid PDU length: expected ({expected}) != actual ({actual})")] InvalidPduLength { expected: usize, actual: usize }, } diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs index 5250218a..ecd7d849 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs @@ -300,17 +300,17 @@ impl<'a> From<&'a ServerPdu> for ServerPduType { pub enum GraphicsPipelineError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Graphics messages error")] + #[error("graphics messages error")] GraphicsMessagesError(#[from] graphics_messages::GraphicsMessagesError), - #[error("Invalid Header cmd ID")] + #[error("invalid Header cmd ID")] InvalidCmdId, - #[error("Unexpected client's PDU type: {0:?}")] + #[error("unexpected client's PDU type: {0:?}")] UnexpectedClientPduType(ClientPduType), - #[error("Unexpected server's PDU type: {0:?}")] + #[error("unexpected server's PDU type: {0:?}")] UnexpectedServerPduType(ServerPduType), - #[error("Invalid ResetGraphics PDU size: expected ({expected}) != actual ({actual})")] + #[error("invalid ResetGraphics PDU size: expected ({expected}) != actual ({actual})")] InvalidResetGraphicsPduSize { expected: usize, actual: usize }, - #[error("Invalid PDU length: expected ({expected}) != actual ({actual})")] + #[error("invalid PDU length: expected ({expected}) != actual ({actual})")] InvalidPduLength { expected: usize, actual: usize }, } diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs index e30b969b..ad5b8026 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -289,22 +289,22 @@ bitflags! { pub enum GraphicsMessagesError { #[error("IO error")] IOError(#[from] io::Error), - #[error("Invalid codec ID version 1")] + #[error("invalid codec ID version 1")] InvalidCodec1Id, - #[error("Invalid codec ID version 2")] + #[error("invalid codec ID version 2")] InvalidCodec2Id, - #[error("Invalid pixel format")] + #[error("invalid pixel format")] InvalidFixelFormat, - #[error("Monitor error")] + #[error("monitor error")] MonitorError(#[from] MonitorDataError), - #[error("Invalid ResetGraphics PDU width: {} > MAX ({})", actual, max)] + #[error("invalid ResetGraphics PDU width: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduWidth { actual: u32, max: u32 }, - #[error("Invalid ResetGraphics PDU height: {} > MAX ({})", actual, max)] + #[error("invalid ResetGraphics PDU height: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduHeight { actual: u32, max: u32 }, - #[error("Invalid ResetGraphics PDU monitors count: {} > MAX ({})", actual, max)] + #[error("invalid ResetGraphics PDU monitors count: {} > MAX ({})", actual, max)] InvalidResetGraphicsPduMonitorsCount { actual: u32, max: u32 }, - #[error("Invalid capabilities version")] + #[error("invalid capabilities version")] InvalidCapabilitiesVersion, - #[error("Both luma and chroma packets specified but length is missing")] + #[error("both luma and chroma packets specified but length is missing")] InvalidAvcEncoding, } From 73ea1ff05fd7c52ec0b8b639b64e4606a6d0e5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Mon, 13 Nov 2023 14:48:52 -0500 Subject: [PATCH 0314/1273] chore(release): prepare web client for 0.9.0 (#280) --- web-client/iron-remote-gui/package-lock.json | 4 ++-- web-client/iron-remote-gui/package.json | 2 +- web-client/iron-remote-gui/public/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index 808e8af2..d4c8023d 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devolutions/iron-remote-gui", - "version": "0.8.1", + "version": "0.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devolutions/iron-remote-gui", - "version": "0.8.1", + "version": "0.9.0", "dependencies": { "@types/ua-parser-js": "^0.7.36", "ua-parser-js": "^1.0.33" diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 64756791..16a54216 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client", - "version": "0.8.1", + "version": "0.9.0", "type": "module", "private": true, "scripts": { diff --git a/web-client/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json index 1df6d118..3cde02ce 100644 --- a/web-client/iron-remote-gui/public/package.json +++ b/web-client/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.8.1", + "version": "0.9.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ From 4979ed4b6ca48a7fd122fece3cb83e561f85eb2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:08:41 -0500 Subject: [PATCH 0315/1273] build(deps): bump tokio from 1.33.0 to 1.34.0 (#283) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.33.0 to 1.34.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.33.0...tokio-1.34.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ crates/ironrdp-tls/Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 812da4b2..d2f01f02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1659,7 +1659,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.4", + "socket2 0.5.5", "widestring 1.0.2", "windows-sys 0.48.0", "winreg 0.50.0", @@ -2079,9 +2079,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.148" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libloading" @@ -2274,9 +2274,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", @@ -3739,9 +3739,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -4069,9 +4069,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", "bytes", @@ -4081,16 +4081,16 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", diff --git a/crates/ironrdp-tls/Cargo.toml b/crates/ironrdp-tls/Cargo.toml index 20187a77..193cb076 100644 --- a/crates/ironrdp-tls/Cargo.toml +++ b/crates/ironrdp-tls/Cargo.toml @@ -22,6 +22,6 @@ native-tls = ["dep:tokio-native-tls"] [dependencies] x509-cert = { version = "0.2", default-features = false, features = ["std"] } -tokio = { version = "1.33", features = ["io-util"] } +tokio = { version = "1.34", features = ["io-util"] } tokio-native-tls = { version = "0.3", optional = true } tokio-rustls = { version = "0.24", features = ["dangerous_configuration"], optional = true } From 179ca93dec6787e871f07b43eab62116aaf025a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:09:18 -0500 Subject: [PATCH 0316/1273] build(deps): bump the patch group with 3 updates (#282) Bumps the patch group with 3 updates: [clap](https://github.com/clap-rs/clap), [tracing-subscriber](https://github.com/tokio-rs/tracing) and [smallvec](https://github.com/servo/rust-smallvec). Updates `clap` from 4.4.7 to 4.4.8 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.4.7...v4.4.8) Updates `tracing-subscriber` from 0.3.17 to 0.3.18 - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.17...tracing-subscriber-0.3.18) Updates `smallvec` from 1.11.1 to 1.11.2 - [Release notes](https://github.com/servo/rust-smallvec/releases) - [Commits](https://github.com/servo/rust-smallvec/compare/v1.11.1...v1.11.2) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: tracing-subscriber dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: smallvec dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d2f01f02..bd8e1d2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", "clap_derive", @@ -523,9 +523,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstream", "anstyle", @@ -3704,9 +3704,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smithay-client-toolkit" @@ -4189,20 +4189,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", From 1a47255e7ea1599fb8af545e110542e9ad4b7962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:09:42 -0500 Subject: [PATCH 0317/1273] build(deps): bump the crypto group with 1 update (#281) Bumps the crypto group with 1 update: [getrandom](https://github.com/rust-random/getrandom). - [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/getrandom/compare/v0.2.10...v0.2.11) --- updated-dependencies: - dependency-name: getrandom dependency-type: direct:production update-type: version-update:semver-patch dependency-group: crypto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd8e1d2d..fef4c204 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1304,9 +1304,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if 1.0.0", "js-sys", From da36bd66cc7dbb0b54fc11b02c9451bdaec7e41f Mon Sep 17 00:00:00 2001 From: mihneabuz Date: Sun, 22 Oct 2023 22:24:25 +0300 Subject: [PATCH 0318/1273] feat(pdu): added RdpHint for any RDP pdu --- crates/ironrdp-pdu/src/lib.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 4342fafa..461532d7 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -327,6 +327,18 @@ pub trait PduHint: Send + Sync + core::fmt::Debug + 'static { fn find_size(&self, bytes: &[u8]) -> PduResult>; } +// Matches both X224 and FastPath pdus +#[derive(Clone, Copy, Debug)] +pub struct RdpHint; + +pub const RDP_HINT: RdpHint = RdpHint; + +impl PduHint for RdpHint { + fn find_size(&self, bytes: &[u8]) -> PduResult> { + find_size(bytes).map(|opt| opt.map(|info| info.length)) + } +} + #[derive(Clone, Copy, Debug)] pub struct X224Hint; From 8c41b7649e3d1f2b96e89e8061eef3b8b4e4d10a Mon Sep 17 00:00:00 2001 From: mihneabuz Date: Tue, 24 Oct 2023 21:27:58 +0300 Subject: [PATCH 0319/1273] fix(acceptor): accumulate and batch process input packets We accumulate input events during the accept connection step, and batch process them before running the main session loop. --- crates/ironrdp-acceptor/src/connection.rs | 11 +++-- crates/ironrdp-acceptor/src/finalization.rs | 55 +++++++++++++++------ crates/ironrdp-server/src/server.rs | 43 ++++++++++++---- 3 files changed, 80 insertions(+), 29 deletions(-) diff --git a/crates/ironrdp-acceptor/src/connection.rs b/crates/ironrdp-acceptor/src/connection.rs index fe7fc047..b80ef7e5 100644 --- a/crates/ironrdp-acceptor/src/connection.rs +++ b/crates/ironrdp-acceptor/src/connection.rs @@ -29,6 +29,7 @@ pub struct Acceptor { pub struct AcceptorResult { pub channels: Vec<(u16, gcc::ChannelDef)>, pub capabilities: Vec, + pub input_events: Vec>, } impl Acceptor { @@ -51,13 +52,15 @@ impl Acceptor { } pub fn get_result(&mut self) -> Option { - match &self.state { + match &mut self.state { AcceptorState::Accepted { channels, client_capabilities, + input_events, } => Some(AcceptorResult { - channels: channels.clone(), - capabilities: client_capabilities.clone(), + channels: std::mem::take(channels), + capabilities: std::mem::take(client_capabilities), + input_events: std::mem::take(input_events), }), _ => None, @@ -120,6 +123,7 @@ pub enum AcceptorState { Accepted { channels: Vec<(u16, gcc::ChannelDef)>, client_capabilities: Vec, + input_events: Vec>, }, } @@ -451,6 +455,7 @@ impl Sequence for Acceptor { AcceptorState::Accepted { channels, client_capabilities, + input_events: finalization.input_events, } } else { AcceptorState::ConnectionFinalization { diff --git a/crates/ironrdp-acceptor/src/finalization.rs b/crates/ironrdp-acceptor/src/finalization.rs index 2cd14f00..9433966f 100644 --- a/crates/ironrdp-acceptor/src/finalization.rs +++ b/crates/ironrdp-acceptor/src/finalization.rs @@ -12,6 +12,8 @@ pub struct FinalizationSequence { state: FinalizationState, user_channel_id: u16, io_channel_id: u16, + + pub input_events: Vec>, } #[derive(Default, Debug)] @@ -64,7 +66,7 @@ impl Sequence for FinalizationSequence { FinalizationState::WaitSynchronize => Some(&pdu::X224Hint), FinalizationState::WaitControlCooperate => Some(&pdu::X224Hint), FinalizationState::WaitRequestControl => Some(&pdu::X224Hint), - FinalizationState::WaitFontList => Some(&pdu::X224Hint), + FinalizationState::WaitFontList => Some(&pdu::RdpHint), FinalizationState::SendSynchronizeConfirm => None, FinalizationState::SendControlCooperateConfirm => None, FinalizationState::SendGrantedControlConfirm => None, @@ -80,9 +82,7 @@ impl Sequence for FinalizationSequence { fn step(&mut self, input: &[u8], output: &mut WriteBuf) -> ConnectorResult { let (written, next_state) = match std::mem::take(&mut self.state) { FinalizationState::WaitSynchronize => { - let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; - - let synchronize = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; + let synchronize = decode_share_control(input); debug!(message = ?synchronize, "Received"); @@ -90,9 +90,7 @@ impl Sequence for FinalizationSequence { } FinalizationState::WaitControlCooperate => { - let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; - - let cooperate = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; + let cooperate = decode_share_control(input); debug!(message = ?cooperate, "Received"); @@ -100,24 +98,26 @@ impl Sequence for FinalizationSequence { } FinalizationState::WaitRequestControl => { - let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; - - let control = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; + let control = decode_share_control(input)?; debug!(message = ?control, "Received"); (Written::Nothing, FinalizationState::WaitFontList) } - FinalizationState::WaitFontList => { - let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; + FinalizationState::WaitFontList => match decode_font_list(input) { + Ok(font_list) => { + debug!(message = ?font_list, "Received"); - let font_list = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; + (Written::Nothing, FinalizationState::SendSynchronizeConfirm) + } - debug!(message = ?font_list, "Received"); + Err(()) => { + self.input_events.push(input.to_vec()); - (Written::Nothing, FinalizationState::SendSynchronizeConfirm) - } + (Written::Nothing, FinalizationState::WaitFontList) + } + }, FinalizationState::SendSynchronizeConfirm => { let synchronize_confirm = create_synchronize_confirm(); @@ -187,6 +187,7 @@ impl FinalizationSequence { state: FinalizationState::WaitSynchronize, user_channel_id, io_channel_id, + input_events: Vec::new(), } } @@ -223,3 +224,25 @@ fn create_font_map() -> rdp::headers::ShareDataPdu { entry_size: 0, }) } + +fn decode_share_control(input: &[u8]) -> ConnectorResult { + let data_request = pdu::decode::>(input).map_err(ConnectorError::pdu)?; + let share_control = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data_request.user_data))?; + Ok(share_control) +} + +fn decode_font_list(input: &[u8]) -> Result { + use pdu::rdp::headers::{ShareControlPdu, ShareDataPdu}; + + let share_control = decode_share_control(input).map_err(|_| ())?; + + let ShareControlPdu::Data(data_pdu) = share_control.share_control_pdu else { + return Err(()); + }; + + let ShareDataPdu::FontList(font_pdu) = data_pdu.share_data_pdu else { + return Err(()); + }; + + Ok(font_pdu) +} diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 6c92e9c6..607bd13d 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -2,8 +2,7 @@ use std::io::Cursor; use std::net::SocketAddr; use anyhow::Result; -use bytes::BytesMut; -use ironrdp_acceptor::{self, Acceptor, BeginResult}; +use ironrdp_acceptor::{self, Acceptor, AcceptorResult, BeginResult}; use ironrdp_pdu::input::fast_path::{FastPathInput, FastPathInputEvent}; use ironrdp_pdu::input::InputEventPdu; use ironrdp_pdu::{self, mcs, nego, rdp, Action, PduParsing}; @@ -133,13 +132,13 @@ impl RdpServer { RdpServerSecurity::Tls(acceptor) => acceptor.accept(stream).await?, RdpServerSecurity::None => unreachable!(), }); - let (framed, _) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; - self.client_loop(framed).await?; + let (framed, result) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; + self.client_loop(framed, result).await?; } Ok(BeginResult::Continue(framed)) => { - let (framed, _) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; - self.client_loop(framed).await?; + let (framed, result) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; + self.client_loop(framed, result).await?; } Err(e) => { @@ -151,13 +150,18 @@ impl RdpServer { Ok(()) } - async fn client_loop(&mut self, mut framed: Framed) -> Result<()> + async fn client_loop(&mut self, mut framed: Framed, result: AcceptorResult) -> Result<()> where S: FramedWrite + FramedRead, { let mut buffer = vec![0u8; 4096]; let mut encoder = UpdateEncoder::new(); + if !result.input_events.is_empty() { + debug!("handling input event backlog from acceptor sequence"); + self.handle_input_backlog(result.input_events).await?; + } + debug!("starting client loop"); 'main: loop { @@ -174,7 +178,7 @@ impl RdpServer { } Action::X224 => { - match self.handle_x224(bytes).await { + match self.handle_x224(&bytes).await { Ok(disconnect) => { if disconnect { break 'main; @@ -213,6 +217,25 @@ impl RdpServer { Ok(()) } + async fn handle_input_backlog(&mut self, frames: Vec>) -> Result<()> { + for frame in frames { + match Action::from_fp_output_header(frame[0]) { + Ok(Action::FastPath) => { + let input = FastPathInput::from_buffer(Cursor::new(&frame))?; + self.handle_fastpath(input).await; + } + + Ok(Action::X224) => { + let _ = self.handle_x224(&frame).await; + } + + _ => unreachable!(), + } + } + + Ok(()) + } + async fn handle_fastpath(&mut self, input: FastPathInput) { for event in input.0 { match event { @@ -243,8 +266,8 @@ impl RdpServer { } } - async fn handle_x224(&mut self, frame: BytesMut) -> Result { - let message = ironrdp_pdu::decode::>(&frame)?; + async fn handle_x224(&mut self, frame: &[u8]) -> Result { + let message = ironrdp_pdu::decode::>(frame)?; match message { mcs::McsMessage::SendDataRequest(data) => { let control = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; From ef57fba453124010bd6d3590e2d50dd5f87ac8d3 Mon Sep 17 00:00:00 2001 From: mihneabuz Date: Thu, 9 Nov 2023 22:25:45 +0200 Subject: [PATCH 0320/1273] fix(server): improve logging --- Cargo.lock | 1 - crates/ironrdp-server/Cargo.toml | 1 - crates/ironrdp-server/src/server.rs | 44 +++++++++++++++++------------ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fef4c204..09ac0a9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1918,7 +1918,6 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "bytes", "ironrdp-acceptor", "ironrdp-graphics", "ironrdp-pdu", diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index 719978b2..a918a8c1 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -17,7 +17,6 @@ test = false [dependencies] anyhow = "1.0" -bytes = "1" tokio = { version = "1", features = ["net", "macros"] } tokio-rustls = "0.24" async-trait = "0.1" diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 607bd13d..f438bcb4 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -118,8 +118,9 @@ impl RdpServer { pub async fn run(&mut self) -> Result<()> { let listener = TcpListener::bind(self.opts.addr).await?; + debug!("Listening for connections"); while let Ok((stream, peer)) = listener.accept().await { - debug!(?peer, "received connection"); + debug!(?peer, "Received connection"); let framed = TokioFramed::new(stream); let size = self.display.size().await; @@ -132,17 +133,22 @@ impl RdpServer { RdpServerSecurity::Tls(acceptor) => acceptor.accept(stream).await?, RdpServerSecurity::None => unreachable!(), }); - let (framed, result) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; - self.client_loop(framed, result).await?; + + match ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await { + Ok((framed, result)) => self.client_loop(framed, result).await?, + Err(error) => error!(?error, "Accept finalize error"), + }; } Ok(BeginResult::Continue(framed)) => { - let (framed, result) = ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await?; - self.client_loop(framed, result).await?; + match ironrdp_acceptor::accept_finalize(framed, &mut acceptor).await { + Ok((framed, result)) => self.client_loop(framed, result).await?, + Err(error) => error!(?error, "Accept finalize error"), + }; } - Err(e) => { - error!("connection error: {:?}", e); + Err(error) => { + error!(?error, "Accept begin error"); } } } @@ -158,11 +164,11 @@ impl RdpServer { let mut encoder = UpdateEncoder::new(); if !result.input_events.is_empty() { - debug!("handling input event backlog from acceptor sequence"); + debug!("Handling input event backlog from acceptor sequence"); self.handle_input_backlog(result.input_events).await?; } - debug!("starting client loop"); + debug!("Starting client loop"); 'main: loop { tokio::select! { @@ -185,8 +191,8 @@ impl RdpServer { } }, - Err(e) => { - error!("x224 input error: {:?}", e); + Err(error) => { + error!(?error, "X224 input error"); } }; } @@ -204,8 +210,8 @@ impl RdpServer { } while let Some(len) = fragmenter.next(&mut buffer) { - if let Err(e) = framed.write_all(&buffer[..len]).await { - error!("write error: {:?}", e); + if let Err(error) = framed.write_all(&buffer[..len]).await { + error!(?error, "Write display update error"); break; }; } @@ -229,7 +235,9 @@ impl RdpServer { let _ = self.handle_x224(&frame).await; } - _ => unreachable!(), + // the frame here is always valid, because otherwise it would + // have failed during the acceptor loop + Err(_) => unreachable!(), } } @@ -260,7 +268,7 @@ impl RdpServer { } FastPathInputEvent::QoeEvent(quality) => { - warn!("received QoE: {}", quality); + warn!("Received QoE: {}", quality); } } } @@ -279,12 +287,12 @@ impl RdpServer { } unexpected => { - warn!("unexpected share data pdu {:?}", unexpected); + warn!(?unexpected, "Unexpected share data pdu"); } }, unexpected => { - warn!("unexpected share control {:?}", unexpected); + warn!(?unexpected, "Unexpected share control"); } } } @@ -296,7 +304,7 @@ impl RdpServer { } unexpected => { - warn!("unexpected mcs message {:?}", ironrdp_pdu::name(&unexpected)); + warn!(name = ironrdp_pdu::name(&unexpected), "Unexpected mcs message"); } } From 1902b79558c92473807ec8681240783420ac04a2 Mon Sep 17 00:00:00 2001 From: mihneabuz Date: Thu, 9 Nov 2023 22:27:49 +0200 Subject: [PATCH 0321/1273] fix(acceptor): mstsc disconnect mstsc sometimes sends a DisconnectUltimatum after receiving the ServerDemandActive --- crates/ironrdp-acceptor/src/connection.rs | 64 ++++++++++++++--------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/crates/ironrdp-acceptor/src/connection.rs b/crates/ironrdp-acceptor/src/connection.rs index b80ef7e5..3a76d884 100644 --- a/crates/ironrdp-acceptor/src/connection.rs +++ b/crates/ironrdp-acceptor/src/connection.rs @@ -1,7 +1,5 @@ -use std::io::Cursor; - use ironrdp_connector::{ - legacy, ConnectorError, ConnectorErrorExt, ConnectorResult, DesktopSize, Sequence, State, Written, + legacy, reason_err, ConnectorError, ConnectorErrorExt, ConnectorResult, DesktopSize, Sequence, State, Written, }; use ironrdp_pdu as pdu; use pdu::rdp::capability_sets::CapabilitySet; @@ -52,18 +50,20 @@ impl Acceptor { } pub fn get_result(&mut self) -> Option { - match &mut self.state { + match std::mem::take(&mut self.state) { AcceptorState::Accepted { channels, client_capabilities, input_events, } => Some(AcceptorResult { - channels: std::mem::take(channels), - capabilities: std::mem::take(client_capabilities), - input_events: std::mem::take(input_events), + channels, + capabilities: client_capabilities, + input_events, }), - - _ => None, + previous_state => { + self.state = previous_state; + None + } } } } @@ -330,7 +330,7 @@ impl Sequence for Acceptor { } => { let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; - let client_info = rdp::ClientInfoPdu::from_buffer(Cursor::new(data.user_data))?; + let client_info = rdp::ClientInfoPdu::from_buffer(data.user_data.as_ref())?; debug!(message = ?client_info, "Received"); @@ -425,24 +425,40 @@ impl Sequence for Acceptor { } AcceptorState::CapabilitiesWaitConfirm { channels } => { - let data = pdu::decode::>(input).map_err(ConnectorError::pdu)?; + let message = ironrdp_pdu::decode::>(input).map_err(ConnectorError::pdu)?; - let capabilities_confirm = rdp::headers::ShareControlHeader::from_buffer(Cursor::new(data.user_data))?; + match message { + mcs::McsMessage::SendDataRequest(data) => { + let capabilities_confirm = + rdp::headers::ShareControlHeader::from_buffer(data.user_data.as_ref())?; - debug!(message = ?capabilities_confirm, "Received"); + debug!(message = ?capabilities_confirm, "Received"); - let ShareControlPdu::ClientConfirmActive(confirm) = capabilities_confirm.share_control_pdu else { - return Err(ConnectorError::general("expected client confirm active")); - }; + let ShareControlPdu::ClientConfirmActive(confirm) = capabilities_confirm.share_control_pdu + else { + return Err(ConnectorError::general("expected client confirm active")); + }; - ( - Written::Nothing, - AcceptorState::ConnectionFinalization { - channels, - finalization: FinalizationSequence::new(self.user_channel_id, self.io_channel_id), - client_capabilities: confirm.pdu.capability_sets, - }, - ) + ( + Written::Nothing, + AcceptorState::ConnectionFinalization { + channels, + finalization: FinalizationSequence::new(self.user_channel_id, self.io_channel_id), + client_capabilities: confirm.pdu.capability_sets, + }, + ) + } + + mcs::McsMessage::DisconnectProviderUltimatum(ultimatum) => { + return Err(reason_err!("received disconnect ultimatum", "{:?}", ultimatum.reason)) + } + + _ => { + warn!(?message, "Unexpected MCS message received"); + + (Written::Nothing, AcceptorState::CapabilitiesWaitConfirm { channels }) + } + } } AcceptorState::ConnectionFinalization { From 2849d5830b7d22264894e85e72ce7712fa4f27b8 Mon Sep 17 00:00:00 2001 From: "irvingouj@Devolutions" <139169536+irvingoujAtDevolution@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:51:36 -0500 Subject: [PATCH 0322/1273] chore(web-client): ignore *.css in ESLint (#284) --- web-client/iron-svelte-client/.eslintrc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/web-client/iron-svelte-client/.eslintrc.yaml b/web-client/iron-svelte-client/.eslintrc.yaml index f21ec152..c0317ae2 100644 --- a/web-client/iron-svelte-client/.eslintrc.yaml +++ b/web-client/iron-svelte-client/.eslintrc.yaml @@ -31,6 +31,7 @@ parserOptions: ignorePatterns: - '*.cjs' + - '*.css' overrides: - files: '*.svelte' From c4fae49d4542ce87f6e1e4042a66f1a1b648a3f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 16 Nov 2023 11:27:46 -0500 Subject: [PATCH 0323/1273] chore(web-client): bump prettier to 3.1.0 (#285) A bug in 3.0.x versions was causing the --plugin setting to be set in order to let prettier know about svelte. This is now fixed. --- web-client/iron-remote-gui/package-lock.json | 18 +++++++++--------- web-client/iron-remote-gui/package.json | 9 ++++----- .../iron-svelte-client/package-lock.json | 18 +++++++++--------- web-client/iron-svelte-client/package.json | 9 ++++----- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index d4c8023d..c90722d5 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -19,8 +19,8 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-svelte": "^2.34.1", - "prettier": "^3.0.3", - "prettier-plugin-svelte": "^3.0.3", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", "rxjs": "^6.6.7", "svelte": "^3.54.0", "svelte-check": "^2.10.0", @@ -3129,9 +3129,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -3156,13 +3156,13 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz", - "integrity": "sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.0.tgz", + "integrity": "sha512-96+AZxs2ESqIFA9j+o+DHqY+BsUglezfl553LQd6VOtTyJq5GPuBEb3ElxF2cerFzKlYKttlH/VcVmRNj5oc3A==", "dev": true, "peerDependencies": { "prettier": "^3.0.0", - "svelte": "^3.2.0 || ^4.0.0-next.0" + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, "node_modules/punycode": { diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 16a54216..4b95edb9 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -19,18 +19,17 @@ "check": "svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", "lint": "npm run lint:prettier && npm run lint:eslint", - "lint:prettier": "prettier --check . --plugin prettier-plugin-svelte", + "lint:prettier": "prettier --check .", "lint:eslint": "eslint src/**", - "format": "prettier --write . --plugin prettier-plugin-svelte" + "format": "prettier --write ." }, - "//": "FIXME: There's currently an issue with Prettier 3.0 which requires the seemingly redundant --plugin setting. This bug will be fixed in the 3.1, and the extra argument may then be removed", "devDependencies": { "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-svelte": "^2.34.1", - "prettier": "^3.0.3", - "prettier-plugin-svelte": "^3.0.3", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", "rxjs": "^6.6.7", "svelte": "^3.54.0", "svelte-check": "^2.10.0", diff --git a/web-client/iron-svelte-client/package-lock.json b/web-client/iron-svelte-client/package-lock.json index 516a1833..b9010479 100644 --- a/web-client/iron-svelte-client/package-lock.json +++ b/web-client/iron-svelte-client/package-lock.json @@ -24,8 +24,8 @@ "eslint-plugin-svelte": "^2.34.1", "fs-extra": "^11.1.0", "guid-typescript": "^1.0.9", - "prettier": "^3.0.3", - "prettier-plugin-svelte": "^3.0.3", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", "rxjs": "^6.6.7", "svelte": "^3.44.0", "svelte-check": "^2.7.1", @@ -3262,9 +3262,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -3289,13 +3289,13 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.0.3.tgz", - "integrity": "sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.0.tgz", + "integrity": "sha512-96+AZxs2ESqIFA9j+o+DHqY+BsUglezfl553LQd6VOtTyJq5GPuBEb3ElxF2cerFzKlYKttlH/VcVmRNj5oc3A==", "dev": true, "peerDependencies": { "prettier": "^3.0.0", - "svelte": "^3.2.0 || ^4.0.0-next.0" + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, "node_modules/punycode": { diff --git a/web-client/iron-svelte-client/package.json b/web-client/iron-svelte-client/package.json index aac310d7..21fb4761 100644 --- a/web-client/iron-svelte-client/package.json +++ b/web-client/iron-svelte-client/package.json @@ -14,11 +14,10 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "npm run lint:prettier && npm run lint:eslint", - "lint:prettier": "prettier --check . --plugin prettier-plugin-svelte", + "lint:prettier": "prettier --check .", "lint:eslint": "eslint src/**", - "format": "prettier --write . --plugin prettier-plugin-svelte" + "format": "prettier --write ." }, - "//": "FIXME: There's currently an issue with Prettier 3.0 which requires the seemingly redundant --plugin setting. This bug will be fixed in the 3.1, and the extra argument may then be removed", "devDependencies": { "beercss": "^2.3.0", "cross-env": "7.0.3", @@ -30,8 +29,8 @@ "fs-extra": "^11.1.0", "guid-typescript": "^1.0.9", "@material-design-icons/font": "^0.14.2", - "prettier": "^3.0.3", - "prettier-plugin-svelte": "^3.0.3", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.0", "@rollup/plugin-replace": "^5.0.1", "rxjs": "^6.6.7", "svelte": "^3.44.0", From 89f25b4335ce74de355c1f2b4aadb50a5d7c1419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 16 Nov 2023 12:51:53 -0500 Subject: [PATCH 0324/1273] feat(cliprdr): BI_BITFIELDS compression is supported (#286) It turns out we partially support the BI_BITFIELDS compression (which is not actually for compressed bitmaps). Quote from [MS-WMF] section 2.1.1.7: > The bitmap is not compressed, and the color table consists of three > DWORD (defined in [MS-DTYP] section 2.2.9) color masks that specify the > red, green, and blue components, respectively, of each pixel. This is > valid when used with 16 and 32-bits per pixel bitmaps. --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 37 +++++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index 84330d4b..c5cceeda 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -417,13 +417,6 @@ fn validate_v1_header(header: &BitmapInfoHeader) -> Result<(), BitmapError> { return Err(BitmapError::Unsupported("unsupported bit count")); } - // We support only uncompressed DIB bitmaps as it is the most common case for clipboard-copied - // bitmaps. - const SUPPORTED_COMPRESSION: &[BitmapCompression] = &[BitmapCompression::RGB]; - if !SUPPORTED_COMPRESSION.contains(&header.compression) { - return Err(BitmapError::Unsupported("unsupported compression")); - } - // This is only relevant for bitmaps with bpp < 24, which are not supported. if header.clr_used != 0 { return Err(BitmapError::Unsupported("color table is not supported")); @@ -435,6 +428,27 @@ fn validate_v1_header(header: &BitmapInfoHeader) -> Result<(), BitmapError> { fn validate_v5_header(header: &BitmapV5Header) -> Result<(), BitmapError> { validate_v1_header(&header.header_v1)?; + // We support only uncompressed DIB bitmaps as it is the most common case for clipboard-copied bitmaps. + const DIBV5_SUPPORTED_COMPRESSION: &[BitmapCompression] = &[BitmapCompression::RGB, BitmapCompression::BITFIELDS]; + + if !DIBV5_SUPPORTED_COMPRESSION.contains(&header.header_v1.compression) { + return Err(BitmapError::Unsupported("unsupported compression")); + } + + if header.header_v1.compression == BitmapCompression::BITFIELDS { + // Currently, we only support the standard order, BGRA, for the bitfields compression. + let is_bgr = header.red_mask == 0x00FF0000 && header.green_mask == 0x0000FF00 && header.blue_mask == 0x000000FF; + + // Note: when there is no alpha channel, the mask is 0x00000000 and we support this too. + let is_supported_alpha = header.alpha_mask == 0 || header.alpha_mask == 0xFF000000; + + if !is_bgr || !is_supported_alpha { + return Err(BitmapError::Unsupported( + "non-standard color masks for `BITFIELDS` compression are not supported", + )); + } + } + const SUPPORTED_COLOR_SPACE: &[ColorSpace] = &[ ColorSpace::SRGB, // Assume that Windows color space is sRGB, either way we don't have enough information on @@ -589,6 +603,15 @@ pub fn dib_to_png(input: &[u8]) -> Result, BitmapError> { validate_v1_header(&header)?; + // We support only uncompressed DIB bitmaps as it is the most common case for clipboard-copied bitmaps. + // However, for DIBv1 specifically, BitmapCompression::BITFIELDS is not supported even when the order is BGRA, + // because there is an additional variable-sized header holding the color masks that we don’t support yet. + const DIBV1_SUPPORTED_COMPRESSION: &[BitmapCompression] = &[BitmapCompression::RGB]; + + if !DIBV1_SUPPORTED_COMPRESSION.contains(&header.compression) { + return Err(BitmapError::Unsupported("unsupported compression")); + } + let png_inputs = transform_bitmap(&header, src.remaining(), false)?; encode_png(png_inputs) } From 5530550ef394dea8646a2059b8e24a45e0d26c17 Mon Sep 17 00:00:00 2001 From: "irvingouj@Devolutions" <139169536+irvingoujAtDevolution@users.noreply.github.com> Date: Thu, 16 Nov 2023 23:12:13 -0500 Subject: [PATCH 0325/1273] feat(credssp): support for Kerberos (#260) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: ARC-139 Co-authored-by: Benoît Cortier --- Cargo.lock | 639 ++++++------------ Cargo.toml | 2 +- crates/ironrdp-async/src/connector.rs | 119 +++- crates/ironrdp-async/src/lib.rs | 13 + crates/ironrdp-blocking/src/connector.rs | 101 ++- crates/ironrdp-blocking/src/lib.rs | 1 - crates/ironrdp-client/Cargo.toml | 2 + crates/ironrdp-client/src/lib.rs | 1 + crates/ironrdp-client/src/network_client.rs | 116 ++++ crates/ironrdp-client/src/rdp.rs | 17 +- crates/ironrdp-connector/Cargo.toml | 1 + crates/ironrdp-connector/src/connection.rs | 245 +------ .../ironrdp-connector/src/credssp_sequence.rs | 213 ++++++ crates/ironrdp-connector/src/lib.rs | 29 + crates/ironrdp-web/Cargo.toml | 4 +- crates/ironrdp-web/src/network_client.rs | 129 ++-- crates/ironrdp-web/src/session.rs | 55 +- crates/ironrdp/examples/screenshot.rs | 22 +- web-client/iron-remote-gui/README.md | 24 +- .../src/interfaces/UserInteraction.ts | 1 + .../iron-remote-gui/src/services/PublicAPI.ts | 2 + .../src/services/wasm-bridge.service.ts | 2 + .../src/lib/login/login.svelte | 7 +- 23 files changed, 992 insertions(+), 753 deletions(-) create mode 100644 crates/ironrdp-client/src/network_client.rs create mode 100644 crates/ironrdp-connector/src/credssp_sequence.rs diff --git a/Cargo.lock b/Cargo.lock index 09ac0a9d..5bd100d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,7 +39,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher", "cpufeatures", ] @@ -200,8 +200,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", "synstructure", ] @@ -212,8 +212,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -236,14 +236,25 @@ dependencies = [ "winapi", ] +[[package]] +name = "async-recursion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "async-trait" version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -261,7 +272,7 @@ checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", @@ -274,12 +285,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.4" @@ -343,15 +348,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -419,8 +415,8 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -469,12 +465,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -540,8 +530,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -593,7 +583,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen", ] @@ -671,7 +661,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -701,9 +691,9 @@ dependencies = [ [[package]] name = "crypto" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d88231face754cdb045c1b65912a0f4ff78ca24bf371e30a4a8cfa993b3897" +checksum = "bf1e6e5492f8f0830c37f301f6349e0dac8b2466e4fe89eef90e9eef906cd046" dependencies = [ "crypto-common", ] @@ -746,7 +736,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37e366bff8cd32dd8754b0991fb66b279dc48f598c3a18914852a6673deef583" dependencies = [ - "quote 1.0.33", + "quote", "syn 2.0.37", ] @@ -756,10 +746,10 @@ version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest 0.10.7", + "digest", "fiat-crypto", "platforms", "rustc_version", @@ -773,8 +763,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -816,8 +806,8 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -836,8 +826,8 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -856,22 +846,13 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "const-oid", "crypto-common", "subtle", @@ -889,8 +870,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -966,7 +947,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der", - "digest 0.10.7", + "digest", "elliptic-curve", "rfc6979", "signature", @@ -993,7 +974,7 @@ dependencies = [ "ed25519", "rand_core", "serde", - "sha2 0.10.8", + "sha2", "zeroize", ] @@ -1005,7 +986,7 @@ checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct", "crypto-bigint", - "digest 0.10.7", + "digest", "ff", "generic-array", "group", @@ -1024,19 +1005,19 @@ version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "enum-as-inner" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] @@ -1154,8 +1135,8 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -1240,8 +1221,8 @@ version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -1308,7 +1289,7 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi", @@ -1435,17 +1416,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "hmac 0.12.1", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac", - "digest 0.9.0", + "hmac", ] [[package]] @@ -1454,7 +1425,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] @@ -1540,6 +1511,19 @@ dependencies = [ "tokio-rustls", ] +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "iana-time-zone" version = "0.1.57" @@ -1563,17 +1547,6 @@ dependencies = [ "cc", ] -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.4.0" @@ -1636,7 +1609,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -1660,7 +1633,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ "socket2 0.5.5", - "widestring 1.0.2", + "widestring", "windows-sys 0.48.0", "winreg 0.50.0", ] @@ -1739,6 +1712,7 @@ dependencies = [ "ironrdp-tls", "ironrdp-tokio", "proc-exit", + "reqwest", "semver", "smallvec", "softbuffer", @@ -1747,6 +1721,7 @@ dependencies = [ "tokio", "tracing", "tracing-subscriber", + "url", "whoami", "windows 0.48.0", "winit", @@ -1794,6 +1769,7 @@ dependencies = [ "rand_core", "sspi", "tracing", + "url", "winapi", ] @@ -1844,7 +1820,7 @@ dependencies = [ "ironrdp-error", "ironrdp-pdu", "lazy_static", - "num-derive 0.4.1", + "num-derive", "num-traits", "thiserror", ] @@ -1870,9 +1846,9 @@ dependencies = [ "ironrdp-error", "ironrdp-testsuite-core", "lazy_static", - "md-5 0.10.6", + "md-5", "num-bigint", - "num-derive 0.4.1", + "num-derive", "num-integer", "num-traits", "pkcs1", @@ -2088,7 +2064,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "winapi", ] @@ -2098,7 +2074,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "windows-sys 0.48.0", ] @@ -2169,42 +2145,23 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "md-5" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "md-5" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ - "cfg-if 1.0.0", - "digest 0.10.7", + "cfg-if", + "digest", ] [[package]] name = "md4" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1a7931601ee6a560262a1dc9a8369949f5b7ae20b2bbf029c74fbd6d1b09e2" +checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -2346,7 +2303,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.6.5", ] @@ -2359,7 +2316,7 @@ checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ "autocfg", "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.6.5", ] @@ -2371,7 +2328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", @@ -2426,25 +2383,14 @@ dependencies = [ "zeroize", ] -[[package]] -name = "num-derive" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", -] - [[package]] name = "num-derive" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -2514,8 +2460,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -2526,8 +2472,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -2590,12 +2536,6 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - [[package]] name = "openssl" version = "0.10.57" @@ -2603,7 +2543,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ "bitflags 2.4.1", - "cfg-if 1.0.0", + "cfg-if", "foreign-types 0.3.2", "libc", "once_cell", @@ -2617,8 +2557,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -2673,7 +2613,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -2685,7 +2625,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -2704,24 +2644,13 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", "smallvec", "windows-targets 0.48.5", ] -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - [[package]] name = "paste" version = "1.0.14" @@ -2730,15 +2659,13 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", - "password-hash", - "sha-1", - "sha2 0.10.8", + "digest", + "hmac", + "sha1", ] [[package]] @@ -2762,40 +2689,28 @@ version = "7.0.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52cccdaffd2f361b4b4eb70b4249bd71d89bb66cb84b7f76483ecd1640c543ce" dependencies = [ - "base64 0.21.4", - "digest 0.10.7", + "base64", + "digest", "ed25519-dalek", - "md-5 0.10.6", + "md-5", "num-bigint-dig", "p256", "p384", - "picky-asn1 0.8.0", + "picky-asn1", "picky-asn1-der", - "picky-asn1-x509 0.12.0", + "picky-asn1-x509", "rand", "rand_core", "rsa", "serde", "sha1", - "sha2 0.10.8", + "sha2", "sha3", "thiserror", "x25519-dalek", "zeroize", ] -[[package]] -name = "picky-asn1" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f338f1fd4f3e13e75e986ca29f2a3c62528d88d3cbadf4afdcefb6b087f2d32" -dependencies = [ - "chrono", - "oid", - "serde", - "serde_bytes", -] - [[package]] name = "picky-asn1" version = "0.8.0" @@ -2805,6 +2720,7 @@ dependencies = [ "oid", "serde", "serde_bytes", + "time", "zeroize", ] @@ -2814,58 +2730,45 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5df7873a9e36d42dadb393bea5e211fe83d793c172afad5fb4ec846ec582793f" dependencies = [ - "picky-asn1 0.8.0", + "picky-asn1", "serde", "serde_bytes", ] -[[package]] -name = "picky-asn1-x509" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb51541f90aa99f2fa7191c8daebc224d500cd5963c6ca3e6cede9645a1b2e1" -dependencies = [ - "base64 0.13.1", - "oid", - "picky-asn1 0.7.2", - "picky-asn1-der", - "serde", - "widestring 0.5.1", -] - [[package]] name = "picky-asn1-x509" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c5f20f71a68499ff32310f418a6fad8816eac1a2859ed3f0c5c741389dd6208" dependencies = [ - "base64 0.21.4", + "base64", "num-bigint-dig", "oid", - "picky-asn1 0.8.0", + "picky-asn1", "picky-asn1-der", "serde", + "widestring", "zeroize", ] [[package]] name = "picky-krb" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ce6e874e53f3a7375000c959adebeee4f419f1340280cfd59fb8962bfe6edf" +checksum = "f71cf61ebe6e657a81bcac31f9d61d52c23a1fd517b0dad77b915a7d3d15d2e8" dependencies = [ "aes", "byteorder", "cbc", "crypto", "des", - "hmac 0.12.1", + "hmac", "num-bigint-dig", "oid", "pbkdf2", - "picky-asn1 0.7.2", + "picky-asn1", "picky-asn1-der", - "picky-asn1-x509 0.9.0", + "picky-asn1-x509", "rand", "serde", "sha1", @@ -2894,8 +2797,8 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -3013,15 +2916,6 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.67" @@ -3066,22 +2960,13 @@ dependencies = [ "memchr", ] -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.67", + "proc-macro2", ] [[package]] @@ -3200,7 +3085,7 @@ version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.4", + "base64", "bytes", "encoding_rs", "futures-core", @@ -3210,10 +3095,12 @@ dependencies = [ "http-body", "hyper", "hyper-rustls", + "hyper-tls", "ipnet", "js-sys", "log", "mime", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -3225,6 +3112,7 @@ dependencies = [ "serde_urlencoded", "system-configuration", "tokio", + "tokio-native-tls", "tokio-rustls", "tower-service", "url", @@ -3251,7 +3139,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac 0.12.1", + "hmac", "subtle", ] @@ -3292,7 +3180,7 @@ checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", "const-oid", - "digest 0.10.7", + "digest", "num-bigint-dig", "num-integer", "num-iter", @@ -3324,10 +3212,10 @@ version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "glob", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "regex", "relative-path", "rustc_version", @@ -3402,7 +3290,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.4", + "base64", ] [[package]] @@ -3544,8 +3432,8 @@ version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -3572,39 +3460,15 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha1" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -3613,9 +3477,9 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -3624,7 +3488,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.7", + "digest", "keccak", ] @@ -3673,7 +3537,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest 0.10.7", + "digest", "rand_core", ] @@ -3802,29 +3666,29 @@ dependencies = [ [[package]] name = "sspi" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c7d9adbb5308206ea1c4c98b7d941ed9b1cfda2af2c2a1d6456d2a1701e4cf1" +checksum = "bf9e7d03e3a0314c94b37625112eeaba08068b0ffbb181deefd4c7deae5ba046" dependencies = [ "async-dnssd", - "bitflags 1.3.2", + "async-recursion", + "bitflags 2.4.1", "byteorder", - "cfg-if 0.1.10", - "chrono", + "cfg-if", "crypto-mac", "futures", - "hmac 0.11.0", + "hmac", "lazy_static", - "md-5 0.9.1", + "md-5", "md4", "num-bigint-dig", - "num-derive 0.2.5", + "num-derive", "num-traits", "oid", "picky", - "picky-asn1 0.7.2", + "picky-asn1", "picky-asn1-der", - "picky-asn1-x509 0.9.0", + "picky-asn1-x509", "picky-krb", "portpicker", "rand", @@ -3832,16 +3696,17 @@ dependencies = [ "serde", "serde_derive", "sha1", - "sha2 0.9.9", + "sha2", + "time", "tokio", "tracing", "trust-dns-resolver", "url", "uuid", "winapi", - "windows 0.39.0", - "windows-sys 0.42.0", - "winreg 0.10.1", + "windows 0.51.1", + "windows-sys 0.48.0", + "winreg 0.51.0", "zeroize", ] @@ -3863,25 +3728,14 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "unicode-ident", ] @@ -3891,8 +3745,8 @@ version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "unicode-ident", ] @@ -3902,10 +3756,10 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", - "unicode-xid 0.2.4", + "unicode-xid", ] [[package]] @@ -3941,7 +3795,7 @@ version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "redox_syscall", "rustix", @@ -3963,8 +3817,8 @@ version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -3974,7 +3828,7 @@ version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", ] @@ -4017,7 +3871,7 @@ dependencies = [ "arrayref", "arrayvec", "bytemuck", - "cfg-if 1.0.0", + "cfg-if", "png", "tiny-skia-path", ] @@ -4091,8 +3945,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -4171,8 +4025,8 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] @@ -4231,46 +4085,47 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.21.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" dependencies = [ "async-trait", - "cfg-if 1.0.0", + "cfg-if", "data-encoding", "enum-as-inner", "futures-channel", "futures-io", "futures-util", - "idna 0.2.3", + "idna", "ipnet", - "lazy_static", - "log", + "once_cell", "rand", "smallvec", "thiserror", "tinyvec", "tokio", + "tracing", "url", ] [[package]] name = "trust-dns-resolver" -version = "0.21.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "futures-util", "ipconfig", - "lazy_static", - "log", "lru-cache", + "once_cell", "parking_lot", + "rand", "resolv-conf", "smallvec", "thiserror", "tokio", + "tracing", "trust-dns-proto", ] @@ -4331,12 +4186,6 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.4" @@ -4362,7 +4211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna", "percent-encoding", ] @@ -4436,7 +4285,7 @@ version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -4449,8 +4298,8 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", "wasm-bindgen-shared", ] @@ -4461,7 +4310,7 @@ version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -4473,7 +4322,7 @@ version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ - "quote 1.0.33", + "quote", "wasm-bindgen-macro-support", ] @@ -4483,8 +4332,8 @@ version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -4580,8 +4429,8 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "xml-rs", ] @@ -4591,9 +4440,9 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e" dependencies = [ - "proc-macro2 1.0.67", + "proc-macro2", "quick-xml", - "quote 1.0.33", + "quote", ] [[package]] @@ -4645,12 +4494,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "widestring" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" - [[package]] name = "widestring" version = "1.0.2" @@ -4688,19 +4531,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", -] - [[package]] name = "windows" version = "0.48.0" @@ -4711,18 +4541,22 @@ dependencies = [ ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-core", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", ] [[package]] @@ -4785,12 +4619,6 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -4803,12 +4631,6 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -4821,12 +4643,6 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -4839,12 +4655,6 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -4869,12 +4679,6 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -4931,22 +4735,23 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - [[package]] name = "winreg" version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winreg" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" +dependencies = [ + "cfg-if", "windows-sys 0.48.0", ] @@ -5080,7 +4885,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 2.0.37", ] diff --git a/Cargo.toml b/Cargo.toml index 6ffb7432..1cab853c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,7 @@ ironrdp = { version = "0.5", path = "crates/ironrdp" } expect-test = "1" proptest = "1.3" rstest = "0.18" -sspi = "0.10" +sspi = "0.11" tracing = { version = "0.1", features = ["log"] } thiserror = "1.0" diff --git a/crates/ironrdp-async/src/connector.rs b/crates/ironrdp-async/src/connector.rs index 89d09657..c7543c13 100644 --- a/crates/ironrdp-async/src/connector.rs +++ b/crates/ironrdp-async/src/connector.rs @@ -1,9 +1,16 @@ use ironrdp_connector::{ - ClientConnector, ClientConnectorState, ConnectionResult, ConnectorResult, Sequence as _, State as _, + credssp_sequence::{CredsspProcessGenerator, CredsspSequence}, + custom_err, + sspi::{credssp::ClientState, generator::GeneratorState}, + ClientConnector, ClientConnectorState, ConnectionResult, ConnectorResult, KerberosConfig, Sequence as _, + ServerName, State as _, Written, }; use ironrdp_pdu::write_buf::WriteBuf; -use crate::framed::{Framed, FramedRead, FramedWrite}; +use crate::{ + framed::{Framed, FramedRead, FramedWrite}, + AsyncNetworkClient, +}; #[non_exhaustive] pub struct ShouldUpgrade; @@ -33,9 +40,8 @@ pub fn skip_connect_begin(connector: &mut ClientConnector) -> ShouldUpgrade { pub struct Upgraded; #[instrument(skip_all)] -pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector, server_public_key: Vec) -> Upgraded { +pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector) -> Upgraded { trace!("Marked as upgraded"); - connector.attach_server_public_key(server_public_key); connector.mark_security_upgrade_as_done(); Upgraded } @@ -44,15 +50,28 @@ pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector, serve pub async fn connect_finalize( _: Upgraded, framed: &mut Framed, + server_name: ServerName, + server_public_key: Vec, + network_client: Option<&mut dyn AsyncNetworkClient>, mut connector: ClientConnector, + kerberos_config: Option, ) -> ConnectorResult where S: FramedRead + FramedWrite, { let mut buf = WriteBuf::new(); - while connector.is_credssp_step() { - single_connect_step(framed, &mut connector, &mut buf).await?; + if connector.should_perform_credssp() { + perform_credssp_step( + framed, + &mut connector, + &mut buf, + server_name, + server_public_key, + network_client, + kerberos_config, + ) + .await?; } let result = loop { @@ -68,17 +87,99 @@ where Ok(result) } +async fn resolve_generator( + generator: &mut CredsspProcessGenerator<'_>, + network_client: &mut dyn AsyncNetworkClient, +) -> ConnectorResult { + let mut state = generator.start(); + loop { + match state { + GeneratorState::Suspended(request) => { + let response = network_client.send(&request).await?; + state = generator.resume(Ok(response)); + } + GeneratorState::Completed(client_state) => { + break Ok(client_state.map_err(|e| custom_err!("cannot resolve generator state", e))?) + } + } + } +} + +#[instrument(level = "trace", skip(network_client, framed, buf, server_name, server_public_key))] +async fn perform_credssp_step( + framed: &mut Framed, + connector: &mut ClientConnector, + buf: &mut WriteBuf, + server_name: ServerName, + server_public_key: Vec, + mut network_client: Option<&mut dyn AsyncNetworkClient>, + kerberos_config: Option, +) -> ConnectorResult<()> +where + S: FramedRead + FramedWrite, +{ + assert!(connector.should_perform_credssp()); + let mut credssp_sequence = CredsspSequence::new(connector, server_name, server_public_key, kerberos_config)?; + while !credssp_sequence.is_done() { + buf.clear(); + let input = if let Some(next_pdu_hint) = credssp_sequence.next_pdu_hint() { + debug!( + connector.state = connector.state.name(), + hint = ?next_pdu_hint, + "Wait for PDU" + ); + + let pdu = framed + .read_by_hint(next_pdu_hint) + .await + .map_err(|e| ironrdp_connector::custom_err!("read frame by hint", e))?; + + trace!(length = pdu.len(), "PDU received"); + Some(pdu.to_vec()) + } else { + None + }; + + if credssp_sequence.wants_request_from_server() { + credssp_sequence.read_request_from_server(&input.unwrap_or_else(|| [].to_vec()))?; + } + let client_state = { + let mut generator = credssp_sequence.process(); + if let Some(network_client_ref) = network_client.as_deref_mut() { + trace!("resolving network"); + resolve_generator(&mut generator, network_client_ref).await? + } else { + generator + .resolve_to_result() + .map_err(|e| custom_err!(" cannot resolve generator without a network client", e))? + } + }; // drop generator + let written = credssp_sequence.handle_process_result(client_state, buf)?; + + if let Some(response_len) = written.size() { + let response = &buf[..response_len]; + trace!(response_len, "Send response"); + framed + .write_all(response) + .await + .map_err(|e| ironrdp_connector::custom_err!("write all", e))?; + } + } + connector.mark_credssp_as_done(); + Ok(()) +} + pub async fn single_connect_step( framed: &mut Framed, connector: &mut ClientConnector, buf: &mut WriteBuf, -) -> ConnectorResult +) -> ConnectorResult<()> where S: FramedWrite + FramedRead, { buf.clear(); - let written = if let Some(next_pdu_hint) = connector.next_pdu_hint() { + let written: Written = if let Some(next_pdu_hint) = connector.next_pdu_hint() { debug!( connector.state = connector.state.name(), hint = ?next_pdu_hint, @@ -107,5 +208,5 @@ where .map_err(|e| ironrdp_connector::custom_err!("write all", e))?; } - Ok(written) + Ok(()) } diff --git a/crates/ironrdp-async/src/lib.rs b/crates/ironrdp-async/src/lib.rs index 5a04fd17..bdad66aa 100644 --- a/crates/ironrdp-async/src/lib.rs +++ b/crates/ironrdp-async/src/lib.rs @@ -5,6 +5,19 @@ mod connector; mod framed; mod session; +use std::future::Future; +use std::pin::Pin; + +use ironrdp_connector::sspi::generator::NetworkRequest; +use ironrdp_connector::ConnectorResult; + pub use self::connector::*; pub use self::framed::*; // pub use self::session::*; + +pub trait AsyncNetworkClient { + fn send<'a>( + &'a mut self, + network_request: &'a NetworkRequest, + ) -> Pin>> + 'a>>; +} diff --git a/crates/ironrdp-blocking/src/connector.rs b/crates/ironrdp-blocking/src/connector.rs index 23ae9184..a1907969 100644 --- a/crates/ironrdp-blocking/src/connector.rs +++ b/crates/ironrdp-blocking/src/connector.rs @@ -1,7 +1,11 @@ use std::io::{Read, Write}; use ironrdp_connector::{ - ClientConnector, ClientConnectorState, ConnectionResult, ConnectorResult, Sequence as _, State as _, + credssp_sequence::{CredsspProcessGenerator, CredsspSequence}, + custom_err, + sspi::{credssp::ClientState, generator::GeneratorState, network_client::NetworkClient}, + ClientConnector, ClientConnectorState, ConnectionResult, ConnectorResult, KerberosConfig, Sequence as _, + ServerName, State as _, }; use ironrdp_pdu::write_buf::WriteBuf; @@ -35,9 +39,8 @@ pub fn skip_connect_begin(connector: &mut ClientConnector) -> ShouldUpgrade { pub struct Upgraded; #[instrument(skip_all)] -pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector, server_public_key: Vec) -> Upgraded { +pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector) -> Upgraded { trace!("Marked as upgraded"); - connector.attach_server_public_key(server_public_key); connector.mark_security_upgrade_as_done(); Upgraded } @@ -46,7 +49,11 @@ pub fn mark_as_upgraded(_: ShouldUpgrade, connector: &mut ClientConnector, serve pub fn connect_finalize( _: Upgraded, framed: &mut Framed, + server_name: ServerName, + server_public_key: Vec, + network_client: &mut impl NetworkClient, mut connector: ClientConnector, + kerberos_config: Option, ) -> ConnectorResult where S: Read + Write, @@ -55,8 +62,16 @@ where debug!("CredSSP procedure"); - while connector.is_credssp_step() { - single_connect_step(framed, &mut connector, &mut buf)?; + if connector.should_perform_credssp() { + perform_credssp_step( + framed, + &mut connector, + &mut buf, + server_name, + server_public_key, + network_client, + kerberos_config, + )?; } debug!("Remaining of connection sequence"); @@ -74,6 +89,82 @@ where Ok(result) } +#[instrument(level = "info", skip(generator, network_client))] +fn resolve_generator( + generator: &mut CredsspProcessGenerator<'_>, + network_client: &mut impl NetworkClient, +) -> ConnectorResult { + let mut state = generator.start(); + let res = loop { + match state { + GeneratorState::Suspended(request) => { + let response = network_client.send(&request).unwrap(); + state = generator.resume(Ok(response)); + } + GeneratorState::Completed(client_state) => { + break client_state.map_err(|e| custom_err!("failed to resolve generator", e))? + } + } + }; + debug!("client state = {:?}", &res); + Ok(res) +} + +#[instrument(level = "trace", skip(network_client, framed, buf, server_name, server_public_key))] +fn perform_credssp_step( + framed: &mut Framed, + connector: &mut ClientConnector, + buf: &mut WriteBuf, + server_name: ServerName, + server_public_key: Vec, + network_client: &mut impl NetworkClient, + kerberos_config: Option, +) -> ConnectorResult<()> +where + S: Read + Write, +{ + assert!(connector.should_perform_credssp()); + let mut credssp_sequence = CredsspSequence::new(connector, server_name, server_public_key, kerberos_config)?; + while !credssp_sequence.is_done() { + buf.clear(); + let input = if let Some(next_pdu_hint) = credssp_sequence.next_pdu_hint() { + debug!( + connector.state = connector.state.name(), + hint = ?next_pdu_hint, + "Wait for PDU" + ); + + let pdu = framed + .read_by_hint(next_pdu_hint) + .map_err(|e| ironrdp_connector::custom_err!("read frame by hint", e))?; + + trace!(length = pdu.len(), "PDU received"); + Some(pdu.to_vec()) + } else { + None + }; + + if credssp_sequence.wants_request_from_server() { + credssp_sequence.read_request_from_server(&input.unwrap_or_else(|| [].to_vec()))?; + } + let client_state = { + let mut generator = credssp_sequence.process(); + resolve_generator(&mut generator, network_client)? + }; // drop generator + let written = credssp_sequence.handle_process_result(client_state, buf)?; + + if let Some(response_len) = written.size() { + let response = &buf[..response_len]; + trace!(response_len, "Send response"); + framed + .write_all(response) + .map_err(|e| ironrdp_connector::custom_err!("write all", e))?; + } + } + connector.mark_credssp_as_done(); + Ok(()) +} + pub fn single_connect_step( framed: &mut Framed, connector: &mut ClientConnector, diff --git a/crates/ironrdp-blocking/src/lib.rs b/crates/ironrdp-blocking/src/lib.rs index 5a04fd17..31d6fc1d 100644 --- a/crates/ironrdp-blocking/src/lib.rs +++ b/crates/ironrdp-blocking/src/lib.rs @@ -7,4 +7,3 @@ mod session; pub use self::connector::*; pub use self::framed::*; -// pub use self::session::*; diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index e9ddfbfe..51d512ef 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -56,6 +56,8 @@ anyhow = "1" smallvec = "1.11" tap = "1" semver = "1" +reqwest = "0.11.22" +url = "2.4.1" [target.'cfg(windows)'.dependencies] windows = { version = "0.48", features = [ diff --git a/crates/ironrdp-client/src/lib.rs b/crates/ironrdp-client/src/lib.rs index b9199ded..e43bb038 100644 --- a/crates/ironrdp-client/src/lib.rs +++ b/crates/ironrdp-client/src/lib.rs @@ -13,4 +13,5 @@ extern crate tracing; pub mod clipboard; pub mod config; pub mod gui; +pub mod network_client; pub mod rdp; diff --git a/crates/ironrdp-client/src/network_client.rs b/crates/ironrdp-client/src/network_client.rs new file mode 100644 index 00000000..dd191ed5 --- /dev/null +++ b/crates/ironrdp-client/src/network_client.rs @@ -0,0 +1,116 @@ +use sspi::{Error, ErrorKind}; +use std::net::{IpAddr, Ipv4Addr}; +use std::{future::Future, pin::Pin}; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::net::{TcpStream, UdpSocket}; + +use ironrdp::connector::{custom_err, general_err, ConnectorResult}; +use reqwest::Client; +use url::Url; + +use ironrdp_tokio::AsyncNetworkClient; +pub(crate) struct ReqwestNetworkClient { + client: Option, +} +impl AsyncNetworkClient for ReqwestNetworkClient { + fn send<'a>( + &'a mut self, + request: &'a sspi::generator::NetworkRequest, + ) -> Pin>> + 'a>> { + Box::pin(async move { + match &request.protocol { + sspi::network_client::NetworkProtocol::Tcp => self.send_tcp(&request.url, &request.data).await, + sspi::network_client::NetworkProtocol::Udp => self.send_udp(&request.url, &request.data).await, + sspi::network_client::NetworkProtocol::Http | sspi::network_client::NetworkProtocol::Https => { + self.send_http(&request.url, &request.data).await + } + } + }) + } +} + +impl ReqwestNetworkClient { + pub(crate) fn new() -> Self { + Self { client: None } + } +} + +impl ReqwestNetworkClient { + async fn send_tcp(&self, url: &Url, data: &[u8]) -> ConnectorResult> { + let addr = format!("{}:{}", url.host_str().unwrap_or_default(), url.port().unwrap_or(88)); + let mut stream = TcpStream::connect(addr) + .await + .map_err(|e| Error::new(ErrorKind::NoAuthenticatingAuthority, format!("{:?}", e))) + .map_err(|e| custom_err!("sending KDC request over TCP ", e))?; + + stream + .write(data) + .await + .map_err(|e| Error::new(ErrorKind::NoAuthenticatingAuthority, format!("{:?}", e))) + .map_err(|e| custom_err!("Sending KDC request over TCP ", e))?; + + let len = stream + .read_u32() + .await + .map_err(|e| Error::new(ErrorKind::NoAuthenticatingAuthority, format!("{:?}", e))) + .map_err(|e| custom_err!("Sending KDC request over TCP ", e))?; + + let mut buf = vec![0; len as usize + 4]; + buf[0..4].copy_from_slice(&(len.to_be_bytes())); + + stream + .read_exact(&mut buf[4..]) + .await + .map_err(|e| Error::new(ErrorKind::NoAuthenticatingAuthority, format!("{:?}", e))) + .map_err(|e| custom_err!("Sending KDC request over TCP ", e))?; + + Ok(buf) + } + + async fn send_udp(&self, url: &Url, data: &[u8]) -> ConnectorResult> { + let udp_socket = UdpSocket::bind((IpAddr::V4(Ipv4Addr::LOCALHOST), 0)) + .await + .map_err(|e| custom_err!("Cannot bind udp socket", e))?; + + let addr = format!("{}:{}", url.host_str().unwrap_or_default(), url.port().unwrap_or(88)); + udp_socket + .send_to(data, addr) + .await + .map_err(|e| custom_err!("Error sending udp request", e))?; + + // 48 000 bytes: default maximum token len in Windows + let mut buf = vec![0; 0xbb80]; + + let n = udp_socket + .recv(&mut buf) + .await + .map_err(|e| custom_err!("Error receiving UDP request", e))?; + + let mut reply_buf = Vec::with_capacity(n + 4); + reply_buf.extend_from_slice(&(n as u32).to_be_bytes()); + reply_buf.extend_from_slice(&buf[0..n]); + + Ok(reply_buf) + } + + async fn send_http(&mut self, url: &Url, data: &[u8]) -> ConnectorResult> { + if self.client.is_none() { + self.client = Some(Client::new()); // dont drop the cllient, keep-alive + } + let result_bytes = self + .client + .as_ref() + .ok_or_else(|| general_err!("Missing HTTP client, should never happen"))? + .post(url.clone()) + .body(data.to_vec()) + .send() + .await + .map_err(|e| custom_err!("Sending KDC request over proxy", e))? + .bytes() + .await + .map_err(|e| custom_err!("Receving KDC response", e))? + .to_vec(); + + Ok(result_bytes) + } +} diff --git a/crates/ironrdp-client/src/rdp.rs b/crates/ironrdp-client/src/rdp.rs index 52a78ab0..aa67af37 100644 --- a/crates/ironrdp-client/src/rdp.rs +++ b/crates/ironrdp-client/src/rdp.rs @@ -1,5 +1,4 @@ use ironrdp::cliprdr::backend::{ClipboardMessage, CliprdrBackendFactory}; -use ironrdp::connector::sspi::network_client::reqwest_network_client::RequestClientFactory; use ironrdp::connector::{ConnectionResult, ConnectorResult}; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::pdu::input::fast_path::FastPathInputEvent; @@ -105,8 +104,6 @@ async fn connect( let mut connector = connector::ClientConnector::new(config.connector.clone()) .with_server_addr(server_addr) - .with_server_name(&config.destination) - .with_credssp_network_client(RequestClientFactory) // .with_static_channel(ironrdp::dvc::Drdynvc::new()) // FIXME(#61): drdynvc is not working .with_static_channel(rdpsnd::Rdpsnd::new()) .with_static_channel(rdpdr::Rdpdr::new(Box::new(NoopRdpdrBackend {}), "IronRDP".to_owned()).with_smartcard(0)); @@ -130,11 +127,21 @@ async fn connect( .await .map_err(|e| connector::custom_err!("TLS upgrade", e))?; - let upgraded = ironrdp_tokio::mark_as_upgraded(should_upgrade, &mut connector, server_public_key); + let upgraded = ironrdp_tokio::mark_as_upgraded(should_upgrade, &mut connector); let mut upgraded_framed = ironrdp_tokio::TokioFramed::new(upgraded_stream); - let connection_result = ironrdp_tokio::connect_finalize(upgraded, &mut upgraded_framed, connector).await?; + let mut network_client = crate::network_client::ReqwestNetworkClient::new(); + let connection_result = ironrdp_tokio::connect_finalize( + upgraded, + &mut upgraded_framed, + (&config.destination).into(), + server_public_key, + Some(&mut network_client), + connector, + None, + ) + .await?; debug!(?connection_result); diff --git a/crates/ironrdp-connector/Cargo.toml b/crates/ironrdp-connector/Cargo.toml index 84f73a70..c1d97d22 100644 --- a/crates/ironrdp-connector/Cargo.toml +++ b/crates/ironrdp-connector/Cargo.toml @@ -26,6 +26,7 @@ ironrdp-pdu = { workspace = true, features = ["std"] } rand_core = { version = "0.6", features = ["std"] } # TODO: dependency injection? sspi.workspace = true tracing.workspace = true +url = "2.4.1" # FIXME: sspi-rs forgot to enable the `std` feature for `winapi`. # This workaround should be removed when sspi 0.11 is released. diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index a18fe3ed..8ea0b2b7 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -5,42 +5,15 @@ use ironrdp_pdu::rdp::capability_sets::CapabilitySet; use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{gcc, mcs, nego, rdp, PduHint}; use ironrdp_svc::{StaticChannelSet, StaticVirtualChannel, StaticVirtualChannelProcessor}; -use sspi::credssp; use crate::channel_connection::{ChannelConnectionSequence, ChannelConnectionState}; use crate::connection_finalization::ConnectionFinalizationSequence; use crate::license_exchange::LicenseExchangeSequence; use crate::{ - legacy, Config, ConnectorError, ConnectorErrorExt as _, ConnectorErrorKind, ConnectorResult, DesktopSize, Sequence, - ServerName, State, Written, + legacy, Config, ConnectorError, ConnectorErrorExt as _, ConnectorResult, DesktopSize, Sequence, State, Written, }; -#[derive(Clone, Copy, Debug)] -struct CredsspTsRequestHint; - const DEFAULT_POINTER_CACHE_SIZE: u16 = 32; -const CREDSSP_TS_REQUEST_HINT: CredsspTsRequestHint = CredsspTsRequestHint; - -impl PduHint for CredsspTsRequestHint { - fn find_size(&self, bytes: &[u8]) -> ironrdp_pdu::PduResult> { - match sspi::credssp::TsRequest::read_length(bytes) { - Ok(length) => Ok(Some(length)), - Err(e) if e.kind() == std::io::ErrorKind::UnexpectedEof => Ok(None), - Err(e) => Err(ironrdp_pdu::custom_err!("CredsspTsRequestHint", e)), - } - } -} - -#[derive(Clone, Copy, Debug)] -struct CredsspEarlyUserAuthResultHint; - -const CREDSSP_EARLY_USER_AUTH_RESULT_HINT: CredsspEarlyUserAuthResultHint = CredsspEarlyUserAuthResultHint; - -impl PduHint for CredsspEarlyUserAuthResultHint { - fn find_size(&self, _: &[u8]) -> ironrdp_pdu::PduResult> { - Ok(Some(sspi::credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE)) - } -} #[derive(Debug)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] @@ -65,15 +38,7 @@ pub enum ClientConnectorState { EnhancedSecurityUpgrade { selected_protocol: nego::SecurityProtocol, }, - CredsspInitial { - selected_protocol: nego::SecurityProtocol, - }, - /// At this point, user code may use `sspi::credssp::TsRequest::read_length` to find the correct frame length. - CredsspReplyNeeded { - selected_protocol: nego::SecurityProtocol, - credssp_client: Box, - }, - CredsspEarlyUserAuthResult { + CredSsp { selected_protocol: nego::SecurityProtocol, }, BasicSettingsExchangeSendInitial { @@ -132,9 +97,7 @@ impl State for ClientConnectorState { Self::ConnectionInitiationSendRequest => "ConnectionInitiationSendRequest", Self::ConnectionInitiationWaitConfirm => "ConnectionInitiationWaitResponse", Self::EnhancedSecurityUpgrade { .. } => "EnhancedSecurityUpgrade", - Self::CredsspInitial { .. } => "CredsspInitial", - Self::CredsspReplyNeeded { .. } => "CredsspReplyNeeded", - Self::CredsspEarlyUserAuthResult { .. } => "CredsspEarlyUserAuthResult", + Self::CredSsp { .. } => "CredSsp", Self::BasicSettingsExchangeSendInitial { .. } => "BasicSettingsExchangeSendInitial", Self::BasicSettingsExchangeWaitResponse { .. } => "BasicSettingsExchangeWaitResponse", Self::ChannelConnection { .. } => "ChannelConnection", @@ -164,9 +127,6 @@ pub struct ClientConnector { pub config: Config, pub state: ClientConnectorState, pub server_addr: Option, - pub server_name: Option, - pub network_client_factory: Option>, - pub server_public_key: Option>, pub static_channels: StaticChannelSet, } @@ -176,9 +136,6 @@ impl ClientConnector { config, state: ClientConnectorState::ConnectionInitiationSendRequest, server_addr: None, - server_name: None, - network_client_factory: None, - server_public_key: None, static_channels: StaticChannelSet::new(), } } @@ -195,34 +152,6 @@ impl ClientConnector { self.server_addr = Some(addr); } - /// Must be set to the actual target server hostname (as opposed to the proxy) - #[must_use] - pub fn with_server_name(mut self, name: impl Into) -> Self { - self.server_name = Some(name.into()); - self - } - - /// Must be set to the actual target server hostname (as opposed to the proxy) - pub fn attach_server_name(&mut self, name: impl Into) { - self.server_name = Some(name.into()); - } - - #[must_use] - pub fn with_credssp_network_client(mut self, network_client_factory: T) -> Self - where - T: sspi::network_client::NetworkClientFactory + 'static, - { - self.network_client_factory = Some(Box::new(network_client_factory)); - self - } - - pub fn attach_credssp_network_client(&mut self, network_client_factory: T) - where - T: sspi::network_client::NetworkClientFactory + 'static, - { - self.network_client_factory = Some(Box::new(network_client_factory)); - } - #[must_use] pub fn with_static_channel(mut self, channel: T) -> Self where @@ -239,10 +168,6 @@ impl ClientConnector { self.static_channels.insert(channel); } - pub fn attach_server_public_key(&mut self, server_public_key: Vec) { - self.server_public_key = Some(server_public_key); - } - pub fn should_perform_security_upgrade(&self) -> bool { matches!(self.state, ClientConnectorState::EnhancedSecurityUpgrade { .. }) } @@ -253,13 +178,15 @@ impl ClientConnector { debug_assert!(!self.should_perform_security_upgrade()); } - pub fn is_credssp_step(&self) -> bool { - matches!( - &self.state, - ClientConnectorState::CredsspInitial { .. } - | ClientConnectorState::CredsspReplyNeeded { .. } - | ClientConnectorState::CredsspEarlyUserAuthResult { .. } - ) + pub fn should_perform_credssp(&self) -> bool { + matches!(self.state, ClientConnectorState::CredSsp { .. }) + } + + pub fn mark_credssp_as_done(&mut self) { + assert!(self.should_perform_credssp()); + let res = self.step(&[], &mut WriteBuf::new()).expect("transition to next state"); + debug_assert!(!self.should_perform_credssp()); + assert_eq!(res, Written::Nothing); } } @@ -270,9 +197,7 @@ impl Sequence for ClientConnector { ClientConnectorState::ConnectionInitiationSendRequest => None, ClientConnectorState::ConnectionInitiationWaitConfirm => Some(&ironrdp_pdu::X224_HINT), ClientConnectorState::EnhancedSecurityUpgrade { .. } => None, - ClientConnectorState::CredsspInitial { .. } => None, - ClientConnectorState::CredsspReplyNeeded { .. } => Some(&CREDSSP_TS_REQUEST_HINT), - ClientConnectorState::CredsspEarlyUserAuthResult { .. } => Some(&CREDSSP_EARLY_USER_AUTH_RESULT_HINT), + ClientConnectorState::CredSsp { .. } => None, ClientConnectorState::BasicSettingsExchangeSendInitial { .. } => None, ClientConnectorState::BasicSettingsExchangeWaitResponse { .. } => Some(&ironrdp_pdu::X224_HINT), ClientConnectorState::ChannelConnection { channel_connection, .. } => channel_connection.next_pdu_hint(), @@ -355,7 +280,7 @@ impl Sequence for ClientConnector { let next_state = if selected_protocol.contains(nego::SecurityProtocol::HYBRID) || selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - ClientConnectorState::CredsspInitial { selected_protocol } + ClientConnectorState::CredSsp { selected_protocol } } else { debug!("Skipped CredSSP"); ClientConnectorState::BasicSettingsExchangeSendInitial { selected_protocol } @@ -365,130 +290,10 @@ impl Sequence for ClientConnector { } //== CredSSP ==// - ClientConnectorState::CredsspInitial { selected_protocol } => { - debug!("CredSSP"); - if let crate::Credentials::SmartCard { .. } = self.config.credentials { - return Err(general_err!( - "CredSSP with smart card credentials is not currently supported" - )); - } - - let credentials = sspi::AuthIdentity { - username: self.config.credentials.username().into(), - password: self.config.credentials.secret().to_owned().into(), - domain: self.config.domain.clone(), - }; - - let server_public_key = self - .server_public_key - .take() - .ok_or_else(|| general_err!("server public key is missing"))?; - - let network_client_factory = self - .network_client_factory - .take() - .ok_or_else(|| general_err!("CredSSP network client factory is missing"))?; - - let server_name = self - .server_name - .take() - .ok_or_else(|| general_err!("server name is missing"))? - .into_inner(); - - let service_principal_name = format!("TERMSRV/{server_name}"); - - let mut credssp_client = credssp::CredSspClient::new( - server_public_key, - credentials, - credssp::CredSspMode::WithCredentials, - credssp::ClientMode::Negotiate(sspi::NegotiateConfig { - protocol_config: Box::::default(), - package_list: None, - hostname: server_name, - network_client_factory, - }), - service_principal_name, - ) - .map_err(|e| ConnectorError::new("CredSSP", ConnectorErrorKind::Credssp(e)))?; - - let initial_ts_request = credssp::TsRequest::default(); - - let result = credssp_client - .process(initial_ts_request) - .map_err(|e| ConnectorError::new("CredSSP", ConnectorErrorKind::Credssp(e)))?; - - let (ts_request_from_client, next_state) = match result { - credssp::ClientState::ReplyNeeded(ts_request) => ( - ts_request, - ClientConnectorState::CredsspReplyNeeded { - selected_protocol, - credssp_client: Box::new(credssp_client), - }, - ), - credssp::ClientState::FinalMessage(ts_request) => ( - ts_request, - ClientConnectorState::BasicSettingsExchangeSendInitial { selected_protocol }, - ), - }; - - debug!(message = ?ts_request_from_client, "Send"); - - let written = write_credssp_request(ts_request_from_client, output)?; - - (Written::from_size(written)?, next_state) - } - ClientConnectorState::CredsspReplyNeeded { - selected_protocol, - mut credssp_client, - } => { - let ts_request_from_server = credssp::TsRequest::from_buffer(input) - .map_err(|e| reason_err!("CredSSP", "TsRequest decode: {e}"))?; - - debug!(message = ?ts_request_from_server, "Received"); - - let result = credssp_client - .process(ts_request_from_server) - .map_err(|e| ConnectorError::new("CredSSP", ConnectorErrorKind::Credssp(e)))?; - - let (ts_request_from_client, next_state) = match result { - credssp::ClientState::ReplyNeeded(ts_request) => ( - ts_request, - ClientConnectorState::CredsspReplyNeeded { - selected_protocol, - credssp_client, - }, - ), - credssp::ClientState::FinalMessage(ts_request) => ( - ts_request, - if selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { - ClientConnectorState::CredsspEarlyUserAuthResult { selected_protocol } - } else { - ClientConnectorState::BasicSettingsExchangeSendInitial { selected_protocol } - }, - ), - }; - - debug!(message = ?ts_request_from_client, "Send"); - - let written = write_credssp_request(ts_request_from_client, output)?; - - (Written::from_size(written)?, next_state) - } - ClientConnectorState::CredsspEarlyUserAuthResult { selected_protocol } => { - let early_user_auth_result = credssp::EarlyUserAuthResult::from_buffer(input) - .map_err(|e| custom_err!("credssp::EarlyUserAuthResult", e))?; - - debug!(message = ?early_user_auth_result, "Received"); - - let credssp::EarlyUserAuthResult::Success = early_user_auth_result else { - return Err(ConnectorError::new("CredSSP", ConnectorErrorKind::AccessDenied)); - }; - - ( - Written::Nothing, - ClientConnectorState::BasicSettingsExchangeSendInitial { selected_protocol }, - ) - } + ClientConnectorState::CredSsp { selected_protocol } => ( + Written::Nothing, + ClientConnectorState::BasicSettingsExchangeSendInitial { selected_protocol }, + ), //== Basic Settings Exchange ==// // Exchange basic settings including Core Data, Security Data and Network Data. @@ -1087,17 +892,3 @@ fn create_client_confirm_active( }, } } - -fn write_credssp_request(ts_request: credssp::TsRequest, output: &mut WriteBuf) -> ConnectorResult { - let length = usize::from(ts_request.buffer_len()); - - let unfilled_buffer = output.unfilled_to(length); - - ts_request - .encode_ts_request(unfilled_buffer) - .map_err(|e| reason_err!("CredSSP", "TsRequest encode: {e}"))?; - - output.advance(length); - - Ok(length) -} diff --git a/crates/ironrdp-connector/src/credssp_sequence.rs b/crates/ironrdp-connector/src/credssp_sequence.rs new file mode 100644 index 00000000..4e13a8d3 --- /dev/null +++ b/crates/ironrdp-connector/src/credssp_sequence.rs @@ -0,0 +1,213 @@ +use ironrdp_pdu::write_buf::WriteBuf; +use ironrdp_pdu::{nego, PduHint}; +use sspi::credssp::{self, ClientState, CredSspClient}; +use sspi::generator::{Generator, NetworkRequest}; +use sspi::negotiate::ProtocolConfig; +use sspi::Username; + +use crate::{ + ClientConnector, ClientConnectorState, ConnectorError, ConnectorErrorKind, ConnectorResult, KerberosConfig, + ServerName, Written, +}; + +#[derive(Clone, Copy, Debug)] +struct CredsspTsRequestHint; + +const CREDSSP_TS_REQUEST_HINT: CredsspTsRequestHint = CredsspTsRequestHint; + +impl PduHint for CredsspTsRequestHint { + fn find_size(&self, bytes: &[u8]) -> ironrdp_pdu::PduResult> { + match sspi::credssp::TsRequest::read_length(bytes) { + Ok(length) => Ok(Some(length)), + Err(e) if e.kind() == std::io::ErrorKind::UnexpectedEof => Ok(None), + Err(e) => Err(ironrdp_pdu::custom_err!("CredsspTsRequestHint", e)), + } + } +} +#[derive(Clone, Copy, Debug)] +struct CredsspEarlyUserAuthResultHint; + +const CREDSSP_EARLY_USER_AUTH_RESULT_HINT: CredsspEarlyUserAuthResultHint = CredsspEarlyUserAuthResultHint; + +impl PduHint for CredsspEarlyUserAuthResultHint { + fn find_size(&self, _: &[u8]) -> ironrdp_pdu::PduResult> { + Ok(Some(sspi::credssp::EARLY_USER_AUTH_RESULT_PDU_SIZE)) + } +} + +pub type CredsspProcessGenerator<'a> = Generator<'a, NetworkRequest, sspi::Result>, sspi::Result>; + +#[derive(Debug)] +pub struct CredsspSequence { + client: CredSspClient, + next_request: Option, + state: CredsspState, + selected_protocol: nego::SecurityProtocol, +} + +#[derive(Debug, PartialEq)] +pub(crate) enum CredsspState { + CredsspInitial, + CredsspReplyNeeded, + CredsspEarlyUserAuthResult, + Finished, +} + +impl CredsspSequence { + pub fn next_pdu_hint(&self) -> Option<&dyn PduHint> { + match self.state { + CredsspState::CredsspInitial => None, + CredsspState::CredsspReplyNeeded => Some(&CREDSSP_TS_REQUEST_HINT), + CredsspState::CredsspEarlyUserAuthResult => Some(&CREDSSP_EARLY_USER_AUTH_RESULT_HINT), + CredsspState::Finished => None, + } + } + + pub fn new( + connector: &ClientConnector, + server_name: ServerName, + server_public_key: Vec, + kerberos_config: Option, + ) -> ConnectorResult { + let config = &connector.config; + if let crate::Credentials::SmartCard { .. } = config.credentials { + return Err(general_err!( + "CredSSP with smart card credentials is not currently supported" + )); + } + + let credentials = sspi::AuthIdentity { + username: Username::parse(config.credentials.username()).map_err(|e| custom_err!("parsing username", e))?, + password: config.credentials.secret().to_owned().into(), + }; + + let server_name = server_name.into_inner(); + + let service_principal_name = format!("TERMSRV/{}", &server_name); + + let credssp_config: Box; + if let Some(ref krb_config) = kerberos_config { + credssp_config = Box::new(Into::::into(krb_config.clone())); + } else { + credssp_config = Box::::default(); + } + info!("using config : {:?}", &credssp_config); + + let client = credssp::CredSspClient::new( + server_public_key, + credentials.into(), + credssp::CredSspMode::WithCredentials, + credssp::ClientMode::Negotiate(sspi::NegotiateConfig { + protocol_config: credssp_config, + package_list: None, + client_computer_name: server_name, + }), + service_principal_name, + ) + .map_err(|e| ConnectorError::new("CredSSP", ConnectorErrorKind::Credssp(e)))?; + + match connector.state { + ClientConnectorState::CredSsp { selected_protocol } => Ok(Self { + client, + next_request: Some(credssp::TsRequest::default()), + state: CredsspState::CredsspInitial, + selected_protocol, + }), + _ => Err(general_err!( + "Cannot perform cred ssp opeartions when ClientConnector is not in CredSsp state" + )), + } + } + + pub fn is_done(&self) -> bool { + self.state == CredsspState::Finished + } + + pub fn wants_request_from_server(&self) -> bool { + self.next_request.is_none() + } + + pub fn read_request_from_server(&mut self, input: &[u8]) -> ConnectorResult<()> { + match self.state { + CredsspState::CredsspInitial | CredsspState::CredsspReplyNeeded => { + info!("read request from server: {:?}", input); + let message = credssp::TsRequest::from_buffer(input) + .map_err(|e| reason_err!("CredSSP", "TsRequest decode: {e}"))?; + debug!(?message, "Received"); + self.next_request = Some(message); + Ok(()) + } + CredsspState::CredsspEarlyUserAuthResult => { + let early_user_auth_result = credssp::EarlyUserAuthResult::from_buffer(input) + .map_err(|e| custom_err!("credssp::EarlyUserAuthResult", e))?; + + debug!(message = ?early_user_auth_result, "Received"); + + let credssp::EarlyUserAuthResult::Success = early_user_auth_result else { + return Err(ConnectorError::new("CredSSP", ConnectorErrorKind::AccessDenied)); + }; + Ok(()) + } + _ => Err(general_err!("CredSsp Sequence is Finished")), + } + } + + pub fn process(&mut self) -> CredsspProcessGenerator<'_> { + let request = self.next_request.take().expect("next request"); + info!("Ts request = {:?}", &request); + self.client.process(request) + } + + pub fn handle_process_result(&mut self, result: ClientState, output: &mut WriteBuf) -> ConnectorResult { + let (size, next_state) = match self.state { + CredsspState::CredsspInitial => { + let (ts_request_from_client, next_state) = match result { + ClientState::ReplyNeeded(ts_request) => (ts_request, CredsspState::CredsspReplyNeeded), + ClientState::FinalMessage(ts_request) => (ts_request, CredsspState::Finished), + }; + debug!(message = ?ts_request_from_client, "Send"); + + let written = write_credssp_request(ts_request_from_client, output)?; + self.next_request = None; + Ok((Written::from_size(written)?, next_state)) + } + CredsspState::CredsspReplyNeeded => { + let (ts_request_from_client, next_state) = match result { + credssp::ClientState::ReplyNeeded(ts_request) => (ts_request, CredsspState::CredsspReplyNeeded), + credssp::ClientState::FinalMessage(ts_request) => ( + ts_request, + if self.selected_protocol.contains(nego::SecurityProtocol::HYBRID_EX) { + CredsspState::CredsspEarlyUserAuthResult + } else { + CredsspState::Finished + }, + ), + }; + + debug!(message = ?ts_request_from_client, "Send"); + + let written = write_credssp_request(ts_request_from_client, output)?; + self.next_request = None; + Ok((Written::from_size(written)?, next_state)) + } + CredsspState::CredsspEarlyUserAuthResult => Ok((Written::Nothing, CredsspState::Finished)), + CredsspState::Finished => Err(general_err!("CredSSP Sequence if finished")), + }?; + self.state = next_state; + Ok(size) + } +} + +fn write_credssp_request(ts_request: credssp::TsRequest, output: &mut WriteBuf) -> ConnectorResult { + let length = usize::from(ts_request.buffer_len()); + + let unfilled_buffer = output.unfilled_to(length); + + ts_request + .encode_ts_request(unfilled_buffer) + .map_err(|e| reason_err!("CredSSP", "TsRequest encode: {e}"))?; + + output.advance(length); + + Ok(length) +} diff --git a/crates/ironrdp-connector/src/lib.rs b/crates/ironrdp-connector/src/lib.rs index cbd74fca..e10336cf 100644 --- a/crates/ironrdp-connector/src/lib.rs +++ b/crates/ironrdp-connector/src/lib.rs @@ -12,6 +12,7 @@ pub mod legacy; mod channel_connection; mod connection; mod connection_finalization; +pub mod credssp_sequence; mod license_exchange; mod server_name; @@ -99,6 +100,34 @@ pub struct Config { pub autologon: bool, } +#[derive(Debug, Clone, Default)] +pub struct KerberosConfig { + pub kdc_proxy_url: Option, + pub hostname: Option, +} + +impl KerberosConfig { + pub fn new(kdc_proxy_url: Option, hostname: Option) -> ConnectorResult { + let kdc_proxy_url = kdc_proxy_url + .map(|url| url::Url::parse(&url)) + .transpose() + .map_err(|e| custom_err!("invalid KDC URL", e))?; + Ok(Self { + kdc_proxy_url, + hostname, + }) + } +} + +impl From for sspi::KerberosConfig { + fn from(val: KerberosConfig) -> Self { + sspi::KerberosConfig { + kdc_url: val.kdc_proxy_url, + client_computer_name: val.hostname, + } + } +} + ironrdp_pdu::assert_impl!(Config: Send, Sync); pub trait State: Send + core::fmt::Debug + 'static { diff --git a/crates/ironrdp-web/Cargo.toml b/crates/ironrdp-web/Cargo.toml index 22c81070..6c02cd52 100644 --- a/crates/ironrdp-web/Cargo.toml +++ b/crates/ironrdp-web/Cargo.toml @@ -32,7 +32,7 @@ ironrdp-rdcleanpath.workspace = true # WASM wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" -web-sys = { version = "0.3", features = ["HtmlCanvasElement"] } +web-sys = { version = "0.3", features = ["HtmlCanvasElement", "ReadableStreamDefaultReader"] } js-sys = "0.3" gloo-net = { version = "0.4", default-features = false, features = ["websocket", "http"] } gloo-timers = { version = "0.3", default-features = false, features = ["futures"] } @@ -66,4 +66,4 @@ smallvec = "1.11" x509-cert = { version = "0.2", default-features = false, features = ["std"] } tap = "1" semver = "1" -url = "2" +url = "2.4.1" diff --git a/crates/ironrdp-web/src/network_client.rs b/crates/ironrdp-web/src/network_client.rs index a84a56c7..e80a11b9 100644 --- a/crates/ironrdp-web/src/network_client.rs +++ b/crates/ironrdp-web/src/network_client.rs @@ -1,73 +1,78 @@ -use std::time::Duration; +use std::pin::Pin; -use gloo_net::http::Request; -use ironrdp::connector::sspi; -use ironrdp::connector::sspi::network_client::{NetworkClient, NetworkClientFactory, NetworkProtocol}; -use url::Url; -use wasm_bindgen::JsValue; +use futures_util::Future; +use ironrdp::connector::sspi::generator::NetworkRequest; +use ironrdp::connector::sspi::network_client::NetworkProtocol; +use ironrdp::connector::{general_err, reason_err, ConnectorResult}; +use ironrdp_futures::AsyncNetworkClient; +use wasm_bindgen::JsCast; +use wasm_bindgen_futures::JsFuture; +use web_sys::ReadableStream; #[derive(Debug)] -pub(crate) struct WasmNetworkClientFactory; +pub(crate) struct WasmNetworkClient; +impl AsyncNetworkClient for WasmNetworkClient { + fn send<'a>( + &'a mut self, + network_request: &'a NetworkRequest, + ) -> Pin>> + 'a>> { + Box::pin(async move { + trace!("network requwest = {:?}", &network_request); + match &network_request.protocol { + NetworkProtocol::Http | NetworkProtocol::Https => { + let body = js_sys::Uint8Array::from(&network_request.data[..]); -impl NetworkClientFactory for WasmNetworkClientFactory { - fn network_client(&self) -> Box { - Box::new(WasmNetworkClient) - } + let stream = gloo_net::http::Request::post(network_request.url.as_str()) + .header("keep-alive", "true") + .body(body) + .map_err(|e| reason_err!("Error send KDC request", "{}", e))? + .send() + .await + .map_err(|e| reason_err!("Error send KDC request", "{}", e))? + .body() + .ok_or_else(|| general_err!("No body in response"))?; + let res = read_stream(stream).await?; - fn box_clone(&self) -> Box { - Box::new(WasmNetworkClientFactory) + Ok(res) + } + _ => Err(general_err!("KDC Url must always start with HTTP/HTTPS for Web")), + } + }) } } -struct WasmNetworkClient; - impl WasmNetworkClient { - const NAME: &str = "Wasm"; - const SUPPORTED_PROTOCOLS: &[NetworkProtocol] = &[NetworkProtocol::Http, NetworkProtocol::Https]; -} - -impl NetworkClient for WasmNetworkClient { - fn send(&self, _protocol: NetworkProtocol, url: Url, data: &[u8]) -> sspi::Result> { - let length = JsValue::from_f64(data.len() as f64); - let payload = js_sys::Uint8Array::new(&length); - payload.copy_from(data); - - let fut = Request::post(url.as_str()) - .body(payload) - .map_err(|e| sspi::Error::new(sspi::ErrorKind::InternalError, e.to_string()))? - .send(); - - let (tx, rx) = std::sync::mpsc::sync_channel(0); // rendezvous channel - - wasm_bindgen_futures::spawn_local(async move { - match fut.await { - Ok(response) => { - let result = response.binary().await; - let _ = tx.send(result); - } - Err(error) => { - let _ = tx.send(Err(error)); - } - } - }); - - let response = rx - .recv_timeout(Duration::from_secs(10)) - .map_err(|e| sspi::Error::new(sspi::ErrorKind::InternalError, e.to_string()))? - .map_err(|e| sspi::Error::new(sspi::ErrorKind::NoAuthenticatingAuthority, e.to_string()))?; - - Ok(response) - } - - fn name(&self) -> &'static str { - Self::NAME - } - - fn supported_protocols(&self) -> &[NetworkProtocol] { - Self::SUPPORTED_PROTOCOLS - } - - fn box_clone(&self) -> Box { - Box::new(WasmNetworkClient) + pub(crate) fn new() -> Self { + Self } } +async fn read_stream(stream: ReadableStream) -> ConnectorResult> { + let mut bytes = Vec::new(); + let reader = web_sys::ReadableStreamDefaultReader::new(&stream).map_err(|_| general_err!("error create reader"))?; + + loop { + let result = JsFuture::from(reader.read()) + .await + .map_err(|_e| general_err!("error read stream"))?; + + // Cast the result into an object and check if the stream is done + let result_obj = result.dyn_into::().unwrap(); + let done = js_sys::Reflect::get(&result_obj, &"done".into()) + .map_err(|_| general_err!("error read stream"))? + .as_bool() + .ok_or_else(|| general_err!("error resolve reader promise property: done"))?; + + if done { + break; + } + + // Extract the value (the chunk) from the result + let value = js_sys::Reflect::get(&result_obj, &"value".into()).unwrap(); + + // Convert value to Uint8Array, then to Vec and append to bytes + let chunk = js_sys::Uint8Array::new(&value); + bytes.extend_from_slice(&chunk.to_vec()); + } + + Ok(bytes) +} diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index 3390a55c..11b758aa 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -10,7 +10,7 @@ use gloo_net::websocket; use gloo_net::websocket::futures::WebSocket; use ironrdp::cliprdr::backend::ClipboardMessage; use ironrdp::cliprdr::Cliprdr; -use ironrdp::connector::{self, ClientConnector, Credentials}; +use ironrdp::connector::{self, ClientConnector, Credentials, KerberosConfig}; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::pdu::input::fast_path::FastPathInputEvent; use ironrdp::pdu::write_buf::WriteBuf; @@ -26,7 +26,7 @@ use crate::clipboard::{ClipboardTransaction, WasmClipboard, WasmClipboardBackend use crate::error::{IronRdpError, IronRdpErrorKind}; use crate::image::extract_partial_image; use crate::input::InputTransaction; -use crate::network_client::WasmNetworkClientFactory; +use crate::network_client::WasmNetworkClient; use crate::websocket::WebSocketCompat; use crate::{clipboard, DesktopSize}; @@ -45,6 +45,7 @@ struct SessionBuilderInner { proxy_address: Option, auth_token: Option, pcb: Option, + kdc_proxy_url: Option, client_name: String, desktop_size: DesktopSize, @@ -68,6 +69,7 @@ impl Default for SessionBuilderInner { proxy_address: None, auth_token: None, pcb: None, + kdc_proxy_url: None, client_name: "ironrdp-web".to_owned(), desktop_size: DesktopSize { width: DEFAULT_WIDTH, @@ -174,6 +176,12 @@ impl SessionBuilder { self.clone() } + /// Optional + pub fn kdc_proxy_url(&self, kdc_proxy_url: Option) -> SessionBuilder { + self.0.borrow_mut().kdc_proxy_url = kdc_proxy_url; + self.clone() + } + /// Optional pub fn remote_clipboard_changed_callback(&self, callback: js_sys::Function) -> SessionBuilder { self.0.borrow_mut().remote_clipboard_changed_callback = Some(callback); @@ -208,6 +216,7 @@ impl SessionBuilder { hide_pointer_callback_context, show_pointer_callback, show_pointer_callback_context, + kdc_proxy_url, remote_clipboard_changed_callback, remote_received_format_list_callback, force_clipboard_update_callback, @@ -225,6 +234,8 @@ impl SessionBuilder { client_name = inner.client_name.clone(); desktop_size = inner.desktop_size.clone(); + kdc_proxy_url = inner.kdc_proxy_url.clone(); + render_canvas = inner.render_canvas.clone().context("render_canvas missing")?; hide_pointer_callback = inner @@ -300,6 +311,7 @@ impl SessionBuilder { destination, pcb, clipboard.as_ref().map(|clip| clip.backend()), + kdc_proxy_url, ) .await?; @@ -608,7 +620,7 @@ fn build_config( client_dir: "C:\\Windows\\System32\\mstscax.dll".to_owned(), platform: ironrdp::pdu::rdp::capability_sets::MajorPlatformType::UNSPECIFIED, no_server_pointer: false, - autologon: false + autologon: false, } } @@ -640,21 +652,40 @@ async fn connect( destination: String, pcb: Option, clipboard_backend: Option, + kdc_proxy_url: Option, ) -> Result<(connector::ConnectionResult, WebSocketCompat), IronRdpError> { let mut framed = ironrdp_futures::SingleThreadedFuturesFramed::new(ws); - let mut connector = connector::ClientConnector::new(config) - .with_server_name(&destination) - .with_credssp_network_client(WasmNetworkClientFactory); - // .with_static_channel(ironrdp::dvc::Drdynvc::new()); // FIXME: drdynvc is not working + let mut connector = connector::ClientConnector::new(config); if let Some(clipboard_backend) = clipboard_backend { connector.attach_static_channel(Cliprdr::new(Box::new(clipboard_backend))); } - let upgraded = connect_rdcleanpath(&mut framed, &mut connector, destination, proxy_auth_token, pcb).await?; + let (upgraded, server_public_key) = + connect_rdcleanpath(&mut framed, &mut connector, destination.clone(), proxy_auth_token, pcb).await?; - let connection_result = ironrdp_futures::connect_finalize(upgraded, &mut framed, connector).await?; + info!("kdc url = {:?}", &kdc_proxy_url); + + let mut network_client = WasmNetworkClient::new(); + + let connection_result = ironrdp_futures::connect_finalize( + upgraded, + &mut framed, + (&destination).into(), + server_public_key, + Some(&mut network_client), + connector, + url::Url::parse(kdc_proxy_url.unwrap_or_default().as_str()) // if kdc_proxy_url does not exit, give url parser a empty string, it will fail anyway and map to a None + .ok() + .map(|url| KerberosConfig { + kdc_proxy_url: Some(url), + // HACK: It’s supposed to be the computer name of the client, but since it’s not easy to retrieve this information in the browser, + // we set the destination hostname instead because it happens to work. + hostname: Some(destination), + }), + ) + .await?; let ws = framed.into_inner_no_leftover(); @@ -667,7 +698,7 @@ async fn connect_rdcleanpath( destination: String, proxy_auth_token: String, pcb: Option, -) -> Result +) -> Result<(ironrdp_futures::Upgraded, Vec), IronRdpError> where S: ironrdp_futures::FramedRead + ironrdp_futures::FramedWrite, { @@ -790,8 +821,8 @@ where // At this point, proxy established the TLS session - let upgraded = ironrdp_futures::mark_as_upgraded(should_upgrade, connector, server_public_key); + let upgraded = ironrdp_futures::mark_as_upgraded(should_upgrade, connector); - Ok(upgraded) + Ok((upgraded, server_public_key)) } } diff --git a/crates/ironrdp/examples/screenshot.rs b/crates/ironrdp/examples/screenshot.rs index a7408d3c..ad087b86 100644 --- a/crates/ironrdp/examples/screenshot.rs +++ b/crates/ironrdp/examples/screenshot.rs @@ -25,7 +25,7 @@ use std::time::Duration; use anyhow::Context as _; use connector::Credentials; use ironrdp::connector; -use ironrdp::connector::sspi::network_client::reqwest_network_client::RequestClientFactory; +use ironrdp::connector::sspi::network_client::reqwest_network_client::ReqwestNetworkClient; use ironrdp::connector::ConnectionResult; use ironrdp::pdu::gcc::KeyboardType; use ironrdp::pdu::nego::SecurityProtocol; @@ -239,10 +239,7 @@ fn connect( let mut framed = ironrdp_blocking::Framed::new(tcp_stream); - let mut connector = connector::ClientConnector::new(config) - .with_server_addr(server_addr) - .with_server_name(&server_name) - .with_credssp_network_client(RequestClientFactory); + let mut connector = connector::ClientConnector::new(config).with_server_addr(server_addr); let should_upgrade = ironrdp_blocking::connect_begin(&mut framed, &mut connector).context("begin connection")?; @@ -253,12 +250,21 @@ fn connect( let (upgraded_stream, server_public_key) = tls_upgrade(initial_stream, &server_name).context("TLS upgrade")?; - let upgraded = ironrdp_blocking::mark_as_upgraded(should_upgrade, &mut connector, server_public_key); + let upgraded = ironrdp_blocking::mark_as_upgraded(should_upgrade, &mut connector); let mut upgraded_framed = ironrdp_blocking::Framed::new(upgraded_stream); - let connection_result = - ironrdp_blocking::connect_finalize(upgraded, &mut upgraded_framed, connector).context("finalize connection")?; + let mut network_client = ReqwestNetworkClient; + let connection_result = ironrdp_blocking::connect_finalize( + upgraded, + &mut upgraded_framed, + server_name.into(), + server_public_key, + &mut network_client, + connector, + None, + ) + .context("finalize connection")?; Ok((connection_result, upgraded_framed)) } diff --git a/web-client/iron-remote-gui/README.md b/web-client/iron-remote-gui/README.md index 23d07046..84c93d98 100644 --- a/web-client/iron-remote-gui/README.md +++ b/web-client/iron-remote-gui/README.md @@ -52,12 +52,30 @@ You can add some parameters for default initialization on the component ` `connect(username: string, password: string, host: string, authtoken: string): Observable` -> +```ts +connect( + username: string, + password: string, + destination: string, + proxyAddress: string, + serverDomain: string, + authToken: string, + desktopSize?: DesktopSize, + preConnectionBlob?: string, + kdc_proxy_url?: string, + ): Observable; +``` + > `username` and `password` are the credentials to use on the remote host. -> `host` refers to the Devolutions Gateway hostname and port. + +> `destination` refers to the Devolutions Gateway hostname and port. + > `authtoken` is the authentication token to send to the Devolutions Gateway. +> `serverDomain` is the Windows domain name (if the target computer has one) + +> `kdc_proxy_url` is the URL to a KDC Proxy, as specified in [MS-KKDCP documentation](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-kkdcp/5bcebb8d-b747-4ee5-9453-428aec1c5c38) + > `ctrlAltDel()` > > Sends the ctrl+alt+del key to server. diff --git a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts index 6ee11bee..e1b12139 100644 --- a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts +++ b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts @@ -18,6 +18,7 @@ export interface UserInteraction { authToken: string, desktopSize?: DesktopSize, preConnectionBlob?: string, + kdc_proxy_url?: string, ): Observable; ctrlAltDel(): void; diff --git a/web-client/iron-remote-gui/src/services/PublicAPI.ts b/web-client/iron-remote-gui/src/services/PublicAPI.ts index b6507c0b..11a04b48 100644 --- a/web-client/iron-remote-gui/src/services/PublicAPI.ts +++ b/web-client/iron-remote-gui/src/services/PublicAPI.ts @@ -23,6 +23,7 @@ export class PublicAPI { authToken: string, desktopSize?: DesktopSize, preConnectionBlob?: string, + kdc_proxy_url?: string, ): Observable { loggingService.info('Initializing connection.'); return this.wasmService.connect( @@ -34,6 +35,7 @@ export class PublicAPI { authToken, desktopSize, preConnectionBlob, + kdc_proxy_url, ); } diff --git a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 9300b34c..ce4f9c8c 100644 --- a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -125,6 +125,7 @@ export class WasmBridgeService { authToken: string, desktopSize?: IDesktopSize, preConnectionBlob?: string, + kdc_proxy_url?: string, ): Observable { const sessionBuilder = SessionBuilder.new(); sessionBuilder.proxy_address(proxyAddress); @@ -138,6 +139,7 @@ export class WasmBridgeService { sessionBuilder.hide_pointer_callback(this.hidePointerCallback); sessionBuilder.show_pointer_callback_context(this); sessionBuilder.show_pointer_callback(this.showPointerCallback); + sessionBuilder.kdc_proxy_url(kdc_proxy_url); if (preConnectionBlob != null) { sessionBuilder.pcb(preConnectionBlob); diff --git a/web-client/iron-svelte-client/src/lib/login/login.svelte b/web-client/iron-svelte-client/src/lib/login/login.svelte index 3a40bebf..1f4084ae 100644 --- a/web-client/iron-svelte-client/src/lib/login/login.svelte +++ b/web-client/iron-svelte-client/src/lib/login/login.svelte @@ -14,6 +14,7 @@ let domain = ''; let authtoken = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkFTU09DSUFUSU9OIn0.eyJkc3RfaHN0IjoiMTkyLjE2OC41Ni4xMDE6MzM4OSIsImV4cCI6MTY5MzQyMzY1NSwiamV0X2FpZCI6IjMwNzZjZGIwLWYxNTctNDJlNy1iOWMzLThhMTdlNDFkYjYwNyIsImpldF9hcCI6InJkcCIsImpldF9jbSI6ImZ3ZCIsImp0aSI6IjAwYjY4OTY2LWJiYjAtNDU0NS05ZDZiLWRjNmFmMjAzNjY5MiIsIm5iZiI6MTY5MzQyMjc1NX0.SYQv4HtWQbdHMHgoCLYejCfO3TtsMAyjjILB6-Nir3mBznKiSad3POeLf02n05JFc5QhCeSGxspAaoNU7-znQFhHr0Tt0MnZJ1YMQt4UoR3PR2fTuUqv8M5TKdm4lKwCIjh73tTD001glTkXHaxuCQBTFCUSzfZhXDIqq5-CQueKtCrgJfYepJLmlvgH-ujGcxfXoGJGmeUy3Fmaijiy0uaC98j9GNCfnAd6JENmSAOkxfroMFhq601PSEizRbPzq2exDakfJ0EkaANz15udBX1a7NP-RyANHWQb8hp0rj6hyuyg1-vfUKYusw5qNUjAGXaWOjHC5bLgnqfE2V8Xnw'; + let kdc_proxy_url = ''; let desktopSize: DesktopSize = { width: 1280, height: 768, @@ -53,7 +54,7 @@ message: 'Connection in progress...', }); userInteraction - .connect(username, password, hostname, gatewayAddress, domain, authtoken, desktopSize, pcb) + .connect(username, password, hostname, gatewayAddress, domain, authtoken, desktopSize, pcb, kdc_proxy_url) .pipe( catchError((err) => { toast.set({ @@ -133,6 +134,10 @@
        +
        + + +
        From a7e163b813c06af00c3e38e36fefc43cb2c3d2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 16 Feb 2024 22:16:44 +0900 Subject: [PATCH 0470/1273] docs(web): update README files (#377) --- web-client/README.md | 12 ++++ web-client/iron-svelte-client/README.md | 88 ++++++++++--------------- 2 files changed, 47 insertions(+), 53 deletions(-) create mode 100644 web-client/README.md diff --git a/web-client/README.md b/web-client/README.md new file mode 100644 index 00000000..d176f051 --- /dev/null +++ b/web-client/README.md @@ -0,0 +1,12 @@ +# IronRDP Web Client + +IronRDP also supports the web browser as a first class target. + +See the [iron-remote-gui](./iron-remote-gui) for the reusable Web Component, and [iron-svelte-client](./iron-svelte-client) for a demonstration. + +Note that the demonstration client is not intended to be used in production as-is. +Devolutions is shipping well-integrated, production-ready IronRDP web clients as part of: + +- [Devolutions Gateway](https://github.com/Devolutions/devolutions-gateway/)’s [Standalone Web Interface](https://github.com/Devolutions/devolutions-gateway/tree/master/webapp) which is a completely free product (shipped since v2024.1.0). +- [Devolutions Server](https://devolutions.net/server/), our self-hosted credential manager. +- [Devolutions Hub](https://devolutions.net/password-hub/), our cloud-based credential manager. diff --git a/web-client/iron-svelte-client/README.md b/web-client/iron-svelte-client/README.md index 2da3e22b..c55a44b4 100644 --- a/web-client/iron-svelte-client/README.md +++ b/web-client/iron-svelte-client/README.md @@ -3,48 +3,45 @@ Web-based frontend using [`SvelteKit`](https://kit.svelte.dev/) and [`Material`](https://material.io) frameworks. This is a simple wrapper around the `iron-remote-gui` Web Component demonstrating how to use the API. +Note that this demonstration client is not intended to be used in production as-is. +Devolutions is shipping well-integrated, production-ready IronRDP web clients as part of: + +- [Devolutions Gateway](https://github.com/Devolutions/devolutions-gateway/)’s [Standalone Web Interface](https://github.com/Devolutions/devolutions-gateway/tree/master/webapp) which is a completely free product (shipped since v2024.1.0). +- [Devolutions Server](https://devolutions.net/server/), our self-hosted credential manager. +- [Devolutions Hub](https://devolutions.net/password-hub/), our cloud-based credential manager. + ## Requirements - A Devolutions Gateway with network access to this machine up and running -- A token signed using the provisioner key the Devolutions Gateway is expecting +- A token signed using the provisioner key configured on the Devolutions Gateway ### Devolutions Gateway setup -Web client is using a special extension to RDP protocol. -This extension is available starting Devolutions Gateway v2023.1.1. -However, this version not yet officially published. +The IronRDP web client is relying on an extension to the RDP protocol ("RDCleanPath"). +This enables us to avoid the redundant TLS layer, or "TLS-in-TLS" problem found in other RDP web clients. +This redundant TLS layer is typically required to circumvent the restriction imposed by web browsers. +Indeed, it’s not possible to open a plain TCP socket using the API provided by web browsers. +Instead, we need a middleware service to unpack the WebSocket payload and forward it over a plain TCP transport. +Other web clients are using a Secure WebSocket transport (WebSocket over TLS) to communicate with the middleware, +and inside this secure transport another protocol-level, extra TLS transport is opened. +With our extension, the middleware service inspects the RDP handshake and perform the TLS upgrade on its end, removing the need for the redundant client-side TLS encryption. +The extension is supported by the [Devolutions Gateway](https://github.com/Devolutions/devolutions-gateway/) (v2023.1.1 and later). -Therefore, you need to either: +You need to install and configure it in order to use the web client. +You can follow the instructions found on the dedicated repository. -- Download a binary prebuilt from master such as [this one](https://devolutions.sharepoint.com/:f:/s/Prereleases/En3Y3T3OIuFFpYknTZYZfIYBXo_OpCubXBKd8wpjZ7Qrtg?e=MBVz53). -- Build [master](https://github.com/Devolutions/devolutions-gateway/tree/master) yourself. - Simply [install the Rust toolchain](https://rustup.rs/) and run `cargo build --release`. Binary will be found in the `./target/release` folder. - -Create a new folder somewhere on your system. For instance `/home/david/Documents/gateway-config`. -We’ll store Devolutions Gateway configuration inside this folder. - -Set the `DGATEWAY_CONFIG_PATH` environment variable to this path. - -PowerShell: - -```pwsh -$ $Env:DGATEWAY_CONFIG_PATH = "/home/david/Documents/gateway-config" -``` - -bash / zsh /other bash-like shells: - -```bash -$ export DGATEWAY_CONFIG_PATH=/home/david/Documents/gateway-config -``` - -Generate a default configuration using the Devolutions Gateway executable: +You will need to generate a key pair, that we call the "provisioner" key pair. +You can generate an RSA key pair using `openssl` by running the following commands: ```shell -$ ./DevolutionsGateway --config-init-only # Linux / macOS -$ ./DevolutionsGateway.exe --config-init-only # Windows +$ openssl genrsa -out provisioner.key 2048 +$ openssl rsa -in provisioner.key -outform PEM -pubout -out provisioner.pem ``` -For convenience, modify the freshly generated `gateway.json` like so: +Where `provisioner.key` is the private part and `provisioner.pem` the public counterpart. +The public one must be installed on the Devolutions Gateway. + +Once installed, you can optionally modify the `gateway.json` config file to add the following debug option: ```json { @@ -57,25 +54,7 @@ For convenience, modify the freshly generated `gateway.json` like so: That way, you can later reuse the same token multiple times (convenient at development time). -Notice that the configuration file refers to a public (provisioner) key file called `provisioner.pem`. -We need to generate this file. - -You can generate an RSA key pair using `openssl` by running the following commands: - -```shell -$ openssl genrsa -out provisioner.key 2048 -$ openssl rsa -in provisioner.key -outform PEM -pubout -out provisioner.pem -``` - -Where `provisioner.key` is our private key and `provisioner.pem` the public counterpart. - -Congratulations, your Devolutions Gateway setup is complete. -Assuming the environment variable is properly set, you can run the executable: - -```shell -$ ./DevolutionsGateway # Linux / macOS -$ ./DevolutionsGateway.exe # Windows -``` +Make sure to start or restart the service before proceeding further. ### Token generation @@ -92,10 +71,13 @@ You can then run the following: $ New-DGatewayToken -Type ASSOCIATION -PrivateKeyFile -DestinationHost -ApplicationProtocol rdp ``` -## Run in dev mode +If you have a Rust toolchain available, you can use the [`tokengen`][tokengen] tool found in Devolutions Gateway repository. -First, run `npm install` in the [iron-remote-gui](../iron-remote-gui/) folder, -and then `npm install` in [iron-svelte-client](./) folder. +[tokengen]: https://github.com/Devolutions/devolutions-gateway/tree/master/tools/tokengen + +## Run in development mode + +First, run `npm install` in the [iron-remote-gui](../iron-remote-gui/) folder, and then `npm install` in [iron-svelte-client](./) folder. You can then start the dev server with either: @@ -104,4 +86,4 @@ You can then start the dev server with either: - `npm run dev-no-wasm` - Only builds `iron-remote-gui` prior to starting the dev server. You can build distribution files with `npm run build`. -Files are to be found in `./iron-svelte-client/build/browser` +Files are to be found in `./iron-svelte-client/build/browser`. From bc2cdc0a10af84f06017ff6b24eeca463999548c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 22:15:45 -0500 Subject: [PATCH 0471/1273] build(deps): bump the patch group with 4 updates (#381) Bumps the patch group with 4 updates: [png](https://github.com/image-rs/image-png), [anyhow](https://github.com/dtolnay/anyhow), [clap](https://github.com/clap-rs/clap) and [semver](https://github.com/dtolnay/semver). Updates `png` from 0.17.11 to 0.17.13 - [Changelog](https://github.com/image-rs/image-png/blob/master/CHANGES.md) - [Commits](https://github.com/image-rs/image-png/compare/v0.17.11...v0.17.13) Updates `anyhow` from 1.0.79 to 1.0.80 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.79...1.0.80) Updates `clap` from 4.5.0 to 4.5.1 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.0...clap_complete-v4.5.1) Updates `semver` from 1.0.21 to 1.0.22 - [Release notes](https://github.com/dtolnay/semver/releases) - [Commits](https://github.com/dtolnay/semver/compare/1.0.21...1.0.22) --- updated-dependencies: - dependency-name: png dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: semver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f23c7c8c..db6f6ea0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,9 +142,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arbitrary" @@ -503,9 +503,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", "clap_derive", @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstream", "anstyle", @@ -2880,9 +2880,9 @@ checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" [[package]] name = "png" -version = "0.17.11" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -3462,9 +3462,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" From 9e6f9310eab134d0974d06946657dc34dd887c52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 22:16:04 -0500 Subject: [PATCH 0472/1273] build(deps): bump the crypto group with 1 update (#380) Bumps the crypto group with 1 update: [rustls-pemfile](https://github.com/rustls/pemfile). Updates `rustls-pemfile` from 2.0.0 to 2.1.0 - [Release notes](https://github.com/rustls/pemfile/releases) - [Commits](https://github.com/rustls/pemfile/compare/v/2.0.0...v/2.1.0) --- updated-dependencies: - dependency-name: rustls-pemfile dependency-type: direct:production update-type: version-update:semver-minor dependency-group: crypto ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 10 +++++----- crates/ironrdp/Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db6f6ea0..4aaaa69a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1643,7 +1643,7 @@ dependencies = [ "pico-args", "rand", "rustls", - "rustls-pemfile 2.0.0", + "rustls-pemfile 2.1.0", "tokio", "tokio-rustls", "tracing", @@ -3337,9 +3337,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" +checksum = "3c333bb734fcdedcea57de1602543590f545f127dc8b533324318fd492c5c70b" dependencies = [ "base64", "rustls-pki-types", @@ -3347,9 +3347,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9d979b3ce68192e42760c7810125eb6cf2ea10efae545a156063e61f314e2a" +checksum = "048a63e5b3ac996d78d402940b5fa47973d2d080c6c6fffa1d0f19c4445310b7" [[package]] name = "rustls-webpki" diff --git a/crates/ironrdp/Cargo.toml b/crates/ironrdp/Cargo.toml index aaf9e109..d5af798c 100644 --- a/crates/ironrdp/Cargo.toml +++ b/crates/ironrdp/Cargo.toml @@ -51,7 +51,7 @@ ironrdp-cliprdr-native.workspace = true anyhow = "1" async-trait = "0.1" rustls = "0.21" -rustls-pemfile = "2.0" +rustls-pemfile = "2.1" bmp = "0.5" pico-args = "0.5" x509-cert = { version = "0.2", default-features = false, features = ["std"] } From 0d2b25a54646288c88e95bfd0d47cba501688f44 Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Tue, 20 Feb 2024 20:55:20 +0200 Subject: [PATCH 0473/1273] fix(web): Fixed bug with '0' and '1' keys not being registered (#382) --- web-client/iron-remote-gui/src/services/wasm-bridge.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 239450ea..7bee8ca9 100644 --- a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -330,7 +330,7 @@ export class WasmBridgeService { if (this.keyboardUnicodeMode && unicodeEvent && keyEvent) { // `Dead` and `Unidentified` keys should be ignored - if (evt.key in ['Dead', 'Unidentified']) { + if (['Dead', 'Unidentified'].indexOf(evt.key) != -1) { return; } From 1732e5e21ec09d8d2674e1137489e665e829a98e Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Mon, 26 Feb 2024 18:42:15 +0200 Subject: [PATCH 0474/1273] fix(connector): Updated default performance flags --- crates/ironrdp-connector/src/connection.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 3cdf74a2..4a285ab8 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -2,6 +2,7 @@ use std::mem; use std::net::SocketAddr; use ironrdp_pdu::rdp::capability_sets::CapabilitySet; +use ironrdp_pdu::rdp::client_info::PerformanceFlags; use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{gcc, mcs, nego, rdp, PduHint}; use ironrdp_svc::{StaticChannelSet, StaticVirtualChannel, SvcClientProcessor}; @@ -767,7 +768,14 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl }, address: routing_addr.ip().to_string(), dir: config.client_dir.clone(), - optional_data: ExtendedClientOptionalInfo::default(), + optional_data: ExtendedClientOptionalInfo { + performance_flags: Some( + PerformanceFlags::DISABLE_FULLWINDOWDRAG + | PerformanceFlags::DISABLE_MENUANIMATIONS + | PerformanceFlags::ENABLE_FONT_SMOOTHING, + ), + ..Default::default() + }, }, }; From af7805a5fc9ae58e273e1eb2a31df4e250c186e1 Mon Sep 17 00:00:00 2001 From: Przemko Robakowski Date: Tue, 27 Feb 2024 08:24:32 +0100 Subject: [PATCH 0475/1273] fix(session): DVC message length (#383) --- crates/ironrdp-session/src/legacy.rs | 53 +++++++++++++++++++++------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/crates/ironrdp-session/src/legacy.rs b/crates/ironrdp-session/src/legacy.rs index cacf7e55..9363a0c0 100644 --- a/crates/ironrdp-session/src/legacy.rs +++ b/crates/ironrdp-session/src/legacy.rs @@ -1,7 +1,9 @@ use ironrdp_connector::legacy::{encode_send_data_request, SendDataIndicationCtx}; use ironrdp_pdu::rdp::vc; +use ironrdp_pdu::rdp::vc::ChannelError; use ironrdp_pdu::write_buf::WriteBuf; -use ironrdp_pdu::PduParsing as _; +use ironrdp_pdu::PduParsing; +use std::io::{Read, Write}; use crate::{SessionError, SessionResult}; @@ -10,7 +12,7 @@ pub fn encode_dvc_message( drdynvc_id: u16, dvc_pdu: vc::dvc::ClientPdu, dvc_data: &[u8], - mut buf: &mut WriteBuf, + buf: &mut WriteBuf, ) -> SessionResult<()> { let dvc_length = dvc_pdu.buffer_length() + dvc_data.len(); @@ -19,21 +21,48 @@ pub fn encode_dvc_message( flags: vc::ChannelControlFlags::FLAG_FIRST | vc::ChannelControlFlags::FLAG_LAST, }; - // [ TPKT | TPDU | SendDataRequest | vc::ChannelPduHeader | … - let written = encode_send_data_request(initiator_id, drdynvc_id, &channel_header, buf).map_err(map_error)?; - debug_assert_eq!(written, buf.filled_len()); + let dvc_message = DvcMessage { + channel_header, + dvc_pdu, + dvc_data, + }; - // … | dvc::ClientPdu | … - dvc_pdu.to_buffer(&mut buf)?; - - // … | DvcData ] - buf.write_slice(dvc_data); - - debug_assert_eq!(buf.filled_len(), written + dvc_length); + let previous_length = buf.filled_len(); + // [ TPKT | TPDU | SendDataRequest | vc::ChannelPduHeader | vc::dvc::ClientPdu | DvcData ] + let written = encode_send_data_request(initiator_id, drdynvc_id, &dvc_message, buf).map_err(map_error)?; + debug_assert_eq!(written, buf.filled_len() - previous_length); Ok(()) } +struct DvcMessage<'a> { + channel_header: vc::ChannelPduHeader, + dvc_pdu: vc::dvc::ClientPdu, + dvc_data: &'a [u8], +} + +impl PduParsing for DvcMessage<'_> { + type Error = ChannelError; + + fn from_buffer(_: impl Read) -> Result + where + Self: Sized, + { + Err(std::io::Error::other("legacy::DvcMessage::from_buffer called – this is a bug").into()) + } + + fn to_buffer(&self, mut stream: impl Write) -> Result<(), Self::Error> { + self.channel_header.to_buffer(&mut stream)?; + self.dvc_pdu.to_buffer(&mut stream)?; + stream.write_all(self.dvc_data)?; + Ok(()) + } + + fn buffer_length(&self) -> usize { + self.channel_header.buffer_length() + self.dvc_pdu.buffer_length() + self.dvc_data.len() + } +} + pub struct DynamicChannelCtx<'a> { pub dvc_pdu: vc::dvc::ServerPdu, pub dvc_data: &'a [u8], From 5fd5ce946e48a68a6232f5b9fdb1ea122e47a6ae Mon Sep 17 00:00:00 2001 From: Mihnea Buzatu <34985125+mihneabuz@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:39:50 +0200 Subject: [PATCH 0476/1273] feat: add support for skip channel join flag (#373) --- .../src/channel_connection.rs | 69 ++++++++++++------- crates/ironrdp-acceptor/src/connection.rs | 26 +++++-- .../src/channel_connection.rs | 65 ++++++++++++----- crates/ironrdp-connector/src/connection.rs | 15 +++- 4 files changed, 124 insertions(+), 51 deletions(-) diff --git a/crates/ironrdp-acceptor/src/channel_connection.rs b/crates/ironrdp-acceptor/src/channel_connection.rs index a9af43a2..b1e33317 100644 --- a/crates/ironrdp-acceptor/src/channel_connection.rs +++ b/crates/ironrdp-acceptor/src/channel_connection.rs @@ -1,6 +1,6 @@ use std::collections::HashSet; -use ironrdp_connector::{ConnectorError, ConnectorErrorExt, ConnectorResult, Sequence, State, Written}; +use ironrdp_connector::{reason_err, ConnectorError, ConnectorErrorExt, ConnectorResult, Sequence, State, Written}; use ironrdp_pdu as pdu; use pdu::mcs; use pdu::write_buf::WriteBuf; @@ -9,7 +9,7 @@ use pdu::write_buf::WriteBuf; pub struct ChannelConnectionSequence { state: ChannelConnectionState, user_channel_id: u16, - channels: HashSet, + channel_ids: Option>, } #[derive(Default, Debug)] @@ -21,10 +21,10 @@ pub enum ChannelConnectionState { WaitAttachUserRequest, SendAttachUserConfirm, WaitChannelJoinRequest { - joined: HashSet, + remaining: HashSet, }, SendChannelJoinConfirm { - joined: HashSet, + remaining: HashSet, channel_id: u16, }, AllJoined, @@ -61,7 +61,7 @@ impl Sequence for ChannelConnectionSequence { ChannelConnectionState::SendAttachUserConfirm => None, ChannelConnectionState::WaitChannelJoinRequest { .. } => Some(&pdu::X224_HINT), ChannelConnectionState::SendChannelJoinConfirm { .. } => None, - ChannelConnectionState::AllJoined { .. } => None, + ChannelConnectionState::AllJoined => None, } } @@ -99,28 +99,41 @@ impl Sequence for ChannelConnectionSequence { let written = ironrdp_pdu::encode_buf(&attach_user_confirm, output).map_err(ConnectorError::pdu)?; - ( - Written::from_size(written)?, - ChannelConnectionState::WaitChannelJoinRequest { joined: HashSet::new() }, - ) + let next_state = match self.channel_ids.take() { + Some(channel_ids) => ChannelConnectionState::WaitChannelJoinRequest { remaining: channel_ids }, + None => ChannelConnectionState::AllJoined, + }; + + (Written::from_size(written)?, next_state) } - // TODO(#165): support RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN - ChannelConnectionState::WaitChannelJoinRequest { joined } => { + ChannelConnectionState::WaitChannelJoinRequest { mut remaining } => { let channel_request = ironrdp_pdu::decode::(input).map_err(ConnectorError::pdu)?; debug!(message = ?channel_request, "Received"); - let channel_id = channel_request.channel_id; + let is_expected = remaining.remove(&channel_request.channel_id); + + if !is_expected { + return Err(reason_err!( + "ChannelJoinConfirm", + "unexpected channel_id in MCS Channel Join Request: got {}, expected one of: {:?}", + channel_request.channel_id, + remaining, + )); + } ( Written::Nothing, - ChannelConnectionState::SendChannelJoinConfirm { joined, channel_id }, + ChannelConnectionState::SendChannelJoinConfirm { + remaining, + channel_id: channel_request.channel_id, + }, ) } - ChannelConnectionState::SendChannelJoinConfirm { mut joined, channel_id } => { + ChannelConnectionState::SendChannelJoinConfirm { remaining, channel_id } => { let channel_confirm = mcs::ChannelJoinConfirm { result: 0, initiator_id: self.user_channel_id, @@ -132,15 +145,13 @@ impl Sequence for ChannelConnectionSequence { let written = ironrdp_pdu::encode_buf(&channel_confirm, output).map_err(ConnectorError::pdu)?; - joined.insert(channel_id); - - let state = if joined != self.channels { - ChannelConnectionState::WaitChannelJoinRequest { joined } + let next_state = if remaining.is_empty() { + ChannelConnectionState::AllJoined } else { - ChannelConnectionState::AllJoined {} + ChannelConnectionState::WaitChannelJoinRequest { remaining } }; - (Written::from_size(written)?, state) + (Written::from_size(written)?, next_state) } _ => unreachable!(), @@ -156,10 +167,20 @@ impl ChannelConnectionSequence { Self { state: ChannelConnectionState::WaitErectDomainRequest, user_channel_id, - channels: vec![user_channel_id, io_channel_id] - .into_iter() - .chain(other_channels) - .collect(), + channel_ids: Some( + vec![user_channel_id, io_channel_id] + .into_iter() + .chain(other_channels) + .collect(), + ), + } + } + + pub fn skip_channel_join(user_channel_id: u16) -> Self { + Self { + state: ChannelConnectionState::WaitErectDomainRequest, + user_channel_id, + channel_ids: None, } } diff --git a/crates/ironrdp-acceptor/src/connection.rs b/crates/ironrdp-acceptor/src/connection.rs index b0314acd..d8c494a1 100644 --- a/crates/ironrdp-acceptor/src/connection.rs +++ b/crates/ironrdp-acceptor/src/connection.rs @@ -295,7 +295,17 @@ impl Sequence for Acceptor { channels, } => { let channel_ids: Vec = channels.iter().map(|&(i, _)| i).collect(); - let server_blocks = create_gcc_blocks(self.io_channel_id, channel_ids.clone(), requested_protocol); + + let skip_channel_join = early_capability + .is_some_and(|client| client.contains(gcc::ClientEarlyCapabilityFlags::SUPPORT_SKIP_CHANNELJOIN)); + + let server_blocks = create_gcc_blocks( + self.io_channel_id, + channel_ids.clone(), + requested_protocol, + skip_channel_join, + ); + let settings_response = mcs::ConnectResponse { conference_create_response: gcc::ConferenceCreateResponse { user_id: self.user_channel_id, @@ -315,11 +325,11 @@ impl Sequence for Acceptor { AcceptorState::ChannelConnection { early_capability, channels, - connection: ChannelConnectionSequence::new( - self.user_channel_id, - self.io_channel_id, - channel_ids, - ), + connection: if skip_channel_join { + ChannelConnectionSequence::skip_channel_join(self.user_channel_id) + } else { + ChannelConnectionSequence::new(self.user_channel_id, self.io_channel_id, channel_ids) + }, }, ) } @@ -530,13 +540,15 @@ fn create_gcc_blocks( io_channel: u16, channel_ids: Vec, requested: nego::SecurityProtocol, + skip_channel_join: bool, ) -> gcc::ServerGccBlocks { pdu::gcc::ServerGccBlocks { core: gcc::ServerCoreData { version: gcc::RdpVersion::V5_PLUS, optional_data: gcc::ServerCoreOptionalData { client_requested_protocols: Some(requested), - early_capability_flags: None, + early_capability_flags: skip_channel_join + .then_some(gcc::ServerEarlyCapabilityFlags::SKIP_CHANNELJOIN_SUPPORTED), }, }, security: gcc::ServerSecurityData::no_security(), diff --git a/crates/ironrdp-connector/src/channel_connection.rs b/crates/ironrdp-connector/src/channel_connection.rs index 0f206a19..4cb71845 100644 --- a/crates/ironrdp-connector/src/channel_connection.rs +++ b/crates/ironrdp-connector/src/channel_connection.rs @@ -18,9 +18,11 @@ pub enum ChannelConnectionState { WaitAttachUserConfirm, SendChannelJoinRequest { user_channel_id: u16, + join_channel_ids: HashSet, }, WaitChannelJoinConfirm { user_channel_id: u16, + remaining_channel_ids: HashSet, }, AllJoined { user_channel_id: u16, @@ -53,7 +55,7 @@ impl State for ChannelConnectionState { #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct ChannelConnectionSequence { pub state: ChannelConnectionState, - pub channel_ids: HashSet, + pub channel_ids: Option>, } impl ChannelConnectionSequence { @@ -65,7 +67,14 @@ impl ChannelConnectionSequence { Self { state: ChannelConnectionState::SendErectDomainRequest, - channel_ids, + channel_ids: Some(channel_ids), + } + } + + pub fn skip_channel_join() -> Self { + Self { + state: ChannelConnectionState::SendErectDomainRequest, + channel_ids: None, } } } @@ -126,17 +135,23 @@ impl Sequence for ChannelConnectionSequence { let user_channel_id = attach_user_confirm.initiator_id; - // User channel ID must also be joined. - self.channel_ids.insert(user_channel_id); - debug!(message = ?attach_user_confirm, user_channel_id, "Received"); - debug_assert!(!self.channel_ids.is_empty()); + let next = match self.channel_ids.take() { + Some(mut channel_ids) => { + // User channel ID must also be joined. + channel_ids.insert(user_channel_id); - ( - Written::Nothing, - ChannelConnectionState::SendChannelJoinRequest { user_channel_id }, - ) + ChannelConnectionState::SendChannelJoinRequest { + user_channel_id, + join_channel_ids: channel_ids, + } + } + + None => ChannelConnectionState::AllJoined { user_channel_id }, + }; + + (Written::Nothing, next) } // Send all the join requests in a single batch. @@ -145,10 +160,15 @@ impl Sequence for ChannelConnectionSequence { // > Channel Join Confirm for a previously sent request has been received. RDP 8.1, // > 10.0, and 10.1 clients send all of the Channel Join Requests to the server in a // > single batch to minimize the overall connection sequence time. - ChannelConnectionState::SendChannelJoinRequest { user_channel_id } => { + ChannelConnectionState::SendChannelJoinRequest { + user_channel_id, + join_channel_ids, + } => { let mut total_written: usize = 0; - for channel_id in self.channel_ids.iter().copied() { + debug_assert!(!join_channel_ids.is_empty()); + + for channel_id in join_channel_ids.iter().copied() { let channel_join_request = mcs::ChannelJoinRequest { initiator_id: user_channel_id, channel_id, @@ -164,11 +184,17 @@ impl Sequence for ChannelConnectionSequence { ( Written::from_size(total_written)?, - ChannelConnectionState::WaitChannelJoinConfirm { user_channel_id }, + ChannelConnectionState::WaitChannelJoinConfirm { + user_channel_id, + remaining_channel_ids: join_channel_ids, + }, ) } - ChannelConnectionState::WaitChannelJoinConfirm { user_channel_id } => { + ChannelConnectionState::WaitChannelJoinConfirm { + user_channel_id, + mut remaining_channel_ids, + } => { let channel_join_confirm = ironrdp_pdu::decode::(input).map_err(ConnectorError::pdu)?; @@ -181,14 +207,14 @@ impl Sequence for ChannelConnectionSequence { ) } - let is_expected = self.channel_ids.remove(&channel_join_confirm.requested_channel_id); + let is_expected = remaining_channel_ids.remove(&channel_join_confirm.requested_channel_id); if !is_expected { return Err(reason_err!( "ChannelJoinConfirm", "unexpected requested_channel_id in MCS Channel Join Confirm: got {}, expected one of: {:?}", channel_join_confirm.requested_channel_id, - self.channel_ids, + remaining_channel_ids, )); } @@ -202,10 +228,13 @@ impl Sequence for ChannelConnectionSequence { )); } - let next_state = if self.channel_ids.is_empty() { + let next_state = if remaining_channel_ids.is_empty() { ChannelConnectionState::AllJoined { user_channel_id } } else { - ChannelConnectionState::WaitChannelJoinConfirm { user_channel_id } + ChannelConnectionState::WaitChannelJoinConfirm { + user_channel_id, + remaining_channel_ids, + } }; (Written::Nothing, next_state) diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 4a285ab8..acaf9a98 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -377,11 +377,21 @@ impl Sequence for ClientConnector { self.static_channels.attach_channel_id(channel, channel_id); }); + let skip_channel_join = server_gcc_blocks + .core + .optional_data + .early_capability_flags + .is_some_and(|c| c.contains(gcc::ServerEarlyCapabilityFlags::SKIP_CHANNELJOIN_SUPPORTED)); + ( Written::Nothing, ClientConnectorState::ChannelConnection { io_channel_id, - channel_connection: ChannelConnectionSequence::new(io_channel_id, static_channel_ids), + channel_connection: if skip_channel_join { + ChannelConnectionSequence::skip_channel_join() + } else { + ChannelConnectionSequence::new(io_channel_id, static_channel_ids) + }, }, ) } @@ -677,7 +687,8 @@ fn create_gcc_blocks<'a>( early_capability_flags: { let mut early_capability_flags = ClientEarlyCapabilityFlags::VALID_CONNECTION_TYPE | ClientEarlyCapabilityFlags::SUPPORT_ERR_INFO_PDU - | ClientEarlyCapabilityFlags::STRONG_ASYMMETRIC_KEYS; + | ClientEarlyCapabilityFlags::STRONG_ASYMMETRIC_KEYS + | ClientEarlyCapabilityFlags::SUPPORT_SKIP_CHANNELJOIN; // TODO(#136): support for ClientEarlyCapabilityFlags::SUPPORT_STATUS_INFO_PDU From 5ca05f1f5f24d7a693da5beded187fb57e9ebbd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 29 Feb 2024 10:39:05 +0900 Subject: [PATCH 0477/1273] chore(release): prepare for iron-remote-gui v0.11.4 (#389) --- web-client/iron-remote-gui/package-lock.json | 4 ++-- web-client/iron-remote-gui/package.json | 2 +- web-client/iron-remote-gui/public/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index cc0a51dd..969a2767 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devolutions/iron-remote-gui", - "version": "0.11.3", + "version": "0.11.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devolutions/iron-remote-gui", - "version": "0.11.3", + "version": "0.11.4", "dependencies": { "rxjs": "^6.6.7", "ua-parser-js": "^1.0.33" diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 0dc78c66..2d91b185 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -9,7 +9,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client", - "version": "0.11.3", + "version": "0.11.4", "type": "module", "private": true, "scripts": { diff --git a/web-client/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json index 7b0e33b2..f636abb4 100644 --- a/web-client/iron-remote-gui/public/package.json +++ b/web-client/iron-remote-gui/public/package.json @@ -9,7 +9,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.11.3", + "version": "0.11.4", "main": "iron-remote-gui.umd.cjs", "types": "index.d.ts", "files": [ From 86b8e1429fd5c951cac6e983c8b7504140aca376 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Wed, 28 Feb 2024 17:42:13 -0800 Subject: [PATCH 0478/1273] fix(rdpdr): implement `Clone` and `PartialEq` on most of efs and esc (#388) --- crates/ironrdp-rdpdr/src/pdu/efs.rs | 176 +++++++++++++++++----------- crates/ironrdp-rdpdr/src/pdu/esc.rs | 72 ++++++------ 2 files changed, 145 insertions(+), 103 deletions(-) diff --git a/crates/ironrdp-rdpdr/src/pdu/efs.rs b/crates/ironrdp-rdpdr/src/pdu/efs.rs index dbffad71..99e291c3 100644 --- a/crates/ironrdp-rdpdr/src/pdu/efs.rs +++ b/crates/ironrdp-rdpdr/src/pdu/efs.rs @@ -17,7 +17,7 @@ use ironrdp_pdu::{ use super::esc::rpce; use super::{PacketId, SharedHeader}; -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Clone, Copy)] pub enum VersionAndIdPduKind { /// [2.2.2.2] Server Announce Request (DR_CORE_SERVER_ANNOUNCE_REQ) /// @@ -46,7 +46,7 @@ impl VersionAndIdPduKind { /// VersionAndIdPDU is a fixed size structure representing multiple PDUs. /// /// The kind field is used to determine the actual PDU type, see [`VersionAndIdPduKind`]. -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct VersionAndIdPdu { /// This field MUST be set to 0x0001 ([`VERSION_MAJOR`]). pub version_major: u16, @@ -121,7 +121,7 @@ impl VersionAndIdPdu { /// [2.2.2.4] Client Name Request (DR_CORE_CLIENT_NAME_REQ) /// /// [2.2.2.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/902497f1-3b1c-4aee-95f8-1668f9b7b7d2 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub enum ClientNameRequest { Ascii(String), Unicode(String), @@ -170,7 +170,7 @@ impl ClientNameRequest { } #[repr(u32)] -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] pub enum ClientNameRequestUnicodeFlag { Ascii = 0x0, Unicode = 0x1, @@ -196,7 +196,7 @@ impl From for u32 { /// /// [2.2.2.7]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/702789c3-b924-4bc2-9280-3221bc7d6797 /// [2.2.2.8]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/f513bf87-cca0-488a-ac5c-18cf18f4a7e1 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct CoreCapability { pub capabilities: Vec, pub kind: CoreCapabilityKind, @@ -263,7 +263,7 @@ impl CoreCapability { } } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Clone, Copy)] pub enum CoreCapabilityKind { /// [2.2.2.7] Server Core Capability Request (DR_CORE_CAPABILITY_REQ) /// @@ -284,7 +284,7 @@ impl CoreCapabilityKind { } } -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct Capabilities(Vec); impl Capabilities { @@ -338,7 +338,7 @@ impl Default for Capabilities { /// [2.2.1.2.1] Capability Message (CAPABILITY_SET) /// /// [2.2.1.2.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/f1b9dd1d-2c37-4aac-9836-4b0df02369ba -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] pub struct CapabilityMessage { header: CapabilityHeader, capability_data: CapabilityData, @@ -416,7 +416,7 @@ impl CapabilityMessage { /// [2.2.1.2] Capability Header (CAPABILITY_HEADER) /// /// [2.2.1.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/b3c3304a-2e1b-4667-97e9-3bce49544907 -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] struct CapabilityHeader { cap_type: CapabilityType, length: u16, @@ -472,7 +472,7 @@ impl CapabilityHeader { } } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, PartialEq, Copy)] #[repr(u16)] enum CapabilityType { /// CAP_GENERAL_TYPE @@ -515,7 +515,7 @@ impl TryFrom for CapabilityType { } } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] enum CapabilityData { General(GeneralCapabilitySet), Printer, @@ -559,7 +559,7 @@ impl CapabilityData { /// [2.2.2.7.1] General Capability Set (GENERAL_CAPS_SET) /// /// [2.2.2.7.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/06c7cb30-303d-4fa2-b396-806df8ac1501 -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] struct GeneralCapabilitySet { /// MUST be ignored. os_type: u32, @@ -646,7 +646,7 @@ bitflags! { /// If the bit is set, the I/O request is allowed. The requests are identified by the MajorFunction field /// in the Device I/O Request (section 2.2.1.4) header. This field MUST be set to a valid combination of /// the following values. - #[derive(Debug, Clone, Copy)] + #[derive(Debug, PartialEq, Clone, Copy)] struct IoCode1: u32 { /// Unused, always set. const RDPDR_IRP_MJ_CREATE = 0x0000_0001; @@ -703,7 +703,7 @@ bitflags! { bitflags! { /// A 32-bit unsigned integer that specifies extended PDU flags. /// This field MUST be set as a bitmask of the following values. - #[derive(Debug, Clone, Copy)] + #[derive(Debug, PartialEq, Clone, Copy)] struct ExtendedPdu: u32 { /// Allow the client to send Client Drive Device List Remove packets. const RDPDR_DEVICE_REMOVE_PDUS = 0x0000_0001; @@ -717,7 +717,7 @@ bitflags! { bitflags! { /// A 32-bit unsigned integer that specifies extended flags. /// The extraFlags1 field MUST be set as a bitmask of the following value. - #[derive(Debug, Clone, Copy)] + #[derive(Debug, PartialEq, Clone, Copy)] struct ExtraFlags1: u32 { /// Optionally present only in the Client Core Capability Response. /// Allows the server to send multiple simultaneous read or write requests @@ -742,7 +742,7 @@ const VERSION_MAJOR: u16 = 0x0001; /// /// [2.2.2.9]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/10ef9ada-cba2-4384-ab60-7b6290ed4a9a /// [2.2.3.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/d8b2bc1c-0207-4c15-abe3-62eaa2afcaf1 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ClientDeviceListAnnounce { pub device_list: Vec, } @@ -780,7 +780,7 @@ impl ClientDeviceListAnnounce { } } -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct Devices(Vec); impl Devices { @@ -827,7 +827,7 @@ impl Default for Devices { /// [2.2.1.3] Device Announce Header (DEVICE_ANNOUNCE) /// /// [2.2.1.3]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/32e34332-774b-4ead-8c9d-5d64720d6bf9 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceAnnounceHeader { device_type: DeviceType, device_id: u32, @@ -896,7 +896,7 @@ impl DeviceAnnounceHeader { /// If DeviceType is set to RDPDR_DTYP_SMARTCARD, the PreferredDosName MUST be set to "SCARD". /// /// Note A column character, ":", is valid only when present at the end of the PreferredDosName field, otherwise it is also considered invalid. -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] struct PreferredDosName(String); impl PreferredDosName { @@ -953,7 +953,7 @@ impl TryFrom for DeviceType { /// [2.2.2.1] Server Device Announce Response (DR_CORE_DEVICE_ANNOUNCE_RSP) /// /// [2.2.2.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/a4c0b619-6e87-4721-bdc4-5d2db7f485f3 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDeviceAnnounceResponse { pub device_id: u32, pub result_code: NtStatus, @@ -1052,7 +1052,7 @@ impl From for u32 { /// [2.2.1.4] Device I/O Request (DR_DEVICE_IOREQUEST) /// /// [2.2.1.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/a087ffa8-d0d5-4874-ac7b-0494f63e2d5d -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceIoRequest { pub device_id: u32, pub file_id: u32, @@ -1202,7 +1202,7 @@ impl From for u8 { /// [2.2.1.4.5] Device Control Request (DR_CONTROL_REQ) /// /// [2.2.1.4.5]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/30662c80-ec6e-4ed1-9004-2e6e367bb59f -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceControlRequest { pub header: DeviceIoRequest, pub output_buffer_length: u32, @@ -1244,7 +1244,7 @@ pub trait IoCtlCode: TryFrom {} /// An IoCtlCode that can be used when the IoCtlCode is not known /// or not important. -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct AnyIoCtlCode(pub u32); impl TryFrom for AnyIoCtlCode { @@ -1270,6 +1270,47 @@ pub struct DeviceControlResponse { pub output_buffer: Option>, } +impl PartialEq for DeviceControlResponse { + fn eq(&self, other: &Self) -> bool { + if (self.device_io_reply != other.device_io_reply) + || (self.output_buffer.is_some() != other.output_buffer.is_some()) + { + return false; + } + + // If both are `None`, they are equal. + if self.output_buffer.is_none() && other.output_buffer.is_none() { + return true; + } + + // device_io_reply is equal and both output_buffers are Some + + // If the sizes are different, the buffers are not equal. + let self_size = self.output_buffer.as_ref().unwrap().size(); + let other_size = other.output_buffer.as_ref().unwrap().size(); + if self_size != other_size { + return false; + } + + // Sizes are the same. Last check is to encode the output buffers and compare the encoded bytes directly. + let mut self_buf = vec![0u8; self_size]; + let mut other_buf = vec![0u8; other_size]; + self.output_buffer + .as_ref() + .unwrap() + .encode(&mut WriteCursor::new(self_buf.as_mut_slice())) + .unwrap(); + other + .output_buffer + .as_ref() + .unwrap() + .encode(&mut WriteCursor::new(other_buf.as_mut_slice())) + .unwrap(); + + self_buf == other_buf + } +} + impl DeviceControlResponse { const NAME: &'static str = "DR_CONTROL_RSP"; @@ -1327,7 +1368,7 @@ impl DeviceControlResponse { /// [2.2.1.5] Device I/O Response (DR_DEVICE_IOCOMPLETION) /// /// [2.2.1.5]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/1c412a84-0776-4984-b35c-3f0445fcae65 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceIoResponse { pub device_id: u32, pub completion_id: u32, @@ -1374,7 +1415,7 @@ impl DeviceIoResponse { /// [2.2.3.3] Server Drive I/O Request (DR_DRIVE_CORE_DEVICE_IOREQUEST) /// /// [2.2.3.3]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/89bb51af-c54d-40fb-81c1-d1bb353c4536 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub enum ServerDriveIoRequest { ServerCreateDriveRequest(DeviceCreateRequest), ServerDriveQueryInformationRequest(ServerDriveQueryInformationRequest), @@ -1497,7 +1538,7 @@ impl From for ServerDriveIoRequest { /// /// [2.2.3.3.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/95b16fd0-d530-407c-a310-adedc85e9897 /// [2.2.1.4.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/5f71f6d2-d9ff-40c2-bdb5-a739447d3c3e -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceCreateRequest { /// The MajorFunction field in this header MUST be set to IRP_MJ_CREATE. pub device_io_request: DeviceIoRequest, @@ -1557,7 +1598,7 @@ bitflags! { /// /// [2.2.13.1.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/77b36d0f-6016-458a-a7a0-0f4a72ae1534 /// [2.2.13.1.2]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/0a5934b1-80f1-4da0-b1bf-5e021c309b71 - #[derive(Debug, Clone)] + #[derive(Debug, PartialEq, Clone)] pub struct DesiredAccess: u32 { /// This value indicates the right to read data from the file or named pipe. /// @@ -1614,7 +1655,7 @@ bitflags! { /// [2.6] File Attributes \[MS-FSCC\] /// /// [2.6]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ca28ec38-f155-4768-81d6-4bfeb8586fc9 - #[derive(Debug, Clone)] + #[derive(Debug, PartialEq, Clone)] pub struct FileAttributes: u32 { const FILE_ATTRIBUTE_READONLY = 0x00000001; const FILE_ATTRIBUTE_HIDDEN = 0x00000002; @@ -1644,7 +1685,7 @@ bitflags! { /// Specified in [2.2.13] SMB2 CREATE Request /// /// [2.2.13]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/e8fb45c1-a03d-44ca-b7ae-47385cfd7997 - #[derive(Debug, Clone)] + #[derive(Debug, PartialEq, Clone)] pub struct SharedAccess: u32 { const FILE_SHARE_READ = 0x00000001; const FILE_SHARE_WRITE = 0x00000002; @@ -1674,7 +1715,7 @@ bitflags! { /// Defined in [2.2.13] SMB2 CREATE Request /// /// [2.2.13]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/e8fb45c1-a03d-44ca-b7ae-47385cfd7997 - #[derive(Debug, Clone)] + #[derive(Debug, PartialEq, Clone)] pub struct CreateOptions: u32 { const FILE_DIRECTORY_FILE = 0x00000001; const FILE_WRITE_THROUGH = 0x00000002; @@ -1703,7 +1744,7 @@ bitflags! { /// [2.2.1.5.1] Device Create Response (DR_CREATE_RSP) /// /// [2.2.1.5.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/99e5fca5-b37a-41e4-bc69-8d7da7860f76 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceCreateResponse { pub device_io_reply: DeviceIoResponse, pub file_id: u32, @@ -1736,7 +1777,7 @@ bitflags! { /// Defined in [2.2.1.5.1] Device Create Response (DR_CREATE_RSP) /// /// [2.2.1.5.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/99e5fca5-b37a-41e4-bc69-8d7da7860f76 - #[derive(Debug)] + #[derive(Debug, PartialEq, Clone)] pub struct Information: u8 { /// A new file was created. const FILE_SUPERSEDED = 0x00000000; @@ -1753,7 +1794,7 @@ bitflags! { /// /// [2.2.3.3.8]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/e43dcd68-2980-40a9-9238-344b6cf94946 /// [analogous code in FreeRDP]: https://github.com/FreeRDP/FreeRDP/blob/511444a65e7aa2f537c5e531fa68157a50c1bd4d/channels/drive/client/drive_main.c#L384 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveQueryInformationRequest { pub device_io_request: DeviceIoRequest, pub file_info_class_lvl: FileInformationClassLevel, @@ -1851,7 +1892,7 @@ impl From for u32 { /// [2.2.3.4.8] Client Drive Query Information Response (DR_DRIVE_QUERY_INFORMATION_RSP) /// /// [2.2.3.4.8]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/37ef4fb1-6a95-4200-9fbf-515464f034a4 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ClientDriveQueryInformationResponse { pub device_io_response: DeviceIoResponse, /// If [`Self::device_io_response`] has an `io_status` besides [`NtStatus::SUCCESS`], @@ -1896,7 +1937,7 @@ impl ClientDriveQueryInformationResponse { /// [2.4] File Information Classes \[MS-FSCC\] /// /// [2.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/4718fc40-e539-4014-8e33-b675af74e3e1 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub enum FileInformationClass { Basic(FileBasicInformation), Standard(FileStandardInformation), @@ -2059,7 +2100,7 @@ impl From for FileInformationClass { /// [2.4.7] FileBasicInformation \[MS-FSCC\] /// /// [2.4.7]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/16023025-8a78-492f-8b96-c873b042ac50 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileBasicInformation { pub creation_time: i64, pub last_access_time: i64, @@ -2109,7 +2150,7 @@ impl FileBasicInformation { /// [2.4.41] FileStandardInformation \[MS-FSCC\] /// /// [2.4.41]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/5afa7f66-619c-48f3-955f-68c4ece704ae -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileStandardInformation { pub allocation_size: i64, pub end_of_file: i64, @@ -2173,7 +2214,7 @@ impl From for Boolean { /// [2.4.6] FileAttributeTagInformation \[MS-FSCC\] /// /// [2.4.6]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/d295752f-ce89-4b98-8553-266d37c84f0e?redirectedfrom=MSDN -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileAttributeTagInformation { pub file_attributes: FileAttributes, pub reparse_tag: u32, @@ -2196,7 +2237,7 @@ impl FileAttributeTagInformation { /// [2.4.8] FileBothDirectoryInformation \[MS-FSCC\] /// /// [2.4.8]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/270df317-9ba5-4ccb-ba00-8d22be139bc5 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileBothDirectoryInformation { pub next_entry_offset: u32, pub file_index: u32, @@ -2290,7 +2331,7 @@ impl FileBothDirectoryInformation { /// [2.4.14] FileFullDirectoryInformation \[MS-FSCC\] /// /// [2.4.14]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/e8d926d1-3a22-4654-be9c-58317a85540b -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFullDirectoryInformation { pub next_entry_offset: u32, pub file_index: u32, @@ -2372,7 +2413,7 @@ impl FileFullDirectoryInformation { /// [2.4.28] FileNamesInformation \[MS-FSCC\] /// /// [2.4.28]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/a289f7a8-83d2-4927-8c88-b2d328dde5a5?redirectedfrom=MSDN -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileNamesInformation { pub next_entry_offset: u32, pub file_index: u32, @@ -2414,7 +2455,7 @@ impl FileNamesInformation { /// [2.4.10] FileDirectoryInformation \[MS-FSCC\] /// /// [2.4.10]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/b38bf518-9057-4c88-9ddd-5e2d3976a64b -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileDirectoryInformation { pub next_entry_offset: u32, pub file_index: u32, @@ -2492,7 +2533,7 @@ impl FileDirectoryInformation { /// [2.2.1.4.2] Device Close Request (DR_CLOSE_REQ) /// /// [2.2.1.4.2]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/3ec6627f-9e0f-4941-a828-3fc6ed63d9e7 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceCloseRequest { pub device_io_request: DeviceIoRequest, // Padding (32 bytes): ignored as per FreeRDP: @@ -2510,7 +2551,7 @@ impl DeviceCloseRequest { /// [2.2.1.5.2] Device Close Response (DR_CLOSE_RSP) /// /// [2.2.1.5.2]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/0dae7031-cfd8-4f14-908c-ec06e14997b5 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceCloseResponse { pub device_io_response: DeviceIoResponse, // Padding (4 bytes): An array of 4 bytes. Reserved. This field can be set to any value and MUST be ignored. @@ -2539,7 +2580,7 @@ impl DeviceCloseResponse { /// [2.2.3.3.10] Server Drive Query Directory Request (DR_DRIVE_QUERY_DIRECTORY_REQ) /// /// [2.2.3.3.10]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/458019d2-5d5a-4fd4-92ef-8c05f8d7acb1 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveQueryDirectoryRequest { pub device_io_request: DeviceIoRequest, pub file_info_class_lvl: FileInformationClassLevel, @@ -2589,7 +2630,7 @@ impl ServerDriveQueryDirectoryRequest { /// 2.2.3.3.11 Server Drive NotifyChange Directory Request (DR_DRIVE_NOTIFY_CHANGE_DIRECTORY_REQ) /// /// [2.2.3.3.11]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/ed05e73d-e53e-4261-a1e1-365a70ba6512 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveNotifyChangeDirectoryRequest { pub device_io_request: DeviceIoRequest, pub watch_tree: u8, @@ -2617,7 +2658,7 @@ impl ServerDriveNotifyChangeDirectoryRequest { /// [2.2.3.4.10] Client Drive Query Directory Response (DR_DRIVE_QUERY_DIRECTORY_RSP) /// /// [2.2.3.4.10]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/9c929407-a833-4893-8f20-90c984756140 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ClientDriveQueryDirectoryResponse { pub device_io_reply: DeviceIoResponse, pub buffer: Option, @@ -2668,7 +2709,7 @@ impl ClientDriveQueryDirectoryResponse { /// https://github.com/FreeRDP/FreeRDP/blob/511444a65e7aa2f537c5e531fa68157a50c1bd4d/channels/drive/client/drive_main.c#L464 /// /// [2.2.3.3.6]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/484e622d-0e2b-423c-8461-7de38878effb -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveQueryVolumeInformationRequest { pub device_io_request: DeviceIoRequest, pub fs_info_class_lvl: FileSystemInformationClassLevel, @@ -2715,7 +2756,7 @@ impl ServerDriveQueryVolumeInformationRequest { /// [2.5] File System Information Classes [MS-FSCC] /// /// [2.5] https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ee12042a-9352-46e3-9f67-c094b75fe6c3 -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct FileSystemInformationClassLevel(u32); impl FileSystemInformationClassLevel { @@ -2752,7 +2793,7 @@ impl From for FileSystemInformationClassLevel { /// [2.5] File System Information Classes /// /// [2.5]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ee12042a-9352-46e3-9f67-c094b75fe6c3 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub enum FileSystemInformationClass { FileFsVolumeInformation(FileFsVolumeInformation), FileFsSizeInformation(FileFsSizeInformation), @@ -2817,7 +2858,7 @@ impl From for FileSystemInformationClass { /// [2.5.9] FileFsVolumeInformation /// /// [2.5.9]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/bf691378-c34e-4a13-976e-404ea1a87738 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFsVolumeInformation { pub volume_creation_time: i64, pub volume_serial_number: u32, @@ -2854,7 +2895,7 @@ impl FileFsVolumeInformation { /// [2.5.8] FileFsSizeInformation /// /// [2.5.8]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/e13e068c-e3a7-4dd4-94fd-3892b492e6e7 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFsSizeInformation { pub total_alloc_units: i64, pub available_alloc_units: i64, @@ -2883,7 +2924,7 @@ impl FileFsSizeInformation { /// [2.5.1] FileFsAttributeInformation /// /// [2.5.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ebc7e6e5-4650-4e54-b17c-cf60f6fbeeaa -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFsAttributeInformation { pub file_system_attributes: FileSystemAttributes, pub max_component_name_len: u32, @@ -2915,7 +2956,7 @@ impl FileFsAttributeInformation { /// [2.5.4] FileFsFullSizeInformation /// /// [2.5.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/63768db7-9012-4209-8cca-00781e7322f5 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFsFullSizeInformation { pub total_alloc_units: i64, pub caller_available_alloc_units: i64, @@ -2947,7 +2988,7 @@ impl FileFsFullSizeInformation { /// [2.5.10] FileFsDeviceInformation /// /// [2.5.10]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/616b66d5-b335-4e1c-8f87-b4a55e8d3e4a -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct FileFsDeviceInformation { pub device_type: u32, pub characteristics: Characteristics, @@ -2971,7 +3012,7 @@ bitflags! { /// See [2.5.1] FileFsAttributeInformation. /// /// [2.5.1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/ebc7e6e5-4650-4e54-b17c-cf60f6fbeeaa - #[derive(Debug)] + #[derive(Debug, PartialEq, Clone)] pub struct FileSystemAttributes: u32 { const FILE_SUPPORTS_USN_JOURNAL = 0x02000000; const FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000; @@ -3003,7 +3044,7 @@ bitflags! { /// See [2.5.10] FileFsDeviceInformation. /// /// [2.5.10]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/616b66d5-b335-4e1c-8f87-b4a55e8d3e4a - #[derive(Debug)] + #[derive(Debug, PartialEq, Clone)] pub struct Characteristics: u32 { const FILE_REMOVABLE_MEDIA = 0x00000001; const FILE_READ_ONLY_DEVICE = 0x00000002; @@ -3023,7 +3064,7 @@ bitflags! { /// [2.2.3.4.6] Client Drive Query Volume Information Response (DR_DRIVE_QUERY_VOLUME_INFORMATION_RSP) /// /// [2.2.3.4.6]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/fbdc7db8-a268-4420-8b5e-ce689ad1d4ac -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ClientDriveQueryVolumeInformationResponse { pub device_io_reply: DeviceIoResponse, pub buffer: Option, @@ -3080,7 +3121,7 @@ impl ClientDriveQueryVolumeInformationResponse { /// [2.2.1.4.3] Device Read Request (DR_READ_REQ) /// /// [2.2.1.4.3]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/3192516d-36a6-47c5-987a-55c214aa0441 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceReadRequest { pub device_io_request: DeviceIoRequest, pub length: u32, @@ -3147,6 +3188,7 @@ impl Debug for DeviceReadResponse { /// [2.2.1.4.4] Device Write Request (DR_WRITE_REQ) /// /// [2.2.1.4.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/2e25f0aa-a4ce-4ff3-ad62-ab6098280a3a +#[derive(PartialEq, Clone)] pub struct DeviceWriteRequest { pub device_io_request: DeviceIoRequest, pub offset: u64, @@ -3187,7 +3229,7 @@ impl Debug for DeviceWriteRequest { /// [2.2.1.5.4] Device Write Response (DR_WRITE_RSP) /// /// [2.2.1.5.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/58160a47-2379-4c4a-a99d-24a1a666c02a -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct DeviceWriteResponse { pub device_io_reply: DeviceIoResponse, pub length: u32, @@ -3218,7 +3260,7 @@ impl DeviceWriteResponse { /// [2.2.3.3.9] Server Drive Set Information Request (DR_DRIVE_SET_INFORMATION_REQ) /// /// [2.2.3.3.9]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/b5d3104b-0e42-4cf8-9059-e9fe86615e5c -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveSetInformationRequest { pub device_io_request: DeviceIoRequest, pub set_buffer: FileInformationClass, @@ -3263,7 +3305,7 @@ impl ServerDriveSetInformationRequest { /// 2.4.13 FileEndOfFileInformation /// /// [2.4.13]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/75241cca-3167-472f-8058-a52d77c6bb17 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileEndOfFileInformation { pub end_of_file: i64, } @@ -3285,7 +3327,7 @@ impl FileEndOfFileInformation { /// [2.4.11] FileDispositionInformation /// /// [2.4.11]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/12c3dd1c-14f6-4229-9d29-75fb2cb392f6 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileDispositionInformation { pub delete_pending: u8, } @@ -3312,7 +3354,7 @@ impl FileDispositionInformation { /// [2.4.37] FileRenameInformation /// /// [2.4.37]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/1d2673a8-8fb9-4868-920a-775ccaa30cf8 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileRenameInformation { pub replace_if_exists: Boolean, /// `file_name` is the relative path to the new location of the file @@ -3345,7 +3387,7 @@ impl FileRenameInformation { /// [2.4.4] FileAllocationInformation /// /// [2.4.4]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/0201c69b-50db-412d-bab3-dd97aeede13b -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct FileAllocationInformation { pub allocation_size: i64, } @@ -3367,7 +3409,7 @@ impl FileAllocationInformation { /// [2.2.3.4.9] Client Drive Set Information Response (DR_DRIVE_SET_INFORMATION_RSP) /// /// [2.2.3.4.9]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/16b893d5-5d8b-49d1-8dcb-ee21e7612970 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ClientDriveSetInformationResponse { device_io_reply: DeviceIoResponse, /// This field MUST be equal to the Length field in the Server Drive Set Information Request (section 2.2.3.3.9). @@ -3404,7 +3446,7 @@ impl ClientDriveSetInformationResponse { /// 2.2.3.3.12 Server Drive Lock Control Request (DR_DRIVE_LOCK_REQ) /// /// [2.2.3.3.12]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/a96fe85c-620c-40ce-8858-a6bc38609b0a -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct ServerDriveLockControlRequest { pub device_io_request: DeviceIoRequest, } diff --git a/crates/ironrdp-rdpdr/src/pdu/esc.rs b/crates/ironrdp-rdpdr/src/pdu/esc.rs index 7a01fccd..080b8237 100644 --- a/crates/ironrdp-rdpdr/src/pdu/esc.rs +++ b/crates/ironrdp-rdpdr/src/pdu/esc.rs @@ -20,7 +20,7 @@ use crate::pdu::esc::ndr::{Decode as _, Encode as _}; /// [2.2.2] TS Server-Generated Structures /// /// [2.2.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f4ca3b61-b49c-463c-8932-2cf82fb7ec7a -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub enum ScardCall { AccessStartedEventCall(ScardAccessStartedEventCall), EstablishContextCall(EstablishContextCall), @@ -78,7 +78,7 @@ impl ScardCall { /// [2.2.1.1] REDIR_SCARDCONTEXT /// /// [2.2.1.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/060abee1-e520-4149-9ef7-ce79eb500a59 -#[derive(Debug, Copy, Clone)] +#[derive(Debug, PartialEq, Copy, Clone)] pub struct ScardContext { /// Shortcut: we always create 4-byte context values. /// The spec allows this field to have variable length. @@ -152,7 +152,7 @@ impl ndr::Decode for ScardContext { /// [2.2.1.7] ReaderStateW /// /// [2.2.1.7]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/0ba03cd2-bed0-495b-adbe-3d2cde61980c -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ReaderState { pub reader: String, pub common: ReaderStateCommonCall, @@ -345,7 +345,7 @@ impl IoCtlCode for ScardIoCtlCode {} /// [2.2.2.30] ScardAccessStartedEvent_Call /// /// [2.2.2.30]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/c5ab8dd0-4914-4355-960c-0a527971ea69 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ScardAccessStartedEventCall; impl ScardAccessStartedEventCall { @@ -358,7 +358,7 @@ impl ScardAccessStartedEventCall { /// [2.2.3.3] Long_Return /// /// [2.2.3.3]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/e77a1365-2379-4037-99c4-d30d14ba10fc -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct LongReturn { return_code: ReturnCode, } @@ -390,7 +390,7 @@ impl rpce::HeaderlessEncode for LongReturn { /// [2.2.8] Return Code /// /// [2.2.8]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/9861f8da-76fe-41e6-847e-40c9aa35df8d -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] #[repr(u32)] pub enum ReturnCode { /// SCARD_S_SUCCESS @@ -544,7 +544,7 @@ impl From for u32 { /// [2.2.2.1] EstablishContext_Call /// /// [2.2.2.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/b990635a-7637-464a-8923-361ed3e3d67a -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct EstablishContextCall { pub scope: Scope, } @@ -567,7 +567,7 @@ impl rpce::HeaderlessDecode for EstablishContextCall { } } -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone, Copy)] #[repr(u32)] pub enum Scope { User = 0x0000_0000, @@ -600,7 +600,7 @@ impl TryFrom for Scope { /// [2.2.3.2] EstablishContext_Return /// /// [2.2.3.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/9135d95f-3740-411b-bdca-34ac7571fddc -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct EstablishContextReturn { return_code: ReturnCode, context: ScardContext, @@ -636,7 +636,7 @@ impl rpce::HeaderlessEncode for EstablishContextReturn { /// [2.2.2.4] ListReaders_Call /// /// [2.2.2.4]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/be2f46a5-77fb-40bf-839c-aed45f0a26d7 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ListReadersCall { pub context: ScardContext, pub groups_ptr_length: u32, @@ -707,7 +707,7 @@ impl rpce::HeaderlessDecode for ListReadersCall { /// [2.2.3.4] ListReaderGroups_Return and ListReaders_Return /// /// [2.2.3.4]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/6630bb5b-fc0e-4141-8b53-263225c7628d -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ListReadersReturn { pub return_code: ReturnCode, pub readers: Vec, @@ -752,7 +752,7 @@ impl rpce::HeaderlessEncode for ListReadersReturn { /// [2.2.2.12] GetStatusChangeW_Call /// /// [2.2.2.12]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/af357ce8-63ee-4577-b6bf-c6f5ca68d754 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetStatusChangeCall { pub context: ScardContext, pub timeout: u32, @@ -807,7 +807,7 @@ impl rpce::HeaderlessDecode for GetStatusChangeCall { /// [2.2.1.5] ReaderState_Common_Call /// /// [2.2.1.5]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/a71e63ba-e58f-487c-a5d2-5a3e48856594 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ReaderStateCommonCall { pub current_state: CardStateFlags, pub event_state: CardStateFlags, @@ -867,7 +867,7 @@ bitflags! { /// [2.2.3.5] LocateCards_Return and GetStatusChange_Return /// /// [2.2.3.5]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/7b73e0c2-e0fc-46b1-9b03-50684ad2beba -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetStatusChangeReturn { pub return_code: ReturnCode, pub reader_states: Vec, @@ -913,7 +913,7 @@ impl rpce::HeaderlessEncode for GetStatusChangeReturn { /// [2.2.2.14] ConnectW_Call /// /// [2.2.2.14]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/fd06f6a0-a9ea-478c-9b5e-470fd9cde5a6 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ConnectCall { pub reader: String, pub common: ConnectCommon, @@ -939,7 +939,7 @@ impl rpce::HeaderlessDecode for ConnectCall { /// [2.2.1.3] Connect_Common /// /// [2.2.1.3]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/32752f32-4410-4682-b9fc-9096674b52de -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ConnectCommon { pub context: ScardContext, pub share_mode: u32, @@ -971,7 +971,7 @@ bitflags! { /// [2.2.5] Protocol Identifier /// /// [2.2.5]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/41673567-2710-4e86-be87-7b6f46fe10af - #[derive(Debug, Clone)] + #[derive(Debug, PartialEq, Clone)] pub struct CardProtocol: u32 { const SCARD_PROTOCOL_UNDEFINED = 0x0000_0000; const SCARD_PROTOCOL_T0 = 0x0000_0001; @@ -986,7 +986,7 @@ bitflags! { /// [2.2.1.2] REDIR_SCARDHANDLE /// /// [2.2.1.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/b6276356-7c5f-4d3e-be92-a6c85e58d008 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ScardHandle { pub context: ScardContext, /// Shortcut: we always create 4-byte handle values. @@ -1066,7 +1066,7 @@ impl ndr::Encode for ScardHandle { /// [2.2.3.8] Connect_Return /// /// [2.2.3.8]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/ad9fbc8e-0963-44ac-8d71-38021685790c -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ConnectReturn { pub return_code: ReturnCode, pub handle: ScardHandle, @@ -1108,7 +1108,7 @@ impl rpce::HeaderlessEncode for ConnectReturn { /// [2.2.2.16] HCardAndDisposition_Call /// /// [2.2.2.16]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f15ae865-9e99-4c5b-bb43-15a6b4885bd0 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct HCardAndDispositionCall { pub handle: ScardHandle, pub disposition: u32, @@ -1134,7 +1134,7 @@ impl rpce::HeaderlessDecode for HCardAndDispositionCall { /// [2.2.2.19] Transmit_Call /// /// [2.2.2.19]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/e3861cfa-e61b-4d64-b19d-f6b31e076beb -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct TransmitCall { pub handle: ScardHandle, pub send_pci: SCardIORequest, @@ -1196,7 +1196,7 @@ impl rpce::HeaderlessDecode for TransmitCall { /// [2.2.1.8] SCardIO_Request /// /// [2.2.1.8]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f6e15da8-5bc0-4ef6-b28a-ce88e8415621 -#[derive(Debug, Clone)] +#[derive(Debug, PartialEq, Clone)] pub struct SCardIORequest { pub protocol: CardProtocol, pub extra_bytes_length: u32, @@ -1253,7 +1253,7 @@ impl ndr::Encode for SCardIORequest { /// [2.2.3.11] Transmit_Return /// /// [2.2.3.11]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/252cffd0-58b8-434d-9e1b-0d547544fb0f -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct TransmitReturn { pub return_code: ReturnCode, pub recv_pci: Option, @@ -1313,7 +1313,7 @@ impl rpce::HeaderlessEncode for TransmitReturn { /// [2.2.2.18] Status_Call /// /// [2.2.2.18]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f1139aed-e578-47f3-a800-f36b56c80500 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct StatusCall { pub handle: ScardHandle, pub reader_names_is_null: bool, @@ -1348,7 +1348,7 @@ impl rpce::HeaderlessDecode for StatusCall { /// [2.2.3.10] Status_Return /// /// [2.2.3.10]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/987c1358-ad6b-4c8e-88e1-06210c28a66f -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct StatusReturn { pub return_code: ReturnCode, pub reader_names: Vec, @@ -1419,7 +1419,7 @@ impl rpce::HeaderlessEncode for StatusReturn { /// [2.2.4] Card/Reader State /// /// [2.2.4]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/264bc504-1195-43ff-a057-3d86a02c5d9c -#[derive(Debug, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy)] pub enum CardState { /// SCARD_UNKNOWN Unknown = 0x0000_0000, @@ -1446,7 +1446,7 @@ impl From for u32 { /// [2.2.2.2] Context_Call /// /// [2.2.2.2]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/b11d26d9-c3d5-4e96-8d9f-aba35cded852 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ContextCall { pub context: ScardContext, } @@ -1469,7 +1469,7 @@ impl rpce::HeaderlessDecode for ContextCall { /// [2.2.2.32] GetDeviceTypeId_Call /// /// [2.2.2.32]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/b5e18874-c42d-42ea-b1b1-3fd86a8a95f1 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetDeviceTypeIdCall { pub context: ScardContext, pub reader_ptr: u32, @@ -1500,7 +1500,7 @@ impl rpce::HeaderlessDecode for GetDeviceTypeIdCall { /// [2.2.3.15] GetDeviceTypeId_Return /// /// [2.2.3.15]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/fed90d29-c41f-490a-86e9-7e88e42656b2 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetDeviceTypeIdReturn { pub return_code: ReturnCode, pub device_type_id: u32, @@ -1538,7 +1538,7 @@ impl rpce::HeaderlessEncode for GetDeviceTypeIdReturn { /// [2.2.2.26] ReadCacheW_Call /// /// [2.2.2.26]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f45705cf-9299-4802-b408-685f02025e6a -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ReadCacheCall { pub lookup_name: String, pub common: ReadCacheCommon, @@ -1564,7 +1564,7 @@ impl rpce::HeaderlessDecode for ReadCacheCall { /// [2.2.1.9] ReadCache_Common /// /// [2.2.1.9]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/3f9e07fa-66e2-498b-920c-39531709116b -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ReadCacheCommon { pub context: ScardContext, pub card_uuid: Vec, @@ -1605,7 +1605,7 @@ impl ndr::Decode for ReadCacheCommon { /// [2.2.3.1] ReadCache_Return /// /// [2.2.3.1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/da342355-e37f-485e-a490-3222a97fa356 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct ReadCacheReturn { pub return_code: ReturnCode, pub data: Vec, @@ -1646,7 +1646,7 @@ impl rpce::HeaderlessEncode for ReadCacheReturn { /// [2.2.2.28] WriteCacheW_Call /// /// [2.2.2.28]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/3969bdcd-ecf3-42db-8bc6-2d6f970f9c67 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct WriteCacheCall { pub lookup_name: String, pub common: WriteCacheCommon, @@ -1672,7 +1672,7 @@ impl rpce::HeaderlessDecode for WriteCacheCall { /// [2.2.1.10] WriteCache_Common /// /// [2.2.1.10]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/5604251b-9173-457c-9476-57863df9010e -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct WriteCacheCommon { pub context: ScardContext, pub card_uuid: Vec, @@ -1715,7 +1715,7 @@ impl ndr::Decode for WriteCacheCommon { /// [2.2.2.31] GetReaderIcon_Call /// /// [2.2.2.31]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/e6a68d90-697f-4b98-8ad6-f74853d27ccb -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetReaderIconCall { pub context: ScardContext, pub reader_name: String, @@ -1743,7 +1743,7 @@ impl rpce::HeaderlessDecode for GetReaderIconCall { /// [2.2.3.14] GetReaderIcon_Return /// /// [2.2.3.14]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc/f011f3d9-e2a4-4c43-a336-4c89ecaa8360 -#[derive(Debug)] +#[derive(Debug, PartialEq, Clone)] pub struct GetReaderIconReturn { pub return_code: ReturnCode, pub data: Vec, From bce943663543db0c887d40e0d4cbffc7891abc04 Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Fri, 1 Mar 2024 01:09:04 +0200 Subject: [PATCH 0479/1273] fix(connector): Fix not sent performance flags (#390) --- crates/ironrdp-connector/src/connection.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index acaf9a98..314e777a 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -2,7 +2,7 @@ use std::mem; use std::net::SocketAddr; use ironrdp_pdu::rdp::capability_sets::CapabilitySet; -use ironrdp_pdu::rdp::client_info::PerformanceFlags; +use ironrdp_pdu::rdp::client_info::{PerformanceFlags, TimezoneInfo}; use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{gcc, mcs, nego, rdp, PduHint}; use ironrdp_svc::{StaticChannelSet, StaticVirtualChannel, SvcClientProcessor}; @@ -780,6 +780,16 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl address: routing_addr.ip().to_string(), dir: config.client_dir.clone(), optional_data: ExtendedClientOptionalInfo { + timezone: Some(TimezoneInfo { + bias: 0, + standard_name: String::new(), + standard_date: None, + standard_bias: 0, + daylight_name: String::new(), + daylight_date: None, + daylight_bias: 0, + }), + session_id: Some(0), performance_flags: Some( PerformanceFlags::DISABLE_FULLWINDOWDRAG | PerformanceFlags::DISABLE_MENUANIMATIONS From a3073b9a73a846d750a0016f46bf21acebcd8e3f Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Fri, 1 Mar 2024 10:27:01 +0200 Subject: [PATCH 0480/1273] refactor(connector): compile-time verified ExtendedClientOptionalInfo builder (#391) --- crates/ironrdp-connector/src/connection.rs | 15 ++- crates/ironrdp-pdu/src/rdp/client_info.rs | 114 +++++++++++++++++- .../ironrdp-testsuite-core/src/client_info.rs | 13 +- 3 files changed, 123 insertions(+), 19 deletions(-) diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 314e777a..90c54281 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -779,8 +779,8 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl }, address: routing_addr.ip().to_string(), dir: config.client_dir.clone(), - optional_data: ExtendedClientOptionalInfo { - timezone: Some(TimezoneInfo { + optional_data: ExtendedClientOptionalInfo::builder() + .timezone(TimezoneInfo { bias: 0, standard_name: String::new(), standard_date: None, @@ -788,15 +788,14 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl daylight_name: String::new(), daylight_date: None, daylight_bias: 0, - }), - session_id: Some(0), - performance_flags: Some( + }) + .session_id(0) + .performance_flags( PerformanceFlags::DISABLE_FULLWINDOWDRAG | PerformanceFlags::DISABLE_MENUANIMATIONS | PerformanceFlags::ENABLE_FONT_SMOOTHING, - ), - ..Default::default() - }, + ) + .build(), }, }; diff --git a/crates/ironrdp-pdu/src/rdp/client_info.rs b/crates/ironrdp-pdu/src/rdp/client_info.rs index be0b577e..37abe5a0 100644 --- a/crates/ironrdp-pdu/src/rdp/client_info.rs +++ b/crates/ironrdp-pdu/src/rdp/client_info.rs @@ -233,13 +233,40 @@ impl ExtendedClientInfo { #[derive(Debug, Clone, PartialEq, Eq, Default)] pub struct ExtendedClientOptionalInfo { - pub timezone: Option, - pub session_id: Option, - pub performance_flags: Option, - pub reconnect_cookie: Option<[u8; RECONNECT_COOKIE_LEN]>, + timezone: Option, + session_id: Option, + performance_flags: Option, + reconnect_cookie: Option<[u8; RECONNECT_COOKIE_LEN]>, // other fields are read by RdpVersion::Ten+ } +impl ExtendedClientOptionalInfo { + /// Creates a new builder for [`ExtendedClientOptionalInfo`]. + pub fn builder( + ) -> builder::ExtendedClientOptionalInfoBuilder { + builder::ExtendedClientOptionalInfoBuilder:: { + inner: Self::default(), + _phantom_data: Default::default(), + } + } + + pub fn timezone(&self) -> Option<&TimezoneInfo> { + self.timezone.as_ref() + } + + pub fn session_id(&self) -> Option { + self.session_id + } + + pub fn performance_flags(&self) -> Option { + self.performance_flags + } + + pub fn reconnect_cookie(&self) -> Option<&[u8; RECONNECT_COOKIE_LEN]> { + self.reconnect_cookie.as_ref() + } +} + impl PduParsing for ExtendedClientOptionalInfo { type Error = ClientInfoError; @@ -601,3 +628,82 @@ fn string_len(value: &str, character_set: CharacterSet) -> u16 { CharacterSet::Unicode => u16::try_from(value.encode_utf16().count() * 2).unwrap(), } } + +pub mod builder { + use super::*; + use std::marker::PhantomData; + + pub struct ExtendedClientOptionalInfoBuilderStateSetTimeZone; + pub struct ExtendedClientOptionalInfoBuilderStateSetSessionId; + pub struct ExtendedClientOptionalInfoBuilderStateSetPerformanceFlags; + pub struct ExtendedClientOptionalInfoBuilderStateSetReconnectCookie; + pub struct ExtendedClientOptionalInfoBuilderStateFinal; + + // State machine-based builder for [`ExtendedClientOptionalInfo`]. + // + // [`ExtendedClientOptionalInfo`] strictly requires to set all preceding optional fields before + // setting the next one, therefore we use a state machine to enforce this during the compile time. + #[derive(Debug, Clone, PartialEq, Eq)] + pub struct ExtendedClientOptionalInfoBuilder { + pub(super) inner: ExtendedClientOptionalInfo, + pub(super) _phantom_data: PhantomData, + } + + impl ExtendedClientOptionalInfoBuilder { + pub fn build(self) -> ExtendedClientOptionalInfo { + self.inner + } + } + + impl ExtendedClientOptionalInfoBuilder { + pub fn timezone( + mut self, + timezone: TimezoneInfo, + ) -> ExtendedClientOptionalInfoBuilder { + self.inner.timezone = Some(timezone); + ExtendedClientOptionalInfoBuilder { + inner: self.inner, + _phantom_data: Default::default(), + } + } + } + + impl ExtendedClientOptionalInfoBuilder { + pub fn session_id( + mut self, + session_id: u32, + ) -> ExtendedClientOptionalInfoBuilder { + self.inner.session_id = Some(session_id); + ExtendedClientOptionalInfoBuilder { + inner: self.inner, + _phantom_data: Default::default(), + } + } + } + + impl ExtendedClientOptionalInfoBuilder { + pub fn performance_flags( + mut self, + performance_flags: PerformanceFlags, + ) -> ExtendedClientOptionalInfoBuilder { + self.inner.performance_flags = Some(performance_flags); + ExtendedClientOptionalInfoBuilder { + inner: self.inner, + _phantom_data: Default::default(), + } + } + } + + impl ExtendedClientOptionalInfoBuilder { + pub fn reconnect_cookie( + mut self, + reconnect_cookie: [u8; RECONNECT_COOKIE_LEN], + ) -> ExtendedClientOptionalInfoBuilder { + self.inner.reconnect_cookie = Some(reconnect_cookie); + ExtendedClientOptionalInfoBuilder { + inner: self.inner, + _phantom_data: Default::default(), + } + } + } +} diff --git a/crates/ironrdp-testsuite-core/src/client_info.rs b/crates/ironrdp-testsuite-core/src/client_info.rs index 330f8a27..0c271d19 100644 --- a/crates/ironrdp-testsuite-core/src/client_info.rs +++ b/crates/ironrdp-testsuite-core/src/client_info.rs @@ -99,8 +99,8 @@ lazy_static::lazy_static! { address_family: AddressFamily::INet, address: String::from("157.59.242.156"), dir: String::from("C:\\depots\\w2k3_1\\termsrv\\newclient\\lib\\win32\\obj\\i386\\mstscax.dll"), - optional_data: ExtendedClientOptionalInfo { - timezone: Some(TimezoneInfo { + optional_data: ExtendedClientOptionalInfo::builder() + .timezone(TimezoneInfo { bias: 0x01e0, standard_name: String::from("Pacific Standard Time"), standard_date: Some(SystemTime { @@ -124,11 +124,10 @@ lazy_static::lazy_static! { milliseconds: 0, }), daylight_bias: 0xffff_ffc4, - }), - session_id: Some(0), - performance_flags: Some(PerformanceFlags::DISABLE_WALLPAPER), - reconnect_cookie: None, - }, + }) + .session_id(0) + .performance_flags(PerformanceFlags::DISABLE_WALLPAPER) + .build(), }, }; From ba38d2b7ea24787a6d3b43b81289985ede5d768d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 1 Mar 2024 18:22:58 +0900 Subject: [PATCH 0481/1273] chore(release): prepare for iron-remote-gui v0.11.5 (#392) --- web-client/iron-remote-gui/package-lock.json | 4 ++-- web-client/iron-remote-gui/package.json | 2 +- web-client/iron-remote-gui/public/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web-client/iron-remote-gui/package-lock.json b/web-client/iron-remote-gui/package-lock.json index 969a2767..8b4a3882 100644 --- a/web-client/iron-remote-gui/package-lock.json +++ b/web-client/iron-remote-gui/package-lock.json @@ -1,12 +1,12 @@ { "name": "@devolutions/iron-remote-gui", - "version": "0.11.4", + "version": "0.11.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@devolutions/iron-remote-gui", - "version": "0.11.4", + "version": "0.11.5", "dependencies": { "rxjs": "^6.6.7", "ua-parser-js": "^1.0.33" diff --git a/web-client/iron-remote-gui/package.json b/web-client/iron-remote-gui/package.json index 2d91b185..9be88e55 100644 --- a/web-client/iron-remote-gui/package.json +++ b/web-client/iron-remote-gui/package.json @@ -9,7 +9,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client", - "version": "0.11.4", + "version": "0.11.5", "type": "module", "private": true, "scripts": { diff --git a/web-client/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json index f636abb4..da6d9ee3 100644 --- a/web-client/iron-remote-gui/public/package.json +++ b/web-client/iron-remote-gui/public/package.json @@ -9,7 +9,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.11.4", + "version": "0.11.5", "main": "iron-remote-gui.umd.cjs", "types": "index.d.ts", "files": [ From 3ee44b5c9b858b003148536637476b7133c5858e Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Wed, 6 Mar 2024 08:23:41 -0800 Subject: [PATCH 0482/1273] Adds logic for sending Capabilities Response even in cases where the server doesn't send a Capabilities Request as expected. This mimics the logic in FreeRDP, and empirically appears to fix a bug where DVC channels behave irregularly. --- crates/ironrdp-session/src/x224/mod.rs | 47 +++++++++++++++++++------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/crates/ironrdp-session/src/x224/mod.rs b/crates/ironrdp-session/src/x224/mod.rs index 00e784ef..e3e5f2c6 100644 --- a/crates/ironrdp-session/src/x224/mod.rs +++ b/crates/ironrdp-session/src/x224/mod.rs @@ -38,6 +38,8 @@ pub struct Processor { user_channel_id: u16, io_channel_id: u16, drdynvc_channel_id: Option, + /// Indicates whether the DVC capabilities response has been sent. + drdynvc_initialized: bool, graphics_config: Option, graphics_handler: Option>, } @@ -65,6 +67,7 @@ impl Processor { user_channel_id, io_channel_id, drdynvc_channel_id, + drdynvc_initialized: false, graphics_config, graphics_handler, } @@ -175,6 +178,20 @@ impl Processor { } } + fn send_drdynvc_capabilities_response( + &mut self, + data_ctx: SendDataIndicationCtx<'_>, + buf: &mut WriteBuf, + ) -> SessionResult<()> { + let caps_response = dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { + version: dvc::CapsVersion::V1, + }); + debug!("Send DVC Capabilities Response PDU: {caps_response:?}"); + crate::legacy::encode_dvc_message(data_ctx.initiator_id, data_ctx.channel_id, caps_response, &[], buf)?; + self.drdynvc_initialized = true; + Ok(()) + } + fn process_dyvc(&mut self, data_ctx: SendDataIndicationCtx<'_>) -> SessionResult> { debug_assert_eq!(Some(data_ctx.channel_id), self.drdynvc_channel_id); @@ -185,22 +202,26 @@ impl Processor { match dvc_ctx.dvc_pdu { dvc::ServerPdu::CapabilitiesRequest(caps_request) => { debug!("Got DVC Capabilities Request PDU: {caps_request:?}"); - let caps_response = dvc::ClientPdu::CapabilitiesResponse(dvc::CapabilitiesResponsePdu { - version: dvc::CapsVersion::V1, - }); - - debug!("Send DVC Capabilities Response PDU: {caps_response:?}"); - crate::legacy::encode_dvc_message( - data_ctx.initiator_id, - data_ctx.channel_id, - caps_response, - &[], - &mut buf, - )?; + self.send_drdynvc_capabilities_response(data_ctx, &mut buf)?; } dvc::ServerPdu::CreateRequest(create_request) => { debug!("Got DVC Create Request PDU: {create_request:?}"); + /* + * For some reason the server does not always send the + * capabilities pdu as it should. When this happens, + * send a capabilities response. + * https://github.com/FreeRDP/FreeRDP/blob/ba8cf8cf2158018fb7abbedb51ab245f369be813/channels/drdynvc/client/drdynvc_main.c#L1165-L1169 + */ + if !self.drdynvc_initialized { + debug!( + "Got DVC Create Request PDU before a Capabilities Request PDU. \ + Sending Capabilities Response PDU before the Create Response PDU." + ); + + self.send_drdynvc_capabilities_response(data_ctx, &mut buf)?; + } + let creation_status = if let Some(dynamic_channel) = create_dvc( create_request.channel_name.as_str(), create_request.channel_id, @@ -259,6 +280,7 @@ impl Processor { self.dynamic_channels.remove(&close_request.channel_id); } dvc::ServerPdu::DataFirst(data) => { + debug!("Got DVC Data First PDU: {data:?}"); let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; @@ -287,6 +309,7 @@ impl Processor { } } dvc::ServerPdu::Data(data) => { + debug!("Got DVC Data PDU: {data:?}"); let channel_id_type = data.channel_id_type; let channel_id = data.channel_id; From def44ec32cd98e133635b143becfc23f9804a782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Thu, 7 Mar 2024 22:16:51 +0900 Subject: [PATCH 0483/1273] ci: enable the cliprdr_format fuzz harness (#398) --- .github/workflows/fuzz.yml | 2 +- fuzz/Cargo.toml | 6 ++++++ xtask/src/main.rs | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index b98650b7..6a4dcfaf 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ pdu_decoding, rle_decompression, bitmap_stream ] + target: [ pdu_decoding, rle_decompression, bitmap_stream, cliprdr_format ] steps: - uses: actions/checkout@v3 diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index adcbe334..57c12e8d 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -34,3 +34,9 @@ name = "bitmap_stream" path = "fuzz_targets/bitmap_stream.rs" test = false doc = false + +[[bin]] +name = "cliprdr_format" +path = "fuzz_targets/cliprdr_format.rs" +test = false +doc = false diff --git a/xtask/src/main.rs b/xtask/src/main.rs index f22e9f9d..26a25067 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -33,7 +33,7 @@ pub const CARGO: &str = env!("CARGO"); pub const WASM_PACKAGES: &[&str] = &["ironrdp-web"]; -pub const FUZZ_TARGETS: &[&str] = &["pdu_decoding", "rle_decompression", "bitmap_stream"]; +pub const FUZZ_TARGETS: &[&str] = &["pdu_decoding", "rle_decompression", "bitmap_stream", "cliprdr_format"]; fn main() -> anyhow::Result<()> { let args = match cli::parse_args() { From cf4c9eae41532419d385c0430798716ab82ad694 Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Fri, 8 Mar 2024 05:47:09 +0200 Subject: [PATCH 0484/1273] fix(cliprdr): panic when calling .abs() on i32::MIN (#404) --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index c6f7d986..fb4418dd 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -200,10 +200,14 @@ impl BitmapInfoHeader { let size = src.read_u32(); let width = src.read_i32(); - check_invariant(width.abs() <= 10_000).ok_or_else(|| invalid_message_err!("biWidth", "width is too big"))?; + + // NOTE: .abs() could panic on i32::MIN, therefore we have a check for it first. + check_invariant(width != i32::MIN && width.abs() <= 10_000) + .ok_or_else(|| invalid_message_err!("biWidth", "width is too big"))?; let height = src.read_i32(); - check_invariant(height.abs() <= 10_000).ok_or_else(|| invalid_message_err!("biHeight", "height is too big"))?; + check_invariant(width != i32::MIN && height.abs() <= 10_000) + .ok_or_else(|| invalid_message_err!("biHeight", "height is too big"))?; let planes = src.read_u16(); if planes != 1 { From 1ed913f8914ed3de06bacac1648f02558970380d Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Fri, 8 Mar 2024 13:44:27 +0200 Subject: [PATCH 0485/1273] fix(cliprdr): fixed typo in cliprdr-format which caused fuzzing to fail (#406) --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index fb4418dd..d162010b 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -206,7 +206,7 @@ impl BitmapInfoHeader { .ok_or_else(|| invalid_message_err!("biWidth", "width is too big"))?; let height = src.read_i32(); - check_invariant(width != i32::MIN && height.abs() <= 10_000) + check_invariant(height != i32::MIN && height.abs() <= 10_000) .ok_or_else(|| invalid_message_err!("biHeight", "height is too big"))?; let planes = src.read_u16(); From 220df049b69475a06bb032afb0dd68e3d03b9741 Mon Sep 17 00:00:00 2001 From: Norbert Szetei <59439874+nszetei@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:36:17 +0100 Subject: [PATCH 0486/1273] fix(cliprdr): inconsistent invariant for BitmapInfoHeader width/height methods (#407) --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 8 ++++---- ...d-from-ae5d7850120bbeb84e519a5a0c29c2c93adddb80 | Bin 0 -> 41 bytes 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-ae5d7850120bbeb84e519a5a0c29c2c93adddb80 diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index d162010b..cea76cba 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -239,18 +239,18 @@ impl BitmapInfoHeader { Ok((header, size)) } - // INVARIANT: output (width) < 10_000 + // INVARIANT: output (width) <= 10_000 fn width(&self) -> u16 { let abs = self.width.abs(); - debug_assert!(abs < 10_000); + debug_assert!(abs <= 10_000); // Per the invariant on self.width, this cast is infaillible. u16::try_from(abs).unwrap() } - // INVARIANT: output (height) < 10_000 + // INVARIANT: output (height) <= 10_000 fn height(&self) -> u16 { let abs = self.height.abs(); - debug_assert!(abs < 10_000); + debug_assert!(abs <= 10_000); // Per the invariant on self.height, this cast is infaillible. u16::try_from(abs).unwrap() } diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-ae5d7850120bbeb84e519a5a0c29c2c93adddb80 b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-ae5d7850120bbeb84e519a5a0c29c2c93adddb80 new file mode 100644 index 0000000000000000000000000000000000000000..ca7a3ce2f8c162f33dce380ff390a91d2646bc73 GIT binary patch literal 41 jcmdO3U| Date: Sat, 9 Mar 2024 00:44:12 +0900 Subject: [PATCH 0487/1273] test: regression test case for cliprdr_format target (#405) --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 4 +-- ...h-0e7b5df5737a7ffc553c46c2425609f543b89498 | Bin 0 -> 41 bytes ...h-43677392fa06dda5f014e42dd06c9ae05cd19469 | Bin ...h-4485719597c99b83b2b761e497d03bf062b2461b | Bin ...h-65a50aad850d86155cae8c4c28f2937812cce53e | Bin ...h-93696ce8c9eec6824d9a3f99f960799d47b5d173 | Bin ...h-ce45f9ebf4ab1a51fcd0175952b22ab0fbcdc392 | Bin ...h-f8dc2df3f2aba63122b8912dff23e13210b408e9 | Bin .../tests/fuzz_regression.rs | 28 ++++++++++++++++++ crates/ironrdp-testsuite-core/tests/main.rs | 1 + .../ironrdp-testsuite-core/tests/pdu/mod.rs | 1 - .../tests/pdu/regression.rs | 11 ------- 12 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/crash-0e7b5df5737a7ffc553c46c2425609f543b89498 rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-43677392fa06dda5f014e42dd06c9ae05cd19469 (100%) rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-4485719597c99b83b2b761e497d03bf062b2461b (100%) rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-65a50aad850d86155cae8c4c28f2937812cce53e (100%) rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-93696ce8c9eec6824d9a3f99f960799d47b5d173 (100%) rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-ce45f9ebf4ab1a51fcd0175952b22ab0fbcdc392 (100%) rename crates/ironrdp-testsuite-core/test_data/{pdu/regression => fuzz_regression/pdu_decode}/crash-f8dc2df3f2aba63122b8912dff23e13210b408e9 (100%) create mode 100644 crates/ironrdp-testsuite-core/tests/fuzz_regression.rs delete mode 100644 crates/ironrdp-testsuite-core/tests/pdu/regression.rs diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index cea76cba..c5d41faf 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -199,9 +199,9 @@ impl BitmapInfoHeader { let size = src.read_u32(); - let width = src.read_i32(); - // NOTE: .abs() could panic on i32::MIN, therefore we have a check for it first. + + let width = src.read_i32(); check_invariant(width != i32::MIN && width.abs() <= 10_000) .ok_or_else(|| invalid_message_err!("biWidth", "width is too big"))?; diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/crash-0e7b5df5737a7ffc553c46c2425609f543b89498 b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/crash-0e7b5df5737a7ffc553c46c2425609f543b89498 new file mode 100644 index 0000000000000000000000000000000000000000..1b93940357210ec10d79c19a6f7a71865930e706 GIT binary patch literal 41 rcmZQ!V6b9fU}#`qU;$DLmjA#1`~UUp*P} {{ + use ironrdp_fuzzing::oracles; + + const REGRESSION_DATA_FOLDER: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + concat!("/test_data/fuzz_regression/", stringify!($oracle)) + ); + + println!("Read directory {REGRESSION_DATA_FOLDER}"); + for entry in std::fs::read_dir(REGRESSION_DATA_FOLDER).unwrap() { + let entry = entry.unwrap(); + println!("Check {}", entry.path().display()); + let test_case = std::fs::read(entry.path()).unwrap(); + oracles::$oracle(&test_case); + } + }}; +} + +#[test] +pub fn check_pdu_decode() { + check!(pdu_decode); +} + +#[test] +pub fn check_cliprdr_format() { + check!(cliprdr_format); +} diff --git a/crates/ironrdp-testsuite-core/tests/main.rs b/crates/ironrdp-testsuite-core/tests/main.rs index fddaa030..7efa52b7 100644 --- a/crates/ironrdp-testsuite-core/tests/main.rs +++ b/crates/ironrdp-testsuite-core/tests/main.rs @@ -11,6 +11,7 @@ mod clipboard; mod displaycontrol; +mod fuzz_regression; mod graphics; mod input; mod pcb; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/mod.rs b/crates/ironrdp-testsuite-core/tests/pdu/mod.rs index 00c2a5f3..13110c52 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/mod.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/mod.rs @@ -4,6 +4,5 @@ mod input; mod mcs; mod pointer; mod rdp; -mod regression; mod rfx; mod x224; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/regression.rs b/crates/ironrdp-testsuite-core/tests/pdu/regression.rs deleted file mode 100644 index ef7bc632..00000000 --- a/crates/ironrdp-testsuite-core/tests/pdu/regression.rs +++ /dev/null @@ -1,11 +0,0 @@ -const REGRESSION_DATA_FOLDER: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/test_data/pdu/regression/"); - -#[test] -pub fn check() { - for entry in std::fs::read_dir(REGRESSION_DATA_FOLDER).unwrap() { - let entry = entry.unwrap(); - println!("Check {}", entry.path().display()); - let test_case = std::fs::read(entry.path()).unwrap(); - ironrdp_fuzzing::oracles::pdu_decode(&test_case); - } -} From c4193371bdfb9067d31ebcf0f74b74beef5c3d55 Mon Sep 17 00:00:00 2001 From: Norbert Szetei <59439874+nszetei@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:28:27 +0100 Subject: [PATCH 0488/1273] fix(svc): rdpdr channel fuzzing harness and associated issues (#408) --- .github/workflows/fuzz.yml | 2 +- Cargo.lock | 1 + crates/ironrdp-fuzzing/Cargo.toml | 3 ++- crates/ironrdp-fuzzing/src/oracles/mod.rs | 10 ++++++++++ crates/ironrdp-rdpdr/src/pdu/efs.rs | 9 +++++---- ...d-from-46dc7754493e2231055dddc1c56c88b4b38e7a6e | Bin 0 -> 39 bytes fuzz/Cargo.lock | 1 + fuzz/Cargo.toml | 7 +++++++ fuzz/fuzz_targets/channel_processing.rs | 7 +++++++ xtask/src/main.rs | 8 +++++++- 10 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/channel_processing/minimized-from-46dc7754493e2231055dddc1c56c88b4b38e7a6e create mode 100644 fuzz/fuzz_targets/channel_processing.rs diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index 6a4dcfaf..e319aeaa 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ pdu_decoding, rle_decompression, bitmap_stream, cliprdr_format ] + target: [ pdu_decoding, rle_decompression, bitmap_stream, cliprdr_format, channel_processing ] steps: - uses: actions/checkout@v3 diff --git a/Cargo.lock b/Cargo.lock index 4aaaa69a..f0193989 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1806,6 +1806,7 @@ dependencies = [ "ironrdp-graphics", "ironrdp-pdu", "ironrdp-rdpdr", + "ironrdp-svc", ] [[package]] diff --git a/crates/ironrdp-fuzzing/Cargo.toml b/crates/ironrdp-fuzzing/Cargo.toml index 5b0bc45e..3e15919f 100644 --- a/crates/ironrdp-fuzzing/Cargo.toml +++ b/crates/ironrdp-fuzzing/Cargo.toml @@ -16,4 +16,5 @@ ironrdp-pdu.workspace = true ironrdp-cliprdr.workspace = true ironrdp-rdpdr.workspace = true ironrdp-cliprdr-format.workspace = true -ironrdp-displaycontrol.workspace = true \ No newline at end of file +ironrdp-displaycontrol.workspace = true +ironrdp-svc.workspace = true diff --git a/crates/ironrdp-fuzzing/src/oracles/mod.rs b/crates/ironrdp-fuzzing/src/oracles/mod.rs index 74812b07..143010eb 100644 --- a/crates/ironrdp-fuzzing/src/oracles/mod.rs +++ b/crates/ironrdp-fuzzing/src/oracles/mod.rs @@ -136,3 +136,13 @@ pub fn cliprdr_format(input: &[u8]) { let _ = plain_html_to_cf_html(input); } } + +pub fn channel_process(input: &[u8]) { + use ironrdp_svc::SvcProcessor; + + let mut rdpdr = ironrdp_rdpdr::Rdpdr::new(Box::new(ironrdp_rdpdr::NoopRdpdrBackend), "Backend".to_owned()) + .with_smartcard(1) + .with_drives(None); + + let _ = rdpdr.process(input); +} diff --git a/crates/ironrdp-rdpdr/src/pdu/efs.rs b/crates/ironrdp-rdpdr/src/pdu/efs.rs index 99e291c3..25e36384 100644 --- a/crates/ironrdp-rdpdr/src/pdu/efs.rs +++ b/crates/ironrdp-rdpdr/src/pdu/efs.rs @@ -1214,12 +1214,13 @@ impl DeviceControlRequest where T::Error: ironrdp_error::Source, { - fn headerless_size() -> usize { - size_of::() * 3 // OutputBufferLength, InputBufferLength, IoControlCode - } + const HEADERLESS_SIZE: usize = 4 // OutputBufferLength + + 4 // InputBufferLength + + 4 // IoControlCode + + 20; // Additional 20 bytes for padding pub fn decode(header: DeviceIoRequest, src: &mut ReadCursor<'_>) -> PduResult { - ensure_size!(ctx: "DeviceControlRequest", in: src, size: Self::headerless_size()); + ensure_size!(ctx: "DeviceControlRequest", in: src, size: Self::HEADERLESS_SIZE); let output_buffer_length = src.read_u32(); let input_buffer_length = src.read_u32(); let io_control_code = T::try_from(src.read_u32()).map_err(|e| { diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/channel_processing/minimized-from-46dc7754493e2231055dddc1c56c88b4b38e7a6e b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/channel_processing/minimized-from-46dc7754493e2231055dddc1c56c88b4b38e7a6e new file mode 100644 index 0000000000000000000000000000000000000000..0db07781e2954c8550e50ce0485a1795fb3f9952 GIT binary patch literal 39 kcmXSN3G!rQU|?Wm=mnAt418b`NN_MPC;%xL22PL&07dx%JOBUy literal 0 HcmV?d00001 diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 2ef9508c..c5124147 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -321,6 +321,7 @@ dependencies = [ "ironrdp-graphics", "ironrdp-pdu", "ironrdp-rdpdr", + "ironrdp-svc", ] [[package]] diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 57c12e8d..faf8b38b 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -40,3 +40,10 @@ name = "cliprdr_format" path = "fuzz_targets/cliprdr_format.rs" test = false doc = false + +[[bin]] +name = "channel_processing" +path = "fuzz_targets/channel_processing.rs" +test = false +doc = false +bench = false diff --git a/fuzz/fuzz_targets/channel_processing.rs b/fuzz/fuzz_targets/channel_processing.rs new file mode 100644 index 00000000..26fc1f6e --- /dev/null +++ b/fuzz/fuzz_targets/channel_processing.rs @@ -0,0 +1,7 @@ +#![no_main] + +use libfuzzer_sys::fuzz_target; + +fuzz_target!(|data: &[u8]| { + ironrdp_fuzzing::oracles::channel_process(data); +}); diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 26a25067..d420de90 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -33,7 +33,13 @@ pub const CARGO: &str = env!("CARGO"); pub const WASM_PACKAGES: &[&str] = &["ironrdp-web"]; -pub const FUZZ_TARGETS: &[&str] = &["pdu_decoding", "rle_decompression", "bitmap_stream", "cliprdr_format"]; +pub const FUZZ_TARGETS: &[&str] = &[ + "pdu_decoding", + "rle_decompression", + "bitmap_stream", + "cliprdr_format", + "channel_processing", +]; fn main() -> anyhow::Result<()> { let args = match cli::parse_args() { From 7e11d3e198b52cbe531f91715f8658996433de45 Mon Sep 17 00:00:00 2001 From: Norbert Szetei <59439874+nszetei@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:46:01 +0100 Subject: [PATCH 0489/1273] fix(pdu): overflow when decoding RsaPublicKey (#409) --- crates/ironrdp-pdu/src/rdp/server_license.rs | 2 ++ .../server_license/server_license_request/cert.rs | 4 ++++ ...crash-384d5ec1d99a93a3a53d206c9f808490d9b33d48 | Bin 0 -> 104 bytes 3 files changed, 6 insertions(+) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-384d5ec1d99a93a3a53d206c9f808490d9b33d48 diff --git a/crates/ironrdp-pdu/src/rdp/server_license.rs b/crates/ironrdp-pdu/src/rdp/server_license.rs index 8be3cf3a..bdaf6927 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license.rs @@ -217,6 +217,8 @@ pub enum ServerLicenseError { InvalidRsaPublicKeyLength, #[error("invalid RSA public key data length")] InvalidRsaPublicKeyDataLength, + #[error("invalid RSA public key bit length")] + InvalidRsaPublicKeyBitLength, #[error("invalid License Header security flags")] InvalidSecurityFlags, #[error("the server returned unexpected error: {0:?}")] diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs index 86e55d69..da675c90 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs @@ -160,6 +160,10 @@ impl PduParsing for RsaPublicKey { return Err(ServerLicenseError::InvalidRsaPublicKeyLength); } + if bitlen < 8 { + return Err(ServerLicenseError::InvalidRsaPublicKeyBitLength); + } + let datalen = stream.read_u32::()?; if datalen != (bitlen / 8) - 1 { return Err(ServerLicenseError::InvalidRsaPublicKeyDataLength); diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-384d5ec1d99a93a3a53d206c9f808490d9b33d48 b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-384d5ec1d99a93a3a53d206c9f808490d9b33d48 new file mode 100644 index 0000000000000000000000000000000000000000..f188400cf3545ce7c655d1f3e448282f27cb7976 GIT binary patch literal 104 zcmZQzU|?rt{?GV7Hj*J$hmipU6qvyD-+8gI39+%Uj4U8Q#{cX*Ac|3tfkBW#n1PY$ i9xnq214tz^0|N($hG8~_U%!Ha9Su2vVqhTilnnq8l?|={ literal 0 HcmV?d00001 From ef2c3df761805a11ab0a1d6f87b7b1704048b8fe Mon Sep 17 00:00:00 2001 From: Norbert Szetei <59439874+nszetei@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:56:58 +0100 Subject: [PATCH 0490/1273] fix(pdu): fixes three overflows in pointer.rs and one in bitmap.rs (#410) --- crates/ironrdp-fuzzing/src/oracles/mod.rs | 11 +++++++++++ crates/ironrdp-pdu/src/basic_output/bitmap.rs | 8 ++++++++ crates/ironrdp-pdu/src/basic_output/pointer.rs | 17 +++++++++++------ ...sh-638bb782419774c536a3455183fdbf172e5b830b | Bin 0 -> 14 bytes ...sh-661a3fc68cec8096fb13ac76f3b50b85ad4c7ded | Bin 0 -> 22 bytes ...sh-801238c30741729c04951985d7ea1238e930bf80 | Bin 0 -> 14 bytes ...sh-d58836860f9f3b70b3099cfbbed09f763d05eb4d | Bin 0 -> 20 bytes 7 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-638bb782419774c536a3455183fdbf172e5b830b create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-661a3fc68cec8096fb13ac76f3b50b85ad4c7ded create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-801238c30741729c04951985d7ea1238e930bf80 create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-d58836860f9f3b70b3099cfbbed09f763d05eb4d diff --git a/crates/ironrdp-fuzzing/src/oracles/mod.rs b/crates/ironrdp-fuzzing/src/oracles/mod.rs index 143010eb..5d6f1d57 100644 --- a/crates/ironrdp-fuzzing/src/oracles/mod.rs +++ b/crates/ironrdp-fuzzing/src/oracles/mod.rs @@ -45,7 +45,18 @@ pub fn pdu_decode(data: &[u8]) { let _ = decode::(data); let _ = decode::>(data); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::Orders); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::Bitmap); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::Palette); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::Synchronize); let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::SurfaceCommands); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::HiddenPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::DefaultPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::PositionPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::ColorPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::CachedPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::NewPointer); + let _ = fast_path::FastPathUpdate::decode_with_code(data, fast_path::UpdateCode::LargePointer); let _ = decode::>(data); let _ = decode::>(data); diff --git a/crates/ironrdp-pdu/src/basic_output/bitmap.rs b/crates/ironrdp-pdu/src/basic_output/bitmap.rs index a6e7b1fc..c72ad632 100644 --- a/crates/ironrdp-pdu/src/basic_output/bitmap.rs +++ b/crates/ironrdp-pdu/src/basic_output/bitmap.rs @@ -155,6 +155,14 @@ impl<'de> PduDecode<'de> for BitmapData<'de> { let (compressed_data_header, buffer_length) = if compression_flags.contains(Compression::BITMAP_COMPRESSION) && !compression_flags.contains(Compression::NO_BITMAP_COMPRESSION_HDR) { + // Check if encoded_bitmap_data_length is at least CompressedDataHeader::ENCODED_SIZE + if encoded_bitmap_data_length < CompressedDataHeader::ENCODED_SIZE as u16 { + return Err(invalid_message_err!( + "cbCompEncodedBitmapDataLength", + "length is less than CompressedDataHeader::ENCODED_SIZE" + )); + } + let buffer_length = encoded_bitmap_data_length as usize - CompressedDataHeader::ENCODED_SIZE; (Some(CompressedDataHeader::decode(src)?), buffer_length) } else { diff --git a/crates/ironrdp-pdu/src/basic_output/pointer.rs b/crates/ironrdp-pdu/src/basic_output/pointer.rs index d7130c90..35a10016 100644 --- a/crates/ironrdp-pdu/src/basic_output/pointer.rs +++ b/crates/ironrdp-pdu/src/basic_output/pointer.rs @@ -66,6 +66,9 @@ impl ColorPointerAttribute<'_> { const XOR_MASK_SIZE_FIELD: &str = "lengthXorMask"; let check_mask = |mask: &[u8], field: &'static str| { + if pointer_height == 0 { + return Err(invalid_message_err!(field, "pointer height cannot be zero")); + } if large_ptr && (mask.len() > u32::MAX as usize) { return Err(invalid_message_err!(field, "pointer mask is too big for u32 size")); } @@ -130,7 +133,8 @@ impl<'a> PduDecode<'a> for ColorPointerAttribute<'a> { let length_and_mask = src.read_u16(); let length_xor_mask = src.read_u16(); - let expected_masks_size = (length_and_mask + length_xor_mask) as usize; + // Convert to usize during the addition to prevent overflow and match expected type + let expected_masks_size = (length_and_mask as usize) + (length_xor_mask as usize); ensure_size!(in: src, size: expected_masks_size); let xor_mask = src.read_slice(length_xor_mask as usize); @@ -287,14 +291,15 @@ impl<'a> PduDecode<'a> for LargePointerAttribute<'a> { let hot_spot = Point16::decode(src)?; let width = src.read_u16(); let height = src.read_u16(); - let length_and_mask = src.read_u32(); - let length_xor_mask = src.read_u32(); + // Convert to usize to prevent overflow during addition + let length_and_mask = src.read_u32() as usize; + let length_xor_mask = src.read_u32() as usize; - let expected_masks_size = (length_and_mask + length_xor_mask) as usize; + let expected_masks_size = length_and_mask + length_xor_mask; ensure_size!(in: src, size: expected_masks_size); - let xor_mask = src.read_slice(length_xor_mask as usize); - let and_mask = src.read_slice(length_and_mask as usize); + let xor_mask = src.read_slice(length_xor_mask); + let and_mask = src.read_slice(length_and_mask); ColorPointerAttribute::check_masks_alignment(and_mask, xor_mask, height, true)?; diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-638bb782419774c536a3455183fdbf172e5b830b b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-638bb782419774c536a3455183fdbf172e5b830b new file mode 100644 index 0000000000000000000000000000000000000000..0427aa712f4798824764a9195eb6852aac10bba8 GIT binary patch literal 14 ScmZQ#;9~#+CLsR*p9ug3-2xK; literal 0 HcmV?d00001 diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-661a3fc68cec8096fb13ac76f3b50b85ad4c7ded b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-661a3fc68cec8096fb13ac76f3b50b85ad4c7ded new file mode 100644 index 0000000000000000000000000000000000000000..9255d064a5a08a7bdb21dc87347488e5a0109382 GIT binary patch literal 22 dcmWe<5NA;5)d~NOV literal 0 HcmV?d00001 diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-d58836860f9f3b70b3099cfbbed09f763d05eb4d b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-d58836860f9f3b70b3099cfbbed09f763d05eb4d new file mode 100644 index 0000000000000000000000000000000000000000..3995cec862a619ff13d5faeb4379f902419bf4fd GIT binary patch literal 20 Xcmd-&Ai@9vm-!|68E!FfiY5a9A7leW literal 0 HcmV?d00001 From 8c4c64090547d137e0799289e879dffa8e567f7d Mon Sep 17 00:00:00 2001 From: Norbert Szetei <59439874+nszetei@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:34:28 +0100 Subject: [PATCH 0491/1273] fix(cliprdr): OOM via decode_png and vector allocation (#411) --- crates/ironrdp-cliprdr-format/src/bitmap.rs | 7 ++++++- ...d-from-a587e617baf5354b27cf9e6cbe92dc5d1b5cab7b | Bin 0 -> 43 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-a587e617baf5354b27cf9e6cbe92dc5d1b5cab7b diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index c5d41faf..7f65e124 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -703,7 +703,12 @@ fn decode_png(mut input: &[u8]) -> Result<(png::OutputInfo, Vec), BitmapErro decoder.set_transformations(png::Transformations::ALPHA | png::Transformations::EXPAND); let mut reader = decoder.read_info()?; - let mut buffer = vec![0; reader.output_buffer_size()]; + let output_buffer_len = reader.output_buffer_size(); + + // Prevent allocation of huge buffers. + ensure(output_buffer_len <= MAX_BUFFER_SIZE).ok_or(BitmapError::BufferTooBig)?; + + let mut buffer = vec![0; output_buffer_len]; let info = reader.next_frame(&mut buffer)?; buffer.truncate(info.buffer_size()); diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-a587e617baf5354b27cf9e6cbe92dc5d1b5cab7b b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/cliprdr_format/minimized-from-a587e617baf5354b27cf9e6cbe92dc5d1b5cab7b new file mode 100644 index 0000000000000000000000000000000000000000..901b507634a02a324344b4fc4772bf053f17e917 GIT binary patch literal 43 scmeAS@N?(olHy`uVBq!ia0vp^3O|6D1IS Date: Tue, 12 Mar 2024 10:53:57 +0100 Subject: [PATCH 0492/1273] test(fuzz): update dependencies (#413) --- fuzz/Cargo.lock | 103 ++++++++++++++++++++++++------------------------ 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index c5124147..dad7bae2 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -81,9 +81,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -114,9 +114,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" dependencies = [ "jobserver", "libc", @@ -145,9 +145,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -195,7 +195,7 @@ checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] @@ -206,7 +206,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] @@ -227,23 +227,23 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] name = "fdeflate" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] [[package]] name = "flagset" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a7e408202050813e6f1d9addadcaafef3dca7530c7ddfb005d4081cce6779" +checksum = "cdeb3aa5e95cf9aabc17f060cfa0ced7b83f042390760ca53bf09df9968acaa1" [[package]] name = "flate2" @@ -275,7 +275,7 @@ dependencies = [ name = "ironrdp-cliprdr" version = "0.1.0" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "ironrdp-pdu", "ironrdp-svc", "thiserror", @@ -329,7 +329,7 @@ name = "ironrdp-graphics" version = "0.1.0" dependencies = [ "bit_field", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "byteorder", "ironrdp-error", @@ -345,7 +345,7 @@ name = "ironrdp-pdu" version = "0.1.0" dependencies = [ "bit_field", - "bitflags 2.4.1", + "bitflags 2.4.2", "byteorder", "der-parser", "ironrdp-error", @@ -365,7 +365,7 @@ dependencies = [ name = "ironrdp-rdpdr" version = "0.1.0" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "ironrdp-error", "ironrdp-pdu", "ironrdp-svc", @@ -376,15 +376,15 @@ dependencies = [ name = "ironrdp-svc" version = "0.1.0" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "ironrdp-pdu", ] [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" dependencies = [ "libc", ] @@ -397,9 +397,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libfuzzer-sys" @@ -414,9 +414,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "md-5" @@ -442,9 +442,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -473,30 +473,29 @@ dependencies = [ [[package]] name = "num-derive" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -525,9 +524,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.11" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -538,9 +537,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -609,9 +608,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -638,29 +637,29 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] name = "tls_codec" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38a1d5fcfa859f0ec2b5e111dc903890bd7dac7f34713232bf9aa4fd7cad7b2" +checksum = "b5e78c9c330f8c85b2bae7c8368f2739157db9991235123aa1b15ef9502bfb6a" dependencies = [ "tls_codec_derive", "zeroize", @@ -668,13 +667,13 @@ dependencies = [ [[package]] name = "tls_codec_derive" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e00e3e7a54e0f1c8834ce72ed49c8487fbd3f801d8cfe1a0ad0640382f8e15" +checksum = "8d9ef545650e79f30233c0003bcc2504d7efac6dad25fca40744de773fe2049c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] @@ -697,7 +696,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] [[package]] @@ -771,5 +770,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.52", ] From d9bbd4b1b357792caefcbfc9ff9f279037d9111c Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Mon, 18 Mar 2024 11:10:21 +0200 Subject: [PATCH 0493/1273] feat(web): add API for cursor style override (#416) --- .../src/interfaces/UserInteraction.ts | 2 ++ .../iron-remote-gui/src/services/PublicAPI.ts | 5 ++++ .../src/services/wasm-bridge.service.ts | 27 ++++++++++++++++-- .../lib/remote-screen/remote-screen.svelte | 12 ++++++++ .../iron-svelte-client/static/crosshair.png | Bin 0 -> 163 bytes 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 web-client/iron-svelte-client/static/crosshair.png diff --git a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts index ffedf7b1..9e9c1a12 100644 --- a/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts +++ b/web-client/iron-remote-gui/src/interfaces/UserInteraction.ts @@ -29,5 +29,7 @@ export interface UserInteraction { shutdown(): void; + setCursorStyleOverride(style: string | null): void; + sessionListener: Observable; } diff --git a/web-client/iron-remote-gui/src/services/PublicAPI.ts b/web-client/iron-remote-gui/src/services/PublicAPI.ts index 7df32ad2..d0607558 100644 --- a/web-client/iron-remote-gui/src/services/PublicAPI.ts +++ b/web-client/iron-remote-gui/src/services/PublicAPI.ts @@ -64,6 +64,10 @@ export class PublicAPI { this.wasmService.setKeyboardUnicodeMode(use_unicode); } + private setCursorStyleOverride(style: string | null) { + this.wasmService.setCursorStyleOverride(style); + } + getExposedFunctions(): UserInteraction { return { setVisibility: this.setVisibility.bind(this), @@ -74,6 +78,7 @@ export class PublicAPI { metaKey: this.metaKey.bind(this), shutdown: this.shutdown.bind(this), setKeyboardUnicodeMode: this.setKeyboardUnicodeMode.bind(this), + setCursorStyleOverride: this.setCursorStyleOverride.bind(this), }; } } diff --git a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts index 7bee8ca9..cabaec20 100644 --- a/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/web-client/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -46,6 +46,8 @@ export class WasmBridgeService { private onRemoteClipboardChanged?: OnRemoteClipboardChanged; private onRemoteReceivedFormatList?: OnRemoteReceivedFormatsList; private onForceClipboardUpdate?: OnForceClipboardUpdate; + private cursorHasOverride: boolean = false; + private lastCursorStyle: string = 'default'; resize: Observable; session?: Session; @@ -264,6 +266,16 @@ export class WasmBridgeService { this.keyboardUnicodeMode = use_unicode; } + setCursorStyleOverride(style: string | null) { + if (style == null) { + this.canvas!.style.cursor = this.lastCursorStyle; + this.cursorHasOverride = false; + } else { + this.canvas!.style.cursor = style; + this.cursorHasOverride = true; + } + } + private releaseAllInputs() { this.session?.release_all_inputs(); } @@ -354,13 +366,15 @@ export class WasmBridgeService { hotspot_x: number | undefined, hotspot_y: number | undefined, ) { + let cssStyle; + switch (style) { case 'hidden': { - this.canvas!.style.cursor = 'none'; + cssStyle = 'none'; break; } case 'default': { - this.canvas!.style.cursor = 'default'; + cssStyle = 'default'; break; } case 'url': { @@ -377,14 +391,21 @@ export class WasmBridgeService { const rounded_hotspot_x = Math.round(hotspot_x); const rounded_hotspot_y = Math.round(hotspot_y); - this.canvas!.style.cursor = `url(${data}) ${rounded_hotspot_x} ${rounded_hotspot_y}, default`; + cssStyle = `url(${data}) ${rounded_hotspot_x} ${rounded_hotspot_y}, default`; break; } default: { console.error(`Unsupported cursor style: ${style}.`); + return; } } + + this.lastCursorStyle = cssStyle; + + if (!this.cursorHasOverride) { + this.canvas!.style.cursor = cssStyle; + } } private syncModifier(evt: KeyboardEvent | MouseEvent): void { diff --git a/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index e938cfaa..259b8c3b 100644 --- a/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -5,6 +5,7 @@ import type { UserInteraction } from '../../../static/iron-remote-gui'; let uiService: UserInteraction; + let cursorOverrideActive = false; userInteractionService.subscribe((uis) => { if (uis != null) { @@ -34,6 +35,16 @@ uiService.setKeyboardUnicodeMode(element.checked); } + function toggleCursorKind() { + if (cursorOverrideActive) { + uiService.setCursorStyleOverride(null); + } else { + uiService.setCursorStyleOverride('url("crosshair.png") 7 7, default'); + } + + cursorOverrideActive = !cursorOverrideActive; + } + onMount(async () => { let el = document.querySelector('iron-remote-gui'); @@ -64,6 +75,7 @@ +
        +
        +
        + + +
        +

      k|UUDj%Wm>^}hazEC2Lbk;lT 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 AlK=n! diff --git a/iron-tauri-client/src-tauri/icons/Square89x89Logo.png b/iron-tauri-client/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index d8857dbf86e3a9738b0020633bc7fd45c264c1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8355 zcmV;UAY9*xP)$K1In=EZMRh#qp!8NV2P(Lvl#|gv7_>l5;ATR1)8E z%q2-Vm82q9#j#zI9a)xSTQWsLBt?QE#V6iaU>Ez|>3m<$^lVS>%mM^K#i`1$nmd@; z-I@9I*T3)Cy#n6mKnNF7J_V8Za|}+ui1ff19n3&7VfO(Y zbLfmK6u`7Y?K_w__cxgPB9I*cf&J;;q=@+ALAqFW?Syte9iZDlbpyEdGhq3`cj(C9 zF}?yUtWy37j(zp-aP-SStKNd!B7~)Qq&I1UDx&s#fG%T@l*TdH19Wk~ouKYbNI1zh zl9?oKya9at<3A;QzsskdBnkciXa7K;ULuJW4jwg22op>ZKF0sky-Kw&VmhS<*yi6| z`|{CCx8w^*7nuPE3;!%hqR%A=)4#^4Z=XXV)1q^UM+z{1w`xxK)$#WoeLe*w5=u>Y z8pAO@Yd7P2Vf<}&qOd#k5kI54kZd70mcae@hLRYV{xY%!D2jMg7dIa=>eZtxAeDu4 z^QV|9WN|-p4DED*R6~Mpw;l#5j(3z42~S#u-nS%NUrW=4l#k|l8BfNQ@J*6fk3uBr zVh!IE%&?dl-7;M5f`RI7pPv+~gyXUb`XUI2&n15pwZ$JU3Ry z?8)a*E|-xi)ljR|s2?2VMDZ)Xx7BK4YI+7k!z1|c(ude6-NMNeC-B*$$5AS-V`ceQ zxc{rSQ5rb~=lE~K%@N=Y0^aq(mIiGEe2%b`OLW=+O7+7_a;#}(G$pxqBfY>qou5GS z*83PK453Yun@**$wzh`R(NX2q^D*x--hL*N#`N?wmX_}0#*L3v$4pGkVs`!*CP#;m z-MWd&wYSi25m%GKRNU>hVme>!#Z!7{Nq#txyKda^?cH9@pbx(0@FaFNRxw!q1jC0W zi4rm>l}cD%UdGPO4pIbqKA$InbOW#(jfVQWTCJj3EaH=!H&y2xB1)N@If9vqL+IaH zgjl_bTJ8|qxpBHyvqN9lMJNtxduWimq}6Cq$8<{=fV0CvHajb?og43CYAB137O&&p z-Mc6h3YedtM}L1m>h*d6uo`~!IhOR<*;xz@4l1y3-MWPay>Em*m!nP@ot(yaKPgnA zqY7Cc&5@JJKky#j@G_$WI_~(V3UU;axQ3~sa8RN!(8^Rx%{(9jTOW@ePMU%Pe<_wV1wp+kpgMD(FAKY%Hs5=jnDWorrb zv2&i2qOA;@I)sP^{8I(l2H56a5kU(PjXgO+fo|dk@aEs6f9(pMf8h%_@x&7fTy9!& zrLTMv%GDO3eWnfGA0Hpb+}s>CH#ZemkByCCm^vVp$zW>!44ixKqPBShJ0nkfaYsl? zF~f44#KY6{zCexxIFMX34q<{FmST}iDq+gdP@cd0Itqz8KKF$$VSuD~YilczRt+wL z$@}^^H!a!vmBH>K={<7f2r0)5E`9icG6M^RQ6%ZwGmkxu)Y`An-nob3z>~^@>~fs! z2;jr=^8=f3v6h2v6GsJoIySPPS4pwziBJ9$FHW||+Y~BGmdYn zv3>3M4vgzX+4*|C6t$^uda7?#MhcB-t0vzl{On=GnQUNF@`Pdg812!tJ-PT^q%6 z-wDEvfL3u1*F%v3RbcYHM*wXL_a1u+^A0zTDmpZnwuGLR+4%YR4Wx6K0J*xXP?FSU;PN>(k6YzMXrAU zW7D6(SM!&VYOKShIEd)d9o7hq4YBT#HTD+l5%JO-3vfhBcxGF=T}3uU<`n_OEt}0M z>%at*fo1@iK6qbCI0LHB@jk!u-~2vq{I>$1jy0PNJpRNP96f%Pfc`JEs3RJ+3Nrag zJWi7R&BMz8E7(-hdKRbKatgg#xI7fdLiDDJ5FgtBi!PH*sMiGY)m7vOSeCrekrA9a zbxKLG9{&8w5~-zAgR89ylRor&*zMK;o77VyP*0qGo-Uig?T_C>CfiSLZVRo{VVuep zaWu0+F%m~{ch@u6)VEIu#@QQHh#2qAb~Ykz)R$g(^QjAr-O4Xien58jbd{86z<s9I_}RDYzHv7xC0%vsm9QQBXb|0HJ}=pqgNr)`lse zw#{t5k12$k=JXU@pYw(D$3LS2N;}*4z@hX^rjIgSqxjl9^GcCyt#pj%+KVQ3rwpgJ zvP181WmizBJ66G5M?M)&lrP|GCnvGIwWG`-lW(>1V$gYCn`gXf#iym!1XJ_289d^B z^Kab&Z5l0U0()ZmG}e}`5{o62N!O4$oS7QH@j;@jW}EIeVU5BEpbHV5U3VhgMiB#a ztVBoCgnDR7jt;F~!ncp6QEJgcOSfYI_&lnIzxLd?Y3D+NZJKM^y3n67%{$!zW+yNm zard++Av-#LOxe-(>N<6DODV)^wT9;>C`w04lD*NMv6(Ik#jXm_=`F>G55`9YhD2C1 zOB#+S-o@{aZ6TE#K!rRyO#vD>Hs4rUHPGxD^DBd+CD@i!-2pZi+q7ZY*B;=caOty! zLyw`t85z}a4tDAZoSPtJ>uyuZE3tb-v5O`mq*+FRY**JHhIa&d2ZsC`av0279ls+N zaeV3!RyT@jcq%v3cQ!O|8ccnT!<$-aO@3yHG_4En2ywk@U}NaJA&=A+4p4fzZ7FVR&huR~j`0K?rUXia{g>Le$FiS1wGcOK6xnn)#_ zP~cq;X)SRT3gl=&xG@+UEMg0wMzoNp2-$DJvb-GZmutFded!)0uw1T!1KwbV!nb>SK_l zA6B)2j>00Sj1ir}8H+BG-HF2<1t20mmZ82skwUgn#8|;WsZys0ON7idZGLecjz4hb z^l8#=4Ky2dRV}9D7#uAt?o@GgwTK(-KHMKY4f*u%;@Hj|WR`x8dMc-`$MqT9xMTQp zrVGv>G1#V+qCG&qj~2xo0@A27kW!FHKbtP&Ev&BCjxNg;A>5|tPX9%5{g$UBR<|Neo>s&HI5LjYaBeqGgIC}+c`4%6(@0Bbt&B)AiR za$R=6p*o{YV7KVi(PdlcF=EkOsMEp306Ug0Y)%$&_H(z5=(wb42F7t=ogThXQT!~( zvXCrA^l*16)t?}VnVUL{OE>S}wfjv}p8OgxG0T20`Orx(bCS+bkMt?;OHl67C149H zix^$~7!4XNX*z!U_HD(noG|6I6;pvdYIxJmjVa-#cL<-axdT`S$X+pYdxYD;G+j+9 zWDmDmMEch;c44>q;`&m3e()?7*UQKXE*f-{gee=B0`o`bX7JJN`}p^JbyS{x83_ug z3$lG3N_dLFVTc^@FnfRmF4rYX2A}NKQ#ap5k~%R#=Oh7m<;oR2L78o)3p1|aQ9&zY zhifU<=UA!g7_6 zBCGf#bX7zmu%q~-4R%y|Ttq0q@DO5d7R0aB!72Ppsvl2pU&Gl{8AHtq1X|fQ<^;_cw6?o7 zxH?v%?dJqhP>VdljZ%f^sL#8894#U$hHP3H-BO+0QwBAv03=S-HPCGeW9ADupZ^@r zSJu&2-GJC3fFCD%m^(>f#d;6Vig=TF%_S4-sSDr7==vv+gQK{3;R7|)zwwQ4V4H@v zHpjF>qP<0aWov^wprhp6z>YS7RuWGms8O$=Sf%|!&ZD2Ml3LL{$^+q(G1vtlM~iqg z$HZ75c9wvxTa`wq01nTT7@0&ZIpd|F5_FCWwF7{=O+wc2ZYGb(y9+pZ`3>Ug5nTJ| zic*{mFbCc>xH`sRM(j*rHMp8iOlPR$sE}1t-omy^qk^s*%r^;nc2O9_@UW%$lHGvz z0$W6v2}JR_55DU~%%S!qn_mQOG7+mx*!gfN-jOY@;)VDB6*=lC|q`Q?`b zZe>vQtL9$Q`7n!Pv~yy{HgvMUalF5G%G=m*vt*9+cP8#2LYlElDL|KCiH^7obpB$7gz59tFL}jQ2^V+npZW*dgz-4h^BR6dV5}|vl%LkNt5(9>s4%$hg!)W zQi@nM>idL2K42oX=XS6&goN~GpprfO!oq7fQ@nwX;vE3Ybm*$gwYD%$qd zbr?D}qBo`v?QV0^(ybMrehzl$nU9w$#A<^R4>o6C?oIfT2a8+8v|1VU<&`GR zFy`09?M0v>=5)u@#U=OLQ&E$_rQBt9zU%-mt?%$Zt7syT#%Hho2*0)TYrKAb0qZL( z_|~_+rRYHeY{n&moA;HUu2I%iMB3^wQ&l>3Wgb&D1dWiD%_7B0j;nfU>9%$UL_Uag zOI0&!Nuk{JL*0N&Yu1pAJ{AD(OBZ{1Wc)vM^DTUC^#Xozc@e8iOUjC1deBijJ=D$g zzey2hMq5Sk{PdIQYU`%ouc@O#Rt1Hr(HNfPUW1CGn$OuKOc5hC>YUuO;*;SaEn`4O z9Jtat*4cN+hIYv#oL{<#FRlCvA5uJnZQ)m6eKk-}8X)bdX+E{5IPfvHI?TwM3BC?{ z>R`TBh<&ubvs1#FGXxADCQsFK>$~nh1fJX*n;0jY?%{1nXXrDsYp6$o*O@0LyXVgN zjUUDpDGX6s{_896VtuEEci(vj&ph*t%IPspXh}5F`(_D%22e||2481a%-o-u(biJz zs?cVGsDkX{>^P7g_9B5@&tpomwT^}~c`%+sl97BGOplGySrI*J-xy>hxVovg5cj=! z=S`%@CVuCa?_q3Y1Se0PqHM`VpvX*RW)6F8l9`!lJL+cI!)DEMP+`Pb6-tjSRcI8< z%qqnzTh(sG94W~WbRjKljF)8B8-+QOU50y1njCEPVi!F`H$@Z449=`w#C&57SMDrh znJkHyUV4cnxE#2@rsV2ij+Sndmrcnw%Vy1TFKumTciVG9+bEZ|vEq;$U6@jpO)_%i zS%MVm1Gx)*NZU@1u^gm*EbijcQyQxI$J}re)X1dBzNDsz@w_}% zTG~{LQc@-_Ye_YW!A(jqbBdZSv{F_uMHt1 zxX0{q22@1doa=pFaUieVMRDCm8OOI4Q77=OU%QHd!9ffU4+j|zv$9@io=wNXo-1M& zd+T#%1kRLly`RoF*r6=>oOyErC!!+s42%DBra~6~dxEV~+4v0gvQL48* zs>lv{RG}!&?J*K9stD;N%K`}mHquTu&V(d+4`2rSdYuW^TXs$Z4KKbtyK_se4zRkq zq&RYNax$z?$H8QAm_t ziU8OmR0r!y82iGX2j^!?l9a(7tFEDybg;6#tS-rUI-U5mgFL39 zGYbmsj?kc*l5e`){N37tarkfQ>`iCTi&ZdHxTfSKnh{m2!@kh=O)G}Dx7$`da)svYY> zgKbK5Flyr{!}5l$_lE)O*{db`fW zc!zrq+DA&WhzVQD&J22(Qp}0dB>EfM7-*HSDN`63pTKj^<$`ddmNM<3@%(B#@@Bfn zHht)g*U311_;Bc$oe?oPo9pK)^#*eFPvG4B09&(PP%ghTCD@HH>7t|=yCp7q#gjwQ zY*Pj-a2-RUHDzcMjwFx)Ck0a=&u)xj6t*JM&E#7%24N~Year^i{Jd>5n}vothS8)^ zBgvg+MXVO=)6dfd>Mrhfm;3!7=_hm1(9pu71}8hP;uQwq9#m-aA{`v3C2nps$zq@f zgdv%xEo@GHv?oHEz?-AMmUPp0Hl37U3WZ-vTc?aPujs)gy(C6<_4vAO$W_JF95b$n9IhuR2t$@d!X*m=t`{)(6`V;ArUaTmnE`p566`fF z>~)LGj#SPJNiLU&$wm!h^CwY~8LuwHZAXI}8wA^3g7=t6jo_F-qTSBwCepE}!!R*O znisN9;*&-WiS1>a8z2d)tl-VJ-chreo__l2z#FqARa(*!6~MP6Y^GG(E4wUGK&mh~ zgHmA*a`p_$i2<|YXm;AkG|%h`qR?~&?Z~Kr5h>G}m&a4# zO^Gm=A$NL@ag04|doR<9Qvl|Txvn+bye5>?d0Kq7bx#G%)rwbhb4rSJfXKEYqBz;C zzc9JmRCu;!!ux%h3{g}PJGU0#kP-$Ld#gBdyZgSQBzT_y0}r$6Y*h7T+#4zVpLdHm zQ~dyAn7s>kGKnIM6Xiv7>9&T(}1!!4JmCy?_=r*o<}CpV!yM zxz>3cZr(v%P~4b*{Rr(y_cuyvqn44h&)KOc8*DR#>Mi=zLcVYaNBReGXYma*Hg7|G z_K#HvKzV);yT^|oaNB3;Yy?N^w7;rfVACy$v&{v}$|bnz0kytyI+YA2sq1BL%xMTw zK-(6CX`Y#2o2$X-6$b1@{2YHq6;}>%Y3=;UQ%J5aLjK|(y!%gPEq;y&3hiTixaHO( zvb2&Is9$VjLatD|kGsVZO51lLm6%payaqBa<*S!2)6q4%n%<7SnHg-JN1`XF+se=! z4dy;~MuCD>!vk#;@BSF8i78<034ds`BT`KN8z37%s}fkGaM-tE;O)GBwVfww0Q#+?X18 z4Q2Z?rfFyIYo6xSU_>g5Oum3z@iN-wbEx#q`YVTv-w=?sXDvOiP5RTsq|bw#`QR9? zow=|b410>MZK6e48BwJHw)0{yp<_~ru9>Usls)h%C6!=@DeWHE`t}F@V=j)09uwCF z9yc#~+6vN5ohqm69n?FRc^zOj$Lv`-EBGqr{WQ zwwBOe*~Ab^7*5sD=eSyKgN2qtuNoLF$t`)M|asm(4b-ipaACrz$6FPH!X;j?y0ies?Sc`w-a4m__-Pcjs_#^ZmqJTj&`EWcW zl~vKq&tk1LjWw=mXqSv?X tk^VotNkX_$TEq6;H~inNUeLc={XdzfJE>wsDVhKP002ovPDHLkV1jL78D{_h diff --git a/iron-tauri-client/src-tauri/icons/StoreLogo.png b/iron-tauri-client/src-tauri/icons/StoreLogo.png deleted file mode 100644 index 00d9ce7c06a667e9779f857810a1b29c822f99d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3576 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%0AWTCG?5R7Hab;Mz={ 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

      - +
      From b72e0857bfe2bcf502db62e08da605412d9ba80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= <3809077+CBenoit@users.noreply.github.com> Date: Mon, 24 Mar 2025 21:52:46 +0100 Subject: [PATCH 0932/1273] refactor: move padding module to ironrdp-core (#716) --- crates/ironrdp-core/src/lib.rs | 2 ++ crates/ironrdp-core/src/macros.rs | 33 +++++++++++++++++++ .../src/padding.rs | 6 ++-- .../ironrdp-pdu/src/gcc/core_data/client.rs | 4 +-- crates/ironrdp-pdu/src/gcc/network_data.rs | 12 +++---- crates/ironrdp-pdu/src/input/mod.rs | 4 +-- crates/ironrdp-pdu/src/input/scan_code.rs | 5 ++- crates/ironrdp-pdu/src/input/sync.rs | 5 ++- crates/ironrdp-pdu/src/input/unicode.rs | 5 ++- crates/ironrdp-pdu/src/input/unused.rs | 5 ++- crates/ironrdp-pdu/src/lib.rs | 1 - crates/ironrdp-pdu/src/macros.rs | 33 ------------------- crates/ironrdp-pdu/src/mcs.rs | 4 +-- crates/ironrdp-pdu/src/pcb.rs | 4 +-- crates/ironrdp-pdu/src/rdp/capability_sets.rs | 4 +-- .../src/rdp/capability_sets/bitmap.rs | 3 +- .../src/rdp/capability_sets/bitmap_cache.rs | 5 ++- .../src/rdp/capability_sets/glyph_cache.rs | 3 +- .../src/rdp/capability_sets/input.rs | 5 ++- .../src/rdp/capability_sets/sound.rs | 5 ++- crates/ironrdp-pdu/src/rdp/client_info.rs | 4 +-- crates/ironrdp-pdu/src/rdp/headers.rs | 4 +-- .../ironrdp-pdu/src/rdp/refresh_rectangle.rs | 4 +-- .../server_license_request/cert.rs | 4 +-- crates/ironrdp-pdu/src/rdp/session_info.rs | 4 +-- .../src/rdp/session_info/logon_extended.rs | 4 +-- .../src/rdp/session_info/logon_info.rs | 4 +-- crates/ironrdp-pdu/src/rdp/suppress_output.rs | 4 +-- .../vc/dvc/gfx/graphics_messages/server.rs | 4 +-- crates/ironrdp-pdu/src/tpdu.rs | 3 +- crates/ironrdp-pdu/src/tpkt.rs | 4 ++- 31 files changed, 109 insertions(+), 82 deletions(-) rename crates/{ironrdp-pdu => ironrdp-core}/src/padding.rs (83%) diff --git a/crates/ironrdp-core/src/lib.rs b/crates/ironrdp-core/src/lib.rs index f1dffdd0..99237957 100644 --- a/crates/ironrdp-core/src/lib.rs +++ b/crates/ironrdp-core/src/lib.rs @@ -17,6 +17,7 @@ mod decode; mod encode; mod error; mod into_owned; +mod padding; #[cfg(feature = "alloc")] mod write_buf; @@ -28,5 +29,6 @@ pub use self::decode::*; pub use self::encode::*; pub use self::error::*; pub use self::into_owned::*; +pub use self::padding::*; #[cfg(feature = "alloc")] pub use self::write_buf::*; diff --git a/crates/ironrdp-core/src/macros.rs b/crates/ironrdp-core/src/macros.rs index 4b8e9c2c..52160839 100644 --- a/crates/ironrdp-core/src/macros.rs +++ b/crates/ironrdp-core/src/macros.rs @@ -391,3 +391,36 @@ macro_rules! cast_int { $crate::cast_int!($crate::function!(), $field, $len) }}; } + +/// Writes zeroes using as few `write_u*` calls as possible. +/// +/// This is similar to `ironrdp_core::padding::write`, but the loop is optimized out when a single +/// operation is enough. +#[macro_export] +macro_rules! write_padding { + ($dst:expr, 1) => { + $dst.write_u8(0) + }; + ($dst:expr, 2) => { + $dst.write_u16(0) + }; + ($dst:expr, 4) => { + $dst.write_u32(0) + }; + ($dst:expr, 8) => { + $dst.write_u64(0) + }; + ($dst:expr, $n:expr) => { + $crate::write_padding($dst, $n) + }; +} + +/// Moves read cursor, ignoring padding bytes. +/// +/// This is similar to `ironrdp_pdu::padding::read`, only exists for consistency with `write_padding!`. +#[macro_export] +macro_rules! read_padding { + ($src:expr, $n:expr) => { + $crate::read_padding($src, $n) + }; +} diff --git a/crates/ironrdp-pdu/src/padding.rs b/crates/ironrdp-core/src/padding.rs similarity index 83% rename from crates/ironrdp-pdu/src/padding.rs rename to crates/ironrdp-core/src/padding.rs index 8ce0d026..1c62168d 100644 --- a/crates/ironrdp-pdu/src/padding.rs +++ b/crates/ironrdp-core/src/padding.rs @@ -4,10 +4,10 @@ //! and message recipients should not assume padding has any particular //! value. -use ironrdp_core::{ReadCursor, WriteCursor}; +use crate::{ReadCursor, WriteCursor}; /// Writes zeroes using as few `write_u*` calls as possible. -pub fn write(dst: &mut WriteCursor<'_>, mut n: usize) { +pub fn write_padding(dst: &mut WriteCursor<'_>, mut n: usize) { loop { match n { 0 => break, @@ -33,6 +33,6 @@ pub fn write(dst: &mut WriteCursor<'_>, mut n: usize) { /// Moves read cursor, ignoring padding bytes. #[inline] -pub fn read(src: &mut ReadCursor<'_>, n: usize) { +pub fn read_padding(src: &mut ReadCursor<'_>, n: usize) { src.advance(n); } diff --git a/crates/ironrdp-pdu/src/gcc/core_data/client.rs b/crates/ironrdp-pdu/src/gcc/core_data/client.rs index 9b2bf8c5..90401dbb 100644 --- a/crates/ironrdp-pdu/src/gcc/core_data/client.rs +++ b/crates/ironrdp-pdu/src/gcc/core_data/client.rs @@ -1,7 +1,7 @@ use bitflags::bitflags; use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, write_padding, Decode, DecodeResult, Encode, EncodeResult, + ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/gcc/network_data.rs b/crates/ironrdp-pdu/src/gcc/network_data.rs index eea344a8..6f6b500e 100644 --- a/crates/ironrdp-pdu/src/gcc/network_data.rs +++ b/crates/ironrdp-pdu/src/gcc/network_data.rs @@ -3,8 +3,8 @@ use std::{io, str}; use bitflags::bitflags; use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, - ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, + DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use num_integer::Integer; use thiserror::Error; @@ -157,7 +157,7 @@ impl ServerNetworkData { const FIXED_PART_SIZE: usize = SERVER_IO_CHANNEL_SIZE + SERVER_CHANNEL_COUNT_SIZE; - fn write_padding(&self) -> bool { + fn padding_needed(&self) -> bool { self.channel_ids.len().is_odd() } } @@ -178,8 +178,8 @@ impl Encode for ServerNetworkData { // (and by implication the entire Server Network Data structure) will not be a multiple of 4. // In this scenario, the Pad field MUST be present and it is used to add an additional // 2 bytes to the size of the Server Network Data structure. - if self.write_padding() { - dst.write_u16(0); // pad + if self.padding_needed() { + write_padding!(dst, 2); } Ok(()) @@ -190,7 +190,7 @@ impl Encode for ServerNetworkData { } fn size(&self) -> usize { - let padding_size = if self.write_padding() { 2 } else { 0 }; + let padding_size = if self.padding_needed() { 2 } else { 0 }; Self::FIXED_PART_SIZE + self.channel_ids.len() * SERVER_CHANNEL_SIZE + padding_size } diff --git a/crates/ironrdp-pdu/src/input/mod.rs b/crates/ironrdp-pdu/src/input/mod.rs index b4a33d0a..76382269 100644 --- a/crates/ironrdp-pdu/src/input/mod.rs +++ b/crates/ironrdp-pdu/src/input/mod.rs @@ -1,8 +1,8 @@ use std::io; use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, DecodeResult, Encode, + EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/input/scan_code.rs b/crates/ironrdp-pdu/src/input/scan_code.rs index 1cd17c1c..0798866c 100644 --- a/crates/ironrdp-pdu/src/input/scan_code.rs +++ b/crates/ironrdp-pdu/src/input/scan_code.rs @@ -1,5 +1,8 @@ use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct ScanCodePdu { diff --git a/crates/ironrdp-pdu/src/input/sync.rs b/crates/ironrdp-pdu/src/input/sync.rs index 648a5b90..81453937 100644 --- a/crates/ironrdp-pdu/src/input/sync.rs +++ b/crates/ironrdp-pdu/src/input/sync.rs @@ -1,5 +1,8 @@ use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct SyncPdu { diff --git a/crates/ironrdp-pdu/src/input/unicode.rs b/crates/ironrdp-pdu/src/input/unicode.rs index 7998cdd4..37ce8d67 100644 --- a/crates/ironrdp-pdu/src/input/unicode.rs +++ b/crates/ironrdp-pdu/src/input/unicode.rs @@ -1,5 +1,8 @@ use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct UnicodePdu { diff --git a/crates/ironrdp-pdu/src/input/unused.rs b/crates/ironrdp-pdu/src/input/unused.rs index d5e47f8b..8e3a00ff 100644 --- a/crates/ironrdp-pdu/src/input/unused.rs +++ b/crates/ironrdp-pdu/src/input/unused.rs @@ -1,4 +1,7 @@ -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct UnusedPdu; diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 08204efe..72522185 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -21,7 +21,6 @@ pub mod geometry; pub mod input; pub mod mcs; pub mod nego; -pub mod padding; pub mod pcb; pub mod rdp; pub mod tpdu; diff --git a/crates/ironrdp-pdu/src/macros.rs b/crates/ironrdp-pdu/src/macros.rs index a91a176a..36e45f8d 100644 --- a/crates/ironrdp-pdu/src/macros.rs +++ b/crates/ironrdp-pdu/src/macros.rs @@ -118,39 +118,6 @@ macro_rules! impl_x224_pdu_borrowing { }; } -/// Writes zeroes using as few `write_u*` calls as possible. -/// -/// This is similar to `ironrdp_pdu::padding::write`, but the loop is optimized out when a single -/// operation is enough. -#[macro_export] -macro_rules! write_padding { - ($dst:expr, 1) => { - $dst.write_u8(0) - }; - ($dst:expr, 2) => { - $dst.write_u16(0) - }; - ($dst:expr, 4) => { - $dst.write_u32(0) - }; - ($dst:expr, 8) => { - $dst.write_u64(0) - }; - ($dst:expr, $n:expr) => { - $crate::padding::write($dst, $n) - }; -} - -/// Moves read cursor, ignoring padding bytes. -/// -/// This is similar to `ironrdp_pdu::padding::read`, only exists for consistency with `write_padding!`. -#[macro_export] -macro_rules! read_padding { - ($src:expr, $n:expr) => { - $crate::padding::read($src, $n) - }; -} - // FIXME: legacy macros below #[macro_export] diff --git a/crates/ironrdp-pdu/src/mcs.rs b/crates/ironrdp-pdu/src/mcs.rs index b86df630..a283686a 100644 --- a/crates/ironrdp-pdu/src/mcs.rs +++ b/crates/ironrdp-pdu/src/mcs.rs @@ -1,8 +1,8 @@ use std::borrow::Cow; use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, other_err, unexpected_message_type_err, - IntoOwned, ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, other_err, read_padding, + unexpected_message_type_err, IntoOwned, ReadCursor, WriteCursor, }; use crate::gcc::{ChannelDef, ClientGccBlocks, ConferenceCreateRequest, ConferenceCreateResponse}; diff --git a/crates/ironrdp-pdu/src/pcb.rs b/crates/ironrdp-pdu/src/pcb.rs index 457196f8..687a4650 100644 --- a/crates/ironrdp-pdu/src/pcb.rs +++ b/crates/ironrdp-pdu/src/pcb.rs @@ -1,8 +1,8 @@ //! This module contains the RDP_PRECONNECTION_PDU_V1 and RDP_PRECONNECTION_PDU_V2 structures. use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, invalid_field_err_with_source, Decode, - DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, invalid_field_err_with_source, read_padding, + write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use crate::Pdu; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets.rs b/crates/ironrdp-pdu/src/rdp/capability_sets.rs index 3772e569..e2aef9b6 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets.rs @@ -1,8 +1,8 @@ use std::io; use ironrdp_core::{ - cast_length, decode, ensure_fixed_part_size, ensure_size, invalid_field_err, unsupported_value_err, Decode, - DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, + cast_length, decode, ensure_fixed_part_size, ensure_size, invalid_field_err, unsupported_value_err, write_padding, + Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs index 56d8c287..cd5a4f4c 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs @@ -3,7 +3,8 @@ mod tests; use bitflags::bitflags; use ironrdp_core::{ - ensure_fixed_part_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, + ensure_fixed_part_size, invalid_field_err, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, + ReadCursor, WriteCursor, }; const BITMAP_LENGTH: usize = 24; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs index 35771ec6..76c53866 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs @@ -2,7 +2,10 @@ mod tests; use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; pub const BITMAP_CACHE_ENTRIES_NUM: usize = 3; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs index 6f8866c9..0ad26a2b 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs @@ -2,7 +2,8 @@ mod tests; use ironrdp_core::{ - ensure_fixed_part_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, + ensure_fixed_part_size, invalid_field_err, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs index 5dc5c065..fe1cdee8 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs @@ -2,7 +2,10 @@ mod tests; use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; use num_traits::{FromPrimitive, ToPrimitive}; use crate::gcc::{KeyboardType, IME_FILE_NAME_SIZE}; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs index e9fb6642..b4ca1e67 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs @@ -2,7 +2,10 @@ mod tests; use bitflags::bitflags; -use ironrdp_core::{ensure_fixed_part_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, + WriteCursor, +}; const SOUND_LENGTH: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/client_info.rs b/crates/ironrdp-pdu/src/rdp/client_info.rs index aeb0800c..dff21f04 100644 --- a/crates/ironrdp-pdu/src/rdp/client_info.rs +++ b/crates/ironrdp-pdu/src/rdp/client_info.rs @@ -3,8 +3,8 @@ use std::io; use bitflags::bitflags; use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, write_padding, Decode, DecodeResult, Encode, EncodeResult, + ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; diff --git a/crates/ironrdp-pdu/src/rdp/headers.rs b/crates/ironrdp-pdu/src/rdp/headers.rs index 4cb0e1b9..0f6b9474 100644 --- a/crates/ironrdp-pdu/src/rdp/headers.rs +++ b/crates/ironrdp-pdu/src/rdp/headers.rs @@ -1,7 +1,7 @@ use bitflags::bitflags; use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, not_enough_bytes_err, other_err, Decode, - DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, not_enough_bytes_err, other_err, read_padding, + write_padding, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs b/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs index 5f9de045..611c3c78 100644 --- a/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs +++ b/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs @@ -1,6 +1,6 @@ use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, read_padding, write_padding, Decode, DecodeResult, Encode, + EncodeResult, ReadCursor, WriteCursor, }; use crate::geometry::InclusiveRectangle; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs index 86f4b5b3..b27e9eed 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs @@ -1,6 +1,6 @@ use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, - ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, + DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use super::{BlobHeader, BlobType, KEY_EXCHANGE_ALGORITHM_RSA}; diff --git a/crates/ironrdp-pdu/src/rdp/session_info.rs b/crates/ironrdp-pdu/src/rdp/session_info.rs index fc91ae78..bb347801 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info.rs @@ -1,8 +1,8 @@ use std::io; use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, DecodeResult, Encode, + EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; diff --git a/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs b/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs index acbc11a7..dffe5950 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs @@ -1,7 +1,7 @@ use bitflags::bitflags; use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, - ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, Decode, DecodeResult, Encode, + EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs b/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs index 5a5509f1..8555a5fe 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs @@ -1,6 +1,6 @@ use ironrdp_core::{ - cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, - ReadCursor, WriteCursor, + cast_length, ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, + DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use crate::utils; diff --git a/crates/ironrdp-pdu/src/rdp/suppress_output.rs b/crates/ironrdp-pdu/src/rdp/suppress_output.rs index 42e083d1..86f54336 100644 --- a/crates/ironrdp-pdu/src/rdp/suppress_output.rs +++ b/crates/ironrdp-pdu/src/rdp/suppress_output.rs @@ -1,6 +1,6 @@ use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, EncodeResult, ReadCursor, - WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, Decode, DecodeResult, Encode, + EncodeResult, ReadCursor, WriteCursor, }; use crate::geometry::InclusiveRectangle; diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index 81b2bea5..3e8e219b 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -2,8 +2,8 @@ use std::fmt; use bit_field::BitField; use ironrdp_core::{ - cast_length, decode_cursor, ensure_fixed_part_size, ensure_size, invalid_field_err, Decode, DecodeResult, Encode, - EncodeResult, ReadCursor, WriteCursor, + cast_length, decode_cursor, ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, write_padding, + Decode, DecodeResult, Encode, EncodeResult, ReadCursor, WriteCursor, }; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; diff --git a/crates/ironrdp-pdu/src/tpdu.rs b/crates/ironrdp-pdu/src/tpdu.rs index 37d9cfb6..f2fe040d 100644 --- a/crates/ironrdp-pdu/src/tpdu.rs +++ b/crates/ironrdp-pdu/src/tpdu.rs @@ -1,5 +1,6 @@ use ironrdp_core::{ - ensure_fixed_part_size, ensure_size, invalid_field_err, unexpected_message_type_err, ReadCursor, WriteCursor, + ensure_fixed_part_size, ensure_size, invalid_field_err, read_padding, unexpected_message_type_err, ReadCursor, + WriteCursor, }; use crate::tpkt::TpktHeader; diff --git a/crates/ironrdp-pdu/src/tpkt.rs b/crates/ironrdp-pdu/src/tpkt.rs index 10767513..95a96f47 100644 --- a/crates/ironrdp-pdu/src/tpkt.rs +++ b/crates/ironrdp-pdu/src/tpkt.rs @@ -1,4 +1,6 @@ -use ironrdp_core::{ensure_fixed_part_size, unsupported_version_err, ReadCursor, WriteCursor}; +use ironrdp_core::{ + ensure_fixed_part_size, read_padding, unsupported_version_err, write_padding, ReadCursor, WriteCursor, +}; use crate::{DecodeResult, EncodeResult}; From 248588371ab00a5cab76d5da127fd954cd4f34f9 Mon Sep 17 00:00:00 2001 From: "irvingouj@Devolutions" Date: Mon, 24 Mar 2025 17:55:39 -0400 Subject: [PATCH 0933/1273] fix(web): re-introduce shadow root but also delegate focus (#717) --- .../iron-remote-gui/src/iron-remote-gui.svelte | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/web-client/iron-remote-gui/src/iron-remote-gui.svelte b/web-client/iron-remote-gui/src/iron-remote-gui.svelte index 8cc2ffe6..af261776 100644 --- a/web-client/iron-remote-gui/src/iron-remote-gui.svelte +++ b/web-client/iron-remote-gui/src/iron-remote-gui.svelte @@ -1,4 +1,17 @@ - + { + return class extends elementConstructor { + constructor() { + super(); + this.attachShadow({ mode: 'open', delegatesFocus: true }); + } + }; + }, + }} +/>
      -
      - - - - - - - - +
      +
      + + + + + + + + + +
      + + {#if showDebugPanel} +
      + debug-panel + + +

      see if text selection works correctly

      +
      + {/if}
      From f62104efe657ce3c693620cb022c0eeb8b931e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= <3809077+CBenoit@users.noreply.github.com> Date: Wed, 26 Mar 2025 01:55:30 +0100 Subject: [PATCH 0940/1273] fix(ffi): use patched diplomat (#723) This patched version of Diplomat is backporting an important fix from the more up to date versions of Diplomat. Without this patch, the code generated by the diplomat::bridge macro contains an easy to trigger UB. This UB is triggered by the generated C# code when passing an empty byte[] array. --- Cargo.lock | 6 ++---- Cargo.toml | 5 +++++ ffi/Cargo.toml | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99bcf48f..47c30254 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1229,8 +1229,7 @@ dependencies = [ [[package]] name = "diplomat" version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31672b3ebc3c7866c3c98726f7a9a5ac8f13962e77d3c8225f6be49a7b8c5f2" +source = "git+https://github.com/CBenoit/diplomat?rev=6dc806e80162b6b39509a04a2835744236cd2396#6dc806e80162b6b39509a04a2835744236cd2396" dependencies = [ "diplomat_core", "proc-macro2", @@ -1247,8 +1246,7 @@ checksum = "f7b0f23d549a46540e26e5490cd44c64ced0d762959f1ffdec6ab0399634cf3c" [[package]] name = "diplomat_core" version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaa5e13e8b8735d2338f2836c06cd8643902ab87dda1dd07dbb351998ddc127" +source = "git+https://github.com/CBenoit/diplomat?rev=6dc806e80162b6b39509a04a2835744236cd2396#6dc806e80162b6b39509a04a2835744236cd2396" dependencies = [ "lazy_static", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 8f9ddf9f..e0020e93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -143,3 +143,8 @@ opt-level = 3 [profile.test.package.rand_chacha] opt-level = 3 + +[patch.crates-io] +# FIXME: We need to catch up with Diplomat upstream again, but this is a significant amount of work. +# In the meantime, we use this forked version which fixes an undefined behavior in the code expanded by the bridge macro. +diplomat = { git = "https://github.com/CBenoit/diplomat", rev = "6dc806e80162b6b39509a04a2835744236cd2396" } diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml index 5a7b3932..fbefb2e7 100644 --- a/ffi/Cargo.toml +++ b/ffi/Cargo.toml @@ -27,4 +27,3 @@ embed-resource = "3.0" [lints] workspace = true - From 9f4e6d410b631d8a6b0c09c2abc0817a83cf042b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= <3809077+CBenoit@users.noreply.github.com> Date: Thu, 27 Mar 2025 17:00:20 +0100 Subject: [PATCH 0941/1273] fix(pdu): fix possible out of bound indexing in RFX module (#724) An index bound check was missing in the RFX module. Found by fuzzer. --- crates/ironrdp-pdu/src/codecs/rfx/data_messages.rs | 3 +++ .../crash-3cf2ef026fc908048c16c4e816178b5b3002f7b1 | Bin 0 -> 27 bytes 2 files changed, 3 insertions(+) create mode 100644 crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-3cf2ef026fc908048c16c4e816178b5b3002f7b1 diff --git a/crates/ironrdp-pdu/src/codecs/rfx/data_messages.rs b/crates/ironrdp-pdu/src/codecs/rfx/data_messages.rs index effacd6e..796d0602 100644 --- a/crates/ironrdp-pdu/src/codecs/rfx/data_messages.rs +++ b/crates/ironrdp-pdu/src/codecs/rfx/data_messages.rs @@ -246,12 +246,15 @@ impl<'de> Decode<'de> for RegionPdu { } let number_of_rectangles = usize::from(src.read_u16()); + ensure_size!(in: src, size: number_of_rectangles * RECTANGLE_SIZE); let rectangles = (0..number_of_rectangles) .map(|_| RfxRectangle::decode(src)) .collect::, _>>()?; + ensure_size!(in: src, size: 4); + let region_type = src.read_u16(); if region_type != CBT_REGION { return Err(invalid_field_err!("regionType", "Invalid region type")); diff --git a/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-3cf2ef026fc908048c16c4e816178b5b3002f7b1 b/crates/ironrdp-testsuite-core/test_data/fuzz_regression/pdu_decode/crash-3cf2ef026fc908048c16c4e816178b5b3002f7b1 new file mode 100644 index 0000000000000000000000000000000000000000..e2f912dc646dc841c4071006072067a35850a81e GIT binary patch literal 27 fcmX?hMw)?vfsuiciJ|TxlPv=iKak77U< Date: Thu, 27 Mar 2025 20:39:51 +0100 Subject: [PATCH 0942/1273] chore(release): prepare for iron-remote-gui 0.13.1 (#726) --- web-client/iron-remote-gui/public/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-client/iron-remote-gui/public/package.json b/web-client/iron-remote-gui/public/package.json index 2f7a4ef6..a7d56802 100644 --- a/web-client/iron-remote-gui/public/package.json +++ b/web-client/iron-remote-gui/public/package.json @@ -9,7 +9,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.13.0", + "version": "0.13.1", "main": "iron-remote-gui.js", "types": "index.d.ts", "files": [ From d47c1e6415f3952061d0830652715130fd3c900c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 26 Mar 2025 17:57:39 +0400 Subject: [PATCH 0943/1273] debug(server): trace ServerEvent dispatching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/server.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index d20d9bf4..854b0923 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -471,6 +471,7 @@ impl RdpServer { // 4 frames should roughly corresponds to hundreds of ms in regular setups. let mut wave_limit = 4; for event in events.drain(..) { + trace!(?event, "Dispatching"); match event { ServerEvent::Quit(reason) => { debug!("Got quit event: {reason}"); From b957c085b317f0823a41fdfde3ec694601b5d132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 18 Mar 2025 14:16:06 +0400 Subject: [PATCH 0944/1273] doc(session): misc doc annotation fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/macros.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/ironrdp-session/src/macros.rs b/crates/ironrdp-session/src/macros.rs index 86bd2c39..b612ced6 100644 --- a/crates/ironrdp-session/src/macros.rs +++ b/crates/ironrdp-session/src/macros.rs @@ -1,7 +1,7 @@ /// Creates a `SessionError` with `General` kind /// /// Shorthand for -/// ```rust +/// ```ignore /// ::general(context) /// ``` #[macro_export] @@ -14,7 +14,7 @@ macro_rules! general_err { /// Creates a `SessionError` with `Reason` kind /// /// Shorthand for -/// ```rust +/// ```ignore /// ::reason(context, reason) /// ``` #[macro_export] @@ -27,7 +27,7 @@ macro_rules! reason_err { /// Creates a `SessionError` with `Custom` kind and a source error attached to it /// /// Shorthand for -/// ```rust +/// ```ignore /// ::custom(context, source) /// ``` #[macro_export] From ff264008223cd808b0c2e86e961a4c20265d614e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 18 Mar 2025 17:01:41 +0400 Subject: [PATCH 0945/1273] debug(session): trace the surface codec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/fast_path.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index 0618c4ec..84cbbb45 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -315,8 +315,6 @@ impl Processor { for command in surface_commands { match command { SurfaceCommand::SetSurfaceBits(bits) | SurfaceCommand::StreamSurfaceBits(bits) => { - trace!("Surface bits"); - let codec_id = CodecId::from_u8(bits.extended_bitmap_data.codec_id).ok_or_else(|| { reason_err!( "Fast-Path", @@ -325,6 +323,8 @@ impl Processor { ) })?; + trace!(?codec_id, "Surface bits"); + let destination = bits.destination; // TODO(@pacmancoder): Correct rectangle conversion logic should // be revisited when `rectangle_processing.rs` from From a50cd643dce9621f314231b7598d2fd31e4718c6 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lureau Date: Mon, 31 Mar 2025 02:37:38 +0400 Subject: [PATCH 0946/1273] fix(session): update rectangle when applying None codecs updates (#728) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/fast_path.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index 84cbbb45..e38a7986 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -341,7 +341,9 @@ impl Processor { let ext_data = bits.extended_bitmap_data; match ext_data.bpp { 32 => { - image.apply_rgb32_bitmap(ext_data.data, PixelFormat::BgrX32, &destination)?; + let rectangle = + image.apply_rgb32_bitmap(ext_data.data, PixelFormat::BgrX32, &destination)?; + update_rectangle = update_rectangle.union(&rectangle); } bpp => { warn!("Unsupported bpp: {bpp}") From 4e581e0f47593097c16f2dde43cd0ff0976fe73e Mon Sep 17 00:00:00 2001 From: Marc-Andre Lureau Date: Mon, 31 Mar 2025 02:39:10 +0400 Subject: [PATCH 0947/1273] feat(cliprdr)!: add on_ready() callback (#729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Give a hint to the backend when the channel is actually connected & ready to process messages. Signed-off-by: Marc-André Lureau --- crates/ironrdp-cliprdr-native/src/stub.rs | 2 ++ crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs | 2 ++ crates/ironrdp-cliprdr/src/backend.rs | 3 +++ crates/ironrdp-cliprdr/src/lib.rs | 2 ++ crates/ironrdp-web/src/clipboard/mod.rs | 2 ++ 5 files changed, 11 insertions(+) diff --git a/crates/ironrdp-cliprdr-native/src/stub.rs b/crates/ironrdp-cliprdr-native/src/stub.rs index 727462c1..e6baf6e6 100644 --- a/crates/ironrdp-cliprdr-native/src/stub.rs +++ b/crates/ironrdp-cliprdr-native/src/stub.rs @@ -54,6 +54,8 @@ impl CliprdrBackend for StubCliprdrBackend { ".cliprdr" } + fn on_ready(&mut self) {} + fn client_capabilities(&self) -> ClipboardGeneralCapabilityFlags { // No additional capabilities yet ClipboardGeneralCapabilityFlags::empty() diff --git a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs index 7660cfa4..0192ab3e 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs @@ -54,6 +54,8 @@ impl CliprdrBackend for WinCliprdrBackend { ClipboardGeneralCapabilityFlags::empty() } + fn on_ready(&mut self) {} + fn on_process_negotiated_capabilities(&mut self, capabilities: ClipboardGeneralCapabilityFlags) { self.send_event(BackendEvent::DowngradedCapabilities(capabilities)) } diff --git a/crates/ironrdp-cliprdr/src/backend.rs b/crates/ironrdp-cliprdr/src/backend.rs index 988708ec..b000735f 100644 --- a/crates/ironrdp-cliprdr/src/backend.rs +++ b/crates/ironrdp-cliprdr/src/backend.rs @@ -60,6 +60,9 @@ pub trait CliprdrBackend: AsAny + core::fmt::Debug + Send { /// [crate::Cliprdr] capabilities. fn client_capabilities(&self) -> ClipboardGeneralCapabilityFlags; + /// Called by [crate::Cliprdr] when it is ready to process clipboard data (channel initialized) + fn on_ready(&mut self); + /// Processes signal to start clipboard copy sequence. /// /// Trait implementer is responsible for gathering its list of available [`ClipboardFormat`] diff --git a/crates/ironrdp-cliprdr/src/lib.rs b/crates/ironrdp-cliprdr/src/lib.rs index 9c4b25f3..8aef740d 100644 --- a/crates/ironrdp-cliprdr/src/lib.rs +++ b/crates/ironrdp-cliprdr/src/lib.rs @@ -154,6 +154,7 @@ impl Cliprdr { if self.state == CliprdrState::Initialization { info!("CLIPRDR(clipboard) virtual channel has been initialized"); self.state = CliprdrState::Ready; + self.backend.on_ready(); } else { info!("CLIPRDR(clipboard) Remote has received format list successfully"); } @@ -173,6 +174,7 @@ impl Cliprdr { if R::is_server() && self.state == CliprdrState::Initialization { info!("CLIPRDR(clipboard) virtual channel has been initialized"); self.state = CliprdrState::Ready; + self.backend.on_ready(); } let formats = format_list.get_formats(self.are_long_format_names_enabled())?; diff --git a/crates/ironrdp-web/src/clipboard/mod.rs b/crates/ironrdp-web/src/clipboard/mod.rs index 31e107fe..8cc035d5 100644 --- a/crates/ironrdp-web/src/clipboard/mod.rs +++ b/crates/ironrdp-web/src/clipboard/mod.rs @@ -540,6 +540,8 @@ impl CliprdrBackend for WasmClipboardBackend { ClipboardGeneralCapabilityFlags::empty() } + fn on_ready(&mut self) {} + fn on_request_format_list(&mut self) { // Initial clipboard is assumed to be empty on WASM (TODO: This is only relevant for Firefox?) self.send_event(WasmClipboardBackendMessage::ForceClipboardUpdate); From db6f4cdb7f379713979b930e8e1fa1a813ebecc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 18:56:13 +0400 Subject: [PATCH 0948/1273] refactor(server)!: drop support for pixelOrder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dealing with multiple formats is sufficiently annoying, there isn't much need for awkward image layout. This was done for efficiency reason for bitmap encoding, but bitmap is really inefficient anyway and very few servers will actually provide bottom to top images (except with GL/GPU textures, but this is not in scope yet). Signed-off-by: Marc-André Lureau --- crates/ironrdp-bench/benches/bench.rs | 2 -- crates/ironrdp-server/src/display.rs | 8 ------ crates/ironrdp-server/src/encoder/bitmap.rs | 31 ++++++--------------- crates/ironrdp-server/src/encoder/mod.rs | 30 +++++--------------- crates/ironrdp/examples/server.rs | 5 ++-- 5 files changed, 17 insertions(+), 59 deletions(-) diff --git a/crates/ironrdp-bench/benches/bench.rs b/crates/ironrdp-bench/benches/bench.rs index 428493c5..5781a6e4 100644 --- a/crates/ironrdp-bench/benches/bench.rs +++ b/crates/ironrdp-bench/benches/bench.rs @@ -16,7 +16,6 @@ pub fn rfx_enc_tile_bench(c: &mut Criterion) { height: NonZero::new(64).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, data: vec![0; 64 * 64 * 4], - order: ironrdp_server::PixelOrder::BottomToTop, stride: 64 * 4, }; c.bench_function("rfx_enc_tile", |b| b.iter(|| rfx_enc_tile(&bitmap, &quant, algo, 0, 0))); @@ -32,7 +31,6 @@ pub fn rfx_enc_bench(c: &mut Criterion) { height: NonZero::new(2048).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, data: vec![0; 2048 * 2048 * 4], - order: ironrdp_server::PixelOrder::BottomToTop, stride: 64 * 4, }; c.bench_function("rfx_enc", |b| b.iter(|| rfx_enc(&bitmap, &quant, algo))); diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index 1f825e5e..9d4879e6 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -24,12 +24,6 @@ pub enum DisplayUpdate { DefaultPointer, } -#[derive(Debug, Clone, Copy, PartialEq)] -pub enum PixelOrder { - TopToBottom, - BottomToTop, -} - #[derive(Clone)] pub struct RGBAPointer { pub width: u16, @@ -73,7 +67,6 @@ pub struct BitmapUpdate { pub width: NonZeroU16, pub height: NonZeroU16, pub format: PixelFormat, - pub order: PixelOrder, pub data: Vec, pub stride: usize, } @@ -86,7 +79,6 @@ impl core::fmt::Debug for BitmapUpdate { .field("width", &self.width) .field("height", &self.height) .field("format", &self.format) - .field("order", &self.order) .finish() } } diff --git a/crates/ironrdp-server/src/encoder/bitmap.rs b/crates/ironrdp-server/src/encoder/bitmap.rs index c502cdf3..1476f29c 100644 --- a/crates/ironrdp-server/src/encoder/bitmap.rs +++ b/crates/ironrdp-server/src/encoder/bitmap.rs @@ -4,7 +4,7 @@ use ironrdp_graphics::rdp6::{ABgrChannels, ARgbChannels, BgrAChannels, BitmapStr use ironrdp_pdu::bitmap::{self, BitmapData, BitmapUpdateData, Compression}; use ironrdp_pdu::geometry::InclusiveRectangle; -use crate::{BitmapUpdate, PixelOrder}; +use crate::BitmapUpdate; // PERF: we could also remove the need for this buffer pub(crate) struct BitmapEncoder { @@ -43,20 +43,14 @@ impl BitmapEncoder { let encoder = BitmapStreamEncoder::new(usize::from(bitmap.width.get()), height); - let len = match bitmap.order { - PixelOrder::BottomToTop => { - Self::encode_slice(encoder, bitmap.format, &chunk[..row_len], self.buffer.as_mut_slice()) - } + let len = { + let pixels = chunk + .chunks(bitmap.stride) + .map(|row| &row[..row_len]) + .rev() + .flat_map(|row| row.chunks(bytes_per_pixel)); - PixelOrder::TopToBottom => { - let pixels = chunk - .chunks(bitmap.stride) - .map(|row| &row[..row_len]) - .rev() - .flat_map(|row| row.chunks(bytes_per_pixel)); - - Self::encode_iter(encoder, bitmap.format, pixels, self.buffer.as_mut_slice()) - } + Self::encode_iter(encoder, bitmap.format, pixels, self.buffer.as_mut_slice()) }; let data = BitmapData { @@ -84,15 +78,6 @@ impl BitmapEncoder { Ok(cursor.pos()) } - fn encode_slice(mut encoder: BitmapStreamEncoder, format: PixelFormat, src: &[u8], dst: &mut [u8]) -> usize { - match format { - PixelFormat::ARgb32 | PixelFormat::XRgb32 => encoder.encode_bitmap::(src, dst, true).unwrap(), - PixelFormat::RgbA32 | PixelFormat::RgbX32 => encoder.encode_bitmap::(src, dst, true).unwrap(), - PixelFormat::ABgr32 | PixelFormat::XBgr32 => encoder.encode_bitmap::(src, dst, true).unwrap(), - PixelFormat::BgrA32 | PixelFormat::BgrX32 => encoder.encode_bitmap::(src, dst, true).unwrap(), - } - } - fn encode_iter<'a, P>(mut encoder: BitmapStreamEncoder, format: PixelFormat, src: P, dst: &mut [u8]) -> usize where P: Iterator + Clone, diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 9fa7f29a..6ac4079e 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -1,7 +1,7 @@ mod bitmap; pub(crate) mod rfx; -use core::{cmp, mem}; +use core::cmp; use anyhow::{Context, Result}; use ironrdp_core::{Encode, WriteCursor}; @@ -14,7 +14,7 @@ use ironrdp_pdu::surface_commands::{ExtendedBitmapDataPdu, SurfaceBitsPdu, Surfa use self::bitmap::BitmapEncoder; use self::rfx::RfxEncoder; use super::BitmapUpdate; -use crate::{ColorPointer, PixelOrder, RGBAPointer}; +use crate::{ColorPointer, RGBAPointer}; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(u8)] @@ -201,28 +201,12 @@ impl UpdateEncoder { self.set_surface(bitmap, codec_id, &buffer[..len]) } - fn none_update(&mut self, mut bitmap: BitmapUpdate) -> Result> { + fn none_update(&mut self, bitmap: BitmapUpdate) -> Result> { let stride = usize::from(bitmap.format.bytes_per_pixel()) * usize::from(bitmap.width.get()); - let data = match bitmap.order { - PixelOrder::BottomToTop => { - if stride == bitmap.stride { - mem::take(&mut bitmap.data) - } else { - let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); - for row in bitmap.data.chunks(bitmap.stride) { - data.extend_from_slice(&row[..stride]); - } - data - } - } - PixelOrder::TopToBottom => { - let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); - for row in bitmap.data.chunks(bitmap.stride).rev() { - data.extend_from_slice(&row[..stride]); - } - data - } - }; + let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); + for row in bitmap.data.chunks(bitmap.stride).rev() { + data.extend_from_slice(&row[..stride]); + } self.set_surface(bitmap, CodecId::None as u8, &data) } diff --git a/crates/ironrdp/examples/server.rs b/crates/ironrdp/examples/server.rs index 7d0453ce..c881e122 100644 --- a/crates/ironrdp/examples/server.rs +++ b/crates/ironrdp/examples/server.rs @@ -20,8 +20,8 @@ use ironrdp::server::tokio::sync::mpsc::UnboundedSender; use ironrdp::server::tokio::time::{self, sleep, Duration}; use ironrdp::server::{ tokio, BitmapUpdate, CliprdrServerFactory, Credentials, DisplayUpdate, KeyboardEvent, MouseEvent, PixelFormat, - PixelOrder, RdpServer, RdpServerDisplay, RdpServerDisplayUpdates, RdpServerInputHandler, ServerEvent, - ServerEventSender, SoundServerFactory, TlsIdentityCtx, + RdpServer, RdpServerDisplay, RdpServerDisplayUpdates, RdpServerInputHandler, ServerEvent, ServerEventSender, + SoundServerFactory, TlsIdentityCtx, }; use ironrdp_cliprdr_native::StubCliprdrBackend; use rand::prelude::*; @@ -183,7 +183,6 @@ impl RdpServerDisplayUpdates for DisplayUpdates { width, height, format: PixelFormat::BgrA32, - order: PixelOrder::TopToBottom, data, stride: usize::from(width.get()).checked_mul(4).unwrap(), }; From 7f578178056282e590179a10cd1eedb8f4d9ad63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 26 Feb 2025 23:11:31 +0400 Subject: [PATCH 0949/1273] feat(server): add stride debug info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/display.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index 9d4879e6..4eae9e66 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -79,6 +79,7 @@ impl core::fmt::Debug for BitmapUpdate { .field("width", &self.width) .field("height", &self.height) .field("format", &self.format) + .field("stride", &self.stride) .finish() } } From 3c43fdda76f4ef6413db4010471364d6b1be2798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 19:14:15 +0400 Subject: [PATCH 0950/1273] refactor(server)!: use bytes, allowing shareable bitmap data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- Cargo.lock | 1 + crates/ironrdp-bench/benches/bench.rs | 4 ++-- crates/ironrdp-server/Cargo.toml | 1 + crates/ironrdp-server/src/display.rs | 3 ++- crates/ironrdp/examples/server.rs | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47c30254..4fa0162a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2673,6 +2673,7 @@ version = "0.5.0" dependencies = [ "anyhow", "async-trait", + "bytes", "ironrdp-acceptor", "ironrdp-ainput", "ironrdp-async", diff --git a/crates/ironrdp-bench/benches/bench.rs b/crates/ironrdp-bench/benches/bench.rs index 5781a6e4..8fabf29e 100644 --- a/crates/ironrdp-bench/benches/bench.rs +++ b/crates/ironrdp-bench/benches/bench.rs @@ -15,7 +15,7 @@ pub fn rfx_enc_tile_bench(c: &mut Criterion) { width: NonZero::new(64).unwrap(), height: NonZero::new(64).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, - data: vec![0; 64 * 64 * 4], + data: vec![0; 64 * 64 * 4].into(), stride: 64 * 4, }; c.bench_function("rfx_enc_tile", |b| b.iter(|| rfx_enc_tile(&bitmap, &quant, algo, 0, 0))); @@ -30,7 +30,7 @@ pub fn rfx_enc_bench(c: &mut Criterion) { width: NonZero::new(2048).unwrap(), height: NonZero::new(2048).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, - data: vec![0; 2048 * 2048 * 4], + data: vec![0; 2048 * 2048 * 4].into(), stride: 64 * 4, }; c.bench_function("rfx_enc", |b| b.iter(|| rfx_enc(&bitmap, &quant, algo))); diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index aba6e3d3..e2a26728 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -45,6 +45,7 @@ tracing = { version = "0.1", features = ["log"] } x509-cert = { version = "0.2.5", optional = true } rustls-pemfile = { version = "2.2.0", optional = true } rayon = { version = "1.10.0", optional = true } +bytes = "1" [dev-dependencies] tokio = { version = "1", features = ["sync"] } diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index 4eae9e66..5f0912f3 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -1,6 +1,7 @@ use core::num::NonZeroU16; use anyhow::Result; +use bytes::Bytes; use ironrdp_displaycontrol::pdu::DisplayControlMonitorLayout; use ironrdp_pdu::pointer::PointerPositionAttribute; @@ -67,7 +68,7 @@ pub struct BitmapUpdate { pub width: NonZeroU16, pub height: NonZeroU16, pub format: PixelFormat, - pub data: Vec, + pub data: Bytes, pub stride: usize, } diff --git a/crates/ironrdp/examples/server.rs b/crates/ironrdp/examples/server.rs index c881e122..30729686 100644 --- a/crates/ironrdp/examples/server.rs +++ b/crates/ironrdp/examples/server.rs @@ -183,7 +183,7 @@ impl RdpServerDisplayUpdates for DisplayUpdates { width, height, format: PixelFormat::BgrA32, - data, + data: data.into(), stride: usize::from(width.get()).checked_mul(4).unwrap(), }; Some(DisplayUpdate::Bitmap(bitmap)) From 1e87961d1611ed31f58b407f208295c97c0d2944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 17 Mar 2025 14:07:23 +0400 Subject: [PATCH 0951/1273] feat(server): add Framebuffer helper struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will hold the updated bitmap data for the whole framebuffer. Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/display.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index 5f0912f3..22d502a6 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -1,7 +1,7 @@ use core::num::NonZeroU16; use anyhow::Result; -use bytes::Bytes; +use bytes::{Bytes, BytesMut}; use ironrdp_displaycontrol::pdu::DisplayControlMonitorLayout; use ironrdp_pdu::pointer::PointerPositionAttribute; @@ -56,6 +56,30 @@ pub struct ColorPointer { pub xor_mask: Vec, } +pub struct Framebuffer { + pub width: NonZeroU16, + pub height: NonZeroU16, + pub format: PixelFormat, + pub data: BytesMut, + pub stride: usize, +} + +impl TryInto for BitmapUpdate { + type Error = &'static str; + + fn try_into(self) -> Result { + assert_eq!(self.top, 0); + assert_eq!(self.left, 0); + Ok(Framebuffer { + width: self.width, + height: self.height, + format: self.format, + data: self.data.try_into_mut().map_err(|_| "BitmapUpdate is shared")?, + stride: self.stride, + }) + } +} + /// Bitmap Display Update /// /// Bitmap updates are encoded using RDP 6.0 compression, fragmented and sent using From 229070a43554927a01541052a819fe3fcd32a913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 23:40:13 +0400 Subject: [PATCH 0952/1273] refactor(server)!: rename left/top -> x/y MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is more idiomatic, and thus less confusing. Signed-off-by: Marc-André Lureau --- crates/ironrdp-bench/benches/bench.rs | 8 ++++---- crates/ironrdp-server/src/display.rs | 12 ++++++------ crates/ironrdp-server/src/encoder/bitmap.rs | 6 +++--- crates/ironrdp-server/src/encoder/mod.rs | 8 ++++---- crates/ironrdp/examples/server.rs | 14 +++++++------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/crates/ironrdp-bench/benches/bench.rs b/crates/ironrdp-bench/benches/bench.rs index 8fabf29e..1d8a3830 100644 --- a/crates/ironrdp-bench/benches/bench.rs +++ b/crates/ironrdp-bench/benches/bench.rs @@ -10,8 +10,8 @@ pub fn rfx_enc_tile_bench(c: &mut Criterion) { let quant = rfx::Quant::default(); let algo = rfx::EntropyAlgorithm::Rlgr3; let bitmap = BitmapUpdate { - top: 0, - left: 0, + x: 0, + y: 0, width: NonZero::new(64).unwrap(), height: NonZero::new(64).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, @@ -25,8 +25,8 @@ pub fn rfx_enc_bench(c: &mut Criterion) { let quant = rfx::Quant::default(); let algo = rfx::EntropyAlgorithm::Rlgr3; let bitmap = BitmapUpdate { - top: 0, - left: 0, + x: 0, + y: 0, width: NonZero::new(2048).unwrap(), height: NonZero::new(2048).unwrap(), format: ironrdp_server::PixelFormat::ARgb32, diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index 22d502a6..e70e4e19 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -68,8 +68,8 @@ impl TryInto for BitmapUpdate { type Error = &'static str; fn try_into(self) -> Result { - assert_eq!(self.top, 0); - assert_eq!(self.left, 0); + assert_eq!(self.x, 0); + assert_eq!(self.y, 0); Ok(Framebuffer { width: self.width, height: self.height, @@ -87,8 +87,8 @@ impl TryInto for BitmapUpdate { /// #[derive(Clone)] pub struct BitmapUpdate { - pub top: u16, - pub left: u16, + pub x: u16, + pub y: u16, pub width: NonZeroU16, pub height: NonZeroU16, pub format: PixelFormat, @@ -99,8 +99,8 @@ pub struct BitmapUpdate { impl core::fmt::Debug for BitmapUpdate { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("BitmapUpdate") - .field("top", &self.top) - .field("left", &self.left) + .field("x", &self.x) + .field("y", &self.y) .field("width", &self.width) .field("height", &self.height) .field("format", &self.format) diff --git a/crates/ironrdp-server/src/encoder/bitmap.rs b/crates/ironrdp-server/src/encoder/bitmap.rs index 1476f29c..71a1ec17 100644 --- a/crates/ironrdp-server/src/encoder/bitmap.rs +++ b/crates/ironrdp-server/src/encoder/bitmap.rs @@ -39,7 +39,7 @@ impl BitmapEncoder { for (i, chunk) in chunks.enumerate() { let height = chunk.len() / bitmap.stride; - let top = usize::from(bitmap.top) + i * chunk_height; + let top = usize::from(bitmap.y) + i * chunk_height; let encoder = BitmapStreamEncoder::new(usize::from(bitmap.width.get()), height); @@ -55,9 +55,9 @@ impl BitmapEncoder { let data = BitmapData { rectangle: InclusiveRectangle { - left: bitmap.left, + left: bitmap.x, top: u16::try_from(top).unwrap(), - right: bitmap.left + bitmap.width.get() - 1, + right: bitmap.x + bitmap.width.get() - 1, bottom: u16::try_from(top + height - 1).unwrap(), }, width: u16::from(bitmap.width), diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 6ac4079e..0aa675f9 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -158,10 +158,10 @@ impl UpdateEncoder { fn set_surface(&mut self, bitmap: BitmapUpdate, codec_id: u8, data: &[u8]) -> Result> { let destination = ExclusiveRectangle { - left: bitmap.left, - top: bitmap.top, - right: bitmap.left + bitmap.width.get(), - bottom: bitmap.top + bitmap.height.get(), + left: bitmap.x, + top: bitmap.y, + right: bitmap.x + bitmap.width.get(), + bottom: bitmap.y + bitmap.height.get(), }; let extended_bitmap_data = ExtendedBitmapDataPdu { bpp: bitmap.format.bytes_per_pixel() * 8, diff --git a/crates/ironrdp/examples/server.rs b/crates/ironrdp/examples/server.rs index 30729686..873158b5 100644 --- a/crates/ironrdp/examples/server.rs +++ b/crates/ironrdp/examples/server.rs @@ -159,10 +159,10 @@ impl RdpServerDisplayUpdates for DisplayUpdates { sleep(Duration::from_millis(100)).await; let mut rng = thread_rng(); - let top: u16 = rng.gen_range(0..HEIGHT); - let height = NonZeroU16::new(rng.gen_range(1..=HEIGHT.checked_sub(top).unwrap())).unwrap(); - let left: u16 = rng.gen_range(0..WIDTH); - let width = NonZeroU16::new(rng.gen_range(1..=WIDTH.checked_sub(left).unwrap())).unwrap(); + let y: u16 = rng.gen_range(0..HEIGHT); + let height = NonZeroU16::new(rng.gen_range(1..=HEIGHT.checked_sub(y).unwrap())).unwrap(); + let x: u16 = rng.gen_range(0..WIDTH); + let width = NonZeroU16::new(rng.gen_range(1..=WIDTH.checked_sub(x).unwrap())).unwrap(); let capacity = usize::from(width.get()) .checked_mul(usize::from(height.get())) .unwrap() @@ -176,10 +176,10 @@ impl RdpServerDisplayUpdates for DisplayUpdates { data.push(255); } - info!("get_update +{left}+{top} {width}x{height}"); + info!("get_update +{x}+{y} {width}x{height}"); let bitmap = BitmapUpdate { - top, - left, + x, + y, width, height, format: PixelFormat::BgrA32, From a76e84d45927d61e21c27abcfa31c4f0c7a17bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 26 Feb 2025 00:01:20 +0400 Subject: [PATCH 0953/1273] feat(server): add BitmapUpdate::sub() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/display.rs | 56 ++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/crates/ironrdp-server/src/display.rs b/crates/ironrdp-server/src/display.rs index e70e4e19..4101aedc 100644 --- a/crates/ironrdp-server/src/display.rs +++ b/crates/ironrdp-server/src/display.rs @@ -96,6 +96,62 @@ pub struct BitmapUpdate { pub stride: usize, } +impl BitmapUpdate { + /// Extracts a sub-region of the bitmap update. + /// + /// # Parameters + /// + /// - `x`: The x-coordinate of the top-left corner of the sub-region. + /// - `y`: The y-coordinate of the top-left corner of the sub-region. + /// - `width`: The width of the sub-region. + /// - `height`: The height of the sub-region. + /// + /// # Returns + /// + /// An `Option` containing a new `BitmapUpdate` representing the sub-region if the specified + /// dimensions are within the bounds of the original bitmap update, otherwise `None`. + /// + /// # Example + /// + /// ``` + /// # use core::num::NonZeroU16; + /// # use bytes::Bytes; + /// # use ironrdp_graphics::image_processing::PixelFormat; + /// # use ironrdp_server::BitmapUpdate; + /// let original = BitmapUpdate { + /// x: 0, + /// y: 0, + /// width: NonZeroU16::new(100).unwrap(), + /// height: NonZeroU16::new(100).unwrap(), + /// format: PixelFormat::ARgb32, + /// data: Bytes::from(vec![0; 40000]), + /// stride: 400, + /// }; + /// + /// let sub_region = original.sub(10, 10, NonZeroU16::new(50).unwrap(), NonZeroU16::new(50).unwrap()); + /// assert!(sub_region.is_some()); + /// ``` + #[must_use] + pub fn sub(&self, x: u16, y: u16, width: NonZeroU16, height: NonZeroU16) -> Option { + if x + width.get() > self.width.get() || y + height.get() > self.height.get() { + None + } else { + let bpp = usize::from(self.format.bytes_per_pixel()); + let start = usize::from(y) * self.stride + usize::from(x) * bpp; + let end = start + usize::from(height.get() - 1) * self.stride + usize::from(width.get()) * bpp; + Some(Self { + x: self.x + x, + y: self.y + y, + width, + height, + format: self.format, + data: self.data.slice(start..end), + stride: self.stride, + }) + } + } +} + impl core::fmt::Debug for BitmapUpdate { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("BitmapUpdate") From c2164716c32cd68e668b0b54aa5fee0cbaedc832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 3 Feb 2025 22:55:00 +0400 Subject: [PATCH 0954/1273] refactor(server): split UpdateEncoder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bitmap encoder dispatching code was becoming convoluted and the same struct was handling PduEncoding and various bitmap encoding handling. Instead, split UpdateEncoder in different types and concerns. Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/encoder/mod.rs | 214 +++++++++++++++-------- 1 file changed, 137 insertions(+), 77 deletions(-) diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 0aa675f9..f662f9b2 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -28,44 +28,25 @@ const MAX_FASTPATH_UPDATE_SIZE: usize = 16_374; const FASTPATH_HEADER_SIZE: usize = 6; pub(crate) struct UpdateEncoder { - buffer: Vec, - bitmap: BitmapEncoder, - remotefx: Option<(RfxEncoder, u8)>, - update: for<'a> fn(&'a mut UpdateEncoder, BitmapUpdate) -> Result>, + pdu_encoder: PduEncoder, + bitmap_updater: BitmapUpdater, } impl UpdateEncoder { pub(crate) fn new(surface_flags: CmdFlags, remotefx: Option<(EntropyBits, u8)>) -> Self { - let update = if !surface_flags.contains(CmdFlags::SET_SURFACE_BITS) { - Self::bitmap_update + let pdu_encoder = PduEncoder::new(); + let bitmap_updater = if !surface_flags.contains(CmdFlags::SET_SURFACE_BITS) { + BitmapUpdater::Bitmap(BitmapHandler::new()) } else if remotefx.is_some() { - Self::remotefx_update + let (algo, id) = remotefx.unwrap(); + BitmapUpdater::RemoteFx(RemoteFxHandler::new(algo, id)) } else { - Self::none_update + BitmapUpdater::None(NoneHandler) }; Self { - buffer: vec![0; 16384], - bitmap: BitmapEncoder::new(), - remotefx: remotefx.map(|(algo, id)| (RfxEncoder::new(algo), id)), - update, - } - } - - fn encode_pdu(&mut self, pdu: impl Encode) -> Result { - loop { - let mut cursor = WriteCursor::new(self.buffer.as_mut_slice()); - match pdu.encode(&mut cursor) { - Err(e) => match e.kind() { - ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { - self.buffer.resize(self.buffer.len() * 2, 0); - debug!("encoder buffer resized to: {}", self.buffer.len() * 2); - } - - _ => Err(e).context("PDU encode error")?, - }, - Ok(()) => return Ok(cursor.pos()), - } + pdu_encoder, + bitmap_updater, } } @@ -88,8 +69,8 @@ impl UpdateEncoder { xor_bpp: 32, color_pointer, }; - let len = self.encode_pdu(ptr)?; - Ok(UpdateFragmenter::new(UpdateCode::NewPointer, &self.buffer[..len])) + let buf = self.pdu_encoder.encode(ptr)?; + Ok(UpdateFragmenter::new(UpdateCode::NewPointer, buf)) } pub(crate) fn color_pointer(&mut self, ptr: ColorPointer) -> Result> { @@ -105,8 +86,8 @@ impl UpdateEncoder { xor_mask: &ptr.xor_mask, and_mask: &ptr.and_mask, }; - let len = self.encode_pdu(ptr)?; - Ok(UpdateFragmenter::new(UpdateCode::ColorPointer, &self.buffer[..len])) + let buf = self.pdu_encoder.encode(ptr)?; + Ok(UpdateFragmenter::new(UpdateCode::ColorPointer, buf)) } #[allow(clippy::unused_self)] @@ -120,31 +101,77 @@ impl UpdateEncoder { } pub(crate) fn pointer_position(&mut self, pos: PointerPositionAttribute) -> Result> { - let len = self.encode_pdu(pos)?; - Ok(UpdateFragmenter::new(UpdateCode::PositionPointer, &self.buffer[..len])) + let buf = self.pdu_encoder.encode(pos)?; + Ok(UpdateFragmenter::new(UpdateCode::PositionPointer, buf)) } pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result> { - let update = self.update; - - update(self, bitmap) + self.bitmap_updater.handle(bitmap, &mut self.pdu_encoder) } pub(crate) fn fragmenter_from_owned(&self, res: UpdateFragmenterOwned) -> UpdateFragmenter<'_> { UpdateFragmenter { code: res.code, index: res.index, - data: &self.buffer[0..res.len], + data: &self.pdu_encoder.buffer[0..res.len], } } +} - fn bitmap_update(&mut self, bitmap: BitmapUpdate) -> Result> { +enum BitmapUpdater { + None(NoneHandler), + Bitmap(BitmapHandler), + RemoteFx(RemoteFxHandler), +} + +impl BitmapUpdater { + fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + match self { + Self::None(up) => up.handle(bitmap, encoder), + Self::Bitmap(up) => up.handle(bitmap, encoder), + Self::RemoteFx(up) => up.handle(bitmap, encoder), + } + } +} + +trait BitmapUpdateHandler { + fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result>; +} + +struct NoneHandler; + +impl BitmapUpdateHandler for NoneHandler { + fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + let stride = usize::from(bitmap.format.bytes_per_pixel()) * usize::from(bitmap.width.get()); + let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); + for row in bitmap.data.chunks(bitmap.stride).rev() { + data.extend_from_slice(&row[..stride]); + } + + encoder.set_surface(bitmap, CodecId::None as u8, &data) + } +} + +struct BitmapHandler { + bitmap: BitmapEncoder, +} + +impl BitmapHandler { + fn new() -> Self { + Self { + bitmap: BitmapEncoder::new(), + } + } +} + +impl BitmapUpdateHandler for BitmapHandler { + fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { let len = loop { - match self.bitmap.encode(&bitmap, self.buffer.as_mut_slice()) { + match self.bitmap.encode(&bitmap, encoder.buffer.as_mut_slice()) { Err(e) => match e.kind() { ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { - self.buffer.resize(self.buffer.len() * 2, 0); - debug!("encoder buffer resized to: {}", self.buffer.len() * 2); + encoder.buffer.resize(encoder.buffer.len() * 2, 0); + debug!("encoder buffer resized to: {}", encoder.buffer.len() * 2); } _ => Err(e).context("bitmap encode error")?, @@ -153,7 +180,71 @@ impl UpdateEncoder { } }; - Ok(UpdateFragmenter::new(UpdateCode::Bitmap, &self.buffer[..len])) + Ok(UpdateFragmenter::new(UpdateCode::Bitmap, &encoder.buffer[..len])) + } +} + +struct RemoteFxHandler { + remotefx: RfxEncoder, + codec_id: u8, +} + +impl RemoteFxHandler { + fn new(algo: EntropyBits, codec_id: u8) -> Self { + Self { + remotefx: RfxEncoder::new(algo), + codec_id, + } + } +} + +impl BitmapUpdateHandler for RemoteFxHandler { + fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + let mut buffer = vec![0; bitmap.data.len()]; + let len = loop { + match self.remotefx.encode(&bitmap, buffer.as_mut_slice()) { + Err(e) => match e.kind() { + ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { + buffer.resize(buffer.len() * 2, 0); + debug!("encoder buffer resized to: {}", buffer.len() * 2); + } + + _ => Err(e).context("RemoteFX encode error")?, + }, + Ok(len) => break len, + } + }; + + encoder.set_surface(bitmap, self.codec_id, &buffer[..len]) + } +} + +struct PduEncoder { + buffer: Vec, +} + +impl PduEncoder { + fn new() -> Self { + Self { buffer: vec![0; 16384] } + } + + fn encode(&mut self, pdu: impl Encode) -> Result<&[u8]> { + let pos = loop { + let mut cursor = WriteCursor::new(self.buffer.as_mut_slice()); + match pdu.encode(&mut cursor) { + Err(e) => match e.kind() { + ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { + self.buffer.resize(self.buffer.len() * 2, 0); + debug!("encoder buffer resized to: {}", self.buffer.len() * 2); + } + + _ => Err(e).context("PDU encode error")?, + }, + Ok(()) => break cursor.pos(), + } + }; + + Ok(&self.buffer[..pos]) } fn set_surface(&mut self, bitmap: BitmapUpdate, codec_id: u8, data: &[u8]) -> Result> { @@ -176,39 +267,8 @@ impl UpdateEncoder { extended_bitmap_data, }; let cmd = SurfaceCommand::SetSurfaceBits(pdu); - let len = self.encode_pdu(cmd)?; - Ok(UpdateFragmenter::new(UpdateCode::SurfaceCommands, &self.buffer[..len])) - } - - fn remotefx_update(&mut self, bitmap: BitmapUpdate) -> Result> { - let (remotefx, codec_id) = self.remotefx.as_mut().unwrap(); - let codec_id = *codec_id; - let mut buffer = vec![0; bitmap.data.len()]; - let len = loop { - match remotefx.encode(&bitmap, buffer.as_mut_slice()) { - Err(e) => match e.kind() { - ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { - buffer.resize(buffer.len() * 2, 0); - debug!("encoder buffer resized to: {}", self.buffer.len() * 2); - } - - _ => Err(e).context("RemoteFX encode error")?, - }, - Ok(len) => break len, - } - }; - - self.set_surface(bitmap, codec_id, &buffer[..len]) - } - - fn none_update(&mut self, bitmap: BitmapUpdate) -> Result> { - let stride = usize::from(bitmap.format.bytes_per_pixel()) * usize::from(bitmap.width.get()); - let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); - for row in bitmap.data.chunks(bitmap.stride).rev() { - data.extend_from_slice(&row[..stride]); - } - - self.set_surface(bitmap, CodecId::None as u8, &data) + let buf = self.encode(cmd)?; + Ok(UpdateFragmenter::new(UpdateCode::SurfaceCommands, buf)) } } From 137d91ae7a096170ada289d420785c8f5de0663b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 12 Feb 2025 11:51:10 +0400 Subject: [PATCH 0955/1273] feat(server): implement some Encoder Debug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/encoder/mod.rs | 27 +++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index f662f9b2..926d6c9b 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -1,7 +1,7 @@ mod bitmap; pub(crate) mod rfx; -use core::cmp; +use core::{cmp, fmt}; use anyhow::{Context, Result}; use ironrdp_core::{Encode, WriteCursor}; @@ -32,6 +32,14 @@ pub(crate) struct UpdateEncoder { bitmap_updater: BitmapUpdater, } +impl fmt::Debug for UpdateEncoder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("UpdateEncoder") + .field("bitmap_update", &self.bitmap_updater) + .finish() + } +} + impl UpdateEncoder { pub(crate) fn new(surface_flags: CmdFlags, remotefx: Option<(EntropyBits, u8)>) -> Self { let pdu_encoder = PduEncoder::new(); @@ -118,6 +126,7 @@ impl UpdateEncoder { } } +#[derive(Debug)] enum BitmapUpdater { None(NoneHandler), Bitmap(BitmapHandler), @@ -138,6 +147,7 @@ trait BitmapUpdateHandler { fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result>; } +#[derive(Debug)] struct NoneHandler; impl BitmapUpdateHandler for NoneHandler { @@ -156,6 +166,12 @@ struct BitmapHandler { bitmap: BitmapEncoder, } +impl fmt::Debug for BitmapHandler { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("BitmapHandler").finish() + } +} + impl BitmapHandler { fn new() -> Self { Self { @@ -184,6 +200,7 @@ impl BitmapUpdateHandler for BitmapHandler { } } +#[derive(Debug)] struct RemoteFxHandler { remotefx: RfxEncoder, codec_id: u8, @@ -284,6 +301,14 @@ pub(crate) struct UpdateFragmenter<'a> { data: &'a [u8], } +impl fmt::Debug for UpdateFragmenter<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("UpdateFragmenter") + .field("len", &self.data.len()) + .finish() + } +} + impl<'a> UpdateFragmenter<'a> { pub(crate) fn new(code: UpdateCode, data: &'a [u8]) -> Self { Self { code, index: 0, data } From 9d86c28865b12dca9663da898568f516c9ae9e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 19 Feb 2025 17:28:40 +0400 Subject: [PATCH 0956/1273] refactor(server): pass bitmapUpdate by ref MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/encoder/mod.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 926d6c9b..26d8e424 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -114,7 +114,7 @@ impl UpdateEncoder { } pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result> { - self.bitmap_updater.handle(bitmap, &mut self.pdu_encoder) + self.bitmap_updater.handle(&bitmap, &mut self.pdu_encoder) } pub(crate) fn fragmenter_from_owned(&self, res: UpdateFragmenterOwned) -> UpdateFragmenter<'_> { @@ -134,7 +134,7 @@ enum BitmapUpdater { } impl BitmapUpdater { - fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { match self { Self::None(up) => up.handle(bitmap, encoder), Self::Bitmap(up) => up.handle(bitmap, encoder), @@ -144,20 +144,19 @@ impl BitmapUpdater { } trait BitmapUpdateHandler { - fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result>; + fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result>; } #[derive(Debug)] struct NoneHandler; impl BitmapUpdateHandler for NoneHandler { - fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { let stride = usize::from(bitmap.format.bytes_per_pixel()) * usize::from(bitmap.width.get()); let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); for row in bitmap.data.chunks(bitmap.stride).rev() { data.extend_from_slice(&row[..stride]); } - encoder.set_surface(bitmap, CodecId::None as u8, &data) } } @@ -181,9 +180,9 @@ impl BitmapHandler { } impl BitmapUpdateHandler for BitmapHandler { - fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { let len = loop { - match self.bitmap.encode(&bitmap, encoder.buffer.as_mut_slice()) { + match self.bitmap.encode(bitmap, encoder.buffer.as_mut_slice()) { Err(e) => match e.kind() { ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { encoder.buffer.resize(encoder.buffer.len() * 2, 0); @@ -216,10 +215,10 @@ impl RemoteFxHandler { } impl BitmapUpdateHandler for RemoteFxHandler { - fn handle<'a>(&mut self, bitmap: BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { let mut buffer = vec![0; bitmap.data.len()]; let len = loop { - match self.remotefx.encode(&bitmap, buffer.as_mut_slice()) { + match self.remotefx.encode(bitmap, buffer.as_mut_slice()) { Err(e) => match e.kind() { ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { buffer.resize(buffer.len() * 2, 0); @@ -264,7 +263,7 @@ impl PduEncoder { Ok(&self.buffer[..pos]) } - fn set_surface(&mut self, bitmap: BitmapUpdate, codec_id: u8, data: &[u8]) -> Result> { + fn set_surface(&mut self, bitmap: &BitmapUpdate, codec_id: u8, data: &[u8]) -> Result> { let destination = ExclusiveRectangle { left: bitmap.x, top: bitmap.y, From aeb1193674641846ae1873def8c84a62a59213d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 20 Feb 2025 13:42:06 +0400 Subject: [PATCH 0957/1273] feat(server): keep last full-frame/desktop update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It should reflect client drawing state. In following changes, we will fix it to draw bitmap updates on it, to keep it up to date. Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/encoder/mod.rs | 27 +++++++++++++++++++++--- crates/ironrdp-server/src/server.rs | 4 +++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 26d8e424..fffddea3 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -4,6 +4,7 @@ pub(crate) mod rfx; use core::{cmp, fmt}; use anyhow::{Context, Result}; +use ironrdp_acceptor::DesktopSize; use ironrdp_core::{Encode, WriteCursor}; use ironrdp_pdu::fast_path::{EncryptionFlags, FastPathHeader, FastPathUpdatePdu, Fragmentation, UpdateCode}; use ironrdp_pdu::geometry::ExclusiveRectangle; @@ -14,7 +15,7 @@ use ironrdp_pdu::surface_commands::{ExtendedBitmapDataPdu, SurfaceBitsPdu, Surfa use self::bitmap::BitmapEncoder; use self::rfx::RfxEncoder; use super::BitmapUpdate; -use crate::{ColorPointer, RGBAPointer}; +use crate::{ColorPointer, Framebuffer, RGBAPointer}; #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(u8)] @@ -28,6 +29,9 @@ const MAX_FASTPATH_UPDATE_SIZE: usize = 16_374; const FASTPATH_HEADER_SIZE: usize = 6; pub(crate) struct UpdateEncoder { + desktop_size: DesktopSize, + // FIXME: draw updates on the framebuffer + framebuffer: Option, pdu_encoder: PduEncoder, bitmap_updater: BitmapUpdater, } @@ -41,7 +45,7 @@ impl fmt::Debug for UpdateEncoder { } impl UpdateEncoder { - pub(crate) fn new(surface_flags: CmdFlags, remotefx: Option<(EntropyBits, u8)>) -> Self { + pub(crate) fn new(desktop_size: DesktopSize, surface_flags: CmdFlags, remotefx: Option<(EntropyBits, u8)>) -> Self { let pdu_encoder = PduEncoder::new(); let bitmap_updater = if !surface_flags.contains(CmdFlags::SET_SURFACE_BITS) { BitmapUpdater::Bitmap(BitmapHandler::new()) @@ -53,11 +57,17 @@ impl UpdateEncoder { }; Self { + desktop_size, + framebuffer: None, pdu_encoder, bitmap_updater, } } + pub(crate) fn set_desktop_size(&mut self, size: DesktopSize) { + self.desktop_size = size; + } + pub(crate) fn rgba_pointer(&mut self, ptr: RGBAPointer) -> Result> { let xor_mask = ptr.data; @@ -114,7 +124,18 @@ impl UpdateEncoder { } pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result> { - self.bitmap_updater.handle(&bitmap, &mut self.pdu_encoder) + let res = self.bitmap_updater.handle(&bitmap, &mut self.pdu_encoder); + if bitmap.x == 0 + && bitmap.y == 0 + && bitmap.width.get() == self.desktop_size.width + && bitmap.height.get() == self.desktop_size.height + { + match bitmap.try_into() { + Ok(framebuffer) => self.framebuffer = Some(framebuffer), + Err(err) => warn!("Failed to convert bitmap to framebuffer: {}", err), + } + } + res } pub(crate) fn fragmenter_from_owned(&self, res: UpdateFragmenterOwned) -> UpdateFragmenter<'_> { diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 854b0923..402dfa35 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -436,6 +436,7 @@ impl RdpServer { DisplayUpdate::PointerPosition(pos) => encoder.pointer_position(pos), DisplayUpdate::Resize(desktop_size) => { debug!(?desktop_size, "Display resize"); + encoder.set_desktop_size(desktop_size); deactivate_all(io_channel_id, user_channel_id, writer).await?; return Ok((RunState::DeactivationReactivation { desktop_size }, encoder)); } @@ -741,7 +742,8 @@ impl RdpServer { } } - let encoder = UpdateEncoder::new(surface_flags, rfxcodec); + let desktop_size = self.display.lock().await.size().await; + let encoder = UpdateEncoder::new(desktop_size, surface_flags, rfxcodec); let state = self .client_loop(reader, writer, result.io_channel_id, result.user_channel_id, encoder) From ba488f956c13538b37f1d3444afbbb2915ea37d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:38:24 -0400 Subject: [PATCH 0958/1273] build(deps): bump the patch group across 1 directory with 2 updates (#731) Bumps the patch group with 2 updates in the / directory: [image](https://github.com/image-rs/image) and [clap](https://github.com/clap-rs/clap). Updates `image` from 0.25.5 to 0.25.6
      Changelog

      Sourced from image's changelog.

      Version 0.25.6

      Features:

      Bug fixes:

      • JPEG encoding bugfix (#2387)
      • Expanded ICO format detection (#2434)
      • Fixed EXR bug with NaNs (#2381)
      • Various documentation improvements
      Commits

      Updates `clap` from 4.5.32 to 4.5.34
      Release notes

      Sourced from clap's releases.

      v4.5.34

      [4.5.34] - 2025-03-27

      Fixes

      • (help) Don't add extra blank lines with flatten_help(true) and subcommands without arguments

      v4.5.33

      [4.5.33] - 2025-03-26

      Fixes

      • (error) When showing the usage of a suggestion for an unknown argument, don't show the group
      Changelog

      Sourced from clap's changelog.

      [4.5.34] - 2025-03-27

      Fixes

      • (help) Don't add extra blank lines with flatten_help(true) and subcommands without arguments

      [4.5.33] - 2025-03-26

      Fixes

      • (error) When showing the usage of a suggestion for an unknown argument, don't show the group
      Commits
      • 5d2cdac chore: Release
      • f1c10eb docs: Update changelog
      • a4d1a7f chore(ci): Take a break from template updates
      • e95ed39 Merge pull request #5775 from vivienm/master
      • 18f8d4c chore(deps): Update Rust Stable to v1.82 (#5788)
      • f35d8e0 Merge pull request #5787 from epage/template
      • 1389d7d chore: Update from '_rust/main' template
      • dbc9faa chore(ci): Initialize git for template update
      • 3dac2f3 chore(ci): Get history for template update
      • e1f77da chore(ci): Fix branch for template update
      • Additional commits viewable in compare view

      Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
      Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 12 ++++++------ crates/ironrdp/Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4fa0162a..68a7f226 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -725,9 +725,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.32" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff" dependencies = [ "clap_builder", "clap_derive", @@ -735,9 +735,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.32" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489" dependencies = [ "anstream", "anstyle", @@ -2264,9 +2264,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.5" +version = "0.25.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" dependencies = [ "bytemuck", "byteorder-lite", diff --git a/crates/ironrdp/Cargo.toml b/crates/ironrdp/Cargo.toml index f05b6ac1..bd596bae 100644 --- a/crates/ironrdp/Cargo.toml +++ b/crates/ironrdp/Cargo.toml @@ -53,7 +53,7 @@ ironrdp-blocking = { path = "../ironrdp-blocking", version = "0.4.0" } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.2.0" } anyhow = "1" async-trait = "0.1" -image = { version = "0.25.5", default-features = false, features = ["png"] } +image = { version = "0.25.6", default-features = false, features = ["png"] } pico-args = "0.5" x509-cert = { version = "0.2", default-features = false, features = ["std"] } sspi = { version = "0.15", features = ["network_client"] } From 817abb9805ed80cac822694bf5097980e1d7007e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:38:50 -0400 Subject: [PATCH 0959/1273] build(deps): bump whoami from 1.5.2 to 1.6.0 (#732) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [whoami](https://github.com/ardaku/whoami) from 1.5.2 to 1.6.0.
      Release notes

      Sourced from whoami's releases.

      v1.6.0

      Changelog

      Added

      • Support for GNU/Hurd

      Changed

      • Removed comment about hostname being limited to ASCII due to Unicode hostnames being supported on Windows
      • More descriptive error messages on the web target

      Fixed

      • account() always returning username instead of user principal name on Windows
      • langs() now returns a list accurate to the POSIX locale spec
      • hostname() on Windows now returns PhysicalDnsHostname instead of NetBIOS
      • devicename(): Fixed reading escaped unix pretty names
      • Link error on Windows (in future Rust version)

      What's Changed

      New Contributors

      Full Changelog: https://github.com/ardaku/whoami/compare/v1.5.2...v1.6.0

      Changelog

      Sourced from whoami's changelog.

      [1.6.0] - 2025-03-23

      Added

      • Support for GNU/Hurd

      Changed

      • Removed comment about hostname being limited to ASCII due to Unicode hostnames being supported on Windows
      • More descriptive error messages on the web target

      Fixed

      • account() always returning username instead of user principal name on Windows
      • langs() now returns a list accurate to the POSIX locale spec
      • hostname() on Windows now returns PhysicalDnsHostname instead of NetBIOS
      • devicename(): Fixed reading escaped unix pretty names
      • Link error on Windows (in future Rust version)
      Commits
      • 8170882 Release v1.6.0 (#162)
      • 109da1c Backport v2->v1: Fix reading escaped unix pretty names (#178)
      • bc489c0 Version 1.6.0 pre.2 (#158)
      • 7aabbfa Add discriminants to ExtendedNameFormat enum (#156)
      • 7aba7a4 Backport v2 -> v1: Fix license link (#154)
      • d90a4f8 1.6.0-pre.1 and Backport v2 -> v1: Adjusts langs() to match POSIX locale spec...
      • a027097 Backport v2 -> v1: Improved error handling (#149)
      • d9df517 Backport v2 -> v1: Switch Windows hostname() to return `PhysicalDnsHostname...
      • 85933dc Backport v2 -> v1: Check more environment variables for language (#146)
      • ef86159 v1: Update wasm-bindgen to v0.2.89 (#138)
      • Additional commits viewable in compare view

      [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=whoami&package-manager=cargo&previous-version=1.5.2&new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
      Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- crates/ironrdp-client/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 68a7f226..23134168 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5842,9 +5842,9 @@ dependencies = [ [[package]] name = "whoami" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" dependencies = [ "redox_syscall 0.5.10", "wasite", diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index 4abed9f9..b1fbdc17 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -66,7 +66,7 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] } tokio = { version = "1", features = ["full"] } # Utils -whoami = "1.5" +whoami = "1.6" anyhow = "1" smallvec = "1.13" tap = "1" From 032c38be9229cfd35f0f6fc8eac5cccc960480d3 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lureau Date: Wed, 2 Apr 2025 22:59:02 +0400 Subject: [PATCH 0960/1273] feat(tokio): add reqwest feature (#734) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the client ReqwestNetworkClient to ironrdp-tokio, so other clients can optionally use the implementation. Signed-off-by: Marc-André Lureau --- Cargo.lock | 6 +++--- crates/ironrdp-async/src/lib.rs | 1 + crates/ironrdp-client/Cargo.toml | 13 ++++++------ crates/ironrdp-client/src/lib.rs | 1 - crates/ironrdp-client/src/rdp.rs | 3 ++- crates/ironrdp-tokio/Cargo.toml | 11 +++++++++- crates/ironrdp-tokio/src/lib.rs | 3 +++ .../src/reqwest.rs} | 21 +++++++++++++------ 8 files changed, 41 insertions(+), 18 deletions(-) rename crates/{ironrdp-client/src/network_client.rs => ironrdp-tokio/src/reqwest.rs} (89%) diff --git a/Cargo.lock b/Cargo.lock index 23134168..374cc231 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2432,16 +2432,13 @@ dependencies = [ "ironrdp-tokio", "proc-exit", "raw-window-handle", - "reqwest", "semver", "smallvec", "softbuffer", - "sspi", "tap", "tokio", "tracing", "tracing-subscriber", - "url", "uuid", "whoami", "windows 0.58.0", @@ -2783,7 +2780,10 @@ version = "0.3.0" dependencies = [ "bytes", "ironrdp-async", + "reqwest", + "sspi", "tokio", + "url", ] [[package]] diff --git a/crates/ironrdp-async/src/lib.rs b/crates/ironrdp-async/src/lib.rs index e2ed55cd..fb126fb0 100644 --- a/crates/ironrdp-async/src/lib.rs +++ b/crates/ironrdp-async/src/lib.rs @@ -13,6 +13,7 @@ mod session; use core::future::Future; use core::pin::Pin; +pub use ironrdp_connector; use ironrdp_connector::sspi::generator::NetworkRequest; use ironrdp_connector::ConnectorResult; diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index b1fbdc17..0bb015f7 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -40,14 +40,17 @@ ironrdp = { path = "../ironrdp", version = "0.9", features = [ "rdpsnd", "cliprdr", "displaycontrol", - "connector" + "connector", +] } +ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = [ + "alloc", ] } -ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.2" } ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.2" } ironrdp-tls = { path = "../ironrdp-tls", version = "0.1" } -ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.3" } -sspi = { version = "0.15", features = ["network_client", "dns_resolver"] } # TODO: enable additional features +ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.3", features = [ + "reqwest", +] } # Windowing and rendering winit = { version = "0.30", features = ["rwh_06"] } @@ -71,8 +74,6 @@ anyhow = "1" smallvec = "1.13" tap = "1" semver = "1" -reqwest = "0.12" -url = "2.5" raw-window-handle = "0.6" uuid = { version = "1.16" } diff --git a/crates/ironrdp-client/src/lib.rs b/crates/ironrdp-client/src/lib.rs index ba7c9897..0ae2115a 100644 --- a/crates/ironrdp-client/src/lib.rs +++ b/crates/ironrdp-client/src/lib.rs @@ -15,5 +15,4 @@ extern crate tracing; pub mod app; pub mod clipboard; pub mod config; -pub mod network_client; pub mod rdp; diff --git a/crates/ironrdp-client/src/rdp.rs b/crates/ironrdp-client/src/rdp.rs index fedd012e..5469e2aa 100644 --- a/crates/ironrdp-client/src/rdp.rs +++ b/crates/ironrdp-client/src/rdp.rs @@ -10,6 +10,7 @@ use ironrdp::session::{fast_path, ActiveStage, ActiveStageOutput, GracefulDiscon use ironrdp::{cliprdr, connector, rdpdr, rdpsnd, session}; use ironrdp_core::WriteBuf; use ironrdp_rdpsnd_native::cpal; +use ironrdp_tokio::reqwest::ReqwestNetworkClient; use ironrdp_tokio::{single_sequence_step_read, split_tokio_framed, FramedWrite}; use rdpdr::NoopRdpdrBackend; use smallvec::SmallVec; @@ -146,7 +147,7 @@ async fn connect( let mut upgraded_framed = ironrdp_tokio::TokioFramed::new(upgraded_stream); - let mut network_client = crate::network_client::ReqwestNetworkClient::new(); + let mut network_client = ReqwestNetworkClient::new(); let connection_result = ironrdp_tokio::connect_finalize( upgraded, &mut upgraded_framed, diff --git a/crates/ironrdp-tokio/Cargo.toml b/crates/ironrdp-tokio/Cargo.toml index 3991117a..afbf772a 100644 --- a/crates/ironrdp-tokio/Cargo.toml +++ b/crates/ironrdp-tokio/Cargo.toml @@ -15,11 +15,20 @@ categories.workspace = true doctest = false test = false +[features] +default = ["reqwest"] +reqwest = ["dep:reqwest", "dep:sspi", "dep:url"] + [dependencies] bytes = "1" ironrdp-async = { path = "../ironrdp-async", version = "0.4" } # public tokio = { version = "1", features = ["io-util"] } +reqwest = { version = "0.12", optional = true } +sspi = { version = "0.15", features = [ + "network_client", + "dns_resolver", +], optional = true } # TODO: enable additional features +url = { version = "2.5", optional = true } [lints] workspace = true - diff --git a/crates/ironrdp-tokio/src/lib.rs b/crates/ironrdp-tokio/src/lib.rs index ac55c679..bb52b31e 100644 --- a/crates/ironrdp-tokio/src/lib.rs +++ b/crates/ironrdp-tokio/src/lib.rs @@ -4,6 +4,9 @@ #[rustfmt::skip] // do not re-order this pub use pub use ironrdp_async::*; +#[cfg(feature = "reqwest")] +pub mod reqwest; + use core::pin::Pin; use std::io; diff --git a/crates/ironrdp-client/src/network_client.rs b/crates/ironrdp-tokio/src/reqwest.rs similarity index 89% rename from crates/ironrdp-client/src/network_client.rs rename to crates/ironrdp-tokio/src/reqwest.rs index be0815fa..5d2f2b74 100644 --- a/crates/ironrdp-client/src/network_client.rs +++ b/crates/ironrdp-tokio/src/reqwest.rs @@ -2,15 +2,16 @@ use core::future::Future; use core::pin::Pin; use std::net::{IpAddr, Ipv4Addr}; -use ironrdp::connector::{custom_err, ConnectorResult}; -use ironrdp_tokio::AsyncNetworkClient; +use ironrdp_async::ironrdp_connector::{custom_err, ConnectorResult}; use reqwest::Client; use sspi::{Error, ErrorKind}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::{TcpStream, UdpSocket}; use url::Url; -pub(crate) struct ReqwestNetworkClient { +use crate::AsyncNetworkClient; + +pub struct ReqwestNetworkClient { client: Option, } @@ -32,11 +33,17 @@ impl AsyncNetworkClient for ReqwestNetworkClient { } impl ReqwestNetworkClient { - pub(crate) fn new() -> Self { + pub fn new() -> Self { Self { client: None } } } +impl Default for ReqwestNetworkClient { + fn default() -> Self { + Self::new() + } +} + impl ReqwestNetworkClient { async fn send_tcp(&self, url: &Url, data: &[u8]) -> ConnectorResult> { let addr = format!("{}:{}", url.host_str().unwrap_or_default(), url.port().unwrap_or(88)); @@ -89,10 +96,12 @@ impl ReqwestNetworkClient { .recv(&mut buf) .await .map_err(|e| custom_err!("failed to receive UDP request", e))?; + let buf = &buf[0..n]; let mut reply_buf = Vec::with_capacity(n + 4); - reply_buf.extend_from_slice(&(n as u32).to_be_bytes()); - reply_buf.extend_from_slice(&buf[0..n]); + let n = u32::try_from(n).map_err(|e| custom_err!("invalid length", e))?; + reply_buf.extend_from_slice(&n.to_be_bytes()); + reply_buf.extend_from_slice(buf); Ok(reply_buf) } From abcc42e01fda3ce9c8e1739524e0fc73b8778d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 15:09:19 +0400 Subject: [PATCH 0961/1273] fix(rdpsnd): correct TrainingPdu wPackSize field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpsnd/src/pdu/mod.rs | 19 ++++++++++++++++--- .../tests/rdpsnd/mod.rs | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/crates/ironrdp-rdpsnd/src/pdu/mod.rs b/crates/ironrdp-rdpsnd/src/pdu/mod.rs index 6ea13cdf..b2d45e58 100644 --- a/crates/ironrdp-rdpsnd/src/pdu/mod.rs +++ b/crates/ironrdp-rdpsnd/src/pdu/mod.rs @@ -599,7 +599,12 @@ impl Encode for TrainingPdu { ensure_size!(in: dst, size: self.size()); dst.write_u16(self.timestamp); - dst.write_u16(cast_length!("TrainingPdu::wPackSize", self.data.len())?); + let len = if self.data.is_empty() { + 0 + } else { + self.size() + ServerAudioOutputPdu::FIXED_PART_SIZE + }; + dst.write_u16(cast_length!("TrainingPdu::wPackSize", len)?); dst.write_slice(&self.data); Ok(()) @@ -622,8 +627,16 @@ impl<'de> Decode<'de> for TrainingPdu { let timestamp = src.read_u16(); let len = src.read_u16() as usize; - ensure_size!(in: src, size: len); - let data = src.read_slice(len).into(); + let data = if len != 0 { + if len < Self::FIXED_PART_SIZE + ServerAudioOutputPdu::FIXED_PART_SIZE { + return Err(invalid_field_err!("TrainingPdu::wPackSize", "too small")); + } + let len = len - Self::FIXED_PART_SIZE - ServerAudioOutputPdu::FIXED_PART_SIZE; + ensure_size!(in: src, size: len); + src.read_slice(len).into() + } else { + Vec::new() + }; Ok(Self { timestamp, data }) } diff --git a/crates/ironrdp-testsuite-core/tests/rdpsnd/mod.rs b/crates/ironrdp-testsuite-core/tests/rdpsnd/mod.rs index 44f14ec7..a175e100 100644 --- a/crates/ironrdp-testsuite-core/tests/rdpsnd/mod.rs +++ b/crates/ironrdp-testsuite-core/tests/rdpsnd/mod.rs @@ -148,7 +148,7 @@ encode_decode_test! { data: vec![0x42], }), [ - 0x06, 0x00, 0x05, 0x00, 0xda, 0x89, 0x01, 0x00, 0x42 + 0x06, 0x00, 0x05, 0x00, 0xda, 0x89, 0x09, 0x00, 0x42 ]; training_confirm: pdu::ClientAudioOutputPdu::TrainingConfirm(pdu::TrainingConfirmPdu { timestamp: 0x89da, From 5dcc526f513e8083ff335cad3cc80d2effeb7265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 15:10:41 +0400 Subject: [PATCH 0962/1273] fix(rdpsnd): reply to TrainingPdu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpsnd/src/client.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index 65733f06..f02e861a 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -193,6 +193,7 @@ impl SvcProcessor for Rdpsnd { pdu::ServerAudioOutputPdu::Close => { self.handler.close(); } + pdu::ServerAudioOutputPdu::Training(pdu) => return Ok(self.training_confirm(&pdu)?.into()), _ => { error!("Invalid PDU"); self.state = RdpsndState::Stop; From 9f0edcc4c9c49d59cc10de37f920aae073e3dd8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 14:19:07 +0400 Subject: [PATCH 0963/1273] feat(client): Add no_audio_playback flag to Config struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable audio playback on the client. Signed-off-by: Marc-André Lureau --- crates/ironrdp-client/src/config.rs | 1 + crates/ironrdp-connector/src/connection.rs | 5 ++++- crates/ironrdp-connector/src/lib.rs | 3 +++ crates/ironrdp-testsuite-extra/tests/tests.rs | 1 + crates/ironrdp-web/src/session.rs | 1 + crates/ironrdp/examples/screenshot.rs | 1 + ffi/src/connector/config.rs | 2 ++ 7 files changed, 13 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-client/src/config.rs b/crates/ironrdp-client/src/config.rs index f0df86f8..21a10d9f 100644 --- a/crates/ironrdp-client/src/config.rs +++ b/crates/ironrdp-client/src/config.rs @@ -320,6 +320,7 @@ impl Config { license_cache: None, no_server_pointer: args.no_server_pointer, autologon: args.autologon, + no_audio_playback: false, request_data: None, pointer_software_rendering: true, performance_flags: PerformanceFlags::default(), diff --git a/crates/ironrdp-connector/src/connection.rs b/crates/ironrdp-connector/src/connection.rs index 355673b2..cd3ef692 100644 --- a/crates/ironrdp-connector/src/connection.rs +++ b/crates/ironrdp-connector/src/connection.rs @@ -729,7 +729,6 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl | ClientInfoFlags::DISABLE_CTRL_ALT_DEL | ClientInfoFlags::LOGON_NOTIFY | ClientInfoFlags::LOGON_ERRORS - | ClientInfoFlags::NO_AUDIO_PLAYBACK | ClientInfoFlags::VIDEO_DISABLE | ClientInfoFlags::ENABLE_WINDOWS_KEY | ClientInfoFlags::MAXIMIZE_SHELL; @@ -742,6 +741,10 @@ fn create_client_info_pdu(config: &Config, routing_addr: &SocketAddr) -> rdp::Cl flags |= ClientInfoFlags::PASSWORD_IS_SC_PIN; } + if config.no_audio_playback { + flags |= ClientInfoFlags::NO_AUDIO_PLAYBACK; + } + let client_info = ClientInfo { credentials: Credentials { username: config.credentials.username().unwrap_or("").to_owned(), diff --git a/crates/ironrdp-connector/src/lib.rs b/crates/ironrdp-connector/src/lib.rs index 93c3cf0a..66679be8 100644 --- a/crates/ironrdp-connector/src/lib.rs +++ b/crates/ironrdp-connector/src/lib.rs @@ -177,6 +177,9 @@ pub struct Config { pub request_data: Option, /// If true, the INFO_AUTOLOGON flag is set in the [`ClientInfoPdu`](ironrdp_pdu::rdp::ClientInfoPdu) pub autologon: bool, + /// If true, the INFO_NOAUDIOPLAYBACK flag is set in the [`ClientInfoPdu`](ironrdp_pdu::rdp::ClientInfoPdu) + pub no_audio_playback: bool, + pub license_cache: Option>, // FIXME(@CBenoit): these are client-only options, not part of the connector. diff --git a/crates/ironrdp-testsuite-extra/tests/tests.rs b/crates/ironrdp-testsuite-extra/tests/tests.rs index d041b6f6..32b33c54 100644 --- a/crates/ironrdp-testsuite-extra/tests/tests.rs +++ b/crates/ironrdp-testsuite-extra/tests/tests.rs @@ -296,6 +296,7 @@ fn default_client_config() -> connector::Config { hardware_id: None, request_data: None, autologon: false, + no_audio_playback: false, license_cache: None, no_server_pointer: true, pointer_software_rendering: true, diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index 65251817..aaa82f70 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -860,6 +860,7 @@ fn build_config( platform: ironrdp::pdu::rdp::capability_sets::MajorPlatformType::UNSPECIFIED, no_server_pointer: false, autologon: false, + no_audio_playback: true, request_data: None, pointer_software_rendering: false, performance_flags: PerformanceFlags::default(), diff --git a/crates/ironrdp/examples/screenshot.rs b/crates/ironrdp/examples/screenshot.rs index 3852dd89..8c0c7e99 100644 --- a/crates/ironrdp/examples/screenshot.rs +++ b/crates/ironrdp/examples/screenshot.rs @@ -209,6 +209,7 @@ fn build_config(username: String, password: String, domain: Option) -> c no_server_pointer: true, request_data: None, autologon: false, + no_audio_playback: true, pointer_software_rendering: true, performance_flags: PerformanceFlags::default(), desktop_scale_factor: 0, diff --git a/ffi/src/connector/config.rs b/ffi/src/connector/config.rs index 6888339b..3c2113a1 100644 --- a/ffi/src/connector/config.rs +++ b/ffi/src/connector/config.rs @@ -39,6 +39,7 @@ pub mod ffi { pub platform: Option, pub no_server_pointer: Option, pub autologon: Option, + pub no_audio_playback: Option, pub pointer_software_rendering: Option, pub performance_flags: Option, } @@ -192,6 +193,7 @@ pub mod ffi { no_server_pointer: self.no_server_pointer.unwrap_or(false), autologon: self.autologon.unwrap_or(false), + no_audio_playback: self.no_audio_playback.unwrap_or(false), request_data: None, pointer_software_rendering: self.pointer_software_rendering.unwrap_or(false), performance_flags: self.performance_flags.ok_or("performance flag is missing")?, From 7507a152f14db594e4067bbc01e243cfba77770f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 3 Apr 2025 00:19:04 +0400 Subject: [PATCH 0964/1273] fix(session): return the correct updated region MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "update_rectangle" is set to empty(). The surface updates are then added by "union". But a union with an empty rectangle at (0,0) is still a rectangle at (0,0). We end up with big region updates rooted at (0,0)... Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/fast_path.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index e38a7986..e22fc1d6 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -310,7 +310,7 @@ impl Processor { output: &mut WriteBuf, surface_commands: Vec>, ) -> SessionResult { - let mut update_rectangle = InclusiveRectangle::empty(); + let mut update_rectangle = None; for command in surface_commands { match command { @@ -343,7 +343,9 @@ impl Processor { 32 => { let rectangle = image.apply_rgb32_bitmap(ext_data.data, PixelFormat::BgrX32, &destination)?; - update_rectangle = update_rectangle.union(&rectangle); + update_rectangle = update_rectangle + .map(|rect: InclusiveRectangle| rect.union(&rectangle)) + .or(Some(rectangle)); } bpp => { warn!("Unsupported bpp: {bpp}") @@ -354,7 +356,9 @@ impl Processor { let mut data = ReadCursor::new(bits.extended_bitmap_data.data); while !data.is_empty() { let (_frame_id, rectangle) = self.rfx_handler.decode(image, &destination, &mut data)?; - update_rectangle = update_rectangle.union(&rectangle); + update_rectangle = update_rectangle + .map(|rect: InclusiveRectangle| rect.union(&rectangle)) + .or(Some(rectangle)); } } } @@ -370,7 +374,7 @@ impl Processor { } } - Ok(update_rectangle) + Ok(update_rectangle.unwrap_or_else(InclusiveRectangle::empty)) } } From 45f66117ba05170d95b21ec7d97017b44b954f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 2 Apr 2025 11:35:31 +0400 Subject: [PATCH 0965/1273] feat(session)!: make DecodedImage Send MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow to share it between different threads. Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/active_stage.rs | 4 ++-- crates/ironrdp-session/src/fast_path.rs | 24 +++++++++++----------- crates/ironrdp-session/src/image.rs | 9 +++++--- crates/ironrdp-session/src/pointer.rs | 8 ++++---- ffi/src/graphics.rs | 4 ++-- ffi/src/session/mod.rs | 2 +- 6 files changed, 27 insertions(+), 24 deletions(-) diff --git a/crates/ironrdp-session/src/active_stage.rs b/crates/ironrdp-session/src/active_stage.rs index a010afa3..50a7fd04 100644 --- a/crates/ironrdp-session/src/active_stage.rs +++ b/crates/ironrdp-session/src/active_stage.rs @@ -1,4 +1,4 @@ -use std::rc::Rc; +use std::sync::Arc; use ironrdp_connector::connection_activation::ConnectionActivationSequence; use ironrdp_connector::ConnectionResult; @@ -254,7 +254,7 @@ pub enum ActiveStageOutput { PointerDefault, PointerHidden, PointerPosition { x: u16, y: u16 }, - PointerBitmap(Rc), + PointerBitmap(Arc), Terminate(GracefulDisconnectReason), DeactivateAll(Box), } diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index e22fc1d6..d6262c6d 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -1,4 +1,4 @@ -use std::rc::Rc; +use std::sync::Arc; use ironrdp_core::{decode_cursor, DecodeErrorKind, ReadCursor, WriteBuf}; use ironrdp_graphics::image_processing::PixelFormat; @@ -24,7 +24,7 @@ pub enum UpdateKind { PointerDefault, PointerHidden, PointerPosition { x: u16, y: u16 }, - PointerBitmap(Rc), + PointerBitmap(Arc), } pub struct Processor { @@ -216,17 +216,17 @@ impl Processor { PointerUpdateData::Color(pointer) => { let cache_index = pointer.cache_index; - let decoded_pointer = Rc::new( + let decoded_pointer = Arc::new( DecodedPointer::decode_color_pointer_attribute(&pointer, bitmap_target) .expect("Failed to decode color pointer attribute"), ); let _ = self .pointer_cache - .insert(usize::from(cache_index), Rc::clone(&decoded_pointer)); + .insert(usize::from(cache_index), Arc::clone(&decoded_pointer)); if !self.pointer_software_rendering { - processor_updates.push(UpdateKind::PointerBitmap(Rc::clone(&decoded_pointer))); + processor_updates.push(UpdateKind::PointerBitmap(Arc::clone(&decoded_pointer))); } else if let Some(rect) = image.update_pointer(decoded_pointer)? { processor_updates.push(UpdateKind::Region(rect)); } @@ -240,7 +240,7 @@ impl Processor { self.use_system_pointer = false; // Send graphics update if !self.pointer_software_rendering { - processor_updates.push(UpdateKind::PointerBitmap(Rc::clone(&cached_pointer))); + processor_updates.push(UpdateKind::PointerBitmap(Arc::clone(&cached_pointer))); } else if let Some(rect) = image.update_pointer(cached_pointer)? { processor_updates.push(UpdateKind::Region(rect)); } else { @@ -256,17 +256,17 @@ impl Processor { PointerUpdateData::New(pointer) => { let cache_index = pointer.color_pointer.cache_index; - let decoded_pointer = Rc::new( + let decoded_pointer = Arc::new( DecodedPointer::decode_pointer_attribute(&pointer, bitmap_target) .expect("Failed to decode pointer attribute"), ); let _ = self .pointer_cache - .insert(usize::from(cache_index), Rc::clone(&decoded_pointer)); + .insert(usize::from(cache_index), Arc::clone(&decoded_pointer)); if !self.pointer_software_rendering { - processor_updates.push(UpdateKind::PointerBitmap(Rc::clone(&decoded_pointer))); + processor_updates.push(UpdateKind::PointerBitmap(Arc::clone(&decoded_pointer))); } else if let Some(rect) = image.update_pointer(decoded_pointer)? { processor_updates.push(UpdateKind::Region(rect)); } @@ -274,17 +274,17 @@ impl Processor { PointerUpdateData::Large(pointer) => { let cache_index = pointer.cache_index; - let decoded_pointer: Rc = Rc::new( + let decoded_pointer: Arc = Arc::new( DecodedPointer::decode_large_pointer_attribute(&pointer, bitmap_target) .expect("Failed to decode large pointer attribute"), ); let _ = self .pointer_cache - .insert(usize::from(cache_index), Rc::clone(&decoded_pointer)); + .insert(usize::from(cache_index), Arc::clone(&decoded_pointer)); if !self.pointer_software_rendering { - processor_updates.push(UpdateKind::PointerBitmap(Rc::clone(&decoded_pointer))); + processor_updates.push(UpdateKind::PointerBitmap(Arc::clone(&decoded_pointer))); } else if let Some(rect) = image.update_pointer(decoded_pointer)? { processor_updates.push(UpdateKind::Region(rect)); } diff --git a/crates/ironrdp-session/src/image.rs b/crates/ironrdp-session/src/image.rs index a552c263..b2ae0244 100644 --- a/crates/ironrdp-session/src/image.rs +++ b/crates/ironrdp-session/src/image.rs @@ -1,5 +1,6 @@ -use std::rc::Rc; +use std::sync::Arc; +use ironrdp_core::assert_impl; use ironrdp_graphics::color_conversion::rdp_16bit_to_rgb; use ironrdp_graphics::image_processing::{ImageRegion, ImageRegionMut, PixelFormat}; use ironrdp_graphics::pointer::DecodedPointer; @@ -24,7 +25,7 @@ pub struct DecodedImage { pointer_x: u16, pointer_y: u16, - pointer: Option>, + pointer: Option>, /// Image data, overridden by pointer. Used to restore image after pointer was hidden or moved pointer_backbuffer: Vec, /// Whether to show pointer or not @@ -36,6 +37,8 @@ pub struct DecodedImage { height: u16, } +assert_impl!(DecodedImage: Send); + impl core::fmt::Debug for DecodedImage { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("DecodedImage") @@ -384,7 +387,7 @@ impl DecodedImage { } } - pub(crate) fn update_pointer(&mut self, pointer: Rc) -> SessionResult> { + pub(crate) fn update_pointer(&mut self, pointer: Arc) -> SessionResult> { self.show_pointer = true; // Remove old pointer from frame buffer diff --git a/crates/ironrdp-session/src/pointer.rs b/crates/ironrdp-session/src/pointer.rs index 8266aafc..192ae2fa 100644 --- a/crates/ironrdp-session/src/pointer.rs +++ b/crates/ironrdp-session/src/pointer.rs @@ -1,20 +1,20 @@ use std::collections::HashMap; -use std::rc::Rc; +use std::sync::Arc; use ironrdp_graphics::pointer::DecodedPointer; #[derive(Debug, Clone, Default)] pub struct PointerCache { // TODO(@pacancoder) maybe use Vec> instead? - cache: HashMap>, + cache: HashMap>, } impl PointerCache { - pub fn insert(&mut self, id: usize, pointer: Rc) -> Option> { + pub fn insert(&mut self, id: usize, pointer: Arc) -> Option> { self.cache.insert(id, pointer) } - pub fn get(&self, id: usize) -> Option> { + pub fn get(&self, id: usize) -> Option> { self.cache.get(&id).cloned() } diff --git a/ffi/src/graphics.rs b/ffi/src/graphics.rs index 24a7f59a..548cd012 100644 --- a/ffi/src/graphics.rs +++ b/ffi/src/graphics.rs @@ -1,11 +1,11 @@ #[diplomat::bridge] pub mod ffi { - use std::rc::Rc; + use std::sync::Arc; use crate::utils::ffi::BytesSlice; #[diplomat::opaque] - pub struct DecodedPointer(pub Rc); + pub struct DecodedPointer(pub Arc); impl DecodedPointer { pub fn get_width(&self) -> u16 { diff --git a/ffi/src/session/mod.rs b/ffi/src/session/mod.rs index 3505fcc7..2e5404db 100644 --- a/ffi/src/session/mod.rs +++ b/ffi/src/session/mod.rs @@ -225,7 +225,7 @@ pub mod ffi { pub fn get_pointer_bitmap(&self) -> Result, Box> { match &self.0 { ironrdp::session::ActiveStageOutput::PointerBitmap(decoded_pointer) => { - Ok(DecodedPointer(std::rc::Rc::clone(decoded_pointer))) + Ok(DecodedPointer(std::sync::Arc::clone(decoded_pointer))) } _ => Err(IncorrectEnumTypeError::on_variant("PointerBitmap") .of_enum("ActiveStageOutput") From cd7a60ba45a0241be4ecf3860ec4f82b431a7ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 2 Apr 2025 12:26:18 +0400 Subject: [PATCH 0966/1273] feat(session): add DecodeImage helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Having a helper to take the slice of updated region data is generally helpful. Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/image.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/crates/ironrdp-session/src/image.rs b/crates/ironrdp-session/src/image.rs index b2ae0244..9a5bed9c 100644 --- a/crates/ironrdp-session/src/image.rs +++ b/crates/ironrdp-session/src/image.rs @@ -175,6 +175,21 @@ impl DecodedImage { self.width } + pub fn bytes_per_pixel(&self) -> usize { + usize::from(self.pixel_format.bytes_per_pixel()) + } + + pub fn stride(&self) -> usize { + usize::from(self.width) * self.bytes_per_pixel() + } + + pub fn data_for_rect(&self, rect: &InclusiveRectangle) -> &[u8] { + let start = usize::from(rect.left) * self.bytes_per_pixel() + usize::from(rect.top) * self.stride(); + let end = + start + usize::from(rect.height() - 1) * self.stride() + usize::from(rect.width()) * self.bytes_per_pixel(); + &self.data[start..end] + } + pub fn height(&self) -> u16 { self.height } From e70e7e2c5f4e3844e0d4135efb4b7b3d71f01c38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 08:38:53 -0400 Subject: [PATCH 0967/1273] build(deps): bump smallvec from 1.14.0 to 1.15.0 (#739) --- Cargo.lock | 4 ++-- crates/ironrdp-client/Cargo.toml | 2 +- crates/ironrdp-input/Cargo.toml | 2 +- crates/ironrdp-web/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 374cc231..0d306b18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4825,9 +4825,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "smithay-client-toolkit" diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index 0bb015f7..a8c65b0e 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -71,7 +71,7 @@ tokio = { version = "1", features = ["full"] } # Utils whoami = "1.6" anyhow = "1" -smallvec = "1.13" +smallvec = "1.15" tap = "1" semver = "1" raw-window-handle = "0.6" diff --git a/crates/ironrdp-input/Cargo.toml b/crates/ironrdp-input/Cargo.toml index 90d3f4d2..dd8e60a8 100644 --- a/crates/ironrdp-input/Cargo.toml +++ b/crates/ironrdp-input/Cargo.toml @@ -18,7 +18,7 @@ test = false [dependencies] ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.4" } # public bitvec = "1.0" -smallvec = "1.13" +smallvec = "1.15" [lints] workspace = true diff --git a/crates/ironrdp-web/Cargo.toml b/crates/ironrdp-web/Cargo.toml index 2d8d8232..c3ae62ce 100644 --- a/crates/ironrdp-web/Cargo.toml +++ b/crates/ironrdp-web/Cargo.toml @@ -74,7 +74,7 @@ tracing-subscriber = { version = "0.3", features = ["time"] } # Utils anyhow = "1" -smallvec = "1.13" +smallvec = "1.15" x509-cert = { version = "0.2", default-features = false, features = ["std"] } tap = "1" semver = "1" From 1df0737b0d5df8137536e42bfd3ab765cbe08ce7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:55:21 +0000 Subject: [PATCH 0968/1273] build(deps): bump the patch group across 1 directory with 2 updates (#738) --- Cargo.lock | 12 ++++++------ crates/ironrdp-tls/Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d306b18..09bd1998 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -725,9 +725,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.34" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", @@ -735,9 +735,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.34" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", @@ -5245,9 +5245,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.44.1" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", diff --git a/crates/ironrdp-tls/Cargo.toml b/crates/ironrdp-tls/Cargo.toml index c1c694ed..1a8c2bb9 100644 --- a/crates/ironrdp-tls/Cargo.toml +++ b/crates/ironrdp-tls/Cargo.toml @@ -22,7 +22,7 @@ native-tls = ["dep:tokio-native-tls", "dep:x509-cert", "tokio/io-util"] stub = [] [dependencies] -tokio = { version = "1.43" } +tokio = { version = "1.44" } x509-cert = { version = "0.2", default-features = false, features = ["std"], optional = true } tokio-native-tls = { version = "0.3", optional = true } # public tokio-rustls = { version = "0.26", optional = true } # public From b31b99eafb0aac2a5e5a610af21a4027ae5cd698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 16:53:45 +0400 Subject: [PATCH 0969/1273] fix(session): decrease verbosity of Rfx frame_index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/rfx.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ironrdp-session/src/rfx.rs b/crates/ironrdp-session/src/rfx.rs index ef870065..16e808f5 100644 --- a/crates/ironrdp-session/src/rfx.rs +++ b/crates/ironrdp-session/src/rfx.rs @@ -137,7 +137,7 @@ impl DecodingContext { } let region = region; - debug!(frame_index = frame_begin.index); + trace!(frame_index = frame_begin.index); trace!(destination_rectangle = ?destination); trace!(context = ?self.context); trace!(channels = ?self.channels); From f9b6992e74abb929f3001e76abaff5d7215e1cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 16:54:33 +0400 Subject: [PATCH 0970/1273] fix(session): decrease verbosity of FastPath header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-session/src/fast_path.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index d6262c6d..fb0e1ea2 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -62,7 +62,7 @@ impl Processor { let mut input = ReadCursor::new(input); let header = decode_cursor::(&mut input).map_err(SessionError::decode)?; - debug!(fast_path_header = ?header, "Received Fast-Path packet"); + trace!(fast_path_header = ?header, "Received Fast-Path packet"); let update_pdu = decode_cursor::>(&mut input).map_err(SessionError::decode)?; trace!(fast_path_update_fragmentation = ?update_pdu.fragmentation); From 5e78f917132a174bdd5d8711beb1744de1bd265a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 16:55:47 +0400 Subject: [PATCH 0971/1273] feat(rdpdr): add USER_LOGGEDON flag support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As I was debugging some related issue, I implemented that. It may become useful some day. Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpdr/src/lib.rs | 1 + crates/ironrdp-rdpdr/src/pdu/efs.rs | 4 +++- crates/ironrdp-rdpdr/src/pdu/mod.rs | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-rdpdr/src/lib.rs b/crates/ironrdp-rdpdr/src/lib.rs index 57e6b1f9..044d620f 100644 --- a/crates/ironrdp-rdpdr/src/lib.rs +++ b/crates/ironrdp-rdpdr/src/lib.rs @@ -207,6 +207,7 @@ impl SvcProcessor for Rdpdr { } RdpdrPdu::ServerDeviceAnnounceResponse(pdu) => self.handle_server_device_announce_response(pdu), RdpdrPdu::DeviceIoRequest(pdu) => self.handle_device_io_request(pdu, &mut src), + RdpdrPdu::UserLoggedon => Ok(vec![]), // TODO: This can eventually become a `_ => {}` block, but being explicit for now // to make sure we don't miss handling new RdpdrPdu variants here during active development. RdpdrPdu::ClientNameRequest(_) diff --git a/crates/ironrdp-rdpdr/src/pdu/efs.rs b/crates/ironrdp-rdpdr/src/pdu/efs.rs index 39953cd9..7260e508 100644 --- a/crates/ironrdp-rdpdr/src/pdu/efs.rs +++ b/crates/ironrdp-rdpdr/src/pdu/efs.rs @@ -364,7 +364,9 @@ impl CapabilityMessage { protocol_minor_version: VERSION_MINOR_12, io_code_1: IoCode1::REQUIRED, io_code_2: 0, - extended_pdu: ExtendedPdu::RDPDR_DEVICE_REMOVE_PDUS | ExtendedPdu::RDPDR_CLIENT_DISPLAY_NAME_PDU, + extended_pdu: ExtendedPdu::RDPDR_DEVICE_REMOVE_PDUS + | ExtendedPdu::RDPDR_CLIENT_DISPLAY_NAME_PDU + | ExtendedPdu::RDPDR_USER_LOGGEDON_PDU, extra_flags_1: ExtraFlags1::empty(), extra_flags_2: 0, special_type_device_cap, diff --git a/crates/ironrdp-rdpdr/src/pdu/mod.rs b/crates/ironrdp-rdpdr/src/pdu/mod.rs index 0f262037..ea65f578 100644 --- a/crates/ironrdp-rdpdr/src/pdu/mod.rs +++ b/crates/ironrdp-rdpdr/src/pdu/mod.rs @@ -34,6 +34,7 @@ pub enum RdpdrPdu { DeviceReadResponse(DeviceReadResponse), DeviceWriteResponse(DeviceWriteResponse), ClientDriveSetInformationResponse(ClientDriveSetInformationResponse), + UserLoggedon, EmptyResponse, } @@ -94,6 +95,10 @@ impl RdpdrPdu { component: Component::RdpdrCtypCore, packet_id: PacketId::CoreDeviceIoCompletion, }, + RdpdrPdu::UserLoggedon => SharedHeader { + component: Component::RdpdrCtypCore, + packet_id: PacketId::CoreUserLoggedon, + }, } } } @@ -109,6 +114,7 @@ impl Decode<'_> for RdpdrPdu { ServerDeviceAnnounceResponse::decode(src)?, )), PacketId::CoreDeviceIoRequest => Ok(RdpdrPdu::DeviceIoRequest(DeviceIoRequest::decode(src)?)), + PacketId::CoreUserLoggedon => Ok(RdpdrPdu::UserLoggedon), _ => Err(unsupported_value_err!( "RdpdrPdu", "PacketId", @@ -138,6 +144,7 @@ impl Encode for RdpdrPdu { RdpdrPdu::DeviceReadResponse(pdu) => pdu.encode(dst), RdpdrPdu::DeviceWriteResponse(pdu) => pdu.encode(dst), RdpdrPdu::ClientDriveSetInformationResponse(pdu) => pdu.encode(dst), + RdpdrPdu::UserLoggedon => Ok(()), RdpdrPdu::EmptyResponse => { // https://github.com/FreeRDP/FreeRDP/blob/dfa231c0a55b005af775b833f92f6bcd30363d77/channels/drive/client/drive_main.c#L601 dst.write_u32(0); @@ -163,6 +170,7 @@ impl Encode for RdpdrPdu { RdpdrPdu::DeviceReadResponse(pdu) => pdu.name(), RdpdrPdu::DeviceWriteResponse(pdu) => pdu.name(), RdpdrPdu::ClientDriveSetInformationResponse(pdu) => pdu.name(), + RdpdrPdu::UserLoggedon => "UserLoggedon", RdpdrPdu::EmptyResponse => "EmptyResponse", } } @@ -185,6 +193,7 @@ impl Encode for RdpdrPdu { RdpdrPdu::DeviceReadResponse(pdu) => pdu.size(), RdpdrPdu::DeviceWriteResponse(pdu) => pdu.size(), RdpdrPdu::ClientDriveSetInformationResponse(pdu) => pdu.size(), + RdpdrPdu::UserLoggedon => 0, RdpdrPdu::EmptyResponse => size_of::(), } } @@ -240,6 +249,9 @@ impl fmt::Debug for RdpdrPdu { Self::ClientDriveSetInformationResponse(it) => { write!(f, "RdpdrPdu({:?})", it) } + Self::UserLoggedon => { + write!(f, "RdpdrPdu(UserLoggedon)") + } Self::EmptyResponse => { write!(f, "RdpdrPdu(EmptyResponse)") } From 7bd92c0ce5c686fe18c062b7edfeed46a709fc23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 16:58:06 +0400 Subject: [PATCH 0972/1273] feat(rdpsnd): add support for client custom flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Client can support various flags, but always set ALIVE. Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpsnd/src/client.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index f02e861a..1a14cc77 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -10,6 +10,10 @@ use crate::pdu::{self, AudioFormat, PitchPdu, ServerAudioFormatPdu, TrainingPdu, use crate::server::RdpsndSvcMessages; pub trait RdpsndClientHandler: Send + core::fmt::Debug { + fn get_flags(&self) -> pdu::AudioFormatFlags { + pdu::AudioFormatFlags::empty() + } + fn get_formats(&self) -> &[AudioFormat]; fn wave(&mut self, format: &AudioFormat, ts: u32, data: Cow<'_, [u8]>); @@ -91,7 +95,7 @@ impl Rdpsnd { pub fn client_formats(&mut self) -> PduResult { let pdu = pdu::ClientAudioFormatPdu { version: self.version()?, - flags: pdu::AudioFormatFlags::empty(), + flags: self.handler.get_flags() | pdu::AudioFormatFlags::ALIVE, formats: self.handler.get_formats().to_vec(), volume_left: 0xFFFF, volume_right: 0xFFFF, From 3d7bc28b9764b1f37b038bb2fbb676ec464ee5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 16:59:31 +0400 Subject: [PATCH 0973/1273] fix(rdpsnd): lookup the associated format from the client list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an index to the client list, according to: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpea/7df64d93-7594-4035-978d-229f2b15f1bc Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpsnd/src/client.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index 1a14cc77..963a37cb 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -183,7 +183,13 @@ impl SvcProcessor for Rdpsnd { match pdu { // TODO: handle WaveInfo for < v8 pdu::ServerAudioOutputPdu::Wave2(pdu) => { - let fmt = self.get_format(pdu.format_no)?.clone(); + // TODO: maybe change wave(fmt_no,..) API to avoid the need for clone() + let fmt = self + .handler + .get_formats() + .get(pdu.format_no as usize) + .ok_or_else(|| pdu_other_err!("invalid format no"))? + .clone(); let ts = pdu.audio_timestamp; self.handler.wave(&fmt, ts, pdu.data); return Ok(self.wave_confirm(pdu.timestamp, pdu.block_no)?.into()); From 4172571e8e061a6a120643393881b5e37f1e61ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 8 Apr 2025 17:12:06 +0400 Subject: [PATCH 0974/1273] refactor(rdpsnd)!: pass format_no instead of AudioFormat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can help avoid extra lookups and cloning. Signed-off-by: Marc-André Lureau --- crates/ironrdp-rdpsnd-native/src/cpal.rs | 17 +++++++++++------ crates/ironrdp-rdpsnd/src/client.rs | 14 ++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/crates/ironrdp-rdpsnd-native/src/cpal.rs b/crates/ironrdp-rdpsnd-native/src/cpal.rs index 149c5db5..3a3fc208 100644 --- a/crates/ironrdp-rdpsnd-native/src/cpal.rs +++ b/crates/ironrdp-rdpsnd-native/src/cpal.rs @@ -18,7 +18,7 @@ pub struct RdpsndBackend { stream_handle: Option>, stream_ended: Arc, tx: Option>>, - format: Option, + format_no: Option, } impl Default for RdpsndBackend { @@ -31,7 +31,7 @@ impl RdpsndBackend { pub fn new() -> Self { Self { tx: None, - format: None, + format_no: None, stream_handle: None, stream_ended: Arc::new(AtomicBool::new(false)), } @@ -69,16 +69,21 @@ impl RdpsndClientHandler for RdpsndBackend { ] } - fn wave(&mut self, format: &AudioFormat, _ts: u32, data: Cow<'_, [u8]>) { - if Some(format) != self.format.as_ref() { - debug!(?format, "New audio format"); + fn wave(&mut self, format_no: usize, _ts: u32, data: Cow<'_, [u8]>) { + if Some(format_no) != self.format_no { + debug!("New audio format"); self.close(); } if self.stream_handle.is_none() { let (tx, rx) = mpsc::channel(); self.tx = Some(tx); - self.format = Some(format.clone()); + + self.format_no = Some(format_no); + let Some(format) = self.get_formats().get(format_no) else { + warn!(?format_no, "Invalid format_no"); + return; + }; let format = format.clone(); self.stream_ended.store(false, Ordering::Relaxed); let stream_ended = Arc::clone(&self.stream_ended); diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index 963a37cb..125ffb19 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -16,7 +16,7 @@ pub trait RdpsndClientHandler: Send + core::fmt::Debug { fn get_formats(&self) -> &[AudioFormat]; - fn wave(&mut self, format: &AudioFormat, ts: u32, data: Cow<'_, [u8]>); + fn wave(&mut self, format_no: usize, ts: u32, data: Cow<'_, [u8]>); fn set_volume(&mut self, volume: VolumePdu); @@ -33,7 +33,7 @@ impl RdpsndClientHandler for NoopRdpsndBackend { &[] } - fn wave(&mut self, _format: &AudioFormat, _ts: u32, _data: Cow<'_, [u8]>) {} + fn wave(&mut self, _format_no: usize, _ts: u32, _data: Cow<'_, [u8]>) {} fn set_volume(&mut self, _volume: VolumePdu) {} @@ -183,15 +183,9 @@ impl SvcProcessor for Rdpsnd { match pdu { // TODO: handle WaveInfo for < v8 pdu::ServerAudioOutputPdu::Wave2(pdu) => { - // TODO: maybe change wave(fmt_no,..) API to avoid the need for clone() - let fmt = self - .handler - .get_formats() - .get(pdu.format_no as usize) - .ok_or_else(|| pdu_other_err!("invalid format no"))? - .clone(); + let format_no = pdu.format_no as usize; let ts = pdu.audio_timestamp; - self.handler.wave(&fmt, ts, pdu.data); + self.handler.wave(format_no, ts, pdu.data); return Ok(self.wave_confirm(pdu.timestamp, pdu.block_no)?.into()); } pdu::ServerAudioOutputPdu::Volume(pdu) => { From a8b96143236ad457b5241f6a2f8acfaf969472b6 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lureau Date: Wed, 9 Apr 2025 05:43:03 +0400 Subject: [PATCH 0975/1273] fix(rdpsnd): send client formats that match server (#742) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Windows seems to be confused if the client replies with more formats, or unknown formats (opus). --------- Signed-off-by: Marc-André Lureau Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com> --- crates/ironrdp-rdpsnd/src/client.rs | 15 ++++++++++++++- crates/ironrdp-rdpsnd/src/pdu/mod.rs | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index 125ffb19..fb6f6b21 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -1,4 +1,5 @@ use std::borrow::Cow; +use std::collections::HashSet; use ironrdp_core::{cast_length, impl_as_any, Decode, EncodeResult, ReadCursor}; use ironrdp_pdu::gcc::ChannelName; @@ -93,10 +94,22 @@ impl Rdpsnd { } pub fn client_formats(&mut self) -> PduResult { + // Windows seems to be confused if the client replies with more formats, or unknown formats (e.g.: opus). + // We ensure to only send supported formats in common with the server. + let server_format: HashSet<_> = self + .server_format + .as_ref() + .ok_or_else(|| pdu_other_err!("invalid state - no server format"))? + .formats + .iter() + .collect(); + let formats: HashSet<_> = self.handler.get_formats().iter().collect(); + let formats = formats.intersection(&server_format).map(|&x| x.clone()).collect(); + let pdu = pdu::ClientAudioFormatPdu { version: self.version()?, flags: self.handler.get_flags() | pdu::AudioFormatFlags::ALIVE, - formats: self.handler.get_formats().to_vec(), + formats, volume_left: 0xFFFF, volume_right: 0xFFFF, pitch: 0x00010000, diff --git a/crates/ironrdp-rdpsnd/src/pdu/mod.rs b/crates/ironrdp-rdpsnd/src/pdu/mod.rs index b2d45e58..d5f3893d 100644 --- a/crates/ironrdp-rdpsnd/src/pdu/mod.rs +++ b/crates/ironrdp-rdpsnd/src/pdu/mod.rs @@ -208,7 +208,7 @@ impl fmt::Display for WaveFormat { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct AudioFormat { pub format: WaveFormat, pub n_channels: u16, From 135b8bc4f6e62a2b41ecc63c6804a01cc7d67b69 Mon Sep 17 00:00:00 2001 From: Vladyslav Nikonov Date: Wed, 9 Apr 2025 11:54:48 +0300 Subject: [PATCH 0976/1273] build(deps): update `windows` crate to 0.61.1 (#743) --- Cargo.lock | 72 ++----------------- crates/ironrdp-client/Cargo.toml | 2 +- crates/ironrdp-cliprdr-native/Cargo.toml | 2 +- crates/ironrdp-cliprdr-native/src/windows.rs | 2 +- .../src/windows/clipboard_impl.rs | 4 +- .../src/windows/cliprdr_backend.rs | 2 +- .../src/windows/os_clipboard.rs | 6 +- .../src/windows/utils.rs | 4 +- 8 files changed, 15 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 09bd1998..9cfff1a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2441,7 +2441,7 @@ dependencies = [ "tracing-subscriber", "uuid", "whoami", - "windows 0.58.0", + "windows 0.61.1", "winit", ] @@ -2474,7 +2474,7 @@ dependencies = [ "ironrdp-core", "thiserror", "tracing", - "windows 0.58.0", + "windows 0.61.1", ] [[package]] @@ -5898,16 +5898,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.61.1" @@ -5949,27 +5939,14 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", + "windows-implement", + "windows-interface", "windows-link", "windows-result 0.3.2", "windows-strings 0.4.0", @@ -5985,17 +5962,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-implement" version = "0.60.0" @@ -6007,17 +5973,6 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-interface" version = "0.59.1" @@ -6065,15 +6020,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.3.2" @@ -6083,16 +6029,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-strings" version = "0.3.1" diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index a8c65b0e..3c808b00 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -78,7 +78,7 @@ raw-window-handle = "0.6" uuid = { version = "1.16" } [target.'cfg(windows)'.dependencies] -windows = { version = "0.58", features = ["Win32_Foundation"] } +windows = { version = "0.61", features = ["Win32_Foundation"] } [lints] workspace = true diff --git a/crates/ironrdp-cliprdr-native/Cargo.toml b/crates/ironrdp-cliprdr-native/Cargo.toml index c9e28f35..7d0ec69f 100644 --- a/crates/ironrdp-cliprdr-native/Cargo.toml +++ b/crates/ironrdp-cliprdr-native/Cargo.toml @@ -22,7 +22,7 @@ tracing = { version = "0.1", features = ["log"] } [target.'cfg(windows)'.dependencies] thiserror = "1" -windows = { version = "0.58", features = [ +windows = { version = "0.61", features = [ "Win32_Foundation", "Win32_Graphics_Gdi", "Win32_System_DataExchange", diff --git a/crates/ironrdp-cliprdr-native/src/windows.rs b/crates/ironrdp-cliprdr-native/src/windows.rs index 3166829d..09a3e536 100644 --- a/crates/ironrdp-cliprdr-native/src/windows.rs +++ b/crates/ironrdp-cliprdr-native/src/windows.rs @@ -152,7 +152,7 @@ impl WinClipboard { CW_USEDEFAULT, None, None, - instance, + Some(instance.into()), None, )? }; diff --git a/crates/ironrdp-cliprdr-native/src/windows/clipboard_impl.rs b/crates/ironrdp-cliprdr-native/src/windows/clipboard_impl.rs index 82903d55..cd651da7 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/clipboard_impl.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/clipboard_impl.rs @@ -271,7 +271,7 @@ impl WinClipboardImpl { // SAFETY: `SetTimer` is always safe to call when `hwnd` is a valid window handle unsafe { SetTimer( - self.window, + Some(self.window), IDT_CLIPBOARD_RETRY, self.attempt * PROCESSING_TIMEOUT_MS, None, @@ -370,7 +370,7 @@ pub(crate) unsafe extern "system" fn clipboard_subproc( // Timer is one-shot, we need to stop it immediately // SAFETY: `KillTimer` is always safe to call when `hwnd` is a valid window handle. - if let Err(err) = unsafe { KillTimer(hwnd, IDT_CLIPBOARD_RETRY) } { + if let Err(err) = unsafe { KillTimer(Some(hwnd), IDT_CLIPBOARD_RETRY) } { tracing::error!("Failed to kill timer: {}", err); } diff --git a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs index 0192ab3e..f7da46bc 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs @@ -38,7 +38,7 @@ impl WinCliprdrBackend { // Wake up subproc event loop; Dont wait for result // // SAFETY: it is safe to call PostMessageW from any thread with a valid window handle - if let Err(err) = unsafe { PostMessageW(self.window, WM_CLIPRDR_BACKEND_EVENT, WPARAM(0), LPARAM(0)) } { + if let Err(err) = unsafe { PostMessageW(Some(self.window), WM_CLIPRDR_BACKEND_EVENT, WPARAM(0), LPARAM(0)) } { tracing::error!("Failed to post message to wake up subproc event loop: {}", err); } } diff --git a/crates/ironrdp-cliprdr-native/src/windows/os_clipboard.rs b/crates/ironrdp-cliprdr-native/src/windows/os_clipboard.rs index e75a6fb0..54ccaa14 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/os_clipboard.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/os_clipboard.rs @@ -1,6 +1,6 @@ use ironrdp_cliprdr::pdu::{ClipboardFormat, ClipboardFormatId, ClipboardFormatName}; use tracing::error; -use windows::Win32::Foundation::{HANDLE, HWND}; +use windows::Win32::Foundation::HWND; use windows::Win32::System::DataExchange::{ CloseClipboard, EmptyClipboard, EnumClipboardFormats, GetClipboardFormatNameW, OpenClipboard, SetClipboardData, }; @@ -14,7 +14,7 @@ pub(crate) struct OwnedOsClipboard; impl OwnedOsClipboard { pub(crate) fn new(window: HWND) -> Result { // SAFETY: `window` is valid handle, therefore it is safe to call `OpenClipboard`. - unsafe { OpenClipboard(window)? }; + unsafe { OpenClipboard(Some(window))? }; Ok(Self) } @@ -87,7 +87,7 @@ impl OwnedOsClipboard { pub(crate) fn delay_render(&mut self, format: ClipboardFormatId) -> Result<(), WinCliprdrError> { // SAFETY: We own the clipboard at moment of method invocation, therefore it is safe to // call `SetClipboardData`. - let result = unsafe { SetClipboardData(format.value(), HANDLE(core::ptr::null_mut())) }; + let result = unsafe { SetClipboardData(format.value(), None) }; if let Err(err) = result { // `windows` crate will return `Err(..)` on err zero handle, but for `SetClipboardData` diff --git a/crates/ironrdp-cliprdr-native/src/windows/utils.rs b/crates/ironrdp-cliprdr-native/src/windows/utils.rs index 45255613..b890ef98 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/utils.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/utils.rs @@ -44,7 +44,7 @@ impl GlobalMemoryBuffer { impl Drop for GlobalMemoryBuffer { fn drop(&mut self) { // SAFETY: It is safe to call GlobalFree on a valid handle - if let Err(err) = unsafe { GlobalFree(self.0) } { + if let Err(err) = unsafe { GlobalFree(Some(self.0)) } { error!("Failed to free global clipboard data handle: {}", err); } } @@ -63,7 +63,7 @@ pub(crate) unsafe fn render_format(format: ClipboardFormatId, data: &[u8]) -> Wi // SAFETY: If described above safety requirements of `render_format` call are met, then // `SetClipboardData` is safe to call. - let _ = unsafe { SetClipboardData(format.value(), handle) }; + let _ = unsafe { SetClipboardData(format.value(), Some(handle)) }; // We successfully transferred ownership of the data to the clipboard, we don't need to // call drop on handle From 5ffeeea3aedd2fa05e7e3d2aea41b195e4d15809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 10:42:58 +0400 Subject: [PATCH 0977/1273] refactor(server): move fast-path fragmenter to own unit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- .../ironrdp-server/src/encoder/fast_path.rs | 111 +++++++++++++++++ crates/ironrdp-server/src/encoder/mod.rs | 116 ++---------------- 2 files changed, 120 insertions(+), 107 deletions(-) create mode 100644 crates/ironrdp-server/src/encoder/fast_path.rs diff --git a/crates/ironrdp-server/src/encoder/fast_path.rs b/crates/ironrdp-server/src/encoder/fast_path.rs new file mode 100644 index 00000000..b48a51ee --- /dev/null +++ b/crates/ironrdp-server/src/encoder/fast_path.rs @@ -0,0 +1,111 @@ +use core::{cmp, fmt}; + +use ironrdp_pdu::{ + fast_path::{EncryptionFlags, FastPathHeader, FastPathUpdatePdu, Fragmentation, UpdateCode}, + Encode, WriteCursor, +}; + +// this is the maximum amount of data (not including headers) we can send in a single TS_FP_UPDATE_PDU +const MAX_FASTPATH_UPDATE_SIZE: usize = 16_374; + +const FASTPATH_HEADER_SIZE: usize = 6; + +pub(crate) struct UpdateFragmenterOwned { + code: UpdateCode, + index: usize, + len: usize, +} + +pub(crate) struct UpdateFragmenter<'a> { + code: UpdateCode, + index: usize, + data: &'a [u8], +} + +impl fmt::Debug for UpdateFragmenter<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("UpdateFragmenter") + .field("len", &self.data.len()) + .finish() + } +} + +impl<'a> UpdateFragmenter<'a> { + pub(crate) fn new(code: UpdateCode, data: &'a [u8]) -> Self { + Self { code, index: 0, data } + } + + pub(crate) fn into_owned(self) -> UpdateFragmenterOwned { + UpdateFragmenterOwned { + code: self.code, + index: self.index, + len: self.data.len(), + } + } + + pub(crate) fn from_owned(res: UpdateFragmenterOwned, buffer: &'a [u8]) -> UpdateFragmenter<'a> { + Self { + code: res.code, + index: res.index, + data: &buffer[0..res.len], + } + } + + pub(crate) fn size_hint(&self) -> usize { + FASTPATH_HEADER_SIZE + cmp::min(self.data.len(), MAX_FASTPATH_UPDATE_SIZE) + } + + pub(crate) fn next(&mut self, dst: &mut [u8]) -> Option { + let (consumed, written) = self.encode_next(dst)?; + self.data = &self.data[consumed..]; + self.index = self.index.checked_add(1)?; + Some(written) + } + + fn encode_next(&mut self, dst: &mut [u8]) -> Option<(usize, usize)> { + match self.data.len() { + 0 => None, + + 1..=MAX_FASTPATH_UPDATE_SIZE => { + let frag = if self.index > 0 { + Fragmentation::Last + } else { + Fragmentation::Single + }; + + self.encode_fastpath(frag, self.data, dst) + .map(|written| (self.data.len(), written)) + } + + _ => { + let frag = if self.index > 0 { + Fragmentation::Next + } else { + Fragmentation::First + }; + + self.encode_fastpath(frag, &self.data[..MAX_FASTPATH_UPDATE_SIZE], dst) + .map(|written| (MAX_FASTPATH_UPDATE_SIZE, written)) + } + } + } + + fn encode_fastpath(&self, frag: Fragmentation, data: &[u8], dst: &mut [u8]) -> Option { + let mut cursor = WriteCursor::new(dst); + + let update = FastPathUpdatePdu { + fragmentation: frag, + update_code: self.code, + compression_flags: None, + compression_type: None, + data, + }; + + let header = FastPathHeader::new(EncryptionFlags::empty(), update.size()); + + header.encode(&mut cursor).ok()?; + update.encode(&mut cursor).ok()?; + + Some(cursor.pos()) + } +} diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index fffddea3..2a5cc731 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -1,12 +1,9 @@ -mod bitmap; -pub(crate) mod rfx; - -use core::{cmp, fmt}; +use core::fmt; use anyhow::{Context, Result}; use ironrdp_acceptor::DesktopSize; use ironrdp_core::{Encode, WriteCursor}; -use ironrdp_pdu::fast_path::{EncryptionFlags, FastPathHeader, FastPathUpdatePdu, Fragmentation, UpdateCode}; +use ironrdp_pdu::fast_path::UpdateCode; use ironrdp_pdu::geometry::ExclusiveRectangle; use ironrdp_pdu::pointer::{ColorPointerAttribute, Point16, PointerAttribute, PointerPositionAttribute}; use ironrdp_pdu::rdp::capability_sets::{CmdFlags, EntropyBits}; @@ -17,17 +14,18 @@ use self::rfx::RfxEncoder; use super::BitmapUpdate; use crate::{ColorPointer, Framebuffer, RGBAPointer}; +mod bitmap; +mod fast_path; +pub(crate) mod rfx; + +pub(crate) use fast_path::*; + #[derive(Debug, Copy, Clone, PartialEq, Eq)] #[repr(u8)] enum CodecId { None = 0x0, } -// this is the maximum amount of data (not including headers) we can send in a single TS_FP_UPDATE_PDU -const MAX_FASTPATH_UPDATE_SIZE: usize = 16_374; - -const FASTPATH_HEADER_SIZE: usize = 6; - pub(crate) struct UpdateEncoder { desktop_size: DesktopSize, // FIXME: draw updates on the framebuffer @@ -139,11 +137,7 @@ impl UpdateEncoder { } pub(crate) fn fragmenter_from_owned(&self, res: UpdateFragmenterOwned) -> UpdateFragmenter<'_> { - UpdateFragmenter { - code: res.code, - index: res.index, - data: &self.pdu_encoder.buffer[0..res.len], - } + UpdateFragmenter::from_owned(res, &self.pdu_encoder.buffer) } } @@ -308,95 +302,3 @@ impl PduEncoder { Ok(UpdateFragmenter::new(UpdateCode::SurfaceCommands, buf)) } } - -pub(crate) struct UpdateFragmenterOwned { - code: UpdateCode, - index: usize, - len: usize, -} - -pub(crate) struct UpdateFragmenter<'a> { - code: UpdateCode, - index: usize, - data: &'a [u8], -} - -impl fmt::Debug for UpdateFragmenter<'_> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("UpdateFragmenter") - .field("len", &self.data.len()) - .finish() - } -} - -impl<'a> UpdateFragmenter<'a> { - pub(crate) fn new(code: UpdateCode, data: &'a [u8]) -> Self { - Self { code, index: 0, data } - } - - pub(crate) fn into_owned(self) -> UpdateFragmenterOwned { - UpdateFragmenterOwned { - code: self.code, - index: self.index, - len: self.data.len(), - } - } - - pub(crate) fn size_hint(&self) -> usize { - FASTPATH_HEADER_SIZE + cmp::min(self.data.len(), MAX_FASTPATH_UPDATE_SIZE) - } - - pub(crate) fn next(&mut self, dst: &mut [u8]) -> Option { - let (consumed, written) = self.encode_next(dst)?; - self.data = &self.data[consumed..]; - self.index = self.index.checked_add(1)?; - Some(written) - } - - fn encode_next(&mut self, dst: &mut [u8]) -> Option<(usize, usize)> { - match self.data.len() { - 0 => None, - - 1..=MAX_FASTPATH_UPDATE_SIZE => { - let frag = if self.index > 0 { - Fragmentation::Last - } else { - Fragmentation::Single - }; - - self.encode_fastpath(frag, self.data, dst) - .map(|written| (self.data.len(), written)) - } - - _ => { - let frag = if self.index > 0 { - Fragmentation::Next - } else { - Fragmentation::First - }; - - self.encode_fastpath(frag, &self.data[..MAX_FASTPATH_UPDATE_SIZE], dst) - .map(|written| (MAX_FASTPATH_UPDATE_SIZE, written)) - } - } - } - - fn encode_fastpath(&self, frag: Fragmentation, data: &[u8], dst: &mut [u8]) -> Option { - let mut cursor = WriteCursor::new(dst); - - let update = FastPathUpdatePdu { - fragmentation: frag, - update_code: self.code, - compression_flags: None, - compression_type: None, - data, - }; - - let header = FastPathHeader::new(EncryptionFlags::empty(), update.size()); - - header.encode(&mut cursor).ok()?; - update.encode(&mut cursor).ok()?; - - Some(cursor.pos()) - } -} From f21a6bf7d0e4089add43c897fdcc3c6c39656bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 11:09:30 +0400 Subject: [PATCH 0978/1273] test(server): add fragment test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/Cargo.toml | 1 - .../ironrdp-server/src/encoder/fast_path.rs | 84 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index e2a26728..222103ce 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -13,7 +13,6 @@ categories.workspace = true [lib] doctest = true -test = false [features] default = ["rayon"] diff --git a/crates/ironrdp-server/src/encoder/fast_path.rs b/crates/ironrdp-server/src/encoder/fast_path.rs index b48a51ee..5944413e 100644 --- a/crates/ironrdp-server/src/encoder/fast_path.rs +++ b/crates/ironrdp-server/src/encoder/fast_path.rs @@ -109,3 +109,87 @@ impl<'a> UpdateFragmenter<'a> { Some(cursor.pos()) } } + +#[cfg(test)] +mod tests { + use super::*; + use ironrdp_core::{decode_cursor, ReadCursor}; + + #[test] + fn test_single_fragment() { + let data = vec![1, 2, 3, 4]; + let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, &data); + let mut buffer = vec![0; 100]; + let written = fragmenter.next(&mut buffer).unwrap(); + assert!(written > 0); + assert_eq!(fragmenter.index, 1); + + let mut cursor = ReadCursor::new(&buffer); + let header: FastPathHeader = decode_cursor(&mut cursor).unwrap(); + let update: FastPathUpdatePdu<'_> = decode_cursor(&mut cursor).unwrap(); + assert!(matches!(header, FastPathHeader { data_length: 7, .. })); + assert!(matches!( + update, + FastPathUpdatePdu { + fragmentation: Fragmentation::Single, + .. + } + )); + + assert!(fragmenter.next(&mut buffer).is_none()); + } + + #[test] + fn test_multi_fragment() { + let data = vec![0u8; MAX_FASTPATH_UPDATE_SIZE * 2 + 10]; + let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, &data); + let mut buffer = vec![0u8; fragmenter.size_hint()]; + let written = fragmenter.next(&mut buffer).unwrap(); + assert!(written > 0); + assert_eq!(fragmenter.index, 1); + + let mut cursor = ReadCursor::new(&buffer); + let _header: FastPathHeader = decode_cursor(&mut cursor).unwrap(); + let update: FastPathUpdatePdu<'_> = decode_cursor(&mut cursor).unwrap(); + assert!(matches!( + update, + FastPathUpdatePdu { + fragmentation: Fragmentation::First, + .. + } + )); + assert_eq!(update.data.len(), MAX_FASTPATH_UPDATE_SIZE); + + let written = fragmenter.next(&mut buffer).unwrap(); + assert!(written > 0); + assert_eq!(fragmenter.index, 2); + let mut cursor = ReadCursor::new(&buffer); + let _header: FastPathHeader = decode_cursor(&mut cursor).unwrap(); + let update: FastPathUpdatePdu<'_> = decode_cursor(&mut cursor).unwrap(); + assert!(matches!( + update, + FastPathUpdatePdu { + fragmentation: Fragmentation::Next, + .. + } + )); + assert_eq!(update.data.len(), MAX_FASTPATH_UPDATE_SIZE); + + let written = fragmenter.next(&mut buffer).unwrap(); + assert!(written > 0); + assert_eq!(fragmenter.index, 3); + let mut cursor = ReadCursor::new(&buffer); + let _header: FastPathHeader = decode_cursor(&mut cursor).unwrap(); + let update: FastPathUpdatePdu<'_> = decode_cursor(&mut cursor).unwrap(); + assert!(matches!( + update, + FastPathUpdatePdu { + fragmentation: Fragmentation::Last, + .. + } + )); + assert_eq!(update.data.len(), 10); + + assert!(fragmenter.next(&mut buffer).is_none()); + } +} From fde18ad01afad2838365989d604117f37b8c7cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 14:41:06 +0400 Subject: [PATCH 0979/1273] refactor(server): make UpdateFragmenter own its data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trying to share a common buffer creates all sort of complicated lifetime issues when trying to move the encoding to a 'static handler, or when implementing iterators. It's not worth it. Signed-off-by: Marc-André Lureau --- .../ironrdp-server/src/encoder/fast_path.rs | 56 +++---- crates/ironrdp-server/src/encoder/mod.rs | 141 +++++++----------- crates/ironrdp-server/src/server.rs | 4 +- 3 files changed, 77 insertions(+), 124 deletions(-) diff --git a/crates/ironrdp-server/src/encoder/fast_path.rs b/crates/ironrdp-server/src/encoder/fast_path.rs index 5944413e..ebd89d7a 100644 --- a/crates/ironrdp-server/src/encoder/fast_path.rs +++ b/crates/ironrdp-server/src/encoder/fast_path.rs @@ -10,19 +10,14 @@ const MAX_FASTPATH_UPDATE_SIZE: usize = 16_374; const FASTPATH_HEADER_SIZE: usize = 6; -pub(crate) struct UpdateFragmenterOwned { +pub(crate) struct UpdateFragmenter { code: UpdateCode, index: usize, - len: usize, + data: Vec, + position: usize, } -pub(crate) struct UpdateFragmenter<'a> { - code: UpdateCode, - index: usize, - data: &'a [u8], -} - -impl fmt::Debug for UpdateFragmenter<'_> { +impl fmt::Debug for UpdateFragmenter { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("UpdateFragmenter") .field("len", &self.data.len()) @@ -30,24 +25,13 @@ impl fmt::Debug for UpdateFragmenter<'_> { } } -impl<'a> UpdateFragmenter<'a> { - pub(crate) fn new(code: UpdateCode, data: &'a [u8]) -> Self { - Self { code, index: 0, data } - } - - pub(crate) fn into_owned(self) -> UpdateFragmenterOwned { - UpdateFragmenterOwned { - code: self.code, - index: self.index, - len: self.data.len(), - } - } - - pub(crate) fn from_owned(res: UpdateFragmenterOwned, buffer: &'a [u8]) -> UpdateFragmenter<'a> { +impl UpdateFragmenter { + pub(crate) fn new(code: UpdateCode, data: Vec) -> Self { Self { - code: res.code, - index: res.index, - data: &buffer[0..res.len], + code, + index: 0, + data, + position: 0, } } @@ -57,13 +41,13 @@ impl<'a> UpdateFragmenter<'a> { pub(crate) fn next(&mut self, dst: &mut [u8]) -> Option { let (consumed, written) = self.encode_next(dst)?; - self.data = &self.data[consumed..]; + self.position += consumed; self.index = self.index.checked_add(1)?; Some(written) } fn encode_next(&mut self, dst: &mut [u8]) -> Option<(usize, usize)> { - match self.data.len() { + match self.data.len() - self.position { 0 => None, 1..=MAX_FASTPATH_UPDATE_SIZE => { @@ -73,8 +57,8 @@ impl<'a> UpdateFragmenter<'a> { Fragmentation::Single }; - self.encode_fastpath(frag, self.data, dst) - .map(|written| (self.data.len(), written)) + self.encode_fastpath(frag, &self.data[self.position..], dst) + .map(|written| (self.data.len() - self.position, written)) } _ => { @@ -84,8 +68,12 @@ impl<'a> UpdateFragmenter<'a> { Fragmentation::First }; - self.encode_fastpath(frag, &self.data[..MAX_FASTPATH_UPDATE_SIZE], dst) - .map(|written| (MAX_FASTPATH_UPDATE_SIZE, written)) + self.encode_fastpath( + frag, + &self.data[self.position..MAX_FASTPATH_UPDATE_SIZE + self.position], + dst, + ) + .map(|written| (MAX_FASTPATH_UPDATE_SIZE, written)) } } } @@ -118,7 +106,7 @@ mod tests { #[test] fn test_single_fragment() { let data = vec![1, 2, 3, 4]; - let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, &data); + let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, data); let mut buffer = vec![0; 100]; let written = fragmenter.next(&mut buffer).unwrap(); assert!(written > 0); @@ -142,7 +130,7 @@ mod tests { #[test] fn test_multi_fragment() { let data = vec![0u8; MAX_FASTPATH_UPDATE_SIZE * 2 + 10]; - let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, &data); + let mut fragmenter = UpdateFragmenter::new(UpdateCode::Bitmap, data); let mut buffer = vec![0u8; fragmenter.size_hint()]; let written = fragmenter.next(&mut buffer).unwrap(); assert!(written > 0); diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 2a5cc731..89be5e3b 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -2,7 +2,7 @@ use core::fmt; use anyhow::{Context, Result}; use ironrdp_acceptor::DesktopSize; -use ironrdp_core::{Encode, WriteCursor}; +use ironrdp_pdu::encode_vec; use ironrdp_pdu::fast_path::UpdateCode; use ironrdp_pdu::geometry::ExclusiveRectangle; use ironrdp_pdu::pointer::{ColorPointerAttribute, Point16, PointerAttribute, PointerPositionAttribute}; @@ -30,7 +30,6 @@ pub(crate) struct UpdateEncoder { desktop_size: DesktopSize, // FIXME: draw updates on the framebuffer framebuffer: Option, - pdu_encoder: PduEncoder, bitmap_updater: BitmapUpdater, } @@ -44,7 +43,6 @@ impl fmt::Debug for UpdateEncoder { impl UpdateEncoder { pub(crate) fn new(desktop_size: DesktopSize, surface_flags: CmdFlags, remotefx: Option<(EntropyBits, u8)>) -> Self { - let pdu_encoder = PduEncoder::new(); let bitmap_updater = if !surface_flags.contains(CmdFlags::SET_SURFACE_BITS) { BitmapUpdater::Bitmap(BitmapHandler::new()) } else if remotefx.is_some() { @@ -57,7 +55,6 @@ impl UpdateEncoder { Self { desktop_size, framebuffer: None, - pdu_encoder, bitmap_updater, } } @@ -66,7 +63,8 @@ impl UpdateEncoder { self.desktop_size = size; } - pub(crate) fn rgba_pointer(&mut self, ptr: RGBAPointer) -> Result> { + #[allow(clippy::unused_self)] + pub(crate) fn rgba_pointer(&mut self, ptr: RGBAPointer) -> Result { let xor_mask = ptr.data; let hot_spot = Point16 { @@ -85,11 +83,11 @@ impl UpdateEncoder { xor_bpp: 32, color_pointer, }; - let buf = self.pdu_encoder.encode(ptr)?; - Ok(UpdateFragmenter::new(UpdateCode::NewPointer, buf)) + Ok(UpdateFragmenter::new(UpdateCode::NewPointer, encode_vec(&ptr)?)) } - pub(crate) fn color_pointer(&mut self, ptr: ColorPointer) -> Result> { + #[allow(clippy::unused_self)] + pub(crate) fn color_pointer(&mut self, ptr: ColorPointer) -> Result { let hot_spot = Point16 { x: ptr.hot_x, y: ptr.hot_y, @@ -102,27 +100,26 @@ impl UpdateEncoder { xor_mask: &ptr.xor_mask, and_mask: &ptr.and_mask, }; - let buf = self.pdu_encoder.encode(ptr)?; - Ok(UpdateFragmenter::new(UpdateCode::ColorPointer, buf)) + Ok(UpdateFragmenter::new(UpdateCode::ColorPointer, encode_vec(&ptr)?)) } #[allow(clippy::unused_self)] - pub(crate) fn default_pointer(&mut self) -> Result> { - Ok(UpdateFragmenter::new(UpdateCode::DefaultPointer, &[])) + pub(crate) fn default_pointer(&mut self) -> Result { + Ok(UpdateFragmenter::new(UpdateCode::DefaultPointer, vec![])) } #[allow(clippy::unused_self)] - pub(crate) fn hide_pointer(&mut self) -> Result> { - Ok(UpdateFragmenter::new(UpdateCode::HiddenPointer, &[])) + pub(crate) fn hide_pointer(&mut self) -> Result { + Ok(UpdateFragmenter::new(UpdateCode::HiddenPointer, vec![])) } - pub(crate) fn pointer_position(&mut self, pos: PointerPositionAttribute) -> Result> { - let buf = self.pdu_encoder.encode(pos)?; - Ok(UpdateFragmenter::new(UpdateCode::PositionPointer, buf)) + #[allow(clippy::unused_self)] + pub(crate) fn pointer_position(&mut self, pos: PointerPositionAttribute) -> Result { + Ok(UpdateFragmenter::new(UpdateCode::PositionPointer, encode_vec(&pos)?)) } - pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result> { - let res = self.bitmap_updater.handle(&bitmap, &mut self.pdu_encoder); + pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result { + let res = self.bitmap_updater.handle(&bitmap); if bitmap.x == 0 && bitmap.y == 0 && bitmap.width.get() == self.desktop_size.width @@ -135,10 +132,6 @@ impl UpdateEncoder { } res } - - pub(crate) fn fragmenter_from_owned(&self, res: UpdateFragmenterOwned) -> UpdateFragmenter<'_> { - UpdateFragmenter::from_owned(res, &self.pdu_encoder.buffer) - } } #[derive(Debug)] @@ -149,30 +142,30 @@ enum BitmapUpdater { } impl BitmapUpdater { - fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle(&mut self, bitmap: &BitmapUpdate) -> Result { match self { - Self::None(up) => up.handle(bitmap, encoder), - Self::Bitmap(up) => up.handle(bitmap, encoder), - Self::RemoteFx(up) => up.handle(bitmap, encoder), + Self::None(up) => up.handle(bitmap), + Self::Bitmap(up) => up.handle(bitmap), + Self::RemoteFx(up) => up.handle(bitmap), } } } trait BitmapUpdateHandler { - fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result>; + fn handle(&mut self, bitmap: &BitmapUpdate) -> Result; } #[derive(Debug)] struct NoneHandler; impl BitmapUpdateHandler for NoneHandler { - fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle(&mut self, bitmap: &BitmapUpdate) -> Result { let stride = usize::from(bitmap.format.bytes_per_pixel()) * usize::from(bitmap.width.get()); let mut data = Vec::with_capacity(stride * usize::from(bitmap.height.get())); for row in bitmap.data.chunks(bitmap.stride).rev() { data.extend_from_slice(&row[..stride]); } - encoder.set_surface(bitmap, CodecId::None as u8, &data) + set_surface(bitmap, CodecId::None as u8, &data) } } @@ -195,13 +188,14 @@ impl BitmapHandler { } impl BitmapUpdateHandler for BitmapHandler { - fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle(&mut self, bitmap: &BitmapUpdate) -> Result { + let mut buffer = vec![0; bitmap.data.len() * 2]; // TODO: estimate bitmap encoded size let len = loop { - match self.bitmap.encode(bitmap, encoder.buffer.as_mut_slice()) { + match self.bitmap.encode(bitmap, buffer.as_mut_slice()) { Err(e) => match e.kind() { ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { - encoder.buffer.resize(encoder.buffer.len() * 2, 0); - debug!("encoder buffer resized to: {}", encoder.buffer.len() * 2); + buffer.resize(buffer.len() * 2, 0); + debug!("encoder buffer resized to: {}", buffer.len() * 2); } _ => Err(e).context("bitmap encode error")?, @@ -210,7 +204,8 @@ impl BitmapUpdateHandler for BitmapHandler { } }; - Ok(UpdateFragmenter::new(UpdateCode::Bitmap, &encoder.buffer[..len])) + buffer.truncate(len); + Ok(UpdateFragmenter::new(UpdateCode::Bitmap, buffer)) } } @@ -230,7 +225,7 @@ impl RemoteFxHandler { } impl BitmapUpdateHandler for RemoteFxHandler { - fn handle<'a>(&mut self, bitmap: &BitmapUpdate, encoder: &'a mut PduEncoder) -> Result> { + fn handle(&mut self, bitmap: &BitmapUpdate) -> Result { let mut buffer = vec![0; bitmap.data.len()]; let len = loop { match self.remotefx.encode(bitmap, buffer.as_mut_slice()) { @@ -246,59 +241,29 @@ impl BitmapUpdateHandler for RemoteFxHandler { } }; - encoder.set_surface(bitmap, self.codec_id, &buffer[..len]) + set_surface(bitmap, self.codec_id, &buffer[..len]) } } -struct PduEncoder { - buffer: Vec, -} - -impl PduEncoder { - fn new() -> Self { - Self { buffer: vec![0; 16384] } - } - - fn encode(&mut self, pdu: impl Encode) -> Result<&[u8]> { - let pos = loop { - let mut cursor = WriteCursor::new(self.buffer.as_mut_slice()); - match pdu.encode(&mut cursor) { - Err(e) => match e.kind() { - ironrdp_core::EncodeErrorKind::NotEnoughBytes { .. } => { - self.buffer.resize(self.buffer.len() * 2, 0); - debug!("encoder buffer resized to: {}", self.buffer.len() * 2); - } - - _ => Err(e).context("PDU encode error")?, - }, - Ok(()) => break cursor.pos(), - } - }; - - Ok(&self.buffer[..pos]) - } - - fn set_surface(&mut self, bitmap: &BitmapUpdate, codec_id: u8, data: &[u8]) -> Result> { - let destination = ExclusiveRectangle { - left: bitmap.x, - top: bitmap.y, - right: bitmap.x + bitmap.width.get(), - bottom: bitmap.y + bitmap.height.get(), - }; - let extended_bitmap_data = ExtendedBitmapDataPdu { - bpp: bitmap.format.bytes_per_pixel() * 8, - width: bitmap.width.get(), - height: bitmap.height.get(), - codec_id, - header: None, - data, - }; - let pdu = SurfaceBitsPdu { - destination, - extended_bitmap_data, - }; - let cmd = SurfaceCommand::SetSurfaceBits(pdu); - let buf = self.encode(cmd)?; - Ok(UpdateFragmenter::new(UpdateCode::SurfaceCommands, buf)) - } +fn set_surface(bitmap: &BitmapUpdate, codec_id: u8, data: &[u8]) -> Result { + let destination = ExclusiveRectangle { + left: bitmap.x, + top: bitmap.y, + right: bitmap.x + bitmap.width.get(), + bottom: bitmap.y + bitmap.height.get(), + }; + let extended_bitmap_data = ExtendedBitmapDataPdu { + bpp: bitmap.format.bytes_per_pixel() * 8, + width: bitmap.width.get(), + height: bitmap.height.get(), + codec_id, + header: None, + data, + }; + let pdu = SurfaceBitsPdu { + destination, + extended_bitmap_data, + }; + let cmd = SurfaceCommand::SetSurfaceBits(pdu); + Ok(UpdateFragmenter::new(UpdateCode::SurfaceCommands, encode_vec(&cmd)?)) } diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 402dfa35..2a95272b 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -426,12 +426,12 @@ impl RdpServer { let mut fragmenter = match update { DisplayUpdate::Bitmap(bitmap) => { let (enc, res) = task::spawn_blocking(move || { - let res = time_warn!("Encoding bitmap", 10, encoder.bitmap(bitmap).map(|r| r.into_owned())); + let res = time_warn!("Encoding bitmap", 10, encoder.bitmap(bitmap)); (encoder, res) }) .await?; encoder = enc; - res.map(|r| encoder.fragmenter_from_owned(r)) + res } DisplayUpdate::PointerPosition(pos) => encoder.pointer_position(pos), DisplayUpdate::Resize(desktop_size) => { From 2c7556ba1e419fc82e06ea4095f7711eb95d4a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 25 Feb 2025 15:37:43 +0400 Subject: [PATCH 0980/1273] refactor(server): make UpdateEncoder::update() an iterator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A single display update can now result in multiple commands / update code (FastPathUpdate). The update dispatching and bitmap encoding is now done by the UpdateEncoder itself. Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/src/encoder/bitmap.rs | 1 + crates/ironrdp-server/src/encoder/mod.rs | 65 ++++++++++++++++----- crates/ironrdp-server/src/encoder/rfx.rs | 2 +- crates/ironrdp-server/src/server.rs | 55 ++++++++--------- 4 files changed, 74 insertions(+), 49 deletions(-) diff --git a/crates/ironrdp-server/src/encoder/bitmap.rs b/crates/ironrdp-server/src/encoder/bitmap.rs index 71a1ec17..725232a0 100644 --- a/crates/ironrdp-server/src/encoder/bitmap.rs +++ b/crates/ironrdp-server/src/encoder/bitmap.rs @@ -7,6 +7,7 @@ use ironrdp_pdu::geometry::InclusiveRectangle; use crate::BitmapUpdate; // PERF: we could also remove the need for this buffer +#[derive(Clone)] pub(crate) struct BitmapEncoder { buffer: Vec, } diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index 89be5e3b..012e013c 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -12,7 +12,7 @@ use ironrdp_pdu::surface_commands::{ExtendedBitmapDataPdu, SurfaceBitsPdu, Surfa use self::bitmap::BitmapEncoder; use self::rfx::RfxEncoder; use super::BitmapUpdate; -use crate::{ColorPointer, Framebuffer, RGBAPointer}; +use crate::{time_warn, ColorPointer, DisplayUpdate, Framebuffer, RGBAPointer}; mod bitmap; mod fast_path; @@ -59,12 +59,18 @@ impl UpdateEncoder { } } + pub(crate) fn update(&mut self, update: DisplayUpdate) -> EncoderIter<'_> { + EncoderIter { + encoder: self, + update: Some(update), + } + } + pub(crate) fn set_desktop_size(&mut self, size: DesktopSize) { self.desktop_size = size; } - #[allow(clippy::unused_self)] - pub(crate) fn rgba_pointer(&mut self, ptr: RGBAPointer) -> Result { + fn rgba_pointer(ptr: RGBAPointer) -> Result { let xor_mask = ptr.data; let hot_spot = Point16 { @@ -86,8 +92,7 @@ impl UpdateEncoder { Ok(UpdateFragmenter::new(UpdateCode::NewPointer, encode_vec(&ptr)?)) } - #[allow(clippy::unused_self)] - pub(crate) fn color_pointer(&mut self, ptr: ColorPointer) -> Result { + fn color_pointer(ptr: ColorPointer) -> Result { let hot_spot = Point16 { x: ptr.hot_x, y: ptr.hot_y, @@ -103,23 +108,26 @@ impl UpdateEncoder { Ok(UpdateFragmenter::new(UpdateCode::ColorPointer, encode_vec(&ptr)?)) } - #[allow(clippy::unused_self)] - pub(crate) fn default_pointer(&mut self) -> Result { + fn default_pointer() -> Result { Ok(UpdateFragmenter::new(UpdateCode::DefaultPointer, vec![])) } - #[allow(clippy::unused_self)] - pub(crate) fn hide_pointer(&mut self) -> Result { + fn hide_pointer() -> Result { Ok(UpdateFragmenter::new(UpdateCode::HiddenPointer, vec![])) } - #[allow(clippy::unused_self)] - pub(crate) fn pointer_position(&mut self, pos: PointerPositionAttribute) -> Result { + fn pointer_position(pos: PointerPositionAttribute) -> Result { Ok(UpdateFragmenter::new(UpdateCode::PositionPointer, encode_vec(&pos)?)) } - pub(crate) fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result { - let res = self.bitmap_updater.handle(&bitmap); + async fn bitmap(&mut self, bitmap: BitmapUpdate) -> Result { + // Clone to satisfy spawn_blocking 'static requirement + // this should be cheap, even if using bitmap, since vec![] will be empty + let mut updater = self.bitmap_updater.clone(); + let (res, bitmap) = + tokio::task::spawn_blocking(move || time_warn!("Encoding bitmap", 10, (updater.handle(&bitmap), bitmap))) + .await + .unwrap(); if bitmap.x == 0 && bitmap.y == 0 && bitmap.width.get() == self.desktop_size.width @@ -134,7 +142,31 @@ impl UpdateEncoder { } } -#[derive(Debug)] +pub(crate) struct EncoderIter<'a> { + encoder: &'a mut UpdateEncoder, + update: Option, +} + +impl EncoderIter<'_> { + pub(crate) async fn next(&mut self) -> Option> { + let update = self.update.take()?; + let encoder = &mut self.encoder; + + let res = match update { + DisplayUpdate::Bitmap(bitmap) => encoder.bitmap(bitmap).await, + DisplayUpdate::PointerPosition(pos) => UpdateEncoder::pointer_position(pos), + DisplayUpdate::RGBAPointer(ptr) => UpdateEncoder::rgba_pointer(ptr), + DisplayUpdate::ColorPointer(ptr) => UpdateEncoder::color_pointer(ptr), + DisplayUpdate::HidePointer => UpdateEncoder::hide_pointer(), + DisplayUpdate::DefaultPointer => UpdateEncoder::default_pointer(), + DisplayUpdate::Resize(_) => return None, + }; + + Some(res) + } +} + +#[derive(Debug, Clone)] enum BitmapUpdater { None(NoneHandler), Bitmap(BitmapHandler), @@ -155,7 +187,7 @@ trait BitmapUpdateHandler { fn handle(&mut self, bitmap: &BitmapUpdate) -> Result; } -#[derive(Debug)] +#[derive(Clone, Debug)] struct NoneHandler; impl BitmapUpdateHandler for NoneHandler { @@ -169,6 +201,7 @@ impl BitmapUpdateHandler for NoneHandler { } } +#[derive(Clone)] struct BitmapHandler { bitmap: BitmapEncoder, } @@ -209,7 +242,7 @@ impl BitmapUpdateHandler for BitmapHandler { } } -#[derive(Debug)] +#[derive(Debug, Clone)] struct RemoteFxHandler { remotefx: RfxEncoder, codec_id: u8, diff --git a/crates/ironrdp-server/src/encoder/rfx.rs b/crates/ironrdp-server/src/encoder/rfx.rs index 68566c0e..784775c0 100644 --- a/crates/ironrdp-server/src/encoder/rfx.rs +++ b/crates/ironrdp-server/src/encoder/rfx.rs @@ -11,7 +11,7 @@ use ironrdp_pdu::WriteCursor; use crate::BitmapUpdate; -#[derive(Debug)] +#[derive(Debug, Clone)] pub(crate) struct RfxEncoder { entropy_algorithm: rfx::EntropyAlgorithm, } diff --git a/crates/ironrdp-server/src/server.rs b/crates/ironrdp-server/src/server.rs index 2a95272b..fabf9d6e 100644 --- a/crates/ironrdp-server/src/server.rs +++ b/crates/ironrdp-server/src/server.rs @@ -32,7 +32,7 @@ use crate::clipboard::CliprdrServerFactory; use crate::display::{DisplayUpdate, RdpServerDisplay}; use crate::encoder::UpdateEncoder; use crate::handler::RdpServerInputHandler; -use crate::{builder, capabilities, time_warn, SoundServerFactory}; +use crate::{builder, capabilities, SoundServerFactory}; #[derive(Clone)] pub struct RdpServerOptions { @@ -423,39 +423,30 @@ impl RdpServer { buffer: &mut Vec, mut encoder: UpdateEncoder, ) -> Result<(RunState, UpdateEncoder)> { - let mut fragmenter = match update { - DisplayUpdate::Bitmap(bitmap) => { - let (enc, res) = task::spawn_blocking(move || { - let res = time_warn!("Encoding bitmap", 10, encoder.bitmap(bitmap)); - (encoder, res) - }) - .await?; - encoder = enc; - res - } - DisplayUpdate::PointerPosition(pos) => encoder.pointer_position(pos), - DisplayUpdate::Resize(desktop_size) => { - debug!(?desktop_size, "Display resize"); - encoder.set_desktop_size(desktop_size); - deactivate_all(io_channel_id, user_channel_id, writer).await?; - return Ok((RunState::DeactivationReactivation { desktop_size }, encoder)); - } - DisplayUpdate::RGBAPointer(ptr) => encoder.rgba_pointer(ptr), - DisplayUpdate::ColorPointer(ptr) => encoder.color_pointer(ptr), - DisplayUpdate::HidePointer => encoder.hide_pointer(), - DisplayUpdate::DefaultPointer => encoder.default_pointer(), - } - .context("error during update encoding")?; - - if fragmenter.size_hint() > buffer.len() { - buffer.resize(fragmenter.size_hint(), 0); + if let DisplayUpdate::Resize(desktop_size) = update { + debug!(?desktop_size, "Display resize"); + encoder.set_desktop_size(desktop_size); + deactivate_all(io_channel_id, user_channel_id, writer).await?; + return Ok((RunState::DeactivationReactivation { desktop_size }, encoder)); } - while let Some(len) = fragmenter.next(buffer) { - writer - .write_all(&buffer[..len]) - .await - .context("failed to write display update")?; + let mut encoder_iter = encoder.update(update); + loop { + let Some(fragmenter) = encoder_iter.next().await else { + break; + }; + + let mut fragmenter = fragmenter.context("error while encoding")?; + if fragmenter.size_hint() > buffer.len() { + buffer.resize(fragmenter.size_hint(), 0); + } + + while let Some(len) = fragmenter.next(buffer) { + writer + .write_all(&buffer[..len]) + .await + .context("failed to write display update")?; + } } Ok((RunState::Continue, encoder)) From 184cfd24aefbb79f1d9b1da26eaec44ceb37c8d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 9 Apr 2025 13:36:32 +0400 Subject: [PATCH 0981/1273] test(server): run the fast_path tests from testsuite-core MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- crates/ironrdp-server/Cargo.toml | 1 + crates/ironrdp-testsuite-core/tests/main.rs | 1 + crates/ironrdp-testsuite-core/tests/server/fast_path.rs | 1 + crates/ironrdp-testsuite-core/tests/server/mod.rs | 1 + 4 files changed, 4 insertions(+) create mode 120000 crates/ironrdp-testsuite-core/tests/server/fast_path.rs create mode 100644 crates/ironrdp-testsuite-core/tests/server/mod.rs diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index 222103ce..e2a26728 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -13,6 +13,7 @@ categories.workspace = true [lib] doctest = true +test = false [features] default = ["rayon"] diff --git a/crates/ironrdp-testsuite-core/tests/main.rs b/crates/ironrdp-testsuite-core/tests/main.rs index c583d131..474a5053 100644 --- a/crates/ironrdp-testsuite-core/tests/main.rs +++ b/crates/ironrdp-testsuite-core/tests/main.rs @@ -21,5 +21,6 @@ mod pcb; mod pdu; mod rdcleanpath; mod rdpsnd; +mod server; mod server_name; mod session; diff --git a/crates/ironrdp-testsuite-core/tests/server/fast_path.rs b/crates/ironrdp-testsuite-core/tests/server/fast_path.rs new file mode 120000 index 00000000..f7df2434 --- /dev/null +++ b/crates/ironrdp-testsuite-core/tests/server/fast_path.rs @@ -0,0 +1 @@ +../../../ironrdp-server/src/encoder/fast_path.rs \ No newline at end of file diff --git a/crates/ironrdp-testsuite-core/tests/server/mod.rs b/crates/ironrdp-testsuite-core/tests/server/mod.rs new file mode 100644 index 00000000..6e563040 --- /dev/null +++ b/crates/ironrdp-testsuite-core/tests/server/mod.rs @@ -0,0 +1 @@ +mod fast_path; From 0ff1ed8de5a22ffe34a6a492425dc74728202fbe Mon Sep 17 00:00:00 2001 From: Alex Yusiuk <55661041+RRRadicalEdward@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:28:27 +0300 Subject: [PATCH 0982/1273] refactor(web-client): refactor `iron-remote-gui` into `iron-remote-desktop` (#722) --- ARCHITECTURE.md | 8 +- Cargo.lock | 13 + crates/ironrdp-web/Cargo.toml | 2 + crates/ironrdp-web/src/clipboard/mod.rs | 4 +- .../ironrdp-web/src/clipboard/transaction.rs | 2 +- crates/ironrdp-web/src/error.rs | 32 +- crates/ironrdp-web/src/input.rs | 18 +- crates/ironrdp-web/src/lib.rs | 4 +- crates/ironrdp-web/src/session.rs | 79 +- web-client/README.md | 2 +- .../.gitignore | 0 .../.npmrc | 0 .../iron-remote-desktop-rdp/.prettierignore | 15 + .../iron-remote-desktop-rdp/.prettierrc.yaml | 19 + web-client/iron-remote-desktop-rdp/README.md | 23 + .../iron-remote-desktop-rdp/eslint.config.mjs | 80 + .../iron-remote-desktop-rdp/package-lock.json | 3995 +++++++++++++++++ .../iron-remote-desktop-rdp/package.json | 51 + .../iron-remote-desktop-rdp/pre-build.js | 34 + .../public/package.json | 22 + .../iron-remote-desktop-rdp/src/main.ts | 26 + .../iron-remote-desktop-rdp/src/vite-env.d.ts | 1 + .../iron-remote-desktop-rdp/tsconfig.json | 30 + .../tsconfig.node.json | 0 .../iron-remote-desktop-rdp/vite.config.ts | 25 + web-client/iron-remote-desktop/.gitignore | 27 + web-client/iron-remote-desktop/.npmrc | 1 + .../.prettierignore | 32 +- .../README.md | 59 +- .../eslint.config.mjs | 0 .../index.html | 4 +- .../package-lock.json | 4 +- .../package.json | 7 +- .../public/package.json | 6 +- .../public/test.html | 6 +- .../src/enums/LockKey.ts | 0 .../src/enums/LogType.ts | 0 .../src/enums/ModifierKey.ts | 0 .../src/enums/OS.ts | 0 .../src/enums/ScreenScale.ts | 0 .../src/enums/SessionEventType.ts | 0 .../src/enums/SpecialCombination.ts | 0 .../src/interfaces/ClipboardContent.ts | 6 + .../src/interfaces/ClipboardTransaction.ts | 8 + .../src/interfaces/DesktopSize.ts | 2 + .../src/interfaces/DeviceEvent.ts | 10 + .../src/interfaces/InputTransaction.ts | 6 + .../src/interfaces/MousePosition.ts | 0 .../src/interfaces/NewSessionInfo.ts | 0 .../src/interfaces/RemoteDesktopModule.ts | 23 + .../src/interfaces/ResizeEvent.ts | 0 .../src/interfaces/ServerRect.ts | 6 +- .../src/interfaces/Session.ts | 23 + .../src/interfaces/SessionBuilder.ts | 90 + .../src/interfaces/SessionTerminationInfo.ts | 3 + .../src/interfaces/UserInteraction.ts | 0 .../src/interfaces/session-event.ts | 8 +- .../src/iron-remote-desktop.svelte} | 75 +- .../src/lib/scancodes.ts | 0 web-client/iron-remote-desktop/src/main.ts | 15 + .../src/services/PublicAPI.ts | 30 +- .../src/services/logging.service.ts | 0 .../src/services/remote-desktop.service.ts} | 113 +- .../src/vite-env.d.ts | 0 .../svelte.config.js | 0 .../tsconfig.json | 0 .../iron-remote-desktop/tsconfig.node.json | 8 + .../vite.config.ts | 2 +- web-client/iron-remote-gui/pre-build.js | 27 - web-client/iron-remote-gui/src/main.ts | 9 - web-client/iron-svelte-client/.gitignore | 3 +- web-client/iron-svelte-client/README.md | 8 +- web-client/iron-svelte-client/pre-build.js | 60 +- web-client/iron-svelte-client/src/app.html | 2 +- .../src/lib/login/login.svelte | 9 +- .../src/lib/popup-screen/popup-screen.svelte | 15 +- .../lib/remote-screen/remote-screen.svelte | 9 +- .../src/models/desktop-size.ts | 16 +- .../iron-svelte-client/src/models/rect.ts | 7 - .../src/services/session.service.ts | 2 +- web-client/iron-svelte-client/vite.config.ts | 5 + xtask/src/check.rs | 3 +- xtask/src/clean.rs | 6 +- xtask/src/cli.rs | 3 + xtask/src/main.rs | 1 + xtask/src/web.rs | 36 +- 86 files changed, 4950 insertions(+), 330 deletions(-) rename web-client/{iron-remote-gui => iron-remote-desktop-rdp}/.gitignore (100%) rename web-client/{iron-remote-gui => iron-remote-desktop-rdp}/.npmrc (100%) create mode 100644 web-client/iron-remote-desktop-rdp/.prettierignore create mode 100644 web-client/iron-remote-desktop-rdp/.prettierrc.yaml create mode 100644 web-client/iron-remote-desktop-rdp/README.md create mode 100644 web-client/iron-remote-desktop-rdp/eslint.config.mjs create mode 100644 web-client/iron-remote-desktop-rdp/package-lock.json create mode 100644 web-client/iron-remote-desktop-rdp/package.json create mode 100644 web-client/iron-remote-desktop-rdp/pre-build.js create mode 100644 web-client/iron-remote-desktop-rdp/public/package.json create mode 100644 web-client/iron-remote-desktop-rdp/src/main.ts create mode 100644 web-client/iron-remote-desktop-rdp/src/vite-env.d.ts create mode 100644 web-client/iron-remote-desktop-rdp/tsconfig.json rename web-client/{iron-remote-gui => iron-remote-desktop-rdp}/tsconfig.node.json (100%) create mode 100644 web-client/iron-remote-desktop-rdp/vite.config.ts create mode 100644 web-client/iron-remote-desktop/.gitignore create mode 100644 web-client/iron-remote-desktop/.npmrc rename web-client/{iron-remote-gui => iron-remote-desktop}/.prettierignore (92%) rename web-client/{iron-remote-gui => iron-remote-desktop}/README.md (61%) rename web-client/{iron-remote-gui => iron-remote-desktop}/eslint.config.mjs (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/index.html (75%) rename web-client/{iron-remote-gui => iron-remote-desktop}/package-lock.json (99%) rename web-client/{iron-remote-gui => iron-remote-desktop}/package.json (90%) rename web-client/{iron-remote-gui => iron-remote-desktop}/public/package.json (78%) rename web-client/{iron-remote-gui => iron-remote-desktop}/public/test.html (62%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/LockKey.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/LogType.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/ModifierKey.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/OS.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/ScreenScale.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/SessionEventType.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/enums/SpecialCombination.ts (100%) create mode 100644 web-client/iron-remote-desktop/src/interfaces/ClipboardContent.ts create mode 100644 web-client/iron-remote-desktop/src/interfaces/ClipboardTransaction.ts rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/DesktopSize.ts (55%) create mode 100644 web-client/iron-remote-desktop/src/interfaces/DeviceEvent.ts create mode 100644 web-client/iron-remote-desktop/src/interfaces/InputTransaction.ts rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/MousePosition.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/NewSessionInfo.ts (100%) create mode 100644 web-client/iron-remote-desktop/src/interfaces/RemoteDesktopModule.ts rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/ResizeEvent.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/ServerRect.ts (88%) create mode 100644 web-client/iron-remote-desktop/src/interfaces/Session.ts create mode 100644 web-client/iron-remote-desktop/src/interfaces/SessionBuilder.ts create mode 100644 web-client/iron-remote-desktop/src/interfaces/SessionTerminationInfo.ts rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/UserInteraction.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/interfaces/session-event.ts (65%) rename web-client/{iron-remote-gui/src/iron-remote-gui.svelte => iron-remote-desktop/src/iron-remote-desktop.svelte} (90%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/lib/scancodes.ts (100%) create mode 100644 web-client/iron-remote-desktop/src/main.ts rename web-client/{iron-remote-gui => iron-remote-desktop}/src/services/PublicAPI.ts (70%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/services/logging.service.ts (100%) rename web-client/{iron-remote-gui/src/services/wasm-bridge.service.ts => iron-remote-desktop/src/services/remote-desktop.service.ts} (80%) rename web-client/{iron-remote-gui => iron-remote-desktop}/src/vite-env.d.ts (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/svelte.config.js (100%) rename web-client/{iron-remote-gui => iron-remote-desktop}/tsconfig.json (100%) create mode 100644 web-client/iron-remote-desktop/tsconfig.node.json rename web-client/{iron-remote-gui => iron-remote-desktop}/vite.config.ts (94%) delete mode 100644 web-client/iron-remote-gui/pre-build.js delete mode 100644 web-client/iron-remote-gui/src/main.ts delete mode 100644 web-client/iron-svelte-client/src/models/rect.ts diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index d4c3ab48..72e1313a 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -168,12 +168,18 @@ WebAssembly high-level bindings targeting web browsers. This crate is an **API Boundary** (WASM module). -#### [`web-client/iron-remote-gui`](./web-client/iron-remote-gui) +#### [`web-client/iron-remote-desktop`](./web-client/iron-remote-desktop) Core frontend UI used by `iron-svelte-client` as a Web Component. This crate is an **API Boundary**. +#### [`web-client/iron-remote-desktop-rdp`](./web-client/iron-remote-desktop-rdp) + +Implementation of the TypeScript interfaces exposed by WebAssembly bindings from `ironrdp-web` and used by `iron-svelte-client`. + +This crate is an **API Boundary**. + #### [`web-client/iron-svelte-client`](./web-client/iron-svelte-client) Web-based frontend using `Svelte` and `Material` frameworks. diff --git a/Cargo.lock b/Cargo.lock index 9cfff1a7..085515ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2809,6 +2809,8 @@ dependencies = [ "resize", "rgb", "semver", + "serde", + "serde-wasm-bindgen", "smallvec", "softbuffer", "tap", @@ -4668,6 +4670,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_bytes" version = "0.11.17" diff --git a/crates/ironrdp-web/Cargo.toml b/crates/ironrdp-web/Cargo.toml index c3ae62ce..8bb6e483 100644 --- a/crates/ironrdp-web/Cargo.toml +++ b/crates/ironrdp-web/Cargo.toml @@ -45,6 +45,8 @@ web-sys = { version = "0.3", features = ["HtmlCanvasElement"] } js-sys = "0.3" gloo-net = { version = "0.6", default-features = false, features = ["websocket", "http", "io-util"] } gloo-timers = { version = "0.3", default-features = false, features = ["futures"] } +serde = { version = "1.0", features = ["derive"] } +serde-wasm-bindgen = "0.6" tracing-web = "0.1" # Rendering diff --git a/crates/ironrdp-web/src/clipboard/mod.rs b/crates/ironrdp-web/src/clipboard/mod.rs index 8cc035d5..6ede01b7 100644 --- a/crates/ironrdp-web/src/clipboard/mod.rs +++ b/crates/ironrdp-web/src/clipboard/mod.rs @@ -137,7 +137,7 @@ impl WasmClipboard { pub(crate) fn new(message_proxy: WasmClipboardMessageProxy, js_callbacks: JsClipboardCallbacks) -> Self { Self { local_clipboard: None, - remote_clipboard: ClipboardTransaction::new(), + remote_clipboard: ClipboardTransaction::construct(), proxy: message_proxy, js_callbacks, @@ -505,7 +505,7 @@ impl WasmClipboard { } else { // If no initial clipboard callback was set, send empty format list instead return self.process_event(WasmClipboardBackendMessage::LocalClipboardChanged( - ClipboardTransaction::new(), + ClipboardTransaction::construct(), )); } } diff --git a/crates/ironrdp-web/src/clipboard/transaction.rs b/crates/ironrdp-web/src/clipboard/transaction.rs index a6d5f921..9cd90c31 100644 --- a/crates/ironrdp-web/src/clipboard/transaction.rs +++ b/crates/ironrdp-web/src/clipboard/transaction.rs @@ -19,7 +19,7 @@ impl ClipboardTransaction { #[wasm_bindgen] impl ClipboardTransaction { - pub fn new() -> Self { + pub fn construct() -> Self { Self { contents: Vec::new() } } diff --git a/crates/ironrdp-web/src/error.rs b/crates/ironrdp-web/src/error.rs index 0f0cab1e..806589ef 100644 --- a/crates/ironrdp-web/src/error.rs +++ b/crates/ironrdp-web/src/error.rs @@ -3,7 +3,7 @@ use wasm_bindgen::prelude::*; #[wasm_bindgen] #[derive(Clone, Copy)] -pub enum IronRdpErrorKind { +pub enum RemoteDesktopErrorKind { /// Catch-all error kind General, /// Incorrect password used @@ -19,30 +19,30 @@ pub enum IronRdpErrorKind { } #[wasm_bindgen] -pub struct IronRdpError { - kind: IronRdpErrorKind, +pub struct RemoteDesktopError { + kind: RemoteDesktopErrorKind, source: anyhow::Error, } -impl IronRdpError { - pub fn with_kind(mut self, kind: IronRdpErrorKind) -> Self { +impl RemoteDesktopError { + pub fn with_kind(mut self, kind: RemoteDesktopErrorKind) -> Self { self.kind = kind; self } } #[wasm_bindgen] -impl IronRdpError { +impl RemoteDesktopError { pub fn backtrace(&self) -> String { format!("{:?}", self.source) } - pub fn kind(&self) -> IronRdpErrorKind { + pub fn kind(&self) -> RemoteDesktopErrorKind { self.kind } } -impl From for IronRdpError { +impl From for RemoteDesktopError { fn from(e: connector::ConnectorError) -> Self { use sspi::credssp::NStatusCode; @@ -50,13 +50,13 @@ impl From for IronRdpError { ConnectorErrorKind::Credssp(sspi::Error { nstatus: Some(NStatusCode::WRONG_PASSWORD), .. - }) => IronRdpErrorKind::WrongPassword, + }) => RemoteDesktopErrorKind::WrongPassword, ConnectorErrorKind::Credssp(sspi::Error { nstatus: Some(NStatusCode::LOGON_FAILURE), .. - }) => IronRdpErrorKind::LogonFailure, - ConnectorErrorKind::AccessDenied => IronRdpErrorKind::AccessDenied, - _ => IronRdpErrorKind::General, + }) => RemoteDesktopErrorKind::LogonFailure, + ConnectorErrorKind::AccessDenied => RemoteDesktopErrorKind::AccessDenied, + _ => RemoteDesktopErrorKind::General, }; Self { @@ -66,19 +66,19 @@ impl From for IronRdpError { } } -impl From for IronRdpError { +impl From for RemoteDesktopError { fn from(e: ironrdp::session::SessionError) -> Self { Self { - kind: IronRdpErrorKind::General, + kind: RemoteDesktopErrorKind::General, source: anyhow::Error::new(e), } } } -impl From for IronRdpError { +impl From for RemoteDesktopError { fn from(e: anyhow::Error) -> Self { Self { - kind: IronRdpErrorKind::General, + kind: RemoteDesktopErrorKind::General, source: e, } } diff --git a/crates/ironrdp-web/src/input.rs b/crates/ironrdp-web/src/input.rs index 9d1313a3..09bbff35 100644 --- a/crates/ironrdp-web/src/input.rs +++ b/crates/ironrdp-web/src/input.rs @@ -8,7 +8,7 @@ pub struct DeviceEvent(pub(crate) Operation); #[wasm_bindgen] impl DeviceEvent { - pub fn new_mouse_button_pressed(button: u8) -> Self { + pub fn mouse_button_pressed(button: u8) -> Self { match MouseButton::from_web_button(button) { Some(button) => Self(Operation::MouseButtonPressed(button)), None => { @@ -18,7 +18,7 @@ impl DeviceEvent { } } - pub fn new_mouse_button_released(button: u8) -> Self { + pub fn mouse_button_released(button: u8) -> Self { match MouseButton::from_web_button(button) { Some(button) => Self(Operation::MouseButtonReleased(button)), None => { @@ -28,30 +28,30 @@ impl DeviceEvent { } } - pub fn new_mouse_move(x: u16, y: u16) -> Self { + pub fn mouse_move(x: u16, y: u16) -> Self { Self(Operation::MouseMove(MousePosition { x, y })) } - pub fn new_wheel_rotations(vertical: bool, rotation_units: i16) -> Self { + pub fn wheel_rotations(vertical: bool, rotation_units: i16) -> Self { Self(Operation::WheelRotations(WheelRotations { is_vertical: vertical, rotation_units, })) } - pub fn new_key_pressed(scancode: u16) -> Self { + pub fn key_pressed(scancode: u16) -> Self { Self(Operation::KeyPressed(Scancode::from_u16(scancode))) } - pub fn new_key_released(scancode: u16) -> Self { + pub fn key_released(scancode: u16) -> Self { Self(Operation::KeyReleased(Scancode::from_u16(scancode))) } - pub fn new_unicode_pressed(unicode: char) -> Self { + pub fn unicode_pressed(unicode: char) -> Self { Self(Operation::UnicodeKeyPressed(unicode)) } - pub fn new_unicode_released(unicode: char) -> Self { + pub fn unicode_released(unicode: char) -> Self { Self(Operation::UnicodeKeyReleased(unicode)) } } @@ -61,7 +61,7 @@ pub struct InputTransaction(pub(crate) SmallVec<[Operation; 3]>); #[wasm_bindgen] impl InputTransaction { - pub fn new() -> Self { + pub fn construct() -> Self { Self(SmallVec::new()) } diff --git a/crates/ironrdp-web/src/lib.rs b/crates/ironrdp-web/src/lib.rs index 614e43bc..5f51b023 100644 --- a/crates/ironrdp-web/src/lib.rs +++ b/crates/ironrdp-web/src/lib.rs @@ -23,7 +23,7 @@ mod session; use wasm_bindgen::prelude::*; #[wasm_bindgen] -pub fn ironrdp_init(log_level: &str) { +pub fn iron_init(log_level: &str) { // When the `console_error_panic_hook` feature is enabled, we can call the // `set_panic_hook` function at least once during initialization, and then // we will get better error messages if our code ever panics. @@ -69,7 +69,7 @@ pub struct DesktopSize { #[wasm_bindgen] impl DesktopSize { - pub fn new(width: u16, height: u16) -> Self { + pub fn construct(width: u16, height: u16) -> Self { DesktopSize { width, height } } } diff --git a/crates/ironrdp-web/src/session.rs b/crates/ironrdp-web/src/session.rs index aaa82f70..9ce6e73b 100644 --- a/crates/ironrdp-web/src/session.rs +++ b/crates/ironrdp-web/src/session.rs @@ -29,6 +29,7 @@ use ironrdp::session::{fast_path, ActiveStage, ActiveStageOutput, GracefulDiscon use ironrdp_core::WriteBuf; use ironrdp_futures::{single_sequence_step_read, FramedWrite}; use rgb::AsPixels as _; +use serde::{Deserialize, Serialize}; use tap::prelude::*; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::spawn_local; @@ -36,7 +37,7 @@ use web_sys::HtmlCanvasElement; use crate::canvas::Canvas; use crate::clipboard::{ClipboardTransaction, WasmClipboard, WasmClipboardBackend, WasmClipboardBackendMessage}; -use crate::error::{IronRdpError, IronRdpErrorKind}; +use crate::error::{RemoteDesktopError, RemoteDesktopErrorKind}; use crate::image::extract_partial_image; use crate::input::InputTransaction; use crate::network_client::WasmNetworkClient; @@ -102,7 +103,7 @@ impl Default for SessionBuilderInner { #[wasm_bindgen] impl SessionBuilder { - pub fn new() -> SessionBuilder { + pub fn construct() -> SessionBuilder { Self(Rc::new(RefCell::new(SessionBuilderInner::default()))) } @@ -146,18 +147,6 @@ impl SessionBuilder { self.clone() } - /// Optional - pub fn pcb(&self, pcb: String) -> SessionBuilder { - self.0.borrow_mut().pcb = Some(pcb); - self.clone() - } - - /// Optional - pub fn kdc_proxy_url(&self, kdc_proxy_url: Option) -> SessionBuilder { - self.0.borrow_mut().kdc_proxy_url = kdc_proxy_url; - self.clone() - } - /// Optional pub fn desktop_size(&self, desktop_size: DesktopSize) -> SessionBuilder { self.0.borrow_mut().desktop_size = desktop_size; @@ -216,13 +205,22 @@ impl SessionBuilder { self.clone() } - /// Optional - pub fn use_display_control(&self) -> SessionBuilder { - self.0.borrow_mut().use_display_control = true; + pub fn extension(&self, value: JsValue) -> SessionBuilder { + match serde_wasm_bindgen::from_value::(value) { + Ok(value) => match value { + Extension::KdcProxyUrl(kdc_proxy_url) => self.0.borrow_mut().kdc_proxy_url = Some(kdc_proxy_url), + Extension::Pcb(pcb) => self.0.borrow_mut().pcb = Some(pcb), + Extension::DisplayControl(use_display_control) => { + self.0.borrow_mut().use_display_control = use_display_control + } + }, + Err(error) => error!(%error, "Unsupported extension value"), + } + self.clone() } - pub async fn connect(&self) -> Result { + pub async fn connect(&self) -> Result { let ( username, destination, @@ -297,11 +295,11 @@ impl SessionBuilder { loop { match ws.state() { websocket::State::Closing | websocket::State::Closed => { - return Err(IronRdpError::from(anyhow::anyhow!( - "Failed to connect to {proxy_address} (WebSocket is `{:?}`)", + return Err(RemoteDesktopError::from(anyhow::anyhow!( + "failed to connect to {proxy_address} (WebSocket is `{:?}`)", ws.state() )) - .with_kind(IronRdpErrorKind::ProxyConnect)); + .with_kind(RemoteDesktopErrorKind::ProxyConnect)); } websocket::State::Connecting => { trace!("WebSocket is connecting to proxy at {proxy_address}..."); @@ -354,6 +352,13 @@ impl SessionBuilder { } } +#[derive(Debug, Serialize, Deserialize)] +enum Extension { + KdcProxyUrl(String), + Pcb(String), + DisplayControl(bool), +} + pub(crate) type FastPathInputEvents = smallvec::SmallVec<[FastPathInputEvent; 2]>; #[derive(Debug)] @@ -412,7 +417,7 @@ pub struct Session { #[wasm_bindgen] impl Session { - pub async fn run(&self) -> Result { + pub async fn run(&self) -> Result { let rdp_reader = self .rdp_reader .borrow_mut() @@ -707,17 +712,17 @@ impl Session { } } - pub fn apply_inputs(&self, transaction: InputTransaction) -> Result<(), IronRdpError> { + pub fn apply_inputs(&self, transaction: InputTransaction) -> Result<(), RemoteDesktopError> { let inputs = self.input_database.borrow_mut().apply(transaction); self.h_send_inputs(inputs) } - pub fn release_all_inputs(&self) -> Result<(), IronRdpError> { + pub fn release_all_inputs(&self) -> Result<(), RemoteDesktopError> { let inputs = self.input_database.borrow_mut().release_all(); self.h_send_inputs(inputs) } - fn h_send_inputs(&self, inputs: smallvec::SmallVec<[FastPathInputEvent; 2]>) -> Result<(), IronRdpError> { + fn h_send_inputs(&self, inputs: smallvec::SmallVec<[FastPathInputEvent; 2]>) -> Result<(), RemoteDesktopError> { if !inputs.is_empty() { trace!("Inputs: {inputs:?}"); @@ -735,7 +740,7 @@ impl Session { num_lock: bool, caps_lock: bool, kana_lock: bool, - ) -> Result<(), IronRdpError> { + ) -> Result<(), RemoteDesktopError> { use ironrdp::pdu::input::fast_path::FastPathInput; let event = ironrdp::input::synchronize_event(scroll_lock, num_lock, caps_lock, kana_lock); @@ -750,7 +755,7 @@ impl Session { Ok(()) } - pub fn shutdown(&self) -> Result<(), IronRdpError> { + pub fn shutdown(&self) -> Result<(), RemoteDesktopError> { self.input_events_tx .unbounded_send(RdpInputEvent::TerminateSession) .context("failed to send terminate session event to writer task")?; @@ -758,7 +763,7 @@ impl Session { Ok(()) } - pub async fn on_clipboard_paste(&self, content: ClipboardTransaction) -> Result<(), IronRdpError> { + pub async fn on_clipboard_paste(&self, content: ClipboardTransaction) -> Result<(), RemoteDesktopError> { self.input_events_tx .unbounded_send(RdpInputEvent::ClipboardBackend( WasmClipboardBackendMessage::LocalClipboardChanged(content), @@ -768,7 +773,7 @@ impl Session { Ok(()) } - fn set_cursor_style(&self, style: CursorStyle) -> Result<(), IronRdpError> { + fn set_cursor_style(&self, style: CursorStyle) -> Result<(), RemoteDesktopError> { let (kind, data, hotspot_x, hotspot_y) = match style { CursorStyle::Default => ("default", None, None, None), CursorStyle::Hidden => ("hidden", None, None, None), @@ -818,6 +823,10 @@ impl Session { // plain scancode events are allowed to function correctly). false } + + pub fn extension_call(_value: JsValue) -> Result { + Ok(JsValue::null()) + } } fn build_config( @@ -913,7 +922,7 @@ async fn connect( clipboard_backend, use_display_control, }: ConnectParams, -) -> Result<(connector::ConnectionResult, WebSocket), IronRdpError> { +) -> Result<(connector::ConnectionResult, WebSocket), RemoteDesktopError> { let mut framed = ironrdp_futures::LocalFuturesFramed::new(ws); let mut connector = ClientConnector::new(config); @@ -960,7 +969,7 @@ async fn connect_rdcleanpath( destination: String, proxy_auth_token: String, pcb: Option, -) -> Result<(ironrdp_futures::Upgraded, Vec), IronRdpError> +) -> Result<(ironrdp_futures::Upgraded, Vec), RemoteDesktopError> where S: ironrdp_futures::FramedRead + FramedWrite, { @@ -1039,10 +1048,10 @@ where server_addr, } => (x224_connection_response, server_cert_chain, server_addr), ironrdp_rdcleanpath::RDCleanPath::Err(error) => { - return Err( - IronRdpError::from(anyhow::anyhow!("received an RDCleanPath error: {error}")) - .with_kind(IronRdpErrorKind::RDCleanPath), - ); + return Err(RemoteDesktopError::from( + anyhow::Error::new(error).context("received an RDCleanPath error"), + ) + .with_kind(RemoteDesktopErrorKind::RDCleanPath)); } }; diff --git a/web-client/README.md b/web-client/README.md index d176f051..ce80ea75 100644 --- a/web-client/README.md +++ b/web-client/README.md @@ -2,7 +2,7 @@ IronRDP also supports the web browser as a first class target. -See the [iron-remote-gui](./iron-remote-gui) for the reusable Web Component, and [iron-svelte-client](./iron-svelte-client) for a demonstration. +See the [iron-remote-desktop](./iron-remote-desktop) for the reusable Web Component, and [iron-svelte-client](./iron-svelte-client) for a demonstration. Note that the demonstration client is not intended to be used in production as-is. Devolutions is shipping well-integrated, production-ready IronRDP web clients as part of: diff --git a/web-client/iron-remote-gui/.gitignore b/web-client/iron-remote-desktop-rdp/.gitignore similarity index 100% rename from web-client/iron-remote-gui/.gitignore rename to web-client/iron-remote-desktop-rdp/.gitignore diff --git a/web-client/iron-remote-gui/.npmrc b/web-client/iron-remote-desktop-rdp/.npmrc similarity index 100% rename from web-client/iron-remote-gui/.npmrc rename to web-client/iron-remote-desktop-rdp/.npmrc diff --git a/web-client/iron-remote-desktop-rdp/.prettierignore b/web-client/iron-remote-desktop-rdp/.prettierignore new file mode 100644 index 00000000..f4ae8393 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/.prettierignore @@ -0,0 +1,15 @@ +node_modules/ +.DS_Store +.env +.env.* +!.env.example + +/package +/build +/static/bearcss +/static/material-icons +/dist +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/web-client/iron-remote-desktop-rdp/.prettierrc.yaml b/web-client/iron-remote-desktop-rdp/.prettierrc.yaml new file mode 100644 index 00000000..6038f247 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/.prettierrc.yaml @@ -0,0 +1,19 @@ +# Prettier: +# - https://prettier.io/docs/en/options +--- +useTabs: false +tabWidth: 4 +singleQuote: true +semi: true +trailingComma: all +printWidth: 120 + +overrides: + - files: + - '*.yml' + - '*.yaml' + - '*.json' + - '*.html' + - '*.md' + options: + tabWidth: 2 diff --git a/web-client/iron-remote-desktop-rdp/README.md b/web-client/iron-remote-desktop-rdp/README.md new file mode 100644 index 00000000..c00407be --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/README.md @@ -0,0 +1,23 @@ +# Iron Remote Desktop RDP + +This is implementation of `RemoteDesktopModule` interface from [iron-remote-desktop](../iron-remote-desktop) for RDP connection. + +## Development + +Make your modification in the source code then use [iron-svelte-client](../iron-svelte-client) to test. + +## Build + +Run `npm run build` + +## Usage + +As member of the Devolutions organization, you can import the Web Component from JFrog Artifactory by running the following npm command: + +```shell +$ npm install @devolutions/iron-remote-desktop-rdp +``` + +Otherwise, you can run `npm install` targeting the `dist/` folder directly. + +Import the `iron-remote-desktop-rdp.umd.cjs` from `node_modules/` folder. diff --git a/web-client/iron-remote-desktop-rdp/eslint.config.mjs b/web-client/iron-remote-desktop-rdp/eslint.config.mjs new file mode 100644 index 00000000..780a61ec --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/eslint.config.mjs @@ -0,0 +1,80 @@ +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import globals from 'globals'; +import tsParser from '@typescript-eslint/parser'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: [ + '**/*.cjs', + '**/.DS_Store', + '**/node_modules', + 'build', + 'package', + '**/.env', + '**/.env.*', + '!**/.env.example', + '**/pnpm-lock.yaml', + '**/package-lock.json', + '**/yarn.lock', + ], + }, + ...compat.extends('eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'), + { + plugins: { + '@typescript-eslint': typescriptEslint, + }, + + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + + parser: tsParser, + ecmaVersion: 2020, + sourceType: 'module', + + parserOptions: { + project: './tsconfig.json', + }, + }, + + rules: { + strict: 2, + + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + }, + ], + + '@typescript-eslint/strict-boolean-expressions': [ + 2, + { + allowString: false, + allowNumber: false, + }, + ], + + 'prettier/prettier': [ + 'error', + { + endOfLine: 'auto', + }, + ], + }, + }, +]; diff --git a/web-client/iron-remote-desktop-rdp/package-lock.json b/web-client/iron-remote-desktop-rdp/package-lock.json new file mode 100644 index 00000000..e3ee0b29 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/package-lock.json @@ -0,0 +1,3995 @@ +{ + "name": "@devolutions/iron-remote-desktop-rdp", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@devolutions/iron-remote-desktop-rdp", + "version": "0.0.0", + "dependencies": { + "rxjs": "^6.6.7", + "ua-parser-js": "^1.0.33" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", + "@types/ua-parser-js": "^0.7.36", + "@typescript-eslint/eslint-plugin": "^8.25.0", + "eslint": "^9.21.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "globals": "^16.0.0", + "prettier": "^3.1.0", + "tslib": "^2.4.1", + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vite-plugin-dts": "^4.5.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.51.1", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.51.1.tgz", + "integrity": "sha512-VoFvIeYXme8QctXDkixy1KIn750kZaFy2snAEOB3nhDFfbBcJNEcvBrpCIQIV09MqI4g9egKUkg+/12WMRC77w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.30.3", + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.11.0", + "@rushstack/rig-package": "0.5.3", + "@rushstack/terminal": "0.15.0", + "@rushstack/ts-command-line": "4.23.5", + "lodash": "~4.17.15", + "minimatch": "~3.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.7.3" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.30.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.3.tgz", + "integrity": "sha512-yEAvq0F78MmStXdqz9TTT4PZ05Xu5R8nqgwI5xmUmQjWBQ9E6R2n8HB/iZMRciG4rf9iwI2mtuQwIzDXBvHn1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.15.1", + "@microsoft/tsdoc-config": "~0.17.1", + "@rushstack/node-core-library": "5.11.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", + "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", + "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.15.1", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz", + "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz", + "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz", + "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz", + "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz", + "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz", + "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz", + "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz", + "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz", + "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz", + "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz", + "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.11.0.tgz", + "integrity": "sha512-I8+VzG9A0F3nH2rLpPd7hF8F7l5Xb7D+ldrWVZYegXM6CsKkvWc670RlgK3WX8/AseZfXA/vVrh0bpXe2Y2UDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz", + "integrity": "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.0.tgz", + "integrity": "sha512-vXQPRQ+vJJn4GVqxkwRe+UGgzNxdV8xuJZY2zem46Y0p3tlahucH9/hPmLGj2i9dQnUBFiRnoM9/KW7PYw8F4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.11.0", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.23.5", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.5.tgz", + "integrity": "sha512-jg70HfoK44KfSP3MTiL5rxsZH7X1ktX3cZs9Sl8eDu1/LxJSbPsh0MOFRC710lIuYYSgxWjI5AjbCBAl7u3RxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.15.0", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@swc/core": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.5.tgz", + "integrity": "sha512-EVY7zfpehxhTZXOfy508gb3D78ihoGGmvyiTWtlBPjgIaidP1Xw0naHMD78CWiFlZmeDjKXJufGtsEGOnZdmNA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.19" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.5", + "@swc/core-darwin-x64": "1.11.5", + "@swc/core-linux-arm-gnueabihf": "1.11.5", + "@swc/core-linux-arm64-gnu": "1.11.5", + "@swc/core-linux-arm64-musl": "1.11.5", + "@swc/core-linux-x64-gnu": "1.11.5", + "@swc/core-linux-x64-musl": "1.11.5", + "@swc/core-win32-arm64-msvc": "1.11.5", + "@swc/core-win32-ia32-msvc": "1.11.5", + "@swc/core-win32-x64-msvc": "1.11.5" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.5.tgz", + "integrity": "sha512-GEd1hzEx0mSGkJYMFMGLnrGgjL2rOsOsuYWyjyiA3WLmhD7o+n/EWBDo6mzD/9aeF8dzSPC0TnW216gJbvrNzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.5.tgz", + "integrity": "sha512-toz04z9wAClVvQSEY3xzrgyyeWBAfMWcKG4K0ugNvO56h/wczi2ZHRlnAXZW1tghKBk3z6MXqa/srfXgNhffKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.5.tgz", + "integrity": "sha512-5SjmKxXdwbBpsYGTpgeXOXMIjS563/ntRGn8Zc12H/c4VfPrRLGhgbJ/48z2XVFyBLcw7BCHZyFuVX1+ZI3W0Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.5.tgz", + "integrity": "sha512-pydIlInHRzRIwB0NHblz3Dx58H/bsi0I5F2deLf9iOmwPNuOGcEEZF1Qatc7YIjP5DFbXK+Dcz+pMUZb2cc2MQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.5.tgz", + "integrity": "sha512-LhBHKjkZq5tJF1Lh0NJFpx7ROnCWLckrlIAIdSt9XfOV+zuEXJQOj+NFcM1eNk17GFfFyUMOZyGZxzYq5dveEQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.5.tgz", + "integrity": "sha512-dCi4xkxXlsk5sQYb3i413Cfh7+wMJeBYTvBZTD5xh+/DgRtIcIJLYJ2tNjWC4/C2i5fj+Ze9bKNSdd8weRWZ3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.5.tgz", + "integrity": "sha512-K0AC4TreM5Oo/tXNXnE/Gf5+5y/HwUdd7xvUjOpZddcX/RlsbYOKWLgOtA3fdFIuta7XC+vrGKmIhm5l70DSVQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.5.tgz", + "integrity": "sha512-wzum8sYUsvPY7kgUfuqVYTgIPYmBC8KPksoNM1fz5UfhudU0ciQuYvUBD47GIGOevaoxhLkjPH4CB95vh1mJ9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.5.tgz", + "integrity": "sha512-lco7mw0TPRTpVPR6NwggJpjdUkAboGRkLrDHjIsUaR+Y5+0m5FMMkHOMxWXAbrBS5c4ph7QErp4Lma4r9Mn5og==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.5.tgz", + "integrity": "sha512-E+DApLSC6JRK8VkDa4bNsBdD7Qoomx1HvKVZpOXl9v94hUZI5GMExl4vU5isvb+hPWL7rZ0NeI7ITnVLgLJRbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", + "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ua-parser-js": { + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", + "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/type-utils": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", + "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz", + "integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", + "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", + "integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", + "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", + "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", + "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz", + "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.11" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz", + "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz", + "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.11", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/language-core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz", + "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.11", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^0.4.9", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/alien-signals": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz", + "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.1.tgz", + "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exsolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.1.tgz", + "integrity": "sha512-Smf0iQtkQVJLaph8r/qS8C8SWfQkaq9Q/dFcD44MLbJj6DNhlWefVuaS21SjfqOsBbjVlKtbCj6L9ekXK6EZUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/local-pkg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.8.tgz", + "integrity": "sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz", + "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.9", + "@rollup/rollup-android-arm64": "4.34.9", + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-freebsd-arm64": "4.34.9", + "@rollup/rollup-freebsd-x64": "4.34.9", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.9", + "@rollup/rollup-linux-arm-musleabihf": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.9", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9", + "@rollup/rollup-linux-riscv64-gnu": "4.34.9", + "@rollup/rollup-linux-s390x-gnu": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-ia32-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-dts": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.5.3.tgz", + "integrity": "sha512-P64VnD00dR+e8S26ESoFELqc17+w7pKkwlBpgXteOljFyT0zDwD8hH4zXp49M/kciy//7ZbVXIwQCekBJjfWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "^7.50.1", + "@rollup/pluginutils": "^5.1.4", + "@volar/typescript": "^2.4.11", + "@vue/language-core": "2.2.0", + "compare-versions": "^6.1.1", + "debug": "^4.4.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.5.0.tgz", + "integrity": "sha512-r/DtuvHrSqUVk23XpG2cl8gjt1aATMG5cjExXL1BUTcSNab6CzkcPua9BPEc9fuTP5UpwClCxUe3+dNGL0yrgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-virtual": "^3.0.2", + "@swc/core": "^1.10.16", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.4.1.tgz", + "integrity": "sha512-ja3nSo2UCkVeitltJGkS3pfQHAanHv/DqGatdI39ja6McgABlpsZ5hVgl6wuR8Qx5etY3T5qgDQhOWzc5RReZA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": "^2 || ^3 || ^4 || ^5 || ^6" + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/web-client/iron-remote-desktop-rdp/package.json b/web-client/iron-remote-desktop-rdp/package.json new file mode 100644 index 00000000..18a969ac --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/package.json @@ -0,0 +1,51 @@ +{ + "name": "@devolutions/iron-remote-desktop-rdp", + "author": "Nicolas Girot", + "email": "ngirot@devolutions.net", + "contributors": [ + "Benoit Cortier", + "Irving Ou", + "Vladislav Nikonov", + "Zacharia Ellaham", + "Alexandr Yusuk" + ], + "description": "Web Component providing agnostic implementation for Iron Wasm base client", + "version": "0.0.0", + "type": "module", + "private": true, + "scripts": { + "dev": "npm run pre-build && vite", + "build": "npm run pre-build && vite build", + "build-alone": "vite build", + "pre-build": "node ./pre-build.js", + "preview": "vite preview", + "check": "tsc --noEmit", + "check:dist": "tsc ./dist/index.d.ts --noEmit", + "check:watch": "tsc --watch --noEmit", + "lint": "npm run lint:prettier && npm run lint:eslint", + "lint:prettier": "prettier --check .", + "lint:eslint": "eslint src/**", + "format": "prettier --write ." + }, + "devDependencies": { + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", + "@types/ua-parser-js": "^0.7.36", + "@typescript-eslint/eslint-plugin": "^8.25.0", + "eslint": "^9.21.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "globals": "^16.0.0", + "prettier": "^3.1.0", + "tslib": "^2.4.1", + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vite-plugin-dts": "^4.5.0", + "vite-plugin-top-level-await": "^1.2.2", + "vite-plugin-wasm": "^3.1.0" + }, + "dependencies": { + "rxjs": "^6.6.7", + "ua-parser-js": "^1.0.33" + } +} diff --git a/web-client/iron-remote-desktop-rdp/pre-build.js b/web-client/iron-remote-desktop-rdp/pre-build.js new file mode 100644 index 00000000..b36f45b3 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/pre-build.js @@ -0,0 +1,34 @@ +import { spawn } from 'child_process'; + +const run = async (command, cwd) => { + try { + const buildCommand = spawn(command, { + stdio: 'pipe', + shell: true, + cwd: cwd, + }); + + buildCommand.stdout.on('data', (data) => { + console.log(`${data}`); + }); + + buildCommand.stderr.on('data', (data) => { + console.error(`${data}`); + }); + + const exitCode = await new Promise((resolve, reject) => { + buildCommand.on('close', (code) => { + if (code !== 0) { + reject(new Error(`Process exited with non-zero code: ${code}`)); + } + resolve(code); + }); + }); + + console.log(`Child process exited with code: ${exitCode}`); + } catch (err) { + console.error(`Process run failed: ${err}`); + } +}; + +await run('cargo xtask web build', '../../'); diff --git a/web-client/iron-remote-desktop-rdp/public/package.json b/web-client/iron-remote-desktop-rdp/public/package.json new file mode 100644 index 00000000..650c34d2 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/public/package.json @@ -0,0 +1,22 @@ +{ + "name": "@devolutions/iron-remote-desktop-rdp", + "author": "Nicolas Girot", + "email": "ngirot@devolutions.net", + "contributors": [ + "Benoit Cortier", + "Irving Ou", + "Vladislav Nikonov", + "Zacharia Ellaham" + ], + "description": "Web Component providing agnostic implementation for Iron Wasm base client.", + "version": "0.13.1", + "main": "iron-remote-desktop-rdp.js", + "types": "index.d.ts", + "files": [ + "iron-remote-desktop-rdp.js", + "index.d.ts" + ], + "dependencies": { + "rxjs": "^6.6.7" + } +} diff --git a/web-client/iron-remote-desktop-rdp/src/main.ts b/web-client/iron-remote-desktop-rdp/src/main.ts new file mode 100644 index 00000000..3bdd5a54 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/src/main.ts @@ -0,0 +1,26 @@ +import init, { + iron_init, + DesktopSize, + DeviceEvent, + InputTransaction, + RemoteDesktopError, + Session, + SessionBuilder, + SessionTerminationInfo, + ClipboardTransaction, + ClipboardContent, +} from '../../../crates/ironrdp-web/pkg/ironrdp_web'; + +export default { + init, + iron_init, + DesktopSize, + DeviceEvent, + InputTransaction, + RemoteDesktopError, + SessionBuilder, + ClipboardTransaction, + ClipboardContent, + Session, + SessionTerminationInfo, +}; diff --git a/web-client/iron-remote-desktop-rdp/src/vite-env.d.ts b/web-client/iron-remote-desktop-rdp/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/web-client/iron-remote-desktop-rdp/tsconfig.json b/web-client/iron-remote-desktop-rdp/tsconfig.json new file mode 100644 index 00000000..44d0f26e --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true, + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": false, + "checkJs": false, + "isolatedModules": true, + "strict": true, + "strictNullChecks": true, + "noImplicitAny": true, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*.ts", "src/**/*.js"], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/web-client/iron-remote-gui/tsconfig.node.json b/web-client/iron-remote-desktop-rdp/tsconfig.node.json similarity index 100% rename from web-client/iron-remote-gui/tsconfig.node.json rename to web-client/iron-remote-desktop-rdp/tsconfig.node.json diff --git a/web-client/iron-remote-desktop-rdp/vite.config.ts b/web-client/iron-remote-desktop-rdp/vite.config.ts new file mode 100644 index 00000000..a81a5412 --- /dev/null +++ b/web-client/iron-remote-desktop-rdp/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; +import topLevelAwait from 'vite-plugin-top-level-await'; +import dtsPlugin from 'vite-plugin-dts'; + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + lib: { + entry: './src/main.ts', + name: 'IronRemoteDesktopRdp', + formats: ['es'], + }, + }, + server: { + fs: { + strict: false, + }, + }, + plugins: [ + topLevelAwait(), + dtsPlugin({ + rollupTypes: true, + }), + ], +}); diff --git a/web-client/iron-remote-desktop/.gitignore b/web-client/iron-remote-desktop/.gitignore new file mode 100644 index 00000000..c903f2bb --- /dev/null +++ b/web-client/iron-remote-desktop/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/web-client/iron-remote-desktop/.npmrc b/web-client/iron-remote-desktop/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/web-client/iron-remote-desktop/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/web-client/iron-remote-gui/.prettierignore b/web-client/iron-remote-desktop/.prettierignore similarity index 92% rename from web-client/iron-remote-gui/.prettierignore rename to web-client/iron-remote-desktop/.prettierignore index a01b395d..764bd85c 100644 --- a/web-client/iron-remote-gui/.prettierignore +++ b/web-client/iron-remote-desktop/.prettierignore @@ -1,16 +1,16 @@ -node_modules/ -.DS_Store -.env -.env.* -!.env.example - -/.svelte-kit -/package -/build -/static/bearcss -/static/material-icons -/dist -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock +node_modules/ +.DS_Store +.env +.env.* +!.env.example + +/.svelte-kit +/package +/build +/static/bearcss +/static/material-icons +/dist +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/web-client/iron-remote-gui/README.md b/web-client/iron-remote-desktop/README.md similarity index 61% rename from web-client/iron-remote-gui/README.md rename to web-client/iron-remote-desktop/README.md index 5f3933f6..39d02899 100644 --- a/web-client/iron-remote-gui/README.md +++ b/web-client/iron-remote-desktop/README.md @@ -1,6 +1,7 @@ -# Iron Remote GUI +# Iron Remote Desktop This is the core of the web client written on top of Svelte and built as a reusable Web Component. +Also, it contains the TypeScript interfaces exposed by WebAssembly bindings from `ironrdp-web` and used by `iron-svelte-client`. ## Development @@ -15,17 +16,17 @@ Run `npm run build` As member of the Devolutions organization, you can import the Web Component from JFrog Artifactory by running the following npm command: ```shell -$ npm install @devolutions/iron-remote-gui +$ npm install @devolutions/iron-remote-desktop ``` Otherwise, you can run `npm install` targeting the `dist/` folder directly. -Import the `iron-remote-gui.umd.cjs` from `node_modules/` folder. +Import the `iron-remote-desktop.umd.cjs` from `node_modules/` folder. -Then use the HTML tag `` in your page. +Then use the HTML tag `` in your page. -In your code add a listener for the `ready` event on the `iron-remote-gui` HTML element. -Get `evt.detail.irgUserInteraction` from the `Promise`, a property whose type is `UserInteractionService`. +In your code add a listener for the `ready` event on the `iron-remote-desktop` HTML element. +Get `evt.detail.irgUserInteraction` from the `Promise`, a property whose type is `UserInteraction`. Call the `connect` method on this object. ## Limitations @@ -35,22 +36,23 @@ You need to recreate them on your application for now (it will be improved in fu Also, even if the connection to RDP work there is still a lot of improvement to do. As of now, you can expect, mouse movement and click (4 buttons) - no scroll, Keyboard for at least the standard. -Windows and CTRL+ALT+DEL can be called by method on `UserInteractionService`. +Windows and CTRL+ALT+DEL can be called by method on `UserInteraction`. Lock keys (like caps lock), have a partial support. Other advanced functionalities (sharing / copy past...) are not implemented yet. ## Component parameters -You can add some parameters for default initialization on the component ``. +You can add some parameters for default initialization on the component ``. > Note that due to a limitation of the framework all parameters need to be lower-cased. - `scale`: The scaling behavior of the distant screen. Can be `fit`, `real` or `full`. Default is `real`; -- `verbose`: Show logs from `iron-remote-gui`. `true` or `false`. Default is `false`. +- `verbose`: Show logs from `iron-remote-desktop`. `true` or `false`. Default is `false`. - `debugwasm`: Show debug info from web assembly. Can be `"OFF"`, `"ERROR"`, `"WARN"`, `"INFO"`, `"DEBUG"`, `"TRACE"`. Default is `"OFF"`. -- `flexcentre`: Helper to force `iron-remote-gui` a flex and centering the content automatically. Otherwise, you need to manage manually. Default is `true`. +- `flexcentre`: Helper to force `iron-remote-desktop` a flex and centering the content automatically. Otherwise, you need to manage manually. Default is `true`. +- `module`: An implementation of the [RemoteDesktopModule](./src/interfaces/RemoteDesktopModule.ts) -## `UserInteractionService` methods +## `UserInteraction` methods ```ts connect( @@ -63,6 +65,7 @@ connect( desktopSize?: DesktopSize, preConnectionBlob?: string, kdc_proxy_url?: string, + use_display_control: boolean, ): Observable; ``` @@ -70,12 +73,20 @@ connect( > `destination` refers to the Devolutions Gateway hostname and port. -> `authtoken` is the authentication token to send to the Devolutions Gateway. +> `proxyAddress` is the address of the Devolutions Gateway proxy > `serverDomain` is the Windows domain name (if the target computer has one) +> `authtoken` is the authentication token to send to the Devolutions Gateway. + +> `desktopSize` is the initial size of the desktop + +> `preConnectionBlob` is the pre connection blob data + > `kdc_proxy_url` is the URL to a KDC Proxy, as specified in [MS-KKDCP documentation](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-kkdcp/5bcebb8d-b747-4ee5-9453-428aec1c5c38) +> `use_display_control` is the value that defined if the Display Control Virtual Channel will be used. + > `ctrlAltDel()` > > Sends the ctrl+alt+del key to server. @@ -84,11 +95,31 @@ connect( > > Sends the meta key event to remote host (i.e.: Windows key). -> `setVisibility(value: bool)` +> `setVisibility(value: boolean)` > > Shows or hides rendering canvas. > `setScale(scale: ScreenScale)` > > Sets the scale behavior of the canvas. -> See the [ScreenScale](./src/services/user-interaction-service.ts) enum for possible values. +> See the [ScreenScale](./src/enums/ScreenScale.ts) enum for possible values. + +> `shutdown()` +> +> Shutdowns the active session. + +> `setKeyboardUnicodeMode(use_unicode: boolean)` +> +> Sets the keyboard Unicode mode. + +> `setCursorStyleOverride(style?: string)` +> +> Overrides the default cursor style. If `style` is `null`, the default cursor style will be used. + +> `resize(width: number, height: number, scale?: number)` +> +> Resizes the screen. + +> `setEnableClipboard(enable: boolean)` +> +> Enables or disable the clipboard based on the `enable` value. diff --git a/web-client/iron-remote-gui/eslint.config.mjs b/web-client/iron-remote-desktop/eslint.config.mjs similarity index 100% rename from web-client/iron-remote-gui/eslint.config.mjs rename to web-client/iron-remote-desktop/eslint.config.mjs diff --git a/web-client/iron-remote-gui/index.html b/web-client/iron-remote-desktop/index.html similarity index 75% rename from web-client/iron-remote-gui/index.html rename to web-client/iron-remote-desktop/index.html index 11509362..d5f41f4e 100644 --- a/web-client/iron-remote-gui/index.html +++ b/web-client/iron-remote-desktop/index.html @@ -7,10 +7,10 @@ - + - + + - + %sveltekit.head% diff --git a/web-client/iron-svelte-client/src/lib/login/login.svelte b/web-client/iron-svelte-client/src/lib/login/login.svelte index de66873b..94941338 100644 --- a/web-client/iron-svelte-client/src/lib/login/login.svelte +++ b/web-client/iron-svelte-client/src/lib/login/login.svelte @@ -1,11 +1,11 @@
      diff --git a/web-client/iron-svelte-client/src/lib/popup-screen/popup-screen.svelte b/web-client/iron-svelte-client/src/lib/popup-screen/popup-screen.svelte index 6ec7b69f..8f4165c0 100644 --- a/web-client/iron-svelte-client/src/lib/popup-screen/popup-screen.svelte +++ b/web-client/iron-svelte-client/src/lib/popup-screen/popup-screen.svelte @@ -2,7 +2,7 @@ import { onMount } from 'svelte'; import { setCurrentSessionActive, userInteractionService } from '../../services/session.service'; import type { UserInteraction } from '../../../static/iron-remote-desktop'; - import IronRdp from '../../../static/iron-remote-desktop-rdp'; + import { Backend } from '../../../static/iron-remote-desktop-rdp'; import { preConnectionBlob, displayControl, kdcProxyUrl } from '../../../static/iron-remote-desktop-rdp'; let userInteraction: UserInteraction; @@ -146,7 +146,7 @@
      - +

      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 diff --git a/iron-web-client/src/assets/ironrdp-fake.js b/iron-web-client/src/assets/ironrdp-fake.js deleted file mode 100644 index e69de29b..00000000 diff --git a/iron-web-client/src/environments/environment-tauri.prod.ts b/iron-web-client/src/environments/environment-tauri.prod.ts deleted file mode 100644 index ef63818d..00000000 --- a/iron-web-client/src/environments/environment-tauri.prod.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: true, - tauri: true -}; diff --git a/iron-web-client/src/environments/environment-tauri.ts b/iron-web-client/src/environments/environment-tauri.ts deleted file mode 100644 index bbcf3908..00000000 --- a/iron-web-client/src/environments/environment-tauri.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, - tauri: true -}; diff --git a/iron-web-client/src/environments/environment.prod.ts b/iron-web-client/src/environments/environment.prod.ts deleted file mode 100644 index 66b835d5..00000000 --- a/iron-web-client/src/environments/environment.prod.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const environment = { - production: true, - tauri: false -}; diff --git a/iron-web-client/src/environments/environment.ts b/iron-web-client/src/environments/environment.ts deleted file mode 100644 index 00bcdc77..00000000 --- a/iron-web-client/src/environments/environment.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, - tauri: false -}; diff --git a/iron-web-client/src/favicon.ico b/iron-web-client/src/favicon.ico deleted file mode 100644 index 997406ad22c29aae95893fb3d666c30258a09537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - - - - IronWebClient - - - - - - - - - - - diff --git a/iron-web-client/src/main.ts b/iron-web-client/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/iron-web-client/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/iron-web-client/src/models/desktop-size.ts b/iron-web-client/src/models/desktop-size.ts deleted file mode 100644 index f399fefb..00000000 --- a/iron-web-client/src/models/desktop-size.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class DesktopSize { - width:number; - height: number; -} diff --git a/iron-web-client/src/models/rect.ts b/iron-web-client/src/models/rect.ts deleted file mode 100644 index 2d17a44c..00000000 --- a/iron-web-client/src/models/rect.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class Rect { - top: number; - left: number; - width: number; - height: number; - buffer: ArrayBuffer -} diff --git a/iron-web-client/src/models/session.ts b/iron-web-client/src/models/session.ts deleted file mode 100644 index 75c0440d..00000000 --- a/iron-web-client/src/models/session.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {Guid} from "guid-typescript"; -import {DesktopSize} from "./desktop-size"; - -export class Session { - id:Guid; - sessionId: number; - name?:string; - active: boolean; - desktopSize: DesktopSize; - - constructor(name?: string) { - this.id = Guid.create(); - this.name = name; - } -} diff --git a/iron-web-client/src/models/tab.ts b/iron-web-client/src/models/tab.ts deleted file mode 100644 index 4c2be16a..00000000 --- a/iron-web-client/src/models/tab.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Guid} from "guid-typescript"; - -export class Tab{ - id: Guid; - name?: string; - - constructor (id:Guid, name?:string){ - this.id = id; - this.name = name; - } -} diff --git a/iron-web-client/src/polyfills.ts b/iron-web-client/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/iron-web-client/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/iron-web-client/src/styles.scss b/iron-web-client/src/styles.scss deleted file mode 100644 index 56cb72b0..00000000 --- a/iron-web-client/src/styles.scss +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -body { font-family: Roboto, "Helvetica Neue", sans-serif; } - diff --git a/iron-web-client/src/test.ts b/iron-web-client/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/iron-web-client/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting(), -); - -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().forEach(context); diff --git a/iron-web-client/tsconfig.app.json b/iron-web-client/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/iron-web-client/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/iron-web-client/tsconfig.json b/iron-web-client/tsconfig.json deleted file mode 100644 index b8bbfd40..00000000 --- a/iron-web-client/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "strictPropertyInitialization": false, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "files": [ - "../ffi/wasm/pkg/ironrdp_bg.wasm.d.ts" - ], - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/iron-web-client/tsconfig.spec.json b/iron-web-client/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/iron-web-client/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} From 9b5afa53822d4e41f9abf54df16dbee6fdbdc063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 7 Feb 2023 15:16:42 -0500 Subject: [PATCH 0108/1273] feat(input): support for extended keys Issue: ARC-129 --- ffi/wasm/src/input.rs | 4 +- ironrdp-input/src/lib.rs | 96 ++++++++++++------ ironrdp-input/tests/fastpath_packets.rs | 124 ++++++++++++++++++------ ironrdp-input/tests/smoke.rs | 50 +++++++--- 4 files changed, 199 insertions(+), 75 deletions(-) diff --git a/ffi/wasm/src/input.rs b/ffi/wasm/src/input.rs index 518f1bc4..f070eb42 100644 --- a/ffi/wasm/src/input.rs +++ b/ffi/wasm/src/input.rs @@ -20,11 +20,11 @@ impl DeviceEvent { Self(Operation::MouseMove(MousePosition { x, y })) } - pub fn new_key_pressed(scancode: u8) -> Self { + pub fn new_key_pressed(scancode: u16) -> Self { Self(Operation::KeyPressed(Scancode::from(scancode))) } - pub fn new_key_released(scancode: u8) -> Self { + pub fn new_key_released(scancode: u16) -> Self { Self(Operation::KeyReleased(Scancode::from(scancode))) } } diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 3d4bf104..6f1994e5 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -29,9 +29,13 @@ impl MouseButton { pub const X1: Self = Self(Self::X1_VAL); pub const X2: Self = Self(Self::X2_VAL); - pub fn is_unknown(&self) -> bool { + pub fn is_unknown(self) -> bool { self.0 > Self::X2.0 } + + pub fn as_idx(self) -> usize { + usize::from(self.0) + } } impl From for MouseButton { @@ -46,31 +50,50 @@ impl From for u8 { } } -impl From for usize { - fn from(value: MouseButton) -> Self { - usize::from(value.0) +/// Keyboard scan code. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct Scancode { + code: u8, + extended: bool, +} + +impl Scancode { + pub fn as_idx(self) -> usize { + if self.extended { + usize::from(self.code) + 256 + } else { + usize::from(self.code) + } } } -/// Keyboard scan code. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Scancode(u8); +impl From<(u8, bool)> for Scancode { + fn from((code, extended): (u8, bool)) -> Self { + Self { code, extended } + } +} -impl From for Scancode { - fn from(value: u8) -> Self { - Self(value) +impl From for Scancode { + fn from(code: u16) -> Self { + let extended = code & 0xE000 == 0xE000; + let code = code as u8; + Self { code, extended } } } impl From for u8 { fn from(value: Scancode) -> Self { - value.0 + value.code } } -impl From for usize { +impl From for u16 { fn from(value: Scancode) -> Self { - usize::from(value.0) + if value.extended { + u16::from(value.code) | 0xE000 + } else { + u16::from(value.code) + } } } @@ -90,7 +113,7 @@ pub enum Operation { KeyReleased(Scancode), } -pub type KeyboardState = BitArr!(for 256); +pub type KeyboardState = BitArr!(for 512); pub type MouseButtonsState = BitArr!(for 5); /// In-memory database for maintaining the current keyboard and mouse state. @@ -115,17 +138,17 @@ impl Database { } } - pub fn is_key_pressed(&self, code: Scancode) -> bool { + pub fn is_key_pressed(&self, scancode: Scancode) -> bool { self.keyboard - .get(usize::from(code)) + .get(scancode.as_idx()) .as_deref() .copied() .unwrap_or(false) } - pub fn is_mouse_button_pressed(&self, code: MouseButton) -> bool { + pub fn is_mouse_button_pressed(&self, button: MouseButton) -> bool { self.mouse_buttons - .get(usize::from(code)) + .get(button.as_idx()) .as_deref() .copied() .unwrap_or(false) @@ -156,7 +179,7 @@ impl Database { continue; } - let was_pressed = self.mouse_buttons.replace(usize::from(button), true); + let was_pressed = self.mouse_buttons.replace(button.as_idx(), true); if !was_pressed { let event = match MouseButtonFlags::from(button) { @@ -183,7 +206,7 @@ impl Database { continue; } - let was_pressed = self.mouse_buttons.replace(usize::from(button), false); + let was_pressed = self.mouse_buttons.replace(button.as_idx(), false); if was_pressed { let event = match MouseButtonFlags::from(button) { @@ -219,24 +242,35 @@ impl Database { } } Operation::KeyPressed(scancode) => { - let was_pressed = self.keyboard.replace(usize::from(scancode), true); + let was_pressed = self.keyboard.replace(scancode.as_idx(), true); - if !was_pressed { - events.push(FastPathInputEvent::KeyboardEvent( - KeyboardFlags::empty(), - u8::from(scancode), - )); - } - } - Operation::KeyReleased(scancode) => { - let was_pressed = self.keyboard.replace(usize::from(scancode), false); + let mut flags = KeyboardFlags::empty(); + + if scancode.extended { + flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + }; if was_pressed { events.push(FastPathInputEvent::KeyboardEvent( - KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + flags | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, u8::from(scancode), )); } + + events.push(FastPathInputEvent::KeyboardEvent(flags, u8::from(scancode))); + } + Operation::KeyReleased(scancode) => { + let was_pressed = self.keyboard.replace(scancode.as_idx(), false); + + let mut flags = KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE; + + if scancode.extended { + flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + }; + + if was_pressed { + events.push(FastPathInputEvent::KeyboardEvent(flags, u8::from(scancode))); + } } } } diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index 398d1cac..9aec0185 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -72,20 +72,20 @@ fn keyboard() { { let to_press = [ - Operation::KeyPressed(Scancode::from(0)), - Operation::KeyPressed(Scancode::from(23)), - Operation::KeyPressed(Scancode::from(39)), - Operation::KeyPressed(Scancode::from(19)), - Operation::KeyPressed(Scancode::from(20)), - Operation::KeyPressed(Scancode::from(90)), + Operation::KeyPressed(Scancode::from((0, false))), + Operation::KeyPressed(Scancode::from((23, false))), + Operation::KeyPressed(Scancode::from((39, false))), + Operation::KeyPressed(Scancode::from((19, true))), + Operation::KeyPressed(Scancode::from((20, true))), + Operation::KeyPressed(Scancode::from((90, false))), ]; let expected_inputs = [ FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 23), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 39), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 19), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, 20), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), ]; @@ -93,8 +93,8 @@ fn keyboard() { expected_keyboard_state.set(0, true); expected_keyboard_state.set(23, true); expected_keyboard_state.set(39, true); - expected_keyboard_state.set(19, true); - expected_keyboard_state.set(20, true); + expected_keyboard_state.set(256 + 19, true); + expected_keyboard_state.set(256 + 20, true); expected_keyboard_state.set(90, true); let actual_inputs = db.apply(to_press); @@ -106,18 +106,24 @@ fn keyboard() { { let to_press = [ - Operation::KeyReleased(Scancode::from(0)), - Operation::KeyReleased(Scancode::from(2)), - Operation::KeyReleased(Scancode::from(3)), - Operation::KeyReleased(Scancode::from(19)), - Operation::KeyReleased(Scancode::from(20)), - Operation::KeyReleased(Scancode::from(100)), + Operation::KeyReleased(Scancode::from((0, false))), + Operation::KeyReleased(Scancode::from((2, false))), + Operation::KeyReleased(Scancode::from((3, false))), + Operation::KeyReleased(Scancode::from((19, true))), + Operation::KeyReleased(Scancode::from((20, true))), + Operation::KeyReleased(Scancode::from((100, false))), ]; let expected_inputs = [ FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 19), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 20), + FastPathInputEvent::KeyboardEvent( + KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, + 19, + ), + FastPathInputEvent::KeyboardEvent( + KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, + 20, + ), ]; let mut expected_keyboard_state = KeyboardState::ZERO; @@ -134,22 +140,60 @@ fn keyboard() { } #[test] -fn no_duplicate() { +fn keyboard_repeat() { let mut db = Database::default(); let to_press = [ - Operation::KeyPressed(Scancode::from(0)), - Operation::KeyPressed(Scancode::from(0)), - Operation::MouseButtonPressed(MouseButton::LEFT), - Operation::KeyPressed(Scancode::from(0)), - Operation::KeyPressed(Scancode::from(20)), - Operation::KeyPressed(Scancode::from(90)), - Operation::KeyPressed(Scancode::from(90)), - Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::KeyPressed(Scancode::from((0, false))), + Operation::KeyPressed(Scancode::from((0, false))), + Operation::KeyPressed(Scancode::from((0, false))), + Operation::KeyPressed(Scancode::from((20, false))), + Operation::KeyPressed(Scancode::from((90, false))), + Operation::KeyPressed(Scancode::from((90, false))), + Operation::KeyReleased(Scancode::from((90, false))), + Operation::KeyReleased(Scancode::from((90, false))), + Operation::KeyPressed(Scancode::from((20, false))), + Operation::KeyReleased(Scancode::from((120, false))), + Operation::KeyReleased(Scancode::from((90, false))), ]; let expected_inputs = [ FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), + ]; + + let actual_inputs = db.apply(to_press); + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); +} + +#[test] +fn mouse_button_no_duplicate() { + let mut db = Database::default(); + + let to_press = [ + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonReleased(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::RIGHT), + ]; + + let expected_inputs = [ FastPathInputEvent::MouseEvent(MousePdu { wheel_events: WheelEvents::empty(), movement_events: MovementEvents::empty(), @@ -158,8 +202,30 @@ fn no_duplicate() { x_position: 0, y_position: 0, }), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::RIGHT_BUTTON, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::RIGHT_BUTTON | ButtonEvents::DOWN, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), ]; let actual_inputs = db.apply(to_press); diff --git a/ironrdp-input/tests/smoke.rs b/ironrdp-input/tests/smoke.rs index a3e1ebcb..ef83b4b0 100644 --- a/ironrdp-input/tests/smoke.rs +++ b/ironrdp-input/tests/smoke.rs @@ -17,7 +17,7 @@ fn mouse_button_op() -> impl Strategy { } fn scancode() -> impl Strategy { - any::().prop_map(Scancode::from) + (any::(), any::()).prop_map(Scancode::from) } fn key_op() -> impl Strategy { @@ -84,28 +84,52 @@ fn smoke_keyboard() { for op in ops { let packets = db.apply(std::iter::once(op.clone())); - let packet = packets.into_iter().next(); match op { - Operation::KeyPressed(key) => { - ensure!(db.is_key_pressed(key)); + Operation::KeyPressed(scancode) => { + ensure!(packets.len() <= 2); + ensure!(db.is_key_pressed(scancode)); - if let Some(packet) = packet { - if let FastPathInputEvent::KeyboardEvent(flags, scancode) = packet { - ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); - ensure!(scancode == u8::from(key)) - } else { - bail!("unexpected packet emitted"); + let mut packets = packets.into_iter(); + + match (packets.next(), packets.next()) { + (None, None) => {} + (None, Some(_)) => unreachable!(), + (Some(pressed_packet), None) => { + if let FastPathInputEvent::KeyboardEvent(flags, scancode) = pressed_packet { + ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(scancode == u8::from(scancode)) + } else { + bail!("unexpected packet emitted"); + } + } + (Some(released_packet), Some(pressed_packet)) => { + if let FastPathInputEvent::KeyboardEvent(flags, scancode) = released_packet { + ensure!(flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(scancode == u8::from(scancode)) + } else { + bail!("unexpected packet emitted"); + } + + if let FastPathInputEvent::KeyboardEvent(flags, scancode) = pressed_packet { + ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(scancode == u8::from(scancode)) + } else { + bail!("unexpected packet emitted"); + } } } } - Operation::KeyReleased(key) => { - ensure!(!db.is_key_pressed(key)); + Operation::KeyReleased(scancode) => { + ensure!(packets.len() <= 1); + ensure!(!db.is_key_pressed(scancode)); + + let packet = packets.into_iter().next(); if let Some(packet) = packet { if let FastPathInputEvent::KeyboardEvent(flags, scancode) = packet { ensure!(flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); - ensure!(scancode == u8::from(key)) + ensure!(scancode == u8::from(scancode)) } else { bail!("unexpected packet emitted"); } From 5908f57bcf3af51b6c8a966c35c5cdce3c2cddd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20CORTIER?= Date: Tue, 7 Feb 2023 15:19:19 -0500 Subject: [PATCH 0109/1273] ci: update ubuntu runner --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88b4c1d9..71c6be31 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: jobs: formatting: name: Check formatting - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 @@ -28,7 +28,7 @@ jobs: lints: name: Lints - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 needs: formatting steps: @@ -64,7 +64,7 @@ jobs: - os: windows runner: windows-2019 - os: linux - runner: ubuntu-18.04 + runner: ubuntu-20.04 steps: - uses: actions/checkout@v3 From d58a48f86cbad4362911f9efdaccbed9f25dfc70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Tue, 7 Feb 2023 20:16:29 -0500 Subject: [PATCH 0110/1273] feat(input): release all keys and buttons API (#64) It is intented to be used when focus is lost. Issue: ARC-132 --- ffi/wasm/Cargo.toml | 2 +- ffi/wasm/src/session.rs | 93 +++++++++++++++++-------- ironrdp-input/src/lib.rs | 48 +++++++++++++ ironrdp-input/tests/fastpath_packets.rs | 59 ++++++++++++++++ 4 files changed, 171 insertions(+), 31 deletions(-) diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index 9bbc93a1..33967b22 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -48,6 +48,7 @@ console_error_panic_hook = { version = "0.1.7", optional = true } # Async futures-util = { version = "0.3", features = ["sink", "io"] } +futures-channel = "0.3" # Logging console_log = "0.2.0" @@ -55,5 +56,4 @@ log = "0.4.17" # Utils anyhow = "1" -parking_lot = "0.12.1" smallvec = "1.10.0" diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index 63029f0d..e5768f66 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -2,22 +2,23 @@ use core::cell::RefCell; use std::rc::Rc; use anyhow::Context as _; -use futures_util::{AsyncWriteExt}; +use futures_channel::mpsc; +use futures_util::{AsyncWriteExt as _, StreamExt as _}; use gloo_net::websocket::futures::WebSocket; use ironrdp::geometry::Rectangle; use ironrdp::graphics::image_processing::PixelFormat; use ironrdp::session::connection_sequence::{process_connection_sequence, ConnectionSequenceResult}; use ironrdp::session::image::DecodedImage; use ironrdp::session::{ActiveStageOutput, ActiveStageProcessor, ErasedWriter, FramedReader, InputConfig, RdpError}; -use parking_lot::Mutex; use sspi::AuthIdentity; use wasm_bindgen::prelude::*; +use wasm_bindgen_futures::spawn_local; -use crate::network_client::PlaceholderNetworkClientFactory; -use crate::DesktopSize; use crate::image::RectInfo; -use crate::websocket::WebSocketCompat; use crate::input::InputTransaction; +use crate::network_client::PlaceholderNetworkClientFactory; +use crate::websocket::WebSocketCompat; +use crate::DesktopSize; #[wasm_bindgen] #[derive(Clone, Default)] @@ -100,14 +101,18 @@ impl SessionBuilder { info!("Connected!"); + let (writer_tx, writer_rx) = mpsc::unbounded(); + + spawn_local(writer_task(writer_rx, rdp_writer)); + Ok(Session { input_config, connection_sequence_result, update_callback, update_callback_context, - input_database: Mutex::new(ironrdp_input::Database::new()), - rdp_reader: Mutex::new(rdp_reader), - rdp_writer: Mutex::new(rdp_writer), + input_database: RefCell::new(ironrdp_input::Database::new()), + rdp_reader: RefCell::new(Some(rdp_reader)), + writer_tx, }) } } @@ -118,15 +123,20 @@ pub struct Session { connection_sequence_result: ConnectionSequenceResult, update_callback: js_sys::Function, update_callback_context: JsValue, - input_database: Mutex, - rdp_reader: Mutex, - rdp_writer: Mutex, + input_database: RefCell, + rdp_reader: RefCell>, + writer_tx: mpsc::UnboundedSender>, } #[wasm_bindgen] impl Session { - #[allow(clippy::await_holding_lock)] // exclusive access to the writer until frame is fully written is desirable (we also assume the future is run to completion) pub async fn run(&self) -> Result<(), String> { + let mut rdp_reader = self + .rdp_reader + .borrow_mut() + .take() + .ok_or_else(|| "RDP session can be started only once".to_owned())?; + info!("Start RDP session"); let mut image = DecodedImage::new( @@ -141,9 +151,7 @@ impl Session { 'outer: loop { let outputs = { - let frame = self - .rdp_reader - .lock() + let frame = rdp_reader .read_frame() .await .map_err(|e| e.to_string())? @@ -156,9 +164,10 @@ impl Session { for out in outputs { match out { ActiveStageOutput::ResponseFrame(frame) => { - let mut writer = self.rdp_writer.lock(); - writer.write_all(&frame).await.map_err(|e| e.to_string())?; - writer.flush().await.map_err(|e| e.to_string())?; + // PERF: unnecessary copy + self.writer_tx + .unbounded_send(frame.to_vec()) + .map_err(|e| e.to_string())?; } ActiveStageOutput::GraphicsUpdate(_updated_region) => { // FIXME: atm sending a partial is not working @@ -201,24 +210,31 @@ impl Session { } } - #[allow(clippy::await_holding_lock)] // exclusive access to the writer until frame is fully written is desirable (we also assume the future is run to completion) - pub async fn apply_inputs(&self, transaction: InputTransaction) -> Result<(), String> { - use ironrdp::core::input::fast_path::FastPathInput; - use ironrdp::core::PduParsing as _; + pub fn apply_inputs(&self, transaction: InputTransaction) -> Result<(), String> { + let inputs = self.input_database.borrow_mut().apply(transaction); + self.h_send_inputs(inputs) + } - info!("transaction: {:?}", transaction.0); - let inputs = self.input_database.lock().apply(transaction); - info!("inputs: {inputs:?}"); + pub fn release_all_inputs(&self) -> Result<(), String> { + let inputs = self.input_database.borrow_mut().release_all(); + self.h_send_inputs(inputs) + } + + fn h_send_inputs( + &self, + inputs: smallvec::SmallVec<[ironrdp::core::input::fast_path::FastPathInputEvent; 2]>, + ) -> Result<(), String> { + use ironrdp::core::input::fast_path::FastPathInput; + use ironrdp::core::PduParsing as _; if !inputs.is_empty() { - let fastpath_input = FastPathInput(inputs.into_vec()); // PERF: unnecessary copy + // PERF: unnecessary copy + let fastpath_input = FastPathInput(inputs.into_vec()); let mut frame = Vec::new(); fastpath_input.to_buffer(&mut frame).map_err(|e| e.to_string())?; - let mut writer = self.rdp_writer.lock(); - writer.write_all(&frame).await.map_err(|e| e.to_string())?; - writer.flush().await.map_err(|e| e.to_string())?; + self.writer_tx.unbounded_send(frame).map_err(|e| e.to_string())?; } Ok(()) @@ -249,7 +265,6 @@ fn build_input_config(username: String, password: String, domain: Option user_channel_name: USER_CHANNEL_NAME.to_owned(), graphics_config: None, } - } fn send_update_rectangle( @@ -289,3 +304,21 @@ fn send_update_rectangle( Ok(()) } + +async fn writer_task(rx: mpsc::UnboundedReceiver>, rdp_writer: ErasedWriter) { + debug!("writer task started"); + + async fn inner(mut rx: mpsc::UnboundedReceiver>, mut rdp_writer: ErasedWriter) -> anyhow::Result<()> { + while let Some(frame) = rx.next().await { + rdp_writer.write_all(&frame).await.context("Couldn’t write frame")?; + rdp_writer.flush().await.context("Couldn’t flush")?; + } + + Ok(()) + } + + match inner(rx, rdp_writer).await { + Ok(()) => debug!("writer task ended gracefully"), + Err(e) => error!("writer task ended unexpectedly: {e:#}"), + } +} diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 6f1994e5..830f9d15 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -277,6 +277,54 @@ impl Database { events } + + /// Releases all keys and buttons. Returns a list of RDP input events to send. + pub fn release_all(&mut self) -> SmallVec<[FastPathInputEvent; 2]> { + let mut events = SmallVec::new(); + + for idx in self.mouse_buttons.iter_ones() { + let button_id = u8::try_from(idx).unwrap(); + + let event = match MouseButtonFlags::from(MouseButton::from(button_id)) { + MouseButtonFlags::Button(flags) => FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: flags, + number_of_wheel_rotations: 0, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + MouseButtonFlags::Pointer(flags) => FastPathInputEvent::MouseEventEx(MouseXPdu { + flags, + x_position: self.mouse_position.x, + y_position: self.mouse_position.y, + }), + }; + + events.push(event) + } + + for idx in self.keyboard.iter_ones() { + let (scancode, extended) = if idx >= 256 { + (u8::try_from(idx - 256).unwrap(), true) + } else { + (u8::try_from(idx).unwrap(), false) + }; + + let mut flags = KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE; + + if extended { + flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + }; + + events.push(FastPathInputEvent::KeyboardEvent(flags, scancode)); + } + + self.mouse_buttons = BitArray::ZERO; + self.keyboard = BitArray::ZERO; + + events + } } enum MouseButtonFlags { diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index 9aec0185..a31c7399 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -232,3 +232,62 @@ fn mouse_button_no_duplicate() { assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); } + +#[test] +fn release_all() { + let mut db = Database::default(); + + let ops = [ + Operation::KeyPressed(Scancode::from((0, false))), + Operation::KeyPressed(Scancode::from((23, false))), + Operation::KeyPressed(Scancode::from((39, false))), + Operation::KeyPressed(Scancode::from((19, true))), + Operation::KeyPressed(Scancode::from((20, true))), + Operation::KeyPressed(Scancode::from((90, false))), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonPressed(MouseButton::MIDDLE), + Operation::MouseButtonPressed(MouseButton::RIGHT), + Operation::MouseButtonPressed(MouseButton::LEFT), + Operation::MouseButtonReleased(MouseButton::RIGHT), + ]; + + let _ = db.apply(ops); + + let expected_inputs = [ + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::LEFT_BUTTON, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::MouseEvent(MousePdu { + wheel_events: WheelEvents::empty(), + movement_events: MovementEvents::empty(), + button_events: ButtonEvents::MIDDLE_BUTTON_OR_WHEEL, + number_of_wheel_rotations: 0, + x_position: 0, + y_position: 0, + }), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 23), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 39), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), + FastPathInputEvent::KeyboardEvent( + KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, + 19, + ), + FastPathInputEvent::KeyboardEvent( + KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, + 20, + ), + ]; + + let actual_inputs = db.release_all(); + + assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); +} From 51016a872bd9130487bb04b56e22b3f0b1f41691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Cortier?= Date: Fri, 10 Feb 2023 11:20:44 -0500 Subject: [PATCH 0111/1273] feat(input): synchronize event support (#65) Issue: ARC-130 --- ffi/wasm/src/session.rs | 21 ++++++++ ironrdp-core/src/input/fast_path.rs | 14 +++--- ironrdp-gui-client/src/gui/input.rs | 2 +- ironrdp-input/src/lib.rs | 39 ++++++++++++--- ironrdp-input/tests/fastpath_packets.rs | 66 ++++++++++++++----------- ironrdp-input/tests/smoke.rs | 8 +-- 6 files changed, 102 insertions(+), 48 deletions(-) diff --git a/ffi/wasm/src/session.rs b/ffi/wasm/src/session.rs index e5768f66..ab92aef7 100644 --- a/ffi/wasm/src/session.rs +++ b/ffi/wasm/src/session.rs @@ -239,6 +239,27 @@ impl Session { Ok(()) } + + pub fn synchronize_lock_keys( + &self, + scroll_lock: bool, + num_lock: bool, + caps_lock: bool, + kana_lock: bool, + ) -> Result<(), String> { + use ironrdp::core::input::fast_path::FastPathInput; + use ironrdp::core::PduParsing as _; + + let event = ironrdp_input::synchronize_event(scroll_lock, num_lock, caps_lock, kana_lock); + let fastpath_input = FastPathInput(vec![event]); + + let mut frame = Vec::new(); + fastpath_input.to_buffer(&mut frame).map_err(|e| e.to_string())?; + + self.writer_tx.unbounded_send(frame).map_err(|e| e.to_string())?; + + Ok(()) + } } fn build_input_config(username: String, password: String, domain: Option) -> InputConfig { diff --git a/ironrdp-core/src/input/fast_path.rs b/ironrdp-core/src/input/fast_path.rs index 83b87a3d..4d3bc3da 100644 --- a/ironrdp-core/src/input/fast_path.rs +++ b/ironrdp-core/src/input/fast_path.rs @@ -180,18 +180,18 @@ impl PduParsing for FastPathInputEvent { bitflags! { pub struct KeyboardFlags: u8 { - const FASTPATH_INPUT_KBDFLAGS_RELEASE = 0x01; - const FASTPATH_INPUT_KBDFLAGS_EXTENDED = 0x02; - const FASTPATH_INPUT_KBDFLAGS_EXTENDED1 = 0x04; + const RELEASE = 0x01; + const EXTENDED = 0x02; + const EXTENDED1 = 0x04; } } bitflags! { pub struct SynchronizeFlags: u8 { - const FASTPATH_INPUT_SYNC_SCROLL_LOCK = 0x01; - const FASTPATH_INPUT_SYNC_NUM_LOCK = 0x02; - const FASTPATH_INPUT_SYNC_CAPS_LOCK = 0x04; - const FASTPATH_INPUT_SYNC_KANA_LOCK = 0x08; + const SCROLL_LOCK = 0x01; + const NUM_LOCK = 0x02; + const CAPS_LOCK = 0x04; + const KANA_LOCK = 0x08; } } diff --git a/ironrdp-gui-client/src/gui/input.rs b/ironrdp-gui-client/src/gui/input.rs index 1fed170c..5589ba47 100644 --- a/ironrdp-gui-client/src/gui/input.rs +++ b/ironrdp-gui-client/src/gui/input.rs @@ -45,7 +45,7 @@ pub fn translate_input_event( let flags = match input.state { ElementState::Pressed => KeyboardFlags::empty(), - ElementState::Released => KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + ElementState::Released => KeyboardFlags::RELEASE, }; Some(FastPathInputEvent::KeyboardEvent(flags, scan_code as u8)) } diff --git a/ironrdp-input/src/lib.rs b/ironrdp-input/src/lib.rs index 830f9d15..99d6cca7 100644 --- a/ironrdp-input/src/lib.rs +++ b/ironrdp-input/src/lib.rs @@ -6,8 +6,8 @@ use ironrdp_core::input::mouse_x::PointerFlags; use ironrdp_core::input::{MousePdu, MouseXPdu}; use smallvec::SmallVec; -// TODO: sync event // TODO: mouse wheel +// TODO: unicode keyboard event support /// Number associated to a mouse button. /// @@ -247,12 +247,12 @@ impl Database { let mut flags = KeyboardFlags::empty(); if scancode.extended { - flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + flags |= KeyboardFlags::EXTENDED }; if was_pressed { events.push(FastPathInputEvent::KeyboardEvent( - flags | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, + flags | KeyboardFlags::RELEASE, u8::from(scancode), )); } @@ -262,10 +262,10 @@ impl Database { Operation::KeyReleased(scancode) => { let was_pressed = self.keyboard.replace(scancode.as_idx(), false); - let mut flags = KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE; + let mut flags = KeyboardFlags::RELEASE; if scancode.extended { - flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + flags |= KeyboardFlags::EXTENDED }; if was_pressed { @@ -311,10 +311,10 @@ impl Database { (u8::try_from(idx).unwrap(), false) }; - let mut flags = KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE; + let mut flags = KeyboardFlags::RELEASE; if extended { - flags |= KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED + flags |= KeyboardFlags::EXTENDED }; events.push(FastPathInputEvent::KeyboardEvent(flags, scancode)); @@ -327,6 +327,31 @@ impl Database { } } +/// Returns the RDP input event to send in order to synchronize lock keys. +pub fn synchronize_event(scroll_lock: bool, num_lock: bool, caps_lock: bool, kana_lock: bool) -> FastPathInputEvent { + use ironrdp_core::input::fast_path::SynchronizeFlags; + + let mut flags = SynchronizeFlags::empty(); + + if scroll_lock { + flags |= SynchronizeFlags::SCROLL_LOCK; + } + + if num_lock { + flags |= SynchronizeFlags::NUM_LOCK; + } + + if caps_lock { + flags |= SynchronizeFlags::CAPS_LOCK; + } + + if kana_lock { + flags |= SynchronizeFlags::KANA_LOCK; + } + + FastPathInputEvent::SyncEvent(flags) +} + enum MouseButtonFlags { Button(ButtonEvents), Pointer(PointerFlags), diff --git a/ironrdp-input/tests/fastpath_packets.rs b/ironrdp-input/tests/fastpath_packets.rs index a31c7399..68a2d8e0 100644 --- a/ironrdp-input/tests/fastpath_packets.rs +++ b/ironrdp-input/tests/fastpath_packets.rs @@ -1,4 +1,4 @@ -use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags}; +use ironrdp_core::input::fast_path::{FastPathInputEvent, KeyboardFlags, SynchronizeFlags}; use ironrdp_core::input::mouse::{ButtonEvents, MovementEvents, WheelEvents}; use ironrdp_core::input::mouse_x::PointerFlags; use ironrdp_core::input::{MousePdu, MouseXPdu}; @@ -84,8 +84,8 @@ fn keyboard() { FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 23), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 39), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, 19), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::EXTENDED, 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::EXTENDED, 20), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), ]; @@ -115,15 +115,9 @@ fn keyboard() { ]; let expected_inputs = [ - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), - FastPathInputEvent::KeyboardEvent( - KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, - 19, - ), - FastPathInputEvent::KeyboardEvent( - KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, - 20, - ), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE | KeyboardFlags::EXTENDED, 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE | KeyboardFlags::EXTENDED, 20), ]; let mut expected_keyboard_state = KeyboardState::ZERO; @@ -159,16 +153,16 @@ fn keyboard_repeat() { let expected_inputs = [ FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 0), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 0), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 0), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 90), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 90), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 20), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 20), FastPathInputEvent::KeyboardEvent(KeyboardFlags::empty(), 20), ]; @@ -273,21 +267,35 @@ fn release_all() { x_position: 0, y_position: 0, }), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 0), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 23), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 39), - FastPathInputEvent::KeyboardEvent(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE, 90), - FastPathInputEvent::KeyboardEvent( - KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, - 19, - ), - FastPathInputEvent::KeyboardEvent( - KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE | KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_EXTENDED, - 20, - ), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 0), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 23), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 39), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE, 90), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE | KeyboardFlags::EXTENDED, 19), + FastPathInputEvent::KeyboardEvent(KeyboardFlags::RELEASE | KeyboardFlags::EXTENDED, 20), ]; let actual_inputs = db.release_all(); assert_eq!(actual_inputs.as_slice(), expected_inputs.as_slice()); } + +#[rstest] +#[case(true, false, true, false, SynchronizeFlags::SCROLL_LOCK | SynchronizeFlags::CAPS_LOCK)] +#[case(true, true, true, false, SynchronizeFlags::SCROLL_LOCK | SynchronizeFlags::NUM_LOCK | SynchronizeFlags::CAPS_LOCK)] +#[case(false, false, false, true, SynchronizeFlags::KANA_LOCK)] +fn sync_lock_keys( + #[case] scroll_lock: bool, + #[case] num_lock: bool, + #[case] caps_lock: bool, + #[case] kana_lock: bool, + #[case] expected_flags: SynchronizeFlags, +) { + let event = synchronize_event(scroll_lock, num_lock, caps_lock, kana_lock); + + let FastPathInputEvent::SyncEvent(actual_flags) = event else { + panic!("Unexpected fast path input event"); + }; + + assert_eq!(actual_flags, expected_flags); +} diff --git a/ironrdp-input/tests/smoke.rs b/ironrdp-input/tests/smoke.rs index ef83b4b0..c77d4492 100644 --- a/ironrdp-input/tests/smoke.rs +++ b/ironrdp-input/tests/smoke.rs @@ -97,7 +97,7 @@ fn smoke_keyboard() { (None, Some(_)) => unreachable!(), (Some(pressed_packet), None) => { if let FastPathInputEvent::KeyboardEvent(flags, scancode) = pressed_packet { - ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(!flags.contains(KeyboardFlags::RELEASE)); ensure!(scancode == u8::from(scancode)) } else { bail!("unexpected packet emitted"); @@ -105,14 +105,14 @@ fn smoke_keyboard() { } (Some(released_packet), Some(pressed_packet)) => { if let FastPathInputEvent::KeyboardEvent(flags, scancode) = released_packet { - ensure!(flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(flags.contains(KeyboardFlags::RELEASE)); ensure!(scancode == u8::from(scancode)) } else { bail!("unexpected packet emitted"); } if let FastPathInputEvent::KeyboardEvent(flags, scancode) = pressed_packet { - ensure!(!flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(!flags.contains(KeyboardFlags::RELEASE)); ensure!(scancode == u8::from(scancode)) } else { bail!("unexpected packet emitted"); @@ -128,7 +128,7 @@ fn smoke_keyboard() { if let Some(packet) = packet { if let FastPathInputEvent::KeyboardEvent(flags, scancode) = packet { - ensure!(flags.contains(KeyboardFlags::FASTPATH_INPUT_KBDFLAGS_RELEASE)); + ensure!(flags.contains(KeyboardFlags::RELEASE)); ensure!(scancode == u8::from(scancode)) } else { bail!("unexpected packet emitted"); From 328879d5bd17b5e2467733bdb1831e549589c3f6 Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Fri, 10 Feb 2023 13:05:25 -0500 Subject: [PATCH 0112/1273] feat(web): keyboard improvements (#66) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Complete ScanCode and fix keyboard keypress/keydown * Manage modifier key repetition * Add ctrl-alt-del and meta * Release all inputs on mouseout * Use CTRL+ESC to display the start menu * Implement some new modifier keys and lock keys Co-authored-by: Benoît CORTIER --- README.md | 2 +- ffi/wasm/src/lib.rs | 8 +- iron-remote-gui/README.md | 73 +- iron-remote-gui/package-lock.json | 45 +- iron-remote-gui/package.json | 9 +- iron-remote-gui/public/package.json | 2 +- iron-remote-gui/src/enums/LockKey.ts | 8 + iron-remote-gui/src/enums/LogType.ts | 8 + iron-remote-gui/src/enums/ModifierKey.ts | 14 + iron-remote-gui/src/enums/OS.ts | 5 + iron-remote-gui/src/iron-remote-gui.svelte | 18 +- iron-remote-gui/src/lib/scancodes.ts | 848 ++++++++++++++++++ .../src/services/server-bridge.service.ts | 14 +- .../src/services/services-injector.ts | 5 +- .../src/services/tauri-bridge.service.ts | 12 +- .../src/services/user-interaction-service.ts | 32 +- .../src/services/wasm-bridge.service.ts | 321 +++---- iron-svelte-client/README.md | 22 +- .../lib/remote-screen/remote-screen.svelte | 8 +- 19 files changed, 1198 insertions(+), 256 deletions(-) create mode 100644 iron-remote-gui/src/enums/LockKey.ts create mode 100644 iron-remote-gui/src/enums/LogType.ts create mode 100644 iron-remote-gui/src/enums/ModifierKey.ts create mode 100644 iron-remote-gui/src/enums/OS.ts create mode 100644 iron-remote-gui/src/lib/scancodes.ts diff --git a/README.md b/README.md index 2b6164a5..f6d40041 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ A Rust implementation of the Microsoft Remote Desktop Protocol, with a focus on - `ironrdp-cli`: basic command-line client mostly for debugging purposes. - `ironrdp-gui-client`: basic GUI client for IronRDP. - `ironrdp-replay-client`: utility tool to replay RDP graphics pipeline for debugging purposes. -- `iron-web-client`: web-based frontend using `Angular` and `Material` frameworks). +- `iron-remote-gui`: core frontend ui used by both, iron-svelte-client and iron-tauri-client. - `iron-svelte-client`: web-based frontend using `Svelte` and `Material` frameworks). - `iron-tauri-client`: a native client built with Tauri. Frontend is using the `iron-web-client`/`iron-svelte-client` component. - `ffi/wasm`: WebAssembly high-level bindings targeting web browsers. diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index 4c32da6a..e8df5e67 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -16,7 +16,7 @@ use wasm_bindgen::prelude::*; // NOTE: #[wasm_bindgen(start)] didn’t work last time I tried #[wasm_bindgen] -pub fn ironrdp_init(debug: bool) { +pub fn ironrdp_init(log_level: &str) { // When the `console_error_panic_hook` feature is enabled, we can call the // `set_panic_hook` function at least once during initialization, and then // we will get better error messages if our code ever panics. @@ -26,9 +26,9 @@ pub fn ironrdp_init(debug: bool) { #[cfg(feature = "console_error_panic_hook")] console_error_panic_hook::set_once(); - let log_level = if debug { log::Level::Debug } else { log::Level::Info }; - - console_log::init_with_level(log_level).unwrap(); + if let Ok(level) = log_level.parse::() { + console_log::init_with_level(level).unwrap(); + } } #[wasm_bindgen] diff --git a/iron-remote-gui/README.md b/iron-remote-gui/README.md index e6cd94fc..7aabccf2 100644 --- a/iron-remote-gui/README.md +++ b/iron-remote-gui/README.md @@ -1,47 +1,66 @@ -# Svelte + TS + Vite +# Iron Remote Gui -This template should help get you started developing with Svelte and TypeScript in Vite. +This is the core of the web client. Written with Svelte and build as Web-component. -## Recommended IDE Setup +## Development -[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). +Make you modification in the source code then use [iron-svelte-client](../iron-svelte-client) to test. -## Need an official Svelte framework? +## Build -Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. +Run `npm run build` -## Technical considerations +## Usage -**Why use this over SvelteKit?** +As Devolutions team member, you can import the web-component as an Artifactory package. Just run `npm install @devolutions/iron-remote-gui`. +Otherwise you can make an npm install targeting the /dist folder. -- It brings its own routing solution which might not be preferable for some users. -- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. +Import the `iron-remote-gui.umd.cjs` from node_modules folder. -This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. +Then use the html tag `` in your page. -Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. +In your code add a listener on the `ready` event on the iron-remote-gui html element. +Get `evt.detail.irgUserInteraction` from the promise. This object is of type `UserInteractionService`. +After that you need to call, at least, `connect` from the `UserInteractionService`. -**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** +## Limitations -Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. +For now, we didn't make the enums used by some method directly available (I didn't find the good way to export them directly with the component.). +You need to recreate them on your application for now (it will be improve in futur version); -**Why include `.vscode/extensions.json`?** +Also even if the connection to RDP work there is still a lot of improvement to do. +At now you can expect, mouse movement and click (4 buttons) - no scroll, Keyboard for at least the standard. Windows and CTRL+ALT+DEL can be called by method on UserInteractionService. +Lock keys (like caps lock), have a partial support. +Other advanced functionalities (sharing / copy past...) are not implemented yet. -Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. +## IronRemoteGui parameters -**Why enable `allowJs` in the TS template?** +You can add some parameters for default initialisation on the component . +> Note that due to a limitation of the framework all parameters need to be in minuscule +- `scale`: The scaling behavior of the distant screen. Can be 'fit', 'real' or 'full'. Default is 'real'; +- `targetplatform`: Can be 'web' or 'native'. Default is 'web'. +- `verbose`: Show logs from iron-remote-gui. 'true' or 'false'. Default is 'false'. +- `debugwasm`: Show debug info from web assembly. Can be "OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". Default is 'OFF'. +- `flexcentre`: Helper to force iron-remote-gui a flex and centering the content automatically. Otherwise you need to manage manually. Default is 'true'. -While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. +## UserInteractionService methods +>`connect(username: string, password: string, host: string, authtoken: string): Observable` +> +> username and password are the credentials use to connect on the remote. Host is the jet server of the gateway. Authtoken is the gateway token. -**Why is HMR not preserving my local component state?** +> `ctrlAltDel()` +> +> Send the ctrl+alt+del key to server. -HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). +> `metaKey()` +> +> Send the metakey to server (like windows key). -If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. +> `setVisibility(value: bool)` +> +> Show or Hide canvas. + +> `setScale(scale: ScreenScale)` +> +> Set the scale behavior of the canvas. (please take a look on the [ScreenScale](src/services/user-interaction-service.ts) enum) -```ts -// store.ts -// An extremely simple external store -import { writable } from 'svelte/store' -export default writable(0) -``` diff --git a/iron-remote-gui/package-lock.json b/iron-remote-gui/package-lock.json index a61f3be3..90f49582 100644 --- a/iron-remote-gui/package-lock.json +++ b/iron-remote-gui/package-lock.json @@ -1,12 +1,16 @@ { - "name": "iron-remote-gui", - "version": "0.0.0", + "name": "@devolutions/iron-remote-gui", + "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "iron-remote-gui", - "version": "0.0.0", + "name": "@devolutions/iron-remote-gui", + "version": "0.1.0", + "dependencies": { + "@types/ua-parser-js": "^0.7.36", + "ua-parser-js": "^1.0.33" + }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^2.0.0", "@tauri-apps/api": "^1.2.0", @@ -952,6 +956,11 @@ "@types/node": "*" } }, + "node_modules/@types/ua-parser-js": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", + "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2441,6 +2450,24 @@ "node": ">=4.2.0" } }, + "node_modules/ua-parser-js": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", + "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -3309,6 +3336,11 @@ "@types/node": "*" } }, + "@types/ua-parser-js": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", + "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4274,6 +4306,11 @@ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true }, + "ua-parser-js": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", + "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==" + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", diff --git a/iron-remote-gui/package.json b/iron-remote-gui/package.json index c1f76177..cefe83c0 100644 --- a/iron-remote-gui/package.json +++ b/iron-remote-gui/package.json @@ -2,7 +2,10 @@ "name": "@devolutions/iron-remote-gui", "author": "Nicolas Girot", "email": "ngirot@devolutions.net", - "contributors": ["Benoit Cortier", "Zacharia Ellaham"], + "contributors": [ + "Benoit Cortier", + "Zacharia Ellaham" + ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", "version": "0.1.0", "type": "module", @@ -28,5 +31,9 @@ "vite-plugin-dts": "^1.7.1", "vite-plugin-top-level-await": "^1.2.2", "vite-plugin-wasm": "^3.1.0" + }, + "dependencies": { + "@types/ua-parser-js": "^0.7.36", + "ua-parser-js": "^1.0.33" } } diff --git a/iron-remote-gui/public/package.json b/iron-remote-gui/public/package.json index 9f95a4f8..9e30193d 100644 --- a/iron-remote-gui/public/package.json +++ b/iron-remote-gui/public/package.json @@ -7,7 +7,7 @@ "Zacharia Ellaham" ], "description": "Web Component providing agnostic implementation for Iron Wasm base client.", - "version": "0.1.0", + "version": "0.2.0", "main": "iron-remote-gui.umd.cjs", "types": "main.d.ts", "files": [ diff --git a/iron-remote-gui/src/enums/LockKey.ts b/iron-remote-gui/src/enums/LockKey.ts new file mode 100644 index 00000000..f5d1be4b --- /dev/null +++ b/iron-remote-gui/src/enums/LockKey.ts @@ -0,0 +1,8 @@ +export enum LockKey { + CAPS_LOCK = "CapsLock", + NUMS_LOCK = "NumsLock", + SCROLL_LOCK = "ScrollLock", + "CapsLock" = CAPS_LOCK, + "ScrollLock" = SCROLL_LOCK, + "NumsLock" = NUMS_LOCK, +} \ No newline at end of file diff --git a/iron-remote-gui/src/enums/LogType.ts b/iron-remote-gui/src/enums/LogType.ts new file mode 100644 index 00000000..bb7c2559 --- /dev/null +++ b/iron-remote-gui/src/enums/LogType.ts @@ -0,0 +1,8 @@ +export enum LogType { + OFF = "OFF", + ERROR = "ERROR", + WARN = "WARN", + INFO = "INFO", + DEBUG = "DEBUG", + TRACE = "TRACE" +} \ No newline at end of file diff --git a/iron-remote-gui/src/enums/ModifierKey.ts b/iron-remote-gui/src/enums/ModifierKey.ts new file mode 100644 index 00000000..089f7239 --- /dev/null +++ b/iron-remote-gui/src/enums/ModifierKey.ts @@ -0,0 +1,14 @@ +export enum ModifierKey { + CTRL_LEFT = "ControlLeft", + SHIFT_LEFT = "ShiftLeft", + SHIFT_RIGHT = "ShiftRight", + ALT_LEFT = "AltLeft", + CTRL_RIGHT = "ControlRight", + ALT_RIGHT = "AltRight", + "ControlLeft" = CTRL_LEFT, + "ShiftLeft" = SHIFT_LEFT, + "ShiftRight" = SHIFT_RIGHT, + "AltLeft" = ALT_LEFT, + "ControlRight" = CTRL_RIGHT, + "AltRight" = ALT_RIGHT, +} \ No newline at end of file diff --git a/iron-remote-gui/src/enums/OS.ts b/iron-remote-gui/src/enums/OS.ts new file mode 100644 index 00000000..a7445293 --- /dev/null +++ b/iron-remote-gui/src/enums/OS.ts @@ -0,0 +1,5 @@ +export enum OS { + WINDOWS = 'windows', + LINUX = 'linux', + MACOS = 'macos' +} \ No newline at end of file diff --git a/iron-remote-gui/src/iron-remote-gui.svelte b/iron-remote-gui/src/iron-remote-gui.svelte index 4341a6b1..22c5812f 100644 --- a/iron-remote-gui/src/iron-remote-gui.svelte +++ b/iron-remote-gui/src/iron-remote-gui.svelte @@ -12,7 +12,7 @@ export let scale = 'real'; export let targetplatform: 'web' | 'native' = 'web'; export let verbose = 'false'; - export let debugwasm = 'false'; + export let debugwasm: "OFF" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "TRACE" = 'INFO'; export let flexcenter = 'true'; let isVisible = false; @@ -30,7 +30,7 @@ serverBridgeListeners(); userInteractionListeners(); - window.addEventListener('keypress', keyboardEvent, false); + window.addEventListener('keydown', keyboardEvent, false); window.addEventListener('keyup', keyboardEvent, false); } @@ -208,12 +208,12 @@ userInteractionService.setMouseButtonState(state, isDown); } - function setMouseIn() { - userInteractionService.mouseIn(); + function setMouseIn(evt) { + userInteractionService.mouseIn(evt); } - function setMouseOut() { - userInteractionService.mouseOut(); + function setMouseOut(evt) { + userInteractionService.mouseOut(evt); } function keyboardEvent(evt) { @@ -251,7 +251,7 @@ canvas.width = 800; canvas.height = 600; - await initServerBridge(targetplatform, debugwasm === 'true'); + await initServerBridge(targetplatform, debugwasm); userInteractionService.setServerBridge(serverBridge); userInteractionService.setCanvas(canvas); @@ -282,11 +282,11 @@ on:mouseup={(event) => setMouseButtonState(event, false)} on:mouseleave={(event) => { setMouseButtonState(event, false); - setMouseOut(); + setMouseOut(event); } } on:mouseenter={(event) => { - setMouseIn(); + setMouseIn(event); } } on:contextmenu={(event) => event.preventDefault()} diff --git a/iron-remote-gui/src/lib/scancodes.ts b/iron-remote-gui/src/lib/scancodes.ts new file mode 100644 index 00000000..b6efa830 --- /dev/null +++ b/iron-remote-gui/src/lib/scancodes.ts @@ -0,0 +1,848 @@ +import UAParser from 'ua-parser-js'; +import type {OS} from '../enums/OS'; + +/* + Scancode found on: https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values + */ + +export let ScanCodeToCode = { + windows: { + blink: { + "0x0001": "Escape", + "0x0002": "Digit1", + "0x0003": "Digit2", + "0x0004": "Digit3", + "0x0005": "Digit4", + "0x0006": "Digit5", + "0x0007": "Digit6", + "0x0008": "Digit7", + "0x0009": "Digit8", + "0x000A": "Digit9", + "0x000B": "Digit0", + "0x000C": "Minus", + "0x000D": "Equal", + "0x000E": "Backspace", + "0x000F": "Tab", + "0x0010": "KeyQ", + "0x0011": "KeyW", + "0x0012": "KeyE", + "0x0013": "KeyR", + "0x0014": "KeyT", + "0x0015": "KeyY", + "0x0016": "KeyU", + "0x0017": "KeyI", + "0x0018": "KeyO", + "0x0019": "KeyP", + "0x001A": "BracketLeft", + "0x001B": "BracketRight", + "0x001C": "Enter", + "0x001D": "ControlLeft", + "0x001E": "KeyA", + "0x001F": "KeyS", + "0x0020": "KeyD", + "0x0021": "KeyF", + "0x0022": "KeyG", + "0x0023": "KeyH", + "0x0024": "KeyJ", + "0x0025": "KeyK", + "0x0026": "KeyL", + "0x0027": "Semicolon", + "0x0028": "Quote", + "0x0029": "Backquote", + "0x002A": "ShiftLeft", + "0x002B": "Backslash", + "0x002C": "KeyZ", + "0x002D": "KeyX", + "0x002E": "KeyC", + "0x002F": "KeyV", + "0x0030": "KeyB", + "0x0031": "KeyN", + "0x0032": "KeyM", + "0x0033": "Comma", + "0x0034": "Period", + "0x0035": "Slash", + "0x0036": "ShiftRight", + "0x0037": "NumpadMultiply", + "0x0038": "AltLeft", + "0x0039": "Space", + "0x003A": "CapsLock", + "0x003B": "F1", + "0x003C": "F2", + "0x003D": "F3", + "0x003E": "F4", + "0x003F": "F5", + "0x0040": "F6", + "0x0041": "F7", + "0x0042": "F8", + "0x0043": "F9", + "0x0044": "F10", + "0x0045": "Pause", + "0x0046": "ScrollLock", + "0x0047": "Numpad7", + "0x0048": "Numpad8", + "0x0049": "Numpad9", + "0x004A": "NumpadSubtract", + "0x004B": "Numpad4", + "0x004C": "Numpad5", + "0x004D": "Numpad6", + "0x004E": "NumpadAdd", + "0x004F": "Numpad1", + "0x0050": "Numpad2", + "0x0051": "Numpad3", + "0x0052": "Numpad0", + "0x0053": "NumpadDecimal", + "0x0056": "IntlBackslash", + "0x0057": "F11", + "0x0058": "F12", + "0x0059": "NumpadEqual", + "0x0064": "F13", + "0x0065": "F14", + "0x0066": "F15", + "0x0067": "F16", + "0x0068": "F17", + "0x0069": "F18", + "0x006A": "F19", + "0x006B": "F20", + "0x006C": "F21", + "0x006D": "F22", + "0x006E": "F23", + "0x0070": "KanaMode", + "0x0071": "Lang2", + "0x0072": "Lang1", + "0x0073": "IntlRo", + "0x0076": "F24", + "0x0077": "Lang4", + "0x0078": "Lang3", + "0x0079": "Convert", + "0x007B": "NonConvert", + "0x007D": "IntlYen", + "0x007E": "NumpadComma", + "0xE008": "Undo", + "0xE00A": "Paste", + "0xE010": "MediaTrackPrevious", + "0xE017": "Cut", + "0xE018": "Copy", + "0xE019": "MediaTrackNext", + "0xE01C": "NumpadEnter", + "0xE01D": "ControlRight", + "0xE020": "AudioVolumeMute", + "0xE021": "LaunchApp2", + "0xE022": "MediaPlayPause", + "0xE024": "MediaStop", + "0xE02C": "Eject", + "0xE02E": "AudioVolumeDown", + "0xE030": "AudioVolumeUp", + "0xE032": "BrowserHome", + "0xE035": "NumpadDivide", + "0xE037": "PrintScreen", + "0xE038": "AltRight", + "0xE03B": "Help", + "0xE045": "NumLock", + "0xE046": "Pause", + "0xE047": "Home", + "0xE048": "ArrowUp", + "0xE049": "PageUp", + "0xE04B": "ArrowLeft", + "0xE04D": "ArrowRight", + "0xE04F": "End", + "0xE050": "ArrowDown", + "0xE051": "PageDown", + "0xE052": "Insert", + "0xE053": "Delete", + "0xE05B": "MetaLeft", + "0xE05C": "MetaRight", + "0xE05D": "ContextMenu", + "0xE05E": "Power", + "0xE05F": "Sleep", + "0xE063": "WakeUp", + "0xE065": "BrowserSearch", + "0xE066": "BrowserFavorites", + "0xE067": "BrowserRefresh", + "0xE068": "BrowserStop", + "0xE069": "BrowserForward", + "0xE06A": "BrowserBack", + "0xE06B": "LaunchApp1", + "0xE06C": "LaunchMail", + "0xE06D": "MediaSelect", + }, + gecko: { + "0x0001": "Escape", + "0x0002": "Digit1", + "0x0003": "Digit2", + "0x0004": "Digit3", + "0x0005": "Digit4", + "0x0006": "Digit5", + "0x0007": "Digit6", + "0x0008": "Digit7", + "0x0009": "Digit8", + "0x000A": "Digit9", + "0x000B": "Digit0", + "0x000C": "Minus", + "0x000D": "Equal", + "0x000E": "Backspace", + "0x000F": "Tab", + "0x0010": "KeyQ", + "0x0011": "KeyW", + "0x0012": "KeyE", + "0x0013": "KeyR", + "0x0014": "KeyT", + "0x0015": "KeyY", + "0x0016": "KeyU", + "0x0017": "KeyI", + "0x0018": "KeyO", + "0x0019": "KeyP", + "0x001A": "BracketLeft", + "0x001B": "BracketRight", + "0x001C": "Enter", + "0x001D": "ControlLeft", + "0x001E": "KeyA", + "0x001F": "KeyS", + "0x0020": "KeyD", + "0x0021": "KeyF", + "0x0022": "KeyG", + "0x0023": "KeyH", + "0x0024": "KeyJ", + "0x0025": "KeyK", + "0x0026": "KeyL", + "0x0027": "Semicolon", + "0x0028": "Quote", + "0x0029": "Backquote", + "0x002A": "ShiftLeft", + "0x002B": "Backslash", + "0x002C": "KeyZ", + "0x002D": "KeyX", + "0x002E": "KeyC", + "0x002F": "KeyV", + "0x0030": "KeyB", + "0x0031": "KeyN", + "0x0032": "KeyM", + "0x0033": "Comma", + "0x0034": "Period", + "0x0035": "Slash", + "0x0036": "ShiftRight", + "0x0037": "NumpadMultiply", + "0x0038": "AltLeft", + "0x0039": "Space", + "0x003A": "CapsLock", + "0x003B": "F1", + "0x003C": "F2", + "0x003D": "F3", + "0x003E": "F4", + "0x003F": "F5", + "0x0040": "F6", + "0x0041": "F7", + "0x0042": "F8", + "0x0043": "F9", + "0x0044": "F10", + "0x0045": "Pause", + "0x0046": "ScrollLock", + "0x0047": "Numpad7", + "0x0048": "Numpad8", + "0x0049": "Numpad9", + "0x004A": "NumpadSubtract", + "0x004B": "Numpad4", + "0x004C": "Numpad5", + "0x004D": "Numpad6", + "0x004E": "NumpadAdd", + "0x004F": "Numpad1", + "0x0050": "Numpad2", + "0x0051": "Numpad3", + "0x0052": "Numpad0", + "0x0053": "NumpadDecimal", + "0x0054": "PrintScreen", + "0x0056": "IntlBackslash", + "0x0057": "F11", + "0x0058": "F12", + "0x0059": "NumpadEqual", + "0x0064": "F13", + "0x0065": "F14", + "0x0066": "F15", + "0x0067": "F16", + "0x0068": "F17", + "0x0069": "F18", + "0x006A": "F19", + "0x006B": "F20", + "0x006C": "F21", + "0x006D": "F22", + "0x006E": "F23", + "0x0070": "KanaMode", + "0x0071": "Lang2", + "0x0072": "Lang1", + "0x0073": "IntlRo", + "0x0076": "F24", + "0x0079": "Convert", + "0x007B": "NonConvert", + "0x007D": "IntlYen", + "0x007E": "NumpadComma", + "0xE010": "MediaTrackPrevious", + "0xE019": "MediaTrackNext", + "0xE01C": "NumpadEnter", + "0xE01D": "ControlRight", + "0xE020": "AudioVolumeMute", + "0xE021": "LaunchApp2", + "0xE022": "MediaPlayPause", + "0xE024": "MediaStop", + "0xE02E": "VolumeDown", + "0xE030": "VolumeUp", + "0xE032": "BrowserHome", + "0xE035": "NumpadDivide", + "0xE037": "PrintScreen", + "0xE038": "AltRight", + "0xE045": "NumLock", + "0xE046": "Pause", + "0xE047": "Home", + "0xE048": "ArrowUp", + "0xE049": "PageUp", + "0xE04B": "ArrowLeft", + "0xE04D": "ArrowRight", + "0xE04F": "End", + "0xE050": "ArrowDown", + "0xE051": "PageDown", + "0xE052": "Insert", + "0xE053": "Delete", + "0xE05B": "OSLeft", + "0xE05C": "OSRight", + "0xE05D": "ContextMenu", + "0xE05E": "Power", + "0xE065": "BrowserSearch", + "0xE066": "BrowserFavorites", + "0xE067": "BrowserRefresh", + "0xE068": "BrowserStop", + "0xE069": "BrowserForward", + "0xE06A": "BrowserBack", + "0xE06B": "LaunchApp1", + "0xE06C": "LaunchMail", + "0xE06D": "MediaSelect", + "0xE0F1": "Lang2", + "0xE0F2": "Lang1", + } + }, + linux: { + gecko: { + "0x0009": "Escape", + "0x000A": "Digit1", + "0x000B": "Digit2", + "0x000C": "Digit3", + "0x000D": "Digit4", + "0x000E": "Digit5", + "0x000F": "Digit6", + "0x0010": "Digit7", + "0x0011": "Digit8", + "0x0012": "Digit9", + "0x0013": "Digit0", + "0x0014": "Minus", + "0x0015": "Equal", + "0x0016": "Backspace", + "0x0017": "Tab", + "0x0018": "KeyQ", + "0x0019": "KeyW", + "0x001A": "KeyE", + "0x001B": "KeyR", + "0x001C": "KeyT", + "0x001D": "KeyY", + "0x001E": "KeyU", + "0x001F": "KeyI", + "0x0020": "KeyO", + "0x0021": "KeyP", + "0x0022": "BracketLeft", + "0x0023": "BracketRight", + "0x0024": "Enter", + "0x0025": "ControlLeft", + "0x0026": "KeyA", + "0x0027": "KeyS", + "0x0028": "KeyD", + "0x0029": "KeyF", + "0x002A": "KeyG", + "0x002B": "KeyH", + "0x002C": "KeyJ", + "0x002D": "KeyK", + "0x002E": "KeyL", + "0x002F": "Semicolon", + "0x0030": "Quote", + "0x0031": "Backquote", + "0x0032": "ShiftLeft", + "0x0033": "Backslash", + "0x0034": "KeyZ", + "0x0035": "KeyX", + "0x0036": "KeyC", + "0x0037": "KeyV", + "0x0038": "KeyB", + "0x0039": "KeyN", + "0x003A": "KeyM", + "0x003B": "Comma", + "0x003C": "Period", + "0x003D": "Slash", + "0x003E": "ShiftRight", + "0x003F": "NumpadMultiply", + "0x0040": "AltLeft", + "0x0041": "Space", + "0x0042": "CapsLock", + "0x0043": "F1", + "0x0044": "F2", + "0x0045": "F3", + "0x0046": "F4", + "0x0047": "F5", + "0x0048": "F6", + "0x0049": "F7", + "0x004A": "F8", + "0x004B": "F9", + "0x004C": "F10", + "0x004D": "NumLock", + "0x004E": "ScrollLock", + "0x004F": "Numpad7", + "0x0050": "Numpad8", + "0x0051": "Numpad9", + "0x0052": "NumpadSubtract", + "0x0053": "Numpad4", + "0x0054": "Numpad5", + "0x0055": "Numpad6", + "0x0056": "NumpadAdd", + "0x0057": "Numpad1", + "0x0058": "Numpad2", + "0x0059": "Numpad3", + "0x005A": "Numpad0", + "0x005B": "NumpadDecimal", + "0x005E": "IntlBackslash", + "0x005F": "F11", + "0x0060": "F12", + "0x0061": "IntlRo", + "0x0064": "Convert", + "0x0065": "KanaMode", + "0x0066": "NonConvert", + "0x0068": "NumpadEnter", + "0x0069": "ControlRight", + "0x006A": "NumpadDivide", + "0x006B": "PrintScreen", + "0x006C": "AltRight", + "0x006E": "Home", + "0x006F": "ArrowUp", + "0x0070": "PageUp", + "0x0071": "ArrowLeft", + "0x0072": "ArrowRight", + "0x0073": "End", + "0x0074": "ArrowDown", + "0x0075": "PageDown", + "0x0076": "Insert", + "0x0077": "Delete", + "0x0079": "VolumeMute", + "0x007A": "VolumeDown", + "0x007B": "VolumeUp", + "0x007D": "NumpadEqual", + "0x007F": "Pause", + "0x0081": "NumpadComma", + "0x0082": "Lang1", + "0x0083": "Lang2", + "0x0084": "IntlYen", + "0x0085": "OSLeft", + "0x0086": "OSRight", + "0x0087": "ContextMenu", + "0x0088": "BrowserStop", + "0x0089": "Again", + "0x008A": "Props", + "0x008B": "Undo", + "0x008C": "Select", + "0x008D": "Copy", + "0x008E": "Open", + "0x008F": "Paste", + "0x0090": "Find", + "0x0091": "Cut", + "0x0092": "Help", + "0x0094": "LaunchApp2", + "0x0097": "WakeUp", + "0x0098": "LaunchApp1", + "0x00A3": "LaunchMail", + "0x00A4": "BrowserFavorites", + "0x00A5": "Unidentified", + "0x00A6": "BrowserBack", + "0x00A7": "BrowserForward", + "0x00A9": "Eject", + "0x00AB": "MediaTrackNext", + "0x00AC": "MediaPlayPause", + "0x00AD": "MediaTrackPrevious", + "0x00AE": "MediaStop", + "0x00B3": "MediaSelect", + "0x00B4": "BrowserHome", + "0x00B5": "BrowserRefresh", + "0x00BF": "F13", + "0x00C0": "F14", + "0x00C1": "F15", + "0x00C2": "F16", + "0x00C3": "F17", + "0x00C4": "F18", + "0x00C5": "F19", + "0x00C6": "F20", + "0x00C7": "F21", + "0x00C8": "F22", + "0x00C9": "F23", + "0x00CA": "F24", + "0x00E1": "BrowserSearch", + }, + blink: { + "0x0009": "Escape", + "0x000A": "Digit1", + "0x000B": "Digit2", + "0x000C": "Digit3", + "0x000D": "Digit4", + "0x000E": "Digit5", + "0x000F": "Digit6", + "0x0010": "Digit7", + "0x0011": "Digit8", + "0x0012": "Digit9", + "0x0013": "Digit0", + "0x0014": "Minus", + "0x0015": "Equal", + "0x0016": "Backspace", + "0x0017": "Tab", + "0x0018": "KeyQ", + "0x0019": "KeyW", + "0x001A": "KeyE", + "0x001B": "KeyR", + "0x001C": "KeyT", + "0x001D": "KeyY", + "0x001E": "KeyU", + "0x001F": "KeyI", + "0x0020": "KeyO", + "0x0021": "KeyP", + "0x0022": "BracketLeft", + "0x0023": "BracketRight", + "0x0024": "Enter", + "0x0025": "ControlLeft", + "0x0026": "KeyA", + "0x0027": "KeyS", + "0x0028": "KeyD", + "0x0029": "KeyF", + "0x002A": "KeyG", + "0x002B": "KeyH", + "0x002C": "KeyJ", + "0x002D": "KeyK", + "0x002E": "KeyL", + "0x002F": "Semicolon", + "0x0030": "Quote", + "0x0031": "Backquote", + "0x0032": "ShiftLeft", + "0x0033": "Backslash", + "0x0034": "KeyZ", + "0x0035": "KeyX", + "0x0036": "KeyC", + "0x0037": "KeyV", + "0x0038": "KeyB", + "0x0039": "KeyN", + "0x003A": "KeyM", + "0x003B": "Comma", + "0x003C": "Period", + "0x003D": "Slash", + "0x003E": "ShiftRight", + "0x003F": "NumpadMultiply", + "0x0040": "AltLeft", + "0x0041": "Space", + "0x0042": "CapsLock", + "0x0043": "F1", + "0x0044": "F2", + "0x0045": "F3", + "0x0046": "F4", + "0x0047": "F5", + "0x0048": "F6", + "0x0049": "F7", + "0x004A": "F8", + "0x004B": "F9", + "0x004C": "F10", + "0x004D": "NumLock", + "0x004E": "ScrollLock", + "0x004F": "Numpad7", + "0x0050": "Numpad8", + "0x0051": "Numpad9", + "0x0052": "NumpadSubtract", + "0x0053": "Numpad4", + "0x0054": "Numpad5", + "0x0055": "Numpad6", + "0x0056": "NumpadAdd", + "0x0057": "Numpad1", + "0x0058": "Numpad2", + "0x0059": "Numpad3", + "0x005A": "Numpad0", + "0x005B": "NumpadDecimal", + "0x005D": "Lang5", + "0x005E": "IntlBackslash", + "0x005F": "F11", + "0x0060": "F12", + "0x0061": "IntlRo", + "0x0062": "Lang3", + "0x0063": "Lang4", + "0x0064": "Convert", + "0x0065": "KanaMode", + "0x0066": "NonConvert", + "0x0068": "NumpadEnter", + "0x0069": "ControlRight", + "0x006A": "NumpadDivide", + "0x006B": "PrintScreen", + "0x006C": "AltRight", + "0x006E": "Home", + "0x006F": "ArrowUp", + "0x0070": "PageUp", + "0x0071": "ArrowLeft", + "0x0072": "ArrowRight", + "0x0073": "End", + "0x0074": "ArrowDown", + "0x0075": "PageDown", + "0x0076": "Insert", + "0x0077": "Delete", + "0x0079": "AudioVolumeMute", + "0x007A": "AudioVolumeDown", + "0x007B": "AudioVolumeUp", + "0x007C": "Power", + "0x007D": "NumpadEqual", + "0x007F": "Pause", + "0x0081": "NumpadComma", + "0x0082": "Lang1", + "0x0083": "Lang2", + "0x0084": "IntlYen", + "0x0085": "MetaLeft", + "0x0086": "MetaRight", + "0x0087": "ContextMenu", + "0x0088": "BrowserStop", + "0x0089": "Again", + "0x008B": "Undo", + "0x008C": "Select", + "0x008D": "Copy", + "0x008E": "Open", + "0x008F": "Paste", + "0x0090": "Find", + "0x0091": "Cut", + "0x0092": "Help", + "0x0094": "LaunchApp2", + "0x0096": "Sleep", + "0x0097": "WakeUp", + "0x0098": "LaunchApp1", + "0x00A3": "LaunchMail", + "0x00A4": "BrowserFavorites", + "0x00A6": "BrowserBack", + "0x00A7": "BrowserForward", + "0x00A9": "Eject", + "0x00AB": "MediaTrackNext", + "0x00AC": "MediaPlayPause", + "0x00AD": "MediaTrackPrevious", + "0x00AE": "MediaStop", + "0x00B3": "MediaSelect", + "0x00B4": "BrowserHome", + "0x00B5": "BrowserRefresh", + "0x00BB": "NumpadParenLeft", + "0x00BC": "NumpadParenRight", + "0x00BF": "F13", + "0x00C0": "F14", + "0x00C1": "F15", + "0x00C2": "F16", + "0x00C3": "F17", + "0x00C4": "F18", + "0x00C5": "F19", + "0x00C6": "F20", + "0x00C7": "F21", + "0x00C8": "F22", + "0x00C9": "F23", + "0x00CA": "F24", + "0x00E1": "BrowserSearch", + } + }, + android: { + gecko: { + "0x0001": "Escape", + "0x0002": "Digit1", + "0x0003": "Digit2", + "0x0004": "Digit3", + "0x0005": "Digit4", + "0x0006": "Digit5", + "0x0007": "Digit6", + "0x0008": "Digit7", + "0x0009": "Digit8", + "0x000A": "Digit9", + "0x000B": "Digit0", + "0x000C": "Minus", + "0x000D": "Equal", + "0x000E": "Backspace", + "0x000F": "Tab", + "0x0010": "KeyQ", + "0x0011": "KeyW", + "0x0012": "KeyE", + "0x0013": "KeyR", + "0x0014": "KeyT", + "0x0015": "KeyY", + "0x0016": "KeyU", + "0x0017": "KeyI", + "0x0018": "KeyO", + "0x0019": "KeyP", + "0x001A": "BracketLeft", + "0x001B": "BracketRight", + "0x001C": "Enter", + "0x001D": "ControlLeft", + "0x001E": "KeyA", + "0x001F": "KeyS", + "0x0020": "KeyD", + "0x0021": "KeyF", + "0x0022": "KeyG", + "0x0023": "KeyH", + "0x0024": "KeyJ", + "0x0025": "KeyK", + "0x0026": "KeyL", + "0x0027": "Semicolon", + "0x0028": "Quote", + "0x0029": "Backquote", + "0x002A": "ShiftLeft", + "0x002B": "Backslash", + "0x002C": "KeyZ", + "0x002D": "KeyX", + "0x002E": "KeyC", + "0x002F": "KeyV", + "0x0030": "KeyB", + "0x0031": "KeyN", + "0x0032": "KeyM", + "0x0033": "Comma", + "0x0034": "Period", + "0x0035": "Slash", + "0x0036": "ShiftRight", + "0x0037": "NumpadMultiply", + "0x0038": "AltLeft", + "0x0039": "Space", + "0x003A": "CapsLock", + "0x003B": "F1", + "0x003C": "F2", + "0x003D": "F3", + "0x003E": "F4", + "0x003F": "F5", + "0x0040": "F6", + "0x0041": "F7", + "0x0042": "F8", + "0x0043": "F9", + "0x0044": "F10", + "0x0045": "NumLock", + "0x0046": "ScrollLock", + "0x0047": "Numpad7", + "0x0048": "Numpad8", + "0x0049": "Numpad9", + "0x004A": "NumpadSubtract", + "0x004B": "Numpad4", + "0x004C": "Numpad5", + "0x004D": "Numpad6", + "0x004E": "NumpadAdd", + "0x004F": "Numpad1", + "0x0050": "Numpad2", + "0x0051": "Numpad3", + "0x0052": "Numpad0", + "0x0053": "NumpadDecimal", + "0x0056": "IntlBackslash", + "0x0057": "F11", + "0x0058": "F12", + "0x0059": "IntlRo", + "0x005C": "Convert", + "0x005D": "KanaMode", + "0x005E": "NonConvert", + "0x0060": "NumpadEnter", + "0x0061": "ControlRight", + "0x0062": "NumpadDivide", + "0x0063": "PrintScreen", + "0x0064": "AltRight", + "0x0066": "Home", + "0x0067": "ArrowUp", + "0x0068": "PageUp", + "0x0069": "ArrowLeft", + "0x006A": "ArrowRight", + "0x006B": "End", + "0x006C": "ArrowDown", + "0x006D": "PageDown", + "0x006E": "Insert", + "0x006F": "Delete", + "0x0071": "VolumeMute", + "0x0072": "VolumeDown", + "0x0073": "VolumeUp", + "0x0074": "Power", + "0x0075": "NumpadEqual", + "0x0077": "Pause", + "0x0079": "NumpadComma", + "0x007A": "Lang1", + "0x007B": "Lang2", + "0x007C": "IntlYen", + "0x007D": "OSLeft", + "0x007E": "OSRight", + "0x007F": "ContextMenu", + "0x0080": "BrowserStop", + "0x0081": "Again", + "0x0082": "Props", + "0x0083": "Undo", + "0x0084": "Select", + "0x0085": "Copy", + "0x0086": "Open", + "0x0087": "Paste", + "0x0088": "Find", + "0x0089": "Cut", + "0x008A": "Help", + "0x008E": "Sleep", + "0x008F": "WakeUp", + "0x0090": "LaunchApp1", + "0x009C": "BrowserFavorites", + "0x009E": "BrowserBack", + "0x009F": "BrowserForward", + "0x00A1": "Eject", + "0x00A3": "MediaTrackNext", + "0x00A4": "MediaPlayPause", + "0x00A5": "MediaTrackPrevious", + "0x00A6": "MediaStop", + "0x00AD": "BrowserRefresh", + "0x00B7": "F13", + "0x00B8": "F14", + "0x00B9": "F15", + "0x00BA": "F16", + "0x00BB": "F17", + "0x00BC": "F18", + "0x00BD": "F19", + "0x00BE": "F20", + "0x00BF": "F21", + "0x00C0": "F22", + "0x00C1": "F23", + "0x00C2": "F24", + "0x00D9": "BrowserSearch", + "0x01D0": "Fn", + } + } +} + +export let CodeToScanCode = { + windows: { + blink: {}, + gecko: {} + }, + linux: { + gecko: {}, + blink: {} + }, + android: { + gecko: {} + } +}; + +let mapList = [ + [ScanCodeToCode.windows.blink, CodeToScanCode.windows.blink], + [ScanCodeToCode.windows.gecko, CodeToScanCode.windows.gecko], + [ScanCodeToCode.linux.blink, CodeToScanCode.linux.blink], + [ScanCodeToCode.linux.gecko, CodeToScanCode.linux.gecko], + [ScanCodeToCode.android.gecko, CodeToScanCode.android.gecko] +]; + +mapList.forEach(maps => { + for (let key in maps[0]) { + if (maps[0].hasOwnProperty(key)) { + maps[1][maps[0][key]] = key; + } + } +}) + +let parser = new UAParser(); +let parsedUA = parser.getResult(); +let engine = parsedUA.engine.name.toLowerCase(); + +export let scanCode = function (code: string, targetOs: OS) { + let map = CodeToScanCode[targetOs][engine] || CodeToScanCode.linux.gecko; + return map[code]; +} + +export let code = function (scanCode: string, targetOs: OS) { + let map = ScanCodeToCode[targetOs][engine] || CodeToScanCode.linux.gecko; + return map[scanCode]; +} diff --git a/iron-remote-gui/src/services/server-bridge.service.ts b/iron-remote-gui/src/services/server-bridge.service.ts index 876ce827..9e30dae1 100644 --- a/iron-remote-gui/src/services/server-bridge.service.ts +++ b/iron-remote-gui/src/services/server-bridge.service.ts @@ -1,4 +1,5 @@ import type {Observable} from "rxjs"; +import type {LogType} from '../enums/LogType'; export interface ServerRect { free(): void; @@ -40,8 +41,13 @@ export enum MouseButtonState { MOUSE_UP } +export enum SpecialCombination { + CTRL_ALT_DEL, + META +} + export abstract class ServerBridgeService { - abstract init(debug: boolean): void; + abstract init(debug: LogType): void; abstract connect(username: string, password: string, address: string, authToken?: string): Observable; @@ -54,5 +60,11 @@ export abstract class ServerBridgeService { abstract updateMousePosition(mouse_x: number, mouse_y: number): void; abstract sendKeyboard(evt: any): void; + + abstract releaseAllInputs():void; + + abstract sendSpecialCombination(specialCombination: SpecialCombination):void; + + abstract syncModifier(evt: any): void; } diff --git a/iron-remote-gui/src/services/services-injector.ts b/iron-remote-gui/src/services/services-injector.ts index 93d5012c..b0405e00 100644 --- a/iron-remote-gui/src/services/services-injector.ts +++ b/iron-remote-gui/src/services/services-injector.ts @@ -1,9 +1,10 @@ import type {ServerBridgeService} from './server-bridge.service'; import {loggingService} from "./logging.service"; +import {LogType} from '../enums/LogType'; export let serverBridge: ServerBridgeService; -export async function initServerBridge(mode: 'native' | 'web' = 'web', debug: boolean) { +export async function initServerBridge(mode: 'native' | 'web' = 'web', debug: "OFF" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "TRACE") { if (serverBridge === undefined || serverBridge === null) { if (mode === 'native') { loggingService.info('Initialize native bridge...'); @@ -13,7 +14,7 @@ export async function initServerBridge(mode: 'native' | 'web' = 'web', debug: bo loggingService.info('Initialize web bridge'); const module = await import("./wasm-bridge.service"); serverBridge = new module.WasmBridgeService(); - await serverBridge.init(debug); + await serverBridge.init(LogType[debug] || LogType.INFO); } } } diff --git a/iron-remote-gui/src/services/tauri-bridge.service.ts b/iron-remote-gui/src/services/tauri-bridge.service.ts index d4ee2fcb..340e96df 100644 --- a/iron-remote-gui/src/services/tauri-bridge.service.ts +++ b/iron-remote-gui/src/services/tauri-bridge.service.ts @@ -1,4 +1,4 @@ -import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; +import type {NewSessionInfo, ServerBridgeService, SpecialCombination} from "./server-bridge.service"; import {invoke} from "@tauri-apps/api"; import {from, Observable, Subject} from "rxjs"; import {listen} from "@tauri-apps/api/event"; @@ -24,6 +24,10 @@ export class TauriBridgeService implements ServerBridgeService { loggingService.info('Native bridge initialized.'); } + sendSpecialCombination(specialCombination: SpecialCombination): void { + throw new Error("Method not implemented."); + } + init(): void { //Nothing to do } @@ -71,4 +75,10 @@ export class TauriBridgeService implements ServerBridgeService { updateMousePosition(mouse_x: number, mouse_y: number): void { } + + releaseAllInputs(): void { + } + + syncModifier(evt: any): void { + } } diff --git a/iron-remote-gui/src/services/user-interaction-service.ts b/iron-remote-gui/src/services/user-interaction-service.ts index e2990854..963ad176 100644 --- a/iron-remote-gui/src/services/user-interaction-service.ts +++ b/iron-remote-gui/src/services/user-interaction-service.ts @@ -1,6 +1,6 @@ import {BehaviorSubject, Observable, Subject} from 'rxjs'; import type {NewSessionInfo, ServerBridgeService} from "./server-bridge.service"; -import {MouseButton, MouseButtonState} from './server-bridge.service'; +import {MouseButtonState, SpecialCombination} from './server-bridge.service'; import {loggingService} from "./logging.service"; @@ -26,6 +26,10 @@ export interface IRGUserInteraction { connect(username: string, password: string, host: string, authtoken: string): Observable; + ctrlAltDel(); + + metaKey(); + sessionListener: Observable; } @@ -64,14 +68,14 @@ export class UserInteractionService { return this.serverBridge.connect(username, password, host, authtoken); } - mouseIn() { + mouseIn(event: MouseEvent) { + this.serverBridge.syncModifier(event); this.keyboardActive = true; - console.log("mouse in"); } - mouseOut() { + mouseOut(event: MouseEvent) { this.keyboardActive = false; - console.log("mouse out"); + this.serverBridge?.releaseAllInputs(); } setMousePosition(position: MousePosition) { @@ -92,6 +96,18 @@ export class UserInteractionService { this.serverBridge.sendKeyboard(evt); } } + + ctrlAltDel() { + this.sendSpecialCombination(SpecialCombination.CTRL_ALT_DEL); + } + + metaKey() { + this.sendSpecialCombination(SpecialCombination.META); + } + + private sendSpecialCombination(combination: SpecialCombination) { + this.serverBridge.sendSpecialCombination(combination); + } setVisibility(state: boolean) { loggingService.info(`Change component visibility to: ${state}`); @@ -105,14 +121,16 @@ export class UserInteractionService { raiseSessionEvent(event: any) { this.sessionEvent.next(event); } - + exposedFunctions: IRGUserInteraction = { setMousePosition: this.setMousePosition.bind(this), setMouseButtonState: this.setMouseButtonState.bind(this), setVisibility: this.setVisibility.bind(this), connect: this.connect.bind(this), setScale: this.setScale.bind(this), - sessionListener: this.sessionObserver + sessionListener: this.sessionObserver, + ctrlAltDel: this.ctrlAltDel.bind(this), + metaKey: this.metaKey.bind(this) } } diff --git a/iron-remote-gui/src/services/wasm-bridge.service.ts b/iron-remote-gui/src/services/wasm-bridge.service.ts index 6afe4753..3177b635 100644 --- a/iron-remote-gui/src/services/wasm-bridge.service.ts +++ b/iron-remote-gui/src/services/wasm-bridge.service.ts @@ -1,18 +1,15 @@ import type {NewSessionInfo, ResizeEvent, ServerBridgeService} from './server-bridge.service'; -import {MouseButton, MouseButtonState} from './server-bridge.service'; +import {MouseButton, MouseButtonState, SpecialCombination} from './server-bridge.service'; import {from, Observable, of, Subject} from 'rxjs'; import init, {DeviceEvent, InputTransaction, ironrdp_init, Session, SessionBuilder} from "../../../ffi/wasm/pkg/ironrdp"; import {loggingService} from "./logging.service"; import {catchError, filter, map} from "rxjs/operators"; import {userInteractionService} from "./user-interaction-service"; - -const modifierKey = { - SHIFT: 16, - CTRL: 17, - ALT: 18, - META: 91 -}; -const modifierKeyArray = [modifierKey.ALT, modifierKey.CTRL, modifierKey.ALT, modifierKey.META]; +import {scanCode} from '../lib/scancodes'; +import {LogType} from '../enums/LogType'; +import {OS} from '../enums/OS'; +import {ModifierKey} from '../enums/ModifierKey'; +import {LockKey} from '../enums/LockKey'; export class WasmBridgeService implements ServerBridgeService { private _resize: Subject = new Subject(); @@ -20,218 +17,60 @@ export class WasmBridgeService implements ServerBridgeService { resize: Observable; updateImage: Observable; - session?: Session; + modifierKeyPressed: ModifierKey[] = []; + lockKeyPressed: LockKey[] = []; + constructor() { this.resize = this._resize.asObservable(); this.updateImage = this._updateImage.asObservable(); loggingService.info('Web bridge initialized.'); } - async init(debug: boolean) { + async init(debug: LogType) { loggingService.info('Loading wasm file.'); await init(); loggingService.info('Initializing IronRDP.'); - ironrdp_init(debug); + ironrdp_init(LogType[debug]); + } + + releaseAllInputs() { + this.session?.release_all_inputs(); } mouseButtonState(mouse_button: MouseButton, state: MouseButtonState) { - const transaction = InputTransaction.new(); let mouseFnc = state === MouseButtonState.MOUSE_DOWN ? DeviceEvent.new_mouse_button_pressed : DeviceEvent.new_mouse_button_released; - transaction.add_event(mouseFnc(mouse_button)); - this.session?.apply_inputs(transaction); + this.doTransactionFromDeviceEvents([mouseFnc(mouse_button)]); } - + updateMousePosition(mouse_x: number, mouse_y: number) { - const transaction = InputTransaction.new(); - transaction.add_event(DeviceEvent.new_mouse_move(mouse_x, mouse_y)); - this.session?.apply_inputs(transaction); + this.doTransactionFromDeviceEvents([DeviceEvent.new_mouse_move(mouse_x, mouse_y)]); } sendKeyboard(evt: KeyboardEvent) { + evt.preventDefault(); + let keyEvent; - - if (evt.type === 'keypress') { + + if (evt.type === 'keydown') { keyEvent = DeviceEvent.new_key_pressed; } else if (evt.type === 'keyup') { keyEvent = DeviceEvent.new_key_released; } if (keyEvent) { - const transaction = InputTransaction.new(); - - // NOTE: There is no keypress event for alt, ctrl, shift and meta keys, so we check manually. - // TODO: Support for right side - // TODO: Support for meta key (also called os key) - if (evt.altKey && evt.code !== "AltLeft") { - transaction.add_event(DeviceEvent.new_key_pressed(0x38)); - } - if (evt.ctrlKey && evt.code !== "ControlLeft") { - transaction.add_event(DeviceEvent.new_key_pressed(0x1D)); - } - if (evt.shiftKey && evt.code !== "ShiftLeft") { - transaction.add_event(DeviceEvent.new_key_pressed(0x2A)); + if (ModifierKey[evt.code]) { + this.updateModifierKeyState(evt); } - // NOTE: We only receive a keyup event for Backspace - if (evt.code === "Backspace") { - transaction.add_event(DeviceEvent.new_key_pressed(0x0E)); + if (LockKey[evt.code]) { + this.updateLockKeyState(evt); } - const scancode = this.convertToScancode(evt.code); - transaction.add_event(keyEvent(scancode)); - - this.session?.apply_inputs(transaction); - } - } - - // Temporary workaround for scancode - convertToScancode(code: string): number { - // From: https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values - switch (code) { - case "Escape": - return 0x01; - case "Digit1": - return 0x02; - case "Digit2": - return 0x03; - case "Digit3": - return 0x04; - case "Digit4": - return 0x05; - case "Digit5": - return 0x06; - case "Digit6": - return 0x07; - case "Digit7": - return 0x08; - case "Digit8": - return 0x09; - case "Digit9": - return 0x0A; - case "Digit0": - return 0x0B; - case "Minus": - return 0x0C; - case "Equal": - return 0x0D; - case "Backspace": - return 0x0E; - case "Tab": - return 0x0F; - case "KeyQ": - return 0x10; - case "KeyW": - return 0x11; - case "KeyE": - return 0x12; - case "KeyR": - return 0x13; - case "KeyT": - return 0x14; - case "KeyY": - return 0x15; - case "KeyU": - return 0x16; - case "KeyI": - return 0x17; - case "KeyO": - return 0x18; - case "KeyP": - return 0x19; - case "BracketLeft": - return 0x1A; - case "BracketRight": - return 0x1B; - case "Enter": - return 0x1C; - case "ControlLeft": - return 0x1D; - case "KeyA": - return 0x1E; - case "KeyS": - return 0x1F; - case "KeyD": - return 0x20; - case "KeyF": - return 0x21; - case "KeyG": - return 0x22; - case "KeyH": - return 0x23; - case "KeyJ": - return 0x24; - case "KeyK": - return 0x25; - case "KeyL": - return 0x26; - case "Semicolon": - return 0x27; - case "Quote": - return 0x28; - case "Backquote": - return 0x29; - case "ShiftLeft": - return 0x2A; - case "Backslash": - return 0x2B; - case "KeyZ": - return 0x2C; - case "KeyX": - return 0x2D; - case "KeyC": - return 0x2E; - case "KeyV": - return 0x2F; - case "KeyB": - return 0x30; - case "KeyN": - return 0x31; - case "KeyM": - return 0x32; - case "Comma": - return 0x33; - case "Period": - return 0x34; - case "Slash": - return 0x35; - case "ShiftRight": - return 0x36; - case "NumpadMultiply": - return 0x37; - case "AltLeft": - return 0x38; - case "Space": - return 0x39; - case "CapsLock": - return 0x3A; - case "F1": - return 0x3B; - case "F2": - return 0x3C; - case "F3": - return 0x3D; - case "F4": - return 0x3E; - case "F5": - return 0x3F; - case "F6": - return 0x40; - case "F7": - return 0x41; - case "F8": - return 0x42; - case "F9": - return 0x43; - case "F10": - return 0x44; - case "Pause": - return 0x45; - case "ScrollLock": - return 0x46; - default: - return 0x00; + if (!evt.repeat || (!ModifierKey[evt.code] && !LockKey[evt.code])) { + this.doTransactionFromDeviceEvents([keyEvent(scanCode(evt.code, OS.WINDOWS))]); + } } } @@ -284,4 +123,106 @@ export class WasmBridgeService implements ServerBridgeService { }), ); } + + sendSpecialCombination(specialCombination: SpecialCombination): void { + switch (specialCombination) { + case SpecialCombination.CTRL_ALT_DEL: + this.ctrlAltDel(); + break; + case SpecialCombination.META: + this.sendMeta(); + break; + } + } + + syncModifier(evt: any): void { + const mouseEvent = evt as MouseEvent; + const events = []; + + let syncCapsLock_On = mouseEvent.getModifierState(LockKey.CAPS_LOCK) && this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK) === -1; + let syncCapsLock_Off = !mouseEvent.getModifierState(LockKey.CAPS_LOCK) && this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK) > -1; + let syncNumsLock_On = mouseEvent.getModifierState(LockKey.NUMS_LOCK) && this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK) === -1; + let syncNumsLock_Off = !mouseEvent.getModifierState(LockKey.NUMS_LOCK) && this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK) > -1; + let syncScrollLock_On = mouseEvent.getModifierState(LockKey.SCROLL_LOCK) && this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK) === -1; + let syncScrollLock_Off = !mouseEvent.getModifierState(LockKey.SCROLL_LOCK) && this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK) > -1; + + if (syncCapsLock_On || syncCapsLock_Off) { + events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.CAPS_LOCK, OS.WINDOWS))); + events.push(DeviceEvent.new_key_released(scanCode(LockKey.CAPS_LOCK, OS.WINDOWS))); + if (syncCapsLock_On) { + this.lockKeyPressed.push(LockKey.CAPS_LOCK); + } else { + this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.CAPS_LOCK), 1); + } + } + if (syncNumsLock_On || syncNumsLock_Off) { + events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.NUMS_LOCK, OS.WINDOWS))); + events.push(DeviceEvent.new_key_released(scanCode(LockKey.NUMS_LOCK, OS.WINDOWS))); + if (syncNumsLock_On) { + this.lockKeyPressed.push(LockKey.NUMS_LOCK); + } else { + this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.NUMS_LOCK), 1); + } + } + if (syncScrollLock_On || syncScrollLock_Off) { + events.push(DeviceEvent.new_key_pressed(scanCode(LockKey.SCROLL_LOCK, OS.WINDOWS))); + events.push(DeviceEvent.new_key_released(scanCode(LockKey.SCROLL_LOCK, OS.WINDOWS))); + if (syncScrollLock_On) { + this.lockKeyPressed.push(LockKey.SCROLL_LOCK); + } else { + this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey.SCROLL_LOCK), 1); + } + } + + this.doTransactionFromDeviceEvents(events); + } + + private updateModifierKeyState(evt) { + if (this.modifierKeyPressed.indexOf(ModifierKey[evt.code]) === -1) { + this.modifierKeyPressed.push(ModifierKey[evt.code]); + } else if (evt.type === 'keyup') { + this.modifierKeyPressed.splice(this.modifierKeyPressed.indexOf(ModifierKey[evt.code]), 1); + } + } + + private updateLockKeyState(evt) { + if (this.lockKeyPressed.indexOf(LockKey[evt.code]) === -1) { + this.lockKeyPressed.push(LockKey[evt.code]); + } else if (evt.type === 'keyup' && !evt.getModifierState(evt.code)) { + this.lockKeyPressed.splice(this.lockKeyPressed.indexOf(LockKey[evt.code]), 1); + } + } + + private doTransactionFromDeviceEvents(deviceEvents: DeviceEvent[]) { + const transaction = InputTransaction.new(); + deviceEvents.forEach(event => transaction.add_event(event)); + this.session?.apply_inputs(transaction); + } + + private ctrlAltDel() { + const ctrl = scanCode("ControlLeft", OS.WINDOWS); + const alt = scanCode("AltLeft", OS.WINDOWS); + const suppr = scanCode("Delete", OS.WINDOWS); + + this.doTransactionFromDeviceEvents([ + DeviceEvent.new_key_pressed(ctrl), + DeviceEvent.new_key_pressed(alt), + DeviceEvent.new_key_pressed(suppr), + DeviceEvent.new_key_released(ctrl), + DeviceEvent.new_key_released(alt), + DeviceEvent.new_key_released(suppr), + ]); + } + + private sendMeta() { + const ctrl = scanCode("ControlLeft", OS.WINDOWS); + const escape = scanCode("Escape", OS.WINDOWS); + + this.doTransactionFromDeviceEvents([ + DeviceEvent.new_key_pressed(ctrl), + DeviceEvent.new_key_pressed(escape), + DeviceEvent.new_key_released(ctrl), + DeviceEvent.new_key_released(escape), + ]); + } } diff --git a/iron-svelte-client/README.md b/iron-svelte-client/README.md index 1b09bf7d..ff9f6b84 100644 --- a/iron-svelte-client/README.md +++ b/iron-svelte-client/README.md @@ -1,15 +1,27 @@ -SvelteKit UI for IronRDP. +# SvelteKit UI for IronRDP. -The client is used both for Tauri Desktop App and Browser App. +The ui is used both for Tauri Desktop App and Browser App. ## Tauri Please [read the Readme](../iron-tauri-client/) from `iron-tauri-client` -## Browser +## Web Client +> WebClient is build with [SvelteKit](https://kit.svelte.dev/). +> It's a simple wrapper around Iron-Remote-Gui to demo the usage of the API. +> The core of the WebClient is in iron-remote-gui folder who's built as web-component. + +### Requirement +You need to run npm install in [iron-remote-gui](../iron-remote-gui/) before going further. +### Run in dev - Run `npm install` -- Run dev server by `npm run dev` +- Run dev server with all require build by `npm run dev-all` - Build dist files by `npm run build` -Files are builded in `./iron-svelte-client/build/browser` \ No newline at end of file +Files are builded in `./iron-svelte-client/build/browser` + +You can start the dev server with three different command: +- `dev` - Run only the application. +- `dev-all` - Build wasm and iron-remote-gui before starting. +- `dev-no-wasm` - Build only iron-remote-gui before starting. \ No newline at end of file diff --git a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte index d08d7392..99e518ca 100644 --- a/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte +++ b/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte @@ -14,12 +14,14 @@ }); }); -

    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�Y5#BHuK*a;mutod%_wf;SD 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�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[Gc#FwEKW?o~Jma1XO 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 hUtjAl{;tGDOn8}zTba4U`L%* zP}-zpY;Z>NI%?gO2P3a}SeW8&a27I z3lcXYXwnDo|IS6XrhA;kqO=*Rm#?W|XPf{>56Qyk3^;BiV+x-$R5kE}25?OM=X1tf zO#TFAA4;0JfL*t^J$&;NXf#Yr4&AZtAn>Pz>d$D2QkZMBV&vU%bLWDN*{3eEA@l`3OiESG##im_y!r(=%d$g-Iw6E>NC80S4#HMfRuA&D$=Fv}9st+b`#I zP@qdNCgw*B8Wsg)k2j!So$0l-Mzjl?nU0_kJOVMc7O zFJowbxy>bYdz;b<{utujuUUvjSB1FS>5fjkDzx_o~+;(-^F) z#et_)CUf}09Gc6STXV}R&ux|a5iGOR#`7_lq~n6dgN7StwAoE5N>hZ<;sPPsu8)5-u`fzq7><&mou|$ z)Q?^H&oyIO{;B7DUVlM9FL-+Ek#0th zG&B9SL0Hd;c)DBVghlOrnR#!gj+_iLKlS>Q|Kwk1o{o(DmIIWv4|`nxF&CbNNX&a! z)1&(}ksfcKnp~+j$z9{sq?>bZ^2cT7=ZPx-&bAX^OsB&wZ9&Jop-O3oc<}2&7%o?~ zP1I)qLw@u5^PuWeH0INeh3Y-I`Tw$ zS=8eFf2Aib&S(0_tdoH#aBgV&09AEA7l|1H zfE(&D2n!nE;d&QWdwk&!B{Fl3p##ysG7x%>nIKiGqaB(zY`ftxhLTlRwZ@|y`$_RY zN2ryZGyE&=rsipXpEdt`9=6(dJEzFcw= zTr&CoiFkq1Hskbqx$T{jU!fy@=lVc|L=-w)c|pD=fJf`_gA}>=(O=AlO1dqAHdj!# z^V0%%bfx&d{-11nu|DfFG=gRco7WWyN7L@=HAb8lKD7n?7uI9$FC)KtywZ_kDvO(WHuz{)Z}S(rLCdpf4YzdNr3_ zLx=k;*);koOEJZr{!!77jHNU+65ER3?qb1U&7Z!DUF1% zxFvsIe=Rlh#e4Q+f>SedX%bN75Y0vy5$QLqsFqVn@=B1}vI8smg7L!w@f|Qcw`vbq z$U!uBc*~v*?w`A5qe1MDd)2X*@7NPO2%mEFNP9<+&G#oyGT>8@*B0b8x9>dYv?pbE zSd@rEuC&Wn^5>OhR&5NhiXMKxEcZPFF!YrciQlnD5wGc^>31JA?jf3=e(rOO3GO8O zkgUqzI@`AiQQ!?|VH{u#$hK`t7uNY)yq(pPN6&@FiAPQzmj(!25ULLlHn83T;;+pV zvx#-_Q+LHN6ec=9238iI;@%-I?tVEpx2w(dLZK1;1`Qz#sBL;YbitX%tPA&?4(0B% zS#EQxJb^g6{p0kBG7er&Jv963^mQg6j2GbsE)TDtZP%jkDT3Gj{K8>)46wSU&;*7N zGU_ne$3DCB1j1*sm_+w(I>9=YKc*<4F+p)9FG@n>b|WrKzN zB)d|*ee-koDj%K~`qemD{)tjkHM<<$K0l1q=@meHlD|R-?a>Isel#S;bY=wc`FnzI z`%He4kA6A1^-YMfF|P0J99vAuP@iyq>MLFU3eF_Eld$?O3V+VG$qIGv<_2Ss zK)js_oAsOaXPSy|#6IXMdt7G#;oP5#fk8ix$tztpMy7}yRo%;`To;w@9VUsb} zoWAwN=Z6e)1V)?Q zrZ3DTmLEiQ3=5W77#!a-S};l6)0VFLVek7U`3d8i)s=>tC7LyvHPOBDy$YtLD2&m* z!=D@FgmOuSZDJn^)LF=a-PcRv!3@(oc4h{J7nr1!r;65rX~#a!8yRO@`4akx0O^1v z*f3w--?qlAoj<_heHW^t#NaJ67@ZPS1?}nyDbF(QEa}Q=gol}*Ld!PEEu*@eIA6GV zO(%`nFuHc^+X)LQC6baVGGGkLBkSs??HxK7m;8x0)w^S^V>r-fj8N*!25uyv03$U*j_1w-E@c?7?M(DGss6zLfVM`6l)!LMVa)%hU37F)pQBc0O$47`c zysMO6s4Q2MQ090K1Rpm`uc9vzQo%fiN0zQb8(hZ>Au&MmG#>k_s!4l6s}^1cI|*E| zgC<^&Pem=cb@<)xbU2ffj{CV1ForO(g614T#MaAvwVg zH&-bQP`;<^G_(JzMwV?)CCNMA8|a0P;GyF;(y>_&T@yV`?RQkB-OZ~7`6Sf;tWdsY z4Pl;hqQK$YoOe2xt~(YI!5=}K)D*7ohsQad5tXCEmsN?o(|+NEPkV~%kOKwYzjVS^ z%{~Fesz!fsk0^z&)!QNC!QY}^R5tng*S%1($||6|Qe)OPTw2w_I5%RHMR0JB!izjT z1HIQ@dX{wCr^-}-WfpaWtl;8@z6u}^TpRH;`iBTXe=raJ5cIhZ3PA?C4+@3P@DJR? zE62h15Qyh#y_Z`P69d&04^1qIvYh z$>{H{2L$p@Y`k`=rl!O^C_K7VmtOMw!Y^-{rgnwN}&*NQt#!{uIPL7Nk#`R zmo1yC$pw0Qp|^VuU=0I)7VvcU9N#heP4vu@O$Q~?p}@AULXvzum_qR$Kbj=Iy&_G% z45ZAQH}cjLWTT-b@4+s?2>-nvy99lK^RV9S?<^_|KEpq#T*W^9diySXY=!bN=z|aD zfG#i*7QzPtqy-4!Hx?lp@g-nC;h#RYQD-m;Al{J1OkO3uW9#E_3Q(x7y$G{S5>9|G zA@~uZIgmg|uJ*vdK;Om|{)btt1Vfd^n)vs$uw-8@hSc$95%k+mFn%{qNLYP&1Fzx) zXK^JoRT9D2$Brhu%V7kQV=#h=kQ@RD3I;GNCVbG$)}R@7a1ip_<%un0IFia3gavm8 z`8UJb-X9m?Qe428knqzF7kMyY<6rtWJ2#l}*9@ZkwqE~cyNAj8Zb7&JY8O=U0jUE; z94dt@4l1YrXD6?iA6Mw%H7Z=3Odx?NgT1l-bj=$23}zGXC!)T<#8lR|f51pOV<~U- zbEVouCds@p1X#)BT5%`=xlQ-fk~ieEEND3<(w@?+pHe*g&1HDDMzM+_$I{TbXkL4_ zhd)(Cjdyf~9=l7oN2ex*wu%lHW+IZh5Q!m%(Q8O0H^(2T;s>S?<(Kmx`Z8mQg+f_> zKg%aB`b~W1kw3gLp?BAeTlQp-D)d)rq6g>go>FS$xzBj?SFue7Jlsr>jZV_vOEVt# z<__xe=+>k2)vn!Ytzl^%dW!y)AA`FctCpbJ@{Hn`#r8uNAeor|&|^Ho4-wc<@WI-z zDv$;{3Hy(ATmNp1kanY)%Ajs!zyz9##Q&KPlCpp(fd0<}1a7Y%QAm}&{?E=2?$8}r zhmJvTdOJgoCbRLgBFcQAWJ4AX5bpI?MMN*UdMc??WccPNwD|LZCLjL;Hv$TzbxDD}FWpPc9A# zeyUyGeg-mInI-9F19rc?8)3C7U)k1iygXe)!?k?aF>w6DA^8Fu7MWvF5{G=BN{SpwR~BG(T7pb+yiWMi)X3;gY@RTW!Wa!1O0{Xp z(1DIx?RB^&5E@tp^MOdI0QL)opA9$iM1e=(+y0w5$VenGo2L}3l&sXlfJ`$S1$BJO z`vq5%=D|-AK`kn2->^u&WHbMwhIchqD}5pFHA>IUY;5Es$)}d{@#9%?^5t3>r1%m` zW9dLKu=T89?PE*ZvJyVF+2eSE)_EMJ%LG;mjB7(R%##(`!)9vwJN1;3Qz8-*1G{A| zE9veMO^0hfcsi}s!5+G*w1GM=#bixPDwjZQg6c3wQg~l%^!}|B9+yMs*j|>^`{3f~ zoS_yFFqx}jkPd;upd%_AWRlhxJunnMMEVF3^outffx z&59RK-!`W|2?;Dq?dt(aTyQdHt$L9F2M4MZAe=AS@or$_aBlzAfvomGHEEc8zBzqOvswDPgg(Vca9qD)tuN4bNE~v1)y7kC^=f*}-x|-M< z=I!N2=XiI;y0t%Sf9_&a;)Oe|u`~)m6`%o-k9)m(81!e#QM6=zmOYboHBc8mCnj=

    =HGWw^)%y&814#bM)MH#}*e3Exk>>oh=wdh2~$p!paz7!th)H z_8p(b-`IjeZgN^JUgXDHWI>|rP>Zi=r&JU@F*G;?UQ{|&ME;5T`*)D<$7~gu#2aFf z2+*L-v8f5}CW|Uu2?&CiQG7a$(DNE`YL<=6opK1Ja#=a0gYuMjh?FP-r|t-XH4osd3=M8g zO-<#=$*D)p=h9p^$FcR6mX^JXi|N0TRbV>4&unPX{2y=OrnatJq5QOjQH2*gb&J{+ zMWM``gs^U))$_n$vmczT{TP1_Ldg_GF+raW0k2@>vWX_Em`8{jT~qWDc&!UB8IglA zFfI1L@llx0p>l{gyicB7f5qWLvUsDA%a)@uL4n0tbW8?8R34Zuk@NMGQz!?2|6ZCP z6{YW{lpx*K=)D^I_iMXg@FCCSz*HJeF0{e=IQ~|vj2@Ag-mCLer^!cscVl?dvAYeP zd0_{Xi3$t_kaV0My&w6dy}bkX$CJ zG$QUAq8pREn_MwvexDEG@%TNBYkSQDIP(SI=N!SdL+AxOFg`wZ z390}`RtLfg+E%AUx3IAA@>neP;$$+pCl-tUB%NOPK7Pi0p-{+JoMO5bztV+u9*szZ zo}Xyd?$I zNhA}BSv8xyUQaNYOk9s^tSuA@y<~iRyi>9mDUI#Q%RbY>uuS*){r8THjC{rQR-b4b zg--ObI-3*m6&M=0+< zLXYAh)ZlZov$K}_9{KxEQ3h`M4+YE{i$-2ha#GOW)q?BG8 zBaYAK=ft5l1Nh%0q2L!xG8c<$R1X6LiKnpq?k>Cp1I9817)=*pd#izpts)hYjFISb zC`@vs29?T`D-}hunv>hlu@a#;fIEiN$bo~HKE7j zcl!JL5>?ZTwzRf9AAiR+7*alIW_H%e6>G5vX>oCp zdz4Sap(Ia85YW|><#Ope>({Tp`N0SGT!Sanq;LQikGhh(1)MO%;4(=#0KPvuGIAoS zX~vrkLwh5-VMTP??!=4yb5sUD#LqdN%jI}?p#*3el>zT9*uH(+m1DCrLp_No0(n8j zHp%*v#o;7bymnpZ4L`zMD|}Xfu(c}Vlj-?_W*o(&PCG$v&4<_EE2||3j*OxEPg8Fw z*H3XR9*PewnNSrpZ$RPvc$D9##v7v4(s(-37K25g9^U?MmYTVfj@(d%cL&x4-&ryQ zgq{GkKuW*!U>LQ4XyEXC26nW?1!tfp6etZ8&?OOgy{cQO{X)tZaC$KmdLk?(@5+|- z5!6@YH&ms+IbuIDIo;IJ+5Y_DV<$dI9;BoQUt;M==o9gHq^-T}67;67^ZC5bol4EN z&Mz(miD!n77em1}IqdJC(?O#mIq)R$0a&60=sT!g9ThiIz1}}UgY!cfPCg+g5 z8xDv61z+>Cp`oD@c(HywGc$7^DvfMIs9?|qE0xPTbgQTg#KKmS$HJvTm3g{wI8PFKFDM(m|7@_JU1fTw$3#W@U_Wn;|(51 z^C275Eyvqt6&?KmBweAWAgD=3xpM}Rbl)^M-u~gy=%=qDyS>mHenBY+3-QRTX6=)o0 zA}}4QMno0in5LygFe}p2)AQjy_doD;8a4Ms75*oz0+1KX5lUdTWZUNRdwP1`IzK=E z7wArP(7@NmwY}W4l3W2w!*68rf;sdYeg?wv@O)yDK@0Ggh#ee858>8owfZeo1bZ;X z%To7WCYukI&g_QmtH7E|)hH5!5Y}%C&+*kJq5=E4iQ=(U~i? z^4>c3RA(G_3Wh+R2h3hD}Y8Nu&|IWq|=M<$5hkj z5{bkuXtB4;HGZ~P4A*0DfkbXxh`$Y$i9S6&y#c+A4S4b1h@XGxqKhuNB^U_&WO`=y zm6UIfMMFI3C%2o7gCNd?TA%%6*+eQ#xW+|XcvN0Yb^n~JA7q+L5uOBa*V&eFzifIT zch?gA@(bw&C=~LLh(-ziI>qGwzOBE?NkMGROOVNAD03r(yI~gKa@z0ZJH3a>nSHEI z_Hp_nuX6(^jlYmJ@N!C^F&qpi(Qw!q$t-qk-M-^J@mM&kY03)`Pg=j2S>(qg!#~R~ zbh7f~*6Si1bPKAKC47Y|vJlvx}xzdu@Y)t|D&Psp;*g!Xa4qdjx z`0)1M<>X56M{DTnBFw=_rBXWL0vk~YY{bmNn~KFUM7)^qM^K4TQIaFTC^72}mT^;^ z-a%FyY_Ax)K^;yE3dIs{=3$1$<9u>y9SJ6?wo=nCZqGdp10@AusbY?QDm4$om|sqA z-!4JO2I2fYUl&If^(eAc6O}T0BzgWAWhg955QsJ^faU!EyiB%O;JgCN5G~HCq)=lk z3O>M6GUx{1rXj;X*nr>X#mt0XwKFC=eCXgC0)7Ju**ugnOF)Djip`rQc)G8#wqKF; z6iYASsg-EU>B@z2X9;|$8UH-_d*&s4{FL|;{Qw)ZZ53m8s=R1_JU>?=)noy5S<~-q z-MZEC7#?)_E8sO02>WzC-A3Uv@WkAD4(=_hI98UenMUiRNJGMB-`R2+FD-n>skxU< z&EhXDpy5Kq<7ii)1Xe-)=KBvEfX2#n5kJ>qv)|XIxIAe@a)N?8F)_g{xj5ds@So1| zyTU`t!j>sMF@vBcPGYBXtu&tV#VuMC@-cGEeyJoKOIg-icw>ppO*rs5}M-r#}DQU384Cyl83*#t{WB{5eOs$J9i`n|W-g z4acOMFxNi7k<})LkA&?ihwc#wS~&yF)`|#Nyr=jooWF^7%)Gd zg5$@J^T(^4BT)Pn7x7r0(J?uylq&?R-0|rev9{nk0HL zx^7;)ZZ=wcnvR4ST@7P?l{HxI#!AH{vk}Aub?ng%0A`uh03`gQ|FWda8*89 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

k|UUDj%Wm>^}hazEC2Lbk;lT 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 AlK=n! literal 8581 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%0D)y%xR@v_`@9SBDf4H-0q)^FTEIy9MiOPguL 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 literal 12273 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 literal 4859 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%0AWTCG?5R7Hab;Mz={ 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

?s)z2=W^~eXbb{V?} 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 literal 0 HcmV?d00001 diff --git a/iron-web-client/src/assets/ironrdp-fake.js b/iron-web-client/src/assets/ironrdp-fake.js new file mode 100644 index 00000000..e69de29b diff --git a/iron-web-client/src/environments/environment-tauri.prod.ts b/iron-web-client/src/environments/environment-tauri.prod.ts new file mode 100644 index 00000000..ef63818d --- /dev/null +++ b/iron-web-client/src/environments/environment-tauri.prod.ts @@ -0,0 +1,8 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: true, + tauri: true +}; diff --git a/iron-web-client/src/environments/environment-tauri.ts b/iron-web-client/src/environments/environment-tauri.ts new file mode 100644 index 00000000..bbcf3908 --- /dev/null +++ b/iron-web-client/src/environments/environment-tauri.ts @@ -0,0 +1,8 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, + tauri: true +}; diff --git a/iron-web-client/src/environments/environment.prod.ts b/iron-web-client/src/environments/environment.prod.ts new file mode 100644 index 00000000..66b835d5 --- /dev/null +++ b/iron-web-client/src/environments/environment.prod.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + tauri: false +}; diff --git a/iron-web-client/src/environments/environment.ts b/iron-web-client/src/environments/environment.ts new file mode 100644 index 00000000..00bcdc77 --- /dev/null +++ b/iron-web-client/src/environments/environment.ts @@ -0,0 +1,8 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, + tauri: false +}; diff --git a/iron-web-client/src/favicon.ico b/iron-web-client/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + IronWebClient + + + + + + + + + + + diff --git a/iron-web-client/src/main.ts b/iron-web-client/src/main.ts new file mode 100644 index 00000000..c7b673cf --- /dev/null +++ b/iron-web-client/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/iron-web-client/src/models/desktop-size.ts b/iron-web-client/src/models/desktop-size.ts new file mode 100644 index 00000000..f399fefb --- /dev/null +++ b/iron-web-client/src/models/desktop-size.ts @@ -0,0 +1,4 @@ +export class DesktopSize { + width:number; + height: number; +} diff --git a/iron-web-client/src/models/rect.ts b/iron-web-client/src/models/rect.ts new file mode 100644 index 00000000..2d17a44c --- /dev/null +++ b/iron-web-client/src/models/rect.ts @@ -0,0 +1,7 @@ +export class Rect { + top: number; + left: number; + width: number; + height: number; + buffer: ArrayBuffer +} diff --git a/iron-web-client/src/models/session.ts b/iron-web-client/src/models/session.ts new file mode 100644 index 00000000..75c0440d --- /dev/null +++ b/iron-web-client/src/models/session.ts @@ -0,0 +1,15 @@ +import {Guid} from "guid-typescript"; +import {DesktopSize} from "./desktop-size"; + +export class Session { + id:Guid; + sessionId: number; + name?:string; + active: boolean; + desktopSize: DesktopSize; + + constructor(name?: string) { + this.id = Guid.create(); + this.name = name; + } +} diff --git a/iron-web-client/src/models/tab.ts b/iron-web-client/src/models/tab.ts new file mode 100644 index 00000000..4c2be16a --- /dev/null +++ b/iron-web-client/src/models/tab.ts @@ -0,0 +1,11 @@ +import {Guid} from "guid-typescript"; + +export class Tab{ + id: Guid; + name?: string; + + constructor (id:Guid, name?:string){ + this.id = id; + this.name = name; + } +} diff --git a/iron-web-client/src/polyfills.ts b/iron-web-client/src/polyfills.ts new file mode 100644 index 00000000..429bb9ef --- /dev/null +++ b/iron-web-client/src/polyfills.ts @@ -0,0 +1,53 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/iron-web-client/src/styles.scss b/iron-web-client/src/styles.scss new file mode 100644 index 00000000..56cb72b0 --- /dev/null +++ b/iron-web-client/src/styles.scss @@ -0,0 +1,4 @@ +/* You can add global styles to this file, and also import other style files */ + +body { font-family: Roboto, "Helvetica Neue", sans-serif; } + diff --git a/iron-web-client/src/test.ts b/iron-web-client/src/test.ts new file mode 100644 index 00000000..c04c8760 --- /dev/null +++ b/iron-web-client/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + (id: string): T; + keys(): string[]; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), +); + +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().forEach(context); diff --git a/iron-web-client/tsconfig.app.json b/iron-web-client/tsconfig.app.json new file mode 100644 index 00000000..82d91dc4 --- /dev/null +++ b/iron-web-client/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/iron-web-client/tsconfig.json b/iron-web-client/tsconfig.json new file mode 100644 index 00000000..b8bbfd40 --- /dev/null +++ b/iron-web-client/tsconfig.json @@ -0,0 +1,36 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "strictPropertyInitialization": false, + "target": "es2020", + "module": "es2020", + "lib": [ + "es2020", + "dom" + ] + }, + "files": [ + "../ffi/wasm/pkg/ironrdp_bg.wasm.d.ts" + ], + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/iron-web-client/tsconfig.spec.json b/iron-web-client/tsconfig.spec.json new file mode 100644 index 00000000..092345b0 --- /dev/null +++ b/iron-web-client/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} From 217b763b18d9a8eb2f64c1627561f509975f73ae Mon Sep 17 00:00:00 2001 From: Nicolas Girot Date: Wed, 23 Nov 2022 10:56:25 -0500 Subject: [PATCH 0093/1273] Clean Tauri client (#54) --- ffi/wasm/Cargo.toml | 3 --- ffi/wasm/src/lib.rs | 5 ++--- iron-tauri-client/README.md | 19 ++++++++++++++++++ iron-tauri-client/app-icon.png | Bin 1029456 -> 424063 bytes iron-tauri-client/src-tauri/icons/128x128.png | Bin 22050 -> 14404 bytes .../src-tauri/icons/128x128@2x.png | Bin 67519 -> 43117 bytes iron-tauri-client/src-tauri/icons/32x32.png | Bin 2428 -> 1979 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 16530 -> 10884 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 26124 -> 16821 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 28604 -> 18345 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 79501 -> 51051 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 2202 -> 1787 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 91918 -> 58732 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 3945 -> 3026 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 8581 -> 5918 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 12273 -> 8355 bytes .../src-tauri/icons/StoreLogo.png | Bin 4859 -> 3576 bytes iron-tauri-client/src-tauri/icons/icon.icns | Bin 1143248 -> 824054 bytes iron-tauri-client/src-tauri/icons/icon.ico | Bin 85160 -> 57152 bytes iron-tauri-client/src-tauri/icons/icon.png | Bin 200846 -> 135327 bytes .../src/app/login/login.component.ts | 8 +------- iron-web-client/src/assets/.gitignore | 1 + 22 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 iron-tauri-client/README.md create mode 100644 iron-web-client/src/assets/.gitignore diff --git a/ffi/wasm/Cargo.toml b/ffi/wasm/Cargo.toml index fcf27483..9971c08c 100644 --- a/ffi/wasm/Cargo.toml +++ b/ffi/wasm/Cargo.toml @@ -18,10 +18,7 @@ members = ["."] wasm-bindgen = "0.2.83" wasm-bindgen-futures = "0.4.33" lazy_static = "1.4.0" -ron = "0.8.0" -serde = { version = "1.0.147", features = ["derive"] } ironrdp = { path = "../../ironrdp" } -ironrdp-session = { path = "../../ironrdp-session" } # The `console_error_panic_hook` crate provides better debugging of panics by # logging them with `console.error`. This is great for development, but requires diff --git a/ffi/wasm/src/lib.rs b/ffi/wasm/src/lib.rs index f2afd840..4820d9ff 100644 --- a/ffi/wasm/src/lib.rs +++ b/ffi/wasm/src/lib.rs @@ -3,7 +3,7 @@ mod utils; use wasm_bindgen::prelude::*; #[wasm_bindgen] -async fn update_mouse( +pub async fn update_mouse( session_id: usize, mouse_x: u16, mouse_y: u16, @@ -13,9 +13,8 @@ async fn update_mouse( let _ = mouse_x; // TODO let _ = mouse_y; // TODO let _ = left_click; // TODO - let _ = session_manager; // TODO - Err("Unimplemented") + Err("Unimplemented".to_string()) } #[wasm_bindgen] diff --git a/iron-tauri-client/README.md b/iron-tauri-client/README.md new file mode 100644 index 00000000..db149780 --- /dev/null +++ b/iron-tauri-client/README.md @@ -0,0 +1,19 @@ +# Tauri GUI Client + +## How to build + +> Gui client is still in early stage development and everything can change (mostly the framework use on web side) + +### Prerequisites + +- Node.js (npm): https://nodejs.org/en/ +- wasm-pack: https://rustwasm.github.io/wasm-pack/installer/ +- rust... : https://www.rust-lang.org/tools/install + +### Steps + +- run `wasm-pack build` in `./ffi/wasm` folder +- copy `pkg` folder from `./ffi/wasm` to `./iron-web-client/src/assets` +- run `npm install` in `./iron-web-client` folder +- run `npm install` in `./iron-tauri-client` folder +- finally, run `npm run tauri dev` in `./iron-tauri-client` folder \ No newline at end of file diff --git a/iron-tauri-client/app-icon.png b/iron-tauri-client/app-icon.png index a2503888f1242e2825147ff9a2569ca3a42e361c..986a8b16169d849230ca81f0d766c90b9f2afe3a 100644 GIT binary patch literal 424063 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